Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:多包最小工作示例_Java - Fatal编程技术网

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

试图了解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/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之类的无关紧要的事情而挖苦别人。