包含AspectJ支持VS代码

时间:2018-04-19 18:25:23

标签: visual-studio-code aspectj vscode-extensions aspectj-maven-plugin

在我目前的项目中,我使用的是JavaSpring Boot.aj个文件。但是,使用AspectJ的主要问题是没有很多IDE支持此功能。

Eclipse(我认为netbeans也是如此)支持AspectJ语言,因为我过去曾使用它。但是,在过去的几年里,我一直使用IntelliJ和Visual Studio Code IDE,但我并不想回到Eclipse(或Netbeans)。 :)

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

https://www.jetbrains.com/help/idea/enabling-aspectj-support-plugins.html

我开始为Visual Studio代码创建一个新的language server来管理.aj文件。我遵循本指南。

https://code.visualstudio.com/docs/extensions/example-language-server

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

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

enter image description here

正如您所看到的,我有一个名为.java的{​​{1}}文件,我希望将某些方法划分为一些Point个文件。在编译项目时,我只有一个.aj,其中包含方法Point.classclone()等。

另外,另一种可能的用法是,如果我的compareTo()类实现了某个接口,我就可以在.java文件中实现这些方法。

问题:我无法看到我的Java项目没有错误,因为.aj文件和.java文件没有"同步&# 34;,所以.aj类说明需要实现一些方法,尽管它们已在.java文件中定义。

有人可以帮我提供有关语言服务器开发的提示吗?

此致

1 个答案:

答案 0 :(得分:1)

我无法帮助您使用VS Code<> AspectJ集成,但我可以推荐解决您的问题。如果我的理解是正确的,那么您会收到错误,因为您的方面通过inter-type声明声明的方法对于您的java代码是不可见的。

在这种情况下,您可能会尝试使用声明和实现这些方法的默认方法创建Java 8接口。我会尝试完全摆脱这些方面并使用默认方法的接口,但如果 - 由于某些原因我不知道 - 你真的需要使用方面来实现这些方法,你仍然可以将你的默认方法留空并移动实施方面。这样您就不再需要使用类型间声明,因此VS代码集成可能会更好。