jsp jar加载失败

标签 jsp tomcat servlets jsp-tags

/var/lib/tomcat6/webapps/ROOT 我有以下结构 =>

META-INF  teiExample.jsp  WEB-INF

./META-INF:
context.xml

./WEB-INF:
exampleTags.tld  lib  web.xml

./WEB-INF/lib:
example.jar

example.jar 的内容 =>

META-INF/
META-INF/MANIFEST.MF
classes/utilities/arrayExtraInfo.class
classes/utilities/createArrayTag.class
exampleTags.tld

teiExample.jsp =>

<%@ taglib prefix="example" uri="exampleURI" %>
<html>

<head>
    <title>Welcome and time example</title>
</head>

<body>

<example:createArray name="theArray" />
We are now using a JAR file<BR />
The array has <%= theArray.length %> items.<BR />

</body>
</html>

exampleTags.tld =>

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>ExampleTags</short-name>
    <uri>exampleURI</uri>
    <description>A set of example tag handlers.</description>

    <tag>
        <name>createArray</name>
        <tag-class>utilities.createArrayTag</tag-class>
        <tei-class>utilities.arrayExtraInfo</tei-class>
        <attribute>
            <name>name</name>
        </attribute>
    </tag>
</taglib>

web.xml =>

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
    <taglib>
        <taglib-uri>exampleTags</taglib-uri>
        <taglib-location>/WEB-INF/exampleTags.tld</taglib-location>
    </taglib>
</web-app>

但我得到的只是=>

    HTTP Status 500 - 

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 
org.apache.jasper.JasperException: Failed to load or instantiate TagExtraInfo class: utilities.arrayExtraInfo
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:281)
    org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:419)
    org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:250)
    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:163)
    org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:382)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:445)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1392)
    org.apache.jasper.compiler.Parser.parse(Parser.java:130)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:170)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause 
java.lang.ClassNotFoundException: utilities.arrayExtraInfo
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
    org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:416)
    org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:250)
    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:163)
    org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:382)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:445)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1392)
    org.apache.jasper.compiler.Parser.parse(Parser.java:130)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:170)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.24 logs.
Apache Tomcat/6.0.24

为什么要这样?而且,我是否需要 web.xml

最佳答案

org.apache.jasper.JasperException: Failed to load or instantiate TagExtraInfo class: utilities.arrayExtraInfo

这只是意味着在幕后

TagExtraInfo tag = (TagExtraInfo) Class.forName("utilities.arrayExtraInfo").newInstance(); 

失败了。

即该类不存在于类路径中,或者没有默认的无参数构造函数。然而,真正的根本原因应该存在于堆栈跟踪中。在堆栈跟踪中进一步阅读,最底部的部分是问题的真正根本原因。

在您的情况下,类名不正确。在构建 JAR 时,类名应该是 classes.utilities.arrayExtraInfo 或者您应该删除 JAR 中的 /classes 文件夹。


与具体问题无关:请阅读 Java Naming Conventions .类名应该以大写开头。

关于jsp jar加载失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5857602/

相关文章:

java - 构建 Spring boot REST api 后端的 Web 前端?

javascript - 在不更改当前代码的情况下重新定位 Ext.MessageBox.alert()

java - jsp页面参数稳定性

eclipse - 如何在 maven 中创建 Servlet 3.0 Web 应用程序?

java - 如何从jsp页面中删除数据库记录?

tomcat - 部署 .war 重启竞争条件

java - JVM堆和Tomcat堆的关系

java - PHP JavaBridge 找不到 Java 类 Ubuntu 12.0.4 精确 PHP 5.3 Tomcat7

Eclipse,getRealPath() 的问题

java - Eclipse Luna - Jboss 7 Servlet 和 JPA 应用程序 servlet 无法启动