mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
add JVM check
This commit is contained in:
@@ -23,8 +23,17 @@ import forge.error.ExceptionHandler;
|
||||
import forge.gui.GuiBase;
|
||||
import forge.gui.card.CardReaderExperiments;
|
||||
import forge.util.BuildInfo;
|
||||
import forge.util.JVMOptions;
|
||||
import io.sentry.Sentry;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JOptionPane;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.lang.management.RuntimeMXBean;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Main class for Forge's swing application view.
|
||||
*/
|
||||
@@ -33,12 +42,45 @@ public final class Main {
|
||||
* Main entry point for Forge
|
||||
*/
|
||||
public static void main(final String[] args) {
|
||||
String javaVersion = System.getProperty("java.version");
|
||||
checkJVMArgs(javaVersion, args);
|
||||
}
|
||||
static void checkJVMArgs(String javaVersion, String[] args) {
|
||||
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
|
||||
List<String> arguments = runtimeMxBean.getInputArguments();
|
||||
|
||||
List<Object> options = new ArrayList<>();
|
||||
JButton ok = new JButton("OK");
|
||||
options.add(ok);
|
||||
JVMOptions.getStringBuilder().append("Java Version: ").append(javaVersion).append("\nArguments: \n");
|
||||
for (String a : arguments) {
|
||||
if (a.startsWith("-agent") || a.startsWith("-javaagent"))
|
||||
continue;
|
||||
JVMOptions.getStringBuilder().append(a).append("\n");
|
||||
}
|
||||
JOptionPane pane = new JOptionPane(JVMOptions.getStringBuilder(), JOptionPane.PLAIN_MESSAGE, JOptionPane.DEFAULT_OPTION, null, options.toArray());
|
||||
JDialog dlg = pane.createDialog(JOptionPane.getRootFrame(), "Error");
|
||||
ok.addActionListener(e -> {
|
||||
dlg.setVisible(false);
|
||||
System.exit(0);
|
||||
});
|
||||
dlg.setResizable(false);
|
||||
|
||||
if (!JVMOptions.checkRuntime(arguments)) {
|
||||
dlg.setVisible(true);
|
||||
} else {
|
||||
start(args);
|
||||
}
|
||||
}
|
||||
static void start(final String[] args) {
|
||||
Sentry.init(options -> {
|
||||
options.setEnableExternalConfiguration(true);
|
||||
options.setRelease(BuildInfo.getVersionString());
|
||||
options.setEnvironment(System.getProperty("os.name"));
|
||||
options.setTag("Java Version", System.getProperty("java.version"));
|
||||
options.setShutdownTimeoutMillis(5000);
|
||||
if (options.getDsn() == null)
|
||||
options.setDsn("https://87bc8d329e49441895502737c069067b@sentry.cardforge.org//3");
|
||||
}, true);
|
||||
|
||||
// HACK - temporary solution to "Comparison method violates it's general contract!" crash
|
||||
@@ -67,28 +109,27 @@ public final class Main {
|
||||
|
||||
// command line startup here
|
||||
String mode = args[0].toLowerCase();
|
||||
|
||||
|
||||
switch(mode) {
|
||||
case "sim":
|
||||
SimulateMatch.simulate(args);
|
||||
break;
|
||||
|
||||
case "parse":
|
||||
CardReaderExperiments.parseAllCards(args);
|
||||
CardReaderExperiments.parseAllCards(args);
|
||||
break;
|
||||
|
||||
case "server":
|
||||
System.out.println("Dedicated server mode.\nNot implemented.");
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
System.out.println("Unknown mode.\nKnown mode is 'sim', 'parse' ");
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
protected void finalize() throws Throwable {
|
||||
|
||||
Reference in New Issue
Block a user