在linux中添加classpath

时间:2009-02-24 08:00:11

标签: java linux classpath

export CLASSPATH=.;../somejar.jar;../mysql-connector-java-5.1.6-bin.jar
java -Xmx500m folder.subfolder../dit1/some.xml
cd ..

以上语句用于将类路径设置为linux中已存在的类路径是否正确

4 个答案:

答案 0 :(得分:25)

我不喜欢设置CLASSPATH。 CLASSPATH是一个全局变量,因此它是邪恶的:

  • 如果你在一个脚本中修改它,突然一些java程序将停止工作。
  • 如果你把所有你运行的东西放在那里,它会变得杂乱无章。
  • 如果两个不同的应用程序使用同一个库的不同版本,则会出现冲突。
  • 由于不共享CLASSPATH中的库,因此没有性能提升 - 只是共享它们的名称。
  • 如果你在CLASSPATH中放置点(。)或任何其他相对路径,这意味着每个地方都有不同的东西 - 这肯定会引起混淆。

因此,首选方法是每次运行jvm时设置类路径,例如:

java -Xmx500m -cp ".:../somejar.jar:../mysql-connector-java-5.1.6-bin.jar"    "folder.subfolder../dit1/some.xml

如果它变长,标准程序是将其包装在bash或批处理脚本中以节省输入。

答案 1 :(得分:16)

除非你有充分的理由,否则建议永远不要破坏性地销毁现有的类路径。

以下行保留现有的类路径并添加到其上。

export CLASSPATH="$CLASSPATH:foo.jar:../bar.jar"

答案 2 :(得分:11)

在Windows和Linux中设置Classpath之间的重要区别是路径分隔符,即&#34 ;;" Windows中的(分号)和":" Linux中的(冒号)。此外,%PATH%用于表示Windows中现有路径变量的值,而${PATH}在Linux中用于相同目的(在bash shell中)。以下是在Linux中设置类路径的方法:

export CLASSPATH=${CLASSPATH}:/new/path

但是这样的Classpath非常棘手,你可能想知道为什么你的程序即使在设置了正确的Classpath之后也无法工作。注意事项:

  1. -cp选项会覆盖CLASSPATH环境变量。
  2. Manifest文件中定义的Classpath会覆盖-cpCLASSPATH envorinment变量。
  3. 参考:How Classpath works in Java

答案 3 :(得分:6)

linux下的路径由冒号(:)分隔,而不是分号(;),因为theatrus在他的示例中正确使用了它。我相信Java尊重这个惯例。

修改

andy suggested之外,您可以使用以下格式(在命令期间设置CLASSPATH):

CLASSPATH=".:../somejar.jar:../mysql-connector-java-5.1.6-bin.jar" java -Xmx500m ...

对你来说更方便。