如何在终端中执行一个 .jar 文件

我知道要执行一个文件,我使用 . 命令,然后是文件名,它们之间有一个空格。但是我试图使用 . 来执行一个.jar文件,但是不起作用。我进入属性并将其标记为可执行,并使用Java运行它。
在Bash终端中是否有一种使用Java执行文件的方法? 我正在尝试执行Minecraft.jar文件 我正在尝试执行Minecraft.jar文件。

5你好,欢迎来到,jaorizabal。我稍微修改了你的问题。也许你可以为你的浏览器安装一个拼写检查器,以便自己改进下一个问题。另一个提示:对于文本问题,你可以在终端中用鼠标选中文本,然后用滚轮中键在浏览器(和其他地方)的编辑框中粘贴。然后你可以使用编辑框上的按钮来排版你的代码。这比截屏并上传要快得多。 - user unknown
9个回答

.语法只能用于运行(通过“源化”)shell脚本。
要运行一个.jar文件,您需要使用java命令:
java -jar Minecraft.jar

如果您尚未安装Java,可以通过安装“default-jre¹”软件包来解决此问题。您可以在终端中运行以下命令来检查是否已安装Java:
java -version 

[1]: 这将安装默认的openjdk Java运行时。如果你愿意,你可以使用openjdk-8-jreopenjdk-7-jre或者openjdk-6-jre,取决于你所使用的Ubuntu版本中哪个可用。

$ java -jar schemaSpy_5.0.0.jar *** Required parameter '-o' was not specified. *** - Karthik T

Linux完全可以运行外国二进制文件,比如JAR文件。这就是Wine的工作原理。要将JAR文件作为可执行文件运行,请在控制台中执行以下操作。
sudo apt-get install binfmt-support

切换到您的JAR文件并将其更改为可执行文件(您也可以在Nautilus中通过文件属性进行此操作)。
chmod a+rx myjar.jar

运行您的jar文件,就像运行任何其他二进制可执行文件或shell脚本一样。
./myjar.jar

注意:请确保您已加载了binfmt_misc Linux内核模块。如果您使用自定义编译的内核而没有加载此模块,binfmt-support将无法正常工作。

1谢谢!这正是我在寻找的东西。它比使用java -jar更好,因为它不需要主机程序知道它是一个java程序,而且比使用脚本更好,因为你不必担心通过STDIN和OUT传递数据。 - srlm
4在Debian 9上无法工作:“无效文件(错误的魔数):执行格式错误”。 - Paul

如果它是一个可执行的jar文件,那么
java -jar Minecraft.jar 

并非所有的jar存档文件都包含在Manifest文件中声明要启动的可执行类,但如果有,则可以使用它。

顺便说一下:您不会从shell中使用点号启动大多数程序。 点号是source的快捷方式,仅适用于bash和某些其他shell,以将脚本包含在当前会话的范围内。

如果编译后的二进制文件xybin在路径中,则只需使用其名称即可启动:

xybin 

或者,使用绝对路径:
/home/foo/proj/test/xybin

或者使用相对路径:
proj/test/xybin

或者如果你恰好在文件的目录中,可以使用相对路径:
./xybin

文件必须标记为可执行文件(参见:chmod)。 所有上述内容也适用于shell脚本,但它们通常具有扩展名.sh,并且您可以通过调用解释器来启动shell脚本,然后它不需要被标记为可执行文件。
 bash xy.sh

如果你不想启动一个新的bash,你可以使用source命令。通过使用source命令,你可以加载函数定义、别名和变量设置。

你可能想为Unity应用程序创建一个漂亮的入口。执行以下命令:
gedit ~/.local/share/applications/minecraft.desktop

在弹出的窗口中,复制并粘贴以下内容:
[Desktop Entry]
Type=Application
Name=Minecraft
Comment=Click here to play Minecraft
Exec=java -jar /path/to/minecraft.jar
Icon=/path/to/minecraft/icon.png
Terminal=false
Categories=Game;

你可能需要注销并重新登录以查看效果。:) 此外,您需要搜索互联网寻找一个好看的Minecraft图标,因为它们不会在下载中提供。

安装jarwrapper。然后(通过添加可执行位),您可以通过输入jar文件名称来启动jar文件。
sudo apt-get install jarwrapper

这是通过使用binfmt将对新的二进制格式的支持添加到内核中来实现的。

  1. 使用 CTRL+ALT+T 组合键打开命令提示符。
  2. 进入你的 ".jar" 文件所在的目录。如果你的 Ubuntu 版本/类型支持,你应该能够右键点击 ".jar" 文件所在的目录,然后选择 "在终端中打开"。
  3. 输入以下命令:

    java -jar jar文件名.jar
    
这样你的 ".jar" 文件将会执行。

 java -jar /home/username/.minecraft/launcher.jar

对一个旧问题的新回答

使用常规语法./app.jar(而不是java -jar)来执行一个jar文件很容易实现,如此处所述:如何创建可执行的jar文件

基本上,JAR是ZIP的一种变体,它允许在不损坏JAR文件的情况下在其前后添加任意字节。这意味着可以在jar文件的开头添加一个启动脚本,使其成为“可执行”的。

以下是将一个“普通”jar文件转换为可执行文件的简单示例:

# Append a basic launcher script to the jar
cat \
  <(echo '#!/bin/sh')\
  <(echo 'exec java -jar $0 "$@"')\
  <(echo 'exit 0')\
  original.jar > executable.jar

# Make the new jar executable
chmod +x executable.jar

现在,你可以运行./executable.jar而不是java -jar original.jar。这适用于所有类Unix系统,包括Linux、MacOS、Cygwin和Windows Linux子系统。

如果你想使用特定的Java版本安装你的JAR文件, 请同时指定Java目录。
/scratch/app/product/Software/jdk1.8.0_112/bin/java -jar /path-to-jar/Minecraft.jar