解決升級 Android Studio 3.6.1 後無法運行 Java 代碼的問題

問題

最近升級了 Android Studio 到 V3.6.1 後發現之前創建的 Lib Module 無法運行純 Java 代碼了,部分錯誤信息如下:

FAILURE: Build failed with an exception.

* Where:
Initialization script '/private/var/folders/q7/rlfldg551dx7_r90x2_1hcww0000gn/T/MyCode_main__.gradle' line: 20

* What went wrong:
A problem occurred configuring project ':purejava'.
> Could not create task ':purejava:MyCode.main()'.
   > SourceSet with name 'main' not found.

因爲開發中有時需要用純 Java 代碼做些小測試,所以這個新問題還是得解決

解決問題

查到的解決辦法,其中

  • 使用 Run “XXX.main()” with Coverage 這個方法是可行的,但是太麻煩
  • 給.idea/gradle.xml 添加 <option name="delegatedBuild" value="false" /> 沒試,原因是根據代碼字面意思是不委託 gradle 進行 build,似乎不妥
  • 最後使用的方法。修改了 Lib Module 的 build.gradle 爲如下代碼:
apply plugin: 'java'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    testImplementation 'junit:junit:4.12'
}

這其實是完全把 lib 模塊當成 java 項目來進行 build 了

使用 Lib Module 運行 Java 代碼

補充添加 LibModule 用來運行 Java 代碼的步驟:

  1. 新建 Module 選擇 Android Library 名字隨意
  2. 在 src/main/java/packageName下 新建主類並添加 main 方法
  3. 選擇 Edit Configurations… 也在主菜單 Run -> Edit Configurations…
  4. ‘+’ 號新建一個 Application 的配置,填入
    • Main class,運行的主類
    • Use classpath of module,當前 lib module
    • JRE,可以選 jre,也可以選 android 的
  5. Apply,OK,選擇剛剛新建的 Configuration
  6. Run

Android Studio 只運行 Java 代碼

原理上和新建 Lib Module 方法類似:

  1. 新建空白 Activity 項目
  2. 刪除 Settings.gradle 裏面的 include ‘:app’。新版本還有 rootProject.name 也刪除
  3. 刪除 app 整個文件路徑,雖然不刪其實也沒事
  4. 替換項目的 build.gradle 爲:
apply plugin: 'java'

repositories {
    google()
    jcenter()
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
}
  1. 新建運行主文件 src/main/java/packagename/MyCode.java
  2. 新建 Application 運行配置:
    • Main class:packagename/MyCode
    • Use classpath of module:這個時候因爲已經沒有 Module,因此是選擇當前項目
    • JRE,選一個 jre1.8 之類的就行,一般會有默認
  3. 選擇這個運行配置
  4. Run
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章