42

解決できない(一見)単純な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 にエラーが見つかりません。

4

4 に答える 4

18

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

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

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

于 2013-06-22T14:12:41.090 に答える
5

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

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

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

于 2016-04-20T14:18:32.830 に答える
2

ファイルの破損があったかどうかはわかりませんが、適切な pom 構成を確認した後、ローカルの m2 リポジトリから jar を削除し、テストの実行時に Maven に再度ダウンロードさせることで、この問題を解決できました。

于 2014-01-02T16:13:10.137 に答える