Java 7下的JAXB问题,它说它找不到RI 2.1.0【JAVA教程】

!
也想出现在这里? 联系我们
信息

Java 7下的JAXB问题,它说它找不到RI 2.1.0,第1张

概述Java 7下的JAXB问题,它说它找不到RI 2.1.0

我正在使用Oracle Java 7 Update 3在Ubuntu上进行testing。根据发行说明,它包含了JAXB-2.2.4。

/home/ubuntu# update-alternatives –config java There is only one alternative in link group java: /usr/lib/jvm/java-7-oracle/bin/java nothing to configure.

该机器说它有JAXB-2.2.4:

$ wsimport -version JAX-WS RI 2.2.4-b01

$ java -version

java version \”1.7.0_03\” Java(TM) SE Runtime Environment (build 1.7.0_03-b04) Java HotSpot(TM) ClIEnt VM (build 22.1-b02,mixed mode)

但是,当我运行我的应用程序,它使用JAX-RS和编组与JAXB一些对象时,我得到以下错误:

针对 *** 作系统特定的JRE进行编码

Java exec()不会返回pipe道连接命令的预期结果

在启动期间,cassandra 3在debian docker容器中抛出Snitch类exception

做2个java进程共享JVM

错误:无法find或加载运行java文件的主类

Apr 05,2012 10:45:50 AM com.sun.jersey.API.Json.JsONConfiguration natural SEVERE: NATURAL JsON notation configured,but JAXB RI 2.1.10 not found. For the recent builds to get this working correctly,you need even at least JAXB version 2.1.12. Please add it to your classpath! Apr 05,2012 10:45:50 AM com.sun.jersey.core.spi.component.ProvIDerFactory __get ComponentProvIDer SEVERE: The provIDer class,class com.marketchorus.rest.config.JAXBContextResolv er,Could not be instantiated. Processing will continue but the class will not b e utilized java.lang.RuntimeException: NATURAL JsON notation configured,you need even a t least JAXB version 2.1.12. Please add it to your classpath!

在服务器端,我最初得到了同样的错误,所以我把metro-2.2-standalone安装到解决了问题的tomcat中。 (即使它运行在Java 7中)。

在windows客户端上,我不得不将JAXB-2.2.5 API,impl和Jsr173 jar添加到我的背书Java目录中,以使其工作(同时还有Java 7 update 3)。

当我尝试在ubuntu下做jaxb技巧时,我把这些文件放在/ usr / lib / jvm / java-7-oracle / jre / lib / endorsed下,我得到了一个不同的错误:

ERROR 10:55:44.694 taskScheduler-1 org.springframework.scheduling.support.TaskUt ils$LoggingErrorHandler – Unexpected error occurred in scheduled task. javax.xml.stream.FactoryConfigurationError: ProvIDer com.bea.xml.stream.MXParser Factory not found

我正在初始化我的类中的JAX-RS / JAXB代码,如下所示:

config = new DefaultClIEntConfig(); config.getFeatures().put(JsONConfiguration.FEATURE_POJO_MAPPing,Boolean.TRUE); config.getClasses().add(JAXBContextResolver.class); clIEnt = ClIEnt.create(config); service = clIEnt.resource(UriBuilder.fromUri(proc.getUrl()).build());

我试图用source = 1.7和target = 1.7编译它,因为它仍然是1.6,我想也许它是假设从早期1.6版本的旧版本太旧,但也不能解决问题。

我跑@ andih的testing程序,我仍然得到错误。 我开始认为这是一个VM的问题:

ubuntu@ip-10-202-155-29:~/test$ java -cp jersey-client-1.12.jar:jersey-core-1.1 2.jar:jersery-fastinfoset-1.12.jar:jersey-Json-1.12.jar:. TestNaturalJson Apr 23,2012 10:17:21 AM com.sun.jersey.API.Json.JsONConfiguration natural SEVERE: NATURAL JsON notation configured,you need even at least JAXB version 2.1.12. Please add it to your classpath! Exception in thread \”main\” java.lang.RuntimeException: NATURAL JsON notation con figured,you need even at least JAXB version 2.1.12. Please add it to your cl asspath! at com.sun.jersey.API.Json.JsONConfiguration.natural(JsONConfiguration.j ava:447) at TestNaturalJson.main(TestNaturalJson.java:6) ubuntu@ip-10-202-155-29:~/test$ java -version java version \”1.7.0_03\” Java(TM) SE Runtime Environment (build 1.7.0_03-b04) Java HotSpot(TM) ClIEnt VM (build 22.1-b02,mixed mode)

回顾JAXB-2.2.5 RI的认可解决scheme我安装了这些文件:

jaxb-API.jar jaxb-impl.jar Jsr173_1.0_API.jar

进入:

/usr/lib/jvm/java-7-oracle/jre/lib/endorsed

目录。 当我这样做的时候,我从Spring的MXParser错误中得到了上面的错误。 这里的奇怪的东西是在这个窗口下工作,而不是在Ubuntu上。 当我运行@ andhi的testing程序下面的背书安装程序,我得到了好的,而不是错误。 但由于某种原因,它看起来像Ubuntu下的Spring没有拿起安装在背书目录(这是STAX实现)中的JsR173 jar文件。

如何连接到windows上的ODBC数据库?

windows密码和组

AndroID Studio:无法加载JVM DLL

Java自动更新时更新windowspathvariables?

如何改变没有pipe理权限的类path

在我看来就像一个类路径问题。 你有没有检查你的类路径中是否有其他jaxb-impl-xyzjar或jaxb-API-klmjar ? JsonConfiguration查找属于JRE7 rt.jar的类com.sun.xml.bind.annotation.OverrIDeAnnotationOf 。

您可以使用以下简单的程序来检查您的JRE安装:

import com.sun.jersey.API.Json.JsONConfiguration; public class TestNaturalJson { public static voID main(String[] args) { JsONConfiguration config = JsONConfiguration.natural().build(); System.out.println(\”OK\”); } }

如果你使用maven,你可以使用一个具有以下依赖项的pom:

<dependencIEs> <dependency> <groupID>com.sun.jersey</groupID> <artifactID>jersey-Json</artifactID> <version>1.12</version> <exclusions> <exclusion> <groupID>javax.xml.bind</groupID> <artifactID>jaxb-impl</artifactID> </exclusion> <exclusion> <groupID>javax.xml.bind</groupID> <artifactID>jaxb-API</artifactID> </exclusion> </exclusions> </dependency> </dependencIEs>

要知道从何处加载类,应该使用-verbose:class选项运行JVM命令行。

这样,通过在引发javax.xml.stream.FactoryConfigurationError异常之前查看最新的详细行,或者在诊断消息JAXB RI 2.1.10 not found之前,您可以猜测出什么错误。

所以你可以得到一个实现来自jar,并检查endorsed目录是否使用…

那么我很欣赏这里的所有评论,但没有人设法解决我的问题,所以我按照如下方法解决了这个问题。 我将Metro-2.2安装到Tomcat 7中。然后,由于我的应用程序是一个Spring命令行应用程序,我用它构建了一个war,所以它可以在tomcat容器中运行。 这涉及到我的应用程序的所有库在WEB-INF / lib我的配置文件在WEB-INF /类。 在WEB-INF目录中,我放置了一个如下所示的web.xml文件:

<?xml version=\”1.0\” enCoding=\”UTF-8\”?> <web-app version=\”3.0\” xmlns=\”http://java.sun.com/xml/ns/javaee\” xmlns:xsi=\”http://www.w3.org/2001/XMLSchema-instance\” xsi:schemaLocation=\”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd\”> <welcome-file-List> <welcome-file>index.Jsp</welcome-file> </welcome-file-List> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/remote-scheduler-spring-config.xml</param-value> </context-param> <Listener> <Listener-class>org.springframework.web.context.ContextLoaderListner</Listener-class> </Listener> <session-config> <session-timeout>60</session-timeout> </session-config> </web-app>

index.Jsp是空的,因为没有面向这个应用程序的网络组件。 spring-config参数是我的顶层spring配置文件,可以从命令行加载。 然后我的蚂蚁构建出这个应用程序的战争,它运行良好。 所以仍然不知道为什么我在jvm中的背书文件没有按照建议的那样使用verbose:class标志,而是通过使用tomcat作为容器并加载我需要的类,泽西很高兴,所有的问题已经消失。 再次感谢在这个问题上的所有帮助。

总结

以上是内存溢出为你收集整理的Java 7下的JAXB问题,它说它找不到RI 2.1.0全部内容,希望文章能够帮你解决Java 7下的JAXB问题,它说它找不到RI 2.1.0所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞81 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容