java.lang.NoClassDefFoundError: org/eclipse/jetty/server/nio/SelectChannelConnector mit com.j256.simplejmx.web.JmxWebServer
Ich versuche zu implementieren, einfach JMX-Client/Server - mit com.j256.simplejmx
. Ich möchte spy meine Objekte per Web-Browser. Ich kopierte eine wirklich einfache Stück code:
package com.my.package.jmx;
import com.j256.simplejmx.web.JmxWebServer;
public class JMXServer {
public static void main(String[] args) throws Exception {
JmxWebServer jmxWebServer = new JmxWebServer(8123);
jmxWebServer.start();
}
}
Wenn ich es laufen habe ich eine Ausnahme:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/util/thread/ThreadPool
at com.my.package.jmx.JMXServer.main(JMXServer.java:9)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.util.thread.ThreadPool
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
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)
... 1 more
Fügte ich diese zu meinem pom.xml
:
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>9.1.3.v20140225</version>
</dependency>
Ich es noch einmal, und ich habe eine andere Exception:
Ex
ception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/AbstractConnector
at com.my.package.jmx.JMXServer.main(JMXServer.java:9)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.server.AbstractConnector
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
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)
... 1 more
Also noch einmal, ich update meine pom.xml:
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.1.3.v20140225</version>
</dependency>
Und es gibt mir eine Fehlermeldung noch einmal:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/nio/SelectChannelConnector
at com.mu.package.jmx.JMXServer.main(JMXServer.java:9)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.server.nio.SelectChannelConnector
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
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)
... 1 more
und ich finde keine Lösung dafür. Was ich sonst noch hinzufügen sollte, mein pom.xml
- Datei? Vielleicht ist es ein Problem mit den Versionen der Abhängigkeiten?
Vielen Dank im Voraus.
Bearbeitete ich meine pom.xml
<project...>
<properties>
<jetty-version>8.1.9.v20130131</jetty-version>
</properties>
<dependencies>
<dependency>
<groupId>com.j256.simplejmx</groupId>
<artifactId>simplejmx</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>${jetty-version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty-version}</version>
<optional>true</optional>
</dependency>
</dependencies>
</project>
Nun, ich kann diesen server:
INFO Server - jetty-8.1.9.v20130131
INFO AbstractConnector - Started SelectChannelConnector@0.0.0.0:8123
aber wenn ich auf meinen Web-Browser und ich:
localhost:8123
es wirft eine Ausnahme:
WARN nio -
java.lang.SecurityException: class "javax.servlet.AsyncContext"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(Unknown Source)
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
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)
at org.eclipse.jetty.server.AbstractHttpConnection.<init>(AbstractHttpConnection.java:157)
at org.eclipse.jetty.server.AsyncHttpConnection.<init>(AsyncHttpConnection.java:50)
at org.eclipse.jetty.server.nio.SelectChannelConnector.newConnection(SelectChannelConnector.java:285)
at org.eclipse.jetty.server.nio.SelectChannelConnector$ConnectorSelectorManager.newConnection(SelectChannelConnector.java:325)
at org.eclipse.jetty.server.nio.SelectChannelConnector.newEndPoint(SelectChannelConnector.java:272)
at org.eclipse.jetty.server.nio.SelectChannelConnector$ConnectorSelectorManager.newEndPoint(SelectChannelConnector.java:331)
at org.eclipse.jetty.io.nio.SelectorManager$SelectSet.createEndPoint(SelectorManager.java:841)
at org.eclipse.jetty.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:496)
at org.eclipse.jetty.io.nio.SelectorManager$1.run(SelectorManager.java:290)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Unknown Source)
Darf ich Fragen, wie du herausgefunden hast, dass simplejmx hat JMX/HTTP-publishing?
Natürlich 🙂 vor einigen Tagen stellte ich eine Frage über JMX stackoverflow.com/q/22789428/1021970 - stellen Sie eine Antwort. Ich entschied mich
simplejmx
in meinem Projekt. Ich lese alle links, die Sie in Ihre Antwort und hier 256.com/sources/simplejmx ist ein Abschnitt Aussetzen der JMX-Beans Über HTTP für Web-BrowserCool, danke für die info.
InformationsquelleAutor ruhungry | 2014-04-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
So jetzt SimpleJMX hat eine optionale Abhängigkeit für 8.1.9.v20130131 Steg zur Unterstützung publishing JMX über web/HTTP. Wenn Sie heraus überprüfen die pom.xml Sie werden sehen:
Können Sie versuchen, diese version von Jetty? Ich bin mir nicht sicher, es ist für mich ein Weg zu unterstützen, 8.X.X und 9.X.X aber ich werde das prüfen.
Ja, es ist irgendwie keine gute Idee zu sein, die änderung der Frage. Schwer zu halten eine gültige Antwort @GirlyGirl. Ich denke, jetzt haben Sie ein problem mit unterschiedlichen Versionen der gleichen Klasse in Ihrem code. stackoverflow.com/questions/19090127/...
FYI:
javax.servlet.AsyncContext
ist in der javax.servlet-Paket, so dass derjenige, der Sie bekommen unterschiedliche Versionen von @GirlyGirl.Ok, @Grau, es fixiert es. Ich entfernte eine Abhängigkeit: javax.servlet. Ich danke Ihnen sehr. Ich werde die Arbeit mit Ihr
simplejmx
und ich hoffe, es wird fein arbeiten wirklich bald 😉Bitte ping mich mit Fragen/Kommentare @GirlyGirl 256.com/gray/email
InformationsquelleAutor Gray