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

Java Weblogic应用程序抱怨某些类丢失,如何调试?,java,jakarta-ee,weblogic,classpath,Java,Jakarta Ee,Weblogic,Classpath,我有一个相当复杂的J2EE应用程序,我没有任何文档,我正在尝试让它运行 我已经使用ant构建脚本编译了一个包含WAR文件的EAR文件,但是即使我在weblogic控制台上“成功部署”了这个应用程序,它仍然不能工作 EAR文件中缺少许多必需的JAR,因此在部署应用程序时,控制台日志中会出现关于缺少类的错误。有时,即使我检查了某个特定的类是否存在,我仍然会得到错误 调试并运行此应用程序的最佳方法是什么 J2EE/Java中是否有“查找所有依赖项”的快捷方式,有人知道如何分析代码和查找依赖项之类的应用

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

我已经使用ant构建脚本编译了一个包含WAR文件的EAR文件,但是即使我在weblogic控制台上“成功部署”了这个应用程序,它仍然不能工作

EAR文件中缺少许多必需的JAR,因此在部署应用程序时,控制台日志中会出现关于缺少类的错误。有时,即使我检查了某个特定的类是否存在,我仍然会得到错误

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


J2EE/Java中是否有“查找所有依赖项”的快捷方式,有人知道如何分析代码和查找依赖项之类的应用程序吗?

我假设您成功地将此应用程序组装在一个IDE(可能是Eclipse)中并进行编译。为什么不干脆把构建时可用的所有罐子都放进耳朵里呢

如果您必须通过反复试验来调试,您可以查看缺少的类的列表,通过搜索类名来确定它们属于哪些JAR,或者您也可以在IDE中找到它们


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

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

有时甚至在我检查了一张支票之后 我还有什么特别的课程 错误

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

J2EE/Java中是否有“查找所有依赖项”的快捷方式,有人知道如何分析代码和查找依赖项之类的应用程序

你是说编译器吗?实际上,我在这里是半认真的(即使编译器不会告诉您丢失的JAR的名称)。事实上,如果您使用Ant成功编译该应用程序,那么您可能在编译时拥有所需的所有依赖项(您在运行时可能需要更多依赖项,但您需要执行代码来识别它们)。也许你只需要在包装过程中在耳朵里多加一些。或者,您可能需要在应用程序服务器类路径级别添加更多依赖项

在这两种情况下,像or或这样的搜索引擎可能会帮助您识别丢失的JAR,并解决您的
ClassNotFoundException
noclassdefounderror

实际上,你应该给读者提供更多关于缺失类的细节,我相信人们会给你一些提示,并为你指出正确的方向

J2EE/Java中是否有任何快捷方式可供选择 “查找所有依赖项”,任何人 知道分析代码并找到 依赖关系之类的

我会从另一次获取文档开始。。。或者帮助。。。如果你能找到的话,可以从原始开发者那里得到。[IMO,开发/提供没有任何文档的软件的人应该被问愚蠢问题的人不断地窃听。]但我想你已经试过了

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

如果失败,我会尝试在FQN上进行谷歌搜索。如果缺少的类是一个常用库的一部分,那么很有可能会遇到Javadocs。。。或者是别人发来的与你有类似问题的帖子


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

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

我想,这句话是问题的核心:“有时即使我检查了某个特定的类是否存在,我仍然会得到错误。”你到底是什么意思

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

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


如果没有文档证明您正在使用的WebLogic版本支持该应用程序,我担心您正在进行一场漫长、艰难(甚至失败)的战斗。

实际上,我只是使用ant从命令行编译,默认目标构建了战争并将其放在EAR中。因此,感谢您提出的将eclipse放入其中的建议,听起来这将有助于识别一些问题,接下来我将这样做。但是我是否正确地理解了你的建议,如果我可以构建一些东西,我也应该能够使用相同的jar运行它?我不明白,在这种情况下,我认为很可能我缺少一些纯粹的运行时依赖关系?它是