2010-10-27 21 views
6

Ho questo codice Java scritto da un'altra persona, in particolare JSP. Sto cercando di capire dove sia tutto.Codice Java: ricerca del codice sorgente

Nel mio index.jsp (il file principale che viene caricato) importa un certo spazio dei nomi (suppongo Tomcat fa tutto la compilazione, non so):

<%@ page import="org.sgrp.SearchResults"%> 

Questa posizione fisica non esiste nel mio CLASSPATH quindi suppongo si riferisca a uno spazio dei nomi all'interno della struttura del codice .jar (correggimi se sbaglio).

Quindi, come suppongo di trovare il codice sorgente per questo? Tomcat imposta una posizione CLASSPATH specifica per ciascun progetto?

EDIT

Sto cercando di capire se Tomcat segue una certa struttura in modo da poter trovare dove il codice sorgente per questa roba è.

risposta

6

Dal punto di vista di un web applicazione, di classe o di una risorsa di carico cerca nelle seguenti repository, in questo ordine:

* Bootstrap classes of your JVM 
* System class loader classes 
* /WEB-INF/classes of your web application 
* /WEB-INF/lib/*.jar of your web application 
* $CATALINA_HOME/lib 
* $CATALINA_HOME/lib/*.jar 

da the Tomcat docs.

Il molto probabilmente posizioni per le classi specifiche per l'applicazione sono WEB-INF/lib/*.jar e WEB-INF/classes. Tuttavia, come altri hanno menzionato, questo conterrà file di classe compilati e tu non potrai essere in grado di vedere l'esatta fonte java (anche dopo aver decompilato)

1

i jars sono codice javabyte compresso. Per ottenere i sorgenti dovrai decompilarli. Ci sono alcune utility là fuori, ma lavorare con il codice decompilato è un po 'un incubo se me lo chiedi, non lo consiglierei, specialmente se non lo sapevi già. : D

Il codice sorgente verrà generalmente memorizzato altrove.

Per quanto riguarda le vostre domande specifiche su Tomcat, non lo so, non avendo mai lavorato con Tomcat in precedenza.

0

percorso di classe è, secondo la mia esperienza, comunemente impostato nel file Ant di ogni progetto

1

È possibile cercare i barattoli in due punti:

  1. /web-inf/lib directory (che ha tutti i vasetti personalizzati in uso da app)
  2. il file build (mvn, formica, ecc)
+0

dove si trova il file di build di solito in Tomcat? –

+0

se stai usando form, cerca build.xml generalmente nella cartella genitore e se stai usando maven, cerca pom.xml (elenca tutti i vasi usati) – zengr

+0

Il file di build ant/maven è usato per costruire il tuo web app per la distribuzione in Tomcat - quindi non sarà all'interno di Tomcat ma all'interno della cartella del codice sorgente, a cui credo che l'OP non abbia accesso? – JoseK

1

il codice sorgente potrebbe non esserci affatto. Quindi, prima di tutto, devi trovare quale jar ha esattamente quella classe importata. Quindi basta cercare sul Web per trovare il sito Web del progetto/dell'API. Lì puoi cercare la fonte, se è una libreria open source. Altrimenti, la decomposizione è l'unica opzione rimasta, e potrebbe non essere molto utile.

Problemi correlati