当前位置:首页 > 服务端 > 在python中使用imageJ

在python中使用imageJ

使用pyimagej这个包来在python中使用Fiji的相关插件。

Install

我是在conda的虚拟环境里用pip3 install pyimagej来安装的。但是运行的时候又如下报错:
jgo.jgo.ExecutableNotFound: mvn not found
直接把问题投喂谷歌 搜到了这个https://githubmemory.com/repo/imagej/pyimagej/issues/118
我还是第一次知道这个东西是有issues列表的。
那么按照提示我应该装上 Maven (mvn)

conda activate my_evn
conda install Maven

参考资料:
Python + imageJ 解决方案,采坑记录
pypi-pyimageJ

之后继续运行代码

import imagej
ij = imagej.init()

出现了报错

SystemError: java.lang.UnsupportedClassVersionError: org/jpype/classloader/DynamicClassLoader : Unsupported major.minor version 52.0

报错原因是版本类型的不匹配。可能的情况有2种:
1.编译java.class文件的 JDK 和我们运行java.class文件的 JDK 的版本不同而产生的。高版本的JDK编译的文件无法在被低版本的JDK上运行
2.在Maven项目中,可能由于Maven 版本与不同的 java JDK 的版本之间产生的原因,例如,maven 3.31+的版本只能运行在java JDK 1.7+的版本上。

一些概念
JDK 是JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK),没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。

JMV是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

JDK=JRE+开发工具;
JRE=JVM+类库。
软件开发人员需要JDK,如果只需要运行java文件,只需要安装JRE。

JavaSE(Java Standard Edition,Java 标准版)用于开发和部署桌面、服务器以及嵌入设备和实时环境中的Java应用程序。Java SE包括用于开发Java Web服务的类库,同时,Java SE为Java EE和Java ME提供了基础。Java SE(Java Platform, Standard Edition,Java标准版)就是基于JDK和JRE,包含支持 Java Web 服务开发的类,并为 Java 企业级开发提供基础。

查看我的环境版本配置如下:

java --version
openjdk 11.0.6 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+8-b765.1)
OpenJDK 64-Bit Server VM (build 11.0.6+8-b765.1, mixed mode)

按理来说高等级的JDK(11)应该要兼容低等级的JDK(报错中的major version 52对应的是JDK=8)才对。但是我还是尝试将JDK的版本降低为8来尝试init()过程。

conda activate my_env #因为是修改虚拟环境的配置 首先激活环境
conda uninstall openjdk
conda install openjdk=8

这段跑完之后再跑.init()就不报错了。这种debug认真搞也就是1h的事情。但是我就是能拖个大半周?
虽然我还没明白为什么上级的jdk居然不兼容jdk=8
总之可以进一步的去使用pyimagej

参考资料:
出现 java.lang.UnsupportedClassVersionError 错误的原因及解决方法

作者:Craven胆小鬼
来源链接:https://www.cnblogs.com/craven1701/p/15500578.html

版权声明:
1、Java侠(https://www.javaxia.com)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaxia.com/server/124541.html

标签: android studio
分享给朋友: