【问题标题】:Embedded Database into Jar File将数据库嵌入到 Jar 文件中
【发布时间】: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")。

标签: java jar derby


【解决方案1】:

好吧,我最终找到了解决方法:)。我不得不将嵌入的 derby 数据库文件与 derby jar 一起放入一个文件夹中,而我的 jar 文件包含我的项目,一切都运行良好!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    相关资源
    最近更新 更多