`
javamvp
  • 浏览: 38915 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

Eclipse报告——Eclipse中关于AspectJ插件的报告

阅读更多

*:此文章为个人开发报告书,若有说错或者概念错误,希望来信silentbalanceyh@126.com,并且在评论里面给予纠正,谢谢提点)

1.开发环境:

开发用OSWindows Server 2008

开发用IDEOracle 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 Module2.4

Hibernate3.2

Java6.0

Java Annotation Processing Support5.0

JPA1.0

JSTL1.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.直接将jarImportWEB-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,项目Abuild PathProject标签里面添加了一个项目叫做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里面有它特殊的语法,比如关键字aspectpointcut以及afterbefore等,所以这里可能修改掉了编译规则,而且使用插件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 (part 2/2)

    Eclipse AspectJ: Aspect Oriented Programming with AspectJ and the Eclipse ADT

    ajdt2.2.3 for eclipse 4.3 (AspectJ Eclipse 插件)

    AspectJ Eclipse插件(ajdt)则是Eclipse集成开发环境(IDE)中的一个重要组件,它为开发者提供了在Eclipse中编写、调试和应用AspectJ代码的支持。本文将详细介绍ajdt2.2.3版本的下载、安装和使用过程。 首先,ajdt...

    AJDT-Aspectj Development Tools eclipse插件

    **AJDT(AspectJ Development Tools)是Eclipse集成开发环境中的一个重要插件,专为AspectJ编程语言提供支持。AspectJ是一种面向切面编程(AOP)的语言扩展,它允许开发者在Java应用程序中方便地处理横切关注点,如...

    Eclipse AspectJ: Aspect Oriented Programming with AspectJ and the Eclipse ADT (part 1/2)

    Eclipse Aspectj: Aspect Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools

    Eclipse AspectJ: Aspect-Oriented Programming

    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插件的重要性 在软件开发领域,Eclipse作为一个强大的开源集成开发环境(IDE),因其高度的可扩展性和丰富的插件支持而受到广大开发者的青睐。插件的...

    征服Spring AOP—— @AspectJ

    在压缩包文件"spring-aop-aspectj"中,可能包含了关于Spring AOP和@AspectJ的示例代码或文档,可以帮助你进一步理解和实践这些知识。通过学习和实践,你将能更好地掌握这一强大的工具,从而在你的IT职业生涯中征服...

    Eclipse RCP(富客户端平台)开发中文语言包_3.6.0.rar

    然后,在项目的插件配置中,引用该语言包作为依赖,这样在运行时,Eclipse会自动加载并显示中文界面。对于开发插件,还需要确保插件的本地化设置正确,以便插件的UI元素也能正确显示中文。 4. **RCP开发流程** ...

    aspectj-1.6.9.jar

    4. **工具集**:AspectJ还提供了工具集,如`aspectjweaver.jar`(运行时织入所需的 weaving agent)和`ajdt`(Eclipse 插件,用于在IDE中支持AspectJ开发)。 5. **许可证**:`license.txt` 文件通常包含了软件的...

    动手写一个AspectJ的gradle插件

    在本文中,我们将深入探讨如何动手编写一个基于AspectJ的Gradle插件。AspectJ是一种强大的面向切面编程(AOP)框架,它允许我们分离关注点,将横切关注点(如日志、事务管理)与核心业务逻辑解耦。而Gradle则是一个...

    AspectJ Cookbook中文版

    许多开发人员都对aop感兴趣 —— 特别是对aspectj感兴趣,这个java编程语言的开源扩展明确支持aop方法。然而,尽管aspectj纳入在eclipse这个日益流行的java开源ide之内,但是找到一种实用、非理论的方式来学习这种...

    aspectj环境安装

    如果你在Eclipse中使用Maven项目,可以在`pom.xml`中添加AspectJ的Maven插件,如`maven-compiler-plugin`和`maven-aspectj-plugin`,以便在构建过程中自动处理切面。 通过以上步骤,你就成功地在本地环境中安装并...

    eclipse3.5,3.6+ 中spring ide的安装

    【标题】:“eclipse3.5,3.6+ 中spring ide的安装” 【描述】:在使用Eclipse集成开发环境进行Spring应用开发时,安装Spring IDE插件是必不可少的步骤。Eclipse 3.5和3.6版本对插件的支持有所不同,但基本的安装...

    kotlin-eclipse:Kotlin Eclipse插件

    安装Kotlin插件的最简单方法是将该按钮拖放到正在运行的Eclipse窗口中: 另外,您可以使用帮助-&gt; Eclipse Marketplace…菜单,或以下更新站点: https://dl.bintray.com/jetbrains/kotlin/eclipse-plugin/last/ ...

    aspectj 1.6.8 jar包

    - **Eclipse 插件**:在Eclipse IDE中,安装AspectJ Development Tools (AJDT)插件,提供图形化的切面编辑和调试支持。 - **Maven/Gradle 插件**:在构建脚本中配置AspectJ Weaver插件,实现构建时或运行时的织入。 ...

    book :aspectj in action

    “工具”标签则可能意味着书中讨论了AspectJ与其他开发工具的结合,如构建工具Maven或Gradle中的AspectJ插件,以及如何在持续集成环境中应用AspectJ。此外,书中可能还提到了AspectJ的开发和调试工具,如AspectJ ...

    ajdt_2.2foreclipse

    AJDT(AspectJ Development Tools)是Eclipse IDE的一个插件,专为开发使用AspectJ语言的应用程序而设计。AspectJ是一种强大的面向切面编程(AOP)语言,它扩展了Java,允许程序员处理横切关注点,如日志、事务管理...

    eclipse黑色主题版本( plugins5)

    【标签】"eclipse"表明这是关于Eclipse IDE的知识点,Eclipse是一款广泛使用的开源Java开发工具,同时支持多种编程语言,具有丰富的插件生态系统,允许开发者自定义其开发环境。 现在,我们来看看压缩包中的文件...

    ajdt_2.1.3_for_eclipse_3.7.zip

    总的来说,"ajdt_2.1.3_for_eclipse_3.7.zip" 是一个用于Eclipse 3.7(Indigo)的AspectJ开发工具插件包,提供了在Eclipse环境中进行面向切面编程的完整支持。通过安装这个插件,开发者可以享受到如代码提示、编译器...

    aspectj-1.9.6.jar

    此外,理解如何在IDE如Eclipse或IntelliJ IDEA中配置AspectJ支持,以便获得更好的开发体验和实时反馈。 总的来说,AspectJ 1.9.6.jar作为Java AOP的重要实现,为开发者提供了一种优雅的方式来管理横切关注点,提高...

Global site tag (gtag.js) - Google Analytics