-1

私はソースコードを持っており、この中にsourceは2つのclassesが参照されています。ファイルからクラスを取得

今私はこのコードJavaCompilerを経由してcompileにしたいと思いますが、私は最初に2つを参照してコンパイルする必要がありますclasses

ファイルを読み込んでクラスを検索して最初にコンパイルするよりも良い方法はありますか?スイートははい、definitiveliyより良い方法がある

+0

参照元の他のソース(.java)ファイルの場合は、コードをコンパイルすると自動的にコンパイルされます。 –

+0

これらはありません。コンパイルするファイルはJUnitスイートで、クラスはテストケースです。スイートをコンパイルしようとするとエラーが発生します:java:8:シンボルが見つかりません シンボル:class XTest XTest.class、 – ctekk

+0

@Coretekだから、あなたは 'そうではありません。明らかに、JavaソースはクラスXTestを参照しています。さもなければ、そのコンパイラエラーは発生しません。 – EJP

答えて

2

今私はJavaCompilerを経由してこのコードをコンパイルしたいが、そのため、私は最初の2つの参照クラス

をコンパイルする を持っていません、あなたはしないでください。 Javaコンパイラがそれらのクラスを見つけることができる限り、それらは自動的にコンパイルされます。つまり、実際にコンパイルしているファイルと同じディレクトリシステムに置く必要があります。そうでない場合は、-sourcepathオプションを使用して検索できます。

+0

私はsourcepathオプションを最初に見ていただきありがとうございます。 – ctekk

+0

働いてありがとう! – ctekk

1

あるよう

package data.testcases 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 


@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
     XTest.class, 
     YTest.class 
}) 
public class ASuite { 
} 

XTest.javaとYTest.javaは同じディレクトリにあります。 Apache Antのようなビルドツールを使用してビルドを整理します。 Ant Wikiにはtutorialsがいくつか含まれています。

+0

いいえ外部ツールを使いたくありません。 – ctekk

2

ドキュメントを見る。 JavaCompilerについては、getTask(..)に提供されたcompilationUnitsの反復可能なコレクションにそれらを追加すると、望ましい結果が得られるはずです。

関連する問題