【发布时间】:2018-03-31 12:08:27
【问题描述】:
我是 Java 初学者,在运行 .jar 时遇到了一些麻烦。 我在 netty 类上遇到了 ClassNotFoundException。 我的 .jar 没有找到 netty 类似乎是合乎逻辑的。
这是我的踪迹:
Exception in thread "main" java.lang.NoClassDefFoundError: io/netty/channel/EventLoopGroup
at src.Main.main(Main.java:14)
Caused by: java.lang.ClassNotFoundException: io.netty.channel.EventLoopGroup
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
使用 gradle 编译可以正常工作。 我的主要 build.gradle 在编译程序的不同文件夹中调用 2 build.gradle。 这是我的主要 build.gradle :
subprojects {
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile 'io.netty:netty-all:4.1.16.Final'
compile files("./lib/netty-all-4.1.16.Final.jar")
testCompile 'junit:junit:4.12'
}
}
这是一个由主 build.gradle 调用的 build.gradle,它编译了我的 sources.java:
apply plugin: "java"
sourceSets {
main.java.srcDir "./src/"
}
jar {
manifest.attributes "Main-Class": "src.Main"
destinationDir project.file('../Jar/')
baseName 'Server'
}
我的文件树如下所示:
MyProject
--> build.gradle
--> settings.gradle
--> lib [DIR]
--> netty-all-4.1.16.Final.jar
--> server [DIR]
--> build.gradle
--> src [DIR]
--> Main.java
我不明白为什么当我编译一切正常时,当我运行它时却找不到 netty 类。
你能帮帮我吗? 谢谢!
【问题讨论】:
-
你是如何运行你的应用程序的?您是使用 Gradle 还是直接调用它?异常表明 Netty 类不在您的运行时类路径中。
-
嗨 Oz,编译我使用“gradle build”,执行我的 .jar 我使用 java -jar myjar.jar
-
你可以看看这个答案:stackoverflow.com/a/18413058/327680
标签: java class gradle runtime netty