无法在jar中加载资源

时间:2015-12-28 16:07:26

标签: java jar zip export

我正在尝试在jar中加载资源,这里是导出的jar: enter image description here

'主'是包含所有类的包,在其中一个类中我尝试加载background.png文件。在我的Eclipse项目中,我将资源放在" res /"文件夹,我添加到构建路径以包含它。当我尝试使用

new File("background.png");

无法找到该文件。 当我使用

MyClass.class.getClass().getClassLoader().getResource("background.png");

它仍然无法找到该文件。

1 个答案:

答案 0 :(得分:1)

打包在jar中的文件无法作为MyClass.class.getClass().getClassLoader().getResource("background.png"); 对象访问。

当你尝试

ClassLoader

您实际上使用的java.lang.Class main.MyClass而非MyClass.class.getClassLoader().getResource("background.png"); 可能无法找到资源(如果它是系统类加载器)。试试

public class RDB {
    File file;
    String filepath;
    JAXBContext jaxbContext;
    Marshaller jaxbMarshaller;


    RDB(){
        filepath = "RDB.xml";
        file = new File(filepath);      
        StreamResult result = new StreamResult(file);
        try {
            jaxbContext = JAXBContext.newInstance(triple.class);
            jaxbMarshaller = jaxbContext.createMarshaller();
        } catch (JAXBException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


    void addToXml(triple t){
        try {
            // output pretty printed
            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

            jaxbMarshaller.marshal(t, file);
            jaxbMarshaller.marshal(t, System.out);

              } catch (JAXBException e) {
            e.printStackTrace();
            }
    }


    public static void main(String argv[]) {

        RDB r = new RDB();
        r.addToXml(new triple(1,2,3));
        r.addToXml(new triple(4,5,6));

    }

代替。