Apache derby数据库在MyEclipse7.1中启动失败的解决方案

来源:互联网 发布:java中md5 32 编辑:程序博客网 时间:2024/05/11 14:39

开发环境介绍:
myeclipse7.1
sqlexplorer 3.5.0
apache derby 10.2.1
-------------------------------------------------------------------------------------------------------------------
1.apache derby的下载
下载网站http://db.apache.org/derby
如果作为单独的服务器使用,我们需要下载db-derby-10.2.1.6-bin.zip,
若需要在eclipse中作为插件使用我们需要下载两个文件:derby_core_plugin_10.2.1.452058.zip
derby_ui_plugin_1.1.0.zip。(有可能粗心写错)
在这里,我们只需要下载两个插件文件就可以了
-------------------------------------------------------------------------------------------------------------------
2.apache derby的安装
首先,我们使用link的安装方法,至于具体的方法我们不多说了,详见其他网友的贡献帖子。
还需要声明一点的是myeclipse7.0以后的插件安装方法(离线安装)有所变更。以myeclipse7.1为例:它的默认安装目录为:
Genuitec
+----common
     +----features
     +----plugins
     +----binary
     +----configuration
+----MyEclipse 7.1
     +----dropins
     +----configuration
     +----myeclipse.exe
虽说目录结构有所变更,但是还是能看到我们往日熟悉的东西,像是:features和plugins以及configuration等等,这里我们重点介绍dropins文件夹的作用。

还记得以前的版本吗?我们进行插件安装时都会自建一个文件夹:links,对了,这里的dropins和links的作用是一模一样的,千万记住了!
我们开始安装apache derby:
解压下载到的:derby_core_plugin_10.2.1.452058.zip和derby_ui_plugin_1.1.0.zip到自定义目录下C:/Programer/jar_package,

这里说句废话:我们要保证目录的正确性。经常使用links方法安装插件的朋友,下面的东西请绕行。给新手看的:
c
+----programer
     +----jar_package
          +----derby_core
          +    +----eclipse
          +         +----plugins
          +              +----org.apache.derby.core_10.4.2
          +----derby_ui
               +----eclipse
                    +----plugins
                         +----org.apache.derby.plugin.doc_1.1.2
                         +----org.apache.derby.ui_1.1.2
不知道你们看出什么规律没有,这是插件安装必须的合法目录结构!当然了更多的插件目录下的eclipse目录中除了plugins还有features目录。如果没有看懂,自己研究吧!

跑到C:/Programer/Genuitec/MyEclipse 7.1/dropins目录下:
新建derby_core.link和derby_ui.link两个文件,内容如下:
derby_core.link文件中写入:path=C://Programer//jar_package//derby_core
derby_ui.link文件中写入:path=C://Programer//jar_package//derby_ui

好了,打开你的myeclipse看看吧,如果没有,先关闭平台,跑到Genuitec/MyEclipse 7.1/configuration目录下,把“org.eclipse.update”文件夹给删除掉。放心吧!不会叫你坏的!
---------------------------------------------------------------------------------------------------------------------
3.apache derby的配置
前提条件是你的sqlexplorer已经安装好了,我很喜欢这个插件,好用!
点击myeclipse的window->perferences,建议各位用英文版的吧,别再到处喊着“我要中文包”了,丢不起那人啊!一个java程序员连英文都看不懂,你还能干什么?如果我是老板,绝对不要这样的员工。

找到sqlexplorer节点,配置其jdbc drivers项,列表中添加(如果有apache derby就不用了)输入
name:Apache Derby,
URL:jdbc:derby://localhost:1527/<databaseName>,
然后在extra class path中添加apache derby的驱动程序:Genuitec/MyEclipse 7.1/dropins/derby_core/eclipse/plugins/org.apache.derby.core_10.4.2目录下,这里需要加入:derby.jar,derbynet.jar,derbyclient.jar
在driver class name一栏中输入:org.apache.derby.jdbc.ClientDriver,ok即可!
--------------------------------------------------------------------------------------------------------------------
4.apache derby的测试
新建一个java project,如helloWorld(骆驼命名法,不知道的,百度一下!)。

好了,这时我们可以往上添加apache derby了。

在项目名上右击,我们会看到apache derby,点击后弹出add apache derby nature,点它。

这时注意目录结构发生了变化,自动生成了一个库包derby libraries,查看一下,发现derby.jar文件,已自动添加到项目中。

如果这时启动apache derby,控制台会提示java.lang.NoClassDefFoundError: org/apache/derby/drda/NetworkServerControl
Exception in thread "main" 。

其实,我们还需要手动添加其他的jar包。

首先,出于良好的使用习惯,我们新建user libraries,点击MyEclipse的window_>preferences_>java_>build Path_>user libraries,我们可以点击右面的new命名为derby,然后点击add jres,往里添加jar包。

将jar_package/derby_core/eclipse/plugins/org.apache.derby.core_10.4.2目录下的derbynet.jar,
derbyclient.jar,
derbytools.jar,
derbyrun.jar都添加上。(如果不完全导入,不光在此处不能运行,后面的ij命令也是不能使用。干脆也可以将derby.jar也加上)

好了,开始启动,我敢发誓:你的derby启动不起来!报错:
已使用基本服务器安全策略安装了安全管理程序。
2009-07-28 15:55:39.218 GMT Thread[main,5,main] java.security.AccessControlException: access denied (java.io.FilePermission derby.log read)
Apache Derby Network Server - 10.4.2.0 - (689064) 已启动并且已准备好 2009-07-28 15:55:39.296 GMT 时在端口 1527 上接受连接
Apache Derby Network Server - 10.4.2.0 - (689064) 已启动并且已准备好 2009-07-28 15:55:39.296 GMT 时在端口 1527 上接受连接

问题已经很清楚了:安全许可出现了问题,感兴趣的朋友,可以到这里看看:http://db.apache.org/derby/docs/dev/adminguide/tadminnetservbasic.html,

根据这篇文章的讲解:
(1)把jre找到,(别告诉我你不知道什么叫做jre,这里的jre指的是我们自行安装的jdk中的jre,别扭啊,这么说!因为MyEclipse7.1自身还带有jre,它的设置同理,见下方。)Java/jre1.5.0_06/lib/security/java.policy,

修改这个文件,在grant{}中的最后加上:
permission java.io.FilePermission "derby.log","read,write,delete,execute";       
保存即可。

这时,我们可以重新启动derby了。应该可以成功了。

如果还不成功,尝试一下几步:

0.修改MyEclipse7.1关于jre的设置,它会默认使用MyEclipse自带的jre,如果是这样的话。我们就直接修改MyEclipse自带的jre中java.policy这个文件的设置:Genuitec/Common/binary/com.sun.java.jre.win32.x86_1.5.0.011/lib/security/java.policy,我们同样输入:在grant{}中的最后加上:
permission java.io.FilePermission "derby.log","read,write,delete,execute";   

这个方法还可以类推,我们可以新建一个自定义的jre,指向我们自己安装的jdk中的jre。

1.每次连接完后,不管成功与否,都刷新项目。知道看到根目录下出现derby.log文件。

2.当derby.log文件生成以后,我们可以右击项目,apache derby_>remove apache derby nature,然后再添加和连接。即可!

已使用基本服务器安全策略安装了安全管理程序。
Apache Derby Network Server - 10.4.2.0 - (689064) 已启动并且已准备好 2009-07-28 16:03:09.078 GMT 时在端口 1527 上接受连接

说明你成功了!

原创粉丝点击