Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 (Java) Проблема при создании экземпляра класса.  [new]
Sarin
Member

Откуда: Земля, Солнечная система.
Сообщений: 14485
Оракл ругается на невозможность скомпилять прогу.

Ошибка: ORA-29534: referenced object SYSTEM.org/apache/commons/digester/Digester could not be resolved

Можно ли узнать у Оракла чуть подробней, чем он недоволен? А то эта ошибка, по ходу дела, у него на все случаи жизни:)
4 июл 06, 14:14    [2840898]     Ответить | Цитировать Сообщить модератору
 Re: (Java) Проблема при создании экземпляра класса.  [new]
Denis Popov
Member

Откуда: Санкт-Петербург
Сообщений: 7862
Все по стандарту: узнай есть ли упомянутый объект в БД, если он не в твоей схеме, то имеются ли соответствующие права и синонимы. Единственное, что с именами Java-классов порой следует оперировать не напрямую, а через dbms_java.longname(), поскольку имя класса вместе с его пакетом будет урезано до 30 символов.
select o.owner
     , o.object_name
     , dbms_java.longname(o.object_name) longname
from dba_objects o
where o.object_type = 'JAVA CLASS'
  and dbms_java.longname(object_name) = 'org/apache/commons/digester/Digester'
order by longname;

select p.*
from dba_tab_privs p
where dbms_java.longname(p.table_name) = 'org/apache/commons/digester/Digester';

select s.*
from dba_synonyms s
where dbms_java.longname(s.table_name) = 'org/apache/commons/digester/Digester';

P.S. http://jakarta.apache.org/commons/digester/
4 июл 06, 14:24    [2840967]     Ответить | Цитировать Сообщить модератору
 Re: (Java) Проблема при создании экземпляра класса.  [new]
Sarin
Member

Откуда: Земля, Солнечная система.
Сообщений: 14485
Может ли import в Java-классе слететь ис за того, что путь к классу длинной 36 символов?

В смысле распространяется ли ограничение на 30 символов на Java-код?

Как импортировать пакет если полное имя класса больше тридцать символов (org/apache/commons/digester/Digester)?
4 июл 06, 15:12    [2841290]     Ответить | Цитировать Сообщить модератору
 Re: (Java) Проблема при создании экземпляра класса.  [new]
Sarin
Member

Откуда: Земля, Солнечная система.
Сообщений: 14485
Не. Похоже длинна пути тут не причём.
4 июл 06, 15:25    [2841381]     Ответить | Цитировать Сообщить модератору
 Re: (Java) Проблема при создании экземпляра класса.  [new]
Denis Popov
Member

Откуда: Санкт-Петербург
Сообщений: 7862
Ты оперируешь длинным именем, в кавычках, оракл сам его укорачивает.

SQL> create or replace and compile java source named "package1/package2/package3/MyClass" as
  2  package package1.package2.package3;
  3  public class MyClass {
  4  }
  5  /

Java created.

SQL> select o.object_name
  2       , o.object_type 
  3       , dbms_java.longname(o.object_name) longname
  4  from obj o
  5  where o.object_type like 'JAVA%'
  6    and dbms_java.longname(object_name) like '%MyClass'
  7  order by longname;

OBJECT_NAME                    OBJECT_TYPE                    LONGNAME
------------------------------ ------------------------------ -----------------------------------
/74d2dec2_MyClass              JAVA CLASS                     package1/package2/package3/MyClass
/74d2dec2_MyClass              JAVA SOURCE                    package1/package2/package3/MyClass

Судя по всему, у тебя не загружена соответствующая библиотека. Скачай ее и грузи архив через утилиту loadjava, обрати внимание на ключи [-g | -grant <user> [, <user>]...] и [-s | -synonym]:
http://download-west.oracle.com/docs/cd/B10501_01/java.920/a96656/newtools.htm#1010641
4 июл 06, 15:48    [2841478]     Ответить | Цитировать Сообщить модератору
 Re: (Java) Проблема при создании экземпляра класса.  [new]
Sarin
Member

Откуда: Земля, Солнечная система.
Сообщений: 14485
Большое спасибо. jarы loadjava загрузил уже. Имена действительно сокращаются. Я всё это добро дёргал исключительно из явы.
4 июл 06, 16:01    [2841573]     Ответить | Цитировать Сообщить модератору
 Re: (Java) Проблема при создании экземпляра класса.  [new]
Sarin
Member

Откуда: Земля, Солнечная система.
Сообщений: 14485
select p.*
from dba_tab_privs p
where dbms_java.longname(p.table_name) = 'org/apache/commons/digester/Digester';
Вернул ничего.
4 июл 06, 16:47    [2841932]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить