mirror of https://github.com/kivy/pyjnius.git
Merge pull request #24 from apalala/classpath
Allow for '*' wildcards in CLASSPATH+(some tipos).
This commit is contained in:
commit
4ff916dfdf
|
@ -48,12 +48,12 @@ class MetaJavaClass(type):
|
||||||
|
|
||||||
jcs.j_env = get_jnienv()
|
jcs.j_env = get_jnienv()
|
||||||
if jcs.j_env == NULL:
|
if jcs.j_env == NULL:
|
||||||
raise JavaException('Unable to get the Android JNI Environment')
|
raise JavaException('Unable to get the JNI Environment')
|
||||||
|
|
||||||
jcs.j_cls = jcs.j_env[0].FindClass(jcs.j_env,
|
jcs.j_cls = jcs.j_env[0].FindClass(jcs.j_env,
|
||||||
<char *>__javaclass__)
|
<char *>__javaclass__)
|
||||||
if jcs.j_cls == NULL:
|
if jcs.j_cls == NULL:
|
||||||
raise JavaException('Unable to found the class'
|
raise JavaException('Unable to find the class'
|
||||||
' {0}'.format(__javaclass__))
|
' {0}'.format(__javaclass__))
|
||||||
|
|
||||||
classDict['__cls_storage'] = jcs
|
classDict['__cls_storage'] = jcs
|
||||||
|
|
|
@ -16,15 +16,39 @@ cdef extern from "jni.h":
|
||||||
|
|
||||||
cdef JNIEnv *default_env = NULL
|
cdef JNIEnv *default_env = NULL
|
||||||
|
|
||||||
|
def classpath():
|
||||||
|
import platform
|
||||||
|
from glob import glob
|
||||||
|
from os import environ
|
||||||
|
from os.path import realpath
|
||||||
|
|
||||||
|
if 'CLASSPATH' not in environ:
|
||||||
|
return realpath('.')
|
||||||
|
cp = environ.get('CLASSPATH')
|
||||||
|
if platform.system() == 'Windows':
|
||||||
|
split_char = ';'
|
||||||
|
else:
|
||||||
|
split_char = ':'
|
||||||
|
pre_paths = cp.split(split_char)
|
||||||
|
# deal with wildcards
|
||||||
|
paths = []
|
||||||
|
for path in pre_paths:
|
||||||
|
if not path.endswith('*'):
|
||||||
|
paths.append(path)
|
||||||
|
else:
|
||||||
|
paths.extend(glob(path + '.jar'))
|
||||||
|
paths.extend(glob(path + '.JAR'))
|
||||||
|
result = split_char.join(paths)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
cdef void create_jnienv():
|
cdef void create_jnienv():
|
||||||
cdef JavaVM* jvm
|
cdef JavaVM* jvm
|
||||||
cdef JavaVMInitArgs args
|
cdef JavaVMInitArgs args
|
||||||
cdef JavaVMOption options[1]
|
cdef JavaVMOption options[1]
|
||||||
cdef bytes py_bytes
|
cdef bytes py_bytes
|
||||||
|
|
||||||
from os import environ
|
cp = classpath()
|
||||||
from os.path import realpath
|
|
||||||
cp = environ.get('CLASSPATH') or realpath('.')
|
|
||||||
py_bytes = <bytes>('-Djava.class.path={0}'.format(cp))
|
py_bytes = <bytes>('-Djava.class.path={0}'.format(cp))
|
||||||
options[0].optionString = py_bytes
|
options[0].optionString = py_bytes
|
||||||
options[0].extraInfo = NULL
|
options[0].extraInfo = NULL
|
||||||
|
|
Loading…
Reference in New Issue