【问题标题】:Command in batch file to open up a .jar file批处理文件中的命令以打开 .jar 文件
【发布时间】:2011-12-27 23:43:51
【问题描述】:

我创建了一个注册表,将我的.mike 文件与我创建的记事本应用程序相关联。

我认为问题出在注册表中,因为它只能运行.exe 文件,不过,我听说.batch.exe 文件是一回事。

我尝试打开使用我的应用程序创建的文本文件,并收到消息“[blank] is not a valid Win32 Application”。

批处理文件中双击文件后在应用程序中打开文件的命令是什么?

【问题讨论】:

  • 就像一些教育信息一样:批处理文件是命令脚本文件(由操作系统的命令处理器执行 - 在最新的 Windows 版本上为 cmd.exe),而 .exe(可执行文件)是由二进制代码组成的独立可执行文件(它在操作系统上自行运行)。它们与“同一事物中的一个”完全不同。
  • 你是如何启动你的应用程序的?您是如何创建文件关联的?也许this TechNet article 可以帮助澄清事情?
  • @DanielPryden 我希望我能正确解释您的第一个问题,我通过双击 .jar 文件启动应用程序...?我通过创建类似于this blog post 的文本文档来创建文件关联(也许这不是正确的术语)。感谢您参考 TechNet 文章。我会看看我能做什么,然后告诉你会发生什么!
  • @Mike:好的,这是你的问题的一部分。 .jar 文件本身也不是可执行文件,因此 Windows 使用这种相同的文件关联机制来确定 .jar 文件是用 javaw.exe“打开”的,这将运行 Java 代码(通过启动定义的主类通过 JAR 中的 MANIFEST.MF 文件)。同样,正如 Ken White 所指出的,.bat 文件也不是可执行文件,而是通过使用cmd.exe“打开”它们来启动。您需要将文件关联使用的命令行设置为完整命令行来启动您的应用程序,以javaw.exe开头。
  • @DanielPryden 感谢您对 .jar 文件的解释,当我在课堂上尝试了解它们时,它真的没有深入了解。然而,你上一篇文章的最后一行让我摸不着头脑......我不知道在命令提示符中输入什么来启动应用程序(以及如何将命令保存到文本文档中以及什么类型) .如果我理解正确,我将不得不将我的 .jar 文件移动到我的 jre6 文件夹中的 bin 子文件夹中才能成功执行命令......也许。

标签: java batch-file jar registry exe


【解决方案1】:

根据您对问题的 cmets,您似乎只想构建一个命令行来启动您的 JAR 文件。很简单:

%JAVA_HOME%\bin\javaw.exe -jar C:\Path\To\YourApplication.jar

(其中%JAVA_HOME% 指的是您安装Java 的目录。)

Sun 的网站有some comprehensive documentation on the java.exe and javaw.exe launchers。 (那个特定的链接有点过时,因为它指的是 Java 1.4.2,但从那时起启动机制没有改变。)

如果你想启动你的应用程序并打开一个文件,命令行可能是这样的:

%JAVA_HOME%\bin\javaw.exe -jar C:\Path\To\YourApplication.jar C:\Path\To\SomeFile.txt

然后"C:\\Path\\To\\SomeFile.txt" 将在其String[] args 参数中传递给您的main() 方法。

【讨论】:

  • @Mike:如果您不了解其中的某些特定方面,请随时提出新问题。
  • 好的。说 %JAVA_HOME% refers... 是否意味着它引用了编程中的位置或引用“在此处插入您的目录”?我尝试在命令提示符下执行更改目录命令(仅cd 推回父文件夹),但它保持在同一目录中,这告诉我它必须是根目录。如果要推回 C:\,我将添加引用 javaw.exe 文件的目录的其余部分。再次,我很抱歉这么多问题。我在命令提示符下几乎没有背景。
  • @Mike:你一定要熟悉命令提示符,因为这将帮助你理解这里发生了什么。 %-syntax 被 DOS 和 Windows 命令 shell 用来表示环境变量的扩展,就像编程中的变量一样。通常设置一个名为JAVA_HOME 的环境变量指向Java 安装文件夹(许多Java 工具都会这样),但Windows 上的JDK 安装程序通常不会这样做。因此,您可以自己设置变量,也可以将其替换为硬编码路径。
  • @Mike:至于您对cd 的评论,DOS 约定是针对cd 没有参数来打印当前目录而不是更改它,Windows 命令提示符遵循该约定。 (相比之下,在 Unix 和类 Unix 系统中,cd 不带任何参数会将您带回用户的主目录,pwd 用于打印当前工作目录。)由于驱动器号的工作方式Windows,cd 只会更改当前驱动器 的工作目录,因此如果您有多个驱动器(C:、D: 等),您需要先选择正确的驱动器。
  • @Mike:也就是说,并非注册表中的所有字符串都扩展了环境变量,而且我不知道用于文件关联的注册表项。在设置文件关联时使用绝对路径更为常见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 2010-12-23
相关资源
最近更新 更多