Naprostszy Spring MVC nie ruszy, błędna struktura projektu

0

Hej!

Uczę się Spring MVC z Pluralsight (chwilowo wersji 3, tak wiem, że wyszła 5, ale mam tam kompletny kurs obejmujący DI, Security, JPA & Hibernate).
Autor kursu korzysta z STS, ja z Intellij, zapewne stąd te problemy.

IDE: Intellij Ultimate 2017.2.3
Tomcat: 7.0.82 - autor kursu również korzystał z 7
Java:

openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

Screenfetch:
screenshot-20171215102937.png

Mam taki kod:

package com.pluralsight.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

    @RequestMapping(value = "/greeting")
    public String sayHello(Model model) {
        model.addAttribute("greeting", "Hello World");
        return "Hello";
    }
}

do tego naprostszy jsp

<%--
  Created by IntelliJ IDEA.
  User: burdzi0
  Date: 14.12.17
  Time: 22:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>${greeting}</h1>

</body>
</html>

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <servlet>
        <servlet-name>fitTrackerServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/config/servlet-config.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>fitTrackerServlet</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    
    <display-name>Archetype Created Web Application</display-name>
</web-app>

Najpierw miałem problem z Tomcatem - nie miałem wystarczających uprawnień:

chmod a+x /path/to/tomcat/bin/catalina.sh

rozwiązało sprawę.

Teraz dostaję:

Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1098

Stacktrace:

/home/burdzi0/Tomcat/bin/catalina.sh run
Disconnected from server
Using CATALINA_BASE:   /home/burdzi0/.IntelliJIdea2017.2/system/tomcat/Unnamed_FitnessTracker
Using CATALINA_HOME:   /home/burdzi0/Tomcat
Using CATALINA_TMPDIR: /home/burdzi0/Tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/jdk-9
Using CLASSPATH:       /home/burdzi0/Tomcat/bin/bootstrap.jar:/home/burdzi0/Tomcat/bin/tomcat-juli.jar
-Djava.endorsed.dirs=/home/burdzi0/Tomcat/endorsed is not supported. Endorsed standards and standalone APIs
in modular form will be supported via the concept of upgradeable modules.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Z tego co czytałem mam problem z artefaktem/strukturą projektu. Próbowałem na ślepo parę rozwiązań, nic nie pomogło. Obecna konfiguracja artefaktów wygląda tak:
screenshot-20171215102233.png
Obecna konfiguracja uruchamiania:
screenshot-20171215102403.png

2

Stawiam na to że Tomcat 7 nie bangla z JDK9.
edit: https://stackoverflow.com/questions/45917401/tomcat-7-0-73-doesnt-work-with-java-9 ;]

0

Pomogło, teraz w logach widzę, że serwer staruje. Zmieniłem na 8.5.24.
Pojawił się problem z artefaktem - stworzyłem nowy web application exploded -> from modules
Ruszyło, teraz obrywam status 500 z całkiem niezłym stacktrace jak na taką aplikację.
Poczytałem w necie - Spring w wersji 3 nie współpracuje z Javą 8

Zmieniłem w pom.xml na:

	<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.13.RELEASE</version>
            <scope>compile</scope>
        </dependency>

oraz servlet-config.xml na:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.13.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.13.xsd">

    <mvc:annotation-driven/>
    <context:component-scan base-package="com.pluralsight.controller"/>


    <!--
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/*"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    -->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />

</beans>

, ale ciągle nie pomaga. Obrywam IllegalArgumentException :/

1

Jak nie pokażesz całego stacktrace to trudno coś wyrokować ;]
Jak nie chcesz tak bardzo niczego nowego ani Spring Boota to może weź sklonuj sobie moje https://github.com/Pharisaeus/SpringScaffoldApplication ? Ma to już swoje lata ale powinno zadziałać "od kopa".

0

Ściągnąłem pliki udostępnione na platformie przez autora, zaimportowałem i działa. Problem w tym, że nie lubię kiedy idę krok po kroku, a potem nie działa, wolę naprawiać sam :) Spring 3.* nie wspiera Javy 8, próba zmiany tego w plikach: servlet-config.xml i pom.xml nie pomogła, co mnie zdziwiło, z drugiej strony stwierdziłem, że za dużo czasu na to marnuję. W każdym razie dziękuję za pomoc ;)

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