2009-07-30 14 views
50

​​は非常に面倒で、複数のjarと環境変数が含まれています。私はそれを通常のMaven依存として追加することができれば、プロジェクトの移植性をかなり向上させるでしょう。MavenでのJava Advanced Imagingの使用

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

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

あるとエラーが、私は、もちろん、ダウンロードして、それらのjarファイルをインストールすることができます

[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 

です。問題は2つあります。

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

私はMavenでこの作業を行う方法が見つかりませんでした。


私がJAIを使用している理由のためにReading JCS_YCCK images using ImageIOを参照してください。

答えて

0

私が見落としたことは、実行時にのみJAI依存性を満たす必要があることでした。したがって、Tomcat用に構成することによって、実動環境がJAIにアクセスできることを確認しました。

+0

さん、実行時に問題に直面しています。 tomcatがクラスファイルを見つけることができません。私はときどき 'NoClassDefFoundError'を取得します。適切な解決策は何ですか、つまりTomcatを設定して常にクラス定義を取得する方法は何ですか?これらの3つのファイルを使用しています。 'jai codec 1.1.3 jai core 1.1.3 jai imageio 1.2' –

12

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

jai_imageioのlicenceは、それがdistributedであることを許可しません。

+0

答えをありがとう。私はそれを恐れていましたが、自分のPOMを作成する必要があると思います。 –

+0

ファイルのPOMがすでに存在します。 http://mirrors.ibiblio.org/pub/mirrors/maven2/com/sun/media/jai_imageio/1.1/jai_imageio-1.1.pom jai_coreに必要な依存関係はあります。欠点は、配布管理のdownloadURLがあることです。 –

+0

プロジェクトをMaven Centralにデプロイすることに関心がある場合は、これが正しい答えです。 MCは、他の回答のいくつかが提供する第三者のリポジトリに頼ることを認めていない。 –

0

はこれを試してみてください。

<dependency> 
    <groupId>com.sun.media</groupId> 
    <artifactId>jai_imageio</artifactId> 
    <version>1.1</version> 
    <type>pom</type> 
</dependency> 
+2

pomファイルのコードはあまりありません。 –

41

あなたは春のレポに依存関係を追加することができますjarをdonwloadingし、それらをインストールしないようにします。 (それはすべての日クラス利用可能javax.media.jaiします*。)

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

そして、それが機能するようになりました。だから、少し通常の依存関係を変更:

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

とリポジトリ宣言を追加します。ここを参照してください:

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

必要な場合にも、JAI-ImageIOでの "スタンドアロン" 実装はjai_coreへの依存関係がなくて、あり...

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

+6

これは2011年にはうまくいったかもしれませんが、もうこれ以上のことはありません。 –

+1

それはちょうど私のために働いた。 – Greg

+0

これは必須の 'imageio'を含んでいないようです – mmcrae

13

をコーデック依存関係を追加することができます。 JDKとJREにJAIインストールを必要とせず、単一のMaven依存関係のみが必要です。Mavenので

、それはリポジトリの追加:詳細

PSがないのGitHubから有益なコメント(別の依存関係の後に更新のための

<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

<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>com.github.jai-imageio</groupId> 
    <artifactId>jai-imageio-core</artifactId> 
    <version>1.3.0</version> 
</dependency> 
+1

は ' 'と判明しましたが、期限切れかもしれませんが、[GitHubページのREADMEには余分なレポを必要としないがあります。] – mmcrae

+0

これはimport javax.media.jai.ColorCubeを使って私を助けません.... –

2

これは私の仕事:

<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-カバレッジがjai_imageioに依存しているようですので、それは私のために適切なjarファイルをインストールしました。私はこのアーティファクトを使用するためにコードを変更する必要はありませんでした。

これは、あなたのIDE内で動作するコードを取得します。ただし、実行可能なjarが必要な場合は、Maven Shadeプラグインを使用する必要があります。その使用はherehereと記載されています。 2番目のリンクの余分な行は必要なので注意してください。ここにあなたのポンポンに行くために余分なコードは次のとおりです。

<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で何をやるにします。

+0

あなたのプロジェクトでgeotoolsライブラリを必要としない限り、jai-codecを得るための回避策として依存関係を追加するのは悪い溶液。 –

1

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

あなたはあなたが最高であることを知りたいです – mmcrae

+0

実際に@manunuの回答https://github.com/stain/jai-imageio-coreからGithubサイトを見るとREADMEに依存していますそれはレポを必要としません(私はそれをテストしました) – mmcrae

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

これは私のために働いたが。推測することができます春の瓶には、Javaのように移動してはならない