如何在java文件中运行scala jar文件?
我需要从Java代码运行Scala jar文件: 所以,如果我有这个Scala代码:如何在java文件中运行scala jar文件?,java,scala,Java,Scala,我需要从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.InputStrea
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
.class
文件,使用Java中的Scala代码或Scala中的Java代码不需要任何外部进程
确保路径设置正确,然后简单地创建Scala对象并从Java代码调用Scala方法,就好像它只是另一个Java库一样。Scala编译到普通JVM
。class
文件,使用Java中的Scala代码或Scala中的Java代码不需要任何外部进程
确保路径设置正确,然后简单地从Java代码中创建Scala对象并调用Scala方法,就像它只是另一个Java库一样。请不要这样做。编译的Scala代码是JVM字节码,从Java中使用它非常容易(特别是如果您使用的是支持Scala的JVM构建工具,这是其中的大多数),请不要这样做。编译后的Scala代码是JVM字节码,从Java中使用它非常容易(特别是如果您使用的是支持Scala的JVM构建工具,这是其中的大多数)。@chiva
App.main(新字符串[]{“test”})
或者如果App
是一个Java类,你会做什么。你要确保正确的jar
在你的类路径上,你要确保你导入你的包.App在Java代码中,只需调用mainApp.main(新字符串[]{})
。但是,您可能不想将其称为main。您使用的是什么构建工具?我使用的是带有scala IDE支持的eclips Eclipse是一个IDE,而不是构建工具本身。但是,它应该有Project->Dependencies->addexternaljar
或类似的东西。因此,您打开java项目,添加包含编译的scala代码的“scala jar”,同时添加所有必需的scala库(这就是像SBT
这样的构建工具的用武之地),并将其当作“java jar”使用(尽管“java jar”和“scala jar”之间实际上没有区别),都只是JVM字节码)。@chivaApp.main(新字符串[]{“test”})
或者如果App
是一个Java类,你会做什么。你要确保正确的jar
在你的类路径上,你要确保导入你的package.App在Java代码中,只需调用mainApp.main(新字符串[]{})
。但是,您可能不想将其称为main。您使用的是什么构建工具?我使用的是带有scala IDE支持的eclips Eclipse是一个IDE,而不是构建工具本身。但是,它应该有Project->Dependencies->addexternaljar
或类似的东西。因此,您打开java项目,添加包含编译的scala代码的“scala jar”,同时添加所有必需的scala库(这就是像SBT
这样的构建工具的用武之地),并将其当作“java jar”使用(尽管“java jar”和“scala jar”之间实际上没有区别),这都只是JVM字节码)。