java - 在 IntelliJ 中运行应用程序和运行 JAR 文件的区别

标签 java file jar path

我遇到了一种情况,当我在 intellJ 中运行应用程序并且一切运行顺利时,然后我将使用 maven install 命令创建一个 jar 并尝试从命令行手动运行它,结果如下:

命令行

java.lang.RuntimeException: java.io.FileNotFoundException: api\src\main\resources\FAQ.pdf (The system cannot find the path specified)
        at test.test.paisy.test.test.domain.email.FaqAttachment.pdfToBytes(FaqAttachment.java:27) ~[classes!/:0.0.1-SNAPSHOT]

问题:

  1. 运行Jar和运行App有什么区别 智能J
  2. 为什么它找到文件路径时会提示它 在 ItelliJ 中成功运行

文件路径

try (FileInputStream inputStream = new FileInputStream(new File("api/src/main/resources/FAQ.pdf"))) {
                this.bytes = ByteStreams.toByteArray(inputStream);

谢谢

最佳答案

首先,如果要使用相对路径,需要从src文件夹启动,像这样

new File("src/main/resources/FAQ.pdf")

但最好的方法是使用

InputStream inputStream = ClassName.class.getClassLoader().getResourceAsStream("FAQ.pdf"); 

这样该路径就不会相对于该静态路径。

不要忘记将 ClassName 替换为当前类的名称

确保在运行之前清理构建并重新构建。

有关更多详细信息,请查看此 answer

关于java - 在 IntelliJ 中运行应用程序和运行 JAR 文件的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62321551/

相关文章:

java - 如何从 .bat 脚本在单独的窗口中启动 JAR?

java - 为什么CompletableFuture没有按顺序执行?

java - Play Framework : Post image to imageshack using WS

javascript - 使用 Javascript 将文件拆分为 block

java - 获取文件元数据字段

java - 无法在 Java 中读取 Word 文档内容

java - log4j,只需要在日志文件中显示INFO和ERROR信息

java获取正则表达式重叠匹配

java - 所需的 MultipartFile 参数 'files' 不存在 - MultipartyEntityBuilder

java代码片段在打包成jar之前和之后读取文件