jsp“无法编译”和“无法解析为类型”

时间:2013-04-13 07:11:31

标签: java sql jsp tomcat

我有一个从我的classes目录中的package文件夹导入的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.

我的Connector类位于包cs5530下,因此不是问题。连接器类是我测试过的简单数据库连接器类,它可以工作。

6 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

请检查Connector.class是否真正导入。看起来你没有导入它。

答案 2 :(得分:0)

尝试

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

<%@页面import =“ packageWhatever.packageWhatever.ClassName”%>

问题的简化示例:

JSP文件:

TOMCAT_PRJ_DIR \ src \ main \ webapp \ index.jsp

错误:

Select-AzureSubscription

正确:

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

文件已导入:

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

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

使用的堆栈:Java + Tomcat + Maven