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

JavaFX应用调用本地安装的Maven依赖时运行时抛出java.lang.NoClassDefFoundError问题求助

JavaFX应用调用本地安装的Maven依赖时运行时抛出java.lang.NoClassDefFoundError问题求助

大家好,我最近碰到一个很棘手的问题,想请教一下各位:

我正在开发一个JavaFX应用,用Maven管理所有依赖。其中有一个第三方JAR包是修改版的org.llrp.ltk RFID库,因为没有公开的Maven仓库,所以我把它本地安装到了自己的Maven仓库里。

目前来看,本地安装是没问题的:

  • 我能确认这个依赖已经正确安装到本地仓库
  • 项目编译完全正常,没有任何报错
  • 用同一个项目里的标准main()方法调用该依赖中的类时,代码运行得完美无缺

但是,当我在JavaFX应用的代码里调用这个依赖时,就出问题了!具体是点击某个按钮触发使用该依赖类的操作时,直接抛出了如下错误:

Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: org/llrp/ltk/net/LLRPEndpoint
    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 java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
    ...
Caused by: java.lang.ClassNotFoundException: org.llrp.ltk.net.LLRPEndpoint
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
    ... 56 more

我的JavaFX应用平时运行都正常,只有触发那个按钮操作才会报错。启动应用用的是Maven插件命令:mvn javafx:run

下面是我pom.xml里的依赖配置(那个本地安装的库已经包含在内):

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>${javafx.version}</version>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.11.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>testcontainers</artifactId>
        <version>1.19.3</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>1.19.3</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>postgresql</artifactId>
        <version>1.19.3</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.7.3</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.orm</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>6.6.13.Final</version>
    </dependency>
    <!-- 这就是本地安装的库 -->
    <dependency>
        <groupId>org.impinj.reader</groupId>
        <artifactId>reader-impinj</artifactId>
        <version>10.34.0</version>
    </dependency>
</dependencies>

还有pom.xml里的build插件配置:

<build>
    <plugins>
        <!-- Compiler plugin -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <release>21</release>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>0.0.8</version>
            <configuration>
                <mainClass>com.example.App</mainClass>
            </configuration>
            <executions>
                <execution>
                    <id>run</id>
                    <configuration>
                        <mainClass>com.example.App</mainClass>
                    </configuration>
                </execution>
                <execution>
                    <id>debug</id>
                    <configuration>
                        <mainClass>com.example.App</mainClass>
                        <options>
                            <option>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8000</option>
                        </options>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我使用的是Java 21 LTS和JavaFX 21,试过在pom的build部分添加一些额外的类路径配置,但问题还是没解决。有没有哪位大佬遇到过类似的情况,能给我一些排查思路或者解决方案吗?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 10:29:31