我有一个带有main方法的简单类。这不是我在应用程序中的主要类,而是一个工具。我想像
一样运行它java -cp mySpringBoot.jar com.pkg1.pkg2.pkg3.mytool
我可以看到这个类在同一个包中,但在BOOT-INF/classes/com/pkg1/pkg2/pkg3/mytool.class
我也尝试使用BOOT-INF/classes
文件夹,但它一直在说
Error: Could not find or load main class ... com.pkg1.pkg2.pkg3.mytool
编辑:
我在spring boot jar中的工具类非常简单,它与SpringBootApplication类所在的根不在同一个包中。
package com.comp.mypackage.tools;
//imports
public class MyTool{
public static void main (String args[]) {
......
}
}
答案 0 :(得分:1)
看看这个stackoverflow帖子How to run a JAR file
它将向您展示如何使用清单文件(您在哪里定义主方法),如何打包(创建)jar,以及运行jar。
答案 1 :(得分:0)
Spring boot创建了一个"胖JAR"与maven(所有依赖)。例如,如果您转到Spring Boot指南https://spring.io/guides/gs/maven/
克隆git repo。 mvn包(创建JAR文件)。查看JAR文件 - 内部" META-INF / MANIFEST.MF"。有一个" Main-Class:hello.HelloWorld",它定义了要运行的包类:
git clone https://github.com/spring-guides/gs-maven.git
cd gs-maven/complete
mvn package
cd target/
jar xvf gs-maven-0.1.0.jar
less META-INF/MANIFEST.MF
-----
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: ********
Created-By: Apache Maven 3.5.2
Build-Jdk: 1.8.0_121
Main-Class: hello.HelloWorld