2012-02-10 11 views
3

この質問は以前に尋ねられましたが、何らかの理由で何が間違っているのかまだ分かりません。 ファイルsrcのpackagetestestにNewClassという名前のクラスがあります。端末からJavaクラスを実行しています

のjavacのsrc/syntaxtest/NewClass.java

とクラスがコンパイルされ、私はsyntaxtestフォルダにNewClass.classを見ることができます:SRCパスから私はと入力します。 NewClass.classと同じパスまたは同じフォルダから、クラスから端末を実行する方法を理解できません。

+1

「Java NewClass」を試しましたか?コマンドを試す前にそのディレクトリにいることを確認してください(その形式にする) – Andrew

+0

私がフォルダにいる間にJava NewClassを試してみると、NewClass.classはClassDefNotFoundになります。私がjava syntaxtest.NewClassを試してみたら、ClassDefNotFound(間違った名前:syntaxtest/NewClass)を取得します。私はその名前を試してみると、NoClassDefFoundを取得します... – Giannis

+0

"java -cp。NewClass"これを試してください – Andrew

答えて

7

てみてください "java -cp src syntaxtest.NewClass":私は

ClassDefNotFoundまたはClassDefNotFound(syntaxtest/NewClass間違った名前)を取得する多くの異なった試みが、エーテルを行っています。

つまり、サブフォルダ(パッケージ) "syntaxtest"と "NewClass"クラスが "package syntaxtest"に含まれているフォルダ "src"がある場合、上記のコマンドが機能します。

$ ls src/syntaxtest 
NewClass.java 
$ cat src/syntaxtest/NewClass.java 
package syntaxtest; 
public class NewClass { 
    public static void main(String args[]) { 
    System.out.println("Hello, World!"); 
    } 
} 
$ javac src/syntaxtest/NewClass.java 
$ java -cp src syntaxtest.NewClass 
Hello, World! 
+0

nopeは動作しません。 – Giannis

+0

@latusaki:あなたのパッケージ名が "syntaxtest"であると仮定しています。代わりに "src.syntaxtest"であれば "java src.syntaxtest.NewClass'"を実行してください。 – maerics

+0

srcは単なるフォルダではありません。その中にsyntaxtestという別のフォルダがあります。 .javaと.classファイルがあります。 NewClassはシンタックステストパッケージに含まれています。その奇妙なことに私はクラスを呼び出す方法を理解できません。 Btw私はクラスからパッケージを削除するので、私はそれを呼び出すことができますどのパッケージにもありません。だからパッケージに何か間違っているはずです。 – Giannis

1

私は、次の試験作った:ホーム/テスト/何とかにおけるJavaファイルを作成し

  • /TestClass.java

    パッケージ何とかし;

    パブリッククラスTestClass { public static void main(String [] args){ System.out.println( "Hello World!"); } }

  • がディレクトリホーム/テストに行ってきました/

  • を入力して、ファイルをコンパイル:
javac blah/TestClass.java 
  • [OK]をコンパイルしたファイルを手に入れました。
  • 入力して蘭:
java blah.TestClass 
  • は、メッセージ・ガットに "Hello World!" を期待どおり:プログラムは正常に実行されます。
  • を入力して実行しようとした
  • /ディレクトリのホームに行ってきました:

Javaのテスト/ blah.TestClass

  • ...とスラッシュドットの他の多くの組み合わせを.....何も働かなかった....あなたと同じ例外を得続ける:
java.lang.NoClassDefFoundError 

だから、あなたが本当に、アプリケーションのルートフォルダにある必要がありますコマンドのJava 'を使用して、Javaクラスを実行するために、私にはそのようです。

0

私は同様の問題がありました。 私はMacファインダから直接srcとbinフォルダを使ってプロジェクトを整理し、Emacsや他のテキストエディタを使いたいと思っていました。私は日食が気に入らなかった。

別のフォルダからクラスを実行することはできませんが、別のフォルダから実行するクラスにコンパイルすることはできます。例えば

(何のパッケージが存在しないと仮定)は、binフォルダに移動し、実行します。../bin/

(コンパイルされることを-d ../src/name.java

の$のjavacをsrcフォルダから.binファイルを直接binに出力)

関連する問題