Weblogic应用程序抱怨某些类缺失,如何调试?

时间:2009-12-11 23:10:56

标签: java java-ee weblogic classpath

我有一个相当复杂的J2EE应用程序,我没有任何文档,我试图让它运行。

我已经获得了ant构建脚本来编译包含WAR文件的EAR文件,但是这个应用程序即使我在weblogic控制台上“成功部署”仍然无法正常工作。

EAR文件中缺少许多必需的jar,因此在部署应用程序时,我收到有关控制台日志中缺少类的错误。有时甚至在我检查一个特定的课程后,我仍然会收到错误。

调试和运行此应用程序的最佳方法是什么?

J2EE / Java中是否有任何“查找所有依赖项”的快捷方式,任何人都知道分析代码并查找依赖项或类似内容的应用程序?

5 个答案:

答案 0 :(得分:1)

  

J2EE / Java中是否有任何“查找所有依赖项”的快捷方式,任何人都知道分析代码并查找依赖项或类似内容的应用程序?

你的意思是编译器吗?我实际上是半严肃的(即使编译器不会给你一个缺少JAR的名字)。实际上,如果您使用Ant成功编译该应用程序,那么您可能在编译时需要所有依赖项(在运行时可能需要更多这些依赖项,但是,您需要执行代码识别它们)。也许你只需要在包装过程中在EAR中添加更多它们。或者您可能需要在应用服务器类路径级别添加更多依赖项。

在这两种情况下,jarFinder.comDocjar.comJarhoo.com等搜索引擎都可以帮助您识别缺失的JAR并解决您的ClassNotFoundExceptionNoClassDefFoundError

你应该给读者更多关于缺失课程的细节,我相信人们会给你一些提示,并指出你正确的方向。

答案 1 :(得分:1)

我知道没有简单的方法可以解决这个问题。如果应用程序提供了一个ant任务构建EAR,那么结果应该是一个自包含的可部署应用程序EAR。 EAR可能需要将额外的库添加到某个类路径中,而没有文档很难知道是什么。

我想,这句话是问题的核心:“有时甚至在我检查某个特定班级之后,我仍然会收到错误。”究竟是什么意思?

您收到一个类未找到错误,但您可以在EAR文件中看到该类?如果是这样的话那么事情真的很难,很可能是某种类加载器问题。我根本不了解WebLogic,但在WebSphere部署应用程序时,您可以选择是优先考虑EAR中的JAR还是优先考虑WebSphere本身的JAR。某些应用程序需要一个或另一个设置。如果在WebLogic中有类似的内容,那么这可能就是您的问题。

另一个可能的问题是,应用程序可能依赖于WebLogic提供的基础结构库(例如XML解析器),但需要使用随您使用的WebLogic版本提供的不同版本。

如果没有关于您正在使用的WebLogic版本支持应用程序的文档,我担心您正在进行长期,艰苦(甚至失败)的战斗。

答案 2 :(得分:0)

我假设您设法将此应用程序放在一起并在IDE中编译,可能是Eclipse。为什么不简单地将您在构建时可用的所有JAR放入EAR?

如果您不得不通过反复试验来调试它,您可以查看缺少的类列表,并通过Google搜索找出它们属于哪个罐子的类名,或者也可以在IDE中找到它们

如果您在识别某些类时遇到很多麻烦,请在此处发布类名(或错误消息),并且有人应该能够告诉您在哪里可以找到它所属的Jar。

答案 3 :(得分:0)

如果您能够成功构建和部署应用程序,但仍然可以获得有关缺少类的错误,则可能会通过反射调用某些jar类。您可能希望通过IDE在Project中搜索反射API调用。 这些电话可能是这样的, “Class cls = Class.forName(..); cls.newInstance()。”

  

有时甚至在我检查之后   我还有特定的课程   错误。

这可能是部署问题。检查类路径。 Classpath中可能缺少一些罐子。

答案 4 :(得分:0)

  

J2EE / Java中是否有任何快捷方式   “查找所有依赖项”,应用程序任何人   知道分析代码并找到   依赖性或类似的东西?

如果你能找到它们,我首先要从原始开发者那里获得文档......或帮助......。 [IMO,那些开发/提供软件而没有任何文档值得的人会被人们提出愚蠢的问题而不断窃听。]但我想你已经尝试过了。

然后是另一个答案中提到的jarfinder.com和其他服务。 (对我来说很新!)

如果失败,我会尝试在FQN上进行Google搜索。如果缺少的类是常用库的一部分,你可能会遇到Javadocs ......或者是其他人遇到类似问题的帖子。

如果“Google it”方法失败,请使用包名称中缺失类的线索来尝试找到它们的来源。如果他们遵循Sun建议,则名称应映射到您可以通过网络搜索找到的公司或(真实或伪)组织。