java.lang.IllegalArgumentException: URI不是分层的可执行jar文件

3

我搜索了解决我的问题的方法,但是没有找到答案。
在一个客户端服务器聊天应用程序中,客户端想要获取存储在Server.cer文件中的服务器公钥。

URL resource = this.getClass().getClassLoader().getResource("Server.cer");
File file = new File(resource.toURI());
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
while(bufferedInputStream.available() > 0){
    certificate = cf.generateCertificate(bufferedInputStream);
}
publicKey = certificate.getPublicKey();

当我在Eclipse中运行我的类时,这个程序可以正常工作。但是当我将其导出为可执行的jar文件时,就会出现以下错误:

java.lang.IllegalArgumentException: URI is not hierarchical

你能帮我解决这个问题吗?因为我需要可执行的jar文件来工作。


7
这应该是相关的: https://dev59.com/C2Ml5IYBdhLWcg3w3aPj - Ortomala Lokni
各位,这个问题能否被投票关闭为重复问题? - Raja Anbazhagan
投票关闭为重复 - xenteros
1个回答

0

我成功解决了问题。这是我的方法。

    Certificate certificate = null;

    //Get server's public key which is stored in a file called Server.cer (RSA-1024 bit).
    InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("Server.cer");
    BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    while(bufferedInputStream.available() > 0){
        certificate = cf.generateCertificate(bufferedInputStream);
    }
    publicKey = certificate.getPublicKey();

    bufferedInputStream.close();
    inputStream.close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接