Java Camel密钥库配置,用于从类路径读取.jks文件

Java Camel密钥库配置,用于从类路径读取.jks文件,java,spring-security,apache-camel,ssl-certificate,Java,Spring Security,Apache Camel,Ssl Certificate,使用Camel版本:2.17.1 <camel:sslContextParameters id="sslContextParameters"> <camel:keyManagers keyPassword="pass123"> <camel:keyStore resource="KeyStore.jks" password="pass123"/> </came

使用Camel版本:2.17.1

<camel:sslContextParameters
      id="sslContextParameters">
    <camel:keyManagers
        keyPassword="pass123">
      <camel:keyStore
          resource="KeyStore.jks"
          password="pass123"/>
    </camel:keyManagers>
  </camel:sslContextParameters>
这是自然现象,还是有解决办法

更多跟踪:

从org.apache.camel.spring.main运行main时出错 [错误] java.lang.reflect.InvocationTargetException 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:606) 位于org.apache.camel.maven.RunMojo$1.run(RunMojo.java:458) 运行(Thread.java:745) 原因:org.apache.camel.runtimecameleexception:java.io.FileNotFoundException:KeyStore.jks(系统找不到指定的文件) 位于org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1690) 位于org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:138) 位于org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:340) 位于org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:163) 位于org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:136) 位于org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:381) 位于org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:335) 位于org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:855) 位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) 位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139) 位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:93) 位于org.apache.camel.spring.Main.createDefaultApplicationContext(Main.java:213) 位于org.apache.camel.spring.Main.doStart(Main.java:153) 位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 位于org.apache.camel.main.MainSupport.run(MainSupport.java:138) 位于org.apache.camel.main.MainSupport.run(MainSupport.java:390) 位于org.apache.camel.spring.Main.Main(Main.java:86) ... 还有6个 原因:java.io.FileNotFoundException:KeyStore.jks(系统找不到指定的文件) 在java.io.FileInputStream.open(本机方法) 位于java.io.FileInputStream。(FileInputStream.java:146) 位于java.io.FileInputStream。(FileInputStream.java:101) 位于org.restlet.engine.ssl.DefaultSslContextFactory.createSslContext(DefaultSslContextFactory.java:309) 位于org.restlet.engine.connector.HttpsServerHelper.start(HttpsServerHelper.java:92) 位于org.restlet.Server.start(Server.java:579) 在org.apache.camel.component.restlet.restlecomponent.addServerIfEssential上(restlecomponent.java:388) 位于org.apache.camel.component.restlet.restlecomponent.connect(restlecomponent.java:174) 位于org.apache.camel.component.restlet.RestletEndpoint.connect(RestletEndpoint.java:116) 位于org.apache.camel.component.restlet.restletcummer.doStart(restletcummer.java:112) 位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 位于org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:3269) 位于org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRouteConsumers(DefaultCamelContext.java:3563) 位于org.apache.camel.impl.DefaultCamelContext.doStartRouteConsumers(DefaultCamelContext.java:3499) 位于org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3429) 位于org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3197) 位于org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3053) 位于org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175) 位于org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2848) 位于org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2844) 位于org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2867) 位于org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2844) 位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 位于org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2813) 位于org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:270) 位于org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:136)
... 21更多无人回答?FileNotFound的确切意思是“找不到文件”。您的KeyStore.jks实际位于哪里?@Vadim当我们“跟踪”时,我们可以发现文件被读取了两次,文件位于类路径中。所以,如果它可以第一次读取而没有错误,为什么它应该第二次给出异常呢。他们是否缺少关闭流或类似的东西?不管从其他地方读取文件多少次。当Camel组件试图打开该文件但找不到该文件时,存在一个确切的位置。再说一遍,你的档案在哪里?它是类路径中的文件系统,打包到jar还是war中?因为您告诉Camel的只是“文件在当前目录中”。“它在那里吗?”瓦迪姆,就像我提到的,它在类路径中。
java.io.FileNotFoundException: KeyStore.jks (The system cannot find the file specified)