Spec-Zone .ru
спецификации, руководства, описания, API
|
Распространенная ошибка обменивается сообщениями на Microsoft Windows Systems
'javac' is not recognized as an internal or external command, operable program or batch file
Если Вы получаете эту ошибку, Windows не может найти компилятор (javac
).
Вот один способ сказать Windows, где найти javac
. Предположите, что Вы устанавливали JDK в C:\jdk1.7.0
. При подсказке Вы ввели бы следующую команду, и нажатие Войдите:
C:\jdk1.7.0\bin\javac HelloWorldApp.java
Если Вы выбираете эту опцию, необходимо предшествовать Вашему javac
и java
команды с C:\jdk1.7.0\bin\
каждый раз Вы компилируете или выполняете программу. Чтобы избежать этого дополнительного ввода, консультируйтесь с разделом, Обновляющим переменную ПУТИ в JDK 7 инструкций по установке.
Class names, 'HelloWorldApp', are only accepted if annotation processing is explicitly requested
Если Вы получаете эту ошибку, Вы забыли включать .java
снабдите суффиксом, компилируя программу. Помните, команда javac HelloWorldApp.java
нет javac HelloWorldApp
.
Распространенная ошибка обменивается сообщениями на Системах UNIX
javac: Command not found
Если Вы получаете эту ошибку, UNIX не может найти компилятор, javac
.
Вот один способ сказать UNIX, где найти javac
. Предположите, что Вы устанавливали JDK в /usr/local/jdk1.7.0
. При подсказке Вы ввели бы следующую команду и Возврат нажатия:
/usr/local/jdk1.7.0/javac HelloWorldApp.java
Отметьте: Если Вы выбираете эту опцию, каждый раз, когда Вы компилируете или выполняете программу, необходимо предшествовать Вашему javac
и java
команды с /usr/local/jdk1.7.0/
. Чтобы избежать этого дополнительного ввода, Вы могли добавить эту информацию к своей переменной ПУТИ. Шаги для того, чтобы сделать так изменятся, в зависимости от которой оболочки Вы являетесь в настоящий момент рабочими.
Class names, 'HelloWorldApp', are only accepted if annotation processing is explicitly requested
Если Вы получаете эту ошибку, Вы забыли включать .java
снабдите суффиксом, компилируя программу. Помните, команда javac HelloWorldApp.java
нет javac HelloWorldApp
.
Синтаксические ошибки (Все Платформы)
Если Вы вводите часть с опечаткой программы, компилятор может выпустить синтаксическую ошибку. Сообщение обычно выводит на экран тип ошибки, номер строки, где ошибка была обнаружена, код той строки, и позиция ошибки в пределах кода. Вот ошибка, вызванная, опуская точку с запятой (;
) в конце оператора:
testing.java:14: `;' expected. System.out.println("Input has " + count + " chars.") ^ 1 error
Иногда компилятор не может предположить Ваше намерение и печатает запутывающее сообщение об ошибке или многократные сообщения об ошибках, если ошибка располагает каскадом более чем несколько строк. Например, следующий фрагмент кода опускает точку с запятой (;
) от полужирной строки:
while (System.in.read() != -1) count++ System.out.println("Input has " + count + " chars.");
Обрабатывая этот код, компилятор выпускает два сообщения об ошибках:
testing.java:13: Invalid type expression. count++ ^ testing.java:14: Invalid declaration. System.out.println("Input has " + count + " chars."); ^ 2 errors
Компилятор выпускает два сообщения об ошибках потому что после того, как он обрабатывает count++
, состояние компилятора указывает, что находится в середине выражения. Без точки с запятой у компилятора нет никакого способа знать, что оператор полон.
Если Вы видите какие-либо ошибки компилятора, то Ваша программа успешно не компилировала, и компилятор не создавал a .class
файл. Тщательно проверьте программу, фиксируйте любые ошибки, которые Вы обнаруживаете, и попробовали еще раз.
Семантические Ошибки
В дополнение к проверке, что Ваша программа синтаксически корректна, проверки компилятора на другую основную правильность. Например, компилятор предупреждает Вас каждый раз, что Вы используете переменную, которая не была инициализирована:
testing.java:13: Variable count may not have been initialized. count++ ^ testing.java:14: Variable count may not have been initialized. System.out.println("Input has " + count + " chars."); ^ 2 errors
Снова, Ваша программа успешно не компилировала, и компилятор не создавал a .class
файл. Фиксируйте ошибку и попробуйте еще раз.
Сообщения об ошибках на Microsoft Windows Systems
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
Если Вы получаете эту ошибку, java
не может найти Ваш файл байт-кода, HelloWorldApp.class
.
Одно из мест java
попытки найти Ваш .class
файл является Вашим текущим каталогом. Так если Ваш .class
файл находится в C:\java
, следует изменить свой текущий каталог на это. Чтобы изменить Ваш каталог, введите следующую команду при подсказке, и нажатие Войдите:
cd c:\java
Подсказка должна измениться на C:\java>
. Если Вы входите dir
при подсказке следует видеть Ваш .java
и .class
файлы. Теперь войдите java HelloWorldApp
снова.
Если у Вас все еще есть проблемы, Вам, возможно, придется заменить Вашу переменную ПУТИ К КЛАССУ. Чтобы видеть, необходимо ли это, попытайтесь ударить путь к классу со следующей командой.
set CLASSPATH=
Теперь войдите java HelloWorldApp
снова. Если программа работает теперь, необходимо заменить свою переменную ПУТИ К КЛАССУ. Чтобы установить эту переменную, консультируйтесь с
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp/class
Частая ошибка, сделанная программистами новичка, состоит в том, чтобы попытаться работать java
средство запуска на .class
файл, который создавался компилятором. Например, Вы получите эту ошибку, если Вы попытаетесь выполнить свою программу с java HelloWorldApp.class
вместо java HelloWorldApp
. Помните, параметром является имя class, который Вы хотите использовать, не имя файла.
Exception in thread "main" java.lang.NoSuchMethodError: main
У Java VM требует, чтобы class Вы выполнились с этим, есть a main
метод, в котором можно начать выполнение Вашего приложения. main
метод подробно.
Сообщения об ошибках на Системах UNIX
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
Если Вы получаете эту ошибку, java
не может найти Ваш файл байт-кода, HelloWorldApp.class
.
Одно из мест java
попытки найти Ваш файл байт-кода являются Вашим текущим каталогом. Так, например, если Ваш файл байт-кода находится в /home/jdoe/java
, следует изменить свой текущий каталог на это. Чтобы изменить Ваш каталог, введите следующую команду при Возврате нажатия и подсказке:
cd /home/jdoe/java
Если Вы входите pwd
при подсказке следует видеть /home/jdoe/java
. Если Вы входите ls
при подсказке следует видеть Ваш .java
и .class
файлы. Теперь войдите java HelloWorldApp
снова.
Если у Вас все еще есть проблемы, Вам, возможно, придется изменить Вашу переменную окружения ПУТИ К КЛАССУ. Чтобы видеть, необходимо ли это, попытайтесь ударить путь к классу со следующей командой.
unset CLASSPATH
Теперь войдите java HelloWorldApp
снова. Если программа работает теперь, необходимо заменить свою переменную ПУТИ К КЛАССУ тем же самым способом как переменная ПУТИ выше.
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp/class
Частая ошибка, сделанная программистами новичка, состоит в том, чтобы попытаться работать java
средство запуска на .class
файл, который создавался компилятором. Например, Вы получите эту ошибку, если Вы попытаетесь выполнить свою программу с java HelloWorldApp.class
вместо java HelloWorldApp
. Помните, параметром является имя class, который Вы хотите использовать, не имя файла.
Exception in thread "main" java.lang.NoSuchMethodError: main
У Java VM требует, чтобы class Вы выполнились с этим, есть a main
метод, в котором можно начать выполнение Вашего приложения. Более близкий Взгляд на "Привет Мир!" Приложение обсуждает main
метод подробно.