Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WAR文件:无法找到或加载主类,但它’;在那里_Java_Spring_Spring Boot_Kotlin_War - Fatal编程技术网

Java WAR文件:无法找到或加载主类,但它’;在那里

Java WAR文件:无法找到或加载主类,但它’;在那里,java,spring,spring-boot,kotlin,war,Java,Spring,Spring Boot,Kotlin,War,我用Intellij IDEA构建了一个WAR归档工件,其中包含一个用Kotlin编写的Spring Boot MVC应用程序 以下是相关内容: $ jar tvf application.war ... 1649 [timestamp] WEB-INF/classes/org/domain/apps/App00HelloMvcKt.class 2087 [timestamp] WEB-INF/classes/org/domain/apps/App00HelloMvc.class ... Ap

我用Intellij IDEA构建了一个WAR归档工件,其中包含一个用Kotlin编写的Spring Boot MVC应用程序

以下是相关内容:

$ jar tvf application.war
...
1649 [timestamp] WEB-INF/classes/org/domain/apps/App00HelloMvcKt.class
2087 [timestamp] WEB-INF/classes/org/domain/apps/App00HelloMvc.class
...
App00HelloMvcKt
包含
fun main(…)
,而
App00HelloMvc
是Spring Boot应用程序类

MANIFEST.MF
包含
主类
条目:

Main-Class: org.domain.apps.App00HelloMvcKt
但是,当我运行它时,出现了一个问题:

$ java -jar application.war
Error: Could not find or load main class org.domain.apps.App00HelloMvcKt
Caused by: java.lang.ClassNotFoundException: org.domain.apps.App00HelloMvcKt
据我所知,使用这种目录结构,不需要对类路径进行额外的摸索。那为什么它不能运行呢



附加信息:这是一个教学项目。我试图使用嵌入式Tomcat为Spring Boot MVC应用程序的
.jsp
页面提供服务。根据互联网,只有将应用程序打包成WAR并使用
java-jar
运行时,这种设置才会起作用。jar文件只是一个zip文件,所以请使用
zip-l应用程序.WAR
并确保
App00HelloMvcKit
类在其中,并且确保
MANIFEST.MF
位于正确的位置。其中一个可能是不正确的,所以请修复它

如果您无法理解,请将上述命令的输出发布到问题的编辑中。

最有可能的是IntelliJ“Web应用程序:存档”不完全理解Spring引导语义。尝试使用包装战争,如第章中所述:


你是如何发动战争的?您真的需要JSP吗?WAR是通过“Web应用程序:存档”预设创建的Intellij IDEA项目工件。正如我所说,这是一个教学项目,因此JSP。更重要的是,我想知道这里出了什么问题,因为我看不出
ClassNotFoundException
的原因。可能是因为一个普通的java-jar,其清单中提到了主类,不会在org.domain.apps.App00HelloMvcKt.class的WEB-INF/classes文件夹中查找,它必须进行不同的打包。您应该使用spring引导插件来创建war,而不是简单地导出war。虽然使用IntelliJ.jsp,
.jsp
文件在404中仍然失败得很惨。但这是另一天的故事。
$ mvn clean package spring-boot:repackage
$ java -jar target/application.war