Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从POJO读取persistence.xml_Java_Jar_Inputstream - Fatal编程技术网

Java 从POJO读取persistence.xml

Java 从POJO读取persistence.xml,java,jar,inputstream,Java,Jar,Inputstream,我创建了一个EJB3项目和一个JPA项目。我正在尝试创建一个助手类(将在一个单独的项目/jar中),该类将从我的JPA项目的META-INF文件夹中的Persistence.xml文件返回持久性单元名称 如何将此文件作为输入流读取?我可以在获得对该文件的引用后解析这些值,但是如何从另一个jar的类中读取jar的META-INF文件夹中的文件呢 请提供您的建议。如果您的另一个jar位于类路径中,您应该能够使用以下方法加载此文件: getClass().getResourceAsStream(“ME

我创建了一个EJB3项目和一个JPA项目。我正在尝试创建一个助手类(将在一个单独的项目/jar中),该类将从我的JPA项目的META-INF文件夹中的Persistence.xml文件返回持久性单元名称

如何将此文件作为输入流读取?我可以在获得对该文件的引用后解析这些值,但是如何从另一个jar的类中读取jar的META-INF文件夹中的文件呢


请提供您的建议。

如果您的另一个jar位于类路径中,您应该能够使用以下方法加载此文件: getClass().getResourceAsStream(“META-INF/persistence.xml”)

这很有效

InputStream is = Thread.currentThread().getContextClassLoader().getResource("META-INF/persistence.xml").openStream();

我在使用持久化单元一段时间后(“突然”)出现了问题

以下是有帮助的(b******解决方案,但问题只发生在devMode中,并通过此解决):


一旦获得对xml文件的引用(例如,作为上述答案中的inputstream),使用DOM或SAX解析器读取持久化单元节点的name属性。
    try {
        InputStream is = Thread.currentThread().getContextClassLoader(
                ).getResource("META-INF/persistence.xml").openStream();
        FileOutputStream output= new FileOutputStream("c:/tmp/show.xml");
        IOUtils.copy(is, output);
        IOUtils.closeQuietly(output);
        PersistenceUnitInfoImpl impl= new PersistenceUnitInfoImpl();
        impl.setPersistenceXmlFileUrl(new URL("file://c:/tmp/show.xml"));
        JpaBasics basics= new JpaBasics("spektrum");
        basics.init(false);
        EntityManager em= basics.getEm();
        _log.debug("have we an em: " + em);
        new TestLoad().testLoadMagazines();
    } catch (Exception e) {
        _log.error("", e);
    }
}