2010-09-09 15 views
33

Tengo un módulo maven (módulo-A) en IntelliJ. Recientemente cambié algunas clases de él a otro módulo maven nuevo (módulo-B) y agregué una dependencia a él. Una vez que hice esto, también modifiqué la firma de un método de una de las clases movidas (ahora en el módulo B).IDEA JetBrains IntelliJ - Error de compilación en 'make', pero está bien cuando se compila con Maven y no hay errores reportados por IntelliJ en el archivo de clase

Reimporté los poms para que IntelliJ recogiera los cambios de dependencia y se asegurara de que todas las importaciones de Java para los archivos afectados volvieran a ser correctas. Ahora cuando intento ejecutar mi aplicación web (que depende de los dos módulos) obtengo un error de compilación en una clase en el módulo A que llama al método modificado de la clase en el módulo B.

El mensaje de error básicamente dice que ese método no existe pero cree que el método anterior aún existe. Hago clic en el error 'hacer' y me lleva a la línea en una clase del módulo: una llamada al método modificado ... lo extraño es que IntelliJ sabe que está bien en el archivo. es decir, el método no está subrayado en rojo como normalmente sería un error de compilación, pero el nombre del archivo de clase es :(

Lo compilé desde la línea de comando usando 'mvn install' (también se instaló el módulo-B) y es todo exitoso. He eliminado el directorio de clases en el objetivo tanto del módulo A como del módulo B y también he invalidado los cachés de IntelliJ y reiniciado ... todavía está sucediendo ... alguna idea?

+0

¿Has reconstruido y redistribuido todo tu proyecto? –

+0

Sí, intenté reconstruir todo el proyecto en IntelliJ varias veces y sigo teniendo el mismo error ... :( –

+1

¿Limpia sus cachés IntelliJ? –

Respuesta

1

¡Así que lo dijimos esta mañana y todo está funcionando!

Ayer por la noche lo que hice fue abrir un nuevo proyecto (proyecto intelliJ) del módulo A y el pom padre del módulo B y lo logré construir, posiblemente haciendo eso y luego abriendo de nuevo mi proyecto original. ... muy molesto aunque

+0

¡realmente molesto! Gracias por compartir – OhadR

6

Probar mvn clean sus proyectos y mvn install su proyecto B.

La integración de maven con intelliJ es un poco problemática cuando utiliza el comando make proporcionado directamente por Intellij. Debe usar directamente el mv n comandos, o iniciarlos desde el panel maven.

+0

Lo siento, pero desafortunadamente ya he intentado limpiar/instalar varios de esos módulos y de su padre pom, también realizó la instalación limpia. –

+0

Lo único que funcionó para mí. Qué lástima, que tomó mucho tiempo. = ( – naXa

+0

Just maven clean funcionó para mí. – Lucky

5

Cambie la configuración del "compilador Java" en IDEA (compilador de usuarios javac en proceso) para solucionar el problema.

13

Pasé unas horas con este mismo problema. Todas las limpiezas del mundo no ayudaron.

Eliminé mi directorio de salida y de destino en mi proyecto y volví a compilarlo - eso lo borró.

Editar: También hay una característica mágica en el menú de archivo: "Invalidar caché/reiniciar" Esto corrige un montón de problemas "intellij es confundido".

+1

Esto funcionó Creo que IntelliJ se cuelga de versiones anteriores de código que se han creado. Simplemente examinó todos los directorios del módulo y se ejecutó sin problemas. ¡Todo funciona de nuevo! – C0M37

+0

@ C0M37 mvn clean hizo el truco para mí, ¡gracias! – delucasvb

+0

Ninguno 'mvn clean' ni invalidar cachés y reiniciar el trabajo s para mí :( –

20

Maven Projects -> Reimport debería ayudar.

+1

Matthew, esta es una solución de trabajo, no un comentario. –

+1

Gracias vibneiro pero ya lo había hecho, y lo mencioné en la pregunta; "Reimporté los poms para que IntelliJ recogiera los cambios de dependencia" –

+1

gracias, ¡hizo el trabajo! – velkopopovizky

1

Acabo de tener un problema similar que me estaba volviendo loco. Había hecho todas las otras cosas mencionadas en las respuestas anteriores porque utilicé Intellij para siempre, pero ninguna funcionó. Al final descubrí que en la parte de proyectos de maven de Intellij, uno de mis módulos había sido marcado como "ignorar", un simple comando de ignorar desde el menú de contexto hizo el truco.

4

Me encontré con un problema muy similar que me estaba volviendo loco.

Mi código podría compilarse bien con la tarea de hormigas que normalmente corro, pero no se basaría en IntelliJ, quejándose de "no puede encontrar símbolo, bla, bla"

Resulta que se puede añadir archivos "excluidos" de la compilador. Mi archivo de alguna manera se agregó a esa lista.

Esta lista se encuentra en Archivo> Configuración> Generador> No incluye artículos (13) IntelliJ

0

que tenía un comportamiento muy similar. Las pruebas de ejecución (Scala-) siempre fallarían debido a errores en clases java no relacionadas durante el paso 'hacer'.

Resultó que había incluido una biblioteca 'global' de SDK que colisionó con una de las dependencias del proyecto. Un mensaje de error útil adecuado solo apareció después de eliminar el paso 'hacer' de la prueba. Luego eliminé la biblioteca duplicada, volví a agregar el paso "make" a la prueba y todo está funcionando bien ahora.

0

me encontré con este problema hoy en día después de la actualización del 12 al 13.

tema Más tarde me fijo como lo hacía el mismo nombre para el proyecto y el módulo y se ve Intellij permite esto, pero no puede manejar correctamente.

No tengo idea de por qué la configuración afectará a la compilación, aunque no hay ningún error en el editor de Java. En caso de un error en la versión 13.

35

descubrí que esto podría ayudar:

Archivo -> Invalidar cachés

+5

Ten cuidado con hacer esto sin embargo. Consulte la advertencia en esta página: https://www.jetbrains.com/idea/help/cleaning-system-cache.html – Noremac

+0

en mi humilde opinión, el comentario de @Noremac debe incluirse en la respuesta. – kraxor

0

que estaba frente a un problema similar después de actualizar de IntelliJ 12 a 13 Después de varias desinstalaciones y reinstalaciones (de múltiples versiones inteligentes), numerosas limpiaciones y eliminación de repositorio .m2, finalmente descubrí cuál era mi problema.

En mi configuración de intelliJ, los repositorios mencionados en mi archivo POM principal no se pudieron conectar. esto a su vez fue un repositorio alternativo y alternativo que se mencionó como parte de mi archivo pom. Una vez que el POM se creó para apuntar al repositorio correcto, todas mis clases resolvieron sus problemas de compilación.

Para comprobar si sus depósitos están conectados a, ir a Archivo -> Configuración -> Maven -> Repositorios

Aquí, los repositorios de Maven indexados deben conectarse al éxito. Si no lo son, intelliJ no podrá resolver la mayoría de las dependencias entre terceros y módulos.

2

El comportamiento que veo es similar al descrito por el autor original. Los marcadores de error aparecen en el lado derecho del editor en Intellij 14 y menos en 13.

Esto ocurre también si se usa Scala en lugar de Java y se usa SBT en lugar de Maven.

También se ha notado que esto ocurre después de que se carga el segundo proyecto. El primero siempre está bien. (Después de mucho ensayo y error) Supuse que podría deberse a que las memorias caché internas de Intellij se estaban volviendo corruptas. "Invalidar cachés" funcionó alguna vez y otras no.

¡Trabajo con varios proyectos usando Play!Framework y usan diferentes versiones de Scala y muchas dependencias. Presumí que las memorias caché se corrompieron porque la clave interna que usa Intellij no es lo suficientemente buena para manejar situaciones cuando la misma clase, cargada varias veces en diferentes jarras, tiene diferentes firmas, y esto genera errores en el editor, mientras que las externas funcionan bien.

¿Luego el "Cambio de ubicación de Ivy Cache para proyectos de sbt en IntelliJ IDEA?" post dio la idea de segregar la caché de hiedra SBT e Intellij usar con la esperanza de que la ruta ivy es parte de la clave de caché interna.

Paul Phillips de Typesafe proporcionar las herramientas "SBT extras" y aquí he encontrado una forma de instruir SBT utilizar un proyecto de hiedra basado en casa, caché y SBT arranque:

https: //raw.githubusercontent.com/paulp/sbt-extras/master/sbt

declare -r noshare_opts = "- Dsbt.global.base = proyecto/.sbtboot -Dsbt.boot.directory = proyecto/.boot -Dsbt.ivy.home = proyecto /.ivy"

Finalmente se deshizo de la .ivy2 basado en casa del usuario y todos los contenidos. Para estar seguro de que Intellij no utiliza esta carpeta, la hice de solo lectura. Esto fue un error. Intellij parece fallar silenciosamente en resolver dependencias si lo hace.

Esto resolvió los errores y cree que no volverán. :-)

Si los chicos de Intellij escuchan esto: prueben sus lanzamientos (Scala, SBT, editor) con todas las plantillas de Play Framework de TypeSafe. El problema se hace evidente rápidamente de esta manera.

0

Me da vergüenza decirlo, pero también tuvimos este problema, pero fue debido a un error en el nombre de nuestro paquete.

Al crear los paquetes para un nuevo proyecto, accidentalmente creé un paquete llamado "org.package".

Mi proyecto tenía entonces una estructura de directorios como:

/src/main/java/org.package/

que causó todo tipo de estragos con IntilliJ.

Una vez que se creó la estructura de carpetas correcta en el sistema de archivos, IntelliJ funcionó muy bien.

/src/main/java/org/paquete/

Nota la diferencia en/org.paquete/vs/org/paquete/

3

siguientes pasos deben solucionar este problema:

  1. eliminar .IntelliJIdea12/.IdeaIC12 mayores en c:/user /.../
  2. caché
  3. de Invalidate Intelli : Archivo> Invalidar cachés.
    Esto vuelve a indexar su espacio de trabajo al iniciar y también borra su historial local. Antes de hacerlo, confirma o realiza una copia de seguridad de todos sus cambios no confirmados.
  4. Una vez que su área de trabajo está de vuelta después de la indexación, realice una instalación limpia maven.
  5. cuando la acumulación se realiza correctamente, haga clic en Maven reimportaciones

Esto funcionó para mí, creo que debería funcionar también para los demás con un problema similar.

0

En mi caso, marqué manualmente un directorio como "Raíz de fuentes de prueba" pero IDEA lo marcó en un proyecto Maven principal. Desmarcándolo en Archivo-> Estructura del proyecto ...-> Los módulos corrigieron el problema.

0

La solución fue que hice javac en lugar de Ajc y puse 1.8, por supuesto, de acuerdo con su versión jdk.

por alguna razón cuando invalido y reinicio intellij fue configurado como el predeterminado!

after i fixed i made it javac instead of Ajc

mi versión es

enter image description here

0

Esto me pasó ... lo arregló se daba cuenta de que había un archivo main.iml adicional en el directorio de origen. Al eliminar esto, desaparecieron instantáneamente los errores de compilación.

Cuestiones relacionadas