gpt4 book ai didi

java - JSTL 1.2 版已声明,但 1.1 版是从 Maven 存储库交付的

转载 作者:行者123 更新时间:2023-12-04 06:21:12 25 4
gpt4 key购买 nike

我正在寻找一种从 Maven 存储库中获取 JSTL 1.2 实现 JAR 的简单方法,这听起来很容易,但实际上证明非常困难。

我尝试了以下软件包:
javax.servlet : jstl : 1.2通过 http://repo1.maven.org/maven2/javax/servlet/jstl/1.2/jstl-1.2.jar
javax.servlet.jsp.jstl : jstl : 1.2通过 http://download.java.net/maven/1/javax.servlet.jsp.jstl/jars/jstl-1.2.jar

这两个工件都应该包含 JSTL 1.2 实现。但是,当我下载 JAR 并打开文件 /META-INF/c.tld 时在这些 JAR 之一(它们的内容相同)中,标题显示:

<taglib 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-jsptaglibrary_2_1.xsd"
version="2.1">

<description>JSTL 1.1 core library</description>
<display-name>JSTL core</display-name>
<tlib-version>1.1</tlib-version>
<short-name>c</short-name>
<uri>http://java.sun.com/jsp/jstl/core</uri>
...

这意味着标签不是 1.2 而是 1.1 标签。为了比较,当我直接从 http://download.java.net/maven/glassfish/org/glassfish/web/jstl-impl/1.2/jstl-impl-1.2.jar 下载 JAR 文件时 c.tld文件看起来正确:
  ...
<description>JSTL 1.2 core library</description>
<display-name>JSTL core</display-name>
<tlib-version>1.2</tlib-version>
<short-name>c</short-name>
<uri>http://java.sun.com/jsp/jstl/core</uri>
...

所以,问题是:为什么 Maven 存储库包含错误版本(1.1 而不是 1.2)的 JAR(或更具体地说是 tld 声明),以及如何通过 Maven 获取正确的 JSTL 版本?

最佳答案

  • https://issues.sonatype.org/browse/MVNCENTRAL 报告问题
  • 作为短期修复,请替换本地 .m2 中的 JAR 文件。使用来自 java.net 的正确 JAR 的 repo。
    如果您使用代理,请在那里替换它。
  • 关于java - JSTL 1.2 版已声明,但 1.1 版是从 Maven 存储库交付的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6535119/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com