Когда вы объявляете ссылочную переменную (т. е. объект), вы действительно создаете указатель на объект. Рассмотрим следующий код, в котором вы объявляете переменную примитивного типа int
:
int x;
x = 10;
В этом примере переменная x является int
, и Java инициализирует ее для 0. Когда вы назначаете его 10 во второй строке, ваше значение 10 записывается в ячейку памяти, на которую указывает x.
Но когда вы пытаетесь объявить ссылочный тип, произойдет что-то другое. Возьмите следующий код:
Integer num;
num = new Integer(10);
Первая строка объявляет переменную с именем num
, но она не содержит примитивного значения. Вместо этого он содержит указатель (потому что тип Integer
является ссылочным типом). Поскольку вы еще не указали, что указать на Java, он устанавливает значение null, что означает «Я ничего не указываю».
Во второй строке ключевое слово new
используется для создания экземпляра (или создания ) объекту типа Integer и переменной указателя num
присваивается этот объект. Теперь вы можете ссылаться на объект, используя оператор разыменования .
(точка).
Exception
, о котором вы просили, возникает, когда вы объявляете переменную, но не создавали объект. Если вы попытаетесь разыменовать num
. Перед созданием объекта вы получите NullPointerException
. В самых тривиальных случаях компилятор поймает проблему и сообщит вам, что «num не может быть инициализирован», но иногда вы пишете код, который непосредственно не создает объект.
Например, вы можете имеют следующий метод:
public void doSomething(SomeObject obj) {
//do something to obj
}
В этом случае вы не создаете объект obj
, скорее предполагая, что он был создан до вызова метода doSomething
. К сожалению, этот метод можно вызвать следующим образом:
doSomething(null);
В этом случае obj
имеет значение null. Если метод предназначен для того, чтобы что-то сделать для переданного объекта, целесообразно бросить NullPointerException
, потому что это ошибка программиста, и программисту понадобится эта информация для целей отладки.
Альтернативно, там могут быть случаи, когда цель метода заключается не только в том, чтобы работать с переданным в объекте, и поэтому нулевой параметр может быть приемлемым. В этом случае вам нужно будет проверить нулевой параметр и вести себя по-другому. Вы также должны объяснить это в документации. Например, doSomething
может быть записано как:
/**
* @param obj An optional foo for ____. May be null, in which case
* the result will be ____.
*/
public void doSomething(SomeObject obj) {
if(obj != null) {
//do something
} else {
//do something else
}
}
Наконец, Как определить исключение & amp; причина использования Трассировки стека
Прежде чем вы сможете исправить что-либо, вам нужно знать, какая служба еще не запущена, Apache или MySQL.
Поскольку утилита TEST PORT 80 говорит, что Apache запускает, вероятно, службу MySQL, которая еще не началась. Если у вас нет другого запуска Apache!
Итак, какая служба не началась ???
Если значок wampmanager не является ЗЕЛЕНЫМ, тогда одна из служб (Apache / MySQL) не началась
Как узнать, какая служба не запущена, если значок wampmanager оранжевый.
Щелкните левой кнопкой мыши по значку wampmanager, чтобы открыть меню-> Apache -> Сервис. Если Start / Возобновить сервисное меню - зеленый, а затем Apache НЕ работает .
Щелкните левой кнопкой мыши по значку wampmanager, чтобы открыть меню-> MySQL -> Сервис. Если в меню «Пуск / возобновление» указано «Зеленый», MySQL НЕ работает .
Если Apache - это служба, которая не работает, это обычно, но не всегда, потому что что-то еще захватило порт 80.
Теперь сделайте это, щелкните левой кнопкой мыши по значку wampmanager, чтобы открыть меню -> Apache -> Сервис -> тестовый порт 80. Это запустит окно команд и отобразит некоторую информацию о том, что, если что-то использует порт 80.
Что бы это ни было, нужно перенастроить, чтобы не используйте порт 80 или удалите его, если вы его не используете.
Если порт 80 не является проблемой, найдите ошибки в соответствующем журнале ошибок (используйте меню диспетчера Wamp для просмотра журналов ошибок)
Если они не существуют или не показывают ошибок, также проверяйте средство просмотра событий Windows Start -> Administrative Tools -> Event Viewer. Посмотрите в разделе «Журналы Windows» -> Приложение », доступ к которому находится в меню слева от диалоговое окно для сообщений об ошибках из Apache и MySQL.
Проверьте журнал ошибок mysql с помощью меню
wampmanager->MySQL->error log
Проверьте журнал событий Windows для сообщений из MYSQL
Убедитесь, что у вас нет другого экземпляра сервера MYSQL.
Как настроить SKYPE, чтобы он не требовал порт 80 или 443
Запустите SKYPE, затем с помощью меню сделайте следующее: Инструменты -> Параметры -> Дополнительно -> Соединение Отключить флажок рядом с «Использовать порты 80 и 443 в качестве альтернативы для подключения соединений». Теперь перезапустите SKYPE для эти изменения вступят в силу.
Если вы используете Windows 8, SKYPE поставляется в виде приложения, и это невозможно (пока) настроить таким образом. Однако если вы удалите приложение SKYPE и установите SKYPE по-старому, вы можете перенастроить его, и он работает так же хорошо.
Если вы используете wampserver 3 (рекомендуется, обычно не работает конфигурация)
если это не исправить, попробуйте:
Если это не исправить, возможно, конфликт окон:
Если это не исправить:
Чтобы добавить к предыдущему сообщению ^^:
Если какая-либо из служб не запущена, это может просто быть просто потому, что их нужно установить / настроить. Это легко сделать прямо из значка WampManager. Если Apache не запущен:
WampManager Icon -> Apache -> Service -> Install Service
Вы должны получить всплывающее окно командной строки, если порт 80 свободен (если нет, см. Выше сообщение):
'Your port 80 is available. Install will proceed.
Press Enter to continue...'
Если MySQL не запущен:
WampManager Icon -> MySQL -> Service -> Install Service
Сделайте это для одной или обеих служб, тогда:
WampManager Icon -> Restart All Services
Значок теперь станет зеленым:)
Это может произойти по одной из трех причин: -
1) Отсутствует установка VC ++: Установите все версии пакетов перераспределения VC ++ VC9, VC10, VC11, VC13, VC14 и VC15. См. Ссылку, указанную в конце для ссылки для загрузки. Если у вас 64-разрядная Windows, вы должны установить как 32, так и 64-битные версии каждого пакета VisualC ++, даже если вы не используете бит Wampserver 64.
2) Вы забыли предоставить права администратора на WAMP Server : Запуск и установка с параметром «Запуск от имени администратора» очень важны.
3) WAMP, IIS и Skype сражаются за один и тот же порт:
3306
и измените его на 3307
Диск сервера Wamp сервера "C://"
, если вы не используете его на другом диске для ex G://
: перейдите к
g:\\wamp\bin\apache\apache2.4.9\bin\
2.call cmd
3 .execute httpd.exe -t
вы увидите ошибки
g:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-autoindex.conf
Alias /icons/ "g:/Apache24/icons/"
<Directory "g:/Apache24/icons">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
Если вы установили как Wampmanager, так и боковую стопу Bitnami на ваш Windows-бокс (например, я сделал), убедитесь, что Bitnami не был настроен автоматически запускать свои службы wampstackApache и wampstackMySQL при запуске.
Чтобы проверить / исправить это, нажмите: Пуск -> Выполнить, а затем введите services.msc и нажмите «ОК».
Выберите Службы в списке слева и выполните сортировку служб по имени. Выделите «w». Если службы wampstackApache и / или wampstackMySQL уже запущены, щелкните правой кнопкой мыши и остановите оба. Затем перезапустите все службы из значка Wampmanager W в лотке служб Windows.
Если это была ваша проблема, вы можете изменить поведение запуска по умолчанию на ручной запуск wampstackApache и wampstackMySQL на вкладках «Свойства».
Я столкнулся с этой же проблемой сегодня утром, но ни один из ответов выше не предоставил мне решение.
В конце концов я понял, что проблема связана с тем, что я изменил DocumentRoot на подпапку каталога www , так как раньше я работал над проектом Symfony2 внутри www.
С новым проектом, над которым я работаю внутри www, этот старый каталог DocumentRoot больше не существует, поэтому Apache не смог запустить.
wampserver -> Apache -> httpd.conf, затем найдите «DocumentRoot» и убедитесь, что каталог, на который указывает он, или изменит его на тот, который делает.
Спасибо RiggsFolly, это был из-за вашего намека на просмотр событий выше, что я нашел проблему.
ПОЖАЛУЙСТА ЗАМЕТЬТЕ! Если вы прошли через все вышеперечисленное, например «Я», и все еще получают значок Orange, а когда вы тестируете порт 80, вы получаете «Apache», посмотрите файл: c: / wamp / bin / apache / apache2.4.9 / conf / httpd.conf (ваш номер версии Apache может отличаться).
В файле о строке # 62 вы найдете примечание, в котором говорится:
Слушайте 0.0.0.0:80 Слушайте [:: 0]: 80
Почему?
Измените это, чтобы прослушивать определенные IP-адреса, как показано ниже, чтобы предотвратить использование Apache все связанные IP-адреса.
Я изменил это, чтобы соответствовать моему IP-адресу localhost, и когда я перезапустил Wamp, он быстро перешел от Red to Green. Успех! ... через 3 часа ....
После удаления innodb_additional_mem_pool_size = 4M из my.ini и убийства этого процесса, который использовал порт, который захотел Mysql, мне удалось это сделать.
Рекомендуемое исправление: 1) Быстрое решение: Комментировать строку innodb_additional_mem_pool_size = 4M в файле my.ini службы, 2) исключить опцию из конфигурационного файла по умолчанию 5.7.4 или 3) un-unknow the variable to mysql;)
ссылка: http : //bugs.mysql.com/bug.php? id = 72533
Используйте номер 1, удалите всю строку. Сохранить в my.ini. Убейте процесс, если у вас есть один запуск (посмотрите на них с resmon.exe и убейте их командой taskkill / pid pid-of-process / f), затем запустите wampmysql, и ваш значок станет зеленым.
С уважением SB