【问题标题】:Maven web project servlet class not found未找到 Maven Web 项目 servlet 类
【发布时间】:2015-10-28 09:35:16
【问题描述】:

只需使用 Maven webapp 架构设置一个 Eclipse 项目。我创建了一个 servlet 文件,并将其添加到 src/main/ 下的资源文件夹中 当我运行应用程序时,tomcat 报错:

实例化 servlet 类 com.ABCompany.Demo.SampleDemo 时出错。 java.lang.ClassNotFoundException: com.ABCompany.Demo.SampleDemo

该文件位于文件夹 src/main/resources/com/ABCompany/Demo/SampleDemo.java 下

我的 web.xml 在下面。

<web-app>
 <display-name>Demo Example</display-name>
 <servlet>
 <servlet-name>SampleDemo</servlet-name>
 <display-name>SampleDemo</display-name>
 <description></description>
 <servlet-class>com.ABCompany.Demo.SampleDemo</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>SampleDemo</servlet-name>
 <url-pattern>/SampleDemo</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
 <welcome-file>index.jsp</welcome-file>     
 </welcome-file-list>    
</web-app>

【问题讨论】:

  • 你建项目成功了吗?你看到目标文件夹了吗?
  • maven/eclipse/Java 的新手。如何构建这个 Eclipse Maven 项目。我只是一直在服务器上运行。
  • stackoverflow.com/a/28734984/1878022 先按照这个答案,然后右键runas->maven build->Goal=clean install
  • 做到了,现在它给了我目标文件夹。我如何运行它,以便它向我显示 tomcat 上的网页。我单击运行-> 在服务器上运行选择 tomcat,它给了我错误。我应该以另一种方式运行它。为菜鸟问题道歉。我是一个 .net 程序员,刚接触 java
  • 找不到相同的类错误

标签: eclipse maven servlets


【解决方案1】:

阅读问题:

该文件位于文件夹 src/main/resources/com/ABCompany/Demo/SampleDemo.java 下

Java源文件,应该在src/main/java

src/main/java/com/ABCompany/Demo/SampleDemo.java

其他文件,如属性、HTML/CSS 文件、图像、模板等。通常放在src/main/resources 中。由于它们不需要编译,只需将它们复制到构建目录中即可。因此它们可用于运行应用程序,或用于打包(创建 jar)。

提示:包名,不应该包含大写字母。所以推荐的是com.abcompany.demo

提示:另请阅读How to create a Web Application Project with Maven,它使用 Maven 原型进行设置!

【讨论】:

  • 这是 eclipse/maven 在 webapp 原型上提供的默认结构 - 当我创建 servlet 时将文件放在资源文件夹下。
  • 不确定您在哪里读到的,或者是什么为您创建了初始设置。请参阅我的更新答案。还可以阅读一些关于为 Web 开发设置 Maven 项目的其他内容。
【解决方案2】:

我遇到了同样的问题。

我的解决方案是: 项目创建时请手动创建src/main下的java文件夹,因为maven-archetype-webapp默认不创建src/main/java。

Before: src/main
After:  src/main/java

image:java folder manually created

当第一步准备好后,您可以创建所有需要的 servlet,请确保在 src/main/java 下创建所有类和 servlet。

问题是因为 servlet 是在 src/main/resources 下创建的,这意味着您的所有 .java 文件都被打包为资源,而不是编译为 .class。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-28
    • 2015-10-21
    • 1970-01-01
    • 2018-10-06
    • 2017-11-08
    • 2012-07-09
    • 2021-02-18
    • 1970-01-01
    相关资源
    最近更新 更多