使用jena向fuseki上传数据时,RDFDataMgr.read(model, newInputStream, Lang.TTL);方法报空指针异常

1.报错背景

这个问题困扰了本人很久,因为在本地ide运行代码是没有问题的,只有项目打包后才会出问题。

2.排错流程

也是因为这个问题,我发现了idea可以对jar包进行调试。经过调试我发现是ARQ类中的globalcontext没有被正确初始化。

3.确定原因

让人难以置信的是这两个依赖冲突,具体原因可能是两个依赖有一些重叠的类,无法正确打包

        <dependency>
            <groupId>org.apache.jena</groupId>
            <artifactId>jena-arq</artifactId>
            <version>3.17.0</version>
        </dependency>


        <dependency>
            <groupId>org.apache.jena</groupId>
            <artifactId>apache-jena-libs</artifactId>
            <version>3.17.0</version>
        </dependency>

4.解决方法

为了正确初始化ARQ这个类,删掉jena-libs只保留jena-arq

5.附上打包方法,这是第一次对非springboot项目打包,主要是把main主类指定出来。类似于python脚本,但是比python脚本麻烦许多。还是python6啊

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.example.controller.UploadToFuseki</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要安装 JenaFuseki,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了 Java Development Kit (JDK)。您可以在终端中运行 `java -version` 命令来检查 JDK 是否已经安装。 2. 接下来,前往 Apache Jena 的官方网站(https://jena.apache.org/)下载 Jena 的最新版本。解压下载的文件到您希望安装 Jena 的目录。 3. 配置 Jena 环境变量: - 在终端中打开 `.bashrc` 或 `.bash_profile` 文件(取决于您使用的操作系统和终端配置)。 - 添加以下行,将 `<path-to-jena>` 替换为您解压 Jena 的目录路径: ``` export JENA_HOME=<path-to-jena> export PATH=$JENA_HOME/bin:$PATH ``` 4. 保存并关闭文件。然后运行 `source` 命令以使环境变量生效: ``` source ~/.bashrc ``` 5. 确认 Jena 是否正确安装。在终端中运行 `riot --version` 命令,如果成功安装,则应该显示 Jena 的版本信息。 6. Fuseki 是基于 Jena 构建的一个 RDF 服务器。您可以从 Apache Jena 的官方网站(https://jena.apache.org/download/)下载 Fuseki 的最新版本。 7. 解压下载的 Fuseki 文件到您希望安装 Fuseki 的目录。 8. 配置 Fuseki 环境变量: - 在终端中打开 `.bashrc` 或 `.bash_profile` 文件。 - 添加以下行,将 `<path-to-fuseki>` 替换为您解压 Fuseki 的目录路径: ``` export FUSEKI_HOME=<path-to-fuseki> export PATH=$FUSEKI_HOME:$PATH ``` 9. 保存并关闭文件。然后运行 `source` 命令以使环境变量生效: ``` source ~/.bashrc ``` 10. 确认 Fuseki 是否正确安装。在终端中运行 `fuseki-server --version` 命令,如果成功安装,则应该显示 Fuseki 的版本信息。 现在,您已经成功安装了 JenaFuseki。您可以根据需要使用它们来处理和查询 RDF 数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值