我在几个博客中读到,不建议(或不可能)将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"/>
但它也不起作用..)
任何有关此问题的帮助都将得到解决。 :)
答案 0 :(得分:1)
感谢所有建议......但是,我找到了办法......
我使用maven-dependency-plugin(copy-dependencies)将所有依赖项jar复制到文件夹lib到指定位置。
<packagingExcludes>WEB-INF/lib/</packagingExcludes>
然后使用
float main(void) {
float height;
printf("Enter your height in cm:\n");
scanf("%f",&height);
float weight;
printf("Enter your weight in kg:\n");
scanf("%f",&weight);
float bmi;
bmi = (weight/(height/100)*(height/100));
if (bmi <= 16) {
printf("Severely Underweight\n");
}
else if (16 < bmi <= 18.5) {
printf("Underweight\n");
}
else if (18.5 < bmi <= 25) {
printf("Healthy\n");
}
else if (25 < bmi <= 30) {
printf("Overweight\n");
}
else {
printf("Severely Overweight\n");
}
}
在pom中,你使用maven-war-plugin进行战争,从WEB-INF中删除lib文件夹..
所以,现在index.jsp能够从lib中获取所有的jar。
答案 1 :(得分:0)
http-request中没有WEB-INF中的内容,WEB-INF中没有的内容将被视为资源,因此容器不会加载。
如果您的应用程序不需要放入WEB-INF / lib的jar,只需将它们移到WEB-INF文件夹之外,它们就会被视为资源。
你也可以考虑建立一个&#34; uberjar&#34;为你JNLP jar,将所有依赖包装到一个jar中。