У меня есть проект Netbeans с кодом Java, который я писал много лет go. Сейчас я делаю новый проект в python, но у меня есть класс Java в моем старом проекте, в котором есть какой-то удобный MIDI-код, который я хотел бы использовать, поскольку я до сих пор не мог легко перевести на python .
Я использовал pip для установки JPype, использовал Netbeans для создания нужного мне класса и переместил файл .class в тот же каталог, что и мой python файл. Вот сокращенная часть моего python кода для вызова класса Java, который называется «SoundTester» и находится в пакете под названием «soundsynthesis».
from jpype import startJVM, shutdownJVM, java, addClassPath, JClass, JInt
import jpype.imports
startJVM(convertStrings=False)
try:
pass # Not sure why we need a pass here
tester = JClass('soundsynthesis/SoundTester')
except Exception as e:
print(f"Exception: {e}")
shutdownJVM()
Результат - Exception: java.lang.NoClassDefFoundError: soundsynthesis/SoundTester
Обратите внимание, что если я изменю звуковой синтез / SoundTester на SoundTester , я получу это немного другое исключение:
Exception: java.lang.NoClassDefFoundError: SoundTester (wrong name: soundsynthesis/SoundTester)
Я думаю, что проблема может быть в том, что я переместил файлы .class из проекта Netbeans в мой рабочий каталог, но я не знаю, как решить эту проблему. Я также попытался переместить файлы java в нужный каталог и просто использовать javac для их создания.
Я гарантировал, что моя версия python и jdk оба 64-битные, так как это было похоже на вопрос.