I experienced an error, where gradle failed to build some Scala code using the ZincCompiler, with a Java 8 JDK:
FAILURE: Build failed with an exception. (cannot infer type-variable(s) K#1,V#1 (actual and formal argument lists differ in length)) error: incompatible types: inference variable E has incompatible bounds
This error can be caused by having an older java in the JAVA_HOME, e.g.:
C:\Program Files (x86)\Java\jdk1.8.0_25
The fix for me was to update to:
C:\Program Files\Java\jdk1.8.0_60
If you run “java -version” and “javac -version” and they don’t match, you may have multiple paths to java in $PATH.
The best thing is to have this at the front:
%JAVA_HOME%/bin
Note that you may additionally have symlinks to java in one or both of these locations, in addition to things you’ve added:
c:\windows c:\ProgramData\Oracle\Java\
For more information, this appears to match this issue with the ZincCompiler:
https://github.com/typesafehub/zinc/issues/82
If this doesn’t resolve the issue, and you know that your build works on some other machine, you can run “gradlew -d [task]” to get verbose output, and compare them.
You’ll see a section like this, which shows the classpath, all the paths on your machine, etc, which should help figure out what the difference is:
Compiling with Zinc Scala compiler.
Setup = {
scala compiler = ...
scala library = ...
scala extra = {
...
}
sbt interface = ...
compiler interface sources = ...
java home = C:\Program Files (x86)\Java\jdk1.8.0_25
fork java = true
cache directory = C:\Users\gsieling\.zinc\0.3.7
}
Inputs = {
classpath = {
...
}
sources = {
...
}
}
output directory = ...
scalac options = {
-deprecation
-unchecked
-feature
}
javac options = {
-d
...
-g
-encoding
UTF-8
-XDuseUnsharedTable=true
}
cache file = ...
analysis map = {
...
}
force clean = false
java only = false
compile order = Mixed
incremental compiler options = {
transitive step = 3
recompile all fraction = 0.5
debug relations = false
debug api = false
api dump =
api diff context size = 5
transactional = false
backup directory =
recompile on macro def = true
name hashing = true
}
output relations =
output products =
}