当前位置: 首页 > 面试题库 >

*这*是从Java代码启动第二个JVM的最佳方法吗?

古弘
2023-03-14
问题内容

这是我之前的问题的后续内容,我对此感到有些尴尬。但是无论如何:您将如何以独立于系统的方式从独立的Java程序中启动第二个JVM?而且,例如,在不依赖于诸如JAVA_HOME之类的env变量的情况下,它可能会指向与当前正在运行的JRE不同的JRE。我想出了以下代码,该代码实际上有效,但感觉有点尴尬:

public static void startSecondJVM() throws Exception {
    String separator = System.getProperty("file.separator");
    String classpath = System.getProperty("java.class.path");
    String path = System.getProperty("java.home")
                + separator + "bin" + separator + "java";
    ProcessBuilder processBuilder = 
                new ProcessBuilder(path, "-cp", 
                classpath, 
                AnotherClassWithMainMethod.class.getName());
    Process process = processBuilder.start();
    process.waitFor();
}

另外,当前正在运行的JVM可能已使用第二个JVM不知道的其他一些参数(-D,-X …,…)启动了。


问题答案:

对我来说不清楚,在启动次要进程时,您总是想使用完全相同的参数,类路径或其他任何东西(尤其是-X类的东西-例如,为什么孩子需要与父对象相同的堆设置)。

我希望使用某种外部配置来为子代定义这些属性。还需要做更多的工作,但是我认为最终您将需要灵活性。

要查看可能的配置设置的范围,您可以查看Eclipse中的“运行配置”设置。那里有很多选项卡值得配置。



 类似资料:
  • 我有两个问题,我找不到任何流行/广泛接受的解决方案: > 使用Java程序启动zookeeper服务器最简单的方法是什么? 而且,是否可以将服务器添加到zookeeper集群,而无需手动转到每台机器并使用新节点的id和ip:端口条目更新其配置文件? 有人能帮忙吗?谢谢。

  • 问题内容: 从PHP文件中删除注释的最佳方法是什么? 我想做一些与strip-whitespace()类似的事情-但它也不应该删除换行符。 例如: 我要这个: 成为: (尽管如果在删除注释的地方仍然留有空行,那是不可能的)。 由于可能需要保留嵌入式html,因此这可能是不可能的-那是什么导致了google上出现的问题。 问题答案: 我会使用tokenizer。这是我的解决方案。它应该在PHP 4和

  • 问题内容: 我想重写文件的内容。 到目前为止,我想到的是: 保存文件名 删除现有文件 用相同的名称创建一个新的空文件 将所需内容写入空文件 这是最好的方法吗?还是有更直接的方法,即不必删除和创建文件,而只需更改内容? 问题答案: 要使用FileOutputStream覆盖文件foo.log,请执行以下操作: 或使用FileWriter:

  • 问题内容: 我想制作一个与用户文件交互的桌面GUI(当然要经过许可)。我下载文件并将其放在用户选择的目录中的代码全部用python编写。这段代码还有很多,但所有内容都是用python编写的。 我希望GUI部分成为桌面应用程序,以便客户端可以轻松地交互和运行程序。 我想用Java制作此GUI,并在有人按下按钮后使其与python代码交互。 实现此目标的最佳方法是什么? 问题答案: 我会这样: 您还可

  • 问题内容: 我正在编写Android应用程序,此处的最佳方法通常可能与Java相同或不同。 我只是希望能够设置一个调试标志,该标志仅在设置为true时才执行代码的某些部分–等同于C ++设置预处理器#define DEBUG并使用#ifdef DEBUG。 在Java中是否有公认的或最佳的方法来完成此任务? 现在,我只是要在Application对象中设置一个变量,但是我不认为这是最好的方法。 问

  • http://share.pho.to/8O9ku(显示java版本)