質問編集履歴

2 補足情報追加

tamutomo

tamutomo score 4

2020/02/02 11:51  投稿

Java spring bootでのビルドエラー
### 前提・実現したいこと
Javaのspring bootを使用して、投稿式のアプリを作成したいと考えております。
今回はJPAを使ってMySQLからデータを引っ張ってきて表示するシステムを、とりあえず完成させたいです。
環境
```
ProductName:   Mac OS X
ProductVersion: 10.15.2
BuildVersion:  19C57
java version "13.0.2" 2020-01-14
Java(TM) SE Runtime Environment (build 13.0.2+8)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
ーエディター
Eclipse
Version: 2.3.0.v20191210-0610
Spring Tool Suite 4
Version: 4.5.1.RELEASE
```
### 発生している問題・エラーメッセージ
ビルドの際のエラーです。
```
***************************
APPLICATION FAILED TO START
***************************
Description:
Field repos in com.example.demo.HelloController required a bean of type 'com.example.demo.Repos' that could not be found.
The injection point has the following annotations:
   - @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.example.demo.Repos' in your configuration.
```
### 該当のソースコード
ファイル構造はこんな感じで同じパッケージに4つのJavaファイル全て入れています。
![イメージ説明](397394fc72b29a48fd13255f0bce95e8.png)
これがエラーの出ているページです
```HelloController
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
import org.springframework.ui.Model;
@Controller
public class HelloController {
   @Autowired
   public Repos repos;
   //ここでビルドエラー
   @RequestMapping("/")
   public String index(Model model) {
       model.addAttribute("message", "こんにちは");
     //ビルド成功後はこの辺でデータを引っ張り出したい
       return "index";
   }
}
```
エンティティ用のページです
```Test
package com.example.demo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Table;
import javax.persistence.Id;
@Entity
@Table(name="java")
public class Test {
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   
   private Integer id;
   private String title;
   private String content;
   
   public Integer getId() {
       return id;
   }
   
   public void setId(Integer id) {
       this.id = id;
   }
   
   public String getTitle() {
       return title;
   }
   
   public void setTitle(String title) {
       this.title = title;
   }
   
   public String getContent() {
       return content;
   }
   
   public void setContent(String content) {
       this.content = content;
   }
}
```
リポジトリ用のページです
```Repos
package com.example.demo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface Repos extends JpaRepository<Test, Integer>{
}
```
### 試したこと
・@Autowiredは原則同じパッケージ内からしか呼ぶことができないのでそれを確認。
### 補足情報(FW/ツールのバージョンなど)
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.2.4.RELEASE</version>
       <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.example</groupId>
   <artifactId>hello</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>hello</name>
   <description>Demo project for Spring Boot</description>
   <properties>
       <java.version>1.8</java.version>
   </properties>
   <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-data-jpa</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-thymeleaf</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-devtools</artifactId>
           <scope>runtime</scope>
           <optional>true</optional>
       </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <scope>runtime</scope>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
           <exclusions>
               <exclusion>
                   <groupId>org.junit.vintage</groupId>
                   <artifactId>junit-vintage-engine</artifactId>
               </exclusion>
           </exclusions>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-data-jpa</artifactId>
       </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
       </dependency>
   </dependencies>
   <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
       </plugins>
   </build>
</project>
```
application.propertiesです
```
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:3306/javaTest
spring.datasource.username=root
spring.datasource.password=
```
```
※補足情報
以前VSCodeを使った時は特にエラーは出ませんでしたのでツールの問題の可能性もあるかもしれません。
※以下ビルド手順です
SpringToolSuite4を使っております。
フォルダを右クリックして→実行→SpringBootApplicationです
![イメージ説明](87833d5517c93fd5f0f560a963da7615.png)
※ご教授いただいた./mvnw clean packageに必要な物をダウンロードし、試しましたが
同じエラーが出てしまいます。
  • Java

    20539 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • MySQL

    9497 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • Spring

    1198 questions

    Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

  • Spring Boot

    1231 questions

    Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

1 補足情報追加

tamutomo

tamutomo score 4

2020/02/01 23:53  投稿

Java spring bootでのビルドエラー
### 前提・実現したいこと
Javaのspring bootを使用して、投稿式のアプリを作成したいと考えております。
今回はJPAを使ってMySQLからデータを引っ張ってきて表示するシステムを、とりあえず完成させたいです。
環境
```
ProductName:   Mac OS X
ProductVersion: 10.15.2
BuildVersion:  19C57
java version "13.0.2" 2020-01-14
Java(TM) SE Runtime Environment (build 13.0.2+8)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
ーエディター
Eclipse
Version: 2.3.0.v20191210-0610
Spring Tool Suite 4
Version: 4.5.1.RELEASE
```
### 発生している問題・エラーメッセージ
ビルドの際のエラーです。
```
***************************
APPLICATION FAILED TO START
***************************
Description:
Field repos in com.example.demo.HelloController required a bean of type 'com.example.demo.Repos' that could not be found.
The injection point has the following annotations:
   - @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.example.demo.Repos' in your configuration.
```
### 該当のソースコード
ファイル構造はこんな感じで同じパッケージに4つのJavaファイル全て入れています。
![イメージ説明](397394fc72b29a48fd13255f0bce95e8.png)
これがエラーの出ているページです
```HelloController
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
import org.springframework.ui.Model;
@Controller
public class HelloController {
   @Autowired
   public Repos repos;
   //ここでビルドエラー
   @RequestMapping("/")
   public String index(Model model) {
       model.addAttribute("message", "こんにちは");
     //ビルド成功後はこの辺でデータを引っ張り出したい
       return "index";
   }
}
```
エンティティ用のページです
```Test
package com.example.demo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Table;
import javax.persistence.Id;
@Entity
@Table(name="java")
public class Test {
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   
   private Integer id;
   private String title;
   private String content;
   
   public Integer getId() {
       return id;
   }
   
   public void setId(Integer id) {
       this.id = id;
   }
   
   public String getTitle() {
       return title;
   }
   
   public void setTitle(String title) {
       this.title = title;
   }
   
   public String getContent() {
       return content;
   }
   
   public void setContent(String content) {
       this.content = content;
   }
}
```
リポジトリ用のページです
```Repos
package com.example.demo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface Repos extends JpaRepository<Test, Integer>{
}
```
### 試したこと
・@Autowiredは原則同じパッケージ内からしか呼ぶことができないのでそれを確認。
・あ  
### 補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.2.4.RELEASE</version>
       <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.example</groupId>
   <artifactId>hello</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>hello</name>
   <description>Demo project for Spring Boot</description>
   <properties>
       <java.version>1.8</java.version>
   </properties>
   <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-data-jpa</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-thymeleaf</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-devtools</artifactId>
           <scope>runtime</scope>
           <optional>true</optional>
       </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <scope>runtime</scope>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
           <exclusions>
               <exclusion>
                   <groupId>org.junit.vintage</groupId>
                   <artifactId>junit-vintage-engine</artifactId>
               </exclusion>
           </exclusions>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-data-jpa</artifactId>
       </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
       </dependency>
   </dependencies>
   <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
       </plugins>
   </build>
</project>
```
application.propertiesです
```
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:3306/javaTest
spring.datasource.username=root
spring.datasource.password=
```
  • Java

    20539 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • MySQL

    9497 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • Spring

    1198 questions

    Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

  • Spring Boot

    1231 questions

    Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る