Error de eclipse: ¿referencia indirecta desde archivos .class requeridos?

186

Recibí un error en Eclipse. ¿Qué significa este mensaje de error:

El tipo iglu.ir.TermVector no se puede resolver. Se hace referencia indirecta desde los archivos .class requeridos

karikari
fuente
21
Agregue jar que contenga iglu.ir.TermVector en la ruta de origen de su proyecto.
Harry Joy el
2
Si está seguro de que se proporciona la clase, intente limpiar y actualizar todos sus proyectos
Mirco
Esto me sucedió debido a dependencias transitivas en mis tarros
Janac Meena
¡exactamente! este jar debe estar presente en las dependencias pom.xml.
Gaurav

Respuestas:

193

Significa: "Una clase que use necesita otra clase que no esté en el classpath". Debes asegurarte (como sugiere Harry Joy) de agregar el jar requerido al classpath.

Arne Deutsch
fuente
3
Respuesta universal y simple que me ayuda mucho en diferentes casos :) THX
Mariusz Chw
Si está tratando de eliminar clases en particular, verifique las clases primarias para referencia al tipo que falta. Si eso no siempre es lo que significa este mensaje, es lo que significa probablemente la mayor parte del tiempo.
butallmj
Sí, descubrí que se debía a algunos frascos faltantes en los frascos referenciados :) Gracias.
Ali Imran
21
@Arne, ¿por qué dice indirectamente referenciado entonces? ¿No debería haber dicho que no se hace referencia alguna?
Pacerier
2
@Pacerier eso no sería cierto. No es su código el que hace referencia directa a este tipo, sino algo que usa su código, por lo que la dependencia de su código a ese tipo es "solo" transitiva, pero está ahí. "Indirectamente" te dice dónde mirar.
hiergiltdiestfu
22

Esto es tan probable que Eclipse se confunda como un error real. Ignoré el error y ejecuté el servicio web cuya interfaz de punto final se quejó, y funcionó bien, excepto por tener que lidiar con el diálogo cada vez que quería ejecutarlo. Solo otro error opaco que no me dice nada.

Jerry Miller
fuente
Tampoco está en un frasco. Está en uno de los proyectos que se incluye en todos los proyectos incluidos donde es relevante.
Jerry Miller
3
He experimentado este problema en eclipse, pero la construcción a través de Maven funcionó bien. La solución fue eliminar y volver a importar el proyecto en el espacio de trabajo de eclipse que contenía las clases requeridas.
PiersyP
Esto puede suceder a veces, pero me he encontrado con errores que dan la misma respuesta, y el proyecto no se puede construir.
Christopher Connery
13

A veces me sucede, siempre lo solucioné con el comando "mvn eclipse: clean" para limpiar las propiedades antiguas y luego ejecuté mvn eclipse: eclipse -Dwtpversion = 2.0 (para proyectos web, por supuesto). Hay algunas propiedades antiguas guardadas, por lo que a veces se confunde el eclipse

Mário Kapusta
fuente
Limpié el proyecto (de Proyecto-> Limpiar ...) y funcionó.
Anu Shibin Joseph Raj
mvn eclipse:cleany / o mvn eclipse:eclipseparece ser el truco de magia para que funcione.
Antoine Martin
13

Tuve este error debido a un repositorio maven local dañado .

Entonces, para solucionar el problema, todo lo que tenía que hacer era ir a mi repositorio y eliminar la carpeta donde estaba el .jar en cuestión, luego forzar un update mavenEclipse.

Xavier Portebois
fuente
1
Esto funcionó para mí, mientras que lo anterior no funcionó. El problema ocurrió cuando uno de mis compañeros de equipo actualizó la versión de un repositorio de pom.
iaL
8

Parece que esto ha sido un problema conocido (error 67414) que se resolvió en 3.0 ... alguien ha comentado que también está ocurriendo en 3.4.

Mientras tanto, la solución consiste en eliminar la biblioteca del sistema JRE del proyecto y luego volver a agregarla.

Here are the steps:

Vaya a las propiedades del proyecto con el error de compilación (clic derecho> Propiedades)

Ver la pestaña "Bibliotecas" en la sección "Crear ruta"

Busque la "Biblioteca del sistema JRE" en la lista (si esto falta, entonces este mensaje de error no es un error de eclipse sino un proyecto mal configurado)

Elimine la "Biblioteca del sistema JRE"

Haga clic en "Agregar biblioteca ...", seleccione "Biblioteca del sistema JRE" y agregue el JRE apropiado para el proyecto (por ejemplo, 'JRE predeterminado del espacio de trabajo')

Haga clic en "Finalizar" en la selección de la biblioteca y "Aceptar" en las propiedades del proyecto y luego espere la reconstrucción del proyecto

Esperemos que el error se resuelva ...

NPKR
fuente
Sí, tuve el mismo problema con spring-web-3.0.1.RELEASE.Mientras estaba registrado como una dependencia en pom.xml, y ya funcionaba como una dependencia en algunas referencias, cuando hice un http.csrf (). disable (). cors (). disable (). httpBasic (). y (). authorizeRequests () .antMatchers (PUBLIC_MATCHERS) .permitAll (). anyRequest (). authenticated (); Se descompuso. Luego descargué el archivo jar e importé de la manera manual tradicional.
Tsakiroglou Fotis
5

Este error ocurre cuando las clases en el archivo jar no siguen la misma estructura que la estructura de carpetas del jar.

por ejemplo, si su archivo de clase tiene el paquete com.test.exam y el classes.jar creado a partir de este archivo de clase tiene la estructura test.exam ... se generará un error. Debe corregir la estructura del paquete de su classes.jar y luego incluirlo en la ruta de compilación de ecplipse ...

Mayur
fuente
4

Obtuve esta excepción porque eclipse estaba funcionando en una versión diferente de jdk, ¡simplemente cambió a la correcta, limpia, compiló y funcionó!

Orlando Valencia
fuente
3

Tuve un caso interesante de este problema con Eclipse 4.4.2. Mi proyecto (P1) hacía referencia a una clase externa (proyecto P2) con dos métodos con el mismo nombre pero diferentes tipos de argumentos:

public static void setItem(Integer id) …
public static void setItem(Item item) …

El tipo Itemestaba contenido en un tercer proyecto P3, que no quería que fuera visible aquí. P1 llamó solo el primer método:

ExternalClass.setItem(Integer.valueOf(12345));

Entonces, el segundo método, que usó la Itemclase, no se usó, y es cierto que P3 no estaba en el classpath de compilación, ¿por qué debería hacerlo si no se usa?

Todavía Eclipse me dijo

The type ...Item cannot be resolved.
It is indirectly referenced from required .class files

Compilar desde la línea de comandos no produjo ningún problema de este tipo. Cambiar el nombre del segundo método (¡sin usar aquí!) También hizo que el problema desapareciera en Eclipse.

Renardo
fuente
2
Estoy experimentando exactamente el mismo problema con Eclipse Photon Release (4.8.0)
Delphin
3

Lo que me arregló fue right clicking on project > Maven > Update Project

Eduardo Dennis
fuente
2

Si aún no puede encontrar nada malo en su configuración, puede intentar Proyecto -> Limpiar y limpiar todos los proyectos en el espacio de trabajo.

EDITAR: Lo siento, no vi la sugerencia de verbose_mode ... lo mismo

Denis
fuente
2

Para mí, sucede cuando actualizo mi jdk a 1.8.0_60 con mi antiguo conjunto de jarras que se ha utilizado durante mucho tiempo. Si vuelvo a jdk1.7.0_25, todos estos problemas desaparecen. Parece un problema sobre la compatibilidad entre JRE y las bibliotecas.

Ming Leung
fuente
1

Obtuve el error cuando solo cambié algunas configuraciones de svn y no nada en el código. Solo limpiar los proyectos solucionó el error.

usuario2774465
fuente
1

En mi caso, creé un proyecto e hice su minSdkVersion=9y targetSdkVersion=17. Utilicé generado automáticamente libs/android-support-v4.jar. También tuve que usar el ActionBarActivityuso android-support-v7-appcomapt.jar. Así que simplemente copié el android-support-v7-appcompat.jararchivo de la android-sdk/extras/andrid/support/v7/appcompat/libscarpeta y lo pegué en la libscarpeta de mi proyecto . Y esto causó el error anterior. Básicamente, también necesitaba poner el android-support-v4.jararchivo de android-sdk/extras/andrid/support/v7/appcompat/libsmi libscarpeta de proyecto . Según mi conocimiento, el v7.jararchivo tenía dependencias en el v4.jararchivo. Entonces, necesitaba su propio v4.jararchivo, en lugar de mi proyecto, el v4.jararchivo creado automáticamente .

laaptu
fuente
1

Rápidamente y simplemente lo arreglé de esta manera (uso la versión ADT: v21.0.0-531062 en Windows XP Home Edition)

  1. Archivo de manifiesto abierto.
  2. Cambió el proyecto existente minSdkVersion al mismo valor que maxSdkVersion (consejo: puede ser bueno crear un nuevo proyecto y ver qué es maxSdkVersion)
  3. Guardar archivo de manifiesto.
  4. Haga clic derecho en el proyecto y seleccione Crear proyecto.
  5. Desde el menú superior: Proyecto - Limpiar .. - marque Solo el proyecto relevante, a continuación verifiqué Iniciar una compilación inmediatamente y Construir solo los proyectos seleccionados y OK.
  6. abra el archivo java - ¡NO más errores rojos!
  7. Regrese al paso 1 anterior y cambie Back minSdkVersion a su valor Original (para suport la mayor cantidad posible de versiones de Android).

Funcionó PERO el problema vuelve cada pocos días. Hago lo mismo que arriba y resuelve y me permite desarrollarme.

usuario3445991
fuente
0

Además de la causa sugerida de la falta de un archivo de clase, este error también puede indicar un archivo de clase duplicado, eclipse informa este error cuando un archivo de clase en la ruta de compilación usa otra clase que tiene múltiples definiciones en la ruta de compilación.

MilesHampson
fuente
0

Dado que nos da muy pocos detalles, lo más probable es que lo que hizo, que es un error increíblemente fácil de cometer, es que en lugar de dirigirse a

Build Path > Configure Build Path > Projects

y agregando su carpeta de proyecto adicional desde allí, en su lugar, fue a

Build Path > Configure Build Path > Libraries

y agregó su carpeta de proyecto desde allí.

Este es definitivamente el caso si su código es todo correcto, pero al reorganizar automáticamente las importaciones a través del ctrl+spaceacceso directo, en lugar de sus declaraciones de importación que se refieren a com.your.additionalproject, todas sus referencias apuntan a bin.com.your.additionalproject.

Tenga en cuenta la papelera. Lo que significa que usted se refiere indirectamente a su clase al tratar la estructura de la carpeta de su otro proyecto como una biblioteca, haciendo que su IDE haga todo el trabajo de encontrar exactamente la clase binaria a la que se refiere.

Para corregir esto, elimine la carpeta de las Bibliotecas y, en su lugar, agréguela en la pestaña Proyectos y reorganice sus importaciones. Tu proyecto debería funcionar bien.

steelmonkey
fuente
0

Cuando uso una nueva versión de eclipse e intento usar el espacio de trabajo anterior que usé con la versión anterior de eclipse, se produjo este error.

Así es como resuelvo el problema:

Haga clic derecho en mi proyecto en el Explorador de paquetes -> Propiedades -> Ruta de compilación de Java -> Bibliotecas -> Veo un error (signo cruzado) en la biblioteca del sistema JRE. Porque el camino no se puede encontrar. -> Haga doble clic en la Biblioteca del sistema JRE -> Seleccione la opción "Espacio de trabajo JRE predeterminado" -> Finalizar -> Aceptar. -> BUM ESTÁ FUNCIONANDO

FYI.

oiyio
fuente
0

En mi caso, fue el resultado de agregar una nueva dependencia a mi pom.xmlarchivo.

La nueva dependencia dependía de una versión anterior de una biblioteca (2.5). Esa misma biblioteca fue requerida por otra biblioteca en mi pom.xml, pero requería la versión 3.0.

Por alguna razón, cuando Maven encuentra estos conflictos, simplemente omite la versión más reciente. En Eclipse al visualizar pom.xml, puede seleccionar la pestaña "jerarquía de dependencias" en la parte inferior para ver cómo se resuelven las dependencias. Aquí encontrará si la biblioteca (y, por lo tanto, la clase) en cuestión se ha omitido por este motivo.

En mi caso fue tan simple como bloquear la versión más nueva. Puede hacerlo haciendo clic derecho en la entrada; hay una opción para bloquearla en el menú contextual.

Chris Staikos
fuente
0

Apunte el JRE en la ruta de compilación a un JDK. Eso funcionó para mí.

Neeleshkumar S
fuente