Obtener "no se puede encontrar el símbolo" en el proyecto Java en Intellij


97

Hago esta llamada a una instancia estática de singleton de la clase GameManager.java.

HUD.getInstance().update(timeDelta);

HUD.javacontiene la HUDclase, así como otras dos clases relacionadas, HUDTextElementy HUDElement. Todas las clases están en la misma ruta raíz ../src/org/mypackage.

Sin embargo, al compilar este proyecto java en IntelliJ, no puedo encontrar Symbol HUD en la línea en la que hago la HUD.getInstance()llamada.

Este mismo código exacto se compila bien en eclipse, ¿alguna idea de cuál es el problema?


1
¿Tiene la clase HUD importada en ambos?
Alex Coleman

esta es la única solución para este problema que funcionó para mí stackoverflow.com/a/56473166/8660553
Sahil SInghal

Respuestas:


167

Seleccione Build-> Rebuild Project lo resolverá


17
Nota para noobs completos a Java / IntelliJ: lo anterior es diferente de "Build Project"
hiljusti

4
@JustinHill - Estoy bien versado en eclipse y soy nuevo en IntelliJ. ¿Puedes ayudarme con respecto a cuál es la diferencia entre los dos y cualquier punto / enlace que me ayude a resolver mi tiempo con IntellJ?
nanosoft

1
Probablemente soy un recurso peor que una búsqueda en Google, no he usado Eclipse. Mi comentario es solo que "Rebuild Project" y "Build Project" son opciones diferentes (estaba ayudando a alguien que se encontró con esto y no notó la diferencia entre las opciones)
hiljusti

1
¿Por qué funcionó esto? Invalidar cachés y reiniciar ni siquiera funcionó.
b15

Funcionó ... Intenté ejecutar "maven clean compile" pero eso no resolvió el problema
Omtara

54

Tuve el mismo problema y resulta que nunca había compilado completamente el proyecto nuevo. Así que al hacer clic con el botón derecho y seleccionar Compilar '' (shift-cmd-F9 en mac) se solucionó. Parece que la compilación al guardar no 've' archivos no compilados.

Marcar la carpeta src como fuente no ayudó en mi caso.


44

Tuve el mismo problema y lo solucioné haciendo clic en Archivo> Invalidar cachés / reiniciar


1
Tenga cuidado : si tiene algún cambio y no está comprometido, se perderá. :)
Nikola

4
La invalidación de cachés no da como resultado la pérdida de cambios. Ni siquiera estoy seguro de cómo funcionaría eso. Si guarda un archivo, se guarda, independientemente del almacenamiento en caché de IntelliJ o de su compromiso con un repositorio.
Christopher Schneider

29

Es probable que su carpeta ../src no esté marcada como carpeta "fuente" en Intellij IDEA, por lo que no sabe buscar allí para encontrar su clase. Puede hacer clic con el botón derecho en la carpeta en el explorador de proyectos y elegir "marcar como carpeta de origen" para solucionar este problema.


1 es una posibilidad, pero ¿no 2 no le daría un error diciendo que no pudo encontrar HUD, sino un error diciendo que no tiene el método getInstance / update?
Alex Coleman

esta opción parece haber desaparecido.
clankill3r

No, se transforma en opciones emergentes: "Marcar directorio como>"
Dracontis

Mi src contiene una carpeta de prueba dentro y varios módulos, después de marcarlo como Source Root, mi problema es peor.
Se Song

Para mí, esto estuvo cerca de la respuesta correcta. Mi raíz de origen ya estaba marcada, pero tuve que "Desmarcar como raíz de origen" y luego marcarla como raíz de origen nuevamente para corregir el error.
Yanni

26

Estaba obteniendo el mismo error "no se puede encontrar el símbolo" cuando lo hice Build -> Make Project. Arreglé esto eliminando mi /targetcarpeta Maven , haciendo clic derecho en el módulo de mi proyecto y haciendo Maven -> Reimport, y haciendo Build -> Rebuild Project. Esto fue en IntelliJ Idea 13.1.5.

Resulta que la Maven -> Reimportclave era, ya que el problema resurgió varias veces antes de que finalmente lo hiciera.


12

Gracias por la ayuda hasta ahora, resulta que la solución fue compilar HUD.java primero (haga clic derecho en el archivo-> Compilar HUD.java). Después de compilar el archivo java, el resto del proyecto podría compilarse sin ningún problema.

Realmente no sé por qué esto lo solucionó, o por qué IntelliJ no lo haría automáticamente, pero el error de raíz parece tener que ver con IntelliJ que no maneja correctamente tener varias clases en un solo archivo .java.


1
IntelliJ puede manejar varias clases en un solo archivo sin problemas, solo necesita asegurarse de que el archivo se compiló en algún momento.
Makoto

Sí, excepto que tuve el mismo problema con un archivo de clase única. Por extraño que parezca, que había estado funcionando muy bien justo antes de que me encontré con este comando experto: mvn com.zenjava:javafx-maven-plugin:2.0:fix-classpath. Está destinado a mover el jar de javafx del directorio libs al directorio ext para el JDK actual. Lo encontré aquí .
nihilon

7

Tuve que hacer clic derecho en el proyecto y seleccionar "Reimportar" en el submenú "Ejecutar Maven".


5

Utilizo maven en mi proyecto. Por alguna razón, IntelliJ me estaba dando este tipo de errores extraños. Ejecuté mvn clean y probé una resincronización y estos errores desaparecieron.


1
limpiar es un ciclo de vida experto. Lo usa si desea limpiar todos los archivos de salida que han sido creados por el proyecto maven.
Moiz Raja

5

Para mí, probé estos pasos (Invalidate Cache & Restart, Maven Reimport)) pero no funcionaron. Así que he eliminado el .idea, .settingsy .projectcarpeta y probado - funcionó.


3
Eliminar la .ideacarpeta lo hizo por mí.
Daniel D.

4

Esto me sucedió cuando eliminé una carpeta y luego la copié y pegué en el proyecto.

Right-click project folder -> Rebuild trabajó para mi.


3

Enfrenté el mismo problema, y ​​hay muchas soluciones en la respuesta, probar todas estas soluciones me llevó bastante tiempo, así que aquí me gustaría proponer un enfoque metódico si obtiene este error.

Verifique las siguientes cosas, cree / actualice si falta algo

  1. La carpeta src está marcada como carpeta de origen.
  2. Los archivos .imls están presentes
  3. El procesamiento de anotaciones está habilitado
  4. Si recientemente usó @UtilityClass, entonces también puede ser la razón, Bug Link

Si todo está bien, puede intentar seguir las soluciones en el orden dado

  1. Recompilar el archivo / módulo

  2. Si eso no solucionó el problema, intente actualizar la dependencia de maven y construir el proyecto usando Maven -> ReimportyBuild -> Rebuild Project

  3. Tratar mvn clean install -DskipTests

  4. Intente invalidar la caché de IntelliJ y reiniciar el IDE, usando File > Invalidate caches/ restart

  5. Elimine la carpeta .idea y vuelva a importar el proyecto

Crédito y agradecimiento a todos los que respondieron esta pregunta, puede consultar sus respuestas para obtener más descripción sobre cada punto.


1
funciona: intente invalidar el caché de IntelliJ y reiniciar el IDE, usando Archivo> Invalidar cachés / reiniciar
Energía

2

Sé que esta es una pregunta antigua, pero según mi experiencia reciente, esto sucede porque los recursos de compilación se eliminan o Idea no puede reconocerlos como la fuente.

Dondequiera que aparezca el error, proporcione las fuentes para la carpeta / directorio y este error debe resolverse.

A veces, incluso cuando asignamos fuentes para toda la carpeta, es posible que las clases individuales aún no estén disponibles. Para los usuarios novatos, la solución simple es importar una copia nueva y volver a compilar la aplicación para que esté lista para usar.

Es aconsejable realizar una instalación limpia después de esto.


2

recompilar la clase principal Application.java lo hizo por mí, haga clic derecho en clase> Recompilar


2

Sé que este hilo es antiguo, pero otra solución fue ejecutar

$ mvn clean install -Dmaven.test.skip=true

Y en IntelliJ haz CMD + Shift + A (mac os) -> escribe "Reimportar todos los proyectos de Maven".

Si eso no funciona, intente forzar que las dependencias de maven se vuelvan a descargar

$ mvn clean -U install -Dmaven.test.skip=true

En mi caso, hubo clases autogeneradas (basadas en archivos XML) a las que otras partes del código hicieron referencia. Mientras se construía con maven funciona, si no se mvn installed, IntelliJ no vio esas referencias y falló el entorno de ejecución.
tokosh

2

Para mí fue un problema con Lombok, porque requiere que el procesamiento de anotaciones esté habilitado. Puede encontrar esta casilla de verificación enSettings > Build > Compiler > Annotation Processors


¡Gracias! Esto me lo arregló.
nyarasha

1

Para mi caso, el problema fue usar la función experimental de Lombok @UtilityClass en mi proyecto java en Intellij Idea, para anotar los métodos de una clase como "estáticos". Cuando hice explícitamente cada método de la clase como "estático" en lugar de usar la anotación, todos los problemas de compilación desaparecieron.


0

Dado que este es el primer resultado en Google al buscar el error "intelliJ no puede encontrar el símbolo", también incluiré mi solución.

El problema para mí fue que mi proyecto se originó a partir de Eclipse, y algunos archivos contenían dependencias de clases generadas src/generated-sourcespor especificaciones en pom.xml. Por alguna razón, esto no se ejecutó correctamente cuando abrí el proyecto por primera vez y la reconstrucción / reimportación no ayudó, por lo que los archivos nunca se generaron.

La solución fue hacer clic derecho en el módulo y seleccionar Maven -> Generate Sources and Update FoldersEso resolvió el problema y pude compilar.


0

Asegúrese de que el archivo de origen de la clase java a la que intenta hacer referencia tenga una .javaextensión. Fue .ajen mi caso (debo haber pulsado "Crear aspecto" en lugar de "Crear clase" al crearlo). IntelliJ muestra el mismo icono para este archivo que para la clase "normal", pero el compilador no lo ve al compilar.

Cambiando .aja .javafijo en mi caso.


0

A veces, la clase que desea está en el testdirectorio de origen. Me pasó a mí, de todos modos ...


0

Tenía el mismo problema, excepto que estaba importando las clases para las que las dependencias no se resolvían de alguna manera. Actualicé los proyectos de maven, Rebuild Project. Todavía no se resolvió. Parece que IntelliJ estaba almacenando en caché algo incorrectamente. Reinicié IntelliJ y eso resolvió las dependencias. Supongo que borró el caché de alguna manera.


0

Si está utilizando Lombok, asegúrese de haber habilitado el procesamiento de anotaciones.


0

Veo muchas respuestas proponiendo una compilación o una reconstrucción, pero en caso de que esto no solucione su problema, observe que IDEA puede detectar un método, pero no se compilará en caso de que tenga un newantes, como lo será. esperando la instancia.

ingrese la descripción de la imagen aquí


0

En mi caso, tuve un problema para encontrar una clase de otro módulo. En pom.xml, acabo de tener esta dependencia con <scope>compile</scope>especificado. Eliminar esta línea ayudó.


-1

Sé que esto es antiguo, pero para cualquier otra persona, asegúrese de que la clase que falta esté en el mismo paquete que la clase en la que obtiene el error / desde donde lo llama.


Votado en contra, ya que las clases se pueden importar de otros paquetes. Generalmente, la clase de destino debe ser importada y en classpath; al usar Maven, la dependencia debe configurarse correctamente.
fxnn
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.