Bildirilen paket, beklenen paket "" ile eşleşmiyor


92

Eclipse kullanıyorum ve bir süredir Java kullanmıyorum. Bununla birlikte, kodumu komut satırında çok iyi bir şekilde derleyebilir ve gerekli .classdosyaları oluşturabilirim . Eclipse'de bundan şikayetçi The declared package "Devices" does not match the expected package "". Bu ne anlama geliyor ve bunu nasıl düzeltebilirim?

Basit kod:

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;
    }
}

Projemin adı DeviceDDS.


2
Bu sınıf /src/Convertersdizinde mi?
Jeremy

7
Sorunuzu geriye dönük olarak değiştirecekseniz (bu, dürüst olmak gerekirse anlamsız görünüyor), bu konuda tutarlı olmanız gerekir - sorunun ilk paragrafını düzenlemediniz. Ayrıca tüm yorumları tuhaf gösterdin. Neden neredeyse bir buçuk yıl sonra her şeyi değiştirelim?
Jon Skeet

Yanıtlar:


52

Eclipse, bildirilen paketin dizin hiyerarşisiyle eşleşmesini bekler - bu nedenle Java dosyanızın, kaynak kökünüz altında "Aygıtlar" adlı bir dizinde olmasını bekler. Şu anda dosya doğrudan kaynak kökünüzde gibi görünüyor. Bu nedenle uygun dizini oluşturun ve dosyayı oraya taşıyın.

Geleneksel olarak, paketlerin küçük harf olduğunu ve kuruluş adınızı ters DNS sırasıyla içerdiğini unutmayın.

com.foo.devices;

3
@Sakti: Bildiğim kadarıyla yapamazsınız ve yapabilseniz bile yapmamanızı şiddetle tavsiye ederim. Tüm deneyimli Java geliştiricileri sizden normal kurallara uymanızı bekleyecektir.
Jon Skeet

91

Dosyayı kapatıp yeniden açmayı deneyin.

Dosya konumu veya paket bildiriminde kesinlikle yanlış bir şey olmadığında bu hatayı tutulmada almak mümkündür. Bu diğer çözümleri denemeye çok zaman harcamadan önce bunu deneyin. Bazen tutulmanın kafası karışır. Benim için pek çok durumda işe yaradı. Ben kredi fikir için Joshua Goldberg .


2
VS Code içindeki bir Gradle projesinde bu sorunu yaşadım. Yeniden aç, düzeltti.
TastyWheat

2
Eclipse düzenleyicide dosyanın açılması ve kapatılması sorunun çözülmesine yardımcı oldu. Java config build - source sekmesinde bir kaynak klasör eklemiştim, hata kaldırılmadı, ancak tutulmada editörü kapatıp açtığımda yardımcı oldu. :-)
JassJava

1
Tutulmadan çıkmak ve yeniden başlatmak da sorunu çözdü.
Don Smith

1
o o .. Düzeltmek için bir saat harcadım ve sonra bunu gördüm.
Vikash

@candied_orange Teşekkürler. dosyayı birden çok kez kapatıp açmak benim için de
düzeltti

44

Çözüm 1: Eclipse CVS'den teslim aldığım bir proje için " Bildirilen paket beklenen paketle eşleşmiyor " hatası oluştuğunda benim için çalışan bir çözüm :

1. Gezinme çubuğunda projeyi
sağ tıklayın ve 'sil'i tıklayın 2.' Diskteki proje içeriğini sil 'seçeneğinin işaretli OLMADIĞINDAN emin olun ve Tamam'ı tıklayın.
3. Şimdi proje silindikten sonra Dosya -> İçe Aktar -> Genel -> Mevcut Projeleri Çalışma Alanına gidin 4.
Dizin listesinden çalışma alanınızı seçin ve proje adınızın yanındaki kutuyu işaretleyin. Click ' Finish '

2.Çözüm: Bir kez daha bu hatayı aşağıdaki mesajla aldım

Eclipse derleme hataları - java.lang.Object çözülemiyor Burada bahsedilen başka bir yolu izlemem gerekti ve hata ortadan kalktı.

Bu arada, geçici çözüm, JRE Sistem Kitaplığı'nı projeden kaldırmak ve ardından yeniden eklemektir. İşte adımlar:

  1. Derleme hatası olan projenin özelliklerine gidin (sağ tıklama> Özellikler) "Yol Oluşturma" bölümündeki "Kitaplıklar" sekmesini görüntüleyin Listede "JRE Sistem Kitaplığı" nı bulun (bu eksikse, bu hata mesajı bir tutulma hatası ancak yanlış yapılandırılmış bir proje)
  2. "JRE Sistem Kitaplığı" nı kaldırın
  3. "Kitaplık Ekle ..." seçeneğine tıklayın, "JRE Sistem Kitaplığı" nı seçin ve proje için uygun JRE'yi ekleyin (ör. 'Çalışma alanı varsayılan JRE')
  4. Kitaplık seçiminde "Bitir" ve proje özelliklerinde "Tamam" ı tıklayın ve ardından projenin yeniden oluşturulmasını bekleyin

Umarım hata çözülür ...


Bunu da yapmak zorundaydım (yapıya harika testler dizini ekleyerek). Yeniden oluşturmanız gereken koşu yapılandırmalarınız hakkında notlar almayı unutmayın. Bunun neden gerekli olduğuna dair bir fikriniz var mı? Ne kadar acı.
Joshua Goldberg

11
Daha basit çözüm: Yine bu durumdaydım ve projeyi kapatarak, Eclipse'i yeniden başlatarak ve projeyi yeniden açarak çalıştırmayı başardım.
Joshua Goldberg

12
Daha da basit! Tekrar aldım ve tek sorunlu dosyanın düzenleyicisini kapatıp yeniden açarak kayboldu.
Joshua Goldberg

4
Tutulmayı yeniden başlatmak onu düzeltir gibi görünüyor.
Mike R

Çözüm 1 benim için çalıştı. Çok garip. Aynı git klonunu diğer makinelerde Eclipse'e aktardım ve bu sorunu görmedim.
dnuttle

13

Sorunu şu adımları izleyerek çözdüm:

  1. Projeyi seçin - Sağ tıklayın - java oluşturma yolu.

  2. Kaynak sekmesinde - Değiştirmek srciçin src/main/java.

  3. Eclipse tüm projeyi yeniden sıralayacak.


11

Bu sorunu yaşadım - paketimdeki diğer sınıflar iyiydi, ancak bir sınıf buna karşı hata yaptı. Paket bildiriminde yanlış bir şey yoktu.

Yaparak düzelttim refactor->moveve sınıfı geçici olarak başka bir pakete, ardından refactor->moveorijinal pakete geri taşıdım .


2

Sınıfın bir klasör içinde olması gerekir Devices.


2

Projenizin altında "Cihazlar" adlı yeni bir paket oluşturun ve sınıfınızı buna yerleştirin. Bu, proje kaynak klasörünüzde "Cihazlar" adlı bir dizine yerleştirilen sınıfa eşdeğerdir.


1

DevicesProje özelliklerinde kaynak klasör olarak tanımlandığından emin olun .


1

Aynı tür bir hatayı aldım ama paketim kesinlikle doğruydu. Editörümü kapatıp açtığımda hata kayboluyor. Umarım bu bazı senaryolarda yardımcı olabilir.


1

Dosyamdaki bu paket için bir "dışlama" özniteliğini kaldırarak bunu düzelttim .classpath. Tüm etiketi değil özniteliği kaldırın, aksi takdirde "src / java" artık kaynak klasör olmaktan çıkar.

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

1

Bu sorun, paket adı belirtilerek çözüldü

Dosyamı taşındı Test_Steps.java paket altındaydı stepDefinition

görüntü açıklamasını buraya girin

sadece paket adım tanımını ekleyerek sorun çözüldü

Dolayısıyla, bir paketiniz olduğunda ve sınıf dosyanızda kullanmadığınızda bu sorun ortaya çıkabilir.

Eklenmesi sorunu çözdü ve hata artık görünmüyordu.

görüntü açıklamasını buraya girin


0

Doğru bir paket oluşturduğunuzdan emin olun.Paket yerine klasör oluşturma şansınız olabilir.


0
  1. Projenizin çalışma alanı kök dizininde [projenizin.adı] dizini oluşturun.

  2. * .Java'yı "src" den bu dizine kopyalayın.

  3. Projeyi kapatıp yeniden açın.


0

Bu, eclipse'deki bir svn deposundan bir projeyi kontrol ederken başıma geldi. .M2 klasörümde tutulmanın bakmadığı jar dosyaları vardı. Yaptığım sorunu çözmek için:

proje klasörüne sağ tıklayın Yapılandır> Maven Projesine Dönüştür

ve bu sorunu çözdü.


0

Milyonlarca cevap var, ama işte bir tane daha: dosyaları yeni bir pakete kopyalayın, eski paketi silin ve yeni paketi eski paketin adıyla yeniden adlandırın.


0

Varsayılan paketi kullanmadığınızdan emin olun. 'Cihazlar' adıyla yeni bir paket oluşturun ve bu kodu içine kopyalayıp kullanın.


0

Diğer paketlerden / projelerden sınıfları kopyaladığımda bu tür durumlar yaşadım.

Menü-> Proje-> Temizle genellikle yardımcı olur.


0

Benim durumumda, Sorunlar sekmesindeki hata işaretini seçtim ve Java'nın dosya ana yöntemi doğru şekilde yürütüldüğü için sildim. Bu, Eclipse Neon'da yüklediği çok sayıda eklentiyle birlikte bir aksaklıktır.


0

Mevcut bir projeyi tutulmaya ithal ettiğimde ben de bu sorunla karşılaştım. Bu bir mezuniyet projesiydi, ancak içe aktarırken Genel-> Mevcut Projeler Çalışma Alanına tıklayarak normal proje olarak içe aktardım. Sorunu çözmek için projeye şu şekilde Gradle doğası ekledim :::: Proje klasörüne sağ tıklayın -> Yapılandır-> Gradle Nature Ekle


0

Spring Tool Suite 4 kullanıyordum. Sorunu çözemedim. Dizin yapısı, paket adına göredir.

Ancak projeyi temizlemek bana yardımcı oldu.


0

Eclipse IDE'de bir maven projesiyle aynı sorunu yaşadım. .Classpath dosyasını doğru formatla değiştirerek sorunu çözebildim. Değiştirdikten sonra projeyi kapatın ve açın.

Örnek .classpath dosyası

<?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>

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.