为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Eclipse 中使用 GraalVM (SubstrateVM) 将 Java 编译成

如何在 Eclipse 中使用 GraalVM (SubstrateVM) 将 Java 编译成

SMILET 2023-02-16 16:07:29
我有一个研究项目(在 Java 8 中实现)将在 Eclipse 中使用几个类、几个主要函数和超过 10000 行代码。当输入不小时,程序会耗尽内存。我想看看如果编译为本机应用程序,它是否会使用更少的堆栈内存。我没有找到在 Eclipse 中执行此操作的方法。我做了$GRAALVM_HOME/bin/javac /home/appu/Downloads/2019/June/20/HelloWorld.java它的工作。我有一个工作二进制文件。我试过/home/appu/Downloads/Apps/GraalVM/2019-06-20/graalvm-ee-19.0.2/bin/native-image /home/appu/eclipse-nimi/NimishaGraalEE19/bin/nimi/decimate/Decimate.class了Main entry point class '/home/appu/eclipse-nimi/NimishaGraalEE19/bin/nimi/decimate/Decimate.class' not found.我试过/home/appu/Downloads/Apps/GraalVM/2019-06-20/graalvm-ee-19.0.2/bin/native-image /home/appu/eclipse-nimi/NimishaGraalEE19/bin/*了Main entry point class '/home/appu/eclipse-nimi/NimishaGraalEE19/bin/nimi' not found.经典public class HelloWorld{    public static void main(String[] args)    {        System.out.println("Hello, World!");    }}被编译成“HelloWorld.class”它给出了一个可执行的可执行文件“helloworld”(应用程序/x-可执行文件)。我可以从 Eclipse 获得相同的吗?对于多类文件,我可以从命令行获得相同的内容吗?当我将上面的代码更改为public class HelloWorld{    public static void hello()    {        System.out.println("Hello, World!");    }}并添加另一个类public class Main{    public static void main(String[] args)    {        HelloWorld.hello();    }}我想要的是一个可执行文件(在我的例子中是一个 Gnu/Linux 可执行文件),它可以用作本机可执行文件。我更喜欢 Eclipse 的解决方案,但欢迎使用命令行、Netbeans、VS 代码……或任何其他技术。
查看完整描述

1 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

文档中的两个选项(https://www.graalvm.org/docs/reference-manual/aot-compilation/):

1) 构建一个项目的 jar 并从中构建一个原生图像

native-image [options] -jar jarfile为 jar 文件构建图像。

2)正确设置原生镜像classpath,给原生镜像你想要的main

您可以为本机图像构建提供额外的选项: -cp--class-path 帮助通过目录、JAR 存档和 ZIP 存档的单独列表搜索类文件;

native-image [options] class为当前工作目录中的类构建可执行文件。调用它会执行该类的本机编译代码。


查看完整回答
反对 回复 2023-02-16
  • 1 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号