我正在使用Jadex 0.96。我想使用V2,但我无法获得当前版本来稳定地初始化我的Mac上的JCC。
使用Jadex 0.96,我正在尝试使用opencsv:
http://opencsv.sourceforge.net/
这需要我将.jar文件添加到我的项目中。我有一些依赖于opencsv构建的类在普通Java中运行时工作正常。但是,当我尝试在Jadex计划中初始化其中一个类时,我得到以下错误(omni0是代理的名称,DataGrid是使用opencsv的类,DataMap是使用DataGrid的类):
*** Uncaught Exception for agent omni0 ***
java.lang.NoClassDefFoundError: au/com/bytecode/opencsv/CSVReader
at gi.environment.data.DataGrid.<init>(DataGrid.java:32)
at gi.environment.data.DataMap.<init>(DataMap.java:46)
at gi.agents.base.capabilities.interaction.InitialPlan.body(InitialPlan.java:39)
at jadex.runtime.JavaStandardPlanExecutor$PlanExecutionTask.run(JavaStandardPlanExecutor.java:581)
at jadex.util.concurrent.ThreadPool$ServiceThread.run(ThreadPool.java:308)
Caused by: java.lang.ClassNotFoundException: au.com.bytecode.opencsv.CSVReader
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 5 more
我非常有信心这与包含opencsv jar文件有关,但我不知道如何让Jadex识别它。在尝试初始化DataMap之前,我尝试将它添加到类路径中:
System.setProperty("java.class.path",currentPath+opencsvPath);
有什么想法吗?
答案 0 :(得分:0)
我最后编写了自己的简单CSVDataReader
类来取代CSVReader
。它适用于我的应用程序,并避免引用jar引起的Jadex错误。
以下是有人需要的课程:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class CSVDataReader {
private String filePath;
public CSVDataReader(String filePath) throws IOException {
this.filePath = filePath;
}
public List<String[]> readAll() throws IOException {
// Get Buffered Reader
FileInputStream fstream = new FileInputStream(filePath);
DataInputStream in = new DataInputStream(fstream);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
// Init lineList
List<String[]> lineList = new ArrayList<String[]>();
// Get Lines
String strLine;
while ((strLine = bufferedReader.readLine()) != null) {
String[] strings = strLine.split(",");
lineList.add(strings);
}
//Close the input stream
in.close();
return lineList;
}
public static void main(String [] args){
try {
String filePath = "test.csv";
CSVDataReader reader = new CSVDataReader(filePath);
List<String[]> lineList = reader.readAll();
for(String[] strings : lineList){
for (String s : strings) {
System.out.print(s+" ");
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}