iTXTech / mirai-native

强大的 mirai 原生插件加载器
GNU Affero General Public License v3.0
371 stars 141 forks source link

在执行重载命令时出现错误 #92

Closed Yukari316 closed 4 years ago

Yukari316 commented 4 years ago

Bug描述 在重新载入插件时出现无法删除临时文件的问题

复现步骤 执行npm reload 0

期望的行为 插件重载

日志

npm reload 0

2020-09-15 23:05:01 I/Plugin MiraiNative: 插件 "SuiseiBot" (SuiseiBot.dev.dll) (ID: 0) 已被卸载,返回值为 0 。
2020-09-15 23:05:01 E/Plugin MiraiNative: Exception in coroutine Plugin MiraiNative of MiraiNative
kotlin.io.FileAlreadyExistsException: H:\Desktop\bot\mirua\.\data\MiraiNative\plugins\SuiseiBot.dev.dll -> H:\Desktop\bot\mirua\.\data\MiraiNative\plugins\SuiseiBot.tmp: Tried to overwrite the destination, but failed to delete it.
        at kotlin.io.FilesKt__UtilsKt.copyTo(Utils.kt:200)
        at kotlin.io.FilesKt__UtilsKt.copyTo$default(Utils.kt:191)
        at org.itxtech.mirainative.manager.PluginManager.loadPlugin(PluginManager.kt:115)
        at org.itxtech.mirainative.manager.PluginManager.reloadPlugin(PluginManager.kt:166)
        at org.itxtech.mirainative.manager.PluginManager$NpmCommand$reload$$inlined$buildString$lambda$1.invokeSuspend(PluginManager.kt:328)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)

运行环境

PeratX commented 4 years ago

image

无法复现,请等待新版本发布后使用新版本重新测试。

Yukari316 commented 4 years ago

啊。。。好的

PeratX commented 4 years ago

啊。。。好的 新版本已发布。

Yukari316 commented 4 years ago

在新版本上依旧有此问题

PeratX commented 4 years ago

考虑是dll本身编写的有问题无法被正常卸载

Yukari316 commented 4 years ago

实际测试并不是dll的问题 dll的所有接口均可以正常使用

PeratX commented 4 years ago

正常使用不代表可以被正常卸载。