繁体   English   中英

如何在Java中设置类路径?

[英]How to set the classpath in Java?

我有很多jar文件要添加到我的类路径中,因此,每次编译Java文件时,都会得到如下命令:

javac -cp commons-digester-2.1/commons-digester-2.1.jar:lucene-core-3.0.3.jar:commons-logging-1.1.1/commons-logging-1.1.1.jar:commons-beanutils-core-1.7.0.jar:. CollectionIndexer.java

我尝试使用:

set CLASSPATH=commons-digester-2.1/commons-digester-2.1.jar:lucene-core-3.0.3.jar:commons-logging-1.1.1/commons-logging-1.1.1.jar:commons-beanutils-core-1.7.0.jar:.

接着:

javac CollectionIndexer.java

但是根本没有添加jar:由于缺少jar,我得到了错误信息...谢谢

尝试使用export CLASSPATH=...而不是set CLASSPATH=...

(考虑到类路径中的冒号,我假设您正在使用某种描述的Unix框。)

我认为,最轻松的方法是创建包含与项目相关的所有jar的批处理文件...一种可以编译,另一种可以运行:-

编译

javac -cp commons-digester-2.1/commons-digester-2.1.jar:lucene-core-3.0.3.jar:commons-logging-1.1.1/commons-logging-1.1.1.jar:commons-beanutils-core-1.7.0.jar:. %1

运行

java -cp commons-digester-2.1/commons-digester-2.1.jar:lucene-core-3.0.3.jar:commons-logging-1.1.1/commons-logging-1.1.1.jar:commons-beanutils-core-1.7.0.jar:. %1

这样,您可以执行以下操作:-

compile.bat CollectionIndexer.java

run.bat CollectionIndexer

更好的是,您可以将它们组合在一起:

编译器

确保将“ .java”附加到javac的%1

javac -cp commons-digester-2.1/commons-digester-2.1.jar:lucene-core-3.0.3.jar:commons-logging-1.1.1/commons-logging-1.1.1.jar:commons-beanutils-core-1.7.0.jar:. %1.java
java -cp commons-digester-2.1/commons-digester-2.1.jar:lucene-core-3.0.3.jar:commons-logging-1.1.1/commons-logging-1.1.1.jar:commons-beanutils-core-1.7.0.jar:. %1

这样,您可以执行以下操作:-

compilerun.bat CollectionIndexer

与设置类路径相比,我更喜欢这种方法,因为我不需要在每次打开终端时都重新键入类路径。 :)

顺便说一句,修改CLASSPATH环境变量专门用于编译项目不是很好,因为在此之后,所有其他项目都将继承此更改。 当然,这仅在您全局更改时有效。 如果不是,而是计划编写一个小脚本来构建项目,那么为什么不考虑使用ant 祝好运!

您已经设置了CLASSPATH,但是没有将其放入环境中。 因此,这是一个变量,但不是环境变量。

要将脚本中/会话中的变量提升为环境变量,请使用命令export如下所示

export CLASSPATH

这会将变量提升为环境变量(继承环境的任何Shell都可以访问该变量)。

一些系统允许集合和导出的组合。 在这样的系统中,可以将set命令与export命令结合使用,如下所示:

export CLASSPATH=<your value here>

java命令仅读取环境变量CLASSPATH。 它不能研究非环境变量,因为它们不是从一个过程继承到另一个过程的。

除了导出UNIX环境外,还请使用绝对路径。 例如,类路径条目:commons-digester-2.1 / commons-digester-2.1.jar仅在位于commons-digester-2.1安装目录的父目录中时有效。

在Unix上,应该有一个公共位置来安装软件包。 类似于/ usr / local,/ usr / lib或/ usr / local / lib。

也许您想尝试使用Maven构建您的应用程序? 它真的很容易设置,并且消除了依赖管理的所有问题。

同样从Java 6开始,您可以在类路径中使用通配符: set CLASSPATH = my_libs \\ *;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM