是否有可能从同一个罐子中启动两个不同的应用程序?我编写了简单的客户端服务器,客户端和服务器部分都在一个JAR中。他们使用一些常见的类。
据我所知,我可以为客户端和服务器创建单独的jar,并将常用的类和资源放入第三个jar中。这实际上是做事的“正确”方式。但我的任务很简单,课程很小,我只是不想制作三个罐而不是一个。
java -jar需要清单中的Main-Class。似乎没有-jar开关也无法使它工作。
BTW,客户端和服务器应该能够并行运行。
答案 0 :(得分:6)
您可以在jar中始终拥有两个主要类,然后根据您是要运行客户端还是服务器来使用它们,例如:
java -cp yourapp.jar com.your.app.ClientMain
和
java -cp yourapp.jar com.your.app.ServerMain
您甚至可以分发bash或bat文件,以便更轻松地运行不同的应用程序。
答案 1 :(得分:5)
是的,创建一个带有参数的主类,并使用该参数来确定是否启动客户端或服务器:
public class MyMainClass
{
public static void Main(String[] args)
{
if (args.length != 0 && args[1].toLowerCase().equals("server"))
/* launch the server */;
else
{
/* launch the client */
}
}
}
我就是这样做的。