Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Если это - простая единственная исходная программа:
make foo
, где исходный файл является foo.c или foo.cpp, и т.д.
, Вам даже не нужен make-файл. Сделайте имеет достаточно встроенных правил встроить Ваш исходный файл в исполняемый файл того же имени, минус расширение.
Выполнение исполняемого файла, просто созданного, совпадает с запущением любой программы - но необходимо будет чаще всего указывать путь к исполняемому файлу, поскольку оболочка будет только искать то, что находится в $PATH
для нахождения исполняемых файлов, и чаще всего который не включает текущий каталог (.
).
Так для выполнения созданного исполняемого файла foo
:
./foo
Используйте makefile
. Даже для очень маленького (= один файл) проекты, усилие, вероятно, стоит того, потому что у Вас может быть несколько наборов параметров компилятора для тестирования вещей. Отладка и развертывание работает намного легче этот путь.
Read make
руководство , это кажется довольно длинным на первый взгляд, но большинство разделов можно просто скользить. В целом, это взяло меня несколько часов и сделало меня намного более продуктивным.
Принятие текущего каталога не находится в пути, синтаксис ./[name of the program]
.
, Например ./a.out
Все выполнение приложений в Unix (Linux, Mac OS X, AIX, и т.д.), среда зависит от исполняемого пути поиска.
можно отобразить этот путь в терминале с этой командой:
$PATH эха
На Mac OS X (по умолчанию) это отобразится, следующее двоеточие разделило путь поиска:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
, Таким образом, любой исполняемый файл в перечисленных каталогах может выполненным только путем ввода на их имя. Например:
кошка mytextfile.txt
Это выполняет /bin/cat
и отображает mytextfile.txt к терминалу.
Для выполнения любой другой команды, которая не находится в исполняемом пути поиска, требует, чтобы Вы квалифицировали путь к исполняемому файлу. Поэтому скажите, что у меня был исполняемый файл под названием MyProgram в моем корневом каталоге на Mac OS X я могу полностью определить его как так:
/Users/oliver/MyProgram
, Если Вы находитесь в месте, которое является около программы, которую Вы хотели выполнить, можно квалифицировать имя с частичным путем. Например, если MyProgram
был в каталоге /Users/oliver/MyProject
я, и я был в своем корневом каталоге, я могу квалифицировать исполняемое имя как это и иметь его, выполнитесь:
MyProject/MyProgram
Или говорит, что я был в каталоге /Users/oliver/MyProject2
, и я хотел выполниться /Users/oliver/MyProject/MyProgram
, я могу использовать относительный путь как это, для выполнения его:
../MyProject/MyProgram
Так же, если я нахожусь в том же каталоге как MyProgram
, я должен использовать относительный путь "текущего каталога". Текущий каталог, в котором Вы находитесь, является символом точки, сопровождаемым наклонной чертой. Например:
./MyProgram
Для определения, какой каталог Вы использующиеся в настоящее время эти pwd
команда.
, Если Вы обычно кладете программы на место на Вашем жестком диске, который Вы хотите выполнить, не имея необходимость квалифицировать их имена. Например, если у Вас есть каталог "мусорного ведра" в Вашем корневом каталоге для регулярно используемых сценариев оболочки других программ, может быть мудро изменить Ваш исполняемый путь поиска.
Это может быть, делает легко или созданием или редактированием существующего .bash_profile
файл в Вашем корневом каталоге и добавлении строк:
#!/bin/sh
export PATH=$PATH:~/bin
Здесь тильда (~) символ используется в качестве ярлыка для/Users/oliver. Также обратите внимание что удар хеша (#!) строка должна быть первой строкой файла (если это уже не существует). Обратите внимание также, что эта техника требует, чтобы Ваша оболочка входа в систему была ударом (значение по умолчанию на Mac OS X и большинство дистрибутивов Linux). Также обратите внимание, что, если Вы хотите, чтобы Ваши программы, установленные в [1 110], использовались в предпочтении к системным исполняемым файлам Ваш, должен переупорядочить оператор экспорта следующим образом:
export PATH=~/bin:$PATH
Добавьте следующее для получения лучших предупреждений, Вы не будете сожалеть о нем. Если Вы можете, скомпилировать МУДРЫЙ (предупреждение является ошибкой)
- Wall -pedantic -Weffc++ -Werror