项目是 spring boot + mirai-core-all
一段时间没有更新,因为看到qsign升级1.3.0版本了 所以想着也更新一下,对应的 mirai2.jar 包 以及 其对应的 txlib包 都是在github上下载的

<dependency> <groupId>net.mamoe</groupId> <artifactId>mirai-core-all</artifactId> <version>2.16.0</version> <scope>provided</scope> </dependency> 升级前 <!-- <dependency>--> <!-- <groupId>top.mrxiaom</groupId>--> <!-- <artifactId>qsign</artifactId>--> <!-- <version>1.2.1-beta</version>--> <!-- <scope>system</scope>--> <!-- <systemPath>${project.basedir}/lib/qsign-1.2.1-beta-dev-5058a66.mirai2.jar</systemPath>--> <!-- </dependency>--> 升级后 <dependency> <groupId>top.mrxiaom</groupId> <artifactId>qsign</artifactId> <version>1.3.0</version> <scope>system</scope> <systemPath>${project.basedir}/lib/qsign-1.3.0.mirai2.jar</systemPath> </dependency>

升级前可以正常启动,验证登录,将 qsign升级至1.3.0后 ,启动项目发生报错

16:27:07 [main] ERROR org.springframework.boot.SpringApplication - Application run failed java.lang.IllegalStateException: Failed to execute ApplicationRunner at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:789) at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:776) at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) at com.whitemagic2014.WMagicBotRApplication.main(WMagicBotRApplication.java:10) Caused by: kotlin.UninitializedPropertyAccessException: lateinit property CONFIG has not been initialized at DataKt.getCONFIG(Data.kt:5) at top.mrxiaom.qsign.QSignService$Factory$Companion.loadConfigFromFile(QSignService.kt:242) at top.mrxiaom.qsign.QSignService$Factory.loadConfigFromFile(QSignService.kt) at com.whitemagic2014.Simulator.setupNew(Simulator.java:106) at com.whitemagic2014.Simulator.run(Simulator.java:77) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:786) ... 5 common frames omitted

lateinit property CONFIG has not been initialized
这个问题百度搜了一下,貌似是kt 和 spring 结合使用的时初始化的问题,具体代码为 qsign java的示例

public static void setup() { // 初始化签名服务,参数为签名服务工作目录,里面应当包含 // config.json, dtconfig.json, libfekit.so, libQSec.so QSignService.Factory.init(new File("txlib/8.9.85")); // 加载签名服务所需协议信息,如果你的协议信息存在非 以上的工作目录 中的文件夹,请将参数 null 改为协议信息所在目录 // 该方法将会扫描目录下以协议信息命名的文件进行加载,如 android_phone.json // 如果你想单独加载协议信息文件,详见 loadProtocolExample() 中的例子 QSignService.Factory.loadProtocols(null); // 注册签名服务 QSignService.Factory.register(); }

由于我不太懂 kotlin,不知道要如何处理目前的问题,希望有大佬可以帮助一下