Re: problem using gen-class and using the class name in the same file
It works for me!! Thanks josh, meikel and kelker for your answers. Le mercredi 12 juin 2013 18:10:37 UTC+2, joshro...@gmail.com a écrit : > > I was messing around recently with creating a Builder class using > gen-class and ran into the same issue since each set* method returns this. > I'm pretty sure it's a chicken and egg issue: the class doesn't exist yet > but you need to specify it in the gen-class ... > > I reworked your example a little bit, see if this fixes the problem: > https://www.refheap.com/15708 and https://www.refheap.com/15709 > > I used Object in gen-class, and then check the type in the init. > > Josh > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: problem using gen-class and using the class name in the same file
i made the same test without any "-" or "_" the problem is still there Le mercredi 12 juin 2013 11:30:33 UTC+2, Meikel Brandmeyer (kotarak) a écrit : > > Did you check the spelling? - is not valid in a package name. AFAIR using > the classname there should work. > > Meikel > > > > 2013/6/12 Armel Esnault > > >> It seems that only the constructor is the problem. it there is workaround >> to solve this ? >> I have several gen-class calls each need a constructor with an instance >> of the same class as parameter. >> >> Le mercredi 12 juin 2013 11:14:56 UTC+2, Meikel Brandmeyer (kotarak) a >> écrit : >> >>> Hi, >>> >>> test-gen.Tata should probably be test_gen.Tata everywhere. The reference >>> in the pre-init function should be fine, because the defn is compiled after >>> the generated class is in place. >>> >>> Meikel >>> >>> -- >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "Clojure" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/clojure/ww7hBtwdhoE/unsubscribe?hl=en. >> To unsubscribe from this group and all its topics, send an email to >> clojure+u...@googlegroups.com . >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: problem using gen-class and using the class name in the same file
It seems that only the constructor is the problem. it there is workaround to solve this ? I have several gen-class calls each need a constructor with an instance of the same class as parameter. Le mercredi 12 juin 2013 11:14:56 UTC+2, Meikel Brandmeyer (kotarak) a écrit : > > Hi, > > test-gen.Tata should probably be test_gen.Tata everywhere. The reference > in the pre-init function should be fine, because the defn is compiled after > the generated class is in place. > > Meikel > > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: problem using gen-class and using the class name in the same file
Yes exactly, i need a constructor which require an instance of the same class as parameter and i need to create new instances of this class in some methods (i implement an abstract class that require this). Le mercredi 12 juin 2013 10:54:15 UTC+2, Kelker Ryan a écrit : > > There are two things that I've notice about your code that could probably > be the cause. In the :constructors section of :gen-class, you're refering > to test-gen.Tata although it doesn't exist yet. The -pre-init function also > tries to call a class that doesn't exist yet. > > 12.06.2013, 16:39, "Armel Esnault" >: > > Hi > > I try to compile a file that generate a class with gen-class that include > class name > at different places in the file here is a simplified version of the > problem: > > lein init test-gen > > then edit the core.clj with > -- > (ns test-gen.core > (:gen-class >:name test-gen.Tata >:init pre-init >:constructors { > [Integer] [Integer] > [test-gen.Tata] [Integer] > } >) > ) > > (defn -pre-init > [x] > (test-gen.Tata. 9) > 9) > -- > add ":aot [test-gen.core]" in project.clj > > then compile with lein compile: > > Compiling test-gen.core > Exception in thread "main" java.lang.ClassNotFoundException: > test-gen.Tata, compiling:(test_gen/core.clj:1) > at clojure.lang.Compiler.analyzeSeq(Compiler.java:6462) > at clojure.lang.Compiler.analyze(Compiler.java:6262) > at clojure.lang.Compiler.analyze(Compiler.java:6223) > at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5618) > at clojure.lang.Compiler$TryExpr$Parser.parse(Compiler.java:2136) > at clojure.lang.Compiler.analyzeSeq(Compiler.java:6455) > at clojure.lang.Compiler.analyze(Compiler.java:6262) > at clojure.lang.Compiler.analyze(Compiler.java:6223) > at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5618) > at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5054) > at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3674) > at clojure.lang.Compiler.analyzeSeq(Compiler.java:6453) > at clojure.lang.Compiler.analyze(Compiler.java:6262) > at clojure.lang.Compiler.analyzeSeq(Compiler.java:6443) > at clojure.lang.Compiler.analyze(Compiler.java:6262) > at clojure.lang.Compiler.analyze(Compiler.java:6223) > at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3497) > at clojure.lang.Compiler.analyzeSeq(Compiler.java:6457) > at clojure.lang.Compiler.analyze(Compiler.java:6262) > at clojure.lang.Compiler.analyze(Compiler.java:6223) > at clojure.lang.Compiler.compile1(Compiler.java:7030) > at clojure.lang.Compiler.compile1(Compiler.java:7025) > at clojure.lang.Compiler.compile(Compiler.java:7097) > at clojure.lang.RT.compile(RT.java:387) > at clojure.lang.RT.load(RT.java:427) > at clojure.lang.RT.load(RT.java:400) > at clojure.core$load$fn__4890.invoke(core.clj:5415) > at clojure.core$load.doInvoke(core.clj:5414) > at clojure.lang.RestFn.invoke(RestFn.java:408) > at clojure.core$load_one.invoke(core.clj:5227) > at clojure.core$compile$fn__4895.invoke(core.clj:5426) > at clojure.core$compile.invoke(core.clj:5425) > at user$eval7.invoke(NO_SOURCE_FILE:1) > at clojure.lang.Compiler.eval(Compiler.java:6511) > at clojure.lang.Compiler.eval(Compiler.java:6501) > at clojure.lang.Compiler.eval(Compiler.java:6477) > at clojure.core$eval.invoke(core.clj:2797) > at clojure.main$eval_opt.invoke(main.clj:297) > at clojure.main$initialize.invoke(main.clj:316) > at clojure.main$null_opt.invoke(main.clj:349) > at clojure.main$main.doInvoke(main.clj:427) > at clojure.lang.RestFn.invoke(RestFn.java:421) > at clojure.lang.Var.invoke(Var.java:419) > at clojure.lang.AFn.applyToHelper(AFn.java:163) > at clojure.lang.Var.applyTo(Var.java:532) > at clojure.main.main(main.java:37) > Caused by: java.lang.ClassNotFoundException: test-gen.Tata > at java.net.URLClassLoader$1.run(URLClassLoader.java:366) > at java.net.URLClassLoader$1.run(URLClassLoader.java:355) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:354) > at > clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:61) > at java.lang.ClassLoader.loadClass(ClassLoader.java:423) > at java.lang.ClassLoader.loadClass(ClassLoader.java:356) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:266) > at cloj
problem using gen-class and using the class name in the same file
Hi I try to compile a file that generate a class with gen-class that include class name at different places in the file here is a simplified version of the problem: lein init test-gen then edit the core.clj with -- (ns test-gen.core (:gen-class :name test-gen.Tata :init pre-init :constructors { [Integer] [Integer] [test-gen.Tata] [Integer] } ) ) (defn -pre-init [x] (test-gen.Tata. 9) 9) -- add ":aot [test-gen.core]" in project.clj then compile with lein compile: Compiling test-gen.core Exception in thread "main" java.lang.ClassNotFoundException: test-gen.Tata, compiling:(test_gen/core.clj:1) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6462) at clojure.lang.Compiler.analyze(Compiler.java:6262) at clojure.lang.Compiler.analyze(Compiler.java:6223) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5618) at clojure.lang.Compiler$TryExpr$Parser.parse(Compiler.java:2136) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6455) at clojure.lang.Compiler.analyze(Compiler.java:6262) at clojure.lang.Compiler.analyze(Compiler.java:6223) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5618) at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5054) at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3674) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6453) at clojure.lang.Compiler.analyze(Compiler.java:6262) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6443) at clojure.lang.Compiler.analyze(Compiler.java:6262) at clojure.lang.Compiler.analyze(Compiler.java:6223) at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3497) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6457) at clojure.lang.Compiler.analyze(Compiler.java:6262) at clojure.lang.Compiler.analyze(Compiler.java:6223) at clojure.lang.Compiler.compile1(Compiler.java:7030) at clojure.lang.Compiler.compile1(Compiler.java:7025) at clojure.lang.Compiler.compile(Compiler.java:7097) at clojure.lang.RT.compile(RT.java:387) at clojure.lang.RT.load(RT.java:427) at clojure.lang.RT.load(RT.java:400) at clojure.core$load$fn__4890.invoke(core.clj:5415) at clojure.core$load.doInvoke(core.clj:5414) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invoke(core.clj:5227) at clojure.core$compile$fn__4895.invoke(core.clj:5426) at clojure.core$compile.invoke(core.clj:5425) at user$eval7.invoke(NO_SOURCE_FILE:1) at clojure.lang.Compiler.eval(Compiler.java:6511) at clojure.lang.Compiler.eval(Compiler.java:6501) at clojure.lang.Compiler.eval(Compiler.java:6477) at clojure.core$eval.invoke(core.clj:2797) at clojure.main$eval_opt.invoke(main.clj:297) at clojure.main$initialize.invoke(main.clj:316) at clojure.main$null_opt.invoke(main.clj:349) at clojure.main$main.doInvoke(main.clj:427) at clojure.lang.RestFn.invoke(RestFn.java:421) at clojure.lang.Var.invoke(Var.java:419) at clojure.lang.AFn.applyToHelper(AFn.java:163) at clojure.lang.Var.applyTo(Var.java:532) at clojure.main.main(main.java:37) Caused by: java.lang.ClassNotFoundException: test-gen.Tata at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:61) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:266) at clojure.lang.RT.classForName(RT.java:2039) at clojure.core$the_class.invoke(genclass.clj:99) at clojure.core$map$fn__4087.invoke(core.clj:2432) at clojure.lang.LazySeq.sval(LazySeq.java:42) at clojure.lang.LazySeq.seq(LazySeq.java:60) at clojure.lang.RT.seq(RT.java:473) at clojure.lang.RT.countFrom(RT.java:526) at clojure.lang.RT.count(RT.java:519) at clojure.core$generate_class$to_types__5402.invoke(genclass.clj:131) at clojure.core$generate_class.invoke(genclass.clj:293) at clojure.core$gen_class.doInvoke(genclass.clj:622) at clojure.lang.RestFn.invoke(RestFn.java:1557) at clojure.lang.Var.invoke(Var.java:477) at clojure.lang.AFn.applyToHelper(AFn.java:277) at clojure.lang.Var.applyTo(Var.java:532) at clojure.lang.Compiler.macroexpand1(Compiler.java:6366) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6441) ... 45 more Compilation failed: Subprocess failed The problem seems to be that i am using a class that doesn't exist yet. If i comment all lines referring to test-gen.Tata; compile; uncommment those lines; compile; again then it works. Is there a way a better to co