From: Emily B. <emi...@gm...> - 2009-04-27 13:05:34
|
Hi, I have been trying to use the latest jython beta release, and I have spent all day trying to work out why I can't use ant, javadoc, or any Java classes that make webservice calls. I keep getting classloader errors to do with xerces, eg "java.lang.Error: javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl not found". I have this class on my classpath, it's in xercesImpl.jar, which is included in the ant 1.7.1 distribution. If I take jython.jar off my classpath, ant and javadoc and stuff seem much happier. It looks to me like what I am seeing is very similar to this bug: http://bugs.jython.org/issue1231 Something in jython.jar is getting in the way of xerces. However, if I read this bug correctly, it was fixed in the beta 2 release. I am using the latest, beta 3 release. I thought I might do better with the absolute latest code, so I followed the instructions on http://wiki.python.org/jython/JythonDeveloperGuide and built the latest version. The regrtest ant target tells me all the tests pass. Now I have a jar called jython-dev.jar. I renamed it jython.jar and replaced my broken version with this new version in my jython installation. Now of course it doesn't run at all (see stack trace below). So anyway, I find myself shaving a yak when all I want to do is write a small jython script to do some file filtering and call a java webservice. Can anyone help? Emily Exception in thread "main" java.lang.NoClassDefFoundError: org/antlr/runtime/CharStream at org.python.core.imp.compileSource(imp.java:267) at org.python.core.imp.createFromSource(imp.java:282) at org.python.core.imp.loadFromSource(imp.java:511) at org.python.core.imp.find_module(imp.java:410) at org.python.core.imp.import_next(imp.java:617) at org.python.core.imp.import_first(imp.java:638) at org.python.core.imp.load(imp.java:546) at org.python.core.util.FileUtil.isatty(FileUtil.java:71) at org.python.core.io.StreamIO.isatty(StreamIO.java:221) at org.python.core.io.BufferedIOMixin.isatty(BufferedIOMixin.java:90) at org.python.core.io.TextIOBase.isatty(TextIOBase.java:175) at org.python.core.PyFile.file_isatty(PyFile.java:482) at org.python.core.PyFile.isatty(PyFile.java:477) at org.python.util.jython.run(jython.java:151) at org.python.util.jython.main(jython.java:117) Caused by: java.lang.ClassNotFoundException: org.antlr.runtime.CharStream at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 15 more |
From: Leo S. M. <leo...@gm...> - 2009-04-27 15:11:43
|
On Mon, Apr 27, 2009 at 9:05 AM, Emily Bache <emi...@gm...> wrote: > I followed the instructions on > http://wiki.python.org/jython/JythonDeveloperGuide and built the latest > version. The regrtest ant target tells me all the tests pass. Now I have a > jar called jython-dev.jar. I renamed it jython.jar and replaced my broken > version with this new version in my jython installation. Now of course it > doesn't run at all (see stack trace below). Not exactly answering your original question, but it may help you to know that the jar files produced by the development build scripts and the distributed jar file for releases are not interchangeable. The former doesn't embed the third-party dependencies. Now, IIRC, you may try doing "ant full-build" instead of "ant" to build from the latest code. The jython.jar produced under the full-build/ directory is more likely to work (Even though I won't recommend to mix Jython releases in this way, because Java code compiled inside jython.jar may depend on changes made to the Python code distributed on Lib/) Regards, -- Leo Soto M. http://blog.leosoto.com |
From: Emily B. <emi...@gm...> - 2009-04-28 09:38:40
|
Hi, Having slept on the problem, of course I managed to sort it out today. I was mistakenly using the beta 1 release, which of course suffers from the bug with xerces that I found. I replaced it with the latest beta 3 release, and that seems to have solved the problem. Sorry to trouble you all. Leo Soto - thankyou for the advice and the warning. Out of interest, I tried running "ant full-build" but it failed - "/../jython/build.xml:250: informix jar not present". I don't know if that is of interest to you or not. Anyway, I eagerly await the production release of jython 2.5 :-) Regards, Emily |
From: Frank W. <fwi...@gm...> - 2009-04-28 13:10:47
|
On Tue, Apr 28, 2009 at 5:38 AM, Emily Bache <emi...@gm...> wrote: > Leo Soto - thankyou for the advice and the warning. Out of interest, I tried > running "ant full-build" but it failed - "/../jython/build.xml:250: informix > jar not present". I don't know if that is of interest to you or not. Anyway, > I eagerly await the production release of jython 2.5 :-) A simpler way to get the fully integrated jython.jar is to issue: ant jar-complete which will produce a jython.jar. For the moment it would be a good idea to delete the jython-dev.jar since the two jars can clash. Your informix error happens because full-build is dependent on the presence of two non-distributable jars, ifxjdbc.jar and ojdbc14.jar -- which are the Informix and Oracle JDBC drivers respectively. Unfortunately, if you want to run full-build you need to get those two drivers from the companies that distribute them (IBM for Informix, and of course Oracle for Oracle). -Frank |