2016-03-23 22 views
0

私はJavaで初心者です。私はUbuntu端末経由でJavaプログラムを実行しています 私はちょうどJavaパッケージトピックを開始し、数時間問題を扱っています。 私は、単一クラスのHelloを持つpackという単純なパッケージを作成しようとしました。 ディレクトリパックを作成しました。パックの中にHello.classファイルを入力してください。Javaパッケージ実行時エラー

javac -d ./pack Hello.java 

コマンドです。 次に、mainメソッドを含むクラスにpackパッケージを含めました。クラスの名前はtestで、test.javaファイルにあります。このクラスは別のディレクトリにあります。私は

javac -cp ./pack test.java 

を介してコンパイルします。エラーはありません。私は、コマンド

java -cp ./pack test 

を入力したときに、私は

java test 

コマンドを試したとき はしかし、それは私に

Error: Could not find or load main class test 

を与えます。次のメッセージが表示されました

Exception in thread "main" java.lang.NoClassDefFoundError: pack/Hello 
at test.main(test.java:6) 
Caused by: java.lang.ClassNotFoundException: pack.Hello 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
... 1 more 

誰でも私が間違っていることを説明できますか?どんな助けでも大歓迎です。

申し訳ありません、私はボットに自分のソースコードを含めました。どうぞ。

import pack.Hello; 
public class test 
{ 
    public static void main(String args[]) 
    { 
     Hello.HelloMessage(); 
    } 
} 

これは、すべてがOKかどうかをテストしtest.javaファイルです。それは

/home/uesername/apps 

ディレクトリにあります。

私は "pack"ディレクトリを作成しました。パックディレクトリへのフルパスは

home/username/apps/pack 

です。 "pack"の中にHello.javaファイルを入れました。 Hello.javaファイルの内容は、

package pack; 
public class Hello 
{ 
    public static void HelloMessage() 
    { 
     System.out.println("hello, world"); 
    } 
} 
+0

"ディレクトリパックを作成しました。パック内にHello.classファイルを挿入します"。 '-d'フラグはあなた自身のためにパッケージ構造を作成します – Ramanlfc

+0

ソースコードを表示できますか? "package"で始まる行とHelloを "import"する行は、少なくとも(test.javaから)必要です。 Hello.javaからは、 "package"で始まる行が必要です。 –

答えて

2

です。まず、コンパイル、実行、デバッグ用の環境をセットアップするためのIDEを使用することをお勧めします。

問題は、間違ったパスでコンパイルしたことです。

javac -cp . pack/Hello.java 
javac -cp . pack/test.java 

java -cp . pack.Hello 

または

java -cp . pack.test 

問題は、ディレクトリpackにパッケージpackを持つクラスをコンパイルし、で終わるだろうということです

pack/pack/Hello.class 

Hello.classファイルの配置場所を確認することをお勧めします。

+0

あなたは正しいです。 Hello.classファイルはpack/packディレクトリにあります。 packディレクトリにコピーしました。しかし、私がjavaコマンドを入力すると、それでも私にエラーメッセージが表示されます –

+0

@olzhabala私は 'java'コマンドを実行しましたか? –

+0

@olzhabala私はあなたのディレクトリをセットアップし、コンパイルしてコードを実行し、デバッグするのを容易にするIDEを使うことを提案しています。私はIntelliJ Community Editionを使用します。 –