JSP/Tomcat开发:intellij idea是否自动将包移动到web inf文件夹?
我遇到以下错误问题:JSP/Tomcat开发:intellij idea是否自动将包移动到web inf文件夹?,jsp,tomcat,intellij-idea,Jsp,Tomcat,Intellij Idea,我遇到以下错误问题: HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this reque
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: Unable to compile class for JSP:
An error occurred at line: 9 in the generated java file
Only a type can be imported. com.test.util.ConnectionManager resolves to a package
An error occurred at line: 31 in the jsp file: /test.jsp
EmployeeDAO cannot be resolved to a type
28: <td>Job Title</td>
29: <td>Hire Date</td>
30: </tr>
31: <% EmployeeDAO em = new EmployeeDAO();
32: Connection ct = ConnectionManager.getInstance().getConnection();
33: ResultSet rs = em.selectByFirstNameRS(empN,ct);
34: try {
An error occurred at line: 31 in the jsp file: /test.jsp
EmployeeDAO cannot be resolved to a type
28: <td>Job Title</td>
29: <td>Hire Date</td>
30: </tr>
31: <% EmployeeDAO em = new EmployeeDAO();
32: Connection ct = ConnectionManager.getInstance().getConnection();
33: ResultSet rs = em.selectByFirstNameRS(empN,ct);
34: try {
An error occurred at line: 32 in the jsp file: /test.jsp
ConnectionManager cannot be resolved
29: <td>Hire Date</td>
30: </tr>
31: <% EmployeeDAO em = new EmployeeDAO();
32: Connection ct = ConnectionManager.getInstance().getConnection();
33: ResultSet rs = em.selectByFirstNameRS(empN,ct);
34: try {
35: if(rs != null) {%>
An error occurred at line: 53 in the jsp file: /test.jsp
ConnectionManager cannot be resolved
50: } catch (Exception e) {
51: e.printStackTrace();
52: } finally {
53: ConnectionManager.getInstance().releaseConnection(ct);
54: }%>
55: </table>
56: <a href="index.html">Return to search</a>
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:356)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
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.33 logs.
--------------------------------------------------------------------------------
Apache Tomcat/6.0.33
和test.jsp:
<%@ page import="com.sun.xml.internal.ws.wsdl.writer.document.xsd.Import" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.test.dao.*" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="com.test.util.ConnectionManager" %>
<%@ page import="java.sql.ResultSet" %>
<% String empN = request.getParameter("empName"); %>
<html>
<head><title>Employee Test Web App</title></head>
<body>
Your results are:
<table cellpadding="15" border="1" style="background-color: #ffffcc;">
<tr>
<td>Employee ID</td>
<td>First Name</td>
<td>Last Name</td>
<td>Company Name</td>
<td>Department Name</td>
<td>Job Title</td>
<td>Hire Date</td>
</tr>
<% EmployeeDAO em = new EmployeeDAO();
Connection ct = ConnectionManager.getInstance().getConnection();
ResultSet rs = em.selectByFirstNameRS(empN,ct);
try {
if(rs != null) {%>
<%while (rs.next()) {%>
<tr>
<td><%=rs.getInt(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getString(4)%></td>
<td><%=rs.getString(5)%></td>
<td><%=rs.getString(6)%></td>
<td><%=rs.getString(7)%></td>
</tr><%
}
}else{
%> <tr>Table empty</tr> <%
}
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionManager.getInstance().releaseConnection(ct);
}%>
</table>
<a href="index.html">Return to search</a>
</body>
</html>
有些想法是自己提出的。这是我的文件路径:
请提供帮助。查看WAR文件或分解的WAR目录的内容会有所帮助 通常IntelliJ会将构建路径中的所有内容复制到WAR中的适当位置,但有时,对于某些文件类型,IntelliJ并不总是注意到更改。在本例中,这不应该是一个问题,因为它是一个类文件。我认为它认为com.test.util.ConnectionManager是一个包也很奇怪
我的建议是,在执行构建之前,确保停止tomcat,如果这没有帮助,因为我真的不认为它会检查您的WAR工件的设置,并确保它拉入了所有正确的文件。项目结构正确,intellij处理了所有事情。解析错误是必须首先更正的内部运行时错误的产物。为了找到它,我使用了tomcat日志。感谢您的帮助。我没有一起使用Intellij和Tomcat。但我不认为这是IDE的问题所在。要检查它,可以单击Build->Build Test.war分解工件。现在在proj目录中会有一个out文件夹。打开该文件夹,查看类文件是否进入工件。Out文件夹有3个子文件夹:工件、生产和测试。这些课程正在测试中。它们应该在那里吗?如果你已经创建了war文件,在artifact下,应该有一个分解的war文件。在war文件下,查找web_inf下的类。如果不起作用,请进入聊天室。我在原始文件上发布了一个指向项目结构图片的链接,但这里又是:希望这也有帮助:项目结构下的工件您需要查看部署到tomcat的生成的WAR文件或分解的WAR目录中的实际内容。从您的第二个屏幕截图来看,它看起来应该在Test\out\artifacts\Test\u war\u中,在您进行构建之后,它会爆炸。
<%@ page import="com.sun.xml.internal.ws.wsdl.writer.document.xsd.Import" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.test.dao.*" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="com.test.util.ConnectionManager" %>
<%@ page import="java.sql.ResultSet" %>
<% String empN = request.getParameter("empName"); %>
<html>
<head><title>Employee Test Web App</title></head>
<body>
Your results are:
<table cellpadding="15" border="1" style="background-color: #ffffcc;">
<tr>
<td>Employee ID</td>
<td>First Name</td>
<td>Last Name</td>
<td>Company Name</td>
<td>Department Name</td>
<td>Job Title</td>
<td>Hire Date</td>
</tr>
<% EmployeeDAO em = new EmployeeDAO();
Connection ct = ConnectionManager.getInstance().getConnection();
ResultSet rs = em.selectByFirstNameRS(empN,ct);
try {
if(rs != null) {%>
<%while (rs.next()) {%>
<tr>
<td><%=rs.getInt(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getString(4)%></td>
<td><%=rs.getString(5)%></td>
<td><%=rs.getString(6)%></td>
<td><%=rs.getString(7)%></td>
</tr><%
}
}else{
%> <tr>Table empty</tr> <%
}
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionManager.getInstance().releaseConnection(ct);
}%>
</table>
<a href="index.html">Return to search</a>
</body>
</html>