明明白白Unsupported major.minor version 49.0的错误

一:要解决的问题

我们在尝鲜 JDK1.5 的时候,相信不少人遇到过 Unsupported major.minor version 49.0 错误,当时定会茫然不知所措。因为刚开始那会儿,网上与此相关的中文资料还不多,现在好了,网上一找就知道是如何解决,大多会告诉你要使用 JDK 1.4 重新编译。那么至于为什么,那个 major.minor 究竟为何物呢?这就是本篇来讲的内容,以使未错而先知。

我觉得我是比较幸运的,因为在遇到那个错误之前已研读过《深入 Java 虚拟机》第二版,英文原书名为《Inside the Java Virtual Machine》( Second Edition),看时已知晓 major.minor 藏匿于何处,但没有切身体会,待到与 Unsupported major.minor version 49.0 真正会面试,正好是给我验证了一个事实。 阅读全文 >>

重定向System.out和System.err到JTextPane,分别用黑色红色显示(改进)

在上一篇 重定向System.out和System.err到JTextPane,分别用黑色红色显示 中讲了如何把 System.out 和 System.err 重定向到 JTextPane 上,并分不同颜色显示,其中用到了 PipedInputStream、PipedOutputStream。那个例子还是参考的 《The Java Developers Almanac 1.4》,翻译出来叫做 《Java 开发者年鉴 1.4》,显得多么的权威啊,我当时还真把它看成官方最佳推荐实现了,太迷信了。

可是现在看来,前面那个实现不仅代码繁琐,而且是 Bug 多多。现在重新对上回的 ConsolePane 来个新的更简洁高效的实现。代码如下: 阅读全文 >>

重定向System.out和System.err到JTextPane,分别用黑色红色显示

把 System.out 和 System.err 重定向到 JTextArea 的做法在网上能找到不少,由于 JTextArea 不能用不同的字体分别显示内容。但我还是希望能象 Eclipse 控制台那样,标准输出为黑色,错误信息为红色,于是选择了 JTextPane 作为输出目的地。线程之间通信息用到了 PipedInputStream 、PipedOutputStream 和 SwingUtilities.invokeLater(new Runnable()。  

自定义了一个 JScrollPane,类名为 ConsolePane,写成的单例类;使用时只需要在你的面板上加上 ConsolePane组件,例如:getContentPane().add(ConsolePane.getInstance(), BorderLayout.CENTER);

界面截图(黑色和红色分别显示 System.out 和 System.err 定向的输出内容): 阅读全文 >>

Eclipse中执行Ant出现Could not find the main class的问题及解

这种情况通常是发生在换了另一份 Eclipse 拷贝之后。之前一般都能正常在 Eclipse 中执行 Ant 脚本,删除了原来的 Eclipse 之后换了另一个拷贝或者是新版本,在其中执行 Ant 脚本时弹出窗口出现以下错误:

---------------------------
Java Virtual Machine Launcher
---------------------------
Could not find the main class. Program will exit.
---------------------------
确定  
---------------------------

这种错误对用过 Java 的人来说还是很明白,找不到 Ant 的主类吗。不过说实话也困扰过我一段时间,也没去深究。说开了,症结就是 Eclipse 中的 ANT_HOME 指向不对。 阅读全文 >>

对StrutsConfigHelper工具的小小升级--增加代码着色显示功能

StrutsConfigHelper 小工具方便你对一个或多个 StrutsConfig 文件按条件查找各要素。在 《忙里找闲,自写了一个StrutsConfig配置文件条件查找工具》 一文章有对该工具的介绍。

软件为适宜之作,如果它确实对你毫无用处,你大可当它是垃圾,不因作者付出很大的苦劳,而勉强去接受;也许它还能给你带来些便利,那就体现了它的价值。 阅读全文 >>

忙里找闲,自写了一个StrutsConfig配置文件条件查找工具

工作中有维护 Struts 项目,或看别人项目中代码时,要把访问页面链接与相应处理 Action 类及 FormBean等相关信息对应起来,每每都是打开 Struts 配置文件,Ctrl+F 进行查找,不易准确定位,尤其是项目中有多个 Struts 配置文件时就得这边倒来那边转去的,实为不便。于是乎就为自己写了一个可同时在多个 Struts 配置文件中根据不同条件查找配置信息的小工具,谓之:Struts Config Helper。

这段时间工作上比较的忙,闲暇之间,一点一滴缓慢缀掇而成。也不知对于各位同路人是否有可借鉴之处,张贴出来,希望得到各位的指摘,多给我提些 Bug 出来,不胜感激! 阅读全文 >>

一个顶好用的 JavaDoc Api 查看软件 JavaDOCHelper

一般我们查阅 JDK API 都是用的 CHM 版的帮助文件,记得想想刚接触 Java 那时要在网上找个 CHM 版的 JDK 帮助文档都要费几番周折,甚至还经常在线查某个 AP I说明。现在好了,连中文的 JDK API 帮助都能及时出来,要找个 CHM 版的帮助也方便多了。

可是对于大多数的 Java 组件都只提供 HTML 版的 JavaDoc API 帮助,查阅起来很不顺手。没有快速索引查找的功能,而且看不同组件的 API 帮助需要同时打开多个窗口。

下面向大家介绍一款软件,JavaDOCHelper,它不仅能提供像 CHM 文件那般快速索引查找,而且提供一个界面里查阅多个 Java Doc API。该软件未注册版本,只限 30 次的查找功能的使用(不是指索引),现已对该软件完成了破解,并提供更换安装目录时更方便的提示功能,以及免安装,EXE 文件无控制台方式启动。 阅读全文 >>

Java中类C/C++的sizeof()操作,知晓实例大小

在C/C++中有sizeof()操作,可轻易获知某个类型或实例占用内存大小,sizeof(int) 或者 sizeof(new TestClass)。可是Java中可没有这么直观的方法可用。

因本人看过不少人写代码总爱写成

List userList = new ArrayList();   //注:声明时即初始化一个空 ArrayList
userList = userDao.getAllUsers();  //注:方法getAllUsers()中会生成一个ArrayList的

上面就造成平白多了一个空的 ArrayList(),创建完后即刻就推向GC处置,我就在想这样一个空的 ArrayList 会占用多少内存,于是找来了 Optimizeit 观察后发现一个空的 ArrayList 要占去 24b 内存。那 Java 中有没有更便的捷的方法呢,于是在网上 google "java sizeof",引出不少话题。 阅读全文 >>

对iTracker的小修正,使之正确显示描述中的空格(解决代码退格显示)

ITracker 是基于 J2EE 的 issue/bug 跟踪系统,支持多用户、多项目、邮件通知等,更多特征请查看http://www.cowsultants.com/features.html 。这里还有一个在线 demo 可以试用,用户名和密码都是 guest。

类似的产品还有 ScarabELIPSBugtrackerBugRatAbukyTrackItjTracBugzillaJTracProject Dune.

iTracker确实是个好东西,但对一个东西过熟了,难免期望值就更高了。如果你用 iTracker 作过 Code Review 的话,你就会发现,你贴上去的代码,浏览显示出来的是代码中的空格少了,尤其是没了退格规范显示了。例如,你贴的代码是: 阅读全文 >>

利用JDOM把两个XML合并生得到一个Document对象

通常一些应用框架都会用 XML 作为配置,而且很多都支持多个 XML 文件,例如 Struts 框架可以配置多个 struts-config-xxx.xml 文件,Spring 也允许你用多个 applicationContext-xxx.xml 文件,再比如 DWR 也是可以由多个 dwr-xxx.xml 依功能或其他方式分开来配置。我们知道,这样的多个 XML 有相同的规范定义,那么程序如何一并解析它们呢?我看过 ActionServlet 是对 struts-config-xxx.xml 逐个解析的。我这里介绍的一种方法是把那些有着相同规范定义的 XML 合成一个 Document 然后对这个 Document 对象进行处理,如 XPath 查找、进行 DOM 对象操作,就不需要每次到多个 Document 中去查找一遍。

众所周知,对 XML 的操作有两种方式,DOM:XML 映射在内存中一颗树;SAX:基于事件的方式。常用的 XML Java 解析组件有 DOM4J(Apache的)、JDOM、和JAXP(Sun的),它们都提供了 DOM 和 SAX 实现和 Xpath 查找。 阅读全文 >>