Ошибка: не удалось найти или загрузить основной класс pj2 на bash - PullRequest
0 голосов
/ 09 октября 2018

Я знаю, что этот вопрос задавался много раз, однако я перебрал множество решений и не смог найти никакого конкретного ответа.Я пытаюсь использовать библиотеку «Параллель 2» профессора Алана Кимиски под названием «pj2».

Эта библиотека используется для этой задачи раскраски графа.Моя директория файлов выглядит примерно так:

enter image description here

Мне пришлось извлечь 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 и теперь мой каталог выглядит следующим образом

enter image description here

Нет каталога 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 ]

0 голосов
/ 09 октября 2018

Прежде всего вам нужно скомпилировать pj2 (если в каталоге pj2/lib нет pj2.class):

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
0 голосов
/ 09 октября 2018

Вы загрузили исходный файл :

Версия 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

или (не проверено) без необходимости unjar или компиляции pj2

java -cp '.;pj2.jar' pj2 ores=4 GrpahColSeq sampleInput.txt

То же самое для использования CLASSPATH

export CLASSPATH='.;pj2.jar'
java pj2 cores=4 GrpahColSeq sampleInput.txt

это не аннулирует предыдущий ответ!

...