我已經導入了所有必需的庫文件,並且在使用JUnit進行單元測試時它工作正常。但是,當我在webapp中運行這段代碼時,我得到了一個ClassNotFoundException異常。我已經註釋掉了所有不會導致發生異常的代碼。看起來這條線「連接=新RConnection()」 是造成這個問題。在Java中使用Rserve時的ClassNotFoundException
我也試過導入不同版本的Rserve庫文件Rserve-0.6.5,但沒有成功。
[更新]
我已經添加了Rserve和Rengine罐子到構建路徑使用日食選擇我的項目。
代碼:
import org.rosuda.REngine.REXP;
import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;
public class RServerAccessor implements ProductInfoDAO {
private RConnection connection;
public List<Product> getProducts(String path) {
List<Product> list = new ArrayList<Product>();
try {
connection = new RConnection();
//connection.eval("source('~/Desktop/Food/workspace/mcApp2/rScripts/ReceiptReader.R')");
//REXP raw = connection.eval("getProducts(\"" + path + "\")");
//String text = raw.asString();
//System.out.println(text);
// String[] items = text.split("\n");
// for(String item: items){
// list.add(new GroceryProduct(item));
// }
} catch (RserveException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
connection.close();
}
return list;
}
}
例外:
Jan 02, 2017 9:27:09 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet Service
java.lang.ClassNotFoundException: org.rosuda.REngine.Rserve.RserveException
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
at ctrl.Service.init(Service.java:41)
讚賞任何幫助。