我有一个程序,它使用位于相邻文件夹中名为 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
但是,如果我取消 HelloWorld.java 中 package prj
的注释,那么 javac 会输出找不到符号 JHelper
为什么将 HelloWorld.java 制作为包会阻止 javac 在 CLASSPATH 上找到 JHelper?
最佳答案
因为如果另一个类 B
存在,则类 A
只能使用类 B
而无需导入它(或其整个包)与 A
相同的包(或者位于 java.lang
包中)。
但是...您无法从默认包中导入类。
因此要遵循的简单规则是:永远不要将类放入默认包中。
关于java - 在包中使用外部类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28843600/