用命令行的jar依赖关系编译Kotlin

我有一个混合了Java和Kotlin文件的项目。 直到最近我已经成功地从命令行使用这样一个简单的脚本编译它:

export CLASSPATH=java/main # compile Kotlin files find java/main/ -type d \ | xargs kotlinc-jvm -cp java/lib/google-collections-0.9.jar -d java/main/ # compile Java files find java/main/ -name '*.java' | xargs javac 

然后我开始使用JGraphT库,所以创建了jgraphi jar的依赖。 该库是从Kotlin文件引用的。 我仍然可以从IntelliJ编译我的项目,但无法使命令行脚本工作。

以下是我所尝试的:

  1. 将jar添加到CLASSPATH。 不起作用。 Kotlin编译器没有看到它。 它可能会忽略CLASSPATH。

  2. 添加jar作为另一个-cp参数:

    find java/main/ -type d \ | xargs kotlinc-jvm \ -cp java/lib/google-collections-0.9.jar \ java/lib/jgrapht-core-0.9.1.jar \ -d java/main/

然后我得到以下错误:

 error: source entry is not a Kotlin file: java/lib/jgrapht-core-0.9.1.jar 

我究竟做错了什么?

这是一个小型的爱好项目,主要是与Kotlin玩耍。 这就是为什么我没有使用任何构建系统,如Ant或Gradle。 (另一个原因是我没有任何经验,他们看起来很可怕:))

碰巧发现问题后,我立即自己发现了问题。 -cp参数的参数必须用冒号(:)分隔,而不是空格。 以下工作很好:

 find java/main/ -type d \ | xargs kotlinc-jvm \ -cp java/lib/google-collections-0.9.jar:java/lib/jgrapht-core-0.9.1.jar \ -d java/main/ 
    Interesting Posts