प्लेटफार्म: इंटेलीज सामुदायिक संस्करण 10.0.3
एसडीके: jdk1.6.0_21
OS: विंडोज 7
इसलिए इंटेलीज के साथ मेरी एक अजीब स्थिति है जिसने मुझे पूरी तरह से रोक दिया है। मैं एक Maven प्रोजेक्ट सेटअप करता हूं और pom.xml फ़ाइल में निर्भरता के रूप में log4j जोड़ता हूं। IDEA निरीक्षण ठीक चलता है और मेरी इकाई सभी संकलन और रन का परीक्षण करती है।
मैंने तब अपने स्थानीय मावेन रिपॉजिटरी में hunnysoft की jmime लाइब्रेरी को mvan install: इंस्टॉल-फाइल को निम्न प्रकार से जोड़ा।
mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar
मावेन ने जार फ़ाइल को मेरे स्थानीय भंडार में ठीक-ठाक स्थापित किया।
मैं तब IntelliJ की सेटिंग में गया => Maven => रिपॉजिटरी सर्विसेज और मेरी स्थानीय रिपॉजिटरी अपडेट किया (ताकि IntelliJ रिपॉजिटरी सामग्री को फिर से खोज लेगा)।
अंत में, मैंने अपनी pom.xml फ़ाइल में निम्न निर्भरता जोड़ी (log4j निर्भरता के ठीक ऊपर)।
<dependency>
<groupId>jmime</groupId>
<artifactId>jmime</artifactId>
<version>3.1.1e</version>
</dependency>
अब मैं एक नया वर्ग बनाता हूं:
package com.stackoverflow.question;
import org.apache.log4j.Logger;
import com.hunnysoft.jmime.ByteString;
import com.hunnysoft.jmime.Field;
import com.hunnysoft.jmime.FieldBody;
public class StackOverflowQuestion {
public Field create(String name, String text) {
Logger.getLogger(getClass()).debug("create entered");
FieldBody body = new FieldBody();
body.setText(new ByteString(text));
Field field = new Field();
field.setFieldName(name);
field.setFieldBody(body);
return field;
}
}
अब अजीब के लिए। IntelliJ का इरादा तंत्र उठाता है और मावेन पोम फ़ाइल में लॉगर आयात को ठीक पहचानता है। हालाँकि, सभी ह्युनीसॉफ्ट आयातों के लिए यह रिपोर्ट करते हैं: "प्रतीक का निर्धारण नहीं कर सकता 'बाइटस्ट्रिंग / फील्ड / फील्डबॉडी'", BUT Build => संकलन 'StackOverflowQuestion.java' सही ढंग से संकलित करता है और इस वर्ग के लिए बनाई गई इकाई परीक्षा मैं ठीक चलता है (हालाँकि इरादे एक समस्या क्षेत्र के रूप में () बनाने के लिए कॉल को चिह्नित करते हैं।
तो कहीं न कहीं, IntelliJ इरादा सबसिस्टम के लिए jmime.jar फ़ाइल को अनदेखा कर रहा है। मैं उलझन में हूँ क्योंकि log4j निर्भरता ठीक काम करती है और सब कुछ संकलित करता है और ठीक चलता है। F12 ("गो टू डिक्लेरेशन") लकड़हारा आयात पर काम करता है, लेकिन सभी jmime आयात पर टूट जाता है।
ओह, एक और बात, अगर मैं "प्रोजेक्ट्स" विंडो में "संकुल" दृश्य पर जाता हूं, तो "com.hunnysoft.jmime" पैकेज दिखाई देता है और मैं उन सभी वर्गों को देख सकता हूं जिन्हें मैंने "लाइब्रेरी" के तहत कोड स्निपेट में आयात किया था। । Pom.xml फ़ाइल से उपरोक्त निर्भरता को हटाने से यह पैकेज गायब हो जाता है और संकलन टूट जाता है।
ऐसा प्रतीत होता है कि निरीक्षण का वर्गपथ टूट गया है, लेकिन सेटिंग में कहीं भी इसके लिए कोई सेटिंग नहीं दिखती है => इरादे | कंपाइलर क्षेत्र (ऐसा नहीं है कि मुझे ऐसी किसी भी सेटिंग की उम्मीद थी, मेरा मानना है कि IDEA को पहले से ही pom फ़ाइल और JDK के आधार पर सही क्लासपैथ पता होना चाहिए)।
एक अंतिम प्रयोग के रूप में मैंने एक नया मानक J2SE एप्लिकेशन प्रोजेक्ट (बिना मावेन का उपयोग किए) बनाया और jmime.jar फ़ाइल को सीधे अपने पुस्तकालयों में से एक के रूप में प्रोजेक्ट में जोड़ा। मैं इस नई परियोजना में उपरोक्त वर्णित समस्याओं के समान है।
यहाँ jmime जार फ़ाइल से MANIFEST.MF है।
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.4
Created-By: 10.0-b23 (Sun Microsystems Inc.)
Name: com/hunnysoft/jmime/
Sealed: true
Specification-Title: Hunny JMIME
Specification-Version: 3.1.1
Specification-Vendor: Hunny Software, Inc.
Implementation-Title: com.hunnysoft.jmime
Implementation-Version: 3.1.1E
Implementation-Vendor: Hunny Software, Inc.
मुझे इस जार फ़ाइल में कुछ भी असामान्य नहीं दिख रहा है।
मेरा सबसे अच्छा अनुमान है कि शायद समस्या एक लापता निर्भरता मुद्दा हो सकती है। लेकिन AFAIK jmime माना जाता है कि वह स्वयं निहित है (JarAnalyzer कुछ भी नहीं करता है, लेकिन मुझे यकीन नहीं है कि यह निर्भरता जार गायब है)।
तो, किसी के पास कोई आईडिया है?