Проблемы при установке схемы "sqlj" с использованием pljava в postgres 9.3 для Windows 7
Я пытаюсь установить Postgres 9.3.16 на Windows7 (64-разрядная операционная система). При установке схемы sqlj с помощью pljava и следующей команды:
java -cp "C:\Softwares\PostgreSQL\9.3\share\pljava\deploy.jar;C:\Softwares\pgJDBC\postgresql-42.0.0.jar" org.postgresql.pljava.deploy.Deployer -install -user postgres -database sampledb -password xyz
Я получил этот JDBC-файл из драйвера JDBC для стилевого компоновщика.
Я получил эту ошибку при запуске вышеуказанной команды с командной строкой:
org.postgresql.util.PSQLException: ERROR: could not load library "C:/Softwares/PostgreSQL/9.3/lib/pljava.dll": The specified module could not be found.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2412)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2125)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:297)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:354)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:301)
at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:287)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:264)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:260)
at org.postgresql.pljava.deploy.Deployer.initJavaHandlers(Deployer.java:485)
at org.postgresql.pljava.deploy.Deployer.main(Deployer.java:275)
Также моя переменная Path:
C:\Windows\System32\WindowsPowerShell;C:\Windows;C:\Windows\System32\wbem;C:\Softwares\PostgreSQL\9.3\share;C:\Softwares\PostgreSQL\9.3\lib;C:\Windows\System32;C:\Softwares\PostgreSQL\9.3\bin;C:\Program Files
Java\jdk1.8.0_121\bin;C:\Program Files\Java\jdk1.8.0_121\jre\bin; C:\Program Files\Java\jdk1.8.0_121\jre\bin\server;C:\Program Files\Intel\iCLS Client;C:\Program Files (x86)\Intel\iCLS Client;C:\Program Files
Internet Explorer;C:\Program Files\Java\jdk1.8.0_121\bin;C:\Program Files\Java\jdk1.8.0_121\jre\bin; C:\Program Files\Java\jdk1.8.0_121\jre\bin\server; C:\Program Files\Java\jdk1.8.0_121; C:\Program Files\Jav
\jdk1.8.0_121\jre
Я использовал обходчик зависимостей, и он сообщает об отсутствии следующих файлов:
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
Я пытался сделать все возможное, но не смог решить. Однако я заметил, что Windows использует обратную косую черту '\' в качестве разделителя пути, а в сообщении об ошибке путь, который она пытается найти, использует прямую косую черту '/' .
Может ли это быть проблемой? Может ли кто-нибудь помочь мне в решении этой проблемы?
2 ответа
После недолгих попыток, наконец-то это сработало со следующим исправлением:
Я добавил мой путь pljava.dll к моей переменной PATH, т.е.
C: \ Softwares \ PostgreSQL \ 9.3 \ share в переменной PATH.
Кроме того, я изменил и добавил следующую переменную в свой postgresql.conf:
dynamic_library_path = 'C: \ Softwares \ PostgreSQL \ 9.3 \ доля \pljava'
После этого моя sqlj схема была заполнена нормально.
Интересно, какую версию PL/Java вы пытались установить? Старая процедура с Deployer
немного устарел. У вас есть PostgreSQL 9.3.x, поэтому он имеет CREATE EXTENSION
команда. Если вы соберете или получите jar PL/Java 1.5.0, все, что вам нужно сделать, это запустить java -jar
jarname)... просто убедитесь, что каталог, содержащий pg_config
на вашем PATH
когда вы это сделаете, установщик фляги выяснит остальное. В psql
тогда просто скажи CREATE EXTENSION pljava;
Возможно, вам придется установить переменную, чтобы указать, где установлена ваша среда выполнения Java. В инструкции по установке есть детали.