急!!SSM项目出现错误!文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"。

添加!DOCTYPE的方法行不通,
版本应该也没问题
文件名也没问题
就是出不来,新建了项目,配置文件换了两种写法,改了好多次,结果都是一样的错误
请大家帮我看看代码错在哪啊
首先是测试文件


package com.yangquan.test;

import com.yangquan.dao.OusersMapper;
import com.yangquan.domin.Ousers;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;
import java.io.InputStream;

public class t2 {

    public static void main(String[] args){
        InputStream inputStream = null;
        try {

            inputStream = Resources.getResourceAsStream("springApplication.xml");
        }catch (IOException e){
            e.printStackTrace();
        }
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = build.openSession();
        OusersMapper ousersMapper = sqlSession.getMapper(OusersMapper.class);
        Ousers ousers = (Ousers) ousersMapper.selectAll();
        System.out.println(ousers);
        sqlSession.close();



    }
}

然后是配置文件springApplication.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:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">
    <context:component-scan base-package="com.yangquan"/>
    <context:property-placeholder location="classpath:db.properties"/>
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    >
        <property name="driverClass" value="${driver}"/>
        <property name="jdbcUrl" value="${url}"/>
        <property name="user" value="${username}"/>
        <property name="password" value="${password}"/>
        <!-- c3p0连接池的私有属性 -->
        <property name="maxPoolSize" value="${maxActive}"/>
        <property name="minPoolSize" value="${minActive}"/>
        <property name="initialPoolSize" value="${initialSize}"/>
        <!-- 关闭连接后不自动commit -->
        <property name="autoCommitOnClose" value="${autoCommitOnClose}"/>
        <!-- 获取连接超时时间 -->
        <property name="checkoutTimeout" value="${maxWait}"/>
        <!-- 当获取连接失败重试次数 -->
        <property name="acquireRetryAttempts" value="${acquireRetryAttempts}"/>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--注入我们的数据源 -->
        <property name="dataSource" ref="dataSource">
        </property>
        <property name="typeAliasesPackage" value="com.yangquan.domin"/>
        <!--指定mybatis的配置文件路径,该配置文件下不需要再定义数据库连接信息和mapper信息了,但是可以有一些关于mybatis的配置信息-->
        <!--扫描mapper配置文件中的.xml文件-->
        <property name="mapperLocations" value="classpath*:com/yangquan/mapper/*.xml"/>
        <!--设置别名-->

    </bean>
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.yangquan.dao"/>
    </bean>
    <bean id="myuser" class="com.yangquan.domin.Ousers"></bean>
</beans>


我的目录结构

img


我的错误代码

Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession.
### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 65; 文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"。
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:82)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:66)
    at com.yangquan.test.t2.main(t2.java:25)
Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 65; 文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"。
    at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:263)
    at org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:127)
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.<init>(XMLConfigBuilder.java:82)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:79)
    ... 2 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 65; 文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"。
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:135)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1601)
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1879)
    at

mapper的映射文件和配置文件是自动生成的,应该没错。
网上能试的方法都试过了,但都没用,求各位帮忙找找错误在哪里

你用spring的配置文件去启动mybatis?人才啊

根据您提供的错误信息,可以看出是配置文件的问题,具体来说是springApplication.xml中的DTD类型未正确声明所导致的错误。

您需要在springApplication.xml文件的开头声明正确的DTD类型,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans xmlns="http://www.springframework.org/schema/beans"
...

您可以在spring的官网上找到对应版本的DTD声明,如3.0的DTD声明为:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans-3.0.dtd">

在XML配置文件中,<!DOCTYPE>必须是文档的第一行,位于之前。

另外一个错误是MyBatis在解析XML配置文件时发生的。根据错误信息,似乎是你的XML配置文件中存在问题,具体来说是在第11行第65列有一个不匹配的问题,即“文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"”。这意味着你的XML配置文件中可能存在一个DTD(Document Type Definition)声明,但是它没有被正确地引用或者被省略了。

解决这个问题,你可以按照以下步骤尝试:

1 检查XML配置文件的第11行第65列是否存在拼写错误或其他语法错误。确认是否有DTD声明,如果存在,尝试检查它的正确性。

2 如果存在DTD声明,确认其是否正确引用。如果没有必要,可以将其省略掉。

3 确认你的XML配置文件是否符合MyBatis的要求。你可以参考官方文档来确定是否存在问题。

4 如果以上步骤都没有解决问题,可以尝试更换MyBatis版本或联系MyBatis社区来获得更多帮助。

总的来说,这个问题的原因比较多,需要仔细检查XML配置文件中的语法问题和DTD声明的正确性。希望这些提示能帮到你解决问题。

引用chatGPT作答,根据你提供的错误信息,“文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"”,似乎是因为解析XML配置文件时找不到DOCTYPE声明或无法匹配。

尝试在XML配置文件的开头添加以下DOCTYPE声明:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

确保你的XML配置文件符合Spring的DTD标准,并且正确引用了相关的DTD文件,如果还不行,可以尝试换用更简单的DTD文件进行测试,例如:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

如果你还是遇到问题,建议你检查一下Spring框架的版本是否匹配,并且确保你的XML配置文件没有语法错误。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
在文档开头处添加以下代码:

它应该与beans元素同一级别。完整的springApplication.xml文件应如下所示:

<beans xmlns="http://w/

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    抱歉,没有具体的问题无法提供解决方案。请提供具体的问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^