2011-09-02 11 views
11

Quiero depurar una clase interna estática, que en realidad es un invocable. Siempre que intente establecer un punto de interrupción condicional en Eclipse me sale el error de punto de interrupción:Eclipse/punto de corte condicional resultados en BreakpointException

The type com.sun.source.tree.Tree$Kind cannot be resolved. It is indirectly referenced from required .class files.

Qué está causando este error? ¿Es un error en la clase/paquete que usa com.sun.source.tree.Tree$Kind pero no lo proporciona? ¿Cómo averiguo qué clase es? ¿Cómo lo resuelvo?


Una expresión de ejemplo que debe ser correcta es: return mRtx.getNode().getNodeKey() == 74;

he cambiado a mRtx.getNode().getNodeKey() == 74 pero sigue siendo el mismo error. Recientemente he encontrado el error y se utiliza simplemente:

if (mRtx.getNode().getNodeKey() == 74) { 
    System.out.println("bla"); 
} 

y establecer un punto de interrupción "normal" en el "sysout" comunicado por si acaso alguien tiene el mismo problema.

+1

¿Puedes completar tu pregunta para aclararla con todas las clases que mencionas? ¿Cuál es la verdadera pregunta? –

+0

Mencione aquí, que JVM se usa para ejecutar eclipse y ejecutar su software depurado. –

Respuesta

1

El compilador no puede encontrar el tipo, ese es el problema raíz, pero en mi opinión, esto debería ser solo un error de compilación, pero por implicación de lo que leí, es un error de tiempo de ejecución. ¿Es eso correcto?

Aquí es decir son algunos consejos:

http://java.syntaxerrors.info/index.php?title=Cannot_resolve_type

Indirectly referenced from required .class file

Tal vez puede publicar más código o usar "Control + T" en Eclipse de la clase a mirar a la jerarquía de tipos, I me gustaría saber a qué otras clases se hace referencia.

HTH,

James

+0

Gracias por los enlaces (+50). – DaveFar

+0

Me alegro de poder ayudar y muchas gracias de vuelta! –

2

tal vez debería tratar de editar de búsqueda del origen del depurador.

Para hacer esto, vaya a la perspectiva de depuración, en la vista de depuración (donde normalmente se muestra la pila) haga clic derecho en la ejecución terminada, y elija 'Editar búsqueda de origen ...'.

Luego puede agregar un lugar de búsqueda. En este caso, debería agregar las herramientas.jar que se encuentran en la carpeta jre.

+0

Gracias. Esto resolvió el problema para mí.Solo solicita "elegir" el 2 (el origen no gestionado es otro que viene como un origen vinculado en la configuración del proyecto, pero no incluido en la ruta de ejecución) pero es manejable. –

3

No estoy seguro de cómo reproducirlo, ya que su descripción no es muy explícita.

El paquete com.sun.source.tree está incluido en tools.jar, que es parte de JDK pero no de JRE, así que asegúrese de ejecutar su Eclipse en JDK (variable JAVA_HOME?), Quizás intente configurar los proyectos de JRE en una carpeta JDK.

También creo que la API del compilador se introdujo en Java 6, así que compruebe si no está utilizando una versión más baja.

+0

Gracias por la respuesta (+1). Si jamesDrinkard no me hubiera mostrado el gran sitio http://java.syntaxerrors.info, le hubiera dado el +50. – DaveFar

+0

En mi máquina, tuve que agregar manualmente tools.jar desde mi instalación java (aunque estaba usando un JDK): Ventana> Preferencias> JRE instalados, seleccione un JDK, presione "editar" y agregue tools.jar de la subcarpeta lib si aún no existe. – evandor