【发布时间】:2020-11-05 14:14:33
【问题描述】:
我将我的 spring boot 应用程序从 1.5 升级到了 2.3.5(使用 spring boot gradle 插件)。当 spring boot 应用程序启动时,我收到以下警告 4 次:
2020-11-05 13:29:19.432 警告 3931 --- [nio-8080-exec-4] o.h.v.i.p.javabean.JavaBeanExecutable:HV000254:缺少参数 FacetField 的元数据(字符串,整数,字符串,字符串,字符串,整数, Class),它声明隐式或合成参数。自动的 方法参数的泛型类型信息的解析可能会产生 如果多个参数具有相同的擦除,则结果不正确。到 解决这个问题,用'-parameters'标志编译你的代码。
我的 FacetField 枚举如下所示:
public enum FacetField {
CONST_1("KEY", "ESFIELD", "RESOURCEKEY"),
CONST_2("KEY", "ESFIELD", "RESOURCEKEY"),
CONST_3("KEY", "ESFIELD", ""),
CONST_4("KEY", "ESFIELD", "ESMAXFIELD", "RESOURCEKEY", Hours.class),
CONST_5("KEY", "ESFIELD", "RESOURCEKEY", Experience.class),
CONST_6("KEY", "ESFIELD", "", Distance.class);
private String key;
private String esField;
private String esMaxField;
private String resourcekey;
private Class<? extends RangeFacet> rangeFacet;
FacetField(final String key, final String esField, final String resourcekey) {
this.key = key;
this.esField = esField;
this.resourcekey = resourcekey;
this.rangeFacet = null;
}
FacetField(final String key, final String esField, final String resourcekey, final Class<? extends RangeFacet> rangeFacet) {
this.key = key;
this.esField = esField;
this.resourcekey = resourcekey;
this.rangeFacet = rangeFacet;
}
FacetField(final String key, final String esMinField, final String esMaxField, final String resourcekey, final Class<? extends RangeFacet> rangeFacet) {
this.key = key;
this.esField = esMinField;
this.esMaxField = esMaxField;
this.resourcekey = resourcekey;
this.rangeFacet = rangeFacet;
}
public String getKey() {
return key;
}
public String getEsField(final FieldProperty fieldProperty) {
return esField + fieldProperty.getEsFieldProperty();
}
public String getEsMinField() {
return esField;
}
public String getEsMaxField() {
return esMaxField;
}
public String getResourcekey() {
return resourcekey;
}
public enum Distance implements RangeFacet {
FROM_0_TO_5(0d, 5d, "5"),
FROM_0_TO_10(0d, 10d, "10"),
FROM_0_TO_20(0d, 20d, "20"),
FROM_0_TO_30(0d, 30d, "30"),
FROM_0_TO_50(0d, 50d, "50");
private final Double min;
private final Double max;
private final String selectableDescription;
Distance(final Double min, final Double max, final String selectableDescription) {
this.min = min;
this.max = max;
this.selectableDescription = selectableDescription;
}
@Override
public Double getMin() {
return this.min;
}
@Override
public Double getMax() {
return this.max;
}
@Override
public String getSelectableDescription() {
return this.selectableDescription;
}
}
public enum Experience implements RangeFacet {
TO_1(0d, 1d, "1"),
FROM_1_TO_2(1d, 2d, "2"),
FROM_2_TO_5(2d, 5d, "5"),
FROM_5_TO_10(5d, 10d, "10"),
FROM_10(10d, null, "10+");
private final Double min;
private final Double max;
private final String selectableDescription;
Experience(final Double min, final Double max, final String selectableDescription) {
this.min = min;
this.max = max;
this.selectableDescription = selectableDescription;
}
@Override
public Double getMin() {
return this.min;
}
@Override
public Double getMax() {
return this.max;
}
@Override
public String getSelectableDescription() {
return this.selectableDescription;
}
}
public enum Hours implements RangeFacet {
FROM_0_TO_8(0d, 8d, "8"),
FROM_9_TO_16(9d, 16d, "16"),
FROM_17_TO_24(17d, 24d, "24"),
FROM_25_TO_32(25d, 32d, "32"),
FROM_33_TO_36(33d, 36d, "36"),
FROM_37(37d, null, "40");
private final Double min;
private final Double max;
private final String selectableDescription;
Hours(final Double min, final Double max, final String selectableDescription) {
this.min = min;
this.max = max;
this.selectableDescription = selectableDescription;
}
@Override
public Double getMin() {
return this.min;
}
@Override
public Double getMax() {
return this.max;
}
@Override
public String getSelectableDescription() {
return this.selectableDescription;
}
}
}
我唯一能找到与此相关的东西是 github 上的这个问题:https://github.com/oracle/graal/issues/1941
谁能解释一下?
【问题讨论】:
标签: java spring spring-boot jvm graalvm