我正在尝试写入XML文件。它在eclipse中正确运行。该文件位于ca / ism / wen / domain文件夹(与我的user.java一起)。但是,当我运行导出的runnable jar文件时,它会抛出FileNotFoundException
。有没有办法写入jar文件中的xml文件?以下是我的代码。
package ca.ism.wen.utils;
import java.io.File;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import ca.ism.wen.domain.User;
/**
* Load XML file
*
*/
public class XmlFactory {
private static Document dom;
//private static File file = new File(User.class.getResource("UserRDP.xml").getPath());
private static InputStream filei = User.class.getResourceAsStream("UserRDP.xml");
private static File fileo = new File(User.class.getResource("UserRDP.xml").getPath());
static {
try{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
dom = db.parse(filei);
} catch (Exception e){
e.printStackTrace();
}
}
public static Document getDom(){
return dom;
}
public static void saveDom(){
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
DOMSource ds = new DOMSource(dom);
StreamResult sr = new StreamResult(fileo);
trans.transform(ds, sr);
} catch (Exception e){
throw new RuntimeException(e.getMessage(),e);
}
}
}
如果我必须将我的XML文件放在某处,我想获得一个可运行的文件并将其放在我整个项目下的文件夹中(就像普通软件一样),因为它可能会在以后部署到其他人的机器上。那可能吗?
答案 0 :(得分:0)
我认为您需要根据javadoc为您的类路径提供javax.xml.parsers.DocumentBuilderFactory
作为第三方库的实现。
答案 1 :(得分:0)
尝试
new File(User.class.getResource("UserRDP.xml").toURI());
应使用File
的相应构造函数来定位资源。这种方法仅适用于爆炸罐。你不能写一个jar,但你可以使用jar协议读取它。