如何解决如何使用jpype在python中调用/使用第三方Java库函数?
我用Java(1.8)创建了一个简单的Java程序,该程序读取CSV文件并显示CSV中的内容。为了阅读和进行其他操作,我使用了第三方库(不是默认库),例如opencsv,commons-collections4等。
import java.io.File;
import java.io.FileReader;
import java.util.List;
import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
public class Reading {
public static void readAllDataAtOnce(String path)
{
try {
// Create an object of file reader
// class with CSV file as a parameter.
FileReader filereader = new FileReader(new File(path));
// create csvReader object and skip first Line
CSVReader csvReader = new CSVReaderBuilder(filereader)
.withSkipLines(1)
.build();
List<String[]> allData = csvReader.readAll();
// print Data
for (String[] row : allData) {
for (String cell : row) {
System.out.print(cell + "\t");
}
System.out.println();
}
}
catch (Exception e) {
e.printstacktrace();
}
}
}
我在Python项目中使用上述Java项目的jar文件,并尝试使用jpype执行相同的代码。 下面是Python代码。
class_path = 'D:\\Learning\\Python\\....\\csv1.jar'
jpype.startJVM(jpype.getDefaultJVMPath(),'-ea',"-Djava.class.path="+class_path)
jpype.java.lang.System.out.println("Calling jar file")
jpype.JClass("Reading").readAllDataAtOnce('D:\\Test.csv')
jpype.shutdownJVM()
但是我得到以下错误:
Traceback (most recent call last):
File "ClassLoader.java",line 357,in java.lang.classLoader.loadClass
File "Launcher.java",line 349,in sun.misc.Launcher$AppClassLoader.loadClass
File "ClassLoader.java",line 424,in java.lang.classLoader.loadClass
File "urlclassloader.java",line 382,in java.net.urlclassloader.findClass
java.lang.classNotFoundException: java.lang.classNotFoundException: com.opencsv.CSVReaderBuilder
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "Reading.java",line 19,in Reading.readAllDataAtOnce
Exception: Java Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "D:/Learning/Python/…/frist_java.py",line 24,in <module>
jpype.JClass("Reading").readAllDataAtOnce('D:\\Test.csv')
java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: com/opencsv/CSVReaderBuilder
是否可以在Python中使用jpype执行具有第三方库的Java代码?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。