首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GraalVM应用程序中使用java SDK库?

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

Stack Overflow用户
提问于 2020-11-01 01:02:44
回答 1查看 68关注 0票数 1

我不知道如何使用GraalVM的SDK编译我的Java应用程序。我相信在使用GraalVM javac二进制文件时,它们会默认添加到类路径中。

我的hello world测试应用程序:

代码语言:javascript
复制
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输出:

代码语言:javascript
复制
$ 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

我使用的是使用OpenJDK 11构建的GraalVM javac二进制文件:

代码语言:javascript
复制
$ 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

当深入挖掘时,我发现这些类包含在$JAVA_HOME/jmod的.jmod归档中

代码语言:javascript
复制
$ 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
EN

回答 1

Stack Overflow用户

发布于 2020-11-02 18:41:11

这些类和包会自动出现在类路径中。

您在导入语句中有一个拼写错误:polygot -> polyglot

请注意,我还将String[] args作为参数添加到main方法中,以便它具有正确的签名并可以运行。

以下是我编译/运行它时的输出。

代码语言:javascript
复制
~/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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64624332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档