我已经为我的 Java 程序编写了一个简短的文档。单击菜单帮助 -> 文档时,操作系统的默认 PDF 阅读器应打开 documentation.pdf
。
我正在尝试使用 Desktop.getDesktop().open(new File("doc/documentation.pdf") 打开位于目录
在 src/doc
中的 PDF );Controller.java
中。
但是,Java 找不到该文件。当我用 primaryStage.getIcons().add(new Image("icon/icon_512x512.png"));
打开程序的图标时,它在 Main.java
.
在这里您可以看到我的 IntelliJ 项目的布局。
src
├── META-INF
├── de
│ └── myapp
│ ├── model
│ │ └── *.java
│ ├── view
│ │ └── *.java
│ ├── Main.java
│ └── Controller.java
├── doc
│ └── documentation.pdf
└── icon
└── icon_512x512.png
我的堆栈
- IntelliJ 2016.2
- Java 1.8.0_77
最佳答案
它与 new Image("icon/icon_512x512.png")
一起工作,因为在内部它是从上下文 ClassLoader
获取的,这不是 new 的情况File("doc/documentation.pdf")
在相对路径的情况下从用户工作目录获取它,因此您可以简单地应用相同的逻辑。
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
URL resource = contextClassLoader.getResource("doc/documentation.pdf");
Desktop.getDesktop().open(new File(resource.toURI()));
关于java - 从 src 目录打开文件 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39329310/