java - 在包中使用外部类文件

标签 java package classpath javac

我有一个程序,它使用位于相邻文件夹中名为 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/

相关文章:

javascript - 在哪里放置前端javascript配置变量

java - eclipse 错误地将包解释为 "resources"或源文件夹

java - 如何从 Java 获取 src/main/resources 路径

java - “哪个”命令等效于在 Java 类路径上查找资源

java - 使用来自不同项目的加载器从项目的源文件夹加载文件

java - 从 for 循环打印元素

java - Grails:GORM:遍历多对多关系

database - 无法在 Go 中定义来自另一个包的接收器

java - 无法通过拖放批处理文件来访问 jar 文件

Java:有没有一种简单的方法来选择数组的子集?