尝试使用 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)
...
我尝试过的:
等等:
我正在寻求帮助来修复此错误并了解其发生的原因。我在配置或依赖管理中是否忽略了某些内容?如何解决此问题并运行我的应用程序而不出现此错误?
我正在寻求帮助来修复此错误并了解其发生的原因。
发生这种情况是因为应用程序和/或其依赖项中的某些东西取决于该
LogFactory
类。这是无可争议的。
据我所知,您的班级
TokenGenerator
仍在使用 Apache Commons Logging。这就是堆栈跟踪似乎所说的。
所以要么:
TokenGenerator.class
副本已过时,或者 TokenGenerator.java
。另一方面,如果
TokenGenerator.java
不是您的代码,那么您需要修改项目配置,以便 Apache Commons Logging 的 JAR 文件在运行时存在!
在我的配置或依赖管理中是否有我忽略的东西?
很有可能。例如,您只告诉我们“您认为”您做了什么并检查过。您还没有向我们展示配置或依赖管理等内容。
如何解决此问题并运行我的应用程序而不出现此错误?中删除对依赖项的剩余引用,或者确保包含必需的 JAR。从应用程序及其必须存在的(可传递!)依赖项
(我假设没有其他异常是您没有告诉我们的;即,在这之前
发生的静态初始化失败导致的异常。类的静态初始化失败将导致其他类无法初始化,并且这可能会导致级联异常。)