首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有jre-8的阿尔卑斯Linux码头容器没有Nashorn引擎。

带有jre-8的阿尔卑斯Linux码头容器没有Nashorn引擎。
EN

Stack Overflow用户
提问于 2016-08-21 04:52:59
回答 3查看 4.5K关注 0票数 1

我有一个基于FROM anapsix/alpine-java:8_server-jre_unlimited的码头形象。但是,当我尝试

代码语言:javascript
复制
ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("nashorn");

scriptEnginenull。我试图通过以下方式获得默认引擎:

代码语言:javascript
复制
ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("js");

它也返回null,因为它是java8,我的理解是,它应该返回jdk.nashorn.api.scripting.NashornScriptEngine

这是因为jre-8是阿尔卑斯山的较轻版本吗?我应该安装完整的JDK来解决这个问题吗?

参考资料:http://blog.takipi.com/lean-mean-java-virtual-machine-making-your-docker-7x-lighter-with-alpine-linux/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-21 19:25:49

虽然安装openjdk8可以解决问题,但这不是正确的方法。使用阿尔卑斯的优点是创建一个最小的(大小)对接映像,这意味着它只有最低限度所需的Java组件。这就是为什么脚本API (Nashorn)被从图像中删除的原因。因此,如果我们需要特定的Java功能(比如脚本API ),我们必须切换到一个完整的JDK版本,而不需要使用Alpine,或者创建一个类似于Alpine的定制基础映像,但是使用脚本API组件(在本例中)。

票数 1
EN

Stack Overflow用户

发布于 2016-08-21 11:38:36

项目维护者显式删除Nashorn脚本引擎,请参见来源。将问题提交给Github,并询问维护人员原因是什么,这是有意义的。

票数 2
EN

Stack Overflow用户

发布于 2016-08-21 15:14:26

Image并不使用阿尔卑斯的官方anapsix/alpine-java包,但是Oracle (仅作为针对glibc编译的二进制文件)使用了glibc黑客,使其能够在基于musl的系统上运行。它没有得到阿尔卑斯山的支持,我强烈劝阻你不要使用它。

您可以使用普通的阿尔卑斯映像,只需安装openjdk8包,其中包括Nashorn:

代码语言:javascript
复制
echo "http://dl-cdn.alpinelinux.org/alpine/v3.4/community" >> /etc/apk/repositories
apk update
apk add openjdk8

Oracle只是OpenJDK (即开源)的(专有)发行版,代码库几乎是相同的。这意味着几乎所有运行在Oracle 8上的Java应用程序都运行在OpenJDK 8上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39060933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档