【发布时间】:2016-02-10 12:38:21
【问题描述】:
我在几个博客中读到不建议(或不可能)将 jar 打包到 WEB-INF 文件夹之外。我很想知道为什么会这样..
例如,
mainStuff.war
|
|-->WEB-INF
| |
| |-->lib (having many jars, used by the contents of specificStuff.jar
| |-->classes
| |-->web.xml
|
|-->META-INF (having the .MF file and signed files .SF and .DSA)
|
|
|-->index.jsp (consists of a jnlp xml, referring to the jars in lib)
|
|
|-->specificStuff.jar (this is a separate jar module, which is mentioned in the POM of the war)
在 index.jsp 中的 jnlp 配置中,我指的是 lib 中的 jar,例如:
<resources>
<java version="1.6+"/>
<jar href="specificStuff.jar"/>
<jar href="lib/someJarthatIneed.jar"/>
</resources>
现在,当我启动 JNLP 时,我收到 someJarthatIneed 无法加载的错误。但是,当我手动将 lib 移到 WEB-INF 之外时,没有发生此错误。
所以,我需要知道的是,有没有办法打包 lib 文件夹和 WEB-INF 之外的所有 jar? 或者 为什么我的 jnlp(位于 WEB-INF 之外)无法从 WEB-INF/lib 加载 jar。 (我尝试将 jar 的路径更改为
<jar href="WEB-INF/lib/someJarthatIneed.jar"/>
但它也不起作用..)
对此的任何帮助将不胜感激。 :)
【问题讨论】:
-
部署模型不清楚。您是否有提供可下载代码的 WAR 文件以通过 JNLP 安装?还是要通过 JNLP 安装 WAR 文件本身?
-
您为什么要这样做?绝对没有理由这样做。这就是为什么你会发现很难做到……
-
其实specificStuff.jar是通过jnlp下载的真实应用。这个 jar 的所有依赖项都放在 lib 文件夹中。此外,整个战争本身都包含在一个 EAR 中——(认为在上述上下文中这个重要的信息不需要此信息)
标签: maven pom.xml java-web-start jnlp