我遇到了一种情况,当我在 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]
问题:
- 运行Jar和运行App有什么区别 智能J
- 为什么它找到文件路径时会提示它 在 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/