Java 从资源文件夹读取文件

Java 从资源文件夹读取文件,java,jaxb,Java,Jaxb,我有一个maven项目结构,其中存在src/main/resources/json/test.xml文件。我试图使用以下代码读取此文件,但无法读取。我找不到指定的文件。我必须将文件对象传递给unmarshal函数,我如何使用其他方法执行此操作 File file = new File("json\\test.xml"); JAXBContext jaxbContext = JAXBContext.newInstance(ServiceApi.class);

我有一个maven项目结构,其中存在src/main/resources/json/test.xml文件。我试图使用以下代码读取此文件,但无法读取。我找不到指定的文件。我必须将文件对象传递给unmarshal函数,我如何使用其他方法执行此操作

File file = new File("json\\test.xml");
            JAXBContext jaxbContext = JAXBContext.newInstance(ServiceApi.class);

            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            ServiceApi customer = (ServiceApi) jaxbUnmarshaller.unmarshal(file);
            System.out.println(customer.getService().size());
例外是

javax.xml.bind.UnmarshalException
 - with linked exception:
[java.io.FileNotFoundException: C:\Users\jayesh_shah\Downloads\dbt-dataformstub\json\test.xml (The system cannot find the path specified)]
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:202)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:173)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:142)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:151)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:169)
    at com.ge.stub.api.jaxb.JAXBExample.main(JAXBExample.java:17)
Caused by: java.io.FileNotFoundException: C:\Users\jayesh_shah\Downloads\dbt-dataformstub\json\test.xml (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:120)
    at java.io.FileInputStream.<init>(FileInputStream.java:79)
    at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:653)
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:200)
    ... 6 more
javax.xml.bind.UnmarshalException
-除此之外:
[java.io.FileNotFoundException:C:\Users\jayesh\u shah\Downloads\dbt dataformstub\json\test.xml(系统找不到指定的路径)]
位于com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:202)
位于com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:173)
位于javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
位于javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:142)
位于javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:151)
位于javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:169)
位于com.ge.stub.api.jaxb.JAXBExample.main(JAXBExample.java:17)
原因:java.io.FileNotFoundException:C:\Users\jayesh\u shah\Downloads\dbt dataformstub\json\test.xml(系统找不到指定的路径)
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。(FileInputStream.java:120)
位于java.io.FileInputStream。(FileInputStream.java:79)
位于sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
位于sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
在com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:653)
位于com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
位于com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
位于com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
位于com.sun.org.apache.xerces.internal.jaxp.saxpasserimpl$jaxpsaxpasser.parse(saxpasserimpl.java:522)
位于com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:200)
... 还有6个

构建时,maven会将resources文件夹合并到generated classes文件夹中。因此,您可以通过以下方式获得该文件的
InputStream

InputStream is = YourClassName.class.getResourceAsStream("/json/test.xml");

JAXB可以从
InputStream
s解组,文件的定位规则与定义类
YourClassName
ClassLoader
使用的规则相同。(有关更多信息,请参阅。)

您能发布异常消息吗?@Rachel-我已经添加了异常