GWT-杰克逊公寓看似未定义类的构造函数调用

问题描述 投票:0回答:2

看着试图使用GWT-杰克逊公寓库做一定的RPC,但在例子看时,试图运行一些演示总有一个奇怪的未定义构造函数调用接口。

 @JSONMapper
public interface SampleMapper extends ObjectMapper<SimpleBean> {
    SampleMapper INSTANCE = new App_SampleMapperImpl();
}

来源:https://github.com/DominoKit/gwt-jackson-apt/blob/f60d0358b90bcbf78d066796f680aeae1d7156bb/samples/basic/basic-client/src/main/java/org/dominokit/jacksonapt/samples/basic/App.java

我一直在周围挖掘,但没有App_SampleMapperImpl的()定义在源代码中的任何地方。而且它不会编译,说是有一个未定义的符号

同样的事情在它可以在此页中找到的自述文件的例子做:qazxsw POI

谁能解释这是怎么回事?而如何定义这个构造函数,或暗示的保证?什么做我需要做的让这个例子编译?

java gwt gwt-jackson-apt
2个回答
3
投票

假设你是一个Maven项目,最重要的是,包括注解处理器产生的映射器。然后,一旦该项目知道如何生成它们,你就可以在你的代码中使用它们。

注释处理器而编译器运行的,这意味着你在技术上可以编写不出现它将编译代码运行。然后,因为编译器运行时,它要求所有注册注释处理器取悦基于注释和现有类型(并不像你想象的https://github.com/DominoKit/gwt-jackson-apt/tree/f60d0358b90bcbf78d066796f680aeae1d7156bb丢失的引用)的代码。然后,处理器上运行,产生丢失类,然后编译继续。

通常发生的事情是,你建立在编写代码时(日食,例如,这并在每次保存文件时,的IntelliJ做它,当你问一个构建,等等),然后在类存在,可以参考向前发展。即使项目清理和重建,而参考好像它不应该工作,将尽快编译器运行工作。


在这种情况下,我们需要效仿的榜样,确保了处理器。在App_Sample_MapperImpl,我们看到这款的依赖关系:

https://github.com/DominoKit/gwt-jackson-apt/blob/f60d0358b90bcbf78d066796f680aeae1d7156bb/samples/shared-mappers/shared-mappers-shared/pom.xml

此标记 <dependency> <groupId>org.dominokit.jackson</groupId> <artifactId>jackson-apt-processor</artifactId> <version>1.0-SNAPSHOT</version> <scope>provided</scope> </dependency> ,因为它只需要编译,那么不应该包括在以后的依赖关系图。对于每一个特定的IDE,你可能需要指定其他选项让它自动重新运行(Eclipse的一个复选框,没什么的IntelliJ我相信,和我没有使用其他的IDE中过长的说)。

Maven的最后一点:你必须使用一个相对较新的Maven的编译器插件,这样生成的代码正确处理:最新的是3.8.0,发布2018年7月,但我觉得3.5.1以后什么就足够了,如果你必须使用一老一。


0
投票

只要按照该项目的主要页面上的例子:scope=provided

那样有用吗 ?

© www.soinside.com 2019 - 2024. All rights reserved.