【发布时间】:2016-10-14 18:54:13
【问题描述】:
在过去的几天里,我一直试图在我的 jar 文件中访问我的 Derby 数据库。这是我的连接类的样子:
import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;
public class DBConnection
{
public static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
public static final String JDBC_URL = "jdbc:derby:EmployeeInfo";
public static Connection dbConnector()
{
try
{
Class.forName(DRIVER).newInstance();
Connection conn = DriverManager.getConnection(JDBC_URL);
JOptionPane.showMessageDialog(null, "Connection successfull");
return conn;
}catch(Exception e)
{
JOptionPane.showMessageDialog(null, e);
return null;
}
}
}
当我在 Eclipse 中时一切正常,我的程序在我的 GUI 更新数据库时按预期运行。但是当我将我的程序变成一个 jar 文件时,它说它找不到我的数据库 EmployeeInfo(注意:Database.jar 是 EmployeeInfo 数据库)。最后一件事,当我在另一台机器上尝试 jar 文件时,它还指出它找不到数据库。
解释为什么这会伴随任何修复会很棒! -谢谢, 亚伦:)
【问题讨论】:
-
所有 .jar 文件条目都应视为只读。如果要修改条目,请将其复制到临时文件并修改该文件。
-
当您说临时文件时,究竟是什么意思?
-
如果您只需要修改后的数据库来运行您的程序,您只需将数据库从 Class.getResourceAsStream 复制到使用 Files.createTempFile 制作的文件中。如果您需要对数据库的更改是永久性的(以便程序的后续运行可以读取它们),请为文件选择一致的位置,例如 System.getProperty("user.home")。