Jython 的docstring 严重缺失, pydev的calltip基本上没什么用, 所以使用 jython 开发比较痛苦.
但 jython 相比 cpython 仍有2个优势:
1. windows/linux下安装都超级简单, 在linux下安装也不需要root账号.
2. 可以使用丰富的java类库, 比如, teradata只提供jdbc driver, 没有python API module

=========================
如何让jython自动加载一个新的jar
=========================
用 jython 又写个小程序, 需要使用 teradata 的 jdbc 库(terajdbc4.jar和tdgssconfig.jar).  开发时将两个jar库加到Eclipse(pydev)的 external library中, 开发调试都很顺利.

但部署时, 就要考虑如何让jython加载我们的jar包了. 最简单的方法是, 将terajdbc4.jar配到OS的CLASSPATH环境变量中.

以前我研究出的另一个方法, 是修改 jython.jar 中的 MANIFEST.MF文件, 把依赖库加到MANIFEST.MF的Class-Path中, 具体配置如下,
Class-Path:  
  lib/tdgssconfig.jar
  lib/terajdbc4.jar
这涉及到解压/更新文件/压缩, 确实很麻烦. 随便改动jython.jar也不是一个好的做法. 另外, 这种方法只能解决jar 依赖, 如果是依赖一个java class, 这种方法就不好用了.

这次决心找找有没有其他办法, 研究了Jython的源码, 终于找到一个方便的方法. 即修改jython的registry 文件. 下面是详细说明.

在查看jython的源码后 (C:\jython2.5.2\src\org\python\core\packagecache\SysPackageManager.java)
有如下收获: jython会根据安装根目录下 registry 文件的配置, 预先加载一些java 的jar 和 class, 下面是registry文件相关的3个设置,
 (1)python.packages.paths, 默认取值为java.class.path, sun.boot.class.path, 实际的目录为可通过java代码. 而这两目录值是可以jython.bat中的JAVA_HOME推导出来的.
 注意该设置的取值仍然register的entry, 如果我们要新加目录, 增加一个property entry.
 jython 会加载目标目录中的所有class.
 (2)python.packages.fakepath, 没有默认值, 取值是一个实际的目录地址.
 jython 会加载目标目录中的所有class.
 (3)python.packages.directories, 默认值为java.ext.dirs, 实际的目录目录值是可以jython.bat中的JAVA_HOME推导出来的, 一般为 Your_JavaHome/lib/ext
 注意该设置的取值仍然register的entry.  
 jython 会加载目标目录中的所有 jar.

默认的 registry 文件的设置
# Properties to check for initializing and updating the package cache
# Hopefully you won't have any need to change these
python.packages.paths = java.class.path, sun.boot.class.path
python.packages.directories = java.ext.dirs

修改后的设置, 增加了一个 apache.class.path, python.packages.fakepath 和 teradata.jdbc.dirs
python.packages.paths = java.class.path, sun.boot.class.path, apache.class.path
python.packages.directories = java.ext.dirs, teradata.jdbc.dirs
python.packages.fakepath = c:\\jboss_java_util\\classes
apache.class.path = c:\\apache_java_util\\classes
teradata.jdbc.dirs = c:\\teradata\\jdbc

=========================
如果碰到其他疑难杂症, 怎么办?
=========================
一旦碰到问题, 关键是要知道问题的原因, 修改 registry 文件的属性 python.verbose 为debug, 会输出更多的信息, 有助于我们找到问题的根源.
默认设置:
python.verbose = message
修改后的设置:
python.verbose = debug

转载于:https://www.cnblogs.com/harrychinese/archive/2012/08/17/Let_Jython_auto_load_some_jar.html

如何让Jython自动加载一个Jar包相关推荐

  1. springboot加载第三方jar包淘宝sdk进行打包编译

    开发工具idea,开发springBoot电商项目,需要加载淘宝的sdk,以下有几种方式加载 通过这种方式加载第三方jar包,可以正常开发,但是打包部署服务器运行的时候会报错缺少jar包,无法打包的时 ...

  2. android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件

    Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...

  3. maven加载本地jar包,无法将本地jar包打进项目

    加载本地jar包,无法将jar打进包 1.问题介绍 ​ 项目依赖某个私有jar包,由于各种原因,没有将jar包打进本地maven库,选择使用放到项目lib下引用,但是打包时lib文件夹下的依赖包打不进 ...

  4. Android逆向:某薇直播通过ClassLoader加载的jar包解密

    声明:案例分析仅供学习交流使用,勿用于任何非法用途.如学习者进一步逆向并对版权方造成损失,请自行承担法律后果,本人概不负责. 简介 热修复和插件化是目前比较热门的技术,它们都是通过ClassLoade ...

  5. 解决Android Studio加载第三方jar包,出现包重复加载的问题

    2015-02-13 0 个评论 来源:JavAndroid 收藏 我要投稿 通过Maven中央库添加第三方jar包的时候,出现了重复加载jar包的问题,解决办法很简单去掉一个不让它去加载就OK了 一 ...

  6. 服务器jar包配置文件,spring boot加载第三方jar包的配置文件的方法

    前言 今天收到一封邮件,大概内容如下:spring boot鼓励去配置化,那么怎么将第三方jar包中的xml去配置化了? 下面,我们就以Quartz定时任务为例,单独对这个问题来进行说明,如何实现去配 ...

  7. 关于spring自动加载的那点事儿

    背景 惯例要讲一下背景,毕竟问题来源于生活,困难滋生于工作,要是每天吃吃喝喝.无忧无虑,我相信我也没什么问题好写了^_^公司架构组在推新的基础框架,主要是嫌以前的框架用起来太啰嗦了,做了很多感觉多余的 ...

  8. 一个到顶部自动加载更多的ListView

    为什么80%的码农都做不了架构师?>>>    一个可以到顶自动加载更多的ListView,实现该控件的目的是用于im聊天页面场景,一些第三方实现的下拉加载更多也可以实现类似功能,但 ...

  9. log4j 源码解析_log4j1.x设置自动加载log4j.xml

    在没有设置自动加载log4j.xml的时候,一般我们需要这么处理 static void initLogger() {System.out.println("configurating lo ...

最新文章

  1. leetcode--最长公共前缀--python
  2. 千兆宽带:是为了速度而提升速度吗?
  3. 修改title样式_css常见样式命名规则
  4. Set 和 Map 数据结构
  5. 在centos7离线安装mysql_CentOS7离线安装MySQL
  6. rpm包时遇到Header V3 DSA signature: NOKEY时解决办法
  7. QT5 动态链接库的创建和使用
  8. java servlet接口开发_servlet三种实现方式之一实现servlet接口
  9. 部署kafka kafka的service容器和zookeeper kafka客户端 Elasticsearch的客户端
  10. 【我评】——关于Web标准
  11. Sharding-Proxy安装_以及_sharding-proxy自动分表配置_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记019
  12. nexus和maven
  13. 从零开始了解 kubernetes,还有谁不会?
  14. 使用JAVA文件上传的几种方式
  15. 服务器故障与主板维修,服务器主板故障
  16. Qualcomm笔记
  17. 谷歌浏览器提示您的连接不是私密连接怎么办
  18. cocos2d-x精灵的放大和缩小
  19. html5画布插入图片,html5画布导入图片
  20. php7.4 redis扩展

热门文章

  1. 世界上最贵的车是直通车吗?
  2. 如何跟成功的男人谈恋爱?
  3. 为什么修电脑的叫自己不要杀毒和清理垃圾?
  4. 为什么有的安卓手机越用越慢,刷机也不行?
  5. android新对象锁,Android的线程和对象锁定
  6. 德鲁伊 oltp oltp_内存中OLTP系列–表创建和类型
  7. sql 查询手动创建的表_学习SQL:使用SQL查询手动创建报告
  8. ssas 度量值属性_Analysis Services(SSAS)表格模型–属性和度量
  9. 德鲁伊 oltp oltp_内存中OLTP –招待看门狗的三个关键点–检查点文件
  10. 有可能导致HttpQueryInfo 执行时出现12150 错误的一个原因