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

Java 尝试将WAR文件部署到Glassfish时发生ClassNotFoundException,java,deployment,ant,glassfish,war,Java,Deployment,Ant,Glassfish,War,在我继续研究如何使用Ant构建脚本、Spring和Glassfish时,我在Glassfish上部署WAR时遇到了另一个问题 我的构建脚本似乎能够正确编译和生成war文件,但当我使用 <glassfish-deploy force="true" file="${dist.dir}/${name}.war" /> 我相信根本的问题是 java.lang.ClassNotFoundException: uk.co.crowderconsult.spider.controllers.He

在我继续研究如何使用Ant构建脚本、Spring和Glassfish时,我在Glassfish上部署WAR时遇到了另一个问题

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

<glassfish-deploy force="true" file="${dist.dir}/${name}.war" />
我相信根本的问题是

java.lang.ClassNotFoundException: uk.co.crowderconsult.spider.controllers.HelloController
但是,它找不到的类是我编写并包含在WAR文件中的类之一。我通过使用winzip打开WAR进行检查,类文件就在其中

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

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

有人能告诉我正确的方向吗,因为我觉得我只是在兜圈子?!如果需要任何其他信息,请让我知道


非常感谢。

当你说它在那里时,我将其理解为在包路径uk.co.crowderconsult.spider.controllers中的WEB-INF/classes文件夹中有一个HelloController.class。这是真的吗?如果是,则类装入器应该找到它。如果没有,这将解释为什么你有CNFE


您是正确的:如果您的WAR文件构造正确,您不必做任何其他事情来解释web服务器的类路径。

感谢其响应,WAR对象中有3个文件夹,一个META-INF,WEB-INF和一个映射到包列表uk.co等的文件。在该文件夹中有一个HelloController.class文件。但是,这是一个单独的文件夹,不在WEB-INF/classes下,这向我表明我没有正确创建WAR文件?我正在使用WAR ant任务来构建它,所以我想我会深入研究一下好吧,看来我没有正确地创建WAR,我没有指定类嵌套元素,所以我的java类不在正确的位置。添加这个嵌套元素可以解决这个问题,为了便于参考,我将下面的任务包括在内。”“@duffymo不过是关于一个试图从jar加载的类的。对我来说,它给出了>>java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver(来自[Module deployment.APP.war from Service Module Loader])我最初的答案已经九年多了。问一个新问题。答案是显而易见的:Oracle JDBC驱动程序JAR并没有卷入战争。你有包装问题。用拉链或焦油打开战争,检查里面的东西。要么JAR不存在,要么它不是类路径的一部分。谷歌提供如何正确创建WAR文件的说明。
java.lang.ClassNotFoundException: uk.co.crowderconsult.spider.controllers.HelloController