riku__02
@riku__02

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Spring Boot勉強中での質問

解決したいこと

ここに解決したい内容を記載してください。
Spring解体新書第2章という本を使用し進めています。
しかし最初のHelloworldの表示でエラーが発生しています。
http://localhost:8080/hello
解決方法を、見た方がよい箇所アドバイス頂きたいです。

使用しているツールはSpring Tool Suiteです。

発生している問題・エラー

There was an unexpected error (type=Not Found, status=404).
No static resource hello.
org.springframework.web.servlet.resource.NoResourceFoundException: No static resource hello.
	at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:585)
	at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:52)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:904)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.base/java.lang.Thread.run(Thread.java:1583)


以下のcontrollerとhtmlのみ追加して実行しています。

■HelloController.java
package com.example.hello;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController{
	@GetMapping("/hello")
	public String getHello() {
		return "hello";
	}
}

■hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
	<head>
		<meta charset="UTF-8"></meta>
		<title>Hello World</title>
	</head>
	<body>
	<h1>Hello World</h1>	
	</body>
</html>

### 自分で試したこと
エラーをwebで調べたところビルドパス 除外設定が必要?など拝見しましたが、わかっていない状態です。
0

2Answer

@riku__02さん

エラーをwebで調べたところビルドパス 除外設定が必要?など拝見しましたが、わかっていない状態です。

開発環境の設定部分で何かうまくいっていない気がします。

Javaとhtmlのコードで気になるところはなさそうです。
(提供コードを元に、私のPCで動かした結果)
image.png

解決に関係する、以下情報をください。

  • Javaのバージョン
  • SpringBootのバージョン
  • 開発環境(EclipseやらVsCodeやら)
  • スクリーンショット
    • 作成したプロジェクトのフォルダ構成が分かるもの
    • 発生しているエラー内容が表示されている箇所
1Like

Comments

  1. @riku__02

    Questioner

    @eno49conan さん回答頂きありがとうございます。。
    ご質問頂いた内容について追記しましたのでご確認頂けないでしょうか?

    ・Javaバージョン
    java version "22.0.1"
    image.png
    ・SpringBootのバージョン
    Version: 4.24.0.RELEASE
    image.png

    ・開発環境
    STS(Spring Tool Suite)
    ・スクリーンショット
    スクリーンショット 2024-09-11 192354.png
    スクリーンショット 2024-09-11 192940.png

  2. Version: 4.24.0.RELEASE

    これはSpringBootのバージョンではなく、STS(Spring Tool Suite)のバージョンです。

    SpringBootのバージョンは、build.gradleの最初にかいてあります。
    (このファイルで言えば、3.3.3)

    plugins {
    	id 'java'
    	id 'org.springframework.boot' version '3.3.3'
    	id 'io.spring.dependency-management' version '1.1.6'
    }
    

    特に設定変えていないのであれば、hello.htmlはresources/templatesにあるべきですかね?(staticディレクトリではなく)

    @h_kono0707さんがコメントされている通りですね。
    教材では、templatesフォルダの下にhello.htmlが配置されているはずです。

    本題ですが、パッケージ構成が原因だと思います。
    今、com.example.democom.example.helloが同じ階層(exampleの下)にありますが、これだと正しく動きません。
    com.example.demoパッケージがこのプロジェクトの核となるパッケージです。
    @SpringBootApplicationというアノテーションが記述されたファイル(SpringBootSampleApplication.java)が配置されたパッケージ)
    Javaのリソースを配置するパッケージは、com.example.demo.XXXである必要があります。

    image.png

    やることとしては、
    パッケージcom.example.demo.helloを新たに作成し、HelloController.javaを作成したパッケージに移動します。
    その後、パッケージcom.example.helloは削除します。

    これで再度動作確認してみてください。

  3. @riku__02

    Questioner

    @eno49conan さん
    ご指摘の通りパッケージ再作成して実施したところ、表示できました。
    バージョン指摘等もありがとうございます。未熟ものすぎるので大変勉強になります。

    次に進めていくことができます。
    初歩的な質問に回答頂き本当にありがとうございました!!:cry:

    image.png
    image.png

    @h_kono0707 さん
    コメント、アドバイスありがとうございました!

  4. 解決して良かったです。質問クローズしちゃっていいと思います
    頑張ってください!

  5. @riku__02

    Questioner

    @eno49conan さん
    最後までありがとうございます!
    今後ともよろしくお願いいたします:bow:

特に設定変えていないのであれば、hello.htmlresources/templatesにあるべきですかね?(staticディレクトリではなく)

つまり、resources/templates/hello.htmlというパスです。

1Like

Your answer might help someone💌