【问题标题】:Execute Schemagen (Jena) from the command line / classpath setting从命令行/类路径设置执行 Schemagen (Jena)
【发布时间】:2012-06-20 15:38:53
【问题描述】:

我正在学习 Jena API,我想使用 Schemagen 为我自己的词汇创建类似于 com.hp.hpl.jena.vocabulary 包中的类;

我在 http://www.apache.org/dist/incubator/jena/apache-jena-2.7.0-incubating/ 下载了 Jena。下载后,我将其解压缩并保持原样。

C:\Users\moi\NetBeansProjects\apache-jena-2.7.0-incubating\apache-jena-2.7.0-incubating 是bat文件夹、bin文件夹、javadoc-arq文件夹等所在的文件夹

我在我的一个项目中使用 C:\Users\moi\NetBeansProjects\apache-jena-2.7.0-incubating\apache-jena-2.7.0-incubating\lib 中的所有库和一个相关链接测试了 Jena ,并且有效。

为了便于在命令行中使用,我将文件“MyKnowledgeBase.rdf”移到了 lib 文件夹中。

我从 lib 文件夹尝试过

java jena.schemagen -i "myKnowledgeBase.rdf"

得到这个

Exception in thread "main" java.lang.NoClassDefFoundError: jena/schemagen
Caused by: java.lang.ClassNotFoundException: jena.schemagen
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: jena.schemagen.  Program will exit.

所以我尝试设置类路径:

C:\Users\moi\NetBeansProjects\apache-jena-2.7.0-incubating\apache-jena-2.7.0-incubating\lib>
set CLASSPATH=commons-codec-1.5.jar;httpclient-4.1.2.jar;httpcore-4.1.3.jar;icu4j3.4.4.jar;jena.arq-2.9.0-incubating.jar;jena.core-2.7.0-incubating.jar;jena.iri0.9.0-incubating.jar;log4j-1.2.16.jar;slf4j-api-1.6.4.jar;slf4j-log4j12-1.6.4.jar;xercesImpl-2.10.0.jar; xml-apis-1.4.01.jar;

但我仍然有同样的错误。我也试过

java -cp commons-codec-1.5.jar;httpclient-4.1.2.jar;httpcore-4.1.3.jar;icu4j3.4.4.jar;jena.arq-2.9.0-incubating.jar;jena.core-2.7.0-incubating.jar;jena.iri0.9.0-incubating.jar;log4j-1.2.16.jar;slf4j-api-1.6.4.jar;slf4j-log4j12-1.6.4.jar;xercesImpl-2.10.0.jar; xml-apis-1.4.01.jar; jena.schemagen -i myKnowledgeBase.rdf

当我这样做时

echo %CLASSPATH% 

我得到了我输入的内容

我尝试将 set CLASSPATH 与每个 jar 的绝对路径一起使用,但它也不起作用。

所以现在我不知道该怎么办了。

在 Jena 中,我在 jena-core-2.7.0-incubating.jar(带有 netbeans)的包“jena”中找到了 schemagen.class

使用资源管理器我没有找到类文件。

我已经在命令行中运行了几个项目,执行 java -jar 所以 java 和命令行都可以

感谢您的帮助

编辑: 我删除了参数 -classpath 和 %CLASSPATH% 之间的空格,我得到了一些不同的东西 \o/ 仍然不起作用,但它正在进行中!

“无法识别的选项”和“无法创建 java 虚拟机”

编辑2: 由于我无法解决这个问题,我用 netbeans 创建了一个新项目。我创建了 schemagen 类的副本,将其作为主类,将所有 jar 作为库包含在内。 然后:

java -jar "C:\Users\moi\NetBeansProjects\MyJena\dist\MyJena.jar" -i "myKnowledgeBase.rdf" -o "C:\Users\moi\NetBeansProjects\apache-jena-2.7.0-incubating\apache-jena-2.7.0-incubating\lib" --ontology

【问题讨论】:

  • 这个问题与“如何设置 Java CLASSPATH”有关,而不是 Jena 本身。 Jena 只是您需要在 Java CLASSPATH 中拥有的一组 jars(与许多其他 Java 项目一样)。
  • 是的,但我也对 Jena zip 文件以及类文件的确切位置(如果它有助于执行程序)感到困惑,或者如果有可执行文件,则作为下面的答案。

标签: command-line classpath rdf jena schemagen


【解决方案1】:

在包括 Jena 2.7.0 在内的所有最新版本中,为所有 Jena 命令行工具提供了 Linux shell 和 Windows 批处理脚本。这些脚本适当地设置了 CLASSPATH。由于您似乎使用的是 Windows,因此您应该使用bat\schemagen.bat

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我使用的是 Jena 3.10 如果有人遇到同样的问题,解决方案是使用位于 bat 文件夹中的 schemagen bat 文件。 我使用这个命令行来生成词汇表

    C:\Jena\apache-jena-3.10.0\bat\schemagen.bat -i "文件名"

    【讨论】:

      猜你喜欢
      • 2018-07-26
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 2012-07-12
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多