powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
25 сообщений из 26, страница 1 из 2
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39985801
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Помогите решить проблему. Есть сторонний .jar файл. Библиотека для кодировки изображений в WebP. Я загружаю ее с помощью DBMS_JAVA.loadjava. Классы из библиотки появляются в all_objects, не инвалидные. Написаный java-класс, который без ошибок выполняется из PLSQL. Но, как только этот класс использует классы из библиотки, вызывается исключение:

ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError

Что может быть не так?

Ссылка на файл
https://ru.files.fm/u/8s87twq8
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39985814
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Далеко не всем захочется пробовать на своей базе, писать обертку и т.д. Поэтому вместо отсебятины
Я загружаю ее с помощью DBMS_JAVA.loadjava лучше приводить полный листинг.

Код: powershell
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.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
arguments: '-u' 'system/***@DBOFFICE' '-r' '-v' '-f' '-s' '-grant' 'public' '-genmissing' 'webp-imageio-0.1.6.jar' 
creating : resource META-INF/MANIFEST.MF
loading  : resource META-INF/MANIFEST.MF
creating : resource native/win/32/webp-imageio.dll
loading  : resource native/win/32/webp-imageio.dll
creating : resource native/win/64/webp-imageio.dll
loading  : resource native/win/64/webp-imageio.dll
creating : resource META-INF/services/javax.imageio.spi.ImageWriterSpi
loading  : resource META-INF/services/javax.imageio.spi.ImageWriterSpi
genmissing: com/luciad/imageio/webp/WebP$1
creating : class com/luciad/imageio/webp/WebP$1
loading  : class com/luciad/imageio/webp/WebP$1
genmissing: com/luciad/imageio/webp/WebPWriteParam
creating : class com/luciad/imageio/webp/WebPWriteParam
loading  : class com/luciad/imageio/webp/WebPWriteParam
genmissing: com/luciad/imageio/webp/NativeLibraryUtils
creating : class com/luciad/imageio/webp/NativeLibraryUtils
loading  : class com/luciad/imageio/webp/NativeLibraryUtils
creating : resource META-INF/maven/org.sejda.imageio/webp-imageio/pom.xml
loading  : resource META-INF/maven/org.sejda.imageio/webp-imageio/pom.xml
genmissing: com/luciad/imageio/webp/WebPImageReaderSpi
creating : class com/luciad/imageio/webp/WebPImageReaderSpi
loading  : class com/luciad/imageio/webp/WebPImageReaderSpi
genmissing: com/luciad/imageio/webp/WebPReadParam
creating : class com/luciad/imageio/webp/WebPReadParam
loading  : class com/luciad/imageio/webp/WebPReadParam
genmissing: com/luciad/imageio/webp/VP8StatusCode
creating : class com/luciad/imageio/webp/VP8StatusCode
loading  : class com/luciad/imageio/webp/VP8StatusCode
genmissing: com/luciad/imageio/webp/WebPWriter
creating : class com/luciad/imageio/webp/WebPWriter
loading  : class com/luciad/imageio/webp/WebPWriter
genmissing: com/luciad/imageio/webp/WebPReader
creating : class com/luciad/imageio/webp/WebPReader
loading  : class com/luciad/imageio/webp/WebPReader
genmissing: com/luciad/imageio/webp/WebPImageWriterSpi
creating : class com/luciad/imageio/webp/WebPImageWriterSpi
loading  : class com/luciad/imageio/webp/WebPImageWriterSpi
genmissing: com/luciad/imageio/webp/WebPEncoderOptions
creating : class com/luciad/imageio/webp/WebPEncoderOptions
loading  : class com/luciad/imageio/webp/WebPEncoderOptions
creating : resource META-INF/maven/org.sejda.imageio/webp-imageio/pom.properties
loading  : resource META-INF/maven/org.sejda.imageio/webp-imageio/pom.properties
creating : resource META-INF/services/javax.imageio.spi.ImageReaderSpi
loading  : resource META-INF/services/javax.imageio.spi.ImageReaderSpi
genmissing: com/luciad/imageio/webp/WebP
creating : class com/luciad/imageio/webp/WebP
loading  : class com/luciad/imageio/webp/WebP
genmissing: com/luciad/imageio/webp/WebPDecoderOptions
creating : class com/luciad/imageio/webp/WebPDecoderOptions
loading  : class com/luciad/imageio/webp/WebPDecoderOptions
creating : resource native/linux/64/libwebp-imageio.so
loading  : resource native/linux/64/libwebp-imageio.so
creating : resource native/mac/64/libwebp-imageio.dylib
loading  : resource native/mac/64/libwebp-imageio.dylib
generating: java/nio/file/Path
creating : class java/nio/file/Path
loading  : class java/nio/file/Path
Error while creating class java/nio/file/Path
    ORA-29545: неверно сформирован класс: User has attempted to load a class (java.nio.file.Path) into a restricted package. Permission can be granted using  dbms_java.grant_permission(<user>, LoadClassInPackage...
ORA-06512: на  line 1

generating: java/nio/file/attribute/FileAttribute
creating : class java/nio/file/attribute/FileAttribute
loading  : class java/nio/file/attribute/FileAttribute
Error while creating class java/nio/file/attribute/FileAttribute
    ORA-29545: неверно сформирован класс: User has attempted to load a class (java.nio.file.attribute.FileAttribute) into a restricted package. Permission can be granted using  dbms_java.grant_permission(<user>, LoadClassInPackage...
ORA-06512: на  line 1

generating: java/nio/file/Files
creating : class java/nio/file/Files
loading  : class java/nio/file/Files
Error while creating class java/nio/file/Files
    ORA-29545: неверно сформирован класс: User has attempted to load a class (java.nio.file.Files) into a restricted package. Permission can be granted using  dbms_java.grant_permission(<user>, LoadClassInPackage...
ORA-06512: на  line 1

granting : execute on resource META-INF/MANIFEST.MF to public
skipping : resource META-INF/MANIFEST.MF
granting : execute on resource native/win/32/webp-imageio.dll to public
skipping : resource native/win/32/webp-imageio.dll
granting : execute on resource native/win/64/webp-imageio.dll to public
skipping : resource native/win/64/webp-imageio.dll
granting : execute on resource META-INF/services/javax.imageio.spi.ImageWriterSpi to public
skipping : resource META-INF/services/javax.imageio.spi.ImageWriterSpi
granting : execute on class com/luciad/imageio/webp/WebP$1 to public
resolving: class com/luciad/imageio/webp/WebP$1
errors   : class com/luciad/imageio/webp/WebP$1
    ORA-29534: не может быть разрешен ссылочный объект SYSTEM.com/luciad/imageio/webp/WebP
synonym  : com/luciad/imageio/webp/WebP$1
granting : execute on class com/luciad/imageio/webp/WebPWriteParam to public
resolving: class com/luciad/imageio/webp/WebPWriteParam
errors   : class com/luciad/imageio/webp/WebPWriteParam
    ORA-29534: не может быть разрешен ссылочный объект SYSTEM.com/luciad/imageio/webp/WebPEncoderOptions
synonym  : com/luciad/imageio/webp/WebPWriteParam
granting : execute on class com/luciad/imageio/webp/NativeLibraryUtils to public
errors   : class com/luciad/imageio/webp/NativeLibraryUtils
    ORA-29521: не удалось найти ссылочное имя java/nio/file/attribute/FileAttribute
    ORA-29521: не удалось найти ссылочное имя java/nio/file/Files
    ORA-29521: не удалось найти ссылочное имя java/nio/file/Path
synonym  : com/luciad/imageio/webp/NativeLibraryUtils
granting : execute on resource META-INF/maven/org.sejda.imageio/webp-imageio/pom.xml to public
skipping : resource META-INF/maven/org.sejda.imageio/webp-imageio/pom.xml
granting : execute on class com/luciad/imageio/webp/WebPImageReaderSpi to public
resolving: class com/luciad/imageio/webp/WebPImageReaderSpi
errors   : class com/luciad/imageio/webp/WebPImageReaderSpi
    ORA-29534: не может быть разрешен ссылочный объект SYSTEM.com/luciad/imageio/webp/WebPReader
synonym  : com/luciad/imageio/webp/WebPImageReaderSpi
granting : execute on class com/luciad/imageio/webp/WebPReadParam to public
errors   : class com/luciad/imageio/webp/WebPReadParam
    ORA-29534: не может быть разрешен ссылочный объект SYSTEM.com/luciad/imageio/webp/WebPDecoderOptions
synonym  : com/luciad/imageio/webp/WebPReadParam
granting : execute on class com/luciad/imageio/webp/VP8StatusCode to public
skipping : class com/luciad/imageio/webp/VP8StatusCode
errors   : class com/luciad/imageio/webp/VP8StatusCode
    ORA-29552: предупреждение проверки достоверности: java.lang.UnsupportedClassVersionError: com/luciad/imageio/webp/VP8StatusCode (Unsupported major.minor version 52.0)

synonym  : com/luciad/imageio/webp/VP8StatusCode
granting : execute on class com/luciad/imageio/webp/WebPWriter to public
errors   : class com/luciad/imageio/webp/WebPWriter
    ORA-29534: не может быть разрешен ссылочный объект SYSTEM.com/luciad/imageio/webp/WebP
synonym  : com/luciad/imageio/webp/WebPWriter
granting : execute on class com/luciad/imageio/webp/WebPReader to public
errors   : class com/luciad/imageio/webp/WebPReader
    ORA-29534: не может быть разрешен ссылочный объект SYSTEM.com/luciad/imageio/webp/WebP
synonym  : com/luciad/imageio/webp/WebPReader
granting : execute on class com/luciad/imageio/webp/WebPImageWriterSpi to public
errors   : class com/luciad/imageio/webp/WebPImageWriterSpi
    ORA-29534: не может быть разрешен ссылочный объект SYSTEM.com/luciad/imageio/webp/WebPImageReaderSpi
synonym  : com/luciad/imageio/webp/WebPImageWriterSpi
granting : execute on class com/luciad/imageio/webp/WebPEncoderOptions to public
errors   : class com/luciad/imageio/webp/WebPEncoderOptions
    ORA-29534: не может быть разрешен ссылочный объект SYSTEM.com/luciad/imageio/webp/WebP
synonym  : com/luciad/imageio/webp/WebPEncoderOptions
granting : execute on resource META-INF/maven/org.sejda.imageio/webp-imageio/pom.properties to public
skipping : resource META-INF/maven/org.sejda.imageio/webp-imageio/pom.properties
granting : execute on resource META-INF/services/javax.imageio.spi.ImageReaderSpi to public
skipping : resource META-INF/services/javax.imageio.spi.ImageReaderSpi
granting : execute on class com/luciad/imageio/webp/WebP to public
errors   : class com/luciad/imageio/webp/WebP
    ORA-29534: не может быть разрешен ссылочный объект SYSTEM.com/luciad/imageio/webp/NativeLibraryUtils
synonym  : com/luciad/imageio/webp/WebP
granting : execute on class com/luciad/imageio/webp/WebPDecoderOptions to public
errors   : class com/luciad/imageio/webp/WebPDecoderOptions
    ORA-29534: не может быть разрешен ссылочный объект SYSTEM.com/luciad/imageio/webp/WebP
synonym  : com/luciad/imageio/webp/WebPDecoderOptions
granting : execute on resource native/linux/64/libwebp-imageio.so to public
skipping : resource native/linux/64/libwebp-imageio.so
granting : execute on resource native/mac/64/libwebp-imageio.dylib to public
skipping : resource native/mac/64/libwebp-imageio.dylib
The following operations failed
    class com/luciad/imageio/webp/WebP$1: resolution
    class com/luciad/imageio/webp/WebPWriteParam: resolution
    class com/luciad/imageio/webp/NativeLibraryUtils: resolution
    class com/luciad/imageio/webp/WebPImageReaderSpi: resolution
    class com/luciad/imageio/webp/WebPReadParam: resolution
    class com/luciad/imageio/webp/WebPWriter: resolution
    class com/luciad/imageio/webp/WebPReader: resolution
    class com/luciad/imageio/webp/WebPImageWriterSpi: resolution
    class com/luciad/imageio/webp/WebPEncoderOptions: resolution
    class com/luciad/imageio/webp/WebP: resolution
    class com/luciad/imageio/webp/WebPDecoderOptions: resolution
    class java/nio/file/Path: creation (createFailed)
    class java/nio/file/attribute/FileAttribute: creation (createFailed)
    class java/nio/file/Files: creation (createFailed)
exiting  : Failures occurred during processing



И неплохо было бы сказать: пробовал из найденного то-то и то-то, с таким-то результатом.

С jar+dll/so не работал, только с jar. Могу предположить права доступа к библиотеке, как на уровне ОС, так и в СУБД (dbms_java.grant_permission). И в alert.log неплохо глянуть. И стек ошибки полностью, впрочем это к первому вопросу о полном листинге.
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39985891
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,

Листинг прост

exec DBMS_JAVA.loadjava(options => '...\WebP\webp-imageio-0.1.6.jar');

Какие другие опции указать, честно говоря, не знаю.
Дополнительно даны Permissions

GRANT USER_LEVEL_1 SYS java.io.FilePermission * read ENABLED 169
GRANT USER_LEVEL_1 SYS java.io.FilePermission <<ALL FILES>> read, write,execute ENABLED 170
GRANT USER_LEVEL_1 SYS java.lang.RuntimePermission getClassLoader ENABLED 163
GRANT USER_LEVEL_1 SYS java.util.PropertyPermission * read,write ENABLED 161

Я не знаю, что еще можно дать. Скажите, действие

exec DBMS_JAVA.loadjava(options => '...\WebP\webp-imageio-0.1.6.jar');

нужно выполнять для каждого сеанса, или достаточно один раз загрузить библиотеку в БД?
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39985894
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,

И,еще: при первой,в сессии, попытки исполнения кода,
вызывается ошибка

ORA-29532: Java call terminated by uncaught Java exception: java.lang.ExceptionInInitializerError
ORA-06512: at "USER1.PKG", line 400
ORA-06512: at "USER1.T_RAW_BEFORE", line 28
ORA-04088: error during execution of trigger 'USER1.T_RAW_BEFORE'
ORA-06512: at line 15

А, уже в последующих

ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
ORA-06512: at "USER1.PKG", line 400
ORA-06512: at "USER1.T_RAW_BEFORE", line 28
ORA-04088: error during execution of trigger 'USER1.T_RAW_BEFORE'
ORA-06512: at line 15
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39985927
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под правами SYSDBA то же самое
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39985932
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegORA-29532: Java call terminated by uncaught Java exception:
java.lang.ExceptionInInitializerError

Вот это и есть первичная ошибка с которой надо разбираться. Всё остальное - снежный ком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39985936
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Что можно с этим сделать?
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39985939
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegЧто можно с этим сделать?

Посмотреть какая именно ошибка выкинулась при инициализации. Ну и, как уже сказали выше,
загуглить. Может, используемая библиотека не может работать без экрана...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39986223
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exec DBMS_JAVA.loadjava(options => '...\WebP\webp-imageio-0.1.6.jar');

Какие другие опции указать, честно говоря, не знаю.

С помощью командной строки, я показал. Может, и через DBMS_JAVA так же сработает. Лучше всегда обращаться к доке .

Скажите, действие

exec DBMS_JAVA.loadjava(options => '...\WebP\webp-imageio-0.1.6.jar');

нужно выполнять для каждого сеанса, или достаточно один раз загрузить библиотеку в БД?

Один раз.

Я не знаю, что еще можно дать

Нужно давать не наугад все права, это небезопасно, да и метод "пальцем в небо". А только те, которые нужны . Которые нужны, определяет библиотека - она может соединяться по сети, может читать/писать файлы, и т.д.

ORA-29532: Java call terminated by uncaught Java exception: java.lang.ExceptionInInitializerError

Java-проблемы лучше тестировать вне оракла в какой-нибудь IDE.
Проблемы связки java и PL/SQL тестируйте внутри оракла, понимая, что есть Java-стек и PL/SQL-стек .
Если захотите вывести Java-стек в PL/SQL, помните о перенаправлении вывода .
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39986268
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,
Эта библиотека работает, вне оракла, хорошо.
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39987958
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,
Значит, ошибка в доступе
Caused by: java.security.AccessControlException: the Permission ("java.lang.RuntimePermission" "loadLibrary.C:\Users\ORACLE~1\AppData\Local\Temp\6655369759961346317webp-imageio.dll")
has not been granted to USER_LEVEL_1.
The PL/SQL to grant this is dbms_java.grant_permission( 'USER_LEVEL_1', 'SYS:java.lang.RuntimePermission', 'loadLibrary.C:\Users\ORACLE~1\AppData\Local\Temp\6655369759961346317webp-imageio.dll', '' )


При попытке выполнить рекомендуемый код
dbms_java.grant_permission( 'USER_LEVEL_1', 'SYS:java.lang.RuntimePermission', 'loadLibrary.C:\Users\ORACLE~1\AppData\Local\Temp\6655369759961346317webp-imageio.dll', '' )


выдается следующее исключение
ORA-29532: Java call terminated by uncaught Java exception: java.lang.SecurityException: policy table update SYS:java.lang.RuntimePermission, loadLibrary.C:\Users\ORACLE_USER\AppData\Local\Temp\*.dll


Есть еще одна проблема:
оракл вгружает библиотеку webp-imageio.dll каждый раз добавляя к ней прификс (19-ти значное число), что приводит к дупликатам выгруженых библиотек. Можно ли это исправить?
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39988032
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. В стопятьдесятчетвертый раз. Если вы обращаетесь на форум, коллегам для полноценного тестирования нужен полный листинг, включая: версии ПО, полностью код, ошибки. Мне, чтобы вам помочь, нужно установить Оракл нужной версии, загрузить библиотеку, написать PL/SQL обвязку, вызвать ее. Т.е. потратить, возможно, не один час.

2. Обратите внимание, что при моем способе загрузки сразу выдаются разрешения.

Код: powershell
1.
granting : execute on resource native/linux/64/libwebp-imageio.so to public



3.
оракл вгружает библиотеку webp-imageio.dll каждый раз

Зачем "каждый раз" ? Загрузка библиотеки в СУБД нужна один раз.
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39988148
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,
Там опечатка. Выгружает. Во временную папку

C:\Users\ORACLE~1\AppData\Local\Temp\6655369759961346317webp-imageio.dll.


При чем добавляя префикс к имени. В даном случаи 6655369759961346317.
По версиям:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Windows 10 Pro.

Java класс прикрепляю. Вызов класса происходит слудующим образом:

PROCEDURE CUT_IMAGE(P_DATA in out nocopy BLOB,
P_IMAGE_SIZE in NUMBER,
IS_ROUND in NUMBER,
P_SMALL_IMAGE in out nocopy BLOB)
as language java name 'AvatarsComplite.getImmageAvatar( oracle.sql.BLOB[], java.lang.Integer, java.lang.Integer, oracle.sql.BLOB[])';


Полный листинг ошибки:

*** 2020-08-10T12:54:47.588336+03:00
Exception in thread "Root Thread" java.lang.ExceptionInInitializerError

at com.luciad.imageio.webp.WebPDecoderOptions.<clinit>(WebPDecoderOptions.java:20)

at com.luciad.imageio.webp.WebPReadParam.<init>(WebPReadParam.java:24)

at AvatarsComplite.decodeFromWebPtoJPG(AVATARSCOMPLITE:219)

at AvatarsComplite.getImmageAvatar(AVATARSCOMPLITE:47)

Caused by: java.security.AccessControlException: the Permission ("java.lang.RuntimePermission" "loadLibrary.C:\Users\ORACLE~1\AppData\Local\Temp\6263584239715113428webp-imageio.dll") has not been granted to USER_LEVEL_1. The PL/SQL to grant this is dbms_java.grant_permission( 'USER_LEVEL_1', 'SYS:java.lang.RuntimePermission', 'loadLibrary.C:\Users\ORACLE~1\AppData\Local\Temp\6263584239715113428webp-imageio.dll', '' )

at java.security.AccessControlContext.checkPermission(AccessControlContext.java)

at java.security.AccessController.checkPermission(AccessController.java)

at java.lang.SecurityManager.checkPermission(SecurityManager.java)

at oracle.aurora.rdbms.SecurityManagerImpl.checkPermission(SecurityManagerImpl.java)

at java.lang.SecurityManager.checkLink(SecurityManager.java:837)

at java.lang.Runtime.load0(Runtime.java:803)

at java.lang.System.load(System.java:1186)

at com.luciad.imageio.webp.NativeLibraryUtils.loadFromJar(WebP.java:131)

at com.luciad.imageio.webp.WebP.loadNativeLibrary(WebP.java:31)

at com.luciad.imageio.webp.WebP.<clinit>(WebP.java:38)

... 4 more
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39988488
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока остановился на том, что протестировать вызов библиотеки не могу.

Код: powershell
1.
2.
3.
C:\>java -cp webp-imageio-0.1.6.jar Test
Error: Could not find or load main class Test
Caused by: java.lang.ClassNotFoundException: Test



Код: 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.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
C:\>sqlplus system/xxx@XE

SQL*Plus: Release 18.0.0.0.0 - Production on Tue Aug 11 07:05:51 2020
Version 18.4.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Last Successful login time: Tue Aug 11 2020 06:28:26 +03:00

Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL> create or replace function get_java_property(prop in varchar2)
  2  return varchar2 is
  3  language java name 'java.lang.System.getProperty(java.lang.String) return java.lang.String';
  4  /

Function created.

SQL> select get_java_property('java.version') from dual;

GET_JAVA_PROPERTY('JAVA.VERSION')
--------------------------------------------------------------------------------
1.8.0_161

SQL>


==================================================================================

C:\>javac -version
javac 14.0.2

C:\>javac test.java

C:\>java Test
Test Library: OK

C:\>loadjava -u system/xxx@XE Test.class


==================================================================================

SQL> create PROCEDURE TEST_LIBRARY(P_IN in NUMBER)
  2  as language java name
  3  'Test.testLibrary(java.lang.Integer)';
  4  /

Procedure created.

SQL> exec TEST_LIBRARY(0);
BEGIN TEST_LIBRARY(0); END;

*
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception:
java/lang/UnsupportedClassVersionError : Test (Unsupported major.minor version
58.0)
ORA-06512: at "SYSTEM.TEST_LIBRARY", line 1
ORA-06512: at line 1


==================================================================================

C:\>javac --source 1.8 --target 1.8 Test.java
warning: [options] bootstrap class path not set in conjunction with -source 8
1 warning

C:\>loadjava -u system/xxx@XE Test.class

==================================================================================


SQL> exec TEST_LIBRARY(0);

PL/SQL procedure successfully completed.

SQL> SET SERVEROUTPUT ON
SQL> CALL dbms_java.set_output(2000);

Call completed.

SQL> exec TEST_LIBRARY(0);
Test Library: OK

PL/SQL procedure successfully completed.

==================================================================================

C:\>javac --source 1.8 --target 1.8 -cp webp-imageio-0.1.6.jar Test.java
warning: [options] bootstrap class path not set in conjunction with -source 8
1 warning

C:\>java -cp webp-imageio-0.1.6.jar Test
Error: Could not find or load main class Test
Caused by: java.lang.ClassNotFoundException: Test

C:\>java Test
Error: Unable to initialize main class Test
Caused by: java.lang.NoClassDefFoundError: com/luciad/imageio/webp/WebPReadParam

C:\>javac --source 1.8 --target 1.8 -cp webp-imageio-0.1.6.jar Test.java
warning: [options] bootstrap class path not set in conjunction with -source 8
1 warning

C:\>java Test
Test Library: OK

...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39988961
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,
Вы сделали входную точку. Я же использовал статистические методы
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39989420
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Входная точка main ничем принципиально не отличается от любой другой функции/метода любого другого класса, будь он статическим или нет.

Код: java
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.
C:\Users\maslovd\Downloads>java -cp webp-imageio-0.1.6.jar Test
Error: Could not find or load main class Test
Caused by: java.lang.ClassNotFoundException: Test

----- здесь я взял каталог com из webp-imageio-0.1.6.jar и положил рядом со своим тестовым классом.

C:\Users\maslovd\Downloads>java Test
java.util.NoSuchElementException
        at java.desktop/javax.imageio.spi.FilterIterator.next(ServiceRegistry.java:891)
        at java.desktop/javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:531)
        at java.desktop/javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:516)
        at Test.decodeFromWebPtoJPG(Test.java:64)
        at Test.testLibrary(Test.java:44)
        at Test.main(Test.java:32)
Test Library: OK

--- ага, видимо, порядок аргументов при запуске имеет значение

C:\Users\maslovd\Downloads>java Test -cp webp-imageio-0.1.6.jar
java.util.NoSuchElementException
        at java.desktop/javax.imageio.spi.FilterIterator.next(ServiceRegistry.java:891)
        at java.desktop/javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:531)
        at java.desktop/javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:516)
        at Test.decodeFromWebPtoJPG(Test.java:64)
        at Test.testLibrary(Test.java:44)
        at Test.main(Test.java:32)
Test Library: OK



Итак, у нас есть библиотека, и пробный вызов ее метода.
Код: 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.
SQL> Connected to Oracle Database 18c Express Edition Release 18.0.0.0.0 
Connected as system@//192.168.1.201:1522/XE

SQL> SET SERVEROUTPUT ON SIZE 5000
SQL> CALL dbms_java.set_output(5000);

Method called

SQL> exec TEST_LIBRARY(0);
Exception in thread "Root Thread" java.lang.ExceptionInInitializerError
	at com.luciad.imageio.webp.WebPDecoderOptions.<clinit>(WebPDecoderOptions.java:20)
	at com.luciad.imageio.webp.WebPReadParam.<init>(WebPReadParam.java:24)
	at Test.decodeFromWebPtoJPG(Test.java:65)
	at Test.testLibrary(Test.java:44)
Caused by: java.lang.SecurityException: Unable to create temporary file or directory
	at java.nio.file.TempFileHelper.create(TempFileHelper.java:143)
	at java.nio.file.TempFileHelper.createTempFile(TempFileHelper.java:161)
	at java.nio.file.Files.createTempFile(Files.java:897)
	at com.luciad.imageio.webp.NativeLibraryUtils.loadFromJar(WebP.java:121)
	at com.luciad.imageio.webp.WebP.loadNativeLibrary(WebP.java:31)
	at com.luciad.imageio.webp.WebP.<clinit>(WebP.java:38)
	... 4 more
begin TEST_LIBRARY(0); end;

ORA-29532: Java call terminated by uncaught Java exception: java.lang.ExceptionInInitializerError
ORA-06512: at "SYSTEM.TEST_LIBRARY", line 1
ORA-06512: at line 1

SQL> 



Видно, что не хватает разрешений.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL> exec dbms_java.grant_permission('SYSTEM', 'java.io.FilePermission', '*',  'read,write'); ---- небезопасно
PL/SQL procedure successfully completed

SQL> exec TEST_LIBRARY(0);
Exception in thread "Root Thread" java.lang.NoClassDefFoundError
	at com.luciad.imageio.webp.WebPReadParam.<init>(WebPReadParam.java:24)
	at Test.decodeFromWebPtoJPG(Test.java:65)
	at Test.testLibrary(Test.java:44)
begin TEST_LIBRARY(0); end;

ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
ORA-06512: at "SYSTEM.TEST_LIBRARY", line 1
ORA-06512: at line 1

SQL> 



И вперед, разбираться в библиотеке дальше.

Тут поможет Java decompiler .

Код: java
1.
2.
3.
4.
5.
6.
7.
public final class WebPReadParam extends ImageReadParam {
  private WebPDecoderOptions fOptions = new WebPDecoderOptions();

public final class WebPDecoderOptions {
  static {
    WebP.loadNativeLibrary();
  }



Проблема происходит при загрузке native library.

Все можно раскопать, вопрос только в усердии.

Засим откланиваюсь.
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39990028
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,
Спасибо большое за старание. Уверен, что проблема не в библиотеке: на java проекте работает без проблем. Думаю, декомпилировать и копаться в коде - будет лишнее. Может кто, еще , увидя тему, подскажет что-нибудь
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39990031
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,
Есть предположение: так, как я говорил, при выполнении кода, выгружется файл (нативная библиотека dll) в папку временных файлов оракл. И, при выгрузке добавляется префикс к имени файла. Возможно по-этому нативная быблиотека не инициализируется. Как можно получить доступ к папке , с временными файлами, оракл из JVM Aurora? Не забивая путь статистически. Тогда можно было переименовать файл в оригинальное имя. Либо, как-то запретить добавления префикса к имени
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39990036
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg
Уверен, что проблема не в библиотеке


Вашу уверенность разделяю наполовину.
Есть разница между standalone JVM и Oracle JVM. Отсюда пляски с обертками и разрешениями.
И вполне допускаю, что есть код, который проблематично в виде бинарника интегрировать в Oracle.

Lemkoleg
на java проекте работает без проблем.


Это подсказка вам: вовсе необязательно засовывать логику проекта внутрь СУБД.

Lemkoleg
Думаю, декомпилировать и копаться в коде - будет лишнее.


В java-коде копаться вполне можно. Java была специально написана так, чтобы не было проблем восстановить исходник.
В бинарник уже лезть сложнее, игра не стоит свеч.
Но, опять же, подсказка. Вот автор java-кода, видимо, не захотел реализовывать на java то, что нашел в виде бинарника. А может, есть такие реализации на java? Или их написать не так уж трудно.
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39990040
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,
Реализация вне СУБД - это, как последний вариант. Может подскажите, есть переменная в СУБД, отвечающая за располажение папки для временных файлов.
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39990043
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg
Реализация вне СУБД - это, как последний вариант.

Ничего особенно "последнего" в этом варианте не вижу. Такие навороты крутятся десятилетиями, что это - мелочь.

Lemkoleg
Может подскажите, есть переменная в СУБД, отвечающая за располажение папки для временных файлов.


Если проблема именно в permissions (это можно проверить, а не пользоваться методом тыка) - пробовали давать разрешение на "C:\Users\*" (а также сделать имя каталога для TEMP более коротким и без спецсимволов) или просто "*"?
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39990045
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm

а также сделать имя каталога для TEMP более коротким и без спецсимволов


Я не знаю, как это сделать. Эту директорию использует оракл для себя. Это не системная папка для временных файлов
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39990046
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C:\Users\ORACLE~1\AppData\Local\Temp\

Это не системная папка для временных файлов

Опять слова "от себя".

Код: powershell
1.
echo %TEMP%
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39990048
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,
D:\Temp
Это - системная папка для временных файлов ОС. У оракла она другая ( даном случаи C:\Users\ORACLE~1\AppData\Local\Temp\)
...
Рейтинг: 0 / 0
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
    #39990063
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegЭто - системная папка для временных файлов ОС.

Нет, это временная папка текущего пользователя. Почувствуй разницу.
И выше я уже намекал про безэкранное окружение сервиса Оракула.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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