您有此链接错误:
[Tue Aug 30 12:24:03 EEST 2022][INFO] [SUB] Undefined symbols for architecture arm64:
[Tue Aug 30 12:24:03 EEST 2022][INFO] [SUB] "_JNI_OnLoad_jaas", referenced from:
[Tue Aug 30 12:24:03 EEST 2022][INFO] [SUB] ___svm_vm_target_staticlibraries in com.example.demo1.main.driver.o
如果你这样做:
$ nm target/gluonfx/aarch64-darwin/gvm/tmp/SVM-166XXXXX/com.example.demo1.main.driver.o | grep jaas
U _JNI_OnLoad_jaas
这意味着您的本机图像对象中确实存在未解析的符号(由于gluonfx:compile
),链接时应该修复(与gluonfx:link
).
您可以在日志中看到链接命令,它应该类似于:
gcc /HelloFX/target/gluonfx/aarch64-darwin/gvm/HelloFX/AppDelegate.o /HelloFX/target/gluonfx/aarch64-darwin/gvm/HelloFX/launcher.o \
/HelloFX/target/gluonfx/aarch64-darwin/gvm/tmp/SVM-1661853087924/hellofx.hellofx.o \
-ljava -lnio -lzip -lnet -lprefs -lj2pkcs11 -lfdlibm -lextnet -ljvm -llibchelper -ldarwin -lpthread -lz -ldl -lstdc++ \
-mmacosx-version-min=10.12 -lobjc -Wl,-framework,Foundation ... \
-Wl,-force_load,~/.gluon/substrate/javafxStaticSdk/19-ea+8/darwin-aarch64/sdk/lib/libglass.a ... \
-o /HelloFX/target/gluonfx/aarch64-darwin/HelloFX -L~/.gluon/substrate/javafxStaticSdk/19-ea+8/darwin-aarch64/sdk/lib \
-L/~/.gluon/substrate/graalvm/graalvm-svm-java17-darwin-m1-gluon-22.1.0.1-Final/Contents/Home/lib/svm/clibraries/darwin-aarch64 \
-L/~/.gluon/substrate/graalvm/graalvm-svm-java17-darwin-m1-gluon-22.1.0.1-Final/Contents/Home/lib/static/darwin-aarch64
注意添加的库:libjava.a
, libnio.a
, libnet.a
,...
这些来自~/.gluon/substrate/graalvm/graalvm-svm-java17-darwin-m1-gluon-22.1.0.1-Final/Contents/Home/lib/static/darwin-aarch64
.
但是,那libjaas.a
库未链接,这解释了上述错误。
好消息是,缺少的库可以在该路径中与其他库一起使用,因此您可以轻松地将其包含在链接命令中linkerArgs https://docs.gluonhq.com/#_linkerargs:
<plugin>
<groupId>com.gluonhq</groupId>
<artifactId>gluonfx-maven-plugin</artifactId>
<version>${gluonfx.maven.plugin.version}</version>
<configuration>
<target>${gluonfx.target}</target>
<mainClass>${main.class}</mainClass>
<linkerArgs>
<arg>-ljaas</arg>
</linkerArgs>
</configuration>
</plugin>
Now run mvn gluonfx:link
再次,链接错误应该消失了。
其他一些提示:
- 使用推荐的 GraalVM 22.1.0.1-Final 的 Gluon 版本(请参阅docs https://docs.gluonhq.com/#prerequisites_macos)
- Run
mvn gluonfx:runagent
如果您还没有,在构建本机映像之前,请先发现项目中反射的所有用途。
- 不要使用
--allow-incomplete-classpath
,最好预先修复错误。
- 媒体对 GluonFX 插件的支持非常有限(基于您的依赖项)(请参阅docs https://docs.gluonhq.com/#_platforms.