2009-10-15 35 views
5

Chúng tôi có một ứng dụng web Java không thường xuyên tìm thấy các thư viện mã hóa. Hiện tại, khởi động lại ứng dụng sẽ khắc phục sự cố.Thư viện mã hóa Java không thường xuyên bắt đầu

Các yêu cầu sau xuất hiện trong nhật ký, xem bên dưới để biết dấu vết ngăn xếp đầy đủ.

java.lang.InternalError: Could not start up the CDSA libraries. 
java.lang.NoClassDefFoundError: Could not initialize class com.apple.crypto.provider.HmacMD5 

Ứng dụng này được xây dựng bằng Java 1.6.0_15 và được triển khai để 1.6.0_13 chạy trên Mac OS X Server 10.5.8 (9L30)

Bất kỳ ý tưởng?

Cheers

Jono

Build Java version 
java version "1.6.0_13" 
Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211) 
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed mode) 

Deployed Jave version 
java version "1.6.0_15" 
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-226) 
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-92, mixed mode) 

Full stack trace: 

java.lang.NoClassDefFoundError: Could not initialize class com.apple.crypto.provider.HmacMD5 
     at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
     at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1881) 
     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1782) 
     at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
     at java.lang.System.loadLibrary(System.java:1047) 
     at com.apple.crypto.provider.HmacCore.<clinit>(HmacCore.java:26) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
     at java.lang.Class.newInstance0(Class.java:355) 
     at java.lang.Class.newInstance(Class.java:308) 
     at java.security.Provider$Service.newInstance(Provider.java:1221) 
     at javax.crypto.Mac.a(DashoA13*..) 
     at javax.crypto.Mac.init(DashoA13*..) 
     at com.sun.net.ssl.internal.ssl.MAC.<init>(MAC.java:94) 
     at com.sun.net.ssl.internal.ssl.CipherSuite$MacAlg.newMac(CipherSuite.java:429) 
     at com.sun.net.ssl.internal.ssl.Handshaker.newWriteMAC(Handshaker.java:407) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.changeWriteCiphers(SSLSocketImpl.java:1791) 
     at com.sun.net.ssl.internal.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:607) 
     at com.sun.net.ssl.internal.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:868) 
     at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:794) 
     at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:226) 
     at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516) 
     at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:623) 
     at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59) 
     at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 
     at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) 
     at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:506) 
     at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114) 
     at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096) 
     at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) 
     at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) 
     at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) 
     at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) 

Trả lời

1

lỗi của bạn không có nghĩa là các lớp không được tìm thấy. "Không thể khởi tạo lớp com.apple.crypto.provider.HmacMD5" có nghĩa là khối intizializer tĩnh (static { ... }) gây ra một ngoại lệ. Bạn có quyền truy cập vào mã nguồn của MmacMD5 không?

Chúng tôi đã từng gặp sự cố tương tự khi khối tĩnh không thành công do máy chủ X không thể truy cập - nhưng chỉ khi không có phiên SSH cho phép X-chuyển tiếp tới máy chủ. (Lớp học đã đăng ký phông chữ để sử dụng sau này để tạo hình ảnh)

0

Như "sfussenegger" đã viết, nó liên quan đến phương pháp tĩnh {}. Nếu bạn không thể tìm thấy một tài liệu hoặc mã nguồn hữu ích, hãy thử một trình biên dịch ngược (nếu giấy phép là tốt với điều đó tất nhiên chỉ). Tôi thấy các vấn đề với các thư viện mật mã cũng liên quan đến hạt giống được tạo ra bởi sự an toàn ngẫu nhiên (Hệ thống dừng lại, cho đến khi nó có đủ ngẫu nhiên). Có lẽ một cái gì đó như thế này là một phần của vấn đề.

Dù sao, nếu bạn không thể loại bỏ được vấn đề, vẫn còn lâu đài bouncy như là một miễn phí hoặc IAIK như là một thay thế thương mại. Không nhiều, nhưng có lẽ điều đó sẽ giúp ...

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