Springframework无法解析控制器上的配置类

时间:2015-06-17 10:07:20

标签: java eclipse spring maven spring-mvc

我正在开发一个带有eclipse,maven和spring的j2ee项目。一切都很顺利,除了我无法解决的奇怪和恼人的行为......

让我们从stacktrace开始:

TypeFichier fileType = TypeFichier.valueOf(fileTypeString);
switch(fileType)

在google上进行一些搜索后发现它可能与类路径问题有关,所以有我的构建路径(无法发布图片......):

在源文件夹构建路径中:     intranetLTTD / SRC /主/ JAVA     包括:全部     排除在外:无

和我的项目树视图:

Java Ressources        - src / main / java            -com.lttd.controller                 -FichiersController

所以它似乎不是类路径问题。

我还在google上发现" $ 1.class"意味着它是一个匿名的课程...为什么不呢,但我不能自己做,(我甚至不知道如何为控制器制作它)。

当我在我的FichiersController中进行任何更改(如声明变量)时,以及当我在我的FichiersController之后创建的控制器中进行任何更改时,会发生此错误,但不是我之前创建的控制器。

我找到了仍然可以运行项目的解决方法(这是一个奇怪的解决方法):在进行更改后,我必须更改我的FichiersController方法之一:

switch(TypeFichier.valueOf(fileTypeString))

到:

switch(TypeFichier.valueOf(fileTypeString))

或反向

switch(fileType) 

<context:component-scan base-package="com.lttd" />

在我的调度程序-servlet.xml中,我有:

'*'

我希望我已经提供了所有你需要的东西来帮我找出发生的事情,以及如何解决它。不要犹豫,要求进一步的信息。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

也许你已经解决了但我只是遇到了奇怪的$1.class同样的问题,对我来说这是Eclipse发布的一个问题所以我只是用maven构建我的web项目并将文件手动放入我的tomcat文件夹

答案 1 :(得分:0)

编辑:发现问题的原因: <context:component-scan base-package="com.lttd" /> 存在于dispatcher-servlet.xml中,但也出现在我的spring-security.xml中(由于我在项目开始时学习了j2ee spring)。这就是它创造FichierController $ 1的原因。但我不知道为什么它只发生在这个班级。

在spring-security.xml中删除<context:component-scan base-package="com.lttd" />后,我不再遇到问题了。

编辑: 最后这没有修复错误,错误在3天后再次出现......

这是FichiersController的方法,我必须编辑临时解决方法:



    @Transactional
    @RequestMapping(value = "/admin/fileEditAjax*", method = RequestMethod.GET)
    public @ResponseBody FichierFormObject fileEditAjax(@RequestParam (value="fileName", required = true) String fileName,
                                                    @RequestParam( value="fileType", required = true)String fileTypeString){

        FichierFormObject fileFormObject = new FichierFormObject();
        TypeFichier fileType = TypeFichier.valueOf(fileTypeString);

        //If the error is triggered, i have to change this 'switch(fileType)' to TypeFichier.valueOf(fileTypeString) or reverse
        switch(fileType){
            case FICHE_CONNEXION:
            case DOCUMENT_CLIENT:
                //some processing
                break;

            case PROCEDURE:
                //some processing
                break;

            case MODULEM3:
                //some processing
                break;

            case PRODUIT_CONNEXE:
                //some processing
                break;

            default:
                break;
        }

        return fileFormObject;
    }

但我不确定问题是否来自我的代码...

希望此编辑是添加这些信息的正确位置。