UberJar - нужен мануал

Доброго времени суток, уважаемые! Может кто подкинуть толковый мануал по созданию UberJar'а? У меня в зависимостях только MS SQL библиотека.
Цель — получить из всего приложения один *.jar файл, который уже запускать из командной строки в винде. Желательно с параметрами.
  • ,

Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA

Создаем исполняемый jar в Intellij IDEA

Как оказалось, не так то и просто найти в просторах интернета информацию об этом. Есть много ссылок на то, как это делается в Eclipse, а про Intellij IDEA сказано не многим больше нуля. Поэтому я создал этот пост.

IntelliJ IDEA дает возможность быстро создавать исполняемый JAR-файл вашей программы, содержащий модули со всеми зависимостями.

Для того, чтобы создать JAR, необходимо проделать всего 3 пункта:

1. Нажмите кнопку ‘+’ в диалоговом окне Project Structure и выберите соответствующий пункт (Рисунок 1):

Рисунок 1 – Project Structure -> Artifacts -> Jar -> From modules with dependencies

2. Далее IntelliJ IDEA показывает диалог, позволяющий настроить новый артефакт (Рисунок 2):

Здесь нужно выбрать главный класс вашего проекта и нажать ОK

Рисунок 2 – Диалог создания нового артефакта JAR

3. После нажатия клавиши ОК, вы можете создать файл Jar с помощью пункта меню Build -> Build Artifact

По умолчанию все библиотеки будут извлечены в целевой Jar. Сам исполняемый файл будет сгенерирован в директории out -> artifacts вашего проекта (Рисунок 3):

Рисунок 3 – Месторасположение сгенерированного JAR файла

Все, теперь исполняемый файл можно запускать.


См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!
  • ,

Последний этап программы. Исполняемый файл.

Доброго времени суток!
Подскажите пожалуйста кто что может)
Написал код программы, у которой на входе изображение (JPEG или PNG). Она определяет формат и создает объект нужного класса.
Набор изображений есть.
Вопрос 1:
Как создать jar файл в котором уже заархивированы все эти изображения?
Вопрос 2:
Поскольку программа будет работать только если файлы находятся в тех директориях, которые я указал, подскажите как переписать ее чтобы она считывала из своего архива(в том смысле чтобы не зависело от того где располагаются изображения.

вот код:
import java.io.*;
import java.util.Random;


public class Analizator {
    public static void main(String[] args)throws IOException {
      
        Random random = new Random();
        File TrainData = new File("C:\\Users\\nhbafy\\Desktop\\TrainData");
        String[] list = TrainData.list();
       String name_catalog=list[random.nextInt(2)];
        File randomCatalog = new File("C:\\Users\\nhbafy\\Desktop\\TrainData"+"\\"+name_catalog);
        String[] list2=randomCatalog.list();
        File randomFile = new File("C:\\Users\\nhbafy\\Desktop\\TrainData"+"\\"+name_catalog+"\\"+list2[random.nextInt(list.length)]);
        getImageReaderByHeader(randomFile);
        
    }

    public static Object getImageReaderByHeader(File file) throws IOException {
        byte[] header = new byte[10];
        new DataInputStream(new FileInputStream(file)).read(header);
        String h = new String(header).trim();
        if (h.contains("PNG")) {
            return new PNG();
        } else
            return new JPEG();


    }

}

Вроде получилось создать Jar но при открытии файла на 0.1 секунды открывается консоль и на этом все.
  • ,

Проблема с Jar

Ребята подскажите, делаю программу с интерфейсом, когда в среде запускаю ее все работает на ура, когда решил создать jar, все работает до определенной строки (проверил это выводом сообщений в gui в определенных кусках кода), в чем может быть проблема? я уже даже не знаю что делать…
  • ,

Замыкаем контакты и получаем письмо

Добрый день,
Хочу поделиться опытом создания приложения, которое отслеживает замыкание контактов
7 и 8 на обычном китайском USB-COM переходнике (RTS – CTS). И если такое событие происходит, то отправляет мне на мэйл письмо.

Getdown или Как настроить обновление java-приложений

Метафайлы

Getdown использует два метафайла: getdown.txt и digest.txt. Файл getdown.txt вы создаёте сами (чуть ниже будет описание), а digest.txt файл создаст наша программа опираясь на файлы в вашем проекте.

getdown.txt

Файл getdown.txt хранит всё, что нужно Getdown для запуска и обновления вашего приложения. Сейчас мы опишем стандартную структуру getdown.txt, а вы можете почитать полное описание всех возможностей.

Вот так выглядит стандартный getdown.txt:
# URL адрес папки, откуда программа клиента будет скачивать обновления
appbase = myapplication.com/myapp/

# Файл настройки пользовательского интерфейса
ui.name = My Application

# Все jar файлы вашего приложения
code = application.jar

# Класс, в котором расположен ваш метод main(String[] args)
class = myapplication.MyApplication
appbase содержит URL, откуда будут скачиваться ваше приложение и два метафайла. В нашем случае полный путь к приложению и метафайлам будет выглядеть вот так:

digest.txt

digest.txt будет создан утилитой com.threerings.getdown.tools.Digester. Для этого скачайте getdown-X.Y.jar.
И так, у вас в папке сейчас ваше приложение и один метафайл:
myapp/getdown.txt
myapp/application.jar
Самое время создать digest.txt, для этого наберите в командной строке:
% java -classpath getdown-X.Y.jar com.threerings.getdown.tools.Digester myapp
где myapp путь к папке myapp в котором расположены сейчас ваше приложение и один метафайл.
Если вы всё сделали правильно, то в коммандной строке появится надпись:
Generating digest file 'myapp/digest.txt'...
А также в папке вашего приложения добавится долгожданный второй метафайл digest.txt. Подробные инструкции для генерирования digest.txt можете почитать здесь

Сервер

Сейчас ваша папка содержит всё необходимое: приложение и два метафайла. Можете закидывать её на ваш сервер. Не забывайте, что адрес к папке должен быть тот, что указан в getdown.txt в поле appbase. И внутренние файлы должны быть доступны по адресу папки + название файла, т.е. вот так:

Проверка работы

Теперь побудем на месте клиента, который будет пользоваться вашим приложением. Для начала, создайте папку и закиньте в него getdown-X.Y.jar. Теперь создадим getdown.txt в котором будет только одна строчка:
appbase = myapplication.com/myapp/
Теперь пишем в командной строке такую команду:
% java -jar myapp/getdown-X.Y.jar myapp
Она должна сравнить ваши файлы с теми что есть на сервере, если необходимо обновить и запустить ваше приложение.
Вот и всё!
_________________________________________________________________________________________________________
P.S. Для работы с командной строкой можно использовать батники, вот так выглядит create digest.bat:
java -classpath getdown-1.3.1.jar com.threerings.getdown.tools.Digester %CD%
А вот update.bat:
java -jar getdown-1.3.1.jar %CD%