Je lance java avec un agent.
Lorsque mon application n'utilise pas l'interface graphique (swing), elle fonctionne correctement sous les deux JRE mentionnés ci-dessous. Quand il utilise l'interface utilisateur graphique (swing), lorsqu'il utilise JRE: HotSpot (TM) 64 Bits Server VM (build 1.6.0-b105, mode mixte), il fonctionne correctement.
Mais avec JRE:/usr/lib/jvm/java-6-openjdk, il produit exception java.lang.NoClassDefFoundError lancée par org.GNOME.Accessibility.JavaBridge $ accessQueue
Sans mon agent ou avec un agent mais appliqué à une application de console, il fonctionne bien pour les deux JRE.
L'exception indique que l'une de mes classes de l'agent ne se trouve pas: **** java.lang.NoClassDefFoundError: mypack/myAgent/MyClass ****
cependant cette classe était déjà chargé: * *** [mypack.myagent.MyClass à partir du fichier: /home.owner/Tests/AGENT.jar] ******* Pourquoi JRE tente-t-il de charger à nouveau la même classe? et pourquoi il ne peut pas le trouver cette fois?
(Toutes les classes d'agents sont présents fichier jar à l'intérieur avec toutes leurs dépendances)
Ci-dessous l'extrait de la production. L'option de ligne de commande -verbose est utilisée.
[Ouvert /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[java.lang.Object chargé à partir de/usr/lib/jvm/java -6-openjdk/jre/lib/rt.jar]
[de mypack.myagent.Main Chargé du fichier: /home/owner/Tests/AGENT.jar
[Chargé java.lang.instrument.ClassFileTransformer à partir de/usr/lib/jvm/java-6-openjdk/jre/lib
/rt.jar]
Lancement agent de ...
[java.net.URLClassLoader Loaded 2 $ de /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[org.apache.log4j.CategoryKey chargé du fichier: /home/owner/Tests/AGENT.jar]
[Chargé mypack.myagent.MyClass fichier: /home.owner/Tests/AGENT.jar ]
[Chargé org.w3c.dom.Node from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Chargé java.io.UnsupportedEncodingException de/usr/lib/jvm/java-6-openjdk/jre/lib
/rt.jar]
[Loaded sun.net.www.protocol.jar.URLJarFile $ URLJarFileEntry de/usr/lib/jvm/java-
6-openjdk/jre/lib/rt.jar]
[Loaded sun.net.www.protocol.jar.JarURLConnection $ JarURLInputStream de/usr/lib/jvm/java -
6-openjdk/jre/lib/rt.jar]
[com.sun.org.apache.xerces.internal.util.SecurityManager chargé à partir de/usr/lib/JVM/java-
6-openjdk/jre/lib/rt.jar]
[ chargé sun.management.RuntimeImpl de /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
Bonjour Agent ...
[chargé testpackage. GuiTest from file: ...
[Loaded java.awt.LayoutManager de /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[java.awt.image.ImageObserver chargé à partir de/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[java.awt.MenuContainer chargé à partir de /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
. . .
[sun.awt.X11.XEvent chargé de /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[org.GNOME.Accessibility.JavaBridge Chargé de fichier : /usr/share/java/gnome-java-bridge.jar]
[Loaded java.awt.event.FocusListener from /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar ]
[Loaded org.GNOME.Accessibility.JavaBridge $ accessQueue fichier:/usr/share/java/gnome-
java-bridge.jar]
[java.lang.InstantiationException chargé de /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
Exception dans le thread "principal" java.lang.NoClassDefFoundError: mypack/myAgent/MyClass
à org.GNOME.Accessibility.JavaBridge. (JavaBridge.java)
à sun.reflect.NativeConstructorAccessorImpl.newInstance0 (native Method)
un t sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
à java.lang.reflect.Constructor.newInstance (Constructeur.java: 532)
à java.lang.Class.newInstance0 (Class.java:372)
à java.lang.Class.newInstance (Class.java:325)
à java.awt .Toolkit.loadAssistiveTechnologies (Toolkit.java:786)
à java.awt.Toolkit.getDefaultToolkit (Toolkit.java:874)
à java.awt.Window.getToolkit (Window.java:1170)
à java.awt.Window.init (Window.java:400)
à java.awt.Window (Window.java:438)
à java.awt.Frame (Frame.java..: 419)
à javax.swing.JFrame. (JFrame.java:224)
à testpackage.GuiTest. (GuiTest.java:52)
à testpackage.GuiTest.main (GuiTest.java : 39)
Causée par: java.lang.ClassNotFoundException: mypack.myagent.MyClass
à java.net.URLClassLoader 1.run $ (URLClassLoader.java:217)
à java.security.AccessController.doPrivileged (Méthode native)
à java.net.URLClassLoader.findClass (URLClassLoader.java:205)
à java.lang.ClassLoader.loadClass (ClassLoader.java:323)
à java.lang.ClassLoader.loadClass (ClassLoader.java:268)
à java.lang.ClassLoader.loadClassInternal (ClassLoader.java:336)
... 16 plus