LINUX.ORG.RU

[Java] Как грамотно распространять программы или помогите создать jar

 


0

3

Я не так давно стал изучать джаву, а в качестве проекта для изучения выбрали с другом одну штуку, которую обоим интересно писать. Точнее я пишу, а он бросается идеями, но не суть.

Написал я пару классов, забабахал гуй, хочу показать это дело ему (у него винда, к слову). JRE у него стоит. Что еще надо, чтоб он просто получил от меня файлик, ткнул по нему без всяких ИДЕ и прочего и увидел написанную мной программулину? Я так понимаю, что сгенерить jar файл? Блин, КАК? То ли я неосилятор, то ли IDEA не умеет грамотно этим заниматься, но все мои попытки генерирования заканчиваются тем, что у меня все работает, а у него «Could not find main class», или как-то так.

ЧЯДНТ? Ну или научите, как правильно и расово верно?

★★★★★

гугли maven. Идеей никто проекты не собирает. Можешь использовать assembly plugin и написать свой батник/sh файл в котором будет java -jar Application.jar

JFreeM ★★★☆
()
Ответ на: комментарий от mono

Ну ты общий алгоритм расскажи =)

Значит так - в IDEA я в настройках проекта потыкал вкладку Артефакты. Там вроде бы что-то выбрал, по мануалу из гугля, выбрал файл класса, создал манифест, где майн класс создал, ну и, собственно, все. Потом при запуске проекта создается в папке артефакт файлик *.jar, который я и кидаю другу. Он вроде бы просто в него тыкает, и ему пишут, что майн класс не найден. Хотя если точно так же ткнуть в файл у меня в линуксе - запускается джава и я вижу свое окно. ЧЯДНТ?

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от Zhbert

Видимо, манифест всё-таки не фурычит.

Впрочем, тут программы принято раздавать не просто *.jar-кой, а комплектом: *.jar для работы + run.bat (и/или run.sh) для запуска.

В этих привычных скриптах можно указать и главный класс, и параметры jvm, и всё, что хочешь (не исключая патча Бармина).

А внутри такого файла в простейшем случае одна-единственная строчка

java -jar lorTroll.jar org.test.TrollFace

anonymous
()
Ответ на: комментарий от pozitiffcat

Нахер тебе Idea, есть NetBeans 7 - это мега удобная вещь.

Сэр рухнул с секвойи?

baverman ★★★
()
Ответ на: комментарий от anonymous

Попробуйю вечером, спасибо.

Zhbert ★★★★★
() автор топика

У тебя создан файл манифеста в Jar-архиве? Если да, то допиши там на новой строке Main-Class: <имя главного класса программы>

Главный класс - это тот, который содержит в себе метод main.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от Zhbert

Винда - обычная операционная система. Если поломать ей конфигурацию всяким говном, то будет тоже фигня.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

maven или ant (иногда ant+ivy). У каждого инструмента свои плюсы и минусы, лучше выбирать инструмент сборки в зависимости от требований.

P.S.: TC лучше использовать maven

ma1uta ★★★
()
Ответ на: комментарий от ma1uta

В общем случае да, но в Maven все искаропки, поддержка еще многих возможностей достаточно просто. В анте даже для простых задач скачивания нужен Ivy

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Когда пишется компонент/либа или что-то подобное - то да, лучше maven. Когда уже собирается некое приложение и надо выполнить несколько императивных действий (развернуть приложение, накатить скрипты и пр.) - лучше ant. Плагин antrun немного помогает, но, когда вся сборка в maven'е сводится к запуску antrun, возникает вопрос: а зачем?

ma1uta ★★★
()
Ответ на: комментарий от vertexua

Письмо дошло. Вечером попробую. Спасибо.

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Шаблон получается командой

mvn archetype:generate

И там какой-нибудь quickstart выбрать.

Можно сразу радоваться жизни. Единственное — в pom.xml стоит версию компилятора поправить на 1.6. В основном — чтобы с аннотациями никаких проблем не было.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

...
    <build>
...
        <plugins>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>

                <configuration>
		        <verbose>true</verbose>
		        <fork>true</fork>

		        <compilerVersion>1.6</compilerVersion>
                </configuration>
            </plugin>


        </plugins>

    </build>
</project>

anonymous
()
Ответ на: комментарий от anonymous

Я ему танцы с либами добавил. Все зависимости аккуратно складываются в lib/ и все добавляются в classpath

vertexua ★★★★★
()
Ответ на: комментарий от Zhbert

Eclipse: меню File -> Export... -> Java/Runnable JAR file (на следующем шаге нужно указать лонч-конфигурацию и местоположение jar-файла, а также можно включить в него библиотечные class-файлы сторонних библиотек, не входящих в JRE). Всё просто.

Понравилась идея.

Теперь мучайся с ней.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

Мне кажется все что можно нужно делать мавном. А IDE не очень важны, так как они все делают нужные операции поиска и рефакторинга. Плюс нетбинс еще имеет редактор свинга искаропки

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Да ну

Maven — это один из инструментов непрерывной интеграции и тестирования. Серебряный молоток. Он востребован в распределённой инфраструктуре, где есть отдельные машины сборки, тестирования, учёта изменений и обнаруженных ошибок, машины подготовки релизов больших проектов.

Для одного разработчика не стоит разводить целую канитель для сборки небольшого проекта в единственный jar. Достаточно средств самой среды разработки или ant'а, .bat- или .sh-скрипта сборки, если хочется обеспечить кроссплатформенность и повторяемость сборки везде. Maven тоже можно использовать, не акцентируясь на нём. Но если не остановится, то можно придумывать много разных способов настройки средств сборки, перенести фокус творчества на процесс, выполняющийся автоматически. Это завораживает — наблюдать как оно всё само себя собирает и запускает. Но из-за постоянных «оптимизаций», включений ненужных плагинов, собирающих статистику по проекту и т.д., постепенно отдаляешься, собственно, от самого программирования (творческий процесс) в сторону пакетирования (автоматизированный процесс). IDE концентрируют внимание на программировании, облегчая рутинные операции настройки окружения проекта, сборки и его тестирования до пары кликов мыши.

Не тратьте своё время на «оптимизацию» процесса пакетирования. Займитесь лучше реализацией творческих идей в программировании.

iZEN ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.