ste*_*mac 2 java eclipse jetty
我正在研究eclipse中的一个项目,当我使用jetty插件启动时给了我一个
java.lang.AbstractMethodError:
au.com.mycopmpany.impl.MyClassDAOImpl.findById(Ljava/lang/Integer;)Ljava/lang/Object;.
Run Code Online (Sandbox Code Playgroud)
这个文件在Eclipse中编译得很好,代码正在实现错误所讨论的方法.从我的阅读中,这个错误表明"在运行时"JVM发现一个没有实现此方法的类.
但我可以向你保证,MyClassDAOImpl最确定的findById方法是使用正确的签名实现该方法.
这似乎是Eclipse编译器中的一个错误; 我可以通过maven package从命令提示符运行然后在Eclipse中运行应用程序正常工作来解决问题.
似乎Eclipse编译器在此类中存在某种错误.我在网上读过一些关于Eclipse编译器中泛型错误的东西(这个类确实使用了Generics)但是这个基类/接口在我们的代码库中反复重复实现,这个类总是有问题.
有没有人知道解决方法,或者更好的是,解决这个问题?
我每次都可以复制此异常,因此如果Eclipse编译器开发人员阅读此内容并且这是一个已知问题,请随时与我联系以获取有关跟踪问题的帮助.
更新:
有问题的类是许多实现GenericDAOGeneric接口定义为的地方之一:
public interface GenericDAO<T, TList>
Run Code Online (Sandbox Code Playgroud)
有问题的方法是失败的:
public T findById(Integer integer) throws APIException;
Run Code Online (Sandbox Code Playgroud)
尝试重建代码.
我猜你有一个DAO接口,接口和impl的签名略有不同,编译器看不到接口是由具体的impl类完全实现的.也许Eclipse不同步.
如果这不起作用,请查看Eclipse是否允许您从接口方法导航到具体实现.如果它不能,这是一个强化编译器告诉你的线索.
检查你的CLASSPATH.也许您认为由JVM加载的impl不是.
如果您认为编译器存在问题,请检查错误列表.
如果您没有在列表中看到错误,请假设您遇到了问题.很多人都喜欢它; 一个严重的错误很久以前就已被发现和修复.
清理Jetty部署 - WAR和所有临时文件.重建和重新部署.也许Jetty持有旧版本的.class文件,这可以解释为什么它在命令行上运行而不是在部署到Web时.
假设你是第一个,最后一个,也是永远的问题.
更新:有没有办法切换Eclipse使用的JDK?你能指出一个Sun JDK吗?
这是我讨厌Eclipse的另一个原因.你的故事,如果是真的,会让我更高兴成为一名IntelliJ用户.
问题:您是否正在实施IBM的通用DAO?
| 归档时间: |
|
| 查看次数: |
11124 次 |
| 最近记录: |