問題
最近升級了 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 代碼的步驟:
- 新建 Module 選擇 Android Library 名字隨意
- 在 src/main/java/packageName下 新建主類並添加 main 方法
- 選擇 Edit Configurations… 也在主菜單 Run -> Edit Configurations…
- ‘+’ 號新建一個 Application 的配置,填入
- Main class,運行的主類
- Use classpath of module,當前 lib module
- JRE,可以選 jre,也可以選 android 的
- Apply,OK,選擇剛剛新建的 Configuration
- Run
Android Studio 只運行 Java 代碼
原理上和新建 Lib Module 方法類似:
- 新建空白 Activity 項目
- 刪除 Settings.gradle 裏面的 include ‘:app’。新版本還有 rootProject.name 也刪除
- 刪除 app 整個文件路徑,雖然不刪其實也沒事
- 替換項目的 build.gradle 爲:
apply plugin: 'java'
repositories {
google()
jcenter()
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
}
- 新建運行主文件 src/main/java/packagename/MyCode.java
- 新建 Application 運行配置:
- Main class:packagename/MyCode
- Use classpath of module:這個時候因爲已經沒有 Module,因此是選擇當前項目
- JRE,選一個 jre1.8 之類的就行,一般會有默認
- 選擇這個運行配置
- Run