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