当前位置: 首页 > 工具软件 > PyJNIus > 使用案例 >

java -jar 找不到引用类_java – pyjnius导入jar文件时“找不到类”

蒙光华
2023-12-01

我正在尝试使用我从

java应用程序构建的jar文件使pyjnius工作,但我不断收到“找不到类”错误:

>>> import os

>>> os.environ['CLASSPATH'] = "~/workspace/myapp-Tools/Admin/Console/couchdb/myapp-web.jar"

>>> from jnius import autoclass

>>> bla = autoclass('com/myapp/webapp/server/helpers/licensee/CalculationHelper')

Traceback (most recent call last):

File "", line 1, in

File "/home/sam/workspace/myapp-Tools/Admin/Console/couchdb/virtualenv/local/lib/python2.7/site-packages/jnius/reflect.py", line 150, in autoclass

c = find_javaclass(clsname)

File "jnius_export_func.pxi", line 23, in jnius.find_javaclass (jnius/jnius.c:12815)

jnius.JavaException: Class not found 'com/myapp/webapp/server/helpers/licensee/CalculationHelper'

>>>

我当然检查过:

jar tf myapp-web.jar

和com / myapp / webapp / server / helpers / licensee / CalculationHelper.class就在那里

我也试过这样设置类路径:

import jnius_config

jnius_config.set_classpath('.', '~/workspace/myapp-Tools/Admin/Console/couchdb/')

#import jnius

from jnius import autoclass

但这给了我同样的结果.

我正在研究一个虚拟的btw.

我已经尝试过我可以在网上找到的所有方法,但它根本不起作用.我不得不手动安装pyjnius,因为使用pip让我得到了旧版本.

任何帮助将不胜感激.

编辑:尝试使用不是由我创建的jar,我看到一个不同的错误

Python 2.7.6 (default, Mar 22 2014, 22:59:56)

[GCC 4.8.2] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import jnius_config

>>> jnius_config.add_classpath('/home/sam/workspace/someproject/*')

>>> jnius_config.expand_classpath()

'/home/sam/workspace/someproject/annotations.jar:/home/sam/workspace/someproject/junit-4.10.jar:/home/sam/workspace/someproject/ postgresql-8.1-408.jdbc3.jar'

>>> import jnius

>>> from jnius import autoclass

>>> test = autoclass('org/postgresql/geometric/PGcircle.class')

Traceback (most recent call last):

File "", line 1, in

File "/home/sam/workspace/myapp-Tools/Admin/Console/couchdb/virtualenv/local/lib/python2.7/site-packages/jnius/reflect.py", line 150, in autoclass

c = find_javaclass(clsname)

File "jnius_export_func.pxi", line 23, in jnius.find_javaclass (jnius/jnius.c:12815)

jnius.JavaException: Class not found 'org/postgresql/geometric/PGcircle/class'

>>> test = autoclass('org/postgresql/geometric/PGcircle')

Exception in thread "main" java.lang.NoClassDefFoundError: org/postgresql/geometric/PGcircle/class

Caused by: java.lang.ClassNotFoundException: org.postgresql.geometric.PGcircle.class

at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

Traceback (most recent call last):

File "", line 1, in

File "/home/sam/workspace/myapp-Tools/Admin/Console/couchdb/virtualenv/local/lib/python2.7/site-packages/jnius/reflect.py", line 156, in autoclass

for constructor in c.getConstructors():

File "jnius_export_class.pxi", line 562, in jnius.JavaMethod.__call__ (jnius/jnius.c:19385)

File "jnius_export_class.pxi", line 649, in jnius.JavaMethod.call_method (jnius/jnius.c:20409)

File "jnius_utils.pxi", line 43, in jnius.check_exception (jnius/jnius.c:3533)

jnius.JavaException: JVM exception occured

>>> test = autoclass('org/postgresql/geometric/PGcircl')

Traceback (most recent call last):

File "", line 1, in

File "/home/sam/workspace/myapp-Tools/Admin/Console/couchdb/virtualenv/local/lib/python2.7/site-packages/jnius/reflect.py", line 150, in autoclass

c = find_javaclass(clsname)

File "jnius_export_func.pxi", line 23, in jnius.find_javaclass (jnius/jnius.c:12815)

jnius.JavaException: Class not found 'org/postgresql/geometric/PGcircl'

>>>

这是jar上的jar tf的内容:

sam@lambda ~/workspace$jar tf ./someproject/postgresql-8.1-408.jdbc3.jar

META-INF/

META-INF/MANIFEST.MF

...

org/postgresql/geometric/PGbox.class

org/postgresql/geometric/PGcircle.class

org/postgresql/geometric/PGline.class

org/postgresql/geometric/PGlseg.class

org/postgresql/geometric/PGpath.class

org/postgresql/geometric/PGpoint.class

org/postgresql/geometric/PGpolygon.class

...

sam@lambda ~/workspace$

再次……任何帮助将不胜感激!

 类似资料: