首页 > 编程语言 >java生成可执行文件

java生成可执行文件

时间:2024-01-18 09:01:31浏览次数:33  
标签:可执行文件 文件 java JAR jar 生成 test MANIFEST encrypter

创建可执行的 JAR 文件包--制作一个可执行的 JAR 文件包来发布你的程序是 JAR 文件包最典型的用法 
    Java 程序是由若干个 .class 文件组成的。这些 .class 文件必须根据它们所属的包不同而分级分目录存放;运 行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或者 java 命令的 -cp 参数;运行时还要到控制台下 去使用 java 命令来运行,如果需要直接双击运行必须写 Windows 的批处理文件 (.bat) 或者 Linux 的 Shell 程序。 因此,许多人说,Java 是一种方便开发者苦了用户的程序设计语言。
    其实不然,如果开发者能够制作一个可执行的 JAR 文件包交给用户,那么用户使用起来就方便了。在 Windows 下 安装 JRE (Java Runtime Environment) 的时候,安装文件会将 .jar 文件映射给 javaw.exe 打开。那么,对于一个 可执行的 JAR 文件包,用户只需要双击它就可以运行程序了,和阅读 .chm 文档一样方便 (.chm 文档默认是由  hh.exe 打开的)。那么,现在的关键,就是如何来创建这个可执行的 JAR 文件包。
    创建可执行的 JAR 文件包,需要使用带 cvfm 参数的 jar 命令,同样以上述 test 目录为例,命令如下:   jar cvfm test.jar manifest.mf test     这里 test.jar 和 manifest.mf 两个文件,分别是对应的参数 f 和 m,其重头戏在 manifest.mf。因为要创建可 执行的 JAR 文件包,光靠指定一个 manifest.mf 文件是不够的,因为 MANIFEST 是 JAR 文件包的特征,可执行的  JAR 文件包和不可执行的 JAR 文件包都包含 MANIFEST。关键在于可执行 JAR 文件包的 MANIFEST,其内容包含了  Main-Class 一项。这在 MANIFEST 中书写格式如下:     Main-Class: 可执行主类全名(包含包名)     例如,假设上例中的 Test.class 是属于 test 包的,而且是可执行的类  (定义了 public static void main(String[]) 方法),那么这个 manifest.mf 可以编辑如下:   Main-Class: test.Test <回车>     这个 manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有 Main-Class: test.Test 一行,且该 行以一个回车符结束即可。创建了 manifest.mf 文件之后,我们的目录结构变为:     
==     
|  -- test     
  |  -- Test.class     
     -- manifest.mf     
    这时候,需要到 test 目录的上级目录中去使用 jar 命令来创建 JAR 文件包。也就是在目录树中使用“==”表 示的那个目录中,使用如下命令:   jar cvfm test.jar manifest.mf test     之后在“==”目录中创建了 test.jar,这个 test.jar 就是执行的 JAR 文件包。运行时只需要使用  java -jar test.jar 命令即可。     需要注意的是,创建的 JAR 文件包中需要包含完整的、与 Java 程序的包结构对应的目录结构,就像上例一样。 而 Main-Class 指定的类,也必须是完整的、包含包路径的类名,如上例的 test.Test;而且在没有打成 JAR 文件包 之前可以使用 java <类名> 来运行这个类,即在上例中 java test.Test 是可以正确运行的 (当然要在 CLASSPATH  正确的情况下)。 
以上
 
    结合自己的试验,下面记录下自己把一个加密字符串的工具程序发布成可执行文件的过程。
   我的类:com.izumi.util.Encrypter.java
   第一步:在桌面新建一个文件夹,取名encrypter。 将com.izumi.util.Encrypter.java的class文件,从com文件夹开始复制,粘贴到encrypter文件夹中。
   第二步:从手头随便一个.jar文件里找到MANIFEST.MF文件,粘贴到encrypter文件夹中。用Ultraedit打开MANIFEST.MF,在文件最后加一句:
Main-Class: com.bettersoft.util.Encrypter,加一个回车,保存关闭MANIFEST.MF。
   第三步:把encrypter文件夹拷贝到d盘根目录下,cmd,cd d:\encrypter,执行jar cvfm encrypter.jar MANIFEST.MF com,这里的encrypter.jar是你要生成的可执行jar文件的名字,这里的com是你class文件的路径根文件夹名。执行完这句话以后,可以发现在encrypter文件夹里,encrypter.jar包已经生成完毕。
   第四步:在encrypter文件夹里新建“执行.bat”,用Ultraedit打开“执行.bat”,在里面写java -jar encrypter.jar回车pause,保存关闭。执行这个批处理文件,如果一切正常,就可以把com文件和MANIFEST.MF删了。
   这时,encrypter文件夹里的东东有三个:encrypter.jar,MANIFEST.MF,执行.bat。
说明:
1、前提条件:必须安装JRE。
2、要能够运行可执行的jar包,需要在你的环境变量里把JREXXXX\bin加到path里。

标签:可执行文件,文件,java,JAR,jar,生成,test,MANIFEST,encrypter
From: https://www.cnblogs.com/jiaodaoniujava/p/17971719

相关文章

  • Java学习日记 Day3 我怀疑世界就是一个巨大的草台班子
    JavaSE:①包装类:对比基础数据类型有更高级的功能。另外在容器中(或者叫集合)包装类有重要的作用。容器中只能存放包装类,不能存放基础数据类型。包装类一些特性:被final修饰,不能有子类了。。。jdk1.0就有,是开服玩家。。。其实在代码底层中包装类封装了一个int。。。自动装箱自动拆箱......
  • Java登陆第三十一天——Filter
    好好好,好久不见了。不多说,继续干。Filter即过滤器,专用于过滤客户端所发送的请求。生活中的过滤器筛子地铁闸门公司前台保安以上举例都是生活中的过滤器。在代码中,过滤器的作用是控制访问资源。Filter所有的过滤器都要实现Filter接口,Filter接口方法如下:方......
  • RabbitMQ学习四 java客户端连接RabbitMQ
    RabbitMQ的工作模式,可以参考官网:https://www.rabbitmq.com/getstarted.html一、简单方式以下两种都是生产者直接发消息给队列,不通过交换机。且发送给队列的消息只能被消费一次。比如一个队列被C1和C2消费,在队列中的消息只会被一个消费者消费。生产者代码逻辑图代码如下:p......
  • github copilot 在java中使用
    如何在Java中使用GitHubCopilot引言在本文中,我将向您展示如何在Java开发中使用GitHubCopilot。GitHubCopilot是一款由GitHub开发的人工智能代码建议工具,可以帮助开发者提高代码编写速度和质量。对于刚入行的小白,学习如何使用GitHubCopilot可以极大地提升开发效率和学习曲线。......
  • stable diffusion java开发
    实现“stablediffusionjava开发”作为一名经验丰富的开发者,我将帮助你了解和实现“stablediffusionjava开发”。下面是整个过程的步骤表格:步骤操作步骤1确定项目需求和目标步骤2设计系统架构步骤3编写代码步骤4运行和测试代码步骤5调试和修复错误......
  • 国产最强的 AI 代码生成插件:CodeGeeX
    国产最强的AI代码生成插件:CodeGeeX学习改变命运,技术铸就辉煌。大家好,我是銘,AI已经火了一年多了,国内很多公司也都开始开发了很多AI工具。今天我们就来聊一聊国产的AI代码生成工具CodeGeex。官方介绍首先,我们来看一下官方对它的介绍CodeGeeX是一款基于大模型的智......
  • Java进阶1
    Struct顺序packagecom.zzl.struct;publicclassShunXuDemo1{publicstaticvoidmain(String[]args){System.out.println("hello1");System.out.println("hello2");System.out.println("hello3");......
  • CF-720-E- 最短路+最小生成树
    1051-F题目大意给定一个\(n\)个点\(m\)条边的无向联通图,边带权。有\(q\)次询问,每次询问两点\(x,y\)直接的最短路的长度。Solution注意到\(m-n{\le}20\),那么整个图可以视为一个生成树加上不超过\(21\)条非树边构成的图,这些非树边构成一个边集\(E\)。先把整个图的最小生成树搞......
  • javaStable Diffusion
    教你实现“javaStableDiffusion”流程及代码示例1.简介JavaStableDiffusion(JSD)是一种用于在Java应用程序中实现稳定的扩散算法的技术。它可以帮助开发者在分布式系统中实现可靠的消息传递和数据同步。本文将向你介绍JSD的实现过程,并提供相应的代码示例。2.实现流程下面是......
  • 正则表达式复习七——JavaScript 中使用
    JavaScript使用JavaScript的正则表达式是由RegExp对象表示的,同时也可以使用正则表达式字面量。1.使用RegExp对象letpattern=newRegExp("pattern","flags");pattern是字符串形式的正则表达式模式。flags是字符串形式的修饰符,可以包含i,g,m等。letpattern......