0

我有一个调用 R 脚本的 java 程序。这是命令:

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 脚本“hierarchicalClusteringScript.R”包含到 jar 文件中。如果我这样做了,有没有办法从代码中调用脚本?我应该使用哪条路径?

非常感谢提前

4

3 回答 3

1

为了从您的 JAR 中提取脚本,通常我们很少执行 JAR/ZIP 提取。当您将脚本放入 JAR 中时,通常意味着它在您的类路径中。因此,只需将其定位为资源,获取 inputStream 并读取资源并将其写入临时目录即可。这几个步骤应该足够简单,您可以轻松地从网上轻松找到代码示例。

给你一些提示:

Class#getResourceAsStream()
FileOutputStream
File#createTempFile()
于 2012-08-08T02:04:03.050 回答
0

Jar 文件本质上是 Zip 文件(带有清单)。

您可以使用Jar API从这些文件中提取文件

本质上,您要打开JarFile,找到JarEntry并使用JarOutputStream提取内容

您可以看看如何编写一个可以提取 JAR 文件并将其数据存储在指定目录(位置)中的 Java 程序?举个例子

于 2012-08-08T01:40:13.233 回答
0

如果我了解您正在寻找将 R 脚本添加到 jar 并将 R 作为 jar 类路径中的资源加载。(jar 可以包含任何类型的文件,但 JVM 只能运行与字节码兼容的文件)

-- 要将脚本添加到现有 jar,请执行以下操作: http:
//docs.oracle.com/javase/tutorial/deployment/jar/update.html

-- 要使用脚本创建新 jar,请执行以下操作: http:
//docs.oracle.com/javase/tutorial/deployment/jar/build.html

-- 要从 jar 加载脚本,请确保它位于类路径中,并在您的代码中使用 ResourceLoader 加载它:http:
//docs.oracle.com/javase/1.5.0/docs/guide/lang/resources.html

于 2012-08-08T01:48:54.260 回答