Paket yang dideklarasikan tidak cocok dengan paket yang diharapkan ""

89

Saya menggunakan Eclipse dan sudah lama tidak menggunakan Java. Namun, saya dapat mengompilasi kode saya pada baris perintah dengan baik dan menghasilkan .classfile yang diperlukan . Di Eclipse, ia mengeluhkan hal itu The declared package "Devices" does not match the expected package "". Apa artinya ini dan bagaimana cara memperbaikinya?

Kode sampel:

package Devices;

public final class DevFrequency 
{
    public short messageID;
    public double frequency;
    public short converterID;
    public DevFrequency() 
    {
    }
    public DevFrequency(short _messageID,double _frequency,short _converterID)
    {
        messageID = _messageID;
        frequency = _frequency;
        converterID = _converterID;
    }
}

Nama proyek saya adalah DeviceDDS.

Marcel Korpel
sumber
2
Apakah kelas ini ada di /src/Convertersdirektori?
Jeremy
6
Jika Anda akan mengubah pertanyaan Anda secara retrospektif (yang tampaknya tidak berguna, sejujurnya) Anda harus konsisten tentangnya - Anda belum mengedit paragraf pertama pertanyaan. Anda juga telah membuat semua komentar terlihat aneh. Mengapa mengubah segalanya, hampir satu setengah tahun kemudian?
Jon Skeet

Jawaban:

52

Eclipse mengharapkan paket yang dideklarasikan cocok dengan hierarki direktori - jadi Eclipse mengharapkan file Java Anda berada di direktori yang disebut "Perangkat" di bawah root sumber Anda. Saat ini sepertinya file tersebut langsung ada di root sumber Anda. Jadi buat direktori yang sesuai, dan pindahkan file ke sana.

Perhatikan bahwa biasanya, paket menggunakan huruf kecil dan menyertakan nama organisasi Anda dalam urutan DNS terbalik, mis

com.foo.devices;
Jon Skeet
sumber
3
@Sakti: Sejauh yang saya tahu, Anda tidak bisa, dan saya sangat menyarankan Anda untuk tidak melakukannya meskipun Anda bisa. Semua pengembang Java yang berpengalaman akan mengharapkan Anda untuk mengikuti konvensi normal.
Jon Skeet
88

Coba tutup dan buka kembali file tersebut.

Ada kemungkinan untuk mendapatkan kesalahan ini dalam gerhana ketika sama sekali tidak ada yang salah dengan lokasi file atau deklarasi paket. Cobalah sebelum menghabiskan banyak waktu mencoba solusi lain ini. Terkadang gerhana menjadi bingung. Ini berhasil bagi saya dalam beberapa kesempatan. Saya menghargai ide tersebut untuk Joshua Goldberg .

candied_orange
sumber
2
Mengalami masalah ini dengan proyek Gradle di dalam VS Code. Buka kembali memperbaikinya.
TastyWheat
1
membuka dan menutup file di editor gerhana membantu menyelesaikan masalah. Saya telah menambahkan folder sumber di java config build-source tab, kesalahan tidak dihapus, tetapi ketika saya menutup dan membuka editor di eclipse, itu membantu. :-)
JassJava
Keluar dan memulai ulang gerhana juga memperbaiki masalah.
Don Smith
he he .. Saya menghabiskan satu jam mencoba memperbaikinya dan kemudian melihat ini.
Vikash
44

Solusi 1: Satu solusi yang berhasil untuk saya ketika kesalahan ini " Paket yang dideklarasikan tidak sesuai dengan paket yang diharapkan " terjadi untuk proyek yang saya check-out dari eclipse CVS:

1. Klik kanan proyek di bilah navigasi dan klik 'hapus' 2.
Pastikan opsi ' Hapus konten proyek pada disk ' TIDAK dicentang, dan klik OK.
3. Sekarang setelah proyek dihapus, buka File -> Impor -> Umum -> Proyek yang Ada ke Ruang Kerja
4. Pilih ruang kerja Anda dari daftar direktori dan centang kotak di sebelah nama proyek Anda. Klik ' Selesai '

Solusi 2: Sekali lagi saya mendapat kesalahan ini dengan pesan berikut

Eclipse build error - java.lang.Object tidak dapat diselesaikan Saya harus mengikuti rute lain yang disebutkan di sini dan error tersebut hilang.

Sementara itu, penyelesaiannya adalah menghapus JRE System Library dari proyek dan kemudian menambahkannya kembali. Berikut langkah-langkahnya:

  1. Buka properti proyek dengan kesalahan pembuatan (klik kanan> Properti) Lihat tab "Perpustakaan" di bagian "Jalur Bangun" Temukan "Perpustakaan Sistem JRE" dalam daftar (jika ini hilang maka pesan kesalahan ini bukan bug gerhana tetapi proyek salah konfigurasi)
  2. Hapus "JRE System Library"
  3. Tekan "Add Library ...", Pilih "JRE System Library" dan tambahkan JRE yang sesuai untuk proyek tersebut (misalnya 'Workspace default JRE')
  4. Tekan "Selesai" dalam pemilihan perpustakaan dan "OK" di properti proyek dan kemudian tunggu pembangunan ulang proyek

Semoga error tersebut teratasi ...

nanospeck
sumber
Saya harus melakukan ini juga (menambahkan direktori tes keren ke build). Jangan lupa untuk membuat catatan tentang konfigurasi run Anda, yang perlu Anda buat ulang. Tahu mengapa ini dibutuhkan? Sakit sekali.
Joshua Goldberg
11
Solusi yang lebih sederhana: Saya berada dalam situasi ini lagi, dan dapat membuatnya berfungsi dengan menutup proyek, memulai ulang Eclipse, dan membuka kembali proyek.
Joshua Goldberg
12
Bahkan lebih sederhana! Saya baru saja memilikinya lagi, dan hilang dengan menutup dan membuka kembali editor file tunggal yang bermasalah.
Joshua Goldberg
4
Memulai kembali gerhana tampaknya bisa memperbaikinya.
Mike R
Solusi 1 berhasil untuk saya. Sangat aneh. Saya telah mengimpor klon git yang sama ke Eclipse di komputer lain dan tidak melihat masalah ini.
dnuttle
13

Saya menyelesaikan masalah dengan mengikuti langkah-langkah berikut:

  1. Pilih proyek - Klik kanan - jalur build java.

  2. Di tab sumber - Anda mengubah srcmenjadi src/main/java.

  3. Eclipse akan menyusun ulang semua proyek.

dafali
sumber
11

Saya mengalami masalah ini - kelas lain dalam paket saya baik-baik saja, tetapi satu kelas memiliki kesalahan. Tidak ada yang salah dengan deklarasi paket.

Saya memperbaikinya dengan melakukan refactor->movedan memindahkan kelas ke paket lain untuk sementara, lalu refactor->movekembali ke paket asli.

ayahuasca.dll
sumber
2

Anda harus memiliki kelas di dalam folder Devices.

Marcelo
sumber
2

Buat paket baru di bawah proyek Anda yang disebut "Perangkat" dan tempatkan kelas Anda di dalamnya. Ini sama dengan kelas yang ditempatkan di direktori bernama "Perangkat" di folder sumber proyek Anda.

tskuzzy
sumber
1

Pastikan itu Devicesditentukan sebagai folder sumber di properti proyek.

Adam Matan
sumber
1

Mendapat jenis kesalahan yang sama tetapi paket saya benar-benar benar. Ketika saya baru saja menutup dan membuka editor saya, kesalahan menghilang. Semoga ini bisa membantu dalam beberapa skenario.

Easwaramoorthy K
sumber
1

Saya memperbaikinya dengan menghapus atribut "tidak termasuk" untuk paket itu di .classpathfile saya . Hapus atribut, bukan seluruh tag, atau "src / java" tidak akan lagi menjadi folder sumber.

<classpathentry excluding="com/myproject/mypackage/mysubpackage/" kind="src" path="src/java"/>
Noumenon
sumber
1

Masalah ini diatasi dengan menyebutkan nama paket

Saya memindahkan file saya Test_Steps.java yang berada di bawah paket stepDefinition

masukkan deskripsi gambar di sini

hanya dengan menambahkan paket stepDefinition masalah telah teratasi

Jadi masalah ini bisa terjadi ketika Anda memiliki paket dan Anda tidak menggunakan file kelas Anda.

Menambahkannya telah menyelesaikan masalah dan kesalahan tidak lagi muncul.

masukkan deskripsi gambar di sini

Gaurav khurana
sumber
0

Pastikan Anda telah membuat paket yang benar. Anda mungkin mendapat kesempatan untuk membuat folder, bukan paket

Karthick
sumber
0
  1. Buat direktori [nama.proyek.anda] di direktori akar ruang kerja proyek Anda.

  2. Salin * .java dari "src" ke direktori itu.

  3. Tutup dan buka kembali proyek.

B347tl7
sumber
0

Ini terjadi pada saya ketika saya sedang memeriksa sebuah proyek dari repositori svn di eclipse. Ada file jar di folder .m2 saya yang tidak dilihat gerhana. Untuk memperbaiki masalah yang saya lakukan:

klik kanan folder proyek Configure> Convert to Maven Project

dan itu menyelesaikan masalah.

carl_corder
sumber
0

Ada sejuta jawaban, tapi ini satu lagi: salin file ke dalam paket baru, hapus paket lama dan ganti nama paket baru ke nama paket lama.

Omri374
sumber
0

Pastikan Anda tidak menggunakan paket default. Buat paket baru dengan nama 'perangkat' dan salin kode ini di dalamnya dan gunakan.


sumber
0

Saya mengalami situasi seperti ini ketika saya menyalin kelas dari paket / proyek lain.

Menu-> Proyek-> Bersihkan biasanya membantu.

yurin
sumber
0

Dalam kasus saya, saya memilih penanda kesalahan di tab Masalah dan menghapusnya karena metode utama file Java dijalankan dengan benar. Itu adalah beberapa kesalahan di Eclipse Neon dengan banyak plugin yang telah dipasangnya.

Leniel Maccaferri
sumber
0

Saya menghadapi masalah ini juga ketika saya telah mengimpor proyek yang ada ke gerhana. Itu adalah proyek gradle, tetapi saat mengimpor saya mengimpornya sebagai proyek biasa dengan mengklik Umum-> Proyek yang Ada ke Ruang Kerja. Untuk mengatasi masalah, saya telah menambahkan sifat Gradle ke proyek dengan :::: Klik kanan pada folder Proyek -> Configure-> Add Gradle Nature

Gopi
sumber
0

Saya menggunakan Spring Tool Suite 4. Tidak dapat memahami masalahnya. Struktur direktori sesuai dengan nama paket.

Tapi membersihkan proyek membantu saya.

prisar
sumber
0

Saya memiliki masalah yang sama dengan proyek maven di Eclipse IDE. Saya dapat mengatasinya dengan mengganti file .classpath dengan format yang benar. Setelah mengganti tutup dan buka proyek.

Contoh file .classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/webapp">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="test" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="output" path="target/classes"/>
</classpath>
gihan-maduranga
sumber