Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code 包括对VS代码的AspectJ支持_Visual Studio Code_Aspectj_Vscode Extensions_Aspectj Maven Plugin - Fatal编程技术网

Visual studio code 包括对VS代码的AspectJ支持

Visual studio code 包括对VS代码的AspectJ支持,visual-studio-code,aspectj,vscode-extensions,aspectj-maven-plugin,Visual Studio Code,Aspectj,Vscode Extensions,Aspectj Maven Plugin,在我当前的项目中,我正在使用Java、springboot和.aj文件。然而,使用AspectJ的主要问题是没有很多ide支持此功能 Eclipse(我认为netbeans也支持)支持AspectJ语言,因为我以前使用过它。然而,在过去的几年中,我一直在使用IntelliJ和Visual Studio代码IDE,我真的不想回到Eclipse(或Netbeans)上来 另外,我知道,IntelliJ的最终版本支持AspectJ。问题是您必须拥有IntelliJ许可证才能使用它 我开始为Visua

在我当前的项目中,我正在使用
Java
springboot
.aj
文件。然而,使用
AspectJ
的主要问题是没有很多ide支持此功能

Eclipse(我认为netbeans也支持)支持AspectJ语言,因为我以前使用过它。然而,在过去的几年中,我一直在使用IntelliJ和Visual Studio代码IDE,我真的不想回到Eclipse(或Netbeans)上来

另外,我知道,
IntelliJ
的最终版本支持AspectJ。问题是您必须拥有IntelliJ许可证才能使用它

我开始为VisualStudio代码创建一个新的
语言服务器
,以管理
.aj
文件。我遵循这个指南

.aj
文件现在颜色正确,并显示有效语法

但是,我在Java代码中遇到了错误。关于AspectJ描述,请检查此架构:

如您所见,我有一个名为
Point
.java
文件,我想在一些
.aj
文件中划分一些方法。编译项目时,我只需要一个
Point.class
,其中包括方法
clone()
compareTo()
,等等

另外,另一个可能的用途是,如果我的
.java
类实现了一些接口,我就能够实现
.aj
文件中的方法

问题:我无法看到没有错误的Java项目,因为
.Java
文件和
.aj
文件没有“同步”,因此
.Java
类表示需要实现一些方法,尽管它们在
.aj
文件中定义

有人能帮我学习语言服务器开发的技巧吗


关于,

我无法帮助您进行VS-Code AspectJ集成,但我可以推荐解决您的问题的方法。如果我的理解是正确的,那么您会遇到错误,因为您的方面通过类型间声明声明声明的方法对java代码不可见


在这种情况下,您可以尝试使用声明和实现这些方法的默认方法创建Java8接口。我会尝试完全去掉方面,只使用带有默认方法的接口,但是如果出于某种我不知道的原因,您确实需要使用方面来实现这些方法,那么您仍然可以将默认方法保留为空,并将实现移到方面中。这样,您就不再需要使用类型间声明,因此VS代码集成可能会更好。

首先,非常感谢您的回复。我是SpringRoo项目的负责人之一。此工具允许您使用命令生成Spring引导应用程序。生成的项目使用.aj文件包含工具维护的生成代码。如果代码位于.java文件中,则表示您已经自定义了该代码,SpringRoo不应管理该代码。这在过去是令人惊讶的,但似乎AspectJ并不是真的。。。我曾经考虑过使用Java8接口来取代AspectJ。既然我有这个问题,也许我会试试看!谢谢在我的职业生涯中,我在许多不同的项目中都使用过AspectJ,但在任何新项目中引入AspectJ作为硬依赖项时,我也会非常谨慎,除非有非常充分的理由这样做。不幸的是,AspectJ在支持最新的语言特性和工具支持方面往往落后于Java。随着新的Java发布周期缩短到6个月,这将越来越成为一个问题。如果Roo能够像现在一样,只使用本机Java语言特性,那将是一条非常值得考虑的未来道路。