2013-07-05 41 views
6

Sau khi JRE mới nhất (1.7.0_25) được cập nhật, ứng dụng của tôi sẽ không khởi động từ webstart như trước đây . Tôi đã không triển khai bất kỳ tệp jar mới hơn hoặc thay đổi tệp JNLP trên máy chủ web nhưng tôi không thể khởi chạy ứng dụng từ webstart. Nó chạy tốt từ IDE và cũng từ việc thực hiện jar cục bộjava.lang.NoClassDefFoundError: Không thể khởi tạo lớp sun.security.ec.SunEC (xảy ra sau khi cập nhật JRE gần đây)

Tôi đã cố gắng vô hiệu hóa tất cả kiểm tra chứng chỉ v.v. trong tab nâng cao của bảng điều khiển nhưng lỗi vẫn còn, tôi không chắc liệu điều này có liên quan đến bảo mật mới hay không thiết lập trong JRE mới nhất hoặc nếu một cái gì đó khác đã thay đổi (có thể trên máy chủ web?) Tôi không kiểm soát máy chủ web Tôi chỉ có một trang nơi ứng dụng được xuất bản và có quyền truy cập vào vị trí ổ đĩa cho tệp jar, quyền là chính xác cho các vị trí ổ đĩa vv Tôi bây giờ bị mất như những gì vấn đề là! Tôi đã cố gắng từ chức các lọ và xác minh chữ ký cũng như

Tôi đánh giá cao mọi trợ giúp mà dân gian có thể cung cấp! đầy đủ lỗi dưới đây:

  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

Hãy thử tìm kiếm [lỗi DB] (http://bugs.sun.com/) và nếu bạn không tìm thấy gì tương tự, hãy nâng cao báo cáo mới. Xem những gì Oracle đã nói về vấn đề này. –

+0

OK, tôi đã tìm thấy sự cố ở cuối. Một ứng dụng khác mà chúng tôi sử dụng có bản cập nhật trùng với bản cập nhật JRE; Ứng dụng của nhà cung cấp bên ngoài này yêu cầu một số quyền bổ sung và do đó nó ghi đè tệp java.policy của tôi (bản gốc đã có phần mở rộng .bak khi tôi kiểm tra thư mục), vì vậy tôi chỉ đổi tên tệp chính sách để kiểm tra và tất cả đang hoạt động trở lại. Tệp thiếu thông tin sau: cấp mãBase "tệp: $ {{java.ext.dirs}}/*" { \t quyền java.security.AllPermission; }; –

Trả lời

1

Ngay cả sau khi ký vào bình, bạn sẽ không thể chạy applet trong trình duyệt. một khi bạn đã hoàn tất việc ký tên, bạn nên thêm quyền truy cập cho lớp sun.security.ec.SunEC trong java.polcy của jdk/jre đang hoạt động bằng cách sử dụng policytool.exe. đảm bảo rằng bạn chạy policytool.exe với quyền quản trị viên để bạn sẽ được phép sửa đổi tệp java.policy. bạn phải thêm một mục nhập cho mã tài trợBase "tệp: $ {{java.ext.dirs}}/*" {permission java.security.AllPermission; }; theo đề xuất của Matt C.

Các vấn đề liên quan