2014-07-02 31 views
0

夥計們,Java小程序部署到多個JRE

我有以下的挑戰,我希望部署依賴於Java 1.8的語法爲數百個客戶端工作站已經在運行一個老的Java小程序依賴於Java 1.5中一個Applet

問題是,我沒有訪問Java 1.5 Applet代碼,甚至沒有訪問它的啓動器Html頁面。唉,這個啓動器的Html頁面依賴於Applet標籤,因此會嘗試加載工作站上安裝的最新的Java插件版本。 我不喜歡依賴任何虛擬化解決方案,我必須以Java Applet的形式運行,如果您認爲它可以提供幫助,也許可以考慮使用Web Start。

我的問題是: 是否有本地工作站配置/ hack告訴瀏覽器在呈現Applet標籤時加載特定(舊)Java版本? 否則,有沒有辦法使用Java Web Start來解決這個問題,並以某種方式運行我的新Java Applet而不更新「官方」工作站Java插件版本?

+0

爲什麼你想使用舊的JRE?舊的小程序將與新的JRE完美結合。 (顯然這對於​​新的applet和舊的JRE是不正確的)。 – AlexR

+0

由於舊Applets未簽名且與較新Java版本設置的新安全標準不兼容。 – lyaffe

回答

0

好你問幾個問題,這裏有一些答案:

  1. 這是不可能與 「下」 的JRE/JDK 1.7一樣,1.6或1.5中運行Java 1.8代碼。然而,也可以使用其他方法 - 您可以使用Java 1.8運行java 1.5 applet ...
  2. 您不需要破解工作站 - 如果您只安裝一個java版本(即使它是較舊的版本)並正確安裝/配置該版本將用於啓動您的小程序
  3. 使用下一代插件(從6u10開始引入),可以使用jnlp文件啓動小程序。 jnlp syntax允許你指定一個特定的java版本,如果沒有安裝,它可以/可以下載。一個例子是:

    < J2SE版本= 「1.6.0_10」 HREF = 「http://java.sun.com/products/autodl/j2se」/ >

一些總體思路,如果我不完全瞭解你,請糾正我:

你想要兩個小程序都運行,對不對? 對於這個工作,你將不得不在某些時候改變一些東西。可能性(我的回答無視安全性 - 從這個角度來看,總是使用最新的java版本):

  1. 安裝最新的Java 1.8並簽署舊的小程序。對小程序進行簽名不需要源代碼 - 只需訪問您的網頁,運行小程序,然後搜索java緩存中的applet.jar。用官方證書籤名並將其部署到您的服務器上。 (此外,這可能還需要添加一些Manifest屬性)
  2. 將您的新applet降級到java 1.7或1.6並安裝較舊的Java,如1.7.0_17。 Until Java 1.7.0_21簽名不是強制性的。如果您看到針對Java 6的baseline,它將是版本1.6.0_43。
  3. 理論上你可以使用jnlp來定義一個應該用來運行applet的精確java版本。問題是,它是從1.6.0_10開始引入的 - 因此,您的1.5 java不足以滿足要求。如果可以使用稍微更新的java來運行舊的applet,並將jnlp文件添加到您的網頁,那麼它可以工作。爲此,您需要:安裝兩個較新的java版本:一個1.6.0_10或更高版本(直到1.6.0_43或1。7_17)和最新的1.8.0_X。然後在jnlp文件中定義你的確切的1.6/1.7 java。當訪問您的網頁時,1.8插件將會啓動,它會檢測到需要較舊的Java版本,然後再開始舊版本。對於你的較新的applet,將使用最新的java ...