2017-07-17 3 views
0

私のJavaプログラムをコマンドラインからコンパイルして実行しようとすると、ちょっと変わってしまいます。ファイル構造は次のとおりです。パッケージは複雑なファイル構造を持つJavaプログラムをコマンドラインからコンパイルして実行する

package com.example; 

としてのjavaファイルの先頭で定義されて

[ROOT]/ 
| 
|____libs/ 
| |____myExtraJar.jar 
|  
|____src/ 
    |____main/ 
      |____com/ 
       |____example/ 
        |____myClass.java 

私は、ルートフォルダにしながら、プログラムの罰金を(と思う)をコンパイルすることができています、

javac -classpath "/libs/myExtraJar.jar" src/main/com/example/*.java 

使用して(私はクラスパスをオフのままにした場合に発生、そのようなもの)私はすべてのコンパイルエラーを取得しないと私は.classファイルは、COM /例/フォルダに作成されていることがわかります。しかし、私はコンパイルされたプログラムを実行する方法を見つけることができません。メッセージ

Error: Could not find or load main class src.main.com.example.myClass 

java src/main/com/example/myClass 

を実行すると、結果任意の助けいただければ幸いです。

+0

このようなファイル構造(標準ディレクトリレイアウトと呼ばれています)を使用している場合は、通常MavenやGradleを使用してビルドを管理しています。また、 'src/main'はその包み。 – chrylis

+0

ああ、このプロジェクトは古いAndroid Studioプロジェクトの残り物として存在し、元の​​ファイル構造を使用しています。 –

答えて

0

実行時にクラスパスを指定する必要があります。完全修飾クラス名も使用する必要があります。同様に、

java -cp "libs/myExtraJar.jar:src/main" com.example.myClass 
+0

これは問題でした。ありがとうございました!それが私にできるだけ早く正しい答えを受け入れます。 –

0

エリオットが正しい。より正確には、ビルドディレクトリをクラスパスに追加する必要があります。 *.classファイルを含むディレクトリで、時にはtarget/という名前です。

$ java -cp "target:lib/myExtraJar.jar" com.example.myClass 

また、src/main/com/example/myClass完全修飾クラス名ある、com.example.myClassであるべきです。 javaコマンドの詳細については、http://www.manpagez.com/man/1/java/を参照してください。

関連する問題