Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Linux上设置类路径?_Java_Linux - Fatal编程技术网

Java 如何在Linux上设置类路径?

Java 如何在Linux上设置类路径?,java,linux,Java,Linux,我需要一个标题中问题的答案 谢谢。以下是我通过谷歌找到的两个不错的教程: 或保留系统范围的设置: export CLASSPATH=$CLASSPATH:/your/addition/ 如果您指的是Java类路径(来自您的标记),那么这与Windows在路径分隔符(:而不是;)方面只是不同。比如说 java -classpath /mydir/mylib.jar:/otherdir/otherlib.jar com.MyProgram -Xmx64m 我认为您不应该在Linux或任何其他

我需要一个标题中问题的答案


谢谢。

以下是我通过谷歌找到的两个不错的教程:


或保留系统范围的设置:

export CLASSPATH=$CLASSPATH:/your/addition/
如果您指的是Java类路径(来自您的标记),那么这与Windows在路径分隔符(:而不是;)方面只是不同。比如说

java -classpath /mydir/mylib.jar:/otherdir/otherlib.jar com.MyProgram -Xmx64m

我认为您不应该在Linux或任何其他操作系统上使用系统类路径环境变量

每个项目都应该有自己的类路径设置。它们通常由脚本或约定设置,因此不需要系统环境变量

此外,如果两个项目需要冲突的JAR,您会怎么做

该环境类路径是否包括您机器上每个项目所需的每个JAR?那不实际


classpath环境变量可能是Java 1.0的标准,但我认为现在不应该是这样。

创建一个设置classpath的小型shell脚本:

#!/bin/bash
export JAVA_HOME=...

cp=$(find lib -name "*.jar" -exec printf :{} ';')
if [[ -n "$CLASSPATH" ]]; then
    cp="$cp;CLASSPATH"
fi

"$JAVA_HOME/bin/java" -classpath "$cp" ...

这是什么贝壳?BASH、TCSH、BOURNE……每个进程都可以设置一个类路径变量,即仅针对当前shell及其派生的子进程。这在unix上的java启动脚本中很常见。您可以省略-classpath“$classpath”,因为java进程随时都会使用环境变量classpath的内容;它现在只保留类路径,以便子进程可以获取原始版本。
#!/bin/bash
export JAVA_HOME=...

cp=$(find lib -name "*.jar" -exec printf :{} ';')
if [[ -n "$CLASSPATH" ]]; then
    cp="$cp;CLASSPATH"
fi

"$JAVA_HOME/bin/java" -classpath "$cp" ...