我的代码中出现了一个奇怪的运行时错误:
"Found interface [SomeInterface] but class was expected"
怎么会发生这种事呢?接口如何实例化?
Update:(回应一些答案)我正在针对同一组库进行编译和运行,但是我am using Guice http://code.google.com/p/google-guice/为这个特定的接口注入一个提供者。
当我将实现绑定到接口时,问题就消失了(似乎 @ImplementedBy 注释还不够)。
我对 Guice 成功实例化接口的机制更感兴趣。
当运行时类路径与编译时类路径不同时,就会发生这种情况。
当你的应用程序被编译时,一个类(名为SomeInterface
在你的问题中)作为一个类存在。
当您的应用程序在编译时运行时,SomeInterface
作为接口(而不是类)存在。
这会导致IncompatibleClassChangeError
在运行时抛出。
如果编译时类路径上的 jar 文件版本与运行时类路径上的 jar 文件版本不同,则这种情况很常见。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)