Ошибка: не удалось найти или загрузить основной класс pj2 на bash
Я знаю, что этот вопрос задавался много раз, но я нашел много решений и не смог найти никакого конкретного ответа. Я пытаюсь использовать библиотеку "Параллель 2" профессора Алана Кимиски под названием "pj2".
Эта библиотека используется для этой задачи раскраски графа. Мой каталог файлов выглядит примерно так
Мне пришлось извлечь pj2.jar и скопировать и вставить файл edu в папку проекта, чтобы все файлы.java могли компилироваться
Сначала скомпилировал все мои файлы по команде
javac *.java
После этого мы использовали команду, упомянутую в проекте GitHub.
java pj2 cores=1 GraphColSeq sampleInput
После этого отображается ошибка
Error: Could not find or load main class pj2
Поэтому я наткнулся на решение онлайн. Однако при установке пути pj2 с помощью команды
export CLASSPATH=.:/C/TabuParallelProgrammingAlgorithm/pj2.jar
ошибка еще отображается. Я попробовал большинство решений онлайн, но та же ошибка сохраняется.
Спецификация компьютера
Windows 10, i7, jdk 1.7
Обновить
Как упоминалось в обоих предложенных решениях, я скачал исполняемый файл pj2 и теперь мой каталог выглядит так
Здесь нет lib
каталог и pj2.class
присутствует в pj2/
сам.
Я набрал следующие команды -
javac -cp pj2/ *.java
И скомпилировано без проблем
Однако, когда я набрал
java -cp .:pj2/ pj2 cores=4 GrpahColSeq sampleInput.txt
Ошибка приходит снова
Error: Could not find or load main class pj2
Я считаю, что это как-то связано с тем, как я пишу pj2
в командной оболочке. Может быть, требуется точный путь к файлу. Пожалуйста, дайте мне знать ваши предложения.
2 ответа
Вы скачали исходный дистрибутивный файл:
Версия 20 июня 2018 года (6 399 014 байтов): pj2src_20180620.jar
Получите исполняемый файл:
Версия 20 июня 2018 года (1 133 935 байт): pj2_20180620.jar
Обратите внимание на размеры файлов!
pj2_20180620.jar
файл должен быть переименован в pj2.jar
Обновление, так как вопрос также обновлен / изменен.
Проблема в том, что Windows использует ':' в качестве разделителя дисков, поэтому java должен использовать ';' отделить компоненты classpath (несмотря на то, что работает на bash). И Баш использует ';' для разделения команд, поэтому мы должны избежать этого.
Пытаться:
java -cp '.;pj2' pj2 cores=4 GrpahColSeq sampleInput.txt
или (не проверено) без необходимости разархивировать или скомпилировать pj2
java -cp '.;pj2.jar' pj2 ores=4 GrpahColSeq sampleInput.txt
То же самое для использования CLASSPATH
export CLASSPATH='.;pj2.jar'
java pj2 cores=4 GrpahColSeq sampleInput.txt
это не лишает законной силы предыдущий ответ!
Прежде всего вам нужно скомпилировать pj2
(если нет pj2.class
в pj2/lib
каталог):
javac *.java -cp pj2/lib/
Теперь вы должны найти этот файл: pj2/lib/pj2.class
тогда вам нужно скомпилировать ваши java файлы:
javac -cp pj2/lib/ *.java
Теперь вы можете запускать то, что вы хотите:
java -cp .:pj2/lib/ pj2 cores=4 GraphColSeq sampleInput.txt
Vertex:0,color:0
Vertex:1,color:1
Vertex:2,color:0
Vertex:3,color:0
Vertex:4,color:2
Total number of colors required:3
0 msec