tomcat发布项目问题汇总

最近维护一个比较老的项目,维护好了以后需要发布在tomcat7上。部署过程出现了好多的问题。下面总结一下与大家分享。

第一个问题:

上午部署项目出现问题,有一个页面无法打开:

报错如下:

严重:Servlet.service() for servlet jsp threw exception

javax.el.ELException:The identifier [new] is not a valid Java identifier as required by section 1.19of the EL specification (Identifier ::= Java language identifier). This checkcan
be disabled by setting the system property org.apache.el.parser.SKIP_IDENTIFIER_CHECKto true.

atorg.apache.el.parser.AstDotSuffix.setImage(AstDotSuffix.java:45)

atorg.apache.el.parser.ELParser.DotSuffix(ELParser.java:1069)

atorg.apache.el.parser.ELParser.ValueSuffix(ELParser.java:1035)

atorg.apache.el.parser.ELParser.Value(ELParser.java:980)

atorg.apache.el.parser.ELParser.Unary(ELParser.java:950)

atorg.apache.el.parser.ELParser.Unary(ELParser.java:894)

atorg.apache.el.parser.ELParser.Multiplication(ELParser.java:714)

atorg.apache.el.parser.ELParser.Math(ELParser.java:634)

atorg.apache.el.parser.ELParser.Compare(ELParser.java:446)

atorg.apache.el.parser.ELParser.Equality(ELParser.java:340)

atorg.apache.el.parser.ELParser.And(ELParser.java:284)

atorg.apache.el.parser.ELParser.Or(ELParser.java:228)

atorg.apache.el.parser.ELParser.Choice(ELParser.java:185)

atorg.apache.el.parser.ELParser.Expression(ELParser.java:177)

atorg.apache.el.parser.ELParser.DynamicExpression(ELParser.java:149)

atorg.apache.el.parser.ELParser.CompositeExpression(ELParser.java:46)

atorg.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:114)

atorg.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:171)

atorg.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:216)

atorg.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:66)

atorg.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:966)

atorg.apache.jsp.WEB_002dINF.jsp.collectionForm_jsp._jspx_meth_c_005fif_005f0(collectionForm_jsp.java:595)

atorg.apache.jsp.WEB_002dINF.jsp.collectionForm_jsp._jspService(collectionForm_jsp.java:351)

atorg.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

atjavax.servlet.http.HttpServlet.service(HttpServlet.java:727)

atorg.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)

atorg.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)

atorg.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)

atjavax.servlet.http.HttpServlet.service(HttpServlet.java:727)

atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

atorg.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)

atorg.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)

atorg.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)

atorg.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)

at

。。。。。。

代码是这样写的:

<c:iftest="${!command.new}">

<INPUTtype="submit" name="delete" value="Delete"style="margin-right: 5px; font-size: 8pt; font-family: Arial; width:70px"

onclick="returnconfirm(‘Are you sure you want to delete this repository?‘)" />

</c:if>

最后的解决方法时在tomcat的catalina.properties配置文件的最后加上:

org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true

分析原因:

tomcat7可能带来的问题

1、struts标签校验更加严格,如果struts标签中存在嵌套双引号会报错。

2、对EL表达式校验更加严格,升级tomcat版本后,以前的代码可能不能用了。

3、安全级别默认较高,如applet不能够访问request。

具体现象可能是:

1、报错Attribute
value is quoted with " which must be escaped when used withinthe value

2、containsinvalid
expression(s): javax.el.ELException: [do] is not a valid Javaidentifier

atorg.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)

3、没现象就是request=null

解决方法:

$CATALINA_BASE/conf/catalina.properties增加

org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false

org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true

$CATALINA_BASE/conf/Catalina/localhost/webapp.xml增加

<Context path=""docBase="/vmind/vmind"  useHttpOnly="false" debug="0"
reloadable="false">

或修改server.xml的context选项,增加useHttpOnly="false" 
即可。

第二个问题:

tomcat文件夹有空格,用类加载器获取路径时会将空格转换为20%

今天遇到一个问题,当tomcat文件夹有空格,用类加载器获取路径时会将空格转换为20%..

解决办法将路径先用URL编码;

eg:

String path = CustFactory.class.getClassLoader().getResource("config.properties").getPath();改为

String path =CustFactory.class.getClassLoader().getResource("config.properties").toURI().getPath();

第三个问题

        自己拷到服务器上的tomcat总是无法启动,最终找到原因是配置了CATALINA_HOME环境变量,导致每次启动的tomcat都是环境变量配置的路径下的tomcat

设置CATALINA_HOME环境变量

设置CATALINA_HOME环境变量

1、CATALINA_HOME是TOMCAT安装路径的别名,目的是为了方便使用TOMCAT

2、计算机>属性>环境变量, 新建环境变量。变量名为CATALINA_HOME,变量值tomcat的解压目录,我电脑上的为:“F:\apache-tomcat-7.0.12”,注意后面不用多加“\”或者“;”

3、在环境变量Path中,新增加“
TALINA_HOME%\bin\"

4、启动tomcat :进入命令行cmd,输入startup.bat

5、打开浏览器,输入:http://localhost:8080,看tomcat是否正常启动

6、关闭tomcat:进入命令行cmd,输入shutdown.bat

时间: 2024-10-24 01:51:34

tomcat发布项目问题汇总的相关文章

Tomcat发布项目但是webapps下没反应

1.问题 项目发布了但是webapps下面什么都没有 2.原因 大多是Tomcat的路径设置不对 3.解决 第一步:关掉服务器 第二步:把项目从tomcat下面delete,然后再 publish 第三步:参照下图看Server Locations和Server Options对不对.即可 Tomcat发布项目但是webapps下没反应,布布扣,bubuko.com

[实战篇]Tomcat发布项目-虚拟目录

在二阶段学习的过程中,我一直使用MyEclipse的方式把工作空间的项目发布到webapps目录下,这种方式自我感觉在实际开发中应用能在70%左右,但是如何涉及到一些上传操作等操作, 从新发布项目之后有时候就会发现上传的图片消失了,这个时候会特别的心塞,那么我们如何解决这种情况了,下面胖先生就带领各位童靴解决突发情况! 准备情况:这里需要清空,保持简洁! 下面我们就需要找到你要使用的Tomcat的安装或者说绿色版解压的目录,找到conf文件夹,再找到server.xml文件,需要添加如下代码,

Tomcat 发布项目 conf/Catalina/localhost 配置 及数据源配置

本文介绍通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目.因为这样对 tomcat 的入侵性最小,只需要新增一个配置文件,不需要修改原有配置:而且支持动态解析,修改完代码直接生效(修改配置除外). 在tomcat服务器的conf\Catalina\localhost目录下创建一个xml文件,内容如下: 或者案例: get.xml: <Context path="/" docBase="/part2/upload/"

tomcat发布项目时,localhost可以访问,用ip地址不能访问,同时其他电脑也不能访问。

最近在开发项目中,遇到的一个问题是:在 tomcat中发布一个web项目,但是发布成功后,只能用http://localhost:8080/aml访问项目,不能用http://172.0.0.1:8080/aml访问项目,也不能用本地的IP地址访问,同时其他同事的电脑也不能访问. 起初以为是防火墙的问题,但是关闭防火墙后,依旧是不能访问.同时,关闭不允许远程访问也不可以.后来在查看资料的时候知道,tomcat绑定IP地址的问题,而win7默认使用的是ipv6协议,通过ping localhost

tomcat发布项目时,空文件夹未发布成功

问题背景: 项目发布到服务器时,缺少文件夹,到时向此文件夹写数据时发生错误. 后来经查,缺少这个文件夹,项目部署发布时,并不会把空文件夹发布上去 解决: 1.在空文件中加入,一个文件.就可以发布成功 2.或者新创建文件时,判断这个文件夹是否有,没有就新建

Tomcat发布项目,域名访问

域名访问项目 1,去掉访问路径的端口号: 找到 Tomcat 下的 conf 文件中的 server.xml,找到 8080 修改成 80, 2,项目绑定域名: <Host name="要绑定的域名" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNa

转载:Tomcat发布项目时,浏览器地址栏图标的问题

最近在做一个java网络应用程序,服务器是tomcat.在默认情况下,当用户访问该网络应用时,地址栏图标显示为 tomcat猫.我希望把它换成自己的图标,于是研究了一下.在研究过程中,我发现网上的资料大都语焉不详,于是把自己的研究结果分享出来.本文的测试环 境为: tomcat 6.0.20 IE6 SP3 Firefox 3.6.13 搜狗高速浏览器 2.2.0 360安全浏览器 3.6.1 傲游浏览器 2.5.17 首先说明一下,我这个程序的用户一般使用的是基于IE6内核的外壳浏览器,比如搜

tomcat发布项目,运行不了

工作中经常出现项目本来运行得好好的,从SVN上面更新代码后就不行了 这个问题有时候是因为编译不成功,处理步骤如下: 1.clean整个项目,重新编译 2.如果还是不行,则把编译中认为是error的设置为warning,例如myeclipse: 点击菜单栏Window----Preferences,在弹出的对话框中选择Java---Compiler----Building,然后展开Build path problems,将展开后的选项都选择为Warning或Ignore的,然后点击确定即可

关于Tomcat发布项目端口被占用解决办法

端口被占用后在eclipse中的提示 步骤一:cmd输入:输入 netstat -ano  步骤二:netstat -aon|findstr "端口号" 步骤三:tasklist|findstr "查询出的 listening" 步骤四:taskkill /f /t /im 查询出占用程序名称,当出现如下.说明占用程序以及被kill了