”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何像 C# 中的 Application.Restart() 一样重新启动 Java 应用程序?

如何像 C# 中的 Application.Restart() 一样重新启动 Java 应用程序?

发布于2024-11-19
浏览:128

How Can I Restart a Java Application Like Application.Restart() in C#?

重新启动 Java 应用程序:综合解决方案

在各种场景中都会出现重新启动 Java 应用程序的需要,例如当事件处理程序被关闭时触发以启动重新启动。本文深入探讨了重新启动 AWT 应用程序的实用方法,反映了 C# 中 Application.Restart() 的功能。

重生技术

重新启动 Java应用程序时,采用了涉及多个步骤的细致方法。如下所述,这些步骤可确保无缝重新启动:

  1. 定位 Java 可执行文件: 该算法识别 Java 可执行文件的路径,该路径充当启动 Java 可执行文件的引擎。 application.
  2. 识别应用程序: MyClassInTheJar 类用于确定包含以下内容的 jar 文件的位置application.
  3. 制作重新启动命令: 创建一个精心构造的命令,由 java 二进制文件(或必要时的替代启动器)和 jar 文件的路径组成。
  4. 调用重新启动:执行精心设计的命令,有效终止正在运行的应用程序并同时启动其restart.

示例代码

下面的 Java 代码示例了 restartApplication() 方法,它体现了上述技术:

public void restartApplication() {
    final String javaBin = System.getProperty("java.home")   File.separator   "bin"   File.separator   "java";
    final File currentJar = new File(MyClassInTheJar.class.getProtectionDomain().getCodeSource().getLocation().toURI());

    if (!currentJar.getName().endsWith(".jar")) {
        return;
    }

    final ArrayList command = new ArrayList();
    command.add(javaBin);
    command.add("-jar");
    command.add(currentJar.getPath());

    final ProcessBuilder builder = new ProcessBuilder(command);
    builder.start();
    System.exit(0);
}

总结

重新启动 Java 应用程序可以通过一个有条理的过程来实现,该过程包括识别 Java 可执行文件、确定应用程序的位置、构建重新启动命令以及执行它。通过采用这种方法,开发人员可以赋予应用程序无缝重新启动的能力,就像 C# 开发人员使用 Application.Restart() 所做的那样。

最新教程 更多>
  • 如何从 java.sql.ResultSet 获取列名?
    如何从 java.sql.ResultSet 获取列名?
    如何从java.sql.ResultSet获取列名**java.sql.ResultSet接口提供对数据库查询结果的访问,但不直接提供使用索引检索列名的方法。要获取此信息,您可以利用 ResultSetMetaData 元数据对象。以下步骤演示如何使用列索引以字符串形式获取列名称:获取 Result...
    编程 发布于2024-11-19
  • 如何在 Eclipse 中访问受限类:绕过非 API 类限制?
    如何在 Eclipse 中访问受限类:绕过非 API 类限制?
    访问限制:在 Eclipse 中处理非 API 类限制Eclipse 强制执行访问限制,以防止开发人员无意中使用其之外的类预期的公共 API。但是,某些情况下可能需要访问受限类。访问限制错误的原因报告的错误(“访问限制:类型‘应用程序’不是 API 。 ..") 当 Eclipse 检测到...
    编程 发布于2024-11-19
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-19
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1 和 $array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求...
    编程 发布于2024-11-19
  • 为什么内联 JavaScript 无法在具有外部源的脚本标签中工作?
    为什么内联 JavaScript 无法在具有外部源的脚本标签中工作?
    使用 HTML 脚本标签加载脚本HTML 脚本标签用于包含和执行 JavaScript 代码。默认情况下,此标记采用外部源属性,例如 scr 来加载 JavaScript 文件。但是,尝试在脚本标记中包含内联 JavaScript,如下所示:<script src="myFile.j...
    编程 发布于2024-11-19
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    编程 发布于2024-11-19
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-19
  • 关于该项目的介绍以及...我自己
    关于该项目的介绍以及...我自己
    关于我的简要信息...... 你好世界!我叫卢卡斯,是一名 31 岁的巴西人,住在捷克共和国(或捷克??),我是一名软件工程师。我在不同的领域工作了 7/8 年,并且被困在这个领域。我没有动力,只是做基础工作并保持收入。但我错过了一些可以激励我的东西,也缺少了从工作中获得“热情”的...
    编程 发布于2024-11-19
  • 如何跨子域共享localStorage数据?
    如何跨子域共享localStorage数据?
    跨子域共享 localStorage从 cookie 迁移到 localStorage 时,跨域数据访问可能成为一个挑战。在像问题中描述的场景中,不同的子域(例如 site.example 和 www.site.example)隔离其 localStorage 对象,数据共享会出现问题。答案中提出的...
    编程 发布于2024-11-19
  • 如何在同一结果集上多次使用“mysqli_fetch_array()”?
    如何在同一结果集上多次使用“mysqli_fetch_array()”?
    多次使用 mysqli_fetch_array()使用 PHP 和 MySQL 处理数据库时,您可能会遇到需要多次访问相同查询结果的情况使用 mysqli_fetch_array() 函数。然而,尝试在同一个结果集中多次使用 mysqli_fetch_array() 将导致空输出。这是因为 mysq...
    编程 发布于2024-11-19
  • PHP 中的 Elvis 运算符是什么以及它如何工作?
    PHP 中的 Elvis 运算符是什么以及它如何工作?
    驯服 PHP 中的 Elvis 运算符 (?:)神秘的 ?: 运算符为一些 PHP 代码增色不少,让您感到困惑。这篇简明的文章深入探讨了其神秘的本质,揭示了其真正的目的。揭开 ?: 运算符?: 运算符,也称为“Elvis 运算符, " 功能类似于三元运算符。然而,它的独特之处在于没有一个表...
    编程 发布于2024-11-19
  • 如何在Java中以毫秒精度提取当前时间?
    如何在Java中以毫秒精度提取当前时间?
    在Java中以毫秒精度提取当前时间以YYYY-MM-DD HH:MI:Sec格式获取当前时间.毫秒,需要对所提供的代码进行扩展。修改的关键在于细化SimpleDateFormat模式。提供的代码检索当前时间,不带毫秒信息:public static String getCurrentTimeStam...
    编程 发布于2024-11-19
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-19
  • 如何从 MongoDB 数组中删除对象?
    如何从 MongoDB 数组中删除对象?
    MongoDB:从数组中删除对象在 MongoDB 中,您可以使用 $ 从嵌入在文档中的数组中删除对象拉操作员。如果您希望从数组中删除特定对象,则需要提供与确切对象匹配的查询。考虑以下文档:{ _id: 5150a1199fac0e6910000002, name: 'some name...
    编程 发布于2024-11-19
  • 尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    解决 PHP 中的 POST 请求故障在提供的代码片段中:action=''而不是:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"检查 $_POST数组:表单提交后使用 var_dump 检查 $_POST 数...
    编程 发布于2024-11-19

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3