我們有一個使用javaws的Java web應用程序。它可以在Java 8更新40下正常運行,但是在Java 8更新51下,jp2launcher.exe只是停止運行,而不啓動應用程序。Java Web Start應用程序在jre8u40下運行,但不是jre8u51
我在C:\ Users \ me \ AppData \ LocalLow \ Sun \ Java \ Deployment \ log中找到了日誌,但它們在j8u40和j8u51之間是完全相同的(當然除了裝入jars命令,jre版本和發佈時間)。
我已經使用進程監視器記錄了這兩個jre版本的啓動。在j8u51下,jp2launcher.exe僅以結果「SUCCESS」退出。比較兩個procmon日誌,我不能挑出任何不尋常的東西。他們都搜索了C:\ Users \ me \ AppData \ LocalLow \ Sun \ Java \ Deployment目錄以及它們各自的C:\ Program Files \ Java \ jre1.8.0_XX \ lib目錄等等,但是隻有j8u51退出。
Windows事件日誌不顯示任何Java相關的東西。
有沒有其他地方可以查找診斷信息?有什麼可能會出錯的建議嗎?
更新:我已經成功運行了帶有set "JAVAWS_VM_ARGS=-Xcheck:jni -XX:-TraceClassLoadingPreorder -XX:+PrintCommandLineFlags -verbose:jni -verbose:class -verbose:gc -XX:+PrintGCDetails -Djava.util.logging.config.file=C:\misc\logging.properties"
的jnlp並記錄了stdout/stderr。它看起來像javaws和jp2launcher登錄到輸出,然後jre8u40和jre8u51版本終止。據推測,在j8u40版本中,它啓動另一個jp2launcher.exe來運行該應用程序。
比較兩個輸出日誌沒有任何意義。這些類以幾乎相同的順序加載,大部分是相同的類,除了一些差異之外,這些差異只是使用更新的類才能解釋。
進一步更新:我已經能夠使用java.exe直接啓動應用程序,通過從服務器安裝獲取客戶端文件並將它們解壓縮。該應用程序本身在jre8u51下運行得很好,所以問題肯定在於javaws本身。
update3:清除緩存並不能解決問題。這個問題發生在不同的機器上,即使是全新的Java安裝。
update4:作爲一個實驗,我剛剛在Ubuntu Linux下嘗試過。我們的產品在技術上不支持Linux,但我認爲我會嘗試。碰巧,行爲是相同的!在jre8u40下應用程序啓動,並且在jre8u51下它不會!
5:事實證明問題也發生在u45下,這是在u40之後立即更新。所以,這個原因似乎是在u45而不是u51中改變的。
也許它是jnlp文件中的內存大小。嘗試一下。 –
沒有運氣。堆最大值設置爲1024mb;設置初始堆並沒有幫助,也沒有刪除所有堆參數並使用默認值,也沒有設置最大值爲32mb。設置爲8mb導致內存不足錯誤,所以至少它是尊重這些設置... – Len
如果您將show console設置爲java設置並雙擊jnlp文件,您將無法獲得控制檯輸出? –