Q值。有没有办法让一个java程序在Mac上像在Windows上运行两次?
答案 0 :(得分:5)
您没有指定是否要启动简单的.jar或应用程序包,因此我将为两者提供示例。要在OS X上运行应用程序包的多个实例,您可以使用以下技巧;打开终端并使用以下命令启动应用程序:
open -n /path/to/your/java.app
每次调用此命令时,都会打开一个新实例。
注意:仅仅因为可以启动多个实例并不意味着这样做是个好主意。确保使用同一文件对多个实例进行并发写访问时不会遇到麻烦。
如果您正在尝试运行jar,只需致电
即可java -jar /path/to/your/java.jar
多次启动多个实例。
要从OSX下的java应用程序内部启动java应用程序,您必须执行以下操作:
对于一个简单的jar:
File jarFile = new File("/path/to/your/jarFile.jar");
Runtime.getRuntime().exec(new String[] { "java", "-jar", jarFile.getAbsolutePath() });
对于应用程序包:
File jarFile = new File("/path/to/your/jarFile.app");
final String[] command = { "open", "-n", jarFile.getAbsolutePath() };
Runtime.getRuntime().exec(command);
答案 1 :(得分:0)
我真的不明白这个问题。但是为什么不将它抽象为方法而不是命名它的程序并调用该子程序两次。或者产生两个线程?
答案 2 :(得分:0)
也许这是一个技巧问题,但我会打开两个终端窗口并在每个终端上运行一次......
答案 3 :(得分:0)
这取决于Java程序的性质。如果您的程序同时作为服务器和客户端运行,则在运行多个实例时可能会导致问题。在许多服务器程序中,它使用固定的端口号来简化设置和实现。由于给定的端口号不能被多个应用程序使用,因此除非您可以在应用程序设置中更改端口号,否则无法打开该应用程序的多个实例。
许多Java应用程序使用此技巧来阻止用户通过检查某个端口是否正在使用来打开其程序的多个实例。如果是这种情况,则无法运行多个程序实例。
对于不使用端口或端口的其他Java应用程序不会崩溃,您可以通过终端打开它两次或更多。
答案 4 :(得分:0)
假设您在系统上运行客户端版本的代码并尝试连接到主机。首先,您需要在两台机器上运行服务器,B和C。其次,您使用的客户端代码应该是读取要连接的IP地址和端口。它不应该是硬编码的,否则你将不得不更改代码并为服务器B重建它。这应该对你有帮助。
猜猜我已经回答了您的问题。 :)