我想在启动时在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-system-independent" (从Vista到Win 10,并且不依赖于已安装的JRE的版本)。所以我不知道JRE的一般路径,因此我无法向注册表添加特定的RUN命令。
有没有人知道如何将JRE调用系统独立地正确添加到注册表的RUN部分?
我已经尝试过使用命令文件,例如" STARTUP.CMD"在那里有内容java -jar file.jar
,已经将这个文件的调用添加到注册表,并且是的,有效,java被发现,应用程序已经启动,但是当使用这个方法时,我有一个烦人的黑色命令终端窗口保持打开所有java应用程序运行的时间。
感谢名单, 通博
答案 0 :(得分:1)
从
更改您的startup.cmdjava -jar file.jar
到
start java -jar file.jar
这将在新进程中启动java.exe,让批处理执行程序终止。