java - 通过 -cp 而不是 -jar 运行 spring boot 应用程序 jar

标签 java spring-boot

我可以通过以下方式运行我的 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/

相关文章:

java - SQLite 中的 ListView 显示异常

java - 恢复按钮无法进行最后一项 Activity

spring-boot - 文件中的 Spring Boot http 安全 jwt key

java - 如何使用 Spring Boot 让 Shiro 返回 403 Forbidden 而不是重定向到 login.jsp

java - Spring Boot JPA,存储库不删除记录

java - 如何使用用户输入退出无限循环?

java - 如何通过 JavaMail 从 Yahoo 服务器发送电子邮件?

java - 如何使用非 Swing 类触发事件并监听它

java - Spring-Boot 2+ 强制使用 CGLIB 代理,即使 proxyTargetClass = false

java - 如何转换spring-boot请求参数