我有以下课程:
package com.spring.domain;
@Document(collection = "sportactions") // for my mongodb collection
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SportAction extends Action {
//code logic
}
当我编译它时,它会给我以下错误:
用于servlet [dispatcherServlet]的Servlet.service()与path的上下文 []抛出异常[处理程序处理失败;嵌套异常是 java.lang.NoClassDefFoundError:com / spring / domain / Sportaction (错误 名称:com / spring / domain / SportAction )]有根本原因 java.lang.NoClassDefFoundError:com / spring / domain / Sportaction (错误 name:com / spring / domain / SportAction )
我很困惑,因为我可以看到我的班级被称为SportAction,大写A
而不是小写字母a
所以我试图重构我的班级名称,看看它是否可以用于小写字母a
。
我收到以下错误:
用于servlet [dispatcherServlet]的Servlet.service()与path的上下文 []抛出异常[处理程序处理失败;嵌套异常是 java.lang.NoClassDefFoundError:com / spring / domain / SportAction (错误 名称:com / spring / domain / Sportaction )]有根本原因 java.lang.NoClassDefFoundError:com / spring / domain / SportAction (错误 name:com / spring / domain / Sportaction )
spring应用程序将完美编译,但是当我尝试使用该类时,它将在运行时出现。
我还在gradle上做了几个clean
然后build
,它仍然无效。
有谁知道代码有什么问题?
当我尝试从mongodb获取Sportaction列表时,在我的java代码行中出现错误:
List<Sportaction> sportactions = mongoTemplate.find(query, Sportaction.class);
答案 0 :(得分:0)
我不知道为什么会出现这个错误,但是我的build.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
之类的其他内容,然后重新运行代码,然后就可以了。
这不是最好的解决方案,但现在必须要做。我怀疑它与jar的构建方式有关但我不确定app.jar
是否从未运行过。 Application.main()
是我运行Spring应用程序时运行的类。
我也很困惑为什么我的bitbucket上的SportAction类似乎根本没有提交 - 看看我的Action文件旁边的那3个点 - 它没有日期,也没有描述