Java开发遇到问题记录

Problem: 2010-7-10 在使用 commoms-chain 进行开发中,解析 chain 的配置文件时出现异常:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.digester.Digester.parse(Ljava/net/URL;)Ljava/lang/Object;
    at org.apache.commons.chain.config.ConfigParser.parse(ConfigParser.java:190)

Resolve: commoms-chain-1.2 +  commons-digester 1.8.1
Discussion: commoms-chain 中解析 xml 文件用到了 commons-digester  ,2者的版本不协调导致出现该异常。

 

Problem: 2010-7-10 跟Q1相关,在解决的过程中,搜到:

This is caused by certain method is not found in the commons digester library. You need to upgrade yourcommons-digester.jar   to latest version.

于是将 commons-digester 更新最新的 2.0,可是又出现了新的异常:

2010-07-10 19:53:50,233 [main] ERROR org.apache.commons.digester.Digester - Digester.getParser:
java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null"

Resolve: 估计还是版本问题,于是试着将 commons-digester 版本换成 1.8 ,问题解决。

 

Problem: 2010-8 一个简单的Server程序,监听一个端口,等待接收数据进行处理,在本机(字符集UTF-8)环境下收到中文为乱码。

Resolve: 用 ISO-8859-1 进行转码。

 

Problem: 2010-9-12 调用WebService服务时出现如下异常(本机开发环境下用内嵌方式的jetty未出现异常,发布到本机Tomcat下也未出现该异常,发布到Wondows Server环境下的Tomcat 下时出现该异常):

Exception in thread "Thread-6" java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.cx f.wsdl.WSDLManager' defined in class path resource [META-INF/cxf/cxf.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInsta
ntiationException: Could not instantiate bean class [org.apache.cxf.wsdl11.WSDLManagerImpl]: Constructor threw exception; nested exception is java.lang.LinkageError: JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI ( from jar:file:/.../WEB-INF/lib/jaxb-impl-2.2.1.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (
See http://java.sun.com/j2se/1.6.0/docs/guide/standards/)
        at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:96)
        at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:86)
        at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:64)
        at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:53)
        at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:69)
        at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:106)
        at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:97)
        at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:62)
        at javax.xml.ws.Service.<init>(Service.java:57)

Resolve: 在异常信息中大致也已给出方法:

1) 通过 System.getProperty("java.endorsed.dirs")  得到运行环境的 endorsed 完整路径 (不同的JDK, Tomcat 版本下的endorsed 路径是不同的,我的JDK:1.6, Tomcat: 6.0.26);

2) 将webapp / lib 下的 jaxb-api-2.2.1.jar 复制到 endorsed 下(若 endorsed 不存在则创建它)。

Discussion: 按字面意思大致是xml解析时用到的类库版本不匹配。

 

Problem: 2011-7 使用 org.apache.commons.beanutils.BeanUtils 复制bean属性,对Date类型已配置了转换类,但copy到Date类型属性(属性值为null)时,报:No value specified。

Discussion: 疑似 commons-beanutils v1.8.3 的 bug,因为以前版本(v1.7.x)是ok的。

相关文章:

http://www.javastrong.com/?p=18025

http://apache-commons.680414.n4.nabble.com/jira-Created-BEANUTILS-387-beanutils-copyProperties-throws-a-ConversionException-No-value-specified-e-td3238319.html

 

Problem: 2012-6-14 JDK1.6环境下接口实现自动生成的代码带有注解 @Override,该代码在JDK1.5 环境下编译报错,错误指向注解处

Resolve: 去掉接口实现方法的 @Override注解。

Discussion: JDK1.6 认为覆盖父类方法与实现接口方法都是 override, 而JDK1.5只有覆盖父类方法才认为是 override,但JDK文档中未体现1.5和1.6的区别。

(Eclipse中,接口实现方法是 空心小三角,覆盖方法是 实心小三角;另 JDK1.5环境下接口实现自动生成的代码无 @Override  注解。)

 

Problem: 2013-3-13JTA应用单元测试时,以前pass的case failure了(事务未rollback)

Resolve: 改用xapool-1.6-beta.jar。

Discussion: 代码有所修改,用到了以下方法:

PreparedStatement java.sql.Connection.prepareStatement(String sql, String[] columnNames) throws SQLException

而xapool-1.4.jar 中尚未实现这个方法,因此failure。

 

但xapool-1.6-beta也存在一点问题,仍有几个prepareStatement方法未实现,于是准备修改xapool的源码,实现其未实现的方法。

下载xapool-1.6-beta源码建立开发工程,结果编译不过,最后发现需要使用JDK1.4版本方可编译。

另:xapool-1.4 貌似还存在着其他几个问题。

see: spring+jotm+jta+xapool+hibernate+oracle架构中多数据源出现的问题

 

Problem: 2013-6-9  代码修改后,运行JUnit testcase,然后failure了,查看原因,发现一个莫名其妙的异常信息:java.lang.ClassNotFoundException: com.vladium.emma.rt.RT    压根从没使用过这个class

Resolve:  clean & recompile

Discussion: 之前使用了 Coverage As 运行此 testcase,以致class中植入了某些东东。

see: EclEmma java.lang.NoClassDefFoundError: com/vladium/emma/rt/RT 错误解决

使用 EclEmma 进行覆盖测试

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值