-1

ターミナル経由で単純な hello world ファイルをコンパイルしようとしています。のコードは次のHello.javaとおりです。

package Hello;
public class Hello {
    public static void main(String[] args) {        
        System.out.println("Hello, world!");
    }
}

これは別のフォルダーに保存されるため、ターミナルで次のように入力しました。

cd code/repositories/java正しいディレクトリ (保存した場所Hello.java) に移動するには、次に入力javac Hello.javaして Return キーを押します。エラーなしでコンパイルされました。次に、ファイルを開こうとしたところjava Hello、次の例外がスローされました。

 Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: Hello/Hello)
   at java.lang.ClassLoader.defineClass1(Native Method)
   at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
   at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
   at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
   at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
   at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:247

これはどのように/なぜ起こり、どうすれば修正できますか?

4

2 に答える 2

6

パッケージが呼び出さHelloれ、完全修飾名Hello.Helloが作成されます。つまり、Hello.java ファイルが必要です。code/repositories/java/Hello

次に、フォルダーにcdしてcode/repositories/javajavacを呼び出すとjavac Hello/Hello.java、実行できますjava Hello.Hello

別の注意として、Java 標準の命名規則では、パッケージ名に小文字を使用することが推奨されているため、パッケージを「hello」に変更することを検討してください。

于 2013-08-21T01:13:13.333 に答える
2

行を削除しますpackage Hello;。コンパイルして実行します。

于 2013-08-21T01:13:40.607 に答える