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

使用sqlite-jdbc驱动打包Jar运行报错:Prohibited package name: java.sql

解决命令行运行Jar时出现"Prohibited package name: java.sql"的问题

嘿,这个问题我之前帮不少开发者解决过!出现Prohibited package name: java.sql错误的核心原因很明确——Java的安全机制禁止我们自己编写的类使用以java.开头的包名,这是JDK核心API的专属命名空间,防止用户代码篡改或混淆系统核心类。你的Database类大概率是不小心放在了java.sql包下,虽然Eclipse编译时可能没拦截,但命令行运行JVM会严格执行这个限制。

下面是具体的解决步骤:

  • 检查并修改Database类的包名
    打开你的Database.java文件,把顶部的package java.sql;声明改成自定义的非java.开头的包名,比如com.yourquiz.db、org.yourproject.database这类符合你项目结构的名称。同时要在Eclipse里调整对应的文件夹结构(Java包和文件夹路径是一一对应的,比如com.yourquiz.db对应src/com/yourquiz/db)。

  • 重新编译并打包项目
    修改完包名后,先在Eclipse里重新编译项目,确保没有编译错误。然后重新导出可运行Jar文件,导出时注意选择正确的打包方式(比如将依赖的sqlite-jdbc库一起打包或提取到Jar中)。

  • 验证Jar包内容(可选但推荐)
    用命令行执行jar tf your-quiz-app.jar,查看输出的类路径列表,确认没有java/sql/Database.class这类用户自定义类,只有org/sqlite/开头的驱动类和你自定义包下的类。

  • 再次命令行运行Jar
    执行java -jar your-quiz-app.jar,应该就能正常启动程序了。

补充说明:sqlite-jdbc驱动本身的类是在org.sqlite包下,完全符合Java的命名规则,所以问题肯定出在你自己编写的Database类的包名上,只要修正包名就能解决这个报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:29:44