JavaでNoSuchMethodException
とNoSuchMethodError
の間に正確な違いが見つかりません。誰かがこの2つのことの説明と例を挙げることができますか?JavaのNoSuchMethodExceptionとNoSuchMethodErrorの相違
答えて
。アプリケーションクラス (静的またはインスタンスのいずれか)の指定されたメソッドを呼び出そうとしない、そのクラスはもはやそのメソッドの定義 を有している場合にスロー
。
この詳細はarticleを参照してください。
ハイMaroun:私は理解できないが、「このクラスは、もはやそのメソッドの定義を持っていない」この文を説明してください。 – Balasubramani
これは、呼び出し側のクラスが変更されたクラスを認識していないことを意味します。この方法は、呼び出し元のクラスがコンパイルされたときがありましたが、ランタイム中 - 何かに変更し、あなたの明確な説明のためにもう – shikjohari
感謝のShikjohariそれを見つけることが、そのことはできません。 – Balasubramani
NoSuchMethodExceptionは、リフレクションによってメソッドを呼び出すときにスローされる可能性があり、メソッドの名前はプログラムの変数から取得されます。
NoSuchMethodErrorは、コンパイルされたJavaクラスが別のクラスへの通常のメソッド呼び出しを実行し、そのメソッドが存在しない場合にスローされます。 (これは通常、呼び出し元クラスが呼び出されているクラスの1つのバージョンに対してコンパイルされ、メソッドをもはや持っていないそのクラスの別のバージョンと一緒に実行されているときに発生します)。
、メソッドの名前は、実際には、この例外がスローされるようにするための変数から来る必要がありますか? – SantiBailors
これはフィールドでも、メソッドの呼び出しや式の評価の結果でもかまいません。 – yole
確かに、実際に私の質問はあまりにも明確ではなかった、私はそれが文字列リテラルまたは定数であることを意味するのですか? – SantiBailors
NoSuchMethodException
呼び出し反射を利用した方法。 NoSuchMethodError
は、コンパイル中にそのメソッドを持っていても、実行時にそのメソッドを持っていないと発生します。
はNoSuchMethodError
クラスのために、次の例を考えてみましょう:Person.java
public class Person{
public String getName(){
return "MyName";
}
}
は javac Person.java
を使用して、それをコンパイルし、今、それはあなたを与えるでしょ java Person
を使用して、これを実行しようと
java.lang.NoSuchMethodError: main
Exception in thread "main"
これは、LL
java.lang.NoSuchMethodException: java.lang.String.myMethod(null, null)
が良く、について説明を持っているこのlinkを考えてみましょうと言って例外をスローしているNoSuchMethodException
c = Class.forName("java.lang.String");
try
{
Class[] paramTypes = new Class[2];
Method m = c.getDeclaredMethod("myMethod", paramTypes);
}
のためにそこに
ないpublic static void main(String [] args)
を見つけようとするので
NoSuchMethodException
のが存在しないメソッドを取得しようとすると、がスローされます。例えば。間違った名前またはパラメータを使用してClass#getDeclaredMethod(name, parameters)
を呼び出してください。仮想マシンは、あなたが呼び出すためにしようとしている方法を見つけることができないとき
NoSuchMethodError
がスローされます。これがないNoSuchMethodExceptionが発生したときに
- 1. JavaスクリプトNoSuchMethodException?
- 2. Java JFrameとJPanelの相違点Repaint()との相違
- 3. Java NoSuchMethodError
- 4. JavaとC#と.NETの相違点
- 5. Observable.deferとJava rxのObservable.createの相違
- 6. JAVAとC#のLdapConnectionの相違点
- 7. JavaのSystem.load()とSystem.loadLibraryの相違点
- 8. Javaバイトコードastore_1とastore_2の相違点
- 9. JavaとDelphi .NETの相違点
- 10. JSPでのJava式とJavaスクリプレットの相違
- 11. importとconstとの相違点とcommonjsでの相違点
- 12. =と:=の相違点
- 13. PHPUnitとPHPSpecの相違点と相違点
- 14. Java NoSuchMethodError for javax.swing.JDialog.setAutoRequestFocus fromコマンドライン
- 15. ジェネリックメソッドのオーバーロード時のJava 5と6の動作の相違
- 16. .Net HashtableとJava HashtableとHashMapの相違点
- 17. PythonとJavaでソケットを開くときの相違
- 18. PythonとJavaの間のRegEx構文の相違点
- 19. NumPyとClojure/Javaの間の浮動小数点数の相違
- 20. オラクルとEclipseのコンパイラで生成されるJavaバイトコードの相違
- 21. 完全修飾名とJavaでのインポートの相違点
- 22. Perl5Util(Apache ORO)とJava正規表現のRegex shorthand "\ w"の相違
- 23. Javaのインタフェースと抽象インタフェースの相違点
- 24. Windows 7とSolaris(Mule 3.3)のJavaトラストストアの相違点
- 25. コンストラクタを取得するときにJava NoSuchMethodExceptionが発生する
- 26. MSBuildとTFSBuildの相違点
- 27. string.hとstrings.hの相違点
- 28. NSArrayとNSMutableArrayの相違点
- 29. System.Web.CacheとHTTPContext.Curent.Cacheの相違点
- 30. saveとsave_model()の相違点
(あなたが呼んでいるメソッドを持っていないなど、古い1)あなたは、ライブラリの1つのバージョンでコンパイルしたときに起こる、と後でクラスパス上にライブラリの別のバージョンを使用してアプリケーションを実行することができますターゲットメソッドが見つからないことが予想されるメソッドを呼び出します。 NoSuchMethodErrorは、メソッドが欠落している場合に発生しますが、通常は通常のコードでは発生しません。 –