[英]java.lang.NoClassDefFoundError: org/eclipse/jetty/server/NetworkConnector
[英]Java.lang.NoClassDefFoundError: org/eclipse/jetty/util/component/ContainerLifeCycle
我正在編寫一個簡單的程序來使用 java 向某個 api 發送請求,我決定使用 jetty-client 進行 http 請求處理。我決定使用 jetty-client-11.0.0 來執行此操作但是在運行基本腳本后我保留了獲取 java.lang.NoClassDefoundError;
package currencyconverter;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.api.ContentResponse;
public class urler{
public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException, IOException {
HttpClient httpClient = new HttpClient();
ContentResponse response = httpClient.GET("example.com");
System.out.println(response.toString());
}
}
那么錯誤是;
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/util/component/ContainerLifeCycle
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at currencyconverter.urler.main(urler.java:12)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.util.component.ContainerLifeCycle
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 10 more
我嘗試更改 jetty-client 的版本,但它似乎沒有用,即從 jetty-client 12.0.0.alpha3 到 jetty-client 11.0.0 認為這是一個版本錯誤並希望它能解決問題但是它沒有用。
歡迎來到社區。 這個錯誤的原因是,一個依賴是可傳遞的,沒有被直接引用。 您需要直接包含依賴org.eclipse.jetty:jetty-util
(請參閱此處的 maven 坐標: mavencentral ),或者您可以使用maven並使用此 pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow</groupId>
<artifactId>stackoverflow</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<version>11.0.8</version>
</dependency>
</dependencies>
</project>
如果你想知道,如果有更多的傳遞依賴,而你沒有maven,你需要解壓依賴jar文件並檢查META-INF
文件夾。 它包含包含必要依賴項的pom.xml
。
如果您已經使用 maven,則可以使用命令mvn dependeny:tree
,它將輸出所有直接和傳遞依賴項:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ stackoverflow ---
[INFO] com.stackoverflow:stackoverflow:jar:1.0-SNAPSHOT
[INFO] +- org.slf4j:slf4j-api:jar:2.0.5:compile
[INFO] +- org.slf4j:slf4j-simple:jar:2.0.5:compile
[INFO] \- org.eclipse.jetty:jetty-client:jar:11.0.8:compile
[INFO] +- org.eclipse.jetty:jetty-http:jar:11.0.8:compile
[INFO] | \- org.eclipse.jetty:jetty-util:jar:11.0.8:compile
[INFO] +- org.eclipse.jetty:jetty-io:jar:11.0.8:compile
[INFO] \- org.eclipse.jetty:jetty-alpn-client:jar:11.0.8:compile
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.