Java Package,Project,NoSuchMethod错误

时间:2010-04-15 16:30:17

标签: java eclipse java-ee nosuchmethoderror

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

XProject - > XPackage - > XClass - > X1Method(); X2Method();

YProject - > YPackage - > YClass - > Y1Method();

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

所有方法都是公开的,方法名称没有任何问题。让其中一个工作而另一个给出运行时错误只是无稽之谈。

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

2 个答案:

答案 0 :(得分:2)

来自java.lang.NoSuchMethodError javadoc

  

如果应用程序试图调用类的指定方法(静态或实例),并且该类不再具有该方法的定义,则抛出该异能。

     

通常,编译器会捕获此错误;如果类的定义发生了不兼容的更改,则此错误只能在运行时发生。

换句话说,运行时类路径不包含带有desied方法的类,而它在compiletime类路径中可用。总结:你的类路径搞砸了。清理并对齐它。如何做到这一点取决于您的环境。

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

如果这不能解决问题,那么很可能appserver或JRE的默认类路径是脏的。您需要从JRE/libJRE/lib/extTomcat/lib中移除任何不必要的与项目相关的库,并承诺您不再触摸这些库路径;)

答案 1 :(得分:0)

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

由其他人评论。有关IDE / Build系统甚至代码的详细信息需要进一步回答。