有一个需求需要将spring加入到非maven的工程中,手动一个个的加包是不可避免的,然后spring加载要要自己做也是必须的,我首次使用的是jdk1.8,用的是spring 4.3.9,版本,在我的机器上运行的时分良好,
String fileName=Constants.PRE+"applicationContext.xml";
String[] fn = new String[] {fileName};
ctx = new FileSystemXmlApplicationContext(fn);
bean = ctx.getBean("AA**",AA**.class);
但是其他同事用的是jdk1.7,他们启动的时候报错,而且时分奇怪的错误:
10:45:37 [main] INFO - Refreshing org.springframework.context.support.FileSystemXmlApplicationContext@53ef1aa4: startup date [Wed Sep 27 10:45:37 CST 2017]; root of context hierarchy
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:200)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:126)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:94)
at com.configcenter.factory.ConfigCenterFactory.initContext(ConfigCenterFactory.java:28)
at com.****.Project.init(Project.java:551)
at com.****initInterface(Startup.java:245)
at com.****.startServer(Startup.java:113)
at com****.main(Startup.java:80)
Caused by: java.lang.SecurityException: Prohibited package name: java.util
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:650)Exception in thread "main" java.lang.ExceptionInInitializerError
at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:200)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:126)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:94)
at com.configcenter.factory.ConfigCenterFactory.initContext(ConfigCenterFactory.java:28)
at com.****.Project.init(Project.java:551)
at com.****initInterface(Startup.java:245)
at com.****.startServer(Startup.java:113)
at com****.main(Startup.java:80)
Caused by: java.lang.SecurityException: Prohibited package name: java.util
at java.lang.ClassLoader.defineClass(ClassLoader.java:786)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.<clinit>(DefaultListableBeanFactory.java:127)
在网上搜是说代码中不能有java.util的包名的代码,但是我的代码中没有这种包。是什么原因呢,前面认为是jdk版本不一样导致的加载顺序不一致(jvm双亲加载模型),要么就是升级所有的jdk版本,要么就要找出根因。
后来不断重试发现将spring的版本降低到3.2.14就可以了
本文探讨了在非Maven项目中引入Spring框架时遇到的问题。具体表现为使用Spring 4.3.9版本时,在不同JDK版本下出现异常。通过调整Spring版本至3.2.14解决了兼容性问题。
2335

被折叠的 条评论
为什么被折叠?



