我已经构建了一个Java Web应用程序并将其打包在.war
文件中并在我的本地tomcat服务器上进行了测试,并且运行正常。
但是当我在客户端的服务器上部署它时,它显示错误。根据远程服务器(我的客户端的服务器),它没有找到我放在tld
目录中的jar文件中打包的WEB-INF/lib
文件。但当我检查WEB-INF/lib
目录中的jar文件时,我发现它就在那里。
META-INF/MANIFEST.MF
的内容如下:
Manifest-Version: 1.0
Class-Path:
我认为没有必要明确提及WEB-INF/lib
目录的类路径,因为它默认位于任何Web应用程序的类路径中。
然后,当我在远程服务器上部署它时,为什么服务器在lib
目录中找不到jar文件,以及当我在本地服务器上部署相同的应用程序时,为什么它正在工作。
我在Struts 1 - struts-taglib.jar is not being found by my web application发布了一个问题,但发现问题很罕见,因为没人能回答。
所以我的问题如下:
Q1。如果我将类路径条目保留为空,如上所示在MANIFEST.MF文件中,或者我应该从文件中完全删除类路径条目,或者我应该明确输入WEB-INF/lib
,那么Class-Path: /WEB-INF/lib
是否仍然保留在类路径中classpath entry?
Q2。我在Web应用程序中有JSP
个页面,Servlet
和一些帮助程序类。 Jsp页面位于根目录。 Servlet和帮助程序类位于WEB-INF/classes
文件夹中。如果我的帮助程序类位于WEB-INF/classes
文件夹中,是否有任何问题?
注意:请注意,此问题与我之前的问题不同。这是我上一个问题的后续问题。
服务器(本地和远程)都是tomcat服务器。
答案 0 :(得分:1)
不要在清单中创建一个空的Class-Path
条目,只需将其删除即可!通常,您不需要在webapp中输入任何Class-Path
条目。此条目对于可运行的罐子更常见。
帮助程序类没有问题。 WEB-INF / classes始终是classpath的第一个条目,后跟WEB-INF / lib的jar。所以容器编译的JSP应该没有使用那里包含的类的问题。
您是否已将{tag}在web.xml
中添加了适当的taglib-location
?
答案 1 :(得分:-1)
如果taglib-location指向互联网位置(即使用http)并且生产框可能无法访问互联网(由于许多防火墙限制),这尤其可能在生产中发生