我是一位经验丰富的程序员,但多年来没有使用过 Java - 主要是 C# - 并且过去使用过 IDE。我正在尝试从我的 Mac 上的命令行编译一些代码,但无法让我的测试文件找到我的源代码。我假设问题出在包、文件结构、类路径和导入语句空间的某个地方——但我已经投入了几个小时(包括在 Stack Overflow 上寻找)并且仍然卡住了。
这是我所拥有的:
Directory structure:
ProjectName
|
--src
|
--SourceClass
--test
|
--SourceClassTest
--external
|
--testng-6.8.7.jar
我的 SourceClass 看起来像这样:
package ProjectName;
public class SourceClass<T>{
}
很简单。显然,还会有更多——但我想首先确保在我实际进行编码之前所有这些设置都是正确的。
我的测试类如下所示:
package ProjectName;
import java.util.*;
import org.testng.Assert;
import org.testng.annotations.*;
public class SourceClassTest{
@Test
private void createEmptySourceClass(){
SourceClass<Object> sourceClass = new SourceClass<Object>();
Assert.assertTrue(sourceClass.isEmtpy());
}
}
sourceClass 编译时使用“javac src/*.java”没有问题,从“ProjectName”目录运行。我想看到这个失败并出现“SourceClass 没有 isEmpty() 方法”的错误,但是我从“ProjectName”目录运行 javac 是这样的:
javac test/*.java -classpath external/testng-6.8.7.jar
并得到这个例外:
test/SourceClassTest.java:12: error: cannot find symbol
SourceClass<Object> tree = new SourceClass<Object>();
^
symbol: class SourceClass
location: class SourceClassTest
test/SourceClassTest.java:12: error: cannot find symbol
SourceClass<Object> sourceClass = new SourceClass<Object>();
^
symbol: class SourceClass
location: class SourceClassTest
2 errors
我已经尝试了很多东西 - 添加导入语句,向 javac 命令添加源路径,将 sourceClass 编译为 jar 并将其放入 bin 目录中,然后将其添加到类路径中,但我无法得到测试找到 SourceClass 符号。
知道我在这里缺少什么吗?