[英]How to configure C3p0.properties file in a jar file's classpath to read C3P0-config.xml outside the classpath
[英]Java : How to include a .properties file that is outside of jar into classpath?
我們希望將.properties文件保留在jar之外,以便我們可以更改模塊中使用的屬性,而不必重新安裝模塊。
在Java 8之前,我們曾經運行腳本並以下面的方式包含.properties文件,並且該文件可以正常工作。 但是由於更新到Java 8時,在類路徑中包含.properties文件的這種方式不起作用,這意味着Java程序無法找到.properties文件。
我運行Java項目的腳本:
/usr/java/latest/bin/java -d64 -Xms1G -Xmx16G -XX:MaxPermSize=128m -XX:-UseGCOverheadLimit -cp "/online/sand/lib/client-api-1.0.0.jar:/online/sand/oap_pub/lib/*:/online/sand/oap/oap_dw/run/client_api/application.properties" team.online.client.api.MasterProcessor | tee -a client_api.log
我們正在使用Sping上下文以這種方式拾取屬性文件:
<util:properties id="app_props"
location="classpath*:/application.properties" />
然后,以這種方式使用appilcation.properties文件中的一個屬性(在許多不同的文件中):
@Value( "#{app_props[\"SERVICE_PATH_GET_METADATA\"]?:''}" )
private String metadataServicePath;
尋找一種方法來將.properties文件保留在jar之外並放在類路徑中,以便Spring上下文找到該文件。
除了使用以外,還有其他方法嗎? 我們需要保留jar中排除的屬性文件
class.getClassLoader( ).getResourceAsStream( "application.properties" );
提前致謝。
如果您使用的是基於xml的配置,請使用此選項
<context:property-placeholder location="classpath:application.properties"/>
然后,只要它在類路徑中而不在jar中,它將從任何地方加載屬性。 您必須將其作為$ CLASSPATH:application.properties包含在類路徑中
對於基於注釋的@PropertySource("classpath:application.properties")
這里有一個Java示例:使用spring注釋讀取屬性文件
我找到了一種解決方法,可以通過使用“ ::”而不是“:”在腳本中進行更改以運行程序。
有個主意:
==> java和javac以不同的方式處理類路徑設置, 如果類路徑包含雙類路徑定界符(Unix下為“ ::”,Windows下為“ ;;”) ,則javac在/中搜索類。
從這個鏈接看來,這對我來說很有說服力,並且行之有效。 請在這里看看: https : //bugs.openjdk.java.net/browse/JDK-4809833
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.