使用命令行中的jar依赖项编译Kotlin

时间:2016-02-24 12:38:36

标签: command-line compilation 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库,因此在jgrapht 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/

  3. 然后我收到以下错误:

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

    我做错了什么?

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

1 个答案:

答案 0 :(得分:2)

碰巧,我在发布问题后立即找到了问题。 -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/