2013-03-11 117 views
1

我有一個Java應用程序,並已捆綁它爲App.jar。我使用了一些第三方工具(我們稱之爲NumberGenerator)。 App.jar啓動進程並調用NumberGenerator以獲取輸出。爲了引用可執行文件,我使用了相對路徑new File("lib/NumberGenerator.exe"),它工作得很好。設置家或工作目錄

現在在Mac上,我已經捆綁使用this的應用程序,它會自動生成一個應用程序啓動。當我通過點擊啓動程序運行時,它會啓動應用程序。但它將主目錄設置爲~,即/Users/Jatin,而不是jar文件所在的位置。因此,我的應用程序無法檢測到lib文件夾(顯然,因爲它不在那個位置)

在我的Java代碼中,如何將主文件夾設置爲我的jar所在的位置?

回答

0

你可以試試這個:

System.setProperty("user.home", "your-dir"); 
+0

我不知道'你-dir'。這是一個需要提供給客戶的應用程序。我現在知道它預先。他可以從任何地方啓動應用程序 – Jatin 2013-03-11 07:44:44

+0

它可以是任何您想要主目錄的位置。 – 2013-03-11 07:46:27

+0

我不確定是否可以使用相對路徑。你必須弄清楚。 – 2013-03-11 07:49:40

1

我曾與Linux類似的問題。我不知道很多關於OSX不AppBundler但在linux我解決它通過創建這個腳本

#!/usr/bin/env sh 
java -Duser.dir=$(pwd) -jar myapp.jar 

,如果你管理運行由雙擊它的腳本可能工作...看到How to run a shell script in OS X by double-clicking?

+0

由於必須設置權限,雙擊不起作用。我不希望客戶端打開終端並專門設置權限 – Jatin 2013-03-11 08:13:51

1

我看到兩種方法:

  • Info.plist,指定一個java.library.path相對於$JAVAROOT,如所描述的文章引用here

    <key>Java</key> 
    <dict> 
    ...  
        <key>Properties</key> 
        <dict> 
         <key>java.library.path</key> 
         <string>$JAVAROOT/</string> 
        </dict> 
    ...  
    </dict> 
    
  • 使用Java Web Start,它可以讓你的操作系統和架構管理本地resources

+0

當我指定它時沒有什麼特別的事發生 – Jatin 2013-03-11 08:39:12

+0

指向我的info.plist的鏈接https://www.stypi.com/purijatin/nehil.html(默認值)。 – Jatin 2013-03-11 08:41:09

+0

您可以從您的代碼訪問'java.library.path'屬性。 – trashgod 2013-03-11 08:41:39

相關問題