我有一个充满*.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
提前致谢。
编辑:这是我正在尝试开始工作的代码
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
答案 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文件的列表。