Ho Jenkins 1.613 in esecuzione su WebLogic 12c e anche su JBoss EAP 6.3. Sono riuscito a far funzionare il plugin email-ext di Jenkins su JBoss. Tuttavia, ogni volta che utilizzo i token come $ PROJECT_NAME, il plugin email-ext fallisce su WebLogic (funziona perfettamente su JBoss, dovrei sottolineare ancora).LinkageError with Jenkins on WebLogic
Ottengo il seguente stacktrace che sembra indicare alcuni problemi con il plugin tokenmacro.
java.lang.LinkageError: loader constraint violation: when resolving method
"com.google.common.collect.Multimaps.newListMultimap(java/util/Map; com/google/common/base/Supplier;) com/google/common/collect/ListMultimap;"
the class loader (instance of hudson/ClassicPluginStrategy$AntClassLoader2) of the current class, org/jenkinsci/plugins/tokenmacro/Tokenizer,
and the class loader (instance of sun/misc/Launcher$AppClassLoader) for resolved class, com/google/common/collect/Multimaps,
have different Class objects for the type ap; com/google/common/base/Supplier;) com/google/common/collect/ListMultimap; used in signature
at org.jenkinsci.plugins.tokenmacro.Tokenizer.find(Tokenizer.java:109)
at org.jenkinsci.plugins.tokenmacro.TokenMacro.expand(TokenMacro.java:167)
at org.jenkinsci.plugins.tokenmacro.TokenMacro.expandAll(TokenMacro.java:233)
at hudson.plugins.emailext.plugins.ContentBuilder.transformText(ContentBuilder.java:71)
at hudson.plugins.emailext.ExtendedEmailPublisher.setSubject(ExtendedEmailPublisher.java:659)
Domande:
- in base alla mia comprensione di questa traccia, il problema è che ci sono contrastanti copie della classe Multimaps che sono stati caricati? È giusto?
- Perché dovrebbero essere coinvolti più programmi di caricamento classi (AntClassLoader2 e AppClassLoader)? Non dovrebbe essere il caso che, una volta che il classloader trova la classe richiesta, semplicemente "restituisce" quella classe e delega il classloading ai classloader genitori solo quando non trova la classe?
- Perché la mia configurazione funziona in JBoss ma non in WebLogic?
- Cosa si può fare per risolvere questo problema? Ho provato a collocare Guava 11 nel WEB-INF della directory dei plugin tokenmacro, ma non aiuta. Ho anche provato lo stesso con Guava 13.
Ulteriori informazioni che potrebbero essere utili:
- Token versione Macro Plugin installata è 1,10
- Email versione Plugin estensione installata è 2.40.5
- Nel mio jenkins.war, ho un file weblogic.xml dove wls: prefer-web-inf-classes è impostato su true.
Domanda inattesa: Jenkins può essere eseguito standalone- perché non utilizzare questa funzione? – Jayan