【问题标题】:How do I run Ceylon Eclipse projects from the terminal?如何从终端运行 Ceylon Eclipse 项目?
【发布时间】:2015-02-22 17:23:02
【问题描述】:

我用 Ceylon Eclipse 插件编写了一个简单的 Hello World 程序:

这是源代码,以防有人想快速重现该问题:

shared void main() {
    String omg = (process.arguments.first else "nothing");
    print("You wrote ``omg``, you silly programmer!");
}

现在,我可以在 Eclipse 中很好地运行这个程序了。但是如何从终端运行它?

我没有安装 Ceylon 命令行工具,我希望它保持这种状态。当我将我的程序提供给其他人时,我也不希望他们安装 Ceylon。

似乎只有一个类文件:

~/workspace/saloon $ find . -type f -name "*.class"
./.exploded/main_.class

如果我尝试运行它,我会得到:

~/workspace/saloon/.exploded $ java main_
Exception in thread "main" java.lang.NoClassDefFoundError: ceylon/language/process_
    at main_.main(main.ceylon)
Caused by: java.lang.ClassNotFoundException: ceylon.language.process_
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

Eclipse 项目似乎不依赖任何.jar 文件,只有一个.car 文件,但java 不适用于.car 文件。通过提供适当的 .jar 文件,从终端运行 Scala Eclipse 项目很容易。

那么如何通过java 从终端运行 Ceylon Eclipse 项目?或者这是不可能的?

【问题讨论】:

    标签: java eclipse jvm classpath ceylon


    【解决方案1】:

    根据你愿意做多少工作,有两种可能的答案。

    我的第一个答案是:你不能,你需要安装 Ceylon。因为 Ceylon 不仅仅是一个在 JVM 上运行的具有良好新语法的程序。它是一个平台,它有自己的库和一个模块系统,可以即时下载依赖项等。要让它工作,你需要的不仅仅是编译的代码。

    安装 CLI 工具后,您将使用以下命令运行程序:ceylon run <name-of-your-module>

    我的第二个答案是:如果你真的希望能够独立于 Ceylon 平台运行并且愿意放弃工具和模块系统等,并且愿意通过收集必要的依赖项和分发的麻烦它们与您的程序一起使用,然后您可以使用ceylon classpath <name-of-your-module> 命令获取您的程序正在使用的所有依赖项的列表。

    然后您可以使用com.redhat.ceylon.compiler.java.runtime.Main 入口点运行它。

    可以在网站上找到详细说明:http://www.ceylon-lang.org/documentation/1.1/reference/interoperability/ceylon-on-jvm/

    【讨论】:

    • 非常感谢您的回答!将方法main() 重命名为run() 后,ceylon run 命令有效。 ceylon classpath 命令打印 quite some text。消息Module com.redhat.ceylon.dist not found in the following repositories 有什么需要担心的吗?另外,输出中有两个.car文件,我可以忽略它们吗?
    • 如果你使用 --run 命令行选项,你不需要将函数命名为“run”。
    • @GavinKing 有没有办法减少这个简单的锡兰项目的依赖数量? Here 是一种更易于阅读的依赖关系。我什至无法在没有异常的情况下删除 JavaScript 编译器:-(
    猜你喜欢
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 2014-02-21
    • 2011-06-16
    相关资源
    最近更新 更多