NoClassDefFoundError et ClassNotFoundException avec ObjectMapper
Bonjour/Bonsoir,
Développeur java amateur et récent, sur Eclipse, je viens de rejoindre l’équipe bénévole d’un serveur de jeu. Je rencontre un problème sur le plugin du serveur. Il est normalement lié à notre site web, mais le lien ne se fait plus correctement. Il semblerait que la cause soit un “ObjectMapper” qui n’est pas trouvé par le plugin :
Code:
1 2 3 4 5 6 7 8 9 10 11
| [21:20:16] [Thread-8/WARN]: Exception in thread "Thread-8"
[21:20:16] [Thread-8/WARN]: java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
[21:20:16] [Thread-8/WARN]: at main.java.com.naheulcraft.specific.Ressources.FeatureFunctions$AsynchronousAPISender$APISenderRunnable.run(FeatureFunctions.java:669)
[21:20:16] [Thread-8/WARN]: at java.lang.Thread.run(Unknown Source)
[21:20:16] [Thread-8/WARN]: Caused by: java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapper
[21:20:16] [Thread-8/WARN]: at java.net.URLClassLoader.findClass(Unknown Source)
[21:20:16] [Thread-8/WARN]: at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101)
[21:20:16] [Thread-8/WARN]: at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86)
[21:20:16] [Thread-8/WARN]: at java.lang.ClassLoader.loadClass(Unknown Source)
[21:20:16] [Thread-8/WARN]: at java.lang.ClassLoader.loadClass(Unknown Source)
[21:20:16] [Thread-8/WARN]: ... 2 more |
La dépendance suivante est indiquée dans le pom.xml, et maven semble bien l’avoir prise en compte :
Code:
1 2 3 4 5 6 7
| <dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.11</version>
<type>jar</type>
<scope>compile</scope>
</dependency> |
Il n’y a pas d’erreur sur l’importation :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import org.codehaus.jackson.map.ObjectMapper;
[...]
private class APISenderRunnable implements Runnable
{
Map<String, String> params;
APISenderRunnable(Map<String, String> params)
{
this.params = params;
}
public void run()
{
ObjectMapper mapper = new ObjectMapper();
String url = FeatureFunctions.BuildFullUrl(NCPlugin.API_URL, params);
try
{
array = mapper.readTree(new URL(url));
}
catch(Exception e)
{
System.out.println("ERROR, URL BUILDING FAILED OR API IS DOWN.");
}
}
} |
Et pourtant, ça ne fonctionne pas. J’ai tenté tout ce que j’ai trouvé sur internet, changer la version, utiliser com.fasterxml.jackson.databind à la place, modifier le .classpath, ajouter le jar manuellement via buildpath > external jars, sans succès. Je me suis donc résolu à demander de l’aide.
Voici le pom.xml complet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
| <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.naheulcraft</groupId>
<artifactId>specific</artifactId>
<url>http://www.naheulcraft.com/</url>
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<filtering>true</filtering>
<directory>src</directory>
<includes>
<include>plugin.yml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
</repository>
<!--<repository>
<id>bukkit-repo</id>
<url>http://repo.bukkit.org/content/groups/public</url>
</repository>-->
<repository>
<id>codehaus-snapshots</id>
<url>http://snapshots.repository.codehaus.org</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.11</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<!--<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.3</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.3</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.3</version>
<type>jar</type>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
</exclusions>
</dependency>-->
<!--<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>LATEST</version>
</dependency>-->
<dependency>
<groupId>com.google.code.google-collections</groupId>
<artifactId>google-collect</artifactId>
<version>snapshot-20080530</version>
<type>jar</type>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<name>NaheulcraftFR-Specific</name>
<version>1.10</version>
</project> |
Voici le .classpath actuel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="C:/Users/Florent_2/Desktop/Serveur test Spigot/bukkit.jar"/>
<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="lib" path="C:/Users/Florent_2/Desktop/spigot-1.12.2-R0.1-SNAPSHOT-b1577.jar"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="lib" path="C:/Users/Florent_2/Desktop/jackson-mapper-asl-1.9.11.jar"/>
<classpathentry exported="true" kind="lib" path="C:/Users/Florent_2/Desktop/jackson-core-asl-1.9.11.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath> |
Je vous remercie d’avance.
Florent
EDIT : PROBLÈME RÉSOLU. J'ai installé m2Eclipse, je suis allé dans Run as > Maven Install. Un jar-with-dependancies s'est généré dans le répertoire target, contenant l'ObjectMapper qui me manquait. Je l'ai installé sur le serveur et après quelques réglages, la connexion plugin>site s'est rétablie.