Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 如何使用Spring Boot将目录放在类路径的第一位?_Spring Boot - Fatal编程技术网

Spring boot 如何使用Spring Boot将目录放在类路径的第一位?

Spring boot 如何使用Spring Boot将目录放在类路径的第一位?,spring-boot,Spring Boot,我正在使用Maven构建我的Spring Boot应用程序,因此我可以从以下内容开始: java -jar myjar-1.0-SNAPSHOT.jar --spring.profiles.active=prod 我希望在类路径上首先有一个目录,它允许我将一些文件放在文件系统上,而不必解压jar来更改它们 我尝试过使用loader.path,但似乎不起作用 java -Dloader.path="config/*" -jar myjar-1.0-SNAPSHOT.jar --spring.pr

我正在使用Maven构建我的Spring Boot应用程序,因此我可以从以下内容开始:

java -jar myjar-1.0-SNAPSHOT.jar --spring.profiles.active=prod
我希望在类路径上首先有一个目录,它允许我将一些文件放在文件系统上,而不必解压jar来更改它们

我尝试过使用
loader.path
,但似乎不起作用

java -Dloader.path="config/*" -jar myjar-1.0-SNAPSHOT.jar --spring.profiles.active=prod

config
dir是jar所在位置的子目录。我正在尝试加载一个密钥库文件,该文件在我的应用程序中作为
资源注入。src/main/resources中有这样一个文件,但它只在我的IDE中起作用,在打包为jar时不起作用。因此,我想先在类路径上放置一个文件,以便在类路径上首先找到该文件。

您可以使用
loader.path
,但前提是
主类
PropertiesLauncher
(这取决于您如何构建JAR文件)。也许你需要在启动插件中用packaging=ZIP重新构建JAR(例如)?您不能将密钥库的路径设置为“文件:”URL吗?

使用
文件:
可以解决此问题,我可以将其用作解决方法。然而,在Maven插件中使用
ZIP
,并不会将它放在类路径上,我真的希望它能正常工作。当我添加
loader.path
时,我得到了
NoClassDefFoundError:org/springframework/transaction/PlatformTransactionManager,这是因为您正在删除默认的loader.path。您需要“loader.path=lib/,config/”才能同时使用这两个选项。事实上,反过来说(假设您要求“config/”作为第一个选项)。啊!我认为
loader.path
是在类路径上添加额外的东西。Spring Boot是否提供了一些方法来向类路径添加项,而不是像设置
loader.path
时那样完全替换它?