2016-11-10 12 views
0

私はこのエラーを受け取りました。何をすべきか分からず、このサイトで他の解決策を見つけることができませんでした。私はコンピュータ上でバックグラウンドでRserveを実行し、ローカルホストに接続します。しかし、私はフレームをポップアップすることはできません。ここで
が私のコードです:Rserve with java。 Eval fail error 127

package rservedemo; 

/** 
* 
* @author Carl 
*/ 
import java.awt.*; 

import java.awt.event.*; 
import org.rosuda.REngine.*; 
import org.rosuda.REngine.Rserve.*; 

public class PlotDemo extends Canvas { 


public static void main(String[] args) { 

try 
{ 
    String device = "jpeg"; 
    RConnection c = new RConnection ((args.length>0)?args[0]:"127.0.0.1"); 
    if 
      (c.parseAndEval("supressWarnings(require('Cairo',quietly=TRUE))").asInteger()>0) device="CarioJPEG"; 

    else 
     System.out.println("(Consider installing Cairo package for better bitmap output)"); 

     REXP xp = c.parseAndEval("Try("+device+"('test.jpg,quality=90))"); 
     if (xp.inherits("Try error")) 
     { 
      System.err.println("Can't open "+device+" graphics device:\n" +xp.asString()); 

     REXP w = c.eval("If (exists('last.warning') && length(last.warning)>0)names(last.warning) [1] else 0"); 
     if (w.isString()) System.err.println(w.asString()); 
     return; 
     } 
     c.parseAndEval("data(iris); plot(iris$Sepal.Length, iris$Petal.Length); dev.off()"); 

     xp = c.parseAndEval("r=readBin('test.jpg','raw',1024*1024); unlink('test.jpg');r"); 

     Image img = Toolkit.getDefaultToolkit().createImage(xp.asBytes()); 
     Frame f = new Frame("Test image"); 
     f.add(new PlotDemo (img)); 

     f.addWindowListener(new WindowAdapter(){ 
      public void windowClosing(WindowEvent e){System.exit(0);} 

     }); 
     f.pack(); 
     f.setVisible(true); 
     c.close(); 

} 
catch (RserveException rse) 
     { 
      System.out.println(rse); 
     } 
    catch (REXPMismatchException mme) 
    { 
     System.out.println(mme); 
     mme.printStackTrace(); 
    } 
catch (Exception e) 

{ 
    System.out.println("Seomthing went wrong, but it's not Rserve: " +e.getMessage()); 
    e.printStackTrace(); 
} 

    } 
    Image img; 
    public PlotDemo(Image img) 
    { 
     this.img=img; 
     MediaTracker mediaTracker = new MediaTracker(this); 
     mediaTracker.addImage(img, 0); 
     try 
     { 
      mediaTracker.waitForID(0); 
     } 
     catch (InterruptedException ie) 
     { 
      System.err.println(ie); 
      System.exit(1); 
     } 
     setSize(img.getWidth(null), img.getHeight(null));  
    } 
    public void paint (Graphics g) 
    { 
     g.drawImage(img, 0, 0, null); 
    } 
} 

そして、ここではエラーになり、私は27で行を変更しようとしましたが、有益な何かをcouldntのしています。私が走るときには、

c.parseAndEval("data(iris); plot(iris$Sepal.Length, iris$Petal.Length); dev.off()"); 

がそこにあります。そのような用量が問題であるように思われる。

Seomthing went wrong, but it's not Rserve: eval failed, request status: error code: 127 
org.rosuda.REngine.REngineException: eval failed, request status: error code: 127 
    at org.rosuda.REngine.Rserve.RConnection.parseAndEval(RConnection.java:454) 
    at org.rosuda.REngine.REngine.parseAndEval(REngine.java:108) 
    at rservedemo.PlotDemo.main(PlotDemo.java:27) 

感謝ヘルプ

答えて

0

のための通常のプロセス終了コード127File not foundを意味します。あなたが行に間違い(タイプミス)を持っている可能性があるため、

REXP xp = c.parseAndEval("Try("+device+"('test.jpg,quality=90))"); 

:あなたは 問題のあるケースは、行することができ

(c.parseAndEval("supressWarnings(require('Cairo',quietly=TRUE))").asInteger()>0) device="CarioJPEG"; 

注:CarioJPEGの代わりCairoJPEG

+0

そして "supressWarningsは" あまりにも間違って見えます。それはあなたが呪文を抑制する方法ではありません! –