繁体   English   中英

通过-cp而不是-jar运行spring boot application jar

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM