制作java包

ope*_*cks 2 java classpath

我的Java类组织变得有点乱,所以我正在讨论我在Java学习中跳过的东西:类路径.我无法安静地得到心爱的类来编译我为他们创建的包.这是我的文件夹层次结构:

.
com/
    david/
        Greet.java

        greeter/
            SayHello.java
            SayGoodbye.java
Run Code Online (Sandbox Code Playgroud)

SayHello的构造函数只打印"hello"和SayGoodbye的打印"Goodbye",而Greet的main方法只创建了这两个对象.在SayHello的顶部是包com.david.greeter; 与SayGoodbye和Greet相同的是包com.david;

在greeter文件夹中,我能够编译两个java文件但是如果我转到当前目录(保存com的目录)并执行javac -cp"com.david.greeter.*"com/david/Greet.java它说它找不到类以及说包com.david.greeter不存在.我也试过手动设置$ CLASSPATH.

我在这里结束了,Stackoverflow(正如我在这里发布的那样).你们中的任何人都知道我做错了什么吗?

Dav*_*kes 5

java编译器将遍历类路径的子目录,寻找它需要的包.

因此,您的命令行应如下所示:

javac -cp "." com/david/Greet.java
Run Code Online (Sandbox Code Playgroud)

当编译器在编译Greet.java时看到对com.david.greeter.SayHello的引用时,它将从类路径中的目录开始并遍历层次结构以查找它所需的包.