Я хотел запустить приложение как JAR со встроенным Tomcat, но проблема, с которой я столкнулся, заключается в следующем:
У меня есть следующая начальная точка входа для приложения:
public static void main(String[] args) throws Exception {
String webappDirLocation = "src/main/webapp/";
Tomcat tomcat = new Tomcat();
Integer webPort = 8081;
tomcat.setPort(webPort);
tomcat.addWebapp("/", new File(webappDirLocation).getAbsolutePath());
tomcat.start();
tomcat.getServer().await();
}
Как только я запускаю приложение из IDE, приложение запускается успешно. Однако основная проблема заключается в том, что если я сгенерирую JAR-файл и захочу запустить его через командную строку с java -jar myJar.jar
, я получу ошибку The main resource set specified [] is not valid
. И путь внутри [] действительно неверен. По какой-то причине он получает путь к текущему JAR, который я хочу использовать, и добавляю к нему webappDirLocation
path.
Есть ли способ сделать JAR со встроенным Tomcat способным запускаться из командной строки?
Я использую следующие плагины Maven для генерации исполняемого JAR:
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>my.package.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>my.package.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>