1

有没有人按照他们的网站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-Digest:行(哈希)在 META-INF/ 下的清单中找到的 log4j 1.2.9 似乎与上述说明一致。部署战争(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 在他们的 wiki 页面上添加了一个关于它的特殊注释。任何帮助/建议/想法将不胜感激。

詹金斯是 1.525 版本。

4

4 回答 4

3

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

于 2014-02-27T13:12:28.663 回答
1

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

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

于 2013-10-11T19:25:26.063 回答
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. 重启詹金斯

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

于 2014-08-12T14:08:32.287 回答
0

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

于 2014-09-24T21:23:46.743 回答