Java 登录Quarkus在开发模式下工作,但不';JVM docker映像中的t输出
在构建Quarkus应用程序时,我遇到了一些问题,包括要扩展的基础应用程序会导致在JVM模式下登录时出现问题。当在Quarkus maven插件提供的开发模式下运行时,我能够在控制台中查看日志并正确使用应用程序。当我使用JVM(或Dockerfile远程运行插件)时,日志不会显示在控制台中 我已经尝试过向配置中添加显式设置以启用日志记录,您可以在下面的分支中看到,我已经确保了包的正确存在,甚至复制了这些包以缩小我编写的基础应用程序的原因,这只影响从Maven外部运行jar的情况 有人知道是什么导致了这种奇怪的行为吗?我已经把一些案例推到了我复制这个问题的公开应用程序上,并包括了如何复制这个问题的步骤 好例子:Java 登录Quarkus在开发模式下工作,但不';JVM docker映像中的t输出,java,quarkus,Java,Quarkus,在构建Quarkus应用程序时,我遇到了一些问题,包括要扩展的基础应用程序会导致在JVM模式下登录时出现问题。当在Quarkus maven插件提供的开发模式下运行时,我能够在控制台中查看日志并正确使用应用程序。当我使用JVM(或Dockerfile远程运行插件)时,日志不会显示在控制台中 我已经尝试过向配置中添加显式设置以启用日志记录,您可以在下面的分支中看到,我已经确保了包的正确存在,甚至复制了这些包以缩小我编写的基础应用程序的原因,这只影响从Maven外部运行jar的情况 有人知道是什么导
JVM中没有日志的示例:
导致日志记录问题的代码(特别是核心库似乎是问题的子项):
要在控制台中运行以再现案例的命令:
mvn编译quarkus:dev
mvn干净编译包
java-jar-target/git-eca-0.0.1-runner.jar
从POM导入导致问题的Jar/lib
日食
https://repo.eclipse.org/content/repositories/eclipsefdn/
真的
真的
日食基础
夸克斯公地
0.1-1快照
聚甲醛
进口
日食基础
夸克核
0.1-1快照
...
任何帮助都将不胜感激 该问题是由某些类加载冲突引起的。如果您在调试模式下运行jar:
java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar target/git-eca-0.0.1-runner.jar
并将远程调试器连接到它,您可以观察java ServiceLoader解析中的问题,当它试图为META-INF/services/org.jboss.logging.LoggerProvider
查找服务实现时。执行此操作的JarLoader希望在名为artifactId.jar
的/lib
文件夹中找到jar,而quarkus maven构建将它们存储在lib文件夹中,作为组.artifactId.jar
,因此资源加载失败(没有任何日志,因为记录器甚至无法配置)。
根本原因是您的quarkus core
有一个可转换的编译作用域dep到jboss logmanager
通过排除有问题的可传递依赖项,可以轻松测试修复:
<dependency>
<groupId>org.eclipsefoundation</groupId>
<artifactId>quarkus-core</artifactId>
<version>${eclipse-api-version}</version>
<exclusions>
<exclusion>
<groupId>org.jboss.logmanager</groupId>
<artifactId>jboss-logmanager</artifactId>
</exclusion>
</exclusions>
</dependency>
日食基础
夸克核
${eclipse api版本}
org.jboss.logmanager
jboss日志管理器
如果您从
quarkus core
模块的pom中删除该jboss logmanager
依赖项,那么它将工作。因此,即使使用未在docker容器中运行的java-jar target/git-eca-0.0.1-runner.jar,您也看不到日志?不。它只会在返回之前保持片刻,没有日志或日志中的任何其他内容。可能还有一些其他的问题存在,虽然它仍然应该打印一些日志,如果它在maven环境中工作的话,我认为它工作得很好!对于它为什么在quarkus:dev热开发模式下工作仍然感到困惑,但非常感谢!关于如何正确调试的其他信息也很感谢