2017-02-02 2 views
-3

Я пытался сделать .jar файл для моего gradle проекта, но всегда находил ошибку could not find or load main class CalculatorServerКак сделать банку файл из командной строки

Моих compile (.class) файлов находятся в следующем пути в окне файловой системы D:\Projects\EclipseProjects\CalculatorGRPC\build\classes\main\com\grpc\calculator

Когда я пытаюсь создать файл фляги для главного класса, например, с помощью команды CalculatorServer folloiwng

D:\Projects\EclipseProjects\CalculatorGRPC\build\classes\main\com\grpc\calculator>java -cp test.jar com.test.calc.CalculatorServer

После ошибки происходят could not find or load main class CalculatorServer

Редактировать

К сожалению я отправил неправильные команды здесь.

Моя команда для создания файла фляги выглядит следующим образом

D:\Projects\EclipseProjects\CalculatorGRPC\build\classes\main\com\grpc\calculator> echo Main-Class: CalculatorServer >manifest.txt D:\Projects\EclipseProjects\CalculatorGRPC\build\classes\main\com\grpc\calculator>jar cvfm CalculatorServer.jar manifest.txt *.class

Когда я запускаю этот файл фляги

`D:\Projects\EclipseProjects\CalculatorGRPC\build\classes\main\com\grpc\calculator>java -jar CalculatorServer.jar 

Получение же ошибки

could not find or load main class CalculatorServer

+0

Вы вообще не делаете файл jar ... либо у вас неправильный заголовок, либо вы неправильно ввели свою команду. Конечно, с опубликованными командами что-то не так, но я не буду тратить время на решение проблемы, если вы не уточните, что вы пытаетесь сделать. – glee8e

+0

@ glee8e I hv сделал изменения .. Я совершенно новый для java окружающей среды. Пораженный здесь уже довольно давно! –

ответ

0

Вы находитесь в неправильном каталоге. Независимо от того, что вы пытаетесь сделать, если эта операция включает скомпилированные файлы классов, вы должны быть в корневом каталоге вывода, который является папкой XXXXX\build\classes\main.

Причина этого заключается в том, что java-загрузчики классов попытаются найти /com/foo/Bar.class в банке, если приказано загрузить класс с именем com.foo.Bar. Если вы просто упакуете подобную банку, инструмент jar поместит ваши классы в корневую директорию выходного архива (вы можете это подтвердить, используя инструмент архива, например, 7z для исследования), которые паничают загрузчика классов и дают вам ошибку ,

К моменту, манифест должен быть назван MENIFEST.MF и помещен в каталог/META-INF, или же ошибка снова появится, если ваш манифест был написан в правильном формате.

PS: Почему ты делаешь все это своим голым кулаком? Это то, что должен делать градле, или почему это называется автоматизацией сборки? Там должны быть ваши нужные файлы jar где-то под каталогом /build/, обычно /build/lib/.

Смежные вопросы