[英]cvc-elt.1: Cannot find the declaration of element 'beans'
I am trying to get a bean object to authenticate the user login functionality with Spring Security:我正在尝试获取一个 bean 对象以使用 Spring Security 对用户登录功能进行身份验证:
ApplicationContext context = new ClassPathXmlApplicationContext(
"com/humandevice/drive/fx/util/applicationContext.xml");
authenticationManager = (AuthenticationManager) context
.getBean("authenticationManager");
My applicationContext.xml
is below:我的
applicationContext.xml
如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
xmlns:context="http://www.springframework.org/schema/context">
<context:component-scan base-package="com.humandevice.drive.fx">
<context:include-filter type="regex"
expression="com.humandevice.drive.fx.*" />
</context:component-scan>
<bean id="LoginController" alias="loginController" class="controller.LoginController">
<property name="authenticationManager" ref="authenticationManager" />
<property name="applicationContext" ref="applicationContext" />
</bean>
<bean id="applicationContext" alias="applicationContext"
class="org.springframework.context.ApplicationContext;">
</bean>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userService">
<password-encoder ref="bCryptPasswordEncoder" />
</authentication-provider>
</authentication-manager>
</beans>
but I get this exception:但我得到这个例外:
Caused by: org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 64; cvc-elt.1: Cannot find the declaration of element 'beans'.
I am having difficulty understanding the issue.我很难理解这个问题。
I have made some changes to my XML as such:我对我的 XML 做了一些更改,如下所示:
<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd"> <import resource="/context-service.xml" /> <import resource="/context-repository.xml" /> <context:component-scan base-package="com.humandevice.drive.fx"></context:component-scan> <authentication-manager> <authentication-provider user-service-ref="com.humandevice.drive.service.user.IUserService"> <password-encoder ref="bCryptPasswordEncoder" /> </authentication-provider> </authentication-manager> </beans:beans>
I now receive this exception:我现在收到此异常:
lineNumber: 11; columnNumber: 44; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'import'.
Your default namespace is http://www.springframework.org/schema/security
and you configured xmlns:beans="http://www.springframework.org/schema/beans"
this means you have to add the prefix beans:
to all the tag form http://www.springframework.org/schema/beans
so your XML should be as follows.您的默认命名空间是
http://www.springframework.org/schema/security
并且您配置了xmlns:beans="http://www.springframework.org/schema/beans"
这意味着您必须添加前缀beans:
to所有标签形式http://www.springframework.org/schema/beans
所以你的 XML 应该如下。
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
xmlns:context="http://www.springframework.org/schema/context">
<context:component-scan base-package="com.humandevice.drive.fx">
<context:include-filter type="regex"
expression="com.humandevice.drive.fx.*" />
</context:component-scan>
<beans:bean id="LoginController" alias="loginController" class="controller.LoginController">
<beans:property name="authenticationManager" ref="authenticationManager" />
<beans:property name="applicationContext" ref="applicationContext" />
</beans:bean>
<beans:bean id="applicationContext" alias="applicationContext"
class="org.springframework.context.ApplicationContext;">
</beans:bean>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userService">
<password-encoder ref="bCryptPasswordEncoder" />
</authentication-provider>
</authentication-manager>
</beans:beans>
This code will help you.此代码将帮助您。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
classpath:/org/springframework/beans/factory/xml/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
classpath:/org/springframework/context/config/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
classpath:/org/springframework/aop/config/spring-aop-3.0.xsd
">
</beans>
对我来说,我只是在同一个地方剪切、粘贴和保存 XML 文件,它对我有用!!
I had similar issue and I want to give another example of possible causes.我有类似的问题,我想再举一个可能原因的例子。
Original .xml原始 .xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="https://www.springframework.org/schema/mvc"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:beans="https://www.springframework.org/schema/beans"
xmlns:context="https://www.springframework.org/schema/context" xmlns:tx="https://www.springframework.org/schema/tx"
xsi:schemaLocation="https://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
https://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd
https://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
working .xml:工作.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
Solutions:解决方案:
xmlns="http://www.springframework.org/schema/beans"
as base xmlns.xmlns="http://www.springframework.org/schema/beans"
作为基础 xmlns。 remove beans:
prefixbeans:
前缀https
to http
https
更改为http
For me somehow the changes to the applicationContext.xml were not updated in the classpath.对我来说,对 applicationContext.xml 的更改没有在类路径中更新。 So I manually deleted the applicationContext.xml file from classpath and re-build the application which solved my problem
所以我从类路径中手动删除了 applicationContext.xml 文件并重新构建了解决我问题的应用程序
I'm completely unsure why this wierd kind of behavior.我完全不确定为什么会有这种奇怪的行为。 I too faced the same exception and followed what
Karthikeyan Vaithilingam
has advised.我也面临同样的例外,并遵循
Karthikeyan Vaithilingam
建议。 But still the issue is not resolved.但问题仍然没有解决。 So I have reverted the changes what ever I have done and saved the file.
所以我已经恢复了我所做的更改并保存了文件。 Viola!!
中提琴!! Exception gone, no errors now.
异常消失,现在没有错误。
I got same error while trying to create executable jar.我在尝试创建可执行 jar 时遇到了同样的错误。 I had
我有
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:context.xml");
instead of (notice the * after classpath)而不是(注意类路径后的 *)
ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:context.xml");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.