从cmd works启动Java应用程序,而不是从批处理启动

从cmd works启动Java应用程序,而不是从批处理启动,java,windows,batch-file,executable-jar,Java,Windows,Batch File,Executable Jar,问题如下: 我有一个Java应用程序打包在一个“.jar”-文件中 我可以通过以下任一方式启动应用程序(Swing应用程序) 双击该文件 命令行java-jarmyapp.jar 但是,当我将命令行命令放入批处理文件时,它会告诉我 无法访问jar文件MyApp.jar 批处理文件与jar位于同一目录中。我也是从cmd行开始的。 我试图用管理员权限从管理员shell调用bat-没有效果 我在一台Windows7(64位)机器上工作。如有任何提示,将不胜感激 编辑 您自找的:)这是批处理文件:

问题如下: 我有一个Java应用程序打包在一个“.jar”-文件中

我可以通过以下任一方式启动应用程序(Swing应用程序)

  • 双击该文件
  • 命令行
    java-jarmyapp.jar
但是,当我将命令行命令放入批处理文件时,它会告诉我

无法访问jar文件MyApp.jar

批处理文件与jar位于同一目录中。我也是从cmd行开始的。 我试图用管理员权限从管理员shell调用bat-没有效果

我在一台Windows7(64位)机器上工作。如有任何提示,将不胜感激

编辑

您自找的:)这是批处理文件:

@ECHO OFF
java -jar MyApp.jar
@PAUSE
编辑2

通过双击和从cmd调用批处理具有相同的效果。 将命令更改为

java -jar "C:\Full\Path\MyApp.jar"
没有效果

编辑3

我添加了
设置路径=%Path%;批处理文件的C:\Path\To\Jar
。没有效果。
我还尝试使用双反斜杠,这是Chris的链接建议的,并且得到了Viruzzo的支持。也没有影响。

当您双击.bat文件时,工作目录不会设置为.bat文件所在的位置,但通常类似于%AppData%。要使其正常工作,您需要将文件的完整路径放在bat中(即
java-jar C:\path\To\jar\MyApp.jar
)。

确保您没有在windows中启用隐藏扩展名选项。也许您的jar的名称以.jar.jar结尾?你确定jar的路径正确吗?

我还不知道为什么,但现在它可以工作了:

第一个批处理文件是另一个批处理文件的副本,我只是根据需要更改了内容

现在我将其重命名为MyApp.bak,并从头开始编写了一个新的MyApp.bat。

一旦我发现有什么不同,我会更新这个答案

更新


另一批又发生了同样的事情。这一次,我们得到了原因:由于某种原因,批处理文件在复制时没有继承权限。在文件夹中创建新文件夹具有正确的权限。因此,最终它确实是一个权利问题。

这并不是您特定问题的答案,但这将允许您解决问题,以便找到答案。添加sleep命令将使命令提示符处于静止状态,因此它不会立即关闭

ping 1.1.1.1 -n 1 -w 10000

(睡眠10秒)

我只需将路径加上引号,即使它没有空格或奇数字符

java-jar C:\Users\Jacob\executables\some file.jar
失败,但是


java-jar“C:\Users\JStamm\executables\some file.jar”
工作正常。

您可以发布批处理文件吗?您如何调用批处理文件?这可能是一个无知的建议,但您是否修改了相关文件?编辑:“chmod等效命令”,我今天还在处理我的第一杯咖啡,谢谢@Viruzzo@ChrisWindows上的chmod?@Chris:正如我写的,尝试使用权限,没有成功。我猜一定是关于路径的。我只是想不出更多的类路径、路径、工作目录…尝试将文件移动到最简单的目录中(即C:或该目录下的新目录),然后重试。特定路径可能有问题。将其移动到C:\test\并相应地更改了命令。无效:(thread@Chris linked中的一条注释指出,您可能必须在路径中使用双斜杠。这不是一个非常可移植的解决方案。这是我在一台新计算机上使用时做的第一件事:)您可以尝试在java-jar MyApp.jar命令之前添加cd C:\path\to\jar。@Pinhassi不幸的是没有。我想我也没有时间进一步调查了。