我在linux上,在testjavaapp
目录中创建了一个/home/Downloads
文件夹,然后将三个MyApp.java
,MyLib.java
和hppc-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
库但是不正确地添加了本地静态库。
你能帮我解决一下吗?
答案 0 :(得分:0)
嗯,这看起来很明显,所以我可能会遗漏一些东西
javac -cp'。:/ home / myself / Downloads / testjavaapp / hppc-0.4.1.jar'* .java
修改强>
是的,我错过的显而易见的是静态导入对默认包不起作用。 This bug report讨论了为什么Java以这种方式起作用,并且它最终被关闭为“不是缺陷” - 这就是Java的行为方式。默认包只有一些意想不到的行为,这也是鼓励程序员从不使用默认包的原因之一。