如何从包含大罐子列表的控制台运行java? [复制]
Posted
技术标签:
【中文标题】如何从包含大罐子列表的控制台运行java? [复制]【英文标题】:How to run java from console with included big list of jars? [duplicate] 【发布时间】:2013-08-07 14:17:10 【问题描述】:我有一些使用 30 个 jar 的 Java 程序。
今天我知道我可以这样做:
java -cp 1.jar;2.jar.....;30.jar; MyApplication -param1 AA -param2 BB
看起来很乱吗?
如何将所有 jar 分组到一个组(文件),就像 Eclipse 对 .classpath
所做的那样
谢谢,
【问题讨论】:
【参考方案1】:您可以使用通配符添加特定文件夹中的所有文件,如 here 所示
【讨论】:
这不应该是一个答案,而是一个近距离投票。或者至少一条评论。 @JoachimSauer 我认为 the-funky-monkey 没有足够的声誉来发表评论 - 所以答案是唯一的选择 @mschenk74:如果我没记错的话,当您还没有关闭权限时,可以“标记为重复”。【参考方案2】:这看起来很乱吗?绝对地!在这些情况下,我经常编写一个批处理/shell 脚本来简单地调用java -cp
命令。
拥有特定脚本的优点是您不依赖于环境变量 (CLASSPATH
),因此不同的脚本/可执行文件可以使用不同的 jar 集。
请注意,如果您使用 Ant/Maven 等构建项目,它们将提供选项以使用与您构建程序相同的类路径(或其派生路径)运行程序。
例如
$ mvn exec:java
【讨论】:
在我的例子中,我从 java 应用程序的外部程序列表运行,其中每个程序都基于一组 jars (hadoop/hive/jmx .....)。【参考方案3】:使用环境变量,并将其传递给 -cp 选项
从 Java 6 开始,您可以使用通配符选项在一个目录中包含多个 JAR。这是一个例子:
java.exe -classpath $HOME/myjars/* Main
【讨论】:
【参考方案4】:如果您的 Java 程序被捆绑为 jar 文件,您可以使用 jar 清单文件中的类路径属性来声明运行程序所需的其他 jar。通过这样做,您只需在命令行上列出您自己的 jar。
在Setting multiple jars in java classpath查看oxbow_lakes的答案
【讨论】:
【参考方案5】:Unix 解决方案:
要使其成为半动态且仍然易于在终端中使用,您可以将 alias
添加到您的 .bashrc
/ .bash_profile
以存储包含的 jar。
将alias javal="java -cp 1.jar:the-rest-of-your-jars.jar:2.jar:30.jar:"
添加到您的 bash 配置文件将可以只执行javal MyApplication -param1 AA -param2 BB
。当您想添加更多 jar 时,只需更新您的 .bashrc
/ .bash_profile
。当然你可以使用任何命令名来代替javal
。
关于别名here的简单解释。
-edit- 谢谢@mschenk74
【讨论】:
但这仅适用于使用 bash 作为 shell 的系统。它不能在 Windows 中开箱即用。 @mschenk74 +1 这是无可否认的事实 ;)以上是关于如何从包含大罐子列表的控制台运行java? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何一次性包含 CLASSPATH 中特定目录中的所有 jar? [复制]