首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java和SOAP Webservices

Java和SOAP Webservices
EN

Stack Overflow用户
提问于 2016-06-26 20:41:20
回答 1查看 186关注 0票数 0

如何使用SOAP web服务通过Java公开R函数?我尝试过使用R-Serve从Java调用R函数,它工作得很好。但是我无法从Java代码创建WSDL,因为Java代码使用R-script.I调用R函数。我遇到这个错误,下面是我的Java代码。我正在使用Eclipse插件创建WSDL。

代码语言:javascript
复制
Jun 24, 2016 5:11:39 PM org.apache.axis.transport.http.AxisServletlogException
INFO: Exception:
java.lang.NoClassDefFoundError: org/rosuda/REngine/Rserve/RserveException
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:177)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160)
    at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:142)
    at org.apache.axis.utils.cache.ClassCache.lookup(ClassCache.java:85)
    at org.apache.axis.providers.java.JavaProvider.getServiceClass(JavaProvider.java:428)



package com.analytics;

import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.REngineException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;

这是我的Java代码,用于使用Eclipse插件生成WSDL。公共类Temp实现了Add {

代码语言:javascript
复制
    @Override
    public int add(int x, int y) {
         RConnection connection = null;
         int sum = 0;

            try {
                /* Create a connection to Rserve instance running on default port
                 * 6311
                 */
                connection = new RConnection();

                /* Note four slashes (\\\\) in the path */
                connection.eval("source('D:\\\\MyScript.R')");     //attaching R script         
                sum=connection.parseAndEval("myadd("+x+","+y+")").asInteger();  // call to R function

            } catch (RserveException e) {
                e.printStackTrace();
            } catch (REXPMismatchException e) {
                e.printStackTrace();
            } catch (REngineException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        return sum;
    }
}

下面是我的R代码,它是从上面的Java代码MyScript.R调用的

代码语言:javascript
复制
Myadd<-function (x, y) {
  sum=x+y
  return (sum)
}
EN

回答 1

Stack Overflow用户

发布于 2016-12-05 19:01:10

我们需要在libs文件夹中包含Rserve.jar和Rengine.jar。缺少的类存在于jar中。jars位于路径\library\Rserve\client\java的R包中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38038597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档