java从runnable jar中引用项目内的文件

时间:2016-09-08 17:40:21

标签: java file jar runnable filenotfoundexception

我正在编写一个java swings应用程序。在应用程序中,我们需要保留证书文件以创建自定义sslContext

SSLContext sslcontext = SSLContexts.custom()
 .loadTrustMaterial(new File("certs\\cacerts"),
    "password".toCharArray(), new TrustSelfSignedStrategy())
.build();

我在项目中创建了文件夹“certs”,并将文件“cacerts”存储在该文件夹中。当我从eclipse运行应用程序时,这工作正常。但是当我将app打包为可运行的jar文件时,java没有获取文件“certs \ cacerts”。它抛出了filenotfound异常。

但是,当我将“\\”更改为“//”时,如果我保留了jar文件所在的文件夹“certs”并保存“cacerts“文件在那。代码如下所示,

SSLContext sslcontext = SSLContexts.custom()
 .loadTrustMaterial(new File("certs//cacerts"),
    "password".toCharArray(), new TrustSelfSignedStrategy())
.build();

1 个答案:

答案 0 :(得分:0)

我假设您正在使用Apache的SSLContextBuilder。您可以load it from a URL而不是从File加载信任材料。 Oracle教程Access to Resources中介绍了为jar文件获取URL