【问题标题】:ClassNotFoundException when using Rserve in Java在 Java 中使用 Rserve 时出现 ClassNotFoundException
【发布时间】:2017-05-17 02:00:22
【问题描述】:

我已经导入了所有必要的库文件,当我使用 JUnit 进行单元测试时它工作正常。但是,当我在 webapp 中运行此代码时,我得到了 ClassNotFoundException。我已经注释掉了所有没有引起 发生的异常。似乎“connection = new RConnection()”这一行 导致问题。

我还尝试导入不同版本的 Rserve 库文件 Rserve-0.6.5,但没有成功。

[更新]

我已经使用 Eclipses 选项将 Rserve 和 Rengine jar 添加到我的项目的构建路径中。

代码:

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】:

    好的,我尝试了这些方法并成功了。

    1. 在 Junit 中测试 -> 工作
    2. 在完整的 web 应用中 -> 不起作用 (ClassNotFound)
    3. 将 RConnection 分离到它自己的纯 Java 程序中 -> 有效,但发出以下警告:

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

    1. 我尝试将 RServe 和 REngine 库 jars 文件复制到 tomcat libs 文件夹中。例如:/tomcat/lib/ 和 THIS WORKED。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-17
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2022-07-26
      • 2018-03-31
      相关资源
      最近更新 更多