尝试将WAR文件部署到Glassfish时ClassNotFoundException

时间:2011-09-06 16:10:40

标签: java deployment ant glassfish war

当我继续使用Ant Build Scripts,Spring和Glassfish进行调查时,我在向Glassfish部署WAR时遇到了另一个问题。

我的构建脚本似乎正确编译并生成war文件,但是当我使用

部署它时
<glassfish-deploy force="true" file="${dist.dir}/${name}.war" />

我收到以下错误消息

[glassfish-deploy] remote failure: Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ClassNotFoundException: uk.co.crowderconsult.spider.controllers.HelloController. Please see server.log for more details.

其中我相信基本问题是

java.lang.ClassNotFoundException: uk.co.crowderconsult.spider.controllers.HelloController

但是,它找不到的类是我编写并包含在WAR文件中的类之一。我用winzip打开WAR检查,类文件就在那里。

通常我会认为我没有在类路径中包含某些东西,但是 1)该类位于我正在尝试部署的文件中,因此无论如何都希望它在类路径上 2)我不知道如何为glassfish的deploy命令设置类路径。

我还尝试使用命令行asadmin任务和glassfish的管理控制台部署它,结果相同。

任何人都可以指出我正确的方向,因为我觉得我只是围成一圈?!如果需要任何其他信息,请告诉我

非常感谢。

1 个答案:

答案 0 :(得分:0)

当你说“它在那里”时,我认为这意味着包路径HelloController.class中的WEB-INF/classes文件夹中有uk.co.crowderconsult.spider.controllers。真的吗?如果是,则类加载器应该找到它。如果没有,那就解释了为什么你有CNFE。

你是对的:如果你的WAR文件构造正确,你不必做任何其他事情来向网络服务器解释CLASSPATH。