weblogic中的NoClassDefFoundError异常

时间:2013-05-03 07:12:09

标签: tomcat weblogic noclassdeffounderror

我之前在Tomcat中开发了一个Web应用程序,我的tomcat/lib目录中有一些jar文件。现在我正在尝试在weblogic服务器上运行我的应用程序,所以我安装了weblogic 10.3.6,创建了一个weblogic域并部署了我的应用程序。我将我之前在tomcat/lib中放置的jar文件复制到lib目录下面:

Middleware/user_projects/domains/my_domain/lib/

我相信lib目录应该在class-path中,但是当我在web应用程序中访问类文件时,我收到以下错误:

Caused by: java.lang.NoClassDefFoundError: com/sample/TestManager
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
        at weblogic.utils.classloaders.FilteringClassLoader.findClass(FilteringClassLoader.java:101)
        at weblogic.utils.classloaders.FilteringClassLoader.loadClass(FilteringClassLoader.java:86)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:171)

1 个答案:

答案 0 :(得分:0)

我想要求澄清,但我是新的,stackoverflow不允许我要求澄清。因此我发帖作为答案

当您在DOMAIN_HOME / lib中放置内容时,请记住该中的JARS不会附加到系统/服务器类路径中。创建的类加载器是系统/服务器类加载器的子代。

因此,DOMAIN_HOME / lib目录中JAR中的任何类只对应用程序可见,例如WAR,EAR等。

考虑一下:

  • 如果你的战争/耳朵类是package1.A
  • 如果system / server classpath的jar文件包含package2.B
  • 如果DOMAIN_HOME / lib的jar文件包含package3.C

如果你提到:
a)来自package1.A的package2.B
b)来自package2.B的package3.C

然后“a”会通过,但“b”会因为你得到的类似错误而失败。