Linux org.GNOME.Accessibility.JavaBridge $ AccessQueue在先前加载类之后抛出java.lang.ClassNotFoundException

时间:2010-02-02 04:06:44

标签: class accessibility classnotfound loaded

我正在使用代理运行java。

当我的应用程序不使用GUI(swing)时,它在下面提到的两个JRE下运行正常。

当它确实使用GUI(swing)时,使用JRE:HotSpot(TM)64位服务器VM(版本1.6.0-b105,混合模式)时运行正常。

但是使用JRE:/ usr / lib / jvm / java-6-openjdk,它会产生由 org.GNOME.Accessibility.JavaBridge $ AccessQueue

引发的异常java.lang.NoClassDefFoundError。

如果没有我的代理或代理但是应用于控制台应用程序,它对两个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]

[来自/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar的加载java.lang.Object]

[从文件中加载mypack.myagent.Main:/home/owner/Tests/AGENT.jar

[从/ usr / lib / jvm / java-6-openjdk / jre / lib

加载java.lang.instrument.ClassFileTransformer

/rt.jar]

启动代理 ...

[从/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar加载java.net.URLClassLoader $ 2]

[从文件中加载org.apache.log4j.CategoryKey:/home/owner/Tests/AGENT.jar]

[从文件加载 mypack.myagent.MyClass :/home.owner/Tests/AGENT.jar]

[来自/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar的

[从/ usr / lib / jvm / java-6-openjdk / jre / lib

加载java.io.UnsupportedEncodingException

/rt.jar]

[加载sun.net.www.protocol.jar.URLJarFile $ URLJarFileEntry来自/ usr / lib / jvm / java -

6的openjdk / JRE / LIB / rt.jar中]

[加载sun.net.www.protocol.jar.JarURLConnection $ JarURLInputStream来自/ usr / lib / jvm / java -

6的openjdk / JRE / LIB / rt.jar中]

[来自/ usr / lib / jvm / java的加载的com.sun.org.apache.xerces.internal.util.SecurityManager -

6的openjdk / JRE / LIB / rt.jar中]

[来自/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar的加载sun.management.RuntimeImpl]

来自代理商的问候

[从文件加载testpackage.GuiTest:...

[从/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar加载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]

[从文件加载org.GNOME.Accessibility.JavaBridge:/usr/share/java/gnome-java-bridge.jar]

[从/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar加载java.awt.event.FocusListener]

[从文件加载org.GNOME.Accessibility.JavaBridge $ AccessQueue:/ usr / share / java / gnome -

java的bridge.jar]

[从/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar加载java.lang.InstantiationException]

线程“main”中的异常java.lang.NoClassDefFoundError:mypack / myagent / MyClass

at org.GNOME.Accessibility.JavaBridge。(JavaBridge.java)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at 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)

在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

at java.net.URLClassLoader $ 1.run(URLClassLoader.java:217)

at java.security.AccessController.doPrivileged(Native Method)

在java.net.URLClassLoader.findClass(URLClassLoader.java:205)

at java.lang.ClassLoader.loadClass(ClassLoader.java:323)

在java.lang.ClassLoader.loadClass(ClassLoader.java:268)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)

... 16更多

1 个答案:

答案 0 :(得分:0)

我通过从

创建指向我的jar文件的符号链接来解决问题

/ usr / lib / jvm / java-6-openjdk / jre / lib / ext目录。