我在 eclipse foo
和 bar
中有两个项目。 bar
使用 eclipse 中的构建路径配置作为 foo
的一部分包含在内。这允许我从 foo
内部的 bar
访问我需要的所有 Java 文件。
但是,我还有一些 PDF 帮助文档,它们包含在 bar
中。这些文件包含在 help/
目录中。当我尝试访问这样的文件 help/file.pdf
时,它可以在 bar
中工作,但不能在 foo
中工作。
如何在 foo
中访问这些 PDF 文件?
问答
如何访问文件?通过搜索资源的类路径来访问文件。 (即getClassLoader().getResource(path)
)
最佳答案
通过使用 Eclipse IDE 中的“构建路径”选项,您可以将 IDE 设置为在 JVM 类路径(即“bin”)中添加“bar”类文件位置的路径。并且您可以通过这些路径获取任何资源。
您将需要一个类来获取资源,因为 JVM 通过将该类作为引用来返回资源。
让Anchor
成为bar
项目的help
包中的一个类。
这是 foo
项目中的类中的代码。
URL url = bar.Anchor.class.getResource("file.pdf");
System.out.println(url);
您无法直接获取资源(不以类作为引用)。
这是因为 JVM 基本上只记录在其路径中找到的 .class 文件。
但是,如果您仍然想在不使用任何 .class 文件作为引用的情况下获取文件,那么只需使用 File(location_of_file) 类即可完成。这是一个简单的方法,我知道你不想要这个。
如果您只想通过“构建路径”设置的路径获取文件,那么您需要在 JVM 的类路径中检查该文件。
要获取类路径,您需要调用 System.getProperty() 方法并获取“java.class.path”属性。然后检查类路径中存在的所有路径。
File file = new File("help","file.pdf"); //'file.pdf' file in 'help' folder
String classpath = System.getProperty("java.class.path");
StringTokenizer tokenizer = new StringTokenizer(classpath,";");
while(tokenizer.hasMoreTokens()){
File temp = new File(tokenizer.nextToken(), file);
if(temp.exists()){
// here you get your file as 'temp'.
// If you want it to be in URL form, you can convert it.
break;
}
}
<小时/>
这是示例中使用的目录结构:|--
bar
//项目| |--
bin
....//由 IDE 创建(其位置在类路径中设置,| | |--..... //类和资源由IDE添加)
| |
| |--
src
| |--
帮助
| |--
Anchor.java
| |--
文件.pdf
|
|--
foo
//项目|--
src
|--
Accessor.java
<小时/>
关于java - 从另一个项目访问 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24016266/