【发布时间】:2015-06-29 02:59:08
【问题描述】:
我的问题相当简单,我认为它应该有一个相当简单的答案。然而,谷歌让我失望了,所以我求助于你!
我有一个多项目设置,其中ProjectA 是一个依赖于ProjectB 的Web 应用程序。 ProjectB 被构建到具有/META-INF/tags 目录的 JAR 文件中,然后包含在 ProjectA WAR 文件中并在 Tomcat 8 上运行。这样构建项目后,一切都按预期工作。
我的问题出现在开发中。我正在使用Sysdeo Tomcat Plugin 的本地修改版本,在大多数情况下似乎工作得很好。问题在于,当部署 Web 应用程序 ProjectA 时,ProjectB 通过 Eclipse 生成的 bin 目录简单地包含在类路径中。由于它不是 JAR 文件,因此在默认配置中找不到 /META-INF/myTags.tld。我使用<Context> 块中的<JarScanner scanAllDirectories='true' /> 选项解决了这个问题。太棒了。
TLD 文件列出了指向/META-INF/tags 目录中位置的标签,如下所示:
<tag-file>
<name>pane</name>
<path>/META-INF/tags/pane.tag</path>
</tag-file>
但在运行时,我得到:
org.apache.jasper.JasperException: File [/META-INF/tags/pane.tag] not found
我希望我只是在这里缺少 Jasper 的一些配置,但我似乎找不到它。感谢您的帮助,如果我可以提供更多详细信息,请尽管询问!
【问题讨论】:
-
我知道这可能不是您想要的,但我发现在每个项目的 /META-INF/tags/ 文件夹中包含标记文件更容易。我知道它会创建标记文件的重复副本,但底层 Java 代码只内置到 .jar 文件中一次。我有 ProjectA、ProjectB 和 ProjectC,它们都依赖于 ProjectD jar 中内置的标签(包含在 ProjectsA-C 中。我发现处理它的唯一方法是在每个项目中都有我的 tags.tld 标签。
-
@Shaggy - 这听起来很脏,但我很感激你的意见!我原以为这是一个非常常见的问题,我只是错过了“优雅”的答案,但似乎越来越像 kludging 是解决方案的唯一方法。我想知道使用 Eclipse 的 WTP 是否也一样糟糕?
-
这就是我使用的,它非常适合将 .jar 文件项目与 Web 模块链接以进行调试(以及其他好处)。我仍然没有找到将动态 Web 模块指向另一个项目中的标签的方法。为这个问题 +1,因为如果其他人知道,我现在很感兴趣。
标签: java eclipse jsp tomcat sysdeo