在终端中编译java应用程序

时间:2013-01-09 12:21:34

标签: java jar compiler-errors classpath javac

我在linux上,在testjavaapp目录中创建了一个/home/Downloads文件夹,然后将三个MyApp.javaMyLib.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库但是不正确地添加了本地静态库。

你能帮我解决一下吗?

1 个答案:

答案 0 :(得分:0)

嗯,这看起来很明显,所以我可能会遗漏一些东西

  

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

修改

是的,我错过的显而易见的是静态导入对默认包不起作用。 This bug report讨论了为什么Java以这种方式起作用,并且它最终被关闭为“不是缺陷” - 这就是Java的行为方式。默认包只有一些意想不到的行为,这也是鼓励程序员从不使用默认包的原因之一。