4

我在为 WebSphere 7 开发应用程序时遇到问题。设置如下。我有一个基于 maven 的项目,由 RAD 7.5.5.2 中开发的多个模块组成

其中一个模块是使用 JSP 并依赖于 taglib 的普通 Web 应用程序(war)。

Taglib 本身是另一个模块 - 纯 java 项目,只有两个文件,taglib 描述符和 META-INF/tags 下的标记文件。

当我构建 taglib jar 并手动将其复制到 Web 应用程序的 WEB-INF/lib 时,标签被正确挑选并呈现在页面上。

当我通过 RAD 部署项目时 - 没有拾取 taglib。错误说:

```
com.ibm.ws.jsp.JspCoreException: JSPG0047E: Unable to locate tag library for uri http://juriy.com/myproject/jsp/my-taglib 
```

打包为 JAR 并添加到 WEB-INF/lib 的相同标签库可以完美运行。

当我打开 WebSphere 管理控制台时,我看到 taglib 项目已被 WebSphere 识别。但是它没有打包为 JAR,而是将项目的路径添加到 webapp 类路径中。在

```
Troublehooting -> Class Loader Viewer -> Module - com.ibm.ws.classloader.CompoundClassLoader
```

我看到我的 taglib 的条目:

```
file:/D:/Data/MyProject/UIComponents/target/classes
```

换句话说,看起来 WS 并不关心在开发周期中将项目打包为 JAR,然后它就不会作为 taglib 被拾取。

有没有办法告诉 RAD(或 WebSphere)“请先将此项目打包为 JAR,然后再将其添加到类路径中”?任何使此设置工作的替代方法也值得赞赏。我不能在开发过程中一直手动复制 jar - 我们都希望事情能够自动运行。

免责声明:我不是 WebSphere 专家(仅与这个野兽打交道一周),我可能错过了一些明显的设置。请提出任何可能解决此问题的建议。

4

3 回答 3

0

据我所知,RAD 是在 Eclipse 平台上制作的。我知道使用 maven,您可以创建构建 jar 文件并放入本地存储库的工件。M2_REPO其他模块可以通过变量引用该 jar 。然后你坚持使用 maven 并且必须使用 maven 插件来帮助将 maven 集成到 eclipse 中。但请考虑使用project builder 和 ant配置项目的选项。然后,您可以在构建时轻松运行 ant 目标,以便在部署之前制作您的 jar。这种技术不仅用于 Eclipse IDE,还用于其他 IDE。在项目构建之前或之后运行 ant 目标是非常宝贵的功能。

于 2013-03-23T10:52:55.947 回答
0

您是否尝试将清单添加到您的 WAR?

于 2013-03-24T07:39:54.823 回答
0

将您的 taglib 打包为 maven jar 并将其安装到本地 .m2 存储库。然后为您的主项目引用 pom 中的依赖项。它将被拉入包装。如果它正在为本地开发解决问题,则可能是因为打开了工作区解析。

此外,在基于 Maven 的项目中将 jars 添加到 WEB-INF/lib 并不是最佳实践,因为您绕过了 maven 的主要目的,即控制构建项目所需的依赖项。

于 2013-03-23T17:59:04.920 回答