2013-06-22 9 views
20

Ich habe ein (scheinbar) einfaches Maven-Problem, das ich nicht lösen kann. In meinem POM habe ich eine Abhängigkeit angegeben openrdf-Sesam wie folgt aus:Maven kompilieren: Paket existiert nicht

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

das Projekt von Eclipse Lauf gut funktioniert, kann ich auch ein lauffähiges JAR-Datei exportieren. Leider kann ich es über cmd-line Maven nicht richtig funktionieren. ein Glas zu bauen, ich habe folgendes mein pom hinzugefügt:

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

Die Zusammenstellung mit den folgenden Fehler fehl:

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

Seltsam, sobald ich die Kompilierung-Plugin zum pom hinzufügen und update Projekteinstellungen, Eclipse scheint nicht mehr zu kompilieren. Ich habe mein Repository überprüft und alle Sesam-Dateien sind dort.

mvn --version gibt diese Ausgabe:

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" 

Ich sehe, dass es zu einem jre zu Punkt scheint, aber meine googeln zeigte an, dass ich einen anderen Fehler sehen würde, wenn der Compiler selbst nicht gefunden wurde. Ich habe pasted the complete POM here, wenn es irgendeine Hilfe ist.

Gibt es etwas, was ich vermisse? Ich kann keine Fehler in meinem POM finden.

+0

Können Sie die volle Ausgabe des 'mvn clean package' anzeigen? – khmarbaise

+0

[Hier ist mit -e-Schalter] (http://pastebin.com/zg24L8rS) und [Hier mit -X-Schalter] (http://pastebin.com/A5G613LL) – feob

+0

Es sieht aus, dass Sie Paketnamen verwenden (anmaßend in Ihrem Import-Teil), die nicht existieren. Brauchen Sie wirklich Pakete? Klassen daraus verwenden? Den Import-Teil mit IDE aufgeräumt (wie Eclipse?)? Können Sie eine der Quellcodedateien wie 'PLDReducer.java' anzeigen? – khmarbaise

Antwort

7

Sie haben die folgende Abhängigkeit zu Ihrem Build hinzuzufügen:

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

Des Weiteren würde ich einen tiefen Blick in die documentation about how to use the lib.

+0

Danke, das hat tatsächlich den Trick gemacht! Aber wenn dieses zusätzliche Modul benötigt wird, wie ist es möglich, dass das Projekt innerhalb von eclipse kompiliert und ausgeführt wird? Ich habe keine Gläser im lib-Ordner oder ähnliches. Auch das verlinkte Dokument scheint toll, das ist mir noch nicht aufgefallen! – feob

+11

Die fehlenden Pakete sind Laufzeitabhängigkeiten, weshalb die Kompilierung über die Befehlszeile fehlschlägt. Allerdings ignoriert das Maven Eclipse-Plugin Scoping-Regeln und zieht nur jede Abhängigkeit, weshalb die Kompilierung von Eclipse problemlos funktioniert. –

+0

Welchen Bereich haben Sie definiert? – khmarbaise

0

Nicht sicher nehmen vorschlagen, wenn es Datei Korruption oder was war, aber nach Bestätigung der richtigen Pom-Konfiguration Ich konnte dieses Problem lösen, indem ich das Glas aus meinem lokalen m2-Repository löschte und Maven zwang, es erneut herunterzuladen, als ich die Tests durchführte.

3

Sie enthalten kein <scope> Tag in Ihrer Abhängigkeit. Wenn Sie es hinzufügen, wird Ihre Abhängigkeit so etwas wie:

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

Der „Rahmen“ Tag sagt Maven, in welchem ​​Stadium des Build Ihre Abhängigkeit benötigt wird. Beispiele für die einzugebenden Werte sind "Test", "Bereitgestellt" oder "Laufzeit" (die Anführungszeichen in Ihrem Pom weglassen). Ich kenne deine Abhängigkeit nicht, also kann ich dir nicht sagen, welchen Wert du wählen sollst. Bitte konsultieren Sie die Maven Dokumentation und die Dokumentation Ihrer Abhängigkeit.

+0

hatte gerade das gleiche Problem und ich entfernte die alle zusammen und es baute das Projekt erfolgreich. –

Verwandte Themen