我有一个名为命名的获得奇怪java.lang.NoSuchMethodError错误
接口public interface Namable { public String getName(); public void setName(String name); };
几类将实现这一点。
当我做这样的代码:
Namable foo = new X(); foo.getName();
(X是一个实现类)
我得到的错误:
java.lang.NoSuchMethodError: Namable.getName()Ljava/lang/String;
这是很奇怪的我和我想知道为什么会发生这种情况,有什么想法?
可编译例子:
命名的类:
public interface Namable
{
public String getName();
}
扩展类X:
public class X extends java.util.ArrayList implements Namable
{
private String name;
public X()
{
this.name = "bar";
}
public String getName()
{
return name;
}
}
测试类:
public class Test
{
public static void main()
{
Namable foo = new X();
foo.getName();
}
}
运行在此之后,我得到相同错误。我使用BlueJ的
在'Namable foo = X()'中是否缺少'new',或者''是静态工厂方法?你有没有用代理类做任何异乎寻常的事情?你是否使用了一个奇异的框架,就像使用代理类的DI框架或测试存根框架? – 2012-02-08 22:18:51
请为此问题提供更多代码(和正确的代码)。我认为你太简单了,无法准确描述问题。 – 2012-02-08 22:19:45
好的,代码中有一个“新”,X只是一个类(X也恰好扩展了ArrayList,这可能是它的一部分吗?)。我没有做任何奇怪的事情......事实上,我把这个问题摆脱了上下文,并试图按照上面的方式进行调试,并且仍然给出相同的错误。 – Alan 2012-02-08 22:27:34