使用postgres 9.3 for windows 7中的pljava安装“sqlj”模式时出现问题

时间:2017-04-18 06:34:42

标签: windows postgresql jdbc dll pljava

我正在尝试在Windows7(64位操作系统)上安装Postgres 9.3.16。使用pljava和以下命令安装sqlj架构时:

from selenium.webdriver.remote.remote_connection import RemoteConnection
driver = webdriver.Remote(
    command_executor=RemoteConnection(hub_url, resolve_ip=False),
    desired_capabilities=desired_cap)

我从stackbuilder JDBC驱动程序下载中获得了这个JDBC jar。

使用命令提示符运行上述命令时出现此错误:

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

我的Path变量也是:

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)

我使用了依赖walker,它报告缺少以下文件:

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

我试图尽一切可能但却无法解决它。但是我注意到Windows使用反斜杠'\'作为路径分隔符,而在错误消息中它尝试搜索的路径使用正斜杠'/'。

这可能是问题吗?任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

经过一段时间的努力之后,最终还是采用了以下修复措施:

我将pljava.dll路径添加到我的PATH变量,即

在PATH变量中

C:\ Softwares \ PostgreSQL \ 9.3 \ share。

另外,我在postgresql.conf中修改并添加了以下变量:

dynamic_library_path ='C:\ Softwares \ PostgreSQL \ 9.3 \ share \ pljava'

之后我的sqlj架构正常填充。

答案 1 :(得分:0)

我想知道你试图安装什么版本的PL / Java? Deployer的旧过程有点过时了。您已获得PostgreSQL 9.3.x,因此它具有CREATE EXTENSION命令。如果你构建或获得一个PL / Java 1.5.0的jar,你所做的就是运行它(使用java -jar jarname )...只需确保包含{{1}的目录当你这样做时,pg_config就在你的PATH上,jar安装程序会找出其余部分。在psql然后,只需说出CREATE EXTENSION pljava;

您可能必须设置一个变量来告诉它Java运行时的安装位置。 installation instructions有详细信息。