簡體   English   中英

將Launch4J配置為僅使用32位JVM

[英]Configure Launch4J to use 32-bit JVM only

我正在使用Launch4J來啟動我的Java應用程序,如果系統上存在x64 JRE,則Launch4J似乎更喜歡它。

不幸的是我的應用程序無法在64位JVM上運行,因為我正在加載32位DLL,這是不可能的,並導致UnsatisfiedLinkError。

有沒有辦法強制/欺騙Launch4J只使用32位JVM?

我有完全相同的問題:如果安裝了32位64位JDK / JRE,則進入64位環境,此工具始終檢測64位版本。 我修補了源代碼(java + C ++)代碼來制作我自己的版本並重新編譯所有代碼。 我添加了一個復選框,將32位JDK / JRE檢測強制轉換為64位窗口環境。 只需下載該版本並將其用作原始版本。

版本: launch4j-3.0.2-win32_Java32bitsDetection

大約一年前我遇到了這個問題,使用Lauch4J來包裝一個需要32位DLL的小型Java程序(swt-win32.dll,因為它發生了)。

我發現如果安裝了32位和64位JVM,Launch4J總是支持64位JVM。 它只有在卸載64位JVM時才有效,這顯然不是一個實用的解決方案。

我發現沒有辦法讓Launch4J更喜歡(並要求)32位JVM,經過大量搜索並在論壇上發布問題。

因此,我評估了大量替代JRE轉換器(我使用此列表: http//www.excelsior-usa.com/articles/java-to-exe.html )。

我最終選擇了Jar2Exe,這是唯一一個擁有我需要的功能的人。 它不是免費的,雖然有一個評估版本,我認為它並不昂貴。

希望這可以幫助!

我前段時間遇到了同樣的問題並分叉了項目,因此用戶界面公開了一個強制應該找到32位JVM的選項,你可以使用以下補丁獲取launch4j 3.0.3的安裝程序:

http://fbergmann.github.io/launch4j/files/SetupLaunch4j_3.0.3.exe

並在這里閱讀更多:

http://frank-fbergmann.blogspot.de/2012/11/launch4j-for-32bit.html
http://fbergmann.github.io/launch4j/

我不知道Launch4J,但你可以通過閱讀System.getProperty("os.arch");獲得有關32/64的信息System.getProperty("os.arch"); 如果遇到64位系統,可以使用一條好消息退出安裝程序,告訴用戶安裝32位JVM。

您可以使用包裝器包裝startUp-Code以向用戶顯示消息框。

public static void main(String[] args]){

   String architecture = System.getProperty("os.arch");
   // Did not test the return value of this property,,but should work
   if("64".equals(architecture)){
       // Show a dialog, or print a logmessage
       System.exit(-1);
   }
   // Start my APP
   com.something.startup.main(args);
}

這是一個老問題,Launch4J自被問及以來已經更新。 現在有一個專用的用戶界面控件,用於選擇要使用哪個版本的JVM。 目前的選項是:

  • 僅限64位
  • 首先是64位,然后是32位
  • 首先是32位,然后是64位
  • 僅限32位

當然,最后一個正是OP所要求的。

Launch4J JVM選擇對話框

如果您不介意在您的應用程序中包含JDK的副本,請嘗試將這些參數(在MyApp.ini中)傳遞給launch4j:

-D32 -Djava.home=d:\MyApp\JDK32 -Djava.ext.dirs=d:\MyApp\JDK32\jre\lib\ext 

還有其他一些可以使用的東西:

如果不打包JRE,可以將Launch4j選項設置為使用“jreOnly”,然后使用名為“%ProgramFiles%”的DOS環境變量,可以找到預期的32位或64位JRE位置,具體取決於您使用的是SysWOW64 32位cmd.exe shell還是常規的64位shell。 然后,您可以將這些選項傳遞給JVM:

-D32 -Djava.home=%ProgramFiles%\Java\JREDIR -Djava.ext.dirs=%ProgramFiles%\Java\JREDIR\lib\ext 

要么

-D32 -Djava.home=%ProgramFiles(x86)%\Java\JREDIR -Djava.ext.dirs=%ProgramFiles(x86)%\Java\JREDIR\lib\ext 

對於像Areca這樣受到攻擊的Launch4j應用程序的任何用戶,並且需要快速解決,請查看啟動應用程序的目錄,您將找到一個完整的java命令行來在名為launch4j的文件中運行程序。記錄 只需使用您喜歡的java vm創建一個bat文件或腳本,然后使用日志中的完整命令行運行它。

配置時必須添加JVM參數。

它在下面的帖子中顯示了如何添加它:

http://www.technimi.com/index.php?do=/group/java/forum/building-an-exe-using-launch4j-for-32-bit-jvm/

暫無
暫無

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

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