V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
yuyanggongzi
V2EX  ›  Python

向大佬请教下在 Python 中使用 pyjnius 调用 Jar 包,如何正确的引入 jar 包。

  •  
  •   yuyanggongzi · 236 天前 · 1089 次点击
    这是一个创建于 236 天前的主题,其中的信息可能已经有所发展或是发生改变。
    
    from jnius import autoclass
    import os
    
    fastjson_jar_path = 'D:\\workProject\\RPT_CFAE_B\\Jar\\fastjson-1.2.83.jar'
    
    # 在脚本中设置 CLASSPATH 环境变量
    os.environ['CLASSPATH'] = fastjson_jar_path
    
    # 加载 fastjson 类
    JSONObject = autoclass('com.alibaba.fastjson.JSONObject')
    
    
    def parse_json(json_str):
        # 创建一个 JSONObject 对象
        json_object = JSONObject()
        # 调用 parse 方法解析 JSON 字符串
        result = json_object.parse(json_str)
        return result
    
    
    # 示例用法
    if __name__ == "__main__":
        # # 读取 fastjson.jar 文件路径
        # jar_path = os.path.abspath("D:\\workProject\\RPT_CFAE_B\\Jar")
        # # 添加 jar 文件到 Java 类路径
        # autoclass('java.lang.System').setProperty('java.class.path', jar_path)
    
        # 要解析的 JSON 字符串
        json_string = '{"name": "John", "age": 30}'
    
        # 解析 JSON 字符串
        parsed_json = parse_json(json_string)
        print(parsed_json)
        
    

    上面是写的 demo 然后运行报错

    jnius.JavaException: JVM exception occurred: com/alibaba/fastjson/JSONObject java.lang.NoClassDefFoundError

    查了各种方法都不行

    5 条回复    2024-04-30 08:28:19 +08:00
    Volekingsg
        1
    Volekingsg  
       236 天前   ❤️ 1
    光看代码没看出啥问题( Jar 包,类是否正确需要自行确认),一个建议是可以考虑在外部设置 CLASSPATH 然后再启用脚本
    givenge
        2
    givenge  
       236 天前
    pyjnius 不直接支持加载 jar 文件,你需要将 jar 包中的类添加到 Java 的 Classpath 中
    yuyanggongzi
        3
    yuyanggongzi  
    OP
       236 天前
    换用 JPype1 了,能够成功加载并执行。
    forQ
        4
    forQ  
       236 天前
    换 jpype 试试
    ruanimal
        5
    ruanimal  
       236 天前
    jnius_config.add_classpath(fastjson_jar_path )
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2306 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 02:05 · PVG 10:05 · LAX 18:05 · JFK 21:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.