`
xiaoyaocao
  • 浏览: 276120 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

SpringMVC 工程打成jar包后,hbm.xml文件无法加载,action无法映射的问题

阅读更多

     最近由于项目平台上开发新的子项目,发现平台结构越来越复杂,非常难看,也不便于维护。于是乎将平台基础部分进行了打包,扔到lib里面去。

     jar包打好了,启动tomcat测试,启动时就报错了,说无法创建hibernate的sessionfactory,不可能啊,我没打包之前都是好的,难道打包就不能用了?检查,发现是扫描hbm.xml映射文件失败,于是检查hibernate配置文件,有这么几行代码:

 

<property name="mappingDirectoryLocations">
	<list>
		<value>classpath:com/per/domain</value>
	</list>
</property>

 查阅mappingDirectoryLocations的相关资料,有这么一些描述:

 

写道
LocalSessionFactoryBean有好几个属性用来查找hibernate映射文件:mappingResources、mappingLocations、mappingDirectoryLocations与mappingJarLocations
他们的区别:
mappingResources:指定classpath下具体映射文件名
<property name="mappingResources">
<value>petclinic.hbm.xml </value>
</property>
mappingLocations:可以指定任何文件路径,并且可以指定前缀:classpath、file等
<property name="mappingLocations">
<value>/WEB-INF/petclinic.hbm.xml </value>
</property>

<property name="mappingLocations">
<value>classpath:/com/company/domain/petclinic.hbm.xml </value>
</property>
也可以用通配符指定,'*'指定一个文件(路径)名,'**'指定多个文件(路径)名,例如:
<property name="mappingLocations">
<value>classpath:/com/company/domainmaps/*.hbm.xml </value>
</property>
上面的配置是在com/company/domain包下任何maps路径下的hbm.xml文件都被加载为映射文件

mappingDirectoryLocations:指定映射的文件路径

<property name="mappingDirectoryLocations">
<list>
<value>WEB-INF/HibernateMappings</value>
</list>
</property>
也可以通过classpath来指出
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/XXX/package/</value>
</list>
</property>

mappingJarLocations:指定加载的映射文件在jar文件中

 哦,原来有个mappingJarLocations属性,于是赶紧搜mappingJarLocations的资料,在本网站内看到如下一段内容:

 

http://zprill.iteye.com/blog/716197写道

 

<property name="mappingLocations">
<list>
<value>classpath:com/test/hbm/*.hbm.xml</value>
</list>
</property>
当hbm文件被打成jar包时,上面的方法就不能用了。幸亏org.springframework.orm.hibernate3.LocalSessionFactoryBean还有mappingJarLocations属性。
<property name="mappingJarLocations">
<list>
<value>WEB-INF/lib/test.jar</value>
</list>
</property>

这样就不怕被读不到文件了

 好了,赶快改吧,将上面有问题的代码改成这样:

<property name="mappingJarLocations">
	<list>
		<value>WEB-INF/lib/comm-base.jar</value>
	</list>
</property>
<property name="mappingDirectoryLocations">
	<list>
	       <value>classpath:com/per/**/domain</value>
	</list>
</property>

 重启tomcat ,好了,这下没报错了。不过新的问题来了,原来可以访问的网页现在访问报404错误。奇怪了,再google一把,原来是jar包的问题,跟这位仁兄是一样的问题:

 

http://xinglu.iteye.com/blog/1457029 写道

 

近期在用spring3做一个项目,用到了里面的一个自动扫描组件的特性.但是工程分为了好多个小项目,有个统一的开发平台,这个平台的支撑类会被我做成一个jar包被其它几个子工程引用.

开发的时候使用的是工厂引用工厂的方式,在eclipse里面的classpath里面把该平台工厂引入即可,避免了每次修改了平台代码都要重新打包的问题.这个方法不是在web project类型,对于web-project,还是需要沿用老办法,即打成jar包,然后让web-project引用进来.

这时发现个问题,就是平台下junit测试正常的一些spring bean,到了web-project里面发现无法关联到了.
搞了很久,也上网查了很多资料,一开始以为是要修改<context:component-scan >里面的resource-pattern属性,后来改来改去都解决不了问题.

最后发现一个问题,是我们的eclipse自带的jar打包程序,默认打包的时候有个选项<Add directory entries>没有勾选,只要勾选了,就完全没有问题了,无须再对<context:component-scan >进行任何修改了.

罪恶的<Add directory entries>选项啊!

 

好了,重新打包,再试,ok,问题解决。

 

小细节可真多啊~记录在此,以备后查吧。

分享到:
评论
1 楼 unhappy 2016-03-03  
你好,如果将spring mvc的工程打成jar包,你是如何运行的?是否可以将打好的jar放在其他spring mvc工程中启动运行?

相关推荐

    springmvc需要的jar包,pom.xml类型

    springmvc需要的jar包,pom.xml类型的,使用方式见链接https://blog.csdn.net/u010924720/article/details/97898578

    一套基本的SpringMvc工程所需要的最基本jar包(pom.xml)

    标题 "一套基本的SpringMvc工程所需要的最基本jar包(pom.xml)" 暗示了这个压缩包包含的是构建一个基于Spring MVC的Java Web项目所必需的依赖。Spring MVC是Spring框架的一部分,它提供了一个用于开发Web应用程序的...

    spring整合springmvc、mybatis的jar包和配置文件

    spring整合springmvc、mybatis的jar包和配置文件,spring整合springmvc、mybatis的jar包和配置文件,spring整合springmvc、mybatis的jar包和配置文件

    springmvc+hibernate maven工程pom.xml文件配置

    springmvc+hibernate的maven工程pom.xml文件配置

    springmvc,mybaitis json jar包

    springmvc,mybaitis json jar包Spring各jar包详解spring.jar 是包含有完整发布模块的单个jar 包。但是不包括mock.jar,aspects.jar, spring-portlet.jar, and spring-hibernate2.jar。 spring-src.zip就是所有的源...

    ssm配置文件springmvc.xml

    ssm配置文件springmvc.xml

    如何加载jar包中的spring配置文件

    例如,如果你的jar包名为`mylib.jar`,配置文件为`myconfig.xml`,你可以这样加载: ```java Resource resource = new ClassPathResource("mylib.jar!/META-INF/myconfig.xml"); ``` 这里的`!`字符是JAR URL协议的...

    springmvc-config.xml

    这是一个springmvc-config.xml文件,&lt;?xml version="1.0" encoding="UTF-8"?&gt; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:...

    mybatis3+spring+springMVC4整合jar包.rar

    标题 "mybatis3+spring+springMVC4整合jar包.rar" 描述的是一个整合了MyBatis 3、Spring 4 和 Spring MVC 4 的项目压缩包。这个压缩包通常用于快速搭建一个基于Java的Web开发环境,尤其是用于处理数据库操作和前端...

    springMVC+JAP整合出去persistence.xml配置文件

    在现代Java应用开发中,Spring MVC作为Web框架和Java ...以上就是关于"springMVC+JAP整合出去persistence.xml配置文件"的详细说明,通过这种方式,我们可以构建出更加现代化、高效且易于扩展的Java Web应用。

    spring springmvc mybatis 整合jar包

    spring springmvc mybatis的整合jar包,以及mysql,Junit,fastJson等的jar包,导入这些jar包 搭一个SSM的环境,可以使用SSM框架做一个简单的能够实现增删改查的小项目,具体的jar包及其版本如下 : aopalliance-1.0....

    springMVC支持ajax的jar包

    springMVC支持ajax的jar包,包括 jackson-annotations-2.1.5.jar jackson-core-2.1.4.jar jackson-databind-2.4.3.jar

    SpringMVC-Mybatis-SSM结构JAR包.rar

    本资源包"SpringMVC-Mybatis-SSM结构JAR包.rar"提供了完整的SSM框架集成示例,旨在帮助初学者快速理解和上手这一经典技术栈。 Spring框架是整个SSM的核心,它是一个全面的Java应用程序管理框架,提供了依赖注入(DI...

    springmvc-jackson-jar包集合

    在Spring MVC中集成Jackson,一般只需要在`pom.xml`或`build.gradle`文件中引入对应的依赖,并确保Spring配置正确。当接收到JSON请求时,Spring会自动调用Jackson的`ObjectMapper`将JSON数据转换为Java对象;反之,...

    SpringMVC框架搭建所需jar包.rar

    在搭建SpringMVC项目时,正确配置和选择必要的jar包至关重要。下面将详细介绍SpringMVC框架搭建过程中涉及的关键知识点,并解释压缩包中可能包含的文件。 1. **Spring MVC核心库** - `spring-webmvc.jar`: 这是...

    SpringMVC+Mybatis的jar包所有.zip

    本篇文章将深入探讨SpringMVC和Mybatis的核心概念、作用以及两者如何协同工作,并基于提供的"SpringMVC+Mybatis的jar包所有.zip"文件中的lib目录,解析其中包含的jar包,以帮助读者理解这两个框架的实现机制。...

    springmvc+hibernate使用jar包集合

    在实际开发中,通常会把这些jar包整合到一个lib目录下,然后打包成war文件部署到应用服务器。为了方便起见,可以将这些jar包整理到一个压缩包中,便于下载和使用。在给出的文件名称列表中,"spring"可能指的是Spring...

    SpringMVC+Spring+MyBatis jar包和配置文件

    在提供的压缩包中,文件可能包括Spring、SpringMVC和MyBatis的jar包,以及相关的配置文件,例如spring-context.xml、web.xml、mybatis-config.xml、Mapper接口和XML文件等。这些文件是整合SSM框架的关键,通过它们...

    SpringMVC配置文件以及jar包

    在本文中,我们将深入探讨SpringMVC的配置文件及其相关的jar包,以便更好地理解如何设置和运行一个SpringMVC项目。 首先,让我们来了解SpringMVC的核心配置文件。通常,一个SpringMVC项目会有以下几个主要的配置...

    SpringMVC所有jar包和配置文件

    SpringMVC所有jar包和配置文件可以快速配置springmvc项目

Global site tag (gtag.js) - Google Analytics