2017-05-15 44 views
9

Android ile ilgili benzer bir soruya benzer this'u buldum, ancak Maven ile oluşturulmuş bir araç olarak sade Java kullanıyorum. Yeni bir soru yayınlamanın daha iyi olduğunu düşünüyorum.Java'da Kotlin sınıfını kullanma: Sembol bulamıyor

Bir Kotlin sınıfı oluşturduk Ben MyKotlinClass.class gibi Java sınıfından başvurmak için çalışıyorum hangi. IntelliJ Idea'deki derleme iyi sonuç verirken Maven yapımı başarısız oluyor. Zaten Kotlin eklentisi maven eklediğiniz: yardımcı olmuyor Ancak

 <plugin> 
      <groupId>org.jetbrains.kotlin</groupId> 
      <artifactId>kotlin-maven-plugin</artifactId> 
      <version>${kotlin.version}</version> 
      <executions> 
       <execution> 
        <id>compile</id> 
        <phase>compile</phase> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>test-compile</id> 
        <phase>test-compile</phase> 
        <goals> 
         <goal>test-compile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project app: Compilation failure 
[ERROR] MyClassLinkingKotlin.java:[100,40] error: cannot find symbol 

çizgi/sütun tam sembolü MyKotlinClass.class ifade eder.

System.err.println(MyKotlinClass.class) 
+1

Lütfen bize 'MyClassLinkingKotlin.java' satırını (özellikle [line, col] olduğunu düşünüyorum) – ThrowingSpoon

+0

Soruya eklendi. –

+0

Olası bir kopyası [Java'dan bir Kotlin sınıfını başlatmaya çalışırken hata] (http://stackoverflow.com/questions/43834360/error-trying-to-instantiate-a-kotlin-class-from-java) – Ilya

cevap

19

Kişisel Maven yapılandırma Kotlin derleyici eklenti ekler, ancak Java derleyici Kotlin derleyicisi sonra çalışacak şekilde Java derleyici eklenti yürütme ayarlanmaz: Böyle kullanırken bile başarısız olur. Bu nedenle, Java derleyicisi Kotlin'den önce çalışır ve Kotlin ile derlenmiş sınıfları görmez.

<build> 
    <plugins> 
     <plugin> 
      <artifactId>kotlin-maven-plugin</artifactId> 
      <groupId>org.jetbrains.kotlin</groupId> 
      <version>${kotlin.version}</version> 
      <executions> 
       <execution> 
        <id>compile</id> 
        <goals> <goal>compile</goal> </goals> 
        <configuration> 
         <sourceDirs> 
          <sourceDir>${project.basedir}/src/main/kotlin</sourceDir> 
          <sourceDir>${project.basedir}/src/main/java</sourceDir> 
         </sourceDirs> 
        </configuration> 
       </execution> 
       <execution> 
        <id>test-compile</id> 
        <goals> <goal>test-compile</goal> </goals> 
        <configuration> 
         <sourceDirs> 
          <sourceDir>${project.basedir}/src/test/kotlin</sourceDir> 
          <sourceDir>${project.basedir}/src/test/java</sourceDir> 
         </sourceDirs> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.5.1</version> 
      <executions> 
       <!-- Replacing default-compile as it is treated specially by maven --> 
       <execution> 
        <id>default-compile</id> 
        <phase>none</phase> 
       </execution> 
       <!-- Replacing default-testCompile as it is treated specially by maven --> 
       <execution> 
        <id>default-testCompile</id> 
        <phase>none</phase> 
       </execution> 
       <execution> 
        <id>java-compile</id> 
        <phase>compile</phase> 
        <goals> <goal>compile</goal> </goals> 
       </execution> 
       <execution> 
        <id>java-test-compile</id> 
        <phase>test-compile</phase> 
        <goals> <goal>testCompile</goal> </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
+0

teşekkürler çok yardımcı oldu :) – MaxG

0

Bu aynı hataya koştu, ancak doğru pom kurulum vardı:

İşte (the documentation alınan) bir karma dil projesi için doğru yapılandırmayı gösteren bir pasajı bu. Benim sorunum, bir Java sınıfını sadece src/main/java'da Kotlin dosyasını bırakan Intellij ile bir Kotlin sınıfına dönüştürdüm.

Benim için çözüm, src/main/kotlin oluşturmak ve oradaki Kotlin sınıfımı taşımak ve Java dosyalarımı src/main/java içinde bırakmaktı. Ancak, yole'nin cevabının gösterdiği maven kurulumuna kesinlikle ihtiyacın var.