Jenkins udeploy插件log4j问题

时间:2013-10-11 17:53:29

标签: jenkins log4j

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

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

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

我解压缩war文件,删除了在WEB-INF / lib /下找到的log4j jar(1.2.9),添加了最新的log4j jar(1.2.17),将其重命名为1.2.9,然后删除了SHA1-摘要:在META-INF / all下的清单中找到的log4j 1.2.9的行(哈希)似乎与上述说明一致。部署war(service jenkins start)会导致以下错误,抱怨清单中没有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在他们的维基页面上添加了一个特殊的注释。任何帮助/建议/想法将受到高度赞赏。

詹金斯是版本1.525。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

为什么要将其重命名为1.2.9?它的工作方式可能与1.2.17相同。这是一个签名的jar,重命名它可能是它破裂的原因。

如果jenkins在linux上的tomcat上运行,你可能只需更快地登录到webapps目录的盒子并改变那里不断扩大的战争,而不是重新打包jenkins战争。

答案 2 :(得分:0)

按照以下步骤更改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
  6. 没有必要遵循IBM提供的所有解决方案: - https://developer.ibm.com/urbancode/plugin/jenkins-ibmucd/

答案 3 :(得分:0)

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