Написание чистого приложения Java-сервера для Heroku с использованием Maven. Подключение к базе данных Postgres Heroku.
Все работает при запуске локально, используя конфигурацию IntelliJ для запуска приложений Java, указав URL-адрес Heroku DB в качестве переменной среды. Приложение работает, и я могу подключиться к БД.
Примечание: Я обнаружил, что IntelliJ как-то автоматически использует свой собственный драйвер Postgres, тот, который я указал в pom.xml игнорируется, очевидно
Однако, когда я развернуть приложение, я получаю следующую ошибку в мой Heroku войти, как только я подключаюсь к БД:
java.lang.ClassNotFoundException: org.postgresql.Driver
Heroku не может найти Postgres Драйвер JDBC
Я последовал за учебник Heroku, но когда я увидел, что нет никакой связи, я ставлю
Class.forName("org.postgresql.Driver");
до
String dbUrl = System.getenv("JDBC_DATABASE_URL");
return DriverManager.getConnection(dbUrl);
только для того, чтобы убедиться, что водитель найден. Если я удалю Class.forName()...
, проверьте, у меня есть no suitable driver found for
[my db url] Ошибка.
Относительно последней ошибки, я попытался как JDBC_DATABASE_URL и DATABASE_URL окр ПОСРЕДНИКОВ, и даже построения URL БД «вручную», с sslmode=require
и т.д., но все же не повезло.
Моего pom.xml имеет modelVersion, идентификатор_группы, артефакт, версия и имя указаны, а также:
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1208</version>
</dependency>
</dependencies>
Моих PROCFILE, что Heroku использует для запуска приложения, выглядят следующим образом:
web: java $JAVA_OPTS -cp target/classes:"target/dependency/*" Main --port $PORT
Когда я развертываю приложение, я не получаю ошибок, сборка выполнена успешно.
Что может быть причиной отказа водителя? Я что-то забываю в pom.xml или Procfile или что-то еще?
Чтобы уточнить, когда вы добавляете вызов 'Class.forName', работает ли соединение DB? – codefinger
локально, 'forName()' ловит драйвер jdbc IntelliJ и работает соединение. В Heroku 'forName()' запускает 'ClassNotFoundException' – kit
. Можете ли вы проверить, находится ли файл jQuery postgres в вашем блоке Heroku, запуская' heroku run ls target/dependency/'? – codefinger