我在big-project/
中有一个gradle项目,在big-project/lib/
有一个子项目。
在big-project/
big.project.Main
类import big.project.lib.Utils
中big-project/lib/
,gradle build
子项目中定义。
当我尝试运行:lib:
compileJava UP-TO-DATE
:lib:processResources UP-TO-DATE
:lib:classes UP-TO-DATE
:lib:jar
:compileJava
big-project/src/main/java/big/project/Main.java:3: error: package big.project.lib not exist
import big.project.lib.Utils;
^
1 error
:compileJava FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 6.243 secs
时,会发生这种情况:
big-project/settings.gradle
由于某种原因,gradle编译子项目的代码,然后决定忽略它。 我该如何解决?
这些是我的gradle文件:
include 'lib'
:
big-project/build.gradle
evaluationDependsOnChildren()
allprojects {
apply plugin: 'java'
sourceCompatibility = '1.8'
version = '1.0'
group = 'big.project'
}
apply plugin: 'war'
dependencies {
compile project(':lib')
}
:
big-project/lib/build.gradle
06-09 16:33:12.625: E/AndroidRuntime(2048): FATAL EXCEPTION: main
06-09 16:33:12.625: E/AndroidRuntime(2048): Process: kh.edit_skill, PID: 2048
06-09 16:33:12.625: E/AndroidRuntime(2048): java.lang.NullPointerException
06-09 16:33:12.625: E/AndroidRuntime(2048): at kh.edit_skill.MainActivity.isEmptyS(MainActivity.java:137)
06-09 16:33:12.625: E/AndroidRuntime(2048): at kh.edit_skill.MainActivity.onClick(MainActivity.java:216)
06-09 16:33:12.625: E/AndroidRuntime(2048): at android.view.View.performClick(View.java:4438)
06-09 16:33:12.625: E/AndroidRuntime(2048): at android.view.View$PerformClick.run(View.java:18422)
06-09 16:33:12.625: E/AndroidRuntime(2048): at android.os.Handler.handleCallback(Handler.java:733)
06-09 16:33:12.625: E/AndroidRuntime(2048): at android.os.Handler.dispatchMessage(Handler.java:95)
06-09 16:33:12.625: E/AndroidRuntime(2048): at android.os.Looper.loop(Looper.java:136)
06-09 16:33:12.625: E/AndroidRuntime(2048): at android.app.ActivityThread.main(ActivityThread.java:5017)
06-09 16:33:12.625: E/AndroidRuntime(2048): at java.lang.reflect.Method.invokeNative(Native Method)
06-09 16:33:12.625: E/AndroidRuntime(2048): at java.lang.reflect.Method.invoke(Method.java:515)
06-09 16:33:12.625: E/AndroidRuntime(2048): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
06-09 16:33:12.625: E/AndroidRuntime(2048): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
06-09 16:33:12.625: E/AndroidRuntime(2048): at dalvik.system.NativeStart.main(Native Method)
为空
<小时/> 我确实研究了gradle手册:Chapter 56. Multi-project Builds,但没有任何有用的东西来自于此。
答案 0 :(得分:1)
TL; DR:我的big-project/lib/src
文件夹未正确设置(源代码位于错误的子目录中)。正如this answer所述,Java源代码必须位于src/main/java
。
感谢对这个问题的评论,我能够找到合适的地方寻找解决方案。正如所建议的,我查看了一个工作示例项目。当我使用Eclipse时,我基于flat-java-multiproject
示例生成了一个新的Gradle项目。这使我能够删除build.gradle
个文件作为错误的来源。
接下来,我决定检查build/
项目的lib/
工件,发现.jar
文件中没有包含任何.class
文件。这解释了我在问题中报告的编译器错误。这导致我看到所有.java
来源是否在正确的位置,如上所述,他们不是。修复此问题,修复了编译错误。
整个问题在于,当我在eclipse中编写代码时,似乎找到了对lib
项目类的所有引用。