use*_*201 0 java eclipse tomcat
我正在使用 eclipse 并添加 tomcat 6 服务器。每当我尝试启动服务器时,它都会自动将服务器 api jar 复制到 WEBINF/lib 文件夹中,并且应用程序不会启动
INFO: validateJarFile(/media/01CB9CAC704E03A0/Projects/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/myapp/WEB-INF/lib/servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,在查看其他页面后终于让它工作了。我将在这里列出它,以防其他人遇到同样的问题。
\n\n就我而言,myeclipse 项目是从 maven .pom 文件创建的,该文件将 JEE 1.5 文件列为“提供”范围,即这些文件将由容器提供(在我的情况下为 tomcat 6)。因此,如果我使用 maven 创建一个 war 文件并将其放入 webapps 目录中,它就可以正常工作。每次进行更改时都会有点乏味,因此我决定进行爆炸式部署,就在那时我遇到了同样的问题。
\n\n由于项目文件是从 pom 文件创建的,因此这些依赖项进来了,但 Eclipse 项目文件不会将这些依赖项识别为“已提供”并且不会部署。当 TOMCAT 发现该规范的两个实现时,它并不高兴:
\n\n“Servlet 规范 2.3 秒 9.7.2 建议 \xe2\x80\xa6 容器用于在 WAR 中加载 servlet 的类加载器必须允许开发人员使用 getResource 按照正常的 J2SE 语义加载 WAR 中的库 JAR 中包含的任何资源。不得允许 WAR 覆盖 J2SE 或 Java servlet API 类。进一步建议加载程序不允许 WAR 中的 servlet 访问 Web 容器\xe2\x80\x99s 实现类。还建议应用程序类实现 loader 以便优先加载 WAR 中打包的类和资源,而不是驻留在容器范围的库 JAR 中的类和资源。”
\n\n我尝试使用上述解决方案来更改我的部署程序集配置,但这单独没有帮助,因为如果我在菜单项目属性/MyEclipse/Web/Deplyment/Configure 工作区中选择“来自构建路径的 JARS”,这些 jar 就会被捆绑在一起设置。\n我需要这样做,因为我有其他依赖项 jar(容器未提供)。
\n\n解决方案:
\n\nYMMV。但无论如何,如果您阅读上面的 servlet 规范定义,然后查看工作区中的配置,您就可以解决它。
\n\n希望这可以帮助。
\n| 归档时间: |
|
| 查看次数: |
4143 次 |
| 最近记录: |