在我们搭建开发环境的时候,通常会把项目需要的jar包放到lib目录中,这样项目发布的时候就会将所有的项目相关的包部署到应用环境当中去。这种情况下,jar包只要是不冲突,直接拷贝到WEB-INF\lib目录中即可。
但在开发的过程中我们会接触到两种环境,一是开发环境(对应eclipse中的类路径),二是运行环境(对应应用服务器中的类路径)。那么这时两个环境中jar包的关系就比较复杂了。
[b]这时处理jar包间的关系的总体原则是要保持这两个环境中jar包的版本一致或者兼容。[/b]
总体上看,在开发及部署的过程中一个项目中的jar包主要有三类。一是应用服务器上的jar包,二是项目所需jar包,三是开发环境所需jar包。
在项目WEB-INF\lib目录中的jar包是两个环境中共用的部分。这部分jar包要求不能和两个环境中的jar包有冲突,也就是说lib目录下的jar包是和两个环境中的jar包互补的。而两个环境中的jar包原则上应该是相同的或者兼容的。
例如在eclipse下开发javaEE项目,我们会用到javaEE相关的jar包javaEE.jar,这时的需求是开发环境的需求。但在应用服务器环境中就不需要这个jar,因为应用服务器中会有相关的javaEE的jar包。这时如果我们将项目发布到应用服务器环境中,就会发生jar包冲突的情况。
可我们在开发时还要用这个包,发布时还不能发布到应用服务器中,这怎么办呢?解决的办法如下:
在eclipse中加入这个jar包(这个jar包当然不在项目目录中了),eclipse会提示:
因为我们这时候确认这个jar包是不需要部署到应用服务器环境中的(如果需要就直接放到lib目录下就可以了,就不用费这个事了),所以我们做如下操作,解除eclipse这种依赖关系的提示。
这样就解除了,jar包的依赖,发布的时候就不会在项目中出现这个jar包了。
但在开发的过程中我们会接触到两种环境,一是开发环境(对应eclipse中的类路径),二是运行环境(对应应用服务器中的类路径)。那么这时两个环境中jar包的关系就比较复杂了。
[b]这时处理jar包间的关系的总体原则是要保持这两个环境中jar包的版本一致或者兼容。[/b]
总体上看,在开发及部署的过程中一个项目中的jar包主要有三类。一是应用服务器上的jar包,二是项目所需jar包,三是开发环境所需jar包。
在项目WEB-INF\lib目录中的jar包是两个环境中共用的部分。这部分jar包要求不能和两个环境中的jar包有冲突,也就是说lib目录下的jar包是和两个环境中的jar包互补的。而两个环境中的jar包原则上应该是相同的或者兼容的。
例如在eclipse下开发javaEE项目,我们会用到javaEE相关的jar包javaEE.jar,这时的需求是开发环境的需求。但在应用服务器环境中就不需要这个jar,因为应用服务器中会有相关的javaEE的jar包。这时如果我们将项目发布到应用服务器环境中,就会发生jar包冲突的情况。
可我们在开发时还要用这个包,发布时还不能发布到应用服务器中,这怎么办呢?解决的办法如下:
在eclipse中加入这个jar包(这个jar包当然不在项目目录中了),eclipse会提示:
Classpath entry XXX.jar will not be exported or published. Runtime ClassNotFoundExceptions may result.
因为我们这时候确认这个jar包是不需要部署到应用服务器环境中的(如果需要就直接放到lib目录下就可以了,就不用费这个事了),所以我们做如下操作,解除eclipse这种依赖关系的提示。
点中提示信息-->右键-->Qick fix->exclude the associated raw classpath entry from the set of potential publish/export dependencies-->finish.
这样就解除了,jar包的依赖,发布的时候就不会在项目中出现这个jar包了。