gpt4 book ai didi

使用 jetty 在 Eclipse 中运行 Web 应用程序时出现 java.lang.AbstractMethodError 错误。

转载 作者:行者123 更新时间:2023-12-03 02:10:35 26 4
gpt4 key购买 nike

我正在 Eclipse 中开发一个项目,当我使用 jetty 插件启动时,会给我一个

java.lang.AbstractMethodError: 
au.com.mycopmpany.impl.MyClassDAOImpl.findById(Ljava/lang/Integer;)Ljava/lang/Object;.

该文件在 Eclipse 中编译良好,并且代码正在实现错误所涉及的方法。根据我的阅读,这个错误表明“在运行时”JVM 找到了一个没有实现此方法的类。

但我可以向您保证,MyClassDAOImpl 绝对具有使用正确签名实现的 findById 方法。

这似乎是 Eclipse 编译器中的一个错误;我可以通过从命令提示符运行 maven package 来解决该问题,然后在 Eclipse 中运行该应用程序,效果很好。

Eclipse 编译器似乎存在某种与此类相关的错误。我确实在网上读到了一些关于 Eclipse 编译器中泛型的错误(该类确实使用泛型),但是这个基类/接口(interface)在我们的代码库中一遍又一遍地重新实现,并且这个类总是有问题。

有谁知道解决此问题的方法,或者更好的是解决此问题?

我每次都可以复制此异常,因此如果 Eclipse 编译器开发人员阅读此内容并且这是一个已知问题,请随时与我联系以获取跟踪问题的帮助。

更新:

存在问题的类是实现 GenericDAO 的众多类之一,其中 Generic 接口(interface)定义为:

public interface GenericDAO<T, TList> 

失败的问题方法是:

public T findById(Integer integer) throws APIException;   

最佳答案

尝试重建您的代码。

我猜测您有一个 DAO 接口(interface),并且接口(interface)和 impl 的签名略有不同,以至于编译器不会将接口(interface)视为由具体 impl 类完全实现。也许 Eclipse 不同步。

如果这不起作用,请查看 Eclipse 是否允许您从接口(interface)方法导航到具体实现。如果不能,这就是强化编译器告诉您的内容的线索。

检查您的类路径。也许您认为 JVM 正在加载的 impl 并不是这样。

如果您认为这是编译器的问题,请检查错误列表。

如果您在列表中没有看到错误,请假设您就是问题所在。很多人使用它;这么严重的错误早就被发现并修复了。

清除 Jetty 部署 - WAR 和所有临时文件。重建并重新部署。也许 Jetty 保留着旧版本的 .class 文件,这可以解释为什么它在命令行上工作,而不是在部署到网络时工作。

假设你首先、最后、并且始终是问题所在。

更新:有没有办法切换 Eclipse 使用的 JDK?你能指出一个 Sun JDK 吗?

这是我讨厌 Eclipse 的另一个原因。如果您的故事属实,我会更高兴成为 IntelliJ 用户。

问题:您是否正在实现 IBM's generic DAO

关于使用 jetty 在 Eclipse 中运行 Web 应用程序时出现 java.lang.AbstractMethodError 错误。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1175282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com