I am pretty desperate since I no longer can compile my Maven projects. I have one logical project split into 7 maven modules which so far compiled fine, but today I introduced a feature, whereby I accidentally generated a circular maven dependency. Therefore I refactored the code and eliminated the circular dependency. Ever since I updated the pom files to reflect the fix my project doesn't build anymore. When I run maven with "-X clean install" I get the following java.lang.IllegalStateException: Unable to find main class
[INFO] Error stacktraces are turned on. [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] agiletunes-parent [INFO] agiletunes-util [INFO] agiletunes-security-common [INFO] agiletunes-marketing-persistence [INFO] agiletunes-common-ui [INFO] agiletunes-security-client [INFO] agiletunes-marketing-application [INFO] agiletunes-security-server [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building agiletunes-parent 0.0.1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) @ agiletunes-parent --- [INFO] [INFO] --- maven-install-plugin:2.5.2:install (default-install) @ agiletunes-parent --- [INFO] Installing C:\Users\Alexander\Documents\Development\agileTunes\agiletunes-parent\pom.xml to C:\Users\Alexander\Documents\Development\mavenArtifacts\com\agiletunes\agiletunes-parent\0.0.1\agiletunes-parent-0.0.1.pom [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building agiletunes-util 0.0.1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ agiletunes-util --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory C:\Users\Alexander\Documents\Development\agileTunes\agiletunes-util\src\main\resources [INFO] skip non existing resourceDirectory C:\Users\Alexander\Documents\Development\agileTunes\agiletunes-util\src\main\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ agiletunes-util --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ agiletunes-util --- [INFO] Not copying test resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ agiletunes-util --- [INFO] Not compiling test sources [INFO] [INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ agiletunes-util --- [INFO] Tests are skipped. [INFO] [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ agiletunes-util --- [INFO] [INFO] --- spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) @ agiletunes-util --- [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] agiletunes-parent .................................. SUCCESS [ 1.492 s] [INFO] agiletunes-util .................................... FAILURE [ 1.095 s] [INFO] agiletunes-security-common ......................... SKIPPED [INFO] agiletunes-marketing-persistence ................... SKIPPED [INFO] agiletunes-common-ui ............................... SKIPPED [INFO] agiletunes-security-client ......................... SKIPPED [INFO] agiletunes-marketing-application ................... SKIPPED [INFO] agiletunes-security-server ......................... SKIPPED [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.674 s [INFO] Finished at: 2017-03-21T21:53:04+01:00 [INFO] Final Memory: 31M/309M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) on project agiletunes-util: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage failed: Unable to find main class -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) on project agiletunes-util: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage failed: Unable to find main class 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.PluginExecutionException: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage failed: Unable to find main class at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) ... 20 more Caused by: java.lang.IllegalStateException: Unable to find main class at org.springframework.boot.loader.tools.Repackager.buildManifest(Repackager.java:354) at org.springframework.boot.loader.tools.Repackager.repackage(Repackager.java:273) at org.springframework.boot.loader.tools.Repackager.repackage(Repackager.java:258) at org.springframework.boot.loader.tools.Repackager.repackage(Repackager.java:190) at org.springframework.boot.maven.RepackageMojo.repackage(RepackageMojo.java:212) at org.springframework.boot.maven.RepackageMojo.execute(RepackageMojo.java:199) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) ... 21 more [ERROR] ...
This is the pom.xml of my maven parent project:
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.agiletunes</groupId> <artifactId>agiletunes-parent</artifactId> <version>0.0.1</version> <packaging>pom</packaging> <name>agiletunes-parent</name> <description>Maven parent project of agiletunes</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath></relativePath> </parent> <modules> <module>../agiletunes-common-ui</module> <module>../agiletunes-marketing-application</module> <module>../agiletunes-marketing-persistence</module> <module>../agiletunes-security-client</module> <module>../agiletunes-security-common</module> <module>../agiletunes-security-server</module> <module>../agiletunes-util</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- Java --> <java.version>1.8</java.version> <!-- Spring --> <spring.boot.version>1.5.2.RELEASE</spring.boot.version> <!-- persistence --> <mysql-connector-java.version>6.0.5</mysql-connector-java.version> <!-- util --> <guava.version>17.0</guava.version> <!-- testing --> <mockito.version>1.9.5</mockito.version> </properties> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector-java.version}</version><!--$NO-MVN-MAN-VER$ --> <scope>runtime</scope> </dependency> <!-- utils --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>${guava.version}</version> </dependency> <!-- unit test framework --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>${mockito.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
What do I need to do, to fix this? Please let me know, should you need additional information. Thank you in advance.
A Spring Boot application's main class is a class that contains a public static void main() method that starts up the Spring ApplicationContext. By default, if the main class isn't explicitly specified, Spring will search for one in the classpath at compile time and fail to start if none or multiple of them are found.
Use STS or STS Eclipse Plugin and Create a Spring Boot Maven Project directly from Eclipse Manually Create a Maven Project and add Spring Boot Starter Dependencies. We will use a Spring Boot Starter Web as an example. Creating a Web application with Spring Initializr is a cake walk. We will use Spring Web MVC as our web framework.
If we import the project from outside without default class path eclipse can’t find main class. Or else if any mistake is in user entry or Bootstrap entries in class path then also eclipse can’t find .class file of main class.
It ended being a spring boot mvn plugin declaration on a subproject that does not actually run (no main class). I just removed the spring boot mvn plugin from the submodule and everything ran fine Simple and good answer. It is worked for me as for no run library project.
Alternatively, the main class can be defined as the mainClass element of the spring-boot-maven-plugin in the plugin section of our pom.xml: An example of this Maven configuration can be found over on GitHub.
You should have this
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
only in those modules that you want to run, but not in the parent pom.
Just for someone who faced with similar problem. I added spring-boot-maven-plugin
in parent POM in section pluginManagement
section like this:
<build> <pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </pluginManagement> </build>
Then I added the plugin only in the modules using it (in plugin
section).The project has been successfully built after that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With