#java
Вопрос:
В настоящее время я хочу попытаться создать файл .jar, который указывает на файл .bat, чтобы запустить игровой сервер,
загрузчик модов Forge для текущей версии переключился с запуска сервера через файл jar на файл .bat, и у моего поставщика серверов в настоящее время нет решения для этого. -Небольшой отказ от ответственности, я не касался java в течение 6 лет, поэтому я могу не видеть очевидного
Для этого я нашел какой-то код от Павана.
Тем не менее, есть две проблемы, в которых, я надеюсь, у вас может быть решение или какой-то другой обходной путь. Во-первых, пока в Intellij «все» работает нормально. main()
работает, и открывается тест «Привет, мир». bat. После компиляции в jar ничего не происходит, даже с заданным путем к файлу.
Вторая Проблема. Я пробовал несколько мест, но System.exit(0)
не работает, после
int returnCode = CommandLineUtils.executeCommandLine(commandLine, systemOut, systemErr);
Код в основном останавливается, и процесс остается неактивным, что может плохо сказаться на игровом сервере, где у меня нет доступа к необходимым инструментам для самостоятельной очистки… и я не хочу объяснять службе поддержки клиентов, почему в фоновом режиме работает 1000 экземпляров java 😉
Но, несмотря на это, спасибо за ваше время и, надеюсь, за помощь
import java.io.File;
import java.io.OutputStreamWriter;
import org.codehaus.plexus.util.cli.CommandLineException;
import org.codehaus.plexus.util.cli.CommandLineUtils;
import org.codehaus.plexus.util.cli.Commandline;
import org.codehaus.plexus.util.cli.WriterStreamConsumer;
public class BatRunner {
public BatRunner() {
String batfile = "run.bat";
String directory = "C:\Users\User\IdeaProjects";
try {
runProcess(batfile, directory);
} catch (CommandLineException e) {
e.printStackTrace();
}
}
public void runProcess(String batfile, String directory) throws CommandLineException {
Commandline commandLine = new Commandline();
File executable = new File(directory "/" batfile);
commandLine.setExecutable(executable.getAbsolutePath());
WriterStreamConsumer systemOut = new WriterStreamConsumer(
new OutputStreamWriter(System.out));
WriterStreamConsumer systemErr = new WriterStreamConsumer(
new OutputStreamWriter(System.out));
int returnCode = CommandLineUtils.executeCommandLine(commandLine, systemOut, systemErr);
System.exit(0);
if (returnCode != 0) {
System.out.println("Something Bad Happened!");
} else {
System.out.println("Taaa!! ddaaaaa!!");
}
}
public static void main(String[] args) {
new BatRunner();
}
}
Источник: https://www.opencodez.com/java/how-to-execute-bat-file-from-java.htm/