2012-08-24 66 views
2

我有一個現有的Java程序,我給一些....不那麼技術上傾向於我的客戶端。他們使用Linux和Windows的組合,並且很少有蘋果機器,這就是爲什麼我選擇Java來開發程序的原因。問題在於,他們在嘗試啓動程序時不斷打電話給我,因爲他們沒有JRE已安裝。有沒有辦法:在系統上檢查JRE

  1. 導入一個lib,會給我一些類型的命令來檢查。
  2. 添加一些東西到程序中檢查JRE。 或(我真的不想這樣做,因爲我首先選擇java的原因)
  3. 用C++寫一些將檢查JRE的東西。

我的目標:

  1. 檢查機器
  2. 上安裝JRE如果是:啓動程序
  3. 如果沒有:彈出一個消息,說「沒有Java環境中發現,從Java網站上下載」。然後我會直接將它們帶到他們點擊「運行」的鏈接並安裝。

//我會做類似

if (JRE.exists()) // maybe use a pathname that would only show up if a JRE is installed 
{ 
    // launch program 
} 
else 
{ 
    // launch Java installer 
} 
system.exit(0); 

我知道這將是真的很難在Java(因爲你不能運行Java程序沒有JRE),但我寧願保持這種普遍的,如果在所有可能。

如果沒有簡單的解決方法,我只會創建一個read-me文件,該文件包含指向您的系統上的JRE的Java網站的鏈接,但用戶必須執行的最少工作量更好。

+2

不能使用Java進行檢查,如果Java的退出。在綁定Java程序以創建批處理之前,您需要做一些事情。 – jddsantaella

+0

確實,運行代碼Java必須已經存在。 – enkor

回答

0

你爲什麼不只是創建批處理和bash文件,這樣做,並讓你的客戶運行一個或OS上的其他依賴性

+0

,因爲我不知道bash :-( –

+0

http://en.wikipedia.org/wiki/Bash_(Unix_shell) – Sindico

+0

是的......那真的沒有給我太多的印象 –

1

我會建議你使用Java安裝喜歡的IzPack或其他這樣的免費工具。使用其中的一個你可以創建一個安裝程序,並生成一個本地啓動器。這可以進行配置,比如它搜索Java,如果找不到,它可以幫助用戶安裝它。

有些開發者也使用JSmooth或Launch4J作爲本機啓動器。

+0

我看着這些,但他們都需要XML文檔我沒有任何XML體驗,任何想法從哪裏開始? –

+0

任何Java IDE將幫助您編輯xml文件。所有這些工具都有示例,有些還有教程。 –

0

如果JRE安裝在系統上,則在Windows和Linux上都設置JAVA_HOME環境變量,並且它包含JRE的路徑。你可以檢查這個變量是否設置並相應地繼續。

+1

hmmm ....所以我用if( !getenv(「JAVA_HOME」.equals(NULL))){啓動程序}其他{/ /啓動瀏覽器來安裝位置} –

+0

亞應該工作 – ManojGumber

+0

授予我必須找到C++等於那,然後只有足夠的Windows和linux。我仍然必須找到一種方法來做osX –

1

檢查JRE在系統

使用deployJava.jsJava Web Start info.頁提及。

..設計以確保在提供指向JWS應用程序的鏈接之前安裝適當的Java最低版本。或啓動一個小程序。

如果是富客戶端桌面應用程序。 (例如小應用程序或框架),請使用Java Web Start進行部署。

+0

這不是一個小程序,它只是一個標準的Java應用程序 –

+0

我從來沒有想過它是一個應用程序等。但是主類是否顯示了「JFrame」? JWS最初是用於啓動基於框架的**桌面應用程序。**另外,您可以通過提供應用程序的更多詳細信息來幫助我們提供幫助。 –

+0

我有一個swing(JFrame)程序,充當客戶端與我的服務器交互以存儲矢量數據。我有一個消息對象在客戶端和服務器之間傳遞,允許客戶端修改向量數據。我查閱了有關JWS的信息,我喜歡這個概念,但仍然不確定如何實現它。我有一個將IP地址鏈接到地址的no-ip帳戶。這實現了我想要的所有東西(確保Java是最新的並允許更新程序),但我可以使用一個示例來演示如何將我的代碼轉換爲JWS應用程序。 –

1

如果您不能使用Java Web Start,儘管我建議使用它,但您可以編寫簡單的腳本來檢測Java。

對於Windows(蝙蝠):

if not "%JAVA_HOME%" == "" (
    "%JAVA_HOME%\bin\javaw.exe" -jar YourApp.jar 
) else (
    start http://java.com/download/ 
) 

如果JAVA_HOME環境變量定義,那麼javaw.exe將與您的應用程序的jar文件啓動。 javaw.exe可執行文件使用窗口子系統,因此它在沒有控制檯窗口的情況下運行。

如果沒有設置JAVA_HOME,它將在默認瀏覽器中打開Java下載頁面。

如需更多選項,您可以使用JScript;使用它,您可以向用戶顯示未安裝Java的警告,然後打開瀏覽器進行下載。

對於Linux(.SH):

if [ "$JAVA_HOME" != "" ]; then 
    $JAVA_HOME/bin/java -jar YourApp.jar & 
else 
    echo JAVA_HOME is not set: Java Runtime Environment (JRE) 
    echo is not installed your system. 
    echo Either install it from http://java.com/download/ 
    echo or set JAVA_HOME environment variable. 
fi 
+0

蘋果的mac操作系統怎麼樣? –

+0

同樣的腳本(.sh - bash)應該可以在MacOS上工作,我從來沒有用過它,所以我不能確定和我無法檢查它。 –