Я использую Java с агентом.
Когда мое приложение не использует GUI (колебание), оно нормально работает под обеими JRE, упомянутыми ниже.
Когда он использует графический интерфейс пользователя (swing), при использовании 64-битной виртуальной машины JRE: HotSpot (TM) (сборка 1.6.0-b105, смешанный режим) он работает нормально.
Но с JRE: / usr / lib / jvm / java-6-openjdk выдается исключение java.lang.NoClassDefFoundError, выданное org.GNOME.Accessibility.JavaBridge $ AccessQueue
Без моего агента или с агентом, но применительно к консольному приложению, он работает нормально для обеих JRE.
Исключение говорит о том, что один из классов моего агента не найден:
**** java.lang.NoClassDefFoundError: mypack / myagent / MyClass ****
однако этот класс уже был загружен:
**** [Загружено mypack.myagent.MyClass из файла: /home.owner/Tests/AGENT.jar] ****
?????
Почему JRE пытается загрузить тот же класс снова? и почему он не может найти его на этот раз?
(Все классы агентов присутствуют внутри jar-файла со всеми их зависимостями)
Ниже приведена выдержка. Используется опция командной строки -verbose .
[Открыто /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Загруженный java.lang.Object из /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Загружен mypack.myagent.Main из файла: /home/owner/Tests/AGENT.jar
[Загружен java.lang.instrument.ClassFileTransformer из / usr / lib / jvm / java-6-openjdk / jre / lib
/ rt.jar]
Пусковой агент ...
[Загруженный java.net.URLClassLoader $ 2 из /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Загружен org.apache.log4j.CategoryKey из файла: /home/owner/Tests/AGENT.jar]
[Загружено mypack.myagent.MyClass из файла: /home.owner/Tests/AGENT.jar]
[Загруженный org.w3c.dom.Node из /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Загружен файл java.io.UnsupportedEncodingException из / usr / lib / jvm / java-6-openjdk / jre / lib
/ rt.jar]
[Загружено sun.net.www.protocol.jar.URLJarFile $ URLJarFileEntry из / usr / lib / jvm / java-
* * 6 тысячи шестьдесят-одна-OpenJDK / JRE / Библиотека / rt.jar] * * тысяча шестьдесят-дв
[Загруженный sun.net.www.protocol.jar.JarURLConnection $ JarURLInputStream из / usr / lib / jvm / java-
6-OpenJDK / JRE / Библиотека / rt.jar]
[Загружен com.sun.org.apache.xerces.internal.util.SecurityManager из / usr / lib / jvm / java-
6-OpenJDK / JRE / Библиотека / rt.jar]
[Загруженный sun.management.RuntimeImpl из /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
Привет от агента ...
[Загруженный testpackage.GuiTest из файла: ...
[Загружен java.awt.LayoutManager из /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Загружен java.awt.image.ImageObserver из /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Загружен java.awt.MenuContainer из /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
. , ,
[Загруженный sun.awt.X11.XEvent из /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Загруженный org.GNOME.Accessibility.JavaBridge из файла: /usr/share/java/gnome-java-bridge.jar]
[Загружен java.awt.event.FocusListener из /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
[Загружен org.GNOME.Accessibility.JavaBridge $ AccessQueue из файла: / usr / share / java / gnome-
Java-bridge.jar]
[Загруженный java.lang.InstantiationException из /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar]
Исключение в потоке "main" java.lang.NoClassDefFoundError: mypack / myagent / MyClass
в org.GNOME.Accessibility.JavaBridge. (JavaBridge.java)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод)
в sun.reflect.DelegatingConstructorAccessorImpl.newInstance
(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance (Constructor.java:532)
на java.lang.Class.newInstance0 (Class.java:372)
в java.lang.Class.newInstance (Class.java:325)
в java.awt.Toolkit.loadAssistiveTechnologies (Toolkit.java:786)
at java.awt.Toolkit.getDefaultToolkit (Toolkit.java:874)
at 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)
Причина: java.lang.ClassNotFoundException: mypack.myagent.MyClass
на java.net.URLClassLoader $ 1.run (URLClassLoader.java:217)
at java.security.AccessController.doPrivileged (собственный метод)
на java.net.URLClassLoader.findClass (URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass (ClassLoader.java:323)
at java.lang.ClassLoader.loadClass (ClassLoader.java:268)
at java.lang.ClassLoader.loadClassInternal (ClassLoader.java:336)
... еще 16