我正在使用Java开发一个Mac应用程序,它可以登录到我们客户端的任何一个数据库。我的用户希望运行此程序的多个副本,以便他们可以同时登录几个客户端,而不是注销并重新登录。
如何让用户一次打开我的应用程序的多个副本?
我正在使用Eclipse进行开发,而Jarbundler正在使用Eclipse。
编辑:更重要的是,有没有办法在代码库中这样做,而不是让我的用户在他们的系统上做一些时髦的事情?我宁愿给他们一个'打开新窗口'菜单项,然后让他们在终端输入内容。
答案 0 :(得分:4)
您可能已经获得了足够多的代码而您不想听到这一点,但您真的不应该启动同一个应用程序的两个实例。有一个原因,你发现它很难,因为Apple不希望你这样做。
OSX的方法是在XCode中使用基于Cocoa文档的应用程序模板。 Apple Documentation: choosing a project.
这是用户非常习惯的东西,它运作得很好。 FTP程序,IRC客户端和许多其他类型已经使用不同的“文档”窗口指向不同的服务器或通道。指向不同的数据库并没有什么本质上的不同。
根据您编写的代码量以及应用程序的设计方式,如果不重新开始,这可能几乎不可能实现。然而,在设计阶段遇到此问题的开发人员肯定应该接受Apple的建议。
答案 1 :(得分:0)
从终端(或脚本包装器):
/Applications/TextEdit.app/Contents/MacOS/TextEdit &
这样的事情对你有用。
在Java中执行此操作:
String[] cmd = { "/bin/sh", "-c", "[shell commmand goes here]" };
Process p = Runtime.getRuntime().exec (cmd);
答案 2 :(得分:0)
从终端,我可以运行
open -n -a appName.app
然后从Applescript,我可以运行
tell application "Terminal"
activaate
do script "open -n -a appName.app"
end tell
然后从Java,我可以执行该脚本。然后,我可以将Java代码填充到Action中。然后,将该操作填充到显示“打开新窗口”的菜单项中。
这就是我现在要去的地方。现在我只需要获取appName。
答案 3 :(得分:0)
如果你正在开发它,你应该能够实例化顶部框架以创建一个新窗口。