不自觉又喜欢上了NetBeans IDE5.0(Build 200601251500)

曾经是Eclipse的拥趸,今天晚上在网上Down了一个NetBean 5.0,安装到电脑上,打开试用了一下,确实比以前版本快很多,而且功能也非常的丰富,直接支持EJB开发,AJAX,JSF1.1,Struts都到1.2.7了,还要看看Struts低版本是如何支持的,WebService的开发;还有把源文件输出为HTML格式的功能,导出要展示的代码很有用的。

NetBean也是免费的,虽说Eclipse也是免费的,但Eclipse还得倚仗着盗版的MyEclipse才能做实际的开发;NetBean也有插件啊。看来一被忽略的NetBean需要好好去发掘,以后在本机学习、测试、验证代码的话我就在NetBean下进行了。

类别: Java/JEE. 标签: . 阅读(32). 评论(0) »

使用Java的反射调用方法应注意的异常处理

先看下面的代码,看看程序执行会是什么样的结果:

简单分析上面的代码,代码中自定义了一个异常类,main调用了方法foo1,而方法foo1调用了方法foo2,在方法foo2中抛出的异常是MyException,该异常向上传播,在main方法中被catch,那么是不会会第一个catch语句捕获到,在控制台下打印出"Exception Type: MyException"呢?其实不然,异常会被第二个catch语句捕获,实际执行结果是"Exception Type: Exception"。

也就是尽管foo2方法中抛出的是MyException,但是让foo1通过反射方式调用后,异常被重新封装。从foo1方法中执向外面的异常实际是"InvocationTargetException",也就是执行method.invoke方法的异常了,那么在foo1中如何知道触发的实际异常呢,InvocationTargetException有一个方法getTargetException()可以获取到是MyException异常。

如果我们想在main方法中更细致的处理实际方法执行所抛出的异常,应如何做呢?我们可以改写foo1中的反射调用代码行

替换如下,让在foo2中触发的实际异常向外抛

这样的话,这个异常将在main方法的第一个catch块被捕获,异常类型被还原成MyException。

我是在项目中使用Struts,写了一个BaseAction,在BaseAction中根据参数反向调用相应的Action Perform方法时,在BaseAction中也是写成上面代码那样的异常捕获方式,结果发现只要是Action Perform方法中抛出的异常总是作为Exception被捕获的,而不能正确处理异常中描述的业务含业。

用Struts做项目时,经常会写自己的BaseAction,由这个BaseAction去分发执行哪一个实际方法,并且由它统一根据上抛的异常处理错误信息时就应该注意到这种问题。

类别: Java/JEE. 标签: , , . 阅读(700). 评论(0) »

纯Java程序读取DBF文件型数据库

还记得那个古老的Foxbase和Foxpro产生的数据库吗?与access(MDB)类似的文件型数据库,可是有些地方有人还在用它。DBF数据库一般都是在Foxbase或Foxpro中或由它们生成的应用程序来访问,也可以通过建立ODBC的方式来访问。

Java要访问什么数据库第一个念头就会是有没有相应的驱动啊,有驱动那好办,若是没有驱动那能不能通过配置ODBC,用JDBC-ODBC桥来访问呢?当然Java访问DBF文件是可以通过JDBC-ODBC的方式,但这样的话是不是纯Java实现还说,倒是得为要访问的DBF文件建一个数据源麻烦,尤其是程序移植时。 阅读全文 >>

类别: Java/JEE. 标签: , . 阅读(824). 评论(0) »

Oracle中的Java存储过程的操作权限

当我们在Oracle中用Java写的存储过程方法中,如果访问了本地文件系统、连接了网络、或者运行系统命令,就必须为执行该过程的模式赋予相应的权限。不然执行该存储过程就会报无该操作权限的异常。

本文所面对的是哪些会用Java写存储过程的朋友,可能你们在用Java写Oracle的存储过程也遇到过类似问题。希望对他们能有所帮助。关于如何用Java写Oracle的存储过程请参考我前面的一篇文章:Oracle8i中使用Java语言来开发存储过程,其中有相应的代码。 阅读全文 >>

类别: Database, Java/JEE. 标签: , , . 阅读(387). 评论(0) »

Oracle8i中使用Java语言来开发存储过程

在Oracle8i之前,开发人员只能使用PL/SQL来开发存储过程。而在Oracle8i之中,不仅可以使用原有的PL/SQL开发存储过程,而且也可以使用Java语言来开发存储过程。本篇文章将简单介绍关于这方面的知识,包括以下内容:(灰色显示的部分在此将不作详细介绍)

本文是我参考网上资料,整理出来的一份,文中所有代码语句均真实可用,因只是作测试,所以代码未表现实际业务操作。

一. 存储过程简介
阅读全文 >>

类别: Database, Java/JEE. 标签: , , . 阅读(79). 评论(1) »

由StringBuffer和StringBuilder的区别而衍生的

    认识StringBuilder大概是在一年前的八九月份里,还是在JDK1.5从未正式发布始,一直都是关注的它的几大显著特性--泛型、静态引入、装拆箱和不定参等,某些比较细微的差别却没注意到。
   
    大家都知道处理字符串连接时StringBuffer比String效率高,因为从编译的字节码中也可以看到String的相加也是要转换为StringBuffer来进行的。
   
    比如对于这几句代码  String s = "Hello";  s=s+" Java";  s=s+" World!"; 反编译之后从字节码可以看出虚拟机实际是如何处理的(具体字节码这里就略去了,对于详细字节码的分析我想如果需要的时候以后会单独写一篇来介绍):
阅读全文 >>

类别: Java/JEE. 标签: , . 阅读(147). 评论(0) »

一个切实可用的CheckStyle的build.xml文件

网上找了好些个关于CheckStyle的文章都是抄抄抄一大通,却没有一个build.xml着实可运行,
在这里我也是参考着一编,改改成能成功运行并能生成正确报告,发送 Email 的build.xml文件

<继续补充内容>

类别: Java/JEE. 标签: , , . 阅读(536). 评论(0) »

使用EMMA生成代码测试覆盖率报告简单应用

Java测试代码覆盖率工具有Clover, Jcoverage和Emma等,其中只有Emma才算是彻底免费开源的,用起来也比较方便。
而Jcoverage使用起来就有些繁琐,必须一步步按照规定的方式走,步骤为 debug方式compile->instrument->test->coverage

下面将简单介绍emma的使用,以下方法告诉你如以以命令的方式来生成代码测试覆盖率,当然你也可以写成 Ant 任务的方式,这就要求自己写几个 Ant 用的Task类,其实也不难。

emma的下载地址是:http://emma.sourceforge.net/downloads.html 阅读全文 >>

类别: Java/JEE. 标签: , . 阅读(483). 评论(0) »

用Ant进行单元测试并生成测试报告

关键Ant的build文件如下(已加上比较详细的说明)

下面以后也会加上测试报告的贴图的。

类别: Java/JEE. 标签: , , . 阅读(256). 评论(2) »

用JCoverage生成测试覆盖率报告(二 build文件)

下面的那一大段build.xml文件内容主要也是参考下载过来的JCoverage中的一个例子中的build文件,只是稍稍作了点修改,用下面这个build文件前,需要把JCoverage用到的 jar (下载的JCoverage中都有) 包拷到工程目录下lib子目录中,请注意理解其中的注解,以后必要时会加上更详细的中文注释。 阅读全文 >>

类别: Java/JEE. 标签: , , . 阅读(211). 评论(0) »