java - Apache Mina Core 不兼容的类更改错误
问题描述
我正在开发一个可以嵌入到另一个项目中的基于 Java 的 FTP 服务器。我正在为 FTP 服务器使用 Apache mina 库。我可以启动服务器,但是当我尝试连接它时,我收到了这个错误:
Exception in thread "pool-1-thread-1" java. lang.IncompatibleClassChangeError
at org.apache.mina.core.filterchain.DefaultIoFilterChain.register(DefaultIoFilterChain.java:276)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.addLast(DefaultIoFilterChain.java:175)
at org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder.buildFilterChain(DefaultIoFilterChainBuilder.java:452)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.addNow(AbstractPollingIoProcessor.java:430)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.handleNewSessions(AbstractPollingIoProcessor.java:412)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$200(AbstractPollingIoProcessor.java:56)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:885)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
我已经阅读了一些关于错误原因的内容。该站点至少暗示这是 Apache Mina 代码的问题。
我正在使用 Apache Mina Core Libraries v2.019和 Apache FTP library v1.1.1,它们都是我能找到的最新版本
这是我的服务器实现:
public FTPServer(final String ipadress, final int port){
FtpServerFactory serverFactory = new FtpServerFactory();
ListenerFactory listenerfactory = new ListenerFactory();
listenerfactory.setDataConnectionConfiguration(
new DataConnectionConfigurationFactory().createDataConnectionConfiguration()
);
ConnectionConfigFactory connection = new ConnectionConfigFactory();
connection.setMaxLoginFailures(10);
connection.setLoginFailureDelay(5);
connection.setAnonymousLoginEnabled(false);
// set the ip address of the listener
listenerfactory.setServerAddress(ipaddress);
// set the port of the listener
if (port == 0){
listenerfactory.setPort(PORT);
}
else {
listenerfactory.setPort(port);
// replace the default listener
serverFactory.addListener("default", listenerfactory.createListener());
serverFactory.setConnectionConfig(connection.createConnectionConfig());
}
PropertiesUserManagerFactory userManagerFactory = new
PropertiesUserManagerFactory();
userManagerFactory.setFile(new File("myusers.properties"));
userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor());
UserManager um = userManagerFactory.createUserManager();
BaseUser user = new BaseUser();
user.setName("test");
user.setPassword("test");
user.setHomeDirectory("");
try {
um.save(user);
} catch (FtpException e1) {
// TODO Auto-generated catch block
this.stopServer();
e1.printStackTrace();
}
serverFactory.setUserManager(um);
server = serverFactory.createServer();
//this.StartServer();
}
解决方案
我从一开始就使用 Apache 示例代码创建了一个 FTP 服务器。我将它放在 Main.java 中的静态方法中,并删除了对我的服务器代码的引用。我无法重现我的错误。然后,我将代码的一部分复制到新的静态方法中,直到获得与原始代码等效的代码,并且无法重现原始故障。然后我将我的代码恢复到 Main.java 并删除了对静态方法的调用。我仍然无法重现该错误。我假设这是 NetBeans 的某种问题,它在几个干净和构建中持续存在,但在我引入新的 Apache 示例代码时得到了修复。
推荐阅读
- javascript - 使用 JavaScript 动态创建表的条件格式
- excel - 希望循环遍历表并将第一列和第二列以及第八列和第九列的值返回到不同的工作表
- ios - 执行 Swift Result 时遇到问题
在 API 请求中 - c# - 如何将 .NetFramework 中的 MessageHandler 转换为 AspNet.Core
- aws-lambda - 为新的 EC2 实例自动添加 Cloudwatch 警报和仪表板
- apache-spark - 如何在 PySpark 中进行滚动求和?
- gradle - 指向 grails-app/views 的类路径根 - 如何修改?
- python - Google API 生成刷新令牌
- c# - 如何重命名 Blazor WASM 项目?
- python-3.x - 调用 o1964.collectToPython 时出错。:org.apache.spark.SparkException:作业因阶段失败而中止:任务0