Java Can';不要让杰克逊和龙目山一起工作

Java Can';不要让杰克逊和龙目山一起工作,java,netbeans,jackson,lombok,Java,Netbeans,Jackson,Lombok,我正在尝试结合杰克逊和龙目舞。这些是我的课程: package-testelombok; 导入com.fasterxml.jackson.annotation.JsonCreator; 导入com.fasterxml.jackson.annotation.JsonProperty; 导入lombok.allargsconstuctor; 进口龙目山价值; 进口龙目草; @价值观 @枯萎 @AllArgsConstructor(onConstructor=@_u(@JsonCreator)) 公共

我正在尝试结合杰克逊和龙目舞。这些是我的课程:

package-testelombok;
导入com.fasterxml.jackson.annotation.JsonCreator;
导入com.fasterxml.jackson.annotation.JsonProperty;
导入lombok.allargsconstuctor;
进口龙目山价值;
进口龙目草;
@价值观
@枯萎
@AllArgsConstructor(onConstructor=@_u(@JsonCreator))
公共类TestFoo{
@JsonProperty(“xoom”)
私有字符串x;
私人INTZ;
}
package-testelombok;
导入com.fasterxml.jackson.databind.ObjectMapper;
导入com.xebia.jacksonlombok.jacksonlombokannotationintrosector;
导入java.io.IOException;
公共类TestLombok{
公共静态void main(字符串[]args)引发IOException{
TestFoo tf=新的TestFoo(“a”,5);
系统输出打印LN(带X(“b”));
ObjectMapper om=new ObjectMapper().SetAnnotationIntroSector(新JacksonLombokanNotationIntroSector());
System.out.println(om.writeValueAsString(tf));
TestFoo tf2=om.readValue(om.writeValueAsString(tf),TestFoo.class);
System.out.println(tf2);
}
}
这些是我要添加到classpth中的罐子:

  • 龙目岛:(1.16.10版)

  • 杰克逊注释:

  • 杰克逊核心:

  • Jackson数据绑定:

  • 杰克逊·隆波克:

我用Netbeans编译它(我不认为这是真的相关,但无论如何,我报告它是为了使它完美而忠实地再现)。上述五个JAR保存在项目文件夹中名为“
lib
”的文件夹中(以及“
src
”、“
nbproject
”、“
test
”和“
build
”)。我通过项目属性中的“addjar/Folder”按钮将它们添加到Netbeans中,它们按照上面列表的顺序列出。该项目是一个标准的“Java应用程序”类型的项目

此外,Netbeans项目被配置为“保存时不编译”、“生成调试信息”、“报告不推荐的API”、“跟踪java依赖项”、“Activate注释处理”和“编辑器中的Activate注释处理”。Netbeans中没有显式配置注释处理器或注释处理选项。此外,“
-Xlint:all
”命令行选项在编译器命令行中传递,编译器在外部VM上运行

我的javac版本是1.8.0_72,我的java版本是1.8.0_72-b15。我的Netbeans是8.1

我的项目编译得很好。但是,它在执行时抛出一个异常。例外似乎不是任何看起来容易或明显可以修复的东西。以下是输出,包括stacktrace:

TestFoo(x=b,z=5) {“z”:5,“xoom”:“a”} 线程“main”com.fasterxml.jackson.databind.JsonMappingException中的异常:构造函数[testelombok.TestFoo的构造函数,注释:{接口java.beans.ConstructorProperties=@java.beans.ConstructorProperties(值=[x,z]),接口com.fasterxml.jackson.annotation.JsonCreator=@com.fasterxml.jackson.annotation.JsonCreator(mode=DEFAULT)}]没有属性名注释;当多参数构造函数被注释为创建者时,必须具有名称 在[Source:{“z”:5,“xoom”:“a”};第1行,第1列] 位于com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:296) 位于com.fasterxml.jackson.databind.deser.DeserializerCache.\u createAndCache2(DeserializerCache.java:269) 位于com.fasterxml.jackson.databind.deser.DeserializerCache.\u createAndCacheValueDeserializer(DeserializerCache.java:244) 位于com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142) 位于com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:475) 在com.fasterxml.jackson.databind.ObjectMapper.\u findRootDeserializer(ObjectMapper.java:3890) 位于com.fasterxml.jackson.databind.ObjectMapper.\u readMapAndClose(ObjectMapper.java:3785) 位于com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2833) TestLombok.TestLombok.main(TestLombok.java:14) 原因:java.lang.IllegalArgumentException:构造函数的参数#0[testelombok.TestFoo的构造函数,注释:{interface java.beans.ConstructorProperties=@java.beans.ConstructorProperties(value=[x,z]),interface com.fasterxml.jackson.annotation.JsonCreator=@com.fasterxml.jackson.annotation.JsonCreator(mode=DEFAULT)}]没有属性名称注释;当多参数构造函数被注释为创建者时,必须具有名称 位于com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.\u addDeserializerConstructors(BasicDeserializerFactory.java:511) 位于com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.\u ConstructionDefaultValueInstantiator(BasicDeserializerFactory.java:323) 位于com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.FindValue实例化器(BasicDeserializerFactory.java:253) 位于com.fasterxml.jackson.databind.desr.beandSerializerFactory.buildbeandSerializer(beandSerializerFactory.java:219) 位于com.fasterxml.jackson.databind.desr.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:141) 位于com.fasterxml.jackson.databind.deser.DeserializerCache.\u createDeserializer2(DeserializerCache.java:406) 位于com.fasterxml.jackson.databind.deser.DeserializerCache.\u createDeserializer(DeserializerCache.java:352) 在com.fasterxml.jackson.databind.deser.DeserializerCache.\u createAndCache2(DeserializerCache.java:264) ... 还有7个 我已经尝试过用
@Value
@allargsconstuctor
注释随机戳,但我没有做得更好

我搜索了例外情况,然后。然而,这仍然不能说明这个bug是什么或者如何修复它。而且,我找不到任何有用的东西来查找som
@Value
@Wither
@AllArgsConstructor(suppressConstructorProperties = true)
public class TestFoo {
    @JsonProperty("xoom")
    private String x;
    private int z;
}
@JsonAutoDetect(fieldVisibility = Visibility.ANY)
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@Data
@Accessors(fluent = true)
@NoArgsConstructor
@AllArgsConstructor
@JsonAutoDetect(fieldVisibility = Visibility.ANY)
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@Data
@Accessors(fluent = true)
@NoArgsConstructor
@AllArgsConstructor
public class Person {
    String id;
    String first;
    String last;
}
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
public class Person {
   String id;
   String first;
   String last;
}
    om.registerModule(new ParameterNamesModule());
    om.setVisibility(FIELD, JsonAutoDetect.Visibility.ANY);
    om.setVisibility(CREATOR, JsonAutoDetect.Visibility.ANY);
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import lombok.Builder;
import lombok.Value;

@JsonDeserialize(builder = Detail.DetailBuilder.class)
@Value
@Builder
public class Detail {

    private String url;
    private String userName;
    private String password;
    private String scope;

    @JsonPOJOBuilder(withPrefix = "")
    public static class DetailBuilder {

    }
}
mapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector() {
        @Override
        public JsonPOJOBuilder.Value findPOJOBuilderConfig(AnnotatedClass ac) {
            if (ac.hasAnnotation(JsonPOJOBuilder.class)) {//If no annotation present use default as empty prefix
                return super.findPOJOBuilderConfig(ac);
            }
            return new JsonPOJOBuilder.Value("build", "");
        }
    });
if (_cfgConstructorPropertiesImpliesCreator
            && config.isEnabled(MapperFeature.INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES)
public JacksonAnnotationIntrospector setConstructorPropertiesImpliesCreator(boolean b)
{
    _cfgConstructorPropertiesImpliesCreator = b;
    return this;
}
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <compilerArgs>
                        <arg>-parameters</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.Value;

@Value
@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
@AllArgsConstructor
public class LocationDto {

    double longitude;
    double latitude;
}

class ImmutableWithLombok {

    public static void main(String[] args) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();

        String stringJsonRepresentation = objectMapper.writeValueAsString(new LocationDto(22.11, 33.33));
        System.out.println(stringJsonRepresentation);

        LocationDto locationDto = objectMapper.readValue(stringJsonRepresentation, LocationDto.class);
        System.out.println(locationDto);
    }
}
lombok.anyConstructor.addConstructorProperties=true
@Data
@AllArgsConstructor
public class MyPojo {

    @JsonProperty("Description")
    private String description;
    @JsonProperty("ErrorCode")
    private String errorCode;
}
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class SomeClass
public class SomeClass {

   // some code here

   @JsonCreator
   public static SomeClass factory(/* params here dressing them in @JsonProperty annotations*/) {
      return new SomeClass();
   }
}
lombok.copyableAnnotations += com.fasterxml.jackson.annotation.JsonProperty
private boolean isAggregate;
Exception: Unrecognized field "isAggregate" (class 
private Boolean isAggregate;
@Builder
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Person {

    @JsonProperty("user_name")
    private String name;
}
@JsonDeserialize(builder = MyDto.MyDtoBuilder.class)
@Builder
@Getter
public class MyDto {

    @JsonProperty("user_id")
    private String userId;

    @JsonPOJOBuilder(withPrefix = "")
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class MyDtoBuilder {
    }
}
lombok.anyConstructor.addConstructorProperties=true