2013-06-22 91 views
20

私は解決できない(一見)シンプルな問題を抱えています。私のPOMで私はこのような-ゴマをopenrdfする依存関係を指定している:日食からプロジェクトを実行するMavenコンパイル:パッケージが存在しません

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

がうまく機能し、私も実行可能なjarファイルをエクスポートすることができます。 残念ながら、私はそれをcmd-line mavenで正しく動作させることはできません。 jarファイルを構築するには 、私は私のポンポンに以下を追加しました:

<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 

不思議なことに、プロジェクトの設定を更新すると、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を指すように見えることがわかりますが、私のグーグルでは、コンパイラ自体が見つからなかった場合、私は別のエラーを見るであろうことが示されました。 私はpasted the complete POM hereを持っています。

紛失しているものはありますか?私はPOMにエラーを見つけることができません。

+0

'mvn cleanパッケージ'の完全な出力を表示できますか? – khmarbaise

+0

[-eスイッチ付き](http://pastebin.com/zg24L8rS)と [ここで-Xスイッチ](http://pastebin.com/A5G613LL) – feob

+0

あなたはパッケージ名を使用しているようですあなたのインポート部分に)存在しない。本当にあなたのパッケージが必要ですか?それからクラスを使用する? IDE(Eclipseのような)でインポート部分をクリーンアップしましたか? 'PLDReducer.java'のようなソースコードファイルを表示できますか? – khmarbaise

答えて

7

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

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

さらに私は、ファイルの破損または何が、後があったかどうかわからないdocumentation about how to use the lib.

+0

ありがとう、これは実際にトリックでした!しかし、この追加のモジュールが必要な場合、プロジェクトがコンパイルされ実行される可能性はありますか?私はlibフォルダやそれに類するものでは何も持っていません。また、リンクされたドキュメントは素晴らしいようです、私はまだこれを見ていない! – feob

+11

欠けているパッケージは実行時の依存関係です。そのため、コマンドラインからのコンパイルに失敗します。しかし、Maven Eclipseプラグインは、スコープ規則を無視し、すべての依存関係を取り除く傾向があります。そのため、Eclipseからのコンパイルは問題なく動作します。 –

+0

どのスコープが定義されましたか? – khmarbaise

0

に深く見てみることをお勧めだろう適切なpom設定を確認しました。ローカルのm2リポジトリからjarファイルを削除することでこの問題を解決できました。テストを実行したときにMavenに再びダウンロードさせるように強制しました。

3

依存関係に<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のドキュメントと依存関係のドキュメントを参照してください。

+0

はちょうど同じ問題を抱えていたので、私はをすべて削除し、プロジェクトを正常に構築しました。 –

関連する問題