El paquete declarado no coincide con el paquete esperado ""


89

Estoy usando Eclipse y no he usado Java por algún tiempo. Sin embargo, puedo compilar mi código en la línea de comandos sin problemas y generar los .classarchivos necesarios . En Eclipse, se queja de eso The declared package "Devices" does not match the expected package "". ¿Qué significa esto y cómo puedo solucionarlo?

Código de muestra:

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

El nombre de mi proyecto es DeviceDDS.


2
¿Está esta clase en el /src/Convertersdirectorio?
Jeremy

6
Si va a cambiar su pregunta retrospectivamente (lo que parece inútil, para ser honesto), debe ser coherente al respecto: no ha editado el primer párrafo de la pregunta. También has hecho que todos los comentarios parezcan extraños. ¿Por qué cambiar todo, casi un año y medio después?
Jon Skeet

Respuestas:


52

Eclipse espera que el paquete declarado coincida con la jerarquía de directorios, por lo que espera que su archivo Java esté en un directorio llamado "Dispositivos" en la raíz de su fuente. Por el momento, parece que el archivo está directamente en la raíz de su fuente. Así que cree el directorio apropiado y mueva el archivo allí.

Tenga en cuenta que, convencionalmente, los paquetes están en minúsculas e incluyen el nombre de su organización en orden DNS inverso, p. Ej.

com.foo.devices;

3
@Sakti: Hasta donde yo sé, no puedes, y te recomiendo encarecidamente que no lo hagas aunque puedas. Todos los desarrolladores experimentados de Java esperarán que siga las convenciones habituales.
Jon Skeet

88

Intente cerrar y volver a abrir el archivo.

Es posible obtener este error en eclipse cuando no hay absolutamente nada de malo con la ubicación del archivo o la declaración del paquete. Pruébelo antes de pasar mucho tiempo probando estas otras soluciones. A veces, el eclipse simplemente se confunde. Me ha funcionado en varias ocasiones. Le doy el crédito a la idea de Joshua Goldberg .


2
Tuve este problema con un proyecto de Gradle dentro de VS Code. Reabrir lo arregló.
TastyWheat

1
abrir y cerrar el archivo en el editor de eclipse ayudó a resolver el problema. Había agregado una carpeta de origen en la compilación de configuración de java - pestaña de origen, el error no se eliminó, pero cuando cerré y abrí el editor en eclipse, ayudó. :-)
JassJava

Salir y reiniciar eclipse también solucionó el problema.
Don Smith

jejeje .. Pasé una hora tratando de arreglarlo y luego vi esto.
Vikash

44

Solución 1: Una solución que funcionó para mí cuando se produjo este error " El paquete declarado no coincide con el paquete esperado " para un proyecto que verifiqué en eclipse CVS:

1.Haga clic derecho en el proyecto en la barra de navegación y haga clic en 'eliminar'
2.Asegúrese de que la opción ' Eliminar el contenido del proyecto en el disco ' NO esté marcada y haga clic en Aceptar.
3. Ahora, después de eliminar el proyecto, vaya a Archivo -> Importar -> General -> Proyectos existentes en el espacio de trabajo
4. Seleccione su espacio de trabajo en la lista del directorio y marque la casilla junto al nombre de su proyecto. Haga clic en ' Finalizar '

Solución 2: una vez más recibí este error con el siguiente mensaje

Errores de compilación de Eclipse: java.lang.Object no se puede resolver Tuve que seguir otra ruta mencionada aquí y el error desapareció.

Mientras tanto, la solución consiste en eliminar la biblioteca del sistema JRE del proyecto y luego volver a agregarla. Estos son los pasos:

  1. Vaya a las propiedades del proyecto con el error de compilación (haga clic con el botón derecho> Propiedades). Vea la pestaña "Bibliotecas" en la sección "Ruta de compilación". Busque la "Biblioteca del sistema JRE" en la lista (si falta, este mensaje de error no es un error de eclipse pero un proyecto mal configurado)
  2. Eliminar la "Biblioteca del sistema JRE"
  3. Haga clic en "Agregar biblioteca ...", seleccione "Biblioteca del sistema JRE" y agregue el JRE apropiado para el proyecto (por ejemplo, 'JRE predeterminado del espacio de trabajo')
  4. Pulse "Finalizar" en la selección de la biblioteca y "Aceptar" en las propiedades del proyecto y luego espere la reconstrucción del proyecto.

Ojalá se resuelva el error ...


Tuve que hacer esto también (agregando un directorio de pruebas geniales a la compilación). No olvide tomar notas sobre las configuraciones de ejecución, que deberá volver a crear. ¿Alguna idea de por qué es necesario? Que problematico.
Joshua Goldberg

11
Solución más simple: estaba nuevamente en esta situación y pude hacer que funcionara cerrando el proyecto, reiniciando Eclipse y volviendo a abrir el proyecto.
Joshua Goldberg

12
¡Aún más simple! Lo acabo de tener de nuevo y desapareció cerrando y volviendo a abrir el editor del archivo problemático único.
Joshua Goldberg

4
Reiniciar eclipse parece solucionarlo.
Mike R

La solución 1 funcionó para mí. Muy raro. He importado el mismo clon de git en Eclipse en otras máquinas y no he visto este problema.
dnuttle

13

Resolví el problema siguiendo estos pasos:

  1. Seleccione el proyecto - Haga clic con el botón derecho - ruta de compilación java.

  2. En la pestaña de fuente, cambia srca src/main/java.

  3. Eclipse reordenará todo el proyecto.


11

Tuve este problema: las otras clases dentro de mi paquete estaban bien, pero una clase tenía el error en su contra. No hubo nada de malo en la declaración del paquete.

Lo arreglé haciéndolo refactor->movey moví la clase a otro paquete temporalmente, luego de refactor->movevuelta al paquete original.


2

Necesitas tener la clase dentro de una carpeta Devices.


2

Cree un nuevo paquete en su proyecto llamado "Dispositivos" y coloque su clase en él. Esto es equivalente a colocar la clase en un directorio llamado "Dispositivos" en la carpeta de origen de su proyecto.


1

Asegúrese de que Devicesesté definido como carpeta de origen en las propiedades del proyecto.


1

Recibí el mismo tipo de error, pero mi paquete era absolutamente correcto. Cuando acabo de cerrar y abrir mi editor, el error desaparece. Espero que esto pueda ayudar en algunos escenarios.


1

Solucioné esto eliminando un atributo "excluyente" para ese paquete en mi .classpatharchivo. Elimine el atributo, no toda la etiqueta, o "src / java" dejará de ser una carpeta de origen.

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

1

Este problema se resolvió al mencionar el nombre del paquete.

Moví mi archivo Test_Steps.java que estaba en el paquete stepDefinition

ingrese la descripción de la imagen aquí

con solo agregar el paso del paquete Definición, el problema se resolvió

Entonces, este problema puede ocurrir cuando tiene un paquete y no lo está usando en su archivo de clase.

Agregarlo resolvió el problema y el error ya no aparecía.

ingrese la descripción de la imagen aquí


0

Asegúrese de haber creado un paquete correcto. Es posible que tenga la oportunidad de crear una carpeta en lugar de un paquete.


0
  1. Cree el directorio [your.project.name] en el directorio raíz del espacio de trabajo de su proyecto.

  2. Copie * .java de "src" a ese directorio.

  3. Cierre y vuelva a abrir el proyecto.


0

Esto me sucedió cuando estaba revisando un proyecto de un repositorio svn en eclipse. Había archivos jar en mi carpeta .m2 que Eclipse no estaba mirando. Para solucionar el problema que hice:

haga clic con el botón derecho en la carpeta del proyecto Configurar> Convertir a proyecto Maven

y eso resolvió el problema.


0

Hay un millón de respuestas, pero aquí hay otra: copie los archivos en un nuevo paquete, elimine el paquete anterior y cambie el nombre del nuevo paquete al nombre del paquete anterior.


0

Asegúrese de no utilizar el paquete predeterminado. Cree un nuevo paquete con el nombre 'dispositivos' y copie este código dentro de él y use.


0

Tuve este tipo de situaciones cuando copié clases de otros paquetes / proyectos.

Menú-> Proyecto-> Limpiar normalmente ayuda.


0

En mi caso, seleccioné el marcador de error en la pestaña Problemas y lo eliminé ya que el método principal del archivo de Java se estaba ejecutando correctamente. Esa es una falla en Eclipse Neon con la multitud de complementos que ha instalado.


0

También enfrenté este problema cuando importé un proyecto existente para eclipse. Era un proyecto de Gradle, pero mientras lo importaba, lo importé como proyecto normal haciendo clic en General-> Proyectos existentes en el espacio de trabajo. Para resolver el problema, agregué la naturaleza de Gradle al proyecto mediante :::: Haga clic con el botón derecho en la carpeta Proyecto -> Configurar-> Agregar naturaleza de Gradle


0

Estaba usando Spring Tool Suite 4. No pude resolver el problema. La estructura del directorio estaba de acuerdo con el nombre del paquete.

Pero limpiar el proyecto me ayudó.


0

Tuve el mismo problema con un proyecto maven en Eclipse IDE. Pude resolverlo reemplazando el archivo .classpath con el formato correcto. Después de reemplazarlo, cierre y abra el proyecto.

Ejemplo de archivo .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>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.