我已经导入了所有必要的库文件,当我使用JUnit进行单元测试时,它工作正常。但是,当我在webapp中运行此代码时,我得到一个ClassNotFoundException。我已经注释掉了所有不会导致异常发生的代码。似乎“connection = new RConnection()”这一行导致了问题。
我还尝试导入不同版本的Rserve库文件Rserve-0.6.5,但没有成功。
[更新]
我已经使用Eclipses选项将Rserve和Rengine jar添加到我的项目的Build路径中。
码:
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)
任何帮助赞赏。
好吧,我试过这些东西并让它运转起来。
“将不会导出或发布,运行时ClassNotfoundExceptions可能会导致”StackOverflow上的某人通过将lib文件添加到他们项目的WEB-INF / lib中来解决Eclipse warning: XXXXXXXXXXX.jar will not be exported or published. Runtime ClassNotFoundExceptions may result中的类似问题,但是,这不是一个Web应用程序,所以没有这样的文件夹。我在实际的网络应用程序中尝试了这种方法但没有成功