Mybatis找不到jdbc.properties中的变量的错误:{jdbc_driverClassName}不起作用,的解决方案

本文介绍了Mybatis加载properties文件的顺序,当遇到{jdbc_driverClassName}等变量未生效的问题时,可以参照此顺序排查。首先,Mybatis会读取配置文件中的properties内容;其次,解析Properties节点resource指定的外部文件,如jdbc.properties,此时如果有冲突,以新发现的为准。最后,这些参数会被传递给相关方法执行,确保配置正确才能避免最后时刻的努力付诸东流。
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: ${jdbc_driverClassName}
### The error may exist in ./mapper/UserMapper.xml
### The error may involve org.mybatis.mapper.UserMapper.selectByPrimaryKey
### The error occurred while executing a query
### Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: ${jdbc_driverClassName}
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:98)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:62)
    at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:43)
    at com.sun.proxy.$Proxy0.selectByPrimaryKey(Unknown Source)
    at maven_mybatis.Main.main(Main.java:30)
Caused by: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: ${jdbc_driverClassName}
    at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.initializeDriver(UnpooledDataSource.java:211)
    at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:190)
    at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:186)
    at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:88)
    at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:373)
    at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:82)
    at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:131)
    at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:58)
    at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:271)
    at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:69)
    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:56)
    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:259)
    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:132)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:105)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:104)
    ... 6 more

————————————————————————
解决方案:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
<configuration><!-- 这个configuration的C必须小写,因为dtd里面的configuration是小写的。 -->
    <properties resource="./conf/jdbc.properties"/>   <!--没错,就是加入这句,后面的${}的变量名才能用-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc_driverClassName}"/>
                <property name="url" value="${jdbc_url}"/>
                <property name="username" value="${jdbc_username}"/>
                <property name="password" value="${jdbc_password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="./mapper/UserMapper.xml"/>
    </mappers>
</configuration>

————————其中:mapper和Model都是自动生成的,自动生成,见(18)节文章【有道笔记】。

Properties的加载顺序 

Mybatis对于properties的加载顺序按照以下顺序:

1) 首先Mybatis会找到配置文件中的properties中的内容,例如上面的username=chenzw以及上面的password=1258577,在解析XML文件中的相关对象中的记录的就是配置文件中的properties中的内容。

2) 然后,Mybatis会找到Properties节点属性resource指向的内容,例如在上面的Demo中,该属性指向的内容为jdbc.properties文件,Mybatis就会解析上面的内容,然后得到Properties文件的内容,这个时候,会发现password发生了冲突,有两个不同值的password属性,这里,一定要记住Mybatis会以本次发现的为准,将password文件修改为7758521.

3)其实,这里的配置的所有的参数都会以一个记录的属性值作为参数传递给相关的方法来执行的,调用的方法在Mybatis的API文档中有描述如下:

SqlSessionFactoryfactory = sqlSessionFactoryBuilder.build(reader, props);

SqlSessionFactoryfactory = sqlSessionFactoryBuilder.build(reader, environment, props);

所以,如果在参数中发生了变化,就等于考状元的时候,在最后一步被人顶替了,前面做了啥惊天动地的事情,都成了无用功。


05-Aug-2025 17:30:40.083 警告 [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match[Server/Service/Engine/Host/Context]无法将属性[debug]设置为[0] 05-Aug-2025 17:30:40.096 警告 [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match[Server/Service/Engine/Host/Valve]无法将属性[resolveHosts]设置为[false] 05-Aug-2025 17:30:40.097 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.90 05-Aug-2025 17:30:40.099 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Jun 14 2024 14:45:13 UTC 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.90.0 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 10 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: D:\dzwl\dzwlaz\java\jdk1.8\jre 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 1.8.0_101-b13 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: D:\dzwl\dzwlaz\tomcat\tomcat1 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: D:\dzwl\dzwlaz\tomcat\tomcat1 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=D:\dzwl\dzwlaz\tomcat\tomcat1 05-Aug-2025 17:30:40.107 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=D:\dzwl\dzwlaz\tomcat\tomcat1 05-Aug-2025 17:30:40.108 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dignore.endorsed.dirs=D:\dzwl\dzwlaz\tomcat\tomcat1\endorsed 05-Aug-2025 17:30:40.108 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=D:\dzwl\dzwlaz\tomcat\tomcat1\temp 05-Aug-2025 17:30:40.108 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 05-Aug-2025 17:30:40.108 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dfile.encoding=utf-8 05-Aug-2025 17:30:40.108 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=D:\dzwl\dzwlaz\tomcat\tomcat1\conf\logging.properties 05-Aug-2025 17:30:40.108 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: exit 05-Aug-2025 17:30:40.108 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: abort 05-Aug-2025 17:30:40.108 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Xms4096m 05-Aug-2025 17:30:40.108 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Xmx4096m 05-Aug-2025 17:30:40.113 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.0]。 05-Aug-2025 17:30:40.114 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能:IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。 05-Aug-2025 17:30:40.114 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置:useAprConnector[false],useOpenSSL[true] 05-Aug-2025 17:30:40.120 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.13 30 Jan 2024] 05-Aug-2025 17:30:40.320 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8003"] 05-Aug-2025 17:30:40.335 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[410]毫秒内初始化 05-Aug-2025 17:30:40.356 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina] 05-Aug-2025 17:30:40.357 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.90] 05-Aug-2025 17:30:40.794 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[287]毫秒。 05-Aug-2025 17:30:40.811 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\dzwl\dzwlaz\webapps\api1\api] 05-Aug-2025 17:30:57.753 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 05-Aug-2025 17:31:53.977 严重 [main] org.apache.catalina.startup.HostConfig.deployDirectory 无法部署应用目录 [D:\dzwl\dzwlaz\webapps\api1\api] java.lang.IllegalStateException: 启动子级时出错 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:602) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1175) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1888) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1086) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1584) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:385) at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:332) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:878) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.startup.Catalina.start(Catalina.java:735) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473) Caused by: org.apache.catalina.LifecycleException: 无法启动组件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/api]] at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:402) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:179) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599) ... 37 more Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'emPowerInfo': Invocation of init method failed; nested exception is org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'sys_site_license' 无效。 ### The error may exist in com/dzwl/core/mapper/SysSiteLicenseMapper.java (best guess) ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: SELECT id, name, scode, etime, info FROM sys_site_license WITH (NOLOCK) ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'sys_site_license' 无效。 ; bad SQL grammar []; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'sys_site_license' 无效。 at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:415) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:173) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:153) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:95) at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4438) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) ... 38 more Caused by: org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'sys_site_license' 无效。 ### The error may exist in com/dzwl/core/mapper/SysSiteLicenseMapper.java (best guess) ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: SELECT id, name, scode, etime, info FROM sys_site_license WITH (NOLOCK) ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'sys_site_license' 无效。 ; bad SQL grammar []; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'sys_site_license' 无效。 at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) at com.sun.proxy.$Proxy162.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223) at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:173) at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:78) at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) at com.sun.proxy.$Proxy634.selectList(Unknown Source) at com.baomidou.mybatisplus.extension.service.IService.list(IService.java:279) at com.baomidou.mybatisplus.extension.service.IService.list(IService.java:288) at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) at com.dzwl.core.service.impl.SysSiteLicenseServiceImpl$$EnhancerBySpringCGLIB$$470fcf13.list(<generated>) at com.dzwl.core.config.EmPowerInfo.init(EmPowerInfo.java:96) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ... 60 more Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'sys_site_license' 无效。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1632) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:602) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:524) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7375) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3206) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:247) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:222) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(SQLServerPreparedStatement.java:505) at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3461) at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440) at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3459) at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:167) at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497) at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64) at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63) at com.sun.proxy.$Proxy638.query(Unknown Source) at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.doQuery(MybatisSimpleExecutor.java:69) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor.query(MybatisCachingExecutor.java:165) at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:65) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) at com.sun.proxy.$Proxy637.query(Unknown Source) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426) ... 91 more 05-Aug-2025 17:31:53.981 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\dzwl\dzwlaz\webapps\api1\api]的部署已在[73,171]毫秒内完成 05-Aug-2025 17:31:53.981 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\dzwl\dzwlaz\webapps\api1\dist] 05-Aug-2025 17:31:54.010 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\dzwl\dzwlaz\webapps\api1\dist]的部署已在[29]毫秒内完成 05-Aug-2025 17:31:54.011 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\dzwl\dzwlaz\webapps\api1\jzjk] 05-Aug-2025 17:31:54.036 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\dzwl\dzwlaz\webapps\api1\jzjk]的部署已在[25]毫秒内完成 05-Aug-2025 17:31:54.036 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\dzwl\dzwlaz\webapps\api1\jzjkApp] 05-Aug-2025 17:31:54.060 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\dzwl\dzwlaz\webapps\api1\jzjkApp]的部署已在[24]毫秒内完成 05-Aug-2025 17:31:54.060 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\dzwl\dzwlaz\webapps\api1\pdjk] 05-Aug-2025 17:31:54.085 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\dzwl\dzwlaz\webapps\api1\pdjk]的部署已在[25]毫秒内完成 05-Aug-2025 17:31:54.092 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8003"] 05-Aug-2025 17:31:54.102 信息 [main] org.apache.catalina.startup.Catalina.start [73767]毫秒后服务器启动 05-Aug-2025 17:35:41.014 信息 [Thread-6] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8003"] 05-Aug-2025 17:35:41.386 信息 [Thread-6] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina] 05-Aug-2025 17:35:41.424 信息 [Thread-6] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8003"] 05-Aug-2025 17:35:41.432 信息 [Thread-6] org.apache.coyote.AbstractProtocol.destroy 正在摧毁协议处理器 ["http-nio-8003"] 05-Aug-2025 17:35:41.438 警告 [Thread-6] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [api] 注册了JDBC驱动程序 [com.alibaba.druid.proxy.DruidDriver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 05-Aug-2025 17:35:41.438 警告 [Thread-6] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [api] 注册了JDBC驱动程序 [com.microsoft.sqlserver.jdbc.SQLServerDriver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 05-Aug-2025 17:35:41.439 警告 [Thread-6] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[api]似乎启动了一个名为[JNA Cleaner]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[ java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) com.sun.jna.internal.Cleaner$1.run(Cleaner.java:58)] 05-Aug-2025 17:35:41.439 警告 [Thread-6] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[api]似乎启动了一个名为[Thread-4]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[ sun.net.dns.ResolverConfigurationImpl.notifyAddrChange0(Native Method) sun.net.dns.ResolverConfigurationImpl$AddressChangeListener.run(ResolverConfigurationImpl.java:144)]
最新发布
08-06
- 这是一个在运行MyBatis相关测试时出现的错误错误信息表明在查询数据库时出现问题,原因是在设置 UnpooledDataSource 的驱动时出错,进一步原因是不到类 ${jdbc.driver} 。 2. 具体错误点分析: -  ClassNotFoundException 部分: - 错误信息 java.lang.ClassNotFoundException: Cannot find class:${jdbc.driver} 表示程序试图加载一个类,但是不到。这里的 ${jdbc.driver} 看起来像是一个占位符,在实际应用中,应该是通过配置文件等方式替换为真实的JDBC驱动类名,比如 com.mysql.jdbc.Driver (针对MySQL数据库)。这很可能是配置文件没有正确加载或者占位符没有被正确替换,导致程序把 ${jdbc.driver} 当成了一个实际的类名去加载,所以报不到类的错误。 -  SQLException 部分: -  java.sql.SQLException: Error setting driver on UnpooledDataSource 是由于前面的 ClassNotFoundException 导致的。因为不到JDBC驱动类,所以在 UnpooledDataSource 上设置驱动时就抛出了SQL异常。 - MyBatis相关部分: -  ### Error querying database.  说明MyBatis在执行数据库查询操作时出错。 ### The error may exist in org/dongyong/dao/StudentMapper.java (best guess)  提示错误可能存在于 StudentMapper.java 文件中, ### The error may involve org.dongyong.dao.StudentMapper.selectByPrimaryKey 表明可能涉及到 selectByPrimaryKey 这个方法, ### The error occurred while executing a query 明确是在执行查询时出现错误。这些信息结合起来看,就是在 StudentMapper 的 selectByPrimaryKey 方法执行查询时,由于JDBC驱动加载问题导致出错。具体解决思路
03-29
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值