Когда вы объявляете ссылочную переменную (т. е. объект), вы действительно создаете указатель на объект. Рассмотрим следующий код, в котором вы объявляете переменную примитивного типа 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; причина использования Трассировки стека
Спасибо за все ответы и предложения. На компьютере, который я использую, папка «Документы» и ее содержимое зашифровываются по умолчанию - включая мой IISExpress. Удаление шифрования решило проблему.
Я столкнулся с той же проблемой. Я выбрал шаблон «Пустой» MVC-проекта и получал ту же ошибку снова и снова.
Я попытался выбрать шаблон проекта MVC и получил ту же ошибку.
Выполнение небольшого количества поисковых запросов показало, что причиной возникновения проблемы может быть перепутанный файл конфигурации хоста приложения IIS express. У меня был только один сайт, настроенный в IIS express, и я попытался выполнить его из командной строки. Вот когда он показал мне ошибку в файле applicationHostConfig IIS express, включая номер строки, где была ошибка. Я играл с файлом в прошлом и добавил сайт без указания имени.
Фиксирование этой проблемы помогло мне решить.
Я получил такое же исключение из hresult: ошибка 0x80004005 (e_fail).
Это происходит после того, как я установил SQL Server 2014, до этого мой VS2013 работает нормально.
Я разрешаю это с помощью деинсталлированного IIS 8 Express и снова устанавливаю его.
Все работает отлично до сих пор.
devenv / ResetSettings
blockquote>работал для меня.
У меня была эта проблема с Visual Studio 2015 и Windows10pro TH2, и я исправил ее, обновив / переустановил «Nuget Package Manager» до последней сборки
У меня была такая же ошибка. Я решил ошибку, запустив Visual Studio 2013 в режиме «работать как администратор», как при использовании проектов веб-приложений, в которых задействован IIS Express.
Я думал, что тоже должен ответить на этот вопрос, так как я не видел свое решение, отправленное кем-то еще ... У меня была такая же ошибка при создании проекта, и, кроме того, мне также не удалось открыть веб-проекты (я получил сообщение об ошибке «Создание виртуального каталога localhost: xxxxx с ошибкой: невозможно получить доступ к метабазе IIS. У вас нет достаточных привилегий для доступа к веб-сайтам IIS на вашем компьютере»).
Как оказалось, я вошел в систему, используя мою учетную запись Active Directory, и срок действия пароля истек, и я изменил его на другой машине. Однако по какой-то причине эта машина (одна с Visual Studio на ней) продолжала разрешать мне входить в систему с моим старым паролем, даже если он истек (Windows 7 / x64).
в VPN моей компании, а затем запустил мой компьютер и, войдя в систему с моим новым паролем, я смог заставить его синхронизировать машину с новым паролем, и это решило обе мои проблемы. Мое лучшее предположение заключается в том, что при доступе к файлам Visual Studio выполняет некоторые проверки на разрешения, которые Windows Explorer не делает, и не очень информативен, когда что-то идет не так.
Вы пытались вручную установить NuGet для VS 2013?
У меня была аналогичная проблема, пока я не обнаружил, что установка VS 2013 по какой-то причине не установила менеджер пакетов NuGet. После того, как я установил его вручную, все работало нормально.
Я исправил эту ошибку, восстановив IIS express. Вы также можете переустановить IIS express.
Я использую Windows 8 x64, и я нашел решение, установив IIS Express 8 x64.
http://www.microsoft.com/en-us/download/ details.aspx? ID = 34679
У меня была одна и та же проблема, оказалось, что просто требуется перезапуск Visual Studio 2013. Моя лучшая догадка заключается в том, что это связано с проблемой управления версиями. Помощник по команде проверил изменения каким-то образом, не получив никаких указаний.
Я изменил разрешения, предоставив всем пользователям доступ к папке проектов - и перезагрузился - это исправило это для меня.
Удаление свойства Read Only из файлов IISExpress \ Config (applicationhost, aspnet, redirection) решило проблему для меня.
НАЙДЕННОЕ РЕШЕНИЕ
Перейдите в Панель управления -> Программы и компоненты -> Выберите версию Visual Studio и нажмите «Изменить»
1) Нажмите «ИЗМЕНИТЬ» и включите средства веб-разработчика
2) Включить инструменты веб-разработчика
3) Нажмите «Обновить»
Если вы связываетесь с любыми родными / COM-библиотеками, то измените цель сборки решения с AnyCpu
на x86
У меня была такая же проблема и я выбрал интернет для решений, потому что я не хотел переустанавливать VS 2013, только чтобы найти свое решение в чужой проблеме (о иронии).
У меня было это потому что мой applicationhost.config был пустым. Я понял эту часть, когда понял, что проект создан, просто не добавлен в решение. Итак, я попытался добавить проект вручную, и он утверждал, что в файле applicationhost.config произошла ошибка. Я иду посмотреть, и он был пуст. По какой-либо причине это останавливает работу IISexpress.exe. Так, я удалил файл applicationhost.config и попытался добавить проект к решению , и вуаля, все работает как шарм.
Еще одна причина и решение здесь.
Во-первых, я затрудняюсь, закрывая и открывая созданный проект (который существовал, хотя и с проблемами). При этом я получил более значимую ошибку, предполагающую, что C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ Web.Config был недопустимым XML.
Затем я заменил C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ Web.Config с копией C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ Web.Config.default, и проблема была решена.
Запустите Visual Studio как администратор, он решит эту проблему.
Я столкнулся с такой же проблемой, и этот трюк работал на мою. i go to file
C: \ Users \ user \ Documents \ IISExpress \ config \ applicationhost.config
, где я нашел один из тегов, отсутствует "& lt;" например
application path="/" applicationPool="Clr4IntegratedAppPool">
, я просто положил «& lt;» перед приложением вроде этого
<application path="/" applicationPool="Clr4IntegratedAppPool">
Это выглядит очень глупо, но считаю, что VS13 и VS13 Express работают отлично.
windows 7 x64, обновление VS 2013 4.
repair IIS Express исправить мою проблему http://www.microsoft.com/en-us/download/details.aspx?id= 34679
Если другие решения в этом потоке не помогли обновить графические драйверы. Я не получал ошибку, как описано выше, но я не мог щелкнуть параметры в окне создания нового проекта.
У меня была установлена удаленная и переустановленная профессиональная, премиум-модель и эксплойт VS 2013 несколько раз, но в
Я запускаю Windows 8.1 (с новым обновлением) и Radeon HD7850.
Я запускаю Windows 8.1 (с новым обновлением).После двух дней попытки решить эту проблему.
VS 2012 : Все хорошо (только отключенный IIS)
VS 2013: 0x80004005: Неопределенная ошибка
VS 2015: 0x80004005: Неопределенная ошибка
IIS Express через командную строку: Ошибка не удается найти «Мои документы \ IIS Express \ config \ applicationhost.config»
Решение:
Скопировано applicationhost.config И redirection.config из% programfiles% \ IIS Express \ config \ templates \ PersonalWebServer \ в папку «IIS Express \ config» в разделе Мои документы.
Убедитесь, что вы скопировали файл redirection.config, он НЕ предупредите об этом, просто сбой с ошибкой 0x80004005. Если вы хотите отслеживать входные / выходные данные файла.
Также запустите applicationhost.config в блокноте и убедитесь, что папка% IIS_BIN% \ AppServer \ empty_wwwroot WRITEABLE, скорее всего, эта папка находится под «% programfiles% \ IIS Express "и, следовательно, не записывается по умолчанию.
Также вполне возможно, что вам нужно установить% IIS_BIN% на«% programfiles% \ IIS Express ».
Итак:
Я запускаю Win 8.1 Pro (64 бит) с Visual Studio Express для веб-2013
. На моей машине были две проблемы:
Я получил ту же ошибку Unspecified при создании нового веб-приложения с MVC. Затем я попытался установить диспетчер пакетов NuGet для VS 2013 и получил немного более подробную информацию о том, что происходит:
11/13/2013 9:16:17 PM - Supported Products :
11/13/2013 9:16:17 PM - Microsoft.VisualStudio.Pro
11/13/2013 9:16:17 PM - Version : [12.0]
11/13/2013 9:16:17 PM - Microsoft.VisualStudio.IntegratedShell
11/13/2013 9:16:17 PM - Version : [12.0]
11/13/2013 9:16:17 PM - Microsoft.VisualStudio.VWDExpress
11/13/2013 9:16:17 PM - Version : [12.0]
11/13/2013 9:16:17 PM - Microsoft.VisualStudio.VPDExpress
11/13/2013 9:16:17 PM - Version : [12.0]
11/13/2013 9:16:17 PM - Microsoft.VisualStudio.VSWinExpress
11/13/2013 9:16:17 PM - Version : [12.0]
11/13/2013 9:16:17 PM - Microsoft.VisualStudio.VSWinDesktopExpress
11/13/2013 9:16:17 PM - Version : [12.0]
11/13/2013 9:16:17 PM -
11/13/2013 9:16:17 PM - References :
11/13/2013 9:16:17 PM -
11/13/2013 9:16:17 PM - Searching for applicable products...
11/13/2013 9:16:23 PM - Failed to initialize settings for Isolated Shell C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\ssms.exe: The network path was not found. (Exception from HRESULT: 0x80070035)
11/13/2013 9:16:23 PM - Found installed product - Microsoft Visual Studio 2010 Ultimate
11/13/2013 9:16:23 PM - Found installed product - Microsoft Visual Studio Ultimate 2012
11/13/2013 9:16:23 PM - Found installed product - Microsoft Visual Studio Premium 2012
11/13/2013 9:16:23 PM - Found installed product - Microsoft Visual Studio Professional 2012
11/13/2013 9:16:23 PM - Found installed product - Microsoft Visual Studio 2012 Shell (Integrated)
11/13/2013 9:16:23 PM - Found installed product - Microsoft Visual Studio Premium 2013
11/13/2013 9:16:24 PM - System.IO.FileNotFoundException: The network path was not found. (Exception from HRESULT: 0x80070035)
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at Microsoft.VisualStudio.Settings.ExternalSettingsManager.GetScopePaths(String applicationPath, String suffixOrName, String vsVersion, Boolean isLogged, Boolean isForIsolatedApplication)
at Microsoft.VisualStudio.Settings.ExternalSettingsManager.CreateForApplication(String applicationPath)
at VSIXInstaller.App.GetExtensionManager(SupportedVSSKU sku)
at VSIXInstaller.App.GetExtensionManagerForApplicableSKU(SupportedVSSKU supportedSKU, IInstallableExtension installableExtension, List`1 applicableSKUs)
at VSIXInstaller.App.InitializeInstall()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
Я попытался удалить VS 2010 (так как я больше не использую его) с не повезло. Затем я подключился к своей работе VPN, а затем, открыв VS2013, получил сообщение о том, что он искал мой файл настроек в нечетном месте:
C: \ Users \ Zach \\\ SomeNetworkServer \ something \ something
Я обновил путь к настройкам в меню «Сервис»> «Параметры»> «Параметры импорта и экспорта» (который фактически был тем же самым нечетным путем), и теперь как NuGet, так и VS2013 работают корректно.
Я понятия не имею, где он получил этот путь, но я определенно видел другое поведение, когда я был на VPN моей работы, а не нет.