修复代码: GetMappingvalue = JarLauncherJar 运行JarLauncher的jar包 public String JarLauncherJar throws MalformedURLException ClassNotFoundException NoSuchMethodException InstantiationException IllegalAcces
修复代码如下:
@GetMapping(value = "/JarLauncherJar") //运行JarLauncher的jar包
public String JarLauncherJar() throws MalformedURLException, ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
// 创建 URLClassLoader,并将当前 JAR 文件添加到类路径中
URL jarFileUrl = new URL("file:E:/jetlinks/jar/gt06-gsp-java-1.0.1.jar");
URLClassLoader classLoader = new URLClassLoader(new URL[]{jarFileUrl});
// 加载 JarLauncher 和 Launcher 类
Class<?> jarLauncherClass = classLoader.loadClass("org.springframework.boot.loader.JarLauncher");
Class<?> launcherClass = classLoader.loadClass("org.springframework.boot.loader.Launcher");
// 获取 Launcher 类中 launch 方法
Method launchMethod = launcherClass.getDeclaredMethod("launch", String[].class);
String[] mainArgs = { "arg1", "arg2" }; // 根据需要提供命令行参数
// 调用 launch 方法启动 JAR 文件
launchMethod.invoke(jarLauncherClass.getDeclaredConstructor().newInstance(), (Object) mainArgs);
return null;
}
修复内容包括以下部分:
- 在创建 URLClassLoader 时,将 JAR 文件的 URL 修改为
"file:E:/jetlinks/jar/gt06-gsp-java-1.0.1.jar",以确保正确加载 JAR 文件。 - 在调用
launchMethod.invoke()方法时,将jarLauncherClass.newInstance()修改为jarLauncherClass.getDeclaredConstructor().newInstance(),以适应较新版本的 Java
原文地址: http://www.cveoy.top/t/topic/hHob 著作权归作者所有。请勿转载和采集!