在包中使用外部类文件

时间:2015-03-03 22:54:30

标签: 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的位置来编译HelloWorld.java和javac一样,

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

但是,如果我将package prj取消注释为HelloWorld.java,那么javac输出它无法找到符号JHelper

为什么让HelloWorld.java成为一个包阻止javac在CLASSPATH上找到JHelper?

1 个答案:

答案 0 :(得分:1)

因为如果其他类AB位于同一个包中,则类B只能使用类A而无需导入它(或整个包) (或在java.lang包中)。

但是......你无法从默认包中导入类。

因此,遵循的简单规则是:永远不要将类放在默认包中。