从javajar运行R脚本
我有一个调用R脚本的java程序。 命令如下:从javajar运行R脚本,java,jar,external-process,Java,Jar,External Process,我有一个调用R脚本的java程序。 命令如下: String filename = "hierarchicalClusteringScript.R"; String[] cmd=new String[]{this.conn.getRPath(),"CMD","BATCH", "--args LD_matrix='"+LD_matrix+"' " + "image_filename='"+image_filename+"' " +
String filename = "hierarchicalClusteringScript.R";
String[] cmd=new String[]{this.conn.getRPath(),"CMD","BATCH",
"--args LD_matrix='"+LD_matrix+"' " +
"image_filename='"+image_filename+"' " +
"width="+300+" "+
"height="+height+" "+
"ordered_snps_filename='"+ordered_snps_filename+"'",
filename,
this.conn.getWorkingDir()+this.conn.getProjectName()+"Routput.txt"};
Runtime runtime = Runtime.getRuntime();
try {
Process process = runtime.exec(cmd);
process.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
我想将R脚本“HierarchycalClusteringScript.R”包含到jar文件中。如果我这样做了,有没有办法从代码中调用脚本?我应该走哪条路
提前多谢了Jar文件本质上是Zip文件(带有清单) 您可以使用 基本上,您需要打开
JarFile
,找到JarEntry
,并使用JarOutputStream
提取内容
如果我了解到您希望将R脚本添加到jar并从jar类路径将R作为资源加载,那么您可以查看一个示例。 (jar可以包含任何类型的文件,但JVM只能运行字节码兼容的文件) --要将脚本添加到现有jar,请执行以下操作:
--要使用脚本创建新jar,请执行以下操作:
--要从jar加载脚本,请确保它位于类路径中,并在代码中使用ResourceLoader加载它:
为了从JAR中提取脚本,通常我们很少执行JAR/ZIP提取。当您将脚本放入JAR时,它通常意味着它在您的类路径中。因此,只需将其定位为一个资源,获取输入流,读取资源并将其写入临时目录。这几个步骤应该足够简单,您可以很容易地从网上找到代码样本 给你一些提示:
Class#getResourceAsStream()
FileOutputStream
File#createTempFile()
“R”能够从压缩文件执行脚本吗?我不知道…我想知道这是否可能,或者我是否需要将文件放在另一个地方好吧,我建议您可能会遇到问题,无论如何,您可以将脚本从Jar文件@runtime提取到temp位置,然后从那里执行。您可以告诉我在Java中执行该操作所需的命令吗?提前多谢