2013-07-01 37 views
0

我试图加载一个图像文件。Mac上的Eclipse src文件夹中的图像文件的路径

File imageCheck = new File("Users/me/Documents/workspace/ChineseChess/src/RCar.gif"); 
if (imageCheck.exists()) 
    System.out.println("Image file found!"); 
else 
    System.out.println("Image file not found! :("); 
button.setIcon(new ImageIcon("Users/me/Documents/workspace/ChineseChess/src/RCar.gif")); 
  1. 我应该把RCar.gif在Eclipse项目的src或bin文件夹?
  2. 如何在没有明确路径的情况下引用它? (我使用的是Mac,我相信这应该是这样的〜/ RCar.gif但我有麻烦在线找到正确的语法。

谢谢!

回答

2

如果你想使用相对路径,他们将与项目的根目录相关,或者与其部署时相关的jar文件所在的目录。您可以使用src/RCar.gif作为文件名。

如果你为资源创建了一个单独的文件夹,然后用new File("res/RCar.gif");来解决它们会更好。另一种方法是将它们放在src文件夹中,并使用类加载器对它们进行寻址。

+0

修正了答案,现在它实际上使用相对路径:) –

3

如果我没有记错,Eclipse的所有要求资源被放置在资源目录中,这些将与当你导出你的应用程序被自动绑定。

在运行时,您只需使用Class#getResource("/path/to/your/resource")所在的路径是从“资源”文件夹的位置

+1

'如果我没有记错,Eclipse需要将所有资源放置在资源目录中.'不会自动。该文件夹必须位于Eclipse构建路径中。如果您不使用像Apache Maven这样的构建管理器,您可以右键单击一个文件夹并选择“构建路径/用作源文件夹” – Sandro

+0

@Sandro从未使用Eclipse,但我记得很多人在放置资源时遇到问题在'src'文件夹内。这是我的理解,Eclipse有一个自动设置的某种“资源”文件夹 – MadProgrammer

+0

好吧,Maven文件夹结构的默认布局包含“资源”文件夹。有时项目不会自动生成。在这种情况下,资源不会复制到构成运行时资源的Eclipse输出文件夹中,因此在运行时不可用。 – Sandro

3

当它在运行时所属的类的资源文件夹中时,您可以非常轻松地加载该图标。 见http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource%28java.lang.String%29

在类your.packagename.YourClassName,你可以写:

String folderName = YourClassName.class.getName().replace('.', '/'); 
String urlString = "/"+folderName+"/RCar.gif"; 
URL fileUri = YourClassName.class.getResource(urlString); 
button.setIcon(new ImageIcon(fileUri)); 

的urlString将/your/packagename/YourClassName/RCar.gif。当然,这也是图标应该在运行时的地方。

HTH

1

是......它采用相对路径。

public static final String FILE_PATH =“src/test/resources/car.png”;