gpt4 book ai didi

java - 编译一个依赖jena的类

转载 作者:行者123 更新时间:2023-12-01 09:45:31 26 4
gpt4 key购买 nike

我已经编写了一些操作 RDF 的代码,因此依赖于 jena framework 。我正在尝试使用 maven 编译/打包它。编译完成,但是当我尝试运行生成的 jar 文件时,我得到:

Exception in thread "main" java.lang.ExceptionInInitializerError
at my.package.name.ClassName.<clinit>(SchemaAPI.java:96)
Caused by: java.lang.NullPointerException
at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
at org.apache.jena.tdb.TDB.init(TDB.java:250)
at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29)
at org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179)
at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156)
at org.apache.jena.system.JenaSystem.init(JenaSystem.java:111)
at org.apache.jena.

这之前已经讨论过(例如 herehere ),但我修改了我的 pom 文件以包含阴影插件 - 但这并没有解决问题,而且我遇到了一些麻烦...

根据上面链接中讨论中的评论,我检查了我的 my-project- 中的 META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle 文件0.1-jar-with-dependency.jar 文件,它确实包含对 TDB 的引用(org.apache.jena.tdb.sys.InitTDB) - 所以我知道这是(几乎可以肯定)问题的原因,但我还没有找到解决方案......

我还包括 maven-dependency-pluginmaven-compiler-plugin - 我认为这些不会引起任何冲突?

更多信息

针对 Andy S 评论的一些额外信息。我的 pom 文件的相关部分是:

<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>uk.co.domain.mypackage.MyClass</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
<addHeader>false</addHeader>
</transformer>
</transformers>

META-INF中的相关文件仅包含一个类:

$more META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle
org.apache.jena.tdb.sys.InitTDB
$

我也尝试过添加

JenaSystem.init();

在我的主课开始时,但这没有帮助

最佳答案

这不是类路径问题,而是误用或配置错误问题。基本上,您会得到一个空指针异常 at line 33 of EnvTDB ,特别是 TDB.getContext() 返回 null。也许先尝试运行这个:

org.apache.jena.query.ARQ.init();

关于java - 编译一个依赖jena的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com