2012-04-17 57 views
2

目前我一直在將我的應用程序部署爲.jar文件,因爲每個操作系統的用戶都可以雙擊它。但是,我現在需要增加最大堆大小,唯一的方法是將命令行參數(-Xmx1g)傳遞給JVM。我希望可以將它包含在jar清單中,但事實並非如此。什麼是部署Java程序並提供JVM參數的好方法?

所以現在我不得不在包含帶有參數的.jar中包含.bat或.csh。似乎有更好的方法來做到這一點?我不認爲Webstart是一個好的選擇,因爲.jar是爲了在寫出文件的用戶目錄中運行。該應用程序是一個桌面GUI應用程序。

+0

看起來像重複http://stackoverflow.com/questions/2848346/how-do-i-set-maximal-jvm-memory-xmx-for-a-jar-file – 2012-04-17 20:42:51

+2

*「我不認爲Webstart是一個不錯的選擇,因爲.jar是爲了運行在用戶的目錄中,它將文件寫出來。「*除了」在用戶目錄中運行「(這是無關緊要的廢話,因爲受信任的JWS應用程序可以讀/寫任何可由其他Java應用程序訪問的文件。)JWS可以用一隻手綁住它後面的所有內容。使用[Java Web Start](http://stackoverflow.com/tags/java-web-start/info)。 – 2012-04-18 03:51:06

回答

2

遺憾的是,不可能在你的罐子裏面的manifest文件指定vmargs,所以你需要像一個解決方法:

  • 創建與指定VM ARGS啓動jar文件的腳本
  • 包裹裏面的你的罐子可執行文件將作爲發射
  • 編譯Java代碼到本機二進制

第一種解決方案可以輕鬆實現使用批處理或例如一個shell腳本,而對於第二個解決方案有幾種替代品可以b e作爲例如上述和原生的Java Web Startlaunch4j是有用的,其是跨平臺Java可執行包裝器。 第三種解決方案可以在某些情況下實現,如果您的代碼與GNU classpath庫兼容,在這種情況下,您可以使用GCJ編譯爲本機二進制文件。

+0

謝謝。我決定使用Launch4j工具爲windows用戶創建一個exe文件。 – pieter3d 2012-04-19 00:53:03

2

Webstart似乎是實現這一目標的好方法,如果您擁有正確的權限,則不會阻止您讀取/寫入用戶的文件系統。

它還提供了一些有趣的「特徵」,包括:

  • 推升級用戶透明地
  • 檢查該用戶正在使用的JRE
正確版本的可能性

在你的情況下,你只需要使用下面的語法:

<j2se version="1.7+" java-vm-args="-Xmx1g" href="http://java.sun.com/products/autodl/j2se"/> 
相關問題