Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> замена ресурсов в jar для j2me 
V
    Опции темы
math64
Дата 7.12.2010, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Хочу заменить ресурсы jar, чтобы не требовалось устанавливать j2me.
Пишется для j2me, но на j2se, потому здесь,
пока пробую переписать jar без замены:
Код

    JarFile jar = new JarFile("in/test.jar");
    Enumeration entries = jar.entries();
    JarOutputStream out = new JarOutputStream(new FileOutputStream("out/test.jar"));
    byte[] b = new byte[10000];
    while (entries.hasMoreElements()) {
      JarEntry jarEntry = (JarEntry) entries.nextElement();
      String name = jarEntry.getName();
      jarEntry = new JarEntry(jarEntry);
      out.putNextEntry(jarEntry);
      if (!jarEntry.isDirectory()) {
        InputStream in = jar.getInputStream(jarEntry);
        for(int len; (len = in.read(b, 0, b.length)) > 0;) {
          out.write(b, 0, len);
        }
      }
      out.closeEntry();
    }
    jar.close();
    out.close();
    PrintStream jad = new PrintStream("out/test.jad");
    jad.println("MIDlet-1: test, test.png, Midlet1");
    jad.println("MIDlet-Icon: /test.png");
    jad.println("MIDlet-Jar-Size: " + new File("out/test.jar").length());
    jad.println("MIDlet-Jar-URL: test.jar");
    jad.println("MIDlet-Name: test");
    jad.println("MIDlet-Vendor: math64");
    jad.println("MIDlet-Version: 1.0");
    jad.println("MicroEdition-Configuration: CLDC-1.0");
    jad.println("MicroEdition-Profile: MIDP-2.0");
    jad.close();

Мидлет запускается, но ресурсов не видит.
Новый jar того же размера, но некоторые быйты отличаются, в основном 0A заменено на 14

PM   Вверх
oxigen
Дата 7.12.2010, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 12.4.2010

Репутация: 4
Всего: 4



глупый вопрос, но:
А вручную не пробовали в джаре файлы поменять?
PM MAIL   Вверх
math64
Дата 8.12.2010, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Если раскрыть архив WinRAR и собрать заново (и поправить размер в jad), файл получается меньше, но ресурсы всё равно не видит, хотя файлы .class загружаются (System.out.println() выводится в эмуляторе)
То же самое, если запаковать jar c помощью jar:
Код

jar cfm test.jar META-INF/MANIFEST.MF .

Только результирующий jar получается больше оригинального

Это сообщение отредактировал(а) math64 - 8.12.2010, 11:01
PM   Вверх
math64
Дата 8.12.2010, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Ошибка была в том, что при создании ресурса (в j2se) было out.writeInt(count); , а при чтении (в j2me) count = in.readShort(); поэтому ресурс открывался, но считывался 0.
Теперь созданный с заменёнными ресурсами jar читается, хотя и получается немного длиннее.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.