在包中使用外部 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 B
与 A
在同一个包中(或在 java.lang
包中)。
但是...您无法从默认包中导入 classes。
所以要遵循的简单规则是:永远不要将 classes 放入默认包中。
我有一个程序使用位于相邻文件夹中的名为 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 B
与 A
在同一个包中(或在 java.lang
包中)。
但是...您无法从默认包中导入 classes。
所以要遵循的简单规则是:永远不要将 classes 放入默认包中。