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

2024-03-01

这是我的后续自己之前的问题 https://stackoverflow.com/questions/1218790/我有点不好意思问这个...但是无论如何:如何以独立于系统的方式从独立的 Java 程序启动第二个 JVM?并且无需依赖诸如 JAVA_HOME 之类的环境变量,因为它可能指向与当前正在运行的 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...、...)启动。


我认为答案是“是”。这可能与您在 Java 中使用系统无关代码所做的一样好。但请注意,即使这也只是相对地系统独立。例如,在某些系统中:

  1. JAVA_HOME 变量可能尚未设置,
  2. 用于启动 JVM 的命令名称可能不同(例如,如果它不是 Sun JVM),或者
  3. 命令行选项可能会有所不同(例如,如果它不是 Sun JVM)。

如果我的目标是在启动(第二个)JVM 时获得最大的可移植性,我想我会使用包装脚本来实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

*这*真的是从 Java 代码启动第二个 JVM 的最佳方式吗? 的相关文章

  • NoInitialContextException:heroku 战争部署

    我一直在开发一个 J2EE 项目 并且在其中使用连接池 也通过部署在 heroku 上的数据库进行访问 我使用以下代码来设置 Connection 对象 Context initContext new InitialContext Cont
  • Guice 忽略注入构造函数参数上的 @Nullable

    我正在使用 Guice v 3 0 并且有一个值被注入到构造函数中 该值可以为 null 因此我在构造函数中使用 Nullable 来自 javax annotations 注释了该参数 public MyClass Parameter1
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • Android 中的列表(特别是 RecyclerView 和 CardView)如何工作

    请原谅我问这个问题 但我是 Android 开发新手 尽管我正在尝试了解developer android com 网站上的基础知识 但大多数示例 即使他们说它们是为 Android Studio 构建的 尚未设置为使用 Gradle 因此
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • 在 MongoDB 和 Apache Solr 之间同步数据的简单方法

    我最近开始使用 MongoDB 和 Apache Solr 我使用 MongoDB 作为数据存储 并且希望 Apache Solr 为我的数据创建索引 以实现应用程序中的搜索功能 经过一些研究 我发现 基本上有两种方法可以在 MongoDB
  • 通过 appassembler-maven-plugin 生成的脚本无法在 Spring Boot 应用程序中找到主类

    我使用 appassembler maven plugin 生成的启动脚本有问题 我有一个基本的 spring boot 应用程序 只有一个类 SpringBootApplication public class ScriptDemoApp
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • Play.application() 的替代方案是什么

    我是 Play 框架的新手 我想读取conf文件夹中的一个文件 所以我用了Play application classloader getResources Data json nextElement getFile 但我知道 play P
  • Karaf / Maven - 无法解决:缺少需求 osgi.wiring.package

    我无法在 Karaf 版本 3 0 1 中启动捆绑包 该包是使用 Maven 构建的并导入gson http mvnrepository com artifact com google code gson gson 2 3 1 我按照要求将
  • 避免 Java 中的重复导入:继承导入?

    有没有办法 继承 导入 Example 常见枚举 public enum Constant ONE TWO THREE 使用此枚举的基类 public class Base protected void register Constant
  • Lombok @Builder 不创建不可变对象?

    在很多网站上 我看到 lombok Builder 可以用来创建不可变的对象 https www baeldung com lombok builder singular https www baeldung com lombok buil
  • 如何从 Ant 启动聚合 jetty-server JAR?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • 如何处理 StaleElementReferenceException

    我正在为鼠标悬停工作 我想通过使用 for 循环单击每个链接来测试所有链接的工作条件 在我的程序中 迭代进行一次 而对于下一次迭代 它不起作用并显示 StaleElementReferenceException 如果需要 请修改代码 pub
  • Hadoop NoSuchMethodError apache.commons.cli

    我在用着hadoop 2 7 2我用 IntelliJ 做了一个 MapReduce 工作 在我的工作中 我正在使用apache commons cli 1 3 1我把库放在罐子里 当我在 Hadoop 集群上使用 MapReduceJob
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • 在 Xcode 中禁用 AdMob 日志记录

    当我安装 Google Mobile Ads SDK cocoapod 时 我收到了大量日志记录 有些似乎完全无关 但不知何故 因为完全删除 Google Mobile Ads SDK pod 会删除所有日志记录 这是我所拥有的 Podfi
  • 捕获 log4j 输出

    我们正在使用log4j2广泛地存在于我们的系统中 并对其进行配置log4j2 xml 现在我需要一个可以运行的新应用程序jobs 我想单独捕获时间 X 和 Y 之间产生的所有日志并将其放入数据库中 我们框架的正常日志记录应该照常发生 记录到
  • jQuery .toggleClass() 速度

    我使用 jQuery toggleClass 函数 类将在每次点击时切换 效果完美 但我无法设置速度 我已经尝试过 databox toggleClass boxopened 7000 还有这个 databox toggleClass bo
  • Jenkins:Gerrit 触发器问题的设置

    我在 Jenkins 上安装了插件 Gerrit Trigger 因为当团队中的开发人员在存储库上推送某些内容 相对于特定项目 时 我需要自动启动构建 我按照这里的设置 https wiki jenkins ci org display J
  • 迭代对象的嵌套数组,查找 id 并更新与 id 匹配的对象

    我的输入如下 它是一个对象数组 每个对象都有状态 这也是一个对象数组 我想追加details当状态 id 与状态匹配时 在 states 对象内部id如以下所说的 IE 82175746 const input country id 877
  • Storyboard 中的 UIViewController Title 属性

    I am setting the title field of a UIViewController via Interface Builder Storyboard 该视图控制器嵌套在UINavigationController它又嵌套在
  • 使用 EF 在两个数据库之间复制记录

    我需要使用 EF 将数据从一个数据库复制到另一个数据库 例如 我有以下表关系 Forms gt FormVersions gt FormLayouts 我们在两个数据库中都有不同的表单 我们希望将它们收集到一个数据库中 基本上 我想从一个数
  • putback() 和 unget() 之间的区别

    我正在使用标准 iostream 从文件中获取一些输入 但我很困惑unget versus putback character 从文档中我看来这些功能实际上是相同的 其中unget 只记得输入的角色 所以我很紧张 我一直用putback c
  • Hazelcast 服务器作为 Linux 服务

    如何在生产环境中将 hazelcast 服务器作为 Linux 服务运行 java server cp hazelcast jar com hazelcast examples StartServer StartServer 运行服务器并输
  • 根据列名列表将数据表拆分为多个数据表

    我有一个如下所示的数据表 ID Country Supplier 515 DE A 515 CH A 515 FR A 516 DE B 516 FR B 517 DE C 517 IT C 我有一个List
  • PhantomJS 使用 QtWebKit 还是 Blink?

    PhantomJS CasperJS 是否使用 WebKit 或 Chromium 作为默认浏览器驱动程序 如果是WebKit 是直接WebKit还是qt或者gtk PhantomJS 基于 QtWebKit 常见问题解答说 问 Phant
  • 使用react和mapbox gl或maplibre gl动态加载标记

    我正在学习 React 我想显示一张地图 在该地图上动态显示和隐藏标记 这有效 我用Maplibre GL https github com maplibre maplibre gl js 这是一个分叉地图盒 GL https docs m
  • 如何解释函数实例的bind/>>>=?

    我正在努力提高我的理解Applicatives and Monad通过在 Javascript 中实现其函数实例来实现 我对 Haskell 的了解有限 我希望我的问题有意义 这是我的实现fmap lt gt and gt gt 为了Fun
  • malloc(0) 有什么意义?

    我刚看到这个code https github com mxcl scrobsub blob 2ad2f6131e5900d4c62d8c5bcdb15c069f17e3bd scrobsub c L94 artist char mallo
  • 类 PhpStorm_Codeception_ReportPrinter 不存在

    我尝试在 PhpStorm 中运行 Codeception 功能测试 但不断收到一条错误 提示缺少类 我在互联网上搜索过 除了一篇文章之外 没有发现任何可以解决这个问题的方法https intellij support jetbrains
  • 无法加载文件或程序集“System.Net.Http”

    在我的构建输出的诊断视图中显示了此冲突 System Net Http Version 4 0 0 0 Culture neutral PublicKeyToken b03f5f7f11d50a3a 和 System Net Http Ve
  • 使用 CSS Grid 时如何使内容居中并使背景覆盖整列?

    当我添加这段代码时 place items center 我的元素居中 但只有文本应用了背景颜色 当我删除此代码时 place items center 背景颜色覆盖整个列 但文本不再居中 main display grid grid te
  • 如何找出浏览器实际使用的网站图标

    我有一个新网站 其中包含使用源文件自动生成的一组图标图像真实网站图标生成器 http realfavicongenerator net 并且有 9 个苹果图标 1 Android 图标 3 个命名图标 1 Safari 固定SVG 1 js
  • 在 Wayland 和 X11 上模拟鼠标和键盘输入

    我正在对用 C 编写的 OpenGL 应用程序进行小型验收测试 到目前为止 我只能截取屏幕截图 还没有找到在 Wayland 和 X11 上模拟鼠标和键盘输入的方法 关于如何在 Wayland X11 中操作特定窗口的事件流有什么建议吗 用
  • *这*真的是从 Java 代码启动第二个 JVM 的最佳方式吗?

    这是我的后续自己之前的问题 https stackoverflow com questions 1218790 我有点不好意思问这个 但是无论如何 如何以独立于系统的方式从独立的 Java 程序启动第二个 JVM 并且无需依赖诸如 JAVA