我们周期性地遇到了阻止applet运行的问题,进程javaw.exe似乎被locking,多次杀死它们解锁applet。 在跟踪文件中,我发现这个(我们有jdk 1.6_35,applet被一个j2ee web应用程序使用):
**server running at port: 50091 basic: unique id: JavaControlPanel basic: server port at: 49187 basic: getSingleInstanceFilename: C:\Users\amoriconi\AppData\LocalLow\Sun\Java\Deployment\tmp\si\JavaControlPanel-x86_49187 basic: file should be removed: C:\Users\amoriconi\AppData\LocalLow\Sun\Java\Deployment\tmp\si\JavaControlPanel-x86_50091 basic: waiting connection Exception in thread "main" java.lang.ExceptionInInitializerError 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.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at sun.security.jca.ProviderConfig$3.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$ServiceList.tryGet(Unknown Source) at sun.security.jca.ProviderList$ServiceList.access$200(Unknown Source) at sun.security.jca.ProviderList$ServiceList$1.hasNext(Unknown Source) at sun.security.jca.GetInstance.getInstance(Unknown Source) at java.security.SecureRandom.getInstance(Unknown Source) at java.security.SecureRandom.getDefaultPRNG(Unknown Source) at java.security.SecureRandom.<init>(Unknown Source) at com.sun.deploy.services.WPlatformService.getSecureRandom(Unknown Source) at com.sun.deploy.si.SingleInstanceImpl.getSecureRandom(Unknown Source) at com.sun.deploy.si.SingleInstanceImpl.access$100(Unknown Source) at com.sun.deploy.si.SingleInstanceImpl$SingleInstanceServer$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at com.sun.deploy.si.SingleInstanceImpl$SingleInstanceServer.createSingleInstanceFile(Unknown Source) at com.sun.deploy.si.SingleInstanceImpl$SingleInstanceServer.<init>(Unknown Source) at com.sun.deploy.si.SingleInstanceImpl.addSingleInstanceListener(Unknown Source) at com.sun.deploy.panel.ControlPanel.<init>(Unknown Source) at com.sun.deploy.panel.ControlPanel.main(Unknown Source) Caused by: java.lang.RuntimeException: java.security.NoSuchAlgorithmException: class configured for SecureRandom(provider: SUN)cannot be found. at java.security.SecureRandom.getDefaultPRNG(Unknown Source) at java.security.SecureRandom.<init>(Unknown Source) at com.sun.crypto.provider.SunJCE.<clinit>(DashoA13*..) ... 28 more Caused by: java.security.NoSuchAlgorithmException: class configured for SecureRandom(provider: SUN)cannot be found. at java.security.Provider$Service.getImplClass(Unknown Source) at java.security.Provider$Service.newInstance(Unknown Source) at sun.security.jca.GetInstance.getInstance(Unknown Source) at sun.security.jca.GetInstance.getInstance(Unknown Source) at java.security.SecureRandom.getInstance(Unknown Source) ... 31 more Caused by: java.lang.ClassNotFoundException: com/sun/deploy/security/WSecureRandom at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) ... 36 more**
由于某种原因,这个问题起源于Java的隐藏更新,安装jdk 7u45,然后解决一段时间解决问题…..我要疯了….
这是因为在JRE的新版本(7u45-b18)中对applet施加了更多的安全检查。
http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html#newft
在旧的JRE上执行或者执行与安全有关的更改是很好的。