Eclipse: el paquete declarado no coincide con el paquete esperado

86

Tengo un problema al importar un proyecto externo. Voy a Archivo -> Importar ... -> Proyectos existentes en el espacio de trabajo, elijo la carpeta donde se encuentra el proyecto y todo se importa, pero los nombres de los paquetes del proyecto no parecen ser los que esperaba Eclipse. Todos los nombres de los paquetes tienen un prefijo:

prefix.packagename1
prefix.packagename2

etc.

Pero Eclipse espera

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

etc. porque el directorio es src / prefix1 / prefix / package1

Realmente no quiero perder el tiempo con el código externo. ¿Cómo le digo a Eclipse que ignore el directorio "src / prefix1"? ¿O qué más puedo hacer?

HenryNguyen
fuente
He añadido package (name of package under which the file to be ) al comienzo de archivo
Sai Ram

Respuestas:

105

Simplemente ingrese a la ruta de compilación y cambie la ruta de origen para que sea en src/prefix1lugar de src.

Puede ser más fácil hacer clic con el botón derecho en el srcdirectorio y seleccionar "Ruta de compilación / Eliminar de la ruta de compilación", luego buscar el src/prefix1directorio, hacer clic derecho y seleccionar "Ruta de compilación / Usar como carpeta de origen".

Jon Skeet
fuente
2
¿Cómo deshago lo que acaba de hacer? Hice clic en "Crear ruta / Usar como carpeta de origen" y ya no funciona nada. Editar: La respuesta a mi pregunta es ir a "Configurar ruta de compilación" y eliminar la cosa funky de la lista que no es src / o gen /
ArtOfWarfare
25
Tenga en cuenta que la sugerencia de Jon funciona, pero es posible que necesite reiniciar el eclipse.
Samik R
1
!! Si aún ve el error después de cambiar la carpeta de origen, compile el proyecto. Eclipse a veces me da ganas de romper algo.
MattC
4
Cerrar / Abrir prj funcionó para mí ... Eclipse es una gran herramienta, a veces puede olvidar cosas
niken
Gracias amigo, gran solución.
Runcorn
70

Me acabo de encontrar con este problema, y ​​dado que la solución del Sr. Skeet no funcionó para mí, compartiré cómo resolví este problema.

Resulta que abrí el archivo java debajo de 'src' antes de declararlo como directorio fuente.

Después de hacer clic derecho en el directorio 'src' en eclipse, seleccionar 'ruta de compilación' y luego 'Usar como carpeta de origen'

Cierre y vuelva a abrir el archivo java ya abierto (la actualización F5 no funcionó).

Siempre que la ruta al archivo java desde "prefix1" en adelante se alinee con el paquete en el archivo (ejemplo de la pregunta del solicitante prefix1.prefix.packagename2). Esto debería funcionar

Eclipse ya no debería quejarse de 'src'.

Kyle Shanafelt
fuente
1
Esto fue. Bastante simple, pero me detuvo por un tiempo. ¡Gracias!
Christian Vielma
Después de configurar la ruta de compilación, el cierre y la reapertura del archivo también era necesario para mí. ¡Gracias!
ed-
¡Si! Me funcionó a mi también.
Robert Casey
11

Mueva los archivos * .java de su problema a otra carpeta.

Haga clic en el elemento 'src' y presione "F5".

Las cruces rojas desaparecerán.

Regrese sus archivos * .java a la "ruta del paquete", haga clic en el elemento 'src' y presione "F5".

Todo debería estar bien.

Vlad
fuente
2

Si ha importado un proyecto existente, simplemente elimine sus carpetas de origen y luego agréguelas nuevamente para construir la ruta y reinicie eclipse. La mayoría de las veces, eclipse seguirá mostrando el error hasta que reinicie.

Parveen Yadav
fuente
1

Me sucede después de que las compilaciones fallidas se ejecutan fuera del IDE. Si limpiar su espacio de trabajo no funciona, intente: 1) Elimine todos los proyectos 2) Cierre y reinicie STS / eclipse, 3) Vuelva a importar los proyectos

Bradley D
fuente
1

Lo único que funcionó para mí fue eliminar el proyecto y luego importarlo nuevamente. Funciona de maravilla :)

Delgado
fuente
0

A veces tengo este problema en Eclipse al importar un proyecto de Android que no tiene un archivo .classpath. El que crea Eclipse no es exactamente el mismo que espera Android. Pero, los archivos .classpath de Android suelen ser todos relativos, por lo que simplemente copio un archivo .classpath correcto de otro proyecto sobre el .classpath incorrecto. Creé un video que muestra cómo hago esto: https://www.youtube.com/watch?v=IVIhgeahS1Ynto

usuario3649912
fuente
0

Suponga que su proyecto tiene un paquete como package name1.name2.name3.name4 (paquete declarado)

Su explorador de paquetes muestra el
nivel superior del paquete llamado name1.name2
subpaquetes llamados name3.name4

Tendrá errores porque Eclipse extrae el nombre del paquete de la estructura del directorio de archivos en el disco comenzando en el punto desde el que importa.

Mi caso fue un poco más complicado, tal vez porque estaba usando un enlace simbólico a una carpeta fuera de mi espacio de trabajo.

Primero probé Build Path.Java Build Path.Source Tab.Link Source Button.Browse to the folder before name1 in your package.Folder-name as you like (creo). Pero tuvo problemas.

Luego eliminé la carpeta de la ruta de compilación y probé Archivo> Importar ...> General> Sistema de archivos> haga clic en Siguiente> Desde directorio> Examinar ... a la carpeta sobre el nombre1> haga clic en el botón Avanzado> marque Crear enlaces en el espacio de trabajo> haga clic en Finalizar botón.

darKoram
fuente
Cierto. En mi caso, al nombre del proyecto se le agregó un sufijo, -2.0.0-SNAPSHOT. Se eliminó ese prefijo (renombrar el proyecto ..) y todo funcionó.
JRun
0

Vaya a la carpeta src del proyecto y copie todo el código a una ubicación temporal y compile el proyecto. Y ahora copie el código real de la ubicación temporal al proyecto src. Y vuelva a ejecutar la compilación. El problema se resolverá.

Nota: Esto es específico de eclipse.

Deepak Gupta
fuente
0

Acabo de tener el mismo problema. Sin embargo, las primeras respuestas no me funcionan. Propongo una solución: cambie el archivo .classpath. Por ejemplo, puede definir la ruta del nodo classpathentry así: ruta = "src / prefix1 / java" o ruta = " src / prefix1 / resources ". Espero que pueda ayudar.

Jack
fuente
0

Para mí, el problema era que estaba convirtiendo un proyecto existente a maven, creé las estructuras de carpetas de acuerdo con la documentación y mostraba la carpeta 'principal' como parte del paquete. Seguí las instrucciones similares a Jon Skeet / JWoodchuck y entré en la ruta de compilación de Java, eliminé todas las rutas de compilación rotas y luego agregué mi ruta de compilación para que sea 'src / main / java' y 'src / test / java', también como carpetas de recursos para cada uno, y resolvió el problema.

Douglas Larson
fuente
0

La ruta de construcción debe contener la ruta 'hasta antes' del nombre del paquete.

Por ejemplo, si la estructura de la carpeta es: src/main/java/com/example/dao Si la clase que contiene la declaración de importación se 'package com.example.dao'queja del error de paquete incorrecto, entonces, la ruta de compilación include:src/main/java debería resolver el problema.

Sobin George
fuente
-1
  1. Haga clic derecho en la carpeta externa que tiene el paquete
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. Haga clic en Ruta de compilación -> Eliminar de ruta de compilación.

  2. Ahora vaya a la carpeta prefix1 en la sección de carpetas de su proyecto.

  3. Haga clic derecho sobre él -> Ruta de compilación -> Usar como carpeta de origen.

  4. Hecho. La carpeta del paquete no mostrará ningún error ahora. Si aún se muestra, simplemente reinicie el proyecto.

Pramod Shetty
fuente