在 windows 7 的 postgres 9.3 中使用 pljava 安装 "sqlj" 模式时出现问题
Issues while installing "sqlj" schema using pljava in postgres 9.3 for windows 7
我正在尝试在 Windows7(64 位操作系统)上安装 Postgres 9.3.16。使用 pljava 和以下命令安装 sqlj 模式时:
java -cp "C:\Softwares\PostgreSQL.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
我从 stackbuilder JDBC 驱动程序下载中得到了这个 JDBC jar。
我在 运行 使用命令提示符执行上述命令时遇到此错误:
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.3\share;C:\Softwares\PostgreSQL.3\lib;C:\Windows\System32;C:\Softwares\PostgreSQL.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
我使用了 dependency walker,它报告缺少以下文件:
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 使用反斜杠 '\' 作为路径分隔符,而在错误消息中它试图搜索的路径使用正斜杠 '/' .
这可能是问题所在吗?谁能帮我解决这个问题?
经过一段时间的努力,终于解决了以下问题:
我将 pljava.dll 路径添加到我的 PATH 变量,即
C:\Softwares\PostgreSQL.3\share 在 PATH 变量中.
此外,我在 postgresql.conf 中修改并添加了以下变量:
dynamic_library_path='C:\Softwares\PostgreSQL.3\share\pljava'
之后我的 sqlj 模式被正常填充。
我想知道您尝试安装的 PL/Java 是哪个版本? Deployer
的旧过程有点过时了。你有 PostgreSQL 9.3.x 所以它有 CREATE EXTENSION
命令。如果您构建或获得一个 PL/Java 1.5.0 的 jar,您所做的就是 运行 那(使用 java -jar
jarname)...只是当你这样做时,确保包含 pg_config
的目录在你的 PATH
上,jar 安装程序会找出其余部分。在 psql
中,只需说 CREATE EXTENSION pljava;
您可能需要设置一个变量来告诉它您的 Java 运行time 安装在哪里。 installation instructions 有详细信息。
我正在尝试在 Windows7(64 位操作系统)上安装 Postgres 9.3.16。使用 pljava 和以下命令安装 sqlj 模式时:
java -cp "C:\Softwares\PostgreSQL.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
我从 stackbuilder JDBC 驱动程序下载中得到了这个 JDBC jar。
我在 运行 使用命令提示符执行上述命令时遇到此错误:
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.3\share;C:\Softwares\PostgreSQL.3\lib;C:\Windows\System32;C:\Softwares\PostgreSQL.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
我使用了 dependency walker,它报告缺少以下文件:
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 使用反斜杠 '\' 作为路径分隔符,而在错误消息中它试图搜索的路径使用正斜杠 '/' .
这可能是问题所在吗?谁能帮我解决这个问题?
经过一段时间的努力,终于解决了以下问题:
我将 pljava.dll 路径添加到我的 PATH 变量,即
C:\Softwares\PostgreSQL.3\share 在 PATH 变量中.
此外,我在 postgresql.conf 中修改并添加了以下变量:
dynamic_library_path='C:\Softwares\PostgreSQL.3\share\pljava'
之后我的 sqlj 模式被正常填充。
我想知道您尝试安装的 PL/Java 是哪个版本? Deployer
的旧过程有点过时了。你有 PostgreSQL 9.3.x 所以它有 CREATE EXTENSION
命令。如果您构建或获得一个 PL/Java 1.5.0 的 jar,您所做的就是 运行 那(使用 java -jar
jarname)...只是当你这样做时,确保包含 pg_config
的目录在你的 PATH
上,jar 安装程序会找出其余部分。在 psql
中,只需说 CREATE EXTENSION pljava;
您可能需要设置一个变量来告诉它您的 Java 运行time 安装在哪里。 installation instructions 有详细信息。