怎么样把自己编写的java程序变成jar可执行文件

怎么样把自己编写的java程序变成jar可执行文件,第1张

把自己编写的java程序变成jar可执行文件的步骤如下:

1最简单直接的方法,选择想打包的程序,右键export

2选择Runnable Jar file。(即可执行的Jar包)

3选择程序的主类,就是还有Main函数的类。点Finish即可。

4在机器上,设置好Jar文件的打开方式(别默认用解压缩的工具打开就行),双击即可运行。

jar文件是一种特殊的压缩文件,你可以用JDK下的jar命令进行反解压,具体语法格式你可以从dos窗口进入JDK的安装目录,输入jar/,可以查看到jar命令的各种格式。把jar文件解压出来后,你就可以用javaexe命令去运行了。通常jar文件解压出来的都是java的class文件。

^^java教程^^《制作可执行JAR》本文阐述了如何把一个不可执行的JAVAArchive(JAR)文件变成可执行,而不用直接 *** 作manifest文件。你会学到写出短小的一个程序,通过运行java-jar命令或在像windows一样的 *** 作系统里面用双击鼠标运行任何JAR文件。 你可以很容易地把应用程序的一整套class文件和资源文件打包到一个JAR中。事实上这就是jar文件存在的一个目的。另外一个目的就是让用户能很容易地执行被打包到jar文件里面的应用程序。那么为什么jar文件仅仅作为文件在整个java里面占据了次要的地位,而本地执行则被忽视? 要执行一个jar文件,你可以使用java命令的-jar选项。举一个例子来说,假如你有个名叫myjarjar的文件。这个jar是可以运行的,你可以运行它:java-jarmyjarjar另外一个办法就是,当JavaRuntimeEnvironment(JRE)已经被安装到一个像windows的 *** 作系统上,将jar文件与JVM关联(关联javaexe跟jar文件)在一起你就可以通过双击jar来运行这个应用程序。当然,jar文件必须是可执行的。 现在的问题是:如何做一个可以执行的jar? manifest文件以及Main-class入口 在大多数jar中,都在一个叫META-INF的目录里面保存了一个叫MANIFESTMF的文件。那个文件里面, 包含了一个特殊表项名字叫Main-Class,告诉java-jar命令应该执行哪个class 问题是你必须为manifest文件手工加入适当表项,而且必须在一定的位置和用一定的格式。不幸的是,不是每个人都喜欢打开写字板编辑配置文件。 让API帮你完成任务 自从java12发布以来,一个叫javauiljar包的出现,让你能够方便处理jar文件。(注意:该包基于javautilzip)特别地,jar包让你通过Mainfest类,可以容易 *** 作那些manifest文件 就让我们用这个API写一个程序吧。首先,这个程序必须知道三样东西: 1。我们要使之可运行的jar文件。 2。运行jar的主类(这个类必须包含在jar中)。 3。输出新jar文件的文件名,因为我们不能简单地覆盖原来的文件。 编写程序 上面列表的三点要求将组成我们的程序的参数。现在,让我们为这个程序选择一个适当的名字。 MakeJarRunnable听起来觉得怎样? 为main方法检查参数 假设我们的main方法入口点是一个标准的main(String[])方法。我们应该这样检查程序的参数: if(argslength!=3){ Systemoutprintln("Usage:MakeJarRunnable" " "); Systemexit(0); } 请注意参数列表是如何描述的,因为这在以下代码中是很重要的。参数的次序和内容不是固定的; 然而,如果你要改变他们的话,要记住响应修改其他代码。 访问jar和jar的manifest文件 第一,我们必须创建一些了解jar和manifest的对象: //CreatetheJarInputStreamobject,andgetitsmanifest JarInputStreamjarIn=newJarInputStream(newFileInputStream(args[0])); Manifestmanifest=jarIngetManifest(); if(manifest==null){ //Thiswillhappenifnomanifestexists manifest=newManifest(); } 设置Main-Class属性 我们把Main-Class入口放到manifest文件的main属性部分。一旦从manifest对象获得这个属性,就可以设置需要的mainclass。然而,如果main-Class属性已经存在原来的jar当中又如何呢?这里我们只是简单地输出一个警告然后退出。我们能加入一个命令行参数告诉程序使用新的值,而代替了旧的那个: Attributesa=manifestgetMainAttributes(); StringoldMainClass=aputValue("Main-Class",args[1]); //Ifanoldvalueexists,telltheuserandexit if(oldMainClass!=null){ Systemoutprintln("Warning:oldMain-Classvalueis:" oldMainClass); Systemexit(1); } 输出新的JAR 我们需要创建一个新的JAR文件,所以我们必须使用JarOutputStream类。注意: 我们必须确定我们不用跟输入文件相同的名字作为输出文件的名字。还有一个方案就是,程序应该考虑到一种情况,就是两个jar文件都是相同的,促使用户覆盖原来的文件,如果他愿意这么做的话。然而,我在保留了这一点,作为读者的一个练习。从如下代码开始: Systemoutprintln("Writingto" args[2] ""); JarOutputStreamjarOut=newJarOutputStream(newFileOutputStream(args[2]),manifest); 我们必须从输入JAR写每个表项到输出的JAR,所以迭代每个表项: //Createareadbuffertotransferdatafromtheinput byte[]buf=newbyte[4096]; //Iteratetheentries JarEntryentry; while((entry=jarIngetNextJarEntry())!=null){ //ExcludethemanifestfilefromtheoldJAR if("META-INF/MANIFESTMF"equals(entrygetName()))continue; //WritetheentrytotheoutputJAR jarOutputNextEntry(entry); intread; while((read=jarInread(buf))!=-1){ jarOutwrite(buf,0,read); } jarOutcloseEntry(); } //Flushandcloseallthestreams jarOutflush(); jarOutclose(); jarInclose(); 完成程序 当然,我们必须把这些代码放到一个类的main方法里面,并且需要一大堆import代码。完整程序: >

以上就是关于怎么样把自己编写的java程序变成jar可执行文件全部的内容,包括:怎么样把自己编写的java程序变成jar可执行文件、Java程序*.jar怎么运行、如何建立一个可执行的JAR文件大神们帮帮忙等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9584849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存