@Colter23 BufferImage好像Heap Memory容易爆掉,不好估计是因为难以预料哪一个长度比较长会换行,而且数据比较多,也不好估计范围,全部按照最大的来就会爆内存或者浪费留下很多空白
N70_ 发布的帖子
-
RE: Graphic2D能动态调整画布的大小吗?
-
RE: Graphic2D能动态调整画布的大小吗?
@Colter23
如果是少量数据的话其实方法2加点预留足够的,但是数据变化性和量实在有点大,有的很短,有的很长,且不说精细计算,就算估计也不是很好估计。
我试一下方法1吧 -
RE: Graphic2D能动态调整画布的大小吗?
@XDorz 假如我的画笔y坐标超过了10000,我就把已经写入好的部分编码成base64,然后再开一张新的画布(宽度为2倍),然后把编码成base64的解码成图片渲染到这个画布上,是这个意思吗。
-
Graphic2D能动态调整画布的大小吗?
如题,试图使用Grahic2D类把JSON里提取到的大量数据渲染到一张图片上,但是JSON数据变化性比较大,某个字段可能有10000条数据,也可能有8000条,这中间还有可能因为数据比较长产生换行,所以没法一开始就计算好尺寸,我想让画布可以随时动态调整大小。比如画笔y坐标超过某个值的时候就自动向右扩展一块,有什么方法吗
-
RE: Mirai Selenium Plugin,前置插件,用于使用Selenium调用浏览器进行截图等操作
请问一下大佬,在使用该插件自定义配置对网页进行截图的时候,设置的截图高度和宽度无效是怎么一回事呢?
我调用插件截图的代码是这样子的val tmpPath = dataFolderPath.resolve("temp.png") MiraiSeleniumConfig.reload() driver = MiraiSeleniumPlugin.driver(config = MiraiSeleniumConfig) driver.get("https://voice.baidu.com/act/newpneumonia/newpneumonia/") val tmpFile= driver.getScreenshotAs(OutputType.FILE) ApiExerciseMain.logger.info("截图保存位置:${tmpFile.absolutePath}") val img = tmpFile.uploadAsImage(subject!!) sendMessage(img)
我的自定义配置如下:
# 截图UA user_agent: 'Mozilla/5.0 (Linux; Android 11; Redmi Note 8 Pro Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045913 Mobile Safari/537.36 V1_AND_SQ_8.8.68_2538_YYB_D A_8086800 QQ/8.8.68.7265 NetType/WIFI WebP/0.3.0 Pixel/1080 StatusBarHeight/76 SimpleUISwitch/1 QQTheme/2971 InMagicWin/0 StudyMode/0 CurrentMode/1 CurrentFontScale/1.0 GlobalDensityScale/0.9818182 AppId/537112567 Edg/98.0.4758.102' # 截图宽度 width: 580 # 截图高度 height: 456 # 无头模式(后台模式) headless: true # 指定使用的浏览器,Chrome/Firefox browser: Firefox
最后截图出来尺寸总是600*715的尺寸
-
RE: 在编译插件的时候出现这个报错
build.gradle.kt文件内容如下
plugins { val kotlinVersion = "1.6.10" kotlin("jvm") version kotlinVersion kotlin("plugin.serialization") version kotlinVersion id("net.mamoe.mirai-console") version "2.12.0" } group = "org.YeXiaoU" version = "0.1.0" repositories { maven("https://maven.aliyun.com/repository/public") // 阿里云国内代理仓库 mavenCentral() }
-
RE: 在编译插件的时候出现这个报错
/* * Copyright 2019-2021 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ @file:Suppress("unused") package net.mamoe.mirai.console.compiler.common import kotlin.annotation.AnnotationTarget.* /** * 标记一个参数的语境类型, 用于帮助编译器和 IntelliJ 插件进行语境推断. */ @Target(VALUE_PARAMETER, PROPERTY, FIELD, FUNCTION, TYPE, TYPE_PARAMETER) @Retention(AnnotationRetention.BINARY) public annotation class ResolveContext( vararg val kinds: Kind, ) { /** * 元素数量可能在任意时间被改动 */ public enum class Kind { /////////////////////////////////////////////////////////////////////////// // ConstantKind /////////////////////////////////////////////////////////////////////////// /* * WARNING: IF YOU CHANGE NAMES HERE, * YOU SHOULD ALSO CHANGE THEIR COUNTERPARTS AT net.mamoe.mirai.console.compiler.common.resolve.ResolveContextKind */ /** * PluginDescription.id */ PLUGIN_ID, // ILLEGAL_PLUGIN_DESCRIPTION /** * PluginDescription.name */ PLUGIN_NAME, // ILLEGAL_PLUGIN_DESCRIPTION /** * PluginDescription.version * SemVersion.Companion.invoke */ SEMANTIC_VERSION, // ILLEGAL_PLUGIN_DESCRIPTION /** * SemVersion.Companion.parseRangeRequirement */ VERSION_REQUIREMENT, // ILLEGAL_VERSION_REQUIREMENT /** * Command.allNames */ COMMAND_NAME, // ILLEGAL_COMMAND_NAME /** * PermissionId.name */ PERMISSION_NAMESPACE, // ILLEGAL_PERMISSION_NAMESPACE /** * PermissionId.name */ PERMISSION_NAME, // ILLEGAL_PERMISSION_NAME /** * PermissionId.parseFromString */ PERMISSION_ID, // ILLEGAL_PERMISSION_ID /** * 标注一个泛型, 要求这个泛型必须拥有一个公开无参 (或所有参数都可选) 构造器. * * PluginData.value */ RESTRICTED_NO_ARG_CONSTRUCTOR, // NOT_CONSTRUCTABLE_TYPE RESTRICTED_CONSOLE_COMMAND_OWNER, RESTRICTED_ABSTRACT_MESSAGE_KEYS; public companion object } public companion object }
这部分是net.mamoe.mirai.console.compiler.common.ResolveContext的代码,我应该没有修改过这部分
/* * Copyright 2019-2021 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ package net.mamoe.mirai.console.compiler.common import kotlin.annotation.AnnotationTarget.FUNCTION /** * 标记一个函数, 在其函数体内限制特定一些函数的使用. * * @suppress 这是实验性 API, 可能会在未来有不兼容变更 */ @Target(FUNCTION) @Retention(AnnotationRetention.BINARY) public annotation class RestrictedScope( vararg val kinds: Kind, ) { public enum class Kind { PERMISSION_REGISTER, // ILLEGAL_PERMISSION_REGISTER_USE COMMAND_REGISTER, // ILLEGAL_COMMAND_REGISTER_USE } }
这部分是net.mamoe.mirai.console.compiler.common.RestrictedScope的代码,应该也没有修改动过
-
在编译插件的时候出现这个报错
Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details > Task :compileJava FAILED 警告: 未知的枚举常量 Kind.PLUGIN_ID 原因: 找不到net.mamoe.mirai.console.compiler.common.ResolveContext$Kind的类文件 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.PLUGIN_NAME 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.COMMAND_REGISTER 原因: 找不到net.mamoe.mirai.console.compiler.common.RestrictedScope$Kind的类文件 警告: 未知的枚举常量 Kind.PERMISSION_REGISTER 警告: 未知的枚举常量 Kind.PERMISSION_NAME 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.RESTRICTED_ABSTRACT_MESSAGE_KEYS 警告: 未知的枚举常量 Kind.RESTRICTED_ABSTRACT_MESSAGE_KEYS 19 个警告 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x45c89b36) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.code to unnamed module @0x45c89b36 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 12s 2 actionable tasks: 2 executed PS E:\mirai bot\研究用文件夹\Records> .\gradlew buildPlugin > Task :compileJava FAILED 警告: 未知的枚举常量 Kind.PLUGIN_ID 原因: 找不到net.mamoe.mirai.console.compiler.common.ResolveContext$Kind的类文件 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.PLUGIN_NAME 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.COMMAND_REGISTER 原因: 找不到net.mamoe.mirai.console.compiler.common.RestrictedScope$Kind的类文件 警告: 未知的枚举常量 Kind.PERMISSION_REGISTER 警告: 未知的枚举常量 Kind.PERMISSION_NAME 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.RESTRICTED_ABSTRACT_MESSAGE_KEYS 警告: 未知的枚举常量 Kind.RESTRICTED_ABSTRACT_MESSAGE_KEYS 19 个警告 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x45c89b36) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.code to unnamed module @0x45c89b36 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 3s 2 actionable tasks: 2 executed PS E:\mirai bot\研究用文件夹\Records> .\gradlew buildPlugin Starting a Gradle Daemon, 1 incompatible and 4 stopped Daemons could not be reused, use --status for details > Task :compileJava FAILED 警告: 未知的枚举常量 Kind.PLUGIN_ID 原因: 找不到net.mamoe.mirai.console.compiler.common.ResolveContext$Kind的类文件 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.PLUGIN_NAME 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.COMMAND_REGISTER 原因: 找不到net.mamoe.mirai.console.compiler.common.RestrictedScope$Kind的类文件 警告: 未知的枚举常量 Kind.PERMISSION_REGISTER 警告: 未知的枚举常量 Kind.PERMISSION_NAME 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.RESTRICTED_ABSTRACT_MESSAGE_KEYS 警告: 未知的枚举常量 Kind.RESTRICTED_ABSTRACT_MESSAGE_KEYS 19 个警告 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x66349c1d) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.code to unnamed module @0x66349c1d * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 10s 2 actionable tasks: 2 executed PS E:\mirai bot\研究用文件夹\Records> .\gradlew buildPlugin Starting a Gradle Daemon, 1 incompatible and 5 stopped Daemons could not be reused, use --status for details > Task :compileJava FAILED 警告: 未知的枚举常量 Kind.PLUGIN_ID 原因: 找不到net.mamoe.mirai.console.compiler.common.ResolveContext$Kind的类文件 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.PLUGIN_NAME 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.PLUGIN_ID 警告: 未知的枚举常量 Kind.COMMAND_REGISTER 原因: 找不到net.mamoe.mirai.console.compiler.common.RestrictedScope$Kind的类文件 警告: 未知的枚举常量 Kind.PERMISSION_REGISTER 警告: 未知的枚举常量 Kind.PERMISSION_NAME 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.VERSION_REQUIREMENT 警告: 未知的枚举常量 Kind.SEMANTIC_VERSION 警告: 未知的枚举常量 Kind.RESTRICTED_ABSTRACT_MESSAGE_KEYS 警告: 未知的枚举常量 Kind.RESTRICTED_ABSTRACT_MESSAGE_KEYS 19 个警告 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x526cf4b1) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.code to unnamed module @0x526cf4b1 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 12s 2 actionable tasks: 2 executed
很简单的一个记录表插件,直接从Github拉取模板写的,编译成jar包时会有这个错误,但是可以在RunMirai.kt里运行。
在这个插件之前另外一个类似的记录表插件也报了这个错误,在build.gradle.kt里的dependence底下删除了两个没见过的依赖之后问题消失 -
RE: 在RunMirai上运行正常,编译成插件运行时就抛出ClassNotFoundException
@cssxsh 在PluginMain里只用到了这三个方法
CronUtil.setCronSetting("$configFolderPath\\cron.setting") CronUtil.setMatchSecond(true) CronUtil.start()
我应该去CronUtil.java源文件里添加您给出的这段代码吗
-
在RunMirai上运行正常,编译成插件运行时就抛出ClassNotFoundException
用Hutool的CronUtil写了一个定时任务,CronUtil用法如下
Hutool添加全局定时任务-CronUtil
配置文件内容如下:[org.ASN70.apiExercise] #每5秒向控制台打印当前时间(测试用) getAPI.jobs.Test = */5 * * * * * *
定时任务类代码如下:
class getAPI { //需要定时执行的任务 object jobs { fun Test() { val nowIs = LocalDateTimeUtil.now().format(DateTimeFormatter.ofPattern("HH-mm-ss")).toString() println(nowIs) } } }
在RunMirai下运行没有任何问题,可以每5秒向控制台打印时间,但是编译成插件在Console运行时(Mirai Console 2.12.0)有如下报错
2022-07-31 11:32:13 E/api功能练习插件: cn.hutool.cron.CronException: Schedule [*/5 * * * * * *] [org.ASN70.apiExercise.getAPI.jobs.Test] error! cn.hutool.cron.CronException: Schedule [*/5 * * * * * *] [org.ASN70.apiExercise.getAPI.jobs.Test] error! at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.Scheduler.schedule(Scheduler.java:216) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.CronUtil.schedule(CronUtil.java:106) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.CronUtil.start(CronUtil.java:170) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.CronUtil.start(CronUtil.java:143) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar//org.ASN70.apiExercise.ApiExerciseMain.onEnable(ApiExerciseMain.kt:65) at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnEnable$mirai_console(JvmPluginInternal.kt:131) at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:278) at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:35) at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt) at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt:50) at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManager.kt:173) at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLoadedPlugins$mirai_console(PluginManagerImpl.kt:178) at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:235) at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:464) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:168) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:167) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:52) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at org.itxtech.mcl.Utility.bootJars(Utility.java:89) at org.itxtech.mcl.Utility.bootJars(Utility.java:79) at org.itxtech.mcl.Utility.bootMirai(Utility.java:101) at org.itxtech.mcl.module.builtin.Boot.boot(Boot.java:109) at org.itxtech.mcl.module.ModuleManager.phaseBoot(ModuleManager.java:148) at org.itxtech.mcl.Loader.lambda$start$4(Loader.java:189) at org.itxtech.mcl.Loader.tryCatching(Loader.java:146) at org.itxtech.mcl.Loader.start(Loader.java:189) at org.itxtech.mcl.Loader.main(Loader.java:79) Caused by: cn.hutool.core.exceptions.UtilException: ClassNotFoundException: org.ASN70.apiExercise.getAPI.jobs at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.doLoadClass(ClassLoaderUtil.java:319) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.lambda$loadClass$1(ClassLoaderUtil.java:202) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.map.ReferenceConcurrentMap.lambda$computeIfAbsent$1(ReferenceConcurrentMap.java:137) at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(Unknown Source) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.map.ReferenceConcurrentMap.computeIfAbsent(ReferenceConcurrentMap.java:137) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:202) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:167) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:148) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.task.InvokeTask.<init>(InvokeTask.java:43) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.Scheduler.schedule(Scheduler.java:214) ... 29 more Caused by: java.lang.ClassNotFoundException: org.ASN70.apiExercise.getAPI.jobs at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Unknown Source) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.doLoadClass(ClassLoaderUtil.java:314) ... 38 more
-
mirai 2.12.0,无法监听新成员入群的事件
安卓手表协议支持监听新成员入群的事件吗?之前能监听到新成员入群的事件的并且触发设置好的功能,但是前几天早上给代码加了个戳一戳功能后,突然监听不到群成员入群,控制台没有任何报错或者提示新成员入群事件的信息
后来我意识到手表不支持戳一戳,我不确定是不是我的问题,我记得之前一直用的安卓手表协议,我查阅了protocol以及event的相关文档,除了找到一句nudge支持的协议的描述外,没有找到很明确的安卓手表协议能监听的事件列表或者各种事件支持的协议 -
【提问】Kotlin中该怎么实现定时任务?
搜索过很多方法,比如Hutool的CronUtil、SpringBoot。但是遇到了挺多问题。
- 在使用Hutool的CronUtil用配置文件添加定时任务时,总是找不到定时任务的实现类。
定时任务实现类代码是这样的
class getAPI { //需要定时执行的任务 object jobs { fun Test() { val nowIs = LocalDateTimeUtil.now().format(DateTimeFormatter.ofPattern("HH-mm-ss")).toString() println(nowIs) } } }
配置文件是这样的
[org.ASN70.apiExercise] #每5秒向控制台打印当前时间(测试用) getAPI.jobs.Test = */5 * * * * * *
RunMirai中运行时一切正常,但编译成插件之后在console运行会报错
2022-07-30 22:50:41 E/api功能练习插件: cn.hutool.cron.CronException: Schedule [*/5 * * * * * *] [org.ASN70.apiExercise.getAPI.jobs.Test] error! cn.hutool.cron.CronException: Schedule [*/5 * * * * * *] [org.ASN70.apiExercise.getAPI.jobs.Test] error! at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.Scheduler.schedule(Scheduler.java:216) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.CronUtil.schedule(CronUtil.java:106) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.CronUtil.start(CronUtil.java:170) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.CronUtil.start(CronUtil.java:143) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar//org.ASN70.apiExercise.ApiExerciseMain.onEnable(ApiExerciseMain.kt:65) at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnEnable$mirai_console(JvmPluginInternal.kt:131) at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:278) at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:35) at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt) at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt:50) at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManager.kt:173) at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLoadedPlugins$mirai_console(PluginManagerImpl.kt:178) at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:235) at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:464) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:168) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:167) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:52) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at org.itxtech.mcl.Utility.bootJars(Utility.java:89) at org.itxtech.mcl.Utility.bootJars(Utility.java:79) at org.itxtech.mcl.Utility.bootMirai(Utility.java:101) at org.itxtech.mcl.module.builtin.Boot.boot(Boot.java:109) at org.itxtech.mcl.module.ModuleManager.phaseBoot(ModuleManager.java:148) at org.itxtech.mcl.Loader.lambda$start$4(Loader.java:189) at org.itxtech.mcl.Loader.tryCatching(Loader.java:146) at org.itxtech.mcl.Loader.start(Loader.java:189) at org.itxtech.mcl.Loader.main(Loader.java:79) Caused by: cn.hutool.core.exceptions.UtilException: ClassNotFoundException: org.ASN70.apiExercise.getAPI.jobs at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.doLoadClass(ClassLoaderUtil.java:319) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.lambda$loadClass$1(ClassLoaderUtil.java:202) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.map.ReferenceConcurrentMap.lambda$computeIfAbsent$1(ReferenceConcurrentMap.java:137) at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(Unknown Source) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.map.ReferenceConcurrentMap.computeIfAbsent(ReferenceConcurrentMap.java:137) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:202) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:167) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:148) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.task.InvokeTask.<init>(InvokeTask.java:43) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.cron.Scheduler.schedule(Scheduler.java:214) ... 29 more Caused by: java.lang.ClassNotFoundException: org.ASN70.apiExercise.getAPI.jobs at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Unknown Source) at mirai-console-ASN70-apiExercise-0.1.0.mirai2.jar[private]//cn.hutool.core.util.ClassLoaderUtil.doLoadClass(ClassLoaderUtil.java:314) ... 38 more
- 在使用SpringBoot来创建定时任务时,找不到@SpringBootApplication这个注解,可能是更新之后删除或者修改了,找了半天没找到新版本这个注解该怎么用
- 在使用Hutool的CronUtil用配置文件添加定时任务时,总是找不到定时任务的实现类。
-
RE: 【求助】突然无法监听到事件
@cssxsh
在BotConfiguration.kt中找到了下面的代码/** 使用协议类型 */ public var protocol: MiraiProtocol public enum class MiraiProtocol { /** * Android 手机. 所有功能都支持. */ ANDROID_PHONE, /** * Android 平板. * * 注意: 不支持戳一戳事件解析 */ ANDROID_PAD, /** * Android 手表. */ ANDROID_WATCH, /** * iPad - 来自MiraiGo * * @since 2.8 */ IPAD, /** * MacOS - 来自MiraiGo * * @since 2.8 */ MACOS, }
在MemberJoinEvent找到以下代码
/** * 成员已经加入群的事件 */ public sealed class MemberJoinEvent( public override val member: NormalMember ) : GroupMemberEvent, BotPassiveEvent, Packet, AbstractEvent(), GroupMemberInfoChangeEvent { /** * 被邀请加入群 */ public data class Invite @MiraiInternalApi constructor( public override val member: NormalMember, /** * 邀请者 */ public val invitor: NormalMember ) : MemberJoinEvent(member) { public override fun toString(): String = "MemberJoinEvent.Invite(member=${member.id}, invitor=${invitor.id})" } /** * 成员主动加入群 */ public data class Active @MiraiInternalApi constructor( public override val member: NormalMember ) : MemberJoinEvent(member) { public override fun toString(): String = "MemberJoinEvent.Active(member=${member.id})" } /** * 原群主通过 https://huifu.qq.com/ 恢复原来群主身份并入群, * 此时 [member] 的 [Member.permission] 肯定是 [MemberPermission.OWNER] */ public data class Retrieve @MiraiInternalApi constructor( public override val member: NormalMember ) : MemberJoinEvent(member) { override fun toString(): String = "MemberJoinEvent.Retrieve(member=${member.id})" } }
没有找到关于协议类型能够/不能收到的事件列表或者事件支持/不支持的协议描述……
-
RE: 【求助】突然无法监听到事件
@cssxsh
我在文档中找到了这样的描述
Android 手机. 所有功能都支持.
Android 平板. 注意: 不支持戳一戳事件解析
Android 手表.
或许还有更详细的描述,我再去翻翻event那部分吧
因为有时候我需要切换到机器人登录的QQ号上处理一些事,所以我都是使用安卓手表的协议。但是问题提出的前一天机器人还是可以监听到新成员入群的事件的来着……