簡體   English   中英

導出時Java App出現意外行為

[英]Java App unexpected behavior when exported

我有一個非常奇怪的問題,我無法弄清楚,問題是我的應用程序可以在IDE(Eclipse)上完美運行,但是不能在導出時運行,當我運行jar(雙擊)時,應用程序開始但有一些功能丟失(從模板文件加載,但是從普通文件加載時不會發生),當我嘗試從控制台(java-jar my.jar)運行它以查看任何錯誤消息時,發現我乘法效果很好! :S ...

更多信息:

我的應用程序在Windows 7上運行

我啟動了任務管理器,並注意到當我使用名稱為java.exe * 32的應用程序雙擊時,以及當我從命令行中以java.exe的名稱進行操作(不帶“ * 32”)時,我都注意到了。據我所知,我沒有編寫任何與32位或64位功能相關的內容。

“解決了”

好吧,我無法以自己想要的方式解決它,據我發現,我發現在運行x32和x64的2個Java版本之間存在問題,我刪除了32位版本並開始作為魅力,但我仍然不確定發生了什么,我感謝@Sajal Dutta,其中之一的評論可以幫助我理解問題的一部分,無論如何,感謝大家,我將繼續搜索直到我發現問題了...

從Eclipse創建jar時,不會將您的資產復制到jar上,也不會保留位置。 打開罐子,檢查模板是否在正確的位置,或者完全沒有模板。

要使導出的jar包含您的資產/資源,

  1. 在Eclipse中右鍵單擊您的項目。 然后新建->源文件夾。
  2. 將源文件夾命名為任何名稱。 例如template_src。
  3. 將模板的整個目錄復制或拖動到template_src。 然后做罐子。

由於它是通過命令行運行的,而不是雙擊jar時無法運行的,因此工作目錄可能不同(並且您正在使用相對路徑加載模板)。 在某些操作系統上,通過雙擊運行可執行jar時,工作目錄為主目錄,而從命令行運行時,則為當前目錄。

jar中的“文件”不是由File處理,而是資源。

URL url = getClass().getResource("...");
InputStream in = getClass().getResourceAsStream("...");

然后,jar內或非Windows平台上的文件路徑區分大小寫

"Template_A.xml"

不是

"template_a.xml"

您也可以使用7zip或WinZip檢查罐子。

暫無
暫無

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

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