คราส - java.lang.ClassNotFoundException


96

เมื่อพยายามเริ่ม JUnit-Test จาก Eclipse ฉันจะได้รับ "ClassNotFoundException" เมื่อเรียกใช้ "mvn test" จากคอนโซลทุกอย่างทำงานได้ดี นอกจากนี้ไม่มีรายงานปัญหาใน Eclipse

โครงสร้างโครงการของฉันมีดังต่อไปนี้:

  • โครงการแม่ (pom-packaging)
    • โครงการเว็บ (บรรจุภัณฑ์สงคราม - การทดสอบ JUnit ของฉันอยู่ที่นี่)
    • โครงการ Flex
    • โครงการกำหนดค่า

แก้ไข: ไม่พบคลาสได้อย่างไร? เป็นแอปพลิเคชัน HelloWorld ที่เรียบง่ายโดยไม่มีไลบรารีพิเศษ

นี่คือการกำหนดค่าการเรียกใช้ JUnit ของฉัน: ข้อความแสดงแทน http://www.walkner.biz/_temp/runconfig.png


Testclass (แต่อย่างที่บอกมันใช้ไม่ได้กับ HelloWorld แบบธรรมดาเช่นกัน ... ):

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import biz.prognoserechnung.domain.User;
import biz.prognoserechnung.domain.UserRepository;
import biz.prognoserechnung.domain.hibernate.UserHibernateDao;

public class UserDaoTest {
/**
 * the applicationcontext.
 */
private ApplicationContext ctx = null;

/**
 * the user itself.
 */
private User record = null;

/**
 * Interface for the user.
 */
private UserRepository dao = null;

@Before
public void setUp() throws Exception {
String[] paths = { "WEB-INF/applicationContext.xml" };
ctx = new ClassPathXmlApplicationContext(paths);
dao = (UserHibernateDao) ctx.getBean("userRepository");
}

@After
public void tearDown() throws Exception {
dao = null;
}

@Test
public final void testIsUser() throws Exception {
Assert.assertTrue(dao.isUser("John", "Doe"));
}

@Test
    public final void testIsNoUser() throws Exception {
    Assert.assertFalse(dao.isUser("not", "existing"));
        Assert.assertFalse(dao.isUser(null, null));
        Assert.assertFalse(dao.isUser("", ""));
    }
}

3
ฉันได้รับข้อผิดพลาดเดียวกันเมื่อพยายามที่จะใช้ระดับ HelloWorld ง่ายไม่มี JUnit รวม ... เพิ่มเติมว่า: java.lang.noclassdeffounderror: HelloWorld เกิดจาก: java.lang.ClassNotFoundException: HelloWorld
swalkner

ClassNotFoundException ถูกโยนทิ้งเมื่อพยายามสะท้อนถึงคลาส NoClassDefFoundError ถูกโยนทิ้งเมื่อคุณพยายามใช้คลาสในการเรียกใช้เมธอดปกติ
akf

คุณสามารถแสดงรหัสสำหรับชั้นเรียนทดสอบของคุณได้ไหม
akf

คุณได้เปิดหรือปิดบิวด์โดยอัตโนมัติหรือไม่
จอน

สร้างโดยอัตโนมัติเปิดอยู่
swalkner

คำตอบ:


196

ฉันเจอสถานการณ์นั้นหลายครั้งและหลังจากพยายามหลายครั้งฉันก็พบวิธีแก้ปัญหา

ตรวจสอบเส้นทางการสร้างโครงการของคุณและเปิดใช้งานโฟลเดอร์ผลลัพธ์เฉพาะสำหรับแต่ละโฟลเดอร์ ไปทีละโฟลเดอร์ซอร์สของโปรเจ็กต์ของคุณและตั้งค่าโฟลเดอร์ผลลัพธ์ที่ maven จะใช้

ตัวอย่างเช่นโครงการเว็บของคุณsrc/main/javaควรtarget/classesอยู่ภายใต้โครงการเว็บชั้นเรียนทดสอบควรtarget/test-classesอยู่ภายใต้โครงการเว็บด้วยเช่นกัน

การใช้การกำหนดค่านี้จะช่วยให้คุณสามารถดำเนินการทดสอบหน่วยใน eclipse

คำแนะนำเพิ่มเติมอีกประการหนึ่งหากการทดสอบโครงการเว็บของคุณต้องการไฟล์การกำหนดค่าบางไฟล์ที่อยู่ภายใต้ทรัพยากรโปรดรวมโฟลเดอร์นั้นเป็นโฟลเดอร์ต้นทางและทำการกำหนดค่า build-path ที่เหมาะสม

หวังว่าจะช่วยได้


1
สวัสดีคาร์ลอสขอบคุณมากสำหรับคำแนะนำของคุณ แต่มันไม่ได้ช่วยโชคร้าย ฉันเพิ่ม / src / main / java (เป้าหมาย / คลาส) และ / src / test / java (เป้าหมาย / คลาสทดสอบ) ไปยังโฟลเดอร์ต้นทางเช่นเดียวกับ src / main / resources (applicationContext.xml คุณสมบัติบางอย่าง - เป้าหมาย / คลาส ). ปัญหาเดียวกัน - เมื่อเริ่มต้น src / test / java / UserDaoTest.java เป็น JUnit-test จาก Eclipse ฉันได้รับ "Class not found UserDaoTest java.lang.ClassNotFoundException: UserDaoTest" อย่างน้อยก็แตกต่างกันเล็กน้อยจากข้อความแสดงข้อผิดพลาดเดิม ...
swalkner

5
คุณมาถูกทางแล้วตรวจสอบว่าคลาส UserDaoTest อยู่ในโฟลเดอร์เอาต์พุตที่เกี่ยวข้องภายในระบบไฟล์ของคุณหรือไม่ (ดังที่คุณทราบ Eclipse รวบรวมไฟล์ต้นฉบับทั้งหมดของคุณและวางไว้ในโฟลเดอร์เอาต์พุตที่ระบุและอื่น ๆ เพื่อให้เป็น สามารถเปิดการทดสอบได้) หากคลาสไม่ปรากฏในโฟลเดอร์ผลลัพธ์ให้ตรวจสอบตัวกรองการรวม / การยกเว้นของเส้นทางการสร้างสำหรับโฟลเดอร์เฉพาะนี้ โชคดี.
Carlos

สำหรับฉันสิ่งนี้ไม่สามารถแก้ปัญหาได้ กลับกลายเป็นว่ามันเป็นปัญหาของ AspectJ หากคุณใช้ AspectJ ลองลบและอ่านความสามารถของ AspectJ - เหมาะสำหรับฉัน
Stefan Haberl

1
มีปัญหาเดียวกัน ฉันคิดว่ามันเป็นโปรเจ็กต์ eclipse - maven - git issue นั่นไม่ได้ จำกัด ให้แคบลง แต่การล้างโฟลเดอร์ข้อมูลเมตาทั้งหมด (.project,. ใดก็ตาม ... ฉันยังพบบางสิ่งที่ไม่รู้ว่า eclipse-junit ทำได้: ไฮไลต์วิธีการทดสอบและการเลือก RunAs-Junit จะรันเฉพาะวิธีทดสอบนั้นเท่านั้นไม่ใช่การทดสอบทั้งหมด! ไม่มีอีก@Ignoreแล้วในสถานที่และทางลัดกุย!
bgs

กำลังประสบปัญหาเดียวกันฉันใช้ Eclipse -> Project -> clean และใช้งานได้ Mvn clean ไม่ทำงาน
Nutan

47

แนวทาง Carlos ช่วยได้! คราส - java.lang.ClassNotFoundException

ลองตรวจสอบ classpath ของ junit run configuration:

  1. เปิดการกำหนดค่าการวิ่งของคุณ
  2. คลิกที่ jUnit-Test ที่คุณต้องการเริ่ม
  3. ไปที่แท็บ classpath
  4. ลองเพิ่มโฟลเดอร์ (คลิกที่รายการผู้ใช้คลิกขั้นสูงคลิกที่เพิ่มโฟลเดอร์คลิกตกลงและค้นหาโฟลเดอร์ผลลัพธ์สำหรับคลาสทดสอบของคุณ (ที่คุณพบในเส้นทางการสร้าง java projektproperties แหล่งที่มา))

เหมาะกับฉัน


2
นี่ไม่แปลกมากเหรอ? มันใช้ได้ผลสำหรับฉัน แต่คลาสเป้าหมายเป็นส่วนหนึ่งของคลาสพา ธ การสร้างสำหรับโปรเจ็กต์ ไม่สมเหตุสมผลเท่าไหร่ที่คุณต้องเพิ่มชั้นเรียนเฉพาะ
Jose Muanis

ฉันไม่คิดว่าการดำเนินการนี้จำเป็นต้องเพิ่มไดเร็กทอรีที่จำเป็นมากเท่ากับทริกเกอร์บางสิ่งบางอย่างให้โหลดซ้ำ คุณสามารถลบไดเร็กทอรีที่เพิ่มใหม่ได้ทันทีหลังจากรันสำเร็จและควรใช้งานได้ตามปกติ นอกจากนี้ความคิดเห็นด้านบนก็ถูกต้อง อาจต้องการเพิ่มคะแนนการยกย่องที่อ้างอิงจากคาร์ลอสด้วย
แย่มาก

ฉันพบคำตอบสำหรับคำถาม SO อื่นที่เป็นประโยชน์กับปัญหานี้มากขึ้น: stackoverflow.com/a/5718520/901641
ArtOfWarfare

16

build classpath ของคุณถูกต้องซึ่งเป็นเหตุผลที่คุณสามารถคอมไพล์ ต้องตรวจสอบ classpath สำหรับ JUnit ของคุณ ไปที่เมนู Run และเลือก 'open run dialog' ในนั้นคุณจะเห็นต้นไม้ทางด้านซ้ายโดยมี JUnit เป็นตัวเลือก เปิดโหนดนั้นแล้วค้นหาและเลือกการทดสอบของคุณ ในบานหน้าต่างด้านขวาคุณจะเห็นแท็บสำหรับ classpath ตรวจสอบให้แน่ใจว่าจะพบชั้นเรียนของคุณที่การทดสอบพยายามสร้างอินสแตนซ์

แก้ไข:

ดูเหมือนว่าจะเป็นปัญหากับ maven และลักษณะการทำงานหลังจากรีลีสเปลี่ยนโฟลเดอร์เอาต์พุต Eclipse เริ่มต้น ฉันได้เห็นวิธีแก้ปัญหาที่อธิบายไว้ที่

  • วาง maven ลงใน bootclasspath ด้านบน jre works หรือ
  • วิ่งmvn clean testไม่หลอกลวงหรือ
  • การรีเฟรชโปรเจ็กต์ eclipse ทั้งหมดของคุณทำให้การสร้างใหม่ช่วยแก้ไขปัญหา
  • ไปที่โปรเจ็กต์ของคุณและเลือก Maven-> Update Configuration เพื่อแก้ปัญหา

ในสามรายการแรกมีรายงานปัญหาที่เกิดซ้ำ คนสุดท้ายดูดีที่สุดสำหรับฉัน แต่ถ้ามันไม่ได้ผลโปรดลองอย่างอื่น

ที่นี่และที่นี่คือข้อมูลบางส่วน


1
น่าเสียดายที่ "Maven => Update Configuration" ไม่สามารถแก้ปัญหาได้เลย ... การย้อนกลับเป็นจริง มันเป็นการลบการกำหนดค่าเส้นทางการสร้าง ... หรือนั่นหมายความว่าการกำหนดค่าอื่น ๆ ไม่ดี?
swalkner

ตามที่ @swalkner ชี้ไว้: Maven => การกำหนดค่าการอัปเดตจะทำลายการกำหนดค่าเส้นทางการสร้าง ด้วยเหตุผลบางอย่างที่ทำให้ฉันหมดปลั๊กอินจะตั้งค่าตัวกรองการยกเว้นซึ่งฉันมักจะต้องลบด้วยตนเองหลังจากเรียกใช้คำสั่ง
Stefan Haberl

"ไปที่เมนู Run และเลือก" open run dialog " ห๊ะ ?? นั่นอยู่ไหน
Berit Larsen

5

การเปิดใช้งาน[x] ใช้ JAR ชั่วคราวเพื่อระบุคลาสพา ธ (เพื่อหลีกเลี่ยงข้อจำกัดความยาวคลาสพา ธ )ภายในแท็บคลาสพา ธของคอนฟิกูเรชันการรันเป็นเคล็ดลับสำหรับฉัน

หากโปรเจ็กต์ของคุณมีขนาดใหญ่และคุณมีการอ้างอิงจำนวนมากจากโปรเจ็กต์พี่น้องอื่น ๆ และการอ้างอิง maven คุณอาจถึงขีด จำกัด ความยาวของคลาสพา ธ และนี่ดูเหมือนจะเป็นทางออกเดียว (นอกเหนือจากการทำให้ไดเร็กทอรีไปยัง repo maven ในเครื่องของคุณให้สั้นลง (ของเราเริ่มแล้ว ที่ c: / m2)

ป้อนคำอธิบายภาพที่นี่


4

ปัญหาอาจไม่มีไฟล์คลาสในโฟลเดอร์บิลด์ของคุณ ทางออกหนึ่งคือทำความสะอาดโครงการและสร้างใหม่


3

มีคำแนะนำที่ซับซ้อนมากมายที่นี่

ฉันพบปัญหานี้หลายครั้งกับโครงการ Maven หลังจากย้ายทรัพยากรไปรอบ ๆ โดยลาก 'n' วางหรือทำการปรับโครงสร้างชื่อคลาสใหม่

หากสิ่งนี้เกิดขึ้นให้คัดลอก (ไม่ย้าย) ปัญหา Test Case ( .java) ผ่านเทอร์มินัล / ไฟล์เบราว์เซอร์ไปยังตำแหน่งอื่นright-click -> Deleteใน Eclipse และเลือกที่จะลบบนดิสก์เมื่อได้รับตัวเลือกให้ย้าย / คัดลอกไฟล์ที่คัดลอกไปยังตำแหน่งไฟล์ต้นฉบับ จากนั้นเลือกโปรเจ็กต์ของคุณใน Eclipse แล้วกด F5 เพื่อรีเฟรชทรัพยากร

การดำเนินการนี้ทำได้ง่ายและรวดเร็วและได้แก้ไขปัญหาอย่างถาวรให้ฉันทุกครั้ง


ฉันอยากถามว่าจะแก้ไขปัญหาของคุณอย่างถาวรหรือไม่หรือทุกครั้ง ... แต่ฉันเข้าใจในสิ่งที่คุณหมายถึงและนี่เป็นเคล็ดลับสำหรับฉันอย่างน่าอัศจรรย์
Amos M. Carpenter

2

นี่คือวิธีแก้ปัญหาของฉัน แน่นอนว่าหลายสิ่งหลายอย่างสามารถทำให้เกิดขึ้นได้ สำหรับฉันมันคือ Maven2 (ไม่ใช่ปลั๊กอินสำหรับ Eclipse) กำลังตั้งค่าโปรไฟล์ eclipse ให้ใช้ตัวสร้างอื่น (ด้าน J) แต่ฉันไม่มีปลั๊กอินใน eclipse

http://rbtech.blogspot.com/2009/09/eclipse-galileo-javalangclassnotfoundex.html

ไชโย Ramon Buckland


2

สิทธิของ Sachin: แม้จะมีเส้นทางคลาสที่ถูกต้อง แต่แท็บปัญหาจะแสดงว่าการอ้างอิงบางอย่างหรือทรัพยากร / โครงการมีข้อผิดพลาดที่ต้องได้รับการแก้ไขเพื่อให้ maven สร้างและสร้างคลาสโดยอัตโนมัติเมื่อคุณสร้างหรือทำการเปลี่ยนแปลงในคลาสทดสอบของคุณ .

“ หวัดดี

กรกฎาคมเก่ามาก (ปีไหน) แต่ฉันมีปัญหาเดียวกัน

ปัญหาที่เกิดขึ้นจริงพบว่า eclipse ไม่สามารถสร้างไฟล์คลาสสำหรับไฟล์ java ได้เนื่องจาก classpath ถูกต้อง

ดูแท็บปัญหาและตรวจสอบว่าโครงการของคุณขาดบางสิ่ง / ไฟล์หรือไม่ คุณสามารถสร้าง proj ใหม่และเพิ่มไฟล์ทีละไฟล์และสร้างได้จนกว่าจะหยุดการคอมไพล์และสร้างคลาส (ตรวจสอบพื้นที่ทำงาน / proj / bin / package / โฟลเดอร์สำหรับคลาส)

มันแปลก แต่จริง ecplise ล้มเหลวในการปฏิบัติตามเนื่องจากไฟล์ java 4 จาก 20 ไฟล์ใช้ภาพเดียวที่หายไป และด้วยเหตุนี้จึงไม่มีการคอมไพล์ไฟล์ java

CLASSPATH ไม่ใช่ปัญหาที่นี่ "


2

เรามีข้อยกเว้นที่แน่นอน (โดยใช้ SpringSource Tools, tomcat, บน Win7) และสาเหตุคือเราได้ refactored ชื่อไฟล์ (เปลี่ยนชื่อไฟล์) จาก SubDomain.java เป็น Subdomain.java (D vs d) และมันชนกันแม้ว่า SpringSource คือ แสดงชื่อใหม่ Subdomain.java วิธีแก้ปัญหาคือการลบไฟล์ (ผ่าน SpringSource) และสร้างอีกครั้งภายใต้ชื่อ Subdomain.java และคัดลอกวางเนื้อหาเดิม ง่ายๆแค่นั้นเอง


ฉันมักจะเรียกใช้กรณีการทดสอบของ junit จนกระทั่งฉันรันโปรแกรมที่ตรวจสอบความเข้ากันได้ของพีซีก่อนที่จะอัปเกรด windows ดูเหมือนจะพังบางอย่างฉันไม่สามารถเรียกใช้กรณีทดสอบ JUnit ได้อีก (และคำตอบที่มีอยู่ทั้งหมดใช้ไม่ได้)
CoffeDeveloper

2

ฉันมีปัญหาเดียวกันแน่นอน แต่ฉันคิดออก! ไปที่ไฟล์โครงการของคุณแล้วคลิกขวาที่ไฟล์จากนั้นคลิกRefreshหรือกด F5 จากนั้นลองเรียกใช้ หากยังใช้งานไม่ได้ให้ลืมมันไปเนื่องจากฉันมีปัญหาเดียวกันแน่นอนและหมายความว่า Eclipse เวอร์ชันของคุณเป็นขยะ


1

คลิกproject->properties->Java build path->Sourceและตรวจสอบว่าแต่ละsrcโฟลเดอร์ยังคงมีอยู่หรือเพิ่งถูกลบออก แก้ไขเส้นทางที่ขาดหายไปหรือเส้นทางที่ไม่ถูกต้องและสร้างใหม่และเรียกใช้การทดสอบ มันจะแก้ไขปัญหา


1

สิ่งที่ฉันทำคือ Properties -> Java Build Path -> Order and Export -> เปิดใช้งานกล่องที่ไม่ได้ทำเครื่องหมายทั้งหมด -> ย้าย Junit ไปจนสุด


1

พยายามแล้ว

Link : [here][1]

Open your run configurations
Click on the jUnit-Test you want to start
go to the classpath tab
Try to add a folder (click on user entries, click on advanced, click on add folders,click on ok and search the outputfolder for your test classes(those you find under projektproperties java build path, source))

ทำงานหลังจาก

ทดสอบ Maven 2 LifeCycle >>


1

ฉันได้ลองวิธีแก้ปัญหาทั้งหมดในหน้านี้แล้ว: รีเฟรชโปรเจ็กต์สร้างใหม่โปรเจ็กต์ทั้งหมดคลีนรีสตาร์ท Eclipse นำเข้าโปรเจ็กต์ใหม่ (แม้กระทั่ง) สร้าง maven ใหม่และรีเฟรช ไม่มีอะไรทำงาน สิ่งที่ได้ผลคือการคัดลอกชั้นเรียนเป็นชื่อใหม่ซึ่งทำงานได้ดี - แปลก แต่จริง

หลังจากทนกับสิ่งนี้มาระยะหนึ่งฉันเพิ่งแก้ไขโดย:

  1. ผ่านทางRunเมนู
  2. เลือก Run Configurations
  3. เลือกการกำหนดค่าการรันที่เชื่อมโยงกับการทดสอบหน่วยของคุณ
  4. การลบรายการออกRun Configurationโดยการกด Delete หรือคลิก X สีแดง

ต้องมีบางอย่างถูกทำให้เสียหายด้วยการกำหนดค่าการเรียกใช้แคช


1
หลังจากเสียเวลามากเกินไปฉันก็ทำตามขั้นตอนข้างต้น จากนั้นฉันก็ตัดสินใจอย่างกล้าหาญที่จะลบการกำหนดค่าการทดสอบการรันทั้งหมดและตอนนี้ไม่พบการทดสอบของฉันใน classpath แม้ว่าการกำหนดค่าการรันใหม่จะแสดงโครงการในนั้นอย่างชัดเจน (โดยมีการอ้างอิง maven อยู่ด้านล่าง) ฉันลืมไปว่าคราสเปราะเป็นอย่างไร หลังจากนั้นจะไม่สามารถรันการทดสอบด้วย eclipse ได้ (ก่อนที่ฉันจะเลือกการทดสอบเฉพาะ - ตกลง) สุดท้ายฉันลองใช้คำแนะนำ KomodoDave ด้านล่าง สิ่งที่คงที่ ... น่าทึ่งกับลูปที่คุณต้องข้ามผ่านด้วยอุดมการณ์นี้ (ล่าสุดของซีรีส์ .. )
justin

1

การทดสอบ JUnit จากภายในคราสทำให้ฉันมี NoClassDefFoundError ด้วย การเรียกใช้ 'mvn clean test' จากบรรทัดคำสั่งทำให้ฉันมีข้อผิดพลาดต่อไปนี้ในหลาย ๆ ไห: ส่วนหัว LOC ไม่ถูกต้อง (ลายเซ็นไม่ถูกต้อง) การลบไหเหล่านี้จากที่เก็บ m2 ในพื้นที่และเรียกใช้ 'mvn clean test' อีกครั้งช่วยแก้ปัญหาของฉันได้



1

โดยปกติปัญหานี้จะเกิดขึ้นในขณะที่เรียกใช้javaเครื่องมือแอ็พพลิเคชัน java ไม่พบไฟล์คลาส

ส่วนใหญ่อยู่ในโครงการ Maven เราเห็นปัญหานี้เพราะคราส Maven ซิงค์ปัญหา วิธีแก้ปัญหานี้: Maven-> Update Configuration


1

ฉันขอแนะนำให้ลองเพิ่มสิ่งนี้ลงในอาร์กิวเมนต์ VM

-verbose:class -verbose:module -Xdiag

จากนั้นคุณสามารถดีบักได้จาก Eclipse ซึ่งควรพิมพ์ข้อความเช่น;

java.lang.ClassNotFoundException: org.adligo.somewhere.Foo
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:760)
    at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:655)

จากสิ่งนี้คุณสามารถตั้งค่าเบรกพอยต์บน LancherHelper.java 760 เพื่อดีบัก Eclipse Lanucher เอง ในกรณีของฉันฉันสังเกตเห็นว่าคลาสพา ธ ของผู้ใช้ดูเหมือนจะเป็นโมฆะแม้ว่าฉันจะมีหลายไหอยู่ในนั้นในการกำหนดค่า Lanuch


0

โปรดชี้ไปที่การแก้ไข JDK จาก Windows> การตั้งค่า> Java> JRE ที่ติดตั้ง

อย่าชี้ไปที่ jre ชี้ไปที่ JDK ที่เหมาะสม ฉันชี้ไปที่ JDK 1.6U29 และรีเฟรชโครงการ

ต่อจากนี้ปัญหาจะหมดไปและการทดสอบ jUnit ทำงานได้ดี

ขอบคุณ
-Tapas


0

ฉันพบข้อผิดพลาดเดียวกันใน Eclipse เมื่อเร็ว ๆ นี้กล่าวคือ Eclipse IDE ไม่พบคลาสทดสอบหน่วยไม่ว่าฉันจะเปลี่ยนการกำหนดค่าอย่างไร เรียนรู้จากโพสต์ก่อนหน้านี้ที่นี่และในเว็บไซต์อื่น ๆ ฉันได้ตรวจสอบสองครั้งและตรวจสอบคลาสพา ธ และแหล่งข้อมูลสามครั้งแล้วเลื่อนขึ้นและลงโฟลเดอร์ต้นทางและไลบรารีทั้งใน "Run Configuration" และ "Java Build Path "config windows และฉันยังทำความสะอาด Project และสร้างขึ้นใหม่ แต่ไม่มีเทคนิคใดที่ใช้ได้ผลสำหรับฉัน โปรเจ็กต์ Java เฉพาะคือโปรเจ็กต์ที่คอมไพล์ ANT เก่าและมีไหจำนวนมากรวมอยู่ในไลบรารี Eclipse

จากนั้นฉันเปลี่ยนคลาสทดสอบหน่วยเพื่อเพิ่มเมธอด main () และคลิกขวาเพื่อ "Run As" แอปพลิเคชัน Java แทนการทดสอบ JUnit ทันใดนั้นดูเหมือนว่า Eclipse จะตื่นขึ้นมาและระบุคลาสได้อย่างถูกต้อง หลังจากนั้นฉันเปลี่ยนกลับเป็นแอปพลิเคชันทดสอบหน่วยและยังใช้งานได้

นี่ดูเหมือนจะเป็นบั๊กใน Eclipse ฉันเดาว่าไลบรารีจำนวนมาก (> 260) อาจสับสนกับความสามารถของ JVM ในการค้นหาคลาส JUnit ของฉัน


0

ฉันก็ประสบปัญหานี้เช่นกันและสามารถหาวิธีแก้ปัญหาที่เพียงพอสำหรับกรณีของฉันได้ หากโปรเจ็กต์ Eclipse ของคุณมีไฟล์. classpath ในรูทโปรเจ็กต์ของคุณ (ดูในมุมมองเนวิเกเตอร์แทนมุมมอง Package Explorer) ตรวจสอบให้แน่ใจว่าคลาส Maven ของคุณจะปรากฏก่อนคลาสแพ ธ JRE Container ของคุณ

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>

หากโปรเจ็กต์ของคุณไม่มีไฟล์. classpath คุณสามารถแก้ไข Java Build Path ของโปรเจ็กต์ของคุณเพื่อสลับลำดับและเอ็กซ์พอร์ต หากโปรเจ็กต์ของคุณมีไฟล์. classpath และคุณเปลี่ยนลำดับของคุณใน Java Build Path เท่านั้นคุณจะเห็นว่าการสั่งซื้อไม่ได้รับผลกระทบและปัญหาจะยังคงเกิดขึ้น

และโครงการ -> การทำความสะอาดจะไม่ทำร้ายสิ่งต่าง ๆ หลังจากที่คุณทำการเปลี่ยนแปลง


0

ตรวจสอบให้แน่ใจว่าการกำหนดค่าการเปิดตัวการทดสอบของคุณไม่มีบรรทัดต่อไปนี้หรือลองเปิดใช้งานการจัดการการพึ่งพา Maven แบบอัตโนมัติ

<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>

0

ฉันพยายามทุกอย่างที่ผมอ่านในโพสต์นี้มานานและอย่างไม่น่าเชื่อสิ่งที่ทำงานสำหรับฉันเป็นมากกว่าการคลิกที่ระดับการทดสอบและเลือกRun as JUnit testคลิกที่การทดสอบวิธีการJUnit testและทำงานได้ ฉันมีความคิดว่าทำไมไม่มี?


0

การลบโปรเจ็กต์จาก eclipse (ไม่ใช่จากฮาร์ดดิสก์) ซึ่งเป็นการทำความสะอาดพื้นที่ทำงานและนำเข้าโปรเจ็กต์ใหม่ไปยัง eclipse อีกครั้งได้ผลสำหรับฉัน


0

ผมมีปัญหาเดียวกัน. สิ่งที่ฉันทำคือ

ผม). สร้างสิ่งประดิษฐ์ Eclipse

mvn clean eclipse:eclipse

ii) รีเฟรชโปรเจ็กต์และรันการทดสอบจูนิทของคุณอีกครั้ง ควรทำงานได้ดี


0

การเปลี่ยนลำดับของสิ่งประดิษฐ์ classpath ใน Java Build Path ช่วยแก้ปัญหาให้ฉัน

  1. คลิกขวาที่โครงการและไปที่เส้นทางการสร้างโครงการ
  2. ไปที่แท็บสั่งซื้อและส่งออกแล้วย้ายไลบรารีระบบ JRE ไปไว้หลังแหล่งข้อมูล

สิ่งนี้ควรแก้ไขได้


0

JUnit 4.4 ไม่รองรับการรวม JMockit / JUnit รองรับเฉพาะเวอร์ชัน 4.5 หรือใหม่กว่าเท่านั้น


0

ในขณะที่ใช้งานเว็บแอปพลิเคชันพวกเราส่วนใหญ่จะได้รับข้อยกเว้นนี้ เมื่อคุณได้รับข้อผิดพลาดนี้คุณได้วางไฟล์. class ไว้ในโฟลเดอร์ที่เหมาะสม

ในแอปพลิเคชันเว็บไฟล์. class ทั้งหมดควรอยู่ในโฟลเดอร์ WEB-INF \ Classes หากคุณใช้งานเว็บแอปใน Eclipse โปรดทำตามขั้นตอน

ขั้นตอนที่ 1: คลิกขวาที่โฟลเดอร์ Project และเลือก Properties ขั้นตอนที่ 2: คลิกที่ "Java Build Path" คุณจะเห็นแท็บต่างๆเช่น "source", "projects", "libraries" เป็นต้นขั้นตอนที่ 3: เลือกโฟลเดอร์ Source ภายใต้สิ่งนี้คุณจะเห็นรายละเอียดโครงการของคุณขั้นตอนที่ 4: ในโฟลเดอร์ "Source" คุณจะเห็นตัวเลือก Default Output Folder ที่นี่คุณต้องให้โฟลเดอร์คลาสภายใต้ WEB-INF เพียงแค่ให้เส้นทางเช่น projectname / WebContent / WEB-INF / คลาสโครงสร้างขึ้นอยู่กับแอปพลิเคชันของคุณโปรดอย่าลืมที่นี่คุณไม่จำเป็นต้องสร้างโฟลเดอร์ "คลาส" Eclipse จะสร้างให้คุณ ขั้นตอนที่ 5: คลิกที่ "ตกลง" และทำความสะอาดโครงการและสร้าง เพียงเท่านี้แอปของคุณก็จะทำงานทันที


0

ฉันเห็น Eclipse - java.lang.ClassNotFoundException เมื่อรันการทดสอบจูนิท ฉันได้ลบหนึ่งในไฟล์ jar ภายนอกซึ่งเพิ่มลงในโปรเจ็กต์ หลังจากลบการอ้างอิงของไฟล์ jar นี้ไปยังโปรเจ็กต์จาก Eclipse ฉันสามารถเรียกใช้การทดสอบ Junit


จะเกิดอะไรขึ้นถ้าไฟล์ jar ภายนอกมีความสำคัญต่อแอปพลิเคชันและจำเป็นสำหรับการทำงานบางอย่างของแอป ฉันไม่แน่ใจว่านี่เป็นวิธีแก้ปัญหาที่ใช้ได้
Carl Poole

0

ไปที่ Build Path -> Source และสลับเป็น Yes ตัวเลือก "Ignore Optional Compile Problems" สำหรับโฟลเดอร์ต้นทางทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.