import  jpype     
import  asposecells     
jpype.startJVM() 
from asposecells.api import Workbook

# image path
image_name = 'screenshot.png'
image_path = fr'C:\\Users\\Bouregag Youcef\\Downloads\\Telegram Desktop\\analyses\\{image_name}'

# Export the dataframe to an Excel file
excel_name = 'table2.xlsx'
excel_path = fr'C:\\Users\\Bouregag Youcef\\Downloads\\Telegram Desktop\\analyses\\{excel_name}' 


workbook = Workbook(image_path)
workbook.save(excel_path)
jpype.shutdownJVM()

================== ERROR ===================

Traceback (most recent call last):
  File "c:\Users\Bouregag Youcef\Downloads\Telegram Desktop\analyses\jpeg_to_xls.py", line 4, in <module>
    jpype.startJVM()
    ^^^^^^^^^^^^^^^^
  File "C:\Users\Bouregag Youcef\AppData\Local\Programs\Python\Python311\Lib\site-packages\jpype\_core.py", line 184, in startJVM
    jvmpath = getDefaultJVMPath()
              ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Bouregag Youcef\AppData\Local\Programs\Python\Python311\Lib\site-packages\jpype\_jvmfinder.py", line 74, in getDefaultJVMPath
    return finder.get_jvm_path()
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Bouregag Youcef\AppData\Local\Programs\Python\Python311\Lib\site-packages\jpype\_jvmfinder.py", line 212, in get_jvm_path
    raise JVMNotFoundException("No JVM shared library file ({0}) "
jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

I searched and found some suggestions, among them is to add java_home to environment variable and I do not and have not used it at all JAVA

2

There are 2 best solutions below

1
Maciej Dałek On

This is the explanation what is the reason of your error:

File "C:\Users\Bouregag Youcef\AppData\Local\Programs\Python\Python311\Lib\site-packages\jpype_jvmfinder.py", line 212, in get_jvm_path raise JVMNotFoundException("No JVM shared library file ({0}) " jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

It does not matter that you do not use Java in your script directly - one of your imported modules does though. It tries to find some kind of jvm file and probably refer to JAVA_HOME variable to achieve it. It looks as if it is not set correctly in your Environment Variables. You can check it by typing in search bar Edit the system environment variables and opening it. In my case it is set to C:\Program Files\Java\jdk-17.0.5.8-hotspot\ where jdk-17.0.5.8-hotspot is Java installation folder.

0
Youcef Bouregag On

I solved the problem by downloading and installing jdk and finally adding it to environment variable with name "JAVA_HOME"

https://www.oracle.com/eg/java/technologies/downloads/#jdk19-windows