编写跨平台Java控制台应用程序

时间:2016-01-03 07:57:42

标签: java console native

我有编写具有适用于多个平台的本机控制台行为的Java应用程序的实际任务。 我设法检测平台和环境软件就好了。

我使用Netbeans原生包装为每个平台创建带有consoleapp二进制文件的包。

public class ConnTrol {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Console c = System.console();
        if (c == null) {
            if (System.getProperty("os.name").contains("Linux")) {
                try {
                    Runtime.getRuntime().exec(new String[]{"konsole","--noclose","-e",AppPath.getPath()+"/../consoleapp"});
                } catch (IOException ex) {

                }
            } else if (System.getProperty("os.name").contains("Windows")) {
                try {
                    Runtime.getRuntime().exec(new String[]{"cmd","/c","start",AppPath.getPath()+"\\..\\consoleapp.exe"});
                } catch (IOException ex) {

                }
            }
            System.exit(0);
        }

        c.printf("Hello world!%n");
    }

}

扩展版本检查* nix系统上的不同控制台版本。

我看到的棘手部分是让它在Windows上运行。 问题是在Windows上创建的“consoleapp.exe”始终是Windows应用程序(不是控制台应用程序),因此如果应用程序未在控制台中运行并尝试在控制台中运行其副本,则该副本的I / O也未连接到调用控制台,应用程序最终在死循环中重新启动。

非常感谢任何帮助!

0 个答案:

没有答案