if statt while nach export Runnable Jar File

Cangonator

Mitglied
Hello World,
ich habe folgendes Problem:

Wenn ich mein Projekt im Programm Eclipse exportiere und danach die .jar datei in den Java Decompiler öffne,
wird eine while schleife in eine if abfrage umgewandelt.
Ich habe auch versucht statt der while schleife eine for schleife zu nutzen, selbes Problem

Hier in zeile 12 ist die while schleife
[CODE lang="java" title="Code in Eclipse" highlight="12"] public static void Start(String sDateiUser, String sDateiProxies, String timetoplay, String sPlaylist) throws InterruptedException {
ArrayList<String> users = new ArrayList<>();
ArrayList<String> proxys = new ArrayList<>();
users = Datei.Lesen(sDateiUser);
if (sDateiProxies.length() != 0) {
proxys = Datei.Lesen(sDateiProxies);
}

int i = 0;
int iProxy = 0;

while(i < users.size()) {
if ((proxys.size() - 1 >= i && proxys.size() - 1 >= iProxy) || sDateiProxies.length() == 0) {
try {
String sUsername = ((String)users.get(i)).split(":")[0];
String sPasswort = ((String)users.get(i)).split(":")[1];
String ChromeDriver = Datei.Configuration("ChromeDriver");
System.setProperty("webdriver.chrome.driver", ChromeDriver);
ChromeOptions options = new ChromeOptions();
if (sDateiProxies.length() != 0) {
options.addArguments(new String[] { "--proxy-server=http://" + (String)proxys.get(iProxy) });
}
options.addArguments(new String[] { "--mute-audio" });
iProxy++;
driver.add(i, new ChromeDriver(options));
((WebDriver)driver.get(i)).manage().window().maximize();
((WebDriver)driver.get(i)).get("http://accounts.spotify.com/de/login?continue=" + sPlaylist);
while(!((WebDriver)driver.get(i)).getTitle().equals("Anmelden - Spotify")) {
Thread.sleep(5000L);
System.out.println("kk");

JavascriptExecutor js = (JavascriptExecutor)driver.get(i);
js.executeScript("window.scrollBy(0,1000)", new Object[0]);
String ElementLoginUsername = Datei.Configuration("ElementLoginUsername");
((WebDriver)driver.get(i)).findElement(By.xpath(ElementLoginUsername)).sendKeys(new CharSequence[] { sUsername });
String ElementLoginPassword = Datei.Configuration("ElementLoginPassword");
((WebDriver)driver.get(i)).findElement(By.xpath(ElementLoginPassword)).sendKeys(new CharSequence[] { sPasswort });
String ElementLoginButten = Datei.Configuration("ElementLoginButten");
((WebDriver)driver.get(i)).findElement(By.xpath(ElementLoginButten)).click();
// System.out.println("hat sich angemeldet!");
// bricht nach x mal die cookiesuche ab // Nur wenn ohne Proxy dann kommt Cookieabfrage
int j = 0;
while(j < 3) {
try {
// System.out.println("Versuch ElementCookieButton...");
Thread.sleep(1000);
String ElementCookieButton = Datei.Configuration("ElementCookieButton");
((WebDriver)driver.get(i)).findElement(By.xpath(ElementCookieButton)).click();
// System.out.println("Versuch ElementCookieButton ERFOLGREICH");
break;
}catch(Exception e) {
try {
// System.out.println("catch block - Versuch ElementCookieButton2");
Thread.sleep(1000);
String ElementCookieButton2 = Datei.Configuration("ElementCookieButton2");
((WebDriver)driver.get(i)).findElement(By.xpath(ElementCookieButton2)).click();
// System.out.println("catch block ende - Versuch ElementCookieButton2 ERFOLGREICH");
break;
}catch(Exception e2) {
// System.out.println("ElementCookieButton2 auch Exception, beginne von vorne while");
j++;
}
}
}
String p = "";
if (sDateiProxies.length() != 0) {
p = String.valueOf(String.valueOf((sDateiProxies.length() != 0))) + ": " + (String)proxys.get(iProxy - 1);
} else {
p = String.valueOf((sDateiProxies.length() != 0));
}
JTableRow.add(String.valueOf(i), sUsername, p);
}

}catch(Exception e2) {
i--;
}
i++;
}
System.out.println("while wird jetzt gebreaked!");
break;

}[/CODE]


Hier in zeile 9 wurde einfach nach dem exportieren eine if abfrage aus der while schleife.
[CODE lang="java" title="Code aus Java Decompiler" highlight="9,"]public static void Start(String sDateiUser, String sDateiProxies, String timetoplay, String sPlaylist) throws InterruptedException {
ArrayList<String> users = new ArrayList<>();
ArrayList<String> proxys = new ArrayList<>();
users = Datei.Lesen(sDateiUser);
if (sDateiProxies.length() != 0)
proxys = Datei.Lesen(sDateiProxies);
int i = 0;
int iProxy = 0;
if (i < users.size()) {
if ((proxys.size() - 1 >= i && proxys.size() - 1 >= iProxy) || sDateiProxies.length() == 0) {
try {
String sUsername = ((String)users.get(i)).split(":")[0];
String sPasswort = ((String)users.get(i)).split(":")[1];
String ChromeDriver = Datei.Configuration("ChromeDriver");
System.setProperty("webdriver.chrome.driver", ChromeDriver);
ChromeOptions options = new ChromeOptions();
if (sDateiProxies.length() != 0)
options.addArguments(new String[] { "--proxy-server=http://" + (String)proxys.get(iProxy) });
options.addArguments(new String[] { "--mute-audio" });
iProxy++;
driver.add(i, new ChromeDriver(options));
((WebDriver)driver.get(i)).manage().window().maximize();
((WebDriver)driver.get(i)).get("http://accounts.spotify.com/de/login?continue=" + sPlaylist);
while (!((WebDriver)driver.get(i)).getTitle().equals("Anmelden - Spotify")) {
Thread.sleep(5000L);
System.out.println("kk");
JavascriptExecutor js = (JavascriptExecutor)driver.get(i);
js.executeScript("window.scrollBy(0,1000)", new Object[0]);
String ElementLoginUsername = Datei.Configuration("ElementLoginUsername");
((WebDriver)driver.get(i)).findElement(By.xpath(ElementLoginUsername)).sendKeys(new CharSequence[] { sUsername });
String ElementLoginPassword = Datei.Configuration("ElementLoginPassword");
((WebDriver)driver.get(i)).findElement(By.xpath(ElementLoginPassword)).sendKeys(new CharSequence[] { sPasswort });
String ElementLoginButten = Datei.Configuration("ElementLoginButten");
((WebDriver)driver.get(i)).findElement(By.xpath(ElementLoginButten)).click();
int j = 0;
while (j < 3) {
try {
Thread.sleep(1000L);
String ElementCookieButton = Datei.Configuration("ElementCookieButton");
((WebDriver)driver.get(i)).findElement(By.xpath(ElementCookieButton)).click();
break;
} catch (Exception e) {
try {
Thread.sleep(1000L);
String ElementCookieButton2 = Datei.Configuration("ElementCookieButton2");
((WebDriver)driver.get(i)).findElement(By.xpath(ElementCookieButton2)).click();
break;
} catch (Exception e2) {
j++;
}
}
}
String p = "";
if (sDateiProxies.length() != 0) {
p = String.valueOf(String.valueOf(String.valueOf((sDateiProxies.length() != 0)))) + ": " + (String)proxys.get(iProxy - 1);
} else {
p = String.valueOf((sDateiProxies.length() != 0));
}
JTableRow.add(String.valueOf(i), sUsername, p);
}
} catch (Exception e2) {
i--;
}
i++;
}
System.out.println("while wird jetzt gebreaked!");
}
Thread.sleep(1000L);
int x = 0;
while (x <= i - 1) {
try {
int AktuelleZeit = 0;
Thread.sleep(500L);
Play(driver.get(x));
AktuelleZeit = Integer.valueOf(getPlaytime(driver.get(x)).replace(":", "")).intValue();
x++;
break;
} catch (Exception e2) {
int AktuelleZeit = 0;
Thread.sleep(500L);
try {
Play2(driver.get(x));
AktuelleZeit = Integer.valueOf(getPlaytime(driver.get(x)).replace(":", "")).intValue();
break;
} catch (Exception exception) {}
}
}
while (true) {
x = 0;
while (x <= i - 1) {
try {
int AktuelleZeit = Integer.valueOf(getPlaytime(driver.get(x)).replace(":", "")).intValue();
if (AktuelleZeit >= Integer.valueOf(timetoplay.replace(":", "")).intValue()) {
Skip(driver.get(x));
System.out.println("song wurde geskipppt jetzt folgt getsong!");
JTableRow.plus(x, getSong(driver.get(x)));
System.out.println("vor der getplaytime while schleife");
while (Integer.valueOf(getPlaytime(driver.get(x)).replace(":", "")).intValue() > 0)
Thread.sleep(1000L);
}
x++;
} catch (Exception e) {
Thread.sleep(1000L);
}
}
}
}[/CODE]

Kann mir jemand sagen wieso er nach dem export die while schleife in eine if anweisung ändert?
Ich habe dieses Problem nirgends im Internet gefunden.
Ich hoffe jemand kann mir helfen.

Eckdaten:
Ich nutze wie gesagt Eclipse
Version: 2020-12 (4.18.0)
Build id: 20201210-1552
jdk 13.0.2
Windows 10
 

Barista

Top Contributor
Bist Du sicher, dass Dein aktueller Code in der Jar-Datei landet, es gibt offenbar noch mehr Unterschiede?

Folge mal dem Weg der Erzeugung der Jar-Datei, lösche alle temporären Dateien.

Die andere Möglichkeit ist, dass der Decompiler den Bytecode eben anders nach Java-Quellcode zurück übersetzt als der Java-Compiler den Java-Quellcode nach Bytecode übersetzt.

Was willst Du mit dem Decompilieren erreichen?

Ich habe Decompiler nur für Bytecode verwendet, für den ich keinen Java-Quellcode hatte.
 

Cangonator

Mitglied
Was gibt denn diese Methode für einen Wert zurück?
Die Methode gibt einen ArrayList<String> zurück

[CODE lang="java" title="Methode" highlight="30,"]public class Datei
{
public static ArrayList<String> Lesen(String sDateiname) {
ArrayList<String> DateiInhalt = new ArrayList<String>();

BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(sDateiname));
} catch (FileNotFoundException e) {

e.printStackTrace();
}


String zeile = null;

try {
while ((zeile = reader.readLine()) != null)
{
DateiInhalt.add(zeile);

}

}
catch (IOException e) {

e.printStackTrace();
}

return DateiInhalt;
}[/CODE]
 

Cangonator

Mitglied
Weil die while Schleife sowieso nur eine einzige Iteration durchlaeuft. Am Ende hast du dort als letzte Anweisung ein break. Somit ist deine while Schleife effektiv dasselbe wie ein if, und es ist kein Bug im Decompiler.
du hast alles zerstört, danke dir :D
Du hast natürlich recht, das war die Lösung!
Und selbstverständlich danke für alle anderen schnellen Antworten.
Wenn der code wieder läuft, melde ich mich nochmal
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G IDEA IntelliJ gitlab statt github nutzen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
alderwaran netbeans JPanel statt beschriftung auf JTabbedPane IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
C Eclipse Installationspfad statt Projektpfad java.io.fileNotFound Exception IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
T NetBeans: Sun JDK statt OpenJDK standardmäßig benutzen? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
M Space statt Tab & WhiteSpace hinter dem letzten Zeichen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
C Compiler der statt Bytecode, maschinencode erzeugt? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
H Eclipsefehler wenn while schleife keine methode beinhaltet IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
T Eclipse Java Projekt funktioniert in Eclipse, aber nach export kein Dateizugriff IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
I NetBeans 15 - Strg+Z (undo) und Strg+Y (redo) funzen nicht mehr nach Start der Java-Anwendung IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
MiMa Nebtbeans Projekte nach IntelliJ IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
it_is_all NetBeans EasyUML - mache alles nach Plan, kein Fenster erscheint :( IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
J Eclipse Nach Maven Einstellung -> Ordner /target im Arbeitsverzeichnis IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
R NetBeans Startet nicht nach Installation IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
M Eclipse Eclipse start Fehler nach Installation IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
F Egit-Problem nach Merge-Konflikt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
O Eclipse Suche nach Methode in einer "referenced" Jar-Library IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 10
W Eclipse nach Java Update 8 Ant Probleme IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
G Debugger in eclipse funktioniert erst nach Neustart IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
U Eclipse nach starten leer IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
B Eclipse Echtzeitsuche nach Sourcefilesnamen mit Quick Access IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
K Eclipse Android SKD nach lib-import-Versucht zerschossen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
K Eclipse AltGr als Alt nach Alt+Shift IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
G Eclipse, beim Debugger Objekte nach Wert durchsuchen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
P Eclipse Nach Update von Indigo auf Juno startet Eclipse nicht mehr IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
S Eclipse Workspacename nach dem start von Eclipse anzeigen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
R Eclipse Verzeichnisstruktur nach jar-Export aus Eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
J Gui builder öffnen nach neuinstallation IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
P Eclipse Probleme nach Update IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
R Eclipse eclipse (serialVersionUID) automatisch neu generieren nach Änderung IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
C [Eclipse] Rekursive Projektordner nach Inport mit Copy to Workspace IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
E Eclipse Langsamer Eclipsestart unmittelbar nach Systemstart IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
alderwaran NetBeans automatisches signieren von jar files nach build IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
H NetBeans Von Eclipse nach Netbeans IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
S Netbeans Projekt nach Eclipse migrieren IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
B Eclipse 3.4 - Automatische Deployment nach Speichern IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 11
T Subversive erkennt Projekt nicht mehr nach Import via Ant IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 14
S Eclipse: Nach Absturz lassen sich keine Dateien mehr öffnen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
T Nach Jahren mit Eclipse jetzt auch mal Netbeans IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
B Eclipse - Projekt von Windows nach Linux IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
P Nach Ant Script ein Programm aufrufen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
T JUnit: nach fehlgeschlagenem Test nicht abbrechen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
G Netbeans: Anfangsklammern von Klassen nach unten setzen? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
C Eclipse nach Windows- Neuinstallation IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
T NetBeans 5.5 nach dem Gui wie weiter? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
C externe Bibliothek funktioniert nicht nach JAR-Export IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
S Eclipse, Console nach Programdurchlauf inaktiv IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
S Eclipse: Zeilensprung nach Vervollständigung IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
D Eclipse: Fehlermeldung nach dem Kompilieren IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
S Klassenuebergreifend nach text Suchen? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
M JBuilder X: Absturz nach Scrollen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 9

Ähnliche Java Themen

Neue Themen


Oben