Gradle在jenkins中失败:高山容器:UnsatisfiedLinkError:linux-amd64 / libnative-platform.so:libstdc ++。so.6:

最近,我开始在Oracle Java 8的Docker容器中使用Jenkins。使用Gradle构build项目时,出现以下错误消息:

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

在jenkins我select了“强制GRADLE_USER_HOME使用工作区”,没有运气。 文件libnative-platform.so在目录中,但是gradle不起作用。 我尝试在容器中安装Gradle和相同的结果。 我最后的设置是用Gradle Wrapper。

我到处寻找,但我没有运气在我的追求。 我很感激,如果有人能够阐明这一点。

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

 apk add --no-cache libstdc++ 

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

JRE / JDK的libnative-platform.so与gnu libc链接,但Alpine图像基于musl libc 。

简单的解决scheme是使用像Debian这样的基于glibc的docker镜像,如果你想坚持使用Alpine,你可能会在这个github的问题中find一些线索。

问题在于,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默认情况下限制了encryption。 它通过Ask.com广告软件分发。 而且因为它只作为一个BLOB分发,所以你不知道里面还有什么不好的…