2009-05-30 37 views
25

我已經看到許多產品與JDK捆綁在一起,我不知道是否有一種方法可以通過簡單地將內容解壓縮到目錄來安裝JDK,因此在添加/刪除程序中沒有創建圖標,沒有註冊表項等。在Windows上手動安裝Java?

同樣在這種情況下: 我們如何配置瀏覽器的Java插件? 我們如何配置設置,如通過Java的控制面板條目看到的?

回答

14

是的,您可以創建一個壓縮的JDK,將其解壓縮到目標機器上,然後從該目錄運行java,javac等。

創建這種zip文件的最簡單方法是在一臺機器上安裝JDK,然後壓縮JDK目錄的內容。在某些情況下,我們需要精確控制部署中將使用的Java配置。在這種情況下,我們的腳本只是將JAVA_HOME(或等價物)指向我們內部捆綁的JDK,而不是依靠系統管理員在到達之前安裝我們需要的東西。

就整合瀏覽器而言,這可能會有點問題。簡短的答案是否定的,如果沒有的一些安裝程序,您無法直接與瀏覽器集成。

+0

正確。我從來沒有任何問題只是複製JDK目錄並設置JAVA_HOME。 – 2009-05-31 14:45:21

3

真的,不,至少如果你想從Windows而不是從cygwin使用它。 Windows依賴於註冊表太多;您可以模擬必要的註冊表更新,但將文件移動到正確位置並更新註冊表的軟件稱爲「安裝程序」;你只是在重新創建安裝程序。

3

我相信這至少在早期版本的Java中是可行的 - 我不知道它是否仍然存在。

大多數註冊表項都用於瀏覽器插件等內容,正如您在問題中提到的那樣。如果你只是希望能夠運行Java(例如從一個批處理文件),這是一回事 - 但真的安裝這是一個不同的問題。即使你只是想運行它,你也需要小心,始終明確地使用你打算使用的那個,而不是偶爾使用已安裝的應用程序。

你的實際使用情況是?你真的需要一個瀏覽器插件嗎?你對哪種配置感興趣?很多控制面板配置都是爲了更新和瀏覽器集成。使用命令行選項可以控制許多其他方面來設置特定的系統屬性。

2

如果你只是想提供一個JVM與你的應用程序是好的,但比我不會推薦。

4

您可以使用SysInternals RegMon和FileMon(現在由MS擁有和分配)來查看究竟是 Java安裝程序修改了哪些內容。我相信會有一些你想要創建的註冊條目。例如,WISE安裝程序等產品也使用這種方式來重新打包產品安裝(例如MSI)。

因爲也有安裝程序做了一些動態決定,這可能會影響被安裝什麼(例如XP V.S. W2K3服務器上),請小心。關於安裝的代碼頁,我被這一次咬了。我不記得確切的細節,但效果是我的嵌入式JRE + JDK(僅限法定可再發行部分)中缺少代碼頁文件。這在我的代碼中造成了一個非常奇怪和看似無意義的運行時錯誤。不言而喻,這同樣適用於Server v.s.客戶端JVM DLL。

1

如果您只想擁有JDK(JRE)文件,則可以在sandboxie內運行安裝程序。一旦安裝在沙箱中,只需複製c:\sandbox中的文件即可完成。

我正在使用它來編譯和運行遺留的java應用程序,這些應用程序無法輕鬆遷移到較新版本的java。我可以將Eclispe指向這個JDK,並告訴它符合Java 1.3。

1

只需從Oracle下載頁面下載Java服務器的Windows服務器版本即可。自行設置JAVA_HOME和PATH變量。

29

根據this,我創建了一個batch script來自動構建jdk歸檔。

鏈接的主要部件:

  • 創建工作JDK目錄:從Oracle( 「C:\ JDK」 在這種情況下)
  • 下載最新版本的JDK(例如「JDK 「)
  • 下載並安裝7-zip(如果您不是管理員,請下載7-zip便攜版)
  • 使用7-zip將」jdk- [6 -7] u?-windows-i586.exe「在目錄」C:\ JDK「中
  • 在命令殼(cmd.exe的)執行以下操作:
    1. 改變目錄的目錄C:\ JDK.rsrc \ JAVA_CAB10
    2. 執行命令:extrac32 111
  • 解壓C: \ JDK.rsrc \ JAVA_CAB10 \ tools.zip 7-拉鍊
  • 在命令殼(cmd.exe的)執行以下操作:
    1. 變化直接ory to C:\ JDK.rsrc \ JAVA_CAB10 \ tools \
    2. 執行命令:for/r%x in(* .pack)do。\ bin \ unpack200 -r「%x」「%〜dx%〜px %〜nx.jar「(這將所有包文件轉換成JAR)
  • 複製整個目錄和C的所有子目錄:\ JDK.rsrc \ JAVA_CAB10 \工具」,你希望你的JDK是和設置手動將JAVA_HOME和PATH指向您的JDK目錄及其BIN子目錄。