Java 从不同目录运行jar找不到所需的依赖项
我正在尝试运行一个jarJava 从不同目录运行jar找不到所需的依赖项,java,jar,classpath,dependencies,Java,Jar,Classpath,Dependencies,我正在尝试运行一个jarec/mobat/mobat.jar,它取决于位于ec/mobat/lib/中的一些jar。如果我这样做,它会起作用: ec/mobat/$ java -jar MOBAT.jar 但是,我希望能够从另一个目录运行jar ec/$ java -jar mobat/MOBAT.jar 但我有个例外 java.lang.NoClassDefFoundError: ibis/io/Serializable ... 我试图在类路径中传递所需的jar ec/$ CLASSPA
ec/mobat/mobat.jar
,它取决于位于ec/mobat/lib/
中的一些jar。如果我这样做,它会起作用:
ec/mobat/$ java -jar MOBAT.jar
但是,我希望能够从另一个目录运行jar
ec/$ java -jar mobat/MOBAT.jar
但我有个例外
java.lang.NoClassDefFoundError: ibis/io/Serializable
...
我试图在类路径中传递所需的jar
ec/$ CLASSPATH=... java -jar mobat/MOBAT.jar
ec/$ java -jar -cp ... mobat/MOBAT.jar
但我得到了完全相同的例外。有办法吗
更新: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
类路径必须包含您所依赖的每个jar
java -classpath b.jar;c.jar -jar a.jar //does not work see below
对于windows“;”依赖于系统“:”对于unix
jar开关用于选择执行其主类的jar文件(清单文件中的主类:mobat.Launcher)。命令行:
java -classpath b.jar;c.jar;a.jar mobat.Launcher
会产生同样的结果
或者,也可以添加到清单文件中。您的清单文件可能包含该属性
Class-Path: lib/b.jar lib/c.jar
然后
会有用的
编辑:
我认为-jar和-cp可以一起使用。但问题很清楚:
-jar使用此选项时,JAR文件是所有用户的源文件 类和其他用户类路径 设置被忽略
只有manifest和everythingexplict(classpath和main类)版本可以工作。不能同时使用-cp和-jar
java-cp myjar.jar;lib/*;。mypackage.MyClass
应在窗户和窗户上工作
java-cp myjar.jar:lib/*:。mypackage.MyClass
你能在Unix上工作吗?你能发布MOBAT.jar的清单吗?它对lib文件夹中的jar定义了一些依赖关系吗?我不想运行这个类或修改jar(它是一个库,不是我的源代码),所以第二个和第三个解决方案不起作用(我实际上尝试了第二个,但得到了一个不同的错误)。正如我在问题中所解释的,我已经尝试了第一种解决方案:在类路径中传递jar,但仍然不起作用。您是否向jar xft检查过该类是否在任何jar中?我知道了,但仍然,我不明白为什么
ec/mobat$java-jar mobat.jar
找到其他jar。你的答案是:我只能运行位于当前目录中的jar!我真的希望不是这样,还有一件事:我试图修改MANIFEST.MF,但现在我得到了java.io.IOException:line太长了
java -jar a.jar