Wie importiert man korrekt .java Files zu einem Android Project in Android Studio

  • Hallo zusammen


    Folgende Situation:


    Ich besitze bereits ein auf dem PC lauffähiges Java-Projekt in Eclipse und möchte nun die Klassen davon für eine Android App verwenden. Meine Idee war es die Klassen als eine zusätzliche Library in das Projekt einzubinden.


    Das Problem an der ganzen Sache ist aber, dass ich nicht weiss wie man das auf eine korrekte Art in Android Studio macht. Ich habe bereits im Netz danach gesucht und erfuhr, dass man über File->New->New Module->Java Library ein neues Modul machen könnte. Dort drin wird auch Standardmässig gerade eine MyClass.class Datei erzeugt. Danach müsste man nur noch unter File->Project Structure-> bei Modules auf app->Dependencies-> grünes +-> und dann das erstellte Modul auswählen. In das Paket des Ordners könnte man dann seine Klassen kopieren und auch neue Packages machen wurde weiter beschrieben.


    Ich hab dann in der onCreate() Methode zu Testzwecken ein Objekt vom Typ MyClass erzeugt. Im Editor scheint er ohne Probleme das Package mit samt der Class importieren zu können. Nur wenn ich dann das Ding kompilieren möchte, um es im Emulator zu testen, bekomme ich folgenden Fehler:



    Error:Execution failed for task ':app:preDexDebug'.
    > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_45\bin\java.exe'' finished with non-zero exit value 1


    Ist das oben beschriebene Vorgehen überhaupt korrekt? Falls nicht wie importiere ich korrekte meine .class Files? Falls ja wir kriege ich diesen Error weg.


    Ich wäre euch wirklich sehr dankbar wenn ihr mir helfen könnten ich suche schon Stunden nach Lösungen und komme einfach nicht weiter ||

  • Ich möchte aber .Java Files in eine Library stecken und sie nicht als .Jar hinzufügen, was Thema deines verlinkten Threads ist. Das sollte doch möglich sein? Ich kann mir nicht vorstellen dass ich der einzige bin, der jemals sowas tun wollte. Trotzdem danke schon mal für dein Input...

  • etwas in einem jar in ein softwareprojekt hinzuzufügen sollte nur in den schlimmsten notfällen gemacht werden. Jedesmal wenn sich was am sourcecode ändert, musst du das jar ersetzen, grausam.


    Du machst ein android projekt A und ein java projekt B (das kann aber auch ein zweites android projekt sein). In Projekt A entwickelst du deine app und möchtest nun aber bestimmte ausgelagerte Funktionalitäten nutzen die du in Projekt B gepackt hast. Wenn Projekt B ein Java Projekt ist, sollte es genügen wenn du es zum build path hinzufügst. Wenn Projekt B ein Android Projekt ist, musst du unter den eigenschaften > Android unten projekt B als "isLibrary" markieren und in Projekt A unter Eigenschaften > Android, unten Projekt B hinzufügen. Das gilt aber nur für Eclipse, wie es bei AndroidStudio ist weiß ich nicht.

  • Danke für deine Antwort. Werde das sicher mal ausprobieren.


    Ich habe jetzt eine andere Möglichkeit gefunden, die eigentlich naheliegend war aber meiner Meinung nach irgendwie nicht sauber oder zumindest sicher nicht effizient ist :)


    Ich habe vorher im gleichen Verzeichnis wie die MainActivity ist ein neues Paket definiert und dort die Klassen (.Java-Files) rein kopiert. Das hat Android Studio aber irgendwie nicht gefressen. Ich konnte auch mit dem richtigen Paket Import nicht auf die Klassen zugreifen. Lediglich Klassen die ich über New->Class generiert habe, konnte ich in MainActivity nutzen. Ich habe nun also alle meine Klassen nochmals neu definiert im Paket und einfach über Copy-Paste den Source-Code aus dem Editor von Eclipse rein kopiert. So konnte ich auf die erstellten Klassen zugreifen aus der MainActivity.


    Ich weiss nicht ob Android Studio im Hintergrund noch zusätzliche Operationen durchführt oder Verknüpfungen erstellt so dass ein einfaches rein kopieren der Files nicht funktioniert.


    Was ich ausserdem noch festgestellt habe ist, dass ich die Default Methoden der Interfaces nicht mehr nutzen kann da Android anscheinend noch nicht Java8 unterstützt. Ich könnte mir deshalb gut vorstellen, dass der anfangs beschriebene Ablauf zur Erzeugung eines Moduls durchaus korrekt ist und es bei mir zur Fehlermeldung kam wegen den Default Methoden des Interfaces. Ich meinte mich sogar daran zu erinnern das er genau beim kompilieren eines solchen Interfaces mit der Fehlermeldung kam.

  • etwas in einem jar in ein softwareprojekt hinzuzufügen sollte nur in den schlimmsten notfällen gemacht werden. Jedesmal wenn sich was am sourcecode ändert, musst du das jar ersetzen, grausam.

    Wie kommst du denn darauf ?? Klar bist du flexibler wenn du uncompilierte Klassen als "Library" verwendest, aber wieso sollte ich meine Library nicht mehr verwenden können wenn sich mein Sourcecode verändert ??


    z.B. Apache xmlbeans.jar


    nutze ich schon ewig, und musste sie noch nie ersetzen...

  • ich sagte nicht das du es nicht mehr verwenden kannst, aber es ist dann eben nicht mehr der aktuelle code der library.
    Du musst dann händig ein neues jar erzeugen und einbinden.


    Du bist immer flexibler wenn du sourccode projekte in dein Projekt einbindest. Externe Bibliotheken oder natives müssen halt manchmal sein, aber ich hab gelernt sowas zu vermeiden, gerade weil es ärgerlich ist, wenn in solchen dann Bugs auftreten.

Jetzt mitmachen!

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