我可以通过以下方式运行我的 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);
}
}
如果我做错了什么,请告诉我。
最佳答案
Why your command doesn't work?
我看到这是一个Spring Boot应用程序,并且Spring Boot应用程序的主类不是您的主类。请参阅here
How to launch without specifying the jar name?
解压你的jar并检查META-INF中的MANIFEST文件,将命令行中的主类替换为这里提到的主类(例如主类可以是org.springframework.boot.loader.JarLauncher
)。
无论如何,我从来没有尝试过这个,而且我认为这不是正确的做法。更改脚本以获得正确的名称是更好的方法,或者您可以每次生成具有固定最终名称的 jar。
关于java - 通过 -cp 而不是 -jar 运行 spring boot 应用程序 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51542352/