簡體   English   中英

Java 12 JMeter 5 HTTP/2 請求 java.lang.NoClassDefFoundError: org/eclipse/jetty/alpn/client/ALPNClientConnectionFactory

[英]Java 12 JMeter 5 HTTP/2 request java.lang.NoClassDefFoundError: org/eclipse/jetty/alpn/client/ALPNClientConnectionFactory

我在 Ubuntu 9.0.4 上使用 Java 12、JMeter 5.1.1,並在嘗試發送 HTTP/2 請求時遇到以下異常:

Response code: Non HTTP response code: java.util.concurrent.ExecutionException
Response message: Non HTTP response message: java.lang.IllegalStateException: No Client ALPNProcessors!

響應正文中的此堆棧跟蹤:

java.util.concurrent.ExecutionException: java.lang.IllegalStateException: No Client ALPNProcessors!
    at org.eclipse.jetty.util.FuturePromise.get(FuturePromise.java:138)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Connection.connect(HTTP2Connection.java:68)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Request.setConnection(HTTP2Request.java:278)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Request.sample(HTTP2Request.java:138)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Request.sample(HTTP2Request.java:115)
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622)
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546)
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
    at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: java.lang.IllegalStateException: No Client ALPNProcessors!
    at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.<init>(ALPNClientConnectionFactory.java:54)
    at org.eclipse.jetty.http2.client.HTTP2Client.lambda$doStart$1(HTTP2Client.java:155)
    at org.eclipse.jetty.http2.client.HTTP2Client$ClientSelectorManager.newConnection(HTTP2Client.java:438)
    at org.eclipse.jetty.io.ManagedSelector.createEndPoint(ManagedSelector.java:222)
    at org.eclipse.jetty.io.ManagedSelector.access$1500(ManagedSelector.java:60)
    at org.eclipse.jetty.io.ManagedSelector$CreateEndPoint.run(ManagedSelector.java:825)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:754)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:672)
    ... 1 more

JMeter 5.1.1 默認帶有jetty-alpn-client-9.4.9.v20180320.jar

然后我從http://central.maven.org/maven2/org/eclipse/jetty/jetty-alpn-java-client/下載 jetty alpn java 客戶端庫並將其放入 jmeter 安裝的 lib/ 文件夾並導致此異常:

java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/eclipse/jetty/alpn/client/ALPNClientConnectionFactory
    at org.eclipse.jetty.util.FuturePromise.get(FuturePromise.java:138)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Connection.connect(HTTP2Connection.java:68)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Request.setConnection(HTTP2Request.java:278)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Request.sample(HTTP2Request.java:138)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Request.sample(HTTP2Request.java:115)
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622)
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546)
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
    at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: java.lang.NoClassDefFoundError: org/eclipse/jetty/alpn/client/ALPNClientConnectionFactory
    at org.eclipse.jetty.http2.client.HTTP2Client.lambda$doStart$1(HTTP2Client.java:155)
    at org.eclipse.jetty.http2.client.HTTP2Client$ClientSelectorManager.newConnection(HTTP2Client.java:438)
    at org.eclipse.jetty.io.ManagedSelector.createEndPoint(ManagedSelector.java:222)
    at org.eclipse.jetty.io.ManagedSelector.access$1500(ManagedSelector.java:60)
    at org.eclipse.jetty.io.ManagedSelector$CreateEndPoint.run(ManagedSelector.java:825)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:754)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:672)
    ... 1 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:436)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 8 more

我切換到 Java 11 但得到同樣的錯誤。 任何建議和見解表示贊賞。

No Client ALPNProcessors! 是來自處理 ALPN 的 Jetty 庫的消息。

因為您在 JDK 12 中運行(我認為與 JDK 11 沒有太大區別,所以 JDK 12 應該沒問題),所以您必須在類路徑中有jetty-alpn-java-client jar,以便Jetty 庫將找到ALPNProcessor.Client類的實現(通過ServiceLoader機制),如錯誤所示,無法找到。

您沒有詳細說明如何設置 TLS 等,我希望 JMeter 已經在類路徑中包含jetty-alpn-java-client jar,但顯然您的設置(或 JMeter 的)中存在問題.

我會仔細檢查 JMeter 如何配置 TLS; 如果它使用標准的 JDK 實現,那么它必須在類路徑中有jetty-alpn-java-client jar。

如果 JMeter 使用其他 TLS 實現(例如 Conscrypt),那么 Jetty 項目提供類似的庫(例如jetty-alpn-conscrypt-client jar),它們同樣應該在類路徑中。

JMeter 5 不正式支持 Java 12

JMeter 5.0 正式要求 Java 8 或 9,盡管更高版本可能非正式兼容。 根據我們的內部測試,JMeter 將在 Java 11 上運行

同樣在JMeter 組公告中:

JMeter 5.0 在 Java 8 到 10 上進行了測試,Java 11 也應該可以工作。

另請注意 Java 12 不是長期支持版本

然而,Java SE 11 是 LTS 版本,因此即使 Java SE 12 已發布,Oracle 客戶也將獲得 Oracle 標准支持和定期更新版本

解決方法:下載http://central.maven.org/maven2/org/eclipse/jetty/jetty-alpn-java-client/ ,放到安裝好的jmeter lib/文件夾中。 JMeter 只安裝了jetty-alpn-client這還不夠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM