【问题标题】:how to start a java application system-independent at Windows startup如何在 Windows 启动时启动一个独立于系统的 java 应用程序
【发布时间】:2016-10-23 21:00:58
【问题描述】:

我想在启动时在 Windows 下自动运行 Java 应用程序,但不依赖于特定的 Windows 或特殊的 JRE 版本。

通常,在 Windows 登录时运行程序的一个好方法是在

下添加一个注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 

但是,当 Windows 尝试运行注册表的 RUN 部分中列出的程序时,似乎没有评估系统 PATH。

所以这两个条目都有效:

"C:\Program Files\Java\jdk1.8.0_111\bin\javaw" -jar c:\path\to\java.jar
"C:\ProgramData\Oracle\java\javapath\javaw" -jar c:\path\to\java.jar

但是这个没有出现:

javaw -jar c:\path\to\java.jar

现在,后者在手动输入控制台窗口时可以工作,因为存在所需的 PATH 并对其进行评估:

PATH=....;C:\ProgramData\Oracle\Java\javapath;....

现在,我想从自动安装程序中添加注册表项,我希望它形成“独立于 Windows 系统”(从 Vista 到 Win 10,而且不取决于版本安装了 JRE)。所以我不知道 JRE 的一般路径,因此我无法向注册表添加特定的 RUN 命令。

有谁知道如何将独立于系统的 JRE 调用正确添加到注册表的 RUN 部分?

我已经尝试过使用命令文件,例如“startup.cmd”,内容为java -jar file.jar,已向注册表添加了对该文件的调用,是的,找到了java,应用程序已启动,但是使用此方法时,我有一个烦人的黑色命令终端窗口在 Java 应用程序运行时始终保持打开状态。

谢谢, 汤博

【问题讨论】:

  • 澄清一下:你的最后一句是说“如果我调用批处理文件,PATH 已解析,但如果我通过注册表运行命令调用 javaw.exe 则未解析”?跨度>
  • 是的。显然,当直接从注册表调用 prg 时没有可用的 PATH 信息,但是当通过批处理或 cmd 文件的迂回调用时,PATH 确实存在于批处理或 cmd 文件中。

标签: java windows registry


【解决方案1】:

更改您的 startup.cmd,来自

java -jar file.jar

start java -jar file.jar

这将在一个新进程中启动 java.exe 并让您的批处理执行程序终止。

【讨论】:

  • 那行得通,黑色的命令终端窗口至少不会永久停留,但在执行start 时仍会短暂闪烁,这可能仍会使用户感到困惑。所以我更喜欢一种根本看不到终端窗口的方式。
  • 您是否尝试过/b 参数,例如start /b java -jar file.jar 或者改用/min
猜你喜欢
  • 2014-02-27
  • 2018-03-01
  • 2014-11-05
  • 2018-05-12
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多