我如何从终端 运行 Ceylon Eclipse 项目?

How do I run Ceylon Eclipse projects from the terminal?

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

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

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

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

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

好像只有一个class文件:

~/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.run(URLClassLoader.java:372)
    at java.net.URLClassLoader.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 项目?或者这是不可能的?

好吧,有两种可能的答案,具体取决于您愿意做多少工作。

我的第一个回答是:你不能,你需要安装 Ceylon。因为 Ceylon 不仅仅是关于在 JVM 上使用新语法 运行ning 的程序。它是一个平台,它有自己的库和模块系统,可以即时下载依赖项等。要使其正常工作,您需要的不仅仅是编译代码。

安装 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/