请查看信息
•目标:要运行称为Java类的JSP页面,均位于Tomcat Server上
•环境
服务器环境: linux
服务器: tomcat7.0.27
IDE:无
• JSP(只能显示字符串)
<%@page import="HelloWorld.HelloWorld" %>
<HTML>
<HEAD>
<TITLE>Hello World/TITLE>
</HEAD>
<BODY>
<H1>Hello World</H1>
String is: <%= HelloWorld.HelloWorld.display() %>
</BODY>
</HTML>
• JSP位置:tomcat/webapps/hello/hello.jsp
• Java类(只需返回字符串)
套餐helloworld;
public class HelloWorld {
public static String display() {
return "Hello World!"; // Display the string.
}
}
• Java类位置: tomcat/webapps/hello/hello/web-inf/class/class/helloworld/helloworld/helloworld.class.class• Java类编译操作: Javac -ClassPath Tomcat/lib/servlet-api.jar:.。-d/home/user/helloworld.java
•web.xml
<?xml version="1.0" encoding="Cp1252"?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
<web-app>
<display-name>hello</display-name>
<description>no description</description>
<servlet>
<servlet-name>hello</servlet-name>
<display-name>hello</display-name>
<description>no description</description>
<jsp-file>/hello.jsp</jsp-file>
</servlet>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>
•动作:o将Java类复制到目录o清洁tomcat/工作目录o关闭tomcato启动tomcato打开服务器:8080/Hello/Hello.jsp
•问题:HTTP状态500org.apache.jasper.jasperexception:无法编译JSP 的类:在LINE上发生错误:14在生成的Java file 中无法解决import helloworld,无法解析发生错误在线:8中的8:/hello.jsp helloworld无法解决5: </HEAD> 6: <BODY> 7: <H1>Hello World</H1> 8: String is : <%= HelloWorld.HelloWorld.display() %> 9: </BODY> 10: </HTML>
stacktrace:org.apache.jasper.compiler.defaulterrorhandler.javacerror(defaulterrorhandler.java:102)
在jsp中调用packagename.classname.stringreturningmethod()时没有语法错误该类位于包装文件夹中。
是什么原因造成的?
谢谢,
问题似乎与类名称等于软件包名称的事实有关。由于您要导入软件包,因此存在一个名称冲突
所以,您导入了 helloworld.helloworld ,然后尝试做 helloworld.helloworld.display()。Java将 helloworld .helloworld.display 的第一部分作为您导入的类,然后尝试寻找一个称为 helloworld 在该课程中。
长话短说,要么删除导入(因为您正在使用FQN),要么在调用 display()时不使用FQN。
最好的问候,