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

在Eclipse中构建最小化可运行Jar包的问题

解决Eclipse导出仅含项目代码与HSQLDB JDBC驱动的可运行Jar包问题

方法一:Eclipse手动导出时筛选依赖类

  1. 右键你的Java项目 → 选择「导出」→ 依次展开「Java」→ 「可运行JAR文件」,点击「下一步」
  2. 在「处理所需库的方式」中,选择将所需库提取到生成的JAR中(此方式会把依赖类合并到你的Jar里,避免外部依赖问题)
  3. 点击「下一步」进入库选择界面,找到HSQLDB的依赖Jar并展开:
    • 只勾选org.hsqldb.jdbc包下的所有类,以及驱动入口类org.hsqldb.jdbc.JDBCDriver
    • 取消勾选嵌入式服务器相关的包(比如org.hsqldb.server、org.hsqldb.persist、org.hsqldb.script等)
  4. 确认导出路径后点击「完成」,生成的Jar就仅包含你的项目代码和必要的JDBC驱动类,无冗余的嵌入式服务器代码

解决外部依赖时「找不到合适的驱动」异常

如果你坚持用外部依赖(把HSQLDB Jar放在项目Jar外),必须确保运行时驱动Jar在类路径中:

  • 用命令行运行时,通过-cp参数指定完整类路径:
    # Windows系统
    java -cp 你的项目.jar;./lib/hsqldb.jar com.yourpackage.YourMainClass
    # Linux/macOS系统
    java -cp 你的项目.jar:./lib/hsqldb.jar com.yourpackage.YourMainClass
    
  • 也可以写批处理(.bat)或shell脚本封装上述命令,避免手动输入出错
  • 另外,代码里尽量用JDBC 4.0+的自动加载机制,不要硬编码Class.forName("org.hsqldb.jdbc.JDBCDriver")(如果用旧版JDBC则仍需手动加载,但必须保证驱动类在类路径内)

方法二:用Maven精准打包(推荐)

如果你的项目用Maven管理,可通过maven-shade-plugin实现精准打包,只保留需要的类:
在pom.xml中添加插件配置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.4.1</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <filters>
          <filter>
            <artifact>org.hsqldb:hsqldb</artifact>
            <includes>
              <include>org/hsqldb/jdbc/**</include>
            </includes>
            <excludes>
              <exclude>org/hsqldb/server/**</exclude>
              <exclude>org/hsqldb/persist/**</exclude>
              <exclude>org/hsqldb/script/**</exclude>
              <exclude>org/hsqldb/util/**</exclude> <!-- 不需要工具类可取消 -->
            </excludes>
          </filter>
        </filters>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>com.yourpackage.YourMainClass</mainClass>
          </transformer>
        </transformers>
      </configuration>
    </execution>
  </executions>
</plugin>

执行mvn package后,target目录下的shaded Jar就是仅含你的代码和JDBC驱动的可运行Jar。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:04:49