Domanda

Sto cercando di creare un'app estensibile in Java e ho scelto di usare SPI. Secondo questo Tutorial Sto seguendo, dovrei creare un file specifico in META-INF/services Nel mio barattolo, ma non so come. So come creare un barattolo con META-INF, ma non riesco a trovare un modo per creare il services cartella e file particolare in questa cartella. (Sto usando Eclipse)

Grazie per l'aiuto.

È stato utile?

Soluzione

Dal momento che il tutorial sta istruendo a crearlo manualmente anziché usare la formica o il maven o altri strumenti di build, quindi creare una cartella denominata Meta-inf a livello di radice con un sottocartella chiamato Servizi e un file chiamato Manifest.mf.

Non sono sicuro di come prevedi di eseguire il tuo file jar, per ora puoi semplicemente mettere questa riga nel tuo MANIFEST.MF:

Manifest-Version: 1.0

Per la cartella dei tuoi servizi, è necessario creare un file denominato com.example.dictionary.spi.Dictionary Con il seguente contenuto di una riga come menzionato nel tutorial:-

com.example.dictionary.GeneralDictionary

PER TUA INFORMAZIONE - Meta-inf è un Java interno meta directory. In generale, vuoi fare affidamento sul tuo strumento di imballaggio come Ant o Maven per costruire il contenuto della cartella Meta-INF piuttosto che farlo da solo.

Puoi vedere i dettagli sul contenuto della cartella Meta-INF qui:-

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/

Altri suggerimenti

Supponendo che tu stia costruendo il tuo File jar con la formica di Apache, è necessario aggiungere un set di file Metainf o, meglio ancora, utilizzare una direttiva sui servizi come così

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

Se non usi la formica di Apache, devi aggiungere un file al tuo barattolo

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

che contiene il nome dell'implementazione del servizio

com.mycorp.services.Fooservice

Se stai generando il file JAR utilizzando "Runnable File Export" di Eclipse sotto il progetto, selezionare "Salva come script di formiche" e quindi modificare lo script di Ant per imballare i servizi come descritto sopra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top