从命令行使用 jar 依赖项编译 Kotlin
Compile Kotlin with a jar dependency from a command line
我有一个混合了 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 编译我的项目,但无法使命令行脚本工作。
这是我尝试过的方法:
将 jar 添加到 CLASSPATH。不起作用。 Kotlin 编译器看不到它。它可能会忽略 CLASSPATH。
将 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
参数的参数必须用冒号 (:) 分隔,而不是 space。以下工作正常:
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/
我有一个混合了 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 编译我的项目,但无法使命令行脚本工作。
这是我尝试过的方法:
将 jar 添加到 CLASSPATH。不起作用。 Kotlin 编译器看不到它。它可能会忽略 CLASSPATH。
将 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
参数的参数必须用冒号 (:) 分隔,而不是 space。以下工作正常:
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/