我在自己寻找答案时发现了这一点,我最终写了这一点:
/**
* 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");
}
}
}
不确定我的答案是否仍然相关,但请随时将其与保存在o/ 中的评论一起使用
我能想到的唯一缺陷是它在程序完成后使cmd窗口保持打开状态。
用法:将此类放在与主类相同的包中,并将其设置为主类,如果没有打开,它将打开命令提示符窗口,或者如果一个打开,则启动主类。jar文件的名称/位置是自动的。专为Windows设计,但如果你想要它用于另一个系统,只需给我发消息,我会修复它。(我可以做操作系统检测,但我很懒,只是这样做,这样我就可以把一个双击jar文件交给我使用Windows的教授)。