﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-溪风吴韵-随笔分类-J2SE</title><link>http://www.blogjava.net/kylixlu/category/28122.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 25 Apr 2008 06:35:19 GMT</lastBuildDate><pubDate>Fri, 25 Apr 2008 06:35:19 GMT</pubDate><ttl>60</ttl><item><title>掌握JAVA的标准</title><link>http://www.blogjava.net/kylixlu/archive/2008/04/25/195765.html</link><dc:creator>陆昱相</dc:creator><author>陆昱相</author><pubDate>Thu, 24 Apr 2008 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/kylixlu/archive/2008/04/25/195765.html</guid><wfw:comment>http://www.blogjava.net/kylixlu/comments/195765.html</wfw:comment><comments>http://www.blogjava.net/kylixlu/archive/2008/04/25/195765.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kylixlu/comments/commentRss/195765.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kylixlu/services/trackbacks/195765.html</trackback:ping><description><![CDATA[&nbsp; 偶尔在网上发现的一片关于掌握JAVA的标准，感觉有点意思，虽然在一些观点上有些偏颇，但作为学习JAVA的引导尚可。至于原创是谁没有必要考证。
<p><font face="Times New Roman">　　时常看到一些人说掌握了Java，但是让他们用Java做一个实际的项目可能又困难重重，在这里，笔者根据自己的一点理解斗胆提出自己的一些对掌握Java这个说法的标准，当然对于新手，也可以提供一个需要学习哪些内容的参考。另外这个标准仅限于J2SE部分。</font></p>
<p><font face="Times New Roman">　　1、语法：必须比较熟悉，在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正</font></p>
<p><font face="Times New Roman">　　2、命令：必须熟悉JDK带的一些常用命令及其常用选项，命令至少需要熟悉：appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver，如果这些命令你没有全部使用过，那么你对java实际上还很不了解</font></p>
<p><font face="Times New Roman">　　3、工具：必须至少熟练使用一种IDE的开发工具，例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop，包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试</font></p>
<p><font face="Times New Roman">　　4、API：Java的核心API是非常庞大的，但是有一些内容笔者认为是必须熟悉的，否则不可能熟练的运用Java，包括</font></p>
<p><font face="Times New Roman">　　1）、java.lang包下的80％以上的类的功能的灵活运用</font></p>
<p><font face="Times New Roman">　　2）、java.util包下的80％以上的类的灵活运用，特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer</font></p>
<p><font face="Times New Roman">　　3）、java.io包下的60％以上的类的使用，理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合</font></p>
<p><font face="Times New Roman">　　4）、java.math包下的100％的内容。</font></p>
<p><font face="Times New Roman">　　5）、java.net包下的60％以上的内容，对各个类的功能比较熟悉。</font></p>
<p><font face="Times New Roman">　　6）、java.text包下的60％以上的内容，特别是各种格式化类</font></p>
<p><font face="Times New Roman">　　7）、熟练运用JDBC</font></p>
<p><font face="Times New Roman">　　8）、java.security包下40％以上的内容，如果对于安全没有接触的话根本就不可能掌握java</font></p>
<p><font face="Times New Roman">　　9）、AWT的基本内容，包括各种组件事件、监听器、布局管理器、常用组件、打印。</font></p>
<p><font face="Times New Roman">　　10）、Swing的基本内容，和AWT的要求类似</font></p>
<p><font face="Times New Roman">　　11）、XML处理，熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理</font></p>
<p><font face="Times New Roman">　　5、测试：必须熟悉使用junit编写测试用例完成代码的自动测试</font></p>
<p><font face="Times New Roman">　　6、管理：必须熟悉使用ant完成工程管理的常用任务，例如工程编译、生成javadoc、生成jar、版本控制、自动测试</font></p>
<p><font face="Times New Roman">　　7、排错：应该可以根据异常信息比较快速的定位问题的原因和大致位置。</font></p>
<p><font face="Times New Roman">　　8、思想：必须掌握OOP的主要要求，这样使用Java开发的系统才能是真正的Java系统</font></p>
<p><font face="Times New Roman">　　9、规范：编写的代码必须符合流行的编码规范，例如类名首字母大写，成员和方法名首字母小写，方法名的第一个单词一般是动词，包名全部小写等，这样程序的可读性才比较好</font></p>
<img src ="http://www.blogjava.net/kylixlu/aggbug/195765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kylixlu/" target="_blank">陆昱相</a> 2008-04-25 00:02 <a href="http://www.blogjava.net/kylixlu/archive/2008/04/25/195765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生成可执行jar文件的教程</title><link>http://www.blogjava.net/kylixlu/archive/2008/01/20/176621.html</link><dc:creator>陆昱相</dc:creator><author>陆昱相</author><pubDate>Sun, 20 Jan 2008 11:16:00 GMT</pubDate><guid>http://www.blogjava.net/kylixlu/archive/2008/01/20/176621.html</guid><wfw:comment>http://www.blogjava.net/kylixlu/comments/176621.html</wfw:comment><comments>http://www.blogjava.net/kylixlu/archive/2008/01/20/176621.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kylixlu/comments/commentRss/176621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kylixlu/services/trackbacks/176621.html</trackback:ping><description><![CDATA[若要生成一个名为 cal.jar 的可执行jar文件:(文件名可以是任意合法名字)
<p><font face="Times New Roman">&nbsp;&nbsp; (这是我认为简单实用的一种方法,还有很多别的方法在此就不介绍了)</font></p>
<p><font face="Times New Roman">&nbsp;&nbsp; 第一 把程序生成的所有字节码文件(即.class文件)放在同一个目录下(如:D:/chat/).</font></p>
<p><font face="Times New Roman">&nbsp;&nbsp; 第二 在该目录下新建一个manifest.mf文件，文件内容格式如下（划线中内容）：</font></p>
<p><font face="Times New Roman">&nbsp;&nbsp; manifest.mf文件中的格式：</font></p>
<p><font face="Times New Roman">&nbsp;&nbsp; --------------------------------</font></p>
<p><font face="Times New Roman">&nbsp;&nbsp; Main-Class: calDemo</font></p>
<p><font face="Times New Roman">&nbsp;&nbsp; --------------------------------</font></p>
<p><font face="Times New Roman">&nbsp;&nbsp; 注意: calDemo代表主类名(即要运行的类名,只能有一个,不要文件扩展名)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Main与Class中间不是下划线,而是短横线<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Main-Class:与calDemo中间必须要有空格<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Main-Class: calDemo之后必须要回车</font></p>
<font face="Times New Roman">
<p><br />
&nbsp;&nbsp; 文件中还可以加入一些其他信息如：(先不要加,以免出错)</p>
<p>&nbsp;&nbsp; --------------------------------------------<br />
&nbsp;&nbsp; Manifest-Version: 1.0<br />
&nbsp;&nbsp; Created-By: 1.4.1_02 (Sun Microsystems Inc.)<br />
&nbsp;&nbsp; --------------------------------------------</p>
<p>&nbsp;&nbsp; 然后用jar命令生成可执行的jar文件,例如:</p>
<p>&nbsp;&nbsp; (执行该命令前先要转到该目录下 D:/chat/ )</p>
<p>&nbsp;&nbsp; jar cvfm cal.jar manifest.mf *.class</p>
<p>&nbsp;&nbsp; jar用法：(仅供参考,初学者可跳过这部分内容)</p>
<p>&nbsp;&nbsp; jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...</p>
<p>&nbsp;&nbsp; 选项：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -c&nbsp; 创建新的存档<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -t&nbsp; 列出存档内容的列表<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -x&nbsp; 展开存档中的命名的（或所有的〕文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -u&nbsp; 更新已存在的存档<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -v&nbsp; 生成详细输出到标准输出上<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -f&nbsp; 指定存档文件名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -m&nbsp; 包含来自标明文件的标明信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -0&nbsp; 只存储方式；未用ZIP压缩格式<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -M&nbsp; 不产生所有项的清单（manifest〕文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -i&nbsp; 为指定的jar文件产生索引信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -C&nbsp; 改变到指定的目录，并且包含下列文件：</p>
<p>&nbsp;&nbsp; 如果一个文件名是一个目录，它将被递归处理。</p>
<p>&nbsp;&nbsp; 清单（manifest〕文件名和存档文件名都需要被指定，按'm' 和 'f'标志指定的相同顺序。</p>
<p>&nbsp;&nbsp; 示例1：将两个class文件存档到一个名为 'classes.jar' 的存档文件中：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jar cvf classes.jar Foo.class Bar.class</p>
<p>&nbsp;&nbsp; 示例2：用一个存在的清单（manifest）文件 'mymanifest' 将 foo/ 目录下的所有</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件存档到一个名为 'classes.jar' 的存档文件中：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jar cvfm classes.jar mymanifest -C foo/ .</font></p>
<img src ="http://www.blogjava.net/kylixlu/aggbug/176621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kylixlu/" target="_blank">陆昱相</a> 2008-01-20 19:16 <a href="http://www.blogjava.net/kylixlu/archive/2008/01/20/176621.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>两种Java容器类List和Set分析</title><link>http://www.blogjava.net/kylixlu/archive/2008/01/20/176619.html</link><dc:creator>陆昱相</dc:creator><author>陆昱相</author><pubDate>Sun, 20 Jan 2008 11:12:00 GMT</pubDate><guid>http://www.blogjava.net/kylixlu/archive/2008/01/20/176619.html</guid><wfw:comment>http://www.blogjava.net/kylixlu/comments/176619.html</wfw:comment><comments>http://www.blogjava.net/kylixlu/archive/2008/01/20/176619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kylixlu/comments/commentRss/176619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kylixlu/services/trackbacks/176619.html</trackback:ping><description><![CDATA[容器类可以大大提高编程效率和编程能力，在Java2中，所有的容器都由SUN公司的Joshua Bloch进行了重新设计，丰富了容器类库的功能。
<p><font face="Times New Roman">　　Java2容器类类库的用途是&#8220;保存对象&#8221;，它分为两类：</font></p>
<p><font face="Times New Roman">　　Collection----一组独立的元素，通常这些元素都服从某种规则。List必须保持元素特定的顺序，而Set不能有重复元素。</font></p>
<p><font face="Times New Roman">　　Map----一组成对的&#8220;键值对&#8221;对象，即其元素是成对的对象，最典型的应用就是数据字典，并且还有其它广泛的应用。另外，Map可以返回其所有键组成的Set和其所有值组成的Collection，或其键值对组成的Set，并且还可以像数组一样扩展多维Map，只要让Map中键值对的每个&#8220;值&#8221;是一个Map即可。</font></p>
<p><font face="Times New Roman">　　1.迭代器</font></p>
<p><font face="Times New Roman">　　迭代器是一种设计模式，它是一个对象，它可以遍历并选择序列中的对象，而开发人员不需要了解该序列的底层结构。迭代器通常被称为&#8220;轻量级&#8221;对象，因为创建它的代价小。</font></p>
<p><font face="Times New Roman">　　Java中的Iterator功能比较简单，并且只能单向移动：</font></p>
<p><font face="Times New Roman">　　(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时，它返回序列的第一个元素。</font></p>
<p><font face="Times New Roman">　　(2) 使用next()获得序列中的下一个元素。</font></p>
<p><font face="Times New Roman">　　(3) 使用hasNext()检查序列中是否还有元素。</font></p>
<p><font face="Times New Roman">　　(4) 使用remove()将迭代器新返回的元素删除。</font></p>
<p><font face="Times New Roman">　　Iterator是Java迭代器最简单的实现，为List设计的ListIterator具有更多的功能，它可以从两个方向遍历List，也可以从List中插入和删除元素。</font></p>
<p><font face="Times New Roman">　　2.List的功能方法</font></p>
<p><font face="Times New Roman">　　List(interface): 次序是List最重要的特点；它确保维护元素特定的顺序。List为Collection添加了许多方法，使得能够向List中间插入与移除元素(只推荐LinkedList使用)。一个List可以生成ListIterator，使用它可以从两个方向遍历List，也可以从List中间插入和删除元素。</font></p>
<p><font face="Times New Roman">　　ArrayList: 由数组实现的List。它允许对元素进行快速随机访问，但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList，而不是用来插入和删除元素，因为这比LinkedList开销要大很多。</font></p>
<p><font face="Times New Roman">　　LinkedList: 对顺序访问进行了优化，向List中间插入与删除得开销不大，随机访问则相对较慢(可用ArrayList代替)。它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast()，这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。</font></p>
<p><font face="Times New Roman">　　3.Set的功能方法</font></p>
<p><font face="Times New Roman">　　Set(interface): 存入Set的每个元素必须是唯一的，因为Set不保存重复元素。加入Set的Object必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。</font></p>
<p><font face="Times New Roman">　　HashSet: 为快速查找而设计的Set。存入HashSet的对象必须定义hashCode()。</font></p>
<p><font face="Times New Roman">　　TreeSet: 保持次序的Set，底层为树结构。使用它可以从Set中提取有序的序列。</font></p>
<p><font face="Times New Roman">　　LinkedHashSet: 具有HashSet的查询速度，且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时，结果会按元素插入的次序显示。</font></p>
<p><font face="Times New Roman">　　HashSet采用散列函数对元素进行排序，这是专门为快速查询而设计的；TreeSet采用红黑树的数据结构进行排序元素；LinkedHashSet内部使用散列以加快查询速度，同时使用链表维护元素的次序，使得看起来元素是以插入的顺序保存的。需要注意的是，生成自己的类时，Set需要维护元素的存储顺序，因此要实现Comparable接口并定义compareTo()方法。</font></p>
<img src ="http://www.blogjava.net/kylixlu/aggbug/176619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kylixlu/" target="_blank">陆昱相</a> 2008-01-20 19:12 <a href="http://www.blogjava.net/kylixlu/archive/2008/01/20/176619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java常见错误以及可能原因集锦</title><link>http://www.blogjava.net/kylixlu/archive/2008/01/18/176185.html</link><dc:creator>陆昱相</dc:creator><author>陆昱相</author><pubDate>Fri, 18 Jan 2008 05:25:00 GMT</pubDate><guid>http://www.blogjava.net/kylixlu/archive/2008/01/18/176185.html</guid><wfw:comment>http://www.blogjava.net/kylixlu/comments/176185.html</wfw:comment><comments>http://www.blogjava.net/kylixlu/archive/2008/01/18/176185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kylixlu/comments/commentRss/176185.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kylixlu/services/trackbacks/176185.html</trackback:ping><description><![CDATA[<div style="position: relative" _eventid="3" _madepositioned="true">&nbsp;0、 需要标识符 <br />
a) 不在函数内 <br />
<br />
1、 非法表达式开始 <br />
b) 可能:丢失括号 . <br />
<br />
2. no data found <br />
a) 可能:setInt(1,100)中,没有100这个值 <br />
<br />
3. 找不到符号 <br />
a) 可能:没导入包 <br />
<br />
4. 指定了无效URL <br />
a) 可能:数据库名或IP错误,即连接出错 <br />
<br />
5. 类路径没有找到 <br />
a) 可能: ClassNotFoundException: oracle.jdbc.driver.OracleDriver <br />
b) 原因: 一般是指包名写错,或者没有import包,或者没有在类路径中找到jar文件 <br />
c) 解决: 没有加载Oracle驱动jar,在.bash_profile中把ojdbc14.jar加进来 <br />
<br />
6. 空指针异常 <br />
a) 可能: 数据源错误 比如数据库名或IP错误 <br />
<br />
7. 不能执行查询 <br />
a) 可能: 数据库中表的问题,比如列名不存在 <br />
<br />
8. invalid identity <br />
a) 可能: 列名出错 <br />
<br />
9. 若在数据库中创建了 两个sequence ,运行时出现异常可能是先后执行了多次select语句,导致与原有的序列号产生冲突 <br />
<br />
10. 表名或列名不存在 <br />
a) 可能:表不存在或者没有插入数据到表中 <br />
<br />
11. 不支持的类,类的版本错误 <br />
a) 可能:没有导入jdk5.0,或者编译器仍为1.4 <br />
<br />
12. MappingNotFoundException <br />
a) Maybe: In the Eclipse Not refersh , or not exist in the dirctory <br />
<br />
13. HibernateException: /hibernate.cfg.xml not found <br />
a) Maybe1: hibernate.cfg.xml not in the root directory <br />
b) Maybe2: Could not parse configuration . <br />
c) resolve: database not connect or use another database <br />
<br />
14. ConstraintViolationException <br />
a) Maybe: used a not true database <br />
<br />
15. 驱动没有找到 或者 JDBC Driver not found <br />
可能：连接数据库的驱动jar包不存在或者版本不一致，比如将旧的版本换成新的会造成该类错误 <br />
16. 空指针异常 ， <span class="hilite1">java</span>.lang.NullPointerException <br />
a) 可能1：数据库连接出错，比如在hibernate.cfg.xml中的数据错误会导致异常。 <br />
<br />
17. 数据插入异常 ，GenericJDBCException: could not insert <br />
a) 可能1：没有建立表或者表中没有任何数据 <br />
b) 可能2：插入数据后没有执行提交语句：commit <br />
<br />
18. LazyInitializationException 或者延迟加载异常 <br />
a) 可能1：没有在查询语句中加fetch <br />
<br />
19. IdentifierGenerationException <br />
a) 可能1：高位表没有初始化（比如hi_value中没有记录) <br />
<br />
20. could not initialize a collection: [hibernate.entity.Role.modules#32768] Syntax error: Encountered "-" at line 1, column 132. <br />
a) 错误原因：&lt;set name="modules" table="module-role" lazy="false"&gt;红色字部分中&#8220;-&#8221;为非法字符，替换为module_role <br />
<br />
21. could not insert collection rows: [hibernate.entity.Module.roles#1] <br />
在Module.hbm.xml文件的如下配置中加入inverse=&#8221;true&#8221; <br />
&lt;set name="roles" table="module_role" inverse="true"&gt; <br />
<br />
22．在部署Struts时，出现如下错误信息： <br />
HTTP Status 404 - Servlet action is not available <br />
<br />
type Status report <br />
message Servlet action is not available <br />
description The requested resource (Servlet action is not available) is not available. <br />
问题原因： <br />
1.、web.xml文件中未配置ActionServlet。 <br />
2、struts-config.xml文件未配置你要访问的Action。 <br />
3、你的jsp文件form标记中action属性的路径名称错误。 <br />
4、非以上三种情况。 <br />
针对以上4种情况相应的解决方案如下： <br />
1、在web.xml文件中加上ActionServlet的配置信息 <br />
?????? /WEB-INF/struts-config.xml? <br />
?2、在struts-config.xml文件检查你要访问的Action配置文件。 <br />
3、检查jsp文件form标记中action属性的路径名称是否与struts-config.xml文件中action标记的path属性的路径名称一致。 <br />
4、非以上情况的解决办法就是检查web容器的log日志，如果时tomcat则检查下logs目录下的localhost_log文件，看里边是否记录有错误信息，然后根据错误信息提示将其纠正。 <br />
<br />
23．<span class="hilite1">java</span>.lang.NoClassDefFoundError: org/apache/commons/beanutils/Converter <br />
缺少spring-framework-2.0.3\lib\jakarta-commons\commons-beanutils.jar <br />
<br />
24. <br />
ava 代码Caused by: <span class="hilite1">java</span>.lang.NoClassDefFoundError: org/objectweb/asm/Type <br />
缺少spring-framework-2.0.3\lib\asm\asm-2.2.2.jar包,版本不同,该包的名字有相应的区别 <br />
<br />
<span class="hilite1">java</span> 代码Caused by: <span class="hilite1">java</span>.lang.NoClassDefFoundError: org/dom4j/DocumentException <br />
缺少spring-framework-2.0.3\lib\dom4j\dom4j-1.6.1.jar包,版本不同,该包的名字有相应的区别 <br />
把这个包进去就可以了：\Spring206\lib\dom4j、dom4j-1.6.1.jar <br />
<br />
<span class="hilite1">java</span> 代码Caused by: <span class="hilite1">java</span>.lang.NoClassDefFoundError: org/apache/commons/collections/SequencedHashMap <br />
缺少spring-framework-2.0.3\lib\jakarta-commons\commons-collections.jar包,版本不同,该包的名字有相应的区别 <br />
<br />
<span class="hilite1">java</span> 代码Caused by: <span class="hilite1">java</span>.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter <br />
缺少spring-framework-2.0.3\lib\cglib\cglib-nodep-2.1_3.jar包,版本不同,该包的名字有相应的区别 <br />
<br />
<span class="hilite1">java</span> 代码Caused by: <span class="hilite1">java</span>.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor <br />
缺少hibernate-3.2\lib\asm.jar包,版本不同,该包的名字有相应的区别 <br />
<br />
<span class="hilite1">java</span> 代码 <br />
org.hibernate.exception.<span class="hilite2">SQL</span>GrammarException: could not load an entity: [www.proudsoul.xml.User#1] <br />
<span class="hilite1">JAVA</span>工程与WEB工程包的区别:一个是asm.jar,一个是jta.jar <br />
<br />
<span class="hilite1">java</span> 代码Caused by: <span class="hilite1">java</span>.lang.NoClassDefFoundError: <span class="hilite1">java</span>x/transaction/TransactionManager <br />
缺少spring-framework-2.0.3\lib\j2ee\jta.jar包,版本不同,该包的名字有相应的区别此种错误请检查相应的***.hbm.xml配置文件的配置 <br />
<br />
25, <br />
Exception in thread "main" org.springframework.dao.InvalidDataAccessResourceUsageException: could not get next sequence value; nested exception is org.hibernate.exception.<span class="hilite2">SQL</span>GrammarException: could not get next sequence value <br />
Caused by: org.hibernate.exception.<span class="hilite2">SQL</span>GrammarException: could not get next sequence value <br />
原因：没有加Sequence或者数据库的方言写错了 <br />
<br />
26, <br />
我的配置文件 <br />
&lt;id name="id" column="id"&gt; <br />
&lt;generator class="native" /&gt; <br />
&lt;/id&gt; <br />
然后我运行保存一条数据进去 <br />
The database returned no natively generated identity value <br />
就会报这个错误 <br />
因为你native是根据看底层数据库的能力选择identity, sequence 或者hilo中的一个 <br />
而我建表的时候id没有指定 <br />
alter table `student` change `id` `id` int auto_increment <br />
我们把我们的表的结构小小的改动一下就没问题了 <br />
<br />
27, <br />
UpdateManager无法启动2007-08-09 15:21如果在应用程序安装过程中，暴力中断安装程序，会出现如下状况：1.apt-get remove 和dpkg --remove 无法删除软件 2.UpdateManager无法启动3.新立得软件包管理程序无法启动 <br />
以上可能是deb损坏之类造成的 <br />
sudo dpkg -r <span class="hilite2">sql</span>dveloper <br />
正在读取软件包列表... 完成 <br />
正在分析软件包的依赖关系树... 完成 <br />
E: 软件包 <span class="hilite2">sql</span>developer 需要重新安装，但是我无法找到相应的安装文件。 <br />
解决方法：1.从 /var/lib/dpkg/status 中把对应的段删掉 <br />
重要：修改之前请先备份 <br />
在status中找到你对应的包删除就OK了... <br />
<br />
28, <br />
Exception in thread "main" <span class="hilite1">java</span>.lang.NoClassDefFoundError: antlr/ANTLRException <br />
少了antlr-2.7.5H3.jar包,从D:\eclipse\eclipse\plugins\com.genuitec.org.hibernate.eclipse_4.1.1\myeclipse-data\3.0\lib <br />
<br />
29, <br />
Caused by: <br />
<span class="hilite1">java</span>.lang.NoClassDefFoundError: <span class="hilite1">java</span>x/transaction/Synchronization <br />
缺少Spring206\lib\j2ee\jta.jar <br />
<br />
30, <br />
Caused by: <br />
<span class="hilite1">java</span>.lang.IllegalArgumentException: Cannot convert value of type [$Proxy3] to required type [business.impl.PriceBiz] for property 'priceBiz': no matching editors or conversion strategy found <br />
在<span class="hilite1">java</span>类中设置priceBiz时应该设置的是接口PriceBizIf，而非实现类 <br />
<br />
31, 数组越界 <br />
可能1: 在命令行后面需要加入参数. <br />
可能2:加入的参数错误 <br />
32, car is not mapped <br />
可能1: 在cfg.xml中没有增加映射的hbm.xml文件在&lt;mapping.../&gt;中 <br />
<br />
33, 属性没有找到 <br />
可能1: hbm.xml文件中的 &lt;property name =""&gt; 有问题, 也许是name的值与对应类中的成员名不一致 <br />
<br />
34,<span class="hilite2">SQL</span>Exception: 无当前连接 可能1:在比如创建帐户时没有对相应的方法添加到&lt;list&gt;中去,比如这个没有加入:&lt;value&gt;newAccount&lt;/value&gt; <br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="transactionAdvisor"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="org.springframework.aop.support.NameMatchMethodPointcutAdvisor"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="advice"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ref&nbsp;</span><span style="color: #ff0000">bean</span><span style="color: #0000ff">="advice"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="mappedNames"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">list</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">transfer</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">list</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
35,<span class="hilite2">SQL</span>Exception: Syntax error: Encountered "table" at line 1, column 8. <br />
可能1;执行<span class="hilite2">SQL</span>时出现冲突,可能是<span class="hilite2">SQL</span>语句中使用了关键字作为变量来用,比如 <br />
update order set balance=1000000; <br />
其中order被用作表名来使用,这是错误的,因为order是个关键字,用在order by中 <br />
<br />
36, Servlet /Spring-WebMvc threw load() exception <br />
org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null". <br />
jar包的冲突,spring-1.2.6.jar和spring.jar出现在一个war的目录中:JBoss/server/all/deploy/Spring-WebMvc.war/WEB-INF/lib <br />
<br />
37, <span class="hilite1">java</span>.<span class="hilite2">sql</span>.<span class="hilite2">SQL</span>Exception: 当事务仍处于活动状态时，无法关闭连接。 <br />
<br />
<br />
38 , <br />
validateJarFile(/home/soft01/Tomcat/webapps/sms-token-struts/WEB-INF/lib/servlet-api.jar) <br />
Servlet /sms-struts-tiles threw load() exception <br />
<span class="hilite1">java</span>.lang.ClassNotFoundException: org.apache.struts.action.ActionServlet <br />
原因:在WEB-INF/lib/ 目录下有servlet-api.jar与/Tomcat/common/lib目录下的servlet-api.jar冲突了,把WEB-INF/lib/下的servlet-api.jar删除就可以了 <br />
<br />
39,<span class="hilite1">java</span>.lang.ClassNotFoundException: org.springframework.web.struts.ContextLoaderPlugIn <br />
Marking servlet action as unavailable <br />
10:30:47,088 ERROR [/NetCT_OSS]:3953 - Servlet /NetCT_OSS threw load() exception <br />
<span class="hilite1">java</span>x.servlet.UnavailableException <br />
<br />
40,org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null". <br />
缺少MyEclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.5.0/data/2.0/dist/modules/spring-struts.jar <br />
<br />
41,Caused by: <span class="hilite1">java</span>.<span class="hilite2">sql</span>.BatchUpdateException: ORA-02291: integrity constraint (SD0702.FK82D343CF49A4B831) violated - parent key not found <br />
Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update <br />
有可能是ID生成策略的问题,我将它XML映射文件改成&lt;generator class="increment" /&gt;就好了 <br />
<br />
42, <br />
2007-08-19 16:21:43,290 ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/OSS].[action]] - Servlet.service() for servlet action threw exception <br />
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [entity.Module#2] <br />
<span class="hilite1">java</span>.util.ConcurrentModificationException <br />
原因:已经有对象拥有了所选择的module,用clear(),而不是remove(); <br />
<br />
43, <br />
ERROR [org.apache.catalina.session.ManagerBase] - IOException while loading persisted sessions: <span class="hilite1">java</span>.io.InvalidClassException: entity.Module; local class incompatible: stream classdesc serialVersionUID = -5988350031935445758, local class serialVersionUID = -297934247726484429 <br />
<span class="hilite1">java</span>.io.InvalidClassException: entity.Module; local class incompatible: stream classdesc serialVersionUID = -5988350031935445758, local class serialVersionUID = -297934247726484429 <br />
在Module中加上一个关键字:transient <br />
<br />
44, <br />
Caused by: <span class="hilite1">java</span>.<span class="hilite2">sql</span>.BatchUpdateException: ORA-02292: integrity constraint (SD0702.SYS_C00132664) violated - child record found <br />
原因:有其他的表引用了该表的外建,所以报这个异常,如果没有引用就不会出现 <br />
<br />
45, <br />
出现数组越界的时候,看看是不是循环时没有加=,比如: <br />
for(int i = 1; i&lt;arr.length;i++)可以改成 <br />
for(int i = 1; i&lt;=arr.length;i++) <br />
<br />
<br />
46.如果使用Ant和Junit是被报找不到test,检查一下是否误用了private <br />
出错信息： <br />
&lt;failure message="No tests found in test.AllTest" type="junit.framework.AssertionFailedError"&gt;junit.framework.AssertionFailedError: No tests found in test.AllTest <br />
该错误有个很特别的特点，当你不通过ant来运行测试，而是通过AllTest类来运行的话，可以正常运行。小心哦 <br />
<br />
47.如果遇到报：表名无效，且jvm报严重错误，看看是不是用了数据库的保留关键字来做表名了，如User。 <br />
<br />
48.使用ant时必须小心ant的classpath它用的不是IDE的classpath，小心! <br />
<br />
49.小心下边的异常， <br />
exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of xp.bean.Users.?" type="net.sf.hibernate.PropertyAccessException"&gt;<span class="hilite1">java</span>.lang.ClassCastException at xp.bean.UsersMetaClass1.setPropertyValues(&lt;generated&gt;) at net.sf.hibernate.persister.AbstractEntityPersister.setPropertyValues <br />
上次出现该错错误的原因是: <br />
源文件里我的class类型为一个类Contact contact <br />
而跑到mapping里却成了Set,呵呵厉害。 <br />
<br />
50.突然间冒出大量的NullPointException <br />
重新build一下。 <br />
<br />
51.="Flush during cascade is dangerous - this might occur if an object was deleted and then re-saved by cascade" <br />
<br />
52.Tapestry的出错信息： <br />
Class com.bookshop.Hello does not implement the IPage interface. <br />
location: context:/WEB-INF/Home.page, line 6 <br />
原因：与显示有关的哪个<span class="hilite1">java</span>类没有从IPage家族继承。 <br />
<br />
53.使用ant时给出的路径好象不允许出现空格。 <br />
<br />
54.由于使用ant时用junit做测试的话，classpath中出现j2ee.jar的话，问题多多。例如xml格式的log文件生成不了，莫名其妙的NullPointException等。所以我设置了两个包个包含j2ee.jar，为编译用；一个没有,为junit用 <br />
<br />
55.进行单元测试时，在查询返回后应马上assertNotNull()，这样可以更快速的定位NullPointException <br />
<br />
56.要使用ResourceBundle的话，要千万小心。必须用日志记录下它的状态。还有该属性文件应该放在classes下面。 <br />
<br />
57.当要显示任何页面时，都被提示无效，那么应该检查一下lib目录了，还有一些很奇怪的异常，例如你明明可以找到一个类但是服务器却提示ClassNotDefException，那么估计是缺少了该类所必须的包了。或者多了不兼容的包，如, xdoclet系列包不被struts的lib目录所兼容 <br />
<br />
58.编写clone时从<span class="hilite1">Java</span>编程思想(2nd)上学到的(732)： <br />
.引数传递过程中会自动产生别名(alias)。 <br />
.没有局域对象(local objects)，只有局域性的(local)references。 <br />
.reference受范围(scope)的限制，对象则否。 <br />
.对象的寿命从来不是<span class="hilite1">Java</span>的讨论议题(因为有垃圾回收机制) <br />
<br />
59.try catch finally的域居然是分离的。 <br />
<br />
60.jsp乱码的其中一个原因：charset="gb2312" 等号"="的两边不允许有空格。 <br />
<br />
61.我的基于Displaytag的简单报表解决方案。 <br />
http://displaytag.sourceforge.net/ <br />
下载displaytag.jar和displaytag.tld <br />
displaytag.jar放在lib目录，而displaytag.tld放在WEB-INF目录，在web.xml中为displaytag.tld声明一下。 <br />
&lt;taglib&gt; <br />
&lt;taglib-uri&gt;http://displaytag.org&lt;/taglib-uri&gt; <br />
&lt;taglib-location&gt;/WEB-INF/displaytag.tld&lt;/taglib-location&gt; <br />
&lt;/taglib&gt; <br />
在jsp里使用前，加上 <br />
&lt;%@ taglib uri="http://displaytag.org" prefix="display" %&gt; <br />
<br />
注意该软件有个bug，他要用的一个包common-lang.jar版本必须在2.0以上。 <br />
如果碰到下面异常，则应坚持一下是否该包的版本问题。 <br />
<span class="hilite1">java</span>.lang.NoSuchMethodError: org.apache.commons.lang.<span class="hilite5">String</span>Utils.capitalize(L<span class="hilite1">java</span>/lang/<span class="hilite5">String</span>;)L<span class="hilite1">java</span>/lang/<span class="hilite5">String</span>; <br />
然后就可放心使用了 <br />
&lt;display:column property = "xxx"/&gt;其中xxx为对象中的带有getter的变量&gt;。 <br />
定义表格的样子，用css定义。如 <br />
TABLE.its THEAD TR { <br />
BACKGROUND-COLOR: #69c <br />
} <br />
TABLE.its TR.even { <br />
BACKGROUND-COLOR: #def <br />
} <br />
在使用分页时，可能会出现这种情况，点击其他页时，弹出下载窗口，让你下载当前jsp页面，这是因为你在当前页面读取了数据的缘故。解决办法为在action里读取数据而不是在jsp里。可以参考 <br />
http://www.displaytag.org/example-paging.jsp?d-26189-p=2 <br />
<br />
62.使用displaytag时，在一列中放入多个元素 <br />
必须在display:table中定义一个id <br />
&lt;display:table name = "allBooks" class = "its" pagesize = "5" id = "item"&gt; <br />
&lt;display:column title = "操作"&gt; <br />
&lt;a href = "/Bookshop/admin/bookManagement.do?action=view&amp;id=&lt;%=((Book)item).getId()%&gt;" target = "_blank" &gt;查看&lt;/a&gt; <br />
&lt;a href = "/Bookshop/admin/bookManagement.do?action=edit&amp;id=&lt;%=((Book)item).getId()%&gt;"&gt;编辑&lt;/a&gt; <br />
&lt;a href = "/Bookshop/admin/bookManagement.do?action=delete&amp;id=&lt;%=((Book)item).getId()%&gt;"&gt;删除&lt;/a&gt; <br />
&lt;/display:column&gt; <br />
要在displaytag中使用链接，必须具备paramId，否则不显示为链接 <br />
&lt;display:column property = "product.name" href = "viewDetailV2.0.jsp" title = "书名" paramId="item" paramProperty="product.id"/&gt; <br />
可以这样使用display <br />
&lt;display:column property = "product.id" title = "ID"/&gt; <br />
其中product为对象 <br />
<br />
63.&lt;bean:write name = "xxxx" property = "xxx"/&gt; 可以直接取到session.getAttribute()取到的东西。 <br />
<br />
64.实验struts-upload例子时要注意的地方： <br />
1.If you would rather write this file to another file, please check here: <br />
这一行要打钩 <br />
2.If you checked the box to write to a file, please specify the file path here: <br />
在这里要重命名如：c:\b.jpg <br />
上传成功的话，会出现提示 The file has been written to "c:\b.jpg" <br />
<br />
65.Hibernate的like可以这么用： <br />
Query query = session.createQuery("from src.persistent.Book as book where upper(book.name) like :name "); <br />
query.set<span class="hilite5">String</span>("name", "%"); <br />
result = query.list(); <br />
<br />
66.Hibernate出现 duplicate import : className <br />
异常也可能是因为忘了为持久类在configuration中addClass了 <br />
<br />
67.&lt;logic:iterate id = "author" name = "authors"&gt; <br />
name所引用的是session里的attribute。 <br />
<br />
68.如果发现要出现询问下载的情况，有可能是因为要跳转的页面出现了问题。试试在要跳转到的页删掉 <br />
&lt;%@ page contentType="text/html; charset=gb2312"%&gt; <br />
<br />
69.如果JSP页面跳转时出现下边的错误信息： <br />
The request sent by the client was syntactically <span class="hilite4">incorrect</span> (Invalid path /web/shoppingCart was requested). <br />
原因是struts-config的action = "x" 写成了 action = "x.do" <br />
<br />
70.在struts中，strut-config.xml中，forward时使用redirect = "true"可以将.do重定向为.jsp <br />
<br />
71.以后在判断相等性之前先用logger把两个值显示出来。 <br />
<br />
72.从session里getAttribute后，修改并不需要重新setAttribute一次。 <br />
<br />
73.在hibernate中使用subclass是一棵继承树共用一个表，仅生成个mapping。 <br />
每个类中必须有discrimator-value。在最上层的类中必须声明： <br />
@hibernate.discriminator column = "class"。 <br />
不可以将子类添加到configuration里去。(即不可addClass(子类)) <br />
使用Xdoclet的建立subclass的例子(该类是父类) <br />
/** <br />
* @hibernate.class discriminator-value = "customer" <br />
* @hibernate.discriminator column = "class" <br />
*/ <br />
<br />
而使用joined-subclass则是一类一表,也不许将子类添加进configuration里去。 <br />
/** <br />
* @hibernate.joined-subclass <br />
* @hibernate.joined-subclass-key <br />
* column="customer_id" <br />
*/ <br />
如果发现生成的mapping文件中joined-subclass的key column为空，那么可能是@hibernate.joined-subclass-key这句没有写对。 <br />
用joined-subclass生成的表，仔细看。Member extends Customer <br />
create table Customer ( <br />
id VARCHAR2(255) not null, <br />
name VARCHAR2(255), <br />
description VARCHAR2(255), <br />
primary key (id) <br />
) <br />
create table Member ( <br />
customer_id VARCHAR2(255) not null, <br />
password VARCHAR2(255), <br />
primary key (customer_id) <br />
) <br />
<br />
74.在junit中尽量使用assertEquals代替assertTrue; <br />
<br />
75.Hibernate <br />
如果Child extends Parent <br />
那么from Parent as parent 也将会将Child选出来，而from Child as child 则不会选出Parent <br />
<br />
76.Hibernate <br />
使用hibernate的one-to-one时，应该两方向都set,否则会报save NullPointException <br />
parent.setChild(child); <br />
child.setParent(parent); <br />
<br />
77.Hibernate <br />
遇到下边的异常，估计是与因为外键出现了问题： <br />
<br />
<span class="hilite1">java</span>.lang.NullPointerException <br />
at net.sf.hibernate.persister.AbstractEntityPersister.getPropertyValue(AbstractEntityPersister.<span class="hilite1">java</span>:675) <br />
at net.sf.hibernate.id.ForeignGenerator.generate(ForeignGenerator.<span class="hilite1">java</span>:33) <br />
如: <br />
* @hibernate.id generator-class = "foreign" <br />
* @hibernate.generator-param name = "property" value = "customer" <br />
* @hibernate.one-to-one name = "custmoer" class = "src.persistent.Customer" <br />
value的值和one-to-one 中name的值不符，则会出现上边的异常。如果不显示指定name则默认取成员变量名 <br />
如 <br />
Customer a <br />
则name = "a" 需要小心的是不是类名。所以，以后最好显示指定名字为好。 <br />
<br />
78.出现异常： <br />
Exceptionobject references an unsaved transient instance - save the transient instance before flushing: src.persistent.Product <br />
原因没有为某对象进行set设置， 如上边的这个就是某对象没有调用setProduct <br />
<br />
79. <br />
"xxx action = "/a" 不用.do和根目录名 <br />
&lt;a href = "b.do" 需要.do和根目录名 <br />
<br />
80. <br />
Caused by: <span class="hilite1">java</span>.<span class="hilite2">sql</span>.<span class="hilite2">SQL</span>Exception: ORA-02291: 违反完整约束条件 (BOOKSHOP.FK4AAEE <br />
47687CCA6B) - 未找到父项关键字 <br />
如果你觉得该做的e是出现这个问题，那么检查一下，是否将类的继承关系在hibernate的mapping中反映了出来。joined-subclass或subclass <br />
例如a extends b <br />
如果持久类c 需要Set的是持久类a，那么你把b传入，而b又没有在mapping中将父子关系反映出来的话，就会出现该异常 <br />
<br />
81.使用DynaActionForm需要注意的问题 <br />
在struts-config声明 <br />
&lt;form-bean name="memberloginForm" dynamic ="true" type="org.apache.struts.action.DynaActionForm"&gt; <br />
&lt;form-property name = "name" type = "<span class="hilite1">java</span>.lang.<span class="hilite5">String</span>"/&gt; <br />
&lt;form-property name = "password" type = "<span class="hilite1">java</span>.lang.<span class="hilite5">String</span>"/&gt; <br />
&lt;/form-bean&gt; <br />
在Action里将form强制转化成DynaActionForm，然后get("属性名")就可以了 <br />
<br />
82.struts的validate最简单实现 <br />
1.首先准备好错误提示信息。 <br />
xxx.properties 里 <br />
errors.required={0} is required.(默认已有) <br />
2.Form必须从ValidatorForm继承 <br />
3.不可以重载ValidatorForm的validate函数 <br />
4.在validate.xml中为你想验证的表单进行验证设计。例如 <br />
&lt;form name="logonForm"&gt; <br />
&lt;field property="userName" depends="required"&gt; <br />
&lt;arg0 key="prompt.userName"/&gt; <br />
(该参数将在显示错误信息是从xxx.properties读取prompt.userName,填入{}方括号里，取代0。如果是arg1将将填入{1}位置，以此类推。 <br />
&lt;/field&gt; <br />
&lt;/form&gt; <br />
不需要在action里做任何处理。只管forward就行了。作为forward的目标页，不需要任何有关用于处理出错信息的处理。 <br />
<br />
83.服务器报 <br />
The requested resource (/xxxx/xxx.htm) is not available.的很奇怪的一个的可能原因 <br />
在web.xml中定义的tld，没有找到 <br />
或者是lib目录下的包太多出现了问题。 <br />
如 <br />
&lt;taglib&gt; <br />
&lt;taglib-uri&gt;/spring&lt;/taglib-uri&gt; <br />
&lt;taglib-location&gt;/WEB-INF/spring.tld&lt;/taglib-location&gt; <br />
&lt;/taglib&gt; <br />
如WEB-INF目录下不存在spring.tld的话，就会报上边的错误 <br />
<br />
84. <br />
spring的xxx-servlet.xml的使用SimpleFormController系列的类问题： <br />
&lt;bean id = "priceIncreaseForm" class="PriceIncreaseFormController"&gt; <br />
&lt;property name="sessionForm"&gt;&lt;value&gt;true&lt;/value&gt;&lt;/property&gt; <br />
&lt;property name="beanName"&gt;&lt;value&gt;priceIncrease&lt;/value&gt;&lt;/property&gt; <br />
&lt;property name="commandClass"&gt;&lt;value&gt;PriceIncrease&lt;/value&gt;&lt;/property&gt; <br />
&lt;property name="formView"&gt;&lt;value&gt;priceIncrease&lt;/value&gt;&lt;/property&gt; <br />
&lt;property name="successView"&gt;&lt;value&gt;hello&lt;/value&gt;&lt;/property&gt; <br />
&lt;property name="productManager"&gt; <br />
&lt;ref bean="prodMan"/&gt; <br />
&lt;/property&gt; <br />
&lt;/bean&gt; <br />
这里要注意几个问题： <br />
(1)上边的PriceIncrease是了类名，必须在classes里存在该类，否则报： <br />
PropertyVetoExceptionsException: 1 errors:-- ErrorCodedPropertyVetoException: message=[Failed to convert property value of type [<span class="hilite1">java</span>.lang.<span class="hilite5">String</span>] to required type [<span class="hilite1">java</span>.lang.Class] for property named 'commandClass'; nested exception is: <br />
<span class="hilite1">java</span>.lang.IllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease]; errorCode=[typeMismatch] <br />
<span class="hilite1">java</span>.lang.IllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease <br />
(2)&lt;property name="formView"&gt;&lt;value&gt;priceIncrease&lt;/value&gt;&lt;/property&gt; <br />
这一行必不可少，priceIncrease是页面的名字，他将会是prefix + priceIncrease + suffix <br />
如果缺少该行，则报： <br />
<span class="hilite1">java</span>x.servlet.ServletException: Error in ModelAndView object or View resolution encountered by servlet with name 'pocketSpring': View to render cannot be null with ModelAndView [ModelAndView: materialized View is [null]; Model=[{priceIncrease=PriceIncrease@148e798, org.springframework.validation.BindException.priceIncrease=org.springframework.validation.BindException: BindException: 0 errors}]] <br />
<br />
使用Errors的rejectValue相关问题： <br />
rejectValue(<span class="hilite1">java</span>.lang.<span class="hilite5">String</span> field, <span class="hilite1">java</span>.lang.<span class="hilite5">String</span> errorCode, <span class="hilite1">java</span>.lang.Object[] errorArgs, <span class="hilite1">java</span>.lang.<span class="hilite5">String</span> defaultMessage) <br />
Reject the given field of the current object, using the given error description. <br />
当前对象指的是xxx-servlet.xml中与validator类有联系的哪个对象。 <br />
<br />
第一个是：当前对象的属性名，必须存在 <br />
第二个是：将要从属性文件中读取的消息 <br />
第三个是：传递给所读取的消息的参数，如： <br />
error.too-low=You have to specify a percentage higher than {0}! <br />
第四个是：当从属性文件中读取消息不成功时，所reject的值 <br />
<br />
以后从request中读取parameter可以借用spring的RequestUtils包里的 <br />
get<span class="hilite5">String</span>Parameter <br />
public static <span class="hilite1">java</span>.lang.<span class="hilite5">String</span> get<span class="hilite5">String</span>Parameter(<span class="hilite1">java</span>x.servlet.http.HttpServletRequest request, <br />
&amp;bsp; <span class="hilite1">java</span>.lang.<span class="hilite5">String</span> name, <br />
<span class="hilite1">java</span>.lang.<span class="hilite5">String</span> defaultVal) <br />
Get a <span class="hilite5">string</span> parameter, with a fallback value. Never throws an exception. Can pass a distinguished value to default to enable checks of whether it was supplied. <br />
不会抛异常 <br />
Hibernate的问题：2.1rc的问题 <br />
INFO: cache provider: net.sf.ehcache.hibernate.Provider <br />
net.sf.hibernate.HibernateException: could not instantiate CacheProvider: <br />
解决办法，2.1rc比以前的版本多需要一个包 <br />
ehcache.jar <br />
<br />
85.static的问题 <br />
static函数只可以访问static成员变量。 <br />
而static变量可以被任何成员函数访问。 <br />
<br />
86. <br />
<span class="hilite1">java</span>.lang.NoClassDefFoundError: <span class="hilite1">java</span>x/transaction/Synchronization]; <br />
需要添加JTA.jar <br />
</div>
<img src ="http://www.blogjava.net/kylixlu/aggbug/176185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kylixlu/" target="_blank">陆昱相</a> 2008-01-18 13:25 <a href="http://www.blogjava.net/kylixlu/archive/2008/01/18/176185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA中关于"对象"和"引用"的概念 </title><link>http://www.blogjava.net/kylixlu/archive/2007/12/24/169943.html</link><dc:creator>陆昱相</dc:creator><author>陆昱相</author><pubDate>Mon, 24 Dec 2007 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/kylixlu/archive/2007/12/24/169943.html</guid><wfw:comment>http://www.blogjava.net/kylixlu/comments/169943.html</wfw:comment><comments>http://www.blogjava.net/kylixlu/archive/2007/12/24/169943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kylixlu/comments/commentRss/169943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kylixlu/services/trackbacks/169943.html</trackback:ping><description><![CDATA[<span>初学Java时，在很长一段时间里，总觉得基本概念很模糊。后来才知道，在许多Java书中，把对象和对象的引用混为一谈。可是，如果我分不清对象与对象引用，那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来，或许能让初学Java的朋友们少走一点弯路。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为便于说明，我们先定义一个简单的类：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class Vehicle {<br />
int passengers;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
int fuelcap;<br />
int mpg;<br />
}<br />
有了这个模板，就可以用它来创建对象：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Vehicle veh1 = new Vehicle();<br />
通常把这条语句的动作称之为创建一个对象，其实，它包含了四个动作。<br />
1）右边的&#8220;new Vehicle&#8221;，是以Vehicle类为模板，在堆空间里创建一个Vehicle类对象（也简称为Vehicle对象）。<br />
2）末尾的()意味着，在对象创建后，立即调用Vehicle类的构造函数，对刚生成的对象进行初始化。构造函数是肯定有的。如果你没写，Java会给你补上一个默认的构造函数。<br />
3）左边的&#8220;Vehicle veh1&#8221;创建了一个Vehicle类引用变量。所谓Vehicle类引用，就是以后可以用来指向Vehicle对象的对象引用。<br />
4）&#8220;=&#8221;操作符使对象引用指向刚创建的那个Vehicle对象。<br />
我们可以把这条语句拆成两部分：<br />
Vehicle veh1;<br />
veh1 = new Vehicle();<br />
效果是一样的。这样写，就比较清楚了，有两个实体：一是对象引用变量，一是对象本身。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
在堆空间里创建的实体，与在数据段以及栈空间里创建的实体不同。尽管它们也是确确实实存在的实体，但是，我们看不见，也摸不着。不仅如此，我们仔细研究一
下第二句，找找刚创建的对象叫什么名字？有人说，它叫&#8220;Vehicle&#8221;。不对，&#8220;Vehicle&#8221;是类（对象的创建模板）的名字。一个Vehicle类
可以据此创建出无数个对象，这些对象不可能全叫&#8220;Vehicle&#8221;。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对象连名都没有，没法直接访问它。我们只能通过对象引用来间接访问对象。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了形象地说明对象、引用及它们之间的关系，可以做一个或许不很妥当的比喻。对象好比是一只很大的气球，大到我们抓不住它。引用变量是一根绳，可以用来系汽球。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
如果只执行了第一条语句，还没执行第二条，此时创建的引用变量veh1还没指向任何一个对象，它的值是null。引用变量可以指向某个对象，或者为
null。它是一根绳，一根还没有系上任何一个汽球的绳。执行了第二句后，一只新汽球做出来了，并被系在veh1这根绳上。我们抓住这根绳，就等于抓住了
那只汽球。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 再来一句：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Vehicle veh2;<br />
就又做了一根绳，还没系上汽球。如果再加一句：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; veh2 = veh1;<br />
系上了。这里，发生了复制行为。但是，要说明的是，对象本身并没有被复制，被复制的只是对象引用。结果是，veh2也指向了veh1所指向的对象。两根绳系的是同一只汽球。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果用下句再创建一个对象：<br />
veh2 = new Vehicle();<br />
则引用变量veh2改指向第二个对象。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从以上叙述再推演下去，我们可以获得以下结论：（1）一个对象引用可以指向0个或1个对象（一根绳子可以不系汽球，也可以系一个汽球）；（2）一个对象可以有N个引用指向它（可以有N条绳子系住一个汽球）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果再来下面语句：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; veh1 = veh2;<br />
按上面的推断，veh1也指向了第二个对象。这个没问题。问题是第一个对象呢？没有一条绳子系住它，它飞了。多数书里说，它被Java的垃圾回收机制回收了。这不确切。正确地说，它已成为垃圾回收机制的处理对象。至于什么时候真正被回收，那要看垃圾回收机制的心情了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由此看来，下面的语句应该不合法吧？至少是没用的吧？<br />
new Vehicle();<br />
不对。它是合法的，而且可用的。譬如，如果我们仅仅为了打印而生成一个对象，就不需要用引用变量来系住它。最常见的就是打印字符串：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&#8220;I am Java!&#8221;);<br />
字符串对象&#8220;I am Java!&#8221;在打印后即被丢弃。有人把这种对象称之为临时对象。</span>
<img src ="http://www.blogjava.net/kylixlu/aggbug/169943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kylixlu/" target="_blank">陆昱相</a> 2007-12-24 10:01 <a href="http://www.blogjava.net/kylixlu/archive/2007/12/24/169943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用J2SE API读取Properties文件的六种方法</title><link>http://www.blogjava.net/kylixlu/archive/2007/12/23/169878.html</link><dc:creator>陆昱相</dc:creator><author>陆昱相</author><pubDate>Sun, 23 Dec 2007 15:09:00 GMT</pubDate><guid>http://www.blogjava.net/kylixlu/archive/2007/12/23/169878.html</guid><wfw:comment>http://www.blogjava.net/kylixlu/comments/169878.html</wfw:comment><comments>http://www.blogjava.net/kylixlu/archive/2007/12/23/169878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kylixlu/comments/commentRss/169878.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kylixlu/services/trackbacks/169878.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用J2SE API读取Properties文件的六种方法 1。使用java.util.Properties类的load()方法 示例： InputStream&nbsp;in&nbsp;=&nbsp;lnew&nbsp;BufferedInputStream(new&nbsp;FileInputStream(name));&nbsp;Properties&nbsp;p&nbs...&nbsp;&nbsp;<a href='http://www.blogjava.net/kylixlu/archive/2007/12/23/169878.html'>阅读全文</a><img src ="http://www.blogjava.net/kylixlu/aggbug/169878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kylixlu/" target="_blank">陆昱相</a> 2007-12-23 23:09 <a href="http://www.blogjava.net/kylixlu/archive/2007/12/23/169878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>