Java 通过桌面快捷方式启动jar文件

Java 通过桌面快捷方式启动jar文件,java,command-line,file-association,Java,Command Line,File Association,我在C:\program files\My App\Data\中有一个jar文件App.jar,在C:\program files\My App\中有一个带有本机启动器的JRE。启动器被编程为接受任何命令行args,并通过javaw-jar调用将其传递到jar文件。我创建了一个MSI包来安装整个程序,并将一个文件类型关联到启动器。双击相关文件时,JVM会说,“无法访问位于'Data\App.jar'的jarfile”。但是,如果我用相同的参数手动运行启动器,它会工作!救命啊 我不太理解你的问题,

我在
C:\program files\My App\Data\
中有一个jar文件App.jar,在
C:\program files\My App\
中有一个带有本机启动器的JRE。启动器被编程为接受任何命令行
args
,并通过
javaw-jar
调用将其传递到jar文件。我创建了一个MSI包来安装整个程序,并将一个文件类型关联到启动器。双击相关文件时,JVM会说,
“无法访问位于'Data\App.jar'的jarfile”
。但是,如果我用相同的参数手动运行启动器,它会工作!救命啊

我不太理解你的问题,但我认为这与你创建MSI包的方式有关,但无论如何,你可以看看:


为了允许从.exe启动.jar,此应用程序创建了一个包装。

问题是,我在my App\Data文件夹中绑定了自己的VM。启动器通过将jar文件作为参数传递来调用bin文件夹中的javaw.exe。它还将关联文件的路径(如果有的话)传递给jar文件。例如,我在启动器中编程的命令是“Data\bin\javaw.exe-jar Data\App.jar C:\test.ext”。其中App.jar是我的jar文件,test.ext是我的关联文件。当我双击test.ext文件时,javaw.exe会给出错误消息。但是,当我用相同的参数手动运行启动器时,它会工作。例如launcher.exe C:\Test.ext.你有没有想过这个问题?我找到了使用Target的示例,但我一直遇到一个错误,即当快捷方式嵌入到文件标记中时,我无法使用Target。也许我对主要问题的第一条评论可以帮助您在重新阅读您的问题后,我可以看到您对相对路径“Data\App.jar”有问题,您必须指示启动器使用绝对路径,或者,要在执行“javaw-jar”命令之前使“我的应用程序”成为当前目录,您可以在windows中这样做。在命令行的下一个命令之前使用“CD C:\..\My app”。你修好了吗?是的,修好了。。。。在Qt中重写启动器,并将PWD设置到文件夹中,它将完美地执行。。。谢谢