2015-04-15 17 views
9

Ich habe zwei Ohren auf einer jboss-Instanz implementiert. Ich verwende in mbean konfigurierten Quarz. Beide Ohren benutzen StatefulJobs. Leider benutzt man die Bibliothek antlr-runtime-3.0, aber die zweite antlr-runtime-3.2. Wenn JBoss den Job aufruft, wird die falsche Bibliothek verwendet. Ich weiß nicht, wie man ihn dazu bringt, eine Bibliothek aus dem Ohr zu benutzen. Meine Quarzversion wurde auf 1.8.6 aufgerüstet. JBoss ist 4.2.2 GAjava.lang.NoSuchMethodError beim Aufruf des in jboss deklarierten Quarz-Jobs mbean

Meine erste Ohrstruktur:

  • META-INF

  • antlr-Runtime-3.0.jar

  • ejb.jar
  • App .war

Meine zweite Ohrstruktur:

  • META-INF
    • application.xml
    • jboss-app.xml
  • antlr-Runtime-3.2.jar
  • ejb2.jar
  • app2.war

Application.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE application PUBLIC 
    "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" 
    "http://java.sun.com/dtd/application_1_3.dtd"> 
    <application> 
    <display-name>ear</display-name> 
    <module> 
     <web> 
      <web-uri>app.war</web-uri> 
      <context-root>/</context-root> 
     </web> 
    </module> 
    <module> 
     <ejb>app.jar</ejb> 
    </module> 
</application> 

jboss-app.xml

<?xml version='1.0' encoding='UTF-8' ?> 
<jboss-app> 
     <loader-repository> 
      pck.class:app.war=unique-app.war 
      <loader-repository-config>java2ParentDelegation=false</loader-repository-config> 
     </loader-repository> 
</jboss-app> 

Stack:

org.quartz.SchedulerException: Problem instantiating class 'package.quartz.WsclFailureJob' - [See nested exception: java.lang.NoSuchMethodError: org.antlr.runtime.Lexer.<init>(Lorg/antlr/runtime/CharStream;Lorg/antlr/runtime/RecognizerSha 
redState;)V] 
     at org.quartz.core.JobRunShell.initialize(JobRunShell.java:147) 
     at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:364) 
Caused by: java.lang.NoSuchMethodError: org.antlr.runtime.Lexer.<init>(Lorg/antlr/runtime/CharStream;Lorg/antlr/runtime/RecognizerSharedState;)V 
     at package.cond.antlr.CondLexer.<init>(CondLexer.java:55) 
     at package.cond.antlr.CondLexer.<init>(CondLexer.java:52) 
     at package.cond.ExpressionFactory.getValue(ExpressionFactory.java:58) 
     at packagee.Configuration$ConfigInternal.loadParsableParams(Configuration.java:204) 
     at packagee.Configuration$ConfigInternal.reload(Configuration.java:172) 
     at packagee.Configuration$ConfigInternal.<init>(Configuration.java:161) 
     at packagee.Configuration.reload(Configuration.java:56) 
     at packagee.Configuration.<init>(Configuration.java:47) 
     at packagee.Configuration.<clinit>(Configuration.java:38) 
     at packagee.ScenarioProcessor.<init>(ScenarioProcessor.java:71) 
     at packagee.ScenarioProcessor.<clinit>(ScenarioProcessor.java:58) 
     at package.quartz.WsclFailureJob.<init>(WsclFailureJob.java:22) 
     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:494) 
     at java.lang.Class.newInstance0(Class.java:350) 
     at java.lang.Class.newInstance(Class.java:303) 
     at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:55) 
     at org.quartz.core.JobRunShell.initialize(JobRunShell.java:140) 
     ... 1 more 

Ich habe versucht, auch mit java2ParentDelegation auf true gesetzt, aber es funktioniert nicht . Wenn ich diese Datei zum Projekt hinzufüge, gibt mein Quarz-Aufruf von jboss mi ClassNotFoundError beim Abrufen des Jobs von quartz_table. Ohne diese Datei funktioniert alles gut, aber wenn nur eine Anwendung auf jboss implementiert ist.

Stapel mit Jboss-app.xml:

15-04-15 17:49:00,010 TRACE [RepositoryClassLoader] attempt(1) was: true for :[email protected]{ url=null ,addedOrder=25} 
    2015-04-15 17:49:00,010 TRACE [LoadMgr3] registerLoaderThread, [email protected]{ url=null ,addedOrder=25}, t=Thread[MySystemClusteredScheduler_QuartzSchedulerThread,5,QuartzScheduler:MySystemClusteredScheduler], prevT=null 
    2015-04-15 17:49:00,010 TRACE [LoadMgr3] Begin beginLoadTask, [email protected]{classname: package.quartz.WsclFailureJob, requestingThread: Thread[MySystemClusteredScheduler_QuartzSchedulerThread,5,QuartzScheduler:MySystemClusteredScheduler], requestingClassLoader: [email protected]{ url=null ,addedOrder=25}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 0, state: 0, #CCE: 0} 
    2015-04-15 17:49:00,010 TRACE [RepositoryClassLoader] loadClassLocally, [email protected]{ url=null ,addedOrder=25} name=package.quartz.WsclFailureJob 
    2015-04-15 17:49:00,010 TRACE [RepositoryClassLoader] Class in blacklist, name=package.quartz.WsclFailureJob 
    2015-04-15 17:49:00,010 TRACE [RepositoryClassLoader] loadClassLocally, [email protected]{ url=null ,addedOrder=25} name=package.quartz.WsclFailureJob not found 
    2015-04-15 17:49:00,010 TRACE [LoadMgr3] End beginLoadTask, ClassNotFoundException 
    2015-04-15 17:49:00,010 TRACE [LoadMgr3] Begin endLoadTask, [email protected]{classname: package.quartz.WsclFailureJob, requestingThread: Thread[MySystemClusteredScheduler_QuartzSchedulerThread,5,QuartzScheduler:MySystemClusteredScheduler], requestingClassLoader: [email protected]{ url=null ,addedOrder=25}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 0, state: 0, #CCE: 0} 
    2015-04-15 17:49:00,010 TRACE [RepositoryClassLoader] release(1) for :[email protected]{ url=null ,addedOrder=25} 
    2015-04-15 17:49:00,010 TRACE [RepositoryClassLoader] released, holds: 0 
    2015-04-15 17:49:00,010 TRACE [RepositoryClassLoader] loadClass [email protected]{ url=null ,addedOrder=25} name=package.quartz.WsclFailureJob not found 
    2015-04-15 17:49:00,011 ERROR [JobStoreTX] Error retrieving job, setting trigger state to ERROR. 
    org.quartz.JobPersistenceException: Couldn't retrieve job because a required class was not found: No ClassLoaders found for: package.quartz.WsclFailureJob [See nested exception: java.lang.ClassNotFoundException: No ClassLoaders found for: package.quartz.WsclFailureJob] 
      at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveJob(JobStoreSupport.java:1416) 
      at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggerFired(JobStoreSupport.java:2903) 
      at org.quartz.impl.jdbcjobstore.JobStoreSupport$38.execute(JobStoreSupport.java:2871) 
      at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3788) 
      at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggerFired(JobStoreSupport.java:2 

865) 
     at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:319) 
Caused by: java.lang.ClassNotFoundException: No ClassLoaders found for: package.quartz.WsclFailureJob 
     at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:306) 
     at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:521) 
     at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:415) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:251) 
     at org.quartz.simpl.InitThreadContextClassLoadHelper.loadClass(InitThreadContextClassLoadHelper.java:72) 
     at org.quartz.simpl.CascadingClassLoadHelper.loadClass(CascadingClassLoadHelper.java:116) 
    at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectJobDetail(StdJDBCDelegate.java:894) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveJob(JobStoreSupport.java:1404) 

Log ohne jboss-app.xml. Anwendung funktioniert gut, wenn dort nur ein auf Jboss eingesetzt ist:

2015-04-15 17:53:40,370 TRACE [org.jboss.mx.loading.RepositoryClassLoader] loadClassLocally, [email protected]{ url=file:/jboss/server/default/tmp/deploy/tmp34768system.ear ,addedOrder=44} name=package.quartz.WsclFailureJob class=class package.quartz.WsclFailureJob [email protected]{ url=file:/jboss/server/default/tmp/deploy/tmp34768system.ear ,addedOrder=44} 
2015-04-15 17:53:40,370 TRACE [org.jboss.mx.loading.ClassLoadingTask] setLoadedClass, theClass=class package.quartz.WsclFailureJob, order=44 
2015-04-15 17:53:40,370 TRACE [org.jboss.mx.loading.UnifiedLoaderRepository3] cacheLoadedClass, classname: package.quartz.WsclFailureJob, class: class package.quartz.WsclFailureJob, ucl: [email protected]{ url=file:/jboss/server/default/tmp/deploy/tmp34768system.ear ,addedOrder=44}, prevClass: null 
2015-04-15 17:53:40,370 TRACE [org.jboss.mx.loading.LoadMgr3] Notifying task of thread completion, loadTask:[email protected]{classname: package.quartz.WsclFailureJob, requestingThread: Thread[main,5,jboss], requestingClassLoader: [email protected]{ url=file:/jboss/server/default/tmp/deploy/tmp34768system.ear ,addedOrder=44}, loadedClass: class [email protected]5b4<CodeSource: (file:/jboss/server/default/tmp/deploy/tmp34768system.ear-contents/system.jar <no signer certificates>)>, loadOrder: 44, loadException: null, threadTaskCount: 0, state: 1, #CCE: 0} 
2015-04-15 17:53:40,370 TRACE [org.jboss.mx.loading.LoadMgr3] End nextTask(0), [email protected]{classname: package.quartz.WsclFailureJob, requestingThread: Thread[main,5,jboss], requestingClassLoader: [email protected]{ url=file:/jboss/server/default/tmp/deploy/tmp34768system.ear ,addedOrder=44}, loadedClass: class [email protected]5b4<CodeSource: (file:/jboss/server/default/tmp/deploy/tmp34768system.ear-contents/system.jar <no signer certificates>)>, loadOrder: 44, loadException: null, threadTaskCount: 0, state: 4, #CCE: 0} 
2015-04-15 17:53:40,370 TRACE [org.jboss.mx.loading.LoadMgr3] Begin endLoadTask, [email protected]{classname: package.quartz.WsclFailureJob, requestingThread: Thread[main,5,jboss], requestingClassLoader: [email protected]{ url=file:/jboss/server/default/tmp/deploy/tmp34768system.ear ,addedOrder=44}, loadedClass: class [email protected]5b4<CodeSource: (file:/jboss/server/default/tmp/deploy/tmp34768system.ear-contents/system.jar <no signer certificates>)>, loadOrder: 44, loadException: null, threadTaskCount: 0, state: 4, #CCE: 0} 
2015-04-15 17:53:40,370 TRACE [org.jboss.mx.loading.RepositoryClassLoader] release(1) for :[email protected]{ url=file:/jboss/server/default/tmp/deploy/tmp34768system.ear ,addedOrder=44} 
2015-04-15 17:53:40,370 TRACE [org.jboss.mx.loading.RepositoryClassLoader] released, holds: 0 
2015-04-15 17:53:40,371 TRACE [org.jboss.mx.loading.RepositoryClassLoader] loadClass [email protected]{ url=file:/jboss/server/default/tmp/deploy/tmp34768system.ear ,addedOrder=44} name=package.quartz.WsclFailureJob class=class package.quartz.WsclFailureJob [email protected]{ url=file:/jboss/server/default/tmp/deploy/tmp34768system.ear ,addedOrder=44} 
2015-04-15 17:53:40,371 TRACE [org.jboss.mx.loading.RepositoryClassLoader] loadClass [email protected]{ url=file:/jboss/server/default/tmp/deploy/tmp34768system.ear ,addedOrder=44} name=package.quartz.VerifyTimeoutJob, loadClassDepth=0 

Stapel ohne jboss-app.xml, aber im Fall von 2 bereitgestellten Anwendungen mit verschiedenen Versionen von Bibliothek antlr-Laufzeit:

2015-04-15 19:01:11,307 TRACE [RepositoryClassLoader] loadClassLocally, [email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48} name=org.antlr.runtime.Recognize 
rSharedState class=class org.antlr.runtime.RecognizerSharedState [email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48} 
2015-04-15 19:01:11,307 TRACE [ClassLoadingTask] setLoadedClass, theClass=class org.antlr.runtime.RecognizerSharedState, order=48 
2015-04-15 19:01:11,307 TRACE [UnifiedLoaderRepository3] cacheLoadedClass, classname: org.antlr.runtime.RecognizerSharedState, class: class org.antlr.runtime.RecognizerSharedState, ucl: [email protected]{ ur 
l=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48}, prevClass: null 
2015-04-15 19:01:11,307 TRACE [LoadMgr3] Notifying task of thread completion, loadTask:[email protected]{classname: org.antlr.runtime.RecognizerSharedState, requestingThread: Thread[MySystemClusteredScheduler_QuartzS 
chedulerThread,5,QuartzScheduler:MySystemClusteredScheduler], requestingClassLoader: [email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48}, loadedClass: class org.a 
ntlr.runti[email protected]196b1a5<CodeSource: (file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear-contents/antlr-runtime-3.2.jar <no signer certificates>)>, loadOrder: 48, loadEx 
ception: null, threadTaskCount: 0, state: 1, #CCE: 0} 
2015-04-15 19:01:11,307 TRACE [LoadMgr3] End nextTask(0), [email protected]{classname: org.antlr.runtime.RecognizerSharedState, requestingThread: Thread[MySystemClusteredScheduler_QuartzSchedulerThread,5,Qua 
rtzScheduler:MySystemClusteredScheduler], requestingClassLoader: [email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48}, loadedClass: class org.antlr.runtime.Recogni 
[email protected]<CodeSource: (file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear-contents/antlr-runtime-3.2.jar <no signer certificates>)>, loadOrder: 48, loadException: null, threa 
dTaskCount: 0, state: 4, #CCE: 0} 
2015-04-15 19:01:11,307 TRACE [LoadMgr3] Begin endLoadTask, [email protected]{classname: org.antlr.runtime.RecognizerSharedState, requestingThread: Thread[MySystemClusteredScheduler_QuartzSchedulerThread,5,Quart 
zScheduler:MySystemClusteredScheduler], requestingClassLoader: [email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48}, loadedClass: class org.antlr.runtime.Recognize 
[email protected]<CodeSource: (file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear-contents/antlr-runtime-3.2.jar <no signer certificates>)>, loadOrder: 48, loadException: null, threadT 
askCount: 0, state: 4, #CCE: 0} 
2015-04-15 19:01:11,307 TRACE [RepositoryClassLoader] release(1) for :[email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48} 
2015-04-15 19:01:11,307 TRACE [RepositoryClassLoader] released, holds: 0 
2015-04-15 19:01:11,307 TRACE [RepositoryClassLoader] loadClass [email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48} name=org.antlr.runtime.RecognizerSharedState class=class org.antlr.runtime.RecognizerSharedState [email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48} 
2015-04-15 19:01:11,307 TRACE [RepositoryClassLoader] loadClass [email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48} name=org.antlr.runtime.BitSet, loadClassDepth=0 
2015-04-15 19:01:11,307 TRACE [RepositoryClassLoader] Loaded class from cache, [email protected]<CodeSource: (file:/home/name/jboss/server/default/tmp/deploy/tmp34122OTHER_SYSTEM.ear-contents/antlr-runtime-3.0.jar <no signer certificates>)> 
2015-04-15 19:01:11,307 TRACE [RepositoryClassLoader] loadClass [email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34140system.ear ,addedOrder=48} name=org.antlr.runtime.BitSet class=class org.antlr.runtime.BitSet [email protected]{ url=file:/home/name/jboss/server/default/tmp/deploy/tmp34122OTHER_SYSTEM.ear ,addedOrder=45} 
2015-04-15 19:01:11,309 ERROR [ErrorLogger] An error occured instantiating job to be executed. job= 'DEFAULT.package.quartz.WsclFailureJob' 
org.quartz.SchedulerException: Problem instantiating class 'package.quartz.WsclFailureJob' - [See nested exception: java.lang.NoSuchMethodError: org.antlr.runtime.Lexer.<init>(Lorg/antlr/runtime/CharStream;Lorg/antlr/runtime/RecognizerSharedState;)V] 
     at org.quartz.core.JobRunShell.initialize(JobRunShell.java:147) 
     at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:364) 
Caused by: java.lang.NoSuchMethodError: org.antlr.runtime.Lexer.<init>(Lorg/antlr/runtime/CharStream;Lorg/antlr/runtime/RecognizerSharedState;)V 
     at package.cond.antlr.CondLexer.<init>(CondLexer.java:55) 
     at package.cond.antlr.CondLexer.<init>(CondLexer.java:52) 
     at package.cond.ExpressionFactory.getValue(ExpressionFactory.java:58) 
     at package.core.Configuration$ConfigInternal.loadParsableParams(Configuration.java:204) 
     at package.core.Configuration$ConfigInternal.reload(Configuration.java:172) 
     at package.core.Configuration$ConfigInternal.<init>(Configuration.java:161) 
     at package.core.Configuration.reload(Configuration.java:56) 
     at package.core.Configuration.<init>(Configuration.java:47) 
     at package.core.Configuration.<clinit>(Configuration.java:38) 
     at package.core.ScenarioProcessor.<init>(ScenarioProcessor.java:71) 
     at package.core.ScenarioProcessor.<clinit>(ScenarioProcessor.java:58) 
     at package.quartz.WsclFailureJob.<init>(WsclFailureJob.java:22) 
     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:494) 
     at java.lang.Class.newInstance0(Class.java:350) 
     at java.lang.Class.newInstance(Class.java:303) 
     at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:55) 
     at org.quartz.core.JobRunShell.initialize(JobRunShell.java:140) 

ich war auch Quarz Eigenschaften wie der Versuch:

org.quartz.scheduler.classLoadHelper.class=org.quartz.simpl.CascadingClassLoadHelper 
org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer=true 
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true 
+1

Sie können einen Weg finden, Ihren eigenen Classloader in Code einzubringen. Abhängig davon, wie viel Kontrolle Sie haben, könnten Sie eine Fabrik erstellen, die die Klasse manuell aus dem gewünschten Verzeichnis lädt – kolossus

+0

Ich dachte darüber nach, aber ich dachte, dass existiert eine bessere Idee ... Es sieht aus wie eine Umgehungslösung ... –

Antwort

3

Wenn Sie zwei separate Ohren, die widerstreitenden Abhängigkeiten haben, kann es helfen, sie in Bezug auf die Klassenladeprogramme zu isolieren.JBoss 4 ist ziemlich alt in diesen Tagen betrachtet, aber die erforderlichen Merkmale waren seit 3.0.2 verfügbar jemals offenbar:

http://www.mastertheboss.com/jboss-server/jboss-configuration/jboss-classloader-issues

+0

An das gleiche JBoss, anders als diese zwei Ohr-Anwendungen habe ich auch andere Anwendungen eingesetzt: Krieg & Ohr. Es sind also 4 Anwendungen. Was mehr war, versuchte ich, classLoaders durch xml-Konfiguration zu trennen, aber es funktioniert nicht. Ich poste meine xml-Konfiguration für die App. Ich kann keine isolierten Ohren für alle Apps setzen, weil sie Quarz-Mbeans verwenden und danach wird Quarz keine Job-Klassen sehen können (Ich habe das versucht und ich hatte NoClassLoadersFound Exception). –

+0

Ich denke Quartz, die Klassen nicht sehen, kann tatsächlich eine Nebenwirkung der Isolierung sein, die arbeitet. Es gibt Dokumente und Diskussionen darüber (z. B. http://goo.gl/zn8v3U), Leute schlagen vor, Quarz config Eigenschaft zu definieren org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true –

+0

Ich habe Problembeschreibung über meine Quarz-Konfiguration aktualisiert. Leider hilft es mir nicht. Mit isoliertem Klassenlader wird der von JBoss geführte Quarz meine Klassen nicht sehen. Sie können das aus dem zweiten Stapel lesen: "2015-04-15 17: 49: 00,010 TRACE [RepositoryClassLoader] loadClassLocally, [email protected] {url = null, addedOrder = 25} name = Paket. quartz.WsclFailureJob 2015-04-15 17: 49: 00,010 TRACE [RepositoryClassLoader] Klasse in Blacklist, name = package.quartz.WsclFailureJob " –

2

Dies ist wegen der neuesten kompilierte Klasse und abhängig Glas in der Anwendung unterschiedlicher Version sind. Zum Beispiel: Lassen Sie Klasse A kompiliert mit abhängiger Jar X an Ort und Stelle, dann später Klasse A in anderer Umgebung kompiliert mit der abhängigen Jar X1, die neue Methode namens Y darin besteht. jetzt wird die Klasse kompiliert, da die neue Methode Y in jar X1 verfügbar ist, wenn die gleiche Klasse A in der Umgebung mit jar X verwendet wird, dann führt sie zur NoSuchMethod-Exception, wenn versucht wird, die Klasse in den Klassenspeicher zu laden. Classloader führt die Überprüfung der abhängigen Klassen durch, bevor die Klasse in den Klassenspeicher geladen wird, bevor eine echte Ausführung aufgerufen wird.

+0

Ok, aber ich habe keine Ahnung, wie ich es beheben und zwei Ohren behalten kann? Ich habe beschlossen, das Ohrprojekt in Krieg eins zu ändern, aber auf diese Weise habe ich weniger Möglichkeiten, EJB-Endpunkte zu verwenden, und ich musste Quarz manuell über meine Anwendung verwenden (nicht über Jboss Container) –

+0

Zwei Ohren, die hier oben sprechen, sind unterschiedliche Versionen von gleicher Anwendung? –

+0

Nein, es sind verschiedene Anwendungen, die verschiedene Versionen derselben Bibliothek verwenden, aber ihre Jobs werden von Quarz aufgerufen, der vom selben Container (JBoss) gesteuert wird, und das ist das Problem. –