[英]What is advantage of using service wrapper in Spring boot instead of jar running?
[英]Running spring boot application jar by -cp instead of -jar
我可以通过以下方式运行我的spring boot应用程序JAR:
java -Xms256M -Xmx1024M -Dspring.profiles.active=local -Dport=9999 -jar "\Path\To\sampleV1.0.jar"
但是,当我尝试通过-cp
运行时(原因是,我不想提及jar名称,因为它会根据新版本而不断变化,而-jar
不支持通配符)选项如下:
java -Xms256M -Xmx1024M -Dspring.profiles.active=local -Dport=9999 -cp "\Path\to\jar\*" package.structure.name.MainClass
然后我得到错误:
> Exception in thread "main" java.lang.NoClassDefFoundError:
> org/springframework/boot/SpringApplication
> at com.citi.isg.lmc.MainClass.main(MainClass.java:20)
> Caused by: java.lang.ClassNotFoundException:
> org.springframework.boot.SpringApplication
> at java.net.URLClassLoader.findClass(Unknown Source)
> at java.lang.ClassLoader.loadClass(Unknown Source)
> at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
> at java.lang.ClassLoader.loadClass(Unknown Source)
> ... 1 more
类代码为:
@SpringBootApplication
@EnableEurekaServer
public class MainClass{
public static void main(String[] args) {
System.setProperty("spring.config.name", "any_word_for_example");
SpringApplication.run(MainClass.class, args);
}
}
如果我做错了事,请告诉我。
为什么您的命令不起作用?
我看到它是一个Spring Boot应用程序,而Spring Boot应用程序的主类不是您的主类。 看这里
如何在不指定jar名称的情况下启动?
解压缩jar并检查META-INF中的MANIFEST文件,用此处提到的主类替换命令行中的主类(例如,主类可以是org.springframework.boot.loader.JarLauncher
)。
无论如何,我从未尝试过这样做,而且我认为这样做是不正确的。 更改脚本以获取正确的名称是一种更好的方法,或者您可能每次都可以使用固定的最终名称生成jar。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.