在Maven中使用Java Advanced Imaging

Rob*_*anu 52 java maven-2 jai

JAI设置是相当繁琐,涉及多个罐子和环境变量.如果我可以将它添加为常规的Maven依赖项,它将有助于项目的可移植性.

我正在使用的POM片段是

<dependency>
  <groupId>com.sun.media</groupId>
  <artifactId>jai_imageio</artifactId>
  <version>1.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

而错误是

[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
Run Code Online (Sandbox Code Playgroud)

当然,我可以下载并安装这些罐子.问题是双重的:

  • jai_imageio需要两个罐子;
  • jai_imageio需要安装本机库并设置两个环境变量.

我还没有找到一种方法让这个与Maven一起工作.


请参阅使用ImageIO读取JCS_YCCK图像,因为我正在使用JAI.

小智 41

为了避免下载罐子并安装它们,您可以添加对弹簧回购的依赖.所以稍微改变正常依赖:

    <dependency>
        <groupId>javax.media.jai</groupId>
        <artifactId>com.springsource.javax.media.jai.core</artifactId>
        <version>1.1.3</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

并添加存储库声明:

    <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>
Run Code Online (Sandbox Code Playgroud)

它现在应该工作(它使所有的sun类可用javax.media.jai.*).看这里:

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

如有必要,您还可以添加编解码器依赖项...

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

  • 也许这在2011年有效,但现在已经没有了,这些东西就不存在了. (6认同)

man*_*una 13

有一个JAI-imageio的"独立"实现,没有jai_core的依赖.它不需要JAI安装到您的JDK和JRE,只需要单个Maven依赖.

在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>
Run Code Online (Sandbox Code Playgroud)

和依赖:

<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>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请访问其网站

PS在有用的注释之后更新(来自gitHub的另一个依赖项,不需要添加该存储库):

<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-core</artifactId>
    <version>1.3.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 事实证明 `&lt;repository&gt;` 部分可能已经过时,但是 [GitHub 页面自述文件有 &lt;dependency&gt; 不需要额外的存储库](https://github.com/stain/jai-imageio-核) (2认同)

Mik*_*ell 12

您将需要下载jar并将其安装在本地maven存储库或本地存储库代理服务器(Nexus/Artifactory)中.我认为您可以使用maven-enforcer-plugin来验证环境设置是否存在.

jai_imageio 的许可证不允许分发它.


Rob*_*anu 1

我没有看到 JAI 依赖项只需要在运行时得到满足,因此我通过为 Tomcat 配置 JAI 来确保生产环境可以访问 JAI。