更新

我使用描述的方法here从“ classpath:”和“ classpath *:”中打印出生成的java类路径,并获得了以下内容,但是对于我在jms.properties中定义的属性,我仍然从PPC获得了BeanDefinitionStoreException文件。是什么赋予了!?

[main] INFO - .......Loading........
[main] INFO - printing normal classpath
[main] INFO - class path resource [conf/dev/jgroups.properties]
[main] INFO - printing wildcard classpath
[main] INFO - URL [jar:file:/filepath/StandaloneProject.jar!/conf/dev/jgroups.properties]
[main] INFO - URL [jar:file:/filepath/DependencyProject.jar!/conf/dev/jdbc.properties]
[main] INFO - URL [jar:file:/filepath/DependencyProject.jar!/conf/dev/jms.properties]


它在我的Windows机器上工作正常。它在我的开发Linux机器上失败了???如果您没有实际的答案,但可以帮助我如何调试正在发生的事情,则可以提供任何帮助,我们将不胜感激。

更新#2

我也尝试添加

<property name="ignoreUnresolvablePlaceholders" value="true" />


到我的EncryptablePropertyPlaceholderConfigurer的属性列表中,但是我仍在获取BeanDefinitionStoreException :(

背景

我正在使用一个独立的Java Maven项目,该项目包括另一个项目作为依赖项。包含的项目是一组核心类,并且具有每个环境的属性文件。

这些文件在打包到依赖项jar中之前将它们存储在main / resources / conf / [env]中(我们将其称为DependencyProject)。该项目包括一个Spring 2.5.6 PropertyPlaceholderConfigurer,用于将属性自动加载到bean中。

现在,我想做的是使用jGroups在多个服务器之间集群我的应用程序。除了DependencyProject的属性外,这还需要将特定于环境的属性文件添加到StandaloneProject中,因此jGroups知道在每个环境中需要与之通信的地址和端口。这些属性不属于依赖项。我想将它们放置在StandaloneProject下具有相同文件夹名称的配置路径中,以使其美观且一致。每个人都喜欢一致性,对吗?

因此,到目前为止,我得到的是如下所示的文件夹:


  DependencyProject/src/main/resources/conf/[env]
  (这些文件夹包含jms.properties,jdbc.properties等文件)





  StandaloneProject/src/main/resources/conf/[env]
  (这些文件夹包含一个jgroups.properties文件)


DependencyProject在PropertyPlaceholderConfigurer中声明以下位置:


  <value>classpath*:conf/${implementation.env}/*.properties</value>


我不打算用Spring加载jGroups属性文件。我正在我的应用程序执行中使用老式方法。

问题

conf / [env]目录路径重复的简单事实导致某处发生冲突,并且DependencyProject的任何属性均未加载。我尝试添加“ classpath *:”而不是仅添加“ classpath:”,但是它没有任何效果。我也尝试过与IgnoreUnresolvablePlaceholders一起玩,但是我不确定这是否是正确的解决方案。

我知道它必须专门与文件夹结构有关,因为我可以插入一个文件夹,以使两个路径不会相互镜像,并且一切正常。


  DependencyProject/src/main/resources/conf/[env]
  StandaloneProject/src/main/resources/conf/folder/[env]


有任何想法吗?

最佳答案

我最后只是将一个jgroups文件夹放在conf文件夹下。我本来希望所有内容都在/ conf目录中,而不是在/ conf中有一些属性,在/ conf / jgroups中有一些属性,但这是可行的。

10-07 19:10
查看更多