Ошибка при использовании Java класса в Python с Jpype - PullRequest
1 голос
/ 23 сентября 2019

Я пытаюсь использовать Java-класс из библиотеки webgraph в скрипте Python, используя jpype.Я могу импортировать класс, но не могу его создать.Это мой код:

...
####

import jpype
from jpype import *
import os

path_to_jar = os.path.join(os.getcwd(), "webgraph")
classpath = ':'.join(
    [os.path.join(path_to_jar, name) for name in os.listdir(path_to_jar)])
jpype.startJVM(jpype.getDefaultJVMPath(), "-ea",
               "-Djava.class.path={}".format(classpath))
ImmutableGraph = JClass('it.unimi.dsi.webgraph.ImmutableGraph')
im = ImmutableGraph.load("graphs/cnr-2000")
...

Я получаю следующую ошибку:

<class 'jpype._jclass.it.unimi.dsi.webgraph.ImmutableGraph$$Static'>
Traceback (most recent call last):
  File "breadth_first_raw.py", line 34, in <module>
    im = ImmutableGraph.load("graphs/cnr-2000")
RuntimeError: No matching overloads found for load in find. at native/common/jp_method.cpp:127

Глядя на исходный код в webgraph , этокажется, что конструктор ожидает CharSequence .Метод load можно увидеть в строке 524 в этом файле

/** Creates a new {@link ImmutableGraph} by loading a graph file from disk to memory, with 
 *  all offsets, using no progress logger.
 * 
 * <P>This method uses the properties convention described in the {@linkplain ImmutableGraph introduction}.
 *
 * @param basename the basename of the graph.
 * @return an {@link ImmutableGraph} containing the specified graph.
 * @throws IOException if an I/O exception occurs while reading the graph.
 */


public static ImmutableGraph load( CharSequence basename ) throws IOException {
    return load( LoadMethod.STANDARD, basename, null );
}

Я не знаю точно, что является причиной ошибки.Я думал, что аргумент функции load может быть в неправильном формате, поэтому я пытался использовать JString("graphs/cnr-2000"), но он тоже не работал.Возможно ли что-то не так с пути, который я использую?Мое дерево каталогов следующее

.
├── __init__.py
├── my_script.py
├── graphs
│   ├── cnr-2000.graph
│   ├── cnr-2000.md5sums
│   ├── cnr-2000.obl
│   ├── cnr-2000.offsets
│   └── cnr-2000.properties
└── webgraph
    ├── all_jars* 
    ..
...