从Eclipse导出Scala项目为jar

时间:2012-07-10 13:01:59

标签: java scala compilation

我有一个Scala项目,我想将其导出为jar。

* 1。起初我尝试为项目创建一个Java类作为入口点

public class JMain {
 public static void main(String[] args) {
  System.out.println("Java main calling Scala main");
  SMain.main(new String[] {""}); //SMain.main is the actual *main*

从Eclipse启动时这很好用,但是当我将它导出为jar时,它会给我18个例外左右。我现在知道如何复制然后Eclipse设法启动它的“环境”,我很确定它依赖于Scala已经在我的系统上的事实 - 我需要一个自包含的jar,其中包含所有东西。< / p>

* 2。我的第二次尝试包括尝试 lach 建议How to deploy a Scala project from Eclipse? 即:

public class JMain {
 public static void main(String[] args) {
  System.out.println("Java Main");
  List<String> argList = new ArrayList<String>();
  argList.add("fully.qualified.ClassName"); //???
  for (String s : args) argList.add(s);
  scala.tools.nsc.MainGenericRunner.main(argList.toArray(new String[0]));

这次它甚至不会从Eclipse运行,虽然从着名的 NoClassDefFoundError 开始只提供6个左右的例外。我有一种感觉,我没有得到 fully.qualified.ClassName 。 * 3。如果 main Scala类被称为“Dis.scala”并且位于包“pack”中,那么 fully.qualified.ClassName 不应该是“pack.Dis”吗?

我正在使用Jre 1.6和Scala 2.9.2 编辑:我已经包括了所有外部进口的罐子,甚至scala-library.jar - 一切都很好,装在罐子里

P.S。我不熟悉Ant或Maven或Sbt。我只想让我的Scala项目进行评判 - 如果可能的话,不要进入毛茸茸的事情。

2 个答案:

答案 0 :(得分:10)

这对我有用: 1.创建scala项目 2.创建Wrapper java项目 3.将scala-library.jar添加到java项目构建路径中。

所以你只需要第3步,因为其余的看起来与我的相似。然后你可以愉快地使用:java - jar file.jar

编辑: 如何使用Scala-Eclipse IDE创建包含Scala / Code的JAR文件,该文件可由另一个Java Project使用。

  1. 创建一个新的Scala项目,并使用main方法作为入口点定义一个对象。
  2. 现在创建一个新的Java Project并将Scala项目添加到新的buildpath中。另外,将scala-library.jar添加到Java项目中。
  3. 现在在java项目中创建一个Wrapper类,它从scala lib调用你的入口点类。运行包装器类以创建eclipse运行配置并测试是否可以调用scala项目。
  4. 在包装器项目中使用Export-&gt; Java-&gt; Runnable JAR文件,现在向导.eclipse运行配置将用作JAR的入口点。根据您的需要,您可能希望: 将所需的库提取到生成的JAR中 要么 将所需的库打包到生成的JAR中
  5. 最后,您将获得一个完整的打包JAR,您可以这样使用:

    java - jar wrapped.jar

答案 1 :(得分:0)

对我来说,这是相对简单的。

  
      
  1. 使用scala IDE(或eclipse for java)开发和测试项目。
  2.   
  3. 准备好后,使用file生成项目的jar - &gt;出口方法。
  4.   

提交spark(我正在写一些火花),我只需要提一下--class选项来指定jar的主类。

希望能提供帮助。