我在eclipse foo
和bar
中有两个项目。使用eclipse中的构建路径配置将bar
作为foo
的一部分包含在内。这允许我从bar
内的foo
访问我需要的所有Java文件。
但是,我还有一些PDF帮助文档,它们包含在bar
中。这些文件包含在help/
目录中。当我尝试访问help/file.pdf
这样的文件时,它适用于bar
,但不适用于foo
。
如何在foo
?
问&安培; A
如何访问文件?通过搜索资源的类路径来访问文件。 (即getClassLoader().getResource(path)
)
答案 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创建(其位置在类路径中设置,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
使用。