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

NetBeans中mysql-connector正常,打包JRE运行时SQL类缺失

Java部署JRE缺失SQL核心类问题

我使用Win10、openjdk-18.0.2 x64、mysql-connector-j-8.2.0和Netbeans 15,通过Ant构建项目。IDE中运行时SQL相关功能正常;使用本地安装的Java执行java -jar app.jar也能正常运行。但需要部署到无Java环境的机器上,因此使用构建生成的appJRE运行时,appJre\bin\java -jar app.jar执行后,除SQL方法外其他功能均正常,会抛出NoClassDefFoundError,提示找不到SQLException、DriverManager等类。

IDE类路径中包含多个jar包,除mysql-connector*.jar外,其他jar在可执行文件中均能正常工作。该SQL驱动jar已放在dist/lib目录(与其他依赖jar同目录),尝试使用-Djava.libraries.path=dist\lib\mysql-connectors-j-8.2.0.jar启动无效。

按建议将jar包名称添加到Manifest中:仅添加mysql jar时,其他jar找不到;添加所有jar后,仅SQL jar报错。已查阅同类问题但无进展,若为版本冲突,IDE运行应也会报错,但实际IDE运行正常。

Manifest内容

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.10.8
Created-By: 18.0.2+9-61 (Oracle Corporation)
Class-Path: 
lib/jsch-0.1.55.jar 
lib/javaee-api-8.0.jar 
lib/AbsoluteLayout.jar 
lib/jfreechart-1.5.3.jar 
lib/mysql-connector-j-8.2.0.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: app

目录结构

12/13/2023  10:24 AM    <DIR>          lib
12/13/2023  08:35 AM         1,471,425 app.jar
12/13/2023  10:24 AM    <DIR>          appJre

尝试过的启动命令

appJre\bin\java -jar app.jar
appJre\bin\java -cp .:lib/* -jar app.jar

本地VM版本信息

<installed>java -version
openjdk version "18.0.2" 2022-07-19
OpenJDK Runtime Environment (build 18.0.2+9-61)
OpenJDK 64-Bit Server VM (build 18.0.2+9-61, mixed mode, sharing)

可部署VM版本信息

appJre\bin\java -version
openjdk version "18.0.2" 2022-07-19
OpenJDK Runtime Environment (build 18.0.2+9-61)
OpenJDK 64-Bit Server VM (build 18.0.2+9-61, mixed mode)

疑惑为何两者表现不同,似乎SQL库依赖SDK中JRE没有的内容。堆栈信息如下:

java.lang.NoClassDefFoundError: java/sql/SQLException
        at controllers.GuiMan.init(GuiMan.java:137)
        at controllers.MainFrame.init(MainFrame.java:181)
        at controllers.MerlinLab.lambda$main$0(MerlinLab.java:43)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.ClassNotFoundException: java.sql.SQLException
        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:521)
        ... 16 more

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:53:11