Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 31.10.2014
Сообщений: 59

Как правильно собрать и запустить проект в Jar или exe?

21.04.2015, 12:39. Показов 5915. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день. Прошу помощи.
Пред история.
Была поставлена задача обновления цен мебельной базы для программы 3D-Flat (надстройка над AutoCAD).
Структура базы лежит в файле PARAGRUP.DAT, наценки на цвет покраски каждого элемента базы мебели лежал в файле material.dat, сам новый прайс с базовыми ценами лежит в файле Price.xls.
Мной бала написана программка которая считывает файл PARAGRUP.DAT вычленяет от туда разделы базы (название которых соответствует названию файла с расширением frn). Далее по очереди считывает файла разделов базы *.frn ищит в этих файлах кода мебели и их цены по ценовым группам. После считывает файл Price.xls ищет совпадение по коду считанному с *.frn с кодом в Price.xls если такое совпадение найдено то считывает базовую цену этого элемента.
Далее расчитываются все остальные цены согласно ценовым наценкам считанным из файла material.dat. И заново собирается новый файл с новыми ценами и перезаписывается в старый.
Так как элементов в мебельной базе около 10 000 и у каждого элемента 9 вариантов цены в зависимости от цвета, то в ручную перебивать все цены занимает приблизительно от 1 до 2 недель. А с такими скачками бакса я только за последние 2 месяца 4 раза перебивал все цены в ручную. И честно задолбался. Вот и решил написать прогу. Хотя я около 5 лет пишу в Lisp для AutoCAD решил попробовать что то новое. И познакомится с Java. Знакомством остался очень доволен. Язык бомба.
Но да это лирика.
Суть вопроса, написал прогу. Объясните неучу как правильно ее собрать в JAR или в exe, что бы она автономно запускалась а не со среды разработки. Средой разработки пользуюсь intellij IDEA 14.
Если кому нужно листинг проги и содержание в intellij IDEA 14. и в папке проекта привожу ниже.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
import javax.swing.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import javax.swing.*;
 
public class NewPrice {
    private static int i;
    private static String fileName;
    private static String fileListB;
    private static String fileListB1;
    private static String fileListB1_path;
    private static String put;
    private static String   fileListPK;
    private static String PriceFile;
    private static String OldStrok1_3FromFile = null;
    private static String OldStrok4FromFile = null;
    private static String Oldstrok4_FromFile = null;
    private static String Price = null;
    private static String[] MatrBase = null;
    private static String[] MatrPriceKategor = null;
    private static String Kod = null;
    private static String Elbaz = null;
    private static String NewElbaz = null;
    private static String Newstrok4FromFile = "(";
    private static String SStCena1 = null, SNCena1 = null;
    private static String SStCena2 = null, SNCena2 = null;
    private static String SStCena3 = null, SNCena3 = null;
    private static String SStCena4 = null, SNCena4 = null;
    private static String SStCena5 = null, SNCena5 = null;
    private static String SStCena6 = null, SNCena6 = null;
    private static String SStCena7 = null, SNCena7 = null;
    private static String SStCena8 = null, SNCena8 = null;
    private static String SStCena9 = null, SNCena9 = null;
    private static String NewtextFromFile = null;
    public static void main(String[] args) throws Exception {
        // Окно выбора файла
        JFileChooser fileopen = new JFileChooser();
        fileopen.setFileFilter(new FileWoker.myFileFilter(".DAT", ""));
        int ret = fileopen.showDialog(null, "Открыть файл");
        if (ret == JFileChooser.APPROVE_OPTION) {
            fileListB1 = fileopen.getSelectedFile().getName();// Извлечение имени файла в стринг
            fileListB1_path=fileopen.getSelectedFile().getCanonicalPath();// Извлечение полного пути к файлу базы в стринг
        }
        fileListB = fileListB1_path.replace( '\\', '/' ); // замена
        put = fileListB.substring(0, fileListB.indexOf(fileListB1, 0)); // отсечение имени файла
        fileListPK = put+"material.dat";// получение пути к файлу наценок на покраску
        PriceFile = put+"Price.xls";// получение пути к файлу прайса
        MatrBase = BildListBase.readListBase(fileListB);
        MatrPriceKategor = PriceKategor.reaPriceKategor(fileListPK);// Получение матрицы наценок на покраску
        Price = FileWoker.ReadXls(PriceFile); // Чтение файла и сохранение его в переменной Price
        // Формирование путей к каждому разделу базы
        for (i = 0; i < MatrBase.length; i++){
            fileName =put+MatrBase[i];
             System.out.println("Раздел базы: " + fileName);// Вывод в консоль пути к разделу базы
            OldStrok1_3FromFile = FileWoker.readString1_3(fileName); // Чтение первых 3 строк файла раздела базы
            OldStrok4FromFile = FileWoker.readString4(fileName); // Чтение четвертой строки файла раздела базы
            Oldstrok4_FromFile = FileWoker.readString4_(fileName); // Чтение остальных строк файла раздела базы
            int OtkrSk = 1;
            while (OtkrSk <= OldStrok4FromFile.length()) {
                int YOtkrSk = OldStrok4FromFile.indexOf("))", OtkrSk); // Поиск в строке порядкового номера знаков ))
                if ((OldStrok4FromFile.indexOf("(\"", OtkrSk) > 0) & (OldStrok4FromFile.indexOf("))", OtkrSk) > 0)) { // Если в четвертой строке файла найдены знаки (" и ))
                    Elbaz = OldStrok4FromFile.substring(OldStrok4FromFile.indexOf("(\"", OtkrSk), OldStrok4FromFile.indexOf("))", OtkrSk) + 3); // Получение элемента мебели из базы с ценами по цветовым группам
                    Kod = Elbaz.substring(Elbaz.indexOf("\"", 1) + 1, Elbaz.indexOf("\"", 2)); // Получение кода мебели из базы
                    SStCena1 = Elbaz.substring(Elbaz.indexOf("(1") + 1, Elbaz.indexOf(")", Elbaz.indexOf("(1"))); // Поиск старой цены 1 базовой группы цветовой наценки
                    SStCena2 = Elbaz.substring(Elbaz.indexOf("(2") + 1, Elbaz.indexOf(")", Elbaz.indexOf("(2"))); // Поиск старой цены 2 группы цветовой наценки
                    SStCena3 = Elbaz.substring(Elbaz.indexOf("(3") + 1, Elbaz.indexOf(")", Elbaz.indexOf("(3"))); // Поиск старой цены 3 группы цветовой наценки
                    SStCena4 = Elbaz.substring(Elbaz.indexOf("(4") + 1, Elbaz.indexOf(")", Elbaz.indexOf("(4"))); // Поиск старой цены 4 группы цветовой наценки
                    SStCena5 = Elbaz.substring(Elbaz.indexOf("(5") + 1, Elbaz.indexOf(")", Elbaz.indexOf("(5"))); // Поиск старой цены 5 группы цветовой наценки
                    SStCena6 = Elbaz.substring(Elbaz.indexOf("(6") + 1, Elbaz.indexOf(")", Elbaz.indexOf("(6"))); // Поиск старой цены 6 группы цветовой наценки
                    SStCena7 = Elbaz.substring(Elbaz.indexOf("(7") + 1, Elbaz.indexOf(")", Elbaz.indexOf("(7"))); // Поиск старой цены 7 группы цветовой наценки
                    SStCena8 = Elbaz.substring(Elbaz.indexOf("(8") + 1, Elbaz.indexOf(")", Elbaz.indexOf("(8"))); // Поиск старой цены 8 группы цветовой наценки
                    SStCena9 = Elbaz.substring(Elbaz.indexOf("(9") + 1, Elbaz.indexOf(")", Elbaz.indexOf("(9"))); // Поиск старой цены 9 группы цветовой наценки
                    if (Price.indexOf(Kod) > 0) { // Если код найден в прайсе
                        SNCena1 = Price.substring(Price.indexOf("\t", Price.indexOf(Kod)), Price.indexOf("\n", Price.indexOf(Kod))); // Поиск новой цены 1 базовой ценовой наценки соответствующей коду
                        // Формирование строковых цен по категориям
                        if (SNCena1.indexOf(".") != SNCena1.length() - 3) {
                            SNCena1 = SNCena1 + "0";
                        }
                        double FNCena1 = new Double(SNCena1);
                        double FNCena2 = new BigDecimal(FNCena1 * new Double (MatrPriceKategor[1])).setScale(2, RoundingMode.UP).doubleValue();// Расчет второй цены
                        double FNCena3 = new BigDecimal(FNCena1 * new Double (MatrPriceKategor[2])).setScale(2, RoundingMode.UP).doubleValue();// Расчет второй цены
                        double FNCena4 = new BigDecimal(FNCena1 * new Double (MatrPriceKategor[3])).setScale(2, RoundingMode.UP).doubleValue();// Расчет второй цены
                        double FNCena5 = new BigDecimal(FNCena1 * new Double (MatrPriceKategor[4])).setScale(2, RoundingMode.UP).doubleValue();// Расчет второй цены
                        double FNCena6 = new BigDecimal(FNCena1 * new Double (MatrPriceKategor[5])).setScale(2, RoundingMode.UP).doubleValue();// Расчет второй цены
                        double FNCena7 = new BigDecimal(FNCena1 * new Double (MatrPriceKategor[6])).setScale(2, RoundingMode.UP).doubleValue();// Расчет второй цены
                        double FNCena8 = new BigDecimal(FNCena1 * new Double (MatrPriceKategor[7])).setScale(2, RoundingMode.UP).doubleValue();// Расчет второй цены
                        double FNCena9 = new BigDecimal(FNCena1 * new Double (MatrPriceKategor[8])).setScale(2, RoundingMode.UP).doubleValue();// Расчет второй цены
                        double FNCena10 = new BigDecimal(FNCena1 * new Double (MatrPriceKategor[9])).setScale(2, RoundingMode.UP).doubleValue();// Расчет второй цены
                        SNCena1 = Double.toString(FNCena1);// Пробразование Double в String
                        if (SNCena1.indexOf(".") != SNCena1.length() - 3) {
                            SNCena1 = SNCena1 + "0";
                        }
                        SNCena1 = "1 " + SNCena1;
                        SNCena2 = Double.toString(FNCena2);// Пробразование Double в String
                        if (SNCena2.indexOf(".") != SNCena2.length() - 3) {
                            SNCena2 = SNCena2 + "0";
                        }
                        SNCena2 = "2 " + SNCena2;
                        SNCena3 = Double.toString(FNCena3);// Пробразование Double в String
                        if (SNCena3.indexOf(".") != SNCena3.length() - 3) {
                            SNCena3 = SNCena3 + "0";
                        }
                        SNCena3 = "3 " + SNCena3;
                        SNCena4 = Double.toString(FNCena4);// Пробразование Double в String
                        if (SNCena4.indexOf(".") != SNCena4.length() - 3) {
                            SNCena4 = SNCena4 + "0";
                        }
                        SNCena4 = "4 " + SNCena4;
                        SNCena5 = Double.toString(FNCena5);// Пробразование Double в String
                        if (SNCena5.indexOf(".") != SNCena5.length() - 3) {
                            SNCena5 = SNCena5 + "0";
                        }
                        SNCena5 = "5 " + SNCena5;
                        SNCena6 = Double.toString(FNCena6);// Пробразование Double в String
                        if (SNCena6.indexOf(".") != SNCena6.length() - 3) {
                            SNCena6 = SNCena6 + "0";
                        }
                        SNCena6 = "6 " + SNCena6;
                        SNCena7 = Double.toString(FNCena7);// Пробразование Double в String
                        if (SNCena7.indexOf(".") != SNCena7.length() - 3) {
                            SNCena7 = SNCena7 + "0";
                        }
                        SNCena7 = "7 " + SNCena7;
                        SNCena8 = Double.toString(FNCena8);// Пробразование Double в String
                        if (SNCena8.indexOf(".") != SNCena8.length() - 3) {
                            SNCena8 = SNCena8 + "0";
                        }
                        SNCena8 = "8 " + SNCena8;
                        SNCena9 = Double.toString(FNCena9);// Пробразование Double в String
                        if (SNCena9.indexOf(".") != SNCena9.length() - 3) {
                            SNCena9 = SNCena9 + "0";
                        }
                        SNCena9 = "9 " + SNCena9;
                    } else {
                        SNCena1 = "1 0.00";
                        SNCena2 = "2 0.00";
                        SNCena3 = "3 0.00";
                        SNCena4 = "4 0.00";
                        SNCena5 = "5 0.00";
                        SNCena6 = "6 0.00";
                        SNCena7 = "7 0.00";
                        SNCena8 = "8 0.00";
                        SNCena9 = "9 0.00";
                    }
                    // Формирование нового элемента базы со всеми ценами по категориям
                    NewElbaz = Elbaz.replace(SStCena1, SNCena1);
                    NewElbaz = NewElbaz.replace(SStCena2, SNCena2);
                    NewElbaz = NewElbaz.replace(SStCena3, SNCena3);
                    NewElbaz = NewElbaz.replace(SStCena4, SNCena4);
                    NewElbaz = NewElbaz.replace(SStCena5, SNCena5);
                    NewElbaz = NewElbaz.replace(SStCena6, SNCena6);
                    NewElbaz = NewElbaz.replace(SStCena7, SNCena7);
                    NewElbaz = NewElbaz.replace(SStCena8, SNCena8);
                    NewElbaz = NewElbaz.replace(SStCena9, SNCena9);
                }
                if (YOtkrSk < 0) {
                    break;
                }
                // Генерация новой 4 строки содержания файла базы
                if (OtkrSk == 1) {
                    Newstrok4FromFile = Newstrok4FromFile + NewElbaz;
                } else
                    Newstrok4FromFile = Newstrok4FromFile + " " + NewElbaz;
                OtkrSk = YOtkrSk + 4;
            }
            Newstrok4FromFile = Newstrok4FromFile + ")";
            NewtextFromFile = OldStrok1_3FromFile + Newstrok4FromFile + "\n" + Oldstrok4_FromFile; // Генерация всего содержимого файла базы
            FileWoker.write(fileName, NewtextFromFile);//Запись в файл
            System.out.println("Цены обновлены успешно!");
            OldStrok1_3FromFile = null;
            OldStrok4FromFile = null;
            Oldstrok4_FromFile = null;
            Newstrok4FromFile = "(";
        } // конец for
        System.out.println("\nЦены базы обновлены успешно!");
    }
}
Миниатюры
Как правильно собрать и запустить проект в Jar или exe?   Как правильно собрать и запустить проект в Jar или exe?  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2015, 12:39
Ответы с готовыми решениями:

Как собрать в один exe весь проект
всем привет, как собрать в один ехе весь проект на Дельфи? Добавлено через 1 минуту пжлста, мне срочно нужно Добавлено через 16...

Как собрать проект в .exe файл, а не в dll?
Я работаю над проектом(консольным) по сути полностью построенном на .NET и не могу понять почему выходной файл имеет расширение dll и...

Как правильно собрать проект?
Здравствуйте. Помогите пожалуйста решить проблему. Как правильно собрать проект? Задаю вроде как верные характеристики, а он на другом...

26
3 / 3 / 0
Регистрация: 28.12.2011
Сообщений: 29
24.04.2015, 16:34
Студворк — интернет-сервис помощи студентам
да, значит, в джарник эта библиотека у тебя заливается неправильно.
Скинь скриншотом структуру папок своего проекта
0
1 / 1 / 0
Регистрация: 31.10.2014
Сообщений: 59
24.04.2015, 16:52  [ТС]
Вот скрин.
Миниатюры
Как правильно собрать и запустить проект в Jar или exe?  
0
3 / 3 / 0
Регистрация: 28.12.2011
Сообщений: 29
24.04.2015, 16:56
тот класс располагается в poi-3.5.jar?
0
1 / 1 / 0
Регистрация: 31.10.2014
Сообщений: 59
24.04.2015, 16:59  [ТС]
Да вот скрин.
Миниатюры
Как правильно собрать и запустить проект в Jar или exe?  
0
3 / 3 / 0
Регистрация: 28.12.2011
Сообщений: 29
24.04.2015, 17:03
Попробуй вот что:
пихани этот джарник в target или там куда-нибудь во внутренние папки, где все либы лежат

Пиши еще, на выходных гляну
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
27.04.2015, 08:18
MANIFEST.MF в студию.
0
1 / 1 / 0
Регистрация: 31.10.2014
Сообщений: 59
29.04.2015, 09:23  [ТС]
Всем большое спасибо. Проблема решилась сама собой. В воскресенье слетела система. Преставил систему. Поставил Интеллидж собрал проект и все заработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.04.2015, 09:23

Как собрать свой проект в единый exe-шник.
Здравствуйте друзья! Я создал проект WindowsFormsApplication на VS 2008. Как его собрать (со всеми его данными) в единый файл exe с...

Как запустить проект exe при создаваемой dll
Короче написал dll, при нажатии на F5 идет компеляция и попытка запуска dll но вылазит ош. ну понятно запустить ее нельзя а вот хотелось бы...

Как запустить проект не через Visual Studio, а отдельным файлом *.exe?
Создал проект WindowsFormsApplication1, которые выполняет необходимый для меня функционал Протестировал его в Visual Studio. Как дальше...

Как создать .jar через утилиту jar.exe
Я начинаю идти в WikiHOW, потом я там делаю все правильно, Конец создания файла сложный, я пишу jar c manifest.mf myclass.class, Потом я...

Как можно запустить готовый проект.exe на компютере на котором не стоит с++ билдер
Как можно запустить готовый проект.exe на компютере на котором не стоит с++ билдер


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru