2011-07-09 88 views
2

在windows 7 x64和PostgreSQL 9.0上安装pl/java时出错。在windows上安装pljava的问题

CREATE FUNCTION sqlj.java_call_handler() 
    RETURNS language_handler AS 'pljava' 
    LANGUAGE C; 

错误:

ERROR: could not load library "C:/Program Files/PostgreSQL/9.0/lib/pljava.dll": The specified module could not be found.

*** Error ***

ERROR: could not load library "C:/Program Files/PostgreSQL/9.0/lib/pljava.dll": The specified module could not be found. SQL state: 58P01

但我敢肯定,pljava.dll用C存在:/ Program Files文件/ PostgreSQL的/ 9.0/lib目录

+1

最有可能'pljava.dll'取决于其他一些缺少的DLL。请查看[Dependency Walker](http://www.dependencywalker.com/)。 –

回答

9

我发现它可以安装PL/Windows 7 64位上的PostgreSQL 9.0 64位上的Java过程语言(我的错误信息与您的相同)。我看到(C:/Program Files路径),你的PostgreSQL的64位版本,因此你需要64位 JRE(假设C:\Program Files\Java\jre6):

  • 下载PL/Java的64位二进制 从pgFoundry 包(即, pljava-x86_64-w64-mingw32-pg9.0-1.4.2.tar.gz
  • 解压存档C:\Program Files\PostgreSQL\9.0\share\pljava目录
  • pljava.dllC:\Program Files\PostgreSQL\9.0\lib目录
  • 添加到postgresql.conf(数据):
custom_variable_classes = 'pljava' 
pljava.classpath='C:\\Program Files\\PostgreSQL\\9.0\\share\\pljava\\pljava.jar'
  • 添加到PATH(我的电脑→属性→高级→环境变量):
;C:\Program Files\Java\jre6\bin;C:\Program Files\Java\jre6\bin\server

(您可以创建,如果你的另一JRE_HOME变量like然后写;%JRE_HOME%\bin;%JRE_HOME%\bin\server

After th重新启动PostgreSQL服务(postgresql-x64-9.0)并再次加载C:\Program Files\PostgreSQL\9.0\share\pljava\install.sql。检查:

postgres=# SELECT lanname FROM pg_language; 
lanname 
---------- 
internal 
c 
sql 
plpgsql 
java 
javau 
(6 rows) 
0

我有完全相同的错误,并按照说明一个T,但仍然是同样的问题。我发现我的PATH语句包含引号 - 假设我需要它们是因为目录名称中有空格。删除了jre路径附近的引号,灯亮起。

希望这会有所帮助!