2015-01-07 2 views
1

방법을 호출 할 수 없습니다 나는이 문제를 통해 오는 오전 : 여기 부두 WebSocketException 내가 자바 WebSocket을 사용하려고 시도하고

Cannot call method public final void package.ClientWebSocket#jettyOnMessage(byte[], int, int) with args: [[B, java.lang.Integer, java.lang.Integer] 

실제로

@OnWebSocketMessage 
public final void jettyOnMessage(final byte[] data, final int offset, final int length) { 
    onMessage(ByteBuffer.wrap(data, offset, length)); 
} 

여기에 호출되는 코드입니다 메서드 서명이 무엇인지 설명하는 설명서가 있습니다.

* <u>Binary Message Versions</u> 
* <ol> 
* <li><code>public void methodName(byte buf[], int offset, int length)</code></li> 
* <li><code>public void methodName({@link Session} session, byte buf[], int offset, int length)</code></li> 
* <li><code>public void methodName(InputStream stream)</code></li> 
* <li><code>public void methodName({@link Session} session, InputStream stream)</code></li> 
* </ol> 
*/ 

통화의 첫 번째 버전을 사용 중임을 알리십시오. 내가 뭘 잘못하고 있니?

Edit1 :

나는 final이 아니며 아무 것도 바뀌지 않았습니다.

답변

1

누구나 비슷한 예외가 발생하는 경우 문제를 발견했습니다.

내부적으로 내 메서드 중 하나가 catch되지 않는 예외를 throw합니다.

전체 코드를 한 번에 래핑하는 경우이 예외를 완전히 피할 수 있으며 throw되는 실제 이유를 찾을 수 있습니다.

코드가 고정 문제 :의 onMessage 가능성이

임 내 경우는 그것이 내가 바보 list.get을하고 있던 때문에 ArrayOutOfBoundsException 었죠 예외 (는 list.size을 던질 수

@OnWebSocketMessage 
public final void jettyOnMessage(final byte[] data, final int offset, final int length) { 
    try { 
     onMessage(ByteBuffer.wrap(data, offset, length)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

());

당신을 사는 작은 것들.

+2

예를 들었습니까? Jetty의 차후 버전에서이 오류 메시지를 더 명확히하고 싶습니다. –

+0

나는 실제 솔루션 코드를 보여줄 수있는 대답을 편집했지만, 어떻게하면이 메서드를 호출하는지에 달려 있다고 생각합니다. 리플렉션을 사용하는 경우이 문제가 해결 될 것이라고 생각합니다. http://stackoverflow.com/questions/9049749/java-reflection-and-checked-exceptions 이 게시물은 다른 사람이 볼 수있는 방법을 찾은 것 같습니다. 원인 http://stackoverflow.com/questions/25549072/exception-using-jetty-websocket-while-trying-to-parse-received-messages – dtracers

+0

또한 jetty-all (Maven에서) 버전 9.2.2를 사용하고 있습니다. v20140723 – dtracers

관련 문제