2016-08-19 3 views
0

Я использую файл свойств для жесткого кодирования списка допустимых имен пользователей в Java webapp.Файл свойств Heroku

Файл помещается в том же пакете, что и класс (который является распорки действие) и читается следующим образом:

Properties prop = new Properties(); 
InputStream input = null; 
input = getClass().getResourceAsStream("login.properties"); 
prop.load(input); 
String[] aprovedUsers = prop.getProperty("approvedUsers").split(","); 

Это хорошо работает, когда я тестирую его локально (в сервер Apache работает как localhost), но когда я развертываю webapp в heroku, кажется, что он не может прочитать файл propoerties, поскольку input - это null.

Есть ли особое соображение, которое необходимо учитывать при использовании файлов свойств в heroku?

EDIT: Мой PROCFILE является

web: java $JAVA_OPTS -jar target/dependency/jetty-runner.jar --port $PORT target/*.war 

Я использую Jetty в качестве контейнера.

+0

Вы можете поделиться своим «Procfile»? – codefinger

+0

Я добавил 'Procfile' как издание на вопрос –

+0

Вы используете его локально с' heroku local'? Можете ли вы воспроизвести ошибку таким образом? – codefinger

ответ

0

Ваши local classpath и heroku classpath отличаются. Обратитесь к ClassLoader.getSystemResource, чтобы найти файл.

FileInputStream stream = new FileInputStream(ClassLoader.getSystemResource("login.properties").getPath()); 
+0

Спасибо за ответ. Кажется, что он не работает локально (на Apache как localhost). Ошибка: «SEVERE: Исключение произошло во время запроса обработки: null java.lang.NullPointerException' –

+0

@JoseOspina, не могли бы вы поделиться путем, где находится' login.properties'? Это в java/resources? Это в «WEB-INF»? Не могли бы вы проверить * .war, он содержит 'login.properties' где-нибудь? –

+0

Файл копируется после построения затмения в '\ target \ classes \ coproject \ cpweb \ actions \ json'. Прежде чем он будет создан, он находится в 'src \ main \ java \ coproject \ cpweb \ actions \ json' –