我编写了一个代码,连接到位于 CLASSPATH
中的 sqlite
驱动程序并读取一些数据库文件。我想创建一个可以在没有 sqlite
驱动程序的计算机上使用的可执行文件。
如果我这样做:
jar cvfe exec.jar main_class
运行时我会得到“class not found: org.sqlite.JDBC”
java -jar exec.jar
我应该怎样做才能使可执行文件正常工作?
编辑: 我不知道这是否有什么区别,但这是我使用的 JDBC 驱动程序:
最佳答案
您需要将库包含在 JAR 中。也许您不知道这一点,JAR 文件只是 ZIP 文件,因此您可以轻松更改其内容。以下是一些有关如何操作的快速说明。假设您的 JAR 文件名为 exec.jar
,并且您要包含的库的 JAR(您下载的 JAR)是 driver.jar
- 将文件名从
exec.jar
更改为exec.zip
。 - 将
exec.zip
的所有内容提取到文件夹exec/
- 将库文件名从
driver.jar
更改为driver.zip
- 将
driver.zip
的所有内容解压到文件夹driver/
- 将
driver/
的内容复制到exec/
中,但不复制META-INF
文件夹。如果弹出窗口询问是否可以合并文件夹,请单击"is"。 - 将
exec/
中的所有文件压缩为exec.zip
- 将
exec.zip
重命名为exec.jar
(替换原来的)。
您可以使用此方法将任何 Java 库包含在 JAR 中。
关于java - 带有 sqlite 驱动程序的 Jar 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25850590/