Развертывание приложения Java. Как? - PullRequest
1 голос
/ 10 апреля 2010

Я новичок в Java (и Eclipse), но я использовал .NET (и Visual Studio) изрядное количество. Я также знаю о компиляции кода C / C ++ и подобных вещах. Я знаю, что в конце я получаю либо EXE, либо хороший двоичный файл, который можно запустить из командной строки.

Я делаю утилиту Java, которая использует некоторые внешние библиотеки. Мне нужно скомпилировать это в исполняемый файл, который я могу запустить из командной строки на компьютере с Unix, но я не могу найти способ сделать это.

Я могу собирать и запускать / отлаживать в Eclipse, но это бесполезно для меня, так как этот код будет выполняться на веб-сервере. Мне просто нужны все зависимости, скомпилированные в один файл, но после нескольких часов поиска в Google лучшее, что я смог найти, это плагин Fat-JAR для Eclipse, и после его использования я просто получаю следующую ошибку при попытке запустить файл :

Exception in thread "main" java.lang.NoClassDefFoundError: Network/jar

Это действительно сбивает меня с толку, и поскольку это очень важно, чтобы быть в состоянии сделать, я уверен, что я, должно быть, упускаю что-то ослепительно очевидное, но, как я уже сказал, после нескольких часов поисков я не получил ничего.

Я очень ценю любую помощь, которую вы можете мне оказать. Благодаря.

Ответы [ 4 ]

0 голосов
/ 10 апреля 2010

Я думаю, что я должен сначала объяснить некоторые основы. Класс Java может быть запущен как приложение, если у него есть метод public static void main(String[] args). Если у него есть этот метод, вы можете запустить его из командной строки как:

java my.package.MyClass <attributes>

Перед запуском приложения необходимо убедиться, что все необходимые файлы .jar (и корень папок ваших собственных классов, если вы не сделали jar из ваших классов) находятся в переменной среды CLASSPATH. 1006 *

Это абсолютные основы. Когда вы создаете более сложное приложение или приложение для распространения, вы, вероятно, будете использовать maven, ant или какой-либо другой инструмент, облегчающий вашу жизнь.

0 голосов
/ 10 апреля 2010

Похоже, ваш путь к классу на сервере нужно изменить, чтобы подобрать файл jar, содержащий класс Network. Как вы выполняете свою программу? Какой путь вы указываете в опции -cp?

Если вы не уверены, как узнать содержимое файла jar, запустите jar tf, в нем будут перечислены упакованные классы. Убедитесь, что один из jar-ов в вашем CLASSPATH имеет тот класс, который, как он говорит, отсутствует.

Дайте нам более подробную информацию, и мы поможем решить ее.

0 голосов
/ 10 апреля 2010

Если вы создаете свое java-приложение, используя Maven (что может быть сделано с любой основной IDE), то вы можете использовать maven Shade Plugin для создания затененного jar-файла; это jar-файл со всеми его зависимостями.

Затененный кувшин можно запустить из командной строки следующим образом:

java -jar myjar.jar command line options
0 голосов
/ 10 апреля 2010

Вы делаете что-то стандартное, и вы используете затмение. Это означает, что в вашем случае Maven - ваш друг. Загрузите и установите подключаемый модуль M2Eclipse . Maven лучше всего справляется с зависимостями. Таким образом, создание фляги с включенными зависимостями будет очень и очень простым. Есть тысячи примеров в Интернете и в StackOverflow. Если у вас возникли проблемы с настройкой, прокомментируйте это, и я могу указать вам правильное направление.

...