NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Создайте свою версию Perl 5.10, следующего любым специальным инструкциям из mod_perl документации. Скажите конфигуратору Perl устанавливать в некотором нестандартном месте, как/usr/local/perl/5.10.0
Используйте инструкции создать общую библиотеку (или динамичный, или .so) mod_perl против Apache Вашего распределения, но удостоверяться Вы выполняете Make-файл. МН использование Вашей версии жемчуга:
/usr/local/perl/5.10.0/bin/perl Make-файл. МН APXS =/usr/bin/apxs
Установите и настройте mod_perl как нормальный.
Это может быть полезно, после шага один, для изменения пути, таким образом, Вы accidentially не запутываетесь, о которой версии Perl Вы используете:
export PATH=/usr/local/perl/5.10.0/bin:$PATH
Я сделал это прежде. Это не было симпатично, но это работало, тем более, что perl's поставщика обычно 2-3 года.
Я запустил с создания моего собственного об/мин жемчуга, который установил жемчуг в другое местоположение, как /opt/
. Это было довольно прямым. Я главным образом запустил с этого, потому что я не хотел системные утилиты, которые использовали жемчуг для повреждения, когда я обновил/установил новые модули. Я должен был изменить все свои сценарии для определения #!/opt/bin/perl
наверху и иногда я даже играл с путем, чтобы удостовериться, что мой жемчуг был на первом месте.
Затем, я захватил mod_perl исходного об/мин и изменил его для использования моего /opt/bin/perl
вместо /usr/bin/perl
. У меня нет доступа к изменениям, которые я внес, так как это было на другом концерте. Мне потребовалось немного проигрывания вокруг для получения его.
Это работало, но я не мастер об/мин, таким образом, проверка зависимости не удалась так хорошо. Например, я мог удалить своего пользовательского об/мин и повредить все. Это не было грандиозное предприятие для меня, таким образом, я шел дальше.
Я также смешивал об/мин с установками CPAN модулей (я упоминал, что мы создали наше собственное зеркало CPAN с нашим собственным кодом?). Это было немного хрупко также. Снова, у меня не было ресурсов (т.е., время), чтобы выяснить, как изогнуть cpan2rpm, чтобы использовать мой жемчуг и не вызвать конфликты об/мин.
Если бы у меня было все это, чтобы сделать снова, то я сделал бы пользовательские 5,10 об/мин жемчуга и просто заменил бы системный жемчуг. Затем я использовал бы cpan2rpm
для создания RPM-пакетов, мне было нужно для моего программного обеспечения, и скомпилируйте моего собственного mod_perl об/мин.