我有一些使用 30 个 jar 的 Java 程序。
今天我知道我可以这样做:
java -cp 1.jar;2.jar.....;30.jar; MyApplication -param1 AA -param2 BB
看起来很乱吗?
如何将所有 jar 分组到一个组(文件),就像 Eclipse 一样.classpath
谢谢,
我有一些使用 30 个 jar 的 Java 程序。
今天我知道我可以这样做:
java -cp 1.jar;2.jar.....;30.jar; MyApplication -param1 AA -param2 BB
看起来很乱吗?
如何将所有 jar 分组到一个组(文件),就像 Eclipse 一样.classpath
谢谢,
您可以使用通配符添加特定文件夹中的所有文件,如此处所示
这看起来很乱吗?绝对地!在这些情况下,我经常编写一个批处理/shell 脚本来简单地调用java -cp
命令。
拥有特定脚本的优点是您不依赖环境变量 ( CLASSPATH
),因此不同的脚本/可执行文件可以使用不同的 jar 集。
请注意,如果您使用 Ant/Maven 等构建项目,它们将提供选项以使用您构建它的相同类路径(或其派生路径)运行您的程序。
例如
$ mvn exec:java
使用环境变量,并将其传递给 -cp 选项
从 Java 6 开始,您可以使用通配符选项在一个目录中包含多个 JAR。这是一个例子:
java.exe -classpath $HOME/myjars/* Main
如果您的 Java 程序捆绑为 jar 文件,您可以使用 jar 清单文件中的类路径属性来声明运行程序所需的其他 jar。通过这样做,您只需在命令行上列出您自己的 jar。
请参阅Setting multiple jars in java classpath中 oxbow_lakes 的答案
Unix解决方案:
为了使它成为半动态的并且在你的终端中仍然易于使用,你可以添加一个alias
到你的.bashrc
/.bash_profile
来存储包含的 jars。
添加alias javal="java -cp 1.jar:the-rest-of-your-jars.jar:2.jar:30.jar:"
到您的 bash 配置文件将可以只执行javal MyApplication -param1 AA -param2 BB
. 当您想添加更多罐子时,只需更新您的.bashrc
/ .bash_profile
。当然,您可以使用任何命令名代替javal
.
关于别名的简单解释在这里。
-编辑-谢谢@mschenk74