java - Apache Mina Core 不兼容的类更改错误

标签 java

我正在开发一个基于 Java 的 FTP 服务器,我可以将其嵌入到另一个项目中。我正在使用 Apache mina 库作为 FTP 服务器。我可以启动服务器,但当我尝试连接到它时,出现此错误:

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)

我已经阅读了一些有关错误原因的信息。 This site至少暗示这是 Apache Mina 代码的问题。

我正在使用 Apache Mina Core Libraries v2.019 和 Apache FTP 库 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 示例代码时得到修复。

关于java - Apache Mina Core 不兼容的类更改错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917105/

相关文章:

java - Spring MVC 上传文件,然后提供下载链接

java - 多个复合 Material 之间第一列的宽度相等

java - 初始化实例变量的地方

java - 动态更新 swing JXMapKit 中的标记

java - 如何在java函数调用上设置超时,并在超时结束后终止其执行?

Java执行弹出新窗口后立即消失

java - 无法解析 WifiManager 类中的公共(public)方法 setFrequencyBand

java - GWT - 来自数据库的图像

java - Android 文档 - 字符串是原始类型吗?困惑

java - 模拟存储过程