我遇到了类似问题似乎无法解决的问题。
我有一个使用 SpringMVC、JSP 和 taglibs 嵌入 Jetty 的应用程序。我使用一个 maven 插件来生成一个 jar,将所有依赖的 jar 捆绑到一个目录中并创建一个清单。
当我使用 jar(例如 java -jar app.jar)运行应用程序时,一切正常,直到我尝试加载指定的 JSP<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
或任何其他 taglib。
如果我运行 java 并在命令行上指定类路径并明确命名我的主类,则一切正常。我已经验证了我的应用程序 jar MANIFEST.MF 中的 Class-Path 是正确的。
到目前为止,我已经提出了两种我宁愿避免的解决方法。让我的启动脚本生成类路径并将其放在命令行上。或者,将 .tld 文件从 Jetty jsp-api 包中提取出来,并将它们作为常规文件提供,这样我就可以将它们指定为标记库。
我的理解是,Jasper 应该通过所有 Jar 的所有类路径来寻找 tld 文件?在命令行上将 jar 指定为类路径的一部分时,它可以工作,但是当在我的应用程序的 jar 中指定类路径时,它会失败。