2016-08-29 11 views
1

私のコードは以下のエラーが発生しています。java.lang.NoSuchMethodError - Ljava/lang/String;)Ljava/lang/String;

Exception in thread "main" java.lang.NoSuchMethodError: com/myApp/Client.cypherCBC(Ljava/lang/String;)Ljava/lang/String; 

しかし、別のローカル環境でも問題なく動作しています。これまでの私のコードは以下の通りです。

​​
+0

これは基本的な依存関係が変更されているようです(読んでください:JARは両方の場所で同じではありません)。 –

+0

ようこそスタックオーバーフロー。あなたはあなたの質問を改善することができます。 [最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)をお読みください。あなたのコードが何も特別な問題であなたの正確な問題を示すとき、あなたはボランティアしてあなたを助ける人たちに敬意を表しています。 – zhon

+0

スクロールを排除するためにコードを書式設定すると、他の人があなたを助けやすくなります。 – zhon

答えて

2

これは、実行時のJARまたはクラスの不一致によるものです。あなたのアプリケーションをコンパイルする時にそこにあった "Client"クラスはStringパラメータを取得する静的メソッド "cypherCBC"を持っていますが、実行時クラスローダーはそのようなメソッドを持たない "Client"クラスをロードしました(同じ署名の同じ名前)。

あなたは、発現後に評価しようとし、その後、例外がスローされた行にブレークポイントを入れて、実行時に

Client.class.getResource("Client.class") 

をアプリケーションをデバッグすることができれば、クラスがされた場合、その後、あなたは見つけることができますからリードした場合、デコンパイルして問題のトラブルシューティングを試みることができます。

+0

プロジェクション(リモートマシン)での作業はデバッグできず、ビルドパスも見えません。 Jarsはsrcフォルダにあり、build.xmlはsrcフォルダにあるpathelementとしてjarsの場所を持っています。しかし、Client.class.getResource( "Client.class")を実行すると、 jar:file:/vobs/vob_central/gaia/lib/gas.jar!/ com/aldata/gaia/server/impl/service/Clientが表示されます。 class 新しいgas.jarがあり、古いjarを持つ場所/vobs/vob_central/gaia/lib/gas.jarがあることに注意してください。しかし、srcフォルダに私の新しいjarファイルを持っていても、このパスだけを使うべきです。 –

+0

このクラスは、jar /vobs/vob_central/gaia/lib/gas.jarからロードされています。私はあなたが "src"フォルダについて教えてくれませんでした、それは配備されたenvのフォルダです。私は、あなたがURLListClassローダーであるjavaのデフォルトのクラスローダーを訴えていると仮定します。このローダーには、-classpathに記述されているすべてのjarのURLリストがあります。それは指定された順序に基づいてURLを通過するので、この/vobs/vob_central/gaia/lib/gas.jarはリストの一番上にあり、望むjarはリストの一番下にある – hunter

+0

もう一つアプリケーションがリモートマシンで実行されていても、リモートデバッグを試すことができます。ファイアウォールやアクセス権で許可されていない場合は、完全なアプリケーションをローカルマシンにダンプしようとする – hunter

関連する問題