带有 Graal VM 的 Apache Ant

问题描述 投票:0回答:3

我们将 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
java-11 nashorn graalvm
3个回答
6
投票

解决方案1

如果您使用的是 JDK 15 或更高版本。请将以下 jar 添加到路径中。

enter image description here

解决方案2

使用 Graal VM Jars

使用上面的 jar 并将它们作为类路径引用传递。

enter image description here


4
投票

您还可以将 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 下载。


0
投票

将 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 文件夹中,即可像以前一样工作。

© www.soinside.com 2019 - 2024. All rights reserved.