Ajout de dépendaces natives (*.so)

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut à tous !

Je tente actuellement de faire mes armes en Java et de m'habituer aux gestionnaires de dépendances. J'ai choisi (assez arbitrairement)1 Maven.

J'ai donc débuté un petit projet utilisant slick2d (et par transitivité jlwjgl). En configurant la compilation en entier dans eclipse (donc sans passer par Maven), j'arrive à le compiler et à le lancer sans souci. Par Maven cependant, les dépendances directes à slick2d sont bien prises en compte, mais en lançant le projet, j'ai l'erreur suivante : no jlwjgl in java.library.path. Cette erreur vient du fait que les libs natives (au format *.so et dont je dispose) ne sont pas prises en compte.

Ma question est donc comment ajouter ces dépendances natives au projet Maven ?

Je suis sur Linux Mint 17 en 32-bits, j'utilise java 7 (OpenJDK) et j'utilise eclipse Mars (donc 4.5.2) avec le plugin m2eclipse.

Voici mon fichier pom.xml :

 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
<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>RobinPetit</groupId>
  <artifactId>JDungeon</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

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

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.slick2d</groupId>
        <artifactId>slick2d-core</artifactId>
        <version>1.0.1</version>
    </dependency>
    <dependency>
      <groupId>javax.jnlp</groupId>
      <artifactId>jnlp-api</artifactId>
      <version>7.0</version>
      <scope>system</scope>
      <systemPath>/usr/share/icedtea-web/netx.jar</systemPath>
    </dependency>
  </dependencies>
</project>

Merci d'avance à tous ceux qui pourront m'aider !


  1. J'ai surtout d'abord tenté Gradle que j'ai été incapable de faire fonctionner : gradle provoquait un gros freeze malgré les 3 version différentes que j'ai tenté d'installer donc j'ai tenté Maven. 

Le hasard n'est que le nom donné à notre ignorance et n'existerait pas pour un être ominscient., Émile Borel

+0 -0
Auteur du sujet

Je n'ai jusqu'à présent pas lancé le projet à la main, je me suis fié à eclipse.

Le hasard n'est que le nom donné à notre ignorance et n'existerait pas pour un être ominscient., Émile Borel

+0 -0
Auteur du sujet

Salut firm1, j'ai ajouté lwjgl directement dans les dépendances, je peux voir via eclipse que les natives sont bien dans les dépendances également, mais j'ai toujours la même erreur disant no lwjgl in java.library.path.

Le hasard n'est que le nom donné à notre ignorance et n'existerait pas pour un être ominscient., Émile Borel

+0 -0
Auteur du sujet

Re-sault à tous !

J'ai finalement - après un bon recoupement de liens ! - réussi à gérer la compilation avec maven afin qu'il me fasse un beau jar de derrière les fagots. Et liblwjgl.so est bien trouvé. Cependant, maintenant, en lanceant le jar, cil y a java qui gueule en me disant que liblwjgl.so n'arrive pas à trouver le fichier libmawt.so. Or en tapant apt-file search libmawt.so, j'obtiens le résultat suivant :

1
2
3
4
5
6
7
8
openjdk-6-dbg: /usr/lib/debug/usr/lib/jvm/java-6-openjdk-i386/jre/lib/i386/headless/libmawt.so
openjdk-6-dbg: /usr/lib/debug/usr/lib/jvm/java-6-openjdk-i386/jre/lib/i386/xawt/libmawt.so
openjdk-6-jre: /usr/lib/jvm/java-6-openjdk-i386/jre/lib/i386/xawt/libmawt.so
openjdk-6-jre-headless: /usr/lib/jvm/java-6-openjdk-i386/jre/lib/i386/headless/libmawt.so
openjdk-7-dbg: /usr/lib/debug/usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/headless/libmawt.so
openjdk-7-dbg: /usr/lib/debug/usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/xawt/libmawt.so
openjdk-7-jre: /usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/xawt/libmawt.so
openjdk-7-jre-headless: /usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/headless/libmawt.so

Donc le ficher existe et est à un endroit tout à fait standard pour une lib java (selon toute vraisemblance). Quelqu'un a une idée ?

Le hasard n'est que le nom donné à notre ignorance et n'existerait pas pour un être ominscient., Émile Borel

+0 -0

Cette réponse a aidé l'auteur du sujet

Hello Bermudes,

Je viens essayer de t'aider un peu avec ma maigre expérience de Maven et de LWJGL. As-tu essayé de lancer un autre jeu (un jar fait avec slick2D) qui n'est pas de ton cru afin de voir si le problème vient de ton projet ou plutôt du java installé sur ton PC ?

Par contre la tendance va quand même plutôt vers gradle (que j'utilise chaque jour sur mes projets Android et que je trouve très bien foutu). Et la tendance niveau 2D engine en Java va plutôt vers libGDX (que j'ai pas mal utilisé et qui a fait ses preuves). Pourquoi tu n'y jetterai pas un coup d'oeil, quitte à apprendre un 2D engine, autant mettre la tête dans un truc maintenu et à jour et avec une grosse communauté, car il me semble que slick2d n'est plus maintenu et que sa communauté doit être de moins en moins grande.

+0 -0
Auteur du sujet

Hey Bl@de,

merci de t'intéresser au problème. Ah non je n'ai pas essayé cela.

Concernant gradle, comme dit dans mon post original, j'ai essayé d'installer plusieurs versions de gradle et à chaque fois j'avais le même problème : quand je lançais gradle en ligne de commande, il bouffait tout mon processeur et rien ne se passait puis tout plantait.

Pour une autre lib 2D, ce serait sans problème vu que j'ai vite fait une recherche sur DDG et Slick2D a fait partie des premiers, j'en avais déduit qu'il devait être relativement utilisé. Mais si tu me dis que libGDX est plus complet et toujours en dev alors que Slick2D n'est plus maintenu, autant migrer sur libGDX !

Le hasard n'est que le nom donné à notre ignorance et n'existerait pas pour un être ominscient., Émile Borel

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte