Gradle 开发模式中缺少可传递依赖项
在使用Quarkus构建的简单REST服务中,如果服务在开发模式下运行,则抛出ClassNotFoundException。使用优步jar,它可以正常工作 如何使服务也在开发模式下工作 缺少的类属于QR票据生成器库的可传递依赖项,该库声明为Gradle 开发模式中缺少可传递依赖项,gradle,quarkus,Gradle,Quarkus,在使用Quarkus构建的简单REST服务中,如果服务在开发模式下运行,则抛出ClassNotFoundException。使用优步jar,它可以正常工作 如何使服务也在开发模式下工作 缺少的类属于QR票据生成器库的可传递依赖项,该库声明为build.gradle: dependencies { ... implementation 'net.codecrete.qrbill:qrbill-generator:2.2.2' ... } 该错误仅在开发模式(gradle
build.gradle
:
dependencies {
...
implementation 'net.codecrete.qrbill:qrbill-generator:2.2.2'
...
}
该错误仅在开发模式(gradle quarkusDev
)下发生。如果REST请求需要使用qrbill:qrbill生成器库,则会触发该命令:
在分析依赖关系时,我可以看到io.nayuki:qrcodegen:1.6.0是runtimeClasspath的一部分,但不是compileClasspath的一部分。这个看起来不错
可能是Quarkus开发模式使用了错误的类路径吗?运行
gradle clean
后问题是否仍然存在?@Pieterjandocinck是的,它仍然存在。这是Quarkus的哪个版本?最新的稳定版本:1.4.1。最后,您可以打开github问题吗?看起来有什么值得调查的问题运行gradle clean
后问题是否仍然存在?@pieterjandocinck是的,它仍然存在。这是Quarkus的哪个版本?最新的稳定版本:1.4.1。最后,您可以打开github问题吗?这看起来是一件值得调查的事情
2020-05-03 12:11:49,463 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-1) HTTP Request to /xxx/yyy failed, error id: 89c5b7f8-c762-4f7f-959b-67f16b2bc120-1: org.jboss.resteasy.spi.UnhandledException: java.lang.NoClassDefFoundError: io/nayuki/qrcodegen/QrCode$Ecc
at org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:106)
at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:372)
at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:216)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:515)
at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:259)
at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:160)
[several lines omitted]
Caused by: java.lang.NoClassDefFoundError: io/nayuki/qrcodegen/QrCode$Ecc
at net.codecrete.qrbill.generator.QRCode.draw(QRCode.java:49)
at net.codecrete.qrbill.generator.BillLayout.drawPaymentPart(BillLayout.java:131)
at net.codecrete.qrbill.generator.BillLayout.draw(BillLayout.java:94)
[several lines omitted]
Caused by: java.lang.ClassNotFoundException: io.nayuki.qrcodegen.QrCode$Ecc
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:341)
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:294)
... 44 more