2011-12-14 7 views
0

EclipseでJavaプロジェクトをjarファイルとして保存しようとしています。.jarファイルからデータベースに接続できません

私はAccessデータベースで作業しているので、すべてをエクスポートする必要があります。Main.classSingletonConnection.class(データベースとの接続を管理するクラス)と同じフォルダにデータベースファイルを含めることにしました。

ので、コードは次のとおりです。

private SingletonConnection()throws ConnessioneException{ 

    idConnection = "root"; 
    passConnection = ""; 

    String slash="\\"; 
    String path=this.getClass().getResource("").getPath().replaceFirst("^.*:", "").replaceFirst("!.*$", "").replace("/", slash.concat("\\")); 

    System.out.println("path è "+path); 

    driverConnection = "sun.jdbc.odbc.JdbcOdbcDriver"; 
    stringConnection = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:"+path+"eventi.mdb"; 


    try { 
     Class.forName(driverConnection); 
     conn = DriverManager.getConnection(stringConnection,idConnection,passConnection); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     throw new ConnessioneException(); 
    } 
} 

public static Connection getInstance()throws ConnessioneException{ 
    if(conn==null) 
     new SingletonConnection(); 

    return conn; 
} 

EclipseではすべてがOKです。プロジェクトは動作しますが例外はありませんが、プロジェクトをRunnable JarファイルまたはJarファイルとしてエクスポートしようとすると、常にConnessioneException =nullが返され、dbへの接続が失敗します。

例外は、メソッドのgetInstance、ライン「新SingletonConnection()」

に与えられて、私は他のPC上でそのプログラムを実行する必要があるので、私はそれを解決する必要があります。 Eclipseを使い続けることはできません。解決しよう

+2

:多分それは誰かのために役立つことができますか? jarファイルにODBCドライバが含まれていますか? – Thilo

+2

ちょっとしたアドバイス、決してキャッチしない(Exception e)...新しいConnessioneExceptionをスローする();常に、新しいConnesioneException( "catch Exception"、e)をスローするようなことをします。スタックトレースには常に例外の根本原因があります。 –

+0

アドバイスありがとうMatthew ..しかしThiloはドライバーを含めていないと言ったので、私はそれをやる方法についてグーグルで尋ねています^^ –

答えて

0

:スタックトレースは何

*** import org.apache.commons.io.IOUtils; !! (package: commons-io-2.1.jar) 

    idConnection = "root"; 
    passConnection = ""; 

    String slash="\\"; 
    String path=null; 

    String temp=System.getProperty("java.io.tmpdir"); 
    if (!(temp.endsWith("/") || temp.endsWith("\\"))) 
      temp = temp + System.getProperty("file.separator"); 
    File tempDir = new File(temp); 
    File temporaryFile = new File(tempDir, "templateCopy.mdw"); 
    InputStream templateStream = getClass().getResourceAsStream("eventi.mdw"); 
    try { 
     IOUtils.copy(templateStream, new FileOutputStream(temporaryFile)); 

    } catch (FileNotFoundException e1) { 
     e1.printStackTrace(); 
     //Dialog d1=new Dialog("filenotfound"); 
    } catch (IOException e1) { 
     e1.printStackTrace(); 
     //Dialog d2=new Dialog("io"); 
    }catch (Exception e1){ 
     //Dialog d3=new Dialog("general"); 
    } 

    path = temporaryFile.getAbsolutePath(); 

    driverConnection = "sun.jdbc.odbc.JdbcOdbcDriver"; 
    stringConnection = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+path; 


    try { 
     Class.forName(driverConnection); 
     conn = DriverManager.getConnection(stringConnection,idConnection,passConnection); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     throw new ConnessioneException(e.getStackTrace()); 
    } 
関連する問題