我原来有我的。中间文件在项目目录,我已经得到了这样的:
File file = new File("hmr.mid");
一切都很好,然后我试图将其导出到可运行的.jar,因为当我稍后试图访问该文件时,我有NullPointerException。
我读到我应该将资源添加到包中,所以我这样做了:
http://kepfeltoltes.hu/140326/115027543proj_www.kepfeltoltes.hu_.png从那以后,我做了大量的谷歌搜索,软搜索,看了大量的例子(我认为大多数人都错了,例如使用绝对路径),阅读这样的文章:
http://www.thinkplexx.com/learn/howto/java/system/java-resource-loading-explained-absolute-and-relative-names-difference-between-classloader-and-class-resource-loading但是什么都没起作用。当我导出到.jar时,我得到一个NullPointerException,但即使我只是运行它。
这是我的资源加载器与一些残余的我的尝试。
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
public class ResourceLoader {
static ResourceLoader rl = new ResourceLoader();
public static Image getImage(String filename)
{
return Toolkit.getDefaultToolkit().getImage(rl.getClass().getResource(filename));
}
public static File getFile(String filename)
{
//InputStream is = rl.getClass().getResourceAsStream("hmr.mid");
//URL url = Thread.currentThread().getContextClassLoader().getResource("hmr.mid");
//File file = new File(url.toString());
//url = File.class.getClassLoader().getResource("/Users/peti/Documents/workspace/java_workspace/BluesBox_v0_21/200_Stlye/resources/hmr.mid");
//File file = new File(url.getFile());
//File file = new File("/Users/peti/Documents/workspace/java_workspace/BluesBox_v0_21/200_Stlye/resources/hmr.mid");
//File file = new File("src/200_Stlye/resources/hmr.mid");
File file = new File("hmr.mid");
return file;
}
}
在使用getClass()时应该使用资源的相对路径。
例如"/hmr.mid"
在这种情况下,请确保在类路径中填充了。