4

我的实际目标是得到

<%@ page trimDirectiveWhitespaces=true %>

去工作。我目前正在使用 jetty-runner 7.4.2 运行我的 Web 应用程序。作为一个随机的尝试,我下载了一个更新的版本。有了这个,当我尝试启动我的 web 应用程序时,我得到了这个异常:

PWC6188:绝对 uri: http: //java.sun.com/jsp/jstl/core无法在 web.xml 或随此应用程序部署的 jar 文件中解析

我发现很多提到这一点,但没有任何答案对我来说有任何意义。对于它的价值,我的 WEB-INF/lib 目录中有一个最新的 jstl jar 文件(当然,它与以前版本的 jetty-runner 完美配合,或者至少我猜它确实;我当然没有得到那个例外)。

从结构上讲,我正在运行的 .war 文件没有什么特别之处,我不认为,它在 Jetty(通过 jetty-runner)上运行了很长时间。它也适用于未修改的 Tomcat 和 Resin。因此,jetty-runner 版本 7 和版本 8 之间存在一些关键区别(可能是 Jetty 本身;不确定),我怀疑解决方案非常简单;我就是找不到。

这是一个 v2.5 网络应用程序,所以我的 taglib 参考如下所示:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

编辑这是我的 web.xml 中的 web-app 标记(应用程序之一):

<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"
    metadata-complete="false"
    version="2.5">
4

2 回答 2

1

如果您使用 Java EE 7,则必须在某些服务器中使用 jcp 命名空间,而不是 java.sun,以保持兼容性,但由于新规范适用于 EE 7,并且 java 不再是 sun 的一部分,因此他们将其删除,如果您使用的是 Java ee 6,您应该保留它并且不要更新到 Java ee 7 编译服务器,或者检查具有该名称空间的服务器,如果您想使用 EE 7,那么您必须更改所有名称空间。缺少命名空间也是一个错误的想法,因为可能导致重复的 id 和各种东西

于 2014-06-03T22:27:45.817 回答
0

只是为了支持 rekiem87 写的内容,这是<web-app>我用来使 Jetty-Runner 9.2.3 工作的 3.1 标头:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version="3.1">

我所做的只是更改我web.xml以使用该标头,然后重新启动 Jetty(使用新版本),一切正常。

于 2015-07-03T23:50:51.417 回答