java -工作中遇到的異常問題及解決集錦

1 Exception in thread "main" java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0

52是什麼鬼?參照https://www.cnblogs.com/xing901022/p/4172410.html

  得知

 JDK不同的版本,編譯出的class文件是不同的。通過查看分析class文件前幾個字節,可以找到對應的關係,詳細的參考官方,細微的版本之間可能有差異

1 J2SE 7 = 51 (0x33 hex),
2 J2SE 6.0 = 50 (0x32 hex),
3 J2SE 5.0 = 49 (0x31 hex),
4 JDK 1.4 = 48 (0x30 hex),
5 JDK 1.3 = 47 (0x2F hex),
6 JDK 1.2 = 46 (0x2E hex),
7 JDK 1.1 = 45 (0x2D hex).

我的jdk版本是1.7,驅動要求的是52.0對應的 jdk版本

2 碰到如下異常

 Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
	at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:165)
	at com.msyd.hibernate.App.main(App.java:12)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 2 more

	at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:165)
	at com.msyd.hibernate.App.main(App.java:12)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 2 more

解決方案,缺jar包:slf4j-api-1.5.8.jar ,slf4j-log4j12.jar

 

3 使用aspectj加載配置文件出現如下問題:

 Loading XML bean definitions from class path resource [aspectj.xml]
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [aspectj.xml]; nested exception is java.io.FileNotFoundException: class path resource [aspectj.xml] cannot be opened because it does not exist
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
	at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
	at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)
	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at com.msyd.spring.aop.aspectj.App.main(App.java:8)
Caused by: java.io.FileNotFoundException: class path resource [aspectj.xml] cannot be opened because it does not exist
	at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)
	... 13 more

解決方案:

之前寫的加載文件ApplicationContext ac = new ClassPathXmlApplicationContext("aspectj.xml");但是它要求必須在類路徑下,但我的配置文件不在,所以改爲

ApplicationContext ac = new ClassPathXmlApplicationContext("aspectj.xml", App.class); 就可以 了,表示和App.class通路徑,加載該xml配置文件。

3 Caused by: java.lang.RuntimeException: java.io.IOException: invalid constant type: 15

Caused by: java.lang.RuntimeException: java.io.IOException: invalid constant type: 15
	at javassist.CtClassType.getClassFile2(CtClassType.java:204)
	at javassist.CtClassType.subtypeOf(CtClassType.java:304)
	at javassist.CtClassType.subtypeOf(CtClassType.java:319)
.....................

Caused by: java.io.IOException: invalid constant type: 15
	at javassist.bytecode.ConstPool.readOne(ConstPool.java:1113)
	at javassist.bytecode.ConstPool.read(ConstPool.java:1056)
	at javassist.bytecode.ConstPool.<init>(ConstPool.java:150)
	at javassist.bytecode.ClassFile.read(ClassFile.java:765)
	at javassist.bytecode.ClassFile.<init>(ClassFile.java:109)
	at javassist.CtClassType.getClassFile2(CtClassType.java:191)
	... 117 more
 

原因之一
https://blog.csdn.net/zhoukun1008/article/details/76602577#commentBox

原因之二進一步解決
https://www.cnblogs.com/yinfj/p/7833932.html

原因之三最狗血:
本地jdk版本過高。比如我用1.8,但是不成,改成1.7就ok了。
4 java.util.zip.ZipException:invalid distance distance too far back

java.util.zip.ZipException:invalid distance distance too far back

這個錯誤,對於使用maven的童鞋來說應該是可能會遇到過。。。

這個原因就是maven下載相關jar包時未下載完全,導致服務器進行加載解壓時出錯。

這個就需要查看相關日誌,找到沒有下載完全的包進行手動下載。

5 org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.OutOfMemoryError: PermGen space

原因是 內存不足,需要將ide的內存設置大一點

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章