2016-04-04 10 views
0

Ich habe eine sehr seltsame (für mich) Frage. Ich benutze Hüpfburg, um einige Mails in einer Webanwendung zu entschlüsseln. Ich erhalte diese Ausnahme nach Umschichtung meiner Anwendungjava NoClassDefFoundError aber Klasse ist da und verwendbar

java.lang.NoClassDefFoundError: org/bouncycastle/jcajce/spec/SkeinParameterSpec at org.bouncycastle.jcajce.provider.symmetric.util.BaseMac.engineInit(Unknown Source) at javax.crypto.Mac.init(Mac.java:443) at org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.calculatePbeMac(Unknown Source) at org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.engineLoad(Unknown Source) at java.security.KeyStore.load(KeyStore.java:1445) at my.application.Class.getDecryptedContent(my.application.Class.java:401) at my.application.Class.decrypt(my.application.Class.java:91) at my.application.Class.getKvConnectMail(my.application.Class.java:320) at my.application.Class.processEinClick(my.application.Class.java:198) at my.application.Class.shedule(my.application.Class.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273) at org.springframework.scheduling.support.MethodInvokingRunnable.run(MethodInvokingRunnable.java:65) at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:51) at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

Also dachte ich, die lib in WEB-INF/lib Ordner meiner Anwendung fehlt, aber es ist da.

Das Merkwürdige ist: Wenn ich die Klasse direkt mit diesem Codesnipped verwende, wird das Snipped ohne Fehler korrekt ausgeführt.

LOGGER.error("Class!!!: " + SkeinParameterSpec.class.getName()); 
SkeinParameterSpec spec = new SkeinParameterSpec(); 
LOGGER.error("Instance!!!: " + spec.toString()); 
LOGGER.error("Instanceof: " + (spec instanceof SkeinParameterSpec)); 

Aber die Bibliothek Klasse org.bouncycastle.jcajce.provider.symmetric.util.BaseMac, die in der Nähe des gleichen Code verwendet wie meine snipped mit der Ausnahme oben endet.

Jemand da draußen, der mir helfen kann zu verstehen, warum das passiert?

S.S .: Dies geschieht nur nach einer Neuinstallation, wenn der gesamte Tomcat neu gestartet wird, denkt jeder funktioniert.

UPDATE 1: Ich habe vergessen zu sagen, dass ich Liferay benutze. Aber meine WebApplication ist eine normale ohne Beziehungen zu Liferay.

Aber: Nach einigen Nachforschungen fand ich heraus, dass Liferay einige Librarys (/ tomcat/webapps/ROOT/lib) haben. Auch Bouncycastle in einer alten Version. Ist es möglich, dass diese Librarys von meiner WebApplication verwendet werden und der Fehler ein Ergebnis von Liferays Librarys und CustomClassLoaders ist?

Lösung: Siehe "Inigo Skimmer" Kommentar in der richtigen Antwort.

Antwort

-2

Ich vermute, dass es möglicherweise eine andere Version von bouncycastle lib auf dem Klassenpfad (möglicherweise in Tomcat/lib-Ordner) oder benötigt von einem anderen jar, das zuerst geladen wird und nicht die gewünschte Klasse enthält.

+0

Guter Tipp aber nein. Meine Anwendung ist die einzige, die es benutzt. Und in tomcat libs ist keine Hüpfburg lib. – Devian88

+0

Haben Sie [this] (http://stackoverflow.com/questions/10379799/bouncycastle-cannot-load-when-i-redeploy-application) gelesen? –

+0

@ inigo Sie sind ein Lebensretter. Danke mann!!! :) – Devian88

Verwandte Themen