[FIX] ServerWrapper NPE

This commit is contained in:
Gravita 2022-11-24 19:52:28 +07:00
parent 8fb1349487
commit 31b6ae35e7
7 changed files with 12 additions and 13 deletions

View file

@ -6,9 +6,9 @@ public final class Version implements Comparable<Version> {
public static final int MAJOR = 5; public static final int MAJOR = 5;
public static final int MINOR = 3; public static final int MINOR = 3;
public static final int PATCH = 1; public static final int PATCH = 2;
public static final int BUILD = 1; public static final int BUILD = 1;
public static final Version.Type RELEASE = Type.STABLE; public static final Version.Type RELEASE = Type.DEV;
public final int major; public final int major;
public final int minor; public final int minor;
public final int patch; public final int patch;

View file

@ -180,9 +180,9 @@ public void run(String... args) throws Throwable {
break; break;
} }
LogHelper.info("Start Minecraft Server"); LogHelper.info("Start Minecraft Server");
LogHelper.debug("Invoke main method %s with %s", config.mainclass, launch.getClass().getName()); LogHelper.debug("Invoke main method %s with %s", classname, launch.getClass().getName());
try { try {
launch.run(config, real_args); launch.run(classname, config, real_args);
} catch (Throwable e) { } catch (Throwable e) {
LogHelper.error(e); LogHelper.error(e);
System.exit(-1); System.exit(-1);

View file

@ -13,10 +13,10 @@
public class ClasspathLaunch implements Launch { public class ClasspathLaunch implements Launch {
@Override @Override
@SuppressWarnings("ConfusingArgumentToVarargsMethod") @SuppressWarnings("ConfusingArgumentToVarargsMethod")
public void run(ServerWrapper.Config config, String[] args) throws Throwable { public void run(String mainclass, ServerWrapper.Config config, String[] args) throws Throwable {
URL[] urls = config.classpath.stream().map(Paths::get).map(IOHelper::toURL).toArray(URL[]::new); URL[] urls = config.classpath.stream().map(Paths::get).map(IOHelper::toURL).toArray(URL[]::new);
ClassLoader ucl = new PublicURLClassLoader(urls); ClassLoader ucl = new PublicURLClassLoader(urls);
Class<?> mainClass = Class.forName(config.mainclass, true, ucl); Class<?> mainClass = Class.forName(mainclass, true, ucl);
MethodHandle mainMethod = MethodHandles.lookup().findStatic(mainClass, "main", MethodType.methodType(void.class, String[].class)); MethodHandle mainMethod = MethodHandles.lookup().findStatic(mainClass, "main", MethodType.methodType(void.class, String[].class));
mainMethod.invoke(args); mainMethod.invoke(args);
} }

View file

@ -3,5 +3,5 @@
import pro.gravit.launcher.server.ServerWrapper; import pro.gravit.launcher.server.ServerWrapper;
public interface Launch { public interface Launch {
void run(ServerWrapper.Config config, String[] args) throws Throwable; void run(String mainclass, ServerWrapper.Config config, String[] args) throws Throwable;
} }

View file

@ -4,7 +4,7 @@
public class ModuleLaunch implements Launch { public class ModuleLaunch implements Launch {
@Override @Override
public void run(ServerWrapper.Config config, String[] args) throws Throwable { public void run(String mainclass, ServerWrapper.Config config, String[] args) throws Throwable {
throw new UnsupportedOperationException("Module system not supported"); throw new UnsupportedOperationException("Module system not supported");
} }
} }

View file

@ -9,8 +9,8 @@
public class SimpleLaunch implements Launch { public class SimpleLaunch implements Launch {
@Override @Override
@SuppressWarnings("ConfusingArgumentToVarargsMethod") @SuppressWarnings("ConfusingArgumentToVarargsMethod")
public void run(ServerWrapper.Config config, String[] args) throws Throwable { public void run(String mainclass, ServerWrapper.Config config, String[] args) throws Throwable {
Class<?> mainClass = Class.forName(config.mainclass); Class<?> mainClass = Class.forName(mainclass);
MethodHandle mainMethod = MethodHandles.lookup().findStatic(mainClass, "main", MethodType.methodType(void.class, String[].class)); MethodHandle mainMethod = MethodHandles.lookup().findStatic(mainClass, "main", MethodType.methodType(void.class, String[].class));
mainMethod.invoke(args); mainMethod.invoke(args);
} }

View file

@ -13,12 +13,11 @@
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
public class ModuleLaunch implements Launch { public class ModuleLaunch implements Launch {
@Override @Override
@SuppressWarnings("ConfusingArgumentToVarargsMethod") @SuppressWarnings("ConfusingArgumentToVarargsMethod")
public void run(ServerWrapper.Config config, String[] args) throws Throwable { public void run(String mainclass, ServerWrapper.Config config, String[] args) throws Throwable {
URL[] urls = config.classpath.stream().map(Paths::get).map(IOHelper::toURL).toArray(URL[]::new); URL[] urls = config.classpath.stream().map(Paths::get).map(IOHelper::toURL).toArray(URL[]::new);
ClassLoader ucl = new PublicURLClassLoader(urls); ClassLoader ucl = new PublicURLClassLoader(urls);
// Create Module Layer // Create Module Layer
@ -55,7 +54,7 @@ public void run(ServerWrapper.Config config, String[] args) throws Throwable {
} }
// Start main class // Start main class
ClassLoader loader = mainModule.getClassLoader(); ClassLoader loader = mainModule.getClassLoader();
Class<?> mainClass = Class.forName(config.mainclass, true, loader); Class<?> mainClass = Class.forName(mainclass, true, loader);
MethodHandle mainMethod = MethodHandles.lookup().findStatic(mainClass, "main", MethodType.methodType(void.class, String[].class)); MethodHandle mainMethod = MethodHandles.lookup().findStatic(mainClass, "main", MethodType.methodType(void.class, String[].class));
mainMethod.invoke(args); mainMethod.invoke(args);
} }