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?

Joe
fuente
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á

tiboo
fuente
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.

Sjoerd K
fuente
44

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

ganninu93
fuente
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.

Paul Sanwald
fuente
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.

Christian Wilkie
fuente
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.

Joe
fuente
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".

bitsmcgee77
fuente
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.

Moiz Raja
fuente
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ó.

R11G
fuente
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.

Tomas Lukac
fuente
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.

Deepak Patankar
fuente
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.

Mate
fuente
2

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

Taranjit Kang
fuente
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
edmar
fuente
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

RaúlDanielPopa
fuente
¡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.

RAM
fuente
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.

Araklaj
fuente
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.

fracz
fuente
0

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

Sam Barnum
fuente
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.

MoneeK
fuente
0

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

Muzammil
fuente
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í

Carlos López Marí
fuente
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ó.

nikiforovpizza
fuente
-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.

Pasha Shestakov
fuente
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