-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应该达到期望的结果。