211231-Java调用本地程序的几种姿势

文章目录
  1. 1. Runtime使用方式
  2. 2. ProcessBuilder使用方式
  • 一灰灰的联系方式
  • 本文记录一下如何使用java打开本地应用,以及打开mac系统中应用的注意事项

    1. Runtime使用方式

    主要是基于Runtime.getRuntime().exec()来执行shell命令,来打开应用

    比如打开计算器

    1
    2
    3
    4
    // win系统
    Runtime.getRuntime().exec("exec");
    // mac系统
    Runtime.getRuntime().exec("open -n /Applications/Calculator.app")

    注意事项

    对于mac系统而言,除了上面这种打开方式之外,还有下面这种姿势

    1
    Runtime.getRuntime().exec("/Applications/Calculator.app/Contents/MacOS/Calculator")

    在exec中指定计算器的路径,有个很容易采的坑,直接写成下面这种

    1
    Runtime.getRuntime().exec("/Applications/Calculator.app")

    上面这个直接执行之后会提示权限错误,其主要原因是mac系统的应用和win中的exe作为启动方式不太一样,对于mac而言,可以理解xxx.app为一个目录,真正执行文件是内部的xxx/Contents/MacOS/xxx

    2. ProcessBuilder使用方式

    除了Runtime唤起之外,使用ProcessBuilder也属于非常常见的case

    1
    2
    3
    4
    5
    // win
    new ProcessBuilder("exec").start()

    // mac 注意,使用下面这个,则传参不能是 open -n xxx
    new ProcessBuilder("/Applications/Calculator.app/Contents/MacOS/Calculator").start()

    使用上面这种姿势,特别需要注意的是内部传参不能是open -n

    一灰灰的联系方式

    尽信书则不如无书,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

    QrCode

    # Java

    评论

    Your browser is out-of-date!

    Update your browser to view this website correctly. Update my browser now

    ×