ข้อผิดพลาด 'ต้องแทนที่วิธี Superclass' หลังจากนำเข้าโครงการลงใน Eclipse


1250

เมื่อใดก็ตามที่ฉันต้องนำเข้าโครงการของฉันอีกครั้งใน Eclipse (ถ้าฉันติดตั้ง Eclipse อีกครั้งหรือเปลี่ยนตำแหน่งของโครงการ) วิธีการที่แทนที่ของฉันเกือบทั้งหมดจะไม่ได้รับการจัดรูปแบบอย่างถูกต้องทำให้เกิดข้อผิดพลาด:

วิธีการนั้นจะต้องแทนที่วิธี superclass

มันอาจเป็นเรื่องสำคัญที่จะกล่าวถึงสิ่งนี้กับโครงการ Android ไม่ว่าด้วยเหตุผลใดก็ตามค่าอาร์กิวเมนต์ของวิธีการนั้นไม่ได้บรรจุอยู่เสมอดังนั้นฉันจึงต้องใส่ค่าด้วยตนเอง ตัวอย่างเช่น

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //These arguments have their correct names
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});

จะมีประชากรเริ่มต้นเช่นนี้:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //This methods arguments were not automatically provided    
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});

สิ่งที่แปลกคือถ้าฉันลบรหัสของฉันและให้ Eclipse สร้างวิธีขึ้นใหม่โดยอัตโนมัติมันใช้ชื่ออาร์กิวเมนต์แบบเดียวกับที่ฉันมีอยู่แล้วดังนั้นฉันจึงไม่ทราบว่าปัญหาอยู่ที่ใดจริง ๆ แล้วมันจะทำการจัดรูปแบบอัตโนมัติ ผม.

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

อาจเป็นเพราะวิธีที่ฉันจัดรูปแบบวิธีซึ่งอยู่ภายในอาร์กิวเมนต์ของวิธีอื่นได้หรือไม่


1
กรุณาตรวจสอบรายการนี้มันอธิบายการใช้งานของการแทนที่ ฉันเชื่อว่าการฝึกฝนนี้มีความสำคัญมากสำหรับทุกสิ่งไม่เพียง แต่สำหรับสถานการณ์นี้โดยเฉพาะ stackoverflow.com/questions/94361/…
oagostinho

คำตอบ:


1432

Eclipse เริ่มต้นกับ Java 1.5 และคุณมีคลาสที่ใช้เมธอดอินเตอร์เฟส (ซึ่งใน Java 1.6 สามารถใส่หมายเหตุประกอบได้@Overrideแต่ใน Java 1.5 สามารถใช้กับวิธีที่มีผลเหนือกว่าวิธี superclass เท่านั้น)

ไปที่การกำหนดค่าตามความชอบของโครงการ / IDE ของคุณและตั้งค่าระดับคอมไพเลอร์ Java เป็น 1.6 และตรวจสอบให้แน่ใจว่าคุณเลือก JRE 1.6 เพื่อรันโปรแกรมของคุณจาก Eclipse


35
โครงการของฉันถูกตั้งค่าเป็น 1.6 ดังนั้นฉันจึงยิงให้ดวงดาวและตั้งเป็น 1.5 สร้างใหม่จากนั้นกลับสู่ 1.6 ปาฏิหาริย์นี้แก้ไขปัญหาของฉัน ขอบคุณที่ชี้นำฉันในทิศทางที่ถูกต้อง!
Michael Krauklis

6
มีปัญหาเดียวกัน ... ลองคำแนะนำที่ให้ไว้ในคำตอบนี้ แต่ก็ยังไม่ประสบความสำเร็จ :( :(
aditya_gaur

6
@MichaelKrauklis ฉัน 1.6 และฉันมีปัญหานี้ ฉันตั้งค่าเป็น 1.5 และทำความสะอาดแล้วตั้งค่ากลับเป็น 1.6 และทำความสะอาดอีกครั้ง ยังไม่ได้รับการแก้ไข ความคิดใด ๆ
Pacerier

6
ปัญหาเดียวกันที่นี่ในกรณีของฉันฉันไม่ได้ติดตั้ง JDK 1.6 เพียง 1.7 ล่าสุดซึ่งเห็นได้ชัดว่าไม่ทำงานกับ Android การติดตั้ง 1.6 ที่เก่ากว่าแล้วทำตามคำแนะนำเหล่านี้ควรใช้งานได้ :)
NoBugs

4
ควรพูดถึง (เช่นในความคิดเห็นต่อคำตอบอื่น ๆ ) การสร้างใหม่ตามด้วยการรีสตาร์ทมักจะต้องใช้
gsingh2011

308

ด้วยEclipse Galileoคุณไปที่รายการเมนู Eclipse -> Preferences จากนั้นเลือก Java และคอมไพเลอร์ในกล่องโต้ตอบ

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

ไบเซนไทน์เมนู / ส่วนต่อประสานกล่องโต้ตอบนี้เป็นเรื่องปกติของการออกแบบ UI ที่ไม่ดีของ Eclipse


78

ในกรณีนี้เกิดขึ้นกับทุกคนที่ลองทั้งวิธี alphazero และ Paul's และยังไม่ทำงาน

สำหรับฉันคราส 'แคช' ข้อผิดพลาดในการรวบรวมแม้หลังจากทำโครงการ> ล้าง ...

ฉันต้องยกเลิกการเลือกโครงการ> สร้างโดยอัตโนมัติจากนั้นทำโครงการ> ล้างแล้วสร้างใหม่อีกครั้ง

นอกจากนี้เมื่อมีข้อสงสัยลองรีสตาร์ท Eclipse สิ่งนี้สามารถแก้ไขข้อผิดพลาดที่น่าอึดอัดใจและไม่สามารถอธิบายได้จำนวนมาก


4
ฉันไม่เพียงแค่นั้น แต่ไม่ได้ทำเครื่องหมาย "เริ่มสร้างโดยอัตโนมัติ" ในกล่องโต้ตอบล้าง เท่านั้นแล้วมันก็ใช้ได้ผลสำหรับฉัน
วิลเลอร์

3
ฉันต้องรีสตาร์ทคราสด้วยเช่นกันแม้หลังจากลบข้อผิดพลาด
Dave Cameron

42

เพื่อแก้ไขปัญหานี้ไปที่คุณสมบัติโครงการของคุณ -> คอมไพเลอร์ Java -> เลือกระดับความสอดคล้องกับคอมไพเลอร์เป็น 1.6-> ใช้


22

คำตอบของ Paul ทำงานให้ฉันเพียงบางส่วน ฉันยังคงมีข้อผิดพลาดหนึ่ง ดังนั้นนอกจากนั้นฉันยังต้องไปที่ Properties-> Project Facets และตั้งค่ารุ่น Java จาก 1.5 เป็น 1.6

บางทีนั่นอาจช่วย


14

ผู้ชายในกรณีของฉันไม่มีการแก้ปัญหาข้างต้นทำงาน

ฉันต้องลบไฟล์ภายในพื้นที่ทำงานโครงการ:

  • .โครงการ
  • .classpath

และโฟลเดอร์:

  • .settings

จากนั้นฉันก็คัดลอกรายการจากโครงการที่คล้ายกันซึ่งเคยทำงานมาก่อน สิ่งนี้จัดการเพื่อแก้ไขโครงการที่เสียหายของฉัน

แน่นอนอย่าใช้วิธีนี้ก่อนลองตัวเลือกก่อนหน้า!


14

หากไม่มีสิ่งใดที่กล่าวมาข้างต้นตรวจสอบให้แน่ใจว่าคุณได้เลือก " สภาพแวดล้อมการดำเนินการ " ที่เหมาะสมและไม่ใช่ "JRE สำรอง"

พบได้ภายใต้:

โครงการ -> เส้นทางการสร้าง -> ห้องสมุด

เลือกและคลิกJRE System LibraryEdit...

หากเลือก "Alternate JRE ... " ให้เปลี่ยนเป็น "สภาพแวดล้อมการทำงาน" ที่JavaSE-1.8 (jre1.8.0_60)เหมาะสม ไม่มีความคิดว่าทำไม แต่สิ่งนี้จะแก้มัน


2
ฉันเลือก "Execution Environment" จากนั้นกด OK และข้อผิดพลาดหายไป จากนั้นฉันกลับมาที่กล่องโต้ตอบเดียวกันนี้และเลือก "พื้นที่ทำงานเริ่มต้น JRE (... )" ซึ่งเป็นตัวเลือกก่อนหน้าของฉันเมื่อฉันได้รับข้อผิดพลาดจาก Eclipse จากนั้นกดตกลงและข้อผิดพลาดไม่ได้เกิดขึ้น?!? นี่ต้องเป็นข้อบกพร่องของ Eclipse UI หรืออะไรทำนองนั้น (ฉันอยู่ใน Eclipse Neon 4.6.2)
mljrg

11

นี่เป็นครั้งที่สองที่ฉันพบปัญหานี้ ครั้งแรกตามคำแนะนำของ alphazero แต่ในครั้งที่สองที่ฉันตั้งค่าเป็น 1.6 มันไม่ทำงานเช่นเดียวกับ 'CACHE' ข้อผิดพลาดนี้หลังจากทำความสะอาดและสร้างใหม่

ลองปิด 'สร้างโดยอัตโนมัติ' ตามที่ Rollin_s กล่าว -> ข้อผิดพลาดยังอยู่ที่นี่!

ดังนั้นฉันจึงลบโครงการปัญหา (ตั้งค่าเป็น 1.6) จาก Package Explorer และนำเข้าอีกครั้ง -> มันเริ่มสร้างใหม่และไม่มีข้อผิดพลาดในครั้งนี้

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


10

การแก้ไขจะต้องแทนที่ข้อผิดพลาดของวิธีการเรียนแบบ super class นั้นไม่ใช่เรื่องยากคุณเพียงแค่เปลี่ยน Java source version เป็น 1.6 เพราะสามารถใช้คำอธิบายประกอบ Java 1.6 @Override จาก Java ได้พร้อมกับวิธีการเชื่อมต่อ เพื่อเปลี่ยนเวอร์ชั่นต้นฉบับเป็น 1.6 ทำตามขั้นตอนด้านล่าง:

  1. เลือกโครงการคลิกขวาคุณสมบัติ
  2. เลือก Java Compiler และทำเครื่องหมายในช่องทำเครื่องหมาย "เปิดใช้งานการตั้งค่าเฉพาะโครงการ"
  3. ตอนนี้ทำให้ระดับการปฏิบัติตามคอมไพเลอร์เป็น 1.6
  4. ใช้การเปลี่ยนแปลง

10

ในกรณีของฉันปัญหานี้เกิดขึ้นเมื่อฉันนำเข้าโครงการ Maven ไปยัง Eclipse ในการแก้ปัญหานี้ฉันได้เพิ่มสิ่งต่อไปนี้ในpom.xml:

<properties>
   ...
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

จากนั้นในเมนูบริบทของโครงการไปที่ "Maven -> Update Project ... " และกดตกลง

แค่นั้นแหละ. หวังว่านี่จะช่วยได้


ขอบคุณฉันเดาว่านี่จะแทนที่การกำหนดค่า pom ของผู้ปกครองหรือบางอย่าง (ฉันโฆษณาปัญหาในทางอื่น ๆ ไม่มีปัญหาจาก eclipse แต่คอมไพเลอร์ของ maven ทำให้ฉัน "ต้องลบล้าง ฯลฯ ")
Asoub

6

ในกรณีของฉันไม่มีวิธีแก้ไขปัญหาข้างต้นใช้งานได้ ฉันต้องเช็คเอาท์ซอร์สโค้ดของฉันไปยังโฟลเดอร์อื่น จาก eclipse ให้เลือกไฟล์> สลับพื้นที่ทำงาน> อื่น ๆ ... จากนั้นนำเข้ารหัสไปยังพื้นที่ทำงานใหม่ มันทำงานหลังจากนั้น


2

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

1) เพื่อดูระดับความสอดคล้องของ Java Compiler ที่ใช้ใน Eclipse IDE

*) หน้าต่าง -> การตั้งค่า -> คอมไพเลอร์ -> ระดับการปฏิบัติตามคอมไพเลอร์: 1.8 (หรือ 1.7, 1.6, ect)

2) เพื่อเปลี่ยนระดับ Java Compiler Compliance ของโครงการ Maven

*) ไปที่ "Project" -> "Properties" -> เลือก "Java Compiler" -> เปลี่ยนระดับการปฏิบัติตาม Compiler: 1.8 (หรือ 1.7, 1.6, ect)

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