我有一个代码,我想在 GraalVM 上运行
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
以上代码是我的基本代码。
native-image 21.0.1 2023-10-17
GraalVM Runtime Environment Oracle GraalVM 21.0.1+12.1 (build 21.0.1+12-jvmci-23.1-b19)
Substrate VM Oracle GraalVM 21.0.1+12.1 (build 21.0.1+12, serial gc, compressed references)
上面的代码是我的 graalvm 版本。
当我运行以下命令时
javac HelloWorld.java
原生图像 HelloWorld,
我有一个错误
java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/fsk/HelloWorld)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.defineClass(NativeImageClassLoader.java:500)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.findClassViaClassPath(NativeImageClassLoader.java:452)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.loadClass(NativeImageClassLoader.java:640)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:534)
at java.base/java.lang.Class.forName(Class.java:513)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ImageClassLoader.forName(ImageClassLoader.java:307)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ImageClassLoader.forName(ImageClassLoader.java:303)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ImageClassLoader.forName(ImageClassLoader.java:312)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:434)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:720)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:142)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:97)
我的IDE是Intellij IDE 2023.3
我正在使用 MacBook 并使用土耳其语
我该如何解决这个问题。?
HelloWorld代码
package org.fsk;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
该代码位于
org/fsk
文件夹下,文件名为 HelloWorld.java 编译命令:javac org\fsk\HelloWorld.java
和 Windows 中的本机图像
ozkan@HP-ENVY-2021-I7 C:\Users\ozkan\tmp\graalvmtest
$ native-image org.fsk.HelloWorld
========================================================================================================================
GraalVM Native Image: Generating 'org.fsk.helloworld' (executable)...
========================================================================================================================
For detailed information and explanations on the build output, visit:
https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/BuildOutput.md
------------------------------------------------------------------------------------------------------------------------
[1/8] Initializing... (15.7s @ 0.07GB)
Java version: 21.0.2+13-LTS, vendor version: Oracle GraalVM 21.0.2+13.1
Graal compiler: optimization level: 2, target machine: x86-64-v3, PGO: ML-inferred
C compiler: cl.exe (microsoft, x64, 19.41.34120)
Garbage collector: Serial GC (max heap size: 80% of RAM)
1 user-specific feature(s):
- com.oracle.svm.thirdparty.gson.GsonFeature
------------------------------------------------------------------------------------------------------------------------
Build resources:
- 11.92GB of memory (75.6% of 15.77GB system memory, determined at start)
- 8 thread(s) (100.0% of 8 available processor(s), determined at start)
[2/8] Performing analysis... [*****] (16.8s @ 0.18GB)
2,095 reachable types (61.5% of 3,409 total)
1,995 reachable fields (45.6% of 4,372 total)
9,663 reachable methods (38.5% of 25,068 total)
745 types, 109 fields, and 481 methods registered for reflection
53 types, 30 fields, and 48 methods registered for JNI access
1 native library: version
[3/8] Building universe... (2.6s @ 0.21GB)
[4/8] Parsing methods... [***] (5.6s @ 0.26GB)
[5/8] Inlining methods... [***] (2.2s @ 0.27GB)
[6/8] Compiling methods... [******] (35.1s @ 0.29GB)
[7/8] Layouting methods... [**] (2.1s @ 0.25GB)
[8/8] Creating image... [**] (2.3s @ 0.33GB)
3.50MB (47.54%) for code area: 4,560 compilation units
3.77MB (51.30%) for image heap: 57,124 objects and 47 resources
87.16kB ( 1.16%) for other data
7.36MB in total
------------------------------------------------------------------------------------------------------------------------
Top 10 origins of code area: Top 10 object types in image heap:
1.84MB java.base 882.30kB byte[] for code metadata
1.35MB svm.jar (Native Image) 722.67kB byte[] for java.lang.String
90.25kB com.oracle.svm.svm_enterprise 427.77kB heap alignment
42.46kB jdk.proxy3 382.90kB java.lang.String
40.50kB jdk.proxy1 333.15kB java.lang.Class
30.21kB org.graalvm.nativeimage.base 154.09kB java.util.HashMap$Node
29.85kB org.graalvm.collections 114.01kB char[]
21.47kB jdk.internal.vm.ci 101.10kB byte[] for reflection metadata
17.29kB jdk.internal.vm.compiler 88.75kB java.lang.Object[]
11.90kB jdk.proxy2 81.84kB com.oracle.svm.core.hub.DynamicHubCompanion
389.00B for 1 more packages 575.42kB for 553 more object types
Use '-H:+BuildReport' to create a report with more details.
------------------------------------------------------------------------------------------------------------------------
Security report:
- Binary does not include Java deserialization.
- Use '--enable-sbom' to embed a Software Bill of Materials (SBOM) in the binary.
------------------------------------------------------------------------------------------------------------------------
Recommendations:
PGO: Use Profile-Guided Optimizations ('--pgo') for improved throughput.
INIT: Adopt '--strict-image-heap' to prepare for the next GraalVM release.
HEAP: Set max heap for improved and more predictable memory usage.
CPU: Enable more CPU features with '-march=native' for improved performance.
QBM: Use the quick build mode ('-Ob') to speed up builds during development.
------------------------------------------------------------------------------------------------------------------------
4.2s (4.9% of total time) in 179 GCs | Peak RSS: 0.84GB | CPU load: 4.02
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
C:\Users\ozkan\tmp\graalvmtest\org.fsk.helloworld.exe (executable)
========================================================================================================================
Finished generating 'org.fsk.helloworld' in 1m 24s.
下面是如何在windows下运行
ozkan@HP-ENVY-2021-I7 C:\Users\ozkan\tmp\graalvmtest
$ dir
Volume in drive C is Windows
Volume Serial Number is BC27-F52E
Directory of C:\Users\ozkan\tmp\graalvmtest
19/09/2024 20:49 <DIR> .
19/09/2024 20:38 <DIR> ..
19/09/2024 20:44 <DIR> org
19/09/2024 20:49 7,712,768 org.fsk.helloworld.exe
1 File(s) 7,712,768 bytes
3 Dir(s) 87,389,446,144 bytes free
ozkan@HP-ENVY-2021-I7 C:\Users\ozkan\tmp\graalvmtest
$ org.fsk.helloworld.exe
Hello world!