Kompilieren einer dekompiliertern JAR

suseday

Mitglied
Hallo ihr Lieben,

ich befürchte, mein Beitrag wird shitstorm ernten... Aber ganz offen und ehrlich: Nein, ich kann habe keine Ahnung von Java und möchte auch nicht eclipse, netbeans etc sowie die JDK auf meinem PC für ein einziges klitzekleines Projekt installieren und mich darein einarbeiten.

Das einzigste was ich möchte, sind ein paar türkische Begriffe in einer JAR durch englische ersetzen:

Ich habe eine JAR (link http://s5.dosya.tc/server5/3ojtuq/Cad_Navigator.jar.html) welche mit einer einer App auf dem Handy kommuniziert:
https://play.google.com/store/apps/details?id=com.sdt.pccontrol&hl=en_US
um in einem CAD Programm das Handy als Maus zu benutzen.
Die JAR auf PC und die App funktionieren auch gut miteinander. Aber der Programmierer hat in der JAR aber einige türkische Begriffe eingebaut und unsere Mitarbeiter kommen damit nicht klar. Jetzt habe ich die JAR mit procyon decompiled, die beiden class dateien abgeändert (nur ein paar türkische Begriffe durch englische Begriffe ausgetauscht) und müsste jetzt die beiden .classs wieder neu kompilieren.
Laut https://www.fachinformatiker.de/topic/75647-jar-datei-bearbeiten/ müsste ich nur in eclipse ein neuen Projekt einrichten, alle Dateien aus der dekomplierten JAR einbinden, abändern und neu kompilieren.

Aber aus oben genannten Gründen würde ich das gerne um alle Fälle vermeiden. Daher meine Bitte: Gibt es hier jemand der so nett wäre und die Dateien mal eben wieder neu kompiliert? Ich könnte die geänderten Daten per message zuschicken.
Also, jemand offen dafür?

Vielen Dank schonmal,
Pete
 

mihe7

Top Contributor
ich befürchte, mein Beitrag wird shitstorm ernten... Aber ganz offen und ehrlich: Nein, ich kann habe keine Ahnung von Java
Shitstorm? Nein... Aber ganz offen und ehrlich: §§ 69c und 106 UrhG lassen mich zweifeln, dass Du hier jemanden findest.

Schreib dem Autor eine Mail, installier eine andere App oder kauf Deinen Leuten einfach eine Maus oder ein Grafik-Tablet.
 

suseday

Mitglied
Shitstorm? Nein... Aber ganz offen und ehrlich: §§ 69c und 106 UrhG lassen mich zweifeln, dass Du hier jemanden findest.

Schreib dem Autor eine Mail, installier eine andere App oder kauf Deinen Leuten einfach eine Maus oder ein Grafik-Tablet.

Ja, stimmt. Das mit dem Urheberrecht ist natürlich auch so eine Sache. Das Problem ist, dass es ein totes Projekt ist. Der Entwickler hat es 2015 zuletzt aktualisiert und reagiert nicht auf Emails.
Alternative Apps gibt es nicht und Grafik-Tablet ist für Inventor keine Option. Alternative sind natürlich die 3D Mäuse, aber diese App hier ist eine schöne Mini-Lösung. Es wird also darauf hinauslaufen, dass ein Zettel kopiert wird wo eine Vokabelliste Türkisch-Deutsch verteilt wird :-(
 
X

Xyz1

Gast
Ich würde auch sagen es wäre fast unmöglich die jar neu zu übersetzen. Ich habe auch noch nicht verstanden wieso das notwendig wäre.
 
K

kneitzel

Gast
Also mir gehen paar Dinge durch den Kopf:
a) Risikomanagement -> Es könnte ein Anwalt befragt werden, um zu klären: Könnte da ein öffentliches Interesse für eine Strafverfolgung bestehen? Kann ein Rechteinhaber einer Strafverfolgung problemlos beantragen oder gibt es da ggf. Hürden. Es könnt durchaus auf eine rein zivilrechtliche Problematik hinaus laufen und so es nur intern "verbreitet" wird, wird es da kaum einen Schaden geben so dass der mögliche Schaden ggf. tragbar sein wird. Die Eintrittswahrscheinlichkeit kann man dann noch sich überlegen und dann kann es evtl. ein gangbarer Wer sein. Aber: Wir bewegen uns hier im Bereich eines Straftatbestandes -> Auf keinen Fall ohne Rechtsanwalt und entsprechende Beratung! (Und vermutlich rät dieser auch ganz klar davon ab, aber es könnte einen Versuch wert sein!)
b) Ohne entsprechende Tools würde es technisch nicht gehen! Also Decompiler, Compiler (=> JDK), IDE (=> Ohne IDE ist das Übersetzen mehrere Sourcen noch schwerer!). Aber so da nichts gemacht wurde, um das JAR entsprechend zu schützen, würde ich dieses Vorgehen nicht als "fast unmöglich" bezeichnen sondern durchaus als gangbaren Weg. Aber wichtig: Die Sourcen müssen angepasst werden -> Wer macht das? Ohne Ahnung von Java zu haben, halte ich das für extrem schwer!

Evtl. gibt es aber noch Alternativen.
c) Es wäre denkbar, dass man das jar nicht verändert. Statt dessen versucht man die Anpassungen von außen durchzuführen. Ob und wie dies aber möglich ist hängt rein von dem Aufbau statt:
c1) So z.B. unter Windows gearbeitet wird und es um Texte der GUI geht (also z.B. Text auf einem Label oder einem Button), dann könnte es problemlos möglich sein, diesen von außen anzupassen. Man kann nach dem Fenster und dann im Fenster nach dem Control suchen und da dann eine Message mit der Aufforderung, den Text zu ändern, hin schicken. Wir haben sowas in der Vergangenheit schon gemacht (Da ging es dann aber um das Füllen von Textfeldern, Auslesen von Werten u.s.w. => Automatisierung einer Applikation). Das sollte aber auch entsprechend mit dem Text auf Controls gehen.
c2) Eine Option könnte sein, dass man das jar nicht direkt startet und statt dessen das noch einmal mit einem Wrapper umgibt. Dieser könnte dann per Reflection aktiv werden um dann ähnliche Dinge zu machen wie in a1.

Da bei beiden Lösungen das eigentliche Werk nicht verändert wird, sollte das Urheberrecht kein Thema mehr sein. ==> Anwalt! Sollte meine Einschätzung falsch sein, dann bewegt man sich ggf. wieder im Bereich einer Straftat!

Die Lösungen bei c1 / c2 setzen aber dann auch einen entsprechend fähigen Entwickler voraus. Als "Unbedarfter" ist dies nicht zu schaffen!
 

White_Fox

Top Contributor
§§ 69c und 106 UrhG
Zugegeben, das wäre mir persönlich in diesem Fall ziemlich egal. (Das UrhG war mir aber, so anständig ich sonst auch bin, schon in früher Jugend ziemlich egal.)
Solange es nur um die Sprachanpassung geht, er das nicht als seine eigene Arbeit veröffentlicht (gar noch gegen Geld), mag es ein juristisches Problem sein, aber keines was mein Gewissen in irgendeiner Weise beunruhigen würde.
Aber das ist nur meine private Meinung.

Es wird also darauf hinauslaufen, dass ein Zettel kopiert wird wo eine Vokabelliste Türkisch-Deutsch verteilt wird
Das hingegen würde ich als Beleidigung auffassen.

Andererseits: Ich würde eine echte 3D-Maus dann doch bevorzugen, oder alternativ eine normale Maus. Mit einer normalen Maus kann man z.B. in Catia sehr gut navigieren, finde ich. Und meiner Erfahrung nach werden normale Mäuse dann zu einem wirklichen Problem, wenn man zwischen mehreren CAD-Programmen wechselt (in meinem Fall: Catia <> Altium).
Dagegen kann ich mir ein Handy nur schwer als Ersatz für eine Maus vorstellen. Das kann doch nur in entzündeten Sehnen oder so enden.
 
K

kneitzel

Gast
Zugegeben, das wäre mir persönlich in diesem Fall ziemlich egal. (Das UrhG war mir aber, so anständig ich sonst auch bin, schon in früher Jugend ziemlich egal.)
Solange es nur um die Sprachanpassung geht, er das nicht als seine eigene Arbeit veröffentlicht (gar noch gegen Geld), mag es ein juristisches Problem sein, aber keines was mein Gewissen in irgendeiner Weise beunruhigen würde.
Aber das ist nur meine private Meinung.

Ich wäre da extrem Vorsichtig! Es geht hier - so wie ich es verstanden habe - um einen gewerblichen Einsatz! Soweit ich das richtig verstanden habe, reicht den Juristen das Gewerbliche. Wie du es gewerblich genutzt hast und ob Du damit Geld verdient hast, spielt dabei erst einmal keine Rolle!

Es ändert sich einiges, wenn man gewerblich etwas macht. Und spätestens, wenn es in den Bereich einer Straftat geht wäre ich vorsichtig. Wobei ein Mitarbeiter da wohl nichts machen kann, denn nur der Rechteinhaber kann die Verfolgung beantragen soweit ich es weiß (Ausnahme ganz schwerere Fälle, wenn ein öffentliches Interesse besteht).

==> Daher mein klarer Ratschlag: Bei sowas einmal einen Anwalt befragen! Gegen Einwurf kleiner Scheine beraten diese durchaus gerne und das Geld kann sehr gut angelegt sein.
 

White_Fox

Top Contributor
Ich wäre da extrem Vorsichtig!
Wie gesagt - das war nur meine persönliche Meinung zur konkreten Situation. Als Außenstehener. Wenn ich das zu verantworten hätte, würde ich da auf jeden Fall auch anders rangehen. :)

Ich kam mit normalen Mäusen in CAD-Programmen bisher immer gut zurecht, wenn ich das aber verbessern wöllte, dann wären echte 3D-Mäuse meine erste Wahl.
 
K

kneitzel

Gast
Ich habe mal aus Jux und Dollerei diese mögliche Alternative ausprobiert. Das funktioniert relativ gut, aber es gab durchaus einige Problemchen.

Die Schritte sind im Einzelnen:
a) Start der eigentlichen Jar:
Java:
sdt.remotepc.wifi.ui.MainWindow.main(new String[]{});
In diesem Fall wäre wohl auch als Parameter null gegangen oder man gibt die eigenen Startparameter weiter ...

b) Reflection nutzen, um das betreffende Fenster zu bekommen:
Java:
    private WifiConnectFrame findWifiConnectFrame() {
        for (Window window : Window.getWindows()) {
            if ("sdt.remotepc.wifi.ui.WifiConnectFrame".equals(window.getClass().getName())) {
                wifiConnectFrame = (WifiConnectFrame) window;
                return wifiConnectFrame;
            }
        }
        return null;
    }

c) Den Button bekommen:
Java:
    private JButton findButton() {
        try {
            Field buttonField = wifiConnectFrame.getClass().getField("jbStartServer");
            button = (JButton) buttonField.get(wifiConnectFrame);
            orgText = button.getText();
        } catch (NoSuchFieldException nsfe) {
            System.out.println("Couldn't find field jbStartServer: " + nsfe.getMessage());
            nsfe.printStackTrace();
        } catch (IllegalAccessException iae) {
            System.out.println("Unable to get Button: " + iae.getMessage());
            iae.printStackTrace();
        }
        return button;
    }

Jetzt wäre es etwas einfaches, einfach den Text regelmäßig zu prüfen und neu zu setzen. Leider prüft er beim Klick den Text, daher müssen wir erst den Text zurück setzen. Daher merken wir uns beim umsetzen den alten Text. Und dann müssen wir natürlich dafür sorgen, dass bei einem Click erst der Text zurück gesetzt wird und dann die eigentliche action durchgeführt wird. Dazu habe ich die alten ActionListener gelöscht und separat gemerkt und dann einen eigenen Action Listener eingebaut:
Java:
    public void setActionListeners() {
        for (ActionListener actionListener: button.getActionListeners()) {
            button.removeActionListener(actionListener);
            oldActionListener.add(actionListener);
        }

        button.addActionListener(e -> {
            shouldPerformButtonAction = true;
            System.out.println("Triggered event ...");
        });
    }

Da wir unterschiedliche Threads haben, habe ich jetzt im UI Thread nur ein Flag gesetzt. Die Abhandlung läuft dann wieder im Haupt-Thread der Applikation:
Java:
    private void performButtonAction() {
        System.out.println("Doing old events ...");
        shouldPerformButtonAction = false;
        String oldText = button.getText();
        button.setText(orgText);
        EventQueue.invokeLater(() -> {
            for (ActionListener listener: oldActionListener) {
                listener.actionPerformed(null);
            }
        });
    }
Also Flag zurücksetzen, Button Text zurück setzen und dann dafür sorgen, dass im UI Thread die alten ActionListener aufgerufen werden. Hier mit dem Parameter als null. Da hätte man evtl. sich das alte Event merken können um das dann zu verwenden ... Aber da es nicht genutzt wird, ist null zumindest hier ok.

Der ganze Code, den ich dann für Testzwecke mal geschrieben habe und der noch etwas mehr enthält, wie z.B. die Erkennung, wann das Fenster geschlossen wird, ist somit:
Java:
import sdt.remotepc.wifi.ui.WifiConnectFrame;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Scanner;

public class CadNavigatorWrapper {

    private static Scanner IN = new Scanner(System.in);

    private WifiConnectFrame wifiConnectFrame;
    private JButton button;
    private String orgText;
    private boolean shouldPerformButtonAction;
    private java.util.List<ActionListener> oldActionListener = new ArrayList<>();
    private boolean closing;

    private WifiConnectFrame findWifiConnectFrame() {
        for (Window window : Window.getWindows()) {
            if ("sdt.remotepc.wifi.ui.WifiConnectFrame".equals(window.getClass().getName())) {
                wifiConnectFrame = (WifiConnectFrame) window;
                return wifiConnectFrame;
            }
        }
        return null;
    }

    private void sleep(long duration) {
        try {
            Thread.sleep(duration);
        } catch (InterruptedException ex) {
            System.err.println("Sleep interrupted: " + ex.getMessage());
            ex.printStackTrace();
        }
    }

    private JButton findButton() {
        try {
            Field buttonField = wifiConnectFrame.getClass().getField("jbStartServer");
            button = (JButton) buttonField.get(wifiConnectFrame);
            orgText = button.getText();
        } catch (NoSuchFieldException nsfe) {
            System.out.println("Couldn't find field jbStartServer: " + nsfe.getMessage());
            nsfe.printStackTrace();
        } catch (IllegalAccessException iae) {
            System.out.println("Unable to get Button: " + iae.getMessage());
            iae.printStackTrace();
        }
        return button;
    }

    public void setActionListeners() {
        for (ActionListener actionListener: button.getActionListeners()) {
            button.removeActionListener(actionListener);
            oldActionListener.add(actionListener);
        }

        button.addActionListener(e -> {
            shouldPerformButtonAction = true;
            System.out.println("Triggered event ...");
        });
    }

    private void performButtonAction() {
        System.out.println("Doing old events ...");
        shouldPerformButtonAction = false;
        String oldText = button.getText();
        button.setText(orgText);
        EventQueue.invokeLater(() -> {
            for (ActionListener listener: oldActionListener) {
                listener.actionPerformed(null);
            }
        });
    }

    private void run() {
        sdt.remotepc.wifi.ui.MainWindow.main(new String[]{});

        do {
            sleep(100);
            findWifiConnectFrame();
        } while (wifiConnectFrame == null);

        sleep(100);
        findButton();

        setActionListeners();

        wifiConnectFrame.addWindowStateListener(new WindowStateListener() {
            @Override
            public void windowStateChanged(WindowEvent e) {
                if (e.getNewState() == WindowEvent.WINDOW_CLOSING) {
                    closing = true;
                    System.out.println("Window is closing!");
                }
            }
        });

        while (!closing) {
            handleButtonText();
            if (shouldPerformButtonAction) performButtonAction();
            sleep(100);
        }
        System.out.println("Done ...");
    }

    public static void main(String[] args) {
        CadNavigatorWrapper wrapper = new CadNavigatorWrapper();
        wrapper.run();
    }

    public void handleButtonText() {
        switch(button.getText()) {
            case "Başlat":
                orgText = button.getText();
                button.setText("Baslat Neu!");
                break;

            case "Durdur":
                orgText = button.getText();
                button.setText("Durdur Neu!");
                break;
        }
    }
}

Das also einfach einmal, wie man so einen Workaround bauen könnte ohne dass man den eigentlichen Code verändern müsste. Das sollte dann nach meinem Verständnis die Problematik mit dem Urhebergesetz vermeiden.
 
X

Xyz1

Gast
Das also einfach einmal, wie man so einen Workaround bauen könnte ohne dass man den eigentlichen Code verändern müsste. Das sollte dann nach meinem Verständnis die Problematik mit dem Urhebergesetz vermeiden.
Naja falls das mal vor Gericht gehen sollte, wovon ich eigentlich nicht ganz ausgehe, dann geht es um die schöpferische Höhe des Codes, also ob diese bei einem nicht bereits geschützten Werk so hoch wäre dass dieses nicht mehr gemeinfrei wäre. Falls aber die Schöpfungshöhe gegeben ist so ist es eigentlich unrelevant den Code nur ein bisschen zu verändern.

Verbessert mich, wenn ich falsch liege.
 
K

kneitzel

Gast
Naja falls das mal vor Gericht gehen sollte, wovon ich eigentlich nicht ganz ausgehe, dann geht es um die schöpferische Höhe des Codes, also ob diese bei einem nicht bereits geschützten Werk so hoch wäre dass dieses nicht mehr gemeinfrei wäre. Falls aber die Schöpfungshöhe gegeben ist so ist es eigentlich unrelevant den Code nur ein bisschen zu verändern.

Verbessert mich, wenn ich falsch liege.
Die Schöpfungshöhe sehe ich durchaus als gegeben an, denn ansonsten wäre es ja trivial, das mal eben selbst zu schreiben. Und den Ansatz hat zumindest hier noch niemand gebracht ("Vergiss die Anpassung - schreib das doch einfach einmal selbst"). Und wenn es geschützt ist, dann ist es erst einmal nicht relevant, was oder wie viel Du änderst.

Und wenn man es einmal genau nimmt: Mit welchem Recht gibt jemand das unveränderte JAR File weiter? Auch wenn es nur Firmenintern ist: Woher hast Du das Recht dazu? Nur weil die Datei so herunter zu laden war, gibt Dir das nicht das Recht zu einer (Firmeninternen) Redistribution. Daher wäre es sogar streng genommen so, dass jeder Anwender das eigentliche JAR selbst herunter laden muss (Dazu wird man ja aufgefordert bei der App). Und wenn der Download eines Tages nicht mehr geht, dann steht man dumm da. Die Homepage scheint es ja schon nicht mehr zu geben ... :)

Aber wie bereits ausgeführt: Nur der Rechteinhaber wird da aktiv werden können. Ein öffentliches Interesse, das die Staatsanwaltschaft benötigt, sehe ich nicht als gegeben an. Aber wenn es sogar mehrere Jahre Haft geben kann, dann ist die Frage tatsächlich, ob das Risiko es wert ist. Was kostet eine 3D Maus? Was spart dieser Hack mit dem Smartphone an Geld?
Selbst die Entwicklung des Workarounds würde ich nicht einmal vom Aufwand her in Betracht ziehen muss ich ehrlich gestehen...
 

Phash

Top Contributor
Die Schöpfungshöhe sehe ich durchaus als gegeben an, denn ansonsten wäre es ja trivial, das mal eben selbst zu schreiben. Und den Ansatz hat zumindest hier noch niemand gebracht ("Vergiss die Anpassung - schreib das doch einfach einmal selbst"). Und wenn es geschützt ist, dann ist es erst einmal nicht relevant, was oder wie viel Du änderst.

Und wenn man es einmal genau nimmt: Mit welchem Recht gibt jemand das unveränderte JAR File weiter? Auch wenn es nur Firmenintern ist: Woher hast Du das Recht dazu? Nur weil die Datei so herunter zu laden war, gibt Dir das nicht das Recht zu einer (Firmeninternen) Redistribution. Daher wäre es sogar streng genommen so, dass jeder Anwender das eigentliche JAR selbst herunter laden muss (Dazu wird man ja aufgefordert bei der App). Und wenn der Download eines Tages nicht mehr geht, dann steht man dumm da. Die Homepage scheint es ja schon nicht mehr zu geben ... :)

Aber wie bereits ausgeführt: Nur der Rechteinhaber wird da aktiv werden können. Ein öffentliches Interesse, das die Staatsanwaltschaft benötigt, sehe ich nicht als gegeben an. Aber wenn es sogar mehrere Jahre Haft geben kann, dann ist die Frage tatsächlich, ob das Risiko es wert ist. Was kostet eine 3D Maus? Was spart dieser Hack mit dem Smartphone an Geld?
Selbst die Entwicklung des Workarounds würde ich nicht einmal vom Aufwand her in Betracht ziehen muss ich ehrlich gestehen...

Also...
https://play.google.com/store/apps/details?id=com.sdt.pccontrol&hl=en_US
da gibts die App
Auf der Seite des PlayStore ist der Link zum Jar File
die Classes sind im Klartext enthalten (warum auch immer) - man braucht keinen decompiler dafür
 
K

kneitzel

Gast
Wobei der Decompiler ein sehr schönes Ergebnis liefert. So man das Risiko mit dem Urhebergesetz tragen möchte, wäre es aus meiner Sicht kein Thema, da z.B. eine build.gradle oder pom.xml zu erstellen. Oder von mir aus auch gerne eine build.xml falls gradle und maven nicht zusagen und lieber ein Ant buildfile gewünscht würde.

Was aber zu erwähnen ist: Neben dem Code gibt es z.B. noch Bilder. Die müsste man auch noch kopieren... Aber ansonsten muss ich sagen, dass es sehr unproblematisch aussieht und ich im Augenblick nicht verstehe, wieso dies von jemandem als "fast unmöglich" eingestuft wurde. Ich war sogar positiv überrascht, wie gut der Code aussieht, den procyon generiert hat. Da hatte ich schlimmeres erwartet so von wegen anonyme Klassen und so ....
 

suseday

Mitglied
Leute, ihr begeistert mich! Eine konstruktive Diskussion und hilfreiche Ansätze. Ich hab zwar keine Ahnung von Java, aber ich bin durchaus auch anderes gewohnt. Ich programmiere ab und an in VB6 (Haha, Totgeglaubte leben länger... ich weiß, jetzt bin ich hier voll disqualifiziert) und JavaScript. Angefangen zu programmieren habe ich mit LISP welches in AutoCAD integriert war/ist und später dann halt VBA in AutoCAD, Excel, Access etc. Anyway, vielen Dank!
Und noch ein Wort wegen Anwalt etc.... Ich lebe mittlerweile in einem südostasiatischen Land und die Diskussionen um Urheberrecht sind mir irgendwie in Vergessenheit geraten :) Es geht hier nur um ein paar lokale Mitarbeiter in einem mehr oder weniger rechtsfreien Raum. Vielleicht hätte ich das vorher deutlicher machen sollen. Ein schönes Wochenende euch da drüben. Ich geh jetzt mal schlafen.
 
X

Xyz1

Gast
wieso dies von jemandem als "fast unmöglich" eingestuft wurde
Was soll diese schiefe Anspielung? Ich beziehe mich beim Antworten immer auf den Kenntnisstand des TE. Du schreibst lange Beiträge mit wenig Inhalt in geringer Qualität. Das unterscheidet uns.

Was stellt wohl für den TE einen Mehrwert dar? Viel Text mit dem er nichts anfangen kann - oder eine normale, präzise Antwort?

Du musst darauf nicht antworten - rehtorische Frage... Aber Du könntest die Qualität Deiner Antworten dadurch steigern, indem Du erst nachdenkst und dann schreibst.
 
K

kneitzel

Gast
Was soll diese schiefe Anspielung? Ich beziehe mich beim Antworten immer auf den Kenntnisstand des TE. Du schreibst lange Beiträge mit wenig Inhalt in geringer Qualität. Das unterscheidet uns.

Was stellt wohl für den TE einen Mehrwert dar? Viel Text mit dem er nichts anfangen kann - oder eine normale, präzise Antwort?

Du musst darauf nicht antworten - rehtorische Frage... Aber Du könntest die Qualität Deiner Antworten dadurch steigern, indem Du erst nachdenkst und dann schreibst.
Also das ist mir zu doof. Von Dir kommt eine Aussage, dass etwas annähernd unmöglich ist und von mir kommen konkrete Lösungen. Sorry, aber so schlecht kann Dein Textverständnis doch nicht sein, dass Du das nicht einmal erkennst! Ist der Code, den ich z.B. gepostet habe, schon um so viel zu hoch für Dich?

Oder ist das nur wieder eine Trotzreaktion, weil Du wieder gemeint hast, über etwas zu schreiben, von dem Du absolut keine Ahnung hast?

Aber das soll mir alles egal sein: Alles, was ich geschrieben habe war - nett formuliert - dass Du ganz offensichtlich absolut keine Ahnung hast, wovon Du überhaupt redest!

Aber da das Urheberrecht so keine Rolle zu spielen scheint: Was meinst Du, was der "Anfänger" nicht kann?
-> Decompilieren und Anpassen des Codes hat der TE nach eigenen Angaben bereits geschafft.
-> JDK und gradle installieren wird der TE bestimmt auch noch schaffen.

Was ist denn dann noch notwendig?
a) gradle init
Da wird ein erstes build.gradle erzeugt. Je nach Version muss man dann paar Einträge auskommentieren....

b) Im gradle.build mit einem Texteditor anfügen:
Code:
jar {
    manifest {
        attributes 'Main-Class': 'sdt.remotepc.wifi.ui.MainWindow'
    }
}
-> Sollte auch möglich sein

c) Die Sourcen sollten dann in einem Unterverzeichnis src/main/java liegen.
-> Auch hoch komplex ....

d) Jetzt wird es tatsächlich etwas komplexer, denn die drei png aus dem jar müssen extrahiert und unter Beibehaltung der Ordnerstruktur nach src/main/resources

e) ./gradlew.bat build

Und schwups: Man hat ein jar unter build/libs liegen. Ein java -jar auf diese Datei startet die Applikation.


Ja, das sind schon ein paar komplexe Schritte. Ich habe daher durchaus Verständnis dafür, dass es für jemanden wie Dich extrem schwer und kompliziert ist und daher kaum zu schaffen. Aber ich bin mir sehr sicher, dass der TE das mit nur etwas Unterstützung durchaus gut hinbekommen wird.
 

suseday

Mitglied
Peace, Leute! Ja, ihr seid beide unterschiedlich an die Sache rangegangen, und ich schätze beides sehr. Ich habe bei keinem Beitrag gedacht: Was soll das denn bitteschön?!?

Ja, ich würde das hinbekommen. Ganz bestimmt. Ich hab schon mit leaflet JavaScript libraries gearbeitet und fleißig abgeändert ohne wirklcih Ahnung von JavaScript zu haben. Aber wie ich schon sagte: Nein, ich möchte nicht eine megamäßige IDE und erst recht nciht JDK installieren. Mein PC ist genug vollgemüllt (ok, ich könnte es in der VM installieren). Aber, und das ist mein Hauptgrund, ich bin jemand der sich die Unterschiedlichesten Projekte magnetisch anzieht. Und da muss ich lernen mich abzugrenzen. Ich kann und will mich jetzt nicht hier reinhängen. Dekompillieren und mit Notepad++ abändern war easy. Als ich aber gesehen habe dass das komilieren doch mehr bedeutet als einfach nur eine Kommandozeile, hab ich es an den Nagel gehängt - so wichtig ist das dann doch nciht. Nur habe ich gedacht: jetzt ist es ja schon dekompiliert und vllt kann mir ein Java Geek einen GEfallen tun.

Anyway, genießt das Wochenende & Weihnachten. Vielen Dank für die Mühe die ich euch machen durfte ;-)
 
K

kneitzel

Gast
Also das JDK ist eine 08/15 Komponente. Wenn du ein Java >8 installierst, dann ist das heute in der Regel das komplette JDK. Gradle ist ein kleines Java Programm. Also damit ist man eben nicht wirklich dabei, sich den Rechner zu zu müllen.

Und was ich eben aufzeigen wollte: das übersetzen ist eben kein Hexenwerk! Du brauchst keine große IDE oder so.

Selbst das Gradle installieren kann man sich schenken, so Dir jemand den Rahmen mit Gradle Wrapper geben sollte....

Und die Streiterei mit Tobias ist normal. Er hat ein Problem damit, wenn jemand etwas ausführlicher wird. Und natürlich: selbst kleinste Kritik kann er nicht ab. Und meine Kritik war doch nun wirklich nicht wild. Ein dezenter Hinweis, dass ich es eben nicht als fast unmöglich ansehe.... Und durch die Aufzählung der Schritte habe ich es deutlich gezeigt.

Aber: Mach die Schritte oder lass es bleiben. Ohne JDK wird es nicht gehen. Dem Argument mit dem zumüllen des Rechners kann ich nicht wirklich folgen - ggf ist sogar schon ein JDK auf dem System, so ein aktuelles Java von Oracle verwendet wird....
 

mihe7

Top Contributor
Kann die App eigentlich irgendwas, das spezifisch für das CAD-Programm wäre, oder ist das wirklich nur Mausersatz?
 

White_Fox

Top Contributor
Ich kenne die App nicht, aber "nur Mausersatz" ist schon etwas mit dem man was anfangen könnte. Du mußt halt manchmal echte Verrenkungen hinlegen, um z.B. rein- oder rauszuzoomen oder um etwas zu bewegen.

In Altium mußt du zum bewegen (2D Schaltplan, Platinenlayout) die rechte Maustaste gedrückt halten und die Maus hin- und herschieben, und wenn du dir die Platine in 3D ansiehst und sphärisch rumfahren willst die Strg-Taste gedrückthalten.

Das klingt noch harmlos - ist es auch. In Catia war das (so meine ich mich zu erinnern):
  • Zoom: Mausrad gedrückt halten, Rechtsklick, dann die Maus vor- und zurückschieben
  • Sphärisch bewegen: Rechte Maustaste gedrückt halten, Maus bewegen
  • Horizontal/Vertikal bewegen: Mausrad gedrückt halten, Maus bewegen
Wenn du öfter mal zwischen Altium und Catia hin- und herwechselst wirst du irre dabei. Mit einem vernünftigen Mausersatz (der dann z.B. auch das gerade aktive Programm erkennet) kannst du das schon komfortabler und vor allem einheitlich machen.
 

mihe7

Top Contributor
Meine Frage zielte darauf ab, dass es doch bestimmt mehrerer solcher Apps gibt. Ansonsten könnte man das mal zum Spaß als Projekt aufsetzen.
 

suseday

Mitglied
Meine Frage zielte darauf ab, dass es doch bestimmt mehrerer solcher Apps gibt. Ansonsten könnte man das mal zum Spaß als Projekt aufsetzen.
Die App hat 2 modi:
- Normaler Mausersatz
- Mauszeiger per gyro hoch/runter sowie links/rechts bewegen -> Quatsch wegen latenzzeit
- CAD-spezifische Mausbewegung. Man wählt aus welches CAD Programm man bedient. Bei Inventor bspw. wird die Mausbewegung bei gedrückter F4 Taste ausgeführt.

Ich habe keine andere App gefunden die das auch könnte
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Fehler beim kompilieren einer Java-Datei (javac) Java Basics - Anfänger-Themen 6
M Java Kompilieren über Package grenzen hinaus Java Basics - Anfänger-Themen 4
B Nach dem kompilieren werden Bilder nicht mehr gefunden Java Basics - Anfänger-Themen 10
N Arbeitsspeicher nach kompilieren immer voller Java Basics - Anfänger-Themen 6
M Classpath Befehl zum Kompilieren um die Option classpath erweitern. Java Basics - Anfänger-Themen 5
L Java-Programm kompilieren Java Basics - Anfänger-Themen 24
J Java Datei lässt sich nicht kompilieren Java Basics - Anfänger-Themen 3
N Erste Schritte kompilieren tra lala Java Basics - Anfänger-Themen 2
J BlueJ - kompilieren - und wie weit kommt man mit BlueJ? Java Basics - Anfänger-Themen 4
D Übung Felder java Error kompilieren Java Basics - Anfänger-Themen 4
B Compiler-Fehler [Lejos] [RCX] Programm lässt sich nicht kompilieren Java Basics - Anfänger-Themen 5
J Kompilieren von HelloWorld Beispiel schlägt fehl Java Basics - Anfänger-Themen 7
P Compiler-Fehler .java Dateien kompilieren und .class Dateien zur .jar Java Basics - Anfänger-Themen 4
U kompilieren geht nicht wg. Formatierung wahrscheinlich Java Basics - Anfänger-Themen 7
P Programm zum kompilieren Java Basics - Anfänger-Themen 2
A Erste Schritte kompilieren Java Basics - Anfänger-Themen 14
V Compiler-Fehler Programm lässt sich nicht kompilieren Java Basics - Anfänger-Themen 22
J Kompilieren in anderern Java-Version? Java Basics - Anfänger-Themen 15
J Plattformunabhängigkeitstest fehlgeschlagen! Für ältere JRE kompilieren? Java Basics - Anfänger-Themen 11
J Java-Projekt kompilieren Java Basics - Anfänger-Themen 5
M Kompilieren Java Basics - Anfänger-Themen 7
J Probleme bei kompilieren ... Bitte um Hilfe Java Basics - Anfänger-Themen 27
D javac zum Kompilieren von mehreren Dateien Java Basics - Anfänger-Themen 6
C Source File bearbeiten und neu Kompilieren Java Basics - Anfänger-Themen 5
K Fehlermeldung beim kompilieren Java Basics - Anfänger-Themen 8
J Kompilieren mit Package funktioniert nicht Java Basics - Anfänger-Themen 40
E Input/Output IOException beim Kompilieren Java Basics - Anfänger-Themen 3
T Kompilieren Java Basics - Anfänger-Themen 4
L Öffnen des Programms nach kompilieren nicht möglich Java Basics - Anfänger-Themen 3
O ausgabe spinnt trotz erfolgreichem kompilieren Java Basics - Anfänger-Themen 2
S Beim kompilieren kommt Ant Build.Was ist das? Java Basics - Anfänger-Themen 8
S Problem beim Kompilieren - cannot find symbol - constructor() Java Basics - Anfänger-Themen 12
K Programm zum Kompilieren von java-Dateien Java Basics - Anfänger-Themen 17
M Kompilieren - Eclipse ja, Konsole nein Java Basics - Anfänger-Themen 15
M Keine Ausgabe nach erfolgreichem Kompilieren (javac, ubuntu) Java Basics - Anfänger-Themen 10
J problem (kann meinen Code nicht kompilieren) Java Basics - Anfänger-Themen 3
T Programm läßt sich nicht kompilieren Java Basics - Anfänger-Themen 4
H Problem beim kompilieren Java Basics - Anfänger-Themen 3
W Eclipse kompilieren und klasse von command ausführen Java Basics - Anfänger-Themen 18
J Applet mit Bibliotheken kompilieren Java Basics - Anfänger-Themen 6
L welchen fehler übersehe ich? ...kompilieren funkt. nicht Java Basics - Anfänger-Themen 23
R Quelltext einfügen und kompilieren Java Basics - Anfänger-Themen 4
Sebi Probleme beim Kompilieren Java Basics - Anfänger-Themen 11
B Java Datei unter Solaris kompilieren Java Basics - Anfänger-Themen 2
S Aufgabe gelöst, lässt sich aber nicht kompilieren Java Basics - Anfänger-Themen 3
Bloodredangel [gelöst] Kompilieren von .java-Dateien per javac Java Basics - Anfänger-Themen 5
P Pakete kompilieren.... Java Basics - Anfänger-Themen 2
E Code kompilieren geht aber ausführen nicht Java Basics - Anfänger-Themen 3
L Java ChatServer kompilieren/starten - aber wie? Java Basics - Anfänger-Themen 2
D Problem beim Kompilieren Java Basics - Anfänger-Themen 4
C Java kompilieren ? Java Basics - Anfänger-Themen 9
M 1.5er Klassen kompilieren mit 1.6er javac Java Basics - Anfänger-Themen 5
B Probleme beim Kompilieren. Java Basics - Anfänger-Themen 12
O Linux - Fehler beim kompilieren - HILFE Java Basics - Anfänger-Themen 4
J Aus einem Java Programm eine .java datei Kompilieren Java Basics - Anfänger-Themen 6
P Wav spielt nach dem Kompilieren nicht mehr. Java Basics - Anfänger-Themen 2
P Konsolenprogramm geht nicht über das Kompilieren hinaus Java Basics - Anfänger-Themen 12
S Fehlermeldung beim Kompilieren Java Basics - Anfänger-Themen 12
S Problem beim kompilieren mit Java 1.4 Java Basics - Anfänger-Themen 4
S mit GCJ nativ Kompilieren Java Basics - Anfänger-Themen 3
C manuelles Kompilieren Java Basics - Anfänger-Themen 2
V Fehler beim Kompilieren der Unterklasse Java Basics - Anfänger-Themen 2
B Ich kann mein Java Programm net Kompilieren? Java Basics - Anfänger-Themen 8
G Web-Application kompilieren Java Basics - Anfänger-Themen 3
J Kann mein Programm nicht Kompilieren? Java Basics - Anfänger-Themen 9
G Fehler beim kompilieren Java Basics - Anfänger-Themen 18
S Probleme beim Java Kompilieren + ausführen Java Basics - Anfänger-Themen 6
M probleme beim kompilieren / übersetzen ! Systemeinstellung ? Java Basics - Anfänger-Themen 5
B jar Datei lasst sich nicht kompilieren Java Basics - Anfänger-Themen 4
F Probleme mit dem Ausführen/Kompilieren Java Basics - Anfänger-Themen 5
D [JCreator] Einrichten - Fehler beim Kompilieren Java Basics - Anfänger-Themen 14
F kompilieren für handy Java Basics - Anfänger-Themen 3
K Problem mit Kompilieren Java Basics - Anfänger-Themen 3
L quelltext kompilieren Java Basics - Anfänger-Themen 2
M kompilieren Java Basics - Anfänger-Themen 6
M kompilieren in eine exe ohne install. JRE Env möglich? Java Basics - Anfänger-Themen 9
G Wie muss classpath lauten? Package kompilieren/interpretiere Java Basics - Anfänger-Themen 4
rambozola java-datei ohne mainfunktion in class-datei kompilieren? Java Basics - Anfänger-Themen 4
L Kompilieren von Servlets Java Basics - Anfänger-Themen 3
J javax.comm-API kompilieren Java Basics - Anfänger-Themen 12
H Kompilieren unter Windows XP mit j2sdk1.4.2_07 Java Basics - Anfänger-Themen 7
R Rekursiv kompilieren mit javac Java Basics - Anfänger-Themen 8
G mehrere hundert Java-Dateien kompilieren Java Basics - Anfänger-Themen 5
A Problem nach dem kompilieren. Java Basics - Anfänger-Themen 6
G Problem beim Kompilieren eines HelloWorld-Programms Java Basics - Anfänger-Themen 7
G Fehler beim Kompilieren von zwei Klassen Java Basics - Anfänger-Themen 9
R Mit JDK 1.1.7 kompilieren Java Basics - Anfänger-Themen 2
R Applet lässt sich nicht kompilieren Java Basics - Anfänger-Themen 4
I in frühere versionen kompilieren Java Basics - Anfänger-Themen 3
T Fehler beim Kompilieren vom Programm Java Basics - Anfänger-Themen 10
K Mein Pc will meine Programme nicht kompilieren Java Basics - Anfänger-Themen 2
T progr. kompilieren nicht möglich..autoexec.bat...Path..`wo? Java Basics - Anfänger-Themen 2
R "implements Serializable" Fehler beim kompilieren Java Basics - Anfänger-Themen 2
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben