如何通过双击打开终端使我的 jar 文件可执行
How to make my jar file executable by double click to open terminal
好吧,基本上,每次我看到这个问题时,它都没有我正在寻找的答案,这就是为什么我要问自己的原因。
基本上,我在 BlueJ 上做了一个 java 项目(学校要求,很遗憾。但如果有问题,我可以将它导出到其他地方(最好是 IntelliJ 或 Visual Studio Code)),但本质上,我想做到这一点,这样我就可以简单地双击我的 .jar 导出,它将打开一个终端 window 并启动。但是,当我尝试此操作时,出现此错误:First Error
当我点击确定时,会出现:
Second Error
现在,如果我想让 jar 在终端上 运行,那么 java -jar jarFileName.jar
就可以完美运行,但我想要的是当我双击 jar 文件时发生这种情况;让它从终端启动并运行。
我看到的关于这个问题的所有其他答案都归咎于用户的计算机,并且通常告诉他们安装某个版本的 java 或其他任何版本,但这不是问题所在。我还有其他 jar 文件,我可以 运行 非常好,比如 Minecraft Forge 安装程序或 Minecraft Spigot 安装程序(抱歉,只有 Minecraft 的例子,没有多少其他使用 Java)。而且这是针对 uni 项目的,我所在领域的其他人都不知道如何让他们的 jar 可执行,这个文件也不适用于其他任何人。
所以是的,我知道这是 jar 的编译方式或其他问题,而不是 java 我的 PC 安装了什么。
我只是想让它可以双击以方便我将它发送给朋友时,但是如果有人知道我可以通过其他方式解决这个问题,那很好。例如,我知道我可以制作一个 Bash 文件,它只为我或其他人做 java -jar jarFileName.jar
,但我宁愿将它全部作为一个 jar 文件,所以我不知道这是否可以被合并到文件中但是是的。
另外,我真的很想要一个不涉及下载外部程序或其他任何东西的解决方案,因为我只想将此文件发送给我的朋友,让他们只需双击即可启动。
TL;DR,我需要做什么才能通过双击使我的 jar 文件真正可执行。谢谢。
要使 jar 文件可执行,您必须设置 entrypoint
您可以通过在创建 jar 文件时将 e
选项传递给 jar 命令来执行此操作,例如:
jar cvfe myapp.jar com.mycompany.myapp.MyApp com\mycompany\myapp
这里会添加Main-Class entry in the jar's manifest指向启动class,里面应该有一个main方法,例如:
package com.mycompany.myapp;
public class MyApp {
public static void main(String[] args) {
// start up the application
}
}
当您创建 JAR 文件时,它会自动接收默认值 manifest file。一个档案中只能有一个清单文件,并且它的路径名总是
META-INF/MANIFEST.MF
入口点由Main-Class指定,例如:
Manifest-Version: 1.0
Created-By: 1.8.13_37 (Oracle Corporation)
Main-Class: com.mycompany.myapp.MyApp
如果你想使现有的 jar 文件可执行,你可以解压缩它,修改清单并再次压缩它(并重命名它使其具有 .jar 扩展名 - jar 只是一个 zip)。
但我认为你显示的错误不是由 jar 不可执行引起的,而是由于某些环境问题导致 Java 应用程序找不到必要的变量或路径来使 Java 本机集成 (JNI) 工作。要解决此问题,您必须提供有关您尝试使用 JNI 执行的操作的更多详细信息。
好吧,基本上,每次我看到这个问题时,它都没有我正在寻找的答案,这就是为什么我要问自己的原因。
基本上,我在 BlueJ 上做了一个 java 项目(学校要求,很遗憾。但如果有问题,我可以将它导出到其他地方(最好是 IntelliJ 或 Visual Studio Code)),但本质上,我想做到这一点,这样我就可以简单地双击我的 .jar 导出,它将打开一个终端 window 并启动。但是,当我尝试此操作时,出现此错误:First Error
当我点击确定时,会出现: Second Error
现在,如果我想让 jar 在终端上 运行,那么 java -jar jarFileName.jar
就可以完美运行,但我想要的是当我双击 jar 文件时发生这种情况;让它从终端启动并运行。
我看到的关于这个问题的所有其他答案都归咎于用户的计算机,并且通常告诉他们安装某个版本的 java 或其他任何版本,但这不是问题所在。我还有其他 jar 文件,我可以 运行 非常好,比如 Minecraft Forge 安装程序或 Minecraft Spigot 安装程序(抱歉,只有 Minecraft 的例子,没有多少其他使用 Java)。而且这是针对 uni 项目的,我所在领域的其他人都不知道如何让他们的 jar 可执行,这个文件也不适用于其他任何人。
所以是的,我知道这是 jar 的编译方式或其他问题,而不是 java 我的 PC 安装了什么。
我只是想让它可以双击以方便我将它发送给朋友时,但是如果有人知道我可以通过其他方式解决这个问题,那很好。例如,我知道我可以制作一个 Bash 文件,它只为我或其他人做 java -jar jarFileName.jar
,但我宁愿将它全部作为一个 jar 文件,所以我不知道这是否可以被合并到文件中但是是的。
另外,我真的很想要一个不涉及下载外部程序或其他任何东西的解决方案,因为我只想将此文件发送给我的朋友,让他们只需双击即可启动。
TL;DR,我需要做什么才能通过双击使我的 jar 文件真正可执行。谢谢。
要使 jar 文件可执行,您必须设置 entrypoint
您可以通过在创建 jar 文件时将 e
选项传递给 jar 命令来执行此操作,例如:
jar cvfe myapp.jar com.mycompany.myapp.MyApp com\mycompany\myapp
这里会添加Main-Class entry in the jar's manifest指向启动class,里面应该有一个main方法,例如:
package com.mycompany.myapp;
public class MyApp {
public static void main(String[] args) {
// start up the application
}
}
当您创建 JAR 文件时,它会自动接收默认值 manifest file。一个档案中只能有一个清单文件,并且它的路径名总是
META-INF/MANIFEST.MF
入口点由Main-Class指定,例如:
Manifest-Version: 1.0
Created-By: 1.8.13_37 (Oracle Corporation)
Main-Class: com.mycompany.myapp.MyApp
如果你想使现有的 jar 文件可执行,你可以解压缩它,修改清单并再次压缩它(并重命名它使其具有 .jar 扩展名 - jar 只是一个 zip)。
但我认为你显示的错误不是由 jar 不可执行引起的,而是由于某些环境问题导致 Java 应用程序找不到必要的变量或路径来使 Java 本机集成 (JNI) 工作。要解决此问题,您必须提供有关您尝试使用 JNI 执行的操作的更多详细信息。