GraalVM 17升级后SpringBoot报错:未安装js语言如何解决?
解决GraalVM JDK17下SpringBoot应用缺失JS语言引擎的问题
问题原因
GraalVM从适配JDK17的版本开始,默认不再将JavaScript等Polyglot语言组件包含在核心JDK分发包中——这和你之前使用的GraalVM JDK11不同,当时JS是默认内置的。所以升级后如果没有主动引入或安装JS组件,就会出现A language with id 'js' is not installed的报错。
解决方案
1. 本地开发/运行环境:用GraalVM自带工具安装JS组件
找到你本地GraalVM JDK17的bin目录,执行自带的gu(GraalVM Updater)工具命令:
gu install js
这个命令会自动下载并安装适配当前GraalVM版本的JavaScript语言组件,安装完成后重启应用即可。
2. Maven构建的SpringBoot应用:添加JS依赖到pom.xml
如果你的应用需要通过Maven打包部署,直接在pom.xml中添加GraalVM JS的运行时依赖:
<dependencies> <!-- GraalVM JavaScript 核心依赖 --> <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js</artifactId> <version>21.3.0</version> <!-- 替换为和你GraalVM JDK17匹配的版本 --> <scope>runtime</scope> </dependency> <!-- 适配Java ScriptEngine API的依赖(如果你的代码用了ScriptEngine) --> <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js-scriptengine</artifactId> <version>21.3.0</version> <!-- 版本要和上面保持一致 --> <scope>runtime</scope> </dependency> </dependencies>
注意:version需要和你使用的GraalVM JDK17版本对应,比如你用的是GraalVM 22.3.0 for JDK17,就把版本改成22.3.0。
3. 原生镜像(Native Image)打包补充配置
如果你的应用是打包成GraalVM原生镜像,除了添加上述依赖,还要在原生镜像构建参数中指定初始化JS组件:
在pom.xml的native-maven-plugin中添加参数:
<plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> <configuration> <buildArgs> <buildArg>--initialize-at-build-time=org.graalvm.js</buildArg> </buildArgs> </configuration> </plugin>
内容的提问来源于stack exchange,提问作者shamsAAzad
相关产品推荐
相关产品推荐

