2014-11-03 74 views
0

使用JDeveloper 12.1.3.0.0,我創建了一個使用Oracle JDBC和BC4J Oracle Domains庫(通過項目屬性 - >庫和類路徑添加它們)的Java桌面應用程序。在JDeveloper中,所有東西都編譯並運行良好,但我正在努力部署一個工作的JAR文件。這個JAR文件需要包含這些庫,因爲它將直接放置在客戶端機器上。JDeveloper使用庫部署桌面應用程序JAR

當前失敗的嘗試:我在項目屬性中創建了一個部署配置文件。該配置文件將我的MainForm.java設置爲主文件,並且包含一個文件組(類型:庫),並將這兩個必要的庫作爲貢獻者進行檢查。

使用此配置文件部署JAR後,我收到一條錯誤消息,指出「發生了一個Jave異常。」使用「java -jar archive.jar」通過命令提示符運行jar我得到以下跟蹤:

Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems, Inc." Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jbo/JboException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) at sun.launcher.LauncherHelper.getMainMethod(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Caused by: java.lang.ClassNotFoundException: oracle.jbo.JboException at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 6 more

我在做什麼不正確?任何建議都非常受歡迎。

回答

0

與Oracle代表進行了一些溝通後,JDeveloper本身顯然無法實現這一點。限制是Java無法進入打包在另一個JAR中的JAR文件。有人建議我使用One-Jar,它將從庫中提取和打包必要的類,或者創建一個將類路徑設置爲外部庫的腳本。

+0

[PLUS ONE]謝謝,它絕對節省了我的一天! – 2015-02-02 11:13:44

+1

@HumanBeing如果它完全相關,我的最終解決方案是將.java文件從JDeveloper項目中提取出來,並通過cmd提示符手動進行編譯。在需要修改項目時,可以非常輕鬆地重新部署項目。很高興我的失敗可能會有所幫助。 – rosst 2015-04-15 21:03:21