命令行下编译java并生成jar包(1)

合集下载

SpringBootjava-jar命令行启动原理解析

SpringBootjava-jar命令行启动原理解析

SpringBootjava-jar命令⾏启动原理解析在spring boot⾥,很吸引⼈的⼀个特性是可以直接把应⽤打包成为⼀个jar/war,然后这个jar/war是可以直接启动的,⽽不需要另外配置⼀个Web Server。

那么spring boot如何启动的呢?今天我们就来⼀起探究⼀下它的原理。

⾸先我们来创建⼀个基本的spring boot⼯程来帮助我们分析,本次spring boot版本为 2.2.5.RELEASE。

// SpringBootDemo.java@SpringBootApplicationpublic class SpringBootDemo {public static void main(String[] args) {SpringApplication.run(SpringBootDemo.class);}}下⾯是pom依赖:<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><finalName>springboot-demo</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>创建完⼯程后,执⾏maven的打包命令,会⽣成两个jar⽂件:springboot-demo.jarspringboot-demo.jar.original其中springboot-demo.jar.original是默认的maven-jar-plugin⽣成的包。

ECLIPSE将引用了第三方JAR包的JAVA项目打包成JAR文件的两种方法

ECLIPSE将引用了第三方JAR包的JAVA项目打包成JAR文件的两种方法

ECLIPSE将引用了第三方JAR包的JAVA项目打包成JAR文件的两种方法在Eclipse中,我们可以使用两种方法将引用了第三方JAR包的Java项目打包成JAR文件。

下面将详细介绍这两种方法。

方法一:使用Eclipse自带的导出功能1. 在Eclipse中,右键单击项目,选择"Export"。

2. 在弹出的对话框中,选择"Java"下的"JAR file",然后点击"Next"。

3. 在"JAR File Specification"页面上,选择要导出的项目以及要导出的资源;在"Export destination"中,指定导出的JAR文件的保存路径和文件名。

4. 在"JAR Packaging Options"页面上,选择"Export generated class files and resources",确保要导出的类文件和资源都被包含在JAR文件中。

5. 在"Select the export destination"页面上,选择"Package required libraries into generated JAR",这将会将所需的第三方JAR包也包含在生成的JAR文件中。

6. 点击"Finish"完成导出。

这种方法的优点是简单快捷,只需要几个简单的步骤就可以完成打包。

但是缺点是生成的JAR文件会将第三方JAR包也放在同一个目录下,可能导致文件夹混乱。

方法二:使用Apache Maven插件打包1. 首先,确保你的项目中存在pom.xml文件,它描述了项目的依赖关系和构建配置。

2. 打开Eclipse的"Terminal"窗口,或者使用其他的命令行工具。

java打jar包的几种方式详解

java打jar包的几种方式详解

java打jar包的⼏种⽅式详解⼀、制作只含有字节码⽂件的jar包我们先来看只含有字节码⽂件,即只含有class⽂件的jar包怎么制作,这是最简单的形式1、最简单的jar包——直接输出hello最终⽣成的jar包结构META-INFHello.class⽅法步骤(1)⽤记事本写⼀个Hello.java的⽂件class Hello{public static void main(String[] agrs){System.out.println("hello");}}(2)⽤命令⾏进⼊到该⽬录下,编译这个⽂件 javac Hello.java(3)将编译后的Hello.class⽂件打成jar包 jar -cvf hello.jar Hello.class c表⽰要创建⼀个新的jar包,v表⽰创建的过程中在控制台输出创建过程的⼀些信息,f表⽰给⽣成的jar包命名(4)运⾏jar包 java -jar hello.jar 这时会报如下错误 hello.jar中没有主清单属性 添加Main-Class属性 ⽤压缩软件打开hello.jar,会发现⾥⾯多了⼀个META-INF⽂件夹,⾥⾯有⼀个MENIFEST.MF的⽂件,⽤记事本打开Manifest-Version: 1.0Created-By: 1.8.0_121 (Oracle Corporation) 在第三⾏的位置写⼊ Main-Class: Hello (注意冒号后⾯有⼀个空格,整个⽂件最后有⼀⾏空⾏),保存 再次运⾏ java -jar hello.jar ,此时成功在控制台看到 hello ,成功2、含有两个类的jar包——通过调⽤输出hello最终⽣成的jar包结构META-INFTom.classHello.class⽅法步骤(1)⽤记事本写⼀个Hello.java和⼀个Tom.java的⽂件 ⽬的是让Hello调⽤Tom的speak⽅法class Hello{public static void main(String[] agrs){Tom.speak();}}class Tom{public static void speak(){System.out.println("hello");}}(2)编译: javac Hello.java 此时Hello.java和Tom.java同时被编译,因为Hello中调⽤了Tom,在编译Hello的过程中发现还需要编译Tom(3)打jar包,这次我们换⼀种⽅式直接定义Main-Class。

java一键部署jar包和war包

java一键部署jar包和war包

java⼀键部署jar包和war包⽬录java ⼀键部署 jar 包和 war 包⼀、创建打包命令 gateway-package.bat⼆、创建启动⽂件 gateway.xml三、⼀键打包并部署脚本 gateway-deploy.bat ⽂件内容四、双击打包部署 bat ⽂件 gateway-deploy.bat五、执⾏ vue 打包并且上传部署六、安装 7z 压缩⼯具并配置系统环境变量七、创建上传部署⽂件 webConfig.xml九、双击执⾏部署 vue-deploy.batjava ⼀键部署 jar 包和 war 包⼀、创建打包命令 gateway-package.bat@echo offcd /d "F:\uincall-cloud-service\uin-api-alibaba\gateway\"gradle build bootJar@echo off 关闭命令回显,当不需要 dos 命令⼀⾏⼀⾏在命令窗⼝中显⽰的时候使⽤,@echo on 显⽰命令回显例如:当为 @echo on 会显⽰执⾏的命令@echo ontitle Acolor 01echo %date%pause当为 @echo off 并不会执⾏ title A 和 color 01 命令echo 是输⼊提⽰信息pause 是暂停执⾏执⾏命令,按下任意键后会继续执⾏,pause 会提⽰“请按任意键继续...”当执⾏的 bat 不在项⽬⽬录时,需要进⼊到项⽬⽬录执⾏打包命令,需要使⽤ /d 命令,后⾯是进⼊的⽬录gradle build bootJar 是执⾏ gradle 打包命令,如果是 maven ⼯程则使⽤ maven 打包命令,例如:mvn clean package -Dmaven.test.skip=true创建项⽬打包并执⾏到上传到服务器,并且结束之前项⽬部署的进程,并启动新的部署命令⼆、创建启动⽂件 gateway.xml<?xml version="1.0" encoding="utf-8" ?><config><threadPoolSize default="5">3</threadPoolSize><!--线程池⼤⼩,如果上传服务器多的话可以调⼤,默认5个线程--><servers><server><!-- 服务器 ip --><host>1.0.0.0</host><!-- 服务器⽤户名 --><userName>root</userName><!-- 服务器密码 --><password>password</password><!-- 上传的⽂件,可以有多个 --><uploads><upload><!-- 上传的包路径 --><local>F:\uincall-cloud-service\uin-api-alibaba\gateway\build\libs\gateway-1.0.0.jar</local><!-- 上传到服务器的路径 --><remote>/root/data/callcenter</remote></upload></uploads><!-- 需要执⾏的命令,可以有多个 --><commands><!-- 结束之前部署的进程 --><command><![CDATA[source /etc/profile; ps -ef | grep gateway-1.0.0.jar | grep -v grep | awk '{print $2}' | xargs kill -9]]></command><!-- 重新部署新上传的包 --><command><![CDATA[source /etc/profile; nohup java -jar /root/data/callcenter/gateway-1.0.0.jar >> /root/data/callcenter/gateway.log 2>&1 &]]></command> </commands></server></servers></config>ps -ef | grep gateway-1.0.0.jar | grep -v grep | awk '{print $2}' | xargs kill -9 查询正在部署的项⽬进⾏并且杀死ps -ef | grep gateway-1.0.0.jar 是查询进程grep -v grep 过滤包含 grep 的进程⾏,然后再杀掉剩下的进程awk '{print $2}' 提取找到的进程⾏记录中第⼆列的参数,也就是正在执⾏项⽬的进程号xargs kill -9 把前⾯的参数都传递给后⾯的命令 kill -9三、⼀键打包并部署脚本 gateway-deploy.bat ⽂件内容call gateway-package.batjava -jar F:\uincall-cloud-service\test-deploy\javaauto.jar F:\uincall-cloud-service\test-deploy\gateway.xmlpausecall gateway-package.bat 是执⾏上⾯的项⽬打包的 gateway-package.bat ⽂件,call 作⽤是可以在当前批处理执⾏前调⽤另⼀个批处理⽂件,这⾥的意思就是先打包在上传⾄服务器并且部署java -jar F:\uincall-cloud-service\test-deploy\javaauto.jar 可执⾏⽂件 jar 包,负责执⾏上传部署指令F:\uincall-cloud-service\test-deploy\gateway.xml ,上传部署的命令都写在 gateway.xml 中注意:这⾥要执⾏的⽂件都需使⽤绝对路径,哪怕在⼀个⽂件加⾥四、双击打包部署 bat ⽂件 gateway-deploy.bat成功上传并且部署成功!!五、执⾏ vue 打包并且上传部署创建 vue 打包 bat ⽂件 vue-package.bat@echo offecho 开始打包......cd /d "F:\uincall-cloud-service\\"npm run buildecho 打包完毕 successF:\uincall-cloud-service\" 是⼯程根⽬录六、安装 7z 压缩⼯具并配置系统环境变量创建 7z 压缩 vue 打包后的 bat ⽂件 zip.bat@echo offset CALLCENTER_PATH=F:\uincall-cloud-service\\dist\*set ZIP_PATH=F:\uincall-cloud-service\deploy\callcenter.tarecho 开始压缩 callcenter vue7z a -r %ZIP_PATH% %CALLCENTER_PATH%set CALLCENTER_PATH=F:\uincall-cloud-service\\dist* vue 打包后的⽂件夹⽬录,打包后的⽂件都在此⽬录下set ZIP_PATH=F:\uincall-cloud-service\deploy\callcenter.tar 设置打包后的⽂件名和格式7z a -r %ZIP_PATH% %CALLCENTER_PATH%,7z:使⽤ 7z 压缩,a:是添加⽂件到压缩⽂件中,-r:包括⼦⽬录,其他是引⽤上⾯定义的变量,也就是打包后的格式和需要打包的⽂件所在⽬录七、创建上传部署⽂件 webConfig.xml<config><threadPoolSize default="5">3</threadPoolSize><!--线程池⼤⼩,如果上传服务器多的话可以调⼤,默认5个线程--><servers><server><!-- 服务器 ip --><host>1.0.0.0</host><!-- 服务器⽤户名 --><userName>root</userName><!-- 服务器密码 --><password>password</password><!-- 上传的⽂件,可以有多个 --><uploads><upload><!-- 上传的⽂件 --><local>F:\uincall-cloud-service\deploy\callcenter.tar</local><!-- 上传到服务器的⽬录 --><remote>/root/data/callcenter/web</remote></upload></uploads><!-- 上传成功后执⾏的命令 --><commands><!-- 添加 777 权限 --><command><![CDATA[source /etc/profile; chmod 777 /root/data/callcenter/web/callcenter.tar]]></command><!-- 解压 -C 表⽰创建新的档案⽂件,会解压到新的⽬录,默认解压到根⽬录 / --><command><![CDATA[source /etc/profile; tar -xvf /root/data/callcenter/web/callcenter.tar -C /root/data/callcenter/web]]></command><!-- 解压完删除压缩⽂件 --><command><![CDATA[source /etc/profile; rm -rf /root/data/callcenter/web/callcenter.tar]]></command><!-- 刷新 nginx --><command><![CDATA[source /etc/profile; nginx -s reload]]></command></commands></server></servers></config>创建 vue 打包部署 bat ⽂件 vue-deploy.bat,分别执⾏上⾯创建打包 vue-package.bat 压缩 zip.bat 上传部署命令webConfig.cmlcall F:\uincall-cloud-service\test-deploy\vue-package.batcall F:\uincall-cloud-service\test-deploy\zip.batjava -jar F:\uincall-cloud-service\test-deploy\javaauto.jar F:\uincall-cloud-service\test-deploy\webConfig.xmlecho 上传并解压完毕pause九、双击执⾏部署 vue-deploy.bat成功上传并解压以上就是java ⼀键部署 jar 包和 war 包的详细内容,更多关于java 部署 jar 包 war 包的资料请关注其它相关⽂章!,希望⼤家以后多多⽀持!。

Java打包成jar文件,以及将jar文件导出为exe文件方法汇总

Java打包成jar文件,以及将jar文件导出为exe文件方法汇总

Java打包成jar文件,以及将jar文件导出为exe文件方法汇总(图形说明)一、Java打包成jar文件方法一:用Eclipse导出jar文件注:我用的是Eclipse,但是MyEclipse也大同小异首先右键点击所要打包的工程,选择Export选项选择JAR file,点击Next在要打包的工程前打钩,如上图红色所示;选择导出文件的目的地址,如图蓝色所示,包名随意,没有特定的要求;点击Next点击Browse选择到主类所在的上一个文件夹,别忘了填写File name(随意起名即可),点击OK;点击第四幅图的下面的Browse按钮,选择主类的名字,如下图所示点击OK,即可完成打包。

运行jar文件,可将jar文件与一个批处理文件放到一个文件夹中;其中批处理文件的内容为:java -jar neme.jar(其中name为jar包的名字)批处理文件格式为.bat;双击批处理文件即可运行程序。

PS:将java工程文件打包成.exe文件我用的是一个exe4j的免费软件第一步:默认即可,直接点击Next第二步:如果有已经制作好的jar文件,选择“JAR in EXE”mode,然后点击Next第三步:红色划线框内填写工程名字,随意即可;蓝色划线框内填写打包后的exe文件输出目录第四步:如果需要导出为exe文件的是图形界面,则选择GUI application;如果要导出为exe文件的是控制台的,则选择console application;Executable name写你将要生成的exe文件的名字,Icon File可以选择生成文件的图标第五步:点击绿色的加号,出现如下所示对话框,选择archive,然后选择已经打包好的jar文件选择主类完成后如图所示第六步:最小版本填1.3,最大版本填1.6;如果只需导出的exe在装有JRE的机子上可以运行,那么一路Next下去,最后点击Finish即可;如果想要在没有装JRE的机器上运行,那么需要继续,点击Advanced Options,选择searchsequence选择Directory,点击浏览按钮,选择JRE所在的根目录,将JRE复制过来,如下图所示选择Preferred VM,选择Client hotspot VM第7、8步是一些基本配置,默认即可,第9步编译,第10步你就可以看到以下效果了好了,大功告成了~方法二:用命令生成jar文件首先编写一个清单文件,名为:MANIFEST.MFT,其代码如下:Manifest-Version: 1.0//该属性是创建可执行jar包必需的,指定的Main-Class为全路径类名(且该类必需有main方法)Main-Class:填写你的主类Created-By: 1.5.0_02 (Sun Microsystems Inc.)然后,使用如下命令生成jar文件:jar cfm 填写你要生成jar的名字.jar MANIFEST.MFT *.class其中,c表示要生成一个新的jar文件;f表示生成jar的名字;m表示清单文件的名字二、ar文件导出为可执行文件,即exe文件方法一:用j2ewiz,使用方法如下:操作步骤:1、双击j2ewiz.exe,出现软件注册窗口,点击下一步。

java如何把源码导出为jar包,以及如何使用导出的jar包

java如何把源码导出为jar包,以及如何使用导出的jar包

java如何把源码导出为jar包,以及如何使⽤导出的jar包1.新建java project,编写源码如下:package baseTest;import java.awt.*;import java.awt.geom.*;import javax.swing.*;public class DrawLineFrame {public static void main (String [] args){JFrame window = new DrawFrame();window.setTitle("绘制图形");window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);window.setBounds(100,100,600,400);window.setVisible(true);}}//窗⼝类class DrawFrame extends JFrame{/****/private static final long serialVersionUID = 1L;public DrawFrame(){add(new DrawComponent());pack();}}//图形类class DrawComponent extends JComponent{/****/private static final long serialVersionUID = 1L;private static final int DEAFULT_WIDTH = 400;private static final int DEFAULT_HEIGHT = 400;public void paintComponent(Graphics g){Graphics2D g2 = (Graphics2D)g;//绘制矩形double leftx = 100;double topy = 100;double width = 200;double height = 150;Rectangle2D rect = new Rectangle2D.Double(leftx,topy ,width,height);g2.draw(rect);//绘制椭圆Ellipse2D ellipse = new Ellipse2D.Double();ellipse.setFrame(rect);g2.draw(ellipse);//绘制直线g2.draw(new Line2D.Double(leftx,topy,leftx + width ,topy + height));//画正圆double centerx = rect.getCenterX();double centery = rect.getCenterY();double radius = 150;Ellipse2D circle = new Ellipse2D.Double();circle.setFrameFromCenter(centerx, centery,centerx+radius,centery+radius);g2.draw(circle);}}2.运⾏,run as application,如果没有什么错误,导出jar包。

java -jar编译

java -jar编译

java -jar编译Java是一种广泛应用于开发各种应用程序的编程语言,它具有跨平台性和面向对象的特性。

编译是将源代码转换为可执行代码的过程,而Java的编译工具是java -jar命令。

本文将围绕这个命令展开,介绍它的用法、作用以及一些注意事项。

我们来了解一下java -jar命令的基本用法。

在命令行中输入java -jar,后面跟着的是一个可执行的jar文件的路径。

这样,Java虚拟机就会加载并运行这个jar文件中的主类。

通过这个命令,我们可以方便地运行打包好的Java应用程序。

那么,为什么要使用java -jar命令来编译Java程序呢?这是因为在Java中,源代码需要通过编译器将其转换为字节码文件(.class 文件),然后再由Java虚拟机执行。

而对于已经打包成jar文件的Java应用程序,我们可以直接使用java -jar命令来运行,无需再进行编译过程,这样可以简化应用程序的部署和运行。

在使用java -jar命令编译Java程序时,有一些需要注意的地方。

首先,需要确保系统已经安装了Java运行时环境(JRE),否则无法运行Java应用程序。

其次,需要保证jar文件中包含了一个可执行的主类,并且在MANIFEST.MF文件中指定了这个主类。

另外,如果jar文件中依赖了其他的jar文件,需要将这些依赖的jar文件一同放入classpath中,否则会导致运行时错误。

除了使用java -jar命令来运行Java应用程序,我们还可以使用它来执行其他操作。

例如,可以使用java -jar命令来解压缩jar文件,查看其中的内容。

可以使用java -jar命令来创建可执行的jar文件,将多个类文件打包成一个jar文件,方便部署和传播。

此外,还可以使用java -jar命令来签名jar文件,确保其来源可靠性。

在实际应用中,我们可以结合其他命令和工具来使用java -jar命令,以实现更复杂的功能。

Java命令行下Jar包打包小结

Java命令行下Jar包打包小结

Java命令⾏下Jar包打包⼩结jar包打包实现jar包打包可以使⽤jar指令实现打包,在命令⾏中输⼊jar可以查看jar指令的内容从最后显⽰的两个⽰例看出存在两种打包的⽅法,两者的区别就是是否使⽤⾃⼰定义的MANIFEST清单⽂件。

第⼀个⽰例没有使⽤MANIFEST⽂件进⾏打包,所以最终⽣成的jar包中MANIFEST⽂件为默认⽂件,这种⽅式适⽤于⽐较简单的jar包结构,不存在其他jar包依赖以及⽣成的jar包不需要可执⾏。

这种⽅式⽣成的jar包不能使⽤java -jar XXX.jar命令执⾏,因为MANIFEST⽂件中未指定程序⼊⼝。

⽽第⼆个实例是⽐较常⽤的打包⽅式,即是使⽤⾃定义的MANIFEST⽂件参与打包,这样能够实现往包中添加依赖,并且可以指定程序⼊⼝,实现java -jar XXX.jar直接运⾏jar包。

第⼀种简单的打包⽅式最简单的就是在当前⽂件夹下将编译的class字节码⽂件进⾏打包输出。

⽰例如下:编写三个java⽂件,test1.java test2.java 以及Main.javapublic class test1{public static void main(String[] args){}public void display(){System.out.println("this is class test1");}}以及test2.java ⽂件public class test2{public static void main(String[] args){}public void display(){System.out.println("this is class test2");}}Main.javapublic class Main{public static void main(String[] args){for(String a:args){System.out.println("给定的参数"+a);}test1 t1 = new test1();t1.display();test2 t2 = new test2();t2.display();}}命令⾏下将这三个⽂件进⾏编译,使⽤javac命令实现编译。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

命令行下编译java并生成jar包jar文件听说过吗,没有?或者陌生!好,没关系,这就是我们的第一站:打包发布。

为什么会有这个玩意呢,首先,这是jar的全称:JavaTM Archive (JAR) file,是的,就是java 存档文件。

这有点类似zip文件,想一想它是干什么的用的呢,压缩!?没错就是要压缩,将我们原先零散的东西放到一下,重新组织,所有这些目的只有一个:方便!好了,不用管他是怎么压缩的,我们的重点是哪些是我们要压缩的(输入),还有压缩成了什么(输出),进而将它发布(部署)。

那我们的输入(要压缩的东西)主要是class文件,还有辅助的资源(这其中可能有图片,jsp文件,html文件等等)。

Jar技术在jdk1.1版本中就已存在,在1.2中又有了增强。

接下来说说jar的好处吧,这是官方的描述:安全,快速下载,压缩,猎取包,版本化包,可携。

说了这么多,我们现在开始实施。

先打开命令提示符(win2000或在运行筐里执行cmd命令,win98为DOS提示符),输入jar –help,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么:用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名…选项:-c 创建新的存档-t 列出存档内容的列表-x 展开存档中的命名的(或所有的〕文件-u 更新已存在的存档-v 生成详细输出到标准输出上-f 指定存档文件名-m 包含来自标明文件的标明信息-0 只存储方式;未用ZIP压缩格式-M 不产生所有项的清单(manifest〕文件-i 为指定的jar文件产生索引信息-C 改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。

清单(manifest〕文件名和存档文件名都需要被指定,按‘m‘ 和‗f‘标志指定的相同顺序。

示例1:将两个class文件存档到一个名为‗classes.jar‘ 的存档文件中:jar cvf classes.jar Foo.class Bar.class示例2:用一个存在的清单(manifest)文件‗mymanifest‘ 将foo/ 目录下的所有文件存档到一个名为‗classes.jar‘ 的存档文件中:jar cvfm classes.jar mymanifest -C foo/ .来个小例子试试看:我们只有一个HelloWorld,如下:public class HelloWorld{public static void main(String[] args){System.out.println(―Hi, Hello World!‖);}}我将这个java文件存到C盘跟目录下,ok,接下来,在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javac HelloWorld.java,然后继续输入:jar cvf hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错hello.jar 。

基本的步骤我们现在都知道了,你可以自己去尝试一下随着jar后面的参数的不同,结果有什么变化。

紧接着我们看看如何运行我们的jar包。

在进入正题之前,你要先打开我们刚刚做好的jar包看看,多了什么呢,META-INF目录?再看看里面是什么,还有一个MANIFEST.MF文件是不是?用文本编辑器(我这里是UltraEdit)打开它看看:Manifest-V ersion: 1.0Created-By: 1.4.2 (Sun Microsystems Inc.)就是这样。

这里我们对它进行修改,加一句:Main-Class: HelloWorld (在第三行)。

这个就是我们之前写的那个类,也就是我们的入口类。

也即,Manifest-V ersion: 1.0Created-By: 1.4.2 (Sun Microsystems Inc.)Main-Class: HelloWorld接下来,我们在命令提示符里执行:jar umf MANIFEST.MF app.jar这样我们使用了我们自己的MANIFEST.MF文件对原来默认的进行了更新。

你不妨可以再进去看看是不是添上了Main-Class: HelloWorld这一句。

Ok,这个最后的一步了,来验证我们做的一切,在命令提示符中输入:java -jar hello.jar(执行)出现了什么,――Hi, Hello World!我们再来看看jar文件在tomcat中发布,注意:在tomcat中我们就不能再用jar这种格式,而改war格式,它是专门用于web应用的,其实整个过程下来基本上和jar是类似的:先准备我们要打包的资源。

找到存放tomcat的webapps目录,进到其中,新建一个文件夹,这里命名为hello,再进去新建WEB-INF文件夹,再进去新建classes 文件夹,此时我们也将我们唯一的servlet,HelloWorld.java放到这里,在与classes目录同级下建立一文件web.xml。

Ok,目前我们初步建立了一个简单的web应用。

这是HelloWorld.java:import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HelloWorld extends HttpServlet {public void doGet(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {res.setContentType(‖text/html‖);PrintWriter out = res.getWriter();out.println(‖<HTML>‖);out.println(‖<HEAD><TITLE>Hello, World!</TITLE></HEAD>‖);out.println(‖<BODY>‖);out.println(‖Hello, World!‖);out.println(‖</BODY></HTML>‖);}}//end here!对它编译。

下面是web.xml:<?xml version=‖1.0″ encoding=‖ISO-8859-1″?><!DOCTYPE web-app PUBLIC‗-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN‘‗/j2ee/dtds/web-app_2_3.dtd‘><web-app><servlet><servlet-name>hello</servlet-name><servlet-class>HelloWorld</servlet-class></servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/HelloWorld</url-pattern></servlet-mapping></web-app>开始压缩,形成war档:在命令提示符下进到先前创制的hello目录下,执行jar cvf hello.war * ,我们便得到hello.war。

将它拷贝至webapps目录下,ok,来看最后一步,打开tomcat的目录conf中的server.xml,加入:<Context path=‖/hello‖ docBase=‖hello.war‖ debug=‖0″reloadable=‖true‖/>大功告成!运行它,启动tomcat,后在浏览器中输入http://localhost:8080/hello/HelloWorld,有了吗?最后,如果你想用ant来完成以上的打包活动,下面就告诉你:对于jar来说。

在build.xml中,<target name=‖jar‖><jar destfile=‖${app_home}/hello.jar‖><fileset dir=‖${dest}‖ includes=‖**‖/><!–fileset dir=‖${dest}‖ includes=‖**/action.properties‖/–></jar></target>对于war,<war warfile=‖hello.war‖ webxml=‖./WEB-INF/web.xml‖><fileset dir=‖html‖/><lib dir=‖lib/‖><exclude name=‖oracle*.jar‖/></lib><classes dir=‖build/servlets‖><include name=‖**/*.class‖/></classes></war>好了,就这么多,希望对你有点帮助。

:)我上传了上面打过的两个包,hello.jar和hello.war。

『点击下载』『点击下载』第一rar文件对应的是hello.jar,下载后将其名改为hello.jar第二rar文件对应hello.war,下载后改为hello.war。

这是由于上传不了jar格式和war格式的文件,你只好照我上面说的去做了:)补充:############jar 基本操作:############1. 创建jar文件jar cf jar-file input-file(s)c—want to Create a JAR file.f—want the output to go to a file rather than to stdout.eg: 1)jar cf myjar.jar query_maintain_insert.htm2)jar cvf myjar.jar query_maintain_insert.htmv—Produces verbose(详细的) output.3)jar cvf myjar.jar query_maintain_insert.htm mydirectory4)jar cv0f myjar.jar query_maintain_insert.htm mydirectory0—don‘t want the JAR file to be compressed.5)jar cmf MANIFEST.MF myjar.jar yahh.txtm—Used to include manifest information from an existing manifest file.6)jar cMf MANIFEST.MF myjar.jar yahh.txtM—the default manifest file should not be produced.7)jar cvf myjar.jar **—create all contents in current directory.2. 察看jar文件jar tf jar-filet—want to view the Table of contents of the JAR file.eg: 1)jar vft yahh.jarv—Produces verbose(详细的) output.3. 提取jar文件jar xf jar-file [archived-file(s)]x—want to extract files from the JAR archive.eg: 1)jar xf yahh.jar yahh.txt(仅提取文件yahh.txt)2)jar xf yahh.jar alex/yahhalex.txt(仅提取目录alex下的文件yahhalex.txt)3)jar xf yahh.jar(提取该jar包中的所有文件或目录)4. 修改Manifest文件jar cmf manifest-addition jar-file input-file(s)m—Used to include manifest information from an existing manifest file.5. 更新jar文件jar uf jar-file input-file(s)u—want to update an existing JAR file.。

相关文档
最新文档