【问题标题】:Jenkins udeploy plugin log4j issuesJenkins udeploy 插件 log4j 问题
【发布时间】:2013-10-11 17:53:28
【问题描述】:

是否有人按照其网站http://wiki.urbancode.com/uDeploy/Repositories 上提供的说明成功更新了 jenkins 的 log4j jar 文件以使 udeploy 插件正常工作,如下所示?

注意: Jenkins 经常使用旧的 log4j 文件,然后我们的插件需要。您可能需要更换它。请参阅下面的说明:
1.解压jenkins.war
2.打开解压后的.war目录下的/web-inf/lib,确定Jenkin的log4j.jar的名字
3. 导航到 uDeploy 服务器的 %serverLocation%/lib 目录并将我们的 log4j.jar 复制到 Jenkins 的 /web-inf/lib/ 目录,用 uDeploy 覆盖现有的 log4j(重命名以匹配 Jenkins)

在 Jenkins 的独立实例(不是 Tomcat 应用程序)上,Jenkins 会保留所有文件的哈希值,并且在启动 Jenkins 时会由于修改 log4j 文件后哈希值不匹配而引发错误。唯一的解决方案是删除文件中跟踪哈希的值。”

我解压war文件,删除WEB-INF/lib/下的log4j jar(1.2.9),添加最新的log4j jar(1.2.17),重命名为1.2.9,然后删除SHA1-摘要:在 META-INF/ 下的清单中找到的 log4j 1.2.9 的行(哈希)似乎与上述说明一致。部署战争(服务 jenkins 启动)会导致以下错误,抱怨清单中没有 SHA1 签名:

Starting Jenkins Exception in thread "main" java.lang.SecurityException: invalid SHA1 signature file digest for WEB-INF/lib/log4j-1.2.9.jar
        at sun.security.util.SignatureFileVerifier.verifySection(SignatureFileVerifier.java:457)
        at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:250)
        at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:193)
        at java.util.jar.JarVerifier.processEntry(JarVerifier.java:262)
        at java.util.jar.JarVerifier.update(JarVerifier.java:216)
        at java.util.jar.JarFile.initializeVerifier(JarFile.java:341)
        at java.util.jar.JarFile.getInputStream(JarFile.java:406)
        at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:752)
        at sun.misc.Resource.cachedInputStream(Resource.java:77)
        at sun.misc.Resource.getByteBuffer(Resource.java:160)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:436)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:476)
                                                           [FAILED]

我错过了什么?我认为我正确地遵循了指示,显然有足够多的人遇到这个问题,因为 uDeploy 在他们的 wiki 页面上添加了一个关于它的特殊注释。任何帮助/建议/想法将不胜感激。

Jenkins 是 1.525 版。

【问题讨论】:

    标签: jenkins log4j


    【解决方案1】:

    如果有人仍然对解决方案感兴趣,我没有删除摘要。只是删除了 log4j-1.2.9.jar 并添加了 log4j-1.2.17.jar(没有重命名),这就是我所做的一切。它工作得非常出色。 Jenkins 版本 1.542。

    【讨论】:

      【解决方案2】:

      为什么将其重命名为 1.2.9?它可能会像命名为 1.2.17 一样工作。这是一个签名的罐子,重命名它可能是它坏的原因。

      如果 jenkins 在 linux 上的 tomcat 上运行,您可能会更快,只需登录到 webapps 目录并更改那里的扩展战争,而不是重新打包 jenkins 战争。

      【讨论】:

      • 我将它重命名为 1.2.9 bc,这就是 Urbancode 的官方指示。保持原样命名并从清单中删除 1.2.9 条目会产生以下错误 - 如果您了解为什么詹金斯在删除(并清除扩展的战争缓存)后仍然寻找 1.2.9,将不胜感激:在线程“main”java.lang.SecurityException中启动Jenkins异常:在sun.security.util.SignatureFileVerifier.verifySection(SignatureFileVerifier.java:第399章)
      【解决方案3】:

      按照以下步骤更改 log4j 版本并解决所述 uDeploy 问题:-

      1. 停止詹金斯
      2. 进入Jenkins的安装目录
      3. 导航到 .jenkins\war\WEB-INF\lib [在 Windows 系统上]
      4. 删除 log4j-1.2.9.jar 并添加 log4j-1.2.17.jar(不重命名)
      5. 重启 Jenkins

      没有必要遵循 IBM 作为解决方案提供的所有步骤:- https://developer.ibm.com/urbancode/plugin/jenkins-ibmucd/

      【讨论】:

        【解决方案4】:

        此时,只需使用新版本的 Jenkins 插件即可。不兼容已被删除。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-05
          • 2020-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多