特定の数のパッケージに含まれるさまざまな数の Java クラスで構成されるアプリケーションを Java でコンパイルしようとしています。コマンド ラインで、ルート パッケージを含むフォルダーに移動し、次のように入力します。
javac rootpackage/subpackage/*.java
また
javac rootpackage/*/*.java
私のルートパッケージのすべてのプライマリサブパッケージですべてのJavaクラスをコンパイルします。
ただし、Java アプリケーション内でこれを実行できるようにしたいと考えています。(アイデアは、ユニット テストを含むアプリケーションを学生に提供することです。ユニット テストは学生のコードに対して実行する必要があり、アプリケーションは、テスト結果が「透かし」されたソース ファイルを含む JAR ファイルを作成します。すべてこれは問題なく動作しますが、テストしたクラス ファイルが提出されたソース ファイルから作成されていることを確認したいので、Java ソースをプログラムでコンパイルするという考えです)。
問題は、各学生が自分のルート パッケージを任意の場所に保存し、ファイルの場所を JavaCompiler (javax.tools) に渡すことができないことです。
可能であれば、任意に配置されたルートパッケージを適切にコンパイルする方法についてヒントを与えることができますか?
乾杯
リチャード
より詳しい情報:
学生のフォルダ構造は次のとおりです。
/home/student/work/java/myproject/
ルートパッケージが含まれています。彼らはアプリケーション (このフォルダーに保存されている可能性があり、したがって問題はありませんが、他の場所に保存されている可能性が高い) を起動し、ルート パッケージを含むフォルダーを要求します。入力後、学生は [JAR の作成] ボタンをクリックします。これにより、パッケージ内のファイルがコンパイルされ、新しくコンパイルされたファイルに対してテストが実行され、JAR が作成されます。
この問題について考えながら、ルート パッケージを含むフォルダに「JAR の作成」アプリケーションをインストールするよう学生に指示することで解決できる可能性があります。