当前位置: 首页 > 知识库问答 >
问题:

"运行"vs"java jar目标/xxx.jar"

程飞星
2023-03-14

我有两个jks文件下src/main/资源在我的Spring Boot rest应用程序

  1. 测试1。jks通过https进行出站调用另一个rest api
  2. 测试2。jks在这个rest api中启用https

我设置路径资源文件test1.jks使用相对像下面在Spring启动切入点,一直工作正常。这些jks文件用于调用https服务。

public class TestApp {

    static
    {
        System.setProperty("javax.net.ssl.trustStore", "TestApp.class.getClassLoader().getResource("test1.jks").getFile()");
        System.setProperty("javax.net.ssl.trustStorePassword", password);
        System.setProperty("javax.net.ssl.keyStore",  "TestApp.class.getClassLoader().getResource("test1.jks").getFile()");
        System.setProperty("javax.net.ssl.keyStorePassword", password);
    }

    public static void main(String[] args) {
        SpringApplication.run(TestApp.class, args);
    }
}

应用属性

server.port=8443
server.ssl.key-store=test2.jks
server.ssl.key-store-password=test
server.ssl.trust-store=classpath:test2.jks
server.ssl.trust-store-password=test
server.ssl.key-password=test

当我运行使用mvn sping-start: run一切正常,但是当我运行它作为可执行的jarjava-jar目标/xxx-xxx-service-0.1.1-SNAPSHOT. jar我得到以下错误。

Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Could not find key store classpath:test2.jks
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.configureSslKeyStore(TomcatEmbeddedServletContainerFactory.java:292)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.configureSsl(TomcatEmbeddedServletContainerFactory.java:271)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.customizeConnector(TomcatEmbeddedServletContainerFactory.java:248)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:147)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
        ... 13 more
Caused by: java.io.FileNotFoundException: class path resource [test2.jks] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/Users/xxx/xxx/Himalay/xxx/xxx-xxx-service/target/xxx-xxx-service-0.1.17-SNAPSHOT.jar!/test2.jks
        at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:212)
        at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:175)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.configureSslKeyStore(TomcatEmbeddedServletContainerFactory.java:288)
        ... 18 more

在评论申请之后。我发现它甚至无法读取test1。jks在使用可执行jar命令运行时,但在使用mvn spring boot时运行良好:run,如何使用可执行jar命令使其运行?

注意:如果我使用jks文件的绝对路径,这两个命令都可以使用。

共有1个答案

松茂实
2023-03-14

试试这个:String filePath=Thread。currentThread()。getContextClassLoader()。getResource(“your trust store.jks”)。getFile();系统setProperty(“javax.net.ssl.keyStore”,filepath)

 类似资料:
  • 如下图所示,SonarSource在11之前的Java版本中终止了对运行代码分析器的支持 我试图搜索一个完整的示例,说明如何使用Java11分析器运行bitbucket管道来执行SonarScanner分析,但目标代码使用Java11之前的版本(例如Java8),但我找不到一个。根据那个形象,应该是可能的。

  • 相对较新的开发人员,尽管我已经使用了一段时间,但我希望能巩固我的Maven基础。我的部分问题是我没有使用Ant的经验,这似乎是许多解释的来源。我一直在阅读和观看教程,我不断听到相同的术语: 生命周期 相位 插件 目标 从我所学到的东西来看,生命周期似乎是最广泛的,由阶段、插件和/或目标组成(或完成)。 问:你能提供一些关于这些术语是如何联系的信息和最常见的例子吗? 越明确越基本越好!

  • 我写了一个程序,但当我的朋友尝试执行它时,它抛出filenotfound异常,但文件存在,这是我的代码,在文件夹中有lib文件夹、jar文件和“csv fajlok”,在csv fajlok文件夹中有2个csv文件

  • 我试图在maven reactor项目的子项目中执行Java文件。这与Maven exec:java goal在多模块项目上的问题类似,但是除非我执行,否则exec插件无法找到我试图在子项目中运行的类。 也许我误解了的预期工作流程,但每次更改时都必须执行mvn install,这确实会使工作流程复杂化。 当我从Eclipse执行文件时,Eclipse会正确设置类路径(即和),我希望从命令行模拟这种

  • 我在https://start.spring.io/ 互联网上的几个错误是相似的,但并没有解决我的问题。 当执行它时,我发现一个错误返回: 无法执行目标组织。springframework。boot:spring boot maven插件:2.4.1:run 这是我的POM和主文件 POM: 类: 我是Springboot新手,我该如何修复它?

  • 我是Java EE的初学者,我在参考资料中读到Java EE的标准目录结构是这样的: 但当我在intellij idea中创建一个新项目时,目录结构是这样的: 现在我因为一些原因感到困惑。