سؤال

ال إعداد جاي إنه أمر ممل للغاية، ويتضمن العديد من الجرار ومتغيرات البيئة.من شأنه أن يساعد في قابلية نقل المشروع كثيرًا إذا تمكنت من إضافته باعتباره تبعية عادية لـ 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

يمكنني بالطبع تنزيل تلك الجرار وتثبيتها.المشكلة ذات شقين:

  • يتطلب jai_imageio وعاءين؛
  • يتطلب jai_imageio تثبيت مكتبة أصلية وتعيين متغيرين للبيئة.

لم أجد طريقة لإنجاح هذا الأمر مع Maven.


يرى قراءة صور JCS_YCCK باستخدام ImageIO لسبب أنني أستخدم JAI.

هل كانت مفيدة؟

المحلول 5

ما فشلت في رؤيته هو أن تبعية JAI يجب تلبيتها فقط في وقت التشغيل، وبالتالي تأكدت من أن بيئة الإنتاج لديها إمكانية الوصول إلى JAI، من خلال تكوينها لـ Tomcat.

نصائح أخرى

لتجنب تنزيل الجرار وتثبيتها، يمكنك إضافة تبعية إلى مستودع الربيع.لذلك قم بتغيير التبعية العادية قليلاً:

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

ويجب أن يعمل الآن (يجعل جميع فئات الشمس متاحة 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

يوجد تطبيق "مستقل" لـ 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>

والتبعية:

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

يرى موقعها لمزيد من التفاصيل

تم تحديث PS بعد تعليق مفيد (تبعية أخرى من gitHub والتي لا تحتاج إلى إضافة هذا المستودع):

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

ستحتاج إلى تنزيل الجرار وتثبيتها في مستودعك المحلي المخضرم، أو خادم وكيل المستودع المحلي (Nexus/Artifactory).أعتقد أنه يمكنك استخدام مخضرم المنفذ المساعد للتحقق من وجود إعدادات البيئة.

ال رخصة لأن jai_imageio لا يسمح بذلك وزعت.

لقد نجح هذا بالنسبة لي:

<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، لذلك قامت بتثبيت الجرار المناسبة لي.لم أضطر حتى إلى تغيير الكود الخاص بي لاستخدام هذه القطعة الأثرية.

سيؤدي هذا إلى تشغيل التعليمات البرمجية الخاصة بك داخل IDE الخاص بك.ومع ذلك، إذا كنت تريد جرة قابلة للتنفيذ، فأنت بحاجة إلى استخدام البرنامج المساعد Maven Shade.يتم وصف استخدامه هنا و هنا.لاحظ الأسطر الإضافية في الرابط الثاني لأنها ضرورية.إليك الرمز الإضافي الذي يجب إدخاله في بومك:

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

لا أعرف ما هي كل تلك الإدخالات الإضافية، لكنها تجعل الجرة القابلة للتنفيذ تفعل ما تفعله في IDE.

يبدو أن عنوان url للمستودع الموجود في إجابة manunu قد تغير أو على الأقل تغير غير متاح مؤقتا, ، مما يتسبب في فشل البناء المخضرم.كبديل، يمكن استخدام عنوان 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>
<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

جرب هذا:

<dependency>
  <groupId>com.sun.media</groupId>
  <artifactId>jai_imageio</artifactId>
  <version>1.1</version>
  <type>pom</type>
</dependency>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top