2011-01-06 4 views
1

私は任意のコードを書いて、それをコンパイルし、それを実行しようと、私はこの例外を取得:Javaが正しくインストールされていませんか?その後、スレッドの例外最近「メイン」java.lang.NoSuchMethodErrorの

java.lang.NoSuchMethodErrorのスレッドでの例外「メイン」

最初は自分のコードに何か間違っていると思っていましたが、間違ったことは見つかりませんでした。前に働いていたHelloWorldの例を実行しようとすると、動作しても、同じコードをファイルにコピーすると、HelloWorld2この例外が再び発生します。

コードは同じですが、javapを使用して両方のクラスファイルを逆コンパイルすると、違いが見つかりました。 java.lang.なし

"public static void main(java.lang.String[])"; 

HelloWorld2HelloWorld(オリジナルファイル)(新しいもの)

"public static void main(String[])"; 

で。

javacで古いHelloWorldを再コンパイルしましたが、今すぐ実行しようとするとうまくいかず、同じ例外が発生します。私の古いコードは、再コンパイルしても機能しません。

私はどこからでも検索しましたが、この問題の解決策を見つけることができません - ここで何が起こっているのでしょうか?

+0

フルコードを入力してください –

+5

私はそれを読むだけで息を切られています。 –

+0

このコミュニティWikiの質問には、この一般的な問題の原因が記載されています:http://stackoverflow.com/questions/5407250/causes-of-java-lang-nosuchmethoderror-main-exception-in-thread-main –

答えて

3

あなたのクラスパスにString(パッケージなし)と呼ばれる独自のクラスがある場合は、これを得ることができます。それは起こったことのように聞こえる。ここでは、これを再現しようとする方法です - それをコンパイルして実行し、そしてそれは同じに見えるかどうかを確認:

class String {} 

public class Test { 
    public static void main(String[] args) { 
    }  
} 

あなたが厄介な場所にファイルシステム内のコンパイルString.classファイル、その意志を持ったら上記のTestクラスのみをコンパイルしても、デフォルトで使用されます。

String.classというファイルが基本的にどこかにあるかどうかを確認してください。

+0

もちろん、ifあなたのコードのどこにでも 'class String'があります。 – configurator

+0

ありがとうございましたJon Skeetとマスターコンフィギュレータをマスターしてくれてありがとう私はファイルString.classを持っています。 – Ahmad

関連する問題