試圖實現基本JavaPoet例如應用(見下文)在Android的ActivityWatcher類從LeakCanary:怎麼到Modifier.PUBLIC一個參考,不能在建設者MethodSpec的methodBuilder爲JavaPoet
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
該Modifier.PUBLIC和Modifier.STATIC,另.addModifiers聲明產生了Android Studio錯誤
及以下gradle這個錯誤:
:Machine-android:compileDebugJava
C:\ AAAMachine \ Machine-master \ Machine-android \ src \ main \ java \ com \ bmp \ ActivityWatcher.java:58:錯誤:無法訪問修改器 .addModifiers(Modifier.PUBLIC,Modifier.STATIC) ^ 未找到javax.lang.model.element.Modifier的類文件 C:\ AAAMachine \ Machine-master \ Machine-android \ src \ main \ java \ com \ bmp \ ActivityWatcher.java:65:error:method類Builder中的addModifiers不能應用於給定的類型; .addModifiers(Modifier.PUBLIC,Modifier.FINAL) ^ 必需:修飾符[] found:int,int reason:varargs mismatch; int無法轉換爲Modifier C:\ AAAMachine \ Machine-master \ Machine-android \ src \ main \ java \ com \ bmp \ ActivityWatcher.java:73:錯誤:無法訪問Filer javaFile.writeTo(System.out) ; ^ javax.annotation.processing.Filer的類文件未找到 C:\ AAAMachine \ Machine-master \ Machine-android \ src \ main \ java \ com \ bmp \ ActivityWatcher.java:172:error:method addModifiers in類生成器不能應用於給定的類型; .addModifiers(Modifier.PUBLIC,Modifier.STATIC) ^ 必需:修飾符[] found:int,int reason:varargs mismatch; int無法轉換爲Modifier C:\ AAAMachine \ Machine-master \ Machine-android \ src \ main \ java \ com \ bmp \ ActivityWatcher.java:179:錯誤:類Builder中的addModifiers方法無法應用於給定的類型; .addModifiers(Modifier.PUBLIC,Modifier.FINAL) ^ 必需:修飾符[] found:int,int reason:varargs mismatch; int無法轉換爲Modifier C:\ AAAMachine \ Machine-master \ Machine-android \ src \ main \ java \ com \ bmp \ ActivityWatcher.java:187:錯誤:無法訪問路徑 javaFile.writeTo(System.out) ; ^ java.nio.file.Path的類文件未找到 注意:C:\ AAAMachine \ Machine-master \ Machine-android \ src \ main \ java \ com \ bmp \ internal \ MachineInternals.java使用或覆蓋不贊成使用的API。 注意:使用-Xlint:deprecation重新編譯以獲取詳細信息。 注意:一些消息已被簡化;重新編譯-Xdiags:冗長得到充分的輸出 6錯誤
失敗
失敗:建立失敗,一個例外。
出了什麼問題: 執行失敗的任務 ':機器的android:compileDebugJava'。
Compilation failed; see the compiler error output for details.
嘗試: 與--stacktrace選項獲取堆棧跟蹤運行。使用--info或--debug選項運行以獲取更多日誌輸出。
構建失敗
總時間:6.881秒
,這裏是從信息的錯誤:
:machine-android:compileDebugJava
C:\ AAAmachine \機主\機器的Android \ SRC \ main \ java \ com \ bmp \ ActivityWatcher.java 錯誤:(58,15)錯誤:無法訪問修改器 未找到javax.lang.model.element.Modifier的類文件 錯誤:(65,15)錯誤:類Builder中的方法addModifiers無法應用於給定的類型; 必需:修飾符[] found:int,int reason:varargs mismatch; varargs mismatch; int無法轉換爲修飾符 錯誤:(73,19)錯誤:無法訪問Filer javax.annotation.processing.Filer的類文件未找到 錯誤:(172,15)錯誤:類Builder中的方法addModifiers無法應用給定類型; 必需:修飾符[] found:int,int reason:varargs mismatch; varargs mismatch; int無法轉換爲修飾符 錯誤:(179,15)錯誤:類Builder中的方法addModifiers無法應用於給定的類型; 必需:修飾符[] found:int,int reason:varargs mismatch; varargs mismatch; int無法轉換爲修飾符 錯誤:(187,19)錯誤:無法訪問路徑 java.nio.file.Path的類文件未找到 注意:C:\ AAAmachine \ machine-master \ machine-android \ src \ main \ java \ com \ bmp \ internal \ machineInternals.java使用或覆蓋棄用的API。 注意:使用-Xlint:deprecation重新編譯以獲取詳細信息。 注意:一些消息已被簡化;使用-Xdiags:verbose進行重新編譯以獲得完整的輸出 錯誤:執行任務':machine-android:compileDebugJava'失敗。
Compilation failed; see the compiler error output for details. Information:BUILD FAILED Information:Total time: 6.881 secs Information:7 errors Information:0 warnings Information:See complete output in console
這裏的源代碼的使用從JavaPoet的readme.md文件中的基本示例的要點:
package com.bmp;
進口android.annotation.TargetApi; import android.app.Activity; import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; import android.view.ViewGroup;
import com.bmp.util.eventbus.FabricLogEvent; import com.squareup.javapoet.JavaFile; import com.squareup.javapoet.MethodSpec; import com.squareup.javapoet.TypeSpec;
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.lang.reflect。改性劑;
import de.greenrobot.event.EventBus;
import static android.os.Build.VERSION.SDK_INT; import static android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH; import static com.bmp.Preconditions.checkNotNull;
@TargetApi(ICE_CREAM_SANDWICH)公共final類ActivityWatcher {
公共靜態無效installOnIcsPlus(應用程序,RefWatcher refWatcher){ 如果(SDK_INT < ICE_CREAM_SANDWICH){// 如果需要支持Android ICS <,在您的基本活動中重寫onDestroy()。 return; } ActivityWatcher activityWatcher = new ActivityWatcher(application,refWatcher); activityWatcher.watchActivities();
MethodSpec main = MethodSpec.methodBuilder("main")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(void.class)
.addParameter(String[].class, "args")
.addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet!")
.build();
TypeSpec helloWorld = TypeSpec.classBuilder("HelloWorld")
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
.addMethod(main)
.build();
JavaFile javaFile = JavaFile.builder("com.bmp.helloworld", helloWorld)
.build();
try {
javaFile.writeTo(System.out);
} catch (IOException e) {
e.printStackTrace();
}
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter(new File("com.bmp.newclass.java"));
} catch (IOException e) {
e.printStackTrace();
}
}
難道是相關的物理文件名來寫?
有沒有辦法在Android Studio中將其作爲Android項目中的模塊進行編譯,或者是否存在可以使用的aar文件? –