2015-05-31 3 views
0

У меня есть веб-приложение maven, которое имеет некоторые зависимости от весны, но я получаю classnotfoundexception для org.springframework.web.servlet.DispatcherServlet, поэтому по какой-то причине банка не входит в каталог lib.ClassNotFoundException для некоторых весовых зависимостей

Вот мой Maven pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>temp</groupId> 
    <artifactId>TemperatureWebApp</artifactId> 
    <version>1</version> 
    <packaging>war</packaging> 

    <name>TemperatureWebApp</name> 

    <properties> 
     <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <spring.version>4.1.6.RELEASE</spring.version> 
     <war.outputName>TemperatureApp</war.outputName> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.12</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- Spring dependencies --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
      <scope>compile</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.version}</version> 
      <scope>compile</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
        <compilerArguments> 
         <endorseddirs>${endorsed.dir}</endorseddirs> 
        </compilerArguments> 
        <showDeprecation>true</showDeprecation> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.1.1</version> 
       <configuration> 
        <outputFileNameMapping>${war.outputName}</outputFileNameMapping> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.1</version> 
       <executions> 
        <execution> 
         <phase>validate</phase> 
         <goals> 
          <goal>copy</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${endorsed.dir}</outputDirectory> 
          <silent>true</silent> 
          <artifactItems> 
           <artifactItem> 
            <groupId>javax</groupId> 
            <artifactId>javaee-endorsed-api</artifactId> 
            <version>6.0</version> 
            <type>jar</type> 
           </artifactItem> 
          </artifactItems> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

ответ

0

Удалить <scope>compile</scope> от зависимостей. В связи с этим, jars are not getting bundled в результирующем «военном» архиве.

+0

Мое понимание из того, что я прочитал, заключается в том, что компиляция является областью по умолчанию, если ни один не предоставлен, и он не работал без него, поэтому я решил, что все равно попробую. зависимости доступны во всех классах проекта. Более того, эти зависимости распространяются на зависимые проекты ». – user1154644

0

Моя попытка назвать мой архив войны была проблема:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.1.1</version> 
     <configuration> 
      <outputFileNameMapping>${war.outputName}</outputFileNameMapping> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
    </plugin> 

Я удалил outputFileNameMapping декларацию, и теперь банки включены в WAR.

+0

интересно, как «outputFileNameMapping» связано с включениями jar. Я искал что-то, но безуспешно. – Santosh

+0

Я думал то же самое, но я заметил, что когда я включил его, каталог lib имел файл с именем TemperatureWebApp, просто файл, не связанный с ним тип, который был странным, так что это было тогда, когда у меня возникла идея просто удалить это, и это сработало. – user1154644

0

Вы должны добавить «Maven Завис» в Deployement Ассамблее

- правая кнопка мыши на проект и выберите свойство.

- щелкните по разделу «Развертывание».

- нажмите кнопку Добавить

- нажмите на "Java Build Path Записи"

- выберите зависимостями Maven»

. - нажмите кнопку Готово

надеюсь, что он может работать вы.

Смежные вопросы