Eclipse "esta unidad de compilación no se encuentra en la ruta de compilación de un proyecto java"


78

No puedo hacer que el autocompletado funcione en Eclipse.

Estoy trabajando en el proyecto en svn. Configuré el proyecto en Eclipse entrando en

Archivo -> Importar -> Pagar como proyecto -> Asistente de nuevo proyecto.

Elijo la aplicación Enterprise Java y se está descargando. Y todo parece funcionar bien, excepto que el autocompletado funciona como espero, aparece un cuadro de diálogo emergente que muestra el mensaje

Esta unidad de compilación no se encuentra en la ruta de compilación de un proyecto java.

Lo busqué en Google, pero todos dicen que el proyecto debe ser un proyecto Java. ¡Pero bueno lo es! ¿Cuál es el problema?

Actualizar

La estructura del catálogo en svn se ve así:

-Project_name
  -application
     -META-INF
       application.xml
       MANIFEST.MF
  +build
  +db
  +deploy
  +dist
  +lib
  +properties
  +script
  -src
     -META-INF
        someother.xml (datasource info)
        persistence.xml
        folder hierarchy with source files (should be package)
  -web
     some folders
          .
          .
     files
       .
       .
     -WEB-INF
        faces-config.xml
        jboss-web.xml
        web.xml
     build_win.xml

¿Cómo le digo a Eclipse dónde están la carpeta de archivos de origen, application.xml y otros archivos xml de configuración?


Respuestas:


132

Cuando tenga un proyecto maven de varios módulos en un proyecto principal, asegúrese de no editar el archivo en el proyecto principal de maven.


19
esta respuesta debería tener más ups, en un proyecto con módulos / proyectos secundarios anidados, la navegación de eclipse y el explorador de paquetes mostrarán los archivos de cada proyecto secundario en cada uno de sus padres sucesivos y también por su cuenta. al editar, para tener autocompletado, todo lo demás sugerido en las otras respuestas anteriores es correcto, debe usar el proyecto secundario que es por sí solo (es decir, no en ningún proyecto principal) en el explorador.
Pete_ch

2
¿No puedo entender cómo editar una clase solo en un proyecto principal? Entonces, ¿por qué dices que no lo hagas? Tengo un proyecto principal y hay subproyectos / módulos y estaba editando uno de ellos en el que se produjo el error dado.
Samitha Chathuranga

Patéticamente simple. Debe aceptarse la respuesta a menos que este problema pueda ocurrir en proyectos que no son de Maven
mister270

+1. Lo que me pasó fue que hice una ctrl + Hy archivos buscados de algún texto . Apareció un archivo en los resultados, así que hice clic en él y no me di cuenta de que el archivo en el que estaba se abrió a través del módulo principal en lugar del secundario. Recibí este error cuando intenté escribir un método de clase.
prograhammer

Agregaría que lo que verá en tal situación es el mismo archivo aparentemente en dos lugares "diferentes", pero como indica la respuesta, edítelo en el proyecto en sí, no en el proyecto principal.
Jeff

17

Lo que hice para que uno de mis proyectos se revisara correctamente fue

1) Importe su proyecto desde svn

      file-->import-->SVN-Checkout Projects From SVN

2) Busque su proyecto y, a continuación, en el cuadro de diálogo "Desproteger como", asegúrese de tener el botón de opción seleccionado "Desproteger como proyecto configurado con el Asistente de proyecto nuevo".

3) Siga los pasos regulares.

El asistente extrae el proyecto correctamente y luego configura su eclipse ...

sin usar el mago encuentro que se desata el infierno .....

Espero que esto ayude...


17

Esto es lo que faltaba en mi archivo .project:

    <projectDescription>
        ...
        <buildSpec>
            <buildCommand>
                <name>org.eclipse.jdt.core.javabuilder</name>
                <arguments>
                </arguments>
            </buildCommand>
        </buildspec>
        ...
        ...
        ...
        <natures>
            <nature>org.eclipse.jdt.core.javanature</nature>
            <nature>org.eclipse.m2e.core.maven2Nature</nature>
        </natures>
        ...
    </projectDescription>

Agregar la naturaleza jdt.core a mi archivo .project lo solucionó para mí.
Urchin

Después del cambio anterior, tuve que hacer clic derecho en el proyecto, seleccionar Maven y actualizar el proyecto para activar los cambios anteriores. Entonces funcionó.
Kumar S

10

Tengo este problema de vez en cuando y, a menudo, es porque el proyecto no se marcó como un proyecto de Java. Puede cambiar esto yendo a las propiedades del proyecto> Facetas del proyecto> y seleccionando java. Es posible que deba configurar correctamente ese proyecto, pero probablemente esto sea parte del problema


5

También tuve este problema después de convertir mi proyecto java en un proyecto maven. Lo resolví de la siguiente manera:

Haga clic derecho en su proyecto -> Project Facets -> haga clic en Java, luego Aplicar.


Estoy usando STS 3.8.2 e importé un proyecto por carpeta. Los archivos de Java estaban en un único subdirectorio, no en la src/main/javaubicación estándar . No estoy seguro de que ese fuera el problema, pero no había opciones en el menú de ejecución. Gracias, esto ayudó mucho; hubo un par de pasos adicionales. Necesitaba ir a Propertiesantes Project Facets. También hay una Runtimespestaña donde necesitaba seleccionar mi versión de Java.
wsams

4

¿Tenías tu archivo .project en tus carpetas?

Tengo el mismo problema. Entonces me di cuenta de que no tenía el archivo .project.


4

Puede que esté captando cosas incorrectas de tantos comentarios, pero si está utilizando Maven, ¿está haciendo la construcción y limpieza habitual del símbolo del sistema?

Vaya a cmd, navegue hasta su espacio de trabajo (normalmente c: / workspace). Luego ejecute "mvn clean install -DskipTests"

Después de eso, ejecute "mvn eclipse: eclipse eclipse: clean" (no necesita preocuparse por las tuberías).

Además, ¿tiene dependencias de módulos en sus proyectos?

Si es así, intente eliminar las dependencias haciendo clic en Aplicar y luego lea las dependencias. Como esto puede configurar eclipse justo cuando a veces se confunde con buildpath.

¡Espero que esto ayude!


¿No debería ser "mvn eclipse: clean eclipse: eclipse" en su lugar? Si entiendo correctamente su comando, primero genera el proyecto Eclipse y lo elimina inmediatamente después, eso parece un error.
Frank Schmitt

2

Copié el .classpath y .project de otro proyecto y ajusté los valores correctamente.

Cierre el proyecto antes de editar esos archivos, cuando esté seguro de que reflejan la realidad (su realidad de todos modos), vuelva a abrir el proyecto en Eclipse.

El espacio de trabajo se reconstruye y todo debería funcionar a partir de ese momento.


2

en mi caso es un proyecto maven

eliminar el proyecto de eclipse dejando las fuentes cerrar eclipse eliminar del sistema de archivos

.target / .classpath .project .settings / open eclipse Again Importar proyectos Maven

Esto resolvió el problema


2

Es posible que desee intentar ejecutar eclipse con la opción de inicio -clean: intenta reconstruir los metadatos de eclipse del espacio de trabajo.



1

Aquí los pasos para crear una carpeta de origen en eclipse.

  1. Haga clic derecho en el proyecto y vaya a propiedades
  2. Seleccione "Ruta de compilación de Java" en el cuadro de diálogo de propiedades
  3. Seleccione la pestaña de origen y verifique que las carpetas de origen sean correctas; de lo contrario, haga clic en el botón Eliminar para eliminar las carpetas de origen o en el botón Agregar para agregar carpetas de origen.

Puede controlar el orden en el que aparecen las carpetas de origen en un proyecto en la pestaña de orden y exportación en la opción de configuración de ruta de compilación.


1

Tuve el mismo problema (pero con Maven). La razón fue la elección incorrecta del ejecutor: mi proyecto usó configuraciones globales que no están disponibles en la instalación integrada de Maven. Lo cambié a externo (Ventana -> Preferencias -> Maven -> Instalaciones) y eso solucionó el problema.


1

Lo que hice fue después de importar el proyecto desde svn, eliminé el proyecto del espacio de trabajo y lo importé como un proyecto maven de local. Luego, en preferencias-> maven-> configuración de usuario-> en el cuadro de configuración de usuario se proporcionó la ruta de configuración.xml que estará en la carpeta de apache maven-> conf-> configuración.xml

y me resolvió el problema.


1

Sus archivos de origen deben estar en una estructura con un ícono de 'paquete' en la vista Explorador de paquetes (en el menú en Ventana > Mostrar vista > Explorador de paquetes o presione Ctrl+ 3y escriba paquete ), así:

Proyecto Java en Eclipse

Si no es así, seleccione la carpeta que contiene su paquete raíz ( src en la imagen de arriba) y seleccione Usar como carpeta de origen en el menú contextual (clic derecho).


Pero es un proyecto Java Enterprise. Cuando hago clic derecho en cualquier carpeta, no existe el uso como carpeta de origen.
l245c4l

@ l245c4l: Intente hacerlo en la vista Explorador de paquetes (edité mi respuesta para agregar detalles).
Fabian Steeg

No, tampoco funciona. No existe tal elemento en el menú. Revise mi pregunta nuevamente, la actualicé para que ahora haya una estructura de proyecto svn. Gracias por tu tiempo.
l245c4l

0

Como dice el mensaje, ¿está el archivo en algún lugar de la ruta de compilación de Java del proyecto (por ejemplo, una carpeta de origen)?


0

Tuvo el mismo problema. Solución: menú contextual -> Maven -> Habilitar la gestión de dependencias

No sé por qué se perdió, al hacer el check out.


0

Descubrí que recibía este error debido a que mis archivos, incluida mi clase principal, estaban fuera de la carpeta .src.


0

Lo que funcionó para mí fue copiar el directorio .settings / de otro proyecto.


0

Ejecute "mvn eclipse: eclipse" desde la terminal.


2
Si bien este código puede responder a la pregunta, proporcionar un contexto adicional sobre cómo y / o por qué resuelve el problema mejoraría el valor de la respuesta a largo plazo. Recuerde que está respondiendo la pregunta para los lectores en el futuro, ¡no solo la persona que la pregunta ahora! Por favor, editar su respuesta a añadir una explicación, y dar una indicación de qué limitaciones y supuestos que se aplican. Tampoco está de más mencionar por qué esta respuesta es más apropiada que otras.
Dev-iL

0

Si es un principiante (como yo), la solución puede ser tan simple como asegurarse de que la carpeta principal en la que está trabajando sea un proyecto Java.

Cometí el error de simplemente crear una carpeta Java, luego crear un archivo en la carpeta y esperar que funcione. El archivo debe vivir en un proyecto si desea evitar este error.


0

Tuve el mismo problema después de importar el proyecto maven que consta de microservicios anidados. Así es como lo resolví en Eclipse:

  1. Haga clic derecho en Proyecto
  2. Seleccione Configurar
  3. Seleccione "Configurar y detectar proyectos anidados"

-1

Por ejemplo, si hay 4 proyectos y un proyecto raíz, agregue los otros proyectos secundarios para construir la ruta del proyecto raíz. Si no hay una selección de ruta de construcción, agregue los siguientes códigos al archivo .project.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>rootProject</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>

-1
  1. Elimine su proyecto (NO ELIMINE EL ARCHIVO DE ORIGEN EN EL SISTEMA DE ARCHIVOS)
  2. Haga clic derecho en el área del explorador de paquetes y haga clic derecho en importar.
  3. Vaya a la carpeta Maven y presione importar un proyecto Maven existente.

Espero eso ayude

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.