我剛剛嘗試過擴展SocketChannel,但似乎SocketChannel從JRE 1.7.4開始提供了一些新的API方法(http://openjdk.java.net/projects/nio/javadoc/爪哇/ NIO /渠道/ SocketChannel.html),問題是,如果我實現這些方法,我的JAR會引發以下錯誤,每當我使用Java 1.6在JRE中擴展SocketChannel 1.7.4+
Exception in thread "Thread-24" java.lang.NoClassDefFoundError: java/nio/channels/NetworkChannel
現在我想通了,爲什麼會出現相關的錯誤到的 「java/NIO /渠道/ NetworkChannel」,似乎一個SocketChannel接口NetworkChannel開始在JRE 1.7
現在,當我使用JRE 1.7.4+,一些運行時錯誤OC小人,居然奇怪的是,即使我有這些新的API方法實現,那麼我得到運行時錯誤,當我稱之爲「解包」的方法
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方法,所以簡而言之,當我實現了新的API方法時,它只適用於JRE 1.7.0到1.7.3
如何使我的JAR與JRE 1.6和1.7兼容,同時還擴展了SocketChannel類?
您有一些stacktrace嗎?通常,使用比開發JDK更新的JRE應該沒有問題。 – Fildor
如果我在JRE 1.6編譯JAR,然後在JRE 1.7中運行它沒有實施新的方法我收到以下錯誤 異常的線程「主題-27」了java.lang.RuntimeException:委託任務扔異常/錯誤 \t在陽光下.security.ssl.Handshaker.checkThrown(未知來源) \t在sun.security.ssl.SSLEngineImpl.checkTaskThrown(未知來源) \t在sun.security.ssl.SSLEngineImpl.readNetRecord(未知來源) \t在sun.security .ssl.SSLEngineImpl.unwrap(Unknown Source) \t at javax.net.ssl.SSLEngine.unwrap(Unknown Source) –
你可以添加一些代碼嗎?這對我來說沒有任何意義,真的。 – Fildor