【问题标题】:log4j2 in JNLP results ClassnotfoundexceptionJNLP 中的 log4j2 结果 Classnotfoundexception
【发布时间】:2022-12-11 00:56:41
【问题描述】:

我们有一个在 log4j 上运行的旧桌面应用程序。该应用程序使用 JNLP 部署在用户系统上,然后连接到我们端的服务器。我们正在将应用程序升级到 log4j2。我们已经升级了服务器端代码并​​且运行良好。对于代码的 JNLP 端,尽管我们已经完成了所有更改并正确部署了应用程序,但我们最终遇到了一个异常,我们似乎无法找到原因。在这里的任何帮助表示赞赏..

例外情况如下所列。

java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:429)
at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:525)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)
at com.abcxyz.core.log.Logger.<clinit>(Logger.java:150)
at com.abcxyz.core.log.DefaultLog4jHelper.<init>(DefaultLog4jHelper.java:91)
at com.abcxyz.core.log.DefaultLog4jHelper.initLogger(DefaultLog4jHelper.java:44)
at com.abcxyz.ui.main.CMS.<clinit>(CMS.java:115)
at com.abcxyz.ui.main.InitializeCMS.main(InitializeCMS.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

异常指向 log4j-1.2.17.jar(我们的旧 jar)中的类文件。我确定我在代码中的任何地方都没有旧 jar,也没有引用旧 jarfile 的代码的任何部分。

下面粘贴的是 JNLP 的 sysArgs 部分,我指的是新属性文件

【问题讨论】:

    标签: java log4j log4j2 jnlp


    【解决方案1】:

    我不熟悉JNLP,但是根据你的stacktrace,程序找不到。在 Log4j2 包中,org.apache.log4j 已更改为 org.apache.logging.log4j。结果它不可用。

    1. 您的案例中最简单的解决方案之一 - 使用 Log4j 1.x 桥(这里是 Migration guide)
    2. 如果你想使用当前版本添加到&lt;argument&gt;参数以使用log4j2 impl(默认情况下它使用为log4j 1.x配置的org.apache.commons.logging.impl.LogFactoryImpl) org.apache.commons.logging.LogFactory=org.apache.logging.log4j.jcl.LogFactoryImpl

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 2021-11-29
      相关资源
      最近更新 更多