【问题标题】:Gradle build fails in jenkins:alpine container: UnsatisfiedLinkError: linux-amd64/libnative-platform.so: libstdc++.so.6:在 jenkins:alpine 容器中 Gradle 构建失败:UnsatisfiedLinkError: linux-amd64/libnative-platform.so: libstdc++.so.6:
【发布时间】:2016-10-14 07:08:14
【问题描述】:

最近我开始在带有 Oracle Java 8 的 Docker 容器中使用 Jenkins。使用 Gradle 构建项目时,我收到以下错误消息:

UnsatisfiedLinkError: linux-amd64/libnative-platform.so: libstdc++.so.6: cannot open shared object file: No such file or directory

在 Jenkins 中,我选择了“强制 GRADLE_USER_HOME 使用工作区”,但一点运气都没有。文件 libnative-platform.so 位于预期的目录中,但 gradle 不起作用。我尝试在容器中安装 Gradle,结果相同。我的最后一个设置是使用 Gradle Wrapper。

我到处寻找,但我的任务没有运气。如果有人能阐明这一点,我将不胜感激。

【问题讨论】:

    标签: gradle jenkins docker alpine


    【解决方案1】:

    您可以通过在 Alpine 中安装 libstdc++ 软件包来完成这项工作

    apk add --no-cache libstdc++
    

    【讨论】:

      【解决方案2】:

      libstdc++.so.6:无法打开共享对象文件

      JRE/JDK 的libnative-platform.sognu libc 链接,但Alpine 映像基于musl libc

      简单的解决方案是使用基于 glibc 的 docker 镜像,例如 Debian,如果您想坚持使用 Alpine,您可能会在 github issue 中找到一些线索。

      【讨论】:

      • 我会检查链接,我知道在容器中安装 Oracle Java 有一些技巧,我也会看看它。将发布结果,非常感谢@Erik。
      【解决方案3】:

      问题是 Oracle JDK 链接到此处不可用的 GNU C 库 (glibc)。

      Alpine Linux 不使用 glibc 作为传统发行版,如 Debian、Fedora 或 Gentoo。相反,它使用musl libc,这是一个轻量级、快速、简单且符合标准的 C 库(即 glibc 所不具备的一切)。

      解决方案非常简单,只需从 Alpine 存储库(包openjdk8)安装 OpenJDK。不要担心兼容性,Oracle JDK 8 只是 OpenJDK 8 的品牌发行版,代码库几乎相同。

      如果您出于某种原因坚持使用 Oracle JDK 并且根本不关心安全性*,那么请不要使用 Alpine Linux,而是使用一些传统的发行版……

      您可以阅读我在 JRuby wiki 上的文章 JRuby on Alpine Linux 了解更多信息。

      * 由于美国的政策,Oracle JDK 默认限制了加密。它与 Ask.com 广告软件一起分发。而且因为它只是作为 BLOB 分发的,所以你不知道里面还有什么不好的......

      【讨论】:

      • 好消息,我不知道那个密码学的东西。我不得不暂停工作几天,然后会回来,会及时通知您。
      • 安装无限加密强度非常容易,广告软件位仅适用于 Windows/Mac 安装,并且是可选的。
      • @ErikDannenberg 仍然大多数人都不知道它。不管怎样,关键是它大大降低了 Oracle 的可信度,足以让你不想从他们那里安装不透明的 BLOB。尤其是在没有理由的情况下。
      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      相关资源
      最近更新 更多