You probably might have solved this or you do not need this anymore.. anyway , I got this exact same error , when I built my projects with Kafka(I have this built with scala-2.9.2) as a dependancy and using scala-2.9.2. Adding log4 as a dependancy seems to have solved it.
Thanks, Sam On Jul 24, 2012, at 9:05 AM, Eric Deliot <eric.del...@gmail.com> wrote: > Hi, > > I am just starting with kafka. I've downloaded release 0.7.1 and followed > the quick start instructions to get going without modifying anything. > ./sbt update &./sbt package ran fine > I can run the console producer and consumer scripts fine. > However, when I try to create my own producer example I end up with some > "illegal cyclic reference involving class Producer" error at compile time. > As an example, I've copied the file kafka/tools/ProducerShell.scala to a > different directory and renamed it MyProducerShell.scala (removing the > package and renaming the object name). > I copy below the copied file and error stack. > kafka/tools/ProducerShell.scala compiled fine when I ran ./sbt package at > the start so why isn't MyProducerShell.scala compiling? what am I doing > wrong? > Thanks. > > Eric > > -- > ed@edvm-5:~/testkafka$ ls > jopt-simple-3.2.jar kafka-0.7.1.jar MyProducerShell.scala > > ed@edvm-5:~/testkafka$ scalac -version > Scala compiler version 2.8.0.final -- Copyright 2002-2010, LAMP/EPFL > > ed@edvm-5:~/testkafka$ cat MyProducerShell.scala > /** > * Licensed to the Apache Software Foundation (ASF) under one or more > * contributor license agreements. See the NOTICE file distributed with > * this work for additional information regarding copyright ownership. > * The ASF licenses this file to You under the Apache License, Version 2.0 > * (the "License"); you may not use this file except in compliance with > * the License. You may obtain a copy of the License at > * > * http://www.apache.org/licenses/LICENSE-2.0 > * > * Unless required by applicable law or agreed to in writing, software > * distributed under the License is distributed on an "AS IS" BASIS, > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > * See the License for the specific language governing permissions and > * limitations under the License. > */ > > //package kafka.tools > > import java.io._ > import joptsimple._ > import kafka.producer._ > import kafka.utils.Utils > > /** > * Interactive shell for producing messages from the command line > */ > object MyProducerShell { > > def main(args: Array[String]) { > > val parser = new OptionParser > val producerPropsOpt = parser.accepts("props", "REQUIRED: Properties > file with the producer properties.") > .withRequiredArg > .describedAs("properties") > .ofType(classOf[String]) > val topicOpt = parser.accepts("topic", "REQUIRED: The topic to produce > to.") > .withRequiredArg > .describedAs("topic") > .ofType(classOf[String]) > > val options = parser.parse(args : _*) > > for(arg <- List(producerPropsOpt, topicOpt)) { > if(!options.has(arg)) { > System.err.println("Missing required argument \"" + arg + "\"") > parser.printHelpOn(System.err) > System.exit(1) > } > } > > val propsFile = options.valueOf(producerPropsOpt) > val producerConfig = new ProducerConfig(Utils.loadProps(propsFile)) > val topic = options.valueOf(topicOpt) > val producer = new Producer[String, String](producerConfig) > > val input = new BufferedReader(new InputStreamReader(System.in)) > var done = false > while(!done) { > val line = input.readLine() > if(line == null) { > done = true > } else { > val message = line.trim > producer.send(new ProducerData[String, String](topic, message)) > println("Sent: %s (%d bytes)".format(line, message.getBytes.length)) > } > } > producer.close() > } > } > > ed@edvm-5:~/testkafka$ scalac -cp ".:./*" MyProducerShell.scala > Exception in thread "main" scala.tools.nsc.symtab.Types$TypeError: illegal > cyclic reference involving class Producer > at > scala.tools.nsc.symtab.Types$CompoundType.baseClasses(Types.scala:1271) > at scala.tools.nsc.symtab.Types$PolyType.baseClasses(Types.scala:1978) > at scala.tools.nsc.symtab.Symbols$Symbol.ancestors(Symbols.scala:1193) > at > scala.tools.nsc.symtab.Symbols$Symbol.mixinClasses(Symbols.scala:1188) > at > scala.tools.nsc.transform.ExplicitOuter.transformInfo(ExplicitOuter.scala:143) > at > scala.tools.nsc.transform.ExplicitOuter.transformInfo(ExplicitOuter.scala:155) > at > scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:35) > at scala.tools.nsc.symtab.Symbols$Symbol.rawInfo(Symbols.scala:810) > at > scala.tools.nsc.symtab.Symbols$Symbol.unsafeTypeParams(Symbols.scala:919) > at > scala.tools.nsc.symtab.Types$TypeRef.typeParamsDirect(Types.scala:1686) > at scala.tools.nsc.symtab.Types$TypeRef.isHigherKinded(Types.scala:1700) > at scala.tools.nsc.symtab.Types$TypeRef.normalize0(Types.scala:1739) > at scala.tools.nsc.symtab.Types$TypeRef.normalize(Types.scala:1761) > at > scala.tools.nsc.symtab.Definitions$definitions$.isFunctionType(Definitions.scala:341) > at scala.tools.nsc.symtab.Types$TypeRef.safeToString(Types.scala:1828) > at scala.reflect.generic.Types$AbsType.toString(Types.scala:27) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printRaw(TreePrinters.scala:348) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.print(TreePrinters.scala:392) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printOpt(TreePrinters.scala:113) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printRaw(TreePrinters.scala:172) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.print(TreePrinters.scala:392) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter$$anonfun$printColumn$2.apply(TreePrinters.scala:51) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter$$anonfun$printColumn$2.apply(TreePrinters.scala:51) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:45) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:45) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:45) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:45) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:45) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:45) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:45) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:45) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:45) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printColumn(TreePrinters.scala:51) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printRaw(TreePrinters.scala:239) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.print(TreePrinters.scala:392) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printOpt(TreePrinters.scala:113) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printRaw(TreePrinters.scala:183) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.print(TreePrinters.scala:392) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter$$anonfun$printColumn$2.apply(TreePrinters.scala:51) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter$$anonfun$printColumn$2.apply(TreePrinters.scala:51) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:44) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:45) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printColumn(TreePrinters.scala:51) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printRaw(TreePrinters.scala:234) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.print(TreePrinters.scala:392) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printRaw(TreePrinters.scala:156) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.print(TreePrinters.scala:392) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter$$anonfun$printColumn$2.apply(TreePrinters.scala:51) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter$$anonfun$printColumn$2.apply(TreePrinters.scala:51) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printSeq(TreePrinters.scala:44) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printColumn(TreePrinters.scala:51) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.printRaw(TreePrinters.scala:160) > at > scala.tools.nsc.ast.TreePrinters$TreePrinter.print(TreePrinters.scala:392) > at scala.reflect.generic.Trees$Tree.toString(Trees.scala:135) > at java.lang.String.valueOf(String.java:2826) > at > scala.collection.mutable.StringBuilder.append(StringBuilder.scala:178) > at > scala.tools.nsc.transform.Erasure$Eraser.liftedTree1$1(Erasure.scala:656) > at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:648) > at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4078) > at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4126) > at > scala.tools.nsc.transform.Erasure$ErasureTransformer$$anonfun$transform$1.apply(Erasure.scala:1082) > at > scala.tools.nsc.transform.Erasure$ErasureTransformer$$anonfun$transform$1.apply(Erasure.scala:1079) > at scala.tools.nsc.symtab.SymbolTable.atPhase(SymbolTable.scala:103) > at > scala.tools.nsc.transform.Erasure$ErasureTransformer.transform(Erasure.scala:1079) > at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:857) > at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30) > at > scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply(Global.scala:276) > at > scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply(Global.scala:276) > at scala.tools.nsc.reporters.Reporter.withSource(Reporter.scala:48) > at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:276) > at > scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:252) > at > scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:252) > at scala.collection.Iterator$class.foreach(Iterator.scala:631) > at > scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:304) > at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:252) > at scala.tools.nsc.Global$Run.compileSources(Global.scala:733) > at scala.tools.nsc.Global$Run.compile(Global.scala:813) > at scala.tools.nsc.Main$.process(Main.scala:108) > at scala.tools.nsc.Main$.main(Main.scala:122) > at scala.tools.nsc.Main.main(Main.scala) > ed@edvm-5:~/testkafka$