Kotlin in Eclipse verwenden?

  • Hallo zusammen,


    ich habe mir schon vor längerer Zeit ein paar Java-Klassen gebaut, mit denen ich meine Apps auch in Eclipse testen kann. Weil ich jetzt neulich auf Kotlin umgestiegen bin, will ich das auch gerne bei meinen Kotlin-Apps weiter benutzen.


    Mein Problem ist jetzt, dass ich in Eclipse schon das Kotlin-Plugin installiert habe und in meinem Projekt auch die Kotlin Libraries etc. vorhanden sind, ich es aber nicht schaffe, eine Kotlin-Datei zu starten:


    Mein erster Test war folgende Datei:

    Code: KnightAndDayApplication.kt
    package de.rsdevstudio.knightandday
    
    
    fun main(args: Array<String>) {
       println("Hello, World!")
    }


    Das habe ich zwischendurch (kA, wie) zum laufen bekommen, aber jetzt im Moment habe ich wieder diese Fehlermeldung:
    Error: Could not find or load main class de.rsdevstudio.knightandday.KnightAndDayApplicationKt
    Caused by: java.lang.ClassNotFoundException: de.rsdevstudio.knightandday.KnightAndDayApplicationKt



    Und selbst, als ich diesen einfachen Code zum laufen bekommen hatte, sobald ich die MainActivity meiner App dort eingebunden habe, so, wie ich es auch bei meinen Java-Apps gemacht habe, kam im Prinzip dieselbe Fehlermeldung, nur dass da dann "MainActivity" als Caused by stand.


    Meine Vermutung ist, dass Eclipse irgendwie die .kt Dateien nicht in .class Dateien umwandelt, obwohl es das tun sollte. Vielleicht ist das einfach nur eine Einstellung bei den Run Configurations. Kennt sich da jemand von euch aus?

  • Hallo
    Man kann zwar in Eclipse auch Android Programme Schreiben nur ist das seit geraumer zeit nicht mehr zu empfehlen. Seit Android 6 wird das ADT Plugin für Eclipse nicht mehr unterstützt eine Aktuelle App wirst du damit nicht mehr erstellen können auch nicht mit Kotlin .



    Klar gibt es ein Plugin um mit Eclipse in Kotlin zu arbeiten nur für Android fehlt dir das SDK. Das war das ADT was es nicht mehr gibt.



    Aber in Adroid gibt es keine „main“ Methode Funktion das ist für ein Desktop Programm, der Programm Start nicht für Android . Android ist ein FrameWork und da ist der Programm start die Activity und die hat keine „main“ Methode weder in Java noch in Kotlin.



    Du kannst zwar im Studio eine Main Methode in Java oder auch in Kolin erstellen und diese auch mit dem grünen Pfeil starten nur ist es in diesem Moment keine Activity die von Android gestartet werden kann. Du benutzt in diesem fall das Studio als wäre es die normale Intelli J IDE.



    Du kannst nicht eine Desktop Anwendung und Android mischen. Auch wenn es für dich im studio so aussieht das das geht. Dann schaue mal oben was bei Build steht wenn du auf den grünen Pfeil bei der Main Funktion Klicks und somit die Main startest als währe es eine Desktop Anwendung. Da steht mit Sicherheit nicht APP APK



    Eclipse und Android macht absolut keinen Sinn mehr.

  • Hi jogimuc,


    ok, also eine komplett funktionierende App werde ich mit Eclipse nicht machen können, egal ob mit Java oder Kotlin. ^^


    Was mich aber bei meinem Problem oben stutzig macht, ist, dass es ja theoretisch von Android unabhängig ist. Ich habe ja so gesehen schon eine funktionierende Java-Application, die in Eclipse läuft, aber wenn ich da jetzt eine Kotlin-Datei hinzufüge und die ausführen will, gibt es Probleme, obwohl ich das Kotlin Add-On installiert und die notwendigen Libraries meinem Projekt hinzugefügt habe.


    Ich hatte auch schon versucht, zuerst ein neues Kotlin-Projekt anzulegen, und da dann meine Java-Klassen einzufügen, aber das führt irgendwie alles zu demselben Fehler, deswegen habe ich ja die Vermutung, dass man Eclipse noch irgendwie sagen muss, dass sowohl Java- als auch Kotlin-Dateien kompiliert werden müssen, wenn das Projekt ausgeführt wird.

  • Hallo mal eine grundlegende Frage.


    Unter welcher API version willst du mit Eclipse arbeiten ? wie gesagt ab der API (SDK) Version 23 ist es vorbei mit dem ADT. Eine App mit SDK 22 unterstützt das ADT noch .Eein ordentlicher Build Prozess ab 22 findet dann nicht mehr statt.


    Das ADT was den Build Prozess steuert und die SDK Bibliotheken hinzubindetkann mit Kotlin nicht umgehen.


    Es geht zwar auch in Eclipse mit Kotlin zu arbeiten und auch da Java Klassen einzubinden aber eben nur für eine Desktop Anwendung .


    Java und auch Kotlin benutzen zwar Byte Code aber bei Andoid wird aus Lizenzrechtlichen Gründen nicht der gleiche Byte Code benutz wie zb auf dem PC.


    Es wird zuerst Java in Bytecode Übersetzt und dann in den Dalvik Bytecode der dann auf Android Läuft und dazu wird unter anderen auch das SDK gebraucht.


    Bei Kotlin finden noch zwischen schritte statt die das ADT von Eclipse nicht kann.



    Eine Kotlin datei wird normalerweise nicht in eine .calss übersetzt der apk Builder erzeugt dann aus allen einzelnen Dateien das DEX Delvik ByteCode. Oder auch die neuere Variante Art eine neuere runtime Umgebung für Android. Das kann das ADT auch nicht.




    Kurtz um du kannst Kotlin Eclipse und Android vergessen.

  • Mal noch was am Rande. Ist es dir denn überhaupt gelungen eine in kotlin geschriebene activity zu kompilieren und läuft die auch?
    Die sdk version lassen wir mal außen vor. 22 kann ja das ADT.


    Ich meine eine richtige kotlin Klasse abgeleitet von Activity ohne einer Main Methode.
    Mit Layout, Manifest.......



    Code
    class MyActivity : AppCompatActivity() {
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity)
      }
    }

    Das wäre ein absulut einfaches android activity in kotlin.
    Wass du hast ist kotlin aber nicht für Android.


    Bei dir wird sozusagen ein anderer build Prozeß gestartet als er unter Android üblich ist.
    Deshalb giebt es auch das ADT. Damit eclipse das such kann. Und das ist veraltet und wird mit Sicherheit mit kotlin nicht klar kommen. Zu dem Zeitpunkt als das ADT nicht mehr weiter Entwicklet wurde war kotlin wol noch gar nicht richtig am Start. Kannst das ja mal nachschauen.


    In Android studio ist das alles schon integriert.
    Bei dem normalen intelli j musst du auch ein plugin installieren damit es android kann. Das ist auch bei anderen IDE s so.

  • Wie schon gesagt bezieht sich mein Problem nicht direkt auf die Entwicklung einer Android App, sondern halt auf das Problem, dass ich in Eclipse einen Fehler bekomme, wenn ich ein Projekt habe, dass sowohl Java als auch Kotlin Dateien beinhaltet. ;)

  • Hallo hier mal ein einfaches Beispiel was ich in Eclipse erstellt habe.
    Das ist eine einfache Anwendung nicht für Android. Mit einer Java Klasse.
    Die auch aus Einer Kotlin Kasse aufgerufen wird.


    Zu Eclipse muss ich leider sagen das ich die Bedienung nicht besonders finde und deshalb bei IntelliJ bleibe.
    Eine actuelle Android App geht damit auch nicht ganz geich ob Java oder Kotlin.


    Eclipse macht nur für Dektop sinn.
    Aber das get mit Intelli J auch.


    Solten deine Java Datein nicht im selben Package sein denke an den Import.

  • Hi Jogimuc,


    ich habe dein Beispielprojekt gerade in mein Eclipse geladen, bekomme da aber dieselbe Fehlermeldung, die ich auch bei meinem Projhekt bekomme:


    Code
    Error: Could not find or load main class kt.KotlinKlasseKt
    Caused by: java.lang.ClassNotFoundException: kt.KotlinKlasseKt


    Bei genauerem hinsehen ist mir noch aufgefallen, dass bevor die Meldung oben kommt, kurz noch eine andere Meldung aufblinkt:



    Sagt dir das irgendwas? Ich habe die aktuellste Eclipse-Version und Heute kam auch noch ein Update zu dem Kotlin-Plugin, das ich auch installiert habe, trotzdem scheint das nicht zu funktionieren. Ich benutze übrigens Windows 10, falls das eine Rolle spielt. ^^

  • Stimmt zwar was Xcreen sagt das es einfacher ist mir intelli j zu arbeiten. Habe ich übrigens auch schon gesagt.
    Nur löst das sicherlich auch nicht dein Problem.


    Denn du hastest ja auch Probleme mit android studio und kotlin. Wenn ich mich richtig erinnere. Also auch mit intelli j.
    An eclipse oder intelli j wird das nicht ligen.



    Als erstes würde mich interessieren unter mit welcher java Version du arbeitest.


    Benutze Java 8. Solltest du 10, sogar 11 verwenden hast du den Fehler schon gefunden.


    Ich arbeite mit 8 ohne Probleme.


    Eclipse und kotlin geht erst ab android 8 und momentan auch nur damit.

  • Ok, ich glaube, wir kommen dem Fehler so langsam aber sicher auf die Spur. :D


    Ich hatte in dem Eclipse-Project zwar "JavaSE 1.8" ausgewählt, aber bei genauerer Betrachtung festgestellt, dass er das "JavaSE 1.8" trotzdem vom jdk12 genommen hat, weil ich gar kein anderes JDK installiert hatte.


    Ich habe jetzt die aktuelle Version vom jdk 1.8 installiert (jdk1.8.0_221) und als Standard für meinen Workspace eingestellt. Meine normalen Java-Projekte laufen wie erwartet noch normal, aber bei dem gemischten Projekt von dir bekomme ich jetzt beim Ausführen diese Meldung:



    Ein Project Clean hat leider nichts geändert.
    Danach habe ich noch versucht, ein neues Kotlin-Projekt anzulegen und es genauso aufzubauen, wie deines. Solange ich nur die Kotlin-Klasse verwende, läuft alles normal:


    Java: HelloKotlin.kt
    package kt
    
    
    fun main(args: Array<String>): Unit {
    	println("Hello, Kotlin!")
    }

    Sobald ich aber meine Java-Klasse einbauen will, erscheint beim Ausführen wieder dieselbe Meldung wie oben:


    Java: HelloKotlin.kt
    package kt
    
    
    fun main(args: Array<String>): Unit {
    	val javaHello = HelloFromJava(); //Das ist eine Java Klasse
    	println("Hello, Kotlin!")
    }
  • Dieser Fehler tritt auf, wenn du mit einer höheren JDK compilst und es mit einer niedrigeren JDK ausführst.


    Ich würde sagen, da stimmt noch was nicht mit deiner JDK/JRE Konfiguration.


    Am besten mal alle JDKs/JREs deinstallieren. Die Java-Umgebungsvariable löschen. (so das nichts mehr kommt, wenn du auf der Konsole java -version aufrufst.)
    Dann die JDK8 installieren und sicherstellen das die Java-Umgebungsvariable passt (java -version sollte jetzt die passende Version anzeigen).
    In Eclipse dann damit compilen und ausführen.

  • OK, also ich habe jetzt alle JREs und JDKs, die ich installiert hatte, deinstalliert und den Rechner neu gestartet. Wie erwartet ging Eclipse ohne Java überhaupt nicht an, weil es kein JRE finden konnte. Dann habe ich nur das jdk1.8.0_221 wieder installiert, als Standard für Eclipse ausgwewählt und ein nochmal ein neues Kotlin-Projekt erstellt, damit wirklich alles neu ist.
    Leider bekomme ich ganz genau denselben Fehler, sobald ich eine Java-Klasse initialisieren will. :(


    Update

    Sooooo. Ich habe jetzt mal aus Frust einfach nochmal alles Java, was ich hatte, deinstalliert, und auch Eclipse komplett gelöscht. Nach einem Neustart habe ich dann zuerst nur das jdk1.8.0_221 installiert, neu gestartet, und dann die aktuelle Version Eclipse installiert. Dann habe ich da drin über den Marketplace das Kotlin-Plugin installiert und ein neues Kotlin-Projekt angelegt.
    Und siehe da, jetzt funktioniert es. :D :D :D
    Was genau jetzt den Fehler verursacht hat kann ich leider nicht sagen, vielleicht hatte ich irgendwo in irgendwelchen Einstellungen irgendwas verstellt, wer weiss. Das wichtigste ist, das es jetzt geht. Vielen Dank für eure Hilfe. B-)

  • Hallo du soltest nur java 8 installiert haben und zwas die se Version.


    Mit deinen Klassen dann zeige und mal wie du das machst. Das was du in deinen letzten Code hattest ist erstens keine java klasse und auch keine kotlin Klasse. Das ist einfach nur stuckturirtes kotlin.


    Zeige mal deinen Code. Bei mir mit nur java 8 Ko nte ich mein Projekt ohne Probleme starten.


    Noch mal nur ein Java und da brauchst du bei der Installation von eclipse auch gar nichts ändern. Die neuen java Versionen lösche die und lasse die auch gelöscht.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!