Błąd Apache Tiles

0

Witajcie,
Zabrałem się za konfigurowanie tiles od apache i napotkałem pewien problem. Podczas wejścia na stronę, uzyskuję błąd że nie można znaleźć klasy z tiles.

javax.servlet.ServletException: Servlet.init() for servlet mvc-dispatcher threw exception
root cause

java.lang.NoClassDefFoundError: org/apache/tiles/startup/TilesInitializer
root cause

java.lang.ClassNotFoundException: org.apache.tiles.startup.TilesInitializer

config mvc:

    <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
        <beans:property name="definitions" value="/WEB-INF/definitions/default.xml"/>
    </beans:bean>

    <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
    </beans:bean>

plik z definicjami:

<definition name="common" template="/WEB-INF/layouts/template.jsp">
        <put-attribute name="header" value="/WEB-INF/layouts/test.jsp"/>
    </definition>

    <definition name="index" extends="common">
        <put-attribute name="title" value="Main page"/>
        <put-attribute name="current" value="index"/>
    </definition>

W template jsp mam odpowiednie wywołania

<title><tiles:getAsString name="title"/></title>
<tilesx:useAttribute name="current"/>
<tiles:insertAttribute name="header"/>
<tiles:insertAttribute name="footer"/>
0

Brak liba od tiles

0

Mam w dependencies tiles-core I tiles-jsp

0

A takie coś

<dependency> <groupid>org.apache.tiles</groupid> <artifactid>tiles-servlet</artifactid> <version>2.2.2</version> </dependency>
0

Dodałem, dalej nie działa

0

Jaką masz wersje tiles?

Spróbuj:


<properties>
     <apache.tiles.version>3.0.5</apache.tiles.version>
</properties>

<dependencies>
     <dependency>
         <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>${apache.tiles.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>${apache.tiles.version}</version>
    </dependency>
<dependencies>

Pamiętaj też, że jeśli masz bibliotekę w wersji 3 to żeby podać prawidłowy pakiet:

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
     <property name="definitions" value="/WEB-INF/definitions/general_definition.xml"/>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
     <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
</bean>

Tu masz przykład działającej aplikacji webowej wykorzystującej tiles 3:
https://github.com/DanielMichalski/spring-web-blogs

0

@bakeraw2 wiem, posiłkuję się twoim projektem. W dependencies mam 2 liby

        <apache.tiles.version>3.0.3</apache.tiles.version>

        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-core</artifactId>
            <version>${apache.tiles.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-jsp</artifactId>
            <version>${apache.tiles.version}</version>
            <scope>compile</scope>
        </dependency>

Reszta dalej nie zmieniona (tak jak w pierwszy poście). Dodam jeszcze że korzystam z glassfisha.
Do kompilacji używam maven-compiler-plugin z domyślnymi ustawieniami, forcowaniem javy 1.8 oraz maven-war-plugin z ustawieniem miejsca katalogu web

0

Zmodyfikowałem nieco kod. Wygląda teraz tak:

<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"/>
    <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
        <beans:property name="definitions">
            <beans:list>
                <beans:value>/WEB-INF/defs/general.xml</beans:value>
            </beans:list>
        </beans:property>
    </beans:bean>

i teraz otrzymuję inny błąd. Związany z klasą Renderer

exception

javax.servlet.ServletException: Servlet.init() for servlet mvc-dispatcher threw exception
root cause

java.lang.NoClassDefFoundError: Lorg/apache/tiles/request/render/Renderer;
root cause

java.lang.ClassNotFoundException: org.apache.tiles.request.render.Renderer
0

<quote="1118882">Zmodyfikowałem nieco kod. Wygląda teraz tak:

<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"/>
    <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
        <beans:property name="definitions">
            <beans:list>
                <beans:value>/WEB-INF/defs/general.xml</beans:value>
            </beans:list>
        </beans:property>
    </beans:bean>

A dlaczego nie tak jak napisałem? o.O

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
     <property name="definitions" value="/WEB-INF/definitions/general_definition.xml"/>
</bean>
 
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
     <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
</bean>
0

Up

0

Problem banalny brak klas to brak klas. Wejdz do wara zajrzyj do katalogu lib czy jest tam jar i czy zawiera ta klase

0

Zawartość katalogu lib
http://prntscr.com/6cy75g

0

Zrób prosty servlet a w nim Class.forName("org.apache.tiles.request.render.Renderer")

0

Nie wiadomo czemu, ale nagle... Po usunięciu katalogu target, usunięciu i stworzeniu od nowa domeny zaczęło działać :)
Szkoda tylko że straciłem tyle czasu

1 użytkowników online, w tym zalogowanych: 0, gości: 1