来自不同JAR

时间:2016-08-18 16:44:55

标签: java spring spring-bean

假设我正在尝试在dispatcher-servlet.xml中声明一个bean:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    ...

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/views/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
    ...

</beans>

但问题出在这里:在我自己的项目中,我有一个名为org.springframework.web.servlet.view的软件包,在该软件包中,我没有和Spring一样的类。这样做是“混淆”Spring,因此,在我的项目中查找类,但我希望它从Spring库/ jar中获取类。这会导致错误,因为它无法找到类。我如何告诉Spring查看自己的类而不是我的类?

我无法告诉你这有多奇怪,但在我的项目中,即使我的IDE也无法分辨出类的定义。但是在另一个项目中,我已经尝试过它仍然有效。

2 个答案:

答案 0 :(得分:1)

如果您没有任何共享姓名的课程,那么使用相同的课程名称不会有任何问题。我个人建议您更改包名称,因为这可以帮助您确定问题。如果您的IDE无法找到Spring类,那么您需要的Spring jar可能不在类路径上。

在我用来形成答案的包裹和类碰撞here上有一些有用的内容。

答案 1 :(得分:0)

在不了解您的环境的情况下,无法真正帮助您。您的IDE可能以与Tomcat或标准JVM不同的顺序加载软件包。您的项目清单文件可能包含一些线索。这里有一些关于java如何加载jar文件和包的信息。 Java: how classes are found

底线是..

您的项目中不应该包含名称为org.springframework.web.servlet.view的包。 Java Package naming standards