Как иметь объект/класс, говорят мне, от какого файла банки это

В Eclipse и классе загружается, который не должен быть возможным. В режиме отладки я могу приостановить его и видеть вызов к классу a.b.c, НО a.b.c класс должен существовать где угодно, так как это было переименовано. Мое предположение - то, что существует старый файл банки, называемый..., но я не могу найти его. Таким образом, как я нахожу файл банки, что класс a.b.c находится в в то время как в режиме отладки в затмении? Или через пункт меню затмения или через Java и использование отражения для получения объекта сказать мне его собственный файл банки.

Спасибо.

6
задан Chris 4 January 2010 в 14:27
поделиться

7 ответов

Вы можете использовать загрузчик класса для получения URL ресурса. Это также работает для классов. Для получения местоположения класса java.lang.String:

X.class.getClassLoader().getResource("java/lang/String.class");

Выход:

jar:file:/C:/Program%20Files/Java/jdk1.6.0_17/jre/lib/rt.jar!/java/lang/String.class
5
ответ дан 8 December 2019 в 18:37
поделиться

Если вы запустите ваш JVM с помощью -verbose:class (вы можете установить это как JVM опцию в Eclipse), вы можете точно увидеть, какие классы загружаются когда, и я думаю откуда.

.
3
ответ дан 8 December 2019 в 18:37
поделиться

Существует ряд обстоятельств, при которых скомпилированный файл .class остается доступным для Eclipse (и его JVM), хотя вы удалили или переименовали источник.

Чтобы убедиться, что это не обманывает вас, вы можете либо запустить Project|Clean в Eclipse, либо просто зайти в вид Navigator и удалить каталог классов (стандартный вариант - bin), а затем позволить Eclipse перестроить его.

.
2
ответ дан 8 December 2019 в 18:37
поделиться

Ты можешь "F3" (открыть класс)? Даже если он не декомпилирует, он должен показать вам jar-файл

.
1
ответ дан 8 December 2019 в 18:37
поделиться

Если где-то есть старая банка, вы можете попросить JAR Class Finder найти ее, указав класс, который вы ищете.
. Это независимый (т.е. не требующий дополнительного кода) способ найти эту банку.

alt text

1
ответ дан 8 December 2019 в 18:37
поделиться

Вы также можете использовать диалоговое окно «Открыть тип» ( Ctrl + Shift + T ). Введите имя класса, и если Eclipse его найдет, он покажет банку (ы), из которой он пришел.

Обратите внимание, однако, что путь к классам, который видит Eclipse, не обязательно идентичен пути к классам во время выполнения.

1
ответ дан 8 December 2019 в 18:37
поделиться

Спасибо за помощь, решением от Томаса Юнга было:

X.class.getClassLoader().getResource("java/lang/String.class");

.
0
ответ дан 8 December 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: