【问题标题】:Cannot compile simple "Hello World" Java application with native-image on Windows无法在 Windows 上使用本机映像编译简单的“Hello World”Java 应用程序
【发布时间】:2020-01-18 00:39:10
【问题描述】:

我正在尝试使用GraalVMWindows 上提供的native-image 实用程序将简单的Java Hello World 应用程序编译为本机代码,但我总是遇到错误(见下文)。

HelloWorld.java:

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

首先,我使用以下命令将代码编译为class 文件:

>javac HelloWorld.java

接下来,我从VS 2017 Developer Command Prompt 调用native-image 命令:

>native-image -H:+ReportExceptionStackTraces HelloWorld
[helloworld:20420]    classlist:   1,249.05 ms
[helloworld:20420]        (cap):     704.71 ms
[helloworld:20420]        setup:     997.16 ms
Error: Error compiling query code (in C:\Users\User\AppData\Local\Temp\SVM-2348968769537330415\JNIHeaderDirectives.cpp). Compiler command  CL -IC:\GraalVM\include\win32 C:\Users\User\AppData\Local\Temp\SVM-2348968769537330415\JNIHeaderDirectives.cpp /FeC:\Users\User\AppData\Local\Temp\SVM-2348968769537330415\JNIHeaderDirectives.exe output included error: [Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27035 for x86, Copyright (C) Microsoft Corporation.  All rights reserved., ]
com.oracle.svm.core.util.UserError$UserException: Error compiling query code (in C:\Users\User\AppData\Local\Temp\SVM-2348968769537330415\JNIHeaderDirectives.cpp). Compiler command  CL -IC:\GraalVM\include\win32 C:\Users\User\AppData\Local\Temp\SVM-2348968769537330415\JNIHeaderDirectives.cpp /FeC:\Users\User\AppData\Local\Temp\SVM-2348968769537330415\JNIHeaderDirectives.exe output included error: [Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27035 for x86, Copyright (C) Microsoft Corporation.  All rights reserved., ]
        at com.oracle.svm.core.util.UserError.abort(UserError.java:114)
        at com.oracle.svm.hosted.c.NativeLibraries.reportErrors(NativeLibraries.java:218)
        at com.oracle.svm.hosted.NativeImageGenerator.processNativeLibraryImports(NativeImageGenerator.java:1518)
        at com.oracle.svm.hosted.NativeImageGenerator.setupNativeLibraries(NativeImageGenerator.java:1006)
        at com.oracle.svm.hosted.NativeImageGenerator.setupNativeImage(NativeImageGenerator.java:835)
        at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:528)
        at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:445)
        at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
Error: Image build request failed with exit status 1

我也尝试了Windows SDK 7.1 Command PromptVS 2019 版本,但都没有成功。如何解决这个问题?它不能是编译器,因为它适用于常规的C/C++ 应用程序。你还需要为此配置什么吗?

【问题讨论】:

  • 我正在尝试编译一个更复杂的程序,该程序已在 linux 上使用 native-image 成功编译,但我收到了与您相同的错误消息,FWIW。我正在使用 graalvm-ee-java8-19.3.1。

标签: java windows visual-studio-2017 graalvm graalvm-native-image


【解决方案1】:

我设法使用JDK 11the respective version of GraalVM 成功编译。可以为此提供视觉指南,例如可以找到here(注意:我是视频上传者)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多