Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring3.1Web应用程序问题_Java_Spring_Spring Mvc_Illegalaccessexception - Fatal编程技术网

Java Spring3.1Web应用程序问题

Java Spring3.1Web应用程序问题,java,spring,spring-mvc,illegalaccessexception,Java,Spring,Spring Mvc,Illegalaccessexception,我在用一个控制器开发简单的SpringMVC应用程序。当我部署war文件时,我得到以下异常 java.lang.IllegalAccessError: tried to access class org.springframework.core.convert.support.StringToBooleanConverter from class org.springframework.core.convert.support.DefaultConversionService at or

我在用一个控制器开发简单的SpringMVC应用程序。当我部署war文件时,我得到以下异常

java.lang.IllegalAccessError: tried to access class org.springframework.core.convert.support.StringToBooleanConverter from class org.springframework.core.convert.support.DefaultConversionService
    at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:61)
    at org.springframework.core.convert.support.DefaultConversionService.addDefaultConverters(DefaultConversionService.java:53)
    at org.springframework.core.convert.support.DefaultConversionService.<init>(DefaultConversionService.java:42)
    at org.springframework.core.env.AbstractPropertyResolver.<init>(AbstractPropertyResolver.java:44)
    at org.springframework.core.env.PropertySourcesPropertyResolver.<init>(PropertySourcesPropertyResolver.java:42)
    at org.springframework.core.env.AbstractEnvironment.<init>(AbstractEnvironment.java:95)
    at org.springframework.core.env.StandardEnvironment.<init>(StandardEnvironment.java:54)
    at org.springframework.web.context.support.StandardServletEnvironment.<init>(StandardServletEnvironment.java:43)
    at org.springframework.web.servlet.HttpServletBean.<init>(HttpServletBean.java:90)
    at org.springframework.web.servlet.FrameworkServlet.<init>(FrameworkServlet.java:211)
    at org.springframework.web.servlet.DispatcherServlet.<init>(DispatcherServlet.java:303)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
java.lang.IllegalAccessError:试图从类org.springframework.core.convert.support.StringToBooleanConverter访问类org.springframework.core.convert.support.DefaultConversionService
位于org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:61)
位于org.springframework.core.convert.support.DefaultConversionService.addDefaultConverters(DefaultConversionService.java:53)
位于org.springframework.core.convert.support.DefaultConversionService。(DefaultConversionService.java:42)
位于org.springframework.core.env.AbstractPropertyResolver。(AbstractPropertyResolver.java:44)
位于org.springframework.core.env.propertySourcePropertyResolver。(propertySourcePropertyResolver.java:42)
位于org.springframework.core.env.AbstractEnvironment。(AbstractEnvironment.java:95)
位于org.springframework.core.env.StandardEnvironment。(StandardEnvironment.java:54)
位于org.springframework.web.context.support.StandardServleteEnvironment.(StandardServleteEnvironment.java:43)
位于org.springframework.web.servlet.HttpServletBean。(HttpServletBean.java:90)
位于org.springframework.web.servlet.FrameworkServlet。(FrameworkServlet.java:211)
位于org.springframework.web.servlet.DispatcherServlet。(DispatcherServlet.java:303)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)

听起来像是类加载器问题。我以前遇到过这种情况,因为MyEclipse加载不同的jar文件而不是我认为由应用程序加载的jar文件时,我遇到了冲突

检查的一种方法是运行并查看加载到内存中的jar文件及其来源

为了更具体地说明您遇到的错误,我引用了5.4.3.1中列出的确切错误:

5.3。创建和加载

在运行时,一个类或接口不是由其名称决定的,而是由一对名称决定的:它的二进制名称(§4.2.1)和它的定义类加载器。每个这样的类或接口都属于一个运行时包类或接口的运行时包由类或接口的包名和定义类加载器决定。

5.4.3.1。类和接口分辨率

要将未解析的符号引用从D解析到由N表示的类或接口C,请执行以下步骤:

定义类加载器D用于创建一个由N表示的类或接口。该类或接口为C。该过程的详细信息见§5.3

因此,由于类或接口创建失败而引发的任何异常都可能由于类和接口解析失败而引发

如果C是数组类且其元素类型是引用类型,则通过递归调用§5.4.3.1中的算法来解析对表示元素类型的类或接口的符号引用

最后,检查对C的访问权限: 如果D无法访问C(§5.4.4),则类或接口解析将抛出非法访问错误。

例如,如果C是一个最初声明为公共的类,但在编译D后更改为非公共的类,则可能会出现这种情况

如果步骤1和2成功,但步骤3失败,则C仍然有效且可用。然而,解析失败,D被禁止访问C


总而言之,这个jar听起来好像来自另一个包,也就是另一个类加载器。

你能仔细检查一下你所有的Spring jar都有相同的版本吗?是的,我所有的Spring jar都是3.1.0版本。我注意到的另一件事是,如果我将Spring版本从3.1.0更改为3.0.7,一切都正常。所以这与spring的最新版本有关。