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

java.lang.IllegalArgumentException:URI不是分层可执行jar文件[重复]

孙梓
2023-03-14

我搜索了我的问题的解决方案,但找不到答案。
在客户端服务器聊天应用程序中,客户端希望获取存储在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文件才能工作。

共有1个答案

程磊
2023-03-14

我设法解决了这个问题。我是这样做的。

    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();
 类似资料:
  • 我有独立的应用程序,它绑定在可执行的中。在可执行的清单文件中,有一个class-path条目,其中列出了所有依赖的(包括所有的日志实现jar)。这个可执行jar还包含文件。 使用这种结构,当我使用简单的命令运行应用程序时,应用程序在正确的日志记录下运行良好。但这里的主要问题是,要更改日志级别,需要打开jar文件,而我不能要求客户端这样做。所以我将放在了jar外部,但现在所有日志记录都发生在控制台上

  • 我提取了一个包含xml、java类等的可执行jar文件。实际上,这个可执行jar文件是一个具有依赖关系的库。我需要修改这个库中一个类文件中的一行代码。我已经成功地编辑了类文件,现在我想把它重新打包到可执行的jar中。如何做到这一点。

  • 问题内容: 我在程序中使用以下代码来加载属性文件: 该代码在Eclipse中运行良好。然后,将程序打包到一个名为MyProgram.jar的JAR中,然后运行它,第二行得到了NullPointerException。JAR不包含属性文件,它们都位于同一目录中。我正在使用Maven创建JAR。我该如何解决这个问题? 更新:我不想将属性文件添加到JAR中,因为它将在部署时创建。 问题答案: Balus

  • 我已经在我的Java项目中复制了IE exe并导出了Java项目,包括IE exe。当我运行JAR时,它无法选择IE exe路径。请救命!蒂亚!