【问题标题】:Get an error when compiling Simple custom tag class编译简单自定义标签类时出错
【发布时间】:2019-04-13 20:29:43
【问题描述】:

我创建了简单的自定义标签库。但是当我运行 jsp 时,我在下面的代码中遇到了错误。谁能解释一下这个错误。

Compiling 1 source file to C:\Users\Senani\Documents\NetBeansProjects\JSTL\build\generated\classes
C:\Users\Senani\Documents\NetBeansProjects\JSTL\build\generated\src\org\apache\jsp\index_jsp.java:85: error: cannot find symbol
    Test _jspx_th_t_test_0 = (_jspx_resourceInjector != null) ? _jspx_resourceInjector.createTagHandlerInstance(Test.class) : new Test();
    ^
  symbol:   class Test
  location: class index_jsp
C:\Users\Senani\Documents\NetBeansProjects\JSTL\build\generated\src\org\apache\jsp\index_jsp.java:85: error: cannot find symbol
    Test _jspx_th_t_test_0 = (_jspx_resourceInjector != null) ? _jspx_resourceInjector.createTagHandlerInstance(Test.class) : new Test();
                                                                                                                ^
  symbol:   class Test
  location: class index_jsp
C:\Users\Senani\Documents\NetBeansProjects\JSTL\build\generated\src\org\apache\jsp\index_jsp.java:85: error: cannot find symbol
    Test _jspx_th_t_test_0 = (_jspx_resourceInjector != null) ? _jspx_resourceInjector.createTagHandlerInstance(Test.class) : new Test();
                                                                                                                                  ^
  symbol:   class Test
  location: class index_jsp
3 errors
C:\Users\Senani\Documents\NetBeansProjects\JSTL\nbproject\build-impl.xml:953: The following error occurred while executing this line:
C:\Users\Senani\Documents\NetBeansProjects\JSTL\nbproject\build-impl.xml:296: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 2 seconds)

XML 代码

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
  <tlib-version>1.0</tlib-version>
  <short-name>lb1</short-name>
  <uri>/WEB-INF/tlds/lb1</uri>
  <tag>
      <name>test</name>
      <body-content>empty</body-content>
      <tag-class>Test</tag-class>
  </tag>
</taglib>

JSP 代码

<%@page contentType="text/html" pageEncoding="UTF-8"%>
 <%@taglib prefix="t"  uri="/WEB-INF/tlds/lb1.tld"%>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <t:test/>
    </body>
</html>

我的 Java 类

 public class Test extends SimpleTagSupport{

        @Override
        public void doTag() throws JspException, IOException {
            System.out.println("tag work");
        }

    }

更新问题


我将java类移动到文件夹。但是编译的时候还是报错。

org.apache.jasper.JasperException:
file:C:/Users/Senani/Documents/NetBeansProjects/JSTL/build/web/index.jsp(17,8)
PWC6032: Unable to load tag handler class "Test" for tag "t:test"
org.apache.jasper.JasperException:  PWC6032: Unable to load tag
handler class "Test" for tag "t:test"
C:/Users/Senani/Documents/NetBeansProjects/JSTL/build/web/index.jsp(17,8)
C:\Users\Senani\Documents\NetBeansProjects\JSTL\nbproject\build-impl.xml:936:
Java returned: 1 BUILD FAILED (total time: 1 second)

【问题讨论】:

  • 永远不要使用默认包。
  • 我试过了。但仍然出现错误。更新问题。@JBNizet
  • 你的类需要有一个包声明,并且你需要在XML文件中指定完整的名称:folder.Test
  • 是的....,它有效.. 谢谢先生,.@JBNizet
  • @JBNizet 请添加您的评论作为答案。比一堆cmets更好地阅读答案。

标签: java jstl custom-tags


【解决方案1】:

你得到这个错误是因为你把你的类放在了默认包中。

永远不要那样做。使用适当的包,并确保在 XML 文件中指定类的完全限定名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多