La configuration de JAI est assez fastidieuse, impliquant de multiples jars et variables d’environnement. Cela faciliterait beaucoup la portabilité du projet si je pouvais l’append en tant que dépendance régulière de Maven.
L’extrait de code POM que j’utilise est
com.sun.media jai_imageio 1.1
et les erreurs sont
[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
Je peux bien sûr télécharger et installer ces pots. Le problème est double:
Je n’ai pas trouvé le moyen de faire ce travail avec Maven.
Voir Lire des images JCS_YCCK en utilisant ImageIO pour la raison que j’utilise JAI.
Pour éviter de charger les bocaux et de les installer, vous pouvez append une dépendance au repo du spring. Alors modifiez légèrement la dépendance normale:
javax.media.jai com.springsource.javax.media.jai.core 1.1.3
et append une déclaration de référentiel:
com.springsource.repository.bundles.external SpringSource Enterprise Bundle Repository - External Bundle Releases http://repository.springsource.com/maven/bundles/external
Et ça devrait marcher maintenant (cela rend toutes les classes soleil disponibles javax.media.jai. *). Vois ici:
Vous pouvez également append la dépendance au codec si nécessaire …
Il existe une implémentation “autonome” de JAI-imageio, sans dépendances à jai_core. Il n’a pas besoin d’une installation JAI sur votre JDK et JRE, mais uniquement sur une seule dépendance Maven.
Dans Maven, ajoutez son repository:
false mygrid-repository myGrid Repository http://www.mygrid.org.uk/maven/repository
et dépendance:
net.java.dev.jai-imageio jai-imageio-core-standalone 1.2-pre-dr-b04-2014-09-13
Voir son site pour plus de détails
PS Mis à jour après un commentaire utile (une autre dépendance de gitHub qui n’a pas besoin d’append ce repository):
com.github.jai-imageio jai-imageio-core 1.3.0
Vous devrez télécharger les fichiers JAR et les installer dans votre référentiel Maven local ou sur le serveur proxy du référentiel local (Nexus / Artifactory). Je pense que vous pouvez utiliser le plug-in maven-enforcer pour valider que les parameters d’environnement sont présents.
La licence de jai_imageio ne permet pas sa dissortingbution .
Cela a fonctionné pour moi:
org.geotools gt-coverage 2.7.4 osgeo Open Source Geospatial Foundation Repository http://download.osgeo.org/webdav/geotools/
Il semble que gt-coverage dépend de jai_imageio, donc il a installé les fichiers appropriés pour moi. Je n’ai même pas eu à changer mon code pour utiliser cet artefact.
Cela permettra à votre code de fonctionner dans votre IDE. Cependant, si vous souhaitez un fichier jar exécutable, vous devez utiliser le plug-in Maven Shade. Son utilisation est décrite ici et ici . Notez les lignes supplémentaires dans le deuxième lien car elles sont nécessaires. Voici le code supplémentaire à utiliser dans votre pom:
org.apache.maven.plugins maven-shade-plugin 1.3.1 package shade com.companyname.packagename.MainClassName Java Advanced Imaging Image I/O Tools 1.1 Sun Microsystems, Inc. com.sun.media.imageio 1.1 Sun Microsystems, Inc. com.sun.media.imageio
Je ne sais pas ce que sont toutes ces entrées de manifeste supplémentaires, mais elles obligent mon exécutable à faire ce qu’il fait dans l’EDI.
L’URL du référentiel dans la réponse de manunu semble avoir changé ou au moins est temporairement indisponible , ce qui provoque l’échec de la construction de maven. En alternative, l’URL suivante peut être utilisée:
http://build.mygrid.org.uk/maven/repository
false mygrid-repository myGrid Repository http://build.mygrid.org.uk/maven/repository
javax.media.jai com.springsource.javax.media.jai.core 1.1.3
et append une déclaration de référentiel:
com.springsource.repository.bundles.external SpringSource Enterprise Bundle Repository - External Bundle Releases http://repository.springsource.com/maven/bundles/external
Cela a fonctionné pour moi. Devinez peut compter sur Spring Jar, il ne devrait pas bouger comme java l’a fait
Ce que j’ai échoué à voir, c’est que la dépendance JAI ne devait être satisfaite qu’au moment de l’exécution. Je me suis donc assuré que l’environnement de production avait access à JAI, en le configurant pour Tomcat.
essaye ça:
com.sun.media jai_imageio 1.1 pom