当前位置: 首页 > 知识库问答 >
问题:

Apache Jena:错误:“java.lang.NoClassDefoundError:org/Apache/jena/riot/rdfdatamgr”

丘华翰
2023-03-14
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.query.Dataset;
import org.apache.jena.riot.Lang;

public class Go_NT
{
    public static void main(String[] args)
    {
        Dataset dataset = RDFDataMgr.loadDataset("triail.nq");
        RDFDataMgr.write(System.out, dataset, Lang.NTRIPLES);
    }
}

我是这样援引的:

javac -cp "/mnt/e/Tráchtas/apache-jena-3.17.0/lib/*" Go_NT.java
java Go_NT

它编译时没有错误,但当我运行它时,它返回一个错误

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/jena/riot/RDFDataMgr
        at Go_NT.main(Go_NT.java:9)
Caused by: java.lang.ClassNotFoundException: org.apache.jena.riot.RDFDataMgr
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 1 more

我已经环顾四周,看到这种错误几乎总是发生的,因为没有包含一个必需的.jar文件,因此无法加载代码引用的类。这些其他问题的解决方案是包含所有/apache-jena-3.17.0/lib/*。奇怪的是,这对我来说并不起作用--我确实在类路径中包含了lib/的所有内容,但我仍然看到错误。

共有1个答案

乌靖
2023-03-14

基于vvs的注释,链接https://howtodoinjava.com/java-examples/set-classpath-command-line/帮了大忙。有两个问题:我需要在java命令中包含类路径,而不仅仅是javac。我还需要包含javac输出所在的当前目录。

我通过设置CLASSPATH变量,然后将所有需要的目录添加到该变量中来解决这个问题。(您还可以通过将类路径添加到-cp参数中来实现这一点)。请注意:分隔了不同的目录。

简而言之,以下是我所做的:

export CLASSPATH=/mnt/e/Tráchtas/apache-jena-3.17.0/lib/*:.
javac Go_NT.java
java Go_NT
 类似资料:
  • Apache Jena 是一个 Java 工具箱,用于开发基于 RDF 与 OWL 语义(semantic)的 Web 应用程序。 它提供了一个 RDF API;ARP,一个RDF解析器;SPARQL,W3C RDF 查询语言;一个 OWL API;和基于规则的 RDFS 与 OWL 接口。

  • 我是新的spring boot和一些视频教程开始。我创建了一个Maven项目,添加了工件id的父依赖项,添加了和的依赖项。这是: 注: 和包为空。这是一个Maven项目,我使用的是STS,执行了“Maven->更新项目...”并使用STS IDE多次清理/构建整个项目,我得到以下错误。此外,我试图在STS中创建一个新项目,但仍然出现以下错误: 当我将其作为运行时,会出现以下错误: 请帮我解决这个问

  • 我得到了这个例外,但我不能理解那里发生了什么。 因为在编译时,我的类可以访问apache POI类,但在运行时,我的类抛出异常,他无法找到 。 如果你有什么建议,请分享。 我得到以下异常。 Manifest.MF如下

  • Riot 是一个新的Ruby测试框架,作者是Justin Knowlden。它的主要目的是提高测试的效率。Justin对Riot与Test::Unit进行了比较,测试结果显示Riot比Test::Unit的测试速度快一倍多。 测试示例: context "a new user" do   setup { User.new(:email => 'foo@bar.com') }    asserts(

  • RIOT 是一个实时多线程的 IoT 操作系统,它支持物联网中常见的一系列设备,包括 8 位、16 位和 32 位微控制器。 RIOT 基于以下设计原则:能效、实时功能、小内存占用、模块化和统一的 API 访问、独立于底层硬件(此 API 提供部分 POSIX 兼容性)。 RIOT 由国际开源社区开发,该社区独立于特定供应商,类似于 Linux 社区。 特性 RIOT 基于微内核架构,提供的功能包