Java Eclipse需要哪些JAR文件才能使用JSTL,从而最终在GAE/J上工作?
为了让JSTL在Eclipse下(并最终在GAE/J下)工作,我已经尝试了很长时间。我已经下载了Eclipse,Eclipse的Google应用程序引擎扩展,以及JSTL(-JSTL-1.2.jar位于WEB-INF\lib目录中) 下面是我的代码和输出:Java Eclipse需要哪些JAR文件才能使用JSTL,从而最终在GAE/J上工作?,java,eclipse,google-app-engine,jsp,servlets,Java,Eclipse,Google App Engine,Jsp,Servlets,为了让JSTL在Eclipse下(并最终在GAE/J下)工作,我已经尝试了很长时间。我已经下载了Eclipse,Eclipse的Google应用程序引擎扩展,以及JSTL(-JSTL-1.2.jar位于WEB-INF\lib目录中) 下面是我的代码和输出: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <HTML><HEAD><TITLE>Test Page<
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<HTML><HEAD><TITLE>Test Page</TITLE></HEAD><BODY>
Test Page
<c:set var="myvar" value="3"/>
</BODY></HTML>
从本页的最后一篇文章来看,我认为我不需要standard.jar(),而且无论如何,我在Oracle download.java.com网站上找不到一个与jstl jar一起的标准jar
编辑4:立即工作-步骤:1) 使用Apache版本
2) 实际上,在构建路径中包含jar文件(右键单击eclipse项目并点击属性->Java构建路径->库->添加类文件夹…;默认情况下,war/WEB-INF/lib显然不在构建路径上)
3) 将文件c.tld添加到war/WEB-INF/tld 使web.xml看起来像:
<\?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>JSTLExample</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
JSTLE示例
index.html
http://java.sun.com/jstl/core
/WEB-INF/tld/c.tld
测试jsp文件内容:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- Taglib -->
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test Apache ServiceMix with JSTL</title>
</head>
<body>
This is a testpage.
<%= "hello" %>
<c:forEach var="i" begin="1" end="10" step="1">
<c:out value="${i}" />
<br />
</c:forEach>
</body>
</html>
使用JSTL测试ApacheServiceMix
这是一个测试页面。
确保您的web.xml
根声明至少符合Servlet 2.4
<web-app
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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<!-- Config here. -->
</web-app>
或者,如果您的servletcontainer支持它,请选择2.5:
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!-- Config here. -->
</web-app>
O是否支持最新版本3.0
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- Config here. -->
</web-app>
否则,一切都将退回到最不受支持的MODU,taglib可能会像那样崩溃
还要确保类路径中没有松散的
tld
文件(包括/WEB-INF/lib
文件夹),它们将与JAR文件中的文件发生冲突。哦,还要确保您没有在web.xml
中手动定义TLD,保持它干净。据我所知,您需要jstl.jar和standard.jar。将它们放在WEB-INF/lib下。您只需要在Maven POM中指定此依赖项:
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
jstl
jstl
1.2
在我的代码中,这提供了以下JSP标记库工作所需的一切:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
我也有同样的问题,我只是在taglib定义的末尾加上前缀=“c” 之前:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
之后:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
所有警告都会从Eclipse中消失 将taglibs-standard-impl-1.2.5从Apache添加到项目的构建路径中。这可能会解决问题。将jstl-1.2-sources.jar添加到Tomcat\lib目录中Hmm,我在执行此操作时还遇到了一个错误:必须为元素类型“web app”声明属性“xsi:schemaLocation”。必须为元素类型“web app”声明属性“xmlns”。必须为元素类型“web app”声明属性“xmlns:xsi”。必须为元素类型“web app”声明属性“version”。删除该DOCTYPE。这是Servlet2.3特有的。仍然是相同的错误;我创建了一个新项目(这次不支持GWT-just GAE),您建议的web.xml位被自动添加,但我一添加行,就会出现相同的错误……您是将其声明为servlet 2.4还是2.5?您的编辑不明确。servletcontainer支持哪个版本?您应该声明web.xml以匹配servletcontainer支持的最大版本。JSTL1.2是为Servlet2.5设计的,但是当servletcontainer在技术上支持2.5时,它可以在Servlet2.4上工作。如果servletcontainer在技术上不支持高于Servlet2.4的版本,那么您需要回到JSTL1.1。有空。它由lib中的两个JAR文件组成:jstl.JAR和standard.JAR。对不起,我没有先删除旧的JAR文件。我尝试了2.4和2.5,并尝试先将它们添加到web.xml,然后再添加到appengine-web.xml,但都没有成功。如果我运行它,我仍然会得到相同的错误和空指针异常。我正在考虑尝试Apache实现(我认为java.net上的是Sun/Oracle的,也许它对我的Eclipse版本和Google GAE插件不太好)。任何订单都很好,对我有效!这应该是Eclipse的错误吗?在交换了一次属性之后(如图所示),即使在将项目恢复到其原始位置之后,对我来说,警告也消失了。肯定是Eclipse中的一个bug或其他什么东西在过滤这些文件。@cjm没错!我也有同样的问题,只是通过改变标签的位置来解决。是的,一旦你改变了它,这两种组合都起作用了:d这对我来说很有效,(我已经准备好了答案中提到的所有其他东西)taglibs-standard-impl-1.2.5等于jstl.jar吗?嗨,也许你可以详细说明你的答案。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>