【问题标题】:jsp "unable to compile" and "cannot be resolved to a type"jsp“无法编译”和“无法解析为类型”
【发布时间】:2013-04-05 19:14:50
【问题描述】:

我有一个从类目录中的包文件夹导入的 jsp 文件。当我尝试使用它时,出现“无法编译”和“无法解析为类型”错误。这是我的代码。

<%@ page language="java" import="cs5530.*" %>
<html>
<head>
<script type="text/javascript">
function showInvalid()
{
    document.getElementById("invalid").style.display = 'block';
    document.getElementById("loginForm").reset();
}
</script>
</head>
<body>
<p>Welcome to FlixNet. Sign In</p>
<form name="loginForm" method="post" action="index.jsp">
    User Name: <input type="text" name="username"><br>
    Password: <input type="Password" name="password"><br>
    <input type="submit" value="Submit">
    <div id="invalid" style="display:none">
        <p>Invalid username or password</p>
    </div>
</form>
<%
Connector con = new Connector();
con.closeConnection();
%>
</body>
</html>

这是错误

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 23 in the jsp file: /index.jsp
Connector cannot be resolved to a type
20:     </div>
21: </form>
22: <%
23: Connector con = new Connector();
24: con.closeConnection();
25: %>
26: </body>


An error occurred at line: 23 in the jsp file: /index.jsp
Connector cannot be resolved to a type
20:     </div>
21: </form>
22: <%
23: Connector con = new Connector();
24: con.closeConnection();
25: %>
26: </body>


Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
    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)

这是我的文件结构

public_html
    index.jsp
    |WEB-INF
        |classes
             mysql.jar
            |cs5530
                Connector.java
                Connector.class
                other java and class files.

我的连接器类在包 cs5530 下,所以这不是问题。连接器类是我测试过的一个简单的数据库连接器类,它可以工作。

【问题讨论】:

  • 你是classes下的jar吗?应该是lib下的。
  • 更改你的包名一次。

标签: java sql jsp tomcat


【解决方案1】:

将 jar 复制到 WEB-INF/lib/ 目录中,然后重新启动您的 Web 容器

【讨论】:

    【解决方案2】:

    请检查Connector.class是否真的导入了。好像没有导入。

    【讨论】:

      【解决方案3】:

      试试

      <%@ page import="cs5530.*" %>
      

      【讨论】:

        【解决方案4】:

        这是因为我没有负责我的 Tomcat 服务器。显然,如果发生重大变化,则需要对其进行清洁。我的代码一尘不染。

        【讨论】:

        • 但是你的问题有黑点 ;)
        • 这可能是一个单独的线程,但我不明白“Tomcat 服务器”与编译错误有什么关系。有人可以解释一下吗?我看到了同样的错误。我认为 Eclipse IDE 编译器将与服务器分开。在我放入已编译的 jar 文件之前,服务器甚至不会看到代码。 ???
        【解决方案5】:

        这是因为描述您尝试导入的包的 xxx.jar 文件必须直接位于 lib 文件夹中。例如:WebContent/WEB-INF/lib/xxx.jar。如果它只能在 /lib 中找到包文件夹,那么即使您的 .jar 在此包文件夹中,仍然足以创建只能解析为“包”而无法解析为“类型”的错误。

        【讨论】:

          【解决方案6】:

          您在 .jsp 文件的顶部缺少导入

          问题的简化示例:

          JSP 文件:

          TOMCAT_PRJ_DIR\src\main\webapp\index.jsp

          错误:

          <html><body><h1> 
              <%= Main.TEST_FUNCTION() %>
          </h1></body></html>
          

          正确:

          <%@ page import="launch.Main" %>
          <html><body><h1> 
              <%= Main.TEST_FUNCTION() %>
          </h1></body></html>
          

          正在导入文件:

          TOMCAT_PRJ_DIR\src\main\java\launch\Main.java

          package launch;
          .... imports here ....
          
          public class Main {
          
              public static final String
              TEST_FUNCTION(){
                  return( "[TEST_FUNCTION]" );
              };
          
              ...other code...   
          };
          

          使用的堆栈:Java+Tomcat+Maven

          【讨论】:

            猜你喜欢
            • 2012-09-12
            • 1970-01-01
            • 2016-08-13
            • 1970-01-01
            • 1970-01-01
            • 2014-10-01
            • 2013-07-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多