Maven项目在Eclipse中的tomcat上启动,缺少jar包的问题

        就是因为搜不到所以才分享出来。并不是到处能搜到的如下解决方案:

        右击项目->properties->找到Deployment Assembly,右边便是编译打包的配置,看是不是缺少了lib库的依赖,我的就是,点击Add,添加maven依赖库。最后列表如下。

        如上的方案,我自己看了一下,本身就是这样的,都不用设置,重设了一次,也无效。报测错误就是访问jsp时报错,大致就是:

        http://java.sun.com/jsp/jstl/core  在 web.xml 中找不到对应的说明  之类的错误。因为我的jsp中以开始就引用了这个 c 标签嘛。

        想来想去,应该还是我的 eclipse  项目在tomcat 下是直接以目录映射项目的方式进去访问的,而这种方式和 myeclipse 的最大差异就是:它不是把项目整体编译好之后,复制到 tomcat 的 webapps 目录下的。那么,在映射时,就硬性的需要 WEB-INF/lib 目录下得有 jar 文件,否则,访问所有的相关功能时,就会报错。

        故而,如果先经过了处理逻辑,则依赖的 jar 就会因为找不到而报对应的错,而如果是空逻辑转向 jsp 去跑,则就会报 标签库找不到对应jar的错误。

        想到的如上的原则,那么来解决它就好了,找了一下,maven 正好有相关的 copy 插件,在 pom.xml 中 插件部分引入如下代码即可:

<plugin> 
  <groupId>org.apache.maven.plugins</groupId>  
  <artifactId>maven-dependency-plugin</artifactId>  
  <executions> 
    <execution> 
      <phase>clean</phase>  
      <goals> 
        <goal>copy-dependencies</goal> 
      </goals>  
      <configuration> 
        <outputDirectory>src/main/webapp/WEB-INF/lib</outputDirectory>  
        <overWriteReleases>false</overWriteReleases>  
        <overWriteSnapshots>false</overWriteSnapshots>  
        <overWriteIfNewer>true</overWriteIfNewer> 
      </configuration> 
    </execution> 
  </executions> 
</plugin>

        这段代码的含义,就是在执行 maven 的 clean 阶段,把所有配置的依赖jar,直接复制到项目的 lib 目录下。根据含义,clean 一下项目,发现 jar 已经全部过去了,再把项目加入到 tomcat,启动访问之。OK,一切正常了,问题解决。

猜你喜欢

转载自my.oschina.net/sxgkwei/blog/1615482