如何将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种方式