我们将 Apache Ant 与 Nashorn JavaScript Engine 结合使用,该引擎在 jdk 15 及更高版本中已弃用并删除。我试图找到如何从 Nashorn 切换到 Graal VM,但即使在 Apache 网站上也没有找到任何可用的信息。请告知我需要哪些罐子以及我应该放置它们。我们的代码需要改变什么。如果有人已经这样做了,请分享您的经验。 我有一个示例,针对 jdk1.8.0_311 运行:
<?xml version="1.0" ?>
<project name="test" default="test">
<property environment="env"/>
<target name="test" >
<script language="javascript">
<![CDATA[
load("nashorn:mozilla_compat.js");
importPackage(java.time);
var today = new Date();
var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
self.log("This script is for Test Of Nashorn Javascript Engine");
print ("Today is: " + date );
]]>
</script>
</target>
</project>
结果如下:
test:
[script] Warning: Nashorn engine is planned to be removed from a future JDK release
[script] This script is for Test Of Nashorn Javascript Engine
[script] Today is: 2021-11-3
BUILD SUCCESSFUL
Total time: 0 seconds
如果您使用的是 JDK 15 或更高版本。请将以下 jar 添加到路径中。
使用 Graal VM Jars
使用上面的 jar 并将它们作为类路径引用传递。
您还可以将 standalone Nashorn 添加为 Ant 构建的依赖项;将其放在 Ant
lib
目录中应该可以。默认情况下,这是 $ANT_HOME/lib
,但某些 Ant 安装使用不同的位置,例如自制安装的 Ant 将使用 /usr/local/share/ant
。如果你不想把它放在lib中,你也可以把它放在你的项目中,并在<classpath>
标签内使用<classpathref>
或<script>
来指向它。
请注意,独立的 Nashorn 也需要类路径上的 ASM 7.3.1。两者的 JAR 都可以从 Maven Central 下载。
将 nashorn-core-15.4.jar、asm-9.7.jar、asm-util-9.7.jar、asm-tree-9.7.jar、asm-commons-9.7.jar 添加到 ant\lib 文件夹中,即可像以前一样工作。