`
java2000.net
  • 浏览: 656936 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

子目录下的JSP不能访问类的问题分析

阅读更多
问题现象

主要的目录结构
index.jsp
test/test.jsp
WEB-INF/web.xml
WEB-INF/classes/MyClass.class

2个JSP里面全都调用了MyClass.class
程序内容完全相同,是复制过去改文件名的。

访问 http://127.0.0.1/index.jsp 没有任何问题
访问 http://127.0.0.1/test/test.jsp  报 ClassNotFoundException

服务器其是Tomcat 5.5

故障查找

经过程序测试,发现在/index.jsp里面包含了需要的CLASSAPTH目录,也就是 /WEB-INF/classes
而在 /test/test.jsp 里面,竟然不包含这个目录,当然也就无法访问MyClass类了

查看Tomcat/conf/server.xml, 发现如下配置

复制内容到剪贴板
代码:
 
<Host
    appBase="e:\abc"
    name="abc.123.net"
    <Context
        path="/"
        docBase="e:\abc"
    </Context>
</Host>



其中appBase 和 根的 docBase 指向了同一个目录。问题找到了

故障分析

appBase 的作用是,改目录将作为所有应用的根目录,其下面的任何一个子目录都将成为虚拟目录。
如果你把war文件放到这里,将会被自动解包,并配置成虚拟目录运行

因为每个虚拟目录都有自己独立的CLASSPATH,所以 
/test/test.jsp 被服务器解析为一个独立的虚拟目录,其CLASSPATH 应该在
/test/WEB-INF/classes 里面

故障排除

原因找到了,排除很简单
1 修改appBase到默认目录 appBase="webapps" 推荐这么做
2 修改appBase 到你指定的应用目录,比如 d:\project 目录,然后把你的项目放到这个目录的子目录里面,比如
d:/project/myRoot/index.jsp
d:/project/myRoot/test/test.jsp
d:/project/myRoot/WEB-INF/web.xml
d:/project/myRoot/WEB-INF/classes/MyClass.class

然后对docBase进行修正

这样就可以了! 
 

分享到:
评论

相关推荐

    JSP动态文件目录树

    这通常通过Java的`java.io.File`类完成,可以遍历指定路径下的所有文件和子目录,收集它们的信息,如路径、名称、是否为目录等。 2. **数据处理**:将获取到的文件信息转化为适合展示的数据结构,例如树形结构...

    jspSmartUpload 使用教程

    - 将解压后的目录中的子目录 `Web-inf` 改名为全部大写的 `WEB-INF`,这是因为 Tomcat 对文件名大小写敏感,并且要求 Web 应用程序的相关类所在的目录为 `WEB-INF` 且必须是大写。 - 重启 Tomcat 服务器后,即可在...

    jsp访问系统

    3. **Web应用目录结构**:JSP文件通常放置在Web应用的WEB-INF目录下的`jsp`或`views`子目录中,而相关的Java类文件则放在`WEB-INF/classes`或对应的Maven/Gradle的编译输出目录下。 4. **部署描述符**(web.xml):...

    JSP无限级分类目录树.zip

    这个方法会根据父节点ID查询子节点,然后对每个子节点再次调用自身,直到所有子节点都被访问。 4. **JSP显示**:在JSP页面上,可以使用JSTL(JavaServer Pages Standard Tag Library)或EL(Expression Language)...

    JSP无限级分类目录树的实现

    总结来说,实现JSP+MySQL的无限级分类目录树,主要涉及数据库设计、SQL查询、JSP编程以及递归处理。这样的系统能够灵活地管理和展示多级分类,适应各种需要层级结构的数据管理需求。在实际开发中,还可以结合前端...

    eclipse+springboot+maven访问jsp页面

    标题 "eclipse+springboot+maven访问jsp页面" 涉及到的是一个常见的Java Web开发场景,其中Eclipse作为集成开发环境(IDE),Spring Boot作为应用框架,Maven作为项目构建工具,而JSP(JavaServer Pages)则用于创建...

    在eclipse中部署项目web有时候访问jsp会抛出以下类似的异常信息

    描述中提到的“加入到webapps下的lib目录下”,这可能是提示将JSTL库移动到Eclipse的工作空间的`webapps`目录下的`lib`子目录。 2. **版本冲突**:标题中的"1.0和1.1.2"暗示可能有两个不同版本的JSTL库在项目中。...

    JSP目录直读程序_jsp_mlzd.rar

    开发者可以编写JSP页面,展示指定目录下的所有文件和子目录,这在构建文件管理系统或进行文件上传下载的Web应用时非常有用。 对于“计算机网络”部分,理解目录直读与网络的关系至关重要。在Web环境中,服务器和...

    JSP目录直读程序-jsp-mlzd.zip

    - 调用`File`对象的`list()`或`listFiles()`方法获取目录下的文件或子目录列表。 - 遍历得到的文件列表,根据需要读取文件内容或者进一步处理子目录。 - 将这些信息以HTML形式输出到页面上。 4. **安全问题** ...

    将jsp生成java然后反编译为class然后打入jar

    这条命令会创建一个名为myapp.jar的文件,其中包含了WEB-INF/classes目录下的所有文件和子目录。这样,我们就将反编译后的JSP对应的Servlet类打包到了.jar文件中。 总结来说,JSP到Servlet的过程包括JSP预编译、...

    [图片动画]JSP目录直读程序_jsp_mlzd.zip

    【JSP目录直读程序详解】 JSP(JavaServer Pages)是Java平台上的一个服务器端脚本语言,用于创建动态网页。在这个特定的压缩包文件【[图片动画]JSP目录直读程序_jsp_mlzd.zip】中,我们讨论的是一个JSP应用,它...

    JSP考试复习资料

    - `.class`文件(如Java Bean、Servlet)存放在`classes`目录下,按包名创建子目录。 - `.jar`文件(如JDBC驱动)放在`lib`目录下,共用的库可以放在Tomcat的`lib`目录。 5. **JSP与JavaBean交互**: JSP页面...

    jsp计数器之最

    - `counter.java`编译后的`.class`文件应放置于与`test.jsp`同级的目录或子目录中。 - `lyfcount.txt`文件位于`web`目录下,用于存储计数器的值。 #### 扩展知识点 - **文件读写处理**: - 在Java中,使用`...

    jspSmartUpload中类方法跟属性的详细介绍和使用方法

    - 解压后的目录名为`jspsmartupload`,需要将其中的`web-inf`子目录名称更改为全大写的`WEB-INF`。这是因为Tomcat服务器对文件名大小写敏感,要求相关类所在的目录名称必须为全大写。 2. **配置共享库**: - 进入...

    jsp自定义标签例子,能在Tomcat下直接运行

    - `webapp`目录:包含一个完整的Web应用程序结构,可能有`WEB-INF`子目录,里面可能有`web.xml`部署描述符和`lib`目录用于放置JAR文件。 - `README.txt`或其他文档:提供了运行示例的说明和指导。 要运行这个例子,...

    Tomcat下JSP、Servlet和JavaBean环境的配置

    在这个目录下,你需要创建WEB-INF子目录,以及WEB-INF下的web.xml文件。web.xml是Web应用的部署描述符,用于配置应用的各种参数。 然后,配置Servlet。在web.xml中,你需要定义Servlet,如下面的例子所示: ```xml...

    JSP实用组件 JSP实用组件

    使用命令行,进入`jspSmartUpload.zip`解压后的`classes`子目录,执行`jar cvf jspSmartUpload.jar com servletUpload.class servletUpload.java`命令来创建JAR包。 **jspSmartUpload组件中的常用类**: - **File类...

Global site tag (gtag.js) - Google Analytics