Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Програмно получать код класса после его запуска? / 7 сообщений из 7, страница 1 из 1
24.02.2012, 21:39:08
    #37677773
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Програмно получать код класса после его запуска?
Суть вопроса такова.

Я хочу выводить в консоль содердимое класса по имени.

например у меня есть класс

Код: java
1.
2.
3.
4.
5.
6.
7.
public class foo{
private int s = 1;

public int getS (){
   return s;
}
}


В своем приложении хочу просто задать в поле для ввода название класса кликнуть на кнопку и получить к примеру на консоль содержимое класса.
Вопрос не на счет Gui, вопрос как вывести на экран содержимое класса foo?

Читал что нужно дизассемблировать и так д..
Думаю, что просто считывать .java файл не получится, так как я в режиме real time буду вносить изменения в байт код и нужно работать именно с .class!
Если это не так просто сделать и нет програмного решения на несколько строчек, ну может на несколько десятков строчек. то я лучше не буду заморачиваться.

Спасибо!
...
Рейтинг: 0 / 0
24.02.2012, 22:00:17
    #37677800
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Програмно получать код класса после его запуска?
Я наверное туплю чуток.. Я сейчас пробую раскурить Javassist, он же тоже такое по ходу должен уметь..? Методы в байт код уже добавляю, думаю этот байт-код можно и прочитать?..
...
Рейтинг: 0 / 0
24.02.2012, 23:39:39
    #37677893
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Програмно получать код класса после его запуска?
Что ты на выходе хочешь получить? Если ты думаешь что добавив в класс

Код: java
1.
2.
3.
class a{
int i;
}



динамически метод
Код: java
1.
2.
3.
public int getI(){
return i;
}



и хочешь увидеть в консоли

Код: java
1.
2.
3.
4.
5.
6.
class a{
int i;
public int getI(){
return i;
}
}


То у тебя естественно ничего не выйдет без написания обратного преобразователя .class - > .java, так как javaassist и пр. модифицируют естественно байт код. А написать такой преобразователь не то чтобы невозможно, не буду так громко заявлять, но что проблематично так точно.
...
Рейтинг: 0 / 0
24.02.2012, 23:49:25
    #37677909
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Програмно получать код класса после его запуска?
Если тебе нужен именно байт-код то все проще, натравливаешь программно javac на класс и потом вычитываешь скомпиленный .class
...
Рейтинг: 0 / 0
26.02.2012, 14:29:00
    #37678479
rfq
rfq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Програмно получать код класса после его запуска?
_webdev_,

Если речь идет о том, что есть байткод, и для него нужно вывести соответствующий java-текст, то нужно подключать декомпилятор. Сам он конечно не десять строк, но подключить его не так сложно.
http://sources.ru/java/faq/decompilers.htm
...
Рейтинг: 0 / 0
26.02.2012, 14:59:34
    #37678500
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Програмно получать код класса после его запуска?
rfq
Ну да, в принципе можно, только это будет работать для валидного байт-кода, и без всяких там invokedynamic
...
Рейтинг: 0 / 0
26.02.2012, 19:21:42
    #37678759
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Програмно получать код класса после его запуска?
Всем спасибо за ответы, уже накопал с чем это все кушать. :)
Думал, что можно как-то программно по быстрому замутить, а так.. сейчас не это главное. :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Програмно получать код класса после его запуска? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]