2017-06-13 6 views
0

私は、ApacheからFTPSClient例が稼働して取得しようとしていますとFTPSClientのJava(ここを参照してください: https://svn.apache.org/repos/asf/commons/proper/net/tags/NET_2_2/src/main/java/examples/ftp/FTPSExample.java)EclipseでNoSuchFieldErrorの_hostname_ - 通訳

は、この例のコードは正常に動作し、私は、サーバーに自分のファイルをアップロードすることができます。 Interprete内で自分のコードをコンパイルしようとすると、通常の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) 

最後の "sentence"は、自分の名前付きメソッドを持つクラスです。行93で、私はちょうどサーバーに接続しよう:

this.ftps.connect(this.server); 

Eclipseと私の通訳は両方(3.6)私のcommons.net.jarが配置されているのと同じクラスパスを取っています。だから私は本当になぜこのエラーが表示されるのかわかりません。 フルクラスを見る必要がある場合は、ここに投稿できます。しかし、元のApacheの例は変更しませんでした。

はルイ

答えて

0

Probabry、ありがとう、あなたはコモンズネット瓶やSocketClientクラスの古いversinを使用しています。フィールド変数_hostname_は、Commons Netバージョン3.4から導入されました。 this historyも参照してください。フィールドは、抽象クラスSocketClientで定義され、拡張クラスFTPSClientによって使用されます。 FTPSClientの新しいバージョンとSocketClientの古いバージョンの両方を使用すると、java.lang.NoSuchFieldError: _hostname_がスローされます。

+0

さて、どうすれば修正できますか?私のクラスパスには最新のコモンズ - net-3.6.jarしかありません。私はすべてを再コンパイルしましたが、エラーはまだ残っています。 – louis12356

+0

'WEB-INF/classes/org/apache/commons/net /'に 'SocketClient.class'がありますか?はいの場合は、別の場所にバックアップ(&削除)してください。いいえの場合は、[official site](https://commons.apache.org/proper/commons-net/download_net.cgi)からダウンロードしたjarファイルを置き換えてください。 –

+0

だから、あなたが言ったことは、SocketClient.classを削除してバックアップし、FTPクライアントクラスとEBUSプログラムを再コンパイルしました。 EBUSプログラムを起動すると、同じエラーが発生します。私は今何をすることができますか? – louis12356

関連する問題