gpt4 book ai didi

java - JAXB 无法从相对路径找到文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:37:00 25 4
gpt4 key购买 nike

我正在尝试使用 Jaxb 来取消 xml 文件。由于某种我不明白的原因,我无法引用除特定计算机上的完整路径之外的任何其他位置。在下面的代码中,注释行不起作用,只有上面的注释行不起作用。该文件确实存在(在两个位置),并且注释行确实适用于不同的类。

JAXBContext jc = JAXBContext.newInstance(Monopoly.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
//unmarshaller.unmarshal(new File("resources/monopoly_config.xml" ));
unmarshaller.unmarshal(new File( "C:\\Users\\Lior\\Documents\\NetBeansProjects\\Monopoly curr\\MonopolyServer\\src\\BoardInfoResources\\monopoly_config.xml"));

最佳答案

更新

既然您要部署到服务器(根据您的注释),为什么不使用类加载器加载 XML?在服务器环境中,您将无法按照您想要的方式依赖 File 对象(正如您已经发现的那样):

ClassLoader cl = Monopoly.class.getClassLoader();
InputStream xml =
cl.getResourceAsStream("resources/monopoly_config.xml");
JAXBContext jc = JAXBContext.newInstance(Monopoly.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Monopoly monopoly = (Monopoly) unmarshaller.unmarshal(xml);
<小时/>

JAXB 将允许您解码任何有效的文件对象。它肯定会解码使用相对路径创建的文件(请参阅下面的答案以获取示例):

在您的示例中,您需要确保工作目录设置正确。基于您的完整路径是:

"C:\\Users\\Lior\\Documents\\NetBeansProjects\\Monopoly curr\\MonopolyServer\\src\\BoardInfoResources\\monopoly_config.xml"

假设您的工作目录是:

"C:\\Users\\Lior\\Documents\\NetBeansProjects\\Monopoly curr\\MonopolyServer\\src\\"

您的相对路径似乎是错误的(因为没有资源目录):

"resources/monopoly_config.xml"

你的意思可能是:

"BoardInfoResources/monopoly_config.xml"

关于java - JAXB 无法从相对路径找到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6127698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com