我使用Ceylon Eclipse插件编写了一个简单的Hello World程序:
以下是源代码,以防任何人想要快速重现问题:
shared void main() {
String omg = (process.arguments.first else "nothing");
print("You wrote ``omg``, you silly programmer!");
}
现在,我可以在Eclipse中运行这个程序。但是如何从终端运行它?
我没有安装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项目?或者这不可能吗?
答案 0 :(得分:4)
根据您愿意做多少工作,有两种可能的答案。
我的第一个答案是:你不能,你需要安装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/