代码之家  ›  专栏  ›  技术社区  ›  Simon Sudhin

Spring NoClassDefFoundError:名称错误

  •  0
  • Simon Sudhin  · 技术社区  · 10 年前

    我有以下课程:

    package com.spring.domain;
    
    @Document(collection = "sportactions") // for my mongodb collection
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public class SportAction extends Action {
          //code logic
    }
    

    当我编译它时,它会给我以下错误:

    Servlet。带有路径的上下文中的servlet[dispatcherServlet]的service() []引发异常[处理程序处理失败;嵌套异常为 java.lang.NoClassDefFoundError:com/spring/domain/ Sportaction运动 (错误 名称:com/spring/domain/ SportAction运动 )]有根本原因 java.lang.NoClassDefFoundError:com/spring/domain/ Sportaction运动 (错误 名称:com/spring/domain/ SportAction运动 )

    我很困惑,因为我可以看到我的班级被称为体育运动,有一个大写字母 A 而不是一封小信 a 所以我尝试重构我的类名,看看它是否可以使用一个小字母 一 .

    我收到以下错误:

    Servlet。带有路径的上下文中的servlet[dispatcherServlet]的service() []引发异常[处理程序处理失败;嵌套异常为 java.lang.NoClassDefFoundError:com/spring/domain/ SportAction运动 (错误 名称:com/spring/domain/ Sportaction运动 )]有根本原因 java.lang.NoClassDefFoundError:com/spring/domain/ SportAction运动 (错误 名称:com/spring/domain/ Sportaction运动 )

    spring应用程序将完美地编译,但当我尝试使用类时,这将出现在运行时。

    我也做了几个 clean 然后 build 在gradle上,它仍然不起作用。

    有人知道代码有什么问题吗?

    当我试图从mongodb获取Sportaction列表时,java代码的这行出现了错误:

    List<Sportaction> sportactions = mongoTemplate.find(query, Sportaction.class);
    
    1 回复  |  直到 10 年前
        1
  •  0
  •   Simon Sudhin    10 年前

    我不知道为什么会发生这个错误,但我的构建。gradle文件要求我构建一个jar,如下所示:

    task stage(type: Copy, dependsOn: [clean, build]) {
        from jar.archivePath
        into project.rootDir 
        rename {
            'app.jar'
        }
    }
    stage.mustRunAfter(clean)
    
    clean << {
        project.file('app.jar').delete()
    }
    

    当我运行它并将其推送到我的存储库时,我得到了一个非常奇怪的错误,我的文件名现在是SportAction,但我的java文件中的类名是:

    public class Sportaction
    

    这导致了不匹配,我尝试重构名称以匹配文件名 SportAction 但出现了同样的错误名称错误。然后,我决定将名称重构为其他类似的名称 SportEvents 然后重新运行代码,然后它就工作了。

    这不是最好的解决方案,但现在必须这样做。我怀疑这与罐子的建造方式有关,但我不确定 app.jar 从未运行。这个 Application.main() 是我运行Spring应用程序时运行的类。

    我也很困惑,为什么我在比特桶上的SportAction类似乎根本没有提交-请看我的Action文件旁边的3个点-它没有日期,也没有描述。

    enter image description here