我需要从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());
}
}
}
任何人都有其他解决方案?????
答案 0 :(得分:1)
Scala编译为普通的JVM .class
文件,您不需要任何外部进程来使用Java中的Scala代码或Scala中的Java代码。
确保您的路径设置正确,然后只需创建Scala对象并从Java代码中调用Scala方法,就好像它只是另一个Java库一样。