Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用Rserve时ClassNotFoundException_Java_R_Servlets_Classnotfoundexception - Fatal编程技术网

在Java中使用Rserve时ClassNotFoundException

在Java中使用Rserve时ClassNotFoundException,java,r,servlets,classnotfoundexception,Java,R,Servlets,Classnotfoundexception,我已经导入了所有必要的库文件,当我使用JUnit进行单元测试时,它可以正常工作。但是,当我在webapp中运行此代码时,我得到一个ClassNotFoundException。我已经注释掉了所有没有引起 例外情况将发生。似乎是“connection=new RConnection()”这一行 这是问题的根源 我还尝试导入不同版本的Rserve库文件Rserve-0.6.5,但没有成功 [更新] 我已经使用eclipse选项将Rserve和Rengine jar添加到我的项目的构建路径中 代码:

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

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

[更新]

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

代码:


非常感谢您的帮助。

好的,我尝试了这些方法,并使其正常工作

  • 在Junit->Works中测试
  • 在完整的webapp中->不工作(ClassNotFound)
  • 将RConnection分离到它自己的纯Java程序->工作,但给出以下警告:
  • “不会导出或发布,运行时ClassNotfoundExceptions可能会导致”StackOverflow上的某个人通过将库文件添加到其项目的WEB-INF/lib解决了类似问题,但是,这不是一个WEB应用程序,因此此处没有此类文件夹。我在实际的web应用程序中尝试了这种方法,但没有成功

  • 我尝试将RServe和REngine库jars文件复制到tomcat libs文件夹中。e、 g:/tomcat/lib/这是有效的

  • 好吧,我试过这些东西,并且成功了

  • 在Junit->Works中测试
  • 在完整的webapp中->不工作(ClassNotFound)
  • 将RConnection分离到它自己的纯Java程序->工作,但给出以下警告:
  • “不会导出或发布,运行时ClassNotfoundExceptions可能会导致”StackOverflow上的某个人通过将库文件添加到其项目的WEB-INF/lib解决了类似问题,但是,这不是一个WEB应用程序,因此此处没有此类文件夹。我在实际的web应用程序中尝试了这种方法,但没有成功

  • 我尝试将RServe和REngine库jars文件复制到tomcat libs文件夹中。e、 g:/tomcat/lib/这是有效的
  • 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)