有沒有辦法阻止Java安裝例程(例如jdk-7u1-windows-i586.exe)拷貝java.exe進入C:\Windows\system32
目錄?如何防止在Windows的system32中安裝java.exe?
我必須在客戶端的筆記本電腦上安裝我的軟件,我不想破壞已安裝在機器上的其他Java應用程序。換句話說,我想安裝一個專用JRE,它只被我的軟件使用。
現在,我將已經安裝的JRE從我的電腦複製到客戶端的機器上。
有沒有辦法阻止Java安裝例程(例如jdk-7u1-windows-i586.exe)拷貝java.exe進入C:\Windows\system32
目錄?如何防止在Windows的system32中安裝java.exe?
我必須在客戶端的筆記本電腦上安裝我的軟件,我不想破壞已安裝在機器上的其他Java應用程序。換句話說,我想安裝一個專用JRE,它只被我的軟件使用。
現在,我將已經安裝的JRE從我的電腦複製到客戶端的機器上。
你可以只提供JRE你想在你的軟件使用和:
JAVA_HOME
變量(例如..\jre1.5.0_22\bin\java <your_java_main>
)這可以在* .bat文件中完成。
運行您創建的* .bat文件後,所有其他Java版本都將被忽略,並且該計算機上安裝或將要安裝的版本都無關緊要。
這隻會確保*我的應用程序*使用正確的JRE。如果未設置JAVA_HOME並依賴通常位於_system32_中的默認JRE,那麼已安裝在機器上的其他應用程序可能會中斷。但是,如果我安裝了新的JRE(可能是測試版),** java.exe **將被複制到system32中,因此其他Java應用程序可能會使用beta版JRE。那就是問題所在。 – rmoestl
如果我沒有弄錯,只有在使用JDK而不是JRE時才需要'JAVA_HOME'環境變量。 JRE自動使用系統屬性'java.home'從Windows註冊表中獲取Java默認路徑 –
僅在cmd會話期間使用'SET'完成綁定更改,因此它不會影響其他應用程序。您可以通過在批處理文件末尾調用'exit'來確保用戶不會嘗試從同一個cmd會話中啓動任何其他應用程序。 – vaughandroid
我昨天發現在Windows上有一個Java版本的問題,因爲你知道保持java最新是最關鍵的,特別是位於Windows系統32或syswow64文件夾的Internet Explorer使用的JRE。
您可以在C:驅動器中執行java搜索,並查看它找到的各種可執行文件,以確定這種情況是否適用於特定系統。
做一些研究,我發現,當的Java更新運行時,它僅更新安裝在JAVA家中的文件,通常位於程序文件後,但它不更新位於Windows系統中的文件文件夾。因此,由於系統文件夾位於默認系統PATH中,Internet Explorer的使用繼續使用舊版本的JAVA文件(java.exe,javaw.exe,javaws.exe)
解決方案是到卸載java使用控制面板卸載程序功能,下載最新版本並再次安裝。
乾杯! Fernando
我不認爲這是事實。 Windows System32目錄只包含java.exe和其他java啓動程序。實際的VM(jvm.dll)和支持的庫/類位於由Java更新程序更新的JDK/JRE目錄中。 –
我發現最新的JDK仍然沒有針對註冊表編寫正確的代碼。 問題是如果計算機沒有JRE,JDK不會在註冊表中正確註冊JRE。
對於那些安裝JDK 1.7u72只要添加軟件\ JavaSoft \ Java運行時環境爲錯誤消息指示。然後添加值爲1.7的CurrentVersion的字符串條目。 然後添加Software \ JavaSoft \ Java Runtime Environment \ 1.7,並放入一個值爲「C:\ Program Files \ Java \ jre7」的JavaHome字符串條目。 JRE將正常運行。如果你使用註冊表,那麼寫下正確的代碼,否則不要使用註冊表!
我最近升級到Java 8和system32下的Java版本是發現了這個問題還是Java 7中它停止,你甚至運行的版本,因爲它抱怨註冊表項
U:\>java -version
Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
has value '1.8', but '1.7' is required.
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.
執行以下向我指出到罪魁禍首:
U:\>where java
C:\Windows\System32\java.exe
C:\Program Files\Java\jdk1.8.0_45\bin\java.exe
我解決了這個問題,只是刪除了system32下的java!我不確定這會有什麼後果。
所有你需要做的就是去控制面板 - >程序卸載程序。卸載舊的Java更新並保留最新的Java更新和Java開發工具包更新。您的最新Java更新和Java開發工具包更新應具有相同的編號。
我認爲Java安裝程序總是將自己安裝到一個獨立的目錄中。沒有?我認爲,只需將安裝目錄複製到另一臺計算機即可以xcopy方式安裝Java。 – selbie
@selbie:它可以以這種方式安裝,但這不是默認安裝程序所做的:它*將* JRE安裝到它自己的目錄,而* *也將* java.exe複製到'system32'目錄。 –
@selbie:安裝程序還創建一些註冊表項。我沒有找到適用於Windows的簡單** zip存檔**,可以用來代替安裝程序。 – rmoestl