从命令行/类路径设置执行Schemagen(Jena)

时间:2012-06-20 15:38:54

标签: command-line classpath rdf jena schemagen

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

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

C:\用户\ MOI \的NetBeansProjects \ Apache的耶拿-2.7.0-孵育\ Apache的耶拿-2.7.0-孵化 是有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虚拟机”

Edit2: 由于我无法解决这个问题,我使用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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我遇到了同样的问题。我正在使用耶拿3.10 如果有人遇到同样的问题,解决方案是使用bat文件夹中的schemagen bat文件。 我使用此命令行生成词汇

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