java - 从另一个项目访问 PDF 文件

标签 java eclipse

我在 eclipse foobar 中有两个项目。 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/

相关文章:

Java/Eclipse : returning to List casted Map. 值()

eclipse - 在 JMockit 中调试部分模拟

javascript - Eclipse 中的 Javascript 资源有什么好处?

java - Websphere 8.x 无法识别 WEB-INF/lib 中的 axis 1.4 jar

Java 正则表达式 : difference between range and union

java - Maven 中特定组依赖关系的分离

java - 使用 Repast Simphony 2.0 Eclipse 在关闭透视图和关闭应用程序后不再打开

Java 调试器有时看不到变量(通常在匿名内部类中)

java - 将标准输出字节从 Process 转发到 WebSocket 或读取当前 InputStream 长度

java - 如何将可选参数传递给报告?