从控制台/命令窗口断开java应用程序

tek*_*ara 3 java command-line

可能重复:
是否有办法从Java程序隐藏win32启动控制台(如果可能,没有JNI)

当我在Windows上的批处理文件中运行我的java swing应用程序时,控制台/命令窗口在我的java应用程序运行时保持打开状态.这会在我的任务栏上创建一个额外的窗口,我不希望这样做.但是当我关闭命令窗口时,它会停止我的java应用程序.有没有办法,也许通过批处理文件或命令行参数或我的应用程序的代码更改,让我的应用程序仍在运行时启动我的swing应用程序和控制台窗口关闭后退出java.exe?

主要方法如下:

public static void main(String args[]) {

    ApplContext applContext = new ApplContext();
    Throwable error = null;

    try {
        applContext.setUserConfigDir(args.length>0 ? args[0] : null);
        applContext.loadData();
        ApplTools.initLookAndFeel(Parameters.P_NIMBUS_LAF.of(applContext.getParameters()));
    } catch (Throwable e) {
        error = e;
    }

    // JWorkSheet is a JFrame.
    new JWorkSheet(applContext, error).setVisible();
}    
Run Code Online (Sandbox Code Playgroud)

Dav*_*Ray 6

javaw.exejava而不是java 运行你的应用程序.如果您从bat文件运行,请将此start命令与命令结合使用:

> start javaw.exe -jar myapp.jar
Run Code Online (Sandbox Code Playgroud)

在此模式下运行时,如果您依赖控制台进行任何调试,最好设置正确的日志记录或至少重定向输出流.例如,如果没有控制台,您将永远不会看到为未处理的异常打印的友好堆栈跟踪.

注意:java.exe是Windows 控制台应用程序.因此,无论它是如何启动的,或者在其中运行的是什么线程,都将为其分配一个控制台.这就是javaw.exe存在的原因.