Windows下war包部署到Linux下Tomcat出现的问题

最近,将Windows下开发的war包部署到Linux下的Tomcat时报了一个错误:tomcat error in opening zip file。按理说,如果正常,当把war包复制到webapps目录下时,会自动解压缩到与包名同名的文件夹下,但是事实并没有解压缩。所以到logs文件夹下看,报了上面的错误。

百度一下,可能是java版本与Tomcat版本和Linux下的不一致,一看,果然不一致,但其实版本都很接近,而且,询问之前的开发人员,他们的war包是可以自动解压缩的,也就是说不是版本的问题。还有就是通过ftp上传文件时没有使用二进制的传送方式,这个也不是原因,因为我用的就是binary模式。那到底是什么原因?然后我又仔细看了一下报错的信息,发现有一个是unreadable!为什么会是没有办法读呢?我潜意识相当可能是文件的权限问题。

果断ls -lt,看一下所有文件的权限,

第一列:drwxr-xr-x代表文件的类型及权限

以d开头的为文件夹,以-开头的为文件,

以l开头的为连接文件

再细分,d后面其实是3个组合,每一个组合有rwx构成,分别表示文件拥有者的权限,组的权限和其他用户的权限

第2列:文件的链接数.

第3、4列:分别代表拥有文件的用户和组

第5列:文件的大小。

第6列:文件最后的修改时间。

第7列:文件名

原先ICardSys.war是-rw-r-----,也就是除了root用户和system组之外,其他用户都无法读。所以,我想着应该给其他用户加一个读的权限,这样也行可以解决unreadable的问题。文件权限修改,需要用到chmod,r代表4,w代表2,x代表1,比如rwx就用7来表示,所以我们chmod 644 ICardSys.war一下试一试。此时,发现可以自动解压war包了,而且也多了新生成的文件夹。

到此该问题解决,但其实不难发现,同一种错误的原因可能是多种多样的,网上的也无法能解决你的问题,还是要自己去思考。

参考文献:

http://www.cnblogs.com/wangyuyu/p/3900098.html

http://jingyan.baidu.com/article/8cdccae963e442315413cd01.html

时间: 2024-10-24 11:29:34

Windows下war包部署到Linux下Tomcat出现的问题的相关文章

java web项目war包部署,使用tomcat对指定接口设置身份认证

先简单说一下需求: 将一个基于springboot2.0开发的java web项目打成war包,通过tomcat部署到一台linux服务器上,项目相关的一些图片等资源也按照一定规则放置在服务器构建好的目录下.现在需要让用户通过http网页链接的方式(在浏览器端)访问图片,为了访问安全,需要在中间加一层用户认证.认证过程希望尽量简单些,所以就尝试用tomcat自带的身份认证来做. 话不多说,直接上实现流程: 首先,由于要访问本地的静态资源,所以在springboot启动类中加了一项静态资源的映射,

【Spring Boot项目】Win7+JDK8+Tomcat8环境下的War包部署

一.pom.xml及启动类修改 pom.xml Step1:指定打包类型 <!-- 打包类型 jar 或 war --> <packaging>war</packaging> Step2:移除嵌入式tomcat插件 <!-- 支持web的模块 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-

将javaweb项目部署到linux下的详细分析

以下是对将javaweb项目部署到linux下的方法进行了详细的分析介绍,需要的朋友可以过来参考下一般都在windows下开发的,现在部署到linux下:1,将项目达成war包(用eclipse,项目右键–>Export–>选择war file)2,将tomcat(用winSCP当然你也可以用secureCRT,用securCRT需要建立sftp(即上传文件的目录),用put tomcat命令)考到ilunx对应的目录下3,然后将项目的war包放到tomcat的webapps目录下4,启动to

将Windows下的文件同步到Linux下

需求:把Windows下的某些文件自动传送到Linux指定目录下 实现: 1. Windows下安装 WinSCP工具,并把Liunx服务器信息保存 2. 编写脚本,实现双击工具就把Windows下的文件上传到Linux下, ========================== copyFile.txt =====================================START=========== option echo offoption batch onoption confir

eclipse项目转移至IDEA与IDEA tomcat报错(idea自带tomcat版本太高)与war包部署到win服务器与idea提交git的总结

eclipse导出项目到idea时,不要导出target: idea打开eclipse项目后,出现junit找不到的问题,原因是jar包缺失,而maven配置的低版本的junit也显示找不到,解决办法: <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifac

将war包部署到服务器的详细步骤

第一步: 先将项目打包成war文件,也就是将在项目上单击鼠标右键,选择Export: 选择WAR file,点击下一步: 会出现如下所示,选择你要保存的位置,点击完成: 在你所选择的地方会有个如下所示的war文件: 以上步骤只是完成了将项目打包成war文件的步骤,现在来说将war包部署到服务器的步骤: 第二步: 先将war包用类似于ftp的工具(我自己用的是ftp,这种工具很多的)上传到固定位置 第三步: 一般是先停止tomcat,Linux命令:shutdow.sh,将war放到tomcat的

osgi应用使用桥接的方式打成war包部署在websphere上时遇到的与cxf相关的问题

原来我们的程序都是基于Equinox架构的,但是后面因为要实现打成war包在中间件中部署的需求,使用了eclipse官方提供的桥接方式实现. 桥接的部分后面有时间了我专门写一个文章来说,不明白的暂时请参考eclipse官方文档.这里主要说一下已经桥接成功,但是在使用CXF时遇到问题的情况. 本来在其他中间件里跑得好好的程序,一放到websphere_v8里,就各种报错,都是与axis2有关的,但是我们的项目并没有使用axis2,而是使用cxf. 报错类似如下(我有3个环境,每个报的错都不同,不过

struts2使用Convention Plugin在weblogic上以war包部署时,找不到Action的解决办法

环境: struts 2.3.16.3 + Convention Plugin 2.3.16.3 实现零配置 现象:以文件夹方式部署在weblogic(10.3.3)上时一切正常,换成war包部署,运行时提示找不到Action 解决办法: 1. 检查生成的war包中\WEB-INF\classes\下有无META-INF目录,如果没有,在eclipse里resource\META-INF下随便放一个文件,比如test.xml,这样maven打包生成war包时,才会在classes下创建META-

Web项目打成war包部署到tomcat时报MySQL Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)错误解决方案

Web项目使用使用root账号root密码进行部署,通过Eclipse加载到Tomcat服务器可以发布成功,打成war包放到tomcat的webapps目录无法发布成功,报错: jdbc.properties涉及Mysql配置: 错误很明显,与MySQL密码有关,但是两种方式部署项目使用的jdbc.properties配置文件是一样的.所以肯定不是密码不对引起的,只好找度娘,O(∩_∩)O哈哈~. 网上大部分帖通过运行mysql -u root -p命令登录时也会报这个错误,所以,我就尝试这种方