Apache Derby db-derby-10.9.1.0-src / Eclipse 4.2.1 (Juno) / Java 7
某种修复。需要更多的研究,但这会奏效。
参考资料:
db-derby-10.9.1.0-src/BUILDING.html
db-derby-10.8.1.2-src/plugins/eclipse/Readme.txt
下载 Apache Derby 源 zip。
提取拉链。
切换到源目录。
db-derby-10.9.1.0-src
执行以下 ant 目标。
ant -quiet clobber
ant -quiet buildsource
ant -quiet buildjars
构建核心插件。
蚂蚁插件
您现在应该在 db-derby-10.9.1.0-src/jars/sane 目录中有一个 derby_core_plugin_10.9.1.zip 文件。
注意:您的 Eclipse IDE 不应运行。提取上面 ant 插件任务创建的 derby 核心插件,并将内容复制到您的 Eclipse 插件目录。
运行 Eclipse。
从源代码树中导入 org.apache.derby.ui。
(导入 > 常规 > 现有项目到工作区)
打开 plugin.xml 文件
在 Overview 选项卡上,将版本号提高到 1.1.4。
保存文件。
错误在...
1.)package org.apache.derby.ui.popup.actions.AddDerbyNature.java
2.)package org.apache.derby.ui.popup.actions.RemoveDerbyNature.java
在这两个单元中调用 .setStatus 方法的位置。
注意:(来自 ApplicationWindow 的 javadoc )
无效 org.eclipse.jface.window.ApplicationWindow.setStatus(字符串消息)
设置或清除此窗口状态行中显示的消息(如果它有 >one)。如果窗口没有状态行,则此方法无效。
参数:
message 状态信息,或 null 清除它
因此,假设 IDE 没有状态行,因此根据 Java 文档,此调用无效。
Commenting out these method calls from:
AddDerbyNature.java
//((ApplicationWindow) window).setStatus(Messages.ADDING_NATURE);
//((ApplicationWindow) window).setStatus(Messages.DERBY_NATURE_ADDED);
RemoveDerbyNature.java
//((ApplicationWindow)window).setStatus(Messages.REMOVING_NATURE);
//((ApplicationWindow)window).setStatus(Messages.DERBY_NATURE_REMOVED);
测试:
作为 Eclipse 应用程序运行。
创建一个项目。也许称它为“org.apache.derby.ui.test”。
右键单击项目/选择添加 Apache Derby 自然
没有错误。
右键单击项目/选择删除 Apache Derby 自然
没有错误。
再次添加性质以测试其他菜单项。
右键单击项目/选择添加 Apache Derby 性质
右键单击项目/选择启动 Derby Network Server
没有错误,服务器已启动。
从控制台日志... Sun Jan 27 17:51:29 EST 2013:使用基本服务器安全策略安装的安全管理器。2013 年 1 月 27 日星期日 17:51:29 EST:Apache Derby 网络服务器 - 10.9.1.0 - (未版本化目录)已启动并准备好接受端口 1527 上的连接
注意:不确定 Unversioned 目录消息的含义
右键单击项目/选择 Stop Derby Network Server
没有错误,服务器已停止。
2013 年 1 月 27 日星期日 17:53:32 EST:Apache Derby 网络服务器 - 10.9.1.0 -(未版本化目录)关闭
启动服务器备份...<br> 右键单击项目/选择启动 Derby Network Server
创建一个 sql 文件夹。
创建一个 test.sql 文件
我的测试 sql 文件。
connect 'jdbc:derby://localhost:1527/TESTDB;create=true;user=test;password=test;';
-- drop User Indexes - ignore error if first time creating
drop index UserNameIdx1;
-- drop the table if it exists - ignore error if first time creating
drop table TEST_USER;
-- create the table
create table TEST_USER (
ID integer generated by default as identity,
USER_NAME varchar(255) not null,
FIRST_NAME varchar(255),
LAST_NAME varchar(255),
PASSWORD varchar(255),
ENABLED integer,
CREATED_STAMP timestamp,
CREATED_TX_STAMP timestamp,
LAST_UPDATED_STAMP timestamp,
LAST_UPDATED_TX_STAMP timestamp,
constraint TEST_USER_PK primary key (ID)
);
-- insert some data -- oops --- will mess with the ID generator, see the alter table restart line below.
insert into TEST_USER values(0, 'admin','admin','admin','admin',1,'2013-01-18 12:00:00.000','2013-01-18 12:00:00.000','2013-01-18 12:00:00.000','2013-01-18 12:00:00.000');
-- make the USER_NAME unique
create unique index UserNameIdx1 on TEST_USER(USER_NAME);
-- reset the generator
alter table TEST_USER alter column ID restart with 1;
右键单击文件 > Apache Derby > 使用“ij”运行 SQL 脚本
刷新项目工作区,现在应该有一个 TESTDB 文件夹。
数据库已创建。好的。
创建一个拉链。
右键单击项目>导出
单击插件开发 > 可部署插件和片段。
目标选项卡
存档文件
/derby_ui_plugin_1.1.4-fix.zip
选项选项卡
取消选择将包插件作为单独的 JAR 存档
点击完成。
关闭/退出测试实例。
退出 Eclipse。
从上面提取您刚刚创建的 zip。
将其内容复制到插件目录到您的 Eclipse (Juno) 插件目录。
重新启动 Eclipse。创建一个新项目。
您应该能够将 Apache Derby (10.9.1) 特性安装到您的项目中。
注意:如果您使用 Java 7 构建它,不要期望它适用于任何较小的 JVM 版本。