我正在尝试从Apache运行FTPSClient示例(请参阅此处: https://svn.apache.org/repos/asf/commons/proper/net/tags/NET_2_2/src/main/java/examples/ftp/FTPSExample.java)
在Eclipse中,此示例代码工作正常,我可以将文件上传到服务器。当我尝试在Interprete中编译我的代码时,r也可以运行普通的java源代码,它仍然有效。但是当我开始编译程序时,我得到以下错误:
java.lang.NoSuchFieldError: _hostname_
org.apache.commons.net.ftp.FTPSClient.sslNegotiation(FTPSClient.java:266)
org.apache.commons.net.ftp.FTPSClient._connectAction_(FTPSClient.java:226)
org.apache.commons.net.SocketClient.connect(SocketClient:163)
org.apache.commons.net.SocketClient.connect(SocketClient:250)
FTPSExample.doMyUpload(FTPSExample.java:93)
最后一句“句子”是我自我命名的方法。在第93行,我只是尝试连接到服务器:
this.ftps.connect(this.server);
Eclipse和我的Interpreter都采用了我的commons.net.jar所在的类路径(3.6)。所以我真的不知道,为什么会出现这个错误。 如果您需要查看完整的课程,我可以在此处发布。但我没有对Apache的原始示例进行任何更改。
谢谢路易斯
答案 0 :(得分:0)
请注意,您使用的是Commons Net jar或SocketClient
类的旧版本。自Commons Net 3.4版以来引入了字段变量_hostname_
。另见this history。该字段在抽象类SocketClient
中定义,并由扩展类FTPSClient
使用。如果同时使用新版FTPSClient
和旧版SocketClient
,则会引发java.lang.NoSuchFieldError: _hostname_
。