0

我在linux上,testjavaapp在目录中创建了一个文件夹,然后/home/Downloads将三个文件MyApp.java和文件添加到该文件夹​​中。MyLib.javahppc-0.4.1.jar

MyLib.java以。。开始:

import java.util.ArrayList;
import com.carrotsearch.hppc.IntArrayList;

public final class MyLib {
...

MyApp.java开始于:

import static MyLib.*;
import com.carrotsearch.hppc.IntArrayList;
import java.util.Date;

public class MyApp {

    public static void main(String[] args) {
...

当我执行时:

[myself@laptop ~]$ cd Downloads/testjavaapp/
[myself@laptop testjavaapp]$ javac -cp '.:/home/myself/Downloads/testjavaapp/hppc-0.4.1.jar' MyLib.java

java编译器创建MyLib.class没有任何问题。但是当我执行时:

[myself@laptop testjavaapp]$ javac -cp '.:/home/myself/Downloads/testjavaapp/hppc-0.4.1.jar' MyApp.java

它吠叫:

MyApp.java:1: error: cannot find symbol
import static MyLib.*;
              ^
  symbol: class MyLib

看起来我正确地添加了.jar库,但不正确地添加了本地静态库。

你能帮我修一下吗?

4

1 回答 1

0

好吧,这似乎很明显,所以我可能遗漏了一些东西

javac -cp '.:/home/myself/Downloads/testjavaapp/hppc-0.4.1.jar' *.java

编辑

是的,我错过的明显是静态导入不适用于默认包。这个错误报告讨论了为什么 Java 会以这种方式运行,最终它被关闭为“不是缺陷”——这是 Java 设计的行为方式。默认包只是有一些意想不到的行为,这也是鼓励程序员永远不要使用默认包的原因之一。

于 2013-01-09T12:25:21.183 回答