命令行输入: hanlp, 报错 : Unsupported major.minor version 52.0

jdk试过 1.13 和 1.8 都不行

我也出现了类似的问题,请问大神解决没有。

我说话一向很直,要么不说,要么直接给干货。关于这类低级问题,我一直不太愿意回复,现在说说我的意见,话糙理不糙,包括普遍性如何解决一个技术问题的方法论。

遇到问题,第一步不是求大神。而是把报错日志丢到Google里搜索一下,看是不是已经解决了。比如这个问题,在jpype的社区,其他使用jpype的社区,甚至本论坛,都有解答。

  • https://github.com/jpype-project/jpype/issues/549
    • 这个issue明确说明了是jdk版本不匹配的问题,jar是高版本编译的,你本机的jdk是低版本的。
  • https://github.com/FraBle/python-sutime/issues/29
    • 这个issue的作者说通过切换jdk解决了问题。
  • https://github.com/hankcs/HanLP/issues/1383
    • 这个issue里,我直接把jdk的url给了你。
  • Mac JAVA环境问题
    • 这个帖子里,我还告诉你光安装jdk不行,还得设置JAVA_HOME环境变量。当然,有人会说,你上一个帖子为什么不说。装完很多sdk都要配环境变量,这是常识。
    • 不设置环境变量,jpype凭什么知道你安装了新的jdk呢?在系统上有多个jdk的情况下,jpype凭什么知道要使用哪个jdk呢?jpype又不能像大家一样求大神帮忙看下。

与其求大神帮配环境,为何不自食其力呢?搜索到这些资料之后,你自己整合一下,应该能思考出如下解决方案:

  • 下载安装最新的jdk8
  • JAVA_HOME设为刚安装的jdk8

我使用的jdk版本及排查方法如下:

 $ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
 $ java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
 $ python3 -c 'from jpype import * ; print(getDefaultJVMPath())'       
/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/jli/libjli.dylib

如果到这一步你还没解决,你应该阅读jpype的getDefaultJVMPath的源码是如何查找jdk的,不读源码那开源有什么意义呢,开源作者都是免费的客服吗?再不行就向jpype社区求助,把你在源码中找到的不合理之处告诉他们。如果我是作者的话,你告诉我源码中的bug我再开心不过了。当然,这不太可能是jpype的问题,毕竟绝大数人用得都挺好,就你不行。为什么呢?你可能启动了一个GUI程序PyCharm,可能启动了一个虚拟AnaConda环境。你凭什么认为这些程序一定会遵守你在bash里设置的环境变量呢?就凭你求了大神,大神告诉你要设置环境变量吗?你接下来应该做的是搜索如何在这些第三方程序里设置环境变量,而不是又去求大神。大神要钻研大神该钻研的难题,不是这种低级问题。因为我不是大神,所以我回复了你们。而且我还额外打了这么多字,告诉你们解决问题的一般方法,希望你们能自立自强,避免浪费大神的时间,早日成为大神然后去做对世界有用的事情

2 Likes