Класс JPype не найден

JPype - удивительный проект, так как я позволяю JVM прямо из Python,

К сожалению, я застрял в первых шагах ребенка.

я имею A.java исходный код (located in C:\tmp folder):

class A {
    public A() {
        super();
    }
    public String sayHi() {
        return("Hello");
    }
}

Который был скомпилирован в класс, используя: javac A.java

Таким образом, A.class находится в C:\tmp папка.

У меня есть следующее Python исходный код:

import os
import jpype
jpype.startJVM(jpype.getDefaultJVMPath(), '-ea', '-Djava.class.path=c:\\tmp')
A = jpype.JClass("A")
a = A()
print a.sayHi()
jpype.shutdownJVM()

Когда я запускаю его, я получаю сообщение об ошибке ниже:

C:\tmp>jpype_test.py
Traceback (most recent call last):
  File "C:\tmp\jpype_test.py", line 10, in <module>
    A = jpype.JClass("A")
  File "C:\Python27\lib\site-packages\jpype\_jclass.py", line 54, in JClass
    raise _RUNTIMEEXCEPTION.PYEXC("Class %s not found" % name)
jpype._jexception.ExceptionPyRaisable: java.lang.Exception: Class A not found

Поскольку я не могу найти класс A, это, вероятно, проблема, связанная с CLASSPATH, но я не могу понять, что я делаю неправильно.

Есть какие-нибудь подсказки?

РЕДАКТИРОВАТЬ 1:

Проблема сохраняется. Но, чтобы добавить к моему вопросу, если я использую нативные библиотеки Java, такие как: java.util, код запускается БЕЗ ошибок. Например, приведенный ниже код работает:

import jpype
jpype.startJVM(jpype.getDefaultJVMPath())
util = jpype.JPackage("java.util")
al = util.ArrayList()
al.add(1)
al.add(2)
print al.size()
jpype.shutdownJVM()

И возвращает 2.

РЕДАКТИРОВАТЬ 2:

Проблема решена, см. Ответ ниже...

2 ответа

Решение

Я решил проблему, и я хотел бы дать ответ здесь для записей.

1) Ничего не было не так с исходным кодом.

2) Проблема заключалась в том, что мой Python было 32 бита и мой java sdk (включая компилятор байт-кода javac) составлял 64 бита. Я удалил java sdk и переустановил 32-битную версию. Готово! Решено!

Попробуйте изменить свой путь так:

    jpype.startJVM(jpype.getDefaultJVMPath(), '-ea', '-Djava.class.path=c:\\tmp\')
Другие вопросы по тегам