不要把某些 J2EE 服务器已经提供的包 (比如 servlet-api.jar) 之类的东西到处放。不是你担心少了就复制一个放在程序目录下就能工作的。由服务器提供的 API 就应该在服务器的地盘上,你的程序不应该再带上一个。如果服务器上少了,那是服务器管理员的责任,跟你的程序没有关系。
一般是这么约定的。
API 比较一些抽象的类,和默认的实现类,比如 javax.??? 开头的,这些与厂商无关。应该放在服务器下面。
其它的 API 实现类,看情况。通用的没有与其它版本的冲突的可以放在服务器下面。前提是越通用越可能放在服务器下面,越不通用 (比如 hibernate 2.0 和 hibernate 3.0 就不能放在服务器下面),只能放在应用程序相关的目录下,因为这些jar 与版本相关性很大,如果放在服务器下面就会导致某个使用 hibenerate 3 的程序不能与另一个使用hibenate 2.0 的程序同时工作。
再补充一下,上面说的服务器下和程序下的意思:
比如 Tomcat,它有 server/lib 和 common/lib 两个地方,如果这个东西仅仅服务器使用,当然是放在 server/lib 下,如果是服务器和程序都可以使用的,那可以放在 common/lib 下,但如果某个 API 有多个版本流行,那它就不应该出现在 common/lib 下面,因为放在这里导致多个使用不同版本的程序不能同时工作。因此,我们的做法是,对于这个种可能有版本冲突的 API,应该把所有的版本全部从 common/lib 下面删除,放在 web-app.war/WEB-INF/lib 目录下。
版本错误。肯定是在配置struts + spring 中出现的问题。spring.jar包用错了。
你的项目有问题