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 |