Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > финальная стадия java проекта |
Автор: Fieral 24.6.2009, 00:02 |
у меня тут серия вопросов возникла, возможно ответы уже озвучивались, но всё-таки, по порядку: 1) допустим я дописал java-проект (например в Eclipse или NetBeans) - как теперь получить готовый продукт? насколько я понял его нужно откомпилировать в jar файл указав стартующий класс ( с методом main(String[] args) ) - верно? или есть другие "более правильные" способы? |
Автор: Sadness 24.6.2009, 00:09 |
Fieral, в принципе да ![]() ![]() |
Автор: Vasay 24.6.2009, 00:19 |
Если в NetBeans настройки по умолчанию не меняли - то jar создается автоматически в папке dist проекта. Для пользователей "окошек" можно инсталятор сделать по всем правилам. Можно и для других систем, если не лень и они есть под рукой. Написать подробную инструкцию по пользованию. И лицензионное соглашение ![]() |
Автор: Fieral 24.6.2009, 00:32 | ||
а как можно сделать инсталятор? самому писать или есть стандартные пакеты? что в нём нужно обязательно настроить? .... |
Автор: Vasay 24.6.2009, 00:48 |
Fieral, Посмотрите http://izpack.org/ |
Автор: Fieral 24.6.2009, 16:09 |
ок 2) как запускать полученную программу? двойным кликом по jar-ке - работает не на всех машинах - ибо зависит там от каких-то настроек OS из под консоли? - на дворе 21 век консолью пользуются только физики и шизофреники ![]() |
Автор: Vasay 24.6.2009, 16:17 | ||
Fieral,
Для win пишется .bat файл Для *n?х - .sh файл. |
Автор: Fieral 24.6.2009, 16:33 |
3) ок, допустим, у меня в проекте использовались некоторые jar-ки и другие подпроекты (от которых зависит данный проект), но после компиляции я получу jar-ку только своего проекта, и при попытке запуска этой джарки будет высвечиваться ClassNotFoundException как решать эту проблему? добавлять какие-то параметры в sh/bat файлы? или после компиляции "вшивать" зависимости в полученную jar-ку? или...? |
Автор: Skynin 24.6.2009, 17:31 |
А еще пишутся (или гуглятся) простенькие запускальщики на C/C++ которые содержат иконку, читают ini файл(или парсят параметры командной строки) с параметрами JVM и компилятся под нужную платформу. Многие программы на java обычно и состоят из jar файлов и exe файла под винду, sh для "унихов" Например IDE для разработки на Java ![]() Или: емайл клиент Columba, рисовалка "карт памяти" Freemind, торрент клиент Azureus, создатель удаленных дисков Wuala |
Автор: m1ha 25.6.2009, 16:38 | ||
конечно оффтоп) но ты нифига не прав, если тебе удобнее тыкать в иконки тыкайся дальше, но многим работать с консолью удобнее, и каждый уважающий себе програмист должен представлять как откомпилировать/запустить/создать jar через консоль, большинство HelloWorld.java учат компилировать именно в консоле и это не с проста |
Автор: sneer 2.7.2009, 02:18 |
по поводу Microsoft ну да только майкрософт в 21 веке Выпускает PowerShell 1.0 затем 2.0 которые являются полным аналогом unix команд.хи хи |
Автор: ShellRaiser 2.7.2009, 10:33 | ||
ну по поводу консоли ты загнул, я как и большинство других программистов для сборки большого проекта, использую консольные скрипты, для цвс и ант ... вообщем компиль джарку, и если для win то создавай батник, в котором будешь подключать необходимые библиотеки, т.к. на практике просто jar-ки мало |
Автор: Fieral 29.10.2009, 18:22 |
Привет. У меня есть папка C:\doom\[LIBS] в ней лежат: Clips8.Server.jar Clips8.Core.jar server должен юзать классы Clips8.Core.jar, однако когда я стартую : C:\Program Files\Far>java -Djava.security.policy=C:\\doom\\wideopen.policy -Djava.library.path=C:\\doom\\[LIBS] -jar C:\\doom\\[LIBS]\\clips8.server.jar C:\\doom\\[BOX]\\ClipsManager\\Cbox java.lang.NoClassDefFoundError: anton/clips/boiler/Box at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at anton.clips.boiler.RunClipsLocalServer.main(RunClipsLocalServer.java:17) Caused by: java.lang.ClassNotFoundException: anton.clips.boiler.Box at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 25 more аналогично если прогнать: C:\Program Files\Far>set CLASSPATH=C:\\doom\\[LIBS] C:\Program Files\Far>java -Djava.security.policy=C:\\doom\\wideopen.policy -Djava.library.path=C:\\doom\\[LIBS] -jar C:\\doom\\[LIBS]\\clips8.server.jar C:\\doom\\[BOX]\\ClipsManager\\Cbox java.lang.NoClassDefFoundError: anton/clips/boiler/Box at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at anton.clips.boiler.RunClipsLocalServer.main(RunClipsLocalServer.java:17) Caused by: java.lang.ClassNotFoundException: anton.clips.boiler.Box at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 25 more |
Автор: Fieral 29.10.2009, 19:21 |
таже проблема с java -Djava.security.policy=C:\doom\wideopen.policy -classpath C:\doom\[LIBS] -jar C:\doom\[LIBS]\Clips8.Server.jar C:\doom\[BOX]\ClipsManager\Cbox |
Автор: ivanovpv 29.10.2009, 20:47 | ||
1) Надо вырубить включение отладочной информации (в нетбинсе выключить флаг в porject-properties-compiler-generate debugging info) 2) Включить обфускацию 3) Включить сжатие JAR/WAR/EAR/APK 4) Желательно выставить правильную версию продукта (Netbeans/Eclipse поддерживают ведение версий) 5) Снабдить какой ни есть докой/мануалом 6) Зафиксировать исходники выпускаемой версии - желательно в системе контроля версий пометить как branch/release 7) Выпнуть в белый свет 8) Ждать откликов от несчастных юзеров и разбирать баги |