Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > Минимум jre для запуска


Автор: CPlusPlusFAN 20.8.2010, 15:49
Здравствуйте.
Мне программно часто приходится переносить jre для запуска клиентских приложений. Приложение представляет собой байт-код в виде одного class файла. Так вот, jre весит 110 метров. + ещё надо переносить java файл (тот который bin/java). Можно из jre убрать какие-то файлы, чтобы запускалось приложение?

ЗЫ Сначала я брал пустое jre, затем добавлял туда либы, которые он требует. Но вот наткнулся на сообщение:
Код

There was an error trying to initialize the HPI library.
Could not create the Java virtual machine.

Что делать с этим, не знаю.

ЗЫЫ Вариант "поставь переменную окружения $JAVA_HOME, юзай одну копию и не разрушай мозг ни себе, ни другим" не катит. Иначе бы я так и сделал.

Автор: Vasay 20.8.2010, 15:54
CPlusPlusFAN

Цитата

, jre весит 110 метров.


JRE под винду весит около 16мб.  Вы наверно его с JDK перепутали. 

Автор: CPlusPlusFAN 20.8.2010, 16:18
Не. jdk весит 310 метров. У меня линух.

Автор: Vasay 20.8.2010, 16:23
Цитата(CPlusPlusFAN @  20.8.2010,  16:18 Найти цитируемый пост)
У меня линух. 



http://java.com/ru/download/manual.jsp

Дистрибутив под linux 20мб


Автор: CPlusPlusFAN 20.8.2010, 16:31
Дык это то же самое. В распакованном виде весит те же 110 метров.

Автор: Vasay 20.8.2010, 16:43
CPlusPlusFAN

А зачем Вам его в распакованном таскать?

Автор: CPlusPlusFAN 20.8.2010, 16:53
Ну там у меня создаются директории, в которых тестируются программы в виде одиночных class файлов как в изолированных средах. Для процесса приложения каждая из них становится рутовой. Поэтому я не могу оставить где-то jre и мне приходится его таскать разобранным.

В общем я выделил минимум. Его большая часть - это rt.jar. А он обязательно должен подключаться в рантайме или его используемые классы можно включить в программу при компиляции?

Автор: Vasay 20.8.2010, 17:01
CPlusPlusFAN

можно попытаться скомпилировать java код в натив. Я как-то делал. Размер консольного приложения получался не маленьким, но не 110мб smile

http://gcc.gnu.org/java/

Автор: CPlusPlusFAN 20.8.2010, 21:35
Не. gcj не подходит. :(

Дело в том, что бОльшая часть этой rt не нужна. Я распакоовал менеджером архивов jar файл, убрал всё, кроме:

rt/java/
     io
     lang
     math
     text
     util

В результате при запуске class файла выдало вот что:
Код

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object


Где-то я лишнее удалил походу. java/lang я не трогал.

Автор: CPlusPlusFAN 20.8.2010, 21:53
Оказывается, если просто взять нормальный rt, распаковать его (либо менеджером архивов, либо jar'ом), а потом собрать. В результате получается jar файл размером в 2 раза меньше, да и ещё вылезает та же ошибка.

Автор: CPlusPlusFAN 20.8.2010, 22:33
Всё. Проблема разрешилась. Оказалось, надо было собирать без компрессии. То бишь с опцией 0.
rt.jar получился в итоге 1.5 метров.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)