Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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
Java Eclipse需要哪些JAR文件才能使用JSTL,从而最终在GAE/J上工作?_Java_Eclipse_Google App Engine_Jsp_Servlets - Fatal编程技术网

Java Eclipse需要哪些JAR文件才能使用JSTL,从而最终在GAE/J上工作?

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<

为了让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</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.5Apache添加到项目的构建路径中。这可能会解决问题。

将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"%>