我有一个基本的 Struts 应用程序,它当前只有一个操作 - 登录。我确认我正确设置了映射,然后想在其后面添加一个实际操作(即验证凭据的操作。
我创建了一个新项目,并在其中放入身份验证类,然后将该项目添加到我的 Web 项目的构建路径中。但是,现在当我尝试调用我的操作时,出现以下错误:
java.lang.ClassNotFoundException: com.mysite.data.managers.Authentication
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
com.mysite.struts.actions.LoginAction.execute(LoginAction.java:31)
从其他评论和之前的帖子中,我了解到虽然我的类可以编译(确实如此),但任何引用的类都必须位于 WEB-INF/lib 中(可能位于 jar 文件中)。当引用的类是第三方包含时,这是有意义的。
当引用的类是我的应用程序的一部分时(即我作为应用程序的一部分编写的内容,尽管在不同的项目中),是否无法通过构建路径引用项目而不将项目导出为 jar 并将该 jar 复制到 WEB-INF/lib (这意味着每当我对这些项目进行更改时,我都需要重新打包这些类并再次导出)?
这个问题的后续内容是关于链接项目的。如果项目 A 中引用了项目 B 中的类,那么我是否需要将这两个项目都包含在 WEB-INF/lib 中?
最佳答案
这看起来更像是一个 Eclipse 问题。您没有提及您正在使用哪个版本的 Eclipse 或哪个应用程序服务器,但让我们看看这些是否有帮助。
在项目的属性中,检查“部署程序集”页面。源列表是否包括源文件编译到的文件夹?对于 Eclipse 动态 Web 项目,该路径通常为 WEB-INF/classes。您的 Struts jar 也列在那里吗?
对于您的后续问题,您还可以在该列表中包含其他项目。我认为这会拾取项目在其构建路径设置中“导出”的任何内容。
关于java - Struts基本类加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403777/