`
Josh_Persistence
  • 浏览: 1651268 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Eclipse中maven项目无法自动编译、编译失败、WEB-INF/classes目录中没有Class文件

阅读更多

      我们都知道,在一个典型的Maven项目中,编译后的class文件默认是放在targert/classes目录下的。但是我今天碰到一个比较奇怪的问题,在Eclipse中我通过import exsiting maven projects的方法,导入了2个maven的project,一个是非web project,另一个是web project。 在web project的target classes中,并没有我们期望的Class文件,所以部署到Eclipse的tomcat中时,在WEB-INF/classes中也没有对应的Class类。可能的原因有如下多个原因,希望大家可以对号入座:

 

1. 执行maven的命令,mvn clean install -DskipTests可以编译成功,在target/classes中可以看到相关的Class文件,但是如果在Project/Clean中clean相关的Project时,还需要重新使用mvn clean install -DskipTests重新生成Class文件(target/classes会被删除)

 

2. 执行mvn eclipse:clean eclipse:eclipse命令,并刷新后可以看到该Maven的Project变成了一个真正的常规的java的web project(在Project的icon上后有一个小圆球),这时,即使是使用Project/Clean后,也会在target/classes中重新自动生成Class类文件。(原因是一般的eclipse的项目空间有.project和.classpath两个文件.执行eclipse:eclipse就是让maven的eclipse插件把.classpath内的jar引用地址重新更新一遍. eclipse:clean就是删除所有eclipse项目文件再用eclipse:eclipse重建。)

 

但是你可能会碰到一个更加严重的问题,就是在Eclipse的Tomcat的wtpwebapps目录中不会有该web项目,换句话说,就是该项目不能被成功的部署到Eclipse的Tomcat中,这很有可能的原因是Deployment Assembly(程序部署集)或者是Project Facets属性存在问题,参照该篇博文以解决怎样设置Project Facets或者是Deployment Assembly,我碰到的问题是Deployment Assembly属性不存在,当我参照该博文(http://josh-persistence.iteye.com/admin/blogs/1926808)将Deployment Assembly配置成功后,部署也成功了。

 

另外除了上面我碰到的原因之外,实际开发中,你有还可能存在如下的原因:

 

在开始之前,查看Eclipse的problems view,里面可能会告诉相关的错误的原因,一般来说,可能有如下几种情况:

 

    1). 确保 project->build automatically已经被选上.


    2).  project->clean..->选第2个clean select project, 勾上start build immediatelly

    3).删除现在的项目, 重新导入源文件,设置eclipse为保存时编译,然后在保存的时候就可以自动编译了

    4).如果项目里引了某个不用的jar包,而那个包又被你删了,就会出现不报错但怎么也编译不出来class文件的情况,可以把所有包都删除,然后一个一个的再引入(需要的),不要一下子把所有包都引入来,没用的可能会引起不良后果.

     5). 想删掉某个class文件重新生成,删除class文件后,但classes目录下的文件夹被其它程序打开,比如SublineText。此时编译也不会通过,在problems下可能会提示“con''t delete classes ……”。关掉其它程序重新编译即可。

     6).remove掉 JRE System Library,重新导入即可编译。


     7).把build path中所有包都remove掉。然后又add jars,add libraries把需要的加进去。

     8).project->properties->java build path->source->.../WEB-INF/src的output folder不要默认,编辑让它指向../WEB-INF/classes然后重新点击build工程即可自动编译。

     9).如果你的项目是CVS进行版本控制的项目,查看工程下面是否缺少了work目录,由于CVS控制时不把work加如版本,所以 checkout后没有这个目录,要手工加上有的工程就能自动编译了

 

2
8
分享到:
评论

相关推荐

    eclipse构建Maven项目.doc

    1. src/main/java:存放Java源代码的文件夹,发布项目时将该文件夹下的class文件复制到WEB-INF/classes目录下。 2. src/main/resources:存放配置文件、xml、properties文件等的文件夹,发布项目时该文件夹的文件也...

    eclipse打开java类编译后的class文件所在目录

    总结来说,Eclipse中.java文件编译后的.class文件通常位于项目的"bin"或"classes"目录下,可以通过"Java构建路径"的设置查看或修改。批处理文件可以用来方便地列出这些文件,而Eclipse的"Package Explorer"视图则...

    java login 用户登陆程序404错误解决办法

    - **检查Servlet配置**:确保`web.xml`文件中正确地映射了每个Servlet,并且对应的`.class`文件存在于`WEB-INF/classes`目录下。 - **验证JSP与Servlet的关系**:JSP页面中的表单提交路径应与Servlet的URL模式匹配,...

    springboot编译jar包后无法扫描子jar包中的注解解决方法

    然而,在某些情况下,可能会遇到主项目(比如这里的A项目)在编译成一个独立的JAR文件后,无法正确扫描并加载来自子项目(如B项目)中的注解的情况。本文将详细介绍这一问题的原因以及如何通过调整Maven配置来解决这...

    Java web项目代码结构说明

    编译后的`.class`文件默认保存路径是`Contentdirectory`目录下的`WEB-INF/classes`。 #### 三、Maven项目的代码结构 **1. Maven项目结构:** - **新建Maven项目:** - Maven是一个项目管理和综合工具,可以自动化...

    eclipse中JavaWeb项目开发环境配置步骤

    在"WEB-INF/classes"目录下,Eclipse会自动编译Java源代码生成对应的class文件。 为了实现动态网页,还需要配置JSP(JavaServer Pages)支持。在Eclipse中,右键点击项目,选择“Build Path” -> “Configure Build...

    MyEclipse/Eclipse不编译

    5. **确认编译路径**:确保编译输出路径正确设置,一般为`XXX/web/WEB-INF/classes`。这里需要根据实际项目结构进行调整。 ##### 方法二:添加JRE的Jar包 1. **打开项目属性**:同样地,在项目上右键点击,选择...

    maven的优缺点 项目

    将maven的项目重新编译,在项目中右击,可以pom上右击,可以将pom(目录)下面的jar和war重新编译 如果出现以上情况,说明下载的jar包有问题,把这下面的文件删除,重新下载 每创建一个项目,都有pom.xml,所有的配置都...

    b3log-solo在eclipse下的热部署方案.docx

    2. **编译更新:** Eclipse会自动编译修改后的Java代码,并将新生成的`.class`文件替换到`WEB-INF/classes`。 3. **资源更新:** 对于Web资源的更改,如HTML、CSS、JavaScript等,同样会在不重启服务器的情况下自动刷新...

    Eclipse 项目环境搭建

    该文件位于`src/main/webapp/WEB-INF`目录下。需要配置的内容包括Servlet容器的初始化参数、过滤器等。 ```xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=...

    IDEA打包Eclipse項目

    - 在弹出的对话框中选中对应的模块名称,这样就可以把编译后的class文件自动加入到`WEB-INF/classes`目录下。 5. **解决可能遇到的问题**: - 如果在配置过程中出现错误提示,可以尝试点击右下角的`Fix`按钮来...

    Eclipse中创建WebMavenProject并部署到Tomcat中.pdf

    这是因为Eclipse将编译后的class文件放在WEB-INF/classes目录下,而JSP文件位于WebRoot目录,所以可以直接指向WebRoot作为虚拟目录,避免了频繁的打包和发布过程。 总结起来,通过Eclipse和Maven的结合,我们可以...

    用Servlet编写的一个简单的hellworld页面.docx

    这些文件需要放在`WEB-INF/classes`目录下,或者如果使用了JAR文件,则放在`WEB-INF/lib`目录中。 3. **Tomcat服务器配置**:确认你的Tomcat服务器已正确安装并且运行。检查`server.xml`文件中的`Context`元素,...

    springmvc-mybatis02.zip

    6. `build`:构建目录,可能包含编译后的class文件、编译过程中的临时文件等,这在Maven或Gradle等构建工具中很常见,但Eclipse项目通常将编译结果放在`WebContent/WEB-INF/classes`下。 通过这些文件,我们可以...

    SSH整合步骤.doc

    - `WebContent/WEB-INF/classes`:存放编译后的class文件。 - `WebContent/WEB-INF/lib`:存放第三方库的jar包。 - `WebContent/WEB-INF`:存放web.xml等Web应用配置文件。 #### 四、添加Spring支持 1. **引入...

    SSH Project

    5. **项目结构**:通常,SSH项目的目录结构包括src/main/java(存放Java源代码)、src/main/resources(存放配置文件)、Web-INF/web.xml(Web应用配置文件)、WEB-INF/classes(编译后的class文件)和lib(存放第三...

    Axis1.4发布的服务与web项目进行整合

    3. **复制 class 和 jar 文件**:将编译后的 `.class` 文件放到 `TOMCAT_HOME/webapps/axis/WEB-INF/classes` 目录下,并将依赖的 jar 包放入 `TOMCAT_HOME/webapps/axis/WEB-INF/lib`。 4. **部署配置文件**:在 `...

    struts2项目部署

    2. **构建项目**:使用IDE(如Eclipse、IntelliJ IDEA)或命令行工具(如Maven或Gradle)将源代码编译为class文件,生成到`WEB-INF/classes`目录下。 3. **配置web.xml**:在`web.xml`中配置Struts2的核心过滤器`...

Global site tag (gtag.js) - Google Analytics