GVKun编程网logo

Java:Spring:读取spring context.xml时发生XML冲突。'identifiedType'的重复定义(spring读取xml配置文件)

10

如果您对Java:Spring:读取springcontext.xml时发生XML冲突。'identifiedType'的重复定义和spring读取xml配置文件感兴趣,那么这篇文章一定是您不可错过的

如果您对Java:Spring:读取spring context.xml时发生XML冲突。'identifiedType'的重复定义spring读取xml配置文件感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Java:Spring:读取spring context.xml时发生XML冲突。'identifiedType'的重复定义的各种细节,并对spring读取xml配置文件进行深入的分析,此外还有关于APPLICATIONCONTEXT.XML 与 SPRING-MYBATIS.XML、java 9 Type TypeNotPresentException: javax.xml.bind.JAXBContext not present、Java Spring Framework中applicationContext.xml和spring-servlet.xml之间的区别、java10运行springboot项目出现:Type javax.xml.bind.JAXBContext not present的实用技巧。

本文目录一览:

Java:Spring:读取spring context.xml时发生XML冲突。'identifiedType'的重复定义(spring读取xml配置文件)

Java:Spring:读取spring context.xml时发生XML冲突。'identifiedType'的重复定义(spring读取xml配置文件)

任何建议或帮助,我们将不胜感激。

参考链接很多,但是没有明确的解决方案。我想知道Spring项目如何与返回XMLType输出的PLSQL过程交互。您将需要XMLParser,然后与Spring一起使用时,我们所有人都会收到此错误。有人有什么建议吗?

我有一个运行良好的Maven spring应用程序(mvc / Rest),并且添加了以下与PLSQL过程进行交互的依赖项,

    <dependency>        <groupId>com.oracle</groupId>        <artifactId>ojdbc6</artifactId>        <version>11.2.0.4</version>    </dependency>    <dependency>        <groupId>com.oracle</groupId>        <artifactId>xdb6</artifactId>        <version>11.2.0.4</version>    </dependency>    <dependency>        <groupId>com.xmlparserv2</groupId>        <artifactId>xmlparserv2</artifactId>        <version>11.1.1</version>    </dependency>

包含xdb6和之后xmlparserv2,在Spring应用程序启动时(运行服务器时)出现以下错误

2014-08-19 18:28:51,898信息| 主| osbeans.factory.xml.XmlBeanDefinitionReader

Loading XML bean definitions from class path resource [META-INF/spring/myapp-context.xml]<Line 43, Column 57>: XML-24509: (Error) Duplicated definition for: ''identifiedType''<Line 60, Column 28>: XML-24509: (Error) Duplicated definition for: ''beans''<Line 140, Column 34>: XML-24509: (Error) Duplicated definition for: ''description''<Line 152, Column 29>: XML-24509: (Error) Duplicated definition for: ''import''<Line 174, Column 28>: XML-24509: (Error) Duplicated definition for: ''alias''<Line 203, Column 33>: XML-24509: (Error) Duplicated definition for: ''beanElements''<Line 218, Column 44>: XML-24509: (Error) Duplicated definition for: ''beanAttributes''<Line 462, Column 43>: XML-24509: (Error) Duplicated definition for: ''meta''<Line 470, Column 35>: XML-24509: (Error) Duplicated definition for: ''metaType''<Line 487, Column 27>: XML-24509: (Error) Duplicated definition for: ''bean''<Line 507, Column 38>: XML-24509: (Error) Duplicated definition for: ''constructor-arg''.....2014-08-19 18:28:52,014 ERROR | main | org.springframework.web.servlet.DispatcherServlet       | Context initialization failed org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 16 in XML document from class path resource [META-INF/spring/myapp-context.xml] is invalid; nested exception is oracle.xml.parser.schema.XSDException: Duplicated definition for: ''identifiedType''    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396) ~[spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) ~[spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) ~[spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]

来自类路径资源[META-INF / spring / myapp-context.xml]的XML文档中的第16行无效;

myapp-context.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:sec="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"    xmlns:cache="http://www.springframework.org/schema/cache"    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd        http://www.springframework.org/schema/security        http://www.springframework.org/schema/security/spring-security-3.1.xsd        http://www.springframework.org/schema/util        http://www.springframework.org/schema/util/spring-util-3.2.xsd        http://www.springframework.org/schema/cache         http://www.springframework.org/schema/cache/spring-cache.xsd">

第16行是 http://www.springframework.org/schema/cache/spring-cache.xsd">

假设我删除了Line16及其引用,那么将相同的错误抛出在另一行,例如第13行

更多错误堆栈跟踪:

Caused by: org.xml.sax.SAXParseException: <Line 13, Column 70>: XML-24500: (Error) Can not build schema ''http://www.springframework.org/schema/tx'' located at ''http://www.springframework.org/schema/tx/spring-tx.xsd''    at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:425) ~[xmlparserv2-11.1.1.jar:na]    at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:287) ~[xmlparserv2-11.1.1.jar:na]    at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:343) ~[xmlparserv2-11.1.1.jar:na]    at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:226) ~[xmlparserv2-11.1.1.jar:na]    at oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:155) ~[xmlparserv2-11.1.1.jar:na]Caused by: oracle.xml.parser.schema.XSDException: Duplicated definition for: ''identifiedType''    at oracle.xml.parser.schema.XSDBuilder.buildSchema(XSDBuilder.java:794) ~[xmlparserv2-11.1.1.jar:na]    at oracle.xml.parser.schema.XSDBuilder.build(XSDBuilder.java:489) ~[xmlparserv2-11.1.1.jar:na]    at oracle.xml.parser.schema.XSDValidator.processSchemaLocation(XSDValidator.java:999) ~[xmlparserv2-11.1.1.jar:na]    at oracle.xml.parser.schema.XSDValidator.startElement(XSDValidator.java:604) ~[xmlparserv2-11.1.1.jar:na]

更新1

根据发布的答案,它说有一个快速的解决方案,

要覆盖xmlparserv2.jar所做的更改,请将以下JVM属性添加到应用程序服务器启动参数中。java.xml.parsers.FactoryFinder逻辑将首先检查环境变量。

-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl

如链接https://community.oracle.com/thread/1080787中明确指出的那样,不建议这样做

在Maven Spring项目中,通过在%PROJECT_HOME%/ src / main /
resources目录中创建以下文件来覆盖xmlparserv2.jar设置:

%PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.parsers.DocumentBuilderFactory (which defines com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl as the default)%PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.parsers.SAXParserFactory (which defines com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl as the default)%PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.transform.TransformerFactory (which defines com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl as the default)

我不清楚。

如何将这些文件拖放到提到的目录中?这是推荐的解决方案吗?

更新2

我尝试添加VM参数-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
,它有效。

但是,寻找替代的,更合适的解决方案。这只是一个解决方法。当通过说Jenkins将应用程序部署到服务器时,不适合设置这些与XML解析器相关的VM参数设置。

更新3

@Ian Roberts的答案解决了这个问题。我清理了context.xml以一致地使用xsd的版本号。

答案1

小编典典

您的schemaLocation是版本(spring-beans-3.2.xsd)和非版本(spring-tx.xsd)模式名称的混合。您应始终使用一种样式或另一种样式,而不要混合使用两种样式。我怀疑这里发生的事情是您明确引用了3.2版本的spring-
beans,但是您的未版本化架构中的一个导入了相同架构的另一个版本,导致的两个定义冲突beans:identifiedType

APPLICATIONCONTEXT.XML 与 SPRING-MYBATIS.XML

APPLICATIONCONTEXT.XML 与 SPRING-MYBATIS.XML

之前使用的 ssm 框架时,配置的是 spring-mybatis.xml 这个文件,今天在网上搜 ssm 框架整合时,发现了 applicationContext.xml 这个文件(对于 Spring 和 mybatis 两个框架的整合),然后又查了下 spring-mybatis.xml 的配置,发现 applicationContext.xml 与 spring-mybatis.xml 的配置内容都差不多,所以,我觉得这两个文件虽然名称不同,但是要做的内容都是相同的,整合 Spring 与 MyBatis 这两个框架

Spring

Spring 是一个开源框架,Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。简单来说,Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架

MyBatis

MyBatis 本是 apache 的一个开源项目 iBatis, 2010 年这个项目由 apache software foundation 迁移到了 google code,并且改名为 MyBatis 。MyBatis 是一个基于 Java 的持久层框架。iBATIS 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAO)MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录

文件配置(Spring 与 MyBatis 整合)

以下大部分内容转自:https://www.cnblogs.com/zipon/p/5773735.html

applicationContext.xml 模板

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
</beans>

applicationContext.xml 配置内容((在 web.xml 文件需要加 < listener>)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:cache="http://www.springframework.org/schema/cache"
    xsi:schemaLocation="
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/jdbc
    http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
    http://www.springframework.org/schema/cache
    http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd">
 
    <<span style="color:#ff0000;">!-- 自动扫描web包 ,将带有注解的类 纳入spring容器管理 --></span>
    <context:component-scan base-package="com.eduoinfo.finances.bank.web"></context:component-scan>
 
    <!-- 引入jdbc配置文件 -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath*:jdbc.properties</value>
            </list>
        </property>
    </bean>
 
    <!-- dataSource 配置 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!-- 基本属性 url、user、password -->
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
 
        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="1" />
        <property name="minIdle" value="1" />
        <property name="maxActive" value="20" />
 
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000" />
 
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
 
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000" />
 
        <property name="validationQuery" value="SELECT ''x''" />
        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />
 
        <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
        <property name="poolPreparedStatements" value="false" />
        <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
 
        <!-- 配置监控统计拦截的filters -->
        <property name="filters" value="stat" />
    </bean>
 
    <!-- mybatis文件配置,扫描所有mapper文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource" p:configLocation="classpath:mybatis-config.xml" p:mapperLocations="classpath:com/eduoinfo/finances/bank/web/dao/*.xml" />
 
    <span style="color:#ff0000;"><!-- spring与mybatis整合配置,扫描所有dao --></span>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" p:basePackage="com.eduoinfo.finances.bank.web.dao" p:sqlSessionFactoryBeanName="sqlSessionFactory" />
 
    <!-- 对dataSource 数据源进行事务管理 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" />
 
    <span style="color:#ff0000;"><!-- 配置使Spring采用CGLIB代理 --></span>
    <aop:aspectj-autoproxy proxy-target-class="true" />
 
   <span style="color:#ff0000;"> <!-- 启用对事务注解的支持 --></span>
    <tx:annotation-driven transaction-manager="transactionManager" />
 
<span style="color:#ff0000;">    <!-- Cache配置 --></span>
    <cache:annotation-driven cache-manager="cacheManager" />
    <bean id="ehCacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="classpath:ehcache.xml" />
    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="ehCacheManagerFactory" />
 
</beans>

 

对于 pojo(entity)层之前我都是单独配置一个 mybatis-config.xml,然后进行引入,而以下的配置是直接将 pojo 配在了 Session 的配置里,省去了一个配置,值得学习:此段代码参考链接:https://blog.csdn.net/u010067848/article/details/78985444

<!--Mybatis的SessionFactory配置 -->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="typeAliasesPackage" value="com.azimiao.tmall.pojo"/>
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>

1、<context:component-scan base-package=”com.eduoinfo.finances.bank.web”></context:component-scan> 作用 Spring 容器初始化的时候,会扫描 com.eduoinfo.finances.bank.web 下 标有 (@Component,@Service,@Controller,@Repository) 注解的 类 纳入 spring 容器管理

在类上 ,使用以下注解,实现 bean 的声明
@Component 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Service 用于标注业务层组件
@Controller 用于标注控制层组件(如 srping mvc 的 controller,struts 中的 action)
@Repository 用于标注数据访问组件,即 DAO 组件

示例:
@Controller
@RequestMapping(value = “/test”)
public class TestController {}

在类的成员变量上,使用以下注解,实现属性的自动装配
@Autowired : 按类 的 类型进行装配
@Resource (推荐) : 1 如果同时指定了 name 和 type,则从 Spring 上下文中找到唯一匹配的 bean 进行装配,找不到则抛出异常

  2. 如果指定了 name,则从上下文中查找名称(id)匹配的 bean 进行装配,找不到则抛出异常
3. 如果指定了 type,则从上下文中找到类型匹配的唯一 bean 进行装配,找不到或者找到多个,都会抛出异常 
4. 如果既没有指定 name,又没有指定 type,则自动按照 byName 方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
@Resource 注解在字段上,这样就不用写 setter 方法了,并且这个注解是属于 J2EE 的,减少了与 spring 的耦合。

示例:
@Resource
private TestServiceImpl testServiceImpl;

 

spring-mvc.xml 和 application-context.xml 的配置与深入理解链接:https://blog.csdn.net/qq_35571554/article/details/82453684

 

java 9 Type TypeNotPresentException: javax.xml.bind.JAXBContext not present

java 9 Type TypeNotPresentException: javax.xml.bind.JAXBContext not present

使用java9运行spring boot项目,出现了以下的异常

java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present
	at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117) ~[na:na]
	at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125) ~[na:na]
	at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) ~[na:na]
	at java.base/sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68) ~[na:na]
	at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138) ~[na:na]
	at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) ~[na:na]
	at java.base/sun.reflect.generics.repository.ClassRepository.computeSuperInterfaces(ClassRepository.java:117) ~[na:na]
	at java.base/sun.reflect.generics.repository.ClassRepository.getSuperInterfaces(ClassRepository.java:95) ~[na:na]
	at java.base/java.lang.Class.getGenericInterfaces(Class.java:1112) ~[na:na]
	at com.sun.jersey.core.reflection.ReflectionHelper.getClass(ReflectionHelper.java:629) ~[jersey-core-1.19.1.jar:1.19.1]
	at com.sun.jersey.core.reflection.ReflectionHelper.getClass(ReflectionHelper.java:625) ~[jersey-core-1.19.1.jar:1.19.1]
	at com.sun.jersey.core.spi.factory.ContextResolverFactory.getParameterizedType(ContextResolverFactory.java:202) ~[jersey-core-1.19.1.jar:1.19.1]
	at com.sun.jersey.core.spi.factory.ContextResolverFactory.init(ContextResolverFactory.java:89) ~[jersey-core-1.19.1.jar:1.19.1]
	at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1332) ~[jersey-server-1.19.1.jar:1.19.1]
	at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180) ~[jersey-server-1.19.1.jar:1.19.1]
	at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799) ~[jersey-server-1.19.1.jar:1.19.1]
	at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795) ~[jersey-server-1.19.1.jar:1.19.1]
	at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) ~[jersey-core-1.19.1.jar:1.19.1]
	at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795) ~[jersey-server-1.19.1.jar:1.19.1]
	at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790) ~[jersey-server-1.19.1.jar:1.19.1]
	at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:509) ~[jersey-servlet-1.19.1.jar:1.19.1]
	at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:339) ~[jersey-servlet-1.19.1.jar:1.19.1]
	at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) ~[jersey-servlet-1.19.1.jar:1.19.1]
	at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) ~[jersey-servlet-1.19.1.jar:1.19.1]
	at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394) ~[jersey-servlet-1.19.1.jar:1.19.1]
	at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:744) ~[jersey-servlet-1.19.1.jar:1.19.1]
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:285) ~[tomcat-embed-core-8.5.27.jar:8.5.27]
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:112) ~[tomcat-embed-core-8.5.27.jar:8.5.27]
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4591) [tomcat-embed-core-8.5.27.jar:8.5.27]
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233) [tomcat-embed-core-8.5.27.jar:8.5.27]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.27.jar:8.5.27]
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) [tomcat-embed-core-8.5.27.jar:8.5.27]
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) [tomcat-embed-core-8.5.27.jar:8.5.27]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) [na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) [na:na]
	at java.base/java.lang.Thread.run(Thread.java:844) [na:na]
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) ~[na:na]
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) ~[na:na]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) ~[na:na]
	at java.base/java.lang.Class.forName0(Native Method) ~[na:na]
	at java.base/java.lang.Class.forName(Class.java:375) ~[na:na]
	at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114) ~[na:na]
	... 36 common frames omitted

解决方案1:引入jaxb-api依赖

解决方案2:运行时,指定命令--add-modules java.xml.bind(dirty solution)

引发该问题的原因,以及解决方案xxx:详见 https://stackoverflow.com/questions/43574426/how-to-resolve-java-lang-noclassdeffounderror-javax-xml-bind-jaxbexception-in-j

Java Spring Framework中applicationContext.xml和spring-servlet.xml之间的区别

Java Spring Framework中applicationContext.xml和spring-servlet.xml之间的区别

  • applicationContext.xmlspring-servlet.xmlSpring Framework中相关吗?
  • 声明的属性文件applicationContext.xml是否可用于DispatcherServlet
  • 在相关说明中,为什么我根本不需要*-servlet.xml?为什么一个applicationContext.xml人不够?

java10运行springboot项目出现:Type javax.xml.bind.JAXBContext not present

java10运行springboot项目出现:Type javax.xml.bind.JAXBContext not present

原因:java9模块化的概念使得JAXB默认没有加载;

jaxb-api是存在jdk中的,只是默认没有加载而已,手动引入即可。

推荐方式:(作者采用的此方式)

<!-- jaxb模块引用 - start -->
<dependency>
   <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>
<!-- jaxb模块引用 - end -->

java9模块命令方式:

--add-modles java.xml.bind

java9默认未加载模块:

javax.activation
javax.corba
javax.transaction
javax.xml.bind
javax.xml.ws
javax.xml.ws.annotation

推荐大家升级到JDK11,此为LTS版本(Oracle长期支持版本),BUG更少、兼容性更强

关于Java:Spring:读取spring context.xml时发生XML冲突。'identifiedType'的重复定义spring读取xml配置文件的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于APPLICATIONCONTEXT.XML 与 SPRING-MYBATIS.XML、java 9 Type TypeNotPresentException: javax.xml.bind.JAXBContext not present、Java Spring Framework中applicationContext.xml和spring-servlet.xml之间的区别、java10运行springboot项目出现:Type javax.xml.bind.JAXBContext not present等相关内容,可以在本站寻找。

本文标签: