[Solved] Maven Shade Plugin – A required class was missing org/apache/commons/io/IOUtils

Lokesh Gupta

You may get this error when you have incompatible version of maven and it’s maven shade plugin. Fixing version number mismatch will solve the issue.

Problem

You run maven package command and pom.xml file has maven shade plugin configuration.

[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.4.2:shade (default) on project DropWizardExample: Execution default of goal org.apache.maven.plugins:maven-shade-plugin:2.4
.2:shade failed: A required class was missing while executing org.apache.maven.plugins:maven-shade-plugin:2.4.2:shade: org/apache/commons/io/IOUtils
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.apache.maven.plugins:maven-shade-plugin:2.4.2
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/C:/M2/org/apache/maven/plugins/maven-shade-plugin/2.4.2/maven-shade-plugin-2.4.2.jar
[ERROR] urls[1] = file:/C:/M2/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
[ERROR] urls[2] = file:/C:/M2/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
[ERROR] urls[3] = file:/C:/M2/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
[ERROR] urls[4] = file:/C:/M2/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
[ERROR] urls[5] = file:/C:/M2/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
[ERROR] urls[6] = file:/C:/M2/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
[ERROR] urls[7] = file:/C:/M2/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
[ERROR] urls[8] = file:/C:/M2/org/codehaus/plexus/plexus-utils/3.0.22/plexus-utils-3.0.22.jar
[ERROR] urls[9] = file:/C:/M2/org/ow2/asm/asm/5.0.2/asm-5.0.2.jar
[ERROR] urls[10] = file:/C:/M2/org/ow2/asm/asm-commons/5.0.2/asm-commons-5.0.2.jar
[ERROR] urls[11] = file:/C:/M2/org/ow2/asm/asm-tree/5.0.2/asm-tree-5.0.2.jar
[ERROR] urls[12] = file:/C:/M2/org/jdom/jdom/1.1/jdom-1.1.jar
[ERROR] urls[13] = file:/C:/M2/org/apache/maven/shared/maven-dependency-tree/2.2/maven-dependency-tree-2.2.jar
[ERROR] urls[14] = file:/C:/M2/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
[ERROR] urls[15] = file:/C:/M2/commons-io/commons-io/2.2/commons-io-2.2.jar
[ERROR] urls[16] = file:/C:/M2/org/vafer/jdependency/1.0/jdependency-1.0.jar
[ERROR] urls[17] = file:/C:/M2/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar
[ERROR] urls[18] = file:/C:/M2/org/ow2/asm/asm-util/5.0.3/asm-util-5.0.3.jar
[ERROR] urls[19] = file:/C:/M2/com/google/guava/guava/11.0.2/guava-11.0.2.jar
[ERROR] urls[20] = file:/C:/M2/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
[ERROR]
[ERROR] -----------------------------------------------------: org.apache.commons.io.IOUtils
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[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] https://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException

Solution

Please correct the shade plugin version in line with maven version, and you will be good.

I have this pom.xml working perfect for me.

 <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>

	<groupId>com.howtodoinjava.demo</groupId>
	<artifactId>DropWizardExample</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>DropWizardExample</name>
	<url>http://maven.apache.org</url>

	<properties>
		<dropwizard.version>1.0.0</dropwizard.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>io.dropwizard</groupId>
			<artifactId>dropwizard-core</artifactId>
			<version>${dropwizard.version}</version>
		</dependency>
		<dependency>
			<groupId>io.dropwizard</groupId>
			<artifactId>dropwizard-client</artifactId>
			<version>${dropwizard.version}</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>DropWizardExample-${version}</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>2.1</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<transformers>
								<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									<mainClass>com.howtodoinjava.rest.App</mainClass>
								</transformer>
							</transformers>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

</project>
 

Let me know if it solves your problem.

Happy Learning !!

Leave a Comment

  1. Sometimes the problem could be corrupted .m2 folder and some of the jars are corrupted. So either delete the corrupted jars or whole .m2 folder

    Reply
  2. I have below pom.xml and html report is not getting generated

    org.apache.maven.plugins
    maven-surefire-plugin
    2.21.0

    true

    only txt and xml files are getting generated. How to generate html report.

    Also command mvn site is not working for me

    Reply

Leave a Comment

About Us

HowToDoInJava provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions and frequently asked interview questions.

Our Blogs

REST API Tutorial

Dark Mode

Dark Mode