java.lang.NoClassDefFoundError: org / hamcrest / selfDescribing


110

চালানোর সময় junitপরীক্ষা eclipseআমি এই পেয়ে থাকি Exception:

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing

আমি junit.jarলাইব্রেরি ফাইল যুক্ত করেছি ।

আমি junit.jar বিভিন্ন সংস্করণ চেষ্টা করেছি: 4.4, 4.8, ইত্যাদি

আমি কীভাবে এই ব্যতিক্রমটি ঠিক করব?


আপনার বিবরণ অনুসারে, junit.jarসমস্যার সাথে সম্পর্কিত নয়
আন্দ্রেমনি

1
ইন harcrestবয়াম, অনুক্রমের একই? যেমন আছে org > hamcrest > SelfDescribing, বা এটি জারের মূল ফোল্ডারে রয়েছে?
ড্যানিয়েল


1
এই ত্রুটিটি জুনিট জারের জন্য নাও হতে পারে, হতে পারে আপনার প্রকল্পের কোনও কিছুর
jdurango

1
ধন্যবাদ তবে প্রকল্পে আমার আর কিছু নেই, আমি এই নতুন প্রকল্পটি তৈরি করেছি।
user2013948

উত্তর:


92

hamcrest-all-X.X.jarআপনার ক্লাসপথে যোগ করুন ।

ফেব্রুয়ারী 2015 এর সর্বশেষ সংস্করণটি হ'ল 1.3: http://code.google.com/p/hamcrest/downloads/detail?name=hamcrest-all-1.3.jar&can=2&q=


2
আমি কীভাবে এটিকে ক্লাসপথে যুক্ত করতে পারি বা এটি যুক্ত হয়েছে কিনা তা যাচাই করতে পারি?
টোমা জ্যাটো - মনিকা

সম্মত, কীভাবে এটি করা সহায়ক ছিল। ভাগ্যক্রমে নীচে মন্তব্য এটি ছিল।
MarkII

@ টোমাজাটো প্রথম: ফাইলটি পরীক্ষা করুন। এটা hamcrest-সমস্ত (এটি পেতে গুরুত্বপূর্ণ সব )। আইডিয়া-আইডিইতে একটি নির্ভরতা যুক্ত করা হয় 1. ফাইলটি কপি / লিব্স ফোল্ডারে (বা অন্য কোথাও) পেস্ট করুন ২. "লাইব্রেরি হিসাবে যুক্ত করুন" ফাইলটি ডান ক্লিক করুন 3.. আপনার জাভা-ফাইলগুলিতে আপনার আমদানির বিবরণী পরীক্ষা করুন।
মার্টিন ফেফার

hamcrest-all-X.X.jarঅনেক ছোট যখন যথেষ্ট।
এলিস্ট

1
ফাইল --- প্রকল্পের কাঠামো --- গ্রন্থাগারসমূহ --- '+' --- জাভা --- .... জার (আপনি ডাউনলোড করেছেন) --- ঠিক আছে, এটি 'বাহ্যিক গ্রন্থাগারে' প্রদর্শিত হবে।
সাইমন জেড।

56

জুনিত গিটহাব টিমের ওয়েবসাইট অনুসারে ( https://github.com/junit-team/ জুনit/wiki/Download- junit.jarand- Install ) এবং hamcrest-core.jarJUnit 4.11 ব্যবহার করার সময় উভয়ই ক্লাসপথে প্রয়োজনীয়।

জুনিট এবং হ্যামক্রেষ্টকে অন্তর্ভুক্ত করার জন্য এখানে মাভেন নির্ভরতা ব্লক।

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.1.2</version>
    <scope>test</scope>
</dependency>
<!-- Needed by junit -->
<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-all</artifactId>
    <version>1.3</version>
    <scope>test</scope>
</dependency>

আমি 5 জুনে এটির মুখোমুখি হয়েছি যদিও এটি ছাড়া এটি কাজ করার কথা
নিখিল সাহু

22

আপনাকে কয়েকটি পদক্ষেপ অনুসরণ করতে হবে:

  1. প্রকল্পে রাইট ক্লিক করুন।
  2. তারপথটি নির্মাণের পথটি চয়ন করুন তার মেনু থেকে লাইব্রেরি যুক্ত করুন।
  3. JUnit নির্বাচন করুন এবং তারপরে Next ক্লিক করুন।
  4. JUnit4 তারপরে শেষ করুন।

1
এটি আমার জন্য এটি স্থির করে দিয়েছে। যে কেউ জাভা / Eclipse ব্যবহার করতে অভ্যস্ত নন তাদের পক্ষে এটি অত্যন্ত সহায়ক। আমি আরও উল্লেখ করতে চেয়েছিলাম যে ক্লাসের জন্য আমার প্রশিক্ষক দ্বারা সরবরাহ করা ল্যাবগুলিতে জুনিতের একটি সংস্করণ ছিল (3 সম্ভবত) এটি আমার ল্যাব / গ্রহনের সংস্করণটির সাথে কাজ করে না। আমাকে এটি সরিয়ে 4 টি যোগ করতে হয়েছিল এবং এখন সব ভাল। অনেক ধন্যবাদ.
টনি

কমান্ড প্রম্পট ব্যবহার করে আপনি বিল্ডটি চালাচ্ছেন যখন এটি কাজ করে না। এটি একটি "আইডিই" একমাত্র সমাধান।
পার্থ

16

আমার জন্য কাজ করে: ইন্টেলিজ আইডিইএ 13.1.1, জ ইউনিট 4, জাভা 6

আমি প্রকল্পের পথে ফাইলটি পরিবর্তন করেছি: [PROJECT_NAME] .আইএমএল

প্রতিস্থাপিত:

  <library>
    <CLASSES>
      <root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>

দ্বারা:

  <library name="JUnit4">
    <CLASSES>
      <root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
      <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
      <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>

সুতরাং চূড়ান্ত .iml ফাইলটি হ'ল:

<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="module-library">
      <library name="JUnit4">
        <CLASSES>
          <root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
          <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
          <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES />
      </library>
    </orderEntry>
  </component>
</module>

PS: ফাইলটি সংরক্ষণ করুন এবং ইন্টেলিজ আইডিয়া এটি পুনরায় লোড করতে দেবেন না। শুধু একবার.


দুর্দান্ত দুর্দান্ত !! আমার বর্তমান প্রকল্পে আমাকে সহায়তা করে।
MarkII

4

আপনার জুনিট-ডিপ.জার দরকার কারণ জুনিট.জারের পুরানো হ্যামক্রস্ট ক্লাসের একটি অনুলিপি রয়েছে।


3

এই সমস্যাটি আপনার ক্লাসপথ মিস হ্যামকারেস্ট-কোর-১.৩.জরের কারণে। এটি সমাধানের জন্য হ্যামস্ট্রেস্ট-কোর-১.৩.জার যুক্ত করুন কারণ আপনি আপনার ক্লাসপথে জুনিট -৪.এক্সএক্স.জার যুক্ত করেন।

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

javac -d ../../../../bin/ -cp ~/libs/junit-4.12.jar:/home/limxtop/projects/algorithms/bin  MaxHeapTest.java 

java -cp ../../../../bin/:/home/limxtop/libs/junit-4.12.jar:/home/limxtop/libs/hamcrest-core-1.3.jar org.junit.runner.JUnitCore com.limxtop.heap.MaxHeapTest

2

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


2

নেটবিন ব্যবহার করার মত যদি কেউ এখানে থাকে এবং একই সমস্যা হয় তবে আপনাকে যা করতে হবে তা হ'ল

  • টেস্টলাইব্রিগুলিতে রাইট ক্লিক করুন
  • অ্যাড লাইব্রেরি ক্লিক করুন
  • JUnit নির্বাচন করুন এবং লাইব্রেরি যুক্ত ক্লিক করুন
  • প্রক্রিয়াটি পুনরাবৃত্তি করুন তবে এবার হামক্রস্টে ক্লিক করুন এবং লাইব্রেরিটি ক্লিক করুন

এই সমস্যার সমাধান করা উচিত


আপনাকে ধন্যবাদ, এটি আমার জন্য কাজ করে। আমি ইতিমধ্যে JUnit লাইব্রেরি পেয়েছিলাম কিন্তু আমি হ্যামক্রস্ট অনুপস্থিত ছিল।
এস। মায়ল


1

এটি ক্লাসপাথ সমস্যার মতো শোনাচ্ছে, তাই এটি নিয়ে যাওয়ার জন্য কয়েকটি আলাদা উপায় রয়েছে are Org / hamcret / স্ব-বিবরণ কোথা থেকে আসে? এটা কি তোমার ক্লাস নাকি আলাদা জারে?

আপনার প্রকল্পের বিল্ড পাথ এবং লাইব্রেরি ট্যাবে যাওয়ার চেষ্টা করুন, একটি লাইব্রেরি যুক্ত করুন। আপনি আপনার প্রকল্পে JUnit চয়ন করতে সক্ষম হওয়া উচিত। আপনার প্রকল্পে JUnit জার ফাইল থাকার চেয়ে এটি কিছুটা আলাদা।

JUnit পরীক্ষার জন্য আপনার রান কনফিগারেশনে ক্লাসপাথটি পরীক্ষা করুন। আপনার ক্লাসপথটি সেই স্ব-বর্ণনামূলক ক্লাসটি দেখতে পাবে তা নিশ্চিত করে আপনি সম্ভবত এটি সংশোধন করতে পারেন। Eclipse এ রান অপশনটিতে JUnit বিকল্পের জন্য বিকল্পগুলির একটি আলাদা সেট রয়েছে।


এটি ক্লাসপথের ইস্যু নয় কারণ আমি ইতিমধ্যে নির্মাণের পথে জুনিট লাইব্রেরি ফাইল যুক্ত করেছি, এমনকি জুনিট লাইব্রেরিতে হ্যামকারেস্টের সি রেফারেন্স রয়েছে যেমন সি: / দেবদেবসুলস / স্লিপস-এসডি কে ৪.২.১-উইন -৩-x86__64 / ক্লিপস /plugins/org.hamcrest.core.source_1.1.0.v20090501071000.jar
user2013948

আপনার প্রতিক্রিয়াটির জন্য ধন্যবাদ, টেস্টএনজি ঠিকঠাক কাজ করছে, দেখে মনে হচ্ছে আমাকে জুনিটে ছাড়তে হবে
user2013948

আমি কেবল ভাবছিলাম যে আপনি যখন ইউনিট পরীক্ষা হিসাবে কিছু চালান তখন JUnit আসলে একটি নতুন JVM শুরু হয়। এর অর্থ এটি কখনও কখনও কখনও আপনার প্রকল্পের চেয়ে আলাদা ক্লাসপাথ ব্যবহার করে। কখনও কখনও এই জাতীয় জিনিসগুলি ডিবাগ করার জন্য আমি জাভা ক্লাসপাথটি আমার কোড থেকে মুদ্রণ করি, তাই এটি কার্যকর হলে আমি পার্থক্যগুলি তুলনা করতে পারি। java-tips.org/java-se-tips/java.lang/…
লোগান

1

যদি কোনও আরসিপি প্রকল্পে সমস্যা দেখা দেয় তবে এটি হতে পারে কারণ ইউএনইটি সুস্পষ্টভাবে আমদানি করা হয়েছে।

আপনার plugin.xmlআন্ডার Dependenciesট্যাবটির জন্য সম্পাদকটি পরীক্ষা করুন , org.junitআমদানিকৃত প্যাকেজগুলি থেকে সরান এবং org.junitপ্রয়োজনীয় প্লাগ-ইনগুলিতে যুক্ত করুন।


1

সমস্যাটি যখন আপনি দেখায় গ্রহটি সেট আপ করেন JRE পরিবর্তে JDK । JRE হয়েছে junit4.jarlib/extফোল্ডারের, কিন্তু না hamcrest.jar:) তাই সমাধান অন্ধকার ইনস্টল JREs চেক বিদ্যমান সরাতে চান এবং আপনার জন্য একটি নতুন এক ইশারা তৈরি করা JDK


1

সমস্যাটি সমাধানের সহজতম উপায় হ্যামক্রেষ্ট-কোড.জারের সর্বশেষতম সংস্করণটি আপনার ক্লাসস্প্যাটে অনুলিপি করা হচ্ছে এটি আপনার অ্যাপ্লিকেশনটি সংকলন ও পরিচালনার জন্য প্রয়োজনীয় অন্যান্য .জার ফাইল সংরক্ষণ করে।

যে যেমন হতে পারে: সি: / পিপীলিকা / lib


1

আপনি যখন কমান্ড লাইনের মাধ্যমে পিপীলিকা চালাবেন এটি ঘটে। অন্তর্নিহিত ব্যবহারকারীর নির্ভরতা ক্লাসপথে শেষে যুক্ত করা হয় এবং প্রকল্প-যুক্ত ক্লাসপাথের চেয়ে অগ্রাধিকার গ্রহণ করে। -nouserlibপতাকা দিয়ে পিপীলিকা চালান । অন্তর্নিহিত নির্ভরতা ক্লাসপথ থেকে বাদ দেওয়া হবে।


1

এই সমস্যাটি সমাধানের জন্য আরও ভাল উত্তর রয়েছে। নির্ভরতা যুক্ত করুন

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-all</artifactId>
    <version>1.3</version>
    <scope>test</scope>
</dependency>


0

আপনাকে কয়েকটি পদক্ষেপ অনুসরণ করতে হবে:

  • প্রকল্পে রাইট ক্লিক করুন।
  • বিল্ড পাথ এবং তার মেনু থেকে লাইব্রেরি যুক্ত করুন চয়ন করুন।
  • JUnit নির্বাচন করুন এবং তারপরে Next ক্লিক করুন।
  • JUnit4 তারপরে শেষ করুন।

এটি আমার পক্ষে কাজ করে ...

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