Eclipse: แพ็กเกจที่ประกาศไม่ตรงกับแพ็กเกจที่คาดไว้


86

ฉันมีปัญหาในการนำเข้าโครงการภายนอก ฉันไปที่ File -> Import ... -> Projects ที่มีอยู่ลงใน Workspace เลือกโฟลเดอร์ที่มีโปรเจ็กต์และทุกอย่างจะถูกนำเข้า - แต่ชื่อแพ็กเกจของโปรเจ็กต์ดูเหมือนจะไม่เป็นไปตามที่ Eclipse คาดหวัง ชื่อแพ็คเกจทั้งหมดมีคำนำหน้า:

prefix.packagename1
prefix.packagename2

เป็นต้น

แต่คาดว่าคราส

src.prefix1.prefix.packagename1
src.prefix1.prefix.packagename2

ฯลฯ เนื่องจากไดเร็กทอรีคือ src / prefix1 / prefix / package1

ฉันไม่อยากยุ่งกับรหัสภายนอกจริงๆ ฉันจะบอกให้ Eclipse ละเว้นไดเร็กทอรี "src / prefix1" ได้อย่างไร หรือทำอะไรได้อีก?


ฉันเพิ่มpackage (name of package under which the file to be ) ที่จุดเริ่มต้นของไฟล์
Sai Ram

คำตอบ:


105

เพียงแค่เข้าไปในการสร้างเส้นทางและเปลี่ยนเส้นทางของแหล่งข้อมูลที่จะเป็นแทนsrc/prefix1src

อาจเป็นวิธีที่ง่ายที่สุดในการคลิกขวาที่srcไดเร็กทอรีและเลือก "Build Path / Remove from build path" จากนั้นค้นหาsrc/prefix1ไดเร็กทอรีคลิกขวาแล้วเลือก "Build Path / Use as source folder"


2
ฉันจะยกเลิกสิ่งที่เพิ่งทำไปได้อย่างไร ฉันคลิกที่ "สร้างเส้นทาง / ใช้เป็นโฟลเดอร์ต้นทาง" และไม่มีอะไรทำงานอีกต่อไป แก้ไข: คำตอบสำหรับคำถามของฉันคือเข้าไปที่ "กำหนดค่าเส้นทางการสร้าง" และลบสิ่งที่ขี้ขลาดออกจากรายการที่ไม่ใช่ src / หรือ gen /
ArtOfWarfare

25
โปรดทราบว่าคำแนะนำของ Jon ใช้งานได้ แต่อาจต้องรีสตาร์ท eclipse
Samik R

1
!! หากคุณยังคงเห็นข้อผิดพลาดหลังจากเปลี่ยนโฟลเดอร์ต้นทางให้สร้างโครงการ บางครั้งคราสก็ทำให้ฉันอยากทุบบางอย่าง
MattC

4
ปิด / เปิด prj ใช้งานได้สำหรับฉัน ... Eclipse เป็นเครื่องมือขนาดใหญ่บางครั้งอาจลืมสิ่งต่างๆ
Niken

ขอบคุณเพื่อนทางออกที่ดี
Runcorn

71

ฉันเพิ่งพบปัญหานี้และเนื่องจากวิธีแก้ปัญหาของ Mr. Skeet ไม่ได้ผลสำหรับฉันฉันจะแบ่งปันวิธีที่ฉันแก้ไขปัญหานี้

ปรากฎว่าฉันเปิดไฟล์ java ภายใต้ 'src' ก่อนที่จะประกาศเป็นไดเรกทอรีต้นทาง

หลังจากคลิกขวาที่ไดเร็กทอรี 'src' ใน eclipse เลือก 'build path' จากนั้น 'Use as Source Folder'

ปิดและเปิดไฟล์ java ที่เปิดไว้แล้วอีกครั้ง (F5 รีเฟรชมันไม่ได้ผล)

จัดเตรียมพา ธ ไปยังไฟล์ java ตั้งแต่ "คำนำหน้า 1" เป็นต้นไปรวมกับแพ็กเกจในไฟล์ (ตัวอย่างจากคำนำหน้าคำถามของผู้ร้องขอ 1.prefix.packagename2) สิ่งนี้ควรใช้งานได้

Eclipse ไม่ควรบ่นเกี่ยวกับ 'src' อีกต่อไป


1
นี่คือมัน ค่อนข้างเรียบง่าย แต่ทำให้ฉันติดอยู่ชั่วขณะ ขอบคุณ!
Christian Vielma

หลังจากตั้งค่าการปิดเส้นทางการสร้างและการเปิดไฟล์อีกครั้งก็จำเป็นสำหรับฉันเช่นกัน ขอบคุณ!
เอ็ด

ใช่ ทำงานให้ฉันเช่นกัน
Robert Casey

11

ย้ายไฟล์ * .java ปัญหาของคุณไปยังโฟลเดอร์อื่น

คลิกรายการ 'src' แล้วกด "F5"

กากบาทสีแดงจะทำลายล้าง

คืนไฟล์ * .java ของคุณไปที่ "package path" คลิกรายการ "src" แล้วกด "F5"

ทั้งหมดน่าจะโอเค


2

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


2

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


1

เกิดขึ้นสำหรับฉันหลังจากการสร้างที่ล้มเหลวเรียกใช้นอก IDE หากการทำความสะอาดพื้นที่ทำงานของคุณไม่ได้ผลให้ลอง: 1) ลบโครงการทั้งหมด 2) ปิดและรีสตาร์ท STS / eclipse 3) นำเข้าโครงการอีกครั้ง


0

ฉันได้รับปัญหานี้ใน Eclipse บางครั้งเมื่อนำเข้าโครงการ Android ที่ไม่มีไฟล์. classpath สิ่งที่ Eclipse สร้างขึ้นไม่เหมือนกับที่ Android คาดไว้ แต่ไฟล์. classpath ของ Android มักจะเป็นญาติกันทั้งหมดดังนั้นฉันจึงแค่คัดลอกไฟล์. classpath ที่ถูกต้องจากโปรเจ็กต์อื่นบน. classpath ที่ไม่ถูกต้อง ฉันได้สร้างวิดีโอที่แสดงให้เห็นว่าฉันทำสิ่งนี้ได้อย่างไร: https://www.youtube.com/watch?v=IVIhgeahS1Ynto


0

สมมติว่าโครงการของคุณมีแพ็คเกจเช่น package name1.name2.name3.name4 (แพ็คเกจที่ประกาศไว้)

โปรแกรมสำรวจแพ็กเกจของคุณแสดง
แพ็กเกจระดับบนสุดชื่อ
แพ็กเกจย่อย name1.name2 ชื่อ name3.name4

คุณจะมีข้อผิดพลาดเนื่องจาก Eclipse แยกชื่อแพ็กเกจจากโครงสร้างไดเร็กทอรีไฟล์บนดิสก์โดยเริ่มจากจุดที่คุณนำเข้า

กรณีของฉันมีส่วนเกี่ยวข้องมากกว่าเล็กน้อยอาจเป็นเพราะฉันใช้ลิงก์สัญลักษณ์ไปยังโฟลเดอร์นอกพื้นที่ทำงาน

ครั้งแรกฉันลองสร้างเส้นทาง Java Build Path แท็บแหล่งที่มาปุ่มแหล่งลิงก์เรียกดูโฟลเดอร์ก่อนชื่อ 1 ในแพ็คเกจของคุณชื่อโฟลเดอร์ตามที่คุณต้องการ (ฉันคิดว่า) แต่มีปัญหา

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


จริง. ในกรณีของฉันชื่อโปรเจ็กต์มีการเพิ่ม postfix คือ -2.0.0-SNAPSHOT นำคำนำหน้านั้นออก (เปลี่ยนชื่อโครงการ .. ) และทุกอย่างทำงานได้
JRun

0

ไปที่โฟลเดอร์ src ของโปรเจ็กต์และคัดลอกโค้ดทั้งหมดจากโค้ดไปยังตำแหน่งชั่วคราวและสร้างโปรเจ็กต์ และตอนนี้คัดลอกรหัสจริงจากตำแหน่งชั่วคราวไปยัง project src และรันบิลด์อีกครั้ง ปัญหาจะได้รับการแก้ไข

หมายเหตุ: สิ่งนี้เฉพาะสำหรับคราส


0

ฉันบังเอิญมีปัญหาเดียวกันในตอนนี้ อย่างไรก็ตามคำตอบสองสามข้อแรกไม่ได้ผลสำหรับฉันฉันเสนอวิธีแก้ปัญหา: เปลี่ยนไฟล์. classpath ตัวอย่างเช่นคุณสามารถกำหนดเส้นทางของโหนด classpathentryดังนี้ path = "src / prefix1 / java" หรือ path = " src / prefix1 / resources ". หวังว่ามันจะช่วยได้


0

สำหรับฉันปัญหาคือฉันกำลังแปลงโปรเจ็กต์ที่มีอยู่เป็น maven สร้างโครงสร้างโฟลเดอร์ตามเอกสารและมันแสดงโฟลเดอร์ 'หลัก' เป็นส่วนหนึ่งของแพ็คเกจ ฉันทำตามคำแนะนำที่คล้ายกับ Jon Skeet / JWoodchuck และเข้าไปในเส้นทางการสร้าง Java ลบเส้นทางการสร้างที่เสียหายทั้งหมดจากนั้นเพิ่มเส้นทางการสร้างของฉันเป็น 'src / main / java' และ 'src / test / java' เช่นกัน เป็นโฟลเดอร์ทรัพยากรสำหรับแต่ละโฟลเดอร์และแก้ไขปัญหาได้


0

เส้นทางการสร้างควรมีเส้นทาง 'จนถึงก่อนหน้า' ของชื่อแพ็กเกจ

ตัวอย่างเช่นถ้าโครงสร้างโฟลเดอร์เป็น: src/main/java/com/example/dao หากคลาสที่มีคำสั่งการนำเข้า'package com.example.dao'ร้องเรียนถึงข้อผิดพลาดของแพ็กเกจที่ไม่ถูกต้องเส้นทางการสร้างควรinclude:src/main/java จะแก้ปัญหานี้ได้


-1
  1. คลิกขวาที่โฟลเดอร์ภายนอกที่มีแพ็คเกจ
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. คลิก Build path -> Remove from build path

  2. ตอนนี้ไปที่คำนำหน้าโฟลเดอร์ 1 ในส่วนโฟลเดอร์ของโครงการของคุณ

  3. คลิกขวาที่มัน -> สร้างเส้นทาง -> ใช้เป็นโฟลเดอร์ต้นทาง

  4. เสร็จแล้ว โฟลเดอร์แพ็คเกจจะไม่แสดงข้อผิดพลาดใด ๆ ในตอนนี้ หากยังคงแสดงอยู่ให้เริ่มโครงการใหม่

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