免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2616 | 回复: 1
打印 上一主题 下一主题

jpythoh生成jar文件 [复制链接]

论坛徽章:
4
天蝎座
日期:2013-11-06 11:39:34巳蛇
日期:2014-01-16 16:53:14午马
日期:2014-08-25 21:42:302015年迎新春徽章
日期:2015-03-03 17:21:44
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-07 09:10 |只看该作者 |倒序浏览
jpythoh 怎么生成jar文件

[ 本帖最后由 lvxinzhi 于 2007-12-7 11:55 编辑 ]

论坛徽章:
4
天蝎座
日期:2013-11-06 11:39:34巳蛇
日期:2014-01-16 16:53:14午马
日期:2014-08-25 21:42:302015年迎新春徽章
日期:2015-03-03 17:21:44
2 [报告]
发表于 2007-12-07 10:41 |只看该作者

回复 #1 lvxinzhi 的帖子

把python程序用jython编译为java的jar包
来源: 作者:zhaoweikid 发布时间:2007-07-04 阅读次数:
    jython是python的java版,他和c版本的python相比,它的优势是:可以编译为java的class文件被java程序使用,可以被 java程序嵌入,可以使用java的类库。但目前jython的版本一直比较低,开发并不是很活跃,现在的最新版本是jython2.2。
    这里我以一个简单的程序作为示例来看看怎么把python程序编译为java的jar包。注意的是:并不是所有的python程序都能用jython来编译,因为jython的版本滞后于python,且python的一些库jython是不支持的(这些主要是c/c++写的库)。jython可以到 http://www.jython.org去下载。
    下面就是一段代码,这个是jython带的demo里的,在jython22\Demo\swing下,文件名叫TreeDemo.py :

data = {
    'PyObject': {
        'PyInteger':None,
        'PyFloat':None,
        'PyComplex':None,
        'PySequence': {
            'PyArray':None,
            'PyList':None,
            'PyTuple':None,
            'PyString':None,
        },
        'PyClass': {
            'PyJavaClass':None,
        },
    },
    'sys':None,
    'Py':None,
    'PyException':None,
    '__builtin__':None,
    'ThreadState':None,
}


from pawt import swing
Node = swing.tree.DefaultMutableTreeNode

def addNode(tree, key, value):
    node = Node(key)
    tree.add(node)
    if value is not None:
        addLeaves(node, value.items())

def addLeaves(node, items):
    items.sort()
    for key, value in items:
        addNode(node, key, value)

def makeTree(name, data):
    tree = Node('A Few JPython Classes')
    addLeaves(tree, data.items())
    return tree

if __name__ == '__main__':
    tree = makeTree('Some JPython Classes', data)
    swing.test(swing.JScrollPane(swing.JTree(tree)))


    如果直接运行这段程序,可以出来java的swing的一个显示树型结构的界面。当然执行的时候要用jython而不是python,最好是在命令行里输入:

jython TreeDemo.py

来执行。

    下面看看怎么编译,首先要确认你有jdk, 如果是jdk 1.5以上的版本,这样就不用设置CLASSPATH环境变量了。注意:jdk 1.4版本是要设置CLASSPATH的!就是设置CLASSPATH=.;C:\j2sdk1.4.1_03\lib;C:\j2sdk1.4.1_03\lib\tools.jar; 可能jdk1.5在某些情况下有一些问题,1.4则基本不会。编译的过程都在命令行中进行。

jythonc -a -C "C:\Program Files\Java\jdk1.5.0_06\bin\javac.exe" -jar tree.jar TreeDemo.py

    这样就会生成一个叫 tree.jar 的包,以及一个叫jpywork的目录,这个目录是编译过程用了的,编译完了可以删除。执行

java -jar tree.jar

就可以运行这个程序了。
这里我以一个jython才能执行的程序为例介绍的,其实一个普通的只使用标准库的python程序也是可以的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP