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 创建可再发行的打包标记文件_Java_Eclipse_Jsp - Fatal编程技术网

Java 创建可再发行的打包标记文件

Java 创建可再发行的打包标记文件,java,eclipse,jsp,Java,Eclipse,Jsp,背景: 我有几个项目应该共享一个打包的标记文件(参见小节)。在一个独立的项目中,我创建了这个打包的标记文件,它实际上只是一个JAR文件(请参阅下面的“JAR文件结构”一节),我可以将它重新分发到我的所有项目中。我正在使用EclipseIDE 问题: 根据Oracle文档,我应该能够将我的.tld放入JAR文件的/META-INF/目录。但是,只有当.tld也在项目的/WEB-INF/目录中并且我使用引用它时,Eclipse才会成功验证我的代码。如何在Eclipse中引用标记而不将.tld放入/W

背景:

我有几个项目应该共享一个打包的标记文件(参见小节)。在一个独立的项目中,我创建了这个打包的标记文件,它实际上只是一个JAR文件(请参阅下面的“JAR文件结构”一节),我可以将它重新分发到我的所有项目中。我正在使用EclipseIDE

问题:

根据Oracle文档,我应该能够将我的.tld放入JAR文件的/META-INF/目录。但是,只有当.tld也在项目的/WEB-INF/目录中并且我使用
引用它时,Eclipse才会成功验证我的代码。如何在Eclipse中引用标记而不将.tld放入/WEB-INF/目录?以下是Oracle文档,说明它可以位于JAR的META-INF中:

标记库描述符文件名的扩展名必须为.tld和 必须打包在WAR的/WEB-INF/目录或子目录中 文件或位于标记库的/META-INF/目录或子目录中 装在罐子里。如果标记实现为标记文件,并且 打包在/WEB-INF/tags/或子目录中,将生成TLD 由web容器自动执行,但如果需要,可以提供一个 希望如此

我不想将.tld放入WEB-INF的原因是,如果它包含在JAR中,则更容易分发。这样,我就不必每次进行更改时都将其重新复制到所有相关项目中

我的JAR文件结构:


我创建了一个名为的JSP标记文件。我创建了另一个名为tagfiles.tld的文件,其中包含一个
tag files
元素,该元素有一个子元素
/META-INF/tags/wrapper.tag
。我创建了一个ant任务来处理这些问题。它创建一个包含以下内容的JAR:META-INF、META-INF/tags、META-INF/tld、META-INF/MANIFEST.MF、tags/wrapper.tag和tld/tagfiles.tld

成功了。我升级到了EclipseLuna(在撰写本文时,是最新版本)。我的主项目在包含标记文件JAR的项目的Java构建路径上有一个“Projects”引用。JAR本身具有我在上面的文章中指出的文件结构。My.tld文件包含以下内容:

<taglib version="2.0" xmlns="http://java.sun.com/xml/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
    <tlib-version>2.0</tlib-version>
    <jsp-version>2.0</jsp-version>
    <short-name>mysname</short-name>
    <uri>http://anyuri.com/anything</uri>
    <description>
     Your description here
    </description>
  <tag-file>
    <description>This is just a test</description>
    <display-name>wrapper</display-name>
    <name>wrapper</name>
    <path>/META-INF/tags/wrapper.tag</path>
  </tag-file>
</taglib>

2
2
我的名字
http://anyuri.com/anything
你的描述在这里
这只是一个测试
包装纸
包装纸
/META-INF/tags/wrapper.tag
我还应该注意,我有一个ANT构建,它将标记文件JAR打包到web应用程序的web-INF/lib目录中。根据以下要求,这是必需的:

标记文件可以打包在JAR的/META-INF/tags/目录中 安装在WEB应用程序的/WEB-INF/lib/目录中的文件。 此处放置的标记通常是可重用标记库的一部分,这些标记 可在任何web应用程序中轻松使用