2

私はsparqlエンドポイントサービスを使用するmavenアプリケーションを作成しています。私は、sparqlエンドポイントをダウンロードしてサービスを開始するという目標を持っていますが、mavenにはクラスパスを設定するためのいくつかの問題があるようです。Maven exec:Java実行可能プラグイン依存関係jarがNPEになる

私はblazegraphとそのアーティファクトをhttps://mvnrepository.com/artifact/com.blazegraph/bigdata-jarに使用しています。

ここでは私のプラグイン構成のpom.xmlである:

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.6.0</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>java</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <mainClass>com.bigdata.rdf.sail.webapp.StandaloneNanoSparqlServer</mainClass> 
       <includePluginDependencies>true</includePluginDependencies> 
       <includeProjectDependencies>false</includeProjectDependencies> 
       <executableDependency> 
        <groupId>com.blazegraph</groupId> 
        <artifactId>blazegraph-jar</artifactId> 
       </executableDependency> 
       <addOutputToClasspath>false</addOutputToClasspath> 
      </configuration> 
      <dependencies> 
       <!-- https://mvnrepository.com/artifact/com.blazegraph/blazegraph-jar --> 
       <dependency> 
        <groupId>com.blazegraph</groupId> 
        <artifactId>blazegraph-jar</artifactId> 
        <version>2.1.4</version> 
        <scope>runtime</scope> 
        <type>jar</type> 
       </dependency> 
      </dependencies> 
     </plugin> 

デバッグ出力は、プラグインがアーティファクトを見つけることができないというヒント:

Caused by: java.lang.NullPointerException 
at org.codehaus.mojo.exec.AbstractExecMojo.findExecutableArtifact(AbstractExecMojo.java:278) 
at org.codehaus.mojo.exec.ExecJavaMojo.determineRelevantPluginDependencies(ExecJavaMojo.java:650) 
at org.codehaus.mojo.exec.ExecJavaMojo.addRelevantPluginDependenciesToClasspath(ExecJavaMojo.java:568) 
at org.codehaus.mojo.exec.ExecJavaMojo.getClassLoader(ExecJavaMojo.java:520) 
at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:301) 
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
... 27 more 

私は何行方不明?

編集1 例外は、それが依存関係のリストで右のアーティファクトを見つけることができません(ただし、それが必要)以来のMavenによってスローされますので、この質問はWhat is a NullPointerException, and how do I fix it?の複製ではありません。

編集2 @Sean Patrick Floydのおかげで、私はこの問題を部分的に解決しました。クラスパス設定にも同じ問題があります。現在、Mavenはメインクラスとjarを見つけますが、実行後にはコンパイルされたコードで他のNPEを取得します。 blazegraphのオープンソースコードを見ると、実行可能なjarファイル内のリソースを開くことができないようです。

System.setProperty("jetty.home", 
      jettyXml.getClass().getResource("/war").toExternalForm()); 

https://github.com/blazegraph/database/blob/master/bigdata-jar/src/main/java/com/bigdata/rdf/sail/webapp/StandaloneNanoSparqlServer.java#L142

+1

の可能性のある重複した[?NullPointerExceptionがある何か、と私はそれを修正しますか](https://stackoverflow.com/questions/218384/what-is- a-nullポイントを受け取る方法とi-fix-it) –

+0

NPEはOPコードではなくMavenプラグインによってスローされます。 – LoganMzz

答えて

5

<executableDependency>機構はバイナリではなく、ジャー、see the usage pageために使用される:ここ

はNPEを引き起こすラインです。その部分を削除し、これらの設定は十分なはずです:

<mainClass>com.bigdata.rdf.sail.webapp.StandaloneNanoSparqlServer</mainClass> 
<includePluginDependencies>true</includePluginDependencies> 
+0

これは 'java'ゴールでも動作するはずです:http://www.mojohaus.org/exec-maven-plugin/examples/example-exec-using-plugin-dependencies.html – LoganMzz

+0

@LoganMzz。それはmavenのパラメータドキュメントシステムの不具合でもあります。いずれにせよ、これはこれなしで動作するはずです。 –

+0

問題を部分的に解決していただきありがとうございます。新しい情報で質問を更新しています。 – Cristiano

関連する問題