WAR 文件:无法找到或加载主文件 class,但它在那里
WAR file: Could not find or load main class, but it’s there
我已经使用 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 引导应用程序 class。
MANIFEST.MF
包含 Main-Class
条目:
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
据我所知,有了这个目录结构,就不需要额外摸索 class 路径了。那为什么不能运行?
附加信息:这是一个教学项目。我正在尝试从 Spring 带有嵌入式 Tomcat 的引导 MVC 应用程序提供 .jsp
页面。根据互联网,此设置仅在您将应用程序打包为 WAR 和 运行 时才有效 java -jar
.
jar 文件只是一个 zip 文件,zip -l application.war
也是如此,并确保你的 App00HelloMvcKit
class 在那里,你的 MANIFEST.MF
在正确的地方。其中一件事情可能是不正确的,所以修正它。
如果您无法理解,post 上述命令的输出对您的问题的编辑。
很可能 IntelliJ "Web Application: Archive" 不完全理解 Spring 引导语义。尝试用 Maven Spring Boot Plugin, as in explained in chapter 68.2 Packaging Executable Jar and War Files:
打包 WAR
$ mvn clean package spring-boot:repackage
$ java -jar target/application.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
...
App00HelloMvcKt
包含 fun main(...)
,App00HelloMvc
是 Spring 引导应用程序 class。
MANIFEST.MF
包含 Main-Class
条目:
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
据我所知,有了这个目录结构,就不需要额外摸索 class 路径了。那为什么不能运行?
附加信息:这是一个教学项目。我正在尝试从 Spring 带有嵌入式 Tomcat 的引导 MVC 应用程序提供 .jsp
页面。根据互联网,此设置仅在您将应用程序打包为 WAR 和 运行 时才有效 java -jar
.
jar 文件只是一个 zip 文件,zip -l application.war
也是如此,并确保你的 App00HelloMvcKit
class 在那里,你的 MANIFEST.MF
在正确的地方。其中一件事情可能是不正确的,所以修正它。
如果您无法理解,post 上述命令的输出对您的问题的编辑。
很可能 IntelliJ "Web Application: Archive" 不完全理解 Spring 引导语义。尝试用 Maven Spring Boot Plugin, as in explained in chapter 68.2 Packaging Executable Jar and War Files:
打包 WAR$ mvn clean package spring-boot:repackage
$ java -jar target/application.war