2017-01-28 13 views
1

Spring Boot 1.4.3Apache tiles 3を設定しようとしています。コンフィギュレーションを使用すると、私は取得しています下に:私はMavenDependencisを見てみるとスプリングブートタイル - java.lang.NoClassDefFoundError:org/apache/commons/beanutils/MethodUtils

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/beanutils/MethodUtils

をMethodUtilsクラスを含むjarファイルcommons-beanutils-1.9.3があります! なぜ埋め込みtomcat8.5.6はそれを見ることができませんか?

のpom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<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>io.boot.spring</groupId> 
    <artifactId>Spring-Boot-RSSReader</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>Spring-Boot-RSSReader</name> 
    <description></description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.3.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 

    <dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-jsp</artifactId> 
     <version>3.0.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

ConfigForTiles:

@Configuration 
public class ConfigForTiles { 

    @Bean 
    public TilesConfigurer tilesConfigurer(){ 
     final TilesConfigurer configurer = new TilesConfigurer(); 
     configurer.setDefinitions(new String [] {"WEB-INF/tiles/tiles.xml"}); 
     configurer.setCheckRefresh(true); 
     return configurer; 
    } 

    @Bean 
    public TilesViewResolver tilesViewResolver(){ 
     final TilesViewResolver resolver = new TilesViewResolver(); 
     resolver.setViewClass(TilesView.class); 
     return resolver; 
    } 
} 

コントローラー:

@Controller 
public class IndexController { 

    @RequestMapping("/") 
    public String index(){ 
     return "index"; 
    } 
} 

application.properties:

spring.mvc.view.prefix=/WEB-INF/jsp/ 

spring.mvc.view.suffix=.jsp 

MVNの依存関係:ツリー

[INFO] Scanning for projects... 
[INFO] +- org.apache.tiles:tiles-jsp:jar:3.0.5:compile 
[INFO] | | | +- commons-digester:commons-digester:jar:2.1:compile 
[INFO] | | | | \- commons-beanutils:commons-beanutils:jar:1.9.3:compile 
[INFO] | | | |  \- commons-collections:commons-collections:jar:3.2.2:compile 

答えて

0

は、あなたのクラスパスにcommons-beanutilsの複数のバージョンを持っているようです。

commons-beanutilsを検索すると、commons-beanutilsの複数のバージョンが見つかります。これをデバッグすることができます

Mavenのコマンド:org.apache.tilesからcommons-beanutils除く

mvn dependency:tree 
mvn help:effective-pom 

しようとすると、次のように:

<dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-jsp</artifactId> 
     <version>3.0.5</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-beanutils</groupId> 
      <artifactId>commons-beanutils</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
+0

を私がSTSに3.8.3 commons-の唯一のバージョンがあるを使用していますクラスパスのbeanutils – elk

+0

@ user3273720私の更新された答えをチェックしてください。 – Arpit

+0

org.apache.tilesからcommons-beanutilsを除外してもエラーメッセージが表示されませんでした:NoClassDefFoundError – elk