2016-11-23 31 views
3

我々は数ヶ月間マイクロ・サービスとして正常に動作するように構成された一連のSpringブート・アプリケーションを用意しています。 Sprig Boot 1.3.3を使用しました。Maven依存関係のjava.lang.ClassNotFoundException

これで、MavenビルドプロセスがSpring Boot 1.4.2に切り替わる際に問題が発生しました。我々は、マイクロサービスベースのソフトウェアアーキテクチャを開発している。このサービスは他のサービスのそれぞれに必要な一般的なクラスとメソッドを提供する責任がある

<dependencies> 
    <dependency> 
     <groupId>com.group</groupId> 
     <artifactId>core.common</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 

:私たちは、このようなの依存性を利用して他のサービスによって参照されるcore.commonサービスを提供しています。

また他のすべてのサービスを構築し、jarファイルにパッケージ化するために別のサービス(root.service)を使用します。これは、そのroot.serviceからpom.xmlの一部です:私たちはの残りの部分をテストし、構築するためにmvn clean installオーバーroot.serviceを行うことができました春のブート1.4.2バージョンに切り替え

<parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.2.RELEASE</version> 
     <relativePath /> <!-- lookup parent from repository --> 
    </parent> 

    <modules> 
     <module>../core.adminservice</module> 
     <module>../core.locationservice</module> 
     <module>../core.reportservice</module> 
     <module>../core.userservice</module> 
     <module>../core.notificationservice</module> 
     <module>../core.trackingservice</module> 
     <module>../core.mappingservice</module> 
     <module>../core.common</module> 
    </modules> 

までモジュール仕様からのサービス。

私はjava.lang.ClassNotFoundExceptionを取得していますmvn clean install root.service で実行しようとすると、春ブーツ1.4.2バージョンに切り替えた後。例外メッセージには、モジュール仕様のサービスのいずれも、core.commonサービスは特にモジュールから使用されていません。 mvn compileまたはmvn testを実行しようとすると、すべて正常に動作し、ビルドとテストに成功します。 からサービスを実行しようとすると、すべてがうまくいきます。

ご意見はありますか?助けてください。

EDIT のフルスタックトレース1のユースケースのために:

Running com.blockpeek.core.adminservice.tests.services.AdminServiceTest 
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.002 sec <<< FAILURE! - in com.blockpeek.core.adminservice.tests.services.AdminServiceTest 
initializationError(com.blockpeek.core.adminservice.tests.services.AdminServiceTest) Time elapsed: 0.002 sec <<< ERROR! 
java.lang.NoClassDefFoundError: com/blockpeek/core/common/services/AbstractCRUDService 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.getDeclaredFields0(Native Method) 
    at java.lang.Class.privateGetDeclaredFields(Class.java:2583) 
    at java.lang.Class.getDeclaredFields(Class.java:1916) 
    at org.junit.runners.model.TestClass.getSortedDeclaredFields(TestClass.java:77) 
    at org.junit.runners.model.TestClass.scanAnnotatedMembers(TestClass.java:70) 
    at org.junit.runners.model.TestClass.<init>(TestClass.java:57) 
    at org.junit.runners.ParentRunner.createTestClass(ParentRunner.java:88) 
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:83) 
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:138) 
    at org.springframework.test.context.junit4.SpringRunner.<init>(SpringRunner.java:49) 
    at sun.reflect.GeneratedConstructorAccessor2.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128) 
    at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203) 
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) 
Caused by: java.lang.ClassNotFoundException: com.blockpeek.core.common.services.AbstractCRUDService 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.getDeclaredFields0(Native Method) 
    at java.lang.Class.privateGetDeclaredFields(Class.java:2583) 
    at java.lang.Class.getDeclaredFields(Class.java:1916) 
    at org.junit.runners.model.TestClass.getSortedDeclaredFields(TestClass.java:77) 
    at org.junit.runners.model.TestClass.scanAnnotatedMembers(TestClass.java:70) 
    at org.junit.runners.model.TestClass.<init>(TestClass.java:57) 
    at org.junit.runners.ParentRunner.createTestClass(ParentRunner.java:88) 
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:83) 
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:138) 
    at org.springframework.test.context.junit4.SpringRunner.<init>(SpringRunner.java:49) 
    at sun.reflect.GeneratedConstructorAccessor2.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128) 
    at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203) 
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) 

Mavenのバージョン:

$ mvn -version 
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47+01:00) 
Maven home: C:\Program Files\apache-maven-3.3.9 
Java version: 1.8.0_101, vendor: Oracle Corporation 
Java home: C:\Program Files\Java\jdk1.8.0_101\jre 
Default locale: en_US, platform encoding: Cp1252 
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos" 

EDIT 2:は、これは私がmvn -e clean installを実行する場合、私が得るものです:

[ERROR] -> [Help 1]                                
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:compile (def 
ult-compile) on project core.adminservice: Compilation failure                     
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)              
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)              
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)              
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)        
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)        
     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)     
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)            
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)                  
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)                  
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)                   
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)                    
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)                    
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)                     
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)                   
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)               
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)             
     at java.lang.reflect.Method.invoke(Method.java:498)                      
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)             
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)               
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)             
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)                
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure              
     at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1029)           
     at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:137)               
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)          
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)              
     ... 20 more                                
[ERROR]                                   
[ERROR] Re-run Maven using the -X switch to enable full debug logging.                   
[ERROR]                                   
[ERROR] For more information about the errors and possible solutions, please read the following articles:          
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException               
[ERROR]                                   
[ERROR] After correcting the problems, you can resume the build with the command                 
[ERROR] mvn <goals> -rf :core.adminservice 
+0

[mcve]を作成してください。 – Tunaki

+0

私の編集をご覧ください。 –

+0

@屯akiなぜあなたはそれを話題にしていますか?質問の問題は何ですか?最先端の技術はソフトウェアアーキテクチャの開発に使用され、最も広く使用されているオープンソースフレームワークが開発に使用されています。この質問は、Springブート1.4.2.RELEASEの未知の問題に関連している可能性があります。 –

答えて

0

私は春ブーツ1.4からjarファイルのstrucutreで行われた変更のため、つまり推測:Release Notes

実行可能なjarファイルのレイアウトが変更されました。あなたのアプリケーションをビルドするために、 BootのMaven、Gradle、またはAntサポートをSpringを使用している場合、この の変更はあなたに影響しません。実行可能なアーカイブ をビルドしている場合、アプリケーションの依存関係はlibではなくBOOT-INF/libにパッケージされており、アプリケーション固有の クラスがルートではなくBOOT-INF/classesにパッケージされていることに注意してくださいその瓶は です。