如何在java文件中运行scala jar文件?

如何在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

我需要从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
.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
在你的类路径上,你要确保你导入你的包.AppApp.main(新字符串[]{})。但是,您可能不想将其称为main。您使用的是什么构建工具?我使用的是带有scala IDE支持的eclips Eclipse是一个IDE,而不是构建工具本身。但是,它应该有
Project->Dependencies->addexternaljar
或类似的东西。因此,您打开java项目,添加包含编译的scala代码的“scala jar”,同时添加所有必需的scala库(这就是像
SBT
这样的构建工具的用武之地),并将其当作“java jar”使用(尽管“java jar”和“scala jar”之间实际上没有区别),都只是JVM字节码)。@chiva
App.main(新字符串[]{“test”})
或者如果
App
是一个Java类,你会做什么。你要确保正确的
jar
在你的类路径上,你要确保
导入你的package.AppApp.main(新字符串[]{})
。但是,您可能不想将其称为main。您使用的是什么构建工具?我使用的是带有scala IDE支持的eclips Eclipse是一个IDE,而不是构建工具本身。但是,它应该有
Project->Dependencies->addexternaljar
或类似的东西。因此,您打开java项目,添加包含编译的scala代码的“scala jar”,同时添加所有必需的scala库(这就是像
SBT
这样的构建工具的用武之地),并将其当作“java jar”使用(尽管“java jar”和“scala jar”之间实际上没有区别),这都只是JVM字节码)。