web-dev-qa-db-ja.com

Java Mavenでの高度なイメージング

JAI setup は非常に退屈で、複数のjarと環境変数が関係します。通常のMaven依存関係としてプロジェクトを追加できれば、プロジェクトの移植性を大幅に支援します。

私が使用しているPOMスニペットは

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

エラーは

[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

もちろん、これらのjarをダウンロードしてインストールできます。問題は2つあります。

  • jai_imageioには2つのjarが必要です。
  • jai_imageioでは、ネイティブライブラリをインストールし、2つの環境変数を設定する必要があります。

Mavenでこの作業を行う方法を見つけていません。


JAIを使用している理由については、 ImageIOを使用したJCS_YCCKイメージの読み取り を参照してください。

51
Robert Munteanu

確認できなかったのは、JAI依存関係は実行時にのみ満たす必要があるため、Tomcat用に構成することにより、実稼働環境がJAIにアクセスできることを確認したことです。

1
Robert Munteanu

Jarのダウンロードとインストールを回避するために、springリポジトリに依存関係を追加できます。したがって、通常の依存関係をわずかに変更します。

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

リポジトリ宣言を追加します。

    <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>

これで動作するはずです(すべてのSunクラスがjavax.media.jai。*で利用可能になります)。こちらをご覧ください:

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

必要に応じてコーデックの依存関係を追加することもできます...

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

41
Lol

Jai_coreに依存しない、JAI-imageioの「スタンドアロン」実装があります。 JDKとJREにJAIをインストールする必要はなく、Mavenの依存関係が1つだけ必要です。

Mavenで、リポジトリを追加します。

<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>

および依存関係:

<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>

詳細については its site をご覧ください

PS有用なコメント(そのリポジトリを追加する必要のないgitHubからの別の依存関係)の後に更新:

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

Jarをダウンロードして、ローカルのMavenリポジトリまたはローカルリポジトリプロキシサーバー(Nexus/Artifactory)にインストールする必要があります。 maven-enforcer-plugin を使用して、環境設定が存在することを検証できると思います。

Jai_imageioの ライセンス では、 分散 を使用できません。

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

リポジトリ宣言を追加します。

<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>

これは私のために働いた。推測はSpring Jarに依存することができますが、Javaがしたように動くべきではありません

2
Swarit Agarwal

これは私のために働いた:

<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>

Gt-coverageはjai_imageioに依存しているようで、適切なjarをインストールしました。このアーティファクトを使用するためにコードを変更する必要さえありませんでした。

これにより、IDE内でコードが機能します。ただし、実行可能jarが必要な場合は、Maven Shadeプラグインを使用する必要があります。その使用法は here および here で説明されています。 2番目のリンクの余分な行は必要なので注意してください。 pomに追加するコードは次のとおりです。

<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>

これらの追加のマニフェストエントリが何であるかはわかりませんが、実行可能jarによってIDEで実行されることを実行できます。

2
GregNash

Manunuの答えにあるリポジトリのURLが変更されたか、少なくとも一時的に利用できないようであるため、Mavenビルドが失敗します。別の方法として、次のURLを使用できます。

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>
2
Chris2M

これを試して:

<dependency>
  <groupId>com.Sun.media</groupId>
  <artifactId>jai_imageio</artifactId>
  <version>1.1</version>
  <type>pom</type>
</dependency>
0
I-yorn-man

Pomファイルにこの依存関係を追加します。

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

from https://openmeetings.Apache.org/openmeetings-web/dependencies.html

0
edilon Junior