Выполните Schemagen (Jena) из параметра командной строки / classpath
Я изучаю Jena API и хочу использовать Schemagen для создания классов, которые выглядят в пакете com.hp.hpl.jena.vocabulary для моего собственного словаря;
Я загрузил Джену по адресу http://www.apache.org/dist/incubator/jena/apache-jena-2.7.0-incubating/. После загрузки я распаковал его и оставил как есть.
C:\Users\moi\NetBeansProjects\apache-jena-2.7.0-инкубация \ apache-jena-2.7.0-инкубация - это папка, в которой находятся папка bat, папка bin, папка javadoc-arq и т. Д.
Я протестировал Jena в одном из моих проектов, используя все библиотеки в C: \ Users \ moi \ NetBeansProjects \ apache-jena-2.7.0-инкубационный \ apache-jena-2.7.0-инкубационный \lib с относительной ссылкой, и это работает.
Чтобы упростить использование в командной строке, я переместил свой файл "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.
Поэтому я попытался установить classpath:
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%
Я получил то, что я вошел
Я попытался использовать набор CLASSPATH с абсолютным путем для каждой банки, и это тоже не работает.
Так что теперь я не знаю, что делать.
В Джене я нашел schemagen.class в пакете "jena" из jena-core-2.7.0-инкубационного.jar (с netbeans)
С проводником я не нашел файл класса.
Я уже запускаю несколько проектов в командной строке, выполняя 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
1 ответ
Во всех последних выпусках, включая Jena 2.7.0, для всех инструментов командной строки Jena предусмотрены командные сценарии оболочки Linux и Windows. Эти сценарии устанавливают CLASSPATH соответствующим образом. Так как вы, кажется, используете Windows, вы должны использовать bat\schemagen.bat
,
У меня была та же проблема. Я использую Jena 3.10, если у кого-то есть такая же проблема, решение для этого - использовать файл bat схемы, расположенный в папке bat. Я использовал эту командную строку для создания словарного запаса
C:\Jena\apache-jena-3.10.0\bat\schemagen.bat -i "FileName"