私には解決できない(一見)単純な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にエラーが見つかりません。
ビルドに次の依存関係を追加する必要があります。
<dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-rio-api</artifactId>
<version>2.7.2</version>
</dependency>
さらに、 libの使用方法に関するドキュメント を詳しく調べることをお勧めします。
依存関係に<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のドキュメントと依存関係のドキュメントを参照してください。
私と一緒に問題が発生したため、スコープタグのみを削除して解決し、正常にビルドしました。
ファイルが破損しているかどうかはわかりませんが、適切なPOM設定を確認した後、ローカルm2リポジトリからjarを削除することでこの問題を解決することができ、テストを実行したときにMavenに強制的にダウンロードさせました。