Прежде всего, проверьте вне Oracle, что класс, который вы ищете, на самом деле находится в этом jar-файле. Я ожидаю, что это так, но это не помешает проверить.
Затем я бы проверил, какие классы были загружены и имеют ли они допустимые статусы.
SELECT object_name, dbms_java.longname(object_name), status
FROM user_objects
WHERE object_type='JAVA CLASS'
ORDER BY 1
Возможно, вы захотите немного ограничить это, если есть много классов, например ::100100
WHERE dbms_java.longname(object_name) LIKE '%MessageFactoryImpl'
Если класс отсутствует или существует с неправильным именем пакета, проблема заключается в команде loadjava.
Если класс существует, но его статус - INVALID, проверьте USER_ERRORS, чтобы увидеть, что это за ошибки. Я не помню, выполнял ли я динамическую загрузку классов в Oracle, но я вспоминаю, что статическое связывание давало бы ошибки, которые подразумевали, что класс не существовал, когда он действительно существовал, но имел ошибки.
Добавлена новая информация после выхода loadjava
Вывод loadjava кажется несовместимым с вашей попыткой найти класс в базе данных. Если он загружается, но не разрешается, он все равно должен быть в списке, но со статусом INVALID.
Я получил JAR и попробовал сам в пустой схеме. Класс загружается, но, как и ожидалось, неверен:
dev> select object_name, dbms_java.longname(object_name),status
2 from user_objects
3 where object_name like '%MessageFactoryImpl';
OBJECT_NAME
--------------------------------------------------------------------------------
DBMS_JAVA.LONGNAME(OBJECT_NAME)
--------------------------------------------------------------------------------
STATUS
-------
/3e484eb0_MessageFactoryImpl
com/sun/xml/messaging/saaj/soap/MessageFactoryImpl
INVALID
Затем я проверил, какие ошибки были в классе:
dev> alter java class "com/sun/xml/messaging/saaj/soap/MessageFactoryImpl" resolve;
dev> /
Warning: Java altered with compilation errors.
dev> show error
Errors for JAVA CLASS "/3e484eb0_MessageFactoryImpl":
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 ORA-29521: referenced name javax/xml/soap/MessageFactory could
not be found
0/0 ORA-29521: referenced name javax/xml/soap/SOAPMessage could not
be found
0/0 ORA-29521: referenced name javax/xml/soap/MimeHeaders could not
be found
0/0 ORA-29521: referenced name javax/xml/soap/SOAPException could not
be found
(Эти ошибки также будут перечислены в USER_ERRORS, при условии, что попытка разрешения была предпринята хотя бы один раз.)
Очевидно, что этот класс ссылается на классы из базовой библиотеки SOAP. Тебе тоже придется это загрузить - ты это сделал?
Кстати, когда я пишу код для вызова Class.forName (), я получаю исключение ClassNotFoundException. Что может показаться нелогичным, поскольку объект класса существует в схеме. Однако недопустимый класс на самом деле «не существует» с точки зрения загрузчика классов в Oracle; и для того, чтобы класс был действительным, Oracle должен иметь возможность разрешать все свои ссылки на другие классы.