Linkage在添加optaplanner-test依赖项后在OptaPlanner Quarkus构建中的错误



在 quarkus optaplanner 时间表快速入门中添加optaplanner-test依赖项后,将显示以下内容:

2020-06-19 13:19:33,653 ERROR [io.qua.dep.dev.DevModeMain] (vert.x-worker-thread-1) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step org.optaplanner.quarkus.deployment.OptaPlannerProcessor#recordSolverFactory threw an exception: java.lang.LinkageError: loader constraint violation: loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @64dc86c6 wants to load class org.optaplanner.core.config.solver.SolverConfig. A different class with the same name was previously loaded by io.quarkus.bootstrap.classloading.QuarkusClassLoader @7af327e3. (org.optaplanner.core.config.solver.SolverConfig is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @7af327e3, parent loader 'platform')
at io.quarkus.deployment.recording.BytecodeRecorderImpl$$RecordingProxyProxy41.solverConfigSupplier(BytecodeRecorderImpl$$RecordingProxyProxy41.zig:98)
at org.optaplanner.quarkus.deployment.OptaPlannerProcessor.recordSolverFactory(OptaPlannerProcessor.java:144)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:932)
at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
at java.base/java.lang.Thread.run(Thread.java:834)
at org.jboss.threads.JBossThread.run(JBossThread.java:479)
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:247)
at io.quarkus.runner.bootstrap.AugmentActionImpl.reloadExistingApplication(AugmentActionImpl.java:142)
at io.quarkus.runner.bootstrap.AugmentActionImpl.reloadExistingApplication(AugmentActionImpl.java:52)
at io.quarkus.deployment.dev.IsolatedDevModeMain.restartApp(IsolatedDevModeMain.java:139)
at io.quarkus.deployment.dev.RuntimeUpdatesProcessor.doScan(RuntimeUpdatesProcessor.java:139)
at io.quarkus.vertx.http.runtime.devmode.VertxHttpHotReplacementSetup$1.handle(VertxHttpHotReplacementSetup.java:50)
at io.quarkus.vertx.http.runtime.devmode.VertxHttpHotReplacementSetup$1.handle(VertxHttpHotReplacementSetup.java:42)
at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$2(ContextImpl.java:316)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step org.optaplanner.quarkus.deployment.OptaPlannerProcessor#recordSolverFactory threw an exception: java.lang.LinkageError: loader constraint violation: loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @64dc86c6 wants to load class org.optaplanner.core.config.solver.SolverConfig. A different class with the same name was previously loaded by io.quarkus.bootstrap.classloading.QuarkusClassLoader @7af327e3. (org.optaplanner.core.config.solver.SolverConfig is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @7af327e3, parent loader 'platform')
at io.quarkus.deployment.recording.BytecodeRecorderImpl$$RecordingProxyProxy41.solverConfigSupplier(BytecodeRecorderImpl$$RecordingProxyProxy41.zig:98)
at org.optaplanner.quarkus.deployment.OptaPlannerProcessor.recordSolverFactory(OptaPlannerProcessor.java:144)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:932)
at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
at java.base/java.lang.Thread.run(Thread.java:834)
at org.jboss.threads.JBossThread.run(JBossThread.java:479)
at io.quarkus.builder.Execution.run(Execution.java:115)
at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79)
at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:149)
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:245)
... 11 more
Caused by: java.lang.LinkageError: loader constraint violation: loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @64dc86c6 wants to load class org.optaplanner.core.config.solver.SolverConfig. A different class with the same name was previously loaded by io.quarkus.bootstrap.classloading.QuarkusClassLoader @7af327e3. (org.optaplanner.core.config.solver.SolverConfig is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @7af327e3, parent loader 'platform')
at io.quarkus.deployment.recording.BytecodeRecorderImpl$$RecordingProxyProxy41.solverConfigSupplier(BytecodeRecorderImpl$$RecordingProxyProxy41.zig:98)
at org.optaplanner.quarkus.deployment.OptaPlannerProcessor.recordSolverFactory(OptaPlannerProcessor.java:144)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:932)
at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
at java.base/java.lang.Thread.run(Thread.java:834)
at org.jboss.threads.JBossThread.run(JBossThread.java:479)

这是由夸克版本不同步引起的。maven quarkus 插件使用 quarkus 1.4.x,optaplanner-quarkus模块使用 quarkus 1.5.x。

quarkus-universe-bom可能会避免此类问题。

最新更新