Pregunta

En Eclipse (Ganymede) estoy depurando un código que usa Apache Commons HttpClient y me gustaría ingresar al código HttpClient. Descargué el código fuente y traté de adjuntarlo de la manera normal (presione CTRL y haga clic en el nombre del método y use el botón Adjuntar fuente). He intentado adjuntar tanto como archivo externo como carpeta externa sin éxito. He adjuntado la fuente antes sin problemas y actualmente puedo ingresar al código fuente de Hibernate con éxito.

Incluso he intentado editar el archivo .classpath directamente para agregar sourcepath manualmente. Aún sin suerte. Actualizar el proyecto, hacer una compilación limpia, cerrar y volver a abrir Eclipse no resuelve el problema. Frustrantemente, Eclipse no proporciona ningún mensaje de error; simplemente no adjunta la fuente.

Aquí están las entradas en .claspath:

<!-- Hibernate. Works -->
<classpathentry kind="lib" path="/myEAP/EarContent/APP-INF/lib/hibernate.jar" sourcepath="D:/Data/Download/hibernate-3.2.2.ga/hibernate-3.2/src"/>

<!-- Commons HttpClient. Will not attach -->
<classpathentry kind="lib" path="/myEAP/EarContent/APP-INF/lib/commons-httpclient.jar" sourcepath="D:/Data/Download/commons-httpclient-3.1/src/java"/>

He intentado cambiar la ruta a D: /Data/Download/commons-httpclient-3.1/src y eso tampoco funciona.

La estructura del directorio es:

D
  Data
    Download
      commons-httpclient-3.1
        src
          java
            org
              apache
                commons
                  httpclient
                    AutoCloseInputStream.java
                    ... (and so forth)
¿Fue útil?

Solución

Intente apuntarlo a un directorio que contenga el paquete de nivel superior directamente, " D: /Data/Download/commons-httpclient-3.1/src/java" para ti. Lo que funcionó para mí fue crear un nuevo archivo zip src que contenga la " org " carpeta y todo lo que hay debajo de ella.

Aquí está mi entrada .classpath, (que funciona para mí) en caso de que ayude:

<classpathentry kind="lib" path="/blib/java/commons-httpclient-3.1/commons-httpclient-3.1.jar" sourcepath="/blib/java/commons-httpclient-3.1/commons-httpclient-3.1-src.zip"/>

Otros consejos

He descubierto que a veces, usted señala el directorio que supondría que era correcto, y aún así indica que no puede encontrar el archivo en la fuente adjunta, bla, bla.

Estas veces, me di cuenta de que el último elemento de ruta era "src". Simplemente eliminando este elemento de ruta (de hecho, apuntando un nivel por encima de la ruta real donde se encuentra la carpeta '' org '' o '' com '') mágicamente lo hace funcionar.

De alguna manera, Eclipse parece implicar esto "src" elemento de ruta si está presente, y si lo tiene incluido en la ruta de origen, Eclipse se ahoga. O algo así.

¿Intenta adjuntar el src.zip en lugar del src descomprimido?

Intente agregarlo a la ruta de origen de su configuración de inicio.

Adjuntar fuentes no es todo lo que se requiere para ingresar a una biblioteca en el classpath; esa biblioteca también debe compilarse con símbolos de depuración. Por lo general, esto no es un problema, ya que la mayoría de las bibliotecas de Java se compilan y distribuyen de tal manera, pero como ha encontrado, algunas de ellas no lo son.

Es interesante observar que en realidad puede ingresar a bibliotecas externas incluso sin la fuente adjunta, simplemente no puede ver las fuentes línea por línea (toda la información de depuración sigue funcionando).

Podrías " arreglar " este problema compilando una versión personalizada de Commons HttpClient (no es demasiado difícil), o simplemente omita todo el "paso" en la biblioteca " idea. Como práctica general de desarrollo, entrar en bibliotecas de terceros rara vez generará información útil. Lo hice tal vez una o dos veces en los últimos diez años, en ningún momento me acercó más a resolver el dilema en cuestión.

Creo que hay un problema en los símbolos de espacio (o localizados) en la ruta al archivo fuente. Intenta moverlo a otro lugar con una ruta simple.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top