首页 > 代码库 > 异常总结

异常总结

一、org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.ptn.uim.bean.UimServFileRecord.uimServFileDatas,

no session or session was closed

错误原因:

原因是在hibernate映射关系中由于延迟加载,session在调用前已经被关闭,,所以加载set属性时无可用session

解决方案:

在 @ManyToOne端设置fetch=FetchType.LAZY,@OneToMany端设置fetch=FetchType.EAGER,如下配置

@ManyToOne(cascade={CascadeType.REFRESH, CascadeType.MERGE}, optional=true, fetch=FetchType.LAZY)
@JoinColumn(name="uim_serv_file_record_id")
private UimServFileRecord uimServFileRecord;

                              

@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="uimServFileRecord")
private Set<UimServFileData> uimServFileDatas=new HashSet<UimServFileData>();
          

二、http://java.sun.com/jsp/jstl/core cannot be resolved either web.xml or the jar files deployed whth this application

解决办法:

有其他解决办法,但是最保守的做法是将jstl.jar、standard.jar这两个jar包直接拷贝到工程的lib目录下

            

三、

List<EvdoKeyInfo> evdoKeyInfos=null;

evdoKeyInfos.add(new EvdoKeyInfo(arrs[0], arrs[1])); --->会抛出空指针异常

解决办法:

List<EvdoKeyInfo> evdoKeyInfos=new ArrayList<EvdoKeyInfo>();

evdoKeyInfos.add(new EvdoKeyInfo(arrs[0], arrs[1]));

                        

四、Could not synchronize database state with session解决方法

错误原因:

修改数据库映射实体bean时,数据库未对应更新导致的

解决办法:

此处使用hibernate.hbm2ddl.auto自动生成表结构,把oracle中的表和序列号删除,然后启动tomcat重新生成表和序列号

                      

          

五、在myeclipse中安装svn,可能先前安装的adt插件无法使用解决办法

解决办法如下:

1)、首先找到myeclipse安装目录,如我的myeclipse安装在D:\dev\目录下

2)、接着在D:\dev\MyEclipse 6.5\eclipse\configuration目录下,找到org.eclipse.update文件夹并删除此文件夹

3)、重新启动myeclipse,大功告成

                    

六、java中url带中文参数或空格导致乱码问题

解决办法如下:

new String(message.getBytes("iso-8859-1"), "gb2312");

                   

七、启动PL/SQL Developer 报字符编码不一致错误 ,报类似如下异常

Database character set (AL32UTF8) and Client character set (ZHS16GBK) are different.
Character set conversion may cause unexpected results.

Note: you can set the client character set through the NLS_LANG environment variable or the NLS_LANG registry key in
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_Oracle_10g.

解决办法如下:

打开注册表,通过命令regedit。找到文中提示的路径,发现NLS_LANG键的值为: SIMPLIFIED CHINESE_CHINA.ZHS16GBK

修改为:SIMPLIFIED CHINESE_CHINA.AL32UTF8即可

           

八、org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

这是由于没有配置事务或事务配置没成功导致的

解决办法如下:

把其中的 getCurrentSession改成 openSession 就可以使用! 很明显是因为那个allowCreate的问题,当没有事务启动的时候,getCurrentSession是无法创建Session的! 说明配置事务没有成功!

                       

九、JavaMail的java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream错误

原因:MyEclipse6.5的javaee.jar中的mail包与JavaMail包有冲突。

解决办法如下:

在MyEclipse目录下,找javaee.jar包,用WinRar打包,删除里面的mail目录,然后加入mail.jar和activition.jar。

javaee.jar路劲D:\dev\myeclipse\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5

              

十、MyEclipse8.5安装插件

在Myeclipse8.5安装目录D:\dev\MyEclipse 8.5\dropins下,新建文件夹plugins 和 features ,然后把插件放到相应的文件夹下重启。

注意:如果文件夹plugins 和 features 已存在则不用新建。

                    

十一、tomcat部署项目

配置步骤如下:在D:\apache-tomcat-6.0.18\conf\Catalina\localhost(若/Catalina/localhost文件不存在则自己创建下)目录下配置部署文件,新建一个xml文件取名为DS_Trade.xml(文件名可以随意取,建议取个有意义的名字),添加如下内容:

<Context path="/DS_Trade"  debug="0" docBase="F:\workspace\DS_Trade\WebRoot"></Context>

 注意:DS_Trade跟Web Context-root(右击项目->Proterties->MyEclipse->Web)一致。

十二、用java调用webservice客户端
public static void main(String[] args) throws MalformedURLException {
    SimpleService simpleService=new SimpleService();
    SimpleServicePortType type=simpleService.getSimpleServiceHttpSoap11Endpoint();
    int price=type.getPrice().getReturn();
    String greet=type.getGreeting("ljq");
    System.out.println(price+" : "+greet);
}

 

十三、设置tomcat编码

<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
               connectionTimeout="20000"
               redirectPort="8443" />

特别引起我注意的是 URIEncoding="UTF-8" ,如果不设置,url上传递的中文就不能被正确解码。提醒各位使用utf-8编码的朋友注意使用tomcat的这个设置,在service.xml中配置。

           

十四、

JavaMail的java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

java.lang.NoClassDefFoundError: com/sun/activation/registries/LogSupport错误

环境:

MyEclipse和JDK1.6环境,加入JavaMail1.4.3的jar包。

运行测试报java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

原因:

MyEclipse6.5的javaee.jar中的mail包与JavaMail包有冲突。

解决:

在MyEclipse目录下,找javaee.jar包,用WinRar打包,删除里面的mail目录和activition目录,然后加入mail.jar和activition.jar

十五、java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z 解决办法

异常原因:
javaee.jar中的部分类与hibernate-jpa-2.0-api-1.0.0.Final.jar存在版本冲突.

解决办法:
在Java EE 5 Libraries中删除persitence的使用。

操作步骤:
用RAR打开javaee.jar,删除javax下的persitence目录,javaee.jar在D:\dev\MyEclipse 6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5\目录下。

 十六、tnsnames.ora配置

ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =http://www.mamicode.com/
(SERVER = DEDICATED)
(SERVICE_NAME = oracle服务名)
)
)
命令:tnsping ORCL

十七、url中的参数含有空格,导致请求失败的解决方案

解决办法:
%20代替url参数中的空格,如:urlStr=urlStr.replace(" ", "%20");