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

导入自定义SQLite-JavaFX Jar包遇java.lang.module.ResolutionException错误求助

解决JavaFX与自定义SQLite封装Jar的拆分包冲突问题

问题根源

你的SQLite封装Jar包错误地将JavaFX的javafx.concurrent包打包进了自身文件中,导致与官方JavaFX模块(javafx.graphics)的同名包产生冲突,触发模块系统的拆分包错误。


方案1:修正SQLite项目的打包配置(根本解决)

SQLite项目作为依赖JavaFX的模块,打包时只应包含自身代码,不应将JavaFX依赖类一并打包。针对Maven项目,调整打包插件配置:

普通Maven Jar插件配置

在SQLite项目的pom.xml中,限制maven-jar-plugin仅打包自身源码:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.3.0</version>
      <configuration>
        <includes>
          <include>**/your/actual/package/**</include> <!-- 替换为你自己的源码包路径 -->
        </includes>
      </configuration>
    </plugin>
  </plugins>
</build>

JavaFX Maven插件配置

如果使用javafx-maven-plugin打包,确保使用jar目标而非fatJar(后者会将所有依赖打包进Jar):

<plugin>
  <groupId>org.openjfx</groupId>
  <artifactId>javafx-maven-plugin</artifactId>
  <version>0.0.8</version>
  <configuration>
    <mainClass>your.main.class.path</mainClass> <!-- 若为可运行Jar,填写主类路径 -->
  </configuration>
  <executions>
    <execution>
      <id>default-cli</id>
      <goals>
        <goal>jar</goal> <!-- 使用jar目标生成仅含自身代码的Jar -->
      </goals>
    </execution>
  </executions>
</plugin>

重新打包后,SQLite Jar将不再包含JavaFX的包,新项目引入后即可解决冲突。


方案2:新项目临时绕过冲突(Workaround)

若暂时无法重新打包SQLite Jar,可通过JVM启动参数强制合并冲突包:
在IntelliJ的运行配置中,添加VM参数:

--patch-module javafx.graphics=path/to/your/sqlite.jar

该参数会告知模块系统,将SQLite Jar中的javafx.concurrent包合并到官方javafx.graphics模块中,避免冲突。

同时确保新项目的module-info.java依赖声明正确:

module your.new.project {
    requires javafx.controls;
    requires javafx.graphics;
    requires xx.xxxx.sqlite;
}

额外排查点

  • 检查SQLite项目是否误将JavaFX源码复制到了自身项目目录中,导致打包时包含了这些类。
  • 若SQLite Jar是带依赖的可运行FatJar,必须改为仅含自身代码的普通Jar,否则必然与新项目的JavaFX依赖产生冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:23:23