Java:多包最小工作示例
试图了解Java包如何使用类路径等。在~/Java/tmp/test/HelloWorld中,我创建了HelloWorld.Java:Java:多包最小工作示例,java,Java,试图了解Java包如何使用类路径等。在~/Java/tmp/test/HelloWorld中,我创建了HelloWorld.Java: package test; import test2.Hello2; public class HelloWorld { public static void main(String[] args) { Hello2 x = new Hello2(); x.blagh(args); } } 然后在~/java/t
package test;
import test2.Hello2;
public class HelloWorld {
public static void main(String[] args) {
Hello2 x = new Hello2();
x.blagh(args);
}
}
然后在~/java/tmp/test2/Hello2中,我创建了Hello2.java:
package test2;
public class Hello2
{
public static void blagh(String[] args) {
System.out.println("Hello, World");
}
}
在~/java/tmp中工作时,我尝试使用以下方法进行编译:
javac -g test/HelloWorld/HelloWorld.java
我得到以下错误:
test/HelloWorld/HelloWorld.java:3: package test2 does not exist
import test2.Hello2;
^
test/HelloWorld/HelloWorld.java:8: cannot find symbol
symbol : class Hello2
location: class test.HelloWorld
Hello2 x = new Hello2();
^
test/HelloWorld/HelloWorld.java:8: cannot find symbol
symbol : class Hello2
location: class test.HelloWorld
Hello2 x = new Hello2();
我尝试过设置类路径(我能想到的上述路径的所有可能组合)、更改运行编译器的目录等,但都不起作用。请帮助。您的
HelloWorld.java
属于包test
,因此它应该位于名为test
的目录中,而不是test/HelloWorld
。与Hello2.java
相同,它应该位于test2
中,而不是test2/Hello2
。将HelloWorld.java
移动到test
目录,将Hello2.java
移动到test2
目录,再试一次。1。使用IDE。2:您必须将两个源文件都提供给javac。如果只给它提供测试,它怎么可能知道test2在哪里呢?我从1997年开始开发java。除了少数几次外,我都使用IDE。帮自己一个忙而不是使用一个,这样你就可以专注于好的设计和好的编码,而不是包布局的基础设施。我更喜欢命令行。这并不难。从~/tmp/java
:javac-test/*.java-test2/*.java
应该可以工作。+1回答问题总是很好,而不是因为不使用IDE之类的无关紧要的事情而挖苦别人。