Ale*_*dru 4 java dependencies jar classpath
我正在尝试运行一个ec/mobat/MOBAT.jar依赖于一些罐子的罐子ec/mobat/lib/.它适用于我:
ec/mobat/$ java -jar MOBAT.jar
Run Code Online (Sandbox Code Playgroud)
但是我希望能够从另一个目录运行jar
ec/$ java -jar mobat/MOBAT.jar
Run Code Online (Sandbox Code Playgroud)
但我得到一个例外
java.lang.NoClassDefFoundError: ibis/io/Serializable
...
Run Code Online (Sandbox Code Playgroud)
我试图在类路径中传递所需的jar
ec/$ CLASSPATH=... java -jar mobat/MOBAT.jar
ec/$ java -jar -cp ... mobat/MOBAT.jar
Run Code Online (Sandbox Code Playgroud)
但我得到完全相同的例外.任何修复?
更新:MANIFEST.INF包含以下内容:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: Selmar Kagiso Smit
Main-Class: mobat.Launcher
Implementation-Version: 1.3.4
Run Code Online (Sandbox Code Playgroud)
类路径必须包含您依赖的每个jar.
java -classpath b.jar;c.jar -jar a.jar //does not work see below
Run Code Online (Sandbox Code Playgroud)
";" 对于unix来说,系统依赖于windows":".
jar开关用于选择执行主类的jar文件(清单文件中的Main-Class:mobat.Launcher).命令行:
java -classpath b.jar;c.jar;a.jar mobat.Launcher
Run Code Online (Sandbox Code Playgroud)
会产生相同的结果.
或者,可以将类路径定义添加到Manifest文件中.您的清单文件可以包含该属性.
Class-Path: lib/b.jar lib/c.jar
Run Code Online (Sandbox Code Playgroud)
然后
java -jar a.jar
Run Code Online (Sandbox Code Playgroud)
会工作.
编辑:
我认为-jar和-cp可以一起使用.但是java工具文档很清楚:
-jar
使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置.
只有manifest和everything explict(classpath和main class)版本才有效.
| 归档时间: |
|
| 查看次数: |
9490 次 |
| 最近记录: |