Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
Apache camel 在类路径中找不到属性文件application.Properties_Apache Camel_Main_Properties File - Fatal编程技术网

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中,这会迫使我——或者我的美国