Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / не получается достать код java class / 6 сообщений из 6, страница 1 из 1
11.02.2022, 12:21
    #40133449
Вячеслав Р
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается достать код java class
Всем доброго времени суток
есть 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
11.02.2022, 13:32
    #40133479
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается достать код 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.
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
11.02.2022, 15:41
    #40133533
Вячеслав Р
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается достать код java class
вопрос как раз в том, что загружал не я.
и мне нужно достать код исходника класса.
...
Рейтинг: 0 / 0
11.02.2022, 16:16
    #40133546
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается достать код java class
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
11.02.2022, 18:54
    #40133601
Вячеслав Р
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается достать код java class
спасибо, в файл выгрузил .
собственно, как выгрузить 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
11.02.2022, 19:07
    #40133605
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается достать код java class
Вячеслав Р
а можно еще вопрос - с помощью чего можно декомпилировать получившийся файл?

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

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

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


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