一、生成正确的jar文件
如果你打包成jar的不仅仅有.java文件,还有其它的格式,比如一个视频,可以参照以下步骤:
-
编译Java类文件: 如果尚未编译你的Java类文件,使用Java编译器(
javac
)将它们编译成字节码文件。在控制台命令行中执行以下命令:javac 文件名.java
这将生成
.class
文件。 -
创建一个清单文件: 创建一个名为
MANIFEST.MF
的清单文件,用于指定JAR文件的主类。在清单文件中添加以下内容,将文件名替换为你的Java类的主类名:Manifest-Version: 1.0
Main-Class: YourClass -
打包文件为JAR文件: 使用
jar
命令将Java类文件、清单文件和视频文件打包成JAR文件。在项目目录中执行以下命令:jar cfm 命名文件名.jar MANIFEST.MF 文件名.class 视频名.mp4
这将创建一个名为
命名文件名(自己命名).jar
的JAR文件,其中包含了你的Java类文件和视频文件。 -
运行JAR文件: 现在,你可以通过以下方式运行JAR文件:
java -jar 命名文件名(自己命名).jar
这会执行JAR文件中的Java类,并访问视频文件。
以上四个步骤,代码里面没有错误基本上没问题。
举例我出现的几个问题:
1、为什么MANIFEST中version是1.0
"Manifest-Version" 的值通常设置为 "1.0" 是因为这是 JAR 文件清单的标准版本。JAR 文件的清单是一个元数据文件,用于描述 JAR 文件的内容和属性。清单的格式在很早的时候就已经定义,并且 "1.0" 版本的清单格式一直保持兼容性,以确保与旧版本的JAR文件兼容。
在清单的规范中,"Manifest-Version" 的值被定义为 "1.0",而这个值在很多年里一直没有改变。这意味着,无论你创建的JAR文件是使用早期的Java版本还是较新的Java版本,都应该使用 "1.0" 作为清单版本,实际上,即使将 "Manifest-Version" 设置为 "1.0",你仍然可以在清单中包括其他自定义属性,以满足特定的需求,如指定主类等。清单的格式提供了一种灵活的方式来描述和配置JAR文件的信息。
所以,虽然 "1.0" 似乎是一个固定的值,但它是标准的清单版本,用于确保兼容性和一致性。
2、生成的.jar中没有主清单属性
首先,请确保 MANIFEST.MF
文件中包含正确的 Main-Class
配置,其中文件名.java
是你的主类名(文件名)。
其次,确保 MANIFEST.MF
文件与其他文件(例如 .class
文件和视频文件)在同一目录中,以便 jar
命令可以正确找到它。
最后,不要忘记了,如果有错误的jar(之前编译错的)删除。一般都是第一步MANIFEST.MF
文件中的类名没有写正确,比如我之前写了个包package 123,结果格式没有写正确,导致出现没有主清单属性的错误。
3、基本的问题就是主类名和文件名不一致
这个问题改一下名字就好。
二、找到合适的exe文件生成软件
有好几个软件,我用的是exe4j,具体的教程如下
哔哩哔哩的:
【exe4j把jar转exe】 https://www.bilibili.com/video/BV15T4y1Q7dj/?share_source=copy_web&vd_source=2b792576c9e5b5a0bb742e82544b62eb
有一个小小的问题,就是随着jdk版本的更新,jre文件夹好像给取消了,就是没有合成像视频中这样了。
下面这个是老版本的
但今天发现,老版本的好像不能运行,可能是我的代码的问题还是其它的问题。反正新版本的可以,但要全部复制。