Java-код - в поисках исходного кода - PullRequest
6 голосов
/ 27 октября 2010

У меня есть этот Java-код, написанный другим человеком, в частности, JSP. Я пытаюсь понять, где все.

В моем index.jsp (основном загружаемом файле) он импортирует определенное пространство имен (я полагаю, tomcat выполняет всю компиляцию, я не знаю):

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

Это физическое местоположение не существует в моем CLASSPATH, поэтому я предполагаю, что оно ссылается на пространство имен внутри структуры кода .jar (исправьте меня, если я ошибаюсь).

Так как мне найти исходный код для этого? Устанавливает ли Tomcat конкретное местоположение CLASSPATH для каждого проекта?

РЕДАКТИРОВАТЬ

Я пытаюсь понять, следует ли Tomcat определенной структуре, чтобы я мог найти исходный код этого материала.

Ответы [ 5 ]

6 голосов
/ 27 октября 2010

С точки зрения сети загрузка приложения, класса или ресурса выглядит в следующих репозиториях, в следующем порядке:

* 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

из Tomcat docs .

наиболее вероятными местоположениями для классов, специфичных для вашего приложения, являются WEB-INF/lib/*.jar и WEB-INF/classes. Однако, как уже упоминали другие, это будет содержать скомпилированные файлы классов, и вы не сможете сможете увидеть точный источник Java (даже после декомпиляции)

1 голос
/ 27 октября 2010

Исходный код может вообще отсутствовать. Итак, прежде всего, вам нужно найти, какой jar точно имеет этот импортированный класс. Затем просто выполните поиск в Интернете, чтобы найти сайт проекта / API. Там вы можете найти источник, если это библиотека с открытым исходным кодом. В противном случае декомпиляция - единственный оставшийся вариант, и это может быть не очень полезно.

1 голос
/ 27 октября 2010

Можно искать банки в двух местах:

  1. /web-inf/lib directory (в нем есть все пользовательские банки, используемые приложением)
  2. Файл сборки (mvn,муравей и т. д.)
1 голос
/ 27 октября 2010

банок - это сжатый код javabyte. Для того, чтобы получить исходники, их нужно декомпилировать. Существует несколько утилит, но работа с декомпилированным кодом - это настоящий кошмар, если вы спросите меня, я бы не рекомендовал его, особенно если вы этого еще не знали. : D

Исходный код обычно хранится в другом месте.

Что касается ваших конкретных вопросов по Tomcat, я не знаю, никогда раньше не работал с Tomcat.

0 голосов
/ 27 октября 2010
Путь к классу

, по моему опыту, обычно задается в файле сборки ant каждого проекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...