java调用jython报ImportError: No module named...错误解决方法
2016-03-28 11:45
676 查看
在Java调用Python开发环境配置(Eclipse+Jython+PyDev)中说明了如何通过java调用jython的代码,但是这有一个前提,就是jython中的代码没有import jython自己的包,如果在jython中引入了自己的包,比如加一句
此时java在调用这个jython时就可能会报
import urllib
ImportError: No module named
这样的错误,虽然此时如果单独运行jython文件,不会报错,但是如果在java中调用的话就会报错。
这是因为单独运行jython和在java中调jython运行时的加载类的路径不一样,有兴趣的朋友可以在jython文件的顶部加上如下代码
把jython运行时加载类库的路径打印出来看一下,就会发现通过java运行时,路径少了很多东西,所以就引入不到jython的类库了。因此解决办法就是在java中指定jython运行时需要加载类库的路径,通常是jython的安装目录,如果有自己写的jython文件,那也需要加上自己写的文件的路径。
java中代码如下。
这样在java中调用jython就OK了!
import urllib
此时java在调用这个jython时就可能会报
import urllib
ImportError: No module named
这样的错误,虽然此时如果单独运行jython文件,不会报错,但是如果在java中调用的话就会报错。
这是因为单独运行jython和在java中调jython运行时的加载类的路径不一样,有兴趣的朋友可以在jython文件的顶部加上如下代码
#coding:utf-8 import sys print(sys.path)
把jython运行时加载类库的路径打印出来看一下,就会发现通过java运行时,路径少了很多东西,所以就引入不到jython的类库了。因此解决办法就是在java中指定jython运行时需要加载类库的路径,通常是jython的安装目录,如果有自己写的jython文件,那也需要加上自己写的文件的路径。
java中代码如下。
Properties props = new Properties(); props.put("python.console.encoding", "UTF-8"); // Used to prevent: console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0. props.put("python.security.respectJavaAccessibility", "false"); //don't respect java accessibility, so that we can access protected members on subclasses props.put("python.import.site","false"); Properties preprops = System.getProperties(); PythonInterpreter.initialize(preprops, props, new String[0]); PythonInterpreter interp = new PythonInterpreter(); interp.exec("import sys"); interp.exec("sys.path.append('D:/Program Files (x86)/jython2.7.0/Lib')");//jython自己的 interp.exec("sys.path.append('D:/Program Files (x86)/jython2.7.0/Lib/site-packages')");//jython自己的 interp.exec("sys.path.append('F:/workspace/wxserver/WebContent/py')");//我们自己写的
这样在java中调用jython就OK了!
相关文章推荐
- java线程知识总结
- 关于 java.lang.NoSuchMethodError: antlr.collections.AST.getLine()的解决方法
- zookeeper之系列一:出场和它的组成
- java浮点型比较大小
- JAVA基础-- 对象转型 (casting)
- JavaWeb项目开发案例精粹-第6章报价管理系统-07View层
- 100天JAVA学习计划01-HelloJAVA
- java动态代理(JDK和cglib)
- 谷歌宣布Android Studio将取代Eclipse
- MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
- JavaWeb项目开发案例精粹-第6章报价管理系统-06po层
- spring配置datasource三种方式
- JavaWeb项目开发案例精粹-第6章报价管理系统-05Action层
- [疯狂Java]UDP:接收发送数据报、获取接收到的数据报的相关信息
- 一不小心就报了 java.lang.UnsatisfiedLinkError: No implementation found for long 怎么解决
- java中的参数传递——值传递、引用传递
- [java] JVM监控与调优
- 【Java基础】Jar包结构结构分析和操作具体解释
- JavaWeb项目开发案例精粹-第6章报价管理系统-04Service层
- javaRMI详解