Java包、项目、NoSuchMethod错误

Java包、项目、NoSuchMethod错误,java,eclipse,jakarta-ee,nosuchmethoderror,Java,Eclipse,Jakarta Ee,Nosuchmethoderror,我有两个链接的项目,这两个项目下都有一个包 XProject->XPackage->XClass->X1Method();x2方法() YProject->YPackage->YClass->y1方法() 我试图从Y1方法调用X1和X2方法。我可以调用X1方法,但当我调用X2方法时,我会得到一个运行时错误(java.lang.NoSuchMethodError:) 所有方法都是公共的,方法名没有问题。让其中一个运行,而另一个却给出运行时错误,这简直是胡说八道 任何帮助都将不胜感激。 谢谢。很可能

我有两个链接的项目,这两个项目下都有一个包

XProject->XPackage->XClass->X1Method();x2方法()

YProject->YPackage->YClass->y1方法()

我试图从Y1方法调用X1和X2方法。我可以调用X1方法,但当我调用X2方法时,我会得到一个运行时错误(java.lang.NoSuchMethodError:)

所有方法都是公共的,方法名没有问题。让其中一个运行,而另一个却给出运行时错误,这简直是胡说八道

任何帮助都将不胜感激。
谢谢。

很可能是针对类路径中某个.class的XClass进行编译。但是运行时(可能是链接的项目)有不同版本的XClass。这是特定于环境的。您需要查看编译期间类路径中有哪些工件,以及在运行期间拾取了哪些工件

正如其他人评论的那样。有关IDE/构建系统甚至代码的详细信息需要进一步回答。

来自:

如果应用程序试图调用类(静态或实例)的指定方法,而该类不再具有该方法的定义,则引发

通常,编译器会捕获此错误;只有在类的定义发生不兼容的更改时,才会在运行时发生此错误

换句话说,运行时类路径不包含具有desied方法的类,而它在compiletime类路径中可用。总结:你的类路径是混乱的。清理并对齐它。如何做完全取决于你的环境

更新:因此,它是Eclipse中的Java EE Web应用程序?假设一个是动态Web项目,另一个是普通Java项目,在动态Web项目的项目属性中,您需要在构建路径Java EE模块依赖项中添加普通Java项目


如果这不能解决问题,那么appserver或JRE的默认类路径很可能是脏的。您需要从
JRE/lib
JRE/lib/ext
Tomcat/lib
中删除任何不必要的项目相关库,并向自己保证不再接触这些库路径;)

你的构建系统是什么?有没有可能您是在旧版本的XClass上构建的?您能发布一些示例代码来说明这个问题吗?我正在使用Tomcat6.0作为应用服务器。使用JavaEE在Eclipse上开发。我在Eclipse上使用Tomcat6.0。你能帮我吗?你说得对,这是一个JavaEE网络应用程序。Y项目是动态Web应用程序X项目是普通Java项目。动态web项目的生成路径中有X个项目。我不知道模块依赖关系,但它只使用构建路径。在我插入新功能后,它们就不起作用了。有没有办法告诉tomcat使用最新版本的X项目?这很可能是误解或是混乱的类路径。将其添加到JavaEE模块依赖项中,这是唯一正确的方法。但是,如果您没有在JRE和Tomcat的类路径中不必要地放置“无关”库,我将再次验证。它已经添加到模块依赖项中。我想这就是为什么X1方法仍然有效的原因。我认为在JRE或tomcat的类路径中没有不相关的库。为了避免显而易见的问题:Eclipse的自动构建是否开启了?(应为默认值,请选中项目菜单)。更改后是否重新部署webproject并重新启动服务器?(确保未缓存/丢失任何内容)。