Eclipse项目窗口显示错误,但代码编辑器显示没有错误

时间:2014-05-22 22:41:59

标签: java eclipse jsp java-ee

对于我的jsp文件,代码编辑器没有显示错误,但是项目窗口显示错误。我再次构建了我的项目,清理了项目,重启了两次eclipse并召唤了cthulhu。但我的项目仍然显示错误。我如何找到原因并解决问题?

Eclipse项目 -

enter image description here

JSP文件 -

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib prefix="mine" uri="DiceFunctions"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>

${mine:rollIt()}

</body>
</html>

TLD文件 -

<?xml version="1.0" encoding="ISO-8859-1" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
<tlib-version>1.2</tlib-version>

<uri>DiceFunctions</uri>
<function>
<name>rollIt</name>
<function-class>foo.DiceRoller</function-class>
<function-signature>
int rollDice()
</function-signature>
</function>
</taglib>

注意 - 看看我的项目结构。在web-inf / classes下创建一个文件夹foo,并将dice类文件放在foo中。否则项目将无效。

2 个答案:

答案 0 :(得分:1)

  • 首先在 web.xml 中定义了taglib,如下所示?

     <jsp-config>
        <taglib>
           <taglib-uri>DiceFunctions</taglib-uri>
           <taglib-location>/WEB-INF/diceRoller.tld</taglib-location>
        </taglib>
     </jsp-config>
    
  • 其次,项目快照中的lib文件夹为空,表示您尚未在项目中添加jstl.jar


应该看起来像

public class DiceRoller {
    public int rollDice() {
       return 1;
    }
}

JSP custom tag function example

上查找示例代码
  

当我在tomcat上运行html文件时,出现错误 - HTTP状态404 - /MyJSP/html/MyHtml.html

导出Web存档(WAR)文件

Web归档(WAR)文件是一个打包的Web应用程序,可以导出以测试,发布和部署Web项目中开发的资源。

要从Web项目导出WAR文件,请执行以下操作:

  • 右键单击Web项目文件夹,然后从弹出菜单中选择“导出”。然后在“导出”窗口中选择WAR文件,然后选择“下一步”。
  • 指定要导出的Web项目(如果使用弹出菜单打开向导,则此字段已准备好),并指定新WAR文件的位置
  • 可选:可选择提供WAR导出选项,例如是否在WAR中包含Java™源文件,以及是否在导出过程中覆盖任何现有资源。源文件通常不包含在WAR文件中,因为服务器不需要它们来运行Web应用程序。
  • 单击“完成”。

详细了解Exporting Web Archive (WAR) files

答案 1 :(得分:-1)

我如何解决问题 - 我很幸运,我的侥幸工作。首先,从书中正确复制所有代码。不要在web-inf内为项目创建任何类文件夹。在eclipse jee中,创建一个新的动态Web项目。将旧项目中的jsp,html,java代码等所有文件夹复制到新项目中。删除旧项目。建立你的新项目(尝试关闭 - 打开eclipse是安全的)。您的项目现在应该没有错误。我没有解释为什么这有效。

或者,如果您的目标是快速学习J2ee JSP等,那么我建议您最初避免使用Eclipse并手动创建Web应用程序文件夹。

使用所有必需的文件创建以下目录结构:

C:\APACHE-TOMCAT-7.0.00\WEBAPPS\SAMPLEAPP
¦   MyHtml.html
¦   MyJsp.jsp
¦
+---WEB-INF
    ¦   DiceRoller.tld
    ¦   web.xml
    ¦
    +---classes
        +---foo
                Dice.class

现在为这些文件放入所有必要的代码,它肯定会起作用。这个故事的寓意是Eclipse不适合学习J2EE / Jsp / Servlets的基础知识。做你的 手动的web应用程序文件我在尝试制作eclipse版本时浪费了2-3个小时但仍然失败了。我遵循非日食方法,代码在5分钟内运行。 并且......没有必要导入任何罐子或扩展任何类等。