如何在类路径中包含.jar,以便在编译中包含库

时间:2014-04-25 02:40:46

标签: java linux ubuntu jar

我有一个充满*.jar个文件的文件夹,无论我在哪个目录,我都希望在编译过程中包含这些文件。正如我现在所理解的那样,这可能是完全错误的,我必须要制作/etc/environment中的此更改。所以我的/etc/environment目前看起来像这样:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
/usr/local/games:/~/Java/algs4/bin"
JAVA_HOME="usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java"
CLASSPATH="~/Java/algs4/bin:."

其中~/Java/algs4/bin是我的.jar所在的目录。但是当我尝试编译使用这些库的程序时,javac无法识别这些库。我捏造的是什么?

java版本是1.7.0_51

提前致谢。

编辑:这是我正在尝试开始工作的代码

FixedCapacityStackOfStrings.java

  public class FixedCapacityStackOfStrings{

    private String[] a;
    private int N;

    public FixedCapacityStackOfStrings(int cap){
        a = new String[cap];
    }

    public boolean isEmpty(){ return N == 0;}

    public int size()       { return N;}

    public void push(String item)
    {
        a[N++] = item;
    }

    public String pop()
    {
        return a[--N];
    }

    //test client
    public static void main(String[] args){
        FixedCapacityStackOfStrings s;
        s = new FixedCapacityStackOfStrings(100);
        while(!StdIn.isEmpty()){
            String item = StdIn.readString();
            StdOut.println(item);
            if (!item.equals("-"))
                s.push(item);
            else if(!s.isEmpty()) StdOut.print(s.pop() + " " );
        }
        StdOut.println("(" + s.size() + " left on stack)");
    }
}

其中StdOut和StdIn包含在.jar中的/bin个文件之一中。当我编译时,我得到了StdIn和StdOut

的错误cannot find symbol

3 个答案:

答案 0 :(得分:1)

使用CLASSPATH ="〜/ Java / algs4 / bin /*:."

答案 1 :(得分:1)

您应该在类路径中包含所有jar文件。

CLASSPATH=.
for j in ~/Java/algs4/bin/*.jar; do CLASSPATH=$CLASSPATH:$j done
export CLASSPATH

CLASSPATH环境是':'分隔的条目,包括jar / zip文件和目录。

目录用于搜索.class文件,而不是jar文件

答案 2 :(得分:0)

请参阅此文档。 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

类路径条目可以包含基本名称通配符*,这相当于指定扩展名为.jar或.JAR的目录中所有文件的列表。例如,类路径条目foo / *指定名为foo的目录中的所有JAR文件。简单地由*组成的类路径条目扩展为当前目录中所有jar文件的列表。