QuickEasyMenu和TouhouLittleMaid冲突问题
easyRongYi opened this issue · 15 comments
很头疼,我现在完全不知道怎么解决:
- QuickEasyMenu 调用了 JS 引擎,导致 TouhouLittleMaid 模组调用 JS 引擎失败。
- TouhouLittleMaid 可以通过调用系统 JS 引擎来规避这个问题,但是它调用了自带的 JS 引擎
- TouhouLittleMaid 如果调用了系统 JS 引擎,大约有 2% 玩家在使用 Java 8 60 以下版本的 Java,会导致女仆没有动画。
- 所以难点来了,我应该是说服那 2% 的玩家更新它们的 Java,还是说服你放弃使用 QuickEasyMenu
很头疼,我现在完全不知道怎么解决:
- QuickEasyMenu 调用了 JS 引擎,导致 TouhouLittleMaid 模组调用 JS 引擎失败。
- TouhouLittleMaid 可以通过调用系统 JS 引擎来规避这个问题,但是它调用了自带的 JS 引擎
- TouhouLittleMaid 如果调用了系统 JS 引擎,大约有 2% 玩家在使用 Java 8 60 以下版本的 Java,会导致女仆没有动画。
- 所以难点来了,我应该是说服那 2% 的玩家更新它们的 Java,还是说服你放弃使用 QuickEasyMenu
是否可以检查用户的Java版本,对于高版本java使用系统引擎,低版本java使用模组自带引擎呢?
那么那些使用 Java 8 60 版本以下的人,在加装了类似的模组后,还是会导致游戏崩溃。
不过我目前也只能想到这个解决办法了。
欸?如果低版本java没有内置js引擎(或者内置js引擎不好使的话),为啥QuickEasyMenu这类mod能在低版本java上正常运行呢?
因为 QuickEasyMenu 不是开源模组,我刚刚只好反编译来了解为何会出现这个问题。
基本上和 QuickEasyMenu 的不规范写法存在关系,QuickEasyMenu 在调用 JS 引擎时候没有采用官方文档提示的设置 ClassLoader 为 null 来获取系统 ClassLoader,而是自己手动把所有 jdk 开头的库强行塞入游戏的 ClassLoader 中,导致和我内置的 Loader 发生了冲突。
我之前还疑惑为何 Custom NPCs 模组也是调用了 JS 引擎,但是一点问题也没有,然后看源码才发现了这个问题。
因为 QuickEasyMenu 不是开源模组,我无法通过发送 Pull Request 修复它的问题,所以我建议你删除 QuickEasyMenu 或者我这个模组……
好,自动构建好了下个版本了 https://ci.covertdragon.team/job/TouhouLittleMaid/,你下载试试,看看这次还崩溃么