我可以通过以下方式运行我的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);
}
}
请告诉我是否做错了事。
答案 0 :(得分:1)
为什么您的命令不起作用?
我看到它是一个Spring Boot应用程序,Spring Boot应用程序的主类不是您的主类。参见here
如何在不指定jar名称的情况下启动?
解压缩jar并检查META-INF中的MANIFEST文件,用此处提到的主类替换命令行中的主类(例如主类可以为org.springframework.boot.loader.JarLauncher
)。
无论如何,我从未尝试过这样做,而且我认为这样做是不正确的。更改脚本以获取正确的名称是一种更好的方法,或者您可以每次使用固定的最终名称生成jar。