java - IntelliJ পরিদর্শন "প্রতীক সমাধান করতে পারে না" কিন্তু এখনও কোড কম্পাইল দেয়




maven intellij-idea (20)

প্ল্যাটফর্ম: IntelliJ কমিউনিটি সংস্করণ 10.0.3
এসডিকে: jdk1.6.0_21
ওএস: উইন্ডোজ 7

তাই আমার কাছে ইন্টেলিজের সাথে একটি অদ্ভুত পরিস্থিতি রয়েছে যা আমাকে সম্পূর্ণভাবে স্টাম্প করেছে। আমি একটি Maven প্রকল্প সেট আপ এবং pom.xml ফাইল একটি নির্ভরতা হিসাবে log4j যোগ করুন। IDEA পরিদর্শন জরিমানা চালানো এবং আমার ইউনিট পরীক্ষা সমস্ত কম্পাইল এবং চালান।

আমি এমভিএন ইন্সটল করে আমার স্থানীয় মেনন রিপোজিটরিতে হানিসফট এর জ্যামাইম লাইব্রেরি যোগ করেছি: ইনস্টল-ফাইলে নিম্নরূপ।

mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar

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 এর অভিপ্রায় প্রক্রিয়াটি আপলোড করে এবং ম্যানেন পোম ফাইলটিতে লগার আমদানিটি ঠিক করে দেয়। যাইহোক, Hunnysoft সমস্ত আমদানি করে এটি রিপোর্ট করে: "বাইট স্ট্রিং / ফিল্ড / ফিল্ডবডি" চিহ্নটি সমাধান করতে পারে না, তবে Build => Compile 'StackOverflowQuestion.java' সবকিছু সঠিকভাবে কম্পাইল করে এবং আমি এই ক্লাসের জন্য তৈরি ইউনিট পরীক্ষাটি ভালোভাবে চালায় (যদিও উদ্দেশ্যগুলি একটি সমস্যা এলাকা হিসাবে তৈরি করতে কলটিকে চিহ্নিত করে)।

সুতরাং কোথাও, কোনভাবে IntelliJ ইচ্ছার সাব-সিস্টেমের জন্য jmime.jar ফাইলটি উপেক্ষা করছে। আমি বিভ্রান্ত কারণ log4j নির্ভরতা জরিমানা কাজ করে এবং সবকিছু কম্পাইল এবং জরিমানা রান। F12 ("ঘোষণায় যান") লগার আমদানিে কাজ করে, তবে সমস্ত জেমিইম আমদানিতে বিরতি দেয়।

ওহ, এক অন্য জিনিস, যদি আমি "প্রকল্প" উইন্ডোতে "প্যাকেজ" ভিউতে যান তবে "com.hunnysoft.jmime" প্যাকেজ প্রদর্শিত হবে এবং আমি "লাইব্রেরি" এর অধীনে উপরের কোড স্নিপেটে আমদানি করা সমস্ত ক্লাস দেখতে পাব । Pom.xml ফাইল থেকে উপরের নির্ভরতাটি মুছে ফেলার ফলে এই প্যাকেজটি অদৃশ্য হয়ে যায় এবং সংকলনটি বিরত হয়।

মনে হচ্ছে যে পরিদর্শনের ক্লাসপথটি ভাঙা হয়েছে, তবে সেটিংস => অভিপ্রায়গুলির মধ্যে যেকোন জায়গায় এটির জন্য একটি সেটিং বলে মনে হচ্ছে না। কম্পাইলার এলাকা (আমি যে কোনও সেটিংস আশা করি না, আমি বিশ্বাস করি আইডিইএ পাম ফাইল এবং জেডিকে ভিত্তিক সঠিক ক্লাসপথটি ইতিমধ্যেই জানা উচিত)।

চূড়ান্ত পরীক্ষা হিসাবে আমি একটি ব্র্যান্ড নতুন স্ট্যান্ডার্ড 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 কিছু সঙ্গে আসে না, কিন্তু একটি নির্ভরতা জার অনুপস্থিত যদি আমি নিশ্চিত না)।

সুতরাং, কেউ কি কোন আইডিইএ আছে?


  1. ওপেন সেটিংস"
  2. "Maven" জন্য অনুসন্ধান করুন
  3. "মাভেন" এর অধীনে "অবহিত ফাইল" ক্লিক করুন
  4. Pom.xml ফাইলগুলি আনচেক করুন অনুপস্থিত নির্ভরতা রয়েছে
  5. "ঠিক আছে" ক্লিক করুন
  6. ফাইল -> অবৈধ ক্যাশে / পুনঃসূচনা ক্লিক করুন ...
  7. "অবৈধ এবং পুনরায় আরম্ভ করুন" ক্লিক করুন

অথবা হয়ত আপনি যে ফাইলটি আমদানি করেন তা খুব বড়। এটি আমার ক্ষেত্রে, যখন আমি ইনন্টেলিজ সম্পত্তিটি পরিবর্তন করি: i.ad.max.intellisen.filesize (পাথ $ {idea dir} /bin/idea.properties) একটি বৃহত মানতে পছন্দ করে, যেমন 25000, এবং আইডিই পুনরায় আরম্ভ করুন, সমস্যা অদৃশ্য। আশাকরি এটা সাহায্য করবে.


অন্য বিকল্পের জন্য।

আমি JDK7_07 ব্যবহার করার সময়ও এই সমস্যাটি পেয়েছিলাম। আমি এখানে সব উত্তর চেষ্টা করেছি (আইডিইএ সিস্টেম ডিরেক্টরি মুছে ফেলা ছাড়া)। কিন্তু, আমি এখনও সমস্যা পেয়েছিলাম। তাই আমি এটা কি ছিল:

নতুন JDK ইনস্টল করুন (এটি JDK7_45 ছিল), এবং ইন্টেলিজ এর JDK সেটিকে নতুনতে সেট করুন, এবং এটি কাজ করে।


অপসারণ করুন: ইমো ফাইলটি জাভা এবং পরীক্ষার ফোল্ডারগুলির মধ্যে পাওয়া যায় এবং অবৈধ এবং পুনরায় আরম্ভ করুন।

এটা আমি প্রকল্প অপসারণ করতে পারেন জিজ্ঞাসা করবে। হ্যাঁ রাখুন। ত্রুটি বন্ধ হবে।


আমার ক্যাশে অবৈধ এবং পুনরায় আরম্ভ করার পর; এবং আমার ম্যানেন সেটিংস নিশ্চিত করা ঠিক ছিল, আমি এখনও একটি নির্ভরশীলতা হিসাবে সেট করা হয়েছে যে একটি মডিউলের জন্য "প্রতীক সমাধান করতে পারে না" আমি এখনও ছিল। আমি ভুল সুযোগ সেট ছিল আউট চালু করে।

আপনি আপনার মডিউলে ডান ক্লিক করে এবং খুলুন মডিউল সেটিংস নির্বাচন করে চেক করতে পারেন। নির্ভরতা ট্যাবে ক্লিক করুন এবং যাচাই করুন যে আপনার অ-সমাধানযোগ্য নির্ভরতাটির সুযোগটি কম্পাইল করার জন্য সেট করা আছে।


আমার ক্ষেত্রে, আমি IntellijIdea থেকে একটি স্প্রিং বুট প্রকল্প খুলতে চাই, একই সমস্যাটি পেয়েছে যেমন সমস্ত বসন্ত সম্পর্কিত ফাইল আমদানি করতে অক্ষম।

তারপর আমি করেছি:

ফাইল -> বন্ধ প্রকল্প -> আমদানি প্রকল্প -> বহিরাগত মডেল থেকে আমদানি করুন -> গ্র্যাডল নির্বাচন করুন -> পরবর্তী -> ফাইলের অবস্থান থেকে প্রকল্পটি নির্বাচন করুন -> শেষ করুন

এখন সবকিছু আশা হিসাবে জরিমানা কাজ।

আমি এখানে অনেক উত্তর দেখেছি কিন্তু অবশেষে আমি এই সমাধানটি খুঁজে পেয়েছি। এটা আমার মত কেউ জন্য ব্যবহার করতে পারেন।


আমার ক্ষেত্রে, শুধুমাত্র buildDir মুছে ফেলা হয়। এই ক্ষেত্রে, File | Invalidate Caches File | Invalidate Caches কাজ করে না।

যখন আমি Build | Make Project File | Invalidate Caches আগে Build | Make Project File | Invalidate Caches , সবকিছু জরিমানা কাজ করে।


আমার প্রকল্প গঠন:

src -> main -> scala -> mypackages

কি কাজ করেছেন:

scala ফোল্ডারে ডান ক্লিক করুন, এবং "উত্স রুট হিসাবে ডিরেক্টরি চিহ্নিত করুন" ক্লিক করুন।


ইন্টেলিজ আইডিয়া ব্যবহারকারীদের জন্য এই প্রকল্পটি আমদানি করার আগেও এই কমান্ডগুলি সাহায্য করতে পারে:

./gradlew নির্মাণ/ gradlew ধারণা


উপরের সমাধানগুলির মধ্যে কেউ আমার জন্য কাজ করেনি। কি main.iml ফাইল ম্যানুয়ালি মুছে ফেলা হয় এবং এটি হঠাৎ কাজ করে।


এই একই প্রশ্নের আরেকটি উত্তর here উল্লেখ করা here , কিন্তু এই একা আমার জন্য এই সংশোধন করা হয়েছে। আমি সব আমার বিল্ড IntelliJ বাইরে, একটি পৃথক টার্মিনালে কাজ। সুতরাং ক্যাশের প্রয়োজনীয়তাটি তাদের জন্য ইন্টেলিজজে অ্যাপ্লিকেশনের জন্য উপযুক্ত অনুমতিগুলি সেট করতে হবে।

প্রকল্পের রুট ফোল্ডার থেকে এটি চালান।

$ mvn -U idea:idea

এক অতিরিক্ত ধাপ, যখন আমি ফাইল -> অবৈধ ক্যাশে এবং আইডিই পুনরায় শুরু করেছিলাম, একটি প্রকল্প খুলুন। এটি উপরের ডানদিকে একটি টোস্টবক্স পপ আপ করেছে যা আমাকে অটো-ইম্পোর্ট সক্ষম করে কিনা এবং সমস্যার সমাধান করেছে কিনা তা জিজ্ঞাসা করে।


কখনও কখনও, আমি শুধু প্রকল্প কাঠামো খুলি এবং প্রকল্পটি ক্লিক করি, তারপর একটি SDK সংস্করণ নির্বাচন করুন ।


কখনও কখনও, যখন আপনি com.mydomain.something এর মত প্যাকেজ তৈরি করেন তখন ডিরেক্টরি গঠন তৈরি হয় না এবং আপনি এই ক্ষেত্রে "com.mydomain.something" নামক একটি ফোল্ডারের সাথে রেখে থাকেন তবে আপনাকে ডিরেক্টরি গঠন করা উচিত, যেমন

com
|_mydomain
  |_something 

পরীক্ষা করার আরেকটি জিনিস: নির্ভরতাগুলি সদৃশ নয় তা নিশ্চিত করুন। আমার ক্ষেত্রে আমি দেখেছি যে এই আচরণটি প্রদর্শন করে এমন একটি মডিউল নিম্নরূপ ভুলভাবে কনফিগার করা হয়েছে: এটি অন্য মডিউলের উপর নির্ভরশীল ছিল এবং এটি অন্য মডিউল দ্বারা উত্পাদিত জারের উপর নির্ভরশীল ছিল। এই প্রতিলিপি রেফারেন্স প্রতি প্রতীক জন্য বোঝানো, এবং দ্বিধান্বিত ছিল।


প্রকল্প কাঠামোর মধ্যে অসঙ্গতিপূর্ণ / সদৃশ মডিউল নাম আমার জন্য এই সমস্যা সৃষ্টি হয়।

  1. File -> Project Strucutre -> Modules যান File -> Project Strucutre -> Modules
  2. লাল আন্ডারলাইন আছে যা মডিউল উপর ক্লিক করুন
  3. "নির্ভরতা" ট্যাবে পেয়েছিলাম
  4. নির্ভরশীলতা লাল আসলে আসলে নির্ভরতা তালিকা বিদ্যমান আছে তা নিশ্চিত করুন। যদি না হয়, বিদ্যমান নির্ভরতা নাম মেলে তাদের নামকরণ

IntelliJ সঠিকভাবে বন্ধ না করে এটি যখন ঘটতে পারে এবং এইভাবে পুনঃনামিত মডিউল নামগুলি সংরক্ষণ করতে পারে না।


প্রথমে আপনি File | Invalidate Caches চেষ্টা করা উচিত File | Invalidate Caches এবং যদি এটি সাহায্য না করে তবে IDEA সিস্টেম ডিরেক্টরি মুছে দিন। তারপর Maven প্রকল্প পুনরায় আমদানি এবং এটি সাহায্য করে দেখুন।

কিছু অদ্ভুত ক্ষেত্রে সংকলিত ক্লাস ভুল তথ্য রিপোর্ট এবং আইডিইএ বিভ্রান্ত হতে পারে। এই jar থেকে ক্লাস javap ব্যবহার করে সঠিক নাম রিপোর্ট যে যাচাই করুন।


প্রস্তাবিত সমাধান কাজ করে না। আমি pom => maven => unignore প্রকল্পে ডান ক্লিক করে বেশ কয়েকটি প্রকল্প unignore ছিল।

তারপর একটি পরে

mvn clean install -T 6 -DskipTests

কনসোল ইন, IntelliJ আবার খুশি ছিল। প্রকল্পগুলি কীভাবে উপেক্ষা করা যায় তা কোন ধারণা নেই ...


যদি ম্যানেন প্রকল্পটি ঠিক থাকে তবে সেটিংসে যান -> সরঞ্জামগুলি তৈরি করুন -> ম্যানেন -> আমদানি করুন। চেকবক্স "স্বয়ংক্রিয়ভাবে আমদানি মেনন প্রকল্প" চেক করুন। সমস্যা সমাধান হবে।


হ্যাঁ, মনে হচ্ছে আপনার প্রয়োজনীয় জার্স ধারণকারী লাইব্রেরি তৈরি করতে হবে এবং আপনার মডিউলে নির্ভরতা হিসাবে যুক্ত করুন।





intellij-inspections