java常见错误集锦

合集下载

java常见错误以及可能原因集锦

java常见错误以及可能原因集锦

java常见错误以及可能原因集锦java常见错误以及可能原因集锦0、需要标识符a) 不在函数内1、非法表达式开始b) 可能:丢失括号 .2. no data founda) 可能:setInt(1,100)中,没有100这个值3. 找不到符号a) 可能:没导入包4. 指定了无效URLa) 可能:数据库名或IP错误,即连接出错5. 类路径没有找到a) 可能: ClassNotFoundException: oracle.jdbc.driver.OracleDriverb) 原因: 一般是指包名写错,或者没有import包,或者没有在类路径中找到jar文件c) 解决: 没有加载Oracle驱动jar,在.bash_profile中把ojdbc14.jar加进来6. 空指针异常a) 可能: 数据源错误比如数据库名或IP错误7. 不能执行查询a) 可能: 数据库中表的问题,比如列名不存在8. invalid identitya) 可能: 列名出错9. 若在数据库中创建了两个sequence ,运行时出现异常可能是先后执行了多次select 语句,导致与原有的序列号产生冲突10. 表名或列名不存在a) 可能:表不存在或者没有插入数据到表中11. 不支持的类,类的版本错误a) 可能:没有导入jdk5.0,或者编译器仍为1.412. MappingNotFoundExceptiona) Maybe: In the Eclipse Not refersh , or not exist in the dirctory13. HibernateException: /hibernate.cfg.xml not founda) Maybe1: hibernate.cfg.xml not in the root directoryb) Maybe2: Could not parse configuration .c) resolve: database not connect or use another database14. ConstraintViolationExceptiona) Maybe: used a not true database15. 驱动没有找到或者 JDBC Driver not found可能:连接数据库的驱动jar包不存在或者版本不一致,比如将旧的版本换成新的会造成该类错误16. 空指针异常,/doc/e411973287.html,ng.NullPointerExce ptiona) 可能1:数据库连接出错,比如在hibernate.cfg.xml中的数据错误会导致异常。

审查Java代码的十一种常见错误

审查Java代码的十一种常见错误

代码审查是消灭Bug最重要的方法之一,这些审查在大多数时候都特别奏效。

由于代码审查本身所针对的对象,就是俯瞰整个代码在测试过程中的问题和Bug。

并且,代码审查对消除一些特别细节的错误大有裨益,尤其是那些能够容易在阅读代码的时候发现的错误,这些错误往往不容易通过机器上的测试识别出来。

本文就常见的Java代码中容易出现的问题提出一些建设性建议,以便您在审查代码的过程中注意到这些常见的细节性错误。

通常给别人的工作挑错要比找自己的错容易些。

别样视角的存在也解释了为什么作者需要编辑,而运动员需要教练的原因。

不仅不应当拒绝别人的批评,我们应该欢迎别人来发现并指出我们的编程工作中的不足之处,我们会受益匪浅的。

正规的代码审查(code inspection)是提高代码质量的最强大的技术之一,代码审查—由同事们寻找代码中的错误—所发现的错误与在测试中所发现的错误不同,因此两者的关系是互补的,而非竞争的。

如果审查者能够有意识地寻找特定的错误,而不是*漫无目的的浏览代码来发现错误,那么代码审查的效果会事半功倍。

在这篇文章中,我列出了11个Java编程中常见的错误。

你可以把这些错误添加到你的代码审查的检查列表(checklist)中,这样在经过代码审查后,你可以确信你的代码中不再存在这类错误了。

一、常见错误1# :多次拷贝字符串测试所不能发现的一个错误是生成不可变(immutable)对象的多份拷贝。

不可变对象是不可改变的,因此不需要拷贝它。

最常用的不可变对象是String。

如果你必须改变一个String对象的内容,你应该使用StringBuffer。

下面的代码会正常工作:String s = new String ("Text here");但是,这段代码性能差,而且没有必要这么复杂。

你还可以用以下的方式来重写上面的代码:String temp = "Text here";String s = new String (temp);但是这段代码包含额外的String,并非完全必要。

java中常见错误

java中常见错误

java中常见错误编译器错误编译器错误信息是在Java软件代码通过编译器运⾏时创建的.⼀定要记住,编译器可能会为⼀个错误抛出许多错误信息.因此,修复第⼀个错误并重新编译,可以解决很多问题。

1. “… expected”缺少分号";"或右括号")"private static double volume(String solidom, double alturam, double areaBasem, double raiom) {double vol;if (solidom.equalsIgnoreCase("esfera"){vol=(4.0/3)*Math.pi*Math.pow(raiom,3);}else {if (solidom.equalsIgnoreCase("cilindro") {vol=Math.pi*Math.pow(raiom,2)*alturam;}else {vol=(1.0/3)*Math.pi*Math.pow(raiom,2)*alturam;}}return vol;}2. “unclosed string literal”字符串不以引号结束public abstract class NFLPlayersReference {private static Runningback[] nflplayersreference;private static Quarterback[] players;private static WideReceiver[] nflplayers;public static void main(String args[]){Runningback r = new Runningback("Thomlinsion");Quarterback q = new Quarterback("Tom Brady");WideReceiver w = new WideReceiver("Steve Smith");NFLPlayersReference[] NFLPlayersReference;Run();// {NFLPlayersReference = new NFLPlayersReference [3];nflplayersreference[0] = r;players[1] = q;nflplayers[2] = w;for ( int i = 0; i < nflplayersreference.length; i++ ) {System.out.println("My name is " + " nflplayersreference[i].getName());nflplayersreference[i].run();nflplayersreference[i].run();nflplayersreference[i].run();System.out.println("NFL offensive threats have great running abilities!");}}private static void Run() {System.out.println("Not yet implemented");}}3. “illegal start of an expression”产⽣原因很多,错误信息帮助不⼤} // ADD IT HEREpublic void newShape(String shape) {switch (shape) {case "Line":Shape line = new Line(startX, startY, endX, endY);shapes.add(line);break;case "Oval":Shape oval = new Oval(startX, startY, endX, endY);shapes.add(oval);break;case "Rectangle":Shape rectangle = new Rectangle(startX, startY, endX, endY);shapes.add(rectangle);break;default:System.out.println("ERROR. Check logic.");}}} // REMOVE IT FROM HERE}4. “cannot find symbol”标识符在声明时的拼写可能与在代码中使⽤时不同变量未被声明变量在声明的范围之外使⽤没有导⼊类5. “public class XXX should be in file”类名和⽂件名不匹配package javaapplication3;public class Robot {int xlocation;int ylocation;String name;static int ccount = 0;public Robot(int xxlocation, int yylocation, String nname) {xlocation = xxlocation;ylocation = yylocation;name = nname;ccount++;}}public class JavaApplication1 {public static void main(String[] args) {robot firstRobot = new Robot(34,51,"yossi");System.out.println("numebr of robots is now " + ount);}}6. “incompatible types”类型不⼀致test.java:78: error: incompatible typesreturn stringBuilder.toString();required: intfound: String1 error7. “invalid method declaration; return type required”没有声明返回类型public class Circle{private double radius;public CircleR(double r){radius = r;}public diameter(){double d = radius * 2;return d;}}8. “method in class cannot be applied to given types”⼊参类型错误RandomNumbers.java:9: error: method generateNumbers in class RandomNumbers cannot be applied to given types; generateNumbers();required: int[]found:generateNumbers();reason: actual and formal argument lists differ in length9. “missing return statement”没有写返回语句public String[] OpenFile() throws IOException {Map<String, Double> map = new HashMap();FileReader fr = new FileReader("money.txt");BufferedReader br = new BufferedReader(fr);try{while (br.ready()){String str = br.readLine();String[] list = str.split(" ");System.out.println(list);}}catch (IOException e){System.err.println("Error - IOException!");}}10. “possible loss of precision”精度丢失,如将实数赋值给 int 类型的变量将 double 类型数据赋值给 int 类型的变量11. “reached end of file while parsing”缺少"}"public class mod_MyMod extends BaseModpublic String Version(){return "1.2_02";}public void AddRecipes(CraftingManager recipes){recipes.addRecipe(new ItemStack(Item.diamond), new Object[] {"#", Character.valueOf('#'), Block.dirt});}12. “unreachable statement”存在语句执⾏不到for(;;){break;... // unreachable statement}int i=1;if(i==1)...else... // dead code13. “variable might not have been initialized”变量未初始化int x;if (condition) {x = 5;}System.out.println(x); // x may not have been initialized14. “Operator .. cannot be applied to ”使⽤了未定义的类型operator < cannot be applied to ng.Object,ng.Object15. “inconvertible types”类型⽆法强转,如: 布尔值⽆法转为整型TypeInvocationConversionTest.java:12: inconvertible types found : java.util.ArrayList<ng.Class<? extends TypeInvocationConversionTest.Interface1>> required: java.util.ArrayList<ng.Class<?>>lessRestrictiveClassList = (ArrayList<Class<?>>) classList;16. “missing return value”没有出参或出参类型不正确17. “cannot return a value from method whose result type is void”返回值类型为 void,但是有返回值public static void move(){System.out.println("What do you want to do?");Scanner scan = new Scanner(System.in);int userMove = scan.nextInt();return userMove;}18. “non-static variable . . . cannot be referenced from a static context”静态⽅法引⽤⾮静态变量public class StaticTest {private int count=0;public static void main(String args[]) throws IOException {count++; //compiler error: non-static variable count cannot be referenced from a static context}}19. “non-static method . . . cannot be referenced from a static context”class Sample{private int age;public void setAge(int a){age=a;}public int getAge(){return age;}public static void main(String args[]){System.out.println(“Age is:”+ getAge());}}20. “(array) not initialized”声明了数组,但没有初始化AClass[] array = {object1, object2}As is:AClass[] array = new AClass[2];…array[0] = object1;array[1] = object2;But not:AClass[] array;…array = {object1, object2};。

java的常见问题及解决方法

java的常见问题及解决方法

1."mons.collections.SequencedHashMap"'s signer information does not match signer information of other classes in the same package这是由于struts提供的commons-beanutils.jar和hibernate提供的commons-collections.jar冲突成的,可以从spring提供的lib中找到这个两个jarng.IllegalStateException: No data type for node:org.hibernate.hql.ast.tree.IdentNode用hql 时,忘了给表名加别名,如select p from Position,应该是select p from Position p3.The Server didn 't send back a proper XML response用FCKEditor时原因:解析不了xml文件解决方法:情况一:web.xml的配置是否正确,具体查看《FCKEditor使用指南.pdf》,还有fckeditor自带的几个jar 包情况二:加入serializer.jar,xalan.jar情况三:把项目下的fckeditor包删了,重新加入一遍.eclipse.swt.SWTError: No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]SWTError:没有更多的处理[未知Mozilla的路径(MOZILLA_FIVE_HOME未设置)]环境:linux下运行swt程序(我出现此问题是,在linux下嵌套浏览器)原因:firefox版本不一致解决:重装一个firefox,并设置相关变量5.Exception in thread "main" org.eclipse.swt.SWTError: No more handles [Could not detect registered XULRunner to use]环境:用XULRunner 在java application中嵌套浏览器原因:没有注册XULRunner解决:window下环境中,在程序中加入,如(第二个参数是下载解压后的存放路径):static{System.setProperty("org.eclipse.swt.browser.XULRunnerPath", "C:\\xulrunner");}6.Exception in thread "main" ng.UnsatisfiedLinkError: noswt-win32-3536 or swt-win32 in swt.library.path, java.library.path or the jar file环境:用DJ Natvie Swing时,在java application中嵌套浏览器,且在windows环境下运行正常,但在linux下却包此异常原因:windows下与linux下使用的swt jar包不一样解决:在windows下用swt-3.5M6-win32-win32-x86.jar,在linux下用swt-3.5.1-gtk-linux-x86.jar7.Exception in thread "main" .ProtocolException:cannot write to a URLConnection if doOutput=false - call setDoOutput(true)环境:用URLConnection送某url发送数据时原因:doOutput=false时,不能发送数据解决:如urlConnection.setDoOutput(true).SocketException: Connection resetat .SocketInputStream.read(SocketInputStream.java:168)at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)at java.io.InputStreamReader.read(InputStreamReader.java:167)at java.io.BufferedReader.fill(BufferedReader.java:136)at java.io.BufferedReader.readLine(BufferedReader.java:299)at java.io.BufferedReader.readLine(BufferedReader.java:362)at com.eagle.service.AutoUpdate.run(AutoUpdate.java:43)环境:j2se socket编程时,服务器端报错原因1:服务器端用BufferedReader,时,没有读到一行解决:客户端用PrintWriter, pw.println(),不能用pw.print(),因为br.readLine()是读一行环境:j2se socket编程时,服务器端/客户端在br.readLine()时报错原因2:服务器端用BufferedReader,br.readLine()时,客户端/服务器已经退出,但是并未通过服务器/客户端,即服务器端/客户端的socket还没有关闭,当用br.readLine()时就会出现这种情况解决:在关闭客户端时要socket.close(),同时还要向服务器发送一条退出的信息,这样让服务器知道某个客户端已经关闭,它就可以终止对此客户端的线程了,反之服务器也是一样.hibernate.PropertyAccessException: Null value was assigned toa property of primitive type setter of er环境:hibernate原因:oolean类型的值为null,boolean类型的值必须是true/false解决:save or update时给boolean类型的值赋true/false10.用占位符查询时出现空指针ng.NullPointerExceptionatorg.hibernate.hql.ast.ParameterTranslationsImpl.getNamedParameterExpectedType(ParameterTranslat ionsImpl.java:63)at org.hibernate.engine.query.HQLQueryPlan.buildParameterMetadata(HQLQueryPlan.java:245)at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:95)at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)at .struts.action.LoginAction.execute(LoginAction.java:72)at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)atorg.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11Ba seProtocol.java:664)at .PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)at .LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)at ng.Thread.run(Thread.java:595)环境:hibernate原因:HQL 不能解析解决:错误写法:String hql = "select m from com.eagle.oa.model.Message m where m.ids like: id";正确写法:String hql = "select m from com.eagle.oa.model.Message m where m.ids like:id";ng.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!原因:在使用hibernate的session.createQuery(.....)时设置参数的下标应该从0开始解决:如:return session.createQuery("from User u where erName = ? and password = ?").setParameter(0, name).setParameter(1, password).uniqueResult();.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.wxj.entities.Group环境:hibernate原因:某个实例的属性一个对象,这个对象没有保存,还是暂态的对象解决:先保存这个对象,或是在另一端加inverse = true13.ORA-01461: can bind a LONG value only for insert into a LONG column环境:oracle原因:jar冲突解决:换成classes12.jar包即可14.ERROR LazyInitializationException:19 - could not initialize proxy - the owning Session was closed环境:SSH原因:当一个类或属性设置了lazy="true",操作对象时,session已经关闭了解决:使用Spring的过滤器openSessionInView.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into MIT/AUTO or remove 'readOnly' marker from transaction definition.环境:SSH原因:这个异常产生的主要原因是DAO采用了Spring容器的事务管理策略,如果操作方法的名称和事务策略中指定的被管理的名称不能够匹配上,spring 就会采取默认的事务管理策略(PROPAGATION_REQUIRED,read only).如果是插入和修改操作,就不被允许的,所以包这个异常解决:修改spring配置文件中相关事务管理部分mon.beans.ProbeException: There is no READABLE property named 'eid' in class 'com.wxj.entity.Student'环境:ibatis原因:在给对象做操作,设置参数时,指定的参数不是对象中有的属性,就会抛出此异常解决:核对对象的属性ng.OutOfMemoryError: PermGen space环境:很多,如ssh整合时原因:不断的更新class,造成应用重启,最终造成代码区的内存空间满了解决:方法很多,1重启,2增加代码区的大小,3少更新class,4有时可能是log4j造成的问题,建议使用common-loggin.jar 5,优化代码以下来自CSDN的jinhuiyu:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息,可以用如下方法解决(根据你的实际情况设置大小),但是这只是临时的解决方法,更重要的是改造你的CODE1.可以在windows 更改系统环境变量加上JAVA_OPTS=-Xms64m -Xmx512m2,如果用的tomcat,在windows下,可以在C:\tomcat5.5.9\bin\catalina.bat 中加上:set JAVA_OPTS=-Xms64m -Xmx256m位置在: rem Guess CATALINA_HOME if not defined 这行的下面加合适.3.如果是linux系统Linux 在{tomcat_home}/bin/catalina.sh的前面,加set JAVA_OPTS='-Xms64 -Xmx512'18.在客户端使用dwr时,即跨域访问时,出现“拒绝访问“及“找不到某个属性”的问题(在服务器端调用时却正常)环境:在客户端使用dwr原因:1。

Java中常见错误和异常解决方法(打印)要点

Java中常见错误和异常解决方法(打印)要点

ng.NullPointerException原因是:有空指针,有地址没赋值2.Exception in thread "main" ng.ArithmeticException: / by zero原因是除数是03.ArrayIndexOutOfBoundsException原因是:数组越界ng.NumberFormatException原因是:数字格式化有问题5.Unhandled exception type Exception原因是:没有进行异常处理6.进行国际化操作的时候遇到这样的错误:Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name Message, locale zh_CN答:因为在命令提示符中,是没有错误的解决方法是:在myeclipse中,会出现这个错误java国际化之Can't find bundle for base name1.初步学习最近在学习ResourseBundle时遇到了“Can't find bundle for base name ”这个错误搞了很久才解决了。

原因就是类路径问题要将属性文件放在类路径中!百度里很多都是教程但没有涉及到解决方法!2.中文显示:测试文件java 代码package com.lht.ResourseBundleStudy;import java.util.ResourceBundle;public class ResourseBundleDemo {public static void main(String[] args) {ResourceBundle resource = ResourceBundle.getBundle("test");System.out.print(resource.getString("msg0") + "!");System.out.println(resource.getString("msg1") + "!"); }}test.propertiesmsg0="Hello World"msg1="da jia hao"开始自己测试的时候:将属性文件放在bin/下也试过也不行无赖中就在google中搜索了一下终于在sun的java论坛(/thread.jspa?threadID=660477&messageID=4231534)中找到了线索下面是帖子的内容:I've solved the problem the best way possible. Basically what i've done is added a new class folder named config to the project home dir. Then i added this classfolder to the classpath in project properties. After doing all of this you only need to reference the properties file by "Email".Hope this helps anyone else who is having similiar problems.基本意思就是在src下建立classes(名字无所谓)文件夹将属性文件存放在下面,然后将这个文件夹加入类路径中!运行就可以了:加入类路径的方法:你的工程文件夹->properties->选择Libraries选项卡->Add Class Folder 将刚才建立的文件夹加入就可以了!结果如下:"Hello World"!"da jia hao";!2.中文显示在classes目录下建立message_CH.properties内容如下:ms0="大家好"同样用上面的测试文件!结果如下:"?ó????"!乱码怎么回事啊!在百度里搜索后找到了答案有以为网友写的很清楚:/3885062.html 下面引用如下:原理Property文件中,使用的编码方式根据机器本身的设置可能是GBK或者UTF-8。

Java问题集锦-001

Java问题集锦-001

Java问题集锦说明:为了大家更好地学习好Java,我将从今天开始,专门收集来自于08网络1班、2班、3班的上机操作出现的Java问题,这些问题很有代表性的,以便于同学们快速排除Java故障,少走弯路,提高学习效率。

【编号】001【收集日期】2009年9月2日星期三【来源班级】08网路2班【来源地点】B409【课程节次】7-8【问题1】文件名与类名不一致这是一个初学Java常见的错误,Java要求文件名与类名必须相同。

例如文件名为:Test_a1.java则类名必须是Test_a1,即是:public class Test_a1{……}【问题2】大小写敏感这是一个初学Java常见的错误,Java对大写高度敏感,因为Java不单单在windows操作系统运行,也可以在Linux操作系统运行,而Linux对大小写是感度敏感的。

例如调用Java类【String】,不能写成【string】【问题3】编码规范编码规范是非常重要的,企业要求非常严格,因此初学者必须一开始就要规范起来。

规范要求:每一个级段要三个空格。

级段开始字符与结束字符对齐。

p ublic class Test_a1{p ublic static void main(String[] s){S ystem.out.println("最简单的java application 程序。

河职院08网路专业。

姓名、学号");}}例如:上述的“蓝色”是一级段,“红色”为二级段,“绿色”为三级段,段与段之间必须有三个空格差。

同一个级段必须对齐。

【问题4】环境变量问题Java有三个环境变量path、JA V A_HOME、CLASSPATH。

path是windows寻找运行程序的路径,如果Java路径没有在path中定义将无法运行Java。

JA V A_HOME是很重要的定义,后面学习复杂一点的Java程序要用到这个环境变量,其含义跟字面解析一样,就是安装的Java的总目录是什么?CLASSPATH非常重要,如果定义错误,将无法运行Java程序,出现的错误是找不到类,信息是:Exception in thread "main" ng.NoClassDefFoundError,另外,CLASSPA TH的第一个字符是小数点“.”,接着是分号,含义是Java运行的时候将在当前目录寻找Java的类即后缀是“.class”的文件来运行。

java学习中错误汇总

java学习中错误汇总

java学习中错误汇总1.每次进行保存时,级联对象都自动改变。

(如回复、留言是多对一的关系,如果在进行过程中不刷新,有新的留言保存后,回复的留言外键值将自动改变为新的留言ID)解决方法:在Spring的配置文件,Action配置中加上:scope="prototype"。

原因可能是:默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性) Singleton: Spring容器只存在一个共享的bean实例,默认的配置。

Prototype: 每次对bean的请求都会创建一个新的bean实例。

2.使用fckeditor时候,保存的内容都以"<p>...<p>"此方式显示。

解决方法:显示时,为:<s:property value="#ist.content" escape="false"/>原因:<s:property>标签的escape属性默认为true,即不解析html代码,直接将其输出。

若要想输出html的效果,则要改为false.而fckeditor恰好是一个可视化HTML编辑器。

3.javamail中的两个错误:(1)Exception in thread "main" ng.NoClassDefFoundError:com/sun/mail/util/LineInpu tStream原因:原因是jar包版本不统一,解决方法如下: 删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.解决方法:用rar打开X:/Program Files/MyEclipse 6.5 /myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt. core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5 ,然后删除mail。

Java开发最容易写的10个bug

Java开发最容易写的10个bug

Java开发最容易写的10个bug原⽂链接:那个谁,今天⼜写 bug 了,没错,他说的好像就是我。

作为 Java 开发,我们在写代码的过程中难免会产⽣各种奇思妙想的 bug ,有些 bug 就挺让⼈⽆奈的,⽐如说各种空指针异常,在 ArrayList 的迭代中进⾏删除操作引发异常,数组下标越界异常等。

如果你不⼩⼼看到同事的代码出现了我所描述的这些 bug 后,那你就把我这篇⽂章甩给他你甩给他⼀篇⽂章,并让他关注了⼀波cxuan,你会收获他在后⾯像是如获⾄宝并满眼崇拜⼤神的⽬光。

废话不多说,下⾯进⼊正题。

错误⼀:Array 转换成 ArrayListArray 转换成 ArrayList 还能出错?这是哪个笨。

等等,你先别着急说,先来看看是怎么回事。

如果要将数组转换为 ArrayList,我们⼀般的做法会是这样List<String> list = Arrays.asList(arr);Arrays.asList() 将返回⼀个 ArrayList,它是 Arrays 中的私有静态类,它不是 java.util.ArrayList 类。

如下图所⽰Arrays 内部的 ArrayList 只有 set、get、contains 等⽅法,但是没有能够像是 add 这种能够使其内部结构进⾏改变的⽅法,所以 Arrays 内部的 ArrayList 的⼤⼩是固定的。

如果要创建⼀个能够添加元素的 ArrayList ,你可以使⽤下⾯这种创建⽅式:ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));因为 ArrayList 的构造⽅法是可以接收⼀个 Collection 集合的,所以这种创建⽅式是可⾏的。

错误⼆:检查数组是否包含某个值检查数组中是否包含某个值,部分程序员经常会这么做:Set<String> set = new HashSet<String>(Arrays.asList(arr));return set.contains(targetValue);这段代码虽然没错,但是有额外的性能损耗,正常情况下,不⽤将其再转换为set,直接这么做就好了:return Arrays.asList(arr).contains(targetValue);或者使⽤下⾯这种⽅式(穷举法,循环判断)for(String s: arr){if(s.equals(targetValue))return true;}return false;上⾯第⼀段代码⽐第⼆段更具有可读性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java常见错误以及可能原因集锦0、需要标识符a) 不在函数内1、非法表达式开始b) 可能:丢失括号 .2. no data founda) 可能:setInt(1,100)中,没有100这个值3. 找不到符号a) 可能:没导入包4. 指定了无效URLa) 可能:数据库名或IP错误,即连接出错5. 类路径没有找到a) 可能: ClassNotFoundException: oracle.jdbc.driver.OracleDriverb) 原因: 一般是指包名写错,或者没有import包,或者没有在类路径中找到jar文件c) 解决: 没有加载Oracle驱动jar,在.bash_profile中把ojdbc14.jar加进来6. 空指针异常a) 可能: 数据源错误比如数据库名或IP错误7. 不能执行查询a) 可能: 数据库中表的问题,比如列名不存在8. invalid identitya) 可能: 列名出错9. 若在数据库中创建了两个sequence ,运行时出现异常可能是先后执行了多次select 语句,导致与原有的序列号产生冲突10. 表名或列名不存在a) 可能:表不存在或者没有插入数据到表中11. 不支持的类,类的版本错误a) 可能:没有导入jdk5.0,或者编译器仍为1.412. MappingNotFoundExceptiona) Maybe: In the Eclipse Not refersh , or not exist in the dirctory13. HibernateException: /hibernate.cfg.xml not founda) Maybe1: hibernate.cfg.xml not in the root directoryb) Maybe2: Could not parse configuration .c) resolve: database not connect or use another database14. ConstraintViolationExceptiona) Maybe: used a not true database15. 驱动没有找到或者 JDBC Driver not found可能:连接数据库的驱动jar包不存在或者版本不一致,比如将旧的版本换成新的会造成该类错误16. 空指针异常, ng.NullPointerExceptiona) 可能1:数据库连接出错,比如在hibernate.cfg.xml中的数据错误会导致异常。

17. 数据插入异常,GenericJDBCException: could not inserta) 可能1:没有建立表或者表中没有任何数据b) 可能2:插入数据后没有执行提交语句:commit18. LazyInitializationException 或者延迟加载异常a) 可能1:没有在查询语句中加fetch19. IdentifierGenerationExceptiona) 可能1:高位表没有初始化(比如hi_value中没有记录)20. could not initialize a collection: [hibernate.entity.Role.modules#32768] Syntax error: Encountered "-" at line 1, column 132.a) 错误原因:<set name="modules" table="module-role" lazy="false">红色字部分中“-”为非法字符,替换为module_role21. could not insert collection rows: [hibernate.entity.Module.roles#1]在Module.hbm.xml文件的如下配置中加入inverse=”true”<set name="roles" table="module_role" inverse="true">22.在部署Struts时,出现如下错误信息:HTTP Status 404 - Servlet action is not availabletype Status reportmessage Servlet action is not availabledescription The requested resource (Servlet action is not available) is not available.问题原因:1.、web.xml文件中未配置ActionServlet。

2、struts-config.xml文件未配置你要访问的Action。

3、你的jsp文件form标记中action属性的路径名称错误。

4、非以上三种情况。

针对以上4种情况相应的解决方案如下:1、在web.xml文件中加上ActionServlet的配置信息?????? /WEB-INF/struts-config.xml??2、在struts-config.xml文件检查你要访问的Action配置文件。

3、检查jsp文件form标记中action属性的路径名称是否与struts-config.xml文件中action标记的path属性的路径名称一致。

4、非以上情况的解决办法就是检查web容器的log日志,如果时tomcat则检查下logs 目录下的localhost_log文件,看里边是否记录有错误信息,然后根据错误信息提示将其纠正。

23.ng.NoClassDefFoundError: org/apache/commons/beanutils/Converter 缺少spring-framework-2.0.3\lib\jakarta-commons\commons-beanutils.jar24. java 代码Caused by: ng.NoClassDefFoundError:org/objectweb/asm/Type缺少spring-framework-2.0.3\lib\asm\asm-2.2.2.jar包,版本不同,该包的名字有相应的区别java 代码Caused by: ng.NoClassDefFoundError:org/dom4j/DocumentException缺少spring-framework-2.0.3\lib\dom4j\dom4j-1.6.1.jar包,版本不同,该包的名字有相应的区别把这个包进去就可以了:\Spring206\lib\dom4j、dom4j-1.6.1.jarjava 代码Caused by: ng.NoClassDefFoundError:org/apache/commons/collections/SequencedHashMap缺少spring-framework-2.0.3\lib\jakarta-commons\commons-collections.jar包,版本不同,该包的名字有相应的区别java 代码Caused by: ng.NoClassDefFoundError:net/sf/cglib/proxy/CallbackFilter缺少spring-framework-2.0.3\lib\cglib\cglib-nodep-2.1_3.jar包,版本不同,该包的名字有相应的区别java 代码Caused by: ng.NoClassDefFoundError:org/objectweb/asm/CodeVisitor缺少hibernate-3.2\lib\asm.jar包,版本不同,该包的名字有相应的区别java 代码org.hibernate.exception.SQLGrammarException: could not load an entity: [er#1]JAVA工程与WEB工程包的区别:一个是asm.jar,一个是jta.jarjava 代码Caused by: ng.NoClassDefFoundError:javax/transaction/TransactionManager缺少spring-framework-2.0.3\lib\j2ee\jta.jar包,版本不同,该包的名字有相应的区别此种错误请检查相应的***.hbm.xml配置文件的配置25, Exception in thread "main"org.springframework.dao.InvalidDataAccessResourceUsageException:could notget next sequence value; nested exception isorg.hibernate.exception.SQLGrammarException: could not get next sequence value Caused by: org.hibernate.exception.SQLGrammarException: could not get next sequence value原因:没有加Sequence或者数据库的方言写错了26,我的配置文件<id name="id" column="id"><generator class="native" /></id>然后我运行保存一条数据进去The database returned no natively generated identity value就会报这个错误因为你native是根据看底层数据库的能力选择identity, sequence 或者hilo中的一个而我建表的时候id没有指定alter table `student` change `id` `id` int auto_increment我们把我们的表的结构小小的改动一下就没问题了27,UpdateManager无法启动2007-08-09 15:21如果在应用程序安装过程中,暴力中断安装程序,会出现如下状况:1.apt-get remove 和dpkg --remove 无法删除软件2.UpdateManager无法启动3.新立得软件包管理程序无法启动以上可能是deb损坏之类造成的sudo dpkg -r sqldveloper正在读取软件包列表... 完成正在分析软件包的依赖关系树... 完成E: 软件包 sqldeveloper 需要重新安装,但是我无法找到相应的安装文件。

相关文档
最新文档