2013-07-05 15 views
6

Dopo l'ultimo JRE (1.7.0_25) è stata aggiornata la mia applicazione non verrà avviata da webstart come era solito . Non ho distribuito file jar più recenti o modificato il file JNLP sul server Web, ma non posso avviare l'app da webstart. Funziona bene dall'IDE e anche dall'esecuzione locale jarjava.lang.NoClassDefFoundError: Impossibile inizializzare la classe sun.security.ec.SunEC (si è verificato dopo il recente aggiornamento JRE)

Ho provato a disabilitare tutti i certificati di controllo ecc nella scheda avanzata del pannello di controllo ma l'errore rimane, non sono sicuro se questo è correlato alla nuova sicurezza impostazione nell'ultimo JRE o se qualcos'altro è cambiato (forse sul server web?) Non controllo il server web Ho solo una pagina in cui l'app è pubblicata e ho accesso a un percorso di unità per i file jar, permessi sono corretti per le posizioni di guida ecc. Ora sono perso per quanto riguarda il problema! Ho provato a dimettermi i vasi e a verificare la firma pure

Apprezzo qualsiasi aiuto che la gente possa dare! di errore completo è qui sotto:

  java.lang.NoClassDefFoundError: Could not initialize class sun.security.ec.SunEC 
       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
       at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
       at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
       at java.lang.reflect.Constructor.newInstance(Unknown Source) 
       at java.lang.Class.newInstance(Unknown Source) 
       at sun.security.jca.ProviderConfig$2.run(Unknown Source) 
       at sun.security.jca.ProviderConfig$2.run(Unknown Source) 
       at java.security.AccessController.doPrivileged(Native Method) 
       at sun.security.jca.ProviderConfig.doLoadProvider(Unknown Source) 
       at sun.security.jca.ProviderConfig.getProvider(Unknown Source) 
       at sun.security.jca.ProviderList.getProvider(Unknown Source) 
       at sun.security.jca.ProviderList.getService(Unknown Source) 
       at sun.security.jca.GetInstance.getInstance(Unknown Source) 
       at java.security.Security.getImpl(Unknown Source) 
       at java.security.AlgorithmParameters.getInstance(Unknown Source) 
       at sun.security.x509.AlgorithmId.decodeParams(Unknown Source) 
       at sun.security.x509.AlgorithmId.<init>(Unknown Source) 
       at sun.security.x509.AlgorithmId.parse(Unknown Source) 
       at sun.security.x509.X509Key.parse(Unknown Source) 
       at sun.security.x509.CertificateX509Key.<init>(Unknown Source) 
       at sun.security.x509.X509CertInfo.parse(Unknown Source) 
       at sun.security.x509.X509CertInfo.<init>(Unknown Source) 
       at sun.security.x509.X509CertImpl.parse(Unknown Source) 
       at sun.security.x509.X509CertImpl.<init>(Unknown Source) 
       at sun.security.provider.X509Factory.engineGenerateCertificate(Unknown Source) 
       at java.security.cert.CertificateFactory.generateCertificate(Unknown Source) 
       at sun.security.provider.JavaKeyStore.engineLoad(Unknown Source) 
       at sun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source) 
       at java.security.KeyStore.load(Unknown Source) 
       at com.sun.deploy.security.RootCertStore$1.run(Unknown Source) 
       at java.security.AccessController.doPrivileged(Native Method) 
       at com.sun.deploy.security.RootCertStore.loadCertStore(Unknown Source) 
       at com.sun.deploy.security.RootCertStore.load(Unknown Source) 
       at com.sun.deploy.security.RootCertStore.load(Unknown Source) 
       at com.sun.deploy.security.ImmutableCertStore.load(Unknown Source) 
       at com.sun.deploy.security.LazyRootStore.loadJREStore(Unknown Source) 
       at com.sun.deploy.security.LazyRootStore.getTrustAnchors(Unknown Source) 
       at com.sun.deploy.security.TrustDecider.getValidationState(Unknown Source) 
       at com.sun.deploy.security.TrustDecider.validateChain(Unknown Source) 
       at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source) 
       at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Source) 
       at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source) 
       at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source) 
       at com.sun.javaws.Launcher.prepareResources(Unknown Source) 
       at com.sun.javaws.Launcher.prepareAllResources(Unknown Source) 
       at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) 
       at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) 
       at com.sun.javaws.Launcher.launch(Unknown Source) 
       at com.sun.javaws.Main.launchApp(Unknown Source) 
       at com.sun.javaws.Main.continueInSecureThread(Unknown Source) 
       at com.sun.javaws.Main.access$000(Unknown Source) 
       at com.sun.javaws.Main$1.run(Unknown Source) 
       at java.lang.Thread.run(Unknown Source) 
+0

Prova a cercare il [bug DB] (http://bugs.sun.com/) e se non trovi nulla di simile, crea un nuovo rapporto. Guarda cosa Oracle ha da dire in merito. –

+0

OK, ho trovato il problema alla fine. Un'altra applicazione che usiamo ha un aggiornamento che coincide con l'aggiornamento di JRE; l'app di questo fornitore esterno richiede alcune autorizzazioni aggiuntive e quindi ha sovrascritto il mio file java.policy (l'originale era presente con un'estensione .bak quando ho controllato la directory), quindi ho semplicemente rinominato il file della politica per controllare e tutto sta funzionando di nuovo. Nel file mancava quanto segue: grant codeBase "file: $ {{java.ext.dirs}}/*" { \t permesso java.security.AllPermission; }; –

risposta

1

Anche dopo il vostro segno vostro vaso come mostrato jar signing non sarà in grado di eseguire l'applet nel browser. una volta terminato con la firma, è necessario aggiungere il permesso di accesso per la classe sun.security.ec.SunEC in java.polcy del jdk/jre attivo utilizzando policytool.exe. assicurati di eseguire policytool.exe con esecuzione come amministratore in modo che ti sia permesso di modificare il file java.policy. è necessario aggiungere una voce per il codice di concessioneBase ": $ {{java.ext.dirs}}/*" {permission java.security.AllPermission; }; come suggerito da Matt C.

Problemi correlati