java.lang.NoClassDefFoundError: org/eclipse/jetty/serveur/nio/SelectChannelConnector à l'aide de com.j256.simplejmx.web.JmxWebServer
Je suis en train de mettre en œuvre simple JMX Client/Serveur à l'aide de com.j256.simplejmx
. Je veux espionner mes objets à l'aide d'un Navigateur Web. J'ai copié un vraiment simple morceau de 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();
}
}
Quand je le lance j'ai une exception:
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
J'ai ajouté à mon pom.xml
:
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>9.1.3.v20140225</version>
</dependency>
Je le lance une fois de plus et j'ai une autre excpetion:
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
Donc, encore une fois, je l'ai mise à jour mon pom.xml:
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.1.3.v20140225</version>
</dependency>
Et il me donne une erreur encore une fois:
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
et je ne trouve aucune solution pour cela. Quoi d'autre devrais-je ajouter à mon pom.xml
fichier? C'est peut-être un problème avec les versions des dépendances?
Vous en remercie d'avance.
J'ai édité mon 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>
Maintenant, je peux courir ce serveur:
INFO Server - jetty-8.1.9.v20130131
INFO AbstractConnector - Started SelectChannelConnector@0.0.0.0:8123
mais quand je vais sur mon Navigateur et j'ai mis:
localhost:8123
il thows une exception:
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)
Puis-je vous demander comment vous avez découvert que simplejmx ne JMX/HTTP de publication?
Bien sûr 🙂 il ya quelques jours, j'ai posé une question à propos de JMX stackoverflow.com/q/22789428/1021970 - vous avez mis une réponse. J'ai décidé d'utiliser
simplejmx
dans mon projet. J'ai lu tous les liens que vous mettez dans votre réponse et voici 256.com/sources/simplejmx est une section de la Exposer JMX Fèves Sur HTTP pour les Navigateurs WebCool, merci pour l'info.
OriginalL'auteur ruhungry | 2014-04-09
Vous devez vous connecter pour publier un commentaire.
Donc maintenant SimpleJMX a une dépendance optionnelle pour 8.1.9.v20130131 Jetée à l'appui de la publication de JMX sur le web/HTTP. Si vous découvrez l'pom.xml vous verrez:
Pouvez-vous essayer cette version de la Jetée? Je ne suis pas sûr qu'il y est une façon pour moi de soutenir à la fois 8.X.X et 9.X.X mais je vais regarder.
Ouais c'est pas une bonne idée de changer la question. Difficile de garder une réponse valable @GirlyGirl. Je pense que maintenant vous avez un problème avec les différentes versions de la même classe dans votre code. stackoverflow.com/questions/19090127/...
FYI:
javax.servlet.AsyncContext
est dans le javax.servlet paquet alors que c'est celui que vous avez trouvé les différentes versions de @GirlyGirl.Ok @Grise, il fixe. J'ai enlevé une dépendance: javax.servlet. Je vous remercie beaucoup. Je vais travailler avec votre
simplejmx
et j'espère qu'il va travailler à très bientôt 😉Merci de ping-moi avec toutes les questions ou les commentaires de @GirlyGirl 256.com/gray/email
OriginalL'auteur Gray