Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему запрещена кодогенерация на app-сервере? 
:(
    Опции темы
UnicornMirage
Дата 28.10.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



Здравствуйте.
Вот пытался сгенерировать класс на серваке (tomcat 6), и возникла проблема: если генерировать простой класс, кторый использует лишь стандартные классы из пакета java- то он создается нормально.
Если же в этом генерируемом классе использовать классы из сторонних библиотек, либо свой же другой класс, то класс не компилится. Для компиляции использую JCAPI (JavaCompiler).

НО! если ту же программу для генерации класса запустить как обычный application через метод main, то компиляция проходит.

Пример:

Этот класс компилится под томкатом:

Код

package somepack;

public class MyDynamicClass {

   public void foo() {
   }
}




Этот класс выдает ошибку компиляции под томкатом:

Код

package somepack;

import somepack.SomeExistingMyClass;

public class MyDynamicClass {

   private SomeExistingMyClass c;

   public void foo() {
   }
}





Компилятор говорит, что не находит класс SomeExistingMyClass, хотя он существует.

Почему существует такое ограничение, и можно ли это как то побороть?

вероятно все упирается в класслоадер, который используется в JavaCompiler.
Если в режиме дебага томката (catalina jpda run) посмотреть:




Код

// так он не находит класс
ToolProvider.getSystemToolClassLoader().loadClass("somepack.SomeExistingMyClass");

// а так класс находится нормально!
Thread.currentThread().getContextClassLoader().loadClass("somepack.SomeExistingMyClass");





Как бы заставить класслоадер ToolProvider.getSystemToolClassLoader() увидеть все мои классы??

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.