You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GluonFX执行nativerun时出现com.fazecast.jSerialComm.SerialPort类未找到错误

解决GluonFX引入jSerialComm后nativerun报NoClassDefFoundError的问题

问题根源

引入com.fazecast.jSerialComm.SerialPort后,gluonfx:nativerun抛出NoClassDefFoundError,本质是Native Image没有生成jSerialComm所需的JNI、资源等配置文件——你的项目src/main/resources/META-INF/native-image下只有filter-file.json,缺少jni-config.json、resource-config.json这些关键配置,导致原生镜像无法识别jSerialComm的依赖。

解决步骤

1. 确保runagent阶段正确捕获调用

gluonfx:runagent是通过运行时agent动态捕获依赖的,必须保证代码实际执行了SerialPort相关逻辑(比如创建实例、调用方法),否则agent不会生成对应配置:

  • 运行mvn gluonfx:runagent时,手动触发所有用到SerialPort的功能;
  • 查看runagent输出日志,确认有com.fazecast.jSerialComm相关的类被记录。

2. 手动生成缺失的配置文件

如果agent自动生成失败,直接用native-image-agent手动捕获:

  1. 先编译项目:
    mvn compile
    
  2. 运行带agent的Java程序,指定配置输出目录:
    java -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image 你的主类全限定名
    
    替换你的主类全限定名为项目实际主类(比如com.example.SerialApp),运行后目标目录会自动生成jni-config.json、resource-config.json等文件。

3. 配置GluonFX插件确保配置被打包

在pom.xml的gluonfx-maven-plugin中添加资源配置,让插件打包时包含生成的native-image配置:

<plugin>
    <groupId>com.gluonhq</groupId>
    <artifactId>gluonfx-maven-plugin</artifactId>
    <version>2.2.0</version> <!-- 替换为你使用的最新版本 -->
    <configuration>
        <mainClass>你的主类全限定名</mainClass>
        <resources>
            <resource>
                <directory>src/main/resources/META-INF/native-image</directory>
            </resource>
        </resources>
    </configuration>
</plugin>

4. 清理后重新构建

执行完整的构建流程,确保新配置生效:

mvn clean gluonfx:runagent gluonfx:build gluonfx:nativerun

额外注意点

  • jSerialComm依赖JNI本地库,必须保证agent捕获到JNI调用,否则原生镜像会找不到本地方法;
  • 始终在Windows X64 Native Tools命令行执行构建,确保环境变量和编译工具链正常。

内容的提问来源于stack exchange,提问作者droid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:06:02