gpt4 book ai didi

java - 梯度构建 "ClassNotFoundException"

转载 作者:行者123 更新时间:2023-12-02 09:42:55 25 4
gpt4 key购买 nike

我正在尝试构建并运行 Jetty 嵌入式“hello world”应用程序。

构建成功,没有错误,但是当我尝试运行它时,出现错误。我认为这是因为当我运行它时,jetty jar 没有添加到类路径中。但我还没有找到在我的 gradle 构建中解决这个问题的正确方法。

我的build.gradle如下......

apply plugin: 'java'

repositories {
mavenCentral()
}

dependencies {
implementation 'org.eclipse.jetty:jetty-servlet:+'
implementation 'org.eclipse.jetty:jetty-client:+'
// implementation 'org.eclipse.jetty:jetty-webapp:+'
// implementation 'org.eclipse.jetty:jetty-jsp:+'
// implementation 'org.eclipse.jetty:jetty-annotations:+'
}

我的应用程序有两个主要的可执行类。 ChessServer 和 ChessClient。

我用来运行 ChessServer 的命令如下...

java -ea -cp build/classes/java/main/ ChessServer

以及我在运行时遇到的具体错误...

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Server
at ChessServer.main(ChessServer.java:6)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.server.Server
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more

最佳答案

由于您是使用 gradle 进行构建,因此您最好也使用 gradle 运行,而不是通过命令行中的“java”手动运行。

如果您想运行您的类,您需要指定整个类路径(包括您的依赖项 jar)。你只告诉java你的类在哪里。

我建议在 Gradle 中使用 JavaExec 任务。

例如:

task run(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = 'ChessServer'
}

然后从命令行

gradle run

还有application plugin它可以将你的类和依赖项捆绑为一个 zip 文件。

关于java - 梯度构建 "ClassNotFoundException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56919539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com