2009-07-30 15 views
50

के साथ जावा उन्नत इमेजिंग का उपयोग JAI setup बहुत कठिन है, जिसमें कई जार और पर्यावरण चर शामिल हैं। यह परियोजना की पोर्टेबिलिटी को काफी मदद करेगा यदि मैं इसे नियमित मैवेन निर्भरता के रूप में जोड़ सकता हूं।मैवेन

पोम टुकड़ा मैं उपयोग कर रहा हूँ

<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 को मूल पुस्तकालय स्थापित करने की आवश्यकता है और दो पर्यावरण चर सेट किए जाने की आवश्यकता है।

मुझे इस काम को मेवेन के साथ बनाने का कोई तरीका नहीं मिला है।


कारण मैं जय उपयोग कर रहा हूँ के लिए Reading JCS_YCCK images using ImageIO देखें।

उत्तर

0

जो मैं देखने में असफल रहा था वह था कि जेए निर्भरता केवल रनटाइम पर संतुष्ट होने की आवश्यकता थी, और इसलिए मैंने यह सुनिश्चित किया कि उत्पादन पर्यावरण को जैक के लिए इसे कॉन्फ़िगर करके जेएआई तक पहुंच हो।

+0

महोदय, रन टाइम पर समस्याओं का सामना करना पड़ रहा है। टोमकैट कक्षा फ़ाइल का पता लगाने में असमर्थ है। मुझे कभी-कभी 'NoClassDefFoundError' मिलता है, उचित समाधान क्या है यानी टोमकैट को कॉन्फ़िगर कैसे करें ताकि यह हमेशा कक्षा परिभाषा प्राप्त कर सके? मैं इन 3 फाइलों का उपयोग कर रहा हूं 'जय कोडेक 1.1.3 जय कोर 1.1.3 जय इमेजियो 1.2' –

12

आपको जार डाउनलोड करने और उन्हें अपने स्थानीय मैवेन रिपोजिटरी, या स्थानीय रिपोजिटरी प्रॉक्सी सर्वर (नेक्सस/आर्टिफैक्टरी) में स्थापित करने की आवश्यकता होगी। मुझे लगता है कि आप maven-enforcer-plugin का उपयोग यह सत्यापित करने के लिए कर सकते हैं कि पर्यावरण सेटिंग्स वहां हैं।

licence jai_imageio के लिए यह distributed होने की अनुमति नहीं देता है।

+0

उत्तर के लिए धन्यवाद। मैं उससे डरता था, लेकिन मुझे लगता है कि मुझे इसके लिए अपने स्वयं के पीओएम बनाने की जरूरत है। –

+0

वैसे फाइलों के लिए पीओएम पहले से मौजूद है। http://mirrors.ibiblio.org/pub/mirrors/maven2/com/sun/media/jai_imageio/1.1/jai_imageio-1.1.pom इसमें jai_core की आवश्यक निर्भरता है। नकारात्मक प्रबंधन यह है कि वितरण प्रबंधन में downloadURL है। –

+0

यदि आप मेवेन सेंट्रल में अपनी परियोजना को तैनात करने से चिंतित हैं तो यह सही जवाब है। एमसी तीसरे पक्ष के भंडारों पर भरोसा करने की अनुमति नहीं देता है, जो यहां कुछ अन्य उत्तरों की पेशकश करते हैं। –

0

इस प्रयास करें:

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

पोम फ़ाइल में ज्यादा कोड नहीं है। –

41

जार donwloading और उन्हें स्थापित करने आप वसंत रेपो पर निर्भरता में जोड़ सकते हैं से बचने के लिए। तो थोड़ा सामान्य निर्भरता बदलने के लिए:

<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

+6

शायद यह 2011 में काम किया, लेकिन अब और नहीं, सामान सिर्फ वहां नहीं है। –

+1

यह सिर्फ मेरे लिए काम किया। – Greg

+0

में यह आवश्यक 'छवि' – mmcrae

13

वहाँ जय-ImageIO की एक "स्टैंडअलोन" कार्यान्वयन, jai_core के लिए उनकी निर्भरता के बिना है। इसे आपके जेडीके और जेआरई में केवल एक मैवेन निर्भरता की आवश्यकता नहीं है।

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 देखें

पुनश्च एक उपयोगी टिप्पणी (GitHub से दूसरे निर्भरता जो करता है के बाद अपडेट किया गया उस भंडार को जोड़ने की आवश्यकता नहीं है):

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

'' का पता चला है कि भाग पुराना हो सकता है, लेकिन [गिटहब पेज रीडमे में है जिसमें अतिरिक्त रेपो की आवश्यकता नहीं है] (https://github.com/stain/jai-imageio-core) – mmcrae

+0

यह आयात 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 पर निर्भर करता है, तो यह मेरे लिए उचित जार स्थापित। इस कलाकृति का उपयोग करने के लिए मुझे अपना कोड भी बदलना नहीं था।

यह आपके कोड को आपके आईडीई में काम करेगा। हालांकि, अगर आप एक निष्पादन योग्य जार चाहते हैं, तो आपको मेवेन छाया प्लगइन का उपयोग करने की आवश्यकता है। इसका उपयोग here और here वर्णित है। दूसरे लिंक में अतिरिक्त लाइनों पर ध्यान दें क्योंकि वे आवश्यक हैं। यहाँ अपने पोम में जाने के लिए अतिरिक्त कोड है:

<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 में करता है बनाते हैं।

+0

जब तक आपको अपनी परियोजना में जियोटूल लाइब्रेरी की आवश्यकता नहीं होती है, तब तक इसे एक काम के रूप में निर्भरता के रूप में जोड़कर जै-कोडेक खराब लगता है उपाय। –

1

मैनुनू के उत्तर में रिपोजिटरी यूआरएल बदल गया है या कम से कम अस्थायी रूप से अनुपलब्ध है, जो मेवेन विफल होने का कारण बनता है। एक विकल्प के रूप के लिए इस यूआरएल इस्तेमाल किया जा सकता:

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 के उत्तर से Github साइट को देखते हैं तो https://github.com/stain/jai-imageio-core आप रीडमे में निर्भरता देखते हैं , जिसे रेपो की आवश्यकता नहीं है (मैंने इसका परीक्षण किया) – 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> 

यह मेरे लिए काम किया। अनुमान वसंत जार पर भरोसा कर सकता है, इसे जावा की तरह नहीं जाना चाहिए