2017-01-03 51 views
1

我已經導入了所有必需的庫文件,並且在使用JUnit進行單元測試時它工作正常。但是,當我在webapp中運行這段代碼時,我得到了一個ClassNotFoundException異常。我已經註釋掉了所有不會導致發生異常的代碼。看起來這條線「連接=新RConnection()」 是造成這個問題。在Java中使用Rserve時的ClassNotFoundException

我也試過導入不同版本的Rserve庫文件Rserve-0.6.5,但沒有成功。

[更新]

我已經添加了Rserve和Rengine罐子到構建路徑使用日食選擇我的項目。

代碼:

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) 

讚賞任何幫助。

回答

0

好吧,我試過這些東西,並得到它的工作。

  1. 在JUnit測試 - >作品
  2. 在全web應用程序 - >無效(ClassNotFound的)
  3. 分隔的RConnection到它自己的純Java程序 - >作品,但給出了這樣的警告:

「將不得出口或發佈,運行ClassNotfoundExceptions可能導致」在計算器上有人通過添加的lib文件到項目的WEB-INF/lib中解決了類似的問題在這裏Eclipse warning: XXXXXXXXXXX.jar will not be exported or published. Runtime ClassNotFoundExceptions may result,但是,這不是一個Web應用程序所以這裏沒有這樣的文件夾。我在實際的web應用中嘗試了這種方法,但沒有成功

  1. 我試着將RServe和REngine庫jars文件複製到tomcat libs文件夾中。例如:/ tomcat/lib /和THIS WORKED。
相關問題