使用Android Studio并创建Java库模块作为子项目的一部分,我在以下Java语句中遇到错误:

javaFile.writeTo(System.out);

它抱怨无法解析符号“writeTo”和未知类“System.out”。

这是源代码类的要点
import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.TypeSpec;

import javax.lang.model.element.Modifier;

public class MyClass {

...

JavaFile javaFile = JavaFile.builder("com.foobar.helloworld", helloWorld)
        .build();


javaFile.writeTo(System.out);
}

最佳答案

在不确切知道您的异常是什么的情况下很难说,但是在测试子模块注释处理器时,我弹出了类似的消息。将处理器链接到我的主模块时,我得到了java.lang.NoClassDefFoundError: com/squareup/javapoet/MethodSpec。我正在使用android-apt来使注释处理器正常工作,因此在build.config中,我的依赖项具有apt配置定义:

dependencies {
    ...

    apt 'com.squareup:javapoet:1.7.0' // <- Note that since my Processor used javapoet, I had to include Javapoet in the main module's apt dependency as well as my processor jar
    apt files('../processor/build/libs/processor.jar')
}

一旦我包含了上面提到的依赖关系,那么一切都可以正常工作。不知道这是否适用于您的情况而没有更多详细信息,但这使我回到了正轨。

08-28 20:15