Apache camel 在类路径中找不到属性文件application.Properties
我有两个独立的模块使用。它们都包含:Apache camel 在类路径中找不到属性文件application.Properties,apache-camel,main,properties-file,Apache Camel,Main,Properties File,我有两个独立的模块使用。它们都包含: main.setPropertyPlaceholderLocations(“类路径:application.properties”); 我也试过: main.setPropertyPlaceholderLocations(“application.properties”); 如果我在Eclipse中运行它们,这两个都可以正常工作(已经将/target添加到运行配置的类路径中) 如果我从cmd行运行它们: …\target>java-jar.jar 如果
main.setPropertyPlaceholderLocations(“类路径:application.properties”);
我也试过:
main.setPropertyPlaceholderLocations(“application.properties”);
如果我在Eclipse中运行它们,这两个都可以正常工作(已经将/target
添加到运行配置的类路径中)
如果我从cmd行运行它们:
…\target>java-jar.jar
如果target
同时包含application.properties
和.jar
,就可以了。其他结果如下:
线程“main”org.apache.camel.runtimecameleexception:java.io.FileNotFoundException中的异常:
在类路径中找不到属性文件application.Properties
我只看到了我的应用程序.properties
在src/main/resources
中,并在mvn包期间复制到target
更新1
请澄清。在我的项目POM中,我使用:
src/main/resources
应用程序属性
src/main/resources
应用程序属性
..
防止application.properties
驻留在.jar
中
更新2
90[main]信息-正在启动骆驼。。。
182[main]INFO org.apache.camel.impl.DefaultCamelContext-apache camel 2.22.0(CamelContext:camel-1)正在关闭
195[main]INFO org.apache.camel.impl.DefaultCamelContext-ApacheCammel 2.22.0(CamelContext:camel-1)正常运行时间
198[main]INFO org.apache.camel.impl.DefaultCamelContext-apache camel 2.22.0(CamelContext:camel-1)在0.017秒内关闭
线程“main”org.apache.camel.runtimecameleexception:java.io.FileNotFoundException:Properties文件application.Properties未在类路径中找到
位于org.apache.camel.util.ObjectHelper.wrapunTimeCamelException(ObjectHelper.java:1830)
位于org.apache.camel.model.RouteDefinitionHelper.initRouteInputs(RouteDefinitionHelper.java:382)
位于org.apache.camel.model.RouteDefinitionHelper.PrepareRouteOutEIMP(RouteDefinitionHelper.java:298)
位于org.apache.camel.model.RouteDefinitionHelper.prepareRoute(RouteDefinitionHelper.java:270)
位于org.apache.camel.model.RoutesDefinition.route(RoutesDefinition.java:205)
位于org.apache.camel.model.RoutesDefinition.from(RoutesDefinition.java:158)
位于org.apache.camel.builder.RouteBuilder.from(RouteBuilder.java:169)
配置(Route.java:24)
位于org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:462)
位于org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:402)
位于org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:383)
位于org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:1029)
位于org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:1026)
位于org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3272)
位于org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:1026)
位于org.apache.camel.main.MainSupport.postProcessCamelContext(MainSupport.java:612)
位于org.apache.camel.main.MainSupport.postProcessContext(MainSupport.java:550)
位于org.apache.camel.main.main.doStart(main.java:136)
位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
位于org.apache.camel.main.MainSupport.run(MainSupport.java:170)
at.run(.java:44)
at.main(.java:20)
原因:java.io.FileNotFoundException:在类路径中找不到属性文件application.Properties
位于org.apache.camel.component.properties.DefaultPropertiesResolver.loadPropertiesFromClasspath(DefaultPropertiesResolver.java:112)
位于org.apache.camel.component.properties.DefaultPropertiesResolver.resolveProperties(DefaultPropertiesResolver.java:69)
位于org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:207)
位于org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:178)
位于org.apache.camel.impl.DefaultCamelContext.resolvePropertyPlaceholders(DefaultCamelContext.java:2552)
位于org.apache.camel.model.ProcessorDefinitionHelper.resolvePropertyPlaceholders(ProcessorDefinitionHelper.java:735)
位于org.apache.camel.model.RouteDefinitionHelper.initRouteInputs(RouteDefinitionHelper.java:380)
... 20多
204[Camel-Thread#0-CamelHangupInterceptor]INFO org.apache.Camel.main.MainSupport$HangupInterceptor-接收到的挂起-停止主实例。
现在我知道了为什么一个模块运行而另一个模块没有运行。显然,Camel在setPropertyPlaceholderLocations()
之后执行延迟加载,而且由于我没有使用application.properties的任何属性,所以它甚至没有尝试读取文件
现在我正在使用它们,以前工作的模块也失败了。(错误导致真相的罕见案例之一)
解决方案是使用:
String jarPath=新文件(
此.getClass().getProtectionDomain().getCodeSource().getLocation().Tori().getPath())
.getParent();
main.setPropertyPlaceholderLocations(“文件:“+jarPath+”/application.properties”)
正如克劳斯几小时前所说,而不是:
main.setPropertyPlaceholderLocations(“类路径:…”)
您能否再次检查该文件是否在模块JAR文件的内部和根目录中。@ClausIbsen假设您引用的是application.properties
它们中当然没有。我不想让配置文件驻留在一个JAR中,这会迫使我——或者我的美国