Frage

Die JAI-Setup ist ziemlich mühsam, mehrere Gläser und Umgebungsvariablen beteiligt sind. Es wäre das Projekt der Portabilität sehr viel helfen, wenn ich es als reguläres Maven Abhängigkeit hinzufügen könnte.

Der POM-Schnipsel Ich verwende ist

<dependency>
  <groupId>com.sun.media</groupId>
  <artifactId>jai_imageio</artifactId>
  <version>1.1</version>
</dependency>

und die Fehler

[INFO] ------------------------------------------------------------------------                               
[ERROR] BUILD ERROR                                                                                             
[INFO] ------------------------------------------------------------------------                                 
[INFO] Failed to resolve artifact.                                                                              

Missing:   
----------
1) com.sun.media:jai_imageio:jar:1.1
2) javax.media:jai_core:jar:1.1.3

Ich kann natürlich, herunterladen und diese Gläser installieren. Das Problem ist ein zweifacher:

  • jai_imageio erfordert zwei Gläser;
  • jai_imageio erfordert eine native Bibliothek installiert und zwei Umgebungsvariablen werden eingestellt werden.

Ich habe einen Weg gefunden, diese Arbeit mit Maven zu machen.


Siehe Lesen JCS_YCCK Bilder mit ImageIO aus dem Grund, ich bin mit JAI.

War es hilfreich?

Lösung 5

Was ich nicht war zu sehen, dass die JAI Abhängigkeit zur Laufzeit nur zufrieden zu sein braucht, und deshalb machte ich sicher, dass die Produktionsumgebung Zugang zu JAI hat, indem sie es für Tomcat konfigurieren.

Andere Tipps

Um zu verhindern, die Gläser donwloading und sie zu installieren Sie eine Abhängigkeit von der Feder Repo hinzufügen können. So die leicht normale Abhängigkeit ändern:

    <dependency>
        <groupId>javax.media.jai</groupId>
        <artifactId>com.springsource.javax.media.jai.core</artifactId>
        <version>1.1.3</version>
    </dependency>

und fügen Sie eine Repository-Deklaration:

    <repository>
        <id>com.springsource.repository.bundles.external</id>
        <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
        <url>http://repository.springsource.com/maven/bundles/external</url>
    </repository>

Und es sollte jetzt funktionieren (es alle Sonne Klassen javax.media.jai macht. *). Siehe hier:

http: / /ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.javax.media.jai.core&version=1.1.3

Sie können auch die Codec-Abhängigkeit bei Bedarf hinzufügen ...

http: / /ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.javax.media.jai.codec&version=1.1.3

Es gibt eine „Standalone“ Implementierung von JAI-ImageIO, ohne Abhängigkeiten jai_core. Es braucht nicht JAI Installation JDK und JRE, nur einzelne Maven Abhängigkeit.

In Maven, fügen Sie es Repository:

<repository>
    <releases />
    <snapshots>
        <enabled>false</enabled>
    </snapshots>
    <id>mygrid-repository</id>
    <name>myGrid Repository</name>
    <url>http://www.mygrid.org.uk/maven/repository</url>
</repository>

und Abhängigkeit:

<dependency>
    <groupId>net.java.dev.jai-imageio</groupId>
    <artifactId>jai-imageio-core-standalone</artifactId>
    <version>1.2-pre-dr-b04-2014-09-13</version>
</dependency>

Siehe Standort für weitere Details

PS nach einem nützlichen Kommentar (eine andere Abhängigkeit von GitHub, die brauchen nicht, dass Repository hinzugefügt) Aktualisiert:

<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-core</artifactId>
    <version>1.3.0</version>
</dependency>

Sie gehen zu müssen, die Gläser zum Herunterladen und installieren Sie sie in Ihrer lokalen Maven-Repository oder lokalen Repository-Proxy-Server (Nexus / Artifactory). Ich glaube, Sie können Maven-Enforcer-Plugin dass die Umwelt zu validieren Einstellungen sind.

Die Lizenz jai_imageio nicht zulässt, dass es verteilt sein.

Das funktioniert für mich:

<dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-coverage</artifactId>
    <version>2.7.4</version>
</dependency>

<repository>
    <id>osgeo</id>
    <name>Open Source Geospatial Foundation Repository</name>
    <url>http://download.osgeo.org/webdav/geotools/</url>
</repository>

Es scheint, dass gt-Berichterstattung über jai_imageio abhängt, so installiert er die entsprechenden Gläser für mich. Ich habe nicht einmal zu meinem Code zu ändern, um diesen Artefakt zu verwenden.

Dies wird Ihren Code arbeitet in Ihrem IDE bekommen. Wenn Sie jedoch eine ausführbare jar wollen, dann müssen Sie das Maven Shade-Plugin verwenden. Seine Verwendung ist beschrieben hier und hier . Beachten Sie die zusätzlichen Zeilen in der zweiten Verbindung, weil sie notwendig sind. Hier ist der zusätzliche Code in Ihren pom zu gehen:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.3.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <manifestEntries>
                            <Main-Class>com.companyname.packagename.MainClassName</Main-Class>
                            <Specification-Title>Java Advanced Imaging Image I/O Tools</Specification-Title>
                            <Specification-Version>1.1</Specification-Version>
                            <Specification-Vendor>Sun Microsystems, Inc.</Specification-Vendor>
                            <Implementation-Title>com.sun.media.imageio</Implementation-Title>
                            <Implementation-Version>1.1</Implementation-Version>
                            <Implementation-Vendor>Sun Microsystems, Inc.</Implementation-Vendor>
                            <Extension-Name>com.sun.media.imageio</Extension-Name>
                        </manifestEntries>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

Ich weiß nicht, was diese alles extra manifest Einträge vorhanden sind, aber sie machen meine ausführbaren jar tun, was sie in der IDE.

Das Repository-URL in manunu Antwort scheint sich geändert zu haben oder zumindest vorübergehend nicht verfügbar , die die Maven-Build fehlschlägt. Als Alternative kann die folgende URL verwendet werden:

http://build.mygrid.org.uk/maven/repository

<repository>
   <releases />
   <snapshots>
      <enabled>false</enabled>
   </snapshots>
   <id>mygrid-repository</id>
   <name>myGrid Repository</name>
   <url>http://build.mygrid.org.uk/maven/repository</url>
</repository>
<dependency>
    <groupId>javax.media.jai</groupId>
    <artifactId>com.springsource.javax.media.jai.core</artifactId>
    <version>1.1.3</version>
</dependency>

und fügen Sie eine Repository-Deklaration:

<repository>
    <id>com.springsource.repository.bundles.external</id>
    <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
    <url>http://repository.springsource.com/maven/bundles/external</url>
</repository>

Das funktionierte für mich. Raten Sie können auf Frühling Jar verlassen, sollte es nicht wie Java bewegen tat

versuchen Sie dies:

<dependency>
  <groupId>com.sun.media</groupId>
  <artifactId>jai_imageio</artifactId>
  <version>1.1</version>
  <type>pom</type>
</dependency>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top