Java - Spring Boot: невозможно создать qr при развертывании на heroku [duplicate]

Два наиболее распространенных способа доступа к свойствам в JavaScript - это точка и квадратные скобки. И value.x and value[x] получают доступ к свойству по значению, но не обязательно к одному и тому же свойству. Разница заключается в том, как интерпретируется х. При использовании точки точка после точки должна быть допустимым именем переменной, и она непосредственно называет это свойство. При использовании квадратных скобок выражение между скобками оценивается для получения имени свойства. В то время как value.x получает свойство value с именем «x», значение [x] пытается оценить выражение x и использует результат как имя свойства.

Итак, если вы знаете, что интересующее вас свойство в называется «длина», вы говорите value.length. Если вы хотите извлечь свойство, названное значением, хранящимся в переменной i, вы скажете value[i]. И поскольку имена свойств могут быть любой строкой, если вы хотите получить доступ к свойству с именем “2” или “John Doe”, вы должны использовать квадратные скобки: value[2] or value["John Doe"]. Это возможно, даже если вы знаете точное имя свойства заранее, потому что ни “2” nor “John Doe” не является допустимым именем переменной, и поэтому к нему нельзя получить доступ через точечную нотацию.

В случае массивов

Элементы массива хранятся в свойствах. Поскольку имена этих свойств являются числами, и нам часто нужно получить их имя от переменной, мы должны использовать синтаксис скобки для доступа к ним. Свойство length массива сообщает нам, сколько элементов оно содержит. Это имя свойства является допустимым именем переменной, и мы знаем его имя заранее, поэтому, чтобы найти длину массива, вы обычно пишете array.length, потому что это легче записать, чем array["length"].

66
задан Veera 27 April 2009 в 13:06
поделиться

8 ответов

ClassLoader.getResourceAsStream() .

Как указано в комментарии ниже, если вы находитесь в среде с несколькими ClassLoader (например, модульное тестирование, webapps и т. д.), вам может понадобиться использовать Thread.currentThread().getContextClassLoader(). См. http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream/2308388#comment21307593_2308388 .

81
ответ дан charleslparker 24 August 2018 в 08:23
поделиться

Это зависит от того, где именно находится файл XML. Это в папке с источниками (в «пакете по умолчанию» или «в корне») или в той же папке, что и класс?

In Для прежнего случая вы должны использовать «/file.xml» (примечание ведущий косой чертой), чтобы найти файл, и не имеет значения, какой класс вы используете, чтобы попытаться найти его.

Если XML-файл находится рядом с некоторым классом, SomeClass.class.getResourceAsStream() с только именем файла является путь.

12
ответ дан Aaron Digulla 24 August 2018 в 08:23
поделиться

ClassLoader.class.getResourceAsStream("/path/to/your/xml") и убедитесь, что ваш скрипт компиляции скопирует XML-файл туда, где находится ваш CLASSPATH.

11
ответ дан Adriaan Koster 24 August 2018 в 08:23
поделиться

По умолчанию каждый ресурс, добавленный в путь к классам в веб-приложении, копируется в папку WEB-INF / classes в развернутой войне.

вы можете управлять этим при разработке приложение в eclipse через:

Щелкните правой кнопкой мыши проект -> свойства -> путь сборки Java -> вкладка источника -> папка с выходом по умолчанию

в вашем сервлете , вы можете получить доступ к ресурсу, предварительно указав свой путь на «/», который указывает на WEB-INF / classes .

Например, для доступа к pdf-sample .pdf в разделе WEB-INF / classes , вы можете использовать следующее:

getClass().getResourceAsStream("/pdf-sample.pdf")

В этом учебнике очень хорошо объясняется возможное способы чтения файла ресурсов из пути к классам в приложении Java, его стоит прочитать.

0
ответ дан Hussein Terek 24 August 2018 в 08:23
поделиться
[Д0] someClassWithinYourSourceDir.getClass () getResourceAsStream ();.

6
ответ дан mP. 24 August 2018 в 08:23
поделиться

Я пробовал предлагаемое решение, и косая черта в имени файла не работала для меня, например: ... (). getResourceAsStream ("/ my.properties"); null был возвращен

Удаление слэша работало: .... getResourceAsStream ("my.properties");

Вот от doc API: перед делегированием из данного имени ресурса создается имя абсолютного ресурса с использованием этого алгоритма:

If the name begins with a '/' ('\u002f'), then the absolute name of the resource is the portion of the name following the '/'.
Otherwise, the absolute name is of the following form:

    modified_package_name/name 

Where the modified_package_name is the package name of this object with '/' substituted for '.' ('\u002e'). 
0
ответ дан Striker 24 August 2018 в 08:23
поделиться
  • 1
    В моем случае я получал null без /. Добавление косой черты работало для меня. Должна быть какая-то другая разница между @ hussein-terek и моей настройкой и настройкой. – Ajoy Bhatia 1 June 2018 в 20:13
ClassLoader.class.getResourceAsStream("/path/file.ext");
28
ответ дан thkala 24 August 2018 в 08:23
поделиться
  • 1
    но если при развертывании веб-приложения в tomcat этот способ получит ошибку: java.lang.NullPointerException: null , а самый простой способ - new ClassPathResource("/path/to/your/file").getInputStream() – zhuguowei 8 March 2018 в 12:12

Некоторые параметры «getResourceAsStream ()» в этом ответе не сработали для меня, но это было сделано:

SomeClassWithinYourSourceDir.class.getClassLoader (). getResourceAsStream ("yourResource"); / g1]

4
ответ дан user64141 24 August 2018 в 08:23
поделиться
Другие вопросы по тегам:

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