gpt4 book ai didi

java - Jetty WebSocketException 无法调用方法

转载 作者:行者123 更新时间:2023-11-30 08:58:06 25 4
gpt4 key购买 nike

我正在尝试在 java 中使用 websockets,我遇到了这个问题:

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:

我将方法设为非 final 并且没有改变任何内容。

最佳答案

如果有人遇到类似的异常,我会弄清楚这个问题。

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

如果您将整个代码包装在一个 try 中,您可以完全避免此异常并找到它被抛出的真正原因。

解决问题的代码:

@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 可能抛出异常的地方

我的情况是它最终成为一个 ArrayOutOfBoundsException 因为我愚蠢地做 list.get(list.size());

是小事打动了你。

关于java - Jetty WebSocketException 无法调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com