Seit dem von Oracle gestarteten Java 7 Update 25 funktioniert unsere Anwendung nicht mehr.Java 7 Update 25 lässt unsere Java Web Start Anwendung mit keiner Protokollierung fehlschlagen
Zunächst erhielten wir eine Warnung über Codebase & Sericity-Tags in der Manifest-Datei fehlt, die wir behoben haben.
Das Problem, das wir mit ist am Ende jetzt, dass wir nur in der Konsole die folgenden Zeilen erhalten:
#### Java Web Start Error:
#### null
Wir bekommen auch einen Anwendungsfehler Dialog mit der Meldung: können nicht die Anwendung starten.
die Schaltfläche Details gibt die folgenden Details in der Ausnahme:
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)
Die entsprechenden Codeteile sind:
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()));
(Die letzte Zeile ist die Zeilennummer 139)
desktop.DesktopProxySelector:
public class DesktopProxySelector extends ProxySelector {
public DesktopProxySelector(ProxySelector defaultSelector) {
URI httpsUri = new CentralConfigurationService().getCentralLocation();
(Die letzte Zeile ist die Zeilennummer 24, an der die Ausnahme auftritt)
Kann uns jemand Hinweise geben (oder besser eine Lösung) für dieses neue Verhalten von Java, verursacht durch dieses "kleine" Update.
Wenn wir die Anwendung direkt aus dem CLI mit java -jar Desktop.jar ausführen, wird die Anwendung Datei ausführen, so hat das Problem eindeutig etwas mit den Änderungen in Java Web Start zu tun.
@trashgod: Der Fehler hat eindeutig etwas mit der Änderung der Berechtigungen in 7u25 zu tun, da die NullPointerException in com.sun.jnlp.JNLPClassLoader.getPermissions auftritt.
einfach zu erklären, was ich denke, passiert (Ich bin ein Kollege von Wouter): desktop.Main eine desktop.DesktopProxySelector (unsere Klasse) instanziiert instanziiert desktop.DesktopProxySelector desktop.configuration.CentralConfigurationService desktop.configuration.CentralConfigurationService instanziiert eine java.net.URI.
In der ersten Zeile der DesktopProxySelector-Init, in der der CentralConfigurationService instanziiert wird, löst die getPermissions-Methode, die von JNLPClassLoader aufgerufen wird, die NullPointerException aus. Beim Laden der CentralConfigurationService-Klasse durch Java Webstart mit dem Abrufen der Berechtigungen für die Klasse ist daher ein Fehler aufgetreten. Könnte das etwas mit der Tatsache zu tun haben, dass eine URI-Klasse instanziiert wird, was zusätzliche Berechtigungen erfordert (eine Verbindung zu einem Remote-URI ist eingerichtet)?
Nun gut, JavaFX ist jetzt in u25 enthalten von dem, was ich gelesen habe, aber ich weiß nicht, ob das _that_ – fge
provozieren konnte Bisher sehe ich nur das Update meine eigenen Fehler offen legen. Siehe auch diese [F & A] (http://stackoverflow.com/q/17210607/230513), [Q & A] (http://stackoverflow.com/q/17204465/230513). – trashgod
Das Problem scheint mit Netzwerkverbindungen in Java Webstart zusammenhängen, mit den Änderungen des Berechtigungssystems in Java 7u25. Sobald wir die Zeile 139 in main auskommentieren, tritt genau die gleiche Ausnahme bei desktop.Main $ 2.run (Main.java:148) auf, das HttpClientFactory.initialize() liest. Es scheint wirklich, dass es einen Fehler im neuen Berechtigungssystem in Java 7u25 gibt, wo Netzwerkverbindungen in Java Webstart betroffen sind. –