Java 如何从另一个程序启动Jar文件?

Java 如何从另一个程序启动Jar文件?,java,login,jar,executable-jar,Java,Login,Jar,Executable Jar,我对我正在制作的游戏有一个问题,问题是我希望它能够 更新而无需到网站下载新版本,您需要登录(大约需要3美元)才能玩。问题是,我希望jar不能运行,除非您通过游戏启动器运行它。我需要它,以便它检查更新并使用登录会话 我还希望能够在构建游戏时调试游戏,然后设置jar,这样在不启动启动器并登录的情况下就无法运行游戏,然后单击按钮启动游戏,但我不知道的是,如何使游戏jar只能从启动器启动,并由启动器将登录会话发送到jar,以便它知道用户名并知道游戏没有被盗?一种快速简便的方法(但可能不是最好的方法):

我对我正在制作的游戏有一个问题,问题是我希望它能够 更新而无需到网站下载新版本,您需要登录(大约需要3美元)才能玩。问题是,我希望jar不能运行,除非您通过游戏启动器运行它。我需要它,以便它检查更新并使用登录会话

我还希望能够在构建游戏时调试游戏,然后设置jar,这样在不启动启动器并登录的情况下就无法运行游戏,然后单击按钮启动游戏,但我不知道的是,如何使游戏jar只能从启动器启动,并由启动器将登录会话发送到jar,以便它知道用户名并知道游戏没有被盗?

一种快速简便的方法(但可能不是最好的方法):

您只需将会话数据保存在数据库或加密文件中即可。当启动器退出时,它还应该从数据库中销毁会话

运行jar文件时,它将从数据库中读取,如果在数据库中找不到活动会话,它将中止

您还可以防止jar从程序外部运行(即使启动器已经在后台运行),方法是让它接收某种必须满足某些条件的随机加密密钥(这里也可以使用数据库)。然后,用户必须知道密钥才能以快速简便的方式手动启动它(但可能不是最好的方式):

您只需将会话数据保存在数据库或加密文件中即可。当启动器退出时,它还应该从数据库中销毁会话

运行jar文件时,它将从数据库中读取,如果在数据库中找不到活动会话,它将中止


您还可以防止jar从程序外部运行(即使启动器已经在后台运行),方法是让它接收某种必须满足某些条件的随机加密密钥(这里也可以使用数据库)。然后用户必须知道密钥才能手动启动它

您可以使用ProcessBuilder并启动新的JVM

可能是这样的:

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();

希望它能帮助您使用ProcessBuilder并启动新的JVM

可能是这样的:

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
希望能有帮助