在包中使用外部 class 文件

Using external class files in a package

我有一个程序使用位于相邻文件夹中的名为 JHelper 的外部库

home
|--lib
|  |--JHelper.java
|  `--JHelper.class
`--prj
   `--HelloWorld.java

HelloWorld.java 文件

//package prj

public class HelloWorld {
    public static void main(String[] args) {
        String echoed = JHelper.echo("Hello World");
        System.out.println(echoed);
    }
}

我可以通过在 CLASSPATH 中提供 JHelper 的位置来使用 javac 编译 HelloWorld.java,

PS ~\prj> javac -classpath ".;..\lib\" HelloWorld.java

但是如果我取消注释 package prj 到 HelloWorld.java 然后 javac 输出它找不到符号 JHelper

为什么制作 HelloWorld.java 包会阻止 javac 在 CLASSPATH 上找到 JHelper?

因为 class A 只能使用 class B 而无需导入它(或其整个包)如果另一个 class BA 在同一个包中(或在 java.lang 包中)。

但是...您无法从默认包中导入 classes。

所以要遵循的简单规则是:永远不要将 classes 放入默认包中。