J2EE开发工作中遇到的异常问题及解决方法总结

 

 

1.    HttpClient I/O exception:

错误信息:I/O exceptioncaught when processing request: Connection timed out:connect

错误原因:IP不正确。

解决方法:改正IP

2.    Ambiguous handler methods mapped

错误信息:java.lang.IllegalStateException: Ambiguoushandler methods mapped for HTTP path '/lowpressure.json'

Ambiguous:模糊不清的,有歧义的

错误原因:项目中存在两个相同的RequestMapping路径

解决方法:修改其中一个名称

3.    session read-only

错误信息:org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode(FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO orremove 'readOnly' marker from transaction definition.

错误原因:开启了openSessionInViewFilter,而这种session的默认模式是只读。

解决方法:为其设置初始化参数singleSession=false。

<init-param>

              <param-name>singleSession</param-name>

              <param-value>false</param-value>

    </init-param>

4.    org/hibernate/exception/DataException

错误信息:

javax.servlet.ServletException:java.lang.NoClassDefFoundError:org/hibernate/exception/DataException

Caused by: java.lang.NoClassDefFoundError:org/hibernate/exception/DataException

错误原因:不明。好像是因为开启了openSessionInViewFilter(你可能不信,但确实是这样!)

解决方法:关闭openSessionInViewFilter

5.    Initializing connection provider:

异常信息:Initializing connection provider:

org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider

Tomcat启动时长时间停留在此处

原因:不明!

解决方法:自愈!

6.    www.highcharts.com/errors/13

错误信息:

uncaught exception: Highcharts error #13: www.highcharts.com/errors/13

highcharts画趋势图时firebug捕捉到异常!

错误原因:highchairs官网给出原因

Rendering div not found

This error occurs if the chart.renderTo option ismisconfugured so that Highcharts is unable to find the HTML element to renderthe chart in.

解决方法:配置chart.renderTo为一个存在的div的id。

7.    C3p0获取连接失败

错误信息:java.sql.SQLException: An attempt by a clientto checkout a Connection has timed out

错误原因:客户端从连接池中获取连接超时,通常是因为连接池中连接达到最大数量,且都被取走还未归还,出项这一现象的原因有两种:一是连接最大数配置过小不够并发使用,二是程序中存在连接泄露,有使用后未归还处。

解决方法:排查有无连接未close,若没有则增加最大连接数量!

8.    org.hibernate.NonUniqueObjectException

错误信息:a differentobject with the same identifier value was already associated with the session:

错误原因:这个错误产生原因是因为在hibernate中同一个session里面有了两个相同标识但是不同实体的对象.比如通过hibernate从数据库中查出一个对象A,有手动new了一个新的对象B,并且付给B与A相同的标识符,再通过hibernate保存B,这样就在session里同时存在A和B这两个相同标识符但不同的对象。

解决方法:方法1,保存B之前,调用一下session.clear(),清空一下当前session,但此方法不适合在一次需要保存多个对象时,不推荐使用!

方法2,在保存B之前,清除一下session中A对象,只清除A对象,调用session.evict(A)即可;

方法3,通过调用session.merge(B),这样会用B去更新库中的A,但不会把B持久化,session中就不会同时存在A和B

方法4,把B对象的属性值都set到A中,然后还保存A即可。

几种方法根据业务需要选择使用,如无特殊需要,推荐采用第三种方法。

9.    doesnot contain handler parameter named 'method'

错误信息:Request[/patientSelfAction] does not contain handlerparameter named 'method'.  This may becaused by whitespace in the label text.

10.          Socket异常1:Address already in use: JVM_Bind

该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监听。此时用netstat –an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决这个问题。

11.          Socket异常2: Connection refused: connect

该异常发生在客户端进行new Socket(ip, port)操作时,该异常发生的原因是或者具有ip地址的机器不能找到(也就是说从当前机器不存在到指定ip路由),或者是该ip存在,但找不到指定的端口进行监听。出现该问题,首先检查客户端的ip和port是否写错了,如果正确则从客户端ping一下服务器看是否能ping通,如果能ping通(服务服务器端把ping禁掉则需要另外的办法),则看在服务器端的监听指定端口的程序是否启动,这个肯定能解决这个问题。

12.          Socket异常3: Socket is closed

该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了Socket的close方法)再对网络连接进行读写操作。 

13.          Socket异常4: Connection reset

该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。

14.          Socket异常5: Broken pipe

该异常在客户端和服务器均有可能发生。在第4个异常的第一种情况中(也就是抛出SocketExcepton:Connect reset by peer:Socket write error后),如果再继续写数据则抛出该异常。前两个异常的解决方法是首先确保程序退出前关闭所有的网络连接,其次是要检测对方的关闭连接操作,发现对方关闭连接后自己也要关闭该连接。

15.          视图转储为sql后无法导入

使用navicat工具导出数据库为sql文件后,其中视图的sql语句中有以下内容:

DROP VIEW IF EXISTS `bloodpressure`;

CREATE ALGORITHM=UNDEFINEDDEFINER=`root`@`` SQL SECURITY DEFINER VIEW `bloodpressure` AS....

其中DEFINER的值中@后面应该是数据库所在主机的IP地址,通过可视化工具建立连接后执行sql语句的话,可以直接使用localhost或者127.0.0.1即可,即DEFINER=`root`@`localhost`

16.          完全卸载MySQL

由于各种原因需要重装MysSQL,通常会遇到原来的配置信息卸载不干净而引起重装失败的现象。那么如何才能确保MySQL卸载干净呢?如果你是通过控制面板的“添加和删除程序”来卸载MySQL的话,那么你还需要进行以下两步操作:

1、删除原数据信息,即删除C:\Documents and Settings\All Users\Application Data路径下的MySQL文件夹,有时改文件夹可能被隐藏,通过选择“工具”下的“文件夹选项”,点击“查看”,选择“隐藏文件和文件夹”下的“显示所有文件和文件夹”,就可以显示出来了。

2、删除注册表信息,运行regedit命令,以此展开,删除里面的MySQL文件夹,有几个地方:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL

17.          java.lang.OutOfMemoryError:Java heap space

引起java.lang.OutOfMemoryError: Java heap space异常,可能是由JAVA的堆栈设置太小的原因

在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。

根据网上的答案大致有以下三种解决方法:

1、在D:/apache-tomcat-6.0.18/bin/catalina.bat最前面加入:set JAVA_OPTS=-Xms200m-Xmx512m

注意:只有startup.bat启动tomcat,设置才能生效,如果利用windows的系统服务启动tomcat服务,上面的设置就不生效了, 
就是说set JAVA_OPTS=-Xms200m -Xmx512m没起作用

              

2、在Eclilpse中修改启动参数,在VM arguments 加入了-Xms200m -Xmx512m,设置如下图所示

 

3、  可以在windows 更改系统环境变量,加上JAVA_OPTS=-Xms64m-Xmx512m

18.          webService 异常:The endpoint reference (EPR) for the Operation not found is :

The endpoint reference (EPR) for the Operation not found is/EMRServer/services/BloodpressureService/getBloodpressure

错误原因:找不到资源。可能是service名称不存在,或者方法名称错误等原因

19.          org.apache.axis2.deployment.DeploymentException

最近在做axis2,开始运行正常,今天加入spring AOP 后,出现下面的异常

org.apache.axis2.deployment.DeploymentException:The following error occurred during schema generation:

 Unable to load bytecode for classcom.cmcc.emr.common.Controller.BloodpressureController

EnhancerByCGLIB

39228aa1

 

网上找资料看了之后,发现是由于axis2 不能参与事务管理,而我的写的service又刚好符合pointcut,所以报错了,后来把pointcut改写了一下,就不会报错了,

结论:service服务不能配置为切入点。

20.          Sql语句优化(嵌套子查询)

Sql in 语句 效率奇低(ExecutionTime : 24 s)

SELECT phone FROM runmessage WHERE encounterDatetime IN (SELECT MAX(encounterDatetime) FROM runmessageWHERE DATE(encounterDatetime)='2013-07-19' GROUPBY email) ORDER BY steps DESC LIMIT 0,10;

 

优化后:效果显著(Execution Time : 3 s)

SELECT * FROM (SELECT MAX(encounterDatetime) ASencounterDatetime,phone,steps,email FROM runmessage WHEREDATE(encounterDatetime)='2013-07-19' GROUPBY email) AS tempMessage ORDER BY tempMessage.steps DESC LIMIT 0,10;

21.          registered the JDBC driver butfailed to unregister it

Tomcat关闭时报出警告:

严重: The webapplication [/EMRServer] registered the JDBC driver [com.mysql.jdbc.Driver] butfailed to unregister it when the web application was stopped. To prevent amemory leak, the JDBC Driver has been forcibly unregistered.

原因未知。

22.          Caused by:java.lang.NoClassDefFoundError: org/hibernate/exception/DataException

错误原因:hibernate通过Hql语句进行数据库操作时,hql语句中的字段拼写错误,导致无法识别,报出此异常。比如,如果from后面写的是实体类名,后面的字段就必须是类的属性,而不能是表字段的名称。切记!!!

23.          IllegalStateException: Couldnot find @PathVariable [startTime] in @RequestMapping

异常信息:org.springframework.web.util.NestedServletException:

Request processing failed; nested exceptionisorg.springframework.web.bind.annotation.support.HandlerMethodInvocationException:Failed to invoke handler method [publicorg.springframework.web.servlet.ModelAndViewcom.cmcc.emr.restful.Controller.BloodSugarController.findBloodsugar(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)throws java.lang.Exception]; nested exception isjava.lang.IllegalStateException: Could not find@PathVariable[startTime] in @RequestMapping

      org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)

       org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)

       javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

       javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

       com.cmcc.emr.Util.LoginFilter.doFilter(LoginFilter.java:27)

org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

       org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

错误原因:

最近在使用restful规范实现webService,发现这个非常奇怪的异常!明明存在@PathVariable[startTime]这个参数,但却一直报:Couldnot find!

两个接口如下:

Post接口:

@RequestMapping(method=RequestMethod.POST, value="/bloodSugars/{idcard}/{encounterDatetime}/{beforemeal}/{aftermeal}/{appType}")

    public void insertBloodSugar(@PathVariable String idcard,@PathVariable StringencounterDatetime,

           @PathVariable String beforemeal,@PathVariable String aftermeal,@PathVariable StringappType,

           HttpServletRequestrequest,HttpServletResponse response) throws Exception{

}

 

Get接口:

@RequestMapping(method=RequestMethod.GET, value="/bloodSugars/{idcard}/{startTime}/{endTime}/{startNum}/{offset}")

    public ModelAndView findBloodsugar(@PathVariable String idcard,@PathVariableStringstartTime,@PathVariable String endTime,

           @PathVariable StringstartNum,@PathVariable String offset) throws Exception{

}

 

Post接口调用正常,但是调用Get接口时,就一直报上面的这个异常,百思不得其解!!

后来各种观察,各种测试,发现当两个方法参数个数不同时,都可以正常运行,因此怀疑是restful 没能把post 和 get 方法区分清除,导致查找失败,后又做了几个测试,证明确实如此,不仅是get和post,put方法也是一样,只要参数个数相同,都会去匹配post注解下的方法,如果两个方法参数名称不同,结果就会出现Could not find @PathVariable,不明白问什么会出现这种现象,注解@RequestMapping的保留策略也是runtime的!待查。。。

24.          Tomcat7与ActiveMQAjaxServlet不兼容问题

Tomcat6上使用ActiveMQ AjaxServlet时,完全没有问题

但是,Tomcat7使用ActiveMQ AjaxServlet时,发生Not supported. exception

网上搜索了很多方案,都说只要对AjaxServlet加上async-supported支持就可以了。

但是,实际结果还是报同样的异常。

经过长时间的尝试,终于找到问题的原因了。

原来消息请求在AjaxServlet处理前,会先被filter先处理,所以filter也要加上async-supported支持。

具体配置代码如下:

web.xml

<!-- ActiveMQ servlet --><servlet><servlet-name>AjaxServlet</servlet-name><servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class><load-on-startup>1</load-on-startup><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>AjaxServlet</servlet-name><url-pattern>/amq/*</url-pattern></servlet-mapping><!-- 著名 Character Encoding filter --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><!-- 强制进行转码 --><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- ActiveMQ --><filter><filter-name>session</filter-name><filter-class>org.eclipse.jetty.continuation.ContinuationFilter</filter-class><async-supported>true</async-supported></filter><filter-mapping><filter-name>session</filter-name><url-pattern>/*</url-pattern></filter-mapping>

25.          unknown protocol: c

项目部署在tomcat下,启动的时候报错:
java.net.MalformedURLException: unknown protocol: c
                   at java.net.URL.<init>(URL.java:574)
                   at java.net.URL.<init>(URL.java:464)
                   at java.net.URL.<init>(URL.java:413)
                   at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:650)
                   at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
                   at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)...

 

这个错一般有两种原因导致:
1、URL协议、格式或者路径错误,好好检查下你程序中的代码
如果是路径问题,最好不要包含中文路径,因为有时中文路径会乱码,导致无法识别
Tomcat 不要安装在有中文或空格的路径下。
2、jar问题:用jdom解析xml文件,如果应用路径里有gnujaxp.jar包的话,jdom就会  
调用它去解析xml文件,导致上述异常的出现。
如果是这个问题,解决方法:在应用路径里去掉对gnujaxp.jar包的引用。

26.          Unsupported major.minor version51.0

问题产生的原因:用jdk7编译的class文件放到基于jdk6运行在tomcat之中,就会报这个错。

解决起来也很方便:打开eclipse中项目上的属性—java compiler–选择一个合适的版本后重新编译即可。

具体步骤

解决:项目------>右键------>属性------>Java Compiler------>Compiler Compliance Level------>选择你使用的JDK版本------>应用。

 

 

总结:不同的JDK版本使用的major.minor不同,所以会导致这个错误。在项目中要使用当前电脑配置的JDK版本,切忌张冠李戴。

知识扩充:major.minor version,它相当于一个软件的主次版本号,只是在这里是标识的一个Java Class的主版本号和次版本号。

JDK1.7   51.0

JDK1.6   50.0

JDK1.5 49.0

JDK1.4 48.0

总之问题的根由是低版本的 JVM 无法加载高版本的 class 文件造成的,找到高版本的 class 文件处理一下就行了。

27.          Can not issue data manipulationstatements with executeQuery()

Can not issue data manipulation statementswith executeQuery().

       atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)

       atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

       atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)

       atcom.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:413)

       atcom.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1336)

       atcom.mchange.v2.c3p0.impl.NewProxyStatement.executeQuery(NewProxyStatement.java:35)

       atcom.cmcc.util.C3p0Utils.executeQuery(C3p0Utils.java:147)

错误原因:

       使用executeQuery()方法执行了update,insert,delete等语句

28.          Hibernate中常见的异常

本文总结Hibernate中常见的异常。

1. net.sf.hibernate.MappingException

       当出现net.sf.hibernate.MappingException: Errorreading resource:…异常时一般是因为映射文件出现错误。

       当出现net.sf.hibernate.MappingException:Resource: … not found是因为XML配置文件没找到所致,有可能是放置目录不正确,或者没将其加入hibernate.cfg.xml中。

2. net.sf.hibernate.PropertyNotFoundException

       当出现net.sf.hibernate.PropertyNotFoundException:Could not find a setter for property name in class …时,原因一般是因为XML映射文件中的属性与对应的Java类中的属性的getter或setter方法不一致。

3. org.hibernate.id.IdentifierGenerationException

       当出现org.hibernate.id.IdentifierGenerationException:ids for this class must be manually assigned before calling save():异常时,一般是因为<id>元素配置不正确,<id>元素缺少其子元素<generator></generator>的配置引起。

       解决方案:<id>元素映射了相应数据库表的主键字段,对其子元素<generatorclass="">,其中class的取值可以为increment、identity、sequence、hilo、native……等,更多的可参考hibernate参考文档,一般取其值为native 。具体可参考2.2.2.1小节。

4. a different object with the same identifier value was alreadyassociated with the session

       当出现a different object with the same identifiervalue was already associated with the session时,一般是因为在hibernate中同一个session里面有了两个相同标识但是是不同实体。

       有如下几种解决方案:

(1)使用session.clean(),如果在clean操作后面又进行了saveOrUpdate(object)等改变数据状态的操作,有可能会报出"Found two representationsof same collection"异常。

(2)使用session.refresh(object),当object不是数据库中已有数据的对象的时候,不能使用session.refresh(object)因为该方法是从hibernate的session中去重新取object,如果session中没有这个对象,则会报错所以当你使用saveOrUpdate(object)之前还需要判断一下。

(3)session.merge(object),Hibernate里面自带的方法,推荐使用。

5. SQL Grammer Exception,Could not execute JDBC batch update

       当出现SQL Grammer Exception,Could not executeJDBC batch update异常时,一般是由如下问题引起:

(1)SQL语句中存在语法错误或是传入的数据有误;

(2)数据库的配置不合法,或者说是配置有误。较容易出现的有数据表的映射文件(,hbm.xml文件)配置有误;Hibernate.cfg.xml文件配置有误;

(3) 当前的数据库用户权限不足,不能操作数据库。以是以Oracle 数据库为例,这种情况下在错误提示中会显示java.sql.BatchUpdateException: ORA-01031: insufficient privileges这样的信息。

       针对上面的各种原因,开发人员可以找出对应的解决方案。

29.          teamviewer现在无法捕捉屏幕,这可能是由于快速的用户切换或远程桌面会话已经断开

这个问题蛮简单,如果你用“远程桌面”连过去开启teamview的话,当你退出“远程桌面”后,外网用teamview连接就会出现这个问题,
解决方法:
      不用远程连接过去开启teamview,直接在在电脑本机上手动开启teamview就可以了

已验证!

30.          does not contain handler parameter named 'method'.  This may be caused by whitespace in the label text.

Struts1中 action这样配置的话:

<action path="/login"  name="loginForm"parameter="method"

    type="org.springframework.web.struts.DelegatingActionProxy" >

页面访问时:正确方式是:/login.do?method=xxx ,如果以 /login.do 访问就会报此异常

31.          java.lang.OutOfMemoryError:PermGen space PermGen space

一、  java.lang.OutOfMemoryError:PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域, 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
 解决方法: 手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -XX:PermSize=64M-XX:MaxPermSize=128m

二、 Windows
在catalina.bat最前面加入
set JAVA_OPTS=-Xms128m -Xmx350m 
如果用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存.
但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了,
就是说setJAVA_OPTS=-Xms128m -Xmx350m 没起作用.上面分配200M内存就OOM了..
windows服务执行的是bin\tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.
解决办法:
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\ApacheSoftware Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
原值为
-Dcatalina.home="C:\ApacheGroup\Tomcat5.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat5.0\common\endorsed"
-Xrs
加入 -Xms300m-Xmx350m  
重起tomcat服务,设置生效 

32.          MySQL server version for theright syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT'

You have an error in your SQL syntax; check the manual thatcorresponds to your MySQL server version for the right syntax to use near'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1

原因:

项目中我用的jdbc驱动版本

mysql-connector-java-5.1.15.jar

mysql数据库版本为5.6

jdbc在连接数据库时候会发送测试语句SETOPTION SQL_SELECT_LIMIT=DEFAULT

这在mysql5.6以下版本是可以的,但是5.6不再支持SET...

 由于5.6这个变化,导致一些旧的软件可能运行出错。mysql官方也不承认这是bug,只能升级你的Mysql驱动来解决。

目前所知:mysql-connector-java-5.1.15.jar及以前版本不可以,

mysql-connector-java-5.1.25.jar及之后版本可以

 

解决方法:

 升级驱动版本,我改成了mysql-connector-java-5.1.25.jar 

33.          Error creating bean with name'patientService': Injection of autowired dependencies failed;

Caused by:org.springframework.beans.factory.BeanCreationException: Could not autowirefield: public com. flex.dao.JdbcDaocom.cmcc.flex.service.PatientService.jdbcDao; nested exception isorg.springframework.beans.factory.NoSuchBeanDefinitionException: No matchingbean of type [com.flex.dao.JdbcDao] found for dependency: expected at least 1bean which qualifies as autowire candidate for this dependency. Dependencyannotations:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

不能创建bean,因为自动注入失败。出现此异常的原因是:注解扫描配置顺序错误,或者配置冲突,请检查各个引入的xml文件中是否有重复配置。参考配置如下:

<context:component-scan base-package="com.test"/>

   <!-- enable autowire -->

   <context:annotation-config />

   <!-- enable transaction demarcation with annotations -->

   <tx:annotation-driven />

34.          java.io.IOException: Cannot runprogram "C:\analyze":  CreateProcess error=5

java程序通过Runtime.getRuntime().exec()方法调用C程序可执行文件,报此异常。

最后的解决方法是:把jdk的版本从7换成了6,一切就正常了,哎!!

 

35.          打成jar包后,注解无法扫描的问题

解决方法:export jar的时候,勾选add directory entries 

36.          ava.io.EOFException错误

Tomcat启动后报:IOException while loading persistedsessions: java.io.EOFException错误

出现原因:tomcat对保存硬盘的session读取失败
解决方法:打开TOMCAT的安装目录,在WORK文件夹找到Catalina\localhost\你的工程名所在文件夹下,  把里面的session.ser删除即可,或者直接清空localhost

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 5、运行时异常与一般异常有何异同? 异常表示程序运行过程可能出现的非正常状态,运行时异常表示虚拟机的通常操作可能遇到异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 6、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bea
2012版最全面试题大全目录: 一. Java基础部分 7 1、一个".java"源文件是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量能不能存贮一个文汉字?为什么? 9 8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量和实例变量的区别? 12 13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域public,private,protected,以及不写时的区别 13 18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类是否可以有静态的main方法? 15 21、写clone()方法时,通常都有一行代码,是什么? 15 22、面向对象的特征有哪些方面 15 23、java实现多态的机制是什么? 17 24、abstract class和interface有什么区别? 17 25、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 18 26、什么是内部类?Static Nested Class 和 Inner Class的不同。 19 27、内部类可以引用它的包含类的成员吗?有没有什么限制? 20 28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 21 29、super.getClass()方法调用 21 30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的区别 23 35、如何把一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 41、运行时异常与一般异常有何异同? 27 42、error和exception有什么区别? 28 43、Java异常处理机制的简单原理和应用。 28 44、请写出你最常见到的5个runtime exception。 28 45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块可以抛出异常吗? 29 46、java有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 38 57、介绍Collection框架的结构 43 58、Collection框架实现比较要实现什么接口 43 59、ArrayList和Vector的区别 44 60、HashMap和Hashtable的区别 44 61、List 和 Map 区别? 45 62、List, Set, Map是否继承自Collection接口? 45 63、List、Map、Set三个接口,存取元素时,各有什么特点? 45 64、说出ArrayList,Vector, LinkedList的存储性能和特性 46 65、去掉一个Vector集合重复的元素 46 66、Collection 和 Collections的区别。 47 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 47 68、你所知道的集合类都有哪些?主要方法? 47 69、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 48 70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 49 73、字节流与字符流的区别 50 74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的优点和原理。并考虑2种回收机制。 52 79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 52 80、什么时候用assert。 53 81、java会存在内存泄漏吗,请简单描述。 53 82、能不能自己写个类,也叫java.lang.String? 57 83. Java代码查错 57 二. 算法与编程 61 1、编写一个程序,将a.txt文件的单词与b.txt文件的单词交替合并到c.txt文件,a.txt文件的单词用回车符分隔,b.txt文件用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。 65 4、有一个字符串,其包含文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归算法题2 78 10、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。 79 11、有数组a[n],用java代码将数组元素顺序颠倒 80 12.金额转换,阿拉伯数字的金额转换成国传统的形式如:(¥1011)->(一千零一拾一元整)输出。 81 三. html&JavaScript;&ajax;部分 82 1. 判断第二个日期比第一个日期大 82 2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、请写出用于校验HTML文本框输入的内容全部为数字的javascript代码 84 5、说说你用过那些ajax技术和框架,说说它们的区别 85 四. Java web部分 85 1、Tomcat的优化经验 85 2、HTTP请求的GET与POST方式的区别 85 3、解释一下什么是servlet; 85 4、说一说Servlet的生命周期? 86 5、Servlet的基本架构 86 6、SERVLET APIforward() 与redirect()的区别? 86 7、什么情况下调用doGet()和doPost()? 86 8、Request对象的主要方法: 87 9、forward 和redirect的区别 87 10、request.getAttribute() 和 request.getParameter() 有何区别? 88 11. jsp有哪些内置对象?作用分别是什么? 分别有什么方法? 88 12. jsp有哪些动作?作用分别是什么? 88 13、JSP的常用指令 89 14. JSP动态INCLUDE与静态INCLUDE的区别? 89 15、两种跳转方式分别是什么?有什么区别? 89 16、页面间对象传递的方法 89 17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 91 五. 数据库部分 91 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门工资高于本部门的平均工资的员工数和部门号,并按部门号排序 91 3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生姓名 100 9.所有部门之间的比赛组合 100 10.每个月份的发生额都比101科目多的科目 101 11.统计每年每月的信息 102 12.显示文章标题,发帖人、最后回复时间 103 13.删除除了id号不同,其他都相同的学生冗余信息 104 14.航空网的几个航班查询题: 104 15.查出比经理薪水还高的员工信息: 105 16、求出小于45岁的各个老师所带的大于12岁的学生人数 106 17.求出发帖最多的人: 107 18、一个用户表有一个积分字段,假如数据库有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表具有该用户的所有角色的其他用户。 108 20. xxx公司的sql面试 108 21、注册Jdbc驱动程序的三种方式 109 22、用JDBC如何调用存储过程 109 23、JDBC的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 113 1、xml有哪些解析技术?区别是什么? 113 2、你在项目用到了xml技术的哪些方面?如何实现的? 114 3、用jdom解析xml文件时如何解决问题?如何解析? 114 4、编程用JAVA解析XML的方式. 115 5、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? 117 七. 流行的框架与新技术 117 1、谈谈你对Struts的理解。 117 2、谈谈你对Hibernate的理解。 118 3、AOP的作用。 118 4、你对Spring的理解。 118 5、谈谈Struts的Action servlet。 120 6、Struts优缺点 优点: 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 120 7、STRUTS的应用(如STRUTS架构) 121 8、说说struts1与struts2的区别。 121 9、hibernate的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO如何体现DAO设计模式? 123 14、spring+Hibernate委托方案怎么配置? 123 15、spring+Hibernate委托方案怎么配置? 123 16. hibernate进行多表查询每个表各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. 软件工程与设计模式 126 1、UML方面 126 2、j2ee常用的设计模式?说明工厂模式。 126 3、开发都用到了那些设计模式?用在什么场合? 127 九. j2ee部分 127 1、BS与CS的联系与区别。 127 2、应用服务器与WEB SERVER的区别? 128 3、应用服务器有那些? 128 4、J2EE是什么? 128 5、J2EE是技术还是平台还是框架? 什么是J2EE 128 6、请对以下在J2EE常用的名词进行解释(或简单描述) 129 7、如何给weblogic指定大小的内存? 129 8、如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 129 9、如何启动时不需输入用户名与密码? 130 10、在weblogic管理制台对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件? 130 11、说说weblogic一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其用到了一个自己写的javaBean该如何办? 130 12、在weblogic发布ejb需涉及到哪些配置文件 130 13、如何在weblogic进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置? 130 14、如何查看在weblogic已经发布的EJB? 131 十. EBJ部分 131 1、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 131 2、简要讲一下 EJB 的 7 个 Transaction Level? 131 3、EJB与JAVA BEAN的区别? 131 4、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? 132 5、EJB容器提供的服务 132 6、EJB的激活机制 132 7、EJB的几种类型 132 8、客服端调用EJB对象的几个基本步骤 133 十一. webservice部分 133 1、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 133 2、CORBA是什么?用途是什么? 133 3. Linux 134 4、LINUX下线程,GDI类的解释。 134 5. 问得稀里糊涂的题 134 6、四种会话跟踪技术 134 7、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。 134 十二. 其他 134 1、请用英文简单介绍一下自己. 134 2、请把 http://tomcat.apache.org/ 首页的这一段话用文翻译一下? 135 3、美资软件公司JAVA工程师电话面试题目 135
J2EE开发技术实验,我获得了以下收获: 1. 深入理解J2EE架构:通过实验,我对J2EE的体系结构有了更深入的理解。我了解到J2EE是一个基于分层架构的企业级应用开发平台,包括Web层、业务逻辑层和数据访问层等组件。我学会了如何使用J2EE提供的各种技术和规范来构建可扩展、可维护的企业级应用程序。 2. 掌握Java Servlet和JSP技术:在实验,我学会了使用Java Servlet和JSP技术来开发Web应用程序。我了解到Servlet是在服务器端运行的Java程序,可以接收和处理HTTP请求,并生成响应。而JSP是一种将动态内容嵌入到静态页面的技术,可以方便地生成动态的Web页面。 3. 熟悉数据库访问技术:在实验,我学习了如何使用JDBC(Java Database Connectivity)技术来连接和操作数据库。我了解到如何编写Java代码来执行SQL查询、插入、更新和删除等操作,以及如何处理数据库事务。 4. 学会使用企业级Java框架:在实验,我还学习了一些常见的企业级Java框架,如Spring和Hibernate。这些框架提供了更高级别的抽象和功能,可以加快开发速度并提高应用程序的可维护性。 5. 实践项目开发:通过实验,我有机会参与到一个完整的项目开发过程。我学会了需求分析、系统设计、编码、测试和部署等环节,并且在实践体验到了团队合作和沟通的重要性。 总的来说,J2EE开发技术实验让我对企业级应用开发有了更深入的了解,并且掌握了一些常用的技术和工具。这些知识和技能对于我今后在Java开发和企业级应用开发领域的工作将会非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值