「java打包tar」java打包成war包

博主:adminadmin 2023-03-19 21:53:10 240

本篇文章给大家谈谈java打包tar,以及java打包成war包对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

tar包和jar包和war包的区别

tar是通用的另一种打包格式,为了部署到服务器时方便。而jar是java app server识别的java部署格式,其实是Zip文件,只是内部的文件有规范。

war是专用于web app的jar。另外还有用于enterprise app的ear后缀。

相同点是都可以把多个文件打包到一个文件,不同点是 jar是个压缩文件,而tar只打包,不压缩,所以tar还要配合其他压缩工具来压缩,比如tar.bz2,tar.gz 之类的就是在tar的基础上进行的压缩格式。

以免霸屏的指令是什么

为什么要学习Linux,因为Linux很多都是开源免费的,并且Linux是非常稳定的,我们开发出来的项目一般都是在服务器中的,我们操作服务器中的程序有两种方式,要么你就去服务器跟前,这种明显是不现实的,所以在实际情况中我们都是在电脑安装一个远程登陆软件,通过这个软件来连接远程的服务器,这样我们就可以在本地的电脑操作远程服务器了;Linux就提供了一种可靠的远程连接方式;

Linux的特点:免费,开源,多用户(同一时刻可以多个用户同时登陆和执行同一个Linux系统),多任务;

Linux的安装

安装

1.安装VMWare: 下载对应的软件,一直下一步就行;

2.安装centOS镜像:

①点击创建新的虚拟机

②然后按照虚拟机向导安装镜像,注意选择自己安装对应的镜像版本

③在CD/DVD的配置项中配置镜像的路径;(内存可以根据自己需求设置)

然后一直下一步就行;

④第一次启动的时候比较慢,因为需要安装一些东西;然后按照需求配置自己需要的就行;

不过设置的root密码要记住!第一次安装完成后需要重新启动!!!

⑤配置网卡驱动:

然后重新启动!

然后再使用 ip addr 查看ip地址是否可以显示了;

使用finalshell连接虚拟机

⑥使用远程连接软件连接本地的Linux来进行操作;

这里我们使用finalshell,自己下载安装这个finalshell就行;

下面我们来演示一下如何使用finalshell来连接这个Linux: 要先知道我们要连接的服务器(Linux或者是云服务器的IP地址)的ip地址才能去连接;

点击最左上角的文件夹图形,然后点击左边白色的文件夹,会弹窗出:然后点击SSH连接

出现下面的窗口:这个主机要写你要连接的服务器的ip地址,这里我们填自己这个虚拟机的ip地址就行(在本机的虚拟机使用 ip addr 查看自己的虚拟机的IP地址);

了解一下Linux的目录结构(不需要记忆)

Java中流传一句话:万物皆对象!在Linux中同样流传一句话:万物皆文件!

Linux中常用的命令(重点)

Linux命令初体验--几个常用命令

序号 命令 对应英文 作用

1 ls list 查看当前目录下的内容

2 pwd print work directory 查看当前目录所在目录

3 cd 目录名 change directory 切换目录

4 touch 文件名 touch 如果文件不存在,就新创建文件

5 mkdir 目录名 make directory 创建目录

6 rm 文件名 remove 删除指定文件

注意事项:

在执行Linux命令的时候,提示信息如果显示为乱码,这是由于编码问题导致的,只需要修改Linux的编码就行即可,命令如下:

下面命名表示:把'LANG="en_UTF-8"'追加到后面的文件中

echo 'LANG="en_UTF-8"' /etc/profile

source /etc/profile #重新加载配置文件,新添进去的配置才可以生效

登录后复制

使用Linux的一些小技巧:非常使用,和经常使用得到;

tab键自动补全

连续两次Tab键,给出操作提示

使用上下箭头快速调出曾经使用过的命令

使用clear命令或者是ctrl+l 实现快速清屏

Linux命令格式

command [-options][parameter]

登录后复制

说明:

command:命令名

[-options]:选项,可以用来对命令进行控制,也可以进行省略

[parameter]:传给命令的参数,可以是零个,一个或者是多个

注意:[] 代表可选

命令名 ,选项 ,参数之间使用空格进行分隔

案例演示: 使用 ls 与 使用 ls -l 的区别

paramter是多个的时候:比如同时创建多个文件

强制删除文件:

强制删除一个文件:rm -f 文件名1

强制删除一批文件:rm -f 文件名1 文件名2 文件名3

显示指定目录下的内容 ls和ll

作用:显示指定目录下的内容

语法:ls [-al] [dir]

说明:

-a 显示所有文件及目录 (.开头的隐藏文件也会列出, 在Linux中隐藏文件是以.开头的)

-l 除文件名称外,同时将文件类型(d表示目录,-表示文件),权限,拥有者,文件大小等信息详细列出

注意:由于我们使用ls命令是经常需要加入 -l 选项, 所以Linux为ls -l 提供了一种简单的书写方式, 即 ll

如果不指定特定的dir,那么展示的就是root目录下的所有文件;

如果指定了dir,那么展示的就是指定dir目录下的所有文件:ls -al /etc

简写: 把ls -al 进行了合并,变成了 ll

切换目录: cd

作用:用于切换当前工作目录,即进入指定目录;

语法:cd [dirName]

特殊说明:

~表示当前用户的home目录 不同用户的home目录可能不同,比如Linux中的root用户的home目录就是 /root

.表示目前所在的目录

..表示目前位置的上级目录 (用得比较频繁)

举例:

cd .. 切换到当前目录的上级目录

cd ~ 切换到用的home目录

cd /usr/local 切换到/usr/local目录

cd usr 进入到usr目录

显示文件内容:cat

作用:用于显示文件内容

语法: cat [-n] filaName

说明: -n 由1开始对所有输出行数编号

举例:cat /etc/profile 查看/etc目录下的profile文件内容

不使用-n:

使用-n:

分页查看文件:more

作用:以分页的形式显示文件内容, 使用场景,当查看的文件的内容比较多的时候,就可以使用more命令来查看,这样更加方便

语法:more fileNeme

操作说明:

回车键 向下滚动一行

空格键 向下滚动一屏

b 返回上一屏

q或者是Ctrl + c 退出more

举例:在根目录下使用命令 more /etc/profile

查看文件末尾:tail

作用:查看文件末尾的内容

语法:tail [-f] fileName

说明:动态的读取文件末尾内容并显示,通过用于日志文件的内容的输出

举例:

tail /etc/profile 显示/etc目录下的profile文件末尾10行的内容(这个10是默认的)

tail -20 /etc/profile 显示/etc目录下的profile文件末尾20行的内容

tail -f /ydl/my.log 动态的读取 /ydl目录下的my.log文件末尾内容并显示, 这个命令会让当前Linux窗口处于霸屏的状态,使用Ctrl + C 就可以停止;

创建目录:mkdir

作用:创建目录

语法:mkdir [-p] dirName

说明:

-p: 确保目录名称是存在的,不存在就创建一个。通过此选项,可以实现多层目录同时创建

(p代表parent)

举例:

mkdir it在当前目录下,创建一个名为it的子目录

mkdir -p it/javaTest 在工作的目录下的it目录中建立一个名为test的目录,若it目录不存在,则创建一个

删除目录:rmdir

作用:删除空目录

语法:rmdir [-p] dirName

说明:

-p : 当子目录被删除后使父目录为空目录的话,则一并删除

举例:

rmdir it 删除为it的空目录

rmdir -p it/java 删除it目录中名为Java的子目录,若java目录删除后it目录变为空目录,则it目录也会被删除

rmdir it* 删除以it开头的空目录

删除不为空的文件或目录 rm

作用:删除文件或者目录

语法:rm [-rf] name

说明:

-r : 将目录及目录中的所有文件(目录)逐一删除,即递归删除

-f : 无需确认,直接删除

举例:

rm -r it/ 删除名为it的目录和目录中的所有文件,删除前需要确定

rm -rf it/ 无需确认,直接删除名为it的目录和目录中所有文件

rm -rf hello.txt 无需确认,直接删除hello.txt文件 (这个删除文件的命令可以不用带r)

拷贝移动命令cp

作用:用于复制文件或者是目录

语法:cp [-r] source target

说明:

-r : 如果复制的是目录需要使用到此项,此时将复制该目录下所有的子目录和文件

举例:

cp hello.txt it/ 将hello.txt复制到it目录中

cp hello.txt ./hi.txt 将hello.txt复制到当前目录,并改名为hi.txt

cp -r it/ itjava/ 将it目录和目录下的所有文件复制到itjava目录下

cp -r it/* itjava/ 将it目录下所有文件复制到itjava目录下(目录这一层不复制,只复制目录下的内容)

移动拷贝mv

作用:为文件或者是目录进行改名,或将文件或目录移动到其他位置

语法:mv source dest

举例:

mv hello.txt hi.txt 将hello.txt改名为hi.txt

mv hi.txt it/ 将文件hi.txt移动到it目录中

mv hi.txt it/hello.txt 将hi.txt移动到it目录中,并且改名为hello.txt

mv it/ itjava/ 如果itjava目录不存在,将it目录改名为itjava

mv it/ itjava/ 如果itjava目录存在,将it目录移动到itjava目录中

打包压缩命令 tar

作用:对文件进行打包,解包,压缩,解压

语法:tar [-zcxvf] filaName[files]

包文件后缀为 .tar 表示只完成了打包,并没有压缩

包文件后缀为 .tar.gz 表示打包同时还进行了压缩

说明:

-z : z代表的是gzip , 通过gzip命令处理文件,gzip可以对文件压缩或者是解压

-c : c代表的是create, 即创建新的文件包 (打包)

-x : x代表的是extract,实现从包文件还原文件 (解包)

-v : v代表的是verbose,显示命令执行的过程

-f : f代表的是file,用于指定包文件的名称

如果不想把解压的文件包的内容放到当前目录, 加 -c /要存放的目录

第一个常用组合: -cvf

第二个常用组合:-zcvf

第三个常用组合: -xvf 解压包

第四个常用组合:-zxvf (非常常用)

文本编辑命令vi/vim

作用:vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似与windows的记事本;

语法:vi fileName

文本编辑命令vim:

作用:对文件内容进行编辑,vim其实就是一个文本编辑器;

语法:vim fileName

说明:

1.在使用vim进行编辑文件的时候,如果指定的文件存在则直接打开此文件。如果指定的文件不存在则新建文件

2.vim在进行文本编辑的时候一共分为三种模式,分别是命令模式(command mode),插入模式(insert mode)和底行模式(last line mode)。这三种模式之间可以相互切换。我们在使用vim命令的时一定要注意我们当前所处的是哪一种模式;

对于这三种模式的一些说明:

注意:命令模式下,这个gg表示的是快速将光标移动到文件开头, 这个G表示的是快速将光标移动到文件末尾;

下面的插入模式和底行模式,是不能直接进行转换的,都需要先进入到命令模式然后才能进行模式转换;

注意:必须要进入底行模式才能进行文件的保存!!!

查询命令find

作用:在指定目录下查找文件 (从指定目录中搜索指定的文件)

语法:find dirName(目录名称) -option fileName

(-option 一般是-name,表示根据指定名称来查找文件)

举例:

find . -name "*.java" 在当前目录及其子目录下查找.java结尾的文件 (-name根据文件名来进行查找)

find /it -name "*.java" 在/it目录及其子目录下查找.java结尾的文件

查找指定内容命令grep

作用:从指定文件中查找指定的文本内容(从当前或者是指定的文件中查找指定的内容)

语法:grep word fileName

注意:这个word是区分大小写的 !

举例:

grep hello helloword.java 查找 helloword.java文件中出现的hello字符串的位置

grep hello *.java 查找当前目录中所有.java结尾的文件中包含hello字符串的位置

Linux中进行软件安装

软件安装的方式:

二进制发布包的安装

软件已经针对具体平台编译打包发布,只需要解压,修改配置即可

rpm安装

软件已经安装redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题

yum安装(一般推荐这种安装方式)

一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程自动解决库依赖的问题

源码编译安装(Java源代码安装)

软件以源码工程的形式发布,需要自己编译打包

在Linux中安装jdk

安装jdk,先检测一下自己的Linux中有没有jdk环境,如果有就不需要安装了;

检测命令:java -version

如果没有的话,那就安装和配置环境变量:

1.先在官网下载好jdk在Linux环境下的呀压缩包,以.tar.gz结尾的jdk压缩包

2.然后使用 tar -zxvf jdk-8uxxxxxx64.tar.gz -C /usr/local (表示把压缩包解压到usr下的local文件夹下)

3.解压完成后,然后进行环境变量的配置, 使用命令 vim /etc/profile

然后快速的到达文件的末尾,按一下 大写的G就行;然后修改配置文件:

LANG="en_US.UTF-8" #配置字符编码集

JAVA_HOME=/usr/java/jdk1.8.0_261-amd64 #配置jdk的环境变量

PATH=$JAVA_HOME/bin:$PATH

登录后复制

修改完成后让配置文件重新加载一下,使用命令:source /etc/profile 然后回车;

4.然后查看是否配置成功:java -version

在Linux中安装Tomcat(防火墙相关命令使用的时候查询就行)

sh startup.sh

./startup.sh

登录后复制

# 查看Tomcat的后50行日志

tail -50 /usr/loacal/apache-tomcat-7.0.57/logs/catalina.out

# 查询指定软件的进程

ps -ef | grep tomcat

登录后复制

Tomcat在Linux运行的,可能你在浏览器也无法访问,因为防火墙开着的;

查看和修改防火墙的状态:

查看防火墙状态(systemctl status firewalld、firewall-cmd --state)

暂时关闭防火墙(systemctl stop firewalld)

永久关闭防火墙(systemctl disable firewalld)

开启防火墙(systemctl start firewalld)

开放指定端口8080(firewall-cmd --zone=public --add-port=8080/tcp --permanent)

关闭指定端口(firewall-cmd --zone=public --remove-port=8080/tcp --permanent)

立即生效(firewall-cmd --reload)

查看开放的端口(firewall-cmd --zone=public --list-ports)

注意:

1、systemctl是管理Linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作

2、firewall-cmd是Linux中专门用于控制防火墙的命令

3、为了保证系统安全,服务器的防火墙不建议关闭 在Linux中开放指定的端口是以后在实际生产中最常用的方式,在实际生产中是不能直接把防火墙关闭的,容易受到攻击;修改防火墙配置后都需要reload一下才能生效;

systemctl status firewalld、firewall-cmd --state

systemctl stop firewalld

systemctl start firewalld

systemctl start firewalld

firewall-cmd --zone=public --add-port=8080/tcp --permanent

firewall-cmd --zone=public --remove-port=8080/tcp --permanent

firewall-cmd --reload

firewall-cmd --zone=public --list-ports

登录后复制

sh shutdown.sh

./shutdwon.sh

ps -ef | grep tomcat

kill -9 7742 # 一般不建议直接强制停止进程,除非正常的手段无法停止进程了

登录后复制

在Linux中安装MySQL

使用rpm来进行安装MySQL;

①先检查当前系统中是否安装了MySQL数据库

rpm -qa #查询当前系统中安装的所有软件

rpm -qa|grep mysql #查询当前系统中安装的名称带MySQL的软件

rpm -qa|grep mariadb #查询当前系统中安装的名称带mariadb的软件 这个是centons中自带的一个数据库,如果你的虚拟机中有这个软件要先把这个软件给卸载然后再安装MySQL,不然会出现数据库冲突的情况

登录后复制

卸载mariadb数据库:

rpm -e --nodeps 软件名称

rpm -e --nodeps

rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

登录后复制

参考下面的文章:

Linux安装MySQL详细教程(YUM+离线安装)初尘屿风的博客-CSDN博客yum安装mysql的步骤和方法

;request_id=165569845616782390520827biz_id=0utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v32_ecpm-26-124343942-null-null.142%5Ev17%5Erank_v32,157%5Ev15%5Enew_3utm_term=linux%E5%AE%89%E8%A3%85MySQL%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8Bspm=1018.2226.3001.4187

在参考这个文章的时候,中途可能还会报一个错误:在下面的文件中修改配置文件,把相关的文件地址填过去;

登陆: mysql -u -root -p 登陆的时候可能会报下面的错误:一般来说都是密码错误了.....(反正我测试了很多次才登陆成功)

安装Linux常见的三个错误:liunx 安装 mysql 时遇到错误的解决_qq_31683775的博客-CSDN博客

安装lrzsz

这个是Linux中负责文件的上传和下载的功能;

1.搜索lrzsz安装包,命令为 yum list lrzsz (这个命令的作用是在应用商店搜索lrzsz这个安装包)

2.使用yum在线安装,命令为 yum install lrzsz.x86_64 ,然后回车就行(中间可能让你输入一个y);然后在命令窗口使用 rz 命令就可以把本地的文件上传到Linux上了;

注意:虽然这个finalshell可以直接使用拖拽的方式来进行文件的上传,那么为什么还要安装这个软件?因为并不是所有的Linux连接工具中都会有这种可视图操作的功能!

Linux项目部署

手工部署项目

自己打包,自己上传,自己运行,然后都是自己一行一行的手敲命令来完成;

①在代码编写工具中把spring boot项目打成jar架构包;

②将jar包上传到Linux服务器

mkdir /usr/local/take_out_app #创建目录,将项目的jar包放到此目录

登录后复制

运行命令:不过要注意的是,你这个Linux环境必须安装了jdk才可以运行Boot项目

java -jar reggie_take_out-1.0-SNAPSHOT.jar

登录后复制

检查防火墙8080是否对外开放:firewall -cmd --zone=public --list-ports

我们发现8080端口并没有被开放,所以使用命令把8080端口开放:

firewall-cmd --zone=public --add-port=8080/tcp --permanent # 出现sucess后,然后必须执行下面的reload,不然开放的端口不会生效

firewall-cmd --reload

firewall-cmd --zone=public --list-ports # 如果再次进行查看

登录后复制

然后可以去浏览器访问了,但是此时还不一定可以访问成功,如果你的这个项目使用到了数据库MySQL或者是redis,那么还需要配置数据库,或者是使用你本地的数据库,但是要修改刚刚上传的jar架构包中的yml文件中的MySQL的url;

比如果你的Linux的ip是:192.168.300.100 , 而你的MySQL是在windons中,你windows的ip地址是 192.169.200.1, 那么就要在Linux中把yml文件中的MySQL的url中的localhost改成你的这个windows的ip地址;

等等问题需要去解决。。。。。。。。(后面再补充一下具体的情况)

设置Java项目在后台运行并且输出日志到指定文件

上面的那种霸屏允许的方式,只要允许Java程序的那个窗口被关闭,那么在浏览器就访问不到了;

比如在运行刚刚到项目:

nohup java -jar reggie_take_out-1.0-SNAPSHOT.jar app.log # 这里的log文件是相对路径下的文件,会在我们执行该行命令的目录下生成这个log文件 最后一个表示在后台运行

登录后复制

那么这种在后台运行的程序应该怎么把它结束?使用杀进程的方式

ps -ef | grep java 拿到Java程序的进程id

然后使用 kill -9 进程号 (这个9可以换成15,15杀进程的方式更加‘温柔一些’)

然后再查询一下 ps -ef | grep java 看有没有关闭该程序

shell脚本自动部署

通过脚本的方式,只要执行一个命令,就可以自动的从我们的git仓库拉取项目和部署项目;

完整的操作步骤:

java

linux

电子蜂鸣器

精选推荐

广告

python基础代码大全-python基础语法,python 代码命令大全

1804阅读·0评论·0点赞

2020年10月28日

Undefined symbols for architecture x86_64:"xxxxxx", referenced from:

9398阅读·0评论·0点赞

2016年12月6日

yml 配置指令参考

129阅读·0评论·0点赞

2022年9月29日

Docker Compose

236阅读·0评论·0点赞

2020年5月12日

linux服务器上部署项目常用命令

1658阅读·1评论·3点赞

2018年6月21日

/proc/diskstats

381阅读·0评论·0点赞

2018年8月2日

如果,一个人身上出现了这几个迹象,说明他的情商非常低

国际专业情商测试

广告

[求助] win7 x64 封装 出现 Administrator.xxxxx 的问题

391阅读·0评论·0点赞

2016年11月27日

Linux大神都是怎么记住这么多命令的?

496阅读·1评论·0点赞

2021年7月22日

将瑞吉外卖项目jar包部署在远程服务器并成功运行在pc和移动端

928阅读·14评论·8点赞

2022年7月20日

linux命令那么多怎么记,如何记住Linux命令

205阅读·0评论·0点赞

2021年5月11日

linux命令怎么学?

6481阅读·0评论·1点赞

2018年10月3日

【Linux学习笔记22】Linux-C进程内存分布

210阅读·0评论·1点赞

2019年8月2日

Linux nohup模式启动jar

220阅读·0评论·0点赞

2018年9月21日

linux yml安装mysql

2345阅读·2评论·0点赞

2019年12月18日

Linux 命令集锦

5476阅读·0评论·0点赞

2007年3月19日

shendxx python 知识点

1下载·0评论

2022年12月9日

科创成果奖励.rar.rar

0下载·0评论

2022年12月9日

DISCO_v1.0.7.exe

0下载·0评论

2022年12月9日

统计咨询用户量.sql

0下载·0评论

2022年12月9日

去首页

看看更多热门内容

评论2

爱殇戏子

大佬,再自学么?

idea如何生成java的tar包

更改文件后缀。

1、打开idea。

2、保存文件。

3、更改文件后缀即可。

Java是一门面向对象编程语言,吸收了C++语言的各种优点,摒弃了C++里难以理解的多继承、指针等概念,Java语言具有功能强大和简单易用两个特征。

java 怎么把多个jar打包成一个jar来使用??

Java程序由多个类文件组成,这些类文件需要编译成多个“.class”二进制字节码文件才能运行,而一个稍大写的Java程序,编译后都会有非常多的“.class”文件,这样对于程序的发布非常的不方便。下面将介绍如何将Java程序的多个编译后的“.class”文件打包成一个可执行的JAR文件,这样将该JAR文件发布给用户就可以了。

1. Java程序打包成JAR文件

(1)在Eclipse的“包资源管理器”视图中找到要打包成JAR文件的项目。在项目名称上单击鼠标右键,在弹出的菜单中选择“导出”菜单项。在“导出”对话框中选择“Java”/“可运行的JAR文件”。

(2)在“可运行的JAR文件导出”向导对话框的“启动配置”下拉选择框中,选择“StudyJava-2.01”。这个下拉选择看中保存着运行过的启动配置,由于之前已经运行过StudyJava类,所以这个下拉选择框中可

以选择StudyJava类的启动配置。选项的“-2.01”后缀是启动配置所在的项目名称。然后在“导出目标”下拉选择框中输入保存打包后JAR文件的名称和位置,也可以通过单击右侧的“浏览按钮”选择指定的位置。

2. 在命令行运行JAR文件

现在的实例是在控制台中输出字符串信息。把它打包成JAR文件之后必须通过命令行方式运行,这样才可以在命令行中看到程序的输出结果。下面介绍一下具体运行方法。

(1)在windows系统中,单击“开始”/“运行”菜单项。

(2)在弹出的“运行”对话框中输入“CMD”命令。单击“确定”按钮。

(3)在CMD命令中,默认的操作位置是当前用户文件夹,由于打包的“StudyJava.jar”文件保存在C盘根目录,所以我们输入“cd\”命令,把操作文件夹切换到C盘根目录。然后输入“java –jar StudyJava.jar”命令运行JAR文件。如下图所示。其中“java”是运行Java程序的命令,“-jar”是运行参数,意思是要运行JAR文件,而后面跟随的就是JAR文件的全程(包括扩展名称)。

java程序 从D盘读取.TXT文档数据。按要求改变数据格式,然后打包成.TAR后缀名。保存到服务器的共享盘E

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

public class TxtReader {

public static void main(String[] args) {

String inputTxtPath = "d:/test.txt"; // 需要读取的 TXT 的路径

String outputTarPath = "e:/test.tar"; // 需要写到哪的路径文件可以不存在,代码创建

String[] line = readTxt(inputTxtPath); // 只需要动态改变上面两个地址即可

if(line != null){

boolean sign = writeTar(outputTarPath, line);

if (sign) {

System.out.println("写入成功...");

} else {

System.out.println("写入失败...");

}

}

}

/**

* 读取TXT方法

*

* @param txtPath

*            文件的路径

* @return 返回一个拆分好的数组

*/

public static String[] readTxt(String txtPath) {

String[] line = null;

try {

FileReader reader = new FileReader(new File(txtPath));

BufferedReader buffReader = new BufferedReader(reader);

String content = buffReader.readLine();

line = content.split(" ");

buffReader.close();

reader.close();

} catch (FileNotFoundException e) {

System.out.println("txt 文件不存在,无法读取...");

} catch (IOException e) {

e.printStackTrace();

}

return line;

}

/**

* 写入 Tar 方法

*

* @param tarPath

*            写到什么地方(如果空则创建)

* @param line

*            读取TXT方法获得了数组

* @return 返回 true 或 false

*/

public static boolean writeTar(String tarPath, String[] line) {

boolean sign = false;

if (line != null) {

try {

FileWriter writer = new FileWriter(new File(tarPath));

BufferedWriter buffWriter = new BufferedWriter(writer);

for (int i = 0; i  line.length; i++) {

if (!line[i].equals(""))

buffWriter.write(line[i] + "\r\n");

}

buffWriter.flush();

buffWriter.close();

writer.close();

sign = true;

} catch (IOException e) {

e.printStackTrace();

}

}

return sign;

}

}

最后:

希望能帮到你,以后提JAVA的问题请到JAVA分类。

有什么问题 Hi 我,我的Hi 在线。

java如何打包

建议使用ANT打包工具,下载地址:

此工具用java编写,跨平台,能实现很多功能:编译、打包、运行、文件操作、数据库操作、自定义任务等。

主要使用方法:在工程目录下编写build.xml配置文件,然后运行ant即可:

#ant

#java -jar ant.jar

下面给你提供一个例子,是jakarta-oro-2.0.8的包的build.xml

?xml version="1.0"?

project default="jar"

!-- Allow properties following these statements to be overridden --

!-- Note that all of these don't have to exist. They've just been defined

incase they are used. --

property file="build.properties"/

!--

property file=".ant.properties"/

property file="${user.home}/.ant.properties"/

property file="default.properties"/

--

!-- prepare target. Creates build directories. --

target name="splash"

splash imageurl="./ant_logo_medium.gif"/

/target

target name="prepare" depends="splash" description="Creates build directories."

tstamp

format property="DATE" pattern="yyyy-MM-dd hh:mm:ss" /

/tstamp

mkdir dir="${build.dest}"/

mkdir dir="${build.dest}/META-INF"/

copy todir="${build.dest}/META-INF"

fileset dir="${top.dir}"

include name="LICENSE"/

/fileset

/copy

mkdir dir="${build.tests}"/

available file="${jakarta-site2.dir}/lib" type="dir"

property="AnakiaTask.present"/

/target

target name="prepare-error" depends="prepare"

description="Prints error message for prepare target."

unless="AnakiaTask.present"

echo

AnakiaTask is not present! Please check to make sure that

velocity.jar is in your classpath.

/echo

/target

!-- lib target. Compiles the library classes only --

target name="lib" depends="prepare"

description="Compiles the library classes only."

javac srcdir="${build.src}"

destdir="${build.dest}"

excludes="examples/**,tools/**"

debug="${debug}"

deprecation="${deprecation}"

optimize="${optimize}"/

/target

!-- examples target. Compiles the example classes. --

target name="examples" depends="prepare,lib"

description="Compiles the example classes."

javac srcdir="${build.src}"

destdir="${build.dest}"

includes="examples/**"

debug="${debug}"

deprecation="${deprecation}"

optimize="${optimize}"/

/target

!-- tools target. Compiles the tool classes. --

target name="tools" depends="prepare,lib"

description="Compiles the tool classes."

javac srcdir="${build.src}"

destdir="${build.dest}"

includes="tools/**"

debug="${debug}"

deprecation="${deprecation}"

optimize="${optimize}"/

/target

!-- tests target. Compiles and runs the unit tests. --

target name="tests" depends="prepare,lib"

description="Compiles and runs the unit tests."

javac srcdir="${build.src}/tests"

destdir="${build.tests}"

debug="${debug}"

deprecation="${deprecation}"

optimize="${optimize}"/

/target

!-- jar target. Compiles the source directory and creates a .jar file --

target name="jar" depends="lib" description="Compiles the source directory and creates a .jar file."

jar jarfile="${top.dir}/${final.name}.jar"

basedir="${build.dest}"

includes="org/**,META-INF/**"

excludes="**/package.html,**/overview.html"

manifest

section name="org/apache/oro"

attribute name="Specification-Title"

value="Jakarta ORO" /

attribute name="Specification-Version"

value="${version}" /

attribute name="Specification-Vendor"

value="Apache Software Foundation" /

attribute name="Implementation-Title"

value="org.apache.oro" /

attribute name="Implementation-Version"

value="${version} ${DATE}" /

attribute name="Implementation-Vendor"

value="Apache Software Foundation" /

/section

/manifest

/jar

/target

!-- javadocs target. Creates the API documentation --

target name="javadocs" depends="prepare"

description="Creates the API documentation."

mkdir dir="${javadoc.destdir}"/

javadoc packagenames="org.apache.oro.io,org.apache.oro.text,org.apache.oro.text.regex,org.apache.oro.text.awk,org.apache.oro.text.perl,org.apache.oro.util"

sourcepath="${build.src}"

destdir="${javadoc.destdir}"

overview="${build.src}/org/apache/oro/overview.html"

author="true"

version="true"

windowtitle="${name} ${version} API"

doctitle="${name} ${version} API"

header="a href='' target=_topimg src='{@docroot}/../images/logoSmall.gif' alt='Jakarta ORO' width=48 height=47 align=center border=0 hspace=1 vspace=1/a"

bottom="Copyright © ${year} Apache Software Foundation. All Rights Reserved."

/javadoc

replace file="${javadoc.destdir}/overview-frame.html"

token="{@docroot}" value="."/

replace dir="${javadoc.destdir}" includes="**/*.html"

token="@version@" value="${version}"/

/target

!-- docs target. Creates project web pages and documentation. --

target name="docs" depends="prepare-error,lib,examples"

description="Creates the project web pages and documentation."

if="AnakiaTask.present"

taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask"

classpath

fileset dir="${jakarta-site2.dir}/lib"

include name="*.jar"/

/fileset

/classpath

/taskdef

anakia basedir="${docs.src}" destdir="${docs.dest}/"

extension=".html" style="./site.vsl"

projectFile="stylesheets/project.xml"

excludes="**/stylesheets/** manual/** empty.xml"

includes="**/*.xml"

lastModifiedCheck="true"

templatePath="${jakarta-site2.dir}/xdocs/stylesheets"

/anakia

copy todir="${docs.dest}/images" filtering="no"

fileset dir="${docs.src}/images"

include name="**/*.gif"/

include name="**/*.jpeg"/

include name="**/*.jpg"/

/fileset

/copy

mkdir dir="${docs.dest}/classes"/

mkdir dir="${docs.dest}/classes/examples"/

copy todir="${docs.dest}/classes/examples" filtering="no"

fileset dir="${build.dest}/examples"

include name="MatcherDemoApplet.class"/

/fileset

/copy

mkdir dir="${docs.dest}/classes/org"/

copy todir="${docs.dest}/classes/org" filtering="no"

fileset dir="${build.dest}/org"

include name="**/*.class"/

/fileset

/copy

/target

!-- package target --

target name="package" depends="jar,javadocs,docs"

description="Creates a distribution directory tree."

mkdir dir="${final.dir}"/

copy todir="${final.dir}/src"

fileset dir="${code.src}"/

/copy

!-- BEGIN_REMOVE_THIS --

!-- Remove this when there's a first draft of the manual. --

copy todir="${final.dir}/docs"

fileset dir="${docs.dest}"

exclude name="manual/**"/

/fileset

/copy

!-- END_REMOVE_THIS --

copy file="${top.dir}/build.xml" tofile="${final.dir}/build.xml"/

copy file="${top.dir}/build.properties"

tofile="${final.dir}/build.properties"/

copy file="${top.dir}/LICENSE" tofile="${final.dir}/LICENSE"/

copy file="${top.dir}/ISSUES" tofile="${final.dir}/ISSUES"/

copy file="${top.dir}/CHANGES" tofile="${final.dir}/CHANGES"/

copy file="${top.dir}/COMPILE" tofile="${final.dir}/COMPILE"/

copy file="${top.dir}/CONTRIBUTORS"

tofile="${final.dir}/CONTRIBUTORS"/

copy file="${top.dir}/README" tofile="${final.dir}/README"/

copy file="${top.dir}/STYLE" tofile="${final.dir}/STYLE"/

copy file="${top.dir}/TODO" tofile="${final.dir}/TODO"/

copy file="${top.dir}/${final.name}.jar" tofile="${final.dir}/${final.name}.jar"/

/target

!-- package-zip target. Packages the distribution with ZIP --

target name="package-zip" depends="package"

description="Packages the distribution as a zip file."

zip zipfile="${top.dir}/${final.name}.zip" basedir="${top.dir}/"

includes="**/${final.name}/**" excludes="**/.cvsignore"/

/target

!-- Packages the distribution with TAR-GZIP --

target name="package-tgz" depends="package"

description="Packages the distribution as a gzipped tar file."

tar tarfile="${top.dir}/${final.name}.tar"

basedir="${top.dir}" excludes="**/**"

tarfileset dir="${final.dir}/.."

include name="${final.name}/**"/

exclude name="**/.cvsignore"/

/tarfileset

/tar

gzip zipfile="${top.dir}/${project}-${version}.tar.gz" src="${top.dir}/${project}-${version}.tar"/

/target

!-- Packages the distribution with ZIP and TAG-GZIP --

target name="package-all" depends="package-zip, package-tgz"

/target

!-- Makes an attempt to clean up a little. --

target name="clean"

description="Removes generated artifacts from source tree."

delete dir="${build.dest}"/

delete dir="${javadoc.destdir}"/

delete dir="${final.dir}"/

delete file="${top.dir}/${final.name}.jar"/

delete file="${top.dir}/${final.name}.tar"/

delete file="${top.dir}/${final.name}.tar.gz"/

delete file="${top.dir}/${final.name}.zip"/

delete

fileset dir="${top.dir}" includes="velocity.log*"/

/delete

/target

/project

build.xml文件的编写可参见ant发行版中的使用文档

你也可以自己编写脚本打包,使用jdk发行版中的jar命令,例如:

#jar cmf myManifestFile myFile.jar *.class

注意还需要自己编写MANIFEST.MF文件配置包属性。具体可以参见javadoc

当然还可以使用集成开发环境提供的打包工具,如JBuilder提供打包工具,但这样程序的移植性不强,建议不要使用,就使用ant比较好。

关于java打包tar和java打包成war包的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。