2012-01-22 3 views
0

Я сжал файлы библиотеки jar с помощью 7-zip с ультра-сжатием для меньшего размера. Но после этого, когда я использую его в Netbeans, мое приложение Swing не показывает загруженную библиотеку jar. Java не может получить доступ к содержимому внутри файла jar библиотеки.Ошибка при загрузке библиотеки jar

Поддерживает ли 7-zip-сжатие поддержку на Java? Любые методы или средства правовой защиты для решения этой проблемы?

Любой другой инструмент сжатия для java для сжатия файлов jar меньшего размера?


Моя баночка файл размер 13mb и мой клиент чувствует, что это тяжелый вес, чтобы загрузить и он хочет, чтобы быть очень маленький размер. С пакетом200 я получил размер банки до 4,5 МБ (что было хорошо). Но в итоге была загружена ошибка в основной файл jar.

  1. Файл библиотеки Jar для моего приложения. Он имеет DJ родной свинг и другие классы, как РРТ читатель и т.д ..

ответ

1

.jar файл должен быть сжат с помощью инструмента jar. Сам формат по существу равен zip с некоторыми метаданными, специфичными для Java.

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

3

Zip их, используя либо «стандартную компрессию», либо используя pack200 - только два формата сжатия, понятные JVM. Jar tool, конечно, отлично подходит для этой цели. Обычно я называю это скриптом сборки Ant.


Одним из прекрасных способов уменьшить размер классов распространяемого является обфускация кода. Хотя в конечном счете неэффективны при обеспечении «защиты кода», для которого они обычно используются, обфускация обычно делает бинарные файлы значительно (на 40% -60%) меньше.


файл библиотеки для моего приложения .. это DJ родной качели и другие классы, как читателя и т.д. п.п. ...

Дайте запутывания и стандартное сжатие попробовать. Сообщите размер и успех/неудачу загрузки & подтвердите.

Поскольку это, по-видимому, настольное приложение, также рассмотрите разделение приложения. в отдельные банки и доставляя их лениво, используя Java Web Start. Это означает, что они загружаются только при необходимости. НАПРИМЕР. читатель PPT может быть для справочной системы. Нет необходимости загружать справку для приложения. чтобы на экране, только если они попали F1

С отложенной загрузкой, читателем РРТ и файлы справки будут загружены только тогда, когда пользователь просил помощи, а затем с диалогом процесса.

Еще лучше, если API получает обновление, просто загрузите обновленный Jar на сервер, и JWS автоматически обновит версию на клиенте (при необходимости - например, не будет обновлять какие-либо «ленивые» банки, которые еще не были были кэшированы).

+0

Не могли бы вы предоставить мне подробную информацию об упаковке с использованием pack200, так как они очень смущены статьи, которые я нашел о pack200 compress .. есть ли какие-либо статьи, которые я могу понять и сжать файлы jar с помощью pack200 .. Я пробовал много примеров, которые приводят к сбою ... я использую netbeans 7.0 и java 1.6 –

+0

ах ... хорошо, мой Размер файла jar составляет 13 Мб, и мой клиент чувствует, что он тяжелый груз, и он хочет, чтобы он был очень маленьким. .. с пакетом200 я получил размер банки до 4,5 МБ и который я хотел ... но закончил с ошибкой загруженный в главный файл jar. –

+0

thats файл библиотеки для моего приложения .. он имеет собственный род dj и другие классы, такие как ppt reader и т. д. –

1

ли сжатия 7-Zip обыкновение поддержку в Java

Это правильно. Java не может обрабатывать JAR-файл, сжатый каким-то сторонним инструментом.

Самый простой вариант - не делать этого. (Избавьтесь от некоторых из этих фильмов или всего, что использует весь ваш диск :-))

Следующий простейший вариант - использовать 7-zip-инструмент для распаковки файла, прежде чем пытаться использовать его в Java.

Наконец, если вы просто пытаетесь выполнить свое приложение, используя этот супер-сжатый JAR-файл, то вы можете использовать загрузчик классов, который использовал 7-zip для несжатого JAR-файла на лету. (Или, если опубликован алгоритм использования 7-zip, вы можете внедрить компилятор в Java и внедрить его в свой загрузчик классов.)

+0

У загрузчика классов 7zip будет дополнительная проблема: для 7-zip-алгоритма требуется большое пространство для хранения словаря, который может быть больше, чем доступен JVM. Я считаю, что сжатие Ultra требует нескольких сотен мегабайт. –

Смежные вопросы