ইন্টেলিজির ক্লাসপথে একটি সম্পত্তি ফাইল যুক্ত করুন


122

আমি রান-> রান মেনুটি ব্যবহার করে ইন্টেলিজ আইডিই থেকে একটি সাধারণ জাভা প্রোগ্রাম চালাচ্ছি। এটা ঠিক কাজ করে। এখন আমি log4j লগিং যুক্ত করতে চাই।

আমি আমার প্রকল্পের মূলের অধীনে একটি সংস্থান ফোল্ডার যুক্ত করেছি। আমি সেই ফোল্ডারে লগ 4j.properties ফাইল যুক্ত করেছি। আমি কিছু লগ করার জন্য কোড পরিবর্তন করেছি।

ইন্টেলিজকে বলার সঠিক উপায়টি কী, শ্রেণিপথগুলিতে সম্পদ ফোল্ডার অন্তর্ভুক্ত করতে তাই সম্পত্তি ফাইলটি দেখা যায়?

ইন্টেলিজ 8 এর সাথে আমি মাতাল বানরের মতো অনুমান করতে পারি এবং শেষ পর্যন্ত এটি কাজে লাগাতে পারি। আমার এখন 9 জন এবং আমি সম্পূর্ণ ব্যর্থ uns আমি এক ঘন্টা চেষ্টা করছি। কোথাও "ক্লাসপ্যাথে যোগ করুন" বিকল্পটি কীভাবে? / fume / ভেন্ট / অভিজাত


ঠিক আছে, পরিস্থিতি সমাধান হয়েছে। এটি ইন্টেলিজজের একটি নতুন ইনস্টলেশন - লগ 4 জে ডিফল্টরূপে অন্তর্ভুক্ত নয়। আমার কোডে আমি স্টক লগারটি আমদানি করেছিলাম, লগ 4 জে না। স্টক লগার অনুরূপ পদ্ধতি সমর্থন করে তাই এটি ভুল ছিল না যে আমি ভুল লগারটি ব্যবহার করছি! এটি লগ 4 জে প্রোপার্টি ফাইলটি পড়ছে না বা লগ 4 জে কনফিগার করতে আমার যে রিপোর্টিং করছে তা অবাক হওয়ার কারণ নেই। দাঁতে কী লাথি!
টনি এনিস

উত্তর:


91

এটা চেষ্টা কর:

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

আমি প্রায় 50 বার এটি করেছি, আমি আবার এটি করেছি। আমার আউটপুট পরিবর্তিত হচ্ছে না যদিও আমি লেআউট রূপান্তর প্যাটার্নটিকে এমন কিছুতে পরিবর্তন করেছি যা স্পষ্ট। আমি ভাবছি যে আমার ক্লাসপথে আর একটি লগ 4 জে.প্রোপার্টি রয়েছে কিনা।
টনি এনিস

29
সংকলক সেটিংসে রিসোর্স নিদর্শনগুলি পরীক্ষা করুন। সেখানে "? * বৈশিষ্ট্য" আছে কিনা তা পরীক্ষা করুন। এটি ডিফল্টরূপে সেখানে রয়েছে তবে আমি কেবল নিজের মাথার উপরের অংশটিকেই ভাবতে পারি।
কলিনড

3
সোর্সসবাটনের বিকল্প - আপনি যে ডিরেক্টরিটি তৈরি করেছেন ডানদিকে ক্লিক করুন এবং "চিহ্নিত ডিরেক্টরি হিসাবে চিহ্নিত করুন" নির্বাচন করুন: "উত্স রুট"
এমএসসিআর

10
মনে রাখবেন যে আপনি যদি কোনও অ্যাড-হক উত্স কাঠামোর পরিবর্তে কোনও ম্যাভেন পিওএম থেকে আপনার প্রকল্প তৈরি করেন তবে এই সমাধানটি কার্যকর হবে না। পরিবর্তে আপনাকে সেই ডিরেক্টরিটি পিওএমে একটি সংস্থান হিসাবে যুক্ত করতে হবে। পিটার থাইজেনের উত্তর দেখুন।
মুক্তিদাতা

প্রপার্টি কনফিগুয়েরেটর.কনফিগুরে ("../ conf / log4j.properties")
জেসন ডি

47

আসলে, আপনার এটি করার কমপক্ষে 2 টি উপায় রয়েছে, প্রথম উপায়টি কলিনডি দ্বারা বর্ণিত হয়েছে, আপনি কেবল "সংস্থানগুলি" ফোল্ডারটি আইডিইএতে উত্স ফোল্ডার হিসাবে কনফিগার করেছেন। যদি রিসোর্স প্যাটার্নগুলিতে আপনার সংস্থানটির এক্সটেনশন থাকে তবে আপনি যখন প্রকল্পটি তৈরি করেন তখন আউটপুট ডিরেক্টরিতে এটি অনুলিপি করা হবে এবং আউটপুট ডিরেক্টরি স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশনটির একটি শ্রেণিপথ হবে।

আর একটি সাধারণ উপায় হ'ল ক্লাসপথে সরাসরি "সংস্থানগুলি" ফোল্ডার যুক্ত করা। প্রকল্পের কাঠামোতে যান | মডিউল | আপনার মডিউল | নির্ভরতা , যুক্ত করুন , একক-এন্ট্রি মডিউল লাইব্রেরি ক্লিক করুন , "সংস্থানগুলি" ফোল্ডারে পাথ নির্দিষ্ট করুন।

তবুও আরেকটি সমাধান হ'ল লগ 4j.properties ফাইলটি সরাসরি আপনার প্রকল্পের উত্সের মূলের (ডিফল্ট প্যাকেজ ডিরেক্টরিতে) অন্তর্ভুক্ত করা উচিত। এটি মডিউল পাথস সেটিংসে আপনাকে অন্য উত্সর মূল যুক্ত করার দরকার না বাদে প্রথম পন্থার মতোই , ফাইলটি মেকের আউটপুট ডিরেক্টরিতে অনুলিপি করা হবে।

আপনি যদি বিভিন্ন লগ 4 জে কনফিগারেশন দিয়ে পরীক্ষা করতে চান তবে সরাসরি রান / ডিবাগ কনফিগারেশনে একটি কাস্টম কনফিগারেশন ফাইল নির্দিষ্ট করা সহজ হতে পারে , ভিএম পরামিতি যেমন ফাইল করা থাকে :

-Dlog4j.configuration=file:/c:/log4j.properties


আমি আপনার অনুচ্ছেদ 2 এবং 3 কার্যকর করেছি। আমি নিশ্চিত পরামর্শ আছি কাজ এটা ঠিক যে তাদের কোন প্রভাব ফেলেছে - এটি আচরণ করবে সেখানে মত ক্লাসপাথ অন্য log4j.properties ফাইল। তবে আমি এটি কোথাও দেখতে পাচ্ছি না। যদি আমি আমার লগ 4 জে বৈশিষ্ট্যগুলি ফাইলটি পুরোপুরি সরিয়ে ফেলি তবে আমি কনসোলে "আপনার অবশ্যই log4j সতর্কতা কনফিগার করতে হবে না"। আমি প্রথমবারের জন্য নিখরচায় ইন্টেলিজ (এবং সংস্করণ 9.x) ব্যবহার করছি, সুতরাং এর সাথে এর কিছু করার আছে।
টনি এনিস

1
সুস্পষ্ট-ডি ভিএম প্যারামিটার ব্যবহারেরও কোনও প্রভাব ছিল না। এই মুহুর্তে আমি কেবলমাত্র 'বোকা গাছের' শীর্ষ থেকে পড়েছি এবং নীচে নেমে প্রতিটি শাখায় আঘাত করেছি! আমি মনে করি আমি জেটব্রেইনসে ট্রল ঘুরে দেখব এবং জিজ্ঞাসা করব ...
টনি এনিস

আপনি দয়া করে সমর্থন@jetbrains.com এ সমস্যাটি পুনরুত্পাদন করতে সঠিক পদক্ষেপ সহ নমুনা প্রকল্পটি পাঠাতে পারেন?
ক্রেজি কোডার

আমি প্রোগ্রাম আর্গুমেন্টে -Dlog4j.configration = ফাইল: / সি: / লগ 4j.properties পাস করছিলাম। ভিএম প্যারামিটারগুলি আমার জন্য কৌশলটি করেছে।
আজাক 6

42

আমার একই সমস্যা এবং এটি আমাকে প্রচণ্ড বিরক্ত করে !!

আমি সবসময়ই ভেবে দেখেছি যে উত্তর 2 হিসাবে আমি উত্তীর্ণ হয়েছি যা ইন্টেলিজ 9 এ কাজ করত (এখন 10 ব্যবহার করছে)।

তবে আমি বুঝতে পেরেছি যে আমার maven pom ফাইলটিতে এই লাইনটি যুক্ত করে সাহায্য করে:

<build>
  ...
  <resources>
    <resource>
      <directory>src/main/resources</directory>
    </resource>
  </resources>
  ...
</build>

এটি হ'ল আমার ঠিক সমস্যা ছিল, এখন সংস্থান ফাইলগুলি আউটপুট ফোল্ডারে সাফল্যের সাথে অনুলিপি করা হয়।
আর্টজমকা

এই উত্তরটি সত্যিই কাজ করে। কলিনডি তার মন্তব্যে যা বলেছিল আমি তা করেছি। ধন্যবাদ.

আপনাকে ধন্যবাদ, এটিই আমার জন্য কার্যকর সমাধান solution
মিন থিওন

18

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

  • আপনার প্রকল্পের সেটআপে যান (CTRL + ALT + SHIFT + S)
  • তালিকায় আপনি যে মডিউলটিতে এক বা একাধিক বৈশিষ্ট্য ফাইল যুক্ত করতে চান তা নির্বাচন করুন।
  • ডানদিকে, নির্ভরতা ট্যাবটি নির্বাচন করুন।
  • সবুজ প্লাস ক্লিক করুন এবং "জারস বা ডিরেক্টরি" নির্বাচন করুন।
  • এখন সেই ফোল্ডারটি নির্বাচন করুন যাতে সম্পত্তি ফাইল (গুলি) থাকে। (আমি পৃথক ফাইল সহ চেষ্টা করে দেখিনি)
  • ইন্টেলিজ এখন আপনাকে জিজ্ঞাসা করবে নির্বাচিত ফাইলটির "বিভাগ" কি। "ক্লাস" চয়ন করুন (যদিও তারা না রয়েছে)।
  • এখন আপনাকে অবশ্যই আর্টিফ্যাক্টে প্রোপার্টি ফাইল যুক্ত করতে হবে। ইন্টেলিজ আপনাকে নীচে দেখানো শর্টকাট দেবে। এটি নীচে লাল অংশে একটি ত্রুটি এবং একটি 'রেড লাইটবুলব' প্রদর্শন করবে যা ক্লিক করা হলে আপনাকে আর্টফ্যাক্টগুলিতে ফাইলগুলি যুক্ত করার একটি বিকল্প দেখায়। আপনি 'শৈল্পিক' বিভাগে যেতে পারেন এবং ম্যানুয়ালি শিল্পকর্মগুলিতে ফাইলগুলি যুক্ত করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন


14

ক্লাসপথে .ini এক্সটেনশান যুক্ত ফাইল যুক্ত করার অনুরূপ চ্যালেঞ্জের মুখোমুখি। এই উত্তরটি পেয়েছে , যা এটি পছন্দসমূহ -> সংকলক -> সংস্থান প্যাটার্নগুলিতে -> [...]; *। ইন


1
এই আমিই .conf ফাইলগুলির সাথে ঠিক সমস্যার
জেমস

আমি ভেবেছিলাম আমার কোডে দোষ কী? এই সমাধানের জন্য ধন্যবাদ
শোয়েব চিকাট

5

আপনি যদি কখনও স্ক্যালাল এবং এসবিটি-তে একই সমস্যাটি শেষ করেন:

  • প্রকল্পের কাঠামোতে যান। শর্টকাটটি হ'ল (CTRL + ALT + SHIFT + S)

  • বাম তালিকায়, প্রকল্প সেটিংস> মডিউলগুলি চয়ন করুন

  • এর ডানদিকে মডিউল তালিকায় আপনার প্রকল্পের নাম (বিল্ড ছাড়াই) মডিউলটি নির্বাচন করুন এবং উত্স ট্যাবটি নির্বাচন করুন

  • মাঝখানে, আমার জন্য আপনার প্রকল্পের মূল যে ফোল্ডারটি প্রসারিত করুন /home/<username>/IdeaProjects/<projectName>

  • ডানদিকে কন্টেন্ট রুট বিভাগটি দেখুন, লাল পাথ ডিরেক্টরিগুলি যা আপনি তৈরি করেন নি। আপনি সম্পদ ডিরেক্টরিতে সম্পত্তি বৈশিষ্ট্য ফাইল রাখতে চাইবেন। সুতরাং আমি src/main/resourcesএটিতে log4j.properties তৈরি এবং রেখেছি। আমি বিশ্বাস করি আপনি যেখানে চান সেখানে কনটেন্ট রুটটি পরিবর্তন করতে পারেন (আমি এটি করিনি)।

  • আমি আমার কোডটি এসবিটি কনফিগারেশনে চালিত করেছি এবং এটি আমার লগ 4j.properties ফাইলটি খুঁজে পেয়েছে।

এখানে চিত্র বর্ণনা লিখুন


2

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

এটির ম্যাডেনিং (এটি জানতে আমার পুরো সন্ধ্যা ব্যয় করতে হবে) তবে আইডিইর কাজ দুটি ভিন্ন যখন আপনি আপনার আইডিই থেকে স্থানীয়ভাবে চালাতে চান বা ডিবাগিংয়ের সময় রিসোর্স / রুপটি ফাইলগুলি সন্ধান করার ক্ষেত্রে আসে। (একটি। জাকারে প্যাকেজিংও বেশ আলাদা, তবে এটি ডকুমেন্টেড আরও ভাল)

ধরুন আপনার কোডে আপনার মতো কোনও সম্পর্কিত পাথ রেফারেল রয়েছে:

new FileInputStream("xxxx.properties");

(আপনি যদি আপনার জেআর পাশাপাশি প্যাকেজ করতে চান না এমন env নির্দিষ্ট। প্রপার্টি ফাইলগুলির সাথে কাজ করেন তবে এটি সুবিধাজনক)

INTELLIJ

(আমি 13.1 ব্যবহার করি তবে আরও সংস্করণের জন্য বৈধ হতে পারে)

Xxxx.properties ফাইলটি ইন্টেলিজজে রানটাইমের সময় বাছাইয়ের জন্য প্রকল্পের মূল প্যারেন্ট ডায়ারে থাকা দরকার। (প্রকল্পের মূলটি যেখানে / এসসিআর ফোল্ডারটিতে থাকে)

গ্রহণ

Xxxx.properties ফাইলটি প্রকল্পের রুটে নিজেই উপস্থিত থাকলে গ্রহটি ঠিক খুশি হয়।

সুতরাং ইন্টেলিজ আশা করে। প্রপার্টি ফাইলগুলি 1 স্তরের উচ্চতর হবে তখনই যখন এটির মতো রেফারেন্স হবে তখন গ্রহনটি হবে !!

আপনার রফতানিত জজারে আপনার যখন একই লাইন কোডের (নতুন ফাইলআইপুটস্ট্রিম ("xxxx.properties")) থাকে তখন আপনার কোডটি কার্যকর করতে হয় এমনভাবে এটিও প্রভাব ফেলে। আপনি যখন চটপটে থাকতে চান এবং আপনার জারের সাথে .properties ফাইলটি প্যাকেজ করতে চান না তখন কমান্ড লাইন থেকে .properties ফাইলটি সঠিকভাবে উল্লেখ করতে আপনাকে নীচের মতো জারটি চালাতে হবে:

ইনটেলিজ এক্সপোর্টেড জার

java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethod

ECLIPSE এক্সপোর্টেড জার

java -jar some.jar

যেখানে Eclipse এক্সপোর্ট এক্সিকিউটেবল জার কেবলমাত্র রেফারেন্সড। প্রপার্টি ফাইলটি একই জায়গায় যেখানে .jar ফাইলের প্রত্যাশা করবে


হ্যাঁ, log4.properties, log4j2.xML বা log4j.properties এর বিপরীতে অবশ্যই ইন্টেলিজ মডিউল রুটে পাওয়া উচিত। এছাড়াও Log4j, যা ঠিকঠাক কাজ করছে অসদৃশ, আমি পাওয়া যায় আমি এখনও জুরি-তামাশা করতে হয়েছে IntelliJ ভিতরে চালানোর জন্য (অন্ধকার একই গল্প হবে, এই জাভা লগিং দোষ হয়) দেখতে stackoverflow.com/questions/960099/... । এর একটি বিকল্প হ'ল -জাজা.ইটিল.লগিংসকনফিগ.ফাইল = দিয়ে রান / ডিবাগ কনফিগারেশন ঠিক করা, যা আমি কোড বা একটি প্রত্যাশিত সম্পত্তি ফাইলটিতে কনফিগারেশন না থাকায় অসুবিধাজনক বলে মনে করি।
রাশ ব্যাটম্যান 21

1

সম্ভবত এটি কিছুটা অফ-টপিক, যেমনটি ইতিমধ্যে প্রশ্নের উত্তর দেওয়া হয়েছে তেমনটিই দেখেছি, তবে আমিও একইরকম একটি সমস্যা পেয়েছি। আমার ক্ষেত্রে কেবলমাত্র ইউনিট পরীক্ষার কিছু সংস্থান সংকলনের পরে আউটপুট ফোল্ডারে অনুলিপি করা হয়েছিল। আমার persistence.xml মধ্যে মেটা-INF ফোল্ডারের কপি পেয়েছিলাম কিন্তু কিছুই অন্য

শেষ পর্যন্ত আমি সমস্যাযুক্ত ফাইলগুলির নাম পরিবর্তন করে, প্রকল্পটি পুনর্নির্মাণ এবং তারপরে ফাইলটির নামগুলি মূল ফাইলগুলিতে পরিবর্তন করে সমস্যার সমাধান করেছি। কেন এটি কাজ করেছে তা আমাকে জিজ্ঞাসা করবেন না তবে এটি হয়েছে। আমার সর্বোত্তম অনুমানটি হ'ল, কোনওভাবে আমার ইনটেলিজ প্রকল্পটি ফাইল সিস্টেমের সাথে কিছুটা সমন্বয় সাধন করতে পেরেছিল এবং পুনরায় নামকরণের কাজটি একধরণের অভ্যন্তরীণ "রিসোর্স রিজন" চালিত করেছিল।


1

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

আমি org.apache.logging.log4j.Logger(: fML :) ব্যবহার করছি যখন আমার ব্যবহার করা উচিত ছিল org.apache.log4j.Logger। এই সঠিক লগারটি ব্যবহার করে আমার সন্ধ্যা বাঁচানো হয়েছে।


0

ইউনিট পরীক্ষার জন্য লগ 4j.xML ফাইলের সাথে আমার একই সমস্যা ছিল, উপরের সমস্তটিই করেছেন। তবে বুঝতে পেরেছি কারণ আমি কেবলমাত্র একটি ব্যর্থ পরীক্ষা পুনরায় চালাচ্ছি .... আমি যদি পুরো পরীক্ষার ক্লাসটি পুনরায় চালিত করি তবে সঠিক ফাইলটি নেওয়া হবে। এটি ইন্টেলি-জে 9.0.4 এর অধীনে

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