高分求助如何用命令行方式往war包里更新文件

时间:2022-09-09 23:01:14
我用这个命令jar uvf myAPP.war myFile.class ,但是怎么把myFile.class放到war包的某个目录下呢? 比如myDir/myPackage/classes?

请高手指点,谢谢!

11 个解决方案

#1


这个就要你本来的目录结构就是
myDir/myPackage/classes/myFile.class

然后使用命令
jar uvf myAPP.war *

#2


jf,你答贴的速度,真叫个快!佩服哟

#3


不支持单个文件的更新么?

#4


原来你是这个意思啊
那么命令是
jar uvf myAPP.war myDir/myPackage/classes/myDir/myPackage/classes/XXX.class

这样执行的结果是XXX.class放在了war里面的myDir/myPackage/classes目录里面

#5


我觉得这样基本能解决我的问题,但是我觉得还是不够完美。

因为有时候我没有那个目录,我就上传了这个文件,就希望直接更改这个文件,非让我再建一个目录很是不爽,当然,我可以把我的war包先解开,也会达成这个目的,但是,有没有更好的办法,比如提供一个MANIFEST.MF,我在一些资料上看到好像是这么说,但是我具体也不知道怎么做,我想如果一个描述文件,比如MANIFEST.MF能提供所有文件的结构的话也是可以的,但是我打开这个文件发现里面就只有一行记录,根本没有具体的目录和文件结构。说了这么多不知道你明白我的意思没有?

在jdk1.4里有这样一个实例:
       jar cvf classes.jar Foo.class Bar.class
示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有
           文件存档到一个名为 'classes.jar' 的存档文件中:
       jar cvfm classes.jar mymanifest -C foo/ .

我们能不能按照这样的思路做呢?

如果可以的话,那么问题是mymanifest这个文件怎么生成呢,我在jbuilderx里也生成了,但是是没有内容。

请指点。

再次感谢你回答我的问题。

#6


manifest这个文件我也灭怎么用过
只知道是用来指定main类的。。
呵呵

#7


如果没有指定manifest文件的话,系统会自己生成manifest文件,如果你想自己写一个就写一个
这个文件一般指定,评论,主类,vendor,版本,作者等等信息!

#8


我的意思是,jar命令能不能根据提供的manifest文件,自动识别我要更新的某个文件是什么目录下的?

#9


我想了一下,应该是不行的

你想啊,就算在manifest指定了文件目录结构,那么他通过文件名是能找对应的文件
但是我们如果不想覆盖原来的同名文件而是就是放一个同名的文件在另外一个目录里面
那么这不就有矛盾了吗?

所以我觉得刚才我写的那个命令就是最终解决方案

#10


我用jbuilder,很方便,up

#11



谢谢 jFresH_MaN 的讲解!

#1


这个就要你本来的目录结构就是
myDir/myPackage/classes/myFile.class

然后使用命令
jar uvf myAPP.war *

#2


jf,你答贴的速度,真叫个快!佩服哟

#3


不支持单个文件的更新么?

#4


原来你是这个意思啊
那么命令是
jar uvf myAPP.war myDir/myPackage/classes/myDir/myPackage/classes/XXX.class

这样执行的结果是XXX.class放在了war里面的myDir/myPackage/classes目录里面

#5


我觉得这样基本能解决我的问题,但是我觉得还是不够完美。

因为有时候我没有那个目录,我就上传了这个文件,就希望直接更改这个文件,非让我再建一个目录很是不爽,当然,我可以把我的war包先解开,也会达成这个目的,但是,有没有更好的办法,比如提供一个MANIFEST.MF,我在一些资料上看到好像是这么说,但是我具体也不知道怎么做,我想如果一个描述文件,比如MANIFEST.MF能提供所有文件的结构的话也是可以的,但是我打开这个文件发现里面就只有一行记录,根本没有具体的目录和文件结构。说了这么多不知道你明白我的意思没有?

在jdk1.4里有这样一个实例:
       jar cvf classes.jar Foo.class Bar.class
示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有
           文件存档到一个名为 'classes.jar' 的存档文件中:
       jar cvfm classes.jar mymanifest -C foo/ .

我们能不能按照这样的思路做呢?

如果可以的话,那么问题是mymanifest这个文件怎么生成呢,我在jbuilderx里也生成了,但是是没有内容。

请指点。

再次感谢你回答我的问题。

#6


manifest这个文件我也灭怎么用过
只知道是用来指定main类的。。
呵呵

#7


如果没有指定manifest文件的话,系统会自己生成manifest文件,如果你想自己写一个就写一个
这个文件一般指定,评论,主类,vendor,版本,作者等等信息!

#8


我的意思是,jar命令能不能根据提供的manifest文件,自动识别我要更新的某个文件是什么目录下的?

#9


我想了一下,应该是不行的

你想啊,就算在manifest指定了文件目录结构,那么他通过文件名是能找对应的文件
但是我们如果不想覆盖原来的同名文件而是就是放一个同名的文件在另外一个目录里面
那么这不就有矛盾了吗?

所以我觉得刚才我写的那个命令就是最终解决方案

#10


我用jbuilder,很方便,up

#11



谢谢 jFresH_MaN 的讲解!