我试图构建(在Eclipse中)并使用这个旧线程中的代码:
如何通过HTTP客户端传递客户端证书?
但我在编译它时遇到了问题,因为这一行导致编译器标记错误:
SSLContext sslContext = SSLContexts.custom().loadKeyMaterial(
MutualHttpsMain.class.getResource(TEST_CLIENT_KEYSTORE_RESOURCE),
storePassword,
keyPassword,
(aliases, socket) -> aliases.keySet().iterator().next()
).build();
错误是:
error: lambda expressions are not supported in -source 1.7
我的理解是,lambda表达式在Java/JDK 1.7中不支持,所以看起来Eclipse(或Maven)认为编译器是1.8,但我已经通过我的Eclipse配置,一切似乎都配置为使用JDK 1.8,所以我不知道为什么我仍然得到错误,所以我想知道:有没有可能将这一行转换为不再是lambda表达式?
有人能帮忙吗?
编辑:对不起,我不得不纠正上面的错误文本.正确的错误消息是1.7
而不是7
。
1条答案
按热度按时间moiiocjp1#
您不能使用Java 7编译器编译Java 8功能(lambda表达式、方法引用)。
假设你使用Apache HttpCore 4.4.16最新版本的方法,只需要实现一个匿名类
PrivateKeyStrategy
的示例:建议使用说明:如果您使用已弃用的Apache HttpClient
org.apache.http.conn.ssl.SSLContextBuilder
,请考虑迁移到Apache HttpCoreorg.apache.http.ssl.SSLContextBuilder
。