Hi!
Ik heb een Java project icm Spring framework en Maven. Het project is opgesplitst in een aantal submodules en ik wil nu een module toevoegen voor een Discord bot. Ik heb de volgende dependency toegevoegd voor Maven (incl de benodige repository):
Er wordt een bean gemaakt in een config class in de bot module:
Deze wordt geimporteerd in the configuratie in de web module
Ik draai de applicatie met een jetty plugin voor eclipse:
Dit resulteert in de volgende error:
Hier loop ik vast. Van wat ik heb kunnen googelen ligt het mogelijk aan een jar die dubbel is, een class die in meerdere jars zit (SslContextFactory or ClassRealm?) of meerdere classloaders die dezelfde class proberen te laden? Ik heb geen dubbele jars kunnen vinden, en weet niet waar ik verder moet zoeken.
Is er iemand die mij hier mee kan helpen?
Mvg,
Skandalouz
Ik heb een Java project icm Spring framework en Maven. Het project is opgesplitst in een aantal submodules en ik wil nu een module toevoegen voor een Discord bot. Ik heb de volgende dependency toegevoegd voor Maven (incl de benodige repository):
XML: bot/pom.xml
1
2
3
4
5
| <dependency> <groupId>com.github.austinv11</groupId> <artifactId>Discord4j</artifactId> <version>2.6.1</version> </dependency> |
Er wordt een bean gemaakt in een config class in de bot module:
Java: BotConfig.java
1
2
3
4
5
6
7
8
9
| @Configuration public class BotConfig { @Bean public IDiscordClient discordClient( ) throws DiscordException { //create and return client } } |
Deze wordt geimporteerd in the configuratie in de web module
Java: BotConfig.java
1
2
3
4
5
6
7
| @Configuration @Import({ BotConfig.class }) public class WebConfig extends WebMvcConfigurerAdapter { @Autowired private IDiscordClient client; } |
Ik draai de applicatie met een jetty plugin voor eclipse:
XML: web/pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
| <build> <plugins> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.3.11.v20160721</version> <configuration> <systemPropertiesFile>${properties.file}</systemPropertiesFile> </configuration> </plugin> </plugins> </build> |
Dit resulteert in de volgende error:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| java.lang.LinkageError: loader constraint violation: loader (instance of org/codehaus/plexus/classworlds/realm/ClassRealm) previously initiated loading for a different type with name "org/eclipse/jetty/util/ssl/SslContextFactory" at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:401) at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42) at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) at org.eclipse.jetty.websocket.client.io.WebSocketClientSelectorManager.newSSLEngine(WebSocketClientSelectorManager.java:129) at org.eclipse.jetty.websocket.client.io.WebSocketClientSelectorManager.newConnection(WebSocketClientSelectorManager.java:86) at org.eclipse.jetty.io.ManagedSelector.createEndPoint(ManagedSelector.java:422) at org.eclipse.jetty.io.ManagedSelector.access$1600(ManagedSelector.java:56) at org.eclipse.jetty.io.ManagedSelector$CreateEndPoint.run(ManagedSelector.java:605) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.execute(ExecuteProduceConsume.java:100) at org.eclipse.jetty.io.ManagedSelector.run(ManagedSelector.java:147) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) at java.lang.Thread.run(Thread.java:745) |
Hier loop ik vast. Van wat ik heb kunnen googelen ligt het mogelijk aan een jar die dubbel is, een class die in meerdere jars zit (SslContextFactory or ClassRealm?) of meerdere classloaders die dezelfde class proberen te laden? Ik heb geen dubbele jars kunnen vinden, en weet niet waar ik verder moet zoeken.
Is er iemand die mij hier mee kan helpen?
Mvg,
Skandalouz