-1

我有一個源代碼,在source中有兩個classes引用。從文件中獲取類

現在我想通過JavaCompilercompile這個代碼,但因此我必須首先編譯兩個引用classes

有沒有比閱讀文件和搜索類更好的方法,先編譯它們?

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是在同一目錄的套房是

+0

如果它引用其他源文件(.java),它們會自動編譯,如果你編譯你的代碼... – 2012-03-20 09:37:56

+0

不,它們不是。要編譯的文件是JUnit Suite,類是Testcases。試圖編譯該套件時的錯誤是:java:8:找不到符號 symbol:class XTest XTest.class, – ctekk 2012-03-20 09:40:08

+0

@Coretek所以當你說'不,他們不是''你的意思是'是的,他們是'。很明顯,Java源代碼是指XTest類。否則,你不會得到該編譯器錯誤。 – EJP 2012-03-20 09:47:36

回答

2

現在我想通過編寫此JavaCompiler進行代碼,但因此我必須 首先編譯兩個引用的類

不,你不會。只要Java編譯器能夠找到這些類,它就會自動編譯它們。這意味着它們需要位於與實際編譯的文件相同的目錄系統中,否則需要通過-sourcepath選項進行定位。

+0

我將看看第一個例子中的sourcepath選項。 – ctekk 2012-03-20 09:55:13

+0

工作過,謝謝! – ctekk 2012-03-20 10:15:34

1

是的,有definitiveliy一個更好的方法。使用構建工具(如Apache Ant)來組織您的構建。 Ant Wiki中包含幾個tutorials

+0

不,我不想使用外部工具。 – ctekk 2012-03-20 09:41:49

2

查看文檔。對於JavaCompiler向我建議,將它們添加到提供給getTask(..)的迭代集合compilationUnits應該達到期望的結果。