Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过java在mac上运行dmg_Java_Macos - Fatal编程技术网

如何通过java在mac上运行dmg

如何通过java在mac上运行dmg,java,macos,Java,Macos,请告诉我如何在Java中运行/调用.dmg应用程序。 我使用了下面的语法 Runtime.getruntime.exec(“sample.dmg”) 但它抛出一个错误,即“权限被拒绝”,错误代码为13。请告诉我如何调用dmg。dmg文件不能直接执行。您需要使用Mac OSX open命令: Runtime.getRuntime().exec(new String[] { "/usr/bin/open", "sample.dmg" }); 您可能需要有dmg文件的完整路径,但在其他情况下,它似乎

请告诉我如何在Java中运行/调用.dmg应用程序。 我使用了下面的语法
Runtime.getruntime.exec(“sample.dmg”)

但它抛出一个错误,即“权限被拒绝”,错误代码为13。请告诉我如何调用dmg。

dmg文件不能直接执行。您需要使用Mac OSX open命令:

Runtime.getRuntime().exec(new String[] { "/usr/bin/open", "sample.dmg" });
您可能需要有dmg文件的完整路径,但在其他情况下,它似乎对我很好。打开还允许您指定要打开的应用程序,以便您可以执行一些很酷的操作,例如在邮件应用程序中将此文档作为附件发送:

Runtime.getRuntime().exec(
    new String[] { "/usr/bin/open", "-a", "Mail", "letter.pdf" });
我一直都是这样使用Mac中的open命令。

您应该使用哪个命令将为操作系统使用合适的opener。在Mac电脑上,它将使用
open
。这比
Runtime.exec
更好,因为您不依赖
open
命令的确切位置。此外,如果Windows有DMG挂载应用程序,比如Mediafour的MacDrive,这甚至可以在Windows上运行


底线是使用
Desktop.open(File File)
使用操作系统的默认打开器打开文件,这就是它的用途。大多数人只使用
Runtime.exec
作为最后手段。

您是在小程序中运行此功能还是在其他受限权限下运行此功能?但问题是关于OS X和.dmg的。另外,OS X保证open命令应该在那个位置,就像Unx一样,OS也保证执行*kill-9意味着insta kill并取回应用程序使用的所有资源。@CedricMartin:所以,他应该使用不太方便和可靠的选项,因为在他的情况下它不会中断?@Inera:别让我说我没有说的话。我说过OSX和Unx都有保证(不同于某些操作系统)。当你保证在/usr/bin/open/上找到*open,而问题的关键是打开一个.dmg(.dmg是一个与Windows完全不同的概念),那么相信“没有找到open命令”和“如果他不在Mac上”不仅是徒劳和毫无意义的,而且也是误导使用Desktop.open是很好的理由。桌面。打开就可以了。不要让它听起来像OP想要在Windows上打开一个.dmg来证明它的合理性。@CedricMartin,我不相信操作系统能保证
open
kill
的位置。是的,它会随它一起运送到众所周知的位置,但是没有人会阻止任何人移动它来重命名文件。@SteveKuo:因此破坏了许多实用程序。。。顺便说一句,关于kill,我说的是保证一个“kill-9”会立即终止应用程序,不会提出任何问题,并释放应用程序使用的资源。