Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSP没有看到我的java类?_Java_Jsp_Classnotfoundexception - Fatal编程技术网

JSP没有看到我的java类?

JSP没有看到我的java类?,java,jsp,classnotfoundexception,Java,Jsp,Classnotfoundexception,我试图在jsp中创建我自己的java类的对象 目录结构 jsptest是我的项目名 index.jsp <%@page import="java.util.Date"%> <body> Hi Today is <%out.println(new Date());%> <% Test t;%> </body> 如果没有行,它可以工作并打印 Hi Today is Thu Jan 07 14:30:00 I

我试图在jsp中创建我自己的java类的对象

目录结构

jsptest是我的项目名

index.jsp

<%@page import="java.util.Date"%>

<body>
    Hi Today is 
    <%out.println(new Date());%>
    <% Test t;%>
</body>
如果没有行
,它可以工作并打印

 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>

我不认为
Test.java
文件应该在
Classes
文件夹中。它应该放在
src
文件夹中。使用
软件包

您没有导入您的
测试
类。您必须导入它。添加以下行

<%@page import="your.package.name.Test"%> //Replace with your package name
//替换为您的包名
p.S.:最好使用库,而不是只使用JSP。试着了解它们


如果使用tomcat作为servlet容器,index.jsp将被转换为一个名为index_jsp.java的servlet,并编译为一个名为index_jsp.class的类文件,该类文件位于$tomcat_HOME/work/Catalina/localhost/u/org/apache/jsp目录中

它们两个类文件不在同一个包(目录)中,所以您应该像

<%@page import="java.util.Date,Test"%>

使用逗号作为分隔符,或编写两页指令,如

<%@page import="java.util.Date"%>
<%@page import="Test"%>


注意:为什么Test.java在WEB-INF/classes目录下?

首先你应该把你的类放在一个包中:比如
foo.bar.Test
在JSP文件中导入类后:

然后,如代码中所述,您在测试计算中使用了一个主方法(用于桌面应用程序),JSP文件中没有调用该方法: 因此,您必须在测试类中创建一个静态方法,然后从JSP调用它

index.jsp

<%@page import="java.util.Date"%>
<%@page import="foo.bar.Test"%>

<body>
    Hi Today is 
    <%out.println(new Date());%>
    <% Test.myMethode();%>
</body>
package foo.bar;


public class Test{

    public static void myMethode() {
        System.out.println("hi");
    }
}

你需要导入才能使用itaddes this
,no luckdid你在将类编译成WEB-INF/classes后重新启动tomcat/重新部署你的应用程序?我做了,我尝试了很多次是的,我做了很多次我看到我的评论你应该将完整路径添加到你的测试类中,你的
Test.java
文件在哪里?它应该在
src
文件夹中。@dsp\u用户是。他必须这样做。但正如他的文件夹结构所示,他没有任何包。只需要类。不需要将
java
文件保存在
src
文件夹中@紫荆
<%@page import="java.util.Date"%>
<%@page import="foo.bar.Test"%>

<body>
    Hi Today is 
    <%out.println(new Date());%>
    <% Test.myMethode();%>
</body>
package foo.bar;


public class Test{

    public static void myMethode() {
        System.out.println("hi");
    }
}