создание папки META-INF / services в Eclipse - PullRequest
11 голосов
/ 16 июня 2011

Я пытаюсь создать расширяемое приложение на Java и решил использовать SPI.В соответствии с этим учебником , которому я следую, я должен создать определенный файл в META-INF/services в моей банке, но не знаю как.Я знаю, как создать jar с META-INF, но не могу найти способ создать папку services и определенный файл в этой папке.(Я использую Eclipse)

Спасибо за вашу помощь.

Ответы [ 2 ]

11 голосов
/ 16 июня 2011

Поскольку в руководстве дано указание создать его вручную, а не с помощью ant, maven или других инструментов сборки, просто создайте папку с именем META-INF на корневом уровне с подпапкой с именем услуги и файл с именем MANIFEST.MF .

Я не уверен, как вы планируете выполнять файл JAR, сейчас вы можете просто вставить эту строку в MANIFEST.MF:

Manifest-Version: 1.0

Для вашей папки служб вам нужно создать файл с именем com.example.dictionary.spi.Dictionary со следующим однострочным содержимым, как указано в руководстве: -

com.example.dictionary.GeneralDictionary

FYI - META-INF является внутренним каталогом Java meta . Как правило, вы хотите положиться на свой инструмент для упаковки, такой как ant или maven, для создания содержимого папки META-INF, а не делать это самостоятельно.

Подробные сведения о содержимом папки META-INF здесь : -

The following files/directories in the META-INF directory are recognized and interpreted by the Java 2 Platform to configure applications, extensions, class loaders and services:

    MANIFEST.MF

The manifest file that is used to define extension and package related data.

    INDEX.LIST

This file is generated by the new "-i" option of the jar tool, which contains location information for packages defined in an application or extension.  It is part of the JarIndex implementation and used by class loaders to speed up their class loading process.

    x.SF

The signature file for the JAR file.  'x' stands for the base file name.

    x.DSA

The signature block file associated with the signature file with the same base file name. This file stores the digital signature of the corresponding signature file.

    services/
5 голосов
/ 16 июня 2011

Предполагая, что вы создаете свой файл jar с помощью Apache Ant , вам необходимо добавить набор файлов metainf, или, что еще лучше, использовать директиву служб, например,

<jar jarfile="pinky.jar">
  <fileset dir="build/classes"/>
  <service type="javax.script.ScriptEngineFactory"
           provider="org.acme.PinkyLanguage"/>
</jar>

Если вы неНе используйте Apache Ant, тогда вам нужно добавить файл в ваш jar

jar -uf jarfile.jar META-INF/services/name.of.general.service

, который содержит имя реализации сервиса

com.mycorp.services.Fooservice

Если вы генерируете файл JAR с помощьюВ Eclipse "Экспорт файла Runnable Jar" в рамках проекта выберите "сохранить как ANT-скрипт", а затем измените скрипт ant для упаковки в службы, как описано выше.

...