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

如何从Jar/Classpath创建文件实例

壤驷承
2023-03-14

我有一个可执行JAR,其中有一个文件,我想从代码中打开java.io.文件实例(不是InputStream或其他任何东西...只是文件)。

它是一个maven项目,文件位于“src/main/resources/file.xxx”的根目录下。打包后,该文件位于jar的根目录下(已验证其存在)。

我的第一次尝试:FileNotFoundException

java.io.File myFile = new java.io.File("file.xxx");
someMethodThatUsesTheFile(myFile); //I really need it to be a file!!!

其他尝试:FileNotFoundException

java.io.File myFile = new java.io.File("/file.xxx");
java.io.File myFile = new java.io.File("classpath:file.xxx");
java.io.File myFile = new java.io.File("classpath:/file.xxx");

我不确定到底发生了什么。Web应用程序可以轻松地从webapp根目录加载所有内容,我不明白为什么JAR应用程序的行为不同。

其他信息:

  • 使用Java8作为运行时/构建
  • 运行JAR的命令:“java-JAR myjar.JAR”
  • 应用程序代码和文件都位于同一个jar中

共有2个答案

松元明
2023-03-14

试试这个可能对你有帮助:

URL url = this.getClass().getResource("src/main/resources/file.xxx");
File file= new File(url.toURI());
戴霖
2023-03-14

简短回答:它不是一个“文件”,所以你不能这么做。

JAR文件是一个文件,但不是它的内容。

替代办法是:

>

  • 尝试该方法的其他重载版本,InputStreams通常是您的选项,您可以使用以下代码加载它:

    InputStream=getClass(). getResourceAsStream("file.xxx");

    将该文件移出JAR并移到JAR的同一目录中(考虑安全风险)

  •  类似资料:
    • 问题内容: 我有一个相当最新的android studio版本,我在一个基本上应该是库的项目下创建了一个模块,在构建它时,它会创建一个“ .aar”文件,我想要的是.jar文件,因为库也应该与Eclipse一起使用。 该库还包含活动,是否可以通过任何方式创建可以在Eclipse和Android Studio上使用的.jar文件? 我已经创建了这个模块并尝试构建,因此它生成了.aar文件而不是.ja

    • 问题内容: 我想分发Windows上用Java编写的命令行应用程序。 我的应用程序以zip文件的形式分发,其中有一个lib目录条目,其中包含调用主类所需的.jar文件。当前,对于Unix环境,我有一个shell脚本,该脚本使用CLASSPATH调用java命令,该CLASSPATH是通过在lib目录中附加所有文件而创建的。 如何编写具有类似功能的.BAT文件?Windows世界中的find Uni

    • 问题内容: 我是Scala的新手,也不了解Java。我想从一个简单的Scala文件中创建一个jar文件。所以我有了我的HelloWorld.scala,生成了一个HelloWorld.jar。 Manifest.mf: 在控制台中,我运行: 问题答案: 示例目录结构: HelloWorld.scala: MANIFEST.MF: build.bat: 为了成功使用 -jar 开关,您需要在 MET

    • 如何从android项目中创建jar文件,该项目包含android工作室中的facebook库和viewPager库

    • 我必须创建一个jar文件。我是个初学者。我创建了一个清单文件forjar.txt, jar cfm v.jar forjar.txt gmain.class 它创建了一个jar文件。但是,当我运行它的时候,什么也没有发生。当我编译时,创建了将近25个类,因为我的文件中包含了许多类。那么,我应该在创建jar文件时也包括它吗?或者是否有任何简单的方法,包括特定文件夹的全部内容。我的文件夹也包含程序需要

    • 问题内容: 如何使用程序以编程方式创建JAR文件java.util.jar.JarOutputStream?我的程序生成的JAR文件看起来正确(提取得很好),但是当我尝试从中加载库时,Java抱怨说它找不到明显存储在其中的文件。如果我提取JAR文件并使用Sun的jar命令行工具对其进行重新压缩,则生成的库可以正常工作。简而言之,我的JAR文件有问题。 请说明如何以编程方式创建清单文件以及完整的JA