公司内部发布maven包是在公司构建服务器上编译的。最近一次上线,发现同样的代码,在本地的jdk8上能编译通过,但是在构建服务器上,就编译报错。
简化后的代码如下:
// JavaBugTest.java
import java.util.Optional;
public class JavaBugTest {
public static <T, E extends Throwable> T execute(RetryCallback<T, E> retryCallback) throws E {
return retryCallback.doWithRetry(new Object());
}
public static void main(String[] args) {
Optional.ofNullable(execute((param) -> new Object()))
.ifPresent(s -> System.out.println(s));
}
}
// RetryCallback.java
public interface RetryCallback<T, E extends Throwable> {
T doWithRetry(Object var1) throws E;
}
用maven编译报错如下: