2013-06-21 25 views
13

由於Oracle推出的Java 7更新25,我們的應用程序不再起作用。Java 7更新25使我們的Java Web Start應用程序失敗,無日誌記錄

最初我們對代碼庫&發出了一些警告,我們修復了Manifest文件中缺少的安全標籤。

我們現在結了的問題是,在控制檯中,我們只得到了下面幾行:

#### Java Web Start Error: 
#### null 

我們還可以得到該消息的應用程序錯誤對話框:無法啓動應用程序

詳細信息按鈕給出了異常以下細節:

java.lang.NullPointerException 
    at com.sun.jnlp.JNLPClassLoader.getPermissions(Unknown Source) 
    at java.security.SecureClassLoader.getProtectionDomain(SecureClassLoader.java:206) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at desktop.DesktopProxySelector.<init>(DesktopProxySelector.java:24)  <- code smippet below 
    at desktop.Main.main(Main.java:139)          <- code smippet below 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.sun.javaws.Launcher.executeApplication(Unknown Source) 
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source) 
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) 
    at com.sun.javaws.Launcher.run(Unknown Source) 
    at java.lang.Thread.run(Thread.java:724) 

相關的代碼部分是:

Desktop.Main.main 

/** 
* Main method, starts the application 
*/ 
public static void main(String[] args) { 
    System.setProperty("java.net.useSystemProxies", "true"); 

    //Logger.getLogger("httpclient.wire.header.level").setLevel(Level.FINEST); 
    //Logger.getLogger("org.apache.commons.httpclient.level").setLevel(Level.FINEST); 
    java.net.ProxySelector.setDefault(new DesktopProxySelector(java.net.ProxySelector.getDefault())); 

(最後一行是行號139)

desktop.DesktopProxySelector: 

public class DesktopProxySelector extends ProxySelector { 

    public DesktopProxySelector(ProxySelector defaultSelector) { 
    URI httpsUri = new CentralConfigurationService().getCentralLocation(); 

(最後一行是發生異常的行號24)

有人可以給我們一些線索提示(或更好的解決方案),這種由'小'更新引起的java新行爲。

當我們使用java -jar Desktop.jar直接從cli運行應用程序時,應用程序將運行文件,所以這個問題顯然與java web start中的更改有關。

@trashgod:錯誤顯然與7u25中的權限更改有關,因爲NullPointerException發生在com.sun.jnlp.JNLPClassLoader.getPermissions中。

只是爲了解釋什麼,我認爲會發生(我是沃特的同事): desktop.Main實例化一個desktop.DesktopProxySelector(我們班), desktop.DesktopProxySelector實例desktop.configuration.CentralConfigurationService desktop.configuration.CentralConfigurationService實例化一個java.net.URI。

在實例化CentralConfigurationService的DesktopProxySelector init的第一行中,由JNLPClassLoader調用的getPermissions方法引發NullPointerException。所以事情錯了,而與得到的權限爲類加載在Java在webstart的CentralConfigurationService類。莫非是有什麼關係的事實,URI類實例化,這需要額外的權限(到遠程的URI連接設置)?

+0

很好,JavaFX現在已包含在u25中,但我不知道這是否會激起_that_ – fge

+0

到目前爲止,我只看到更新暴露了我自己的錯誤。另請參閱這些相關的[Q&A](http://stackoverflow.com/q/17210607/230513),[Q&A](http://stackoverflow.com/q/17204465/230513)。 – trashgod

+0

這個問題似乎與java webstart中的網絡連接有關,並且對java 7u25中的權限系統進行了更改。只要我們註釋掉main中的第139行,在desktop.Main $ 2.run(Main.java:148)中就會發生完全相同的異常,它讀取HttpClientFactory.initialize();.所以在java 7u25的新權限系統中,似乎確實存在一個錯誤,其中java webstart中涉及到網絡連接。 –

回答

6

最終問題解決了。 此問題是由主MANIFEST.MF文件中包含的jar文件與launch.jnlp中提到的jar文件不匹配造成的。

Apperently現在需要有也將用於存在於launch.jnlp文件中的所有jar文件。

(在過去,它決定在水槽手動保存這個文件,這顯然並不總是保持在propper方式。現在,這個過程是自動的,所以這個問題不應該再發生在我們身上。)

+1

這似乎是一個壞主意 - 要求.jar文件和jnlp文件中的重複信息創建錯誤機會而不添加任何安全性(因爲您控制兩者的內容) – ddyer

+0

這對我來說是由netbeans自動發生的。可能與過去的項目設置有關。 – Wouter

+0

@Wouter,我也使用Netbeans來編譯我的.jnlp應用程序。我也收到這個錯誤。如何將jar文件添加到MANIFEST.MF文件? – ryvantage

相關問題