Maven exec:java run可执行插件依赖jar导致NPE

2024-01-05

我正在制作一个使用 sparql 端点服务的 Maven 应用程序。我想要一个 Maven 目标来下载 sparql 端点并启动服务,但似乎 Maven 在配置类路径方面存在一些问题。

我正在使用 blazegraph 及其工件https://mvnrepository.com/artifact/com.blazegraph/bigdata-jar 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

我缺少什么?

Edit 1这个问题不是重复的什么是 NullPointerException,如何修复它? https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it因为 Maven 会抛出异常,因为它无法在依赖项列表中找到正确的工件(但应该如此)。

Edit 2感谢@Sean Patrick Floyd,我已经部分解决了这个问题。我猜类路径配置仍然存在一些问题。现在 Maven 找到了主类和 jar,但执行后我在编译代码中得到了另一个 NPE。查看 blazegraph 的开源代码,它似乎无法打开可执行 jar 内的资源。

这是导致 NPE 的行:

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 https://github.com/blazegraph/database/blob/master/bigdata-jar/src/main/java/com/bigdata/rdf/sail/webapp/StandaloneNanoSparqlServer.java#L142


The <executableDependency>机制用于二进制文件,而不是 JAR,查看使用页面 http://www.mojohaus.org/exec-maven-plugin/examples/example-exec-using-executabledependency.html。删除该部分,这些设置应该足够了:

<mainClass>com.bigdata.rdf.sail.webapp.StandaloneNanoSparqlServer</mainClass>
<includePluginDependencies>true</includePluginDependencies>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven exec:java run可执行插件依赖jar导致NPE 的相关文章

随机推荐

  • Scala 的 MapLike、ListLike、SeqLike 等与 Map、List、Seq 相比如何?

    有人可以帮我理解 Scala 集合 API 中的各种 Like 特征吗 我一直在阅读并尝试比较每一个 但没有运气 我想我可以看到 Map 例如扩展了 MapLike 添加了 2 个具体方法 但这引出了一个问题 为什么要这样做 为什么 Col
  • Azure 认知服务 OCR 给出不同的结果 - 如何补救?

    Azure CS 有一个 OCR 演示 westcentralus 端点 位于 https azure microsoft com en us services cognitive services computer vision v 18
  • 如何正确地将多个片段添加到片段过渡?

    最近问了一个关于fragment的问题here http stackoverflow com questions 12443312 listview not populating or webview taking up entire sc
  • 如何删除android微调器中的默认值?

    我正在使用 JSON 从数据库中获取值并将它们插入微调器中 该进程正在成功运行 但是当我单击微调器时 我收到了两次微调器提示 如何从微调器中删除第一个默认值 This is snapshot hope you understand my p
  • 如何在 Spring 配置文件中混合使用 CGLIB 和 JDK 代理?

    该线程与我遇到的一个问题有关这里关于访问建议类的受保护方法的需求 https stackoverflow com q 10110253 827480 我正在使用 Spring 3 0 6 并创建了一个 Spring 分析方面 我将其应用于使
  • 从 C++ 调用 dll 函数

    我在 dll 中有一个函数 我想从我的 C 应用程序调用它 该 dll 也是用 C 编写的 并且有一个 def 文件 该文件显示了 dll 中存在的函数 我使用的是 Visual Studio 2010 通过在链接器 附加库目录 中添加 D
  • 地图的联合迭代器?

    Preface 关联 C 容器 例如std map有点像只有一个键列的微型数据库 升压的bimap将其提升为一个两列表 在两列中都进行查找 但这就是类比 没有 polymap 来概括这个想法 无论如何 我想继续将地图视为数据库 现在我想知道
  • 普通 es6 类和扩展 React.Component 有什么区别

    我在用着反应全栈 https github com kriasoft react starter kit作为开始我的项目的脚手架 我发现它的示例代码与官方的 React 文档有很大不同 示例代码是这样的 withStyles styles
  • 当我有 UTC 偏移时如何创建 tzinfo?

    我有一个时区与 UTC 的偏移量 以秒为单位 19800 并且也有字符串格式 0530 我如何使用它们来创建一个tzinfo实例 我调查了pytz 但在那里我只能找到以时区名称作为输入的 API 对于 Python 3 2 或更高版本 您可
  • 如何使用 powershell 脚本替换文本文件中的值

    我的文件包含以下数据 无标题 DEPOSIT ADD 123456789 VALUE VARIABLE NNNN VALUEVARIABLE DEPOSIT ADD 234567890 VALUE P75 NNNN VALUEVARIABL
  • 关闭汞分支机构

    使用时hg branch FeatureBranchName并将其发布到开发人员之间共享的中央存储库 有没有办法最终关闭FeatureBranchName它的开发何时正式与默认分支合并 如果FeatureBranchName执行时不可见hg
  • 使用名称jquery通过索引获取id值

    html
  • TFS 回滚与“获取此版本”

    回滚和 获取此版本 有什么区别 它们都让我返回到特定版本 并从那里进行更改和签入 两者兼备有什么额外好处 Get specific version Get this version 仅影响您的本地工作区 它将所有本地更改恢复为旧版本 当您尝
  • 在我的 rspec 中找不到访问方法

    我的 java web 应用程序运行在 tomcat 上http localhost 8080 com http localhost 8080 编写我的第一个规范 home spec require spec helper describe
  • Paypal使用POST方式返回

    我正在尝试使用沙盒帐户测试 Paypal 第三方购物车按钮 该按钮如下所示
  • tr1::mem_fn 和具有默认参数的成员

    我的类有一个带有默认参数的成员函数 struct Class void member int n 0 通过 std tr1 mem fn 我可以调用它 Class object std tr1 mem fn Class member obj
  • 如何在具有 URL 外观的 TextView 中呈现文本

    请问如何渲染文本TextView具有类似于 URL 的外观 带下划线的蓝色文本 它可以与常规文本混合 显示为纯文本 吗 当我点击它时 它就会启动WebView加载该网址 Check autoLink http developer andro
  • dyld:未加载库:@rpath/libswiftCore.dylib。问题仍然存在

    我知道这个问题已经被回答过好几次了 但是当我为 IOS 8 1 编写 Swift 应用程序时 我一直无法找到此错误的正确解决方案 dyld 未加载库 rpath libswiftCore dylib 引用自 private var mobi
  • 在SAS中运行程序的热键?

    我知道在 R 中我可以使用 control r 来运行我的程序代码 我想知道 SAS 中是否有等效的热键 如果没有 有没有办法将其 编程 到 SAS 中 运行 提交程序 的默认热键是 F8 键 如果您使用的是 Base SAS 不是 EG
  • Maven exec:java run可执行插件依赖jar导致NPE

    我正在制作一个使用 sparql 端点服务的 Maven 应用程序 我想要一个 Maven 目标来下载 sparql 端点并启动服务 但似乎 Maven 在配置类路径方面存在一些问题 我正在使用 blazegraph 及其工件https m