java - 带有外部 jar dao 的 spring mybatis

标签 java spring tomcat jvm mybatis

我正在开发两个需要相同 DAO 类的 Spring-Mybatis 项目,因为它们连接到相同的数据库。

我为 DAO 类生成了 jar 并将其放入类路径中。

但是 Mybatis 找不到这些类,因为 Tomcat 和 Spring 在 Mybatis 的初始化生命周期中还没有加载 DAO jar。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in ServletContext resource [/WEB-INF/database-context.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [com/test/ca/mybatis-config.xml]; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error registering typeAlias for 'AgentInfo'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.test.ca.domain.AgentInfo
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:610)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5017)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5531)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
Caused by: org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [com/test/ca/mybatis-config.xml]; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error registering typeAlias for 'AgentInfo'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.test.ca.domain.AgentInfo
    at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:434)
    at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509)
    ... 22 more
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error registering typeAlias for 'AgentInfo'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.test.ca.domain.AgentInfo
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:106)
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:89)
    at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:428)
    ... 25 more
Caused by: org.apache.ibatis.builder.BuilderException: Error registering typeAlias for 'AgentInfo'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.test.ca.domain.AgentInfo
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.typeAliasesElement(XMLConfigBuilder.java:127)
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:96)
    ... 27 more
Caused by: java.lang.ClassNotFoundException: Cannot find class: com.test.ca.domain.AgentInfo
    at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:188)
    at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:87)
    at org.apache.ibatis.io.Resources.classForName(Resources.java:254)
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.typeAliasesElement(XMLConfigBuilder.java:120)

所以我把jar放在tomcat/lib文件夹中,但是我需要在文件夹中添加所有依赖jar以避免ClassNotFoundException。

我尝试这样做是因为我不想两次创建相同的 DAO 类。

谁能帮帮我?

最佳答案

将所有依赖jar 放在你的项目中是非常繁琐的。

我会建议您将 maven 集成到您现有的项目中,并提供对您的 dao jar 的依赖。

如果你的 dao jar 依赖于其他一些类,maven 会为你下载它。

关于java - 带有外部 jar dao 的 spring mybatis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33406159/

相关文章:

java - 将 UserDetails 添加到 SecurityContextHolder

java - 客户端中的 Spring REST 自定义错误对象处理

java - 使用 contextDestroyed 干预长时间运行的线程

java - Tomcat 中的自定义日志记录(设计模式)

java - 在 eclipse 中运行 JUnit 测试用例时没有套接字可用错误

java - 是否可以在 AmCharts 指南中使用 session 值?

java - 处理 Servlet 中的异常

java - 使用 Spring Security 注册页面

spring - Lombok @RequiredArgsConstructor 不工作,在 Eclipse 中编译时导致 "the blank final field may not have been initialized"错误

linux - 从 80 端口的 Eclipse 启动 Tomcat ( Linux )