2010-03-16 59 views
0

我已经构建了一个Java Web应用程序,并将它打包在一个.war文件中,并在我的本地tomcat服务器上进行了测试,并且运行良好。Java - 部署Web应用程序的问题

但是,当我将它部署在我的客户端的服务器上时,它显示错误。根据远程服务器(我的客户端的服务器),它没有找到一个打包在我放在WEB-INF/lib目录中的jar文件中的tld文件。但是当我检查了jar文件的WEB-INF/lib目录时,我发现它在那里。

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文件中所示,或者我应该从文件中完全删除类路径条目,或者我应该明确地输入Class-Path: /WEB-INF/lib作为类路径条目,那么WEB-INF/lib仍然保留在类路径中? Q2302。我有JSP页面,Servlet和Web应用程序中的一些帮助程序类。 Jsp页面位于根。 Servlet和帮助类位于WEB-INF/classes文件夹中。所以如果我的帮手类位于WEB-INF/classes文件夹中,是否有任何问题?

注意:请注意,这个问题是不同于我以前的问题。这是我上一个问题的后续问题。

这两个服务器(本地和远程)都是tomcat服务器。

+0

先给发生类路径显式。 – Zaki 2010-03-16 06:55:50

+2

经典之一,“我发誓它在我的机器上工作”的问题:) – medopal 2010-03-16 07:06:01

+1

@medopal这里没有什么好笑的...不张贴无用的评论 – 2010-03-16 07:25:20

回答

1

不要在清单中创建一个空的Class-Path条目,只要删除它!通常情况下,你不需要在webapp中输入任何Class-Path条目。这个条目对于可运行的罐子更为常见。

你的助手类没有问题。 WEB-INF/classes始终是类路径的第一个条目,后跟WEB-INF/lib的jar。因此,由容器编译的JSP应该没有使用其中包含的类的标记。

您是否已将您的taglib包含在web.xml中并附带适当的taglib-location

+0

所有这些都是正确的。我会补充一点,我相信.tld文件属于WEB-INF,而不是WEB-INF/lib。 – 2010-03-16 12:01:37

-1

这尤其是在生产,如果标签库,位置指向互联网位置(即以http)和生产箱可能无法访问互联网(由于许多防火墙限制)

+0

显然有人已经低估了一个类似的建议,但我确信我曾经遇到过这个问题,曾经用spring&activemq-core-5.2.0.jar来验证模式元素。这个jar包含入门HTTP \一个spring.schemas文件://activemq.apache.org/schema/core/activemq-core.xsd=activemq.xsd(表示春天在哪里可以找到XSD文件),但我已经把模式URL错误地为.../ActiveMQ的核心 - 5.2.0.xsd – 2010-03-16 10:10:17

+1

uri属性的URL值并不意味着服务器有访问互联网找到TLD文件。 Tld文件有自己的uri,需要与taglib指令的uri匹配才能包含 – 2010-03-16 10:32:46