我有一个 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,其中包含所有内容。
*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 运行,尽管它只给出了大约 6 个异常,从著名的 NoClassDefFoundError 开始。我有一种感觉,我没有得到完全合格的.ClassName 正确的结果。 *3.如果main Scala 类名为“Dis.scala”并且位于包“pack”中,那么这个完全限定的类名不应该是“pack.Dis”吗?
我正在使用 Jre 1.6 和 Scala 2.9.2 编辑:我已经包含了所有外部导入的 jar,甚至 scala-library.jar - 一切都很好并打包在 jar 中
附注我不熟悉 Ant、Maven 或 Sbt。我只是希望我的 Scala 项目能够运行起来 - 如果可能的话,不要陷入麻烦的事情。
最佳答案
这对我有用: 1.创建scala项目 2.创建Wrapper java项目 3. 将 scala-library.jar 添加到您的 java 项目构建路径中。
所以你只需要另外第三步,因为其余的看起来与我所做的类似。然后就可以愉快的使用了:java - jar file.jar
编辑: 如何使用 Scala - Eclipse IDE 创建包含 Scala/代码的 JAR 文件,该文件可由另一个 Java 项目使用。
- 创建一个新的 Scala 项目并定义一个以 main 方法作为入口点的对象。
- 现在创建一个新的 Java 项目并将您的 Scala 项目添加到新的构建路径中。另外,将 scala-library.jar 添加到 Java 项目中。
- 现在在 java 项目中创建一个 Wrapper 类,该类从 scala lib 调用您的入口点类。运行包装类创建eclipse运行配置并测试是否可以调用scala项目。
- 使用 Export->Java->Runnable JAR 文件,向导现在位于包装器项目上。Eclipse 运行配置将用作 JAR 的入口点。根据您的需求,您可能想要: 将所需的库提取到生成的 JAR 中 或者 将所需的库打包到生成的 JAR 中
最后你会得到一个完整的打包 JAR,你可以像这样使用它:
java - jarwrapped.jar
关于java - 从 Eclipse 将 Scala 项目导出为 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11413888/