SOLUTION
好吧,這裏的解決這個問題。問題是,在jar裏面沒有dll,也沒有任何文件夾被打包在jar裏。所以幾乎每個dll,包含圖片的文件夾或其他文件夾都必須位於可運行jar所在的文件夾中。在jar中打包的唯一東西是外部jar和你的.java文件來運行你的軟件。
無論如何,使用Firebird嵌入模式它非常棘手。由於jaybird(SOME_VERSION).dll必須放在所有.dll,.msg文件旁邊。但是JVM會要求jaybird dll在java.library.path中,當然這只是system32和一些與該程序無關的java文件夾。
因此,你的程序檢測到你的runnable jar文件夾爲java.library.path(其實應該稱爲路徑),其中jaybird dll文件和其他firebird文件和文件夾是你把這些LOC的主方法:
String decodedPath =URLDecoder.decode(ClassLoader.getSystemClassLoader().getResource(".").getPath(), "UTF-8");
decodedPath=decodedPath.substring(1, decodedPath.length()-1).replaceAll("/", "\\\\");
System.setProperty("java.library.path",decodedPath+";"+System.getProperty("java.library.path")));
我concall以前的目錄庫路徑,因爲我只是將它添加到列表。
請注意,這些LOC必須在ANY CODE之前,並且還包括調用構造函數。注意你是否使用全局靜態模塊或JNI調用。
我希望這節省了一些時間,我已經失去了12個小時的工作,試圖找出正確的。
我真的很感激,如果管理員不抹去我的編輯或這個問題自我回答。
快樂編碼= D