Hi all,

I am using R and JRI under Windows XP Pro. I am posting this question
here since the reason might be R related (since I am running an R
script) but there is also a very good chance that it is JRI only
(since I am using the JRI interface to activate the script) -- in
which case I want to apologize for misplacing this message.

I have a method that instantiates an REngine object every time it is
called. It runs a script provided by a file name and closes REngine
afterward. The script works fine, the png file is successfully
generated and the PNG file is released so that I can delete it if I
want ( but I don't in that case). For some strange reason, when
running this code twice I get the following error: upon which the Java
Virtual machine dies on me.

 Any explanation would be greatly appreciated!

Best,
Ralf

Here the Java code, the R code, and the Java VM error:

++++++++++++++++ START JAVA CODE ++++++++++++++++++

/** Helper method */
private static void eval(Rengine r, String s) {
        r.eval(s, false);
}
        
/** Assigns the given java value to the given R variable name */
private static void assign(Rengine r, String rVariableName, String javaValue) {
        r.assign(rVariableName, javaValue);
}

public void run() throws Exception {
                String filepath = this.path;
                
                if (filepath != null) {
                        File rFile = new File(filepath );
                    if (rFile.exists()) {       // run R script
                        // start R engine
                                if (!Rengine.versionCheck()) {
                                        System.err.println("** Version mismatch 
- Java files don't match
library version.");
                                        System.exit(1);
                                }
                                // creating R engine
                                Rengine rEngine = new Rengine(null, false, new 
EmptyCallbacks());
                                // the engine creates R is a new thread, so we 
should wait until it's ready
                                if (!rEngine.waitForR()) {
                                        System.out.println("Cannot load R for " 
+ this.getClass().getName());
                                        return;
                                }

                                // executing logic
                                try {
                                        assign(rEngine, "filename", filepath);
                                        eval(rEngine, "source(filename)");
                                } catch (Exception e) {
                                        
System.out.println(this.getClass().getName() + ": Error in R code: " + e);
                                        e.printStackTrace();
                                        // stopping R engine
                                        System.out.println("Error when running 
script - rEngine stopped!");
                                        if (rEngine != null){
                                                rEngine.end();
                                        }
                                }

                                // stopping R engine
                                rEngine.end();
                    } else {
                        throw new Exception(getClass().getName() + " not run - 
missing
R file - location: " + rFile.getAbsolutePath());
                    }
                }
        }

+++++++++++++++++++++ END JAVA CODE +++++++++++++++++++++++++


+++++ START  R Code ++++++++
library(RJDBC)

# db connection
driver <- JDBC("com.mysql.jdbc.Driver","lib/mysql-connector-java-5.0.6-bin.jar")
con <- dbConnect(driver, "jdbc:mysql://localhost/mydb", "xxx", "yyy")

# list tables
dbListTables(con)

# user, task and event information
result = dbGetQuery(con, "SELECT x,y from mytable;")
png(file="output.png")
plot(result$x, result$y)
dev.off()

+++++ START  R Code ++++++++

ERROR:

#
# An unexpected error has been detected by Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=...., pid=5400, tid=3204
#
# Java VM: Java HotSpot(TM) Client VM (11.2-b01 mixed mode, ....)
# Problematic frame:
# C  [R.dll+0x1136fe]
#

# An error report file with more information is saved as:
# ....
[WARN] 404 - GET /output.png (127.0.0.1) 1402 bytes
   Request headers
      Host: localhost:8888
      User-Agent: ....
      Accept: image/png,image/*;q=0.8,*/*;q=0.5
      Accept-Language: en-us,en;q=0.5
      Accept-Encoding: gzip,deflate
      Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
      Keep-Alive: 115
      Connection: keep-alive
      Referer: http://localhost....
   Response headers
      Content-Length: 1402
      Content-Type: text/html; charset=iso-8859-1
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to