現在Gradleのマルチプロジェクトにて開発を行っています。
ルートプロジェクト
└ Apiプロジェクト
└ Webアプリ(APIプロジェクトのライブラリを参照)
起こっている事象
- 開発を進める中で、プロジェクトを実行する場面があります(ApiをMainクラスから起動したり、WebAppの起動、テストクラスにてテストの実行など)。
- 全てEclipseのGUIから対象ファイルを選択して、
右クリック -> [実行] -> [SpringBootAppの起動/JUnitテストの実行]
で行っています。
++ Apiプロジェクトならば、App.javaクラス
++ Webアプリ(APIプロジェクトのライブラリを参照)ならば、App.javaクラス
++ コントローラのテストならば、そのコントローラのテストクラス。
- 上記を実行した際に、下記のエラーが検出され、そもそも実行することができません。
- Eclipseのデバッグモードで起動しても、そもそもデバックモードの前に、下のエラーが検出され終了してしまいます。
bash
1# Apiのメインクラスを実行時のエラー 2エラー: メイン・クラスapi.Appを検出およびロードできませんでした 3原因: java.lang.ClassNotFoundException: api.App
bash
1# コントローラのテスト実行時のエラー 2Class not found api.controller.MailSendApiControllerTest 3java.lang.ClassNotFoundException: api.controller.MailSendApiControllerTest 4 at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) 5 at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 6 at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) 7 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:773) 8 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:502) 9 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:525) 10 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763) 11 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463) 12 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
環境
- Eclipse 2019-09
- Java 12 (OpenJDK 12)
- Gralde 5.6.2
[build.gradle] plugins { // Apply the java-library plugin to add support for Java Library id 'java-library' id 'java' id 'com.gradle.build-scan' version '2.0.2' id 'org.springframework.boot' version '2.1.9.RELEASE' id 'io.spring.dependency-management' version '1.0.7.RELEASE' }
試したこと
- eclipseのプロジェクトクリーン、リフレッシュ、Gradleプロジェクトのリフレッシュ
- eclipseの該当ワークスペースから、プロジェクトを削除。再度プロジェクトをインポート(既存Gradleプロジェクトとして)
- 単体テストにてGradleでテスト実行
++ こちら実行したところGradleでは、Java10が参照されていました。Eclipseのワークスペース設定にて、コンパイルはJava12、インストール住みJREもJava12を指定しております。
++ このEclipseとGradleのversion不一致が一つの原因かと思いますが、解決方法がわかりません。
bash
1作業ディレクトリー: #自分のディレクトリです。 2Gradle ユーザー・ホーム: /Users/UserName/.gradle 3Gradle ディストリビューション: Specific Gradle version 5.6.2 4Gradle バージョン: 5.6.2 5Java ホーム: /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home 6JVM 引数: なし 7プログラムの引数: なし 8Build Scans Enabled: false 9Offline Mode Enabled: false 10Tests: api.controller.MailSendApiControllerTest 11> Task :compileJava NO-SOURCE 12> Task :processResources NO-SOURCE 13> Task :classes UP-TO-DATE 14> Task :compileTestJava NO-SOURCE 15> Task :processTestResources NO-SOURCE 16> Task :testClasses UP-TO-DATE 17> Task :test NO-SOURCE 18> Task :OneShot_API:compileJava FAILED 19 20FAILURE: Build failed with an exception. 21 22* What went wrong: 23Execution failed for task ':OneShot_API:compileJava'. 24> Could not target platform: 'Java SE 12' using tool chain: 'JDK 10 (1.10)'. 25 26* Try: 27Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 28 29* Get more help at https://help.gradle.org 30 31Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0. 32Use '--warning-mode all' to show the individual deprecation warnings. 33See https://docs.gradle.org/5.6.2/userguide/command_line_interface.html#sec:command_line_warnings 34 35BUILD FAILED in 812ms 361 actionable task: 1 executed 37 38Publishing build scan... 39https://gradle.com/s/yl4mbcdqp752m
自分がJavaプロジェクト全般の理解に乏しく恐縮ですが、解決方法ご教示いただけましたら幸いです。
回答1件
あなたの回答
tips
プレビュー