找不到类 weblogic.management.WeblogicMBean
当我尝试使用 Build ant 文件在 fork 模式下运行 Junit 测试用例(在单独的 JVM 中启动每个测试)时,我遇到了这个问题。
[junit] 线程“main”中出现异常 java.lang.NoClassDefFoundError: weblogic/management/WebLogicMBean [junit] 位于 java.lang.ClassLoader.defineClass1(Native Method) [junit] 位于 java.lang.ClassLoader.defineClass(ClassLoader.java:621) [junit] 位于 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) [junit] 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:260) [junit] 在 java.net.URLClassLoader.access$000(URLClassLoader.java:56) [junit] 在 java.net.URLClassLoader$1.run(URLClassLoader.java:195) [junit] 在 java.security.AccessController.doPrivileged(本机方法)[junit] at java.net.URLClassLoader.findClass(URLClassLoader.java:188) [junit] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:307) [junit] 位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) [junit] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:252) [junit] 处 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) [junit] 在 java.lang.ClassLoader.defineClass1(Native Method) [junit] 处 java.lang.ClassLoader.defineClass(ClassLoader.java:621) [junit] 位于 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) [junit] 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:260) [junit] 在 java.net.URLClassLoader.access$000(URLClassLoader.java:56) [junit] 在 java.net.URLClassLoader$1.run(URLClassLoader.java:195) [junit] 在 java.security.AccessController.doPrivileged(本机方法)[junit] at java.net.URLClassLoader.findClass(URLClassLoader.java:188) [junit] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:307) [junit] 位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) [junit] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:252) [junit] 处 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) [junit] 在 java.lang.ClassLoader.defineClass1(Native Method) [junit] 处 java.lang.ClassLoader.defineClass(ClassLoader.java:621) [junit] 位于 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) [junit] 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:260) [junit] 在 java.net.URLClassLoader.access$000(URLClassLoader.java:56) [junit] 在 java.net.URLClassLoader$1.run(URLClassLoader.java:195) ....
我的构建库文件夹中有库 weblogic.jar,它被设置为 junit 任务的类路径。我查看这个文件,找不到里面的WeblogicMBean.class。
但是,在 Jdev 中,如果我设置对此 weblogic.jar 文件的库引用并毫无问题地编译我的类,我可以将 weblogic.management.WeblogicMBean
导入到我的类中。
有什么建议说明真正出了什么问题吗?
多谢。
I meet this problem when I try to run Junit test case in fork mode (starting each test in a separate JVM) using Build ant file.
[junit] Exception in thread "main" java.lang.NoClassDefFoundError:
weblogic/management/WebLogicMBean [junit] at
java.lang.ClassLoader.defineClass1(Native Method) [junit] at
java.lang.ClassLoader.defineClass(ClassLoader.java:621) [junit] at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
[junit] at
java.net.URLClassLoader.defineClass(URLClassLoader.java:260) [junit]
at java.net.URLClassLoader.access$000(URLClassLoader.java:56) [junit]
at java.net.URLClassLoader$1.run(URLClassLoader.java:195) [junit] at
java.security.AccessController.doPrivileged(Native Method) [junit] at
java.net.URLClassLoader.findClass(URLClassLoader.java:188) [junit] at
java.lang.ClassLoader.loadClass(ClassLoader.java:307) [junit] at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) [junit]
at java.lang.ClassLoader.loadClass(ClassLoader.java:252) [junit] at
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) [junit]
at java.lang.ClassLoader.defineClass1(Native Method) [junit] at
java.lang.ClassLoader.defineClass(ClassLoader.java:621) [junit] at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
[junit] at
java.net.URLClassLoader.defineClass(URLClassLoader.java:260) [junit]
at java.net.URLClassLoader.access$000(URLClassLoader.java:56) [junit]
at java.net.URLClassLoader$1.run(URLClassLoader.java:195) [junit] at
java.security.AccessController.doPrivileged(Native Method) [junit] at
java.net.URLClassLoader.findClass(URLClassLoader.java:188) [junit] at
java.lang.ClassLoader.loadClass(ClassLoader.java:307) [junit] at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) [junit]
at java.lang.ClassLoader.loadClass(ClassLoader.java:252) [junit] at
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) [junit]
at java.lang.ClassLoader.defineClass1(Native Method) [junit] at
java.lang.ClassLoader.defineClass(ClassLoader.java:621) [junit] at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
[junit] at
java.net.URLClassLoader.defineClass(URLClassLoader.java:260) [junit]
at java.net.URLClassLoader.access$000(URLClassLoader.java:56) [junit]
at java.net.URLClassLoader$1.run(URLClassLoader.java:195) ....
I have the library weblogic.jar in my build library folders, which is set as classpath for the junit task. I look at this file and can't find the WeblogicMBean.class inside.
However, in Jdev, I can import weblogic.management.WeblogicMBean
into my class if I set library reference to this weblogic.jar file and compile my class without problem.
Any suggestion of what really goes wrong?
Thanks a lot.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
NoClassDefFoundError 通常意味着在运行时找不到该类的正确版本。
既然你的编译没问题,那么编译时的 CLASSPATH 是否引用与运行时相同的 jar?
还要检查 JUnit 的运行时 CLASSPATH 中是否存在多个 weblogic.jar。
你的 weblogic 版本是什么,该类至少在版本 9 的 weblogic.jar 中。
NoClassDefFoundError usually means the correct version of the class was not found at runtime.
Since your compile is fine, does your CLASSPATH at compile time refer to the same jar as at runtime?
Also check if there are multiple weblogic.jar in the runtime CLASSPATH for JUnit.
Whats your version of weblogic, the class is in the weblogic.jar for version 9 at least.