java - 如何使用jar文件中的文件?

标签 java jar

我已经看到了有关访问 jar 主题中的资源的其他问题,但我的问题有点不同。 我需要在我编写的客户端代码中使用 .jks 文件来访问 Web 服务。即使我将其打包为 jar,该代码也能在我的系统中完美运行,但当我将 jar 发送给另一个人时,它会出现 SSL 错误。我知道它无法访问这些文件,因为我在代码中进行了硬编码。即使我将文件添加到 jar 中也是如此。

谁能告诉我如何访问 jar 中的这个文件。我不需要在这里使用文件阅读器或缓冲阅读器,因为我只需要提供文件的路径。

提前致谢

        SslConfigurator sslConfig = SslConfigurator.newInstance()
                .trustStoreFile("AAAWSKeyStore.jks")
                .trustStorePassword("password")
                .keyStoreFile("AAAWSKeyStore.jks")
                .keyPassword("password")
                .securityProtocol("TLS");

这里抛出的错误是

    jjava.lang.IllegalStateException: Cannot find key store file ".\AAAWSKeyStore.jks
   ".
    at org.glassfish.jersey.SslConfigurator.createSSLContext(SslConfigurator
 .java:679)
    at GuiAAAWS.sendPost(GuiAAAWS.java:220)
    at GuiAAAWS.OkActionPerformed(GuiAAAWS.java:198)
    at GuiAAAWS.access$2(GuiAAAWS.java:193)
    at GuiAAAWS$3.actionPerformed(GuiAAAWS.java:88)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener

最佳答案

这并不像给出文件的路径那么简单,因为当它被打包到 jar 中时,它并不是一个真正的文件。您可以提供KeyStore然而,SslConfigurator 的对象,这比指定路径更灵活,因为它可以从任何输入源初始化,包括 jar 中的资源:

KeyStore keyStore = KeyStore.getInstance("jks");
try (InputStream in = YourClassName.class.getResourceAsStream("AAAWSKeyStore.jks")) {
    keyStore.load(in, "password".toCharArray());
}

SslConfigurator sslConfig = SslConfigurator.newInstance()
    .trustStore(keyStore)
    .keyStore(keyStore)
    .securityProtocol("TLS");

关于java - 如何使用jar文件中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27021806/

相关文章:

Android AAR 第三方 jar

java - java 中的 Servlet——getWriter() 和 getOutputStream()

java - 这是检查 Postgres 是否提交事务 id 的正确方法吗

java.lang.NoClassDefFoundError : org. apache.commons.lang.StringEscapeUtils

xml - 使用 build.xml 从 .jar 文件创建 .exe

java - 从 Java 程序更改 jar 的内容

Java System.out.println() 抛出错误

java - 如何强制子类不断引用枚举?

java - 如何在 Apache Camel Bindy 中处理 CSV 文件中的不同记录?

tomcat - 在不解压的情况下查看war文件的内容