如何将SQLite数据库打包到jar中?

我有一个Java项目,它使用一个小的SQLite数据库。

现在我想创建一个可执行jar文件,里面有Database文件和驱动程序( sqlitejdbc-v056 ),只有一个包含所有内容的包。

我的包结构如下所示:

Bank | | +---src | ... | +---bin | ... | +---data | bank_database.db | +---img | ajax-refresh-icon.gif | +---doc | Datenbankschema.uxf | \---resources sqlitejdbc-v056.jar 

我使用这个小Java类访问数据库:

 package model; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBHandle { Connection conn; public DBHandle() throws Exception { Class.forName("org.sqlite.JDBC"); } public Connection openConnection() throws SQLException { conn = DriverManager.getConnection("jdbc:sqlite:data\\bank_database.db"); return conn; } public void closeConnection() throws SQLException { if (!conn.isClosed()) { conn.close(); } } } 

如果我使用Eclipse导出管理器将所有这些内容打包到jar中并尝试执行它,则会为JDBC驱动程序抛出ClassNotFoundException

我该如何解决这个问题?

甚至可以将资源修改为关于数据库的jar吗?

AFAIK你不能在没有太多麻烦的情况下修改jar内的资源(基本上它是一个zip,因此它应该是可能的,但JVM可能存在文件锁等)。

另外,你不能把一个jar子放到另一个jar子里。 但是,如果需要,可以解压缩驱动程序jar并将内容包含在jar中。 Maven程序集插件的目标是执行此操作: jar-with-dependencies

要解决ClassNotFoundException ,您需要将sqllite jar添加到类路径中

请参阅: http : //docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html

我的偏好是使用一个叫做jar的工具。 您可以使用从ant或maven中调用它,我将它用于工作和我的个人项目。 我有一篇不错的博客文章解释了如何使用它: 构建自包含的可执行Jars 2种方式