Java Jetty WebSocketException无法调用方法

Java Jetty WebSocketException无法调用方法,java,websocket,jetty,java-websocket,Java,Websocket,Jetty,Java Websocket,我尝试在java中使用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(fina

我尝试在java中使用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>
 */
正如您所知,我正在使用呼叫的第一个版本。 我做错了什么

编辑1:


我将该方法设置为非最终方法,这并没有改变任何东西。

如果有人遇到类似的异常,我就解决了这个问题

问题是我的一个方法在内部抛出了一个未捕获的异常

如果您将整个代码包装在一次尝试中,您可以完全避免此异常,并找到引发它的真正原因

修复问题的代码:

@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();
    }
}
其中onMessage可能会引发异常

在我的案例中,它最终成为BoundsException的一个数组,因为我愚蠢地执行了list.get(list.size())


这些小事让你着迷。

你有这样的例子吗?我希望在Jetty的未来版本中更清楚地显示错误消息。我编辑了答案以显示实际的解决方案代码,但我认为这取决于您如何调用该方法。如果您使用的是反射,那么我认为这将解决它:这篇来自另一个人的帖子似乎找到了一种方法来说明原因,而且我正在使用jetty all(来自maven)版本9.2.2.V20140723 Created jetty bug来跟踪这一问题。。。