Estoy tratando de instalar Postgres 9.3.16 en Windows7 (sistema operativo de 64 bits). Al instalar el esquema sqlj usando pljava y el siguiente comando:
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 xyzObtuve este jar JDBC de la descarga del controlador JDBC de stackbuilder.
Recibí este error al ejecutar el comando anterior con el símbolo del sistema:
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)También mi variable Path es:
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\jreHe usado Dependency Walker e informa que faltan los siguientes archivos:
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.DLLHe intentado hacer todo lo posible pero no he podido solucionarlo. Sin embargo, noté que Windows usa la barra invertida '\' como separador de ruta, mientras que en el mensaje de error, la ruta que está tratando de buscar, usa la barra diagonal '/'.
¿Podría ser éste el problema? ¿Alguien puede ayudarme a resolver esto?
Después de luchar por un tiempo, finalmente funcionó con la siguiente solución:
Agregué mi ruta pljava.dll a mi variable PATH, es decir
C:\Softwares\PostgreSQL\9.3\share en la variable PATH.
Además, modifiqué y agregué la siguiente variable en mi postgresql.conf:
dynamic_library_path='C:\Software\PostgreSQL\9.3\share\pljava'
Después de eso, mi esquema sqlj se completó normalmente.
Me pregunto qué versión de PL/Java estabas tratando de instalar. El antiguo procedimiento con Deployer está un poco obsoleto. Tiene PostgreSQL 9.3.x, por lo que tiene el comando CREATE EXTENSION . Si compila u obtiene un jar de PL/Java 1.5.0, todo lo que debe hacer es ejecutarlo (con java -jar jarname ) ... solo asegúrese de que el directorio que contiene pg_config esté en su PATH cuando lo haga, el instalador de jar se da cuenta del resto. Entonces, en psql , simplemente diga CREATE EXTENSION pljava;
Es posible que deba establecer una variable para decirle dónde está instalado su tiempo de ejecución de Java. Las instrucciones de instalación tienen los detalles.