为什么Java在同一个.jar中找到一个被引用的类而不是另一个?
如果我跑步:为什么Java在同一个.jar中找到一个被引用的类而不是另一个?,java,jar,classpath,Java,Jar,Classpath,如果我跑步: java -jar myjar.jar 我得到: java.lang.NoClassDefFoundError: org/apache/commons/math3/stat/regression/OLSMultipleLinearRegression java.lang.NoClassDefFoundError: org/apache/commons/math3/special/Erf 但是,如果我运行: java -classpath '.:commons-math3-3.
java -jar myjar.jar
我得到:
java.lang.NoClassDefFoundError: org/apache/commons/math3/stat/regression/OLSMultipleLinearRegression
java.lang.NoClassDefFoundError: org/apache/commons/math3/special/Erf
但是,如果我运行:
java -classpath '.:commons-math3-3.2.jar' -jar myjar.jar
我得到:
java.lang.NoClassDefFoundError: org/apache/commons/math3/stat/regression/OLSMultipleLinearRegression
java.lang.NoClassDefFoundError: org/apache/commons/math3/special/Erf
知道为什么会这样吗
我只是不计算当添加的.jar中确实存在两个类时,-classpath
选项如何解决一个类而不是另一个类的“未找到类”错误
还是我错误地调用了.jar?这里有问题吗?我编辑并澄清了。
-classpath
在使用-jar
,IIRC时无效。是的,刚刚选中:“当您使用此选项时,JAR文件是所有用户类的源,其他用户类路径设置被忽略。”因此,我很惊讶它会有任何效果。请确保将所有依赖项作为类路径属性包含在JAR中的MANIFEST.MF文件中。@JonSkeet如果是这样,我是否可以合并两个jar,生成一个已经包含库的myjar.jar?怎么做?