Ошибка загрузки библиотеки JAR - PullRequest
0 голосов
/ 22 января 2012

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

Не поддерживает ли сжатие 7-zip в Java? Какие-либо методы или средства для решения этой проблемы?

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


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

  1. Файл библиотеки Jar для моего приложения. У него есть DJ Swing и другие классы, такие как PPT Reader и т. Д.

Ответы [ 3 ]

3 голосов
/ 22 января 2012

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


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


файл библиотеки для моегоapp .. у него есть dj native swing и другие классы, такие как ppt reader и т. д. *

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

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

При ленивой загрузке файлы PPT и файлы справки будут загружаться только тогда, когда пользователь запросил справкузатем с диалоговым окном прогресса.

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

1 голос
/ 22 января 2012

Поддерживает ли сжатие 7-zip в Java

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

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

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

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

1 голос
/ 22 января 2012
Файл

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

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

...