Я нашел это, когда искал ответ сам, и закончил тем, что написал этот бит:
/**
* This opens a command line and runs some other class in the jar
* @author Brandon Barajas
*/
import java.io.*;
import java.awt.GraphicsEnvironment;
import java.net.URISyntaxException;
public class Main{
public static void main (String [] args) throws IOException, InterruptedException, URISyntaxException{
Console console = System.console();
if(console == null && !GraphicsEnvironment.isHeadless()){
String filename = Main.class.getProtectionDomain().getCodeSource().getLocation().toString().substring(6);
Runtime.getRuntime().exec(new String[]{"cmd","/c","start","cmd","/k","java -jar \"" + filename + "\""});
}else{
THEMAINCLASSNAMEGOESHERE.main(new String[0]);
System.out.println("Program has ended, please type 'exit' to close the console");
}
}
}
не уверен, что мой ответ все еще актуален, но не стесняйтесь использовать его с комментарием, хранящимся в о/
Единственный недостаток, о котором я могу думать, это то, что он оставляет окно cmd открытым после завершения программы.
Использование: поместите этот класс в тот же пакет, что и ваш основной класс, и установите его какОсновной класс, он откроет окно командной строки, если он не открыт или если он открыт, запустите основной класс.Имя / местоположение файла jar - автоматическое.Предназначен для Windows, но если вы хотите его для другой системы, просто напишите мне, и я исправлю это.(Я мог бы обнаружить ОС, но я ленив и просто делаю это, чтобы я мог сдать файл jar двойного щелчка моему профессору, который использует Windows).