我正在使用 AspectJ 1.9.7,并且正在尝试使用ajc
. 假设我有一个名为的模块test
和以下树:
.
└── test
├── aspectj
│ ├── Main.java
│ └── TestAspect.aj
└── module-info.java
使用javac
我用来编译它的命令是:
javac --module-source-path . -d ../bin -m test
一切都很好,当然没有编织过程。相反,如果我尝试使用ajc
( ajc --module-source-path . -d ../bin -m test
) 运行同一行,则输出为:
[error] build config error: dir arg not permitted: test
[error] unrecognized single argument: "-m"
[error] no sources specified
3 errors
我想此时该-m
选项不受支持。我发现了这个问题,用户说可以在编译过程中指定使用 javac-usejavac
的选项,但至少对我而言,它不起作用,甚至无法识别该选项。
1)如何--module-source-path
使用ajc
?
假设--module-source-path
不支持,我选择了该--module-path
选项。同样,使用javac
,一切正常:
javac -d bin --module-path test $(find . -name *.java)
但是切换到ajc
( ajc -d bin --module-path test $(find . -name *.java -o -name *.aj)
),输出是这样的:
/home/maluz/Desktop/OneDrive/First Semester/TSP/labs/lab2/Test/test/module-info.java:1 [error] Syntax error on token "module", aspect expected
module test {
^^^^^
1 error
删除时相同的输出--module-path
。
2)有没有办法编译一个模块ajc
?
另一种方法是:
# I compile every *.java and *.aj except module-info.java with ajc
$ ajc -d bin $(find . \( -name *.java -o -name *.aj \) -and \( -not -name *module-info.java \))
# I compile module-info.java separately with javac
$ javac --module-path test -d bin/ test/module-info.java
它可以工作,但必须有一种方法可以做到这一点ajc
,鉴于此,--module-path
并且--module-source-path
记录在man的模块编译选项下。ajc
我不确定这是否相关,但我正在使用openjdk 15.0.2 2021-01-19
.