在Java中使用Rserve时出现ClassNotFoundException

问题描述 投票:1回答:1

我已经导入了所有必要的库文件,当我使用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)

任何帮助赞赏。

java r servlets classnotfoundexception
1个回答
0
投票

好吧,我试过这些东西并让它运转起来。

  1. 在Junit中测试 - > Works
  2. 在完整的webapp - >不起作用(ClassNotFound)
  3. 将Connection分成它自己的纯Java程序 - >工作但是给出了这个警告:

“将不会导出或发布,运行时ClassNotfoundExceptions可能会导致”StackOverflow上的某人通过将lib文件添加到他们项目的WEB-INF / lib中来解决Eclipse warning: XXXXXXXXXXX.jar will not be exported or published. Runtime ClassNotFoundExceptions may result中的类似问题,但是,这不是一个Web应用程序,所以没有这样的文件夹。我在实际的网络应用程序中尝试了这种方法但没有成功

  1. 我尝试将RServe和REngine库jar文件复制到tomcat libs文件夹中。例如:/ tomcat / lib /和这个工作。
© www.soinside.com 2019 - 2024. All rights reserved.