Mybatis сталкивается с «Причиной: java.net.UnknownHostException: localhost» при запуске, почему? - PullRequest
0 голосов
/ 04 ноября 2018

Я пробую простой пример кода mybatis на Mac, который подключается к локальному серверу postgresql. Я тестирую соединение с сервером с помощью собственного тестового кода java jdbc, все работает найти.

Тогда мой проект Intellij mybatis maven настроен с использованием "resources / postgres.properties"

jdbc.driver="org.postgresql.Driver"
jdbc.url="jdbc:postgresql://localhost:5432/postgres"
jdbc.username="postgres"
jdbc.password="password"

Это конфигурация, которая работала для моего тестового кода jdbc, и мой "resources / mybatis.cfg.xml" имеет:

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <property name="driver" value="org.postgresql.Driver" />
            <property name="url" value="jdbc:postgresql:/localhost:5432/postgres" />
            <property name="username" value="postgres" />
            <property name="password" value="password" />
        </dataSource>
    </environment>
</environments>

Затем в моей программе mybatis при вызове функции mapper она выдает org.apache.ibatis.exceptions.PersistenceException:

Caused by: java.net.UnknownHostException: localhost
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.postgresql.core.PGStream.<init>(PGStream.java:70)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
... 25 more

Я искал некоторое время, все говорят, что это потому, что в моем / etc / hosts нет конфигурации localhost. Но на самом деле у меня есть эти 2 строки:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost localhost.localdomain localhost6 localhost6.localdomain6

В моей среде intellij я уже выполнил "Структура проекта-> библиотеки->", чтобы добавить свой драйвер postgre в мой проект.

Так что, похоже, это не проблема конфигурации localhost. Откуда могло возникнуть исключение, как я могу устранить неполадки и решить их?

Спасибо!

1 Ответ

0 голосов
/ 04 ноября 2018

Драйвер Postgres добавлен в classpath (класс org.postgresql.core.PGStream, который появляется в трассировке стека, принадлежит драйверу postgres, так что он явно там).

Теперь это может быть проблемой nework, в качестве первого шага я предлагаю проверить вашу программу даже без установки mybatis / postgres

Попробуйте открыть URL-соединение с localhost и некоторым портом, который обязательно открыт) и посмотрите, что происходит прямо из "основного" метода вашего приложения.

Вы также можете попробовать использовать 127.0.0.1 вместо "localhost"

Если вы видите, что локальный хост недоступен, то это наверняка проблема конфигурации, в противном случае возможны и другие вещи.

Из вашего описания это действительно звучит как проблема с сетью / конфигурацией, но так как это вопрос «устранения неполадок», я просто пытаюсь предложить идеи «устранения неполадок» ...

...