启动Apache FTP Server时出现NoSuchMethodError错误求助
解决java.lang.NoSuchMethodError: supportedOptions()Ljava/util/Set; 错误
错误信息
java.lang.NoSuchMethodError: No virtual method supportedOptions()Ljava/util/Set; in class Ljava/nio/channels/ServerSocketChannel; or its super classes (declaration of 'java.nio.channels.ServerSocketChannel' appears in /system/framework/core-libart.jar) at org.apache.mina.transport.socket.nio.NioSocketAcceptor.open(NioSocketAcceptor.java:259) at org.apache.mina.transport.socket.nio.NioSocketAcceptor.open(NioSocketAcceptor.java:52) at org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.registerHandles(AbstractPollingIoAcceptor.java:591) at org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.run(AbstractPollingIoAcceptor.java:460) at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:833)
当前依赖
implementation 'org.apache.mina:mina-core:2.1.6' implementation 'org.slf4j:slf4j-api:2.0.6' implementation 'org.slf4j:slf4j-simple:2.0.6' implementation 'org.apache.ftpserver:ftplet-api:1.2.0' implementation 'org.apache.ftpserver:ftpserver-core:1.2.0'
问题原因
ServerSocketChannel.supportedOptions()是Java 7新增的方法,你的运行环境(从路径/system/framework/core-libart.jar判断为Android或低版本Java)不支持该方法。Apache Mina 2.1.6要求最低Java版本为Java 8,与你的运行环境版本不兼容,导致抛出该错误。
解决方案
- 降级Mina版本:改用支持Java 6+的Mina 2.0.x系列,该分支不会调用
supportedOptions()方法。修改Mina依赖为:implementation 'org.apache.mina:mina-core:2.0.26' - 兼容性验证:Apache FTPServer 1.2.0兼容Mina 2.x系列,降级Mina版本后无需修改ftpserver相关依赖。
- 环境适配:如果是Android项目,确保编译和运行的API级别不低于19(Android 4.4),以满足Mina 2.0.x的运行要求。
内容的提问来源于stack exchange,提问作者ShaRy
相关产品推荐
相关产品推荐

