我使用包rJava
在Java中使用R编程。
使用RJDBC
使用以下代码连接R中的数据库:
library(RJDBC)
driverName = "oracle.jdbc.driver.OracleDriver";
clapath = "D:\\Test\\lib\\External DB\\ojdbc6.jar";
databaseName = "jdbc:oracle:thin:@hostName:portnumber:databasename";
userName = "username";
password = "password";
drv <- JDBC(driverName,clapath,identifier.quote="`")
dbUnloadDriver(drv)
我使用Java assit动态加载类来调用RScript。遵守守则。
//1st Java Assis Code
String classFile4Decrypt = "D:\\Java\\pre\\Controller.class";
InputStream inputstream = new FileInputStream(classFile4Decrypt);
ClassPool classPoolObj = ClassPool.getDefault();
CtClass ctClassObj = classPoolObj.makeClass(inputstream);
ctClassObj.setName("ScriptMethodConfig_001");
ctClassObj.toClass();
inputstream.close();
Class<?> scriptFileMethodClass = Class.forName(ctClassObj.getName());//loaderObj.loadClass(ctClassObj.getName());
Class[] argTypes = new Class[1];
argTypes[0] = String.class;
String methodName = "testOB";
Object[] parameters = new Object[1];
parameters[0] = "Jayaramu";
Method scriptGenricMethod = scriptFileMethodClass.getMethod(methodName, argTypes);
System.out.println("Method Name: "+scriptGenricMethod.getName());
scriptGenricMethod.invoke(scriptFileMethodClass.newInstance(), parameters);
ctClassObj.freeze();
ctClassObj.defrost();
ctClassObj.detach();
//2nd Java Assis Code
ClassPool classPoolObj123 = ClassPool.getDefault();
classFile4Decrypt = "D:\\Java\\pre\\Controller.class";
inputstream = new FileInputStream(classFile4Decrypt);
CtClass ctClassObj123 = classPoolObj123.makeClass(inputstream);
ctClassObj123.setName("ScriptMethodConfig_002");
ctClassObj123.toClass();
inputstream.close();
System.out.println(ctClassObj123.getName());
scriptFileMethodClass = Class.forName(ctClassObj123.getName());
从controller.class我调用RScript文件 错误是 - 在第二个Java助手代码Class.forName(&#34; ScriptMethodConfig_002&#34;)。抛出类未找到错误。如果我删除R脚本它的工作正常。为什么会这样?有没有解决方案。