'Maven: NoClassDefFoundError of system scoped dependency
I am developing an Android project with Maven. I have a third-party jar file that I have included in a lib folder on my project root directory:
<dependency>
<groupId>com.parse</groupId>
<artifactId>parse</artifactId>
<version>1.9.2</version>
<scope>system</scope>
<systemPath>${project.basedir}\lib\Parse-1.9.2.jar</systemPath>
</dependency>
But when I install the apk in my phone, I get NoClassDefFoundError. Obviously, that class exists inside the jar.
How can I do?
Thanks.
Solution 1:[1]
I would suggest using one of your directories as a repository, add your jar in it, and load it the proper Maven way.
You can do this adding this to your pom.xml and putting your jar in /lib:
<repositories>
<repository>
<id>mylibid</id>
<url>file://${project.basedir}/lib</url>
</repository>
</repositories>
...
<dependencies>
...
<dependency>
<groupId>com.parse</groupId>
<artifactId>parse</artifactId>
<version>1.9.2</version>
</dependency>
...
</dependencies>
Solution 2:[2]
Add my two cents here, you can install the third-party into your local repository firstly and try add dependency directly.
Take your scenario as an example. Change to the folder where contains the third jar and type:
mvn install:install-file -DgroupId=com.parse -DartifactId=parse -Dversion=1.9.2 -Dpackaging=jar -Dfile=Parse-1.9.2.jar
Modify your pom.xml to add the dependency.
<dependencies>
...
<dependency>
<groupId>com.parse</groupId>
<artifactId>parse</artifactId>
<version>1.9.2</version>
</dependency>
...
</dependencies>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Solomon Ucko |
| Solution 2 | Eugene |
