2 zt138344553 zt138344553 于 2016.01.21 19:58 提问

java netty NoClassDefFoundError 找不到eventloop class

在eclipse上用用netty框架写了个demo,直接在eclipse上能编译运行成功,导出了个jar包, 用java -jar 运行后,报出了如下错误:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: io/netty/channel/Even
tLoopGroup
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: io.netty.channel.EventLoopGroup
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 7 more

最开始以为是包没打好, 又重新在manifest里面定义了一下classpath,完事一样还是找不到eventloopgroup class,我工程里面就引用了一个netty-5.0.0.Alpha2,我看了一下这个包,class文件好好的静静的就躺在那里........为什么它找不到,求大神们给个解决方案。。。。

4个回答

caozhy
caozhy   Ds   Rxr 2016.01.21 20:11

检查下classpath环境变量的配置

gzxyong
gzxyong   2016.10.14 17:23

如果你是用Maven的,你可以run->maven test,就可以看到问题所在,里面会提示如下:
[WARNING] error reading /root/.m2/repository/io/netty/netty-all/5.0.0.Alpha2/netty-all-5.0.0.Alpha2.jar; invalid LOC header (bad signature)
[WARNING] error reading /root/.m2/repository/org/springframework/spring-context/4.3.3.RELEASE/spring-context-4.3.3.RELEASE.jar; cannot read zip file
应该是引用jar包内容不完整。
解决的办法是把提示的文件删掉让maven重新下载就解决了。

vieyahn
vieyahn   2017.02.09 10:05

jar导出的时候,要选择
expert - runnable jar file - launch configuration(选择主class)

qq_40715729
qq_40715729 这个方式能解决,非常感谢。
大约 2 个月之前 回复
Evankaka
Evankaka   Ds   Rxr 2016.01.21 21:27

看下编译后的工程是否那个jar包!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!