Java 错误:找到接口...但上课是意料之中的
我从代码中收到一个奇怪的运行时错误:
"Found interface [SomeInterface] but class was expected"
怎么会这样?如何实例化接口?
更新:(为了回应一些答案)我正在编译并针对同一组库运行,但是我正在使用Guice为此特定接口注入提供程序。
当我将实现绑定到接口时,问题就消失了(似乎@ImplementedBy注释是不够的)。
我对Guice设法实际实例化界面的机制更感兴趣。
我从代码中收到一个奇怪的运行时错误:
"Found interface [SomeInterface] but class was expected"
怎么会这样?如何实例化接口?
更新:(为了回应一些答案)我正在编译并针对同一组库运行,但是我正在使用Guice为此特定接口注入提供程序。
当我将实现绑定到接口时,问题就消失了(似乎@ImplementedBy注释是不够的)。
我对Guice设法实际实例化界面的机制更感兴趣。
当运行时类路径与编译时类路径不同时,会发生这种情况。
编译应用程序时,一个类(在问题中命名)作为一个类存在。SomeInterface
当应用程序在编译时运行时,作为接口(而不是类)存在。SomeInterface
这会导致 在运行时引发 。IncompatibleClassChangeError
如果在编译时类路径上具有不同版本的 jar 文件,则这种情况很常见, 而不是在运行时类路径上。
最有可能的是,代码是针对库中的类编译的,然后该类被更改为您运行所针对的版本中的接口。