为什么会发生这种异常?

时间:2011-01-14 18:05:20

标签: java exception intellij-idea

参见编辑2

你好,我很难理解为什么会发生这种异常


exception

javax.servlet.ServletException: Error instantiating servlet class controllers.Dashboard
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:662)
root cause

java.lang.RuntimeException: Uncompilable source code - missing method body, or declare abstract
    DAO.OrderDAO.(OrderDAO.java:68)
    BO.OrderForm.(OrderForm.java:33)
    controllers.Dashboard.(Dashboard.java:23)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    java.lang.Class.newInstance0(Class.java:355)
    java.lang.Class.newInstance(Class.java:308)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:662)

起初我在NetBeans 6.9.1中得到了这个并继续搜索并找到了这个 weird bug尝试解决方案后发现没有成功我决定切换IDE,所以我下载了Intellij IDE 9(到目前为止喜欢它)并且仍然有相同的异常!!我的意思是来吧..,只有三个不属于常见库的类是DAOBOcontrollers包,它们是

现在我丢失了,因为代码存在且没有结肠错字或任何东西。


编辑1:

删除了DAO.OrderDAO.javaBO.OrderForm.javacontrollers.OrderSearch.java的源代码,因为它的结论是问题是由以下某个类别(其中一个尚未确定)引起的。所以我将IntelliJ调试器配置为在抛出Exception时停止并且我在查找类ClassNotFoundException时遇到org.apache.catalina.startup.bootstrap我不确定这是否与{{1}有关变量,因为我已经下载了apache-tomcat-6.0.30并且我验证了那个麻烦的类。有什么建议吗?


编辑2:

切换回NetBeans 6.9.1添加了一堆库,Runtime异常停止了,但是我再次遇到上述异常和堆栈跟踪,我重申方法体就在那里!! 指向complete trace的链接,密码为1234

4 个答案:

答案 0 :(得分:5)

它就在你的堆栈跟踪中

java.lang.RuntimeException: Uncompilable source code - missing method body, or declare abstract

你没有向我们展示所有的代码,所以我不能确切地指出它,但似乎你有一个扩展Abstract类的类,并且你没有提供一个抽象的方法的实现类。因此,正如例外所述,您可以:

  1. 实施遗漏方法
  2. 使类抽象化,并在子类中提供实现。
  3. 你可能想要选项1。

    编辑 - 你将不得不深入挖掘调用堆栈。您可能正在使用某种外部API,扩展其中一个抽象类。在这些行的某个地方

    at DAO.OrderDAO.(OrderDAO.java:68)
        at BO.OrderForm.(OrderForm.java:33)
        at controllers.OrderSearch.(OrderSearch.java:43)
    

答案 1 :(得分:1)

我已经看到了你的代码和你的异常。我将以尽可能连贯的方式回答格式,因此任何事实上的错误都可以被捕获(并且被嘲笑;))

1-本准则可编辑。所以问题显然是构建过程。可能是IDE正在维护过时的缓存。

您是否清理了旧的构建位置?使用maven而不是依赖于IDE构建过程? (特别是Netbeans(让我做100件糟糕的IDE))

您是否也检查了打包文件。 (。罐)。文件大小和时间戳是否有意义。

2-您切换了IDE并获得了相同的异常。 (赞成选择IDEA 9)

这很棘手。您如何将应用程序部署到服务器?你是如何建造它的。

结论:假设构建是最新的并且您正在部署最新版本,您是否检查了服务器运行时中是否存在虚假的旧jar。可能是在tmp或不同名称的某个地方有一个挥之不去的jar文件。我将尝试在另一台服务器上部署。或者重新启动服务器并清理服务器tmp位置。

答案 2 :(得分:0)

java.io.NotSerializableException: DTO.ColorDTO

似乎ColorDTO没有实现Serializable

和/或

java.lang.RuntimeException: Uncompilable source code - missing method body, or declare abstract
at DAO.OrderDAO.<init>(OrderDAO.java:68)
at BO.OrderForm.<init>(OrderForm.java:33)

OrderDAO没有实现它应该实现的所有方法,或者使它抽象化,并在子类中提供它的实现,最后一切都应该是具体的。

答案 3 :(得分:0)

大家好抱歉没发布,问题解决了,我只是一直编码,直到有一次我编译并停止抛出异常,顺便说一下我一直使用IntelliJ。我相信这是缓存,但谁知道,也许我们现在永远不会......感谢大家的支持。