简体   繁体   English

如何在 Java 应用程序中使用 GraalVM SDK 库?

[英]How do I use GraalVM SDK libraries with a java application?

I do not know how to compile my Java application with GraalVM's SDK.我不知道如何使用 GraalVM 的 SDK 编译我的 Java 应用程序。 I believe they are added to the classpath by default when using the GraalVM javac binary.我相信在使用 GraalVM javac二进制文件时,它们会默认添加到类路径中。

My hello world test application:我的 hello world 测试应用程序:

import java.io.File;
import org.graalvm.polygot.Source;
import org.graalvm.polygot.Context;

public class Application
{
    public static void main() {
        System.out.println("Hello, world");
    }
}

javac output: javac输出:

$ javac Application.java
Application.java:2: error: package org.graalvm.polygot does not exist
import org.graalvm.polygot.Source;
                          ^
Application.java:3: error: package org.graalvm.polygot does not exist
import org.graalvm.polygot.Context;
                          ^
2 errors

I am using the GraalVM javac binary built with OpenJDK 11:我正在使用使用 OpenJDK 11 构建的 GraalVM javac二进制文件:

$ java --version
openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment GraalVM CE 20.2.0 (build 11.0.8+10-jvmci-20.2-b03)
OpenJDK 64-Bit Server VM GraalVM CE 20.2.0 (build 11.0.8+10-jvmci-20.2-b03, mixed mode, sharing)

$ env | grep JAVA
JAVA_HOME=/home/matt/Software/graalvm-ce-java11-20.2.0

When digging deeper, I found the classes to be contained within .jmod archives at $JAVA_HOME/jmod :当深入挖掘时,我发现这些类包含在$JAVA_HOME/jmod .jmod 档案中:

$ jmod list org.graalvm.sdk.jmod | grep Source
classes/org/graalvm/polyglot/Source.class

$ jmod list org.graalvm.sdk.jmod | grep Context.class
classes/org/graalvm/polyglot/Context.class

These classes and packages get on the classpath automatically.这些类和包会自动进入类路径。

You have a typo in the import statements: polygot -> polyglot .您在导入语句中有一个错字: polygot -> polyglot

Note that I've also added the String[] args as the argument to the main method so it has the correct signature and can be run.请注意,我还添加了String[] args作为main方法的参数,因此它具有正确的签名并且可以运行。

Here's my output when I compile/run it.这是我编译/运行时的输出。

~/1 ~/.sdkman/candidates/java/20.2.0.r11-grl/bin/java -version
openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment GraalVM CE 20.2.0 (build 11.0.8+10-jvmci-20.2-b03)
OpenJDK 64-Bit Server VM GraalVM CE 20.2.0 (build 11.0.8+10-jvmci-20.2-b03, mixed mode, sharing)

~/1 cat Application.java
───────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: Application.java
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ import java.io.File;
   2   │ import org.graalvm.polyglot.Source;
   3   │ import org.graalvm.polyglot.Context;
   4   │
   5   │ public class Application
   6   │ {
   7   │     public static void main(String[] args) {
   8   │         System.out.println("Hello, world");
   9   │     }
  10   │ }
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

~/1 ~/.sdkman/candidates/java/20.2.0.r11-grl/bin/javac Application.java

~/1 ll
total 8
-rw-rw-r--. 1 opc opc 428 Nov  2 10:39 Application.class
-rw-rw-r--. 1 opc opc 219 Nov  2 10:39 Application.java

~/1 ~/.sdkman/candidates/java/20.2.0.r11-grl/bin/java Application
Hello, world
~/1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 GraalVM JS:如何在 Java 应用程序中通过 Bindings(Nashorn 兼容模式)和 Context 传递 Truffle 选项? - GraalVM JS: How I do pass Truffle options via Bindings (Nashorn compat mode) and Context in a Java application? 我如何在我的 Java 应用程序中使用外部库 - How can i use external libraries in my java application 如何在 Java 中使用 GraalVM? 类未找到异常 - How to use GraalVM in Java? class not found exception 如何在Java中设置和使用类,库,包? - How do I set up and use classes, libraries, packages in Java? 如何在Android应用程序开发中合并Java SDK? - How do I incorporate a java SDK in android application development? 如何在 OSGi (Karaf) 模块中添加 GraalVM Polyglot 代码(运行 Javascript 的 Java)支持 - How do I add GraalVM Polyglot code (Java running Javascript) support in an OSGi (Karaf) Module 在 Java 应用程序中找不到 Graalvm - Graalvm not found within Java application 如何使用VersionOne JAVA SDK中的“ WHERE” - How do I use 'WHERE' from VersionOne JAVA SDK 如何使用编译源 GraalVM 运行 Java 程序? - How to use compiled source GraalVM to run a Java program? 我如何使用Jmeter插件(库)在Java Desktop应用程序中创建Http和Https负载测试 - How can i use Jmeter plugin (libraries) to create a Http and Https load test in Java Desktop application
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM