OpenJDK11编译报错 java.lang.NullPointerException

使用Maven进行编译时,直接编译失败并提示以下错误

compiler message file broken: key=compiler.misc.msg.bug arguments=11.0.2, {1}, {2}, {3}, {4}, {5}, {6}, {7}
java.lang.NullPointerException
	at jdk.compiler/com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitApply(Flow.java:1235)
	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1634)
	at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
	at jdk.compiler/com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:398)
	at jdk.compiler/com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitVarDef(Flow.java:989)
	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:956)
	at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)

解决
我这里导致此问题的原因是:
在使用RestTemplate时,用了 ParameterizedTypeReference这个类约束返回参数类型。
但具体的泛型是由结果推断出来的。
当然还有其它原因也会导致编译不通过
大概代码如下;

ResponseEntity<T> clientsResponse = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<>() {});

在IDEA的提示下,泛型类型可由声明推导,建议去掉后面的类型。
这种情况下编译是不能通过的。

需改成

ResponseEntity<T> clientsResponse = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<T>() {});

或者

ParameterizedTypeReference<T> responseType = new ParameterizedTypeReference<>() {
        };
ResponseEntity<T> clientsResponse = restTemplate.exchange(url, HttpMethod.GET, null, responseType );
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值