2009-10-15 18 views
5

Kriptografik kitaplıkları bulmakta nadiren başarısız olan bir Java web uygulamasına sahibiz. Şu anda uygulamayı yeniden başlatmak sorunu giderir.Java kriptografi kitaplığı sporadik olarak başlatılamıyor

Aşağıdaki açıklamalar, günlüklerde görünür, tam yığın izlemesi için aşağıya bakın.

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

uygulama Java 1.6.0_15 kullanılarak inşa edilmiştir ve Mac OS X Server 10.5.8 (9L30)

Herhangi bir fikir üzerinde çalışan 1.6.0_13 dağıtılır?

Alkış

Tunç

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) 

cevap

1

Sizin hata sınıfı bulunamadı anlamına gelmez. "Com.apple.crypto.provider.HmacMD5 sınıfını başlatılamadı", statik intizializer bloğunun (static { ... }) bir istisna oluşturduğu anlamına gelir. MmacMD5'in kaynak koduna erişiminiz var mı?

Statik bloğun erişilemeyen bir X sunucusu nedeniyle başarısız olduğu benzer bir sorunla karşılaştık - ancak sunucuya yalnızca X yönlendirme etkin SSH oturumu yoksa. (Sınıf, daha sonra bunları görüntü oluşturmak için kullanmak üzere yazı tiplerini kaydettiriyordu)

0

"sfussenegger" yazdığı gibi, bu statik {} yöntemiyle ilgilidir. Yararlı bir doküman veya kaynak kodu bulamıyorsanız, bir decompiler'i deneyin (eğer lisans sadece bununla sınırlıysa). Kripto kütüphaneleriyle ilgili problemleri, aynı zamanda güvenli rastlantısal olarak üretilen tohum ile ilgili olarak gördüm (Sistem durur, yeteri kadar rastgele elde edilene kadar). Belki de bunun gibi bir şey sorunun bir parçası. Her neyse, eğer problemden kurtulamazsanız, yine de serbest ya da IAIK olarak ticari bir alternatif olarak bouncy kalesi var demektir. Fazla değil, ama belki de bu yardımcı olur ...