C# 从C启动java程序时出错#
我试图用以下代码启动java程序:C# 从C启动java程序时出错#,c#,java,launching-application,C#,Java,Launching Application,我试图用以下代码启动java程序: ProcessStartInfo info = new ProcessStartInfo(); info.WorkingDirectory = @"D:\2\server"; info.FileName = "java"; info.Arguments = "-Xms512m -Xmx1536m -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*;server.jar
ProcessStartInfo info = new ProcessStartInfo();
info.WorkingDirectory = @"D:\2\server";
info.FileName = "java";
info.Arguments = "-Xms512m -Xmx1536m -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*;server.jar server.Server";
ServerProcess = new Process();
ServerProcess.StartInfo = info;
ServerProcess.Start();
但总是会出错:
VM初始化期间出错,无法保留足够的空间
对象堆的空间无法创建Java虚拟机
但如果我创建了一个.bat文件,其中包含以下代码:
java -Xms512m -Xmx1536m -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*;server.jar server.Server
- 一切都好李>
谢谢 我不确定这是否有帮助,但我知道Process对象为进程分配的内存确实有限。由于批处理文件可以工作,我认为JVM的堆分配超出了相关进程允许的峰值内存。不幸的是,我不知道有什么方法可以增加进程对象分配的最大内存
我会选择要么坚持批处理文件方法,要么使用IKVM:或使用jni4net:。我有一段时间遇到过这个问题,从.NET应用程序启动时,必须删除内存分配命令。在您的情况下,以下是正确的命令:
ProcessStartInfo info = new ProcessStartInfo();
info.WorkingDirectory = @"D:\2\server";
info.FileName = "java";
info.Arguments = "-Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*;server.jar server.Server";
ServerProcess = new Process();
ServerProcess.StartInfo = info;
ServerProcess.Start();
至少这对我来说是有效的。可以尝试删除“文件名”并添加“java内部参数?也许您的C#应用程序占用了大量内存?不,启动一切正常,运行此launcher java应用程序时出现问题,似乎此launcher程序工作正常。”isolated@AljoshaBre,不,大约15米)每次都是这样吗?你试过在新启动的机器上运行它吗?