使用 GlassFish 运行 Java EE 应用程序时出错:NoClassDefFoundError:org/apache/commons/logging/LogFactory

问题描述 投票:0回答:1

尝试使用 GlassFish 运行 Java EE 应用程序时,我在服务器上遇到以下错误:

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.apache.http.conn.ssl.DefaultHostnameVerifier.<init>(DefaultHostnameVerifier.java:72)
    ...
...
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at dynamics365.TokenGenerator.ejecutarTokenGenerator(TokenGenerator.java:62)
    at sessionBeans.ParametroFacade.buscarCliente(ParametroFacade.java:103)
        at com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:808)
    ...

我尝试过的:

  • 我已经检查了项目配置,以确保所有依赖项都配置正确。
  • 我已经删除了 Apache Commons Logging 的使用,因为它似乎是问题的原因。
  • 我已经清理并重建了该项目,以确保没有过时的构建工件。
  • 我已经检查了项目结构和 GlassFish 服务器配置,以确保一切正常。

等等:

我正在寻求帮助来修复此错误并了解其发生的原因。我在配置或依赖管理中是否忽略了某些内容?如何解决此问题并运行我的应用程序而不出现此错误?

java netbeans glassfish ejb apache-commons-logging
1个回答
0
投票

我正在寻求帮助来修复此错误并了解其发生的原因。

发生这种情况是因为应用程序和/或其依赖项中的某些东西取决于该

LogFactory
类。这是无可争议的。

据我所知,您的班级

TokenGenerator
仍在使用 Apache Commons Logging。这就是堆栈跟踪似乎所说的。

所以要么:

  1. 堆栈跟踪已过时,
  2. 运行时使用的
    TokenGenerator.class
    副本已过时,或者
  3. 您忘记更新
    TokenGenerator.java

另一方面,如果

TokenGenerator.java
不是您的代码,那么您需要修改项目配置,以便 Apache Commons Logging 的 JAR 文件在运行时存在!

在我的配置或依赖管理中是否有我忽略的东西?

很有可能。例如,您只告诉我们“您认为”您做了什么并检查过。您还没有向我们展示配置或依赖管理等内容。

如何解决此问题并运行我的应用程序而不出现此错误?

从应用程序及其必须存在的(可传递!)依赖项
中删除对依赖项的剩余引用,或者确保包含必需的 JAR。

(我假设没有其他异常是您没有告诉我们的;即,在这之前

发生的静态初始化失败导致的异常。类的静态初始化失败将导致其他类无法初始化,并且这可能会导致级联异常。)

© www.soinside.com 2019 - 2024. All rights reserved.