我有一个用Eclipse编写并部署在WebLogic上的Java EE Web应用程序。
当我从 Eclipse 部署它(作为虚拟应用程序)时,它工作正常。当我尝试创建 EAR 文件并从 WebLogic 控制台部署它时,我得到一个ClassNotFoundException
。
可能是什么原因?
如何创建与虚拟应用程序结构匹配的 EAR 文件,使其正常工作?
通常这意味着未部署依赖库。这往往是 Eclipse 具有依赖关系的地方,它作为内部构建的一部分实现。自己构建时,请确定需要哪些库,哪些是应用程序的一部分,哪些是 WebLogic 的一部分。对于您自己的库(即 lib 文件夹中的库,或应该在 lib 文件夹中的库),请确保它们位于类路径上。对于外部库,即那些 WebLogic 实现的库,请确保您设置了适当的模式描述符,以告诉 weblogic 需要与您的应用程序一起部署哪些库(通常类似于 JSF)。
如果你想对构建进行适当的控制,看看像 Ant 这样的东西。你基本上通过xml告诉它需要什么,把它放在一起,它会为你生成Ear/Jar文件(Ear文件也包含所有依赖项,和/或内置weblogic的描述符)。
如果您正在计划许多构建,我发现 Ant 在设置后很有用(您也可以将其与其他程序绑定,这样它就可以将构建作为标记、构建文档等推送到源代码管理服务器)。不过,Ant 可能会很痛苦 - 您需要为每个需要构建的库以及 Ear 文件构建描述符。