将官网上的sample.war 放在了webapps下 运行servlet没有问题 可是运行jsp时报错了
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:573)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:309)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.io.FileNotFoundException: /usr/share/tomcat5/work/Catalina/localhost/sample/org/apache/jsp/hello_jsp.java (No such file or directory)
java.io.FileOutputStream.open(Native Method)
java.io.FileOutputStream.(FileOutputStream.java:209)
java.io.FileOutputStream.(FileOutputStream.java:99)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:141)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:317)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:298)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:565)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:309)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.31 logs.
[quote]我将samle.war文件发在了tomcat5/webapps目录下,重启tomcat
后,发现并没有在webapps下看到sample这个文件夹,这个怎么回事,按理说应该自动解压,自动加载额,运行时居然可以用,但我没有看见文件,这到底是怎么回事。
关于第二点,如何查看读写及修改权限[/quote]
关于第一个,没有看到文件,却能长长访问。说明你的tomcat肯定配置自动部署war文件。没找到有可能是隐藏了,或者实际存放在其他地方造成的(你可看下你的tomcat配置,看是否读取的是你查询的目录)。同时你可以使用find查找下这个文件子(google下这个命令),看该文件是否存在。
第二个:
使用 ll 或者 ls -a 命令查看下。
你可以使用chown和chgrp命令改变文件的拥有者及拥有组
[quote]Linux chown命令更改文件拥有者
如何更改一个文件的拥有者呢?很简单。既然改变用户组是change group,那么改变拥有者就是change owner(改变拥有者),这就是chown这个命令的用途。要注意的是,用户必须是已经在系统中,也就是在/etc/passwd这个文件中有记录的用户名称才可以更改。
chown的用途很多,还可以直接修改用户组的名称。如果要将目录下的所有子目录或文件同时更改文件拥有者的话,直接加上-R的参数即可。下面我们来看看语法与范例。
[root@linux ~]#chown [-R] 账户名称:文件或目录
[root@linux ~]#chown [-R] 账户名称:用户组名称、文件或目录 参数:
-R :进行递归的持续更改,即将同子目录下的所有文件、目录都更新问这个用户组。通常用在更改某一目录的情况。
范例:
[root@linux ~]#chown bin install.log
[root@linux ~]#ls –l
-rw-r--r-- 1 bin users 24343 Jun 23 08:33 install.log
[root@linux ~]#chown root:root install.log
[root@linux ~]#ls -l
-rw-r--r-- 1 root root 24343 Jun 23 08:33 install.log[/quote]
[code="java"]
/usr/share/tomcat5/work/Catalina/localhost/sample/org/apache/jsp/hello_
[/code]
你看看这个目录下面的文件是否出现了问题。没有clean一下工程,重启tomcat。
这个错误肯呢过是字符集的问题,看一下hello.jsp的字符集是utf-8还是gbk的,linux下一般要用utf-8字符集。
如果hello.jsp不是utf-8的,改一下,UE方式修改如下:
[img]http://housen1987.iteye.com/upload/picture/pic/105460/f84c5ffd-bb96-360d-8f4b-e2f86ee36cea.png[/img]
[quote]java.io.FileNotFoundException: /usr/share/tomcat5/work/Catalina/localhost/sample/org/apache/jsp/hello_jsp.java (No such file or directory) [/quote]
应该是没有找到编译后的jsp文件。
1、确认下你的项目启动时生成编译文件了。也就是去这个路径下查看是否存在hello_jsp.java及hello_jsp.class文件。
2、如果没有,[color=red]请确认下你/usr/share/tomcat5/work/目录的写权限![/color]
一
这个问题一般都是编译时不完整,导致。
1、查看jsp目录的是否有读写的权限,请使用chown修改目录权限
2、查看是否JSP里面是否存在对文件的读写,是否使用了windows下面的文件分隔符
请从以下几个方面找一下问题:
1 test1.war放在webapps下未能解压,这个默认是解压的,当然也可以手工设置成不解压的,tomcat/conf/server.xml中,找到这么一段:
[quote]
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
[/quote]
将unpackWARs="true"改成false,就不会自动解压了。
当然,如果设置成true且没有自动解压的话,那就说明你的tomcat或sample.war包有问题了。
2 检查一下sample.war的结构,看是不是符合J2EE标准。
3 work\Catalina\localhost目录下要能够找到sample目录,如果找不到,说明你的war包或tomcat有问题,从前2步中找答案。
4 启动tomcat的web界面管理工具,看一下有没有名为sample的应用存在,如果存在,看一下其运行状态。
5 能运行servlet,但是jsp找不到,一般是不会出现这种情况的,我遇到过的最多的就是jsp的编码格式不正确,不是utf-8的,看一下jsp页面的编码,使用UE就能重新编辑了。
[img]http://housen1987.iteye.com/upload/picture/pic/105460/f84c5ffd-bb96-360d-8f4b-e2f86ee36cea.png[/img]
6 自己把war包解压,防在webapp下,一步一步地按正常路径走。
7 随时查看catalina日志,也许还有未发现的其他错误存在。
8 linux下使用ls -al命令就能查看目录或文件的读写权限了,使用chmod 777 目录或文件就能赋予改目录或文件所有的权限。