jenkins中的gradle构建失败:alpine容器:UnsatisfiedLinkError:linux-amd64 / libnative-platform.so:libstdc ++。so.6:

时间:2016-06-13 18:40:37

标签: gradle jenkins docker alpine

最近我开始在带有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

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

我到处寻找,但我的任务没有运气。如果有人能够了解这一点,我感激不尽。

3 个答案:

答案 0 :(得分:6)

您可以通过在Alpine

中安装libstdc++软件包来完成此工作
apk add --no-cache libstdc++

答案 1 :(得分:2)

  

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

JRE / JDK的

libnative-platform.sognu libc相关联,但Alpine图像基于musl libc

简单的解决方案是使用像Debian这样的基于glibc的泊坞窗图像,如果你想坚持使用Alpine,你可能会在github issue找到一些线索。

答案 2 :(得分:2)

问题是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分发,你不知道里面还有什么不好......