3

我有 2 个项目链接,这 2 个项目下都有一个包。

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

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

我正在尝试从 Y1 方法调用 X1 和 X2 方法。我可以调用 X1 方法,但是当我调用 X2 方法时出现运行时错误 (java.lang.NoSuchMethodError:)

所有方法都是公共的,方法名称没有错。让其中一个工作而另一个给出运行时错误只是胡说八道。

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

4

2 回答 2

2

java.lang.NoSuchMethodErrorjavadoc

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

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

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

更新:因此,它是 Eclipse 中的 Java EE Web 应用程序?假设一个是Dynamic Web Project,另一个是普通的Java Project,在Dynamic Web Project的项目属性中,您需要在Build PathJava EE Module Dependencies中添加普通的Java Project

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

于 2010-04-15T16:36:05.697 回答
0

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

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

于 2010-04-15T16:35:17.233 回答