编辑:根据the Derby community,Eclipse插件不会在Derby项目中自动维护或自动构建。
但是还有人还在使用这个插件吗?因为如果是这样,他/她是否有一个发布实际构建的地方 - 哪些(希望)会在Eclipse Juno下运行?
或者,如果这是一个真正的死胡同,还有什么选择?
原始问题
使用
问题
当尝试添加新的derby性质时(右键单击java项目 - >“Apache Derby” - >“添加Apache Derby性质”)我只收到以下消息:
Apache Derby Ui Plug-in
Error adding Derby jars to the project:
org.eclipse.ui.internal.WorkbenchWindow cannot be cast to
org.eclipse.jface.window.ApplicationWindow
有什么想法吗?
答案 0 :(得分:5)
Apache Derby db-derby-10.9.1.0-src / Eclipse 4.2.1(Juno)/ Java 7
某种修复。需要更多的研究,但这将有效。
参考文献:
DB-德比-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 -quiet clobber
ant -quiet constructource
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文件
在“概览”选项卡上,提高版本号,例如1.1.4。
保存文件。
这些错误在...中
1.)包org.apache.derby.ui.popup.actions.AddDerbyNature.java
2.)包org.apache.derby.ui.popup.actions.RemoveDerbyNature.java
在这两个单元中调用.setStatus方法。
注意:(来自ApplicationWindow的javadoc)
void org.eclipse.jface.window.ApplicationWindow.setStatus(String 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网络服务器
没有错误,服务器已启动。
从控制台日志中... Sun Jan 27 17:51:29 EST 2013:使用基本服务器安全策略安装安全管理器。 Sun Jan 27 17:51:29 EST 2013:Apache Derby Network Server - 10.9.1.0 - (Unversioned目录)已启动并准备接受端口1527上的连接
注意:不确定Unversioned目录消息的含义是什么
右键单击项目/选择停止Derby网络服务器
没有错误,服务器已停止
Sun Jan 27 17:53:32 EST 2013:Apache Derby Network Server - 10.9.1.0 - (Unversioned directory)shutdown
启动服务器备份...
右键单击项目/选择开始Derby网络服务器
创建一个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脚本Refesh项目工作区,现在应该有一个TESTDB文件夹。
数据库已创建。好。
创建一个zip。
右键点击项目>出口
点击插件开发>可深入的插件和碎片。
目的地标签
档案文件
/derby_ui_plugin_1.1.4-fix.zip
选项标签
取消选择Package插件作为单独的JAR存档
点击完成。
关闭/退出测试实例 退出Eclipse。
从上面提取您刚刚创建的zip。
将其内容复制到Eclipse(Juno)插件目录的plugins目录中。
重启Eclipse。创建一个新项目。
您应该能够在项目中安装Apache Derby(10.9.1)。
注意:如果您使用Java 7构建它,请不要指望它适用于任何较小的JVM版本。
答案 1 :(得分:4)
我相信Eclipse的Derby UI插件已经维护了好几年了,因为普通的Derby提交者都没有使用该插件,并且社区中没有任何志愿者来维护它。所以我认为它只适用于旧版本的Eclipse。
我怀疑使其与当前的Eclipse协同工作并不是很多工作。如果您对该功能感兴趣,我相信Derby社区很乐意听取您的意见!