2016-02-24 72 views
1

我有一個混合了Java和Kotlin文件的項目。直到最近我已經成功地在命令行中使用一個簡單的腳本,這樣編譯它:從命令行編譯與jar依賴的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罐子扶養。該庫是從Kotlin文件引用的。我仍然可以從IntelliJ編譯我的項目,但無法使命令行腳本正常工作。

這是我曾嘗試:

  1. 罐子添加到CLASSPATH。不起作用。 Kotlin編譯器沒有看到它。它可能會忽略CLASSPATH。

  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/

然後我得到以下錯誤:

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

我在做什麼錯?

這是一個小型的愛好項目,主要與Kotlin玩耍。這就是爲什麼我沒有使用任何構建系統,比如Ant或Gradle。 (另一個原因是我沒有任何這些經驗,他們看起來很可怕:))

回答

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/ 
+0

正確,它使用當前操作系統路徑分隔符。 –