我以前从未尝试过这样做,并且有点困惑。同一个包中的两个类:
package test;
public class One {
public static String test () { return "hello world"; }
}
和:
package test;
public class Two {
public static void main (String[] args) {
System.out.println(One.test());
}
}
如果我尝试javac Two.java
在test/ 目录中,我会得到 One 的“找不到符号”。但是,如果我从父目录执行此操作javac test/Two
,它会编译,然后可以运行java test/Two
——但又不能从内部运行(抛出NoClassDefFoundError 说明类的正确名称是test/Two
, not Test
)。
没什么大不了的,但好奇是否有更好的解决方法,以及是否有人可以帮助我理解这个问题。实际上,我不需要“Two”成为测试包的正式成员,我只需要将它放在同一个目录中并在那里编译即可。