WAR包的制作和解压过程指导
Tomcat服务器部署JavaWeb项目War包基本步骤
Tomcat服务器部署JavaWeb项⽬War包基本步骤1. 基本常识:1.1 War包War包⼀般是在进⾏Web开发时,通常是⼀个⽹站Project下的所有源码的集合,⾥⾯包含前台HTML/CSS/JS的代码,也包含Java的代码。
(项⽬已经开放结束,基本很少改动)当开发⼈员在⾃⼰的开发机器上调试所有代码并通过后,为了交给测试⼈员测试和未来进⾏产品发布,都需要将开发⼈员的源码打包成War 进⾏发布。
War包可以放在Tomcat下的webapps或者word⽬录下,随着tomcat服务器的启动,它可以⾃动被解压。
Jar⽂件(扩展名为. Jar,Java Application Archive)包含类的普通库、资源(resources)、辅助⽂件(auxiliary files)等 War⽂件(扩展名为.War,Web Application Archive)包含全部Web应⽤程序。
在这种情形下,⼀个Web应⽤程序被定义为单独的⼀组⽂件、类和资源,⽤户可以对jar⽂件进⾏封装,并把它作为⼩型服务程序(servlet)来访问。
Ear⽂件(扩展名为.Ear,Enterprise Application Archive)包含全部企业应⽤程序。
在这种情形下,⼀个企业应⽤程序被定义为多个jar⽂件、资源、类和Web应⽤程序的集合。
JAR WAR EAR英⽂Java Archive file Web Archive file Enterprise Archive file包含内容class、properties⽂件,是⽂件封装的最⼩单元;包含Java类的普通库、资源(resources)、辅助⽂件(auxiliary files)等Servlet、JSP页⾯、JSP标记库、JAR库⽂件、HTML/XML⽂档和其他公⽤资源⽂件,如图⽚、⾳频⽂件等除了包含JAR、WAR以外,还包括EJB组件部署⽂件application-client.xml web.xml application.xml容器应⽤服务器(application servers)⼩型服务程序容器(servlet containers)EJB容器(EJB containers)级别⼩中⼤1.2 Tomcat服务器Tomcat 服务器是⼀个免费的开放源代码的Web 应⽤服务器,属于轻量级应⽤,在中⼩型系统和并发访问⽤户不是很多的场合下被普遍使⽤,是开发和调试JSP 程序的⾸选。
Unix下压缩和解压缩命令
Unix下压缩和解压缩命令各种常用命令UnixCC++C#数据结构范例:Linux下打包压缩war、解压war包和jar命令环境RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9 + Putty 0.62问题Linux下打包压缩war、解压war包和jar命令解决把project_a文件夹下的文件打包成project.war1.打包jar -xvfproject.war /project_a-c 创建war包-v 显示过程信息-f 指定JAR 文件名,通常这个参数是必须的-M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m 参数-0 这个是阿拉伯数字,只打包不压缩的意思2.解压jar -xvfproject.war如:cd kmsjar -xvf ../kms.war解压到当前目录jar 命令详解使用不带任何的jar 命令我们可以看到jar 命令的用法如下:jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名...其中{ctxu} 是jar 命令的子命令,每次jar 命令只能包含ctxu中的一个,它们分别表示:-c创建新的JAR 文件包-t列出JAR 文件包的内容列表-x展开JAR 文件包的指定文件或者所有文件-u更新已存在的JAR 文件包(添加文件到JAR 文件包中)特别注意,在参数的下达中,c/x/t/u 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。
.tar解包:tar -xvf FileName.tar打包:tar -cvf FileName.tar DirName(注:tar是打包,不是压缩!)---------------------------------------------.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzipFileName.tar.gz解压:tar zxvf FileName.tar.gz压缩:tar zcvf FileName.tar.gz DirName--------------------------------------------- .bz2解压1:bzip2 -d FileName.bz2解压2:bunzip2 FileName.bz2压缩: bzip2 -z FileName.tar.bz2解压:tar jxvf FileName.tar.bz2压缩:tar jcvf FileName.tar.bz2 DirName--------------------------------------------- .bz解压1:bzip2 -d FileName.bz解压2:bunzip2 FileName.bz压缩:未知--------------------------------------------- .tar.bz解压:tar jxvf FileName.tar.bz压缩:未知--------------------------------------------- .Z解压:uncompressFileName.Z压缩:compress FileName.tar.Z解压:tar ZxvfFileName.tar.Z压缩:tar ZcvfFileName.tar.ZDirName--------------------------------------------- .tgz解压:tar zxvf FileName.tgz压缩:未知.tar.tgz解压:tar zxvf FileName.tar.tgz压缩:tar zcvf FileName.tar.tgz FileName--------------------------------------------- .zip解压:unzip FileName.zip压缩:zip FileName.zip DirName--------------------------------------------- .rar解压:rar a FileName.rar压缩:rar e FileName.rar---------------------------------------------压缩解压缩zip文件:功能说明:压缩文件。
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 包的资料请关注其它相关⽂章!,希望⼤家以后多多⽀持!。
魔兽WE教程之一
图片尺寸必须为: 1024*1024 或 512*512
BOOMmapLoad2.mdx
群星闪烁动态效果的地图载入画面. (动态效果演示)
使用魔兽争霸自带的的"Textures\Star7b.blp"图片作为星星, 另外需要导入一张路径为"LoadingscreenTL.tga"的512*512图片作为显示内容.
Loading 3.mdx
一张图片显示地图载入画面左上方区域,一张图片显示地图载入画面右上方区域, 其余区域为黑色背景.
图片路径为: LoadingScreenTL.tga 和 LoadingScreenRL.tga
建议图片尺寸为: 512*512 或 256*256
BOOMmapLoadU9.mdx
本压缩包还包含了3DMAX5源文件和所用到的两张贴图
现成载入画面修改:
这里我整理和制作了几种载入画面放到这个ZIP包里。请下载后选择自己适合的MDX和对应的TGA文件。
1.修改将要显示的tga图片文件为你需要的内容。
图象编辑通常工具用: WINDOWS画图, PhotoShop, CorelDRW......
2.导入你的地图中(注意导入后的tga文件路径为根目录)
一张图片显示地图载入画面左上方区域,其余区域为黑色背景.
图片路径为: LoadingScreenTL.tga
建议图片尺寸为:512*512 或 256*256
BOOMmapLoad.mdx
水元素动态效果的地图载入画面. (动态效果演示)
全部共使用魔兽争霸3自带的8张图片,无须再导入 图片路径为: Textures\Lords0000.blp ~~~ Textures\Lords0007.blp
Mac系统中的文件压缩与解压缩方法
Mac系统中的文件压缩与解压缩方法在Mac系统中,文件压缩和解压缩是常见的操作。
通过压缩文件,我们可以将多个文件或文件夹合并为一个压缩包,以便于快速传输、存储和备份。
而解压缩操作则是将压缩文件还原为原始的文件或文件夹。
本文将介绍Mac系统中常用的文件压缩和解压缩方法。
一、Mac系统自带的文件压缩工具Mac系统自带了一个名为“压缩”的工具,可以用于将文件夹或文件压缩为.zip格式的压缩包。
使用该工具非常简单,只需按照以下步骤操作:1. 找到要压缩的文件或文件夹,右击并选择“压缩xxx”(xxx表示选中的文件或文件夹的名称)。
2. 系统将自动创建一个与原文件或文件夹同名的压缩包,并将其保存在同一目录下。
二、使用第三方压缩工具——The Unarchiver除了系统自带的压缩工具外,我们还可以使用第三方工具The Unarchiver进行文件压缩和解压缩操作。
相比系统自带的工具,The Unarchiver支持更多的压缩格式,如RAR、7z等。
下面是使用The Unarchiver进行文件压缩和解压缩的步骤:1. 打开App Store,搜索并下载安装The Unarchiver。
2. 找到要压缩的文件或文件夹,右击并选择“压缩”。
3. 在弹出的窗口中,选择压缩包的保存位置和格式,并点击“保存”。
如果需要解压缩文件,只需双击压缩包即可。
三、使用终端命令压缩和解压缩文件对于熟悉终端的用户来说,可以通过使用终端命令来进行文件压缩和解压缩操作。
下面是几个常用的终端命令:1. 压缩文件夹或文件:```zip -r 压缩包名称.zip 文件夹路径或文件路径```例如,要将名为"Documents"的文件夹压缩为"Documents.zip",可以执行以下命令:```zip -r Documents.zip /Users/username/Documents```2. 解压缩文件:```unzip 压缩包名称.zip -d 解压缩路径```例如,要将名为"Documents.zip"的压缩包解压到当前目录下,可以执行以下命令:```unzip Documents.zip -d .```终端命令的优势在于可以批量处理文件,并且可以通过命令行参数进行更多的定制。
Winrar使用方法(含压缩、解压、加密、分解压缩包、打包自解压等)
Winrar使用方法(含压缩、解压、加密、分解压缩包、打包自解压等)问题描述Winrar 的使用方法操作步骤1.制作自解压文件如果你平时使用WinRAR来压缩文件,而你的朋友也不会使用WinRAR,但你的数据又确实必须压缩后才能够给他。
这时,我们就可以把RAR压缩包制作成EXE文件。
他只要执行生成后EXE文件即可解压。
(1)直接生成法如,我们要把C:\总管资料.txt文件压缩成EXE格式文件,则可以启动“资源管理器”,选中C:\总管资料.txt文件,右击,选择WinRAR→“添加到压缩包”命令。
然后在打开“压缩文件名和参数”设置窗口中选中“压缩选项”下的“创建自解压格式压缩文件”前复选框(如图1)。
单击“确定”按钮即可把选定文件压缩成自解压的文件。
(2)转换法如果我们手头上有RAR压缩包,那也可以通过WinRAR,把它转换为EXE文件:启动WinRAR,再定位到RAR压缩包文件夹下,选中RAR压缩包,再选择“工具”→“压缩文件转换为自解压格式”(如图2)或者按下Alt+X键,单击“确定”按钮即可生成自解压文件。
我们只要把这个生成后的EXE文件通过电子邮件寄给朋友,他们收到后,只要直接双击即可把压缩包中的文件解压到当前文件夹下。
注意:如果发生损坏,无法自解压,那可以把此文件的扩展名改为由EXE改为RAR,双击后即可使用WinRAR打开,并可以自己解压了。
2.把WinRAR当成文件管理器WinRAR是一个压缩和解压缩工具,但它也是一款相当优秀的文件管理器。
只要我们在其地址栏中键入一个文件夹,那其下的所有文件都会被显示出来,甚至连隐藏的文件和文件的扩展名也能够看见!我们完全可以像在“资源管理器”中一样拷贝、删除、移动、运行这些文件(如图3)!3.修复受损的压缩文件如果你打开一的为Repair),确定后WinRAR就开始修复这个文件,并会弹出修复的窗口(如图4)。
我们只要选择修复的ZIP文件包或RAR压缩包即可。
将Web项目War包部署到Tomcat服务器基本步骤(完整版)
将Web项⽬War包部署到Tomcat服务器基本步骤(完整版)1. 常识:1.1 War包War包⼀般是在进⾏Web开发时,通常是⼀个⽹站Project下的所有源码的集合,⾥⾯包含前台HTML/CSS/JS的代码,也包含Java的代码。
当开发⼈员在⾃⼰的开发机器上调试所有代码并通过后,为了交给测试⼈员测试和未来进⾏产品发布,都需要将开发⼈员的源码打包成War进⾏发布。
War包可以放在Tomcat下的webapps或者word⽬录下,随着tomcat服务器的启动,它可以⾃动被解压。
1.2 Tomcat服务器Tomcat服务器是⼀个免费的开放源代码的Web应⽤服务器,属于轻量级应⽤服务器,在中⼩型系统和并发访问⽤户不是很多的场合下被普遍使⽤,是开发和调试JSP程序的⾸选,最新的Servlet和JSP规范总是能在Tomcat中得到体现。
2. 配置Java运⾏环境2.1 下载并安装JDK从官⽹上下载最新的JDK:,下载后安装,选择想把JDK安装到的⽬录。
JRE是包含在JDK中的,所以不需要再另外安装JRE 了。
2.2 设置JDK环境变量右击“计算机”,点击“属性”,点击弹出窗⼝中左侧的“⾼级系统设置”,在弹出的选项卡中选择“⾼级->环境变量”。
假设你本地JAVA的JDK安装的位置为:C:\Program Files\Java\jdk1.7.0_45。
在这⾥,新建2个环境变量,编辑1个已有的环境变量。
如下:新建变量名:JAVA_HOME;变量值:你安装JDK的安装⽬录,在这⾥为C:\Program Files\Java\jdk1.7.0_45。
新建变量名:CLASSPATH变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%TOMCAT_HOME%\BIN(注意最前⾯有个.号)编辑环境变量的路径:变量名:Path;变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(将此处的字符串粘贴到变量值的最前⾯)2.3 验证是否JDK环境变量设置成功点击开始并输⼊CMD,在命令⾏分别输⼊:java; javac; java –version.如果分别显⽰如下信息,说明你的Java环境变量已经配置成功。
各模块tar包变war包教程
1.添加servlet依赖,关注红色部分必须的,<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>2.对javax.el包添加<scope>provided</scope><dependency><groupId>org.glassfish</groupId><artifactId>javax.el</artifactId><version>${el.version}</version><scope>provided</scope></dependency>以pss为例红色部分就是添加的部分<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.bestpay.old-settle-system</groupId><artifactId>old-settle-system</artifactId><packaging>pom</packaging><version>1.0.8-150812</version><modules><module>pss-common</module><module>pss-persistence-api</module><module>pss-persistence</module><module>pss-service</module><module>bppf-packs</module></modules><properties><javax.servlet-api.version>3.1.0</javax.servlet-api.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>3.2.5.RELEASE</spring.version><junit.version>4.11</junit.version><guava.version>15.0</guava.version><jsr305.version>2.0.0</jsr305.version><mybatis.version>3.1.1</mybatis.version><mybatis-spring.version>1.1.1</mybatis-spring.version><cglib.version>2.2.2</cglib.version><commons-pool.version>1.6</commons-pool.version><commons-io.version>2.0.1</commons-io.version><commons-lang.version>2.5</commons-lang.version><jackson.version>2.2.2</jackson.version><validation-api.version>1.0.0.GA</validation-api.version><joda-time.version>2.3</joda-time.version><hamcrest.version>1.3</hamcrest.version><lombok.version>1.16.4</lombok.version><handlebars.version>1.0.0</handlebars.version><aspectj.version>1.7.0</aspectj.version><dozer.version>5.4.0</dozer.version><jackson-datatype-guava.version>2.2.2</jackson-datatype-guava.version><slf4j.version>1.7.5</slf4j.version><logback.version>1.0.13</logback.version><log4j.version>1.2.17</log4j.version><dubbo.version>2.4.10</dubbo.version><zkclient.version>0.1</zkclient.version><ojdbc.version>11.2.0.1.0</ojdbc.version><commons-logging.version>1.1.1</commons-logging.version><dom4j.version>1.6.1</dom4j.version><jaxen.version>1.1.1</jaxen.version><mockito.version>1.8.5</mockito.version><durid.version>1.0.2</durid.version><el.version>3.0-b01</el.version><hibernate.version>5.0.1.Final</hibernate.version><validation-api.version>1.1.0.Final</validation-api.version><spring.integration.version>3.0.1.RELEASE</spring.integration.version><quartz.version>1.8.5</quartz.version><commons-lang3.version>3.1</commons-lang3.version><c3p0.version>0.9.1.2</c3p0.version><jasypt.version>1.9.2</jasypt.version><aspectjweaver.version>1.7.0</aspectjweaver.version><commons-collections.version>3.2</commons-collections.version><spring-rabbit.version>1.2.0.RELEASE</spring-rabbit.version><!--内部模块依赖--><bpep-validator.version>1.0.9-150812</bpep-validator.version><pss-common.version>1.0.8-150812</pss-common.version><pss-persistence.version>1.0.8-150812</pss-persistence.version><pss-persistence-api.version>1.0.8-150812</pss-persistence-api.version><bestpay-foundation.version>1.0.9-150812</bestpay-foundation.version><pgw-service-api.version>1.1.6-150923</pgw-service-api.version><pss-bppf-packs.version>1.0.8-150812</pss-bppf-packs.version><pay-foundation-service-api.version>1.1.4-150812</pay-foundation-service-api.version><assist-persistence-api.version>1.0.5-150812</assist-persistence-api.version> <!--内部模块依赖--></properties><build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.7</source><target>1.7</target><!--<compilerArgs>--><!--<compilerArg>-Xlint:unchecked</compilerArg>--><!--</compilerArgs>--></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.17</version><configuration><skipTests>false</skipTests><argLine>-XX:-UseSplitVerifier</argLine></configuration></plugin></plugins></pluginManagement><plugins><plugin><artifactId>maven-surefire-plugin</artifactId></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><encoding>UTF-8</encoding></configuration></plugin></plugins></build><dependencyManagement><dependencies><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>${joda-time.version}</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>${guava.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework.integration</groupId> <artifactId>spring-integration-core</artifactId><version>${spring.integration.version}</version></dependency><dependency><groupId>org.springframework.integration</groupId> <artifactId>spring-integration-stream</artifactId><version>${spring.integration.version}</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>${aspectj.version}</version></dependency><!--log related begin --><dependency><groupId>org.slf4j</groupId><artifactId>log4j-over-slf4j</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback.version}</version><scope>runtime</scope></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>${logback.version}</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>${commons-logging.version}</version></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>${zkclient.version}</version><exclusions><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>${ojdbc.version}</version><scope>runtime</scope></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>${mybatis-spring.version}</version> </dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>${commons-lang.version}</version> </dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>${dom4j.version}</version></dependency><dependency><groupId>jaxen</groupId><artifactId>jaxen</artifactId><version>${jaxen.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>${hamcrest.version}</version><scope>test</scope></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-library</artifactId><version>${hamcrest.version}</version><scope>test</scope></dependency><dependency><groupId>org.mockito</groupId><artifactId>mockito-all</artifactId><version>${mockito.version}</version><scope>test</scope></dependency><dependency><groupId>net.sf.dozer</groupId><artifactId>dozer</artifactId><version>${dozer.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><dependency><groupId>org.glassfish</groupId><artifactId>javax.el</artifactId><version>${el.version}</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${javax.servlet-api.version}</version><scope>provided</scope></dependency><dependency><groupId>com.bestpay</groupId><artifactId>bestpay-foundation</artifactId><version>${bestpay-foundation.version}</version> <exclusions><exclusion><artifactId>javax.el</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>${hibernate.version}</version></dependency><dependency><groupId>com.bestpay</groupId><artifactId>bpep-validator</artifactId><version>${bpep-validator.version}</version> </dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>${validation-api.version}</version> </dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>${quartz.version}</version></dependency><dependency><groupId>mons</groupId><artifactId>commons-lang3</artifactId><version>${commons-lang3.version}</version> </dependency><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>${c3p0.version}</version></dependency><dependency><groupId>org.jasypt</groupId><artifactId>jasypt</artifactId><version>${jasypt.version}</version></dependency></dependencies></dependencyManagement><dependencies><dependency><artifactId>javax.servlet-api</artifactId> </dependency><dependency><groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency><dependency><groupId>com.google.guava</groupId> <artifactId>guava</artifactId></dependency><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId></dependency><!--slf4j依赖api start--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></dependency><!--支持log4j依赖api start--><dependency><groupId>org.slf4j</groupId><artifactId>log4j-over-slf4j</artifactId> </dependency><!--支持log4j依赖api end--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId> <scope>runtime</scope></dependency><dependency><groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </dependency><!--slf4j依赖api end--><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId> </dependency><!--<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId></dependency>--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><scope>test</scope></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-library</artifactId> <scope>test</scope></dependency><dependency><groupId>org.springframework</groupId> <artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency><dependency><groupId>org.mockito</groupId><artifactId>mockito-all</artifactId><scope>test</scope></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId> </dependency><dependency><groupId>com.bestpay</groupId><artifactId>bpep-validator</artifactId></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>mons</groupId><artifactId>commons-lang3</artifactId></dependency><dependency><groupId>com.bestpay</groupId><artifactId>bestpay-foundation</artifactId><version>${bestpay-foundation.version}</version></dependency></dependencies><repositories><repository><id>bestpay</id><name>bestpay</name><!--必须要配置域名,测试环境自动化部署的IP与本地IP不同--> <url>http://172.26.7.12:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository><repository><id>center</id><name>Maven Repository Switchboard</name><!--必须要配置域名,测试环境自动化部署的IP与本地IP不同--> <url></url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><distributionManagement><id>releases</id><name>Nexus Release Repository</name><url>http://172.26.7.12:8081/nexus/content/repositories/releases/</url></repository><snapshotRepository><id>snapshots</id><name>Nexus Snapshot Repository</name><url>http://172.26.7.12:8081/nexus/content/repositories/snapshots/</url></snapshotRepository></distributionManagement></project>3.修改文件descriptor.xml,关注红色部分<assemblyxmlns="/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/plugins/maven-assembly-plugin/assembly/1.1.0 /xsd/assembly-1.1.0.xsd"><id>${mavenDir}-assembly</id><formats><format>war</format></formats><includeBaseDirectory>false</includeBaseDirectory><fileSets><fileSet><directory>${project.basedir}/src/main/resources</directory><includes><include>**/*.xml</include></includes><excludes><exclude>/assemble/**</exclude></excludes><outputDirectory>WEB-INF/classes</outputDirectory></fileSet><fileSet><directory>${project.basedir}/../pss-persistence/src/main/resources</directory><includes><include>**/*.xml</include></includes><exclude>/assemble/**</exclude></excludes><outputDirectory>WEB-INF/classes</outputDirectory></fileSet><fileSet><directory>${project.basedir}/src/main/log</directory><outputDirectory>log</outputDirectory></fileSet><!--<fileSet>--><!--<directory>${project.basedir}/src/main/resources/script</directory>--><!--<includes>--><!--<include>startup.sh</include>--><!--</includes>--><!--<outputDirectory>/</outputDirectory>--><!--<fileMode>0755</fileMode>--><!--<lineEnding>unix</lineEnding>--><!--</fileSet>--></fileSets><files><!--<file>--><!--<source>${project.basedir}/src/main/resources/script/conf/setenv-${mavenDir}.conf</source >--><!--<outputDirectory>config</outputDirectory>--><!--<destName>setenv.conf</destName>--><!--<lineEnding>unix</lineEnding>--><!--</file>--><file><source>${project.basedir}/src/main/resources/properties/${mavenDir}/app.properties</source ><outputDirectory>WEB-INF/classes/properties/</outputDirectory><destName>app.properties</destName></file></files><dependencySets><dependencySet><outputDirectory>WEB-INF/lib</outputDirectory><excludes><exclude>org.apache.maven:*</exclude><exclude>org.codehaus.plexus:*</exclude><exclude>org.apache.maven.wagon:*</exclude><exclude>org.apache.maven.surefire:*</exclude><exclude>org.apache.maven.plugins:*</exclude><exclude>junit:*</exclude></dependencySet></dependencySets></assembly>4.添加BootstrapListener.java文件,关注红色部分packagecom.bestpay.pss.bootstrap;import lombok.extern.slf4j.Slf4j;import org.springframework.context.support.ClassPathXmlApplicationContext;importjavax.servlet.ServletContextEvent;importjavax.servlet.ServletContextListener;importjavax.servlet.annotation.WebListener;/*** Created by aokage* Administrator on* Date: 14-3-24.*/@Slf4j@WebListenerpublic final class BootstrapListener implements ServletContextListener {publicBootstrapListener() {}privateClassPathXmlApplicationContext context;/*** Start the service.*/protected void startUp() throws Exception {context = new ClassPathXmlApplicationContext(new String[]{"spring/pss-spring-context.xml"});context.start();context.registerShutdownHook();ZkStandbyInit.start(context);("pss service started successfully");}/*** Stop the service.*/protected void shutDown() throws Exception {context.stop();("service stopped successfully");}@Overridepublic void contextInitialized(ServletContextEventservletContextEvent) { ("pss service started ");try {startUp();} catch (Exception ex) {log.error("ignore interruption ");}}@Overridepublic void contextDestroyed(ServletContextEventservletContextEvent) { try {shutDown();} catch (Exception e) {e.printStackTrace();}}}。
文件(含多级子目录)的打包和解包(下)
⽂件(含多级⼦⽬录)的打包和解包(下) 现在咱们说说解包,⼀个.dat⽂件,⾥⾯不知道包含了多少个⽂件/⽂件夹的信息,我们怎么解包呢?⼜怎么保证⽂件与⽂件之间、⽂件与其⼦⽂件之间的分级对应关系呢?下⾯我们来回顾⼀下打包的过程:把⽂件/⽂件夹的外部信息(⽂件名、⽂件名长度、⽂件的长度)/(⽂件夹名、⽂件夹名长度、⽂件的长度、⽂件的相对路径信息、⽂件类型)以结构体的形式存放在.dat⽂件中,内容也保存到.dat⽂件中 解包参数设置: bool UnPackFileAndDirectory(const string& inputzipfile, const string& outputpath) 其中第⼀个参数inputzipfile是要解包哪个⽂件(全路径),第⼆个参数outputpath是解包在哪⼀路径下(给定路径) 解包按照打包接⼝逻辑的话:⽂件、⽂件夹的顺序读取内容即可,当然啦,两边的结构体信息要定义相同,这样⼤家的协议就⼀样,解包便不会出现问题了。
解包流程:1.定位解包⽂件;2.解包⽂件部分(⽂件外部信息+⽂件内容),写⼊到指定路径下;3.解包⽂件夹部分(⽂件夹外部信息,没有内容哈,⽂件夹的内容为0),创建⽂件夹,并建⽴在指定路径下1bool UnPackFileAndDirectory(const string& inputzipfile, const string& outputpath)2 {3 FILE *rfp = NULL;4 rfp = fopen(inputzipfile.c_str(), "rb");5if (rfp == NULL)6 {7 cout << "解包:⽂件打开失败!" << endl;8return false;9 }1011//⽂件部分12int filecount;13 fread(&filecount, sizeof(filecount), 1, rfp);1415for (size_t i = 0; i < filecount; i++)16 {17struct FileInfo packFile;18 fread(&packFile, sizeof(packFile), 1, rfp);1920 cout << "filename:" << packFile.FileName << ", nameLen:" << packFile.fileNameLen << ", fileLen:" << packFile.fileSize << endl;21string path_file = outputpath + '\\' + packFile.FileName; //path_file:全路径2223 FILE *unpackFile = NULL;24 unpackFile = fopen(path_file.c_str(), "wb");25if (unpackFile == NULL)26 {27 cout << "⽂件:⽂件创建失败!" << endl;28 }2930 unsigned char*tmpBu = new unsigned char[packFile.fileSize];31 fread(tmpBu, packFile.fileSize, 1, rfp);//当然也可以不借助缓冲区32 fwrite(tmpBu, packFile.fileSize, 1, unpackFile);3334 }35 cout << endl;3637//⽂件夹部分38int folderCount;39 fread(&folderCount, sizeof(folderCount), 1, rfp);4041for (size_t i = 0; i < folderCount; i++)42 {43struct FolderInfo folder;44 fread(&folder, sizeof(folder), 1, rfp);4546//⽂件夹的基本信息47 cout << "FolderName:" << folder.FolderName << ", nameLen:" << folder.FolderNameLen << ", FolderSize:" << folder.FileSize << ", path:" << folder.Filepath << ", type:" << folder.type << endl; 4849string path_folder = outputpath + '\\' + folder.Filepath; //解包后全路径50const char * Lpath = path_folder.c_str();5152if (folder.type == 0 ) //⽂件类型53 {54 FILE * unpackFolders = NULL;55 unpackFolders = fopen(path_folder.c_str(), "wb");56if (unpackFolders == NULL)57 {58 cout << "⽂件夹:⼦⽂件创建失败!" << endl;59 }6061 unsigned char*readFolder = new unsigned char[folder.FileSize];62 fread(readFolder, folder.FileSize, 1, rfp);63 fwrite(readFolder, folder.FileSize, 1, unpackFolders);6465 }66if (folder.type == 1)//⽂件夹类型67 {68 ::CreateDirectory(Lpath, NULL); //创建⽂件夹69 }70 }7172return true;73 } 细⼼的⼩伙伴都发现了,我在⽂件解包和打包的过程中,都⽤到了临时的缓冲区:unsigned char*tmpBu = new unsigned char[fileSize];我为什么不直接从⼀个⽂件读再写⼊⽬标⽂件呢?主要是我之前就是那么⼲的,结果发现有的⽂件解包出来与原来的⽂件并不⼀致。
Mac命令行文件压缩技巧使用tar和zip压缩和解压缩文件
Mac命令行文件压缩技巧使用tar和zip压缩和解压缩文件在Mac系统中,命令行终端是一个非常强大的工具,可以通过它来进行文件的压缩和解压缩操作。
本文将介绍如何使用命令行中的tar和zip命令来进行文件的压缩和解压缩,以及一些相关的技巧和注意事项。
一、使用tar命令进行文件压缩和解压缩tar命令是一个经典的文件打包工具,可以将多个文件或目录打包成一个单独的文件。
同时,它也支持对打包文件进行解压缩操作。
1. 压缩文件:要将一个文件或目录进行压缩,可以使用以下命令:tar -czvf 压缩文件名.tar.gz 要压缩的文件或目录这里,“-c”表示创建压缩文件,“-z”表示使用gzip算法进行压缩,“-v”表示显示压缩和解压缩的详细过程,“-f”表示指定压缩文件的文件名。
例如,要将目录“documents”压缩成一个文件名为“backup.tar.gz”的压缩文件,可以使用以下命令:tar -czvf backup.tar.gz documents2. 解压缩文件:要对一个tar压缩文件进行解压缩,可以使用以下命令:tar -xzvf 压缩文件名.tar.gz这里,“-x”表示解压缩操作。
例如,要对压缩文件“backup.tar.gz”进行解压缩,可以使用以下命令:tar -xzvf backup.tar.gz二、使用zip命令进行文件压缩和解压缩zip命令是Mac系统中自带的文件压缩和解压缩工具,它可以创建zip格式的压缩文件并支持解压缩操作。
1. 压缩文件:要将一个文件或目录进行压缩,可以使用以下命令:zip -r 压缩文件名.zip 要压缩的文件或目录这里,“-r”表示递归地对目录进行压缩。
例如,要将目录“documents”压缩成一个文件名为“backup.zip”的压缩文件,可以使用以下命令:zip -r backup.zip documents2. 解压缩文件:要对一个zip压缩文件进行解压缩,可以使用以下命令:unzip 压缩文件名.zip例如,要对压缩文件“backup.zip”进行解压缩,可以使用以下命令:unzip backup.zip三、其他技巧和注意事项1. 压缩多个文件:如果要同时压缩多个文件,可以将它们的文件名依次列在tar或zip 命令后面即可。
打war包命令行方式
首先到完全路径下,命令jar –cvf XXXX.war XXXX
Jar –cvf ROOT.war ROOT
环境变量要设置好
命令行方式
前提是你机器中安装了JDK,并且在环境变量path中添加了jdk的bin目录进去。
可以通过jar命令来打包war和jar包,如下jar命令使用规范
下面是使用示例
这个示例是打包class目录下的com目录,如果你想打包class目录下的所有内容可以使用
Java代码
jar -cvf test.jar *
jar -cvf test.jar *
打war包也是一样的用法只是你打包的目录应该是web应用的根目录。
war包用winrar打开目录是这样的
大家可以根据自己的需求配置使用jar命令的参数。
使用工具JBuilder对web项目可以自动生成war包在web模块上单击右键选择properties
如下图进行设置,这样在rebuild项目和web模块的时候都会在项目根目录下产生一个war文件。
使用工具eclipse导出war包在项目上点击鼠标右键
如下图
选择war点击下一步
选择要导出的项目和war的存放路径,点击完成。
导出jar文件方法类似,请大家自己研究一下。
是我自己懒了!。
怎么制作压缩包
怎么制作压缩包
制作压缩包可以使用以下几种方法:
1. 使用系统自带的压缩工具:
- Windows:在文件资源管理器中选择要压缩的文件或文件夹,右键点击,选择“发送到”> “压缩(zipped)文件夹”。
- macOS:在Finder中选择要压缩的文件或文件夹,右键点击,选择“压缩”。
- Linux:在终端中使用命令行工具如tar和gzip来创建压缩包。
2. 使用第三方压缩软件:
- WinRAR:打开WinRAR,选择要压缩的文件或文件夹,点击“添加”按钮,选择压缩选项,点击“OK”来创建压缩包。
- 7-Zip:打开7-Zip,选择要压缩的文件或文件夹,点击“添加到归档”按钮,选择压缩选项,点击“OK”来创建压缩包。
- Mac下的The Unarchiver或Keka:打开软件,选择要压缩的文件或文件夹,点击“压缩”按钮,选择压缩选项,点击“压缩”来创建压缩包。
无论使用哪种方法,都可以选择压缩包的格式和压缩级别(如zip、gz、rar、7z等),以及设置密码保护压缩包等选项。
javaweb程序打包成war文件的步骤
如何生成WAR文件
2008-04-22 17:15
将Web应用打包成WAR文件的方法
2007年09月27日星期四10:41
(1)在命令行中运用Jar命令
假定有一个Web应用:C:/myHome
myHome/WEB-INF/……
myHome/files/……
myHome/image/……
myHome/src/……
myHome/index.jsp
在命令行窗口下执行如下命令:
C:/>cd myHome
C:/myHome/>jar cvf myhome.war *.*/ . 这一步很重要
解释:jar cvf [A->war包名].war [B->资源文件及文件夹] [C->将要生成war包的目标文件夹] “*.*/”(B->)代表当前目录(C:/myHome)下的所有文件及文件夹。
“.”(C->)表明将要在当前目录中生成war包。
操作完成后,找到C:/myHome下新生成的myhome.war,将其拷入TOMCAT_HOME/webapps/下。
然后启动Tomcat即可。
(2)利用IDE工具打包,如Eclipse
右键点击你想打包的文件或者项目,选择“导出...”,在弹出的对话框中选择“WAR文件”,上面有许多选项,还可以选“EAR”,“JAR”,个人觉得这个很方便的!
(3)利用ANT工具打包
首先配置好build.xml文件,然后dos下输入ant ...war
(4)用Eclipse的lomboz插件
选中你的web工程,lomboz J2ee---Deploy Module,就可以把Web工程发布并打包了!。
IDEA如何打出war包
IDEA如何打出war包
上⼀篇博⽂未讲完了IDEA的项⽬,突然感觉还有什么没讲对!是有关tomcat的部分,jsp只能在tomcat启动时运⾏。
所以这篇博⽂主要讲idea的项⽬如何在tomcat上调试和发布。
1.IDEA集成tomcat
1)在新⽣成的web项⽬中点击这个按钮。
2)建⽴本地的服务器
3)创建项⽬的名称
在⼤圆中写上要输出的项⽬名称,⼀定要提前改,否则后来改很⿇烦
2.在IDEA中打出war包
war包:Web application Archive,与jar基本相同,但它通常表⽰这是⼀个Java的Web应⽤程序的包,tomcat这种Servlet容器会认出war包并⾃动部署。
1)点击这个
或者
2)创建空的Artifacts
3)配置Artifacts
改名字
选择前端的根⽬录
创建WEB-INF的⽬录,并在该⽬录下创建classes⽬录
给classes配置后端代码:
点击OK
点击ok即可
buildwar包
在相应的⽂件中找到war包
3.在tomcat中发布war包
1)将war包复制到tomcat的webapps中
2)打开bin中的start.bat
3)war包⾃动解压
输⼊对应的url即可.。
jar包和war包的打包规范
CMD 模式下实现jar打包注意包名以及manifest.mf文件每一个冒号有空格最后一行为空1、编译java文件2、写manifest.mf文件Manifest-Version: 1.0Main-Class:<空格>package.class//指定主类,目的是如果有main函数能够直接运行Class-Path: 包含的其他jar包中间空格间隔如果有多个jar包且不能为jar包中的jar包。
是需要在包里面包含的本地包lib/edd/.<换行>最后一行为空行保存注意:没有添加主清单属性则不能够直接通过java –jar 包名.jar运行文件Cmd下执行jar –cvfm name.jar manifest.mf 文件.class这种情况是打包没有package名的.class文件。
jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名jar cvfm classes.jar mymanifest.mf -C foo/ . 文件夹下所有类打包foo为文件夹。
这种是打包有包名的.class。
应为这种情况下编译会产生cn.mypackage的情况因此在manifest文件中会写出,而且也需啊把包的文件夹放在与manifest同一个位置再打包运行即可运行即是java –jar name.jar;这种情况必须要有manifest文件。
不然不能执行main函数含有多个java编译文件,属于同一个包的打包。
也是上诉方法,将其编译到一个包文件夹中,然后编译运行即可。
Jar 包的导入(CMD下使用)只需要将包放入到classpath对应的文件夹下,然后使用import cn.ddd.class即可。
如下:import cn.mypackage.Testjar;//但是这种情况下用类需要把全名写出来不然不能访问,也就是说import cn.mypackage.*;写法是错误的public class testcout{public static void main(String[] args){Testjar t = new Testjar();t.display();}}运行输出:Eclipse 下实现jar包的打包Eclipse的jar包打包同样需要多个过程1、选择包右键选择导出jarfile2、3、选择要导出的文件4、5、选择自己的manifest或者生成的manifest选择主类,实现直接运行。
关于war包 jar包 ear包 及打包方法
关于war包 jar包 ear包及打包方法2008-12-18 23:09war包:是做好一个web应用后,通常是网站打成包部署到容器中jar包:通常是开发的时候要引用的通用类,打成包便于存放管理。
ear包:企业级应用通常是EJB打成ear包各种包的打法:转:兄弟,对java着迷吗,或者是为了自己的生计,不论怎样都欢迎你进入精彩java世界,welcome!可能你刚刚对每个人说:Hello World!也或者……ok!这已经足够了。
那就让我们开始吧,开始这个魔幻世界的旅程: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 改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WAR包的制作和解压过程指导目录1 说明 (1)2 WAR包的制作 (2)2.1 MyEclipse下制作War包 (2)2.2 JAR程序打WAR包 (4)2.3 Ant工具打WAR包 (6)3 WAR包的更新 (9)4 WAR包的解压 (11)4.1 WinRAR程序解压 (11)4.2 JAR程序解压 (12)1说明目前公司的很多测试环境和实施环境都采用WAR包部署的形式,所以,要求相关人员都要掌握WAR包使用。
配置人员要完全掌握WAR包的制作、使用和更新,WAR的使用可以参考《数据中心系统weblogic安装部署说明》等文档进行,本文主要讲解WAR的制作和更新过程。
鉴于在MyEclipse下进行WAR包制作均存在一定的局限性,而JDK下的JAR 程序和Ant都具备打WAR包的功能,所以,本文侧重于使用JAR程序和Ant工具进行WAR包制作和解压的说明,对于MyEclipse下的使用,则提供一般性的指导方法。
关于进入命令行窗口的说明:本文档中提供的操作多次使用到命令行窗口。
在Windows下,打开“开始 运行”,输入“cmd”后回车,即可出现如下图所示的窗口,此即命令行窗口。
详细过程见文章正文2WAR包的制作WAR包,其实是将程序进行打包后形成的一种压缩包,在目前的系统、应用中使用较为普遍。
其制作过程一般可以通过MyEclipse自带的导出功能实现,也可以使用jdk中的jar程序完成,ant也提供了打WAR包的办法,以下分别进行介绍。
2.1MyEclipse下制作War包首先需要注意的是,MyEclipse只能对Web Project类型的工程进行WAR包制作,对于我们常用的Java Project则无法进行WAR包制作。
打开MyEclipse,在【Package Explorer】中选中需要压缩的项目,点击工具栏中的“File->Export…”,在弹出的【Export】对话框上,点击选中树状图中的“J2EE->WAR file (MyEclipse)”,点击【Next >】继续,如图2.1所示:图2.1 选择导出类型在【WAR Export】对话框上选择需要压缩的项目名称,点击【Browse…】,在弹出的【另存为】对话框上选择WAR包保存的路径和名称,确认后点击【Finish】,开始进行压缩。
具体如图2.2所示:图2.2 选择W AR包存放路径2.2JAR程序打WAR包首先需要在机器上安装1.4版本以上的jdk,并配置好环境变量,具体可以参考《JDK的安装和配置》和《软件测试环境配置》等文档进行。
配置完毕后,在命令行窗口下输入java –version和jar /?进行检查,以确保所需JDK已经配置正确。
打开命令行窗口,切换至程序所在目录下,然后输入jar -cvf test.war *,回车,压缩开始。
压缩过程结束后,在程序目录下就会生成一个test.war的文件。
下面以制作甘肃综合经营管理系统WAR为例进行说明。
该系统在我本机上的E:\gansuxintong\_program\ColMANAProject\ColMANAWeb目录下,下面是操作过程的截图:图2.3 压缩过程图2.4 压缩结束下面是我将上边的操作过程整理后的一个批处理脚本的内容,仅做参考:e:cd E:\ColMANAWebjar -cvf ColMANAWeb.war *注意:该方法会将指定目录下的全部文件打进WAR内,如果需要清除SVN或者CVS文件,请在打包前手动进行。
2.3Ant工具打WAR包Apache Ant是目前事实上的Java应用的标准build脚本工具。
使它大受欢迎的一个主要愿意是它的和灵活,允许程序员创建自己的Task来对Ant进行扩展。
Ant也提供了打WAR包的办法,下面仍然以将ColMANAWeb目录打成WAR包为例,对使用方法进行介绍:2.3.1配置ant首先下载获取ant程序,解压至本机相应目录下(假设将ant解压至D:\Program Files\apache-ant-1.7.1目录下),进行环境变量配置:1、新建ANT_HOME变量,值为D:\Program Files\apache-ant-1.7.1;2、修改PATH变量,将D:\Program Files\apache-ant-1.7.1\bin置于前端;环境变量修改完毕后,进入命令行窗口,输入ant,回车执行后出现如图2.5提示,则表示ant已经配置成功。
说明:ant命令执行后,会寻找默认的配置文件build.xml,并按照该文件的设置进行任务的执行。
由于检查ant配置是否已经完成时,只是输入了ant命令,而没有指定build.xml文件的位置,所以会出现“Build failed”的提示。
图2.5 ant配置检查2.3.2编制build.xml文件新建build.xml文件,内容如下:<?xml version="1.0" encoding="UTF-8"?><project name="ColMANAWeb" default="Createwar" basedir="."><property name="web.dir" value="${basedir}/ColMANAWeb" /><target name="Createwar" description="Build the web application archive"> <war warfile="${basedir}/ColMANAWeb.war"webxml="${web.dir}/WEB-INF/web.xml"><fileset dir="${web.dir}" /></war></target></project>红色部分我们可以根据程序目录不同进行调整,其他内容均不需进行修改。
将该文件放置于E:\gansuxintong\_program\ColMANAProject\目录下,此时,build.xml文件与程序目录ColMANAWeb即同在ColMANAProject目录下。
2.3.3执行打包命令进入命令行窗口,输入以下命令:ant -buildfile E:\gansuxintong\_program\ColMANAProject\build.xml(注意,命令中横线是英文字符,红色部分是build.xml文件的具体路径),回车执行。
过程如图2.6所示:图2.6 Ant打WAR包提示“BUILD SUCCESSFUL”后,E:\gansuxintong\_program\ColMANAProject 目录下就会产生一个ColMANAWeb.war文件。
注意:对于一个项目来说,我们可以采取JAR或者Ant的方式,将所需命令制作成批处理脚本,便于多次执行和使用。
3WAR包的更新WAR包的更新有两种方式,一种是将更新程序更新至编译环境下,重新编译后,再次制作WAR包;另一种是将编译后的更新打入WAR包内。
重新制作WAR的方式不再进行介绍,这里主要介绍另外一种更新方式。
首先在机器上安装WinRAR程序,安装过程不再介绍,默认安装即可。
然后更新程序,编译后,将更新程序检出,拷贝至本机。
右键点击WAR包文件,选择使用WinRAR程序打开,依次将所有更新文件直接拖放至WAR包文件对应目录下,如图3.1所示:图3.1 打入更新文件将文件拖放至WAR包时,会弹出【压缩文件名和参数】对话框,确认对话框上“更新方式”为“添加并替换文件”后,点击【确定】即可。
图3.2 确认文件替换4WAR包的解压我们有时会遇到需要将WAR包解压的情况,比如在将Weblogic下应用迁移到Tomcat下时就需要将WAR包解压。
下面介绍两种解压方式:WinRAR程序解压WAR包和JAR程序解压WAR包。
4.1WinRAR程序解压WinRAR程序可以解压WAR包文件,并且可以在解压时将解压文件解压至具体目录。
操作过程如下:使用WinRAR程序打开WAR包文件,使用鼠标选中需要解压的目录及文件,点击WinRAR操作界面上的【解压到】按钮,如图4.1所示:图4.1 使用WinRAR打开WAR包文件在弹出的【解压路径和选项】对话框上,选择将WAR包文件解压到的目标路径,并确定“更新方式”(若解压路径已经存在目录或文件时,需要注意该项的选择)、“覆盖方式”(若解压路径下已经存在同位置的文件,会在解压时发生覆盖,需要确定覆盖方式)等选项。
确定解压过程设置后,点击对话框上的【确定】按钮,如图4.2所示:图4.2 使用WinRAR打开WAR包文件待解压过程结束后,即可在解压路径下看到WAR包中的目录及文件。
4.2JAR程序解压使用JAR程序,可以将WAR包中的目录及文件解压至WAR包文件所在目录下。
首先,仍然是在机器上安装1.4版本以上的jdk,并配置好环境变量。
进入命令行窗口,切换至程序所在目录下,然后输入jar -xvf ColMANAWeb.war,回车,解压开始。
解压过程结束后,在程序目录下就会将WAR包内的问卷解压至当前目录下。
下面以解压ColMANAWeb.war为例进行说明。
该WAR包在我本机上的D:\temp\ColMANAWeb目录下,下面是操作过程的截图:图2.3 解压过程图2.4 解压结束WAR包解压,同样可以通过一个批处理文件,实现操作的简单化和可重复。
下面是我将上边的操作过程整理后的一个批处理脚本的内容,给做参考:d:cd D:\temp\ColMANAWebjar -xvf CloMANAWeb.war注意:以上两种解压方式只是将WAR包内的目录及文件直接解压至所选择的解压路径或者WAR包所在路径下,会使得指定目录下全部是解压所得到的目录和文件。
所以,在解压前,要先确定解压路径。
使用WinRAR程序解压方式的,需要在解压时选中已经建立的解压路径。
使用JAR程序解压方式的,可以在确定解压路径后,建立相应目录,将WAR 包放置在该目录下后再进行解压(建议该文件夹设置成与系统程序目录名称一致,比如,解压DataCenterWeb.war文件时,在名为DataCenterWeb目录下进行)。