【问题标题】:tomcat 7 shows compile error in a hello world jsptomcat 7 在 hello world jsp 中显示编译错误
【发布时间】:2012-10-22 11:01:00
【问题描述】:

请看资料

• 目标: 运行一个调用java类的JSP页面,两者都驻留在tomcat服务器上

•环境
服务器环境: 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/WEB-INF/classes/HelloWorld/HelloWorld.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 关闭 TOMCAT o 启动 TOMCAT o 打开服务器:8080/hello/hello.jsp

•问题: HTTP 状态 500 org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 14 in the generated java file 无法解析导入 HelloWorld 发生错误在 jsp 文件中的第 8 行:/hello.jsp HelloWorld 无法解析 5: &lt;/HEAD&gt; 6: &lt;BODY&gt; 7: &lt;H1&gt;Hello World&lt;/H1&gt; 8: String is : &lt;%= HelloWorld.HelloWorld.display() %&gt; 9: &lt;/BODY&gt; 10: &lt;/HTML&gt; Stacktrace:org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)

在JSP中调用PackageName.ClassName.StringReturningMethod()没有语法错误 该类位于包文件夹中。

是什么原因造成的?

谢谢,

【问题讨论】:

  • 哇,大写的 HTML,Scriptlets,CP1252 XML 编码和 Servlet 2.3 兼容的 web.xml。十多年前 JSP/HTML 开发如何(糟糕地)完成的所有迹象。在学习 JSP/HTML 时,您是否绝对肯定您正在阅读正确且最新的教程/资源?从我们的 JSP wiki 页面开始:stackoverflow.com/tags/jsp/info

标签: linux jsp servlets tomcat7


【解决方案1】:

问题似乎与类名等于包名的事实有关。 由于您正在导入包并且在调用 display() 方法时还使用了类的 fqn,因此存在名称冲突。

因此,您导入了 HelloWorld.HelloWorld,然后尝试执行 HelloWorld.HelloWorld.display()。 Java 将 HelloWorld.HelloWorld.display 的第一部分作为您导入的类,然后尝试查找名为 HelloWorld的静态成员> 在那个班级里。

长话短说,要么删除导入(因为您使用的是 fqn),要么在调用 display() 时不使用 fqn。

最好的问候,

【讨论】:

  • 两者都做了..... 新 JSP: Hello World

    Hello World

    String是: 新响应:org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 7 in the jsp file: /hello.jsp HelloWorld 无法解析 4: 5: 6:

    Hello World

    7: String is: 8: 9:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
相关资源
最近更新 更多