gpt4 book ai didi

java - NoClassDefFoundError : JavacProcessingEnvironment at runtime after tomcat 8 upgrade

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:54 24 4
gpt4 key购买 nike

将项目升级到 spring boot 1.5.9(spring 4.3 和 tomcat 8.5.24)后,使用 queryDSL 的服务在运行时失败,因为它无法从 jdk 库(tools.jar)中找到类.

/Q_742623943_01321512155_128635432.java:1: warning: Can't initialize javac processor due to (most likely) a class loader problem: java.lang.NoClassDefFoundError: com/sun/tools/javac/processing/JavacProcessingEnvironment
public class Q_742623943_01321512155_128635432 {
^
at lombok.javac.apt.LombokProcessor.init(LombokProcessor.java:83)
at lombok.core.AnnotationProcessor$JavacDescriptor.want(AnnotationProcessor.java:87)
at lombok.core.AnnotationProcessor.init(AnnotationProcessor.java:140)
at lombok.launch.AnnotationProcessorHider$AnnotationProcessor.init(AnnotationProcessor.java:69)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.<init>(JavacProcessingEnvironment.java:500)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next(JavacProcessingEnvironment.java:597)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:690)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
at com.mysema.codegen.JDKEvaluatorFactory.compile(JDKEvaluatorFactory.java:90)
at com.mysema.codegen.AbstractEvaluatorFactory.createEvaluator(AbstractEvaluatorFactory.java:76)
at com.mysema.codegen.AbstractEvaluatorFactory.createEvaluator(AbstractEvaluatorFactory.java:45)
at com.mysema.query.collections.DefaultEvaluatorFactory.create(DefaultEvaluatorFactory.java:120)
at com.mysema.query.collections.DefaultQueryEngine.project(DefaultQueryEngine.java:218)
at com.mysema.query.collections.DefaultQueryEngine.evaluateSingleSource(DefaultQueryEngine.java:190)
at com.mysema.query.collections.DefaultQueryEngine.list(DefaultQueryEngine.java:82)
at com.mysema.query.collections.AbstractColQuery.list(AbstractColQuery.java:149)

当我将 tools.jar 添加为 gradle 依赖项时,它会起作用,但这不是解决方案,因为不应将 jdk 库打包到项目中。

compile files(org.gradle.internal.jvm.Jvm.current().toolsJar)

我们使用的是旧版本的 queryDSL (2.7.3),该项目已将生成的代码提交给 repo(这是一个旧项目,我宁愿在编译时生成)。

更新:降级到 tomcat 后回到 v7.0.* 它再次开始工作。

知道 tomcat 8 发生了什么变化吗?它似乎没有加载 jdk 库。

最佳答案

确保 Tomcat 8 在 jdk 而不是 jre 上运行,那是因为 tools.jar 只是 jdk 的一部分。在 Tomcat 安装过程中,通常会选择 jre。我记得早期的 tomcats 需要一个 jdk 来编译 jsp,然后他们为此添加了自己的编译器,以便 tomcat 可以在 jre 上运行。

关于java - NoClassDefFoundError : JavacProcessingEnvironment at runtime after tomcat 8 upgrade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48339382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com