2015異常問題解決方案經驗總結(一)

1.     could not find java.dll

C:\Users\admin>java

Error: Registry key 'Software\JavaSoft\JavaRuntime

 

has value '1.6', but '1.8' is required.

Error: could not find java.dll

Error: Could not find Java SE RuntimeEnvironment.

 

問題原因:機器上裝了多個版本的JDK,或者曾經裝過不同版本的JDK,卸載不完全

解決方法:添加JAVA_HOME環境變量

添加JAVA_HOME環境變量,而且一定要放在系統變量裏,不要用用戶變量。

2.     liquibase.exception.ValidationFailedException:Validation Failed:

Error occurred while trying to get theupdates needed for the database. Validation Failed: 1 change sets check sumliquibase-update-to-latest.xml::200902142213::ewolodzko is now:3:ace82a1ecb3a0c3246e39f0bebe38423 
 

java.lang.RuntimeException: Error occurredwhile trying to get the updates needed for the database. Validation Failed:

    1 change sets check sum

         liquibase-update-to-latest.xml::200902142213::ewolodzko is now:3:ace82a1ecb3a0c3246e39f0bebe38423

 

         atorg.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:631)

         atorg.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:590)

         atorg.openmrs.util.DatabaseUpdater.updatesRequired(DatabaseUpdater.java:262)

         atorg.openmrs.web.Listener.setupNeeded(Listener.java:170)

         atorg.openmrs.web.Listener.contextInitialized(Listener.java:142)

         atorg.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4210)

         atorg.apache.catalina.core.StandardContext.start(StandardContext.java:4709)

         atorg.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:802)

         atorg.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)

         atorg.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)

         atorg.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)

         atorg.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)

         atorg.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)

         atorg.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)

         atorg.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)

         atorg.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)

         atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1068)

         atorg.apache.catalina.core.StandardHost.start(StandardHost.java:822)

         atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)

         atorg.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)

         atorg.apache.catalina.core.StandardService.start(StandardService.java:525)

         atorg.apache.catalina.core.StandardServer.start(StandardServer.java:759)

         atorg.apache.catalina.startup.Catalina.start(Catalina.java:595)

         atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

         atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

         atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

         atjava.lang.reflect.Method.invoke(Method.java:597)

         atorg.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

         atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Caused by:liquibase.exception.ValidationFailedException: Validation Failed:

    1 change sets check sum

         liquibase-update-to-latest.xml::200902142213::ewolodzko is now:3:ace82a1ecb3a0c3246e39f0bebe38423

 

         atliquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:141)

         atliquibase.Liquibase.listUnrunChangeSets(Liquibase.java:625)

         atorg.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:619)

         ...28 more

 

 

Caused by: java.lang.Exception: Unable toget a connection to the database.  Pleasecheck your openmrs runtime properties file and make sure you have the correctconnection.username and connection.password set

         atorg.openmrs.util.DatabaseUpdater.getLiquibase(DatabaseUpdater.java:368)

         atorg.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:617)

         ...28 more

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Could not create connection to database server. Attempted reconnect 3 times.Giving up.

         atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

         atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

         atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

         atjava.lang.reflect.Constructor.newInstance(Constructor.java:513)

         atcom.mysql.jdbc.Util.handleNewInstance(Util.java:406)

         atcom.mysql.jdbc.Util.getInstance(Util.java:381)

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

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

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

         atcom.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2364)

         atcom.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:773)

         atcom.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:46)

         atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

         atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

         atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

         atjava.lang.reflect.Constructor.newInstance(Constructor.java:513)

         atcom.mysql.jdbc.Util.handleNewInstance(Util.java:406)

         atcom.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)

         atcom.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)

         atjava.sql.DriverManager.getConnection(DriverManager.java:582)

         atjava.sql.DriverManager.getConnection(DriverManager.java:185)

         atorg.openmrs.util.DatabaseUpdater.getConnection(DatabaseUpdater.java:427)

         atorg.openmrs.util.DatabaseUpdater.getLiquibase(DatabaseUpdater.java:365)

         ...29 more

Caused by:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database'openmrs'

錯誤原因:不是第一次運行openmrs

解決方法:刪除運行時配置文件

把前一次運行openmrs時生成的運行時配置文件刪除,路徑:C:\Users\admin\ApplicationData\OpenMRS

3.     get方式提交中文亂碼

解決方法:在tomcat下指定URL編碼格式爲UTF-8

配置tomcatconf/server.xml 

<Connectorexecutor="tomcatThreadPool" 
              port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" 
              connectionTimeout="30000" 
              maxKeepAliveRequests="1" 
              maxHttpHeaderSize="8192" 
  URIEncoding="UTF-8" 
   enableLookups="false" 
   acceptCount="100" 
   redirectPort="8443" 
/> 

 

如果使用的是Eclipse,因爲Eclipse運行的是虛擬的tomcat服務器,原始的tomcat修改後需要重新配置到Eclipse,或者直接到虛擬tomcat下也做修改。

虛擬tomcat路徑爲:\workspaces\.metadata\.plugins\org.eclipse.wst.server.core\tmp0

4.     Tomcat啓動超時異常unable to start within 45 seconds

ServerTomcat v6.0 Server at localhost was unable to start within 45 seconds. If theserver requires more time, try increasing the timeout in the server editor

異常原因:Tomcat默認啓動最大時長是45秒,當啓動時間超過45秒回拋出此異常

解決方法:修改默認啓動時常

如果你用的是eclipse,雙擊tomcat服務器,打開一個視圖,右邊有個times out,點開,把45改成450或者更大即可

5.     Tomcat啓動: Errorstarting static Resources

一般來說出現這種錯誤是由於你在MyEclipse或Eclipse中刪除了某個項目後,沒有將Tomcat-6.x\conf\server.xml相關修改完全,才引起了這個問題

解決

第一步 清空Tomcat-6.x目錄下的work目錄;

第二步再把server.xml的沒有用的<Context>標籤都刪除或者註釋掉;

第三步 最後再將conf目錄下的Catalina目錄下的localhost內的所有文件都刪除

6.     SetPropertiesRule]{Server/Service/Engine/Host/Context}Setting property 'source'

通過Eclipse集成Tomcat6啓動時報以下警告信息:

SetPropertiesRule]{Server/Service/Engine/Host/Context}Setting property 'source' to 'org.eclipse.jst.jee.server:webtest' did not finda matching property.

 

這是因爲我們在eclipse下,通過tomcat部署web工程時,會在tomcat的配置文件server.xml中會自動生成一個關於該web工程的配置信息,類似於下面的東西:

<Context docBase="webtest" path="/webtest"reloadable="true" source="org.eclipse.jst.jee.server:webtest"/>

而默認情況下,server.xml的 Context元素不支持名稱爲source的屬性,所以會發出警告。

解決

關閉tomcat,雙擊eclipse下tomcat服務器,在出來的Tomcat server at localhost頁面中找到server options選項,選中其中的選項”Publish modualcontexts to separat XML files“,ctr+s 保存,啓動tomcat。

這樣項目的配置信息會被放到conf\Catalina\localhost目錄下的單獨xml文件中

7.     SyntaxError: unterminatedstring literal

無端接的字符串,出現該錯誤的原因是字符串的雙引號或單引號中間有違反json規範的特殊字符,如回車,換號,單引號,雙引號等

解決方法:刪除字符串中非法字符

8.     java.lang.OutOfMemoryError:PermGen space

網上查找可知該異常產生的原因是JVM默認分配的4M運行空間過小,J2EE項目加載的類過多,造成內存溢出。

解決方案爲:通過添加參數增加分配給JVM的內存空間

-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

網上的解決方案多半是針對純Tomcat的情況,並非通過Eclipse啓動的Tomcat。
或者修改eclipse.ini配置文件,不過這些方法都不適合Eclipse運行Tomcat拋出該異常的情況。

修改eclipse.ini配置文件增大的是Ecipse開發平臺本身運行的JVM的空間,並非Eclipse啓動Tomcat的內存空間。

正確的方法是,點擊“Run” – “Run Configurations…”,選中Tomcat Server,進入Arguments分頁,在VM arguments中加入提升初始分配空間的參數,如下圖所示:

9.     InvalidDataAccessResourceUsageException

org.springframework.dao.InvalidDataAccessResourceUsageException:could not insert:

Caused by: org.hibernate.exception.SQLGrammarException: could notinsert:

異常原因:數據庫表使用了mysql的關鍵字,請檢查修改表字段

解決:檢查修改表字段

10.             chrome通過file協議瀏覽html代碼時,發送的ajax請求本地文件,會報跨域錯誤

XMLHttpRequest cannot loadfile:///E:/webs/extJS/ext-3.3.0/examples/csdn/combobox.txt?_dc=1414738973999.Cross origin requests are only supported for protocol schemes: http, data,chrome-extension, https, chrome-extension-resource.

解決

解決辦法是給chrome添加啓動參數:--allow-file-access-from-files ,這樣本地ajax請求就不會報跨域錯誤了。(注意如果給chrome添加多個啓動參數,每個啓動參數“--”之前要有空格隔開,如"C:\ProgramFiles\Google\Chrome\Application\chrome.exe" --enable-file-cookies--allow-file-access-from-files

具體方法:在瀏覽器快捷方式上右鍵-屬性-快捷方式-目標 如下圖:

 

 

11. ClassNotFoundException: org.springframework.orm.ibatis.SqlMapClientFactoryBean

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.orm.ibatis.SqlMapClientFactoryBean] for bean with name 'sqlMapClient' defined in class path resource [/dao/spring/spring-datasource.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.orm.ibatis.SqlMapClientFactoryBean

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:/dao/sqlmap/sqlmap-config.xml" />
  </bean>

Spring 從 3.2.7.RELEASE 升級 到 4.3.8.RELEASE  時 報此錯誤, 版本降回 3.2.7.RELEASE 問題解決。

 

發佈了68 篇原創文章 · 獲贊 114 · 訪問量 108萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章