web-dev-qa-db-fra.com

Maven compile: le paquet n'existe pas

J'ai un (apparemment) simple problème maven que je ne peux pas résoudre. Dans mon POM, j'ai spécifié une dépendance à openrdf-sésame comme ceci:

<dependency>
     <groupId>org.openrdf.sesame</groupId>
     <artifactId>sesame-runtime</artifactId>
     <version>2.7.2</version>
</dependency>

Exécuter le projet depuis Eclipse fonctionne bien, je peux même exporter un fichier jar exécutable. Malheureusement, je ne peux pas le faire fonctionner correctement via cmd-line maven. Pour construire un pot, j'ai ajouté ce qui suit à mon pom:

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-Assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>foo.bar.Cli</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

La compilation échoue avec les erreurs suivantes:

.../PLDReducer.Java:[25,29] package org.openrdf.rio.rdfxml does not exist
.../PLDReducer.Java:[27,33] package org.openrdf.sail.nativerdf does not exist
.../LowPLDReducer.Java:[25,29] package org.openrdf.rio.rdfxml does not exist
.../Cli.Java:[23,33] package org.openrdf.sail.nativerdf does not exist
.../SchemaBuilder.Java:[30,33] package org.openrdf.sail.nativerdf does not exist
.../RepoQuerier.Java:[23,33] package org.openrdf.sail.nativerdf does not exist
.../PLDReducer.Java:[78,44] cannot find symbol

Bizarrement, dès que j'ajoute le plugin de compilation à pom et que je mets à jour les paramètres du projet, Eclipse ne semble plus pouvoir se compiler. J'ai vérifié mon référentiel et tous les fichiers de sésame sont là.

mvn --version donne cette sortie:

Apache Maven 2.2.1 (rdebian-8)
Java version: 1.6.0_27
Java home: /usr/lib/jvm/Java-6-openjdk-AMD64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "3.8.0-25-generic" Arch: "AMD64" Family: "unix"

Je vois que cela semble pointer vers un jre, mais ma recherche sur Google indiquait que je verrais une autre erreur si le compilateur lui-même n'était pas trouvé. J'ai collé le POM complet ici , si cela peut vous aider.

Y a-t-il quelque chose qui me manque? Je ne trouve aucune erreur dans mon POM.

25
feob

Vous devez ajouter la dépendance suivante à votre construction:

<dependency>
    <groupId>org.openrdf.sesame</groupId>
    <artifactId>sesame-rio-api</artifactId>
    <version>2.7.2</version>
</dependency>

De plus, je suggérerais de jeter un regard en profondeur dans la documentation sur l'utilisation de la lib.

10
khmarbaise

Vous n'incluez pas de balise <scope> dans votre dépendance. Si vous l'ajoutez, votre dépendance devient quelque chose comme:

<dependency>
     <groupId>org.openrdf.sesame</groupId>
     <artifactId>sesame-runtime</artifactId>
     <version>2.7.2</version>
     <scope> ... </scope>
</dependency>

La balise "scope" indique à maven à quel stade de la construction votre dépendance est nécessaire. Les exemples pour les valeurs à entrer sont "test", "fourni" ou "runtime" (omettez les guillemets dans votre pom). Je ne connais pas votre dépendance, je ne peux donc pas vous dire quelle valeur choisir. Veuillez consulter la documentation Maven et la documentation de votre dépendance.

3
Martijn Dirkse

Je ne sais pas s'il y a eu corruption de fichier ou quoi, mais après avoir confirmé la configuration correcte de pom, j'ai pu résoudre ce problème en supprimant le fichier jar de mon référentiel m2 local, obligeant Maven à le télécharger à nouveau lorsque j'ai exécuté les tests.

1
eebbesen

le problème est arrivé avec moi, j'ai résolu en supprimant uniquement la balise scope et construit avec succès.

0
Fahd Allebdi