(*:此文章为个人开发报告书,若有说错或者概念错误,希望来信silentbalanceyh@126.com,并且在评论里面给予纠正,谢谢提点)
1.开发环境:
开发用OS:Windows Server 2008
开发用IDE:Oracle Workshop for WebLogic 10.3.0(以前的BEA Workshop Studio)
开发Web容器:Tomcat 5.5.27
开发数据库:MySQL Community Server
AspectJ插件:http://download.eclipse.org/tools/ajdt/33/update (1.5.3-->1.6.x)
2.现象描述:
昨天晚上我在平台IDE上安装了AspectJ插件,因为网速原因,我直接从上边地址下载下来过后安装到IDE平台里面,安装的第二天,我的自动更新提示有新插件,所以我就更新了,更新过后第三天的时候出现了“插件冲突”,使得AspectJ插件可以使用,但是Java的代码编辑器出现了下边的现象:
所有的Java编辑器里面报错的地方,在Package Explorer工作区里面不报错,而且取消Eclipse的自动编译过后,直接编译了过后使得Eclipse不能输出Java的.class二进制文件了,然后在Tomcat容器中出现了ClassNotFoundException的异常。后来问题升华到Java代码里面即使有错也能够编译通过。
最开始以为是项目的代码问题,但是我把项目迁移到PC机的时候也出现了问题,然后创建了一个新的项目,环境和配置一模一样的,没有问题,可以运行,而且编译也会报错,所以怀疑Eclipse创建的项目文件出了问题。
3.配置文件浅析:
Eclipse创建工程过程:
首先:File-->New-->Project
(出现的导航视图里面,选择Web目录下的Dynamic Web Project,大部分WTP平台都可以创建此类型的项目)
然后选择好了过后直接选择(详细说明以保证不会有不同环境的误解,见谅!)
Dynamic Web Module(2.4)
Hibernate(3.2)
Java(6.0)
Java Annotation Processing Support(5.0)
JPA(1.0)
JSTL(1.1)
Eclipse创建了工程过后,会出现以下的目录结构:
其主要配置目录结构有三个:
目录:.settings
文件:.classpath
文件:.project
简单介绍一下此三个文件目录:(网上资料的整合版本)
.settings目录:此文件目录下边有以下文件,主要分析以下所有Eclipse都应该有的文件
org.eclipse.jdt.core.prefs内容:(写字板打开)
#Fri Oct 10 16:07:49 CST 2008
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.6
org.eclipse.jst.common.project.facet.core.prefs内容
#Fri Oct 10 16:07:49 CST 2008
classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER\:\:org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType\:\:Sun/owners=jst.java\:6.0
classpath.helper/org.eclipse.jst.server.core.container\:\:org.eclipse.jst.server.tomcat.runtimeTarget\:\:Apache\ Tomcat\ v6.0/owners=jst.web\:2.5
eclipse.preferences.version=1
(V猜测:这两个文件是Eclipse的工程的基本环境文件,其中第二个是基于Web项目的,只有Web项目会出现第二个环境配置,应该是与项目文件无关的,而且在项目相关操作中除非在配置里面修改,否则这些文件应该在每个工程下边都是一样的。)
.classpath文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jrockit_160_05"/>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v5.5"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry combineaccessrules="false" kind="src" path="/com.iknowing.sc.sitebao.v6.framework.service"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Compass2.1"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Lucene"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/MySQL"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Spring2.5"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Tiles2.0"/>
<classpathentry kind="src" path=".apt_src">
<attributes>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="build/classes"/>
</classpath>
上边文件描述了工程相关依赖文件:
1.源文件具体位置:<classpathentry kind="src" path="src"/>、kind="src"属性,其目录相对于Eclipse创建的工程根目录
2.运行的系统环境:主要指定了使用的JVM的类型,如果是Web项目,还有运行的Web容器的类型
3.这里有一个属性:combineaccessrules="false",此属性一般建立的时候是建立的一个项目应该不会出现,如果我们在创建项目的时候创建的是几个项目,项目发布相互需要依赖的时候就需要在此处设置,com.iknowing.sc.sitebao.v6.framework.service为我们自己创建的此发布项目的一个依赖项目。
4.项目的输出目录:kind="output"属性设置了项目的输出目录
在BLOG http://www.iteye.com/topic/257120 里面:还提及到library的具体位置kind="lib"的属性项以及配置的项目生成的文档的位置:"javadoc_location"等
(V猜测:在Eclipse里面我使用到的载入jar包的方式有以下几种:
1.直接将jar包Import到WEB-INF/lib下边,这种仅仅限制于WEB工程项目使用;
2.直接在Java Build Path里面添加外联的jar文件,添加的文件和系统使用的Library同级目录;
3.创建自己的User Library,然后在里面添加外联的jar文件,添加的库与系统使用的Library同级目录,jar文件为库的子目录
4.直接使用系统提供的Library
鉴于BLOG http://www.iteye.com/topic/257120 上提及到的kind="lib"可能是Eclipse载入jar包的方式属第二种或者第四种,而我使用的是User Library的方式,所以我这里显示的配置文件里面还是kind="con",只是这里使用Eclipse内部变量:org.eclipse.jdt.USER_LIBRARY,至于四种的好坏和四种到底好坏我不是很清楚,个人习惯来定吧!)
.project文件:
此文件为描述问题的文件出现位置,在我们安装了AspectJ插件过后,点击项目右键会多一个选项:
AspectJ Tools --> Convert To AspectJ Tools选项,一旦选择了转换过后,.project文件发生了变化:
转换项目之前:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.iknowing.sc.sitebao.v6.framework.website</name>
<comment></comment>
<projects>
<project></project>
<!--依赖项目的项目列表-->
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.m7.nitrox.nitroxbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>com.m7.nitrox.webProjectNature</nature>
</natures>
</projectDescription>
转换项目过后:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.iknowing.sc.sitebao.v6.framework.website</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.ajdt.core.ajbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.m7.nitrox.nitroxbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.ajdt.ui.ajnature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>com.m7.nitrox.webProjectNature</nature>
</natures>
</projectDescription>
主要出现在高亮度的两行里面,先看看网上大部分讲述的.project文件:
<name></name>标签:描述了工程的名称
<comment></comment>标签:关于工程的相关描述
<projects></projects>标签:里面有一个子标签<project></project>,包含了我们设置的依赖的项目的列表,比如你建立的项目A,项目A在build Path的Project标签里面添加了一个项目叫做B,则这个标签内就会出现一个<project>B</project>,这里B是代表了另外一个项目名,即另外一个项目的.project文件里面的<name></name>里面的值
<buildSpec></buildSpec>标签:(V猜测:里面包含了整个项目在编译过程中的编译规则,使用什么插件来驱动编译器进行编译,描述了Eclipse平台在整个项目Build过程中使用的命令、使用的模块、验证结构和语法等各种操作都在这里进行描述)
<natures></natures>标签:里面包含了Eclipse在启动时加载此项目需要使用的插件,如果启动很慢可以将一部分插件Cancel掉,这些插件会在启动过后打开相关联文件的时候自动加载进来,这样可以让Eclipse启动速度加快一点点(*:这种小做法并不能将Eclipse速度优化)
4.解决方案:
将<buildSpec></buildSpec>标签里面第一行org.eclipse.ajdt.core.ajbuilder替换成为org.eclipse.jdt.core.javabuilder:
分析:AspectJ的项目Convert之所以会改变编译规则,主要是因为AspectJ里面有它特殊的语法,比如关键字aspect和pointcut以及after和before等,所以这里可能修改掉了编译规则,而且使用插件org.eclipse.ajdt.ui.ajnature来进行语法作色,AspectJ插件使得开发AspectJ的项目会很方便。如果出现相同的现象页可以检查此处的编译规则是否在使用Java编译,因为Eclipse插件里面不仅仅只有此插件是新语法改变了规则的,很多提供了编辑器的插件都会修改掉相关的语法编译规则,这个只是一个侧面。
注意:此问题可能会因为以下情况出现——AspectJ插件出现插件冲突以使得Eclipse里面的AspectJ插件产生了错误而不能使用,而项目又不能回滚,使得编译Java文件没有效果,不仅没有输出的.class文件,而且使得Java编辑器不能正确判断编译时的语法错误而产生。
5.总结:
以上是我在使用AspectJ插件中遇到的一个错误情况,若有错误说法或者语言上的误差,望来信指点:silentbalanceyh@126.com谢谢!
分享到:
相关推荐
Eclipse AspectJ: Aspect Oriented Programming with AspectJ and the Eclipse ADT
AspectJ Eclipse插件(ajdt)则是Eclipse集成开发环境(IDE)中的一个重要组件,它为开发者提供了在Eclipse中编写、调试和应用AspectJ代码的支持。本文将详细介绍ajdt2.2.3版本的下载、安装和使用过程。 首先,ajdt...
**AJDT(AspectJ Development Tools)是Eclipse集成开发环境中的一个重要插件,专为AspectJ编程语言提供支持。AspectJ是一种面向切面编程(AOP)的语言扩展,它允许开发者在Java应用程序中方便地处理横切关注点,如...
Eclipse Aspectj: Aspect Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools
This book is an introduction to AOP with AspectJ and Eclipse and shows how to create a productive AO development environment by using the AspectJ Development Tools for Eclipse (AJDT). Tools have an ...
### 常用Eclipse插件的在线更新地址解析与应用 #### Eclipse插件的重要性 在软件开发领域,Eclipse作为一个强大的开源集成开发环境(IDE),因其高度的可扩展性和丰富的插件支持而受到广大开发者的青睐。插件的...
在压缩包文件"spring-aop-aspectj"中,可能包含了关于Spring AOP和@AspectJ的示例代码或文档,可以帮助你进一步理解和实践这些知识。通过学习和实践,你将能更好地掌握这一强大的工具,从而在你的IT职业生涯中征服...
然后,在项目的插件配置中,引用该语言包作为依赖,这样在运行时,Eclipse会自动加载并显示中文界面。对于开发插件,还需要确保插件的本地化设置正确,以便插件的UI元素也能正确显示中文。 4. **RCP开发流程** ...
4. **工具集**:AspectJ还提供了工具集,如`aspectjweaver.jar`(运行时织入所需的 weaving agent)和`ajdt`(Eclipse 插件,用于在IDE中支持AspectJ开发)。 5. **许可证**:`license.txt` 文件通常包含了软件的...
在本文中,我们将深入探讨如何动手编写一个基于AspectJ的Gradle插件。AspectJ是一种强大的面向切面编程(AOP)框架,它允许我们分离关注点,将横切关注点(如日志、事务管理)与核心业务逻辑解耦。而Gradle则是一个...
许多开发人员都对aop感兴趣 —— 特别是对aspectj感兴趣,这个java编程语言的开源扩展明确支持aop方法。然而,尽管aspectj纳入在eclipse这个日益流行的java开源ide之内,但是找到一种实用、非理论的方式来学习这种...
如果你在Eclipse中使用Maven项目,可以在`pom.xml`中添加AspectJ的Maven插件,如`maven-compiler-plugin`和`maven-aspectj-plugin`,以便在构建过程中自动处理切面。 通过以上步骤,你就成功地在本地环境中安装并...
【标题】:“eclipse3.5,3.6+ 中spring ide的安装” 【描述】:在使用Eclipse集成开发环境进行Spring应用开发时,安装Spring IDE插件是必不可少的步骤。Eclipse 3.5和3.6版本对插件的支持有所不同,但基本的安装...
安装Kotlin插件的最简单方法是将该按钮拖放到正在运行的Eclipse窗口中: 另外,您可以使用帮助-> Eclipse Marketplace…菜单,或以下更新站点: https://dl.bintray.com/jetbrains/kotlin/eclipse-plugin/last/ ...
- **Eclipse 插件**:在Eclipse IDE中,安装AspectJ Development Tools (AJDT)插件,提供图形化的切面编辑和调试支持。 - **Maven/Gradle 插件**:在构建脚本中配置AspectJ Weaver插件,实现构建时或运行时的织入。 ...
“工具”标签则可能意味着书中讨论了AspectJ与其他开发工具的结合,如构建工具Maven或Gradle中的AspectJ插件,以及如何在持续集成环境中应用AspectJ。此外,书中可能还提到了AspectJ的开发和调试工具,如AspectJ ...
AJDT(AspectJ Development Tools)是Eclipse IDE的一个插件,专为开发使用AspectJ语言的应用程序而设计。AspectJ是一种强大的面向切面编程(AOP)语言,它扩展了Java,允许程序员处理横切关注点,如日志、事务管理...
【标签】"eclipse"表明这是关于Eclipse IDE的知识点,Eclipse是一款广泛使用的开源Java开发工具,同时支持多种编程语言,具有丰富的插件生态系统,允许开发者自定义其开发环境。 现在,我们来看看压缩包中的文件...
总的来说,"ajdt_2.1.3_for_eclipse_3.7.zip" 是一个用于Eclipse 3.7(Indigo)的AspectJ开发工具插件包,提供了在Eclipse环境中进行面向切面编程的完整支持。通过安装这个插件,开发者可以享受到如代码提示、编译器...
此外,理解如何在IDE如Eclipse或IntelliJ IDEA中配置AspectJ支持,以便获得更好的开发体验和实时反馈。 总的来说,AspectJ 1.9.6.jar作为Java AOP的重要实现,为开发者提供了一种优雅的方式来管理横切关注点,提高...