2011-10-21 3 views
0

これは私に過去1時間のナットを運転しています。私は2台のコンピュータ、私は主にLinuxのミント11およびJDKの次のバージョンを実行している上で動作する1持っている:この静的ネストされたクラスが1台のコンピュータ上のJavaで動作しないのはなぜですか?

私は同じコードを使用しようとしている私のWindowsコンピュータ上の今
java version "1.6.0_20" 
OpenJDK Runtime Environment (IcedTea6 1.9.5) (6b20-1.9.5-0ubuntu1~9.10.1) 
OpenJDK Client VM (build 19.0-b09, mixed mode, sharing) 

を私がコンパイルされ、上で走ってきましたlinux one。窓が一つは次のJavaでXPを実行している:

java version "1.6.0_26" 
Java(TM) SE Runtime Environment (build 1.6.0_26-b03) 
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing) 

私はバージョンが異なっているが、それは本当に入れ子になったクラスのような単純なもので違いを作る必要があります知っていますか?

public class test { 
    public static class nClass 
    { 
     public void testFunc() 
     { 
      System.out.println("Test worked."); 
     } 
    } 
    public static void main(String args[]) { 
     test.nClass t = new test.nClass(); 
     t.testFunc(); 
    } 
} 

このコードは、Linuxコンピュータで正常にコンパイルされ、正常に動作します。私は窓の一つにそれを上に持って来るとき、それは罰金コンパイルしますが生成されます:

NoClassDefFoundError test$nClass at test.main(test.java:10) 

私は完全に困惑し、完全に欲求不満です。

答えて

6

私は、test.classファイルのみをコピーしたと思います。test$nClass.classもコピーするか、Windowsで再コンパイルする必要があります。

が(これらの名前は、Javaの命名規則に従わないことに注意してください。それは質問に関係ないですが、それも、サンプルコードのための規則に従うことをお勧めします。)

+0

あなたの先生、天才です。私はそれが簡単だとは信じられません。 –

関連する問題