簡體   English   中英

從JAR文件中包含的應用程序訪問H2數據庫

[英]Access H2 Database from application contained in a JAR File

我有一個使用H2數據庫和以下連接字符串的應用程序:

Connection connection = DriverManager.getConnection("jdbc:h2:file:data/sample", "sa", "");

它在Eclipse下運行良好,但是,如果將Java Desktop應用程序打包在JAR文件中,它將無法再在數據/樣本中找到H2數據庫。 這是運行目錄:

application.jar
data |
     sample.h2.db

這是我嘗試執行應用程序的方法:

java -classpath .; -jar application.jar

由於未找到表而引發SQLException。 有什么提示可以讓Connection如何運行到Eclipse中以及JAR文件中嗎?
請注意,作為要求,我不應為數據庫使用絕對路徑,而應使用相對路徑,因為應用程序安裝程序會將數據庫文件夾與jar文件一起解壓縮。

我可以考慮一些可能的錯誤原因:

  • 數據庫為空。 在eclipse下構建應用程序時,您可能已經填充了它,但是從jar文件啟動時,您遇到了一個空的:使用H2控制台進行控制,或者在啟動時填充數據庫(如果為空),或者將數據庫完全初始化連同罐子。
  • 當您提供數據庫的相對路徑時,實際路徑取決於當前工作目錄。 這是非常不常見且容易出錯的。 您最好提供一個絕對路徑,該路徑可以在環境變量或java系統屬性中找到:它仍然是可配置的,但更明確

對於第二種可能性,如果H2找不到新數據庫,它將自動創建一個新數據庫。 為了避免在路徑錯誤時自動創建,可以在URL中添加;IFEXISTS=TRUE"jdbc:h2:file:data/sample;IFEXISTS=TRUE" 但是,如果可以,請避免相對路徑...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM