为了账号安全,请及时绑定邮箱和手机立即绑定

在linux下运行jar包报错:NoClassDefFoundError

在linux下运行jar包报错:NoClassDefFoundError

SMILET 2019-03-12 17:14:39
本人在windows下首先把程序打成jar包(带外部第三方jar包),然后把jar包和lib(存放第三方jar包的文件夹) 转存到linux下。 Windows下运行正常,Linux运行的时候报NoClassDefFoundError。以下是我打jar包时用的MANIFEST.MF文件Manifest-Version: 1.0Main-Class: com.chenyulin.astSimilarityCalculation/MainClass-Path: lib\org.eclipse.cdt.core_4.0.3.200802251018.jar lib\org.eclipse.equinox.common_3.6.0.v20110523.jarjava环境变量配置如下export JAVA_HOME=/usr/java/jdk1.7.0export CLASS_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport CATALINA_HOME=/usr/local/tomcat7037export PATH=/home/mysql5/bin:$JAVA_HOME/bin:$PATHexport PATH=$PATH:/usr/local/svn/bin
查看完整描述

4 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

如果你要使用环境变量来指定classpath, 那应该是 CLASSPATH 而不是 CLASS_PATH

或者可以在java命令中指定 classpath.

如果是 jdk7 以下的, 需要一个一个的指定jar:

java -classpath lib/foo.jar:lib/bar.jar

如果是 jdk7 或以上的, 可以更加简单:

java -classpath lib/*.jar


查看完整回答
反对 回复 2019-04-15
?
GCT1015

TA贡献1827条经验 获得超4个赞

1.第一步需要确认你的包中是否有对应的class文件,vim asttest.jar 直接找你要的文件。

2.看你的MANIFEST.MF中


Manifest-Version: 1.0

Main-Class: com.chenyulin.astSimilarityCalculation/Main

Class-Path: lib\org.eclipse.cdt.core_4.0.3.200802251018.jar lib\org.eclipse.equinox.common_3.6.0.v20110523.jar

你确认在asttest包的同级目录下 有lib文件,且lib文件下有你需要的这么包?


查看完整回答
反对 回复 2019-04-15
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

AstSim目录下:
java -Djava.ext.dirs=./lib -jar asttest.jar

查看完整回答
反对 回复 2019-04-15
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

楼上都没说到点子上,我来给说个正解吧!
你仔细看MANIFEST.MF中Class-Path的内容:
Class-Path: liborg.eclipse.cdt.core_4.0.3.200802251018.jar liborg.eclipse.equinox.common_3.6.0.v20110523.jar
再和你在linux上配置的环境变量比较一下:
export JAVA_HOME=/usr/java/jdk1.7.0
发现什么不同了没有?

路径分隔符!!!
linux 下用的是 / , 而Win下用的是\
所以错误的原因是,你在windows环境下打的jar包中MANIFEST.MF里面的路径分隔符,linux不认识!


查看完整回答
反对 回复 2019-04-15
  • 4 回答
  • 0 关注
  • 1757 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信