【发布时间】:2015-06-28 23:24:36
【问题描述】:
我需要从 Java 代码运行 Scala jar 文件:
所以,如果我有这个 Scala 代码:
object test extends App {
override def main(args: Array[String]) {
println("Hello, world! " + args.toList)
}
}
我在demo.jar 中导出,我想从Java 应用程序内部执行?
我使用它的方式是抛出运行时进程,这对我不起作用?
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
public class testscalajar {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Process proc = Runtime.getRuntime().exec(new String[]{"scala","-cp","d:\\demo.jar", "test"});
// Then retrieve the process output
InputStream in = proc.getInputStream();
InputStream err = proc.getErrorStream();
String inString = IOUtils.toString(in, "UTF8");
String errString = IOUtils.toString(err, "UTF8");
System.out.println(inString);
System.out.println(errString);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
有人有其他解决方案吗??????
【问题讨论】:
-
请,请不要这样做。编译后的 Scala 代码是 JVM 字节码,从 Java 中使用它非常容易(特别是如果您使用的是支持 Scala 的 JVM 构建工具,这是其中的大多数)。