I dug into this and found a problem. The kafka build files show
dependencies on two different versions of the zkclient code:
In core/build.sbt:
libraryDependencies ++= Seq(
"org.apache.zookeeper" % "zookeeper" % "3.3.4",
"com.github.sgroschupf" % "zkclient" % "0.1",
"org.xerial.snappy" % "snappy-java" % "1.0.4.1",
"org.easymock" % "easymock" % "3.0" % "test",
"junit" % "junit" % "4.1" % "test"
)
And in project/Build.scala:
// POM Tweaking for core:
def zkClientDep =
<dependency>
<groupId>zkclient</groupId>
<artifactId>zkclient</artifactId>
<version>20120522</version>
<scope>compile</scope>
</dependency>
In version 0.1 of com.github.sgroschupf.ZkClient (listed in build.sbt)
writeData doesn't return anything (http://j.mp/XBnn5g), which causes the
compile error from my initial message (see below); that changed in 0.2
(http://j.mp/WqUx4x).
zkclient-20120522 (listed in Build.scala) is checked in as a JAR in the
core/lib folder (http://j.mp/10U4XgE).
I haven't researched why between sbt and IntelliJ ZkClient resolves
differently, and don't know the history behind the "POM tweaking" comment
above. I was able to build Kafka in IntelliJ by removing the reference to
com.github.sgroschupf.ZkClient. Perhaps this is a leftover from 0.7.2 (I
if I recall correctly it depends on 0.1)?
At any rate if anybody runs into similar problems when building in InteliJ
I hope that this fix addresses them. Comments welcome.
Thanks,
-Dragos
On 3/14/13 11:30 AM, "Dragos Manolescu" <[email protected]>
wrote:
>Hi Neha --
>
>Thanks for the prompt answer. Yes that's what I did to open the project in
>IntelliJ.
>
>-Dragos
>
>On 3/14/13 11:22 AM, "Neha Narkhede" <[email protected]> wrote:
>
>>You can do ./sbt gen-idea to build the Intellij project .iml files.
>>
>>Thanks,
>>Neha
>>
>>
>>On Thu, Mar 14, 2013 at 11:20 AM, Dragos Manolescu <
>>[email protected]> wrote:
>>
>>> Hi --
>>>
>>> For the last couple of days I've been going through the 0.8 code as I'm
>>> porting some 0.7.2 producers and consumers to the 0.8 API. While sbt
>>> compiles the sources and indicates that 196 tests pass (I use Scala
>>>2.9.2),
>>> I haven't been able to successfully build Kafka in IntelliJ (after
>>> generating the IDEA project with gen-idea). The errors are in ZkUtils;
>>> here's the first one, with subsequent errors caused by the absence of
>>>the
>>> returned value (of type org.apache.zookeeper.data.Stat).
>>>
>>> scala: type mismatch;
>>> found : Unit
>>> required: org.apache.zookeeper.data.Stat
>>> stat = client.writeData(path, data)
>>> ^
>>> As far as I can tell writeData is provided by
>>> org.I0Itec.zkclient.ZkClient, and its return type is void rather than
>>>Stat;
>>> here's the signature:
>>>
>>> public void writeData(String path, Object object) {
>>> writeData(path, object, -1);
>>> }
>>>
>>> I thought that this might be dead code; however IntelliJ shows ZkUtils
>>> being used in the kafka, other and unit modules :-/
>>>
>>> How do you marry IntelliJ with Kafka?
>>>
>>> Thanks,
>>>
>>> -Dragos
>>>
>