Java 使用runtime.getRuntime().exec()时Jar文件是如何工作的
我试图创建一个jar文件,只需点击一下就可以执行我的游戏。我的游戏超出了java默认分配的堆内存,因此我必须使用-Xmx1000m运行代码。我一直在网上进行研究,不幸的是,似乎没有办法告诉jar文件使用比默认内存更多的内存来娱乐我的代码。相反,我创建了另一个类,该类将使用runtime从另一个主方法中编译代码,并使用以下内容创建了一个jar文件:Java 使用runtime.getRuntime().exec()时Jar文件是如何工作的,java,jar,runtime,exec,runtime.exec,Java,Jar,Runtime,Exec,Runtime.exec,我试图创建一个jar文件,只需点击一下就可以执行我的游戏。我的游戏超出了java默认分配的堆内存,因此我必须使用-Xmx1000m运行代码。我一直在网上进行研究,不幸的是,似乎没有办法告诉jar文件使用比默认内存更多的内存来娱乐我的代码。相反,我创建了另一个类,该类将使用runtime从另一个主方法中编译代码,并使用以下内容创建了一个jar文件: import java.io.*; public class RuntimeExec{ public static void main(String[
import java.io.*;
public class RuntimeExec{
public static void main(String[] args){
try
{
Process process = Runtime.getRuntime().exec("java -Xmx1000m Controller");
process.waitFor();
int exitCode = process.exitValue();
if(exitCode == 0) { /* success*/ }
else { /*failed*/ }
}
catch (Exception e)
{e.printStackTrace();}
}
}
但我认为这是可行的,因为它运行的是文件夹中现有的类,而不是存储在jar中的类。有没有一种方法可以让jar在中运行一个类,或者将两个不同的jar组合起来,这样我就可以绕过内存堆问题了?有很多方法可以做到这一点:
.App
文件。您仍然无法重新分发它,因为无法设置必要的权限。为应用程序文件构建dmg。这可以用于分发。
类似的Windows安装程序第三种技术是最好的,因为您可以很好地打包依赖项,设置所有JVM参数等。为用户提供简单安装的整个解决方案是部署应用程序。使用。它可以为应用程序设置RAM,还可以安装桌面快捷方式来启动它。JWS比对
exec
的调用(实现差)更健壮
但是,如果JWS由于某些原因不适合此应用程序,请参阅导致Jar内存不足的黑客攻击(类似于上面使用
exec
的方式,但在使用ProcessBuilder
重新启动内存不足的应用程序时稍微稳健一些)
组织桌面快捷方式以允许用户单击即可启动,这是留给读者的一个练习。为什么不使用批处理文件来启动应用程序?重新阅读问题后,我意识到这是重复的。