Если указанный Java-класс не найден или занесен в черный список, то когда это обнаружено? - PullRequest
5 голосов
/ 26 мая 2011

Я хотел использовать в Google Appengine небольшую библиотеку; один из методов одного из его классов (скажем, MyClass.writeToFile()) использует java.io.FileOutputStream, который входит в черный список классов (ну, не в белом списке ).

Означает ли это, что MyClass потерпит неудачу во время загрузки классов или только тогда, когда (если) я попытаюсь вызвать нарушающий метод? В какой момент эта проверка («FileOutputStream не разрешена») выполнена? При загрузке файла MyClass и обнаружении, что он «ссылается на / зависит от» FileOutputStream (я не знаю, объявлено ли это в байт-коде MyClass)? Или при попытке загрузить FileOutputStream при первом вызове MyClass.writeToFile()?

Далее, если предположить, что метод MyClass.writeToFile() не важен для моей библиотеки (но MyClass есть), есть ли какое-то обходное решение, или следует реорганизовать библиотеку (и собрать, скажем, два разных jar, один полноценный другие песочницы)?

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Выполните тестовое развертывание.Развертывание должно закончиться неудачей, если я правильно помню.Классы, которые используются определенным классом, являются частью байтового кода, и Google проверяет его.

Редактировать: я противоречу себе :) Этот поток указывает, что развертывание завершится неудачно, только если загружен класс FileOutputStream: GoogleAppEngine: возможно отключить FileUpload?

Edit2: И это указывает на то, что загрузчик классов проверяет / останавливает загрузку запрещенных классов: Песочница

0 голосов
/ 21 сентября 2011

Классы ленивы при первом обращении.Если ваш код никогда не пытается использовать FileOutputStream, тогда не должно быть проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...