Cómo compilar Java para nativo usando GraalVM (SubstrateVM) en Eclipse

Jayadevan Vijayan:

Tengo un proyecto de investigación (implementado en Java 8) tendrán varias clases, varias funciones principales y más de 10.000 líneas de código, en Eclipse. El programa se ejecuta fuera de la memoria cuando la entrada no es pequeño.

Quería ver si va a usar menos memoria de pila, si se compila como una aplicación nativa.

No he encontrado ninguna manera de hacer esto en Eclipse.

Hice
$GRAALVM_HOME/bin/javac /home/appu/Downloads/2019/June/20/HelloWorld.java
Funcionó. Tengo una binaria de trabajo.

Probé
/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
lleguéMain entry point class '/home/appu/eclipse-nimi/NimishaGraalEE19/bin/nimi/decimate/Decimate.class' not found.

Probé
/home/appu/Downloads/Apps/GraalVM/2019-06-20/graalvm-ee-19.0.2/bin/native-image /home/appu/eclipse-nimi/NimishaGraalEE19/bin/*
lleguéMain entry point class '/home/appu/eclipse-nimi/NimishaGraalEE19/bin/nimi' not found.

El clásico

public class HelloWorld
{
    public static void main(String[] args)
    {
        System.out.println("Hello, World!");
    }
}

se compila en "HelloWorld.class"

lo que da una "holamundo" ejecutable que es ejecutable (application / x-ejecutable).

¿Puedo tener el mismo, desde Eclipse? ¿Puedo tener la misma desde la línea de comandos, archivos multiclase?

Cuando cambio el código anterior en

public class HelloWorld
{
    public static void hello()
    {
        System.out.println("Hello, World!");
    }
}

y añadir otra clase

public class Main
{
    public static void main(String[] args)
    {
        HelloWorld.hello();
    }
}

Recopilan correctamente, pero me sale

appu[23]/home/appu/Downloads/Apps/GraalVM/2019-06-20/graalvm-ee-19.0.2/bin/native-image /home/appu/Downloads/2019/June/23/HelloWorld.class 
Build on Server(pid: 17223, port: 36631)                                                          
[/home/appu/downloads/2019/june/23/helloworld.class:17223]    classlist:     415.66 ms            
Error: Main entry point class '/home/appu/Downloads/2019/June/23/HelloWorld.class' not found.     
Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception             
Error: Image build request failed with exit status 1                                              
appu[23]ls                                                                                        
HelloWorld.class  HelloWorld.java  Main.class  Main.java

Lo que quiero es un ejecutable (en mi caso, un ejecutable de GNU / Linux) el archivo que se puede utilizar como un ejecutable nativo.

Yo prefiero una solución de Eclipse, pero la línea de comandos, Netbeans, Código VS, ... o cualquier otra técnica es bienvenido.


En respuesta a la respuesta de Boris:

He intentado hacer un frasco hace unas horas, e hice un archivo llamado Principal. No funcionó.

jar cfe Main.jar Main Main.class
/home/appu/Downloads/Apps/GraalVM/2019-06-20/graalvm-ee-19.0.2/bin/native-image -jar /home/appu/Downloads/2019/June/23/Main.jar
./Main

Cuando me encontré principal, que es ejecutable tipo (application / x-ejecutable), tengo

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
        at Main.main(Main.java:5)
Caused by: java.lang.ClassNotFoundException: HelloWorld
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 1 more
Boris:

Dos opciones de los documentos ( https://www.graalvm.org/docs/reference-manual/aot-compilation/ ):

1) Construir un frasco de su proyecto y construir una imagen nativa de esa

native-image [options] -jar jarfile para construir una imagen de un archivo JAR.

2) Establecer la ruta de clase de imágenes nativas correcta y dar una imagen nativa del principal que desea

Usted puede proporcionar opciones adicionales para la construcción de la imagen nativa: -cpy --class-pathayuda para buscar archivos de clase a través de la lista de directorios separados, archivos JAR y ZIP archivos;

native-image [options] classpara construir un archivo ejecutable para una clase en el directorio de trabajo actual. Invocando ejecuta el código compilado nativo de esa clase.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=228151&siteId=1
Recomendado
Clasificación