MisakaTAT / Yuri-Kotlin

一个基于Kotlin重构的人工智障.jpg
GNU Affero General Public License v3.0
18 stars 5 forks source link

问一个关于Kumo的小问题( #149

Open kagg886 opened 2 days ago

kagg886 commented 2 days ago

这是报错 6b7fed938602bd156253df1c78b0c236

这是代码 096f4b30c95faa1b5ab5b398a60378c2

这是字体 image

有趣的是,无论我在WSL下测试,还是在远程上测试均不会报错 但是触发自家bot命令后会词云生成阶段就会爆这个错误,真不知道为什么。。。

MisakaTAT commented 2 days ago

可能是数据中有空字符串,检查下看看?或者 TrimSpace 下。

kagg886 commented 2 days ago

可能是数据中有空字符串,检查下看看?或者 TrimSpace 下。

经过确认,所有的数据都没有空字符串。

以下是remote debug的一些发现:

  1. kumo内部会依赖stringWidth方法取字符串在特定font下的长度

Image_1730341592741.png

  1. 程序实际上会走到handleCharWidth

Image_1730341597030.png

  1. 最终调用unsafe对象从native中取值,这个值就是一个char的宽度,令人惊讶的是只有在打包后使用bot命令触发后,这个值才是0,否则均不为0。

Image_1730341646185.png

所以对于这种情况大佬有什么思路吗,反正我黔驴技穷了(((

MisakaTAT commented 2 days ago

你jdk版本多少?打包后无论是bot指令触发还是代码里直接触发都会出现吗?

kagg886 commented 2 days ago

用openjdk

17和21均出现这个问题

将出问题的数据dump下来,

在wsl中跑测试 在出问题的环境中编译测试都没有问题 唯独打生产包时,bot触发命令时,会有这个问题

MisakaTAT commented 2 days ago

那这个有点奇怪了,有检查过打包后的 font 和 background img有被正常加载吗?

kagg886 commented 2 days ago

那这个有点奇怪了,有检查过打包后的 font 和 background img有被正常加载吗?

一定被加载了吧,毕竟如果没加载就不是这个错误了x

MisakaTAT commented 2 days ago

那这个有点奇怪了,有检查过打包后的 font 和 background img有被正常加载吗?

一定被加载了吧,毕竟如果没加载就不是这个错误了x

主要是只有打包后出现这个问题,就感觉比较奇怪(

xiaomujin commented 22 hours ago

换个字体试过嘛

kagg886 commented 22 hours ago

换个字体试过嘛

试过的!我resource里的字体都试了

(默认的字体不支持中文所以没用默认的)