几天前,我遇到了一个奇怪的问题,当时我正在使用JAXB解除XML文件的编组。所以我写的代码如下。
JAXBContext jaxbContext = JAXBContext.newInstance(XxspPoInHeaderCollection.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); //step1
XxspPoInHeaderCollection poInHeaderCollection = (XxspPoInHeaderCollection) JAXBIntrospector.getValue(jaxbUnmarshaller.unmarshal(file));因此,这是我在SVN中签入的一个工作代码。现在,从其他一些系统中,我获得了相同的代码,但是在该系统上,代码在解组时找不到任何XML标记。经过几个小时的调试,我发现在这两个环境中有一个细微的差别。在上面的JDK_HOME/jre/lib中,工作系统从step1中选择rt.jar,不工作的系统从JRE_HOME/lib中选择它。因此,jre的rt.jar引发了这一问题。
我的项目是一个可运行的罐子。因此,在不工作的系统上,当我使用java -jar jarName.jar从任何目录运行它时,都会引起问题。所以我试着从下面的JDK_HOME/bin(as运行jar文件,boom...everything运行得很好。
C:\Program Files\Java\jdk1.8.0_91\bin>java -jar "C:\Users\puspender.tanwar\project\850\Adapter-0.0.10-SNAPSHOT.jar"现在我只想问几个问题:
发布于 2018-01-05 21:13:26
我不知道你在观察到的行为上有什么不同,但我想到的一件事是.
JDK捆绑了JAXB的(定义)版本,而JRE没有,这可能导致JAXB无法在“JRE专用计算机”上使用。或者使用与类路径不同的版本。
https://stackoverflow.com/questions/48121333
复制相似问题