tomcat - weblogic 中的 NoClassDefFoundError 异常

标签 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 目录应该在类路径中,但是当我在我的 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)

最佳答案

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

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

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

考虑一下:

  • 如果你的 war/ear 类是 package1.A
  • 如果系统/服务器类路径有一个包含 package2.B 的 jar 文件
  • 如果 DOMAIN_HOME/lib 有一个包含 package3.C 的 jar 文件

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


然后“a”会通过,但“b”会失败,并出现类似的错误。

关于tomcat - weblogic 中的 NoClassDefFoundError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16353559/

相关文章:

java - tomcat 的 Web.xml 覆盖描述符?

java - Tomcat 8 启动多次 [LifecycleException]

jsp - HTTP STATUS 404 : The requested resource (/first. jsp) 不可用(Apache Tomcat+JDK)

java - 在Android中部署SimpleNLG,NoClassDefFoundError

java - 自定义 java.util.logging.ConsoleHandler.formatter Tomcat 6

java - JVisualVM - 探查器 - 已加载代理 jar,但代理无法初始化

Weblogic 12.2.1 托管服务器 access.log 未更新

console - Weblogic 控制台安全模式

java - 包括使用 Gradle 构建的 Java 库会抛出 NoClassDefFoundError

java - 在 Maven 中使用执行时出现 NoClassDefFoundError