繁体   English   中英

根据建议添加了spring-boot-configuration-processor,但在RoundDispatcher中产生了NoClassDefFoundError

[英]Added spring-boot-configuration-processor as recommended, but produced NoClassDefFoundError in RoundDispatcher

我正在处理一个SpringBoot项目,我只是将其从SpringBoot 1.5转换为2。我注意到带有@ConfigurarationProperties批注的config类bean方法(对于我的DataSource)有警告说:

使用@ConfigurationProperties时,建议在类路径中添加“ spring-boot-configuration-processor”以生成配置元数据

因此,我将该工件添加到了POM中,并删除了警告,但是我不确定这样做有什么好处。 我阅读了有关“配置元数据”的附录,但仍不确定要点是什么。

更糟糕的是,我发现尽管此更改在桌面上构建和测试应用程序没有问题,但是当我在Linux CI服务器上运行构建时,它失败并显示以下内容:

[错误] ... / package-info.java:1.错误在... / package-info.java中(在第0行)/ ** ^内部编译器错误:java.lang.Exception:java.lang.NoClassDefFoundError :org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:172)上的org / springframework / boot / configurationprocessor / metadata / JsonMarshaller [错误]发现1错误和1警告。

然后,我注释掉了工件引用,从而带回了警告并修复了我的CI构建。

谁能告诉我这是怎么回事?

这是怎么回事:

您正在使用groovy-eclipse-batch / groovy-eclipse-compiler进行构建,并且遇到了eclipse编译器中的错误。 https://bugs.eclipse.org/bugs/show_bug.cgi?id=530665显示了根本原因。 在Eclipse编译器4.8 RC2中将其标记为已修复。 不幸的是,在我自己对同一个问题的调查中,我一直无法弄清groovy-eclipse Maven构件中使用了哪个版本的eclipse编译器(甚至也不应该更改哪个版本以选择给定的版本! )

抱歉,目前此功能不是很好。 即使使用最新的两种日食工件,我也无法使其工作。

如果可以将构建迁移到gradle或切换到gmavenplus插件(这就是我所做的),则可以避开该问题,因为在这种情况下无需依赖eclipse。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM