从另一个项目访问PDF文件

时间:2014-06-03 13:18:25

标签: java eclipse

我在eclipse foobar中有两个项目。使用eclipse中的构建路径配置将bar作为foo的一部分包含在内。这允许我从bar内的foo访问我需要的所有Java文件。

但是,我还有一些PDF帮助文档,它们包含在bar中。这些文件包含在help/目录中。当我尝试访问help/file.pdf这样的文件时,它适用于bar,但不适用于foo

如何在foo

中访问这些PDF文件

问&安培; A

如何访问文件?通过搜索资源的类路径来访问文件。 (即getClassLoader().getResource(path)

3 个答案:

答案 0 :(得分:1)

通过在Eclipse IDE中使用“构建路径”选项,您可以设置IDE以在JVM类路径中添加“bar”类文件位置的路径,即“bin”。你可以通过这些途径获得任何资源。

您需要一个Class来获取资源,因为JVM通过将该类作为引用来返回资源。

Anchor成为help项目bar包中的一个类 以下是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
| | - help
| | - Anchor.java
| | - file.pdf
|
| - foo //项目
| - src
| - Accessor.java


答案 1 :(得分:0)

如果您在Eclipse中使用 build bath 配置将bar作为foo的一部分包含在内,则bar位于构建类路径中{{1编译。

foo的对应构建工件(例如jar文件)也应该在运行时在类路径中。要实现此目的,您必须配置部署;在Eclipse中执行此操作与不同类型的项目不同。什么类型的项目是bar

现在,如果你在类路径(构建或运行时)中有一个项目,你可以使用类加载器在其中找到资源。

假设您已在<{1}}中添加了帮助文件夹作为源文件夹,并且您在foo中有一个班级bar,则可以获取以下网址:使用以下内容在com.mycompany.MyClass中使用您的资源:

foo

然后,使用该URL,您可以打开一个流来读取您的资源:

foo

答案 2 :(得分:0)

要实现此目的,help必须是项目栏的Source文件夹。这样,help的所有内容都将被复制到条形图的输出位置,因此可供foo使用。