Почему “Система не может найти, что пакетная маркировка, указанная”, брошена, даже если маркировка существует?

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

56
задан naXa 11 April 2018 в 14:53
поделиться

5 ответов

На самом деле Вам нужны 2 условия для этого для случая:

  • пакетный файл не должен использовать окончания строки CRLF
  • маркировка, к которой Вы переходите, должен охватить границу блока (в противоположность и: закончите маркировку, которая является просто ярлыком до конца Вашего сценария)

, Посмотрите. система не может найти, что пакетная маркировка определила и Batch-as-batch-can!

61
ответ дан VonC 26 November 2019 в 17:14
поделиться

Если пакетный файл имеет окончания строки Unix (разделители строки), это может иногда происходить.

Всего unix2dos это и проблема должно быть решено.

9
ответ дан naXa 26 November 2019 в 17:14
поделиться

Необходимо также удостовериться, что при вызове других сценариев Вы используете ВЫЗОВ, вместо того, чтобы назвать их в среде вызывающей стороны.

5
ответ дан 26 November 2019 в 17:14
поделиться

в: func, если это называет программу кроме команды DOS, пытаются использовать "вызов.." вместо "...."

-1
ответ дан 26 November 2019 в 17:14
поделиться

Вот проблема и как ее решить. Проблема - это ошибка или особенность программы DOS batch cmd. Сначала четкая постановка проблемы. Если у вас есть пакетный файл DOS с целевыми метками типа ":dothis", и в конце метки нет пробела, то пакетный файл не будет работать, если окончания строк являются окончаниями строк UNIX. Это означает, что вам придется запустить unix2dos на файле, прежде чем вы сможете его использовать.

Основная причина заключается в том, что процессор командной строки DOS (shell-программа) воспринимает символ конца строки UNIX как часть метки. Поскольку часть go to никогда не использует этот символ в качестве метки, она никогда не будет найдена, так как такой метки действительно не существует. Решение состоит в том, чтобы поместить дополнительный пробел в конце каждой целевой метки, а еще лучше в каждой строке. Теперь конец строки в UNIX не используется, так как пробел выступает в качестве разделителя, и все работает.

11
ответ дан 26 November 2019 в 17:14
поделиться
Другие вопросы по тегам:

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