Issues with running weaved code.

23 views
Skip to first unread message

ChromoX

unread,
Dec 12, 2010, 3:50:16 PM12/12/10
to kilimthreads
When trying to run weaved code I get these error messages:


java -cp ../lib/kilim.jar:../lib/OAPI.jar:./ cayman.Main
Exception in thread "main" java.lang.Error: Unresolved compilation
problems:
Color cannot be resolved to a type
Color cannot be resolved to a type
Color cannot be resolved to a type
Color cannot be resolved to a type
Bar cannot be resolved to a type
Color cannot be resolved to a type
Color cannot be resolved to a type
at cayman.Main.main(Main.java:59)

Whats going on?

ChromoX

unread,
Dec 12, 2010, 4:15:42 PM12/12/10
to kilimthreads
Actually I got that fixed... Now I have this problem while trying to
weave....

Error weaving /Users/Jeffrey/Documents/workspace/Cayman/woven/cayman/
Algorithm.class
[java] java.lang.NoClassDefFoundError: Task
[java] at java.lang.ClassLoader.defineClass1(Native Method)
[java] at
java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
[java] at java.lang.ClassLoader.defineClass(ClassLoader.java:
616)
[java] at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:
141)
[java] at
java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
[java] at java.net.URLClassLoader.access
$000(URLClassLoader.java:58)
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:
197)
[java] at java.security.AccessController.doPrivileged(Native
Method)
[java] at
java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:
307)
[java] at sun.misc.Launcher
$AppClassLoader.loadClass(Launcher.java:301)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:
248)
[java] at java.lang.Class.forName0(Native Method)
[java] at java.lang.Class.forName(Class.java:169)
[java] at
kilim.mirrors.RuntimeClassMirrors.classForName(RuntimeClassMirrors.java:
154)
[java] at
kilim.analysis.Detector.getPausableStatus(Detector.java:64)
[java] at
kilim.analysis.MethodFlow.visitMethodInsn(MethodFlow.java:202)
[java] at org.objectweb.asm.ClassReader.accept(Unknown
Source)
[java] at org.objectweb.asm.ClassReader.accept(Unknown
Source)
[java] at kilim.analysis.ClassFlow.analyze(ClassFlow.java:81)
[java] at kilim.analysis.ClassWeaver.weave(ClassWeaver.java:
50)
[java] at kilim.analysis.ClassWeaver.<init>(ClassWeaver.java:
41)
[java] at kilim.tools.Weaver.weaveFile(Weaver.java:96)
[java] at kilim.tools.Weaver.main(Weaver.java:67)
[java] Caused by: java.lang.ClassNotFoundException: Task
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:
202)
[java] at java.security.AccessController.doPrivileged(Native
Method)
[java] at
java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:
307)
[java] at sun.misc.Launcher
$AppClassLoader.loadClass(Launcher.java:301)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:
248)
[java] ... 24 more

ChromoX

unread,
Dec 12, 2010, 6:21:13 PM12/12/10
to kilimthreads
The command line I use to weave is below and the error it outputs is
below.

Thanks.

java -ea -cp ../lib/kilim.jar:../lib/asm-all-2.2.3.jar:../lib/
OAPI.jar:./ kilim.tools.Weaver -d ./cayman/ ./cayman/

Error weaving /Users/Jeffrey/Documents/workspace/Cayman/woven/cayman/
Algorithm.class
java.lang.NoClassDefFoundError: Task
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:
141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at
kilim.mirrors.RuntimeClassMirrors.classForName(RuntimeClassMirrors.java:
154)
at kilim.analysis.Detector.getPausableStatus(Detector.java:64)
at kilim.analysis.MethodFlow.visitMethodInsn(MethodFlow.java:202)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at kilim.analysis.ClassFlow.analyze(ClassFlow.java:81)
at kilim.analysis.ClassWeaver.weave(ClassWeaver.java:50)
at kilim.analysis.ClassWeaver.<init>(ClassWeaver.java:41)
at kilim.tools.Weaver.weaveFile(Weaver.java:96)
at kilim.tools.Weaver.main(Weaver.java:67)
Caused by: java.lang.ClassNotFoundException: Task
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 24 more

Sriram Srinivasan

unread,
Dec 12, 2010, 8:18:35 PM12/12/10
to kilimt...@googlegroups.com
posted an approach for weaving a few weeks ago. Did you try this? I want to know if this is a different kind of problem or has an existing solution.

Here is the solution again: 
Don't overwrite the original class directory or files. 

Have two separate directories, one for the original and one for the  
woven classes 
Say your classes are in  "./classes". Your development is done as  
follows
      1. javac -cp ./classes -d ./classes src/*.java  #      Put ./
classes in classpath, and compile into ./classes
      2. Weave classes into ./wclasses
         j   ava -cp ./classes -d kilim.tools.Weaver -d ./wclasses  
classes

For running the program, put both ./wclasses and ./classes in the  
classpath, _ahead_ of ./classes
      java -cp./wclasses:./classes Main

That way, while developing, you are only coding against the original  
classes.
While executing, you are coding against a mix of  woven and original  
classes, except that it prefers the woven version if one exists. 

Reply all
Reply to author
Forward
0 new messages