私は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());
の可能性のある重複した[?NullPointerExceptionがある何か、と私はそれを修正しますか](https://stackoverflow.com/questions/218384/what-is- a-nullポイントを受け取る方法とi-fix-it) –
NPEはOPコードではなくMavenプラグインによってスローされます。 – LoganMzz