El paquete Maven funciona pero la compilación de Intellij falla

91

Tengo un proyecto JDK 1.7 con una dependencia de maven a un jar local en mi repositorio de maven.

No puedo construir el proyecto usando Intellij, con los errores de que no se puede encontrar un símbolo (el símbolo es una clase que importa paquetes del jar local)

Pero puedo construir con éxito el proyecto usando 'mvn package'.

He pasado mucho tiempo buscando soluciones, cosas que ya hice:

  • Caché invalidado
  • 'mvn clean install' la dependencia del jar local
  • Marcado como 'instantáneas de carga automática' en la configuración maven de Intellij
  • Maven reimpuesto en Intellij
  • Sincronizado

Este error me sucedió un par de veces antes, pero generalmente solo cerrando el Intellij y / o haciendo la 'instalación limpia de mvn' funcionó.

Por favor ayuda.

Yarin Miran
fuente
1
¿Su repositorio de maven está configurado correctamente con IntelliJ?
Ruchira Gayan Ranaweera
sí lo es, la ruta del repositorio es la que se actualiza cuando uso 'mvn install'
Yarin Miran
3
¿El jar local es una instantánea o una versión de lanzamiento de jar? Si el jar es una instantánea, debe marcar 'Actualizar siempre las instantáneas' en la configuración de intellij Maven para forzar la actualización del ide.
F. Geraerts
sí es una instantánea, ya marqué esa opción. Pero aún así, nada cambia :(
Yarin Miran
1
En la parte del Compilador de la Configuración, ¿está marcada la opción "usar compilación externa"? ¿Y en Usar compilación externa, la opción "Reconstruir módulo en cambio de dependencia" también está marcada?
F. Geraerts

Respuestas:

155

Sé que es tarde, pero la ejecución mvn idea:idearesuelve el problema.

Rahul Jha
fuente
3
Esta debería ser la respuesta aceptada, ya que ofrece una solución real, no solo la razón por la que falla. ¡Todos mis updoots!
Warkst
4
mvn idea:ideano se ha mantenido actualizado y no es mantenido por jetbrains
Sean
2
Tuve que volver a ejecutar mvn install después de eso
Fabio F.
1
Después de eso, simplemente reconstruya el proyecto. Gracias.
Duc Tran
2
Me has salvado de la desesperación. Me gustaría besarte
Martin Bamford
29

Intente eliminar todos los archivos .iml y su POM. Luego copie y pegue su POM nuevamente en su proyecto y vuelva a abrirlo y vuelva a importarlo.

masoodg
fuente
13
Tal vez simplemente intente "volver a importar todo" en la vista del proyecto Maven, antes de eliminar nada
Zveratko
3
Tuve que eliminar el .iml también, reimportar maven no lo solucionó.
Daniel de Zwaan
1
@masoodg, ¡muchas gracias! ¡Salvaste mi día! Solo volver a importar no ayudó. Seguí tus instrucciones y funciona como un encanto.
tabalin
Cierre de IntelliJ, eliminando el *.iml, *.ipry *.iwslos archivos del directorio raíz del proyecto, a continuación, volver a abrir Intellij fijado para mí
theferrit32
16

Descubrí que mi archivo .iml y pom estaban en conflicto y causaban el problema.

Yarin Miran
fuente
1
Tengo un problema similar. Tengo una configuración con el complemento de fecha de compilación. Este complemento requiere la propiedad buildDate con este valor "$ {maven.build.timestamp}". IntelliJ tiene problemas para analizar este pom y el archivo iml no está sincronizado correctamente con pom. Cuando comento la propiedad buildDate, la sincronización funciona bien.
chalimartines
9
¿Algún consejo sobre cómo solucionar esto? Me gustaría que Intellij funcione, parece que Netbeans ejecuta cualquier proyecto sin importar qué ... este es un destructor total de la productividad :( ...
Breno Salgado
1
No sé si su solución fue la misma, pero tuve que salir y volver a cargar el proyecto para obligar a IntelliJ a actualizar su archivo IML (no lo había actualizado desde pom.xml ya que había agregado algunas dependencias nuevas)
SonarJetLens
1
El "cómo" es bastante más útil que el "por qué". Agregue algunos detalles sobre cómo solucionó este problema.
João Matos
2
Cerré IntelliJ. Luego, eliminé C:\Users\USERNAME\.IntelliJIdea2017.2\system. Luego, hice un git clean -xdfen el directorio de origen para eliminar todos los archivos no versionados y volví a importar el proyecto. Funciona como un encanto ahora.
koppor
15

Agregando algunos consejos más, ya que esto es lo primero que surgió en la búsqueda cuando tenía problemas similares (el proyecto se construye en mvn, no en IntelliJ), en caso de que pueda ayudar a alguien más.

Cuando tuve esto, fue una solución diferente en Windows y Mac.

En Mac, entré en ItellijIDEA / Preferences / Build, Execution, Deployment / Build Tools / Maven / Maven Home Directory y lo configuré para usar mi Maven instalado por separado en lugar del Maven incluido. Todos los problemas de construcción desaparecieron.

En Windows, estaba viendo excepciones en el archivo idea.log relacionadas con SSL y mi árbol de proyecto solo tenía Java en la rama de Bibliotecas externas. Al mirar otros sitios, parece que IntelliJ usa su propio JDK privado en lugar del del sistema (aunque en mi caso ya tenía exactamente la misma versión de JDK instalada). Mi sistema JDK tiene certificados instalados en el almacén de claves para el servidor Nexus corporativo que el JDK privado de IntelliJ no tenía, por lo que se lanzaron excepciones cuando intentó obtener archivos de Nexus. Para esto, la solución fue salir de IntelliJ, configurar una variable de entorno llamada IDEA_JDK para apuntar al JDK que ya había instalado que tenía los certificados adecuados y reiniciar IntelliJ. Todos los problemas de construcción desaparecieron.

rrjp
fuente
El mismo problema en Linux con el último IntelliJ 2016.3.5: primero funcionó, luego, después de algunos cambios de POM, se salió de la sincronización y solo ayudó cambiar el impl de Maven, por lo que también podría ser que simplemente cambiar Maven desencadena una actualización en IntelliJ que causa que el proyecto vuelva a estar sincronizado ...
Gregor
15

Maven ReImport trabajó para mí como a continuación ...

ingrese la descripción de la imagen aquí

Ram Ghadiyaram
fuente
5

IDE usa su propia copia empaquetada de Maven al hacer compilaciones. Si maven en la terminal es diferente de IDE, entonces querrás que sean iguales.

GOTO (en una Mac) - IntelliJ Idea -> Preferencias -> Compilación, ejecución, implementación -> Herramientas de compilación -> Maven. Establezca la ruta para su directorio de inicio de Maven Para encontrar la ruta de Maven que usa desde la terminal, escriba comando mvn -versiony eso debería imprimir un montón de detalles, incluida la ruta de directorio. Pon eso en Maven Home Directory .

Para estar seguro, también puede hacer lo mismo con la ubicación de JDK

==== Algunas otras cosas que pueden causar tales problemas ===

Si está haciendo compilaciones de mvn package o mvn clean install, entonces tiene que hacer algo con las cachés IDE. Entre otras cosas, este suele ayudar con tales errores ->

Archivo -> Invalidar cachés

ARCA
fuente
4

Sé que llegué bastante tarde a esta conversación, pero solo quería publicar esto en caso de que alguien más se encuentre con este problema. Otra razón por la que esto sucede es porque no se está refiriendo al repositorio correcto. Intellij recoge la versión empaquetada de un jar de forma predeterminada en lugar de la de su propio repositorio de maven. Confirma que el repositorio conectado es el correcto.

Optimizador
fuente
Si ha instalado maven usando homebrew, configurando el directorio de inicio de maven correctamente (por ejemplo) /usr/local/Cellar/maven/3.5.4/libexec resuelve este problema
sushilshimpi
3

En mi caso, mi iml no estaba sincronizado, por lo que eliminé el iml para el módulo específico y luego, en la opción maven, seleccioné unignore project para recrear iml

Bikas Katwal
fuente
3

desde el símbolo del sistema, ejecute el comando: mvn idea:ideay haga clic derecho en el proyecto -> desde el menú, vuelva a importar las dependencias

Ram Maddela
fuente
1

"No se puede encontrar el símbolo" significa que intellij no puede resolver la "dependencia". Por lo tanto, puede forzar el "Análisis de dependencia" haciendo clic en "Analizar" -> "Analizar dependencias" y luego seleccione el "Alcance del análisis".

dgm
fuente
1

Muchos consejos valiosos en las otras respuestas aquí, solo quiero agregar la solución que funcionó para mi problema .

Recientemente comenzamos a usar un repositorio privado de Maven y siempre lo hacemos mvn -s settings.xml cuando invocamos la línea de cmd de Maven. IntelliJ, por supuesto, no conoce el repositorio privado, por lo que necesita un poco de ayuda.

Vaya a Configuración -> Generar, Ejecución, Implementación -> Herramientas de compilación -> Maven y anule la opción "Archivo de configuración de usuario".

ingrese la descripción de la imagen aquí

Johannes Rudolph
fuente
1

Yo tuve el mismo problema. Ir:

Archivo -> Estructura del proyecto -> Módulo . Seleccione su módulo y en la pestaña " Dependencias ", asegúrese de que se agreguen todas las dependencias de maven.

Para asegurarse de que se le advierte sobre un problema similar en el editor de ideas: cambie de la "pestaña Dependencias" a "Fuentes" y agregue marcar su src como fuente.

Denorm
fuente
0

Yo tuve el mismo problema. Cambié la versión de Maven de 3.0.5 a 3.0.4 en la configuración de Idea y ahora todo funciona bien. No sé por qué eso me ayuda.

Boris Mitioglov
fuente
0

Intenté invalidar el caché, cambiar el Maven a la versión instalada y nada funcionó.

Cerrar y recrear un nuevo proyecto lo resolvió.

Anubha
fuente
0

Cerré el proyecto y lo importé nuevamente haciendo clic en el pom raíz (no solo en la carpeta, sino en el archivo pom en sí).

Togepi
fuente
0

Probé todo lo anterior sin alegría. Sin embargo, hice una cosa que finalmente hizo que funcionara:

Fui a C: \ Users \ .IntellijJIdea2018.2 y eliminé toda la carpeta.

Elimina todas las configuraciones y el caché de IntelliJ. Tuve que volver a importar mi proyecto desde cero, pero una simple eliminación y reimportación no había funcionado antes, pero esto finalmente hizo que funcionara nuevamente.

Emma
fuente
0

Si está utilizando gradle, intente el siguiente comando. Esto resolvió mi problema

gradle cleanIdea idea

Liju John
fuente
0

Este sencillo procedimiento dura aproximadamente 1 minuto sin ningún riesgo.

  • Cerrar IntelliJ
  • Elimine SOLAMENTE los archivos específicos de IntelliJ como .idea / *, * .iml, .settings, etc. Se sugirió eliminar el POM también, pero eso no es necesario en mi humilde opinión.
  • Luego, vuelva a crear el proyecto en IntelliJ usando: Archivo > Nuevo> Proyecto de fuentes existentes> siga los pasos. Tenga en cuenta que NO debe importar varios perfiles o (mismos proyectos).
tm1701
fuente
0

Elimina la carpeta .idea y cierra el IDE

abra el IDE nuevamente e importe el proyecto que hará una nueva importación porque la carpeta .IDEA fue eliminada por nosotros anteriormente

Verifique el módulo de bibliotecas externas y si no está poblado con las dependencias requeridas, verifique si la ubicación de maven settings.xml se proporciona correctamente en el IDE

firstpostcommenter
fuente
0

También existe una posibilidad que no se mencionó. Si importa la biblioteca desdecom.sun.* . También causará este problema.

Los programas funcionan cuando se ejecutan en ide, ya que estas clases en com.sun.*están todas en el jre/libdirectorio, se cargarán cuando se ejecuten. Pero cuando ejecuta mvn package, estas bibliotecas no serán accesibles debido a la restricción de Oracle desde java 1.6 (estas bibliotecas fueron obsoletas de alguna manera). Para resolver este problema, puede agregar

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

recuerde reemplazar el cootclasspath con su propio camino de rt.jar

Puede buscar Access restriction: The type XXX is not accessible due to restriction on required librarymás detalles.

pobre tipo
fuente
0

Si hay módulos erróneos configurados, siga estos pasos:

  • Ir a la configuración del proyecto
  • Ir a Módulos
  • Eliminar módulos que no deberían estar allí
OSGI Java
fuente
0
  1. Desde la pestaña de maven, haga clic en + y elija pom.xml
  2. Desde la pestaña maven, haga clic en descargar fuentes y documentación
  3. En la estructura del proyecto (donde puede ver los archivos / directorios del proyecto), haga clic con el botón derecho en el proyecto que está tratando de construir y elija Build Module Project Name.
  4. Desde la pestaña Ejecutar- Editar configuraciones con + agregar aplicación y completar los campos siguientes: i. Clase principal: elija manualmente desde la pestaña Proyecto, seleccione la clase principal ii. Use classpath del módulo - elija el nombre de la aplicación iii. Acortar la línea de comandos - archivo classpath
  5. Ahora simplemente ejecute la aplicación.
Jaydeep Bhatia
fuente
0

En mi caso, el problema estaba en una versión diferente del SDK de Project Java. Cuando estaba construyendo un proyecto desde la terminal, maven usó Java 8, y cuando estaba construyendo desde IDEA, usó Java 11.

Vaya a Archivo> Estructura del proyecto ... y en Configuración del proyecto, configure el SDK del proyecto en la versión que necesita.

Roman Kovalchuk
fuente
0

Para mí, el problema fue que tenía el compilador Ajc seleccionado en la configuración del compilador IntelliJ Java . Una vez que lo cambié de nuevo a Javac, todo funcionó bien.

Redar
fuente
0

Para mí en Mac, lo resolví eliminando la aplicación Intellij Idea de mi computadora y eliminando los archivos de caché en ~ / Library / Application Support / JetBrains / IntelliJIdea2020.1 ~ / Library / Caches / JetBrains / IntelliJIdea2020.1

Luego, vuelva a instalarlo, abra mi proyecto y constrúyalo correctamente.

Xi Zhao
fuente
0

Encontré el mismo problema. Puedo ejecutar con éxito el mvn clean packagecomando en la terminal pero no puedo ejecutar o compilar desde IntellJ. Hice las siguientes acciones pero todas fallaron.

  • Caché invalidado
  • correr mvn clean packageo mvn clean packageen la terminal
  • Marcado como 'instantáneas de carga automática' en la configuración maven de Intellij
  • Sincronizar o volver a importar
  • Elimine todos los archivos relacionados con IntellJ como .idea y vuelva a importar el proyecto
  • eliminar todos los archivos de dependencia y luego ejecutar mvn clean package
  • Cambie la versión de Java o use Java incrustado en IntellJ
  • correr mvn idea:idea
  • Cambiar casa de Maven
  • marcar el directorio src como fuente en la pestaña del módulo

Lo último que hice funcionó: Eliminar el .idea y .iml en el proyecto, eliminar todos los archivos de dependencia y luego eliminar el IntellJ de la computadora. Después de reinstalar el IntellJ, mi proyecto se construyó con éxito. Ojalá pudiera tener una mejor manera de resolver esto.

Adán
fuente