为什么编译器找不到“MappingProcessor”注释处理器?

时间:2015-05-20 19:23:36

标签: java annotations

我在OSX 10.9.5上使用IntelliJ 13.0.2,使用java 1.8。尝试在IntelliJ中运行单元测试时出现此错误。当我在命令行中通过maven运行编译或测试时,它运行正常。

我已进入文件 - >其他设置 - >默认设置 - >编译器 - >注释处理器并取消选中启用注释处理。我也尝试过选中启用注释处理,并保留选中的默认值。

我们正在使用

运行测试
@RunWith(MockitoJUnitRunner.class)

和它找不到的Annotation处理器是org.mapstruct.ap.MappingProcessor。我不知道从哪里得到它,它不在我们的进口中。也许是Mockito的依赖?

2 个答案:

答案 0 :(得分:5)

这是因为领域而发生的。您可以使用这些依赖关系

classpath“io.realm:realm-gradle-plugin:2.0.0-SNAPSHOT

classpath'com.android.tools.build:grad:2.0.0-alpha3

classpath'com.neenbedankt.gradle.plugins:android-apt:1.8

2.0.0版本的快照。祝你好运!

答案 1 :(得分:4)

在我使用自己的注释处理器遇到的更一般的情况下,这是必要的。

在设置页面中,选择“处理器路径”单选按钮。这必须是目标jar,你应该尝试找到MappingProcessor jar。

我认为这是因为在终端上运行时,你会这样做:
// Destructor ~Stack() { if ((size > 0) && (currentArray) != NULL && (newArray != NULL)) { delete[] currentArray; delete[] newArray; } } inline void push(T value) { if (isEmpty()) { // Stack size is increased by 1 size++; currentArray = new T[size]; currentArray[size - 1] = value; } else { // Stack size is increased by 1 size++; // Create the new array newArray = new T[size]; // Copy the contents of the old array into the new array copy(currentArray, currentArray + size, newArray); // Push the new value on to the new array newArray[size - 1] = value; // Copy the new array into the current currentArray = new T[size]; currentArray = newArray; } }