質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Jersey

JerseyはRESTful な Web サービスの実装を支援するフレームワークのひとつ。Restlet や RestEasyにくらべ、直感的な方法で開発が可能。

Java

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

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

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

Q&A

解決済

1回答

756閲覧

SpringBoot + jersey で、@Configuration をつけるとgradle buildでtestがエラー

darum

総合スコア70

Jersey

JerseyはRESTful な Web サービスの実装を支援するフレームワークのひとつ。Restlet や RestEasyにくらべ、直感的な方法で開発が可能。

Java

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

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

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

0グッド

0クリップ

投稿2019/04/30 11:29

編集2019/05/01 10:05

※ 途中で投稿されていました。すみません。

jersey の ResourceConfig を継承した、Configクラスに、@Configuration アノテーションをつけるとランタイムエラーになります。

Java

1package myapi.config; 2 3import org.glassfish.jersey.server.ResourceConfig; 4import org.springframework.context.annotation.Configuration; 5 6import myapi.service.HelloService; 7 8// @Configuration // <- ここのコメント外すとエラー 9public class JerseyConfig extends ResourceConfig 10{ 11 public JerseyConfig() 12 { 13 register(HelloService.class); 14 } 15}

エラー内容(gradle build のtestタスク):StackTraceの一部は加工しています

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jerseyConfig' defined in file [***/config/JerseyConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [myapi.config.JerseyConfig$$EnhancerBySpringCGLIB$$db4dedf9]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/google/common/base/Function 2019-05-01 06:55:26.141 ERROR 22121 --- [ Test worker] o.s.test.context.TestContextManager : Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener@7a5b8ae1] to prepare test instance [rex.hows.jsb.jsbhows.DemoApplicationTests@7183be67] java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jerseyConfig' defined in file [***/config/JerseyConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [myapi.config.JerseyConfig$$EnhancerBySpringCGLIB$$db4dedf9]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/google/common/base/Function Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [myapi.config.JerseyConfig$$EnhancerBySpringCGLIB$$db4dedf9]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/google/common/base/Function Caused by: java.lang.NoClassDefFoundError: com/google/common/base/Function at org.glassfish.jersey.server.ResourceConfig.<init>(ResourceConfig.java:338) ~[jaxrs-ri-2.0.1.jar:2.0.] at myapi.JerseyConfig.<init>(JerseyConfig.java:12) ~[main/:na] at myapi.config.JerseyConfig$$EnhancerBySpringCGLIB$$db4dedf9.<init>(<generated>) ~[main/:na] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na] Caused by: java.lang.ClassNotFoundException: com.google.common.base.Function

設定等疑わしいところアドバイスいただけたらと思います。

HelloService.java

Java

1package myapi.service; 2 3import javax.ws.rs.GET; 4import javax.ws.rs.Path; 5import javax.ws.rs.Produces; 6import javax.ws.rs.core.MediaType; 7 8import org.springframework.stereotype.Service; 9@Service 10@Path("/jax-rs") 11public class HelloService 12{ 13 @GET 14 @Produces(MediaType.APPLICATION_JSON) 15 public HelloResponse hello() 16 { 17 HelloResponse res = new HelloResponse(); 18 res.setResult("AAA"); 19 return res; 20 } 21}

HelloResponse.java

Java

1package myapi.response; 2 3import lombok.Getter; 4import lombok.NoArgsConstructor; 5import lombok.Setter; 6 7@NoArgsConstructor 8public class HelloResponse 9{ 10 11 @Getter 12 @Setter 13 public String result; 14}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/04/30 11:42

読み込んでるクラスローダーが同一じゃないと、同じFCQNだけど別クラス扱いになりますがクラスローダーの制御をちゃんとしてますか?
退会済みユーザー

退会済みユーザー

2019/04/30 14:13

あと Spring の RestController ではいけない理由は?
darum

2019/04/30 22:06

> 読み込んでるクラスローダーが同一じゃないと、同じFCQNだけど別クラス扱いになりますがクラスローダーの制御をちゃんとしてますか? よくわかっておらず申し訳ありませんが、gradlew build で同様に実行しても別クラスローダーになるんでしょうか。 制御というのがイメージ湧いていない状態です。
darum

2019/04/30 22:09

> Spring の RestController ではいけない理由は? 特にありませんが、それが一般的ならそちらを選択したいと思いますが、どんなもんですかね??
takyafumin

2019/05/01 06:22

HelloServiceの内容も記載できますか?
退会済みユーザー

退会済みユーザー

2019/05/02 01:17

スターターをみてみたら 「jersey」があったので手早く作成してみたが同様の問題がおきてないから Springが読み込んでるクラスローダーで読み込まれてないのはわかったな。 ちゃんと設定されてるなら jarファイルが壊れてるな org.springframework.boot:spring-boot-starter-jersey:jar:2.1.4.RELEASE:compile org.springframework.boot:spring-boot-starter-web:jar:2.1.4.RELEASE:compile org.springframework.boot:spring-boot-devtools:jar:2.1.4.RELEASE:runtime org.springframework.boot:spring-boot-starter-test:jar:2.1.4.RELEASE:test
guest

回答1

0

自己解決

asahina1979 さんのアドバイスをもとに、RestControllerを使用することにしました。

投稿2019/05/02 23:36

darum

総合スコア70

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問