Как зафиксировать / отладка 'ожидала, что x.rb определит X.rb' в направляющих

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

22
задан Patrick Ritchie 27 August 2012 в 01:29
поделиться

5 ответов

Это - хитрое.

то, Что обычно работает на меня, должно выполнить "производство сценария/консоли" на рабочем сервере и ввести:

Announcement

, Который будет обычно давать Вам лучшее сообщение об ошибке. Но Вы сказали, что уже попробовали это?

11
ответ дан Joe Van Dyk 29 November 2019 в 05:36
поделиться

Я встретился с этим прежде, и AttachmentFu, плагин был виноват. Я верю в свой случай, которым это происходило из-за AttachmentFu ожидание различного процессора изображения, чем, что было доступно, или неподдерживаемые версии были также установлены. Проблема была решена, когда я явно добавил :with => :rmagick (или подобный - я использовал RMagick) к has_attachment вызов метода даже для вложений неизображения. , Очевидно, удостоверьтесь, что Ваша продуктивная среда имеет все правильные драгоценные камни (или заморозьте их в свое приложение), и поддерживающее программное обеспечение установленный (ImageMagick). YMMV.

Что касается не получения направляющих и AttachmentFu, чтобы высосать и скрыть реальную ошибку - мы зафиксировали его перед пониманием его полностью.

2
ответ дан Ian Terrell 29 November 2019 в 05:36
поделиться

Вы можете попробовать отключить все свои плагины и добавить их обратно по одному.

В environment.rb в разделе «Инициализатор» добавьте следующую строку:

config.plugins = [ :exception_notification, :ssl_requirement, :all ]

Начните с минимального набора, установленного для запуска приложения, и добавьте их по одному. Я обычно получаю эту ошибку, когда определяю модель, которая отображается на существующее имя файла. Например, модель Request, но в Rails уже есть request.rb, который загружается первым.

1
ответ дан Otto 29 November 2019 в 05:36
поделиться

Извините, это не окончательный ответ, но другой подход, который может работать в определенных обстоятельствах:

Я только столкнулся с этой проблемой при отладке сайта с использованием Ruby 1.8.7 и Merb 1.0.15 , Казалось, что рассматриваемый класс (назовем его SomeClass) выходит из области видимости, но когда файл some_class.rb был автоматически загружен, другие необходимые ему файлы (some_class / base.rb и т. Д.) Не были загружены механизмом require. Возможно, ошибка в require?

Если раньше мне требовался файл some_class, такой как конец environment.rb, он, похоже, предотвращал выпадение объекта из области видимости.

0
ответ дан pix 29 November 2019 в 05:36
поделиться

У меня была эта проблема некоторое время, и в моем случае ошибке всегда предшествовала ошибка эта ошибка S3:

(AWS :: S3 :: Operation Aborted) "A конфликтующая условная операция в настоящее время против этого ресурс. Пожалуйста, попробуйте еще раз. »

Эта проблема обычно возникает при создании одной и той же корзины снова и снова. (Источник Форум разработчиков AWS )

Это произошло из-за того, что я использовал attachment_fu, чтобы создать бакет, и я разложил строку, содержащую команду Bucket.create (@@ bucket_name) в lib / technoweenie / attachment_fu / backends / s3_backends.rb ( рядом со строкой 152).

После того, как вы прокомментировали или удалили команду Bucket.create (@@ bucket_name) , проблема исчезла.

Надеюсь, это поможет.

1
ответ дан 29 November 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: