1. Главная страница » Компьютеры

Meta inf что это

Автор: | 16.12.2019

Привет, Друзья! Файлы, содержащие подробную информацию по всем загрузчикам служб и классов, расширениям и конфигурации пакетов можно найти в каталогах метаданных Java Archive (сокращенно JAR). Он и получил название META-INF. Также в нем можно найти файлы необходимые для контроля безопасности и версий.

В действительности файлы Java Archive в формате ZIP, в которых есть вся сопутствующая информация и у них улучшена индексация. Когда информация пакуется в файл ZIP, нужно разместить ее так, чтобы содержимое было оформлено правильно. Применение каталога META-INF представляет собой попытку применить каталоги как пространство имен в ZIP файле. Благодаря этому появилась возможность сохранности информации, которая могла повлиять на обработку, в самом ZIP файле, не нарушая его упаковку.

Для чего нужен META-INF

Платформа Java, применяя в работе META-INF, может распознавать файлы таких типов:

  1. В составе файла INDEX.LIST содержится информация относительно размещения пакетов, описание которых дается в расширении или приложении.
  2. В составе файла MANIFEST.MF информация про пакеты и расширения, необходимые чтобы выполнять JAR. При наличии данного файла в META-INF можно определить какие есть зависимости с доступом (внешние либо дополнительные).
  3. В файле x.DSA вмещается цифровая подпись сигнатурного файла. Обозначение «Х» в названии файла – это наименование название базового файла.
  4. В файле x.SF содержится хеш, который вычисляется для JAR, применяется, чтобы идентифицировать цифровые подписи Java. «Х» в названии файла – это наименование базового файла.
  5. Каталог services/ содержит электронные документы, в которых информация о компании, предоставляющей услуги.
Читайте также:  Gta 5 online не подключается к сессии

Некоторые из библиотек Java применяют каталог META-INF как такой, где содержаться файлы конфигурации. Они вместе с JAR должны быть упакованы.

Обучение продвижению сайтов

Если вы хотите научиться выводить сайты в ТОП 10 поисковых систем Яндекс и Google, посетите мои онлайн-уроки по SEO-оптимизации (коротко о себе я рассказал в видео ниже). Все свои интернет-проекты я вывел на посещаемость более 1000 человек в сутки и могу научить этому Вас. В отличие от коллег я не продаю видео курсы, так как они не информативны, и просматривая их некому задавать вопросы. Я провожу обучение по скайпу индивидуально и во время урока отвечаю на все возникающие вопросы моих учеников. По времени SEO обучение длиться около 4 — 6 часов в зависимости от начальной подготовки ученика. Кому интересно обращайтесь!

На этом сегодня всё, всем удачи и до новых встреч!

215 Kristian [2008-09-16 10:55:00]

В Java вы часто видите папку META-INF, содержащую некоторые метафайлы. Какова цель этой папки и что я могу там поместить?

12 ответов

53 Решение Daniel Spiewak [2008-09-16 11:05:00]

Вообще говоря, вы не должны вкладывать ничего в META-INF самостоятельно. Вместо этого вы должны полагаться на все, что вы используете для упаковки вашего JAR. Это одна из областей, где, по моему мнению, Ant действительно превосходит: указание атрибутов манифеста JAR файла. Очень легко сказать что-то вроде:

По крайней мере, я думаю, что легко. -)

Дело в том, что META-INF следует рассматривать как внутренний метакаталог Java. Не связывайтесь с этим! Любые файлы, которые вы хотите включить в JAR, должны быть помещены в какой-либо другой подкаталог или в корень самого JAR.

140 aku [2008-09-16 10:57:00]

Из официальная спецификация файла JAR (ссылка идет на версию Java 7, но текст не изменился с по крайней мере v1.3 ):

Каталог META-INF

Следующие файлы/каталоги в каталоге META-INF распознаются и интерпретируются платформой Java 2 для настройки приложений, расширений, загрузчиков классов и служб:

Файл манифеста, который используется для определения данных, связанных с расширением и пакетом.

Этот файл генерируется новой опцией " -i " инструмента jar, которая содержит информацию о местоположении для пакетов, определенных в приложении или расширении. Он является частью реализации JarIndex и используется загрузчиками классов для ускорения процесса загрузки классов.

Файл подписи для JAR файла. "x" обозначает имя базового файла.

Файл блока подписи, связанный с файлом подписи с тем же именем базового файла. Этот файл хранит цифровую подпись соответствующего файла сигнатуры.

В этом каталоге хранятся все файлы конфигурации поставщика услуг.

23 user38748 [2008-11-25 00:38:00]

Я заметил, что некоторые библиотеки Java начали использовать META-INF в качестве каталога, в который будут включены файлы конфигурации, которые должны быть упакованы и включены в CLASSPATH вместе с JAR. Например, Spring позволяет импортировать файлы XML, которые находятся в пути к классам, используя:

В этом примере я цитирую прямо из Apache CXF User Guide. В проекте, над которым я работал, в котором нам нужно было разрешить несколько уровней конфигурации через Spring, мы выполнили это соглашение и поместили наши файлы конфигурации в META-INF.

Когда я размышляю над этим решением, я не знаю, что именно было бы неправильно, просто включив файлы конфигурации в конкретный пакет Java, а не в META-INF. Но это, по-видимому, новый стандарт де-факто; либо это, либо новый анти-шаблон: -)

Папка META-INF — это домашний файл MANIFEST.MF. Этот файл содержит метаданные о содержимом JAR. Например, есть запись под названием Main-Class, которая указывает имя класса Java со статическим main() для исполняемых JAR файлов.

Вы также можете разместить там статические ресурсы.

и получить их в web3.0-контейнере через

Значение/META-INF/MANIFEST.MF имеет особое значение:

  • Если вы запустите банку с помощью java -jar myjar.jar org.myserver.MyMainClass , вы можете переместить определение основного класса в банку, чтобы вы могли сжать вызов в java -jar myjar.jar .
  • Вы можете определить Metainformations для пакетов, если используете java.lang.Package.getPackage("org.myserver").getImplementationTitle() .
  • Вы можете ссылаться на цифровые сертификаты, которые вы хотите использовать в режиме Applet/Webstart.

4 sasuke [2009-10-21 18:21:00]

Чтобы добавить к информации здесь, в случае файла WAR файл META-INF/MANIFEST.MF предоставляет разработчику возможность инициировать проверку времени развертывания контейнером, который гарантирует, что контейнер может найти все от вашего приложения зависит ваше приложение. Это гарантирует, что в случае, если вы пропустили JAR, вам не нужно ждать, пока ваше приложение не ударит во время выполнения, чтобы понять, что он отсутствует.

3 EliuX [2015-01-12 18:48:00]

META-INF в Maven

В Maven папка META-INF понятна из-за Стандартный макет каталога, который по соглашению об условном пакете ваши ресурсы проекта в JAR: любые каталоги или файлы, помещенные в каталог $/src/main/resources, упаковываются в ваш JAR с той же структурой, начиная с базы JAR. Папка $/src/main/resources/META-INF обычно содержит файлы .properties, в то время как в банке содержится сгенерированная MANIFEST.MF, pom.properties pom.xml, среди других файлов. Кроме того, фреймворки, такие как Spring, используют classpath:/META-INF/resources/ для обслуживания веб-ресурсов. Для получения дополнительной информации см. Как добавить ресурсы в мой проект Maven

3 f0ster [2009-10-22 23:42:00]

Если вы используете JPA1, вам может потребоваться отбросить файл persistence.xml , в котором указывается имя единицы сохранения, который вы, возможно, захотите использовать. Модуль persistence обеспечивает удобный способ указания набора файлов метаданных, классов и банок, содержащих все классы, которые должны сохраняться в группе.

Я недавно думал об этой проблеме. По-видимому, нет никаких ограничений на использование META-INF. Конечно, есть определенные стриктуры о необходимости помещать там манифест, но, похоже, нет никаких запретов по размещению там других вещей.

Случай cxf может быть законным. Здесь другое место, где этот нестандартный рекомендуется обойти неприятную ошибку в JBoss-ws, которая предотвращает проверку на стороне сервера против схемы wsdl.

Но действительно нет никаких стандартов, ничто не должно быть. Обычно эти вещи очень строго определены, но по какой-то причине, похоже, здесь нет стандартов. Странно. Похоже, что META-INF стал популярным местом для любой необходимой конфигурации, которая не может быть легко обработана каким-либо другим способом.

2 Readren [2016-04-22 21:21:00]

Чтобы добавить сюда информацию, META-INF — это специальная папка, в которой ClassLoader рассматривает ее иначе, чем другие папки в банке. Элементы, вложенные внутри META-INF, не смешиваются с элементами вне него. Это как другой корень. По крайней мере, по методу Enumerator ClassLoader#getSystemResources(String path) и др.: Когда заданный путь начинается с "META-INF", метод ищет ресурсы, вложенные внутри папок META-INF всех банок в пути класса. И когда данный путь не начинается с "META-INF", метод ищет ресурсы во всех других папках (вне META-INF) всех банок и каталогов в пути к классу.

Если вы знаете о другом имени папки, которое особенно подходит для метода getSystemResources , прокомментируйте его.

0 Tugrul [2015-01-13 18:04:00]

Все ответы верны. Meta-inf имеет множество целей. Кроме того, здесь приведен пример использования контейнера tomcat.

Перейдите к Tomcat Doc и проверьте " Стандартная реализация > copyXML".

Необходимо создать updater-script для вашей кастомной прошивки или мода? Не знаете какие команды писать и что они означают? На все эти ответы можно узнать из данной статьи.

Как должен выглядеть ZIP -обновление (структура)

В корне архива-обновления «должны» находится такие файлы и папки:

  1. Папка META-INF — обязательно;
  2. system или data или cache или другие, в зависимости от того, для чего готовилось обновление (не обязательно, так как возможно прошиваете модем или ядро);
  3. boot.img или recovery.img или zImage (не обязательно, так как возможно обновляете файл в system или data).

Режим сжатия архива должен быть «нормальный» или «обычный» более сильное сжатие Android не поддерживает.

Папка META-INF состоит:

  1. Папка com
  2. Файлы подписи обновления

Папка com должна содержать в себе такие файлы и папки:

  1. Папку android
  2. Google

Папка google должна содержать папку android в которой должны быть файлы

1. updater-script — текстовый файл с набором инструкций для обновления;

2. update-binary — бинарный файл, необходимый для установки обновления.

Инструменты редактирования update-script

Для редактирования updater-script вам понадобится программа NotePad ++

важное условие при работе это кодировка, она должна быть UNIX

Команды updater-script

  • assert -задается для каких моделей создано обновление;
  • mount — монтирование (присоединение) разделов;
  • umount — отсоединить раздел;
  • package_extract_dir — копирует выбраню папку и заменяет собой аналогичную вместе с файлами;
  • package_extract_file — копирует выбранный файл и заменяет собой аналогичный;
  • format — форматирует прописанный раздел;
  • delete — удаляет файл;
  • delete_recursive — рекурсивное удаление, необходимо для удаления папок и их содержимого;
  • run_program — запускает программу;
  • set_perm — задает права для файла;
  • set_perm_recursive — задает права для папки;
  • symlink — создает жесткую ссылку — «симлинк» (ярлык для запуска);
  • ui_print — вывод сообщения на экран.

Внимание! Программа Android +1 Updater Script

Вашему внимание проект сайта Android +1Android +1 Updater Script позволит правильно и очень быстро составить правильный скрипт, даже для пользователей с маленьким опытом!

Как узнать как задать правильные symlink в updater-script

Довольно популярный вопрос о том как узнать какие необходимо создать symlink в updater-script? Все очень просто для этого вам нужно либо компьютер с ADB или установленный терминал на Android. Перейдите в папки:

В каждой из этих папок наберите команду ls -l и вы получите список файлов и symlink.

Узнать список всех папок в System

Для того того чтобы узнать все папки которые есть в разделе /system , понадобиться набрать linux команду:

su

du -a system

После чего вам выдаст весь список папок в разделе.

Узнать все права, uid, gid и список файлов и папок

Для того чтобы узнать все права, uid, gid и список файлов и папок нужно задать следующую команду linux:

ls -alnR /system

Теперь перейдем как это выглядит в живую на примере…

Пример updater-script

(данный пример update-script для модели i9100 прошивка CyanogenMod 10.2)

для каких моделей:

assert(getprop(«ro.product.device») == «galaxys2» || getprop(«ro.build.product») == «galaxys2» ||
getprop(«ro.product.device») == «i9100» || getprop(«ro.build.product») == «i9100» ||
getprop(«ro.product.device») == «GT-I9100» || getprop(«ro.build.product») == «GT-I9100» ||
getprop(«ro.product.device») == «GT-I9100M» || getprop(«ro.build.product») == «GT-I9100M» ||
getprop(«ro.product.device») == «GT-I9100P» || getprop(«ro.build.product») == «GT-I9100P» ||
getprop(«ro.product.device») == «GT-I9100T» || getprop(«ro.build.product») == «GT-I9100T»);

монтирование раздела

mount(«ext4», «EMMC», «/dev/block/mmcblk0p9», «/system»);

копирование файла

package_extract_file(«system/bin/backuptool.sh», «/tmp/backuptool.sh»);
package_extract_file(«system/bin/backuptool.functions», «/tmp/backuptool.functions»);

задание прав для файла

set_perm(0, 0, 0777, «/tmp/backuptool.sh»);
set_perm(0, 0, 0644, «/tmp/backuptool.functions»);

запуск программы

отсоединить раздел

unmount(«/system»);

прогрессбар

show_progress(0.500000, 0);

форматирование заданного раздела

format(«ext4», «EMMC», «/dev/block/mmcblk0p9», «0», «/system»);

подсоединение раздела

mount(«ext4», «EMMC», «/dev/block/mmcblk0p9», «/system»);

копирование папки в выбранный раздел

package_extract_dir(«recovery», «/system»);
package_extract_dir(«system», «/system»);

создание симилнка

symlink(«/system/xbin/su», «/system/bin/su»);
symlink(«Roboto-Bold.ttf», «/system/fonts/DroidSans-Bold.ttf»);
symlink(«Roboto-Regular.ttf», «/system/fonts/DroidSans.ttf»);
symlink(«busybox», «/system/xbin/[«, «/system/xbin/[[«,
«/system/xbin/adjtimex», «/system/xbin/arp», «/system/xbin/ash»,
«/system/xbin/awk», «/system/xbin/base64», «/system/xbin/basename»,
«/system/xbin/bbconfig», «/system/xbin/blkid», «/system/xbin/blockdev»,
«/system/xbin/brctl», «/system/xbin/bunzip2», «/system/xbin/bzcat»,
«/system/xbin/bzip2», «/system/xbin/cal», «/system/xbin/cat»,
«/system/xbin/catv», «/system/xbin/chattr», «/system/xbin/chgrp»,
«/system/xbin/chmod», «/system/xbin/chown», «/system/xbin/chroot»,
«/system/xbin/clear», «/system/xbin/cmp», «/system/xbin/comm»,
«/system/xbin/cp», «/system/xbin/cpio», «/system/xbin/crond»,
«/system/xbin/crontab», «/system/xbin/cut», «/system/xbin/date»,
«/system/xbin/dc», «/system/xbin/dd», «/system/xbin/depmod»,
«/system/xbin/devmem», «/system/xbin/df», «/system/xbin/diff»,
«/system/xbin/dirname», «/system/xbin/dmesg», «/system/xbin/dnsd»,
«/system/xbin/dos2unix», «/system/xbin/du», «/system/xbin/echo»,
«/system/xbin/ed», «/system/xbin/egrep», «/system/xbin/env»,
«/system/xbin/expand», «/system/xbin/expr», «/system/xbin/false»,
«/system/xbin/fbsplash», «/system/xbin/fdisk», «/system/xbin/fgrep»,
«/system/xbin/find», «/system/xbin/flash_lock»,
«/system/xbin/flash_unlock», «/system/xbin/flashcp»,
«/system/xbin/flock», «/system/xbin/fold», «/system/xbin/free»,
«/system/xbin/freeramdisk», «/system/xbin/fstrim», «/system/xbin/fsync»,
«/system/xbin/ftpget», «/system/xbin/ftpput», «/system/xbin/fuser»,
«/system/xbin/getopt», «/system/xbin/grep», «/system/xbin/groups»,
«/system/xbin/gunzip», «/system/xbin/gzip», «/system/xbin/halt»,
«/system/xbin/head», «/system/xbin/hexdump», «/system/xbin/id»,
«/system/xbin/ifconfig», «/system/xbin/inetd», «/system/xbin/insmod»,
«/system/xbin/install», «/system/xbin/ionice», «/system/xbin/iostat»,
«/system/xbin/ip», «/system/xbin/kill», «/system/xbin/killall»,
«/system/xbin/killall5», «/system/xbin/less», «/system/xbin/ln»,
«/system/xbin/losetup», «/system/xbin/ls», «/system/xbin/lsattr»,
«/system/xbin/lsmod», «/system/xbin/lsusb», «/system/xbin/lzcat»,
«/system/xbin/lzma», «/system/xbin/lzop», «/system/xbin/lzopcat»,
«/system/xbin/man», «/system/xbin/md5sum», «/system/xbin/mesg»,
«/system/xbin/mkdir», «/system/xbin/mke2fs», «/system/xbin/mkfifo»,
«/system/xbin/mkfs.ext2», «/system/xbin/mkfs.vfat»,
«/system/xbin/mknod», «/system/xbin/mkswap», «/system/xbin/mktemp»,
«/system/xbin/modinfo», «/system/xbin/modprobe», «/system/xbin/more»,
«/system/xbin/mount», «/system/xbin/mountpoint», «/system/xbin/mpstat»,
«/system/xbin/mv», «/system/xbin/nanddump», «/system/xbin/nandwrite»,
«/system/xbin/nbd-client», «/system/xbin/netstat», «/system/xbin/nice»,
«/system/xbin/nohup», «/system/xbin/nslookup», «/system/xbin/ntpd»,
«/system/xbin/od», «/system/xbin/patch», «/system/xbin/pgrep»,
«/system/xbin/pidof», «/system/xbin/ping», «/system/xbin/pipe_progress»,
«/system/xbin/pkill», «/system/xbin/pmap», «/system/xbin/poweroff»,
«/system/xbin/printenv», «/system/xbin/printf», «/system/xbin/ps»,
«/system/xbin/pstree», «/system/xbin/pwd», «/system/xbin/pwdx»,
«/system/xbin/rdev», «/system/xbin/readlink», «/system/xbin/realpath»,
«/system/xbin/renice», «/system/xbin/reset», «/system/xbin/resize»,
«/system/xbin/rev», «/system/xbin/rm», «/system/xbin/rmdir»,
«/system/xbin/rmmod», «/system/xbin/route», «/system/xbin/run-parts»,
«/system/xbin/rx», «/system/xbin/sed», «/system/xbin/seq»,
«/system/xbin/setconsole», «/system/xbin/setserial»,
«/system/xbin/setsid», «/system/xbin/sh», «/system/xbin/sha1sum»,
«/system/xbin/sha256sum», «/system/xbin/sha3sum»,
«/system/xbin/sha512sum», «/system/xbin/sleep», «/system/xbin/sort»,
«/system/xbin/split», «/system/xbin/stat», «/system/xbin/strings»,
«/system/xbin/stty», «/system/xbin/sum», «/system/xbin/swapoff»,
«/system/xbin/swapon», «/system/xbin/sync», «/system/xbin/sysctl»,
«/system/xbin/tac», «/system/xbin/tail», «/system/xbin/tar»,
«/system/xbin/taskset», «/system/xbin/tee», «/system/xbin/telnet»,
«/system/xbin/telnetd», «/system/xbin/test», «/system/xbin/tftp»,
«/system/xbin/tftpd», «/system/xbin/time», «/system/xbin/timeout»,
«/system/xbin/top», «/system/xbin/touch», «/system/xbin/tr»,
«/system/xbin/traceroute», «/system/xbin/true», «/system/xbin/ttysize»,
«/system/xbin/tune2fs», «/system/xbin/umount», «/system/xbin/uname»,
«/system/xbin/uncompress», «/system/xbin/unexpand», «/system/xbin/uniq»,
«/system/xbin/unix2dos», «/system/xbin/unlzma», «/system/xbin/unlzop»,
«/system/xbin/unxz», «/system/xbin/unzip», «/system/xbin/uptime»,
«/system/xbin/usleep», «/system/xbin/uudecode», «/system/xbin/uuencode»,
«/system/xbin/vi», «/system/xbin/watch», «/system/xbin/wc»,
«/system/xbin/wget», «/system/xbin/which», «/system/xbin/whoami»,
«/system/xbin/xargs», «/system/xbin/xz», «/system/xbin/xzcat»,
«/system/xbin/yes»,
«/system/xbin/zcat»);
symlink(«libGLESv2.so», «/system/lib/libGLESv3.so»);
symlink(«logcat», «/system/bin/lolcat»);
symlink(«mksh», «/system/bin/sh»);
symlink(«mount.exfat», «/system/bin/fsck.exfat»,
«/system/bin/mkfs.exfat»);
symlink(«pigz», «/system/xbin/unpigz»);
symlink(«toolbox», «/system/bin/cat», «/system/bin/chcon»,
«/system/bin/chmod», «/system/bin/chown», «/system/bin/clear»,
«/system/bin/cmp», «/system/bin/cp», «/system/bin/date»,
«/system/bin/dd», «/system/bin/df», «/system/bin/dmesg»,
«/system/bin/du», «/system/bin/getenforce», «/system/bin/getevent»,
«/system/bin/getprop», «/system/bin/getsebool», «/system/bin/grep»,
«/system/bin/hd», «/system/bin/id», «/system/bin/ifconfig»,
«/system/bin/iftop», «/system/bin/insmod», «/system/bin/ioctl»,
«/system/bin/ionice», «/system/bin/kill», «/system/bin/ln»,
«/system/bin/load_policy», «/system/bin/log», «/system/bin/ls»,
«/system/bin/lsmod», «/system/bin/lsof», «/system/bin/md5»,
«/system/bin/mkdir», «/system/bin/mount», «/system/bin/mv»,
«/system/bin/nandread», «/system/bin/netstat»,
«/system/bin/newfs_msdos», «/system/bin/notify», «/system/bin/printenv»,
«/system/bin/ps», «/system/bin/r», «/system/bin/reboot»,
«/system/bin/renice», «/system/bin/restart», «/system/bin/restorecon»,
«/system/bin/rm», «/system/bin/rmdir», «/system/bin/rmmod»,
«/system/bin/route», «/system/bin/runcon», «/system/bin/schedtop»,
«/system/bin/sendevent», «/system/bin/setconsole»,
«/system/bin/setenforce», «/system/bin/setprop»,
«/system/bin/setsebool», «/system/bin/sleep», «/system/bin/smd»,
«/system/bin/start», «/system/bin/stop», «/system/bin/sync»,
«/system/bin/top», «/system/bin/touch», «/system/bin/umount»,
«/system/bin/uptime», «/system/bin/vmstat», «/system/bin/watchprops»,
«/system/bin/wipe»);

рекурсивное выставление прав папкам

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *