gpt4 book ai didi

java - 在 Java 中使用 Rserve 时出现 ClassNotFoundException

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:12 25 4
gpt4 key购买 nike

我已经导入了所有必需的库文件,并且当我使用 JUnit 进行单元测试时它工作得很好。但是,当我在 web 应用程序中运行此代码时,我收到 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;
}

}

异常(exception):

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)

感谢任何帮助。

最佳答案

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

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

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

  • 我尝试将 RServe 和 REngine 库 jar 文件复制到 tomcat libs 文件夹中。例如:/tomcat/lib/并且这有效。
  • 关于java - 在 Java 中使用 Rserve 时出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41435689/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com