NetBeans 22中Nashorn移除后集成GraalVM JavaScript仍报错求助
问题描述
- 已尝试在NetBeans 22中用GraalVM JavaScript替代Nashorn,但构建FXML项目时仍报错:
Java 15 has removed Nashorn, you must provide an engine for running JavaScript yourself. - 已完成操作:
- 下载
graalvm-jdk-22_windows-x64_bin.zip,解压至C:\Program Files\Java\graalvm-22 - 通过管理员CMD设置环境变量:
setx /M JAVA_HOME "C:\Progra~1\Java\graalvm-22"setx /M PATH "C:\Progra~1\Java\<graalvm>\bin;%PATH%"
- 已通过
echo验证环境变量生效,但问题未解决
- 下载
解决方案
1. 修正PATH环境变量的占位符错误
设置PATH时使用的<graalvm>是占位符,需替换为真实文件夹名graalvm-22,重新执行命令:
setx /M PATH "C:\Progra~1\Java\graalvm-22\bin;%PATH%"
执行后重启所有终端和NetBeans,确保新PATH生效。
2. 关联GraalVM到NetBeans项目
- 打开NetBeans,依次点击
工具->Java平台 - 点击
添加平台,选择标准Java平台,定位到C:\Program Files\Java\graalvm-22目录完成添加 - 右键目标项目 ->
属性->库->Java平台,选择刚添加的GraalVM作为项目默认平台
3. 引入GraalVM JavaScript引擎依赖
Maven项目
在pom.xml中添加以下依赖:
<dependency> <groupId>org.graalvm.js</groupId> <artifactId>js</artifactId> <version>22.0.1</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js-scriptengine</artifactId> <version>22.0.1</version> <scope>runtime</scope> </dependency>
Ant项目
手动将GraalVM安装目录下lib\truffle和lib\graal中的js.jar、js-scriptengine.jar、truffle-api.jar等核心JAR包添加到项目库中。
4. 验证JavaScript引擎加载状态
在项目中添加测试代码,确认GraalVM引擎被正确识别:
import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class TestScriptEngine { public static void main(String[] args) { ScriptEngineManager manager = new ScriptEngineManager(); manager.getEngineFactories().forEach(factory -> { System.out.println("引擎名称: " + factory.getEngineName()); System.out.println("引擎版本: " + factory.getEngineVersion()); }); } }
运行后若输出包含GraalVM JavaScript,说明引擎已正常加载。
5. 清理NetBeans缓存
若以上步骤无效,尝试清理缓存:
- 关闭NetBeans
- 删除目录
C:\Users\[你的用户名]\AppData\Local\NetBeans\Cache\22 - 重启NetBeans并重新构建项目
内容的提问来源于stack exchange,提问作者Rusty
相关产品推荐
相关产品推荐

