O Java 7 update 25 faz com que nosso aplicativo java web start falhe sem registro

Desde que o java 7 update 25 lançado pela Oracle, nosso aplicativo não funciona mais.

Inicialmente, recebemos alguns avisos sobre tags de codebase & sercurity ausentes no arquivo de manifesto, que corrigimos.

O problema com o qual acabamos agora é que no Console só obtemos as seguintes linhas:

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

Também obtemos uma caixa de diálogo Erro do aplicativo com a mensagem:Não é possível iniciar o aplicativo.

O botão de detalhes fornece os seguintes detalhes na Exceção:

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)

As partes relevantes do código são:

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()));

(A última linha é o número da linha 139)

desktop.DesktopProxySelector:

public class DesktopProxySelector extends ProxySelector {

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

(A última linha é o número da linha 24 onde a exceção ocorre)

Alguém pode nos dar algumas dicas dicas (ou melhor, uma solução) para este novo comportamento de java causado por esta atualização 'menor'.

Quando executamos o aplicativo direto do cli usando java -jar Desktop.jar, o aplicativo executará o arquivo, então o problema claramente tem algo a ver com as mudanças no java web start.

@trashgod: o erro claramente tem algo a ver com a mudança das Permissões no 7u25, já que o NullPointerException ocorre em com.sun.jnlp.JNLPClassLoader.getPermissions.

Apenas para explicar o que eu penso que acontece (eu sou um colega de Wouter): desktop.Principal instancia um desktop.DesktopProxySelector (nossa classe), desktop.DesktopProxySelector instancia desktop.configuration.CentralConfigurationService desktop.configuration.CentralConfigurationService instancia um java.net.URI .

Na primeira linha do DesktopProxySelector init em que o CentralConfigurationService é instanciado, o método getPermissions, chamado pelo JNLPClassLoader, lança o NullPointerException. Então, algo está errado ao carregar a classe CentralConfigurationService pelo java webstart com as permissões para a classe. Isso poderia ter alguma coisa a ver com o fato de que uma classe URI é instanciada, o que requer permissões extras (uma conexão com um uri remoto é configurada)?

questionAnswers(1)

yourAnswerToTheQuestion