本文章记录本人在使用powerdsigner工具,反向工程生成项目数据库表结构以及表关系的过程中遇到的两个常见问题。
问题1:Could not Initialize JavaVM
问题2:Non SQL Error : Could not load class oracle.jdbc.OracleDriver
环境:
1:Windows10 家庭版
2:Powerdsigner 16.5
3:Oracle11g
由于本人习惯使用干净清爽的环境,以及考虑个人笔记本性能(重点:嘻嘻,屌丝本X260),采用jdbc方式连接数据库。使用绿色版JDK,bat批处理设置临时环境变量。
点击工具栏的Database-选择connect
点击configurate,进行数据库连接配置
点击 Test Connection 测试连接
在保证信息填写无误的前提下,常见问题1、2作为本次记录的重点,下面说一下解决方案。
在点击Test Connection 按钮后,控制台出现以下问题
问题1:
问题2:
问题1出现原因:
1、未配置jdk环境变量
2、jdk为32位
3、jdk版本过低
这里附上Oracle 版本对应jdk版本表单
问题1解决方案:
这里选择1、绿色版JDK1.8.0_151 64bit (文章结果提供查看jdk位数的方法) 2、ojdbc6-11.1.0.6.0.jar Oracle11g数据库驱动jar包。(文章结尾提供本人验证无误的32bit JDK1.8.0以及ojdbc6-11.1.0.6.0.jar的下载资源地址)
新建文本文件 startup.bat,输入一下内容,
-------------------------------------------------------------------------------------------------------------------------------------------------------------
rem 注意JAVA_HOME=%JAVA_HOME%等号中间不要有空格(这里配置自己本地32位jdk绝对路径)
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0_151
rem 环境变量定义数据库驱动jar包类路径
set CLASSPATH=%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;C:\Program Files (x86)\Sybase\PowerDesigner 16\lib\ojdbc6-11.1.0.6.0.jar;
set path=%JAVA_HOME%\bin;
rem start \d windows 环境下启动应用程序并自动关闭dos窗口(这里配置自己本地powerdesigner 安装目标下文件 PdShell16.exe的绝对路径)
start /d "C:\Program Files (x86)\Sybase\PowerDesigner 16" PdShell16.exe
-------------------------------------------------------------------------------------------------------------------------------------------------------------
将文件startup.bat保存到powerdesigner的根目录。双击直接点开,问题1已解决。
问题2出现原因:
1、没有配置数据库驱动jar
2、数据库驱动jar版本过低
问题2解决方案:
set CLASSPATH=C:\Program Files (x86)\Sybase\PowerDesigner 16\lib\ojdbc6-11.1.0.6.0.jar;
配置数据库驱动类的路径,上面已经在启动bat批处理文件内容中写出。
按照上述方法操作后,再次点击Test Connection,
接下来就可以利用powerdesigner的逆向工程,将数据库中的表导出到pd模型中了。方便项目的资料归档和相关说明文件的编制。
File->Reverse Engineer->Database
填写好模型名称和数据库模型,确定
选择 Using a data source ,选择数据源,点击后面数据源的按钮,
选择刚刚测试成功的数据源配置,然后输入正确的用户名和密码
确定后,选择需要导出的表,
ok 导出成功
附1:
查看JDK位数的方法:
在dos命令窗口中,目录跳转到jdk的路径下,输入 java -version
上图提供两个版本jdk,第一个是32位jdk1.8.0,第二个是64位jdk10.0.2,都是绿色解压缩直接使用。红框内的红框给出"64-Bit",说明jdk为 64位,如第二个。红框内红框没有写明位数,默认为32位。