2016-10-14 37 views
0

过去几天,我一直试图让我的Derby数据库在我的jar文件中被访问。这里是我的连接类的样子:将嵌入式数据库转换为Jar文件

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; 
     } 
    } 
} 

而且,这里是一个什么我的项目资源管理器看起来像一个截图:当我在日食 Note that the database jar file is my apache derby database

一切正常,我的程序运行正常使用我的GUI更新数据库。但是,一分钟我做我的程序一个jar文件它说它找不到我的数据库EmployeeInfo(注意:Database.jar是EmployeeInfo数据库)。最后一件事,当我在另一台机器上尝试jar文件时,它也声明它找不到数据库。

为什么这是与任何修复一起探讨将是伟大的! -Thanks, Aaron :)

+0

所有.jar文件条目应视为只读。如果要修改条目,请将其复制到临时文件并修改该文件。 – VGR

+0

当你说临时文件时,这意味着什么? – Aaron

+1

如果您只需要修改的数据库用于程序的单次运行,则可以将数据库从Class.getResourceAsStream复制到使用Files.createTempFile创建的文件中。如果您需要对数据库所做的更改是永久性的(以便后续运行的程序可以读取它们),请为该文件选择一个一致的位置,如System.getProperty(“user.home”)。 – VGR

回答

0

那么我最终发现修复:)。我必须将嵌入式德比数据库文件与德比罐一起放入一个文件夹中,并且我的jar文件包含我的项目,并且所有内容都很精美!