目前我一直在將我的應用程序部署爲.jar文件,因爲每個操作系統的用戶都可以雙擊它。但是,我現在需要增加最大堆大小,唯一的方法是將命令行參數(-Xmx1g)傳遞給JVM。我希望可以將它包含在jar清單中,但事實並非如此。什麼是部署Java程序並提供JVM參數的好方法?
所以現在我不得不在包含帶有參數的.jar中包含.bat或.csh。似乎有更好的方法來做到這一點?我不認爲Webstart是一個好的選擇,因爲.jar是爲了在寫出文件的用戶目錄中運行。該應用程序是一個桌面GUI應用程序。
目前我一直在將我的應用程序部署爲.jar文件,因爲每個操作系統的用戶都可以雙擊它。但是,我現在需要增加最大堆大小,唯一的方法是將命令行參數(-Xmx1g)傳遞給JVM。我希望可以將它包含在jar清單中,但事實並非如此。什麼是部署Java程序並提供JVM參數的好方法?
所以現在我不得不在包含帶有參數的.jar中包含.bat或.csh。似乎有更好的方法來做到這一點?我不認爲Webstart是一個好的選擇,因爲.jar是爲了在寫出文件的用戶目錄中運行。該應用程序是一個桌面GUI應用程序。
遺憾的是,不可能在你的罐子裏面的manifest文件指定vmargs,所以你需要像一個解決方法:
第一種解決方案可以輕鬆實現使用批處理或例如一個shell腳本,而對於第二個解決方案有幾種替代品可以b e作爲例如上述和原生的Java Web Start和launch4j是有用的,其是跨平臺Java可執行包裝器。 第三種解決方案可以在某些情況下實現,如果您的代碼與GNU classpath庫兼容,在這種情況下,您可以使用GCJ編譯爲本機二進制文件。
謝謝。我決定使用Launch4j工具爲windows用戶創建一個exe文件。 – pieter3d 2012-04-19 00:53:03
Webstart似乎是實現這一目標的好方法,如果您擁有正確的權限,則不會阻止您讀取/寫入用戶的文件系統。
它還提供了一些有趣的「特徵」,包括:
在你的情況下,你只需要使用下面的語法:
<j2se version="1.7+" java-vm-args="-Xmx1g" href="http://java.sun.com/products/autodl/j2se"/>
看起來像重複http://stackoverflow.com/questions/2848346/how-do-i-set-maximal-jvm-memory-xmx-for-a-jar-file – 2012-04-17 20:42:51
*「我不認爲Webstart是一個不錯的選擇,因爲.jar是爲了運行在用戶的目錄中,它將文件寫出來。「*除了」在用戶目錄中運行「(這是無關緊要的廢話,因爲受信任的JWS應用程序可以讀/寫任何可由其他Java應用程序訪問的文件。)JWS可以用一隻手綁住它後面的所有內容。使用[Java Web Start](http://stackoverflow.com/tags/java-web-start/info)。 – 2012-04-18 03:51:06