web-dev-qa-db-ja.com

Mavenコンパイル:パッケージが存在しません

私には解決できない(一見)単純なMavenの問題があります。私のPOMでは、次のようにopenrdf-sesameへの依存関係を指定しています。

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

Eclipseからプロジェクトを実行するとうまく機能し、実行可能なjarファイルをエクスポートすることもできます。残念ながら、cmd-line mavenを介して適切に動作させることはできません。 jarを作成するために、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>

コンパイルは次のエラーで失敗します。

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

奇妙なことに、pomにコンパイルプラグインを追加し、プロジェクト設定を更新するとすぐに、Eclipseはもうコンパイルできないようです。リポジトリを確認しましたが、すべてのゴマファイルがそこにあります。

mvn --versionはこの出力を与えます:

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"

私はそれがjreを指しているように見えますが、私のグーグルは、コンパイラ自体が見つからなかった場合、別のエラーが表示されることを示しました。 完全なPOMをここに貼り付けた があれば、助けになります。

不足しているものはありますか? POMにエラーが見つかりません。

29
feob

ビルドに次の依存関係を追加する必要があります。

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

さらに、 libの使用方法に関するドキュメント を詳しく調べることをお勧めします。

12
khmarbaise

依存関係に<scope>タグを含めません。追加すると、依存関係は次のようになります。

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

「scope」タグは、ビルドのどの段階で依存関係が必要かをMavenに伝えます。内部に入れる値の例は、「test」、「provided」、または「runtime」です(pomで引用符を省略します)。私はあなたの依存関係を知らないので、どの値を選択するべきかをあなたに伝えることはできません。 Mavenのドキュメントと依存関係のドキュメントを参照してください。

3
Martijn Dirkse

私と一緒に問題が発生したため、スコープタグのみを削除して解決し、正常にビルドしました。

1
Fahd Allebdi

ファイルが破損しているかどうかはわかりませんが、適切なPOM設定を確認した後、ローカルm2リポジトリからjarを削除することでこの問題を解決することができ、テストを実行したときにMavenに強制的にダウンロードさせました。

1
eebbesen