2016-10-14 20 views
0

過去数日間は、私のjarファイルでアクセスするためにDerbyデータベースを取得しようとしていました。ここに私の接続クラスは次のようになります。すべてが私は日食にいるときに、予想通り、私のプログラムが実行される作品 Note that the database jar file is my apache derby database組み込みDBを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; 
     } 
    } 
} 

はまた、ここのように私のプロジェクトエクスプローラが見えるもののスクリーンショットです私のGUIはデータベースを更新します。しかし、私のプログラムをjarファイルにすると、データベースEmployeeInfo(注:Database.jarはEmployeeInfoデータベース)が見つかりません。一つの最後のことは、別のマシン上でjarファイルを試してみると、データベースを見つけることができないということです。

これが修正されている理由を探るのは素晴らしいことです! -Thanks、 Aaron :)

+0

すべての.jarファイルエントリは読み取り専用とみなされます。エントリを変更する場合は、一時ファイルにコピーしてそのファイルを変更します。 – VGR

+0

一時ファイルを言うと、それはどういう意味ですか? – Aaron

+1

プログラムを1回実行するだけで変更されたデータベースが必要な場合は、Class.getResourceAsStreamからFiles.createTempFileで作成したファイルにデータベースをコピーできます。データベースへの変更を永続的にする必要がある場合は、System.getProperty( "user.home")のようにファイルの一貫性のある場所を選択します。 – VGR

答えて

0

まあ私は最終的に修正を発見:)。私は、derby jarと一緒にフォルダに埋め込まれたderbyデータベースファイルを配置しなければなりませんでした。

関連する問題