2013-05-09 4 views
1

я получаю следующее исключение:Spring бросает исключение

Build path is incomplete. Cannot find class file for com/hexgen/core/IHexGenDictionaryBased 

Это линия, где я получаю вышеуказанное исключение:

<context:component-scan base-package="com.hexgen.api.facade" /> 

Это полный 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:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:sec="http://www.springframework.org/schema/security" 
    xsi:schemaLocation=" 
       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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
       http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 

    <sec:global-method-security pre-post-annotations="enabled" 
           secured-annotations="enabled" 
           authentication-manager-ref="authenticationManager" 
           proxy-target-class="true"> 
     <sec:expression-handler ref="expressionHandler"/> 
    </sec:global-method-security> 

    <bean id="expressionHandler" class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler"> 
     <property name="permissionEvaluator" ref="hexgenPermissionEvaluator" /> 
    </bean> 

    <bean id="hexgenPermissionEvaluator" class="com.hexgen.api.facade.security.HexGenPermissionEvaluator"/> 

    <context:component-scan base-package="com.hexgen.api.facade" /> 
    <mvc:annotation-driven /> 
    <context:annotation-config /> 
</beans> 

Может ли кто-нибудь объяснить, что я должен сделать, чтобы исправить это?

+0

Пожалуйста, обратите внимание на upvote, если вы нашли мой ответ, указывающий на вас в правильном направлении. –

ответ

1

Вы должны убедиться, что везде, где есть класс (или его .class файл), это местоположение должно находиться на пути сборки (или пути к классам). Если это в каком-то другом hexgen-core.jar, то, конечно, обязательно добавьте его в свой путь сборки (используя Eclipse) или путь к классам (используя параметр -cp).

Если файл в каком-либо другом каталоге проекта, то добавьте его /src в качестве исходного каталога для вашего проекта Spring, а затем все классы core будут автоматически находиться в вашем пути к классам.

1

Я бы подумал, что вам нужно иметь компонентный сканер для общего пакета как для api, так и для ядра.

Изменение <context:component-scan base-package="com.hexgen.api.facade" /> должно быть <context:component-scan base-package="com.hexgen" />, и он должен забрать основной класс, которого он не может найти.

Смежные вопросы