Ошибка: не удалось найти или загрузить основной класс 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
Другие вопросы по тегам