From: Updike, C. <Cla...@jh...> - 2003-04-10 14:38:02
|
AFAIK, add_classdir() doesn't quite work the way you want from within jython... From http://www.jython.org/docs/javadoc/org/python/core/PySystemState.html public static void add_classdir(java.lang.String directoryPath) Add a classpath directory to the list of places that are searched for java packages. --> Note. Classes found in directory and subdirectory are not made available to jython by this call. It only make the java package found ion the directory available. This call is mostly usefull if jython is embedded in an application that deals with its own classloaders. A servlet container is a very good example. Calling add_classdir("/WEB-INF/classes") makes the java packages in WEB-INF classes available to jython import. However the actual classloading is completely handled by the servlet container's context classloader. In my app with an embedded interpreter, I did the following in java: PySystemState.initialize(); PySystemState.add_classdir(classesHome); Then when I create the interpreter: interp = new PythonInterpreter(null, new PySystemState()); and then in my scripts I am able to import and use classes from the directory. I also had trouble accessing the jython distribution classes from the jar, so please post a solution if you find one. -Clark -----Original Message----- From: A Bewes [mailto:AB...@co...] Sent: Thursday, April 10, 2003 10:11 AM To: jyt...@li... Subject: [Jython-users] dynamically adding .class and .py Hi, I've embedded a Jython interpreter in my Java app, I only deploy my app with a jython.jar file and no jython installation. The scripts seem to be working fine with importing/using of my classes. I'm having difficulty though in accessing other modules and classes from the scripts I write: For example: 1. thirdparty.class (from 'elsewhere') 2. string.py (from Jython\Lib) I seem to be able to access the 1st class if I add it to the classpath for my app. , but can't I do this dynamically from my script using the following?: sys.add_classdir("c:\classes") #where thirdparty.class lives Similarly, for the 2nd case string.py, if I know its location can I not add it to the list of paths the Jython traverses? Hope you can help, Ant |
From: A B. <AB...@co...> - 2003-04-10 15:03:59
|
I forgot to add a final point: I'm running the scriptfile in my app using: pyInt = new org.python.util.PythonInterpreter(); pyInt.execfile(scriptfile); The scriptfile gets recompiled each time it's run (if modified) but other scriptfiles that it uses are not recompiled if modified, how can I force this? Thanks, Ant -----Original Message----- From: A Bewes [mailto:AB...@co...] Sent: 10 April 2003 15:11 To: jyt...@li... Subject: [Jython-users] dynamically adding .class and .py Hi, I've embedded a Jython interpreter in my Java app, I only deploy my app with a jython.jar file and no jython installation. The scripts seem to be working fine with importing/using of my classes. I'm having difficulty though in accessing other modules and classes from the scripts I write: For example: 1. thirdparty.class (from 'elsewhere') 2. string.py (from Jython\Lib) I seem to be able to access the 1st class if I add it to the classpath for my app. , but can't I do this dynamically from my script using the following?: sys.add_classdir("c:\classes") #where thirdparty.class lives Similarly, for the 2nd case string.py, if I know its location can I not add it to the list of paths the Jython traverses? Hope you can help, Ant ------------------------------------------------------- This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger for complex code. Debugging C/C++ programs can leave you feeling lost and disoriented. TotalView can help you find your way. Available on major UNIX and Linux platforms. Try it free. www.etnus.com _______________________________________________ Jython-users mailing list Jyt...@li... https://lists.sourceforge.net/lists/listinfo/jython-users |
From: A B. <AB...@co...> - 2003-04-10 16:13:05
|
The problem with this option is that the app's JVM can not be terminated (frequently). Within one JVM a user will want to modify and compile multiple jython scripts using the embedded interpreter. Surely if jython can recompile the initial one thats kicked-off, it could do the same for the others? Ant -----Original Message----- From: Jeff Emanuel [mailto:JEm...@lg...] Sent: 10 April 2003 16:58 To: 'A Bewes' Subject: RE: [Jython-users] dynamically adding .class and .py You could delete the $py.class files either at startup or exit. > -----Original Message----- > From: A Bewes [mailto:AB...@co...] > Sent: Thursday, April 10, 2003 9:04 AM > To: jyt...@li... > Subject: RE: [Jython-users] dynamically adding .class and .py > > > I forgot to add a final point: > > I'm running the scriptfile in my app using: > > pyInt = new org.python.util.PythonInterpreter(); > pyInt.execfile(scriptfile); > > The scriptfile gets recompiled each time it's run (if > modified) but other > scriptfiles that it uses are not recompiled if modified, how > can I force > this? > > Thanks, > > Ant > > > -----Original Message----- > From: A Bewes [mailto:AB...@co...] > Sent: 10 April 2003 15:11 > To: jyt...@li... > Subject: [Jython-users] dynamically adding .class and .py > > > Hi, > > I've embedded a Jython interpreter in my Java app, I only > deploy my app with > a jython.jar file and no jython installation. The scripts > seem to be working > fine with importing/using of my classes. > > I'm having difficulty though in accessing other modules and > classes from the > scripts I write: > > For example: > > 1. thirdparty.class (from 'elsewhere') > 2. string.py (from Jython\Lib) > > I seem to be able to access the 1st class if I add it to the > classpath for > my app. , but can't I do this dynamically from my script using the > following?: > > sys.add_classdir("c:\classes") #where thirdparty.class lives > > Similarly, for the 2nd case string.py, if I know its location > can I not add > it to the list of paths the Jython traverses? > > Hope you can help, > > Ant > > > ------------------------------------------------------- > This SF.net email is sponsored by: Etnus, makers of > TotalView, The debugger > for complex code. Debugging C/C++ programs can leave you > feeling lost and > disoriented. TotalView can help you find your way. Available > on major UNIX > and Linux platforms. Try it free. www.etnus.com > _______________________________________________ > Jython-users mailing list > Jyt...@li... > https://lists.sourceforge.net/lists/listinfo/jython-users > > > ------------------------------------------------------- > This SF.net email is sponsored by: Etnus, makers of > TotalView, The debugger > for complex code. Debugging C/C++ programs can leave you > feeling lost and > disoriented. TotalView can help you find your way. Available > on major UNIX > and Linux platforms. Try it free. www.etnus.com > _______________________________________________ > Jython-users mailing list > Jyt...@li... > https://lists.sourceforge.net/lists/listinfo/jython-users > |
From: Samuele P. <ped...@bl...> - 2003-04-10 16:35:06
|
At 17:12 10.04.03 +0100, A Bewes wrote: >The problem with this option is that the app's JVM can not be terminated >(frequently). Within one JVM a user will want to modify and compile multiple >jython scripts using the embedded interpreter. Surely if jython can >recompile the initial one thats kicked-off, it could do the same for the >others? > >Ant but it's not about recompiling, Jython recompiles as necessary, the problem is about reloading, you should learn about sys.modules and reload() |
From: nr n. <new...@ho...> - 2003-04-10 17:38:30
|
Ant, I think I saw a prior post in this ng about dynamically adding classes to the current jvm instance. Something like: from java.lang import System classpath = System.getProperty('java.class.path') classpath = classpath + <sep> + <your path> System.setProperty(...) = classpath See http://java.sun.com/docs/books/tutorial/essential/system/properties.html for sys-defined properties. As for adding module paths to jython, try something like this: import sys path = sys.path mypath = r'<path>' if not mypath in path: path.append(mypath) Also see: http://www.python.org/doc/current/tut/node8.html#SECTION008110000000000000000 If you find that changes to modules aren't being picked up, try loading them again. As in: import foo reload(foo) from foo import bar If you're trying to write an editor with jython embedded, see www.jext.org, and its source --A _________________________________________________________________ The new MSN 8: advanced junk mail protection and 2 months FREE* http://join.msn.com/?page=features/junkmail |