私は自分のプロジェクトで log4j 2.11.1 を使用しており、@Plugin アノテーションを使用していくつかのカスタム アペンダーと構成ファクトリを作成しました。
これは、Eclipse 4.9 と IntelliJ の両方で、エラーなしで問題なくコンパイルされます。ただし、Eclipse バッチ コンパイラを実行すると、同じコードが IllegalArgumentException で失敗します。
Processing annotations
java.lang.IllegalArgumentException: Unknown location : CLASS_OUTPUT
at org.eclipse.jdt.internal.compiler.apt.util.EclipseFileManager.getFileForOutput(EclipseFileManager.java:436)
at org.eclipse.jdt.internal.compiler.apt.dispatch.BatchFilerImpl.createResource(BatchFilerImpl.java:89)
at org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor.writeCacheFile(PluginProcessor.java:117)
at org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor.process(PluginProcessor.java:78)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:142)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:124)
at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:162)
at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:940)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:450)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:426)
at org.eclipse.jdt.internal.compiler.batch.Main.performCompilation(Main.java:4693)
at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:1781)
at org.eclipse.jdt.internal.compiler.batch.Main.main(Main.java:1485)
Processing annotations
No elements to process
1. ERROR: Unknown location : CLASS_OUTPUT
1 problem (1 error)
このレポでは、この問題を再現するための最小限のプロジェクトを作成しました。ECJ のバージョン 4.7 と 4.9 を使用してみました。また、Java 8 OpenJDK と Oracle を使用してみました。すべて Ubuntu 18.04 マシンで実行しました。
ここで何が起こっているのか手がかりはありますか?
編集: OSX マシンで Java10 を使用しようとすると、同じエラーが表示されます。