gpt4 book ai didi

Java - emoji4j 静态方法调用结束/消失/死亡,没有错误

转载 作者:行者123 更新时间:2023-12-01 17:57:18 36 4
gpt4 key购买 nike

我正在编写一个插件,它从不和谐中获取消息并将其发送到我的世界服务器。Minecraft 客户端很难渲染表情符号。因此我选择使用https://github.com/kcthota/emoji4j将所有表情符号转换为其短代码(例如:😃 -> :smile: ..或类似的)

问题:

当调用静态方法shortCodify时,它永远不会返回。几乎就好像它杀死了代码所在的地方并且永远不会继续。控制台中没有错误。

看起来好像调用该方法就在那里杀死了它。第 1 步永远不会被打印。

它可以多次运行(每次我发送不和谐消息时)。它没有完全终止该进程。

我已经尝试过:

在各处添加调试打印以尝试追踪问题。

PS:不要恨我混合了 logger.info 和系统 println,我稍后会删除所有这些 xD

控制台输出

13:35:48 [INFO] [Core] Emoji manager exists.

13:35:48 [INFO] [Core] Attempting shortcodify (contains 1738 emojis)

13:35:48 [INFO] DEBUG: EventChat.java step 0

是的......它就停在那里!

代码片段:

我的代码/EventChat.java

注意:msg是一个字符串

if 语句(其中您可以看到 else)仅检查表情符号数据是否已加载,因为我在单独的线程中运行配置加载。知道它能够到达这里并打印数据存在,这不是问题。

...
} else {
logger.info("Emoji manager exists.");
try {
logger.info("Attempting shortcodify (contains " + EmojiManager.data().size() + " emojis)");
System.out.println("DEBUG: EventChat.java step 0");
msg = EmojiUtils.shortCodify(msg);
logger.info("new message: " + msg);
} catch (Exception e) {
logger.info("Catching exception");
e.printStackTrace();
}
}
logger.info("Emoji processed.");

Emoji4j/EmojiUtils.java

public static String shortCodify(String text) {
System.out.println("DEBUG: EmojiUtils.java step 1");
String emojifiedText = emojify(text);
System.out.println("DEBUG: EmojiUtils.java step 2");


for (Emoji emoji : EmojiManager.data()) {
StringBuilder shortCodeBuilder = new StringBuilder();
shortCodeBuilder.append(":").append(emoji.getAliases().get(0)).append(":");

emojifiedText = emojifiedText.replace(emoji.getEmoji(), shortCodeBuilder.toString());
System.out.println("DEBUG: EmojiUtils.java step 2.loop");
}
System.out.println("DEBUG: EmojiUtils.java step 3");
return emojifiedText;
}

最佳答案

我在似乎太长的时间后找到了答案。 (是的,2个月哈哈)

注意:这仅适用于将 JDA 与 emoji4j 结合使用的任何人

JDA 默认捕获所有 Throwables 并尝试将其记录到控制台,但由于 bungeecord 未使用相同的记录器(或类似的东西,我真的不知道为什么)而失败。

我并不太愚蠢,因为我 try catch 所有异常并记录它们。但它抛出的是可抛出的而不是异常......无论出于何种原因......

所以,长话短说,我正在捕获异常,而 JDA 正在捕获指示缺少依赖项的 Throwable 并使错误消失,而不是打印到控制台。

修复

try {

} catch (Throwable t) {
// error is now caught and can be logged using bungee's logger
}

关于Java - emoji4j 静态方法调用结束/消失/死亡,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60693236/

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