我刚刚尝试扩展SocketChannel
,但似乎SocketChannel
从JRE 1.7.4(SocketChannel
)开始有一些新的API方法可用。
Exception in thread "Thread-24" java.lang.NoClassDefFoundError: java/nio/channels/NetworkChannel
字符串
现在我明白了为什么会有一个与java/nio/channels/NetworkChannel
相关的错误,看起来SocketChannel
在JRE 1.7上实现了接口NetworkChannel
现在,当我使用JRE 1.7.4+时,会出现一些运行时错误。实际上奇怪的是,即使我实现了这些新的API方法,当我调用unwrap
方法时,也会出现运行时错误:
Exception in thread "Thread-27" java.lang.RuntimeException: Delegated task threw Exception/Error
at sun.security.ssl.Handshaker.checkThrown(Unknown Source)
at sun.security.ssl.SSLEngineImpl.checkTaskThrown(Unknown Source)
at sun.security.ssl.SSLEngineImpl.readNetRecord(Unknown Source)
at sun.security.ssl.SSLEngineImpl.unwrap(Unknown Source)
at javax.net.ssl.SSLEngine.unwrap(Unknown Source)
at CustomSocketChannel.unwrap(CustomSocketChannel.java:565)
型
在这一行,我只调用sslEngine.unwrap
方法。
我如何使我的SocketChannel
与JRE 1.6和1.7兼容,同时扩展SocketChannel
类?
1条答案
按热度按时间idfiyjo81#
好的,看起来我已经找到了JRE 1.7.4+上运行时错误的问题。看起来它并不是真正的解包错误,而是证书错误。同样,当我调用
SSLEngine.unwrap
时,每当我得到运行时错误时,我都会得到以下错误:字符串
愚蠢的我,我应该注意到“由”短语引起,因为我下面有这个代码,所以似乎从JRE 1.7.4开始。如果我在
getAcceptedIssuers()
内部抛出异常,那么我就会有这个问题,所以我最终没有抛出异常,而是返回null
。我不确定1.7.4+版本的问题是否与此修复(JDK-7142172)有关,但似乎确实如此。
型