Java 运行独立Jar需要在服务器上添加Jar才能运行

Java 运行独立Jar需要在服务器上添加Jar才能运行,java,spring,spring-boot,Java,Spring,Spring Boot,我创建了一个spring引导作业,它依赖于服务器上的属性,我可以让它像这样运行,而无需修改清单 /bin/java-Dspring.config.location=/var/tmp/com.jdbc.properties-jar my.jar 它是有效的。但是应用程序依赖于另一个jar,它是一个内部jar,位于/usr/local/share/jni/foo.jar下,我想将它添加到这个混合中 我尝试过无数次跑步,尝试过以下事情: java-cp/usr/local/share/jni/foo.

我创建了一个spring引导作业,它依赖于服务器上的属性,我可以让它像这样运行,而无需修改清单

/bin/java-Dspring.config.location=/var/tmp/com.jdbc.properties-jar my.jar

它是有效的。但是应用程序依赖于另一个jar,它是一个内部jar,位于/usr/local/share/jni/foo.jar下,我想将它添加到这个混合中

我尝试过无数次跑步,尝试过以下事情: java-cp/usr/local/share/jni/foo.jar-Dspring(提取原始行)

当我开始用谷歌搜索这个时,它会带我进行神奇的跑步之旅: 'org.springframework.boot.loader.JarLauncher' 或 'org.springframework.boot.loader.PropertiesLauncher' 然后弄脏舱单等


在过去的4个小时里没有成功。运行需要使用远程属性文件和附加jar文件的独立jar是否有最佳实践?如果可能,希望保持简单。

您是否尝试将
foo.jar
用作maven/gradle依赖项中提供的
依赖项,并将项目构建为可执行war文件


请参见构建可执行war文件的说明

如果您正在使用Spring Boot,并且希望有一个封装所有依赖项的胖jar,那么最好的方法是将所需的jar作为依赖项添加到项目中

假设您使用Maven构建项目,“foo.jar”需要作为Maven依赖项添加到项目中。然后,SpringBootMaven插件将获取jar并将其包含在您的胖jar中


即使“foo.jar”在任何Maven repo中都不存在,您仍然可以使用Maven命令mvn install:install file()将其手动添加到本地Maven repo中。

。在Linux服务器上运行spring引导独立jar。另外,从服务器上的静态文件读取数据库属性,并在jar文件中读取路径,该文件添加了仅存在于服务器上的功能。不能包含在启动库中

命令行运行(将转换为shell)并运行。

/path/to/.openjdk-1.7.0.55.x86_64/bin/java-cp/usr/somewhere/jni/Foo.jar:/path/where/lib/MYBOOTJAR.jar org.springframework.boot.loader.JarLauncher--spring.config.location=/path/to/properties/on/server/com.xxx.yyy.zzz.jdbc.properties

似乎在使用JarLauncher(除了从本地排除Foo.jar之外,对清单没有任何修改)


希望这对其他人有所帮助。

我按照提供的方式制作了foo.jar,然后发现您还必须将其排除在spring boot maven插件之外,否则它会显示在jar中。我在本地使用jar文件进行构建,但必须确保调用时它只存在于服务器上。所以这个问题已经解决了。至于构建战争,我不确定这是否是一个选项,因为它部署在jvm上,而不是容器上。我们有很多Spring批处理作业在那里运行,这是第一次将Spring引导作为jar运行。我可能会放弃这个目标,在我的生活中造成太多的焦虑。谢谢你的回复。