Thread View: pl.comp.lang.java
9 messages
9 total messages
Started by J-23
Sat, 08 Dec 2012 22:54
Dynamiczny kod Java
Author: J-23
Date: Sat, 08 Dec 2012 22:54
Date: Sat, 08 Dec 2012 22:54
15 lines
1372 bytes
1372 bytes
Witam Od kilku dni próbuje wykonać kod dynamiczny w Javie Znalzałem coś takiego: http://www.accordess.com/wpblog/an-overview-of-java-compilation-api-jsr-199/ Wygląda fajnie ale przy próbie kompilacji dostaję Exception in thread "main" java.lang.NullPointerException at com.accordess.ca.CompilerAPITest.doCompilation(CompilerAPITest.java:51) at com.accordess.ca.CompilerAPITest.main(CompilerAPITest.java:84) Nie bardzo wiem jak to naprawić, ktoś podpowie? Pozdrawiam
Re: Dynamiczny kod Java
Author: J-23
Date: Sun, 09 Dec 2012 00:14
Date: Sun, 09 Dec 2012 00:14
20 lines
1669 bytes
1669 bytes
W dniu 08.12.2012 23:54, J-23 pisze: > Witam > Od kilku dni próbuje wykonać kod dynamiczny w Javie > Znalzałem coś takiego: > > http://www.accordess.com/wpblog/an-overview-of-java-compilation-api-jsr-199/ > > > Wygląda fajnie ale przy próbie kompilacji dostaję > Exception in thread "main" java.lang.NullPointerException > at > com.accordess.ca.CompilerAPITest.doCompilation(CompilerAPITest.java:51) > at com.accordess.ca.CompilerAPITest.main(CompilerAPITest.java:84) > Po dodaniu pliku "tools.jar" z katalogu javy do projektu błąd zniknął (brak jakiegokolwiek) tylko brak też wyniku w postaci napisu "Hello, dynamic compilation world!" > Pozdrawiam
Re: Dynamiczny kod Java
Author: Marcin Biegan
Date: Sun, 09 Dec 2012 10:18
Date: Sun, 09 Dec 2012 10:18
11 lines
1426 bytes
1426 bytes
On 2012-12-09 01:14, J-23 wrote:> Po dodaniu pliku "tools.jar" z katalogu javy do projektu błąd zniknął > (brak jakiegokolwiek) tylko brak też wyniku w postaci napisu "Hello, > dynamic compilation world!" Bo to kompiluje, a nie uruchamia. Btw. zerknij na asm.ow2.org, może się przyda. -- pozdrawiam Marcin Biegan
Re: Dynamiczny kod Java
Author: Bogusław Szczepanowski
Date: Sun, 09 Dec 2012 13:53
Date: Sun, 09 Dec 2012 13:53
29 lines
2166 bytes
2166 bytes
Dnia 09-12-2012 o 01:14:48 J-23 <baczeklu@o2.pl> napisał(a): >> Od kilku dni próbuje wykonać kod dynamiczny w Javie >> Znalzałem coś takiego: >> >> http://www.accordess.com/wpblog/an-overview-of-java-compilation-api-jsr-199/ >> >> >> Wygląda fajnie ale przy próbie kompilacji dostaję >> Exception in thread "main" java.lang.NullPointerException >> at >> com.accordess.ca.CompilerAPITest.doCompilation(CompilerAPITest.java:51) >> at com.accordess.ca.CompilerAPITest.main(CompilerAPITest.java:84) >> > > Po dodaniu pliku "tools.jar" z katalogu javy do projektu błąd zniknął > (brak jakiegokolwiek) tylko brak też wyniku w postaci napisu "Hello, > dynamic compilation world!" Do błędów klasy SQL Injection należy dodać Java Injection? Jak byś kompilował cokolwiek, co pochodzi z danych użytkownika, to oczyść i wyescape'uj porządnie te dane ;) -- Boguś /Każdy skutek ma swoją przyczynę/ --- news://freenews.netfront.net/ - complaints: news@netfront.net ---
Re: Dynamiczny kod Java
Author: J-23
Date: Sun, 09 Dec 2012 16:35
Date: Sun, 09 Dec 2012 16:35
13 lines
1467 bytes
1467 bytes
W dniu 09.12.2012 11:18, Marcin Biegan pisze: > On 2012-12-09 01:14, J-23 wrote:> Po dodaniu pliku "tools.jar" z > katalogu javy do projektu błąd zniknął > > (brak jakiegokolwiek) tylko brak też wyniku w postaci napisu "Hello, > > dynamic compilation world!" > > Bo to kompiluje, a nie uruchamia. > Ok, doszedłem do tego samego wniosku ale jakbyś mógł mi pomóc w analizie tego kodu bo nie wiem dlaczego nie wychodzi mi plik *.class Pozdrawiam
Re: Dynamiczny kod Java
Author: J-23
Date: Sat, 22 Dec 2012 19:35
Date: Sat, 22 Dec 2012 19:35
119 lines
6034 bytes
6034 bytes
W dniu 08.12.2012 23:54, J-23 pisze:
> Witam
>
Trochę czasu mineło ale dopiero teraz znalazłem chwile by powrocic do
sprawy...
Zacząłem się bawić Javaassist
http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/tutorial/tutorial.html wygląda
fajnie i wydaje się spełnić moje oczekiwania tylko mam pewien problem.
public class SampleBean {
public SampleBean() {
super();
// TODO Auto-generated constructor stub
}
// Klasa generowana w trybie Runtime
}
Mam klase SampleBean którą w calosci widzicie wyżej chciałym za pomocą
Javaassist
wypełnić ja odpowiednimi metodami i potem wykorzystać dalej, wypełniam
ją następująco
ClassPool SampleBean = ClassPool.getDefault();
CtClass SampleBeanGenerator =
SampleBean.get("pl.cba.lukaszbaczek.SampleBean");
SampleBean.importPackage("com.extjs.gxt.ui.client.data");
SampleBean.importPackage("java.io");
SampleBeanGenerator.setInterfaces(new CtClass[]
{SampleBean.makeClass("BeanModelTag"),
SampleBean.makeClass("Serializable")});
CtField serialVersionUID = CtField.make("private static final long
serialVersionUID = 1L;", SampleBeanGenerator);
CtField id = CtField.make("private int id;", SampleBeanGenerator);
CtField name = CtField.make("private String name;",
SampleBeanGenerator);
SampleBeanGenerator.addField(serialVersionUID);
SampleBeanGenerator.addField(id);
SampleBeanGenerator.addField(name);
CtMethod setId = CtNewMethod.make("public void setId(int id)
{this.id = id;}", SampleBeanGenerator);
CtMethod getId = CtNewMethod.make("public int getId() {return
id;}", SampleBeanGenerator);
CtMethod setName = CtNewMethod.make("public void setName(String
name) {this.name = name;}", SampleBeanGenerator);
CtMethod getName = CtNewMethod.make("public String getName()
{return name;}", SampleBeanGenerator);
CtMethod toString = CtNewMethod.make("public String toString()
{return \"id: \" + id + \", name: \" + name;}", SampleBeanGenerator);
CtMethod hashCode = CtNewMethod.make("public int hashCode() {final
int prime = 31; int result = 1; result = prime * result + id; result =
prime * result + ((name == null) ? 0 : name.hashCode()); return
result;}", SampleBeanGenerator);
CtMethod equals = CtNewMethod.make("public boolean equals(Object
obj) {if (this == obj) return true; if (obj == null) return false;
SampleBean other = (SampleBean) obj; if (id != other.id) return false;
if (name == null) {if (other.name != null) return false;} else if
(!name.equals(other.name)) return false; return true;}}",
SampleBeanGenerator);
SampleBeanGenerator.addMethod(setId);
SampleBeanGenerator.addMethod(getId);
SampleBeanGenerator.addMethod(setName);
SampleBeanGenerator.addMethod(getName);
SampleBeanGenerator.addMethod(toString);
SampleBeanGenerator.addMethod(hashCode);
SampleBeanGenerator.addMethod(equals);
SampleBeanGenerator.writeFile();
wiem ze by działało odpowiednio serializowanie w gridach Ext-GWT mozna
uzyć prostszych metod wspierając się biblioteką JSON (na potrzeby testow
sam tworze odpowiedniego JSON i stad te bardziej rozbudowane metody).
Przy probie kompilacji dostaje komunikat
Exception in thread "main" javassist.CannotCompileException: [source
error] no such class: SampleBean
at javassist.CtNewMethod.make(CtNewMethod.java:79)
at javassist.CtNewMethod.make(CtNewMethod.java:45)
at pl.cba.lukaszbaczek.Main.main(Main.java:47)
Caused by: compile error: no such class: SampleBean
at javassist.compiler.MemberResolver.searchImports(MemberResolver.java:465)
at javassist.compiler.MemberResolver.lookupClass(MemberResolver.java:409)
at
javassist.compiler.MemberResolver.lookupClassByJvmName(MemberResolver.java:319)
at
javassist.compiler.MemberResolver.resolveJvmClassName(MemberResolver.java:509)
at
javassist.compiler.MemberCodeGen.resolveClassName(MemberCodeGen.java:1145)
at javassist.compiler.CodeGen.atDeclarator(CodeGen.java:712)
at javassist.compiler.ast.Declarator.accept(Declarator.java:100)
at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351)
at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351)
at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:292)
at javassist.compiler.CodeGen.atMethodDecl(CodeGen.java:274)
at javassist.compiler.ast.MethodDecl.accept(MethodDecl.java:44)
at javassist.compiler.Javac.compileMethod(Javac.java:169)
at javassist.compiler.Javac.compile(Javac.java:95)
at javassist.CtNewMethod.make(CtNewMethod.java:74)
... 2 more
na który to znalazłem odp na jednym z forum
https://community.jboss.org/message/303087
lecz jest tam linijka
CtNewClass generated = new CtNewClass(generatedName, pool, false,
superclass);
Ktora jest nie zgodna z bibliotek Javaasist i nie potrafię sobie z tym
poradzić
Pozdrawiam
Re: Dynamiczny kod Java
Author: William Bonawentura
Date: Mon, 24 Dec 2012 06:35
Date: Mon, 24 Dec 2012 06:35
7 lines
1626 bytes
1626 bytes
> Mam klase SampleBean którą w calosci widzicie wyżej chciałym za pomocą Javaassist > wypełnić ja odpowiednimi metodami i potem wykorzystać dalej, wypełniam ją następująco > Przy probie kompilacji dostaje komunikat Exception in thread "main" javassist.CannotCompileException: [source error] no such > class: SampleBean W czasie kompilacji GWT nie istnieją twoje, tworzone w czasie wykonania klasy. Siłą rzeczy więc kompilator GWT nie może ich widzieć. Mam ciągle wrażenie, że silnie komplikujesz jakiś problem :).
Re: Dynamiczny kod Java
Author: J-23
Date: Mon, 24 Dec 2012 14:40
Date: Mon, 24 Dec 2012 14:40
24 lines
2011 bytes
2011 bytes
W dniu 24.12.2012 07:35, William Bonawentura pisze: >> Mam klase SampleBean którą w calosci widzicie wyżej chciałym za pomocą >> Javaassist >> wypełnić ja odpowiednimi metodami i potem wykorzystać dalej, wypełniam >> ją następująco >> Przy probie kompilacji dostaje komunikat Exception in thread "main" >> javassist.CannotCompileException: [source error] no such class: >> SampleBean > > W czasie kompilacji GWT nie istnieją twoje, tworzone w czasie wykonania > klasy. Siłą rzeczy więc kompilator GWT nie może ich widzieć. Mam ciągle > wrażenie, że silnie komplikujesz jakiś problem :). Zgodze się z Tobą, że komplikuje, ale chce osiągnąć taką rzecz: podając SQL mieć wynik tego SQL w Grid (wczesniej kombinowałem z MAP - zakończone sukcesem) taki SQL Editor teraz chce to samo ale z użyciem LiveGrida Wiem ze mozesz mysleć że "kombinuje jak koń pod góre" bo sam zaczalem sie zastanawiać sam już czy to jest do przeskoczenia Pozdrawiam
Re: Dynamiczny kod Java
Author: William Bonawentura
Date: Wed, 02 Jan 2013 07:17
Date: Wed, 02 Jan 2013 07:17
7 lines
1507 bytes
1507 bytes
> podając SQL mieć wynik tego SQL w Grid (wczesniej kombinowałem z MAP - zakończone sukcesem) taki SQL Editor teraz chce to samo ale > z użyciem LiveGrida Zarówno z punktu widzenia twojego klienta jak i serwera, wynik "ad-hoc" zapytania SQL jest właśnie czymś w rodzaju mapy kolekcji (bądź kolekcją map). I tego powinieneś się trzymać.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads