ইনটেলিজ আইডিইএ স্প্রিংয়ের @ অটোভায়ার্ড টীকাগুলি ব্যবহার করার সময় ত্রুটিগুলি দেখায়


104

আমি @Autowiredক্লাসে স্প্রিং-এর টীকাটি ব্যবহার করার সময় ইন্টেলিজ আইডিইএ ত্রুটি প্রদর্শন করছে, তবে ক্লাসটি কোনও সমস্যা ছাড়াই কাজ করছে।

এই ত্রুটি বার্তাটি এখানে:

স্বীকৃত সদস্যদের বৈধ বসন্ত বিন (@ উপাদান / @ পরিষেবা, ইত্যাদি) কম সংজ্ঞায়িত করা আবশ্যক ... (সিটিআরএল + এফ 1) একটি সিম শ্রেণিতে অটোয়্যারিংয়ের সমস্যাগুলি পরীক্ষা করে।


5
এটি ব্যবহার করার চেষ্টা করুন: @ সাপ্রেস ওয়ার্নিংস ("স্প্রিংজভাআউটউইরিংআইনস্পেকশন")
আই-বব

আমার একীকরণ পরীক্ষার ক্লাসগুলির জন্য আমার একই ত্রুটি রয়েছে। আমি মনে করি @ সুপ্রেস ওয়ার্নিংস টিকাটি ব্যবহার করা একটি দুর্দান্ত সমাধান।
কেভিন উইটটেক

ইন্টেলিজ 2016.2 আমার বসন্ত বুট / স্প্রিং ডেটা প্রকল্পের সাহায্যে এটি করছে। কোন মটরশুটি রয়েছে তা নির্ধারণের জন্য ইন্টেলিজ কোন ফাইলটি খুঁজছেন?
আদম

4
আমাকে @ সাপ্রেস ওয়ার্নিংস ব্যবহার করতে হয়েছিল ("স্প্রিংজভাআউটওয়্যারমিডেম্বারস ইনস্পেকশন")
ইউজার 672009

4
ইন্টেলিজ আইডিইএ 2017.3.1 (চূড়ান্ত সংস্করণ) এর জন্য@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
লেলসেলডিও

উত্তর:


33

ইন্টেলিজ আইডিএএর সাথে আমার একই সমস্যা ছিল 13.1.4 আমি বসন্তের দিকটি (ফাইল-> প্রকল্পের কাঠামো) সরিয়ে এবং এটি "সনাক্তকরণ" দেখানোর জন্য রেখে সমাধান করেছি।


36
তবে আপনি যদি আসলে কোনও শিমটি বানাতে ভুলে যান তবে। আপনি কোন সতর্কতা পাবেন না?
ক্লিঙ্কোদ

22

আপনি যদি জানেন যে শিমটি বিদ্যমান এবং এটি কেবল পরিদর্শনগুলির একটি সমস্যা, তবে ভেরিয়েবল ঘোষণার আগে নিম্নলিখিতটি যুক্ত করুন:

@SuppressWarnings("SpringJavaAutowiringInspection")
@Inject MyClass myVariable;

কখনও কখনও ইন্টেলিজ সমাধান করতে পারে না যদি কোনও শিম ঘোষণা করা হয়েছে, উদাহরণস্বরূপ যখন শিমটি শর্তযুক্তভাবে অন্তর্ভুক্ত করা হয় এবং শর্তের রেজোলিউশন রানটাইমের সময় ঘটে।



19

এখানেও একই ত্রুটি আছে!

দেখে মনে হচ্ছে শ্রেণি বাস্তবায়নটি কোনও @ সার্ভিস বা @ কম্পোনেন্ট হয় কিনা তা ইন্টেলিজ যাচাই করতে পারে না।

ত্রুটি থেকে সতর্কতায় পরিবর্তিত হয়ে এটিকে সমাধান করুন (Alt + enter টিপুন)।


18

আপনার সমস্ত প্রকল্পের মডিউল থেকে .iml ফাইল সরান এবং তারপরে ফাইল -> অকার্যকর ক্যাশে / পুনঃসূচনাতে যান


9
দিকগুলি সরানো এবং সতর্কতা বা অনুরূপ "ফিক্সগুলি" দমন করা যৌক্তিক বা স্মার্ট বলে মনে হয় না তাই আমি এটি একটি শট দিয়েছি। তবে আমি শেষ পদক্ষেপটি একই রকম করিনি। পরিবর্তে আমি আমার .imlফাইলটি মোছা করেছি, ফাইলটির মাভেন অপশনগুলিতে পুনর্বিন্যাস করা বেছে নিয়েছি pom.xmlএবং ctrl + sপুনরায় জেনারেট করতে একটি করেছি .iml। ত্রুটিগুলি চলে গেছে।
চিফ টুপেনসিলস


6

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


4

আপনার স্প্রিং শিম সংজ্ঞা সঠিক রয়েছে তা নিশ্চিত করুন। কখনও কখনও, অ্যাপ্লিকেশনটি ঠিকঠাকভাবে কাজ করে, এটি আইডিইতে কেবল একটি ত্রুটি প্রদর্শন করে, আপনার প্রকল্পের 'iml' ফাইলটি পরীক্ষা করে যদি আপনার কাছে একটি স্প্রিং ফ্যাক্ট সংজ্ঞায়িত করা হয়।


আপনার অ্যাপ্লিকেশন-বৈশিষ্ট্য। এক্সএমএল পরীক্ষা করুন। লাইন প্রসঙ্গটি কিনা তা পরীক্ষা করুন: উপাদান-স্ক্যান বেস-প্যাকেজ = "com.my.project" আপনি যে পরিষেবার উল্লেখ করছেন সেটির প্যাকেজটি বাদ দেয় না।
আই-বব

আমি আপনার কোডটি আমার প্রকল্পের "Bec-job.iml" তে রেখেছি, তবে সমস্যাটি এখনও বিদ্যমান nd এবং আমি আমার প্রকল্পে ফাইলটির নাম "অ্যাপ্লিকেশনকন্টেক্সটেক্স-ইন্টারফেস.এক্সএমএল" খুঁজে পাই না, আপনি কি সে সম্পর্কে বিস্তারিত বলতে পারবেন? ?
Vainlyh

আপনাকে অবশ্যই @ সাপ্রেস ওয়ার্নিংস ("স্প্রিংজভাআউটোয়ারিংইনস্পেকশন") আপনার কোডের অটোভায়ার্ড অংশের ঠিক উপরে রাখতে হবে যা হাইলিহিটেড লাল। এইভাবে ইন্টেলিজিয়া চিনতে পারে যে কোন সতর্কতা দমন করতে হবে।
আই-বব

আপনাকে অবশ্যই "অ্যাপ্লিকেশন-বৈশিষ্ট্য.এক্সএমএল" ফাইলটি খুঁজে পেতে হবে, "অ্যাপ্লিকেশন-ইন্টারফেস.এক্সএমএল" নয়
আই-বব

4
এই @ সাপ্রেস ওয়ার্নিংস ("স্প্রিংজভাআউটওরিংআইপ্যাঙ্কস") আমার কাছে মনে হচ্ছে হ্যাকি, তবে এটি কার্যকর। ধন্যবাদ বন্ধুরা.
মিনরাস

3

ফাইল >> প্রজেক্ট স্ট্রাকচার >> ফেসসেটে গিয়ে তারপরে স্প্রিং ফেস্টে সমস্ত কনফিগারেশন ফাইল যুক্ত করে সমস্যার সমাধান করুন। এর পরে এটি ফাইলগুলি শনাক্ত করতে শুরু করে যেখানে মটরশুটি থাকে এবং ইস্যুটি বাছাই করতে সক্ষম হয়েছিল। ইন্টেলিজি এই চেকটি দেওয়া যথেষ্ট মূল্যবান এবং আইএমএইচওকে অক্ষম করা উচিত নয়।


আমি স্প্রিংকে একটি সম্ভাব্য দিক হিসাবে দেখছি না। আপনার কাছে ইন্টেলিজের কোন সংস্করণ রয়েছে?
jDub9

2

দৃশ্যমানতার সমস্যাটি দেখে মনে হচ্ছে - প্যারেন্ট কন্ট্রোলার আপনি যে অংশটি তারের চেষ্টা করছেন সেটি দেখতে পাচ্ছে না।

যোগ করার চেষ্টা করুন

@ComponentScan("path to respective Component") 

অভিভাবক নিয়ন্ত্রকের কাছে to


2

আপনার মডিউলটি পরিদর্শন করা হচ্ছে এমন সমস্ত প্রয়োজনীয় বসন্ত কনফিগারেশন সম্পর্কে আপনার ইন্টেলিজ আইডিয়া (আইডিই) সচেতন রয়েছে তা নিশ্চিত করুন।

আপনি এটি অধীনে পরীক্ষা করতে পারেন

ফাইল> প্রকল্পের কাঠামো> মডিউল> [ডান প্যানেলে আপনার প্রকল্পের নাম]> বসন্ত

কখনও কখনও, আমাদের আইডিইকে স্পষ্টভাবে বলতে হবে যে বসন্তের কনফিগারেশন নির্ভরতা থেকে আসছে (আপনার প্রকল্পের ক্লাসপথে উপস্থিত একটি জার)


4
এটি কি সম্প্রদায়ের সংস্করণে পাওয়া যায় বা এটি কেবল চূড়ান্ত হয়?
আর্কিমিডস ট্রাজানো

1

আমি একই সমস্যা পেয়েছি। আমার কারণটি ছিল যে স্বাবলম্বিত রেফারেন্সযুক্ত শিমটি একটি স্প্রিং উপাদান নয় (এটি একটি ইজেবি ছিল), তবে একটি স্প্রিংবিয়ানআউটউইরিংআইন্টারসেপ্টর ইন্টারসেপ্টরকে অটোয়ারিংয়ের ব্যবহারের অনুমতি দেয়। আমি মনে করি ইন্টেলিজ এর সম্ভাব্যতা পরীক্ষা করে এই সম্ভাবনাটি গ্রহণ করেন না।


1

আমারও এই সমস্যা ছিল করছেন alt+ enterএবং তারপরে প্রভাবিত লাইনে বসন্ত পরিদর্শন পুনরায় চালনা বা অক্ষম করতে বললে এটি ঠিক হয়ে গেছে। 13.4 আপডেটের পরে এটি কেবল একটি সমস্যা হয়ে দাঁড়িয়েছে বলে মনে হচ্ছে।


1

আমার ক্ষেত্রে আমি ওয়েব.এক্সএমএল লিখতে অনুপস্থিত ছিলাম:

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:applicationContext.xml</param-value>
   </context-param>

এবং অ্যাপ্লিকেশন প্রসঙ্গে ফাইল:

<context:component-scan base-package=[your package name] />

এই ট্যাগগুলি যুক্ত করার পরে এবং পুনর্নির্মাণের জন্য মাভেন রান করুন ইন্টেলজ ডেসাপিয়ারগুলিতে স্বতঃবৃত ত্রুটিটি এবং বীন আইকনটিতে শিম আইকনটি উপস্থিত হয়: এখানে চিত্র বর্ণনা লিখুন


1

আমার ক্রুডেপোসিটোরি ইন্টারফেসে @ রিপোসিটরি যুক্ত করার জন্য নয়, আমি যে টিউটোরিয়ালটি দেখছিলাম সেটি এটি এসটিএসে যুক্ত হয়নি এবং এটি কোনও অভিযোগ করেনি।


1

আপনার ক্লাসে @ কম্পোনেন্ট, @ রিপোসিটোরি বা অনুরূপ যুক্ত আছে কিনা তা পরীক্ষা করা উচিত



0
eg1:
director:Settings - Editor - Inspections - Spring - Spring Core - Code - Autowiring for Bean Class 
operate:checkout 勾去掉
eg2:
1.impl class add @service
like this:
@Service
public class CityServiceImpl implements CityService{
@Autowired
private CityDao cityDao;

like this
2.dao file class add @Repository
@Repository
public interface CityDao {

0

আমি এই সমস্যা এইভাবে সমাধান করেছি। ইন্টেলিজে আপনার সমস্ত প্যাকেজ একটি সাব প্যাকেজে থাকতে হবে যা প্রধান / জাভা উপ প্যাকেজ। উদাহরণস্বরূপ আমি আমার সমস্ত প্যাকেজগুলিকে src / main / java / com.misisol.watchStore / এর অধীনে রেখেছি এবং বসন্তের পরে আমার মটরশুটি খুঁজে পেতে পারে।


0

@ কোয়ালিফায়ার দিয়ে বিন ইনজেকশনটি আমার জন্য সমস্যার সমাধান করেছে।


0

আমারও একই সমস্যা ছিল "প্রসেস স্পষ্টভাবে টীকাযুক্ত মটরশুটি প্রক্রিয়াকরণ" বিকল্পটি (নীচের স্ক্রিনশটটি দেখুন) অনিচ্ছুক করে আমি এটি সমাধান করেছি। এই বিকল্পটি লিনাক্সে ডিফল্টরূপে সক্ষম করা হয়েছে। এখন @ পরিষেবা এবং @ কনফিগারেশনের টীকাগুলি দৃশ্যমান। স্ক্রিনশট


0

কিছুটা দেরি হলেও আমি আশা করি এটি অন্য কারও জন্য সহায়তা করবে।

পরিষেবার জন্য বাস্তবায়ন ক্লাসে @ সার্ভিস লাগানো নিশ্চিত করুন

@Service
public class ServiceNameImpl implements ServiceName {

    @Override
    public void method(ObjectType paramName) {
        //CODE
    }

}

এইভাবে আমি ত্রুটিটি ঠিক করেছি।


0

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমি আমার কাছে এই সমস্যার সমাধান করার মতো কোনও উত্তর পাই নি তাই আমি আমার সমাধানটি সরবরাহ করব।

দ্রষ্টব্য: আমি ভেবেছিলাম ইস্যু হয়তো এই , কিন্তু আমার সমস্যা একই ইন্টারফেস দুইবার বাস্তবায়নের এর সাথে সম্পর্কিত করা হয় নি। ব্যবহারটি @Qualitierআমার সমস্যাটিকে দূরে সরিয়ে দিয়েছে, তবে এটি একটি ব্যান্ডেজ ছিল এবং সঠিক সমাধান নয় তাই আমি এটির সাথে নিষ্পত্তি করি নি।

ব্যাকগ্রাউন্ড

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

সমস্যাটি

ইস্যুটি এমন একটি @Repositoryক্লাসে উপস্থিত ছিল যা @Autowiredএকটি @Serviceক্লাসে ছিল এবং এতে @ComponentScanটীকাও ছিল । আমি লক্ষ্য করেছি যে আমারও একটি বসন্ত application-config.xmlছিল যা করছিলcontext:component-scan যা বেস প্যাকেজটিতে , যা আমি বিশ্বাস করি বসন্তের পুরানো সংস্করণগুলিতে আসল পন্থা। আমি বেশ কয়েকটি বছর ধরে বিকাশ করা বিভিন্ন প্রকল্পে ব্যবহৃত একটি সমর্থন প্রকল্পে একটি পুরানো শাখা এবং একটি নতুন শাখার অংশ নিয়ে একটি নতুন শাখা তৈরির প্রক্রিয়ায় ছিলাম এবং এ কারণেই এই জাতীয় মিশ্রণ এবং মিল ছিল পদ্ধতি।

সহজ সমাধান

যেহেতু ব্যবহারের আরও আধুনিক পদ্ধতির @ComponentScanইতিমধ্যে প্রয়োগ করা হয়েছিল আমি কেবল সরিয়েছি application-config.xmlএবং সমস্যাটি সমাধান হয়ে গেছে।


0

নিম্নলিখিত আমার জন্য কাজ করেছে:

  1. পরিষেবা (ইন্টারফেস) প্রয়োগকারী সমস্ত শ্রেণীর সন্ধান করুন যা ত্রুটি দিচ্ছে।
  2. বিজনেস লজিক ক্লাস হিসাবে তাদের নির্দেশ করতে, এই পরিষেবাগুলির প্রত্যেককে @ পরিষেবা টিকা দিয়ে চিহ্নিত করুন।
  3. প্রকল্পটি পুনর্নির্মাণ করুন।

0

আমি কিছুটা দেরি করতে পারি, তবে ঘন্টাগুলি ব্যয় করে এবং এই বিষয়টি নিয়ে গবেষণা করার পরে।

আমি জানতে পেরেছি যে সর্বশেষ সংস্করণে ইন্টেলিজজে 2020 @ অটোওয়্যার্ড alচ্ছিক এবং কনস্ট্রাক্টর ভিত্তিক ডিপেন্ডেন্সি ইনজেকশনটি পছন্দনীয়।

আমি কেবল সার্ভিস এবং কন্ট্রোলার ক্লাস থেকে @ অটো ওয়্যার্ড টিকা সরিয়ে এবং কনস্ট্রাক্টর ভিত্তিক নির্ভরতা ইনজেকশন ব্যবহার করে সমস্যার মুখোমুখি হয়েছি

এই লিঙ্কটি সাহায্য করতে পারে।

শুভ কোডিং!


0

ইন্টেলিজির 2019.2.4 সংস্করণ সহ কনস্ট্রাক্টর ভিত্তিক নির্ভরতা ইনজেকশন সহ কেবল একটি পরিষেবা নিয়ে আমার এই সমস্যা ছিল। আমি পরিষেবার নাম পরিবর্তন করতে সহায়ক বলে মনে করেছি (শিফট + এফ 6) এবং তারপরে গিট স্তর থেকে পরিবর্তনগুলি বাতিল করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.