【问题标题】:running jar that references another jar运行引用另一个 jar 的 jar
【发布时间】:2014-07-12 20:49:38
【问题描述】:

试图从引用另一个 jar 的命令行运行一个 jar。

我可以在不引用其他 jar 的情况下运行 jar:

/usr/java6/bin/java -cp /u/me/bin/MyJar.jar com.mypackage.myprogram.ContainsMain

现在,如果我需要添加另一个 MyJar 引用的 jar,那么我尝试这个但它失败了:

/usr/java6/bin/java -cp /u/me/bin/MyJar.jar;/u/me/bin/OtherJar.jar com.mypackage.myprogram.ContainsMain

我得到错误:OtherJar.jar: 无法执行

好像只要我放一个';'在 -cp 参数中它失败了

如果这很重要,我在 AIX 机器上

两个 jar 文件的文件权限都设置为 777

【问题讨论】:

  • 附注:如果您考虑将 MyJar 转换为可执行 jar,您的生活可能会变得容易得多。如果做得好,即使你有一百个库依赖项,它也变得像运行 java -jar MyJar.jar 一样简单。在不久的将来要研究的东西,我想我会提到它以防止人们相信 Java 总是这么麻烦。

标签: java jar classpath aix


【解决方案1】:

在 Unix/Linux/related 上,路径分隔符不是;,而是:。修改你的命令行:

/usr/java6/bin/java -cp /u/me/bin/MyJar.jar:/u/me/bin/OtherJar.jar com.mypackage.myprogram.ContainsMain

【讨论】:

  • 附加说明 - ;是 unix 上的命令分隔符,因此您在这里运行两个命令 - /usr/java6/bin/java -cp /u/me/bin/MyJar.jar; AND /u/me/bin/OtherJar.jar com.mypackage.myprogram.ContainsMain
【解决方案2】:

由于您使用的是 Unix 平台,因此您的 classpath 分隔符应该是冒号,而不是分号。

这个:

/usr/java6/bin/java -cp /u/me/bin/MyJar.jar;/u/me/bin/OtherJar.jar com.mypackage.myprogram.ContainsMain

interpreted by the shell as two commands 用分号分隔,因此您的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2017-12-21
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多