powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / не получается достать код java class
6 сообщений из 6, страница 1 из 1
не получается достать код java class
    #40133449
Вячеслав Р
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток
есть java class - не могу понять как достать его исходный код из БД:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
select name,source from dba_java_classes where name='ru/cft/platform/view/converter/PlatformViewConverter$3i_rowtype'
ru/platform/view/converter/PlatformViewConverter$3i_rowtype	PlatformViewConverter.java

SELECT * FROM DBA_SOURCE WHERE TYPE = 'JAVA SOURCE' AND NAME = 'PlatformViewConverter'
no rows

--ИЩЕМ JAVA SOURCE
DECLARE
 b CLOB;
 c varchar2(2000);
 i integer:= 255;
begin
  DBMS_LOB.createtemporary(b, false);
  DBMS_JAVA.export_resource('PlatformViewConverter', 'TESTUSER', b);
  DBMS_OUTPUT.PUT_LINE('java_resource:');
  DBMS_LOB.read(b, i, 1, c);
  DBMS_OUTPUT.PUT_LINE(c);
end;
 
ORA-29532: вызов Java прерван неустановленным исключением Java: java.sql.SQLException: no such java schema object
ORA-06512: на  "SYS.DBMS_JAVA", line 579
ORA-06512: на  line 8

--ИЩЕМ JAVA CLASS
DECLARE
 b BLOB;
begin
  DBMS_LOB.createtemporary(b, true);
  DBMS_JAVA.export_class('ru/platform/view/converter/PlatformViewConverter$3i_rowtype',  b);
end;
 
ORA-29532: вызов Java прерван неустановленным исключением Java: java.sql.SQLException: no such java schema object
ORA-06512: на  "SYS.DBMS_JAVA", line 567
ORA-06512: на  line 8
...
Рейтинг: 0 / 0
не получается достать код java class
    #40133479
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что загрузим, то и будет.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
Connected to Oracle Database 18c Express Edition Release 18.0.0.0.0 
Connected as system@DBOFFICEXE

SQL> select name, major, kind from dba_java_classes where name = 'Hello';

NAME                                                                                  MAJOR KIND
-------------------------------------------------------------------------------- ---------- --------------------------------------------------

SQL> select count(1) from dba_source where name = 'Hello';

  COUNT(1)
----------
         0

=============== loadjava -user system@XE Hello.java

SQL> select name, major, kind from dba_java_classes where name = 'Hello';

NAME                                                                                  MAJOR KIND
-------------------------------------------------------------------------------- ---------- --------------------------------------------------
Hello                                                                                     0 CLASS

SQL> select count(1) from dba_source where name = 'Hello';

  COUNT(1)
----------
        13

=============== drop

SQL> select count(1) from dba_source where name = 'Hello';

  COUNT(1)
----------
         0

SQL> select name, major, kind from dba_java_classes where name = 'Hello';

NAME                                                                                  MAJOR KIND
-------------------------------------------------------------------------------- ---------- --------------------------------------------------

===============  loadjava -user system@XE Hello.class

SQL> select name, major, kind from dba_java_classes where name = 'Hello';

NAME                                                                                  MAJOR KIND
-------------------------------------------------------------------------------- ---------- --------------------------------------------------
Hello                                                                                    51 CLASS

SQL> select count(1) from dba_source where name = 'Hello';

  COUNT(1)
----------
         0

SQL> 

...
Рейтинг: 0 / 0
не получается достать код java class
    #40133533
Вячеслав Р
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос как раз в том, что загружал не я.
и мне нужно достать код исходника класса.
...
Рейтинг: 0 / 0
не получается достать код java class
    #40133546
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBA_SOURCE показывает, что сырка в БД нет.

Поэтому надо выгрузить класс и декомпилировать его.

Никогда не пробовал, век живи, век учись.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
begin
  dbms_java.grant_permission( 'SYSTEM', 'SYS:oracle.aurora.rdbms.HandlePermission', 'HandleInputStream.SYSTEM:Hello', 'read' );
end;


DECLARE
 b BLOB;
begin
  DBMS_LOB.createtemporary(b, true);
  DBMS_JAVA.export_class('Hello',  b);
end;

-- успешно, но выгружать BLOB в файл мне лень.
...
Рейтинг: 0 / 0
не получается достать код java class
    #40133601
Вячеслав Р
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, в файл выгрузил .
собственно, как выгрузить BLOB в файл готовый код есть здесь How to Extract or Download a Java Class Stored Within the Database To A File? (Doc ID 1431942.1) , только там нет как раздать привилегии при помощи dbms_java.grant_permission .

а можно еще вопрос - с помощью чего можно декомпилировать получившийся файл?
...
Рейтинг: 0 / 0
не получается достать код java class
    #40133605
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Р
а можно еще вопрос - с помощью чего можно декомпилировать получившийся файл?

Я в свое время декомпилировал с помощью JAD.
Возможно есть лучшие декомпиляторы, даже IDEA (среда разработки) умеет декомпилировать (показывает декомпилированный код при отсутствие сорцов)

Но любой, даже самый наилучший, декомпилятор никогда не сделает исходный код таким, как он был до момента компиляции. Начиная от потерь информации об именовании переменных, до генерации некоректного (не компилирующегося) кода.

Насколько я помню, с JAD были проблемы с генерацией кода обработки исключений.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / не получается достать код java class
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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