Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从命令行编译Kotlin和Java混合代码_Kotlin - Fatal编程技术网

从命令行编译Kotlin和Java混合代码

从命令行编译Kotlin和Java混合代码,kotlin,Kotlin,我想开始向我的Java项目添加一些Kotlin。要做到这一点,我需要能够从命令行编译Java和Kotlin文件,这与不同类型的文件相互依赖无关,例如A.Java依赖于B.kt,而B.kt又依赖于C.Java 有没有办法不用Gradle、Maven等来实现这一点 编辑以澄清感谢@Nikita指出我不清楚是否希望java和Kotlin文件都位于同一源代码树中要实现这一点,您需要运行两个步骤 运行kotlinctargeting*.kt文件。在类路径上添加所有必需的java源。注意目的地的位置 运行j

我想开始向我的Java项目添加一些Kotlin。要做到这一点,我需要能够从命令行编译Java和Kotlin文件,这与不同类型的文件相互依赖无关,例如A.Java依赖于B.kt,而B.kt又依赖于C.Java

有没有办法不用Gradle、Maven等来实现这一点


编辑以澄清感谢@Nikita指出我不清楚是否希望java和Kotlin文件都位于同一源代码树中

要实现这一点,您需要运行两个步骤

  • 运行
    kotlinc
    targeting
    *.kt
    文件。在类路径上添加所有必需的java源。注意目的地的位置
  • 运行
    javac
    targeting
    *.java
    文件。将步骤1创建的
    *.class
    文件添加到类路径
  • 结果是两个步骤中的
    *.class
    文件的组合


    下面是一篇关于的文档,请记住首先编译Kotlin,然后从第一步开始使用Kotlin构建类路径编译Java

    简单地说:

    1. kotlinc ./src/* -d ./buildTmp
    2. javac ./src/**.java -d ./buildTmp -classpath ./buildTmp
    

    为什么不使用构建工具呢?我也很感兴趣,因为我想在内存中编译混合的java/kotlin源文件@Ben Haiton你有什么最新消息吗?嗯,我无法让你的解决方案发挥作用。如果我运行类似于:
    kotlinc src/***.kt-classpath src/***.java-d dist
    的程序,那么我会得到一个类似于:
    error:source条目不是Kotlin文件:src/java/SomethingElse.java
    。似乎有效的是
    kotlincsrc/**/-d dist
    ,后面是javacSorry。我不认为在一个源代码树中混合了kotlin和java文件。谢谢你的跟进