Linux org.GNOME.Accessibility.JavaBridge $ AccessQueue создает исключение java.lang.ClassNotFoundException после предварительной загрузки класса. - PullRequest
0 голосов
/ 02 февраля 2010

Я использую 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

1 Ответ

0 голосов
/ 04 февраля 2010

Я исправил проблему, создав символическую ссылку на мой файл jar из

/ usr / lib / jvm / java-6-openjdk / jre / lib / ext.

...