NoSuchFieldError _hostname_ - 带解释器的FTPSClient Java

时间:2017-06-13 14:49:45

标签: java eclipse ftp interpreter

我正在尝试从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的原始示例进行任何更改。

谢谢路易斯

1 个答案:

答案 0 :(得分:0)

请注意,您使用的是Commons Net jar或SocketClient类的旧版本。自Commons Net 3.4版以来引入了字段变量_hostname_。另见this history。该字段在抽象类SocketClient中定义,并由扩展类FTPSClient使用。如果同时使用新版FTPSClient和旧版SocketClient,则会引发java.lang.NoSuchFieldError: _hostname_