Eclipse: Paket yang dideklarasikan tidak cocok dengan paket yang diharapkan

86

Saya mengalami masalah saat mengimpor proyek eksternal. Saya pergi File -> Import ... -> Existing Projects into Workspace, pilih folder tempat proyek berada dan semuanya diimpor - tetapi nama paket proyek tampaknya tidak seperti yang diharapkan Eclipse. Semua nama paket memiliki awalan:

prefix.packagename1
prefix.packagename2

dll.

Tapi Eclipse mengharapkan

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

dll. karena direktorinya adalah src / prefix1 / prefix / package1

Saya tidak benar-benar ingin bermain-main dengan kode eksternal. Bagaimana cara memberi tahu Eclipse untuk mengabaikan direktori "src / prefix1"? Atau apa lagi yang bisa saya lakukan?

HenryNguyen
sumber
Saya menambahkan package (name of package under which the file to be ) di awal file
Sai Ram

Jawaban:

105

Cukup masuk ke jalur pembuatan dan ubah jalur sumber menjadi src/prefix1alih-alih src.

Mungkin paling mudah untuk mengklik kanan pada srcdirektori dan memilih "Build Path / Remove from build path", kemudian cari src/prefix1direktori, klik kanan dan pilih "Build Path / Use as source folder".

Jon Skeet
sumber
2
Bagaimana cara membatalkan apa pun yang baru saja dilakukan? Saya mengklik "Bangun Jalur / Gunakan sebagai folder sumber" dan tidak ada yang berfungsi lagi. Sunting: Jawaban atas pertanyaan saya adalah masuk ke "Configure Build Path" dan hapus hal yang funky dari daftar yang bukan src / atau gen /
ArtOfWarfare
25
Perhatikan bahwa saran Jon berfungsi tetapi mungkin perlu memulai ulang gerhana.
Samik R
1
!! Jika Anda masih melihat kesalahan setelah mengubah folder sumber, buat proyek. Eclipse terkadang membuatku ingin menghancurkan sesuatu.
MattC
4
Tutup / Buka prj bekerja untuk saya ... Eclipse adalah alat yang besar, terkadang dapat melupakan sesuatu
niken
Terima kasih sobat, solusi yang bagus.
Runcorn
71

Saya baru saja mengalami masalah ini, dan karena solusi Tn. Skeet tidak berhasil untuk saya, saya akan membagikan bagaimana saya memecahkan masalah ini.

Ternyata saya membuka file java di bawah 'src' sebelum mendeklarasikannya sebagai direktori sumber.

Setelah mengklik kanan pada direktori 'src' di eclipse, pilih 'build path', lalu 'Use as Source Folder'

Tutup dan buka kembali file java yang sudah dibuka (F5 menyegarkannya tidak berhasil).

Menyediakan jalur ke file java dari "prefix1" dan seterusnya berbaris dengan paket dalam file (contoh dari pertanyaan pemohon prefix1.prefix.packagename2). Ini seharusnya berhasil

Eclipse seharusnya tidak lagi mengeluh tentang 'src.'

Kyle Shanafelt
sumber
1
Ini dia. Cukup sederhana tetapi membuat saya mandek untuk sementara waktu. Terima kasih!
Christian Vielma
Setelah mengatur jalur build, menutup dan membuka kembali file itu penting bagi saya juga. Terima kasih!
ed-
Iya! Bekerja untuk saya juga.
Robert Casey
11

Pindahkan file * .java masalah Anda ke folder lain.

Klik item 'src' dan tekan "F5".

Salib merah akan menghilang.

Kembalikan file * .java Anda ke "jalur paket", klik item 'src' dan tekan "F5".

Semuanya harus baik-baik saja.

Vlad
sumber
2

Jika Anda telah mengimpor proyek yang ada, cukup hapus folder sumber Anda lalu tambahkan lagi ke jalur pembuatan, dan mulai ulang gerhana. Sebagian besar waktu gerhana akan terus menampilkan kesalahan sampai Anda memulai ulang.

Parveen Yadav
sumber
2

Satu-satunya hal yang berhasil bagi saya adalah menghapus proyek dan mengimpornya lagi. Bekerja seperti pesona :)

Ramping
sumber
1

Terjadi untuk saya setelah build yang gagal dijalankan di luar IDE. Jika membersihkan ruang kerja Anda tidak berhasil, coba: 1) Hapus semua proyek 2) Tutup dan mulai ulang STS / eclipse, 3) Impor ulang proyek

Bradley D
sumber
0

Saya mendapatkan masalah ini di Eclipse terkadang saat mengimpor proyek Android yang tidak memiliki file .classpath. Yang dibuat oleh Eclipse tidak persis sama dengan yang diharapkan Android. Namun, file .classpath Android biasanya semuanya relatif, jadi saya cukup menyalin file .classpath yang benar dari proyek lain melalui .classpath yang salah. Saya telah membuat video yang menunjukkan bagaimana saya melakukan ini: https://www.youtube.com/watch?v=IVIhgeahS1Ynto

pengguna3649912
sumber
0

Misalkan proyek Anda memiliki paket seperti package name1.name2.name3.name4 (paket yang dideklarasikan)

Penjelajah paket Anda menunjukkan
paket tingkat atas bernama name1.name2
sub paket bernama name3.name4

Anda akan mengalami kesalahan karena Eclipse mengekstrak nama paket dari struktur direktori file pada disk mulai dari titik asal Anda mengimpor.

Kasus saya sedikit lebih rumit, mungkin karena saya menggunakan tautan simbolis ke folder di luar ruang kerja saya.

Saya pertama kali mencoba Build Path.Java Build Path.Source Tab.Link Source Button. Jelajahi folder sebelum name1 dalam paket Anda. Nama folder sesuka Anda (menurut saya). Tapi punya masalah.

Kemudian saya menghapus folder dari jalur build dan mencoba File> Impor ...> Umum> Sistem File> klik Berikutnya> Dari Direktori> Jelajahi ... ke folder di atas nama1> klik tombol Lanjutan> centang Buat tautan di ruang kerja> klik Selesai tombol.

darKoram
sumber
Benar. Dalam kasus saya, nama proyek memiliki postfix yang ditambahkan ke dalamnya, -2.0.0-SNAPSHOT. Menghapus awalan itu (ganti nama proyek ..) dan semuanya bekerja.
JRun
0

Buka folder src dari proyek dan salin semua kode darinya ke beberapa lokasi sementara dan bangun proyek. Dan sekarang salin kode sebenarnya dari lokasi sementara ke proyek src. Dan jalankan build lagi. Masalah akan teratasi.

Catatan: Ini khusus untuk gerhana.

Deepak Gupta
sumber
0

Saya kebetulan memiliki masalah yang sama sekarang. Namun, beberapa jawaban pertama tidak berhasil untuk saya. Saya mengusulkan solusi: ubah file .classpath. Misalnya, Anda dapat menentukan jalur node classpathentry seperti ini: path = "src / prefix1 / java" atau path = " src / prefix1 / resources ". Semoga bisa membantu.

Mendongkrak
sumber
0

Bagi saya masalahnya adalah saya mengubah proyek yang ada ke maven, membuat struktur folder sesuai dengan dokumentasi dan itu menunjukkan folder 'utama' sebagai bagian dari paket. Saya mengikuti instruksi yang mirip dengan Jon Skeet / JWoodchuck dan masuk ke jalur build Java, menghapus semua jalur build yang rusak, lalu menambahkan jalur build saya menjadi 'src / main / java' dan 'src / test / java', juga sebagai folder sumber daya untuk masing-masing, dan itu menyelesaikan masalah.

Douglas Larson
sumber
0

Jalur build harus berisi jalur 'sampai sebelum' yang ada di nama paket.

Misalnya, jika struktur foldernya adalah: src/main/java/com/example/dao Jika kelas yang berisi pernyataan import 'package com.example.dao'mengeluhkan kesalahan paket yang salah, maka, jalur build include:src/main/java harus menyelesaikan masalah ini.

Sobin George
sumber
-1
  1. Klik kanan pada folder eksternal yang memiliki paket
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. Klik Build path -> Hapus dari jalur build.

  2. Sekarang buka folder prefix1 di bagian folder proyek Anda.

  3. Klik kanan padanya -> Build path -> Use as source folder.

  4. Selesai. Folder paket tidak akan menampilkan kesalahan apa pun sekarang. Jika masih muncul, cukup mulai ulang proyek.

Pramod Shetty
sumber