Skip to content

Commit 4b4fa93

Browse files
committed
将依赖库下载移动到主代码,同时优化maven库md5验证机制
1 parent 60e1bc0 commit 4b4fa93

File tree

5 files changed

+33
-28
lines changed

5 files changed

+33
-28
lines changed

MiraiMC-Base/src/main/java/me/dreamvoid/miraimc/internal/database/SQLite.java

+17-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
import com.zaxxer.hikari.HikariConfig;
44
import com.zaxxer.hikari.HikariDataSource;
55
import me.dreamvoid.miraimc.MiraiMCConfig;
6+
import me.dreamvoid.miraimc.internal.Utils;
7+
import me.dreamvoid.miraimc.internal.loader.LibraryLoader;
68

79
import java.io.File;
10+
import java.io.IOException;
811
import java.sql.Connection;
912
import java.sql.SQLException;
1013

@@ -29,9 +32,21 @@ public void initialize() throws ClassNotFoundException {
2932
}
3033
*/
3134

32-
Class.forName("org.sqlite.JDBC");
35+
String driver;
36+
if(Utils.findClass("org.sqlite.JDBC")){
37+
driver = "org.sqlite.JDBC";
38+
} else {
39+
try {
40+
LibraryLoader.loadJarMaven("org.xerial", "sqlite-jdbc", "3.36.0.3");
41+
initialize();
42+
return;
43+
} catch (IOException e) {
44+
throw new ClassNotFoundException("Local library not found and maven download failed: " + e);
45+
}
46+
}
47+
3348
HikariConfig config = new HikariConfig();
34-
config.setDriverClassName("org.sqlite.JDBC");
49+
config.setDriverClassName(driver);
3550
config.setPoolName("MiraiMC-SQLite");
3651
config.setJdbcUrl("jdbc:sqlite:" + new File(MiraiMCConfig.Database.Settings.SQLite.Path.replace("%plugin_folder%", MiraiMCConfig.PluginDir.toPath().toString())).toPath());
3752
config.setConnectionTimeout(MiraiMCConfig.Database.Pool.ConnectionTimeout);

MiraiMC-Base/src/main/java/me/dreamvoid/miraimc/internal/loader/LibraryLoader.java

+15-12
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ public static void loadJarLocal(File file) throws MalformedURLException {
4242
* @param groupId 组ID
4343
* @param artifactId 构件ID
4444
* @param version 版本
45-
* @param path 保存目录
4645
*/
4746
public static void loadJarMaven(String groupId, String artifactId, String version) throws RuntimeException, IOException {
4847
loadJarMaven(groupId,artifactId,version,"", MiraiMCConfig.General.MavenRepoUrl, new File(MiraiMCConfig.PluginDir, "libraries"));
@@ -117,23 +116,27 @@ static boolean downloadJarMaven(String repo, String groupId, String artifactId,
117116
String JarFileURL = String.format(repo, groupId.replace(".", "/"), artifactId, version, artifactId, version, extra); // 下载地址
118117

119118
// 检查MD5
120-
Utils.logger.info("Verifying " + FileName);
119+
try{
120+
Utils.logger.info("Verifying " + FileName);
121121

122-
File md5File = new File(path, FileName + ".md5");
123-
String md5FileUrl = JarFileURL + ".md5";
122+
File md5File = new File(path, FileName + ".md5");
123+
String md5FileUrl = JarFileURL + ".md5";
124124

125-
if (md5File.exists() && !md5File.delete()) throw new RuntimeException("Failed to delete " + md5File.getPath());
125+
if (md5File.exists() && !md5File.delete()) throw new RuntimeException("Failed to delete " + md5File.getPath());
126126

127-
downloadFile(md5File, new URL(md5FileUrl), false); // 下载MD5文件
127+
downloadFile(md5File, new URL(md5FileUrl), false); // 下载MD5文件
128128

129-
if(!md5File.exists()) throw new RuntimeException("Failed to download " + md5FileUrl);
129+
if(!md5File.exists()) throw new RuntimeException("Failed to download " + md5FileUrl);
130130

131-
if(JarFile.exists()){
132-
FileInputStream fis = new FileInputStream(JarFile);
133-
if(!DigestUtils.md5Hex(fis).equals(new String(Files.readAllBytes(md5File.toPath()), StandardCharsets.UTF_8))){
134-
fis.close();
135-
if(!JarFile.delete()) throw new RuntimeException("Failed to delete " + JarFile.getPath());
131+
if(JarFile.exists()){
132+
FileInputStream fis = new FileInputStream(JarFile);
133+
if(!DigestUtils.md5Hex(fis).equals(new String(Files.readAllBytes(md5File.toPath()), StandardCharsets.UTF_8))){
134+
fis.close();
135+
if(!JarFile.delete()) throw new RuntimeException("Failed to delete " + JarFile.getPath());
136+
}
136137
}
138+
} catch (RuntimeException e){
139+
Utils.logger.warning("Verify library failed, skipping: " + e.getMessage());
137140
}
138141

139142
// 下载正式文件

MiraiMC-Bungee/src/main/java/me/dreamvoid/miraimc/bungee/BungeePlugin.java

-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import me.dreamvoid.miraimc.commands.MiraiCommand;
77
import me.dreamvoid.miraimc.commands.MiraiMcCommand;
88
import me.dreamvoid.miraimc.commands.MiraiVerifyCommand;
9-
import me.dreamvoid.miraimc.internal.loader.LibraryLoader;
109
import net.md_5.bungee.api.CommandSender;
1110
import net.md_5.bungee.api.ProxyServer;
1211
import net.md_5.bungee.api.plugin.Command;
@@ -37,8 +36,6 @@ public void onLoad() {
3736

3837
MiraiAutoLogin = new MiraiAutoLogin(this);
3938
MiraiEvent = new MiraiEvent();
40-
41-
LibraryLoader.loadJarMaven("org.xerial", "sqlite-jdbc", "3.36.0.3");
4239
} catch (Exception e) {
4340
getLogger().warning("An error occurred while loading plugin.");
4441
e.printStackTrace();

MiraiMC-Nukkit/src/main/java/me/dreamvoid/miraimc/nukkit/NukkitPlugin.java

+1-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
package me.dreamvoid.miraimc.nukkit;
22

33
import cn.nukkit.plugin.PluginBase;
4-
import me.dreamvoid.miraimc.IMiraiAutoLogin;
5-
import me.dreamvoid.miraimc.IMiraiEvent;
6-
import me.dreamvoid.miraimc.MiraiMCPlugin;
7-
import me.dreamvoid.miraimc.Platform;
8-
import me.dreamvoid.miraimc.MiraiMCConfig;
9-
import me.dreamvoid.miraimc.internal.loader.LibraryLoader;
4+
import me.dreamvoid.miraimc.*;
105
import me.dreamvoid.miraimc.nukkit.commands.MiraiCommand;
116
import me.dreamvoid.miraimc.nukkit.commands.MiraiMcCommand;
127
import me.dreamvoid.miraimc.nukkit.commands.MiraiVerifyCommand;
@@ -41,8 +36,6 @@ public void onLoad() {
4136
lifeCycle.preLoad();
4237
MiraiAutoLogin = new MiraiAutoLogin(this);
4338
MiraiEvent = new MiraiEvent(this);
44-
45-
LibraryLoader.loadJarMaven("org.xerial", "sqlite-jdbc", "3.36.0.3");
4639
} catch (Exception e) {
4740
getLogger().warning("An error occurred while loading plugin." );
4841
e.printStackTrace();

MiraiMC-Velocity/src/main/java/me/dreamvoid/miraimc/velocity/VelocityPlugin.java

-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import me.dreamvoid.miraimc.commands.MiraiCommand;
1717
import me.dreamvoid.miraimc.commands.MiraiMcCommand;
1818
import me.dreamvoid.miraimc.commands.MiraiVerifyCommand;
19-
import me.dreamvoid.miraimc.internal.loader.LibraryLoader;
2019
import me.dreamvoid.miraimc.velocity.utils.Metrics;
2120
import me.dreamvoid.miraimc.velocity.utils.SpecialUtils;
2221
import org.slf4j.Logger;
@@ -75,8 +74,6 @@ public void onProxyInitialization(ProxyInitializeEvent event) {
7574

7675
MiraiEvent = new MiraiEvent(this);
7776
MiraiAutoLogin = new MiraiAutoLogin(this);
78-
79-
LibraryLoader.loadJarMaven("org.xerial", "sqlite-jdbc", "3.36.0.3");
8077
} catch (Exception e) {
8178
getLogger().warn("An error occurred while loading plugin.");
8279
e.printStackTrace();

0 commit comments

Comments
 (0)