Попытка запустить программу Java с classpath;Java не может найти мой оригинальный скомпилированный класс - PullRequest
0 голосов
/ 26 сентября 2018


Ява нуб здесь.Я пытаюсь скомпилировать запуск Java-программы, которая использует stanford-corenlp-3.9.1.jar.Я пытаюсь скомпилировать это с помощью терминала MacOS.Ниже приведены результаты различных команд

javac QuestionsToAnswer.java
Это приводит к огромному списку ошибок
QuestionsToAnswer.java:5: error: package edu.stanford.nlp.trees does not exist import edu.stanford.nlp.trees.Tree; ^ QuestionsToAnswer.java:6: error: package edu.stanford.nlp.trees.tregex does not exist import edu.stanford.nlp.trees.tregex.TregexMatcher; ^ ...

Поэтому вместо этого я запускаю это:
javac -cp stanford-corenlp-3.9.1.jar QuestionsToAnswer.java
Это работает должным образом и создает файл QuestionToAnswer.class.

Затем, когда я пытаюсь запустить программу
java QuestionsToAnswer
Это выдает мне следующую ошибку:
Error: Unable to initialize main class QuestionsToAnswer Caused by: java.lang.NoClassDefFoundError: edu/stanford/nlp/trees/Tree

Чтобы это исправить, я добавляю classpath к команде java, чтобы он мог найти класс Tree из библиотеки Стэнфорда
java -cp stanford-corenlp-3.9.1.jar QuestionsToAnswer
Затем он дает мне следующую ошибку:
Error: Could not find or load main class QuestionsToAnswer Caused by: java.lang.ClassNotFoundException: QuestionsToAnswer

После добавления пути к классу java не может найти мой оригинальный файл класса, который уже скомпилирован и присутствует в каталоге.Что я тут не так делаю?

1 Ответ

0 голосов
/ 26 сентября 2018

Файл jar должен находиться в пути к классам, потому что ваш код использует классы из этого jar.Поэтому Java должна быть в состоянии найти их.

Каталог, содержащий ваш класс, должен также находиться в пути к классам, в противном случае Java не сможет его найти.

java -cp .:stanford-corenlp-3.9.1.jar QuestionsToAnswer

в Unix / MacOS или

java -cp .;stanford-corenlp-3.9.1.jar QuestionsToAnswer

в Windows.

...