我正在尝试在jsp中创建我自己的java类的对象。参见下面的
目录结构
jsptest是我的项目名称
的index.jsp
<%@page import="java.util.Date"%>
<body>
Hi Today is
<%out.println(new Date());%>
<% Test t;%>
</body>
Test.java
public class Test
{
public static void main(String[] args) {
System.out.println("hi");
}
}
没有行<% Test t;%>
它可以工作并打印
Hi Today is Thu Jan 07 14:30:00 IST 2016
当我添加它时,这就是我得到的
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 7 in the jsp file: /index.jsp
Test cannot be resolved to a type
4: <body>
5: Hi Today is
6: <%out.println(new Date());%>
7: <% Test t;%>
8: </body>
堆栈跟踪:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:198)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
答案 0 :(得分:0)
我认为Test.java
文件不应该在Classes
文件夹中。它应放在src
文件夹中。使用package
。
您没有导入您的Test
类。您必须导入它。添加以下行。
<%@page import="your.package.name.Test"%> //Replace with your package name
P.S。:最好使用库而不是仅使用JSP。尝试了解它们。
答案 1 :(得分:0)
如果使用tomcat作为servlet容器,index.jsp将转换为名为index_jsp.java的servlet,并编译为名为index_jsp.class的类文件,该文件位于$ TOMCAT_HOME / work /目录中Catalina / localhost / _ / org / apache / jsp。
他们两个类文件不在同一个包(目录)中,所以你应该像
一样导入Test<%@page import="java.util.Date,Test"%>
使用逗号作为分隔符,或编写两个页面指令,如
<%@page import="java.util.Date"%>
<%@page import="Test"%>
P.S。:为什么在WEB-INF / classes目录中有Test.java?
答案 2 :(得分:0)
首先,您应该将您的课程放在一个包中:例如foo.bar.Test
在JSP文件中导入您的类后:<%@page import="foo.bar.Test"%>
然后如您的代码中所提到的,您在Test calss(用于桌面应用程序)中使用主要方法,而不是在JSP文件中调用它: 所以,你必须在Test类中创建一个静态Methode,然后从JSP中调用它。
index.jsp
<%@page import="java.util.Date"%>
<%@page import="foo.bar.Test"%>
<body>
Hi Today is
<%out.println(new Date());%>
<% Test.myMethode();%>
</body>
Test.java
package foo.bar;
public class Test{
public static void myMethode() {
System.out.println("hi");
}
}