2016-10-03 3 views
2

übergeben Also habe ich ein Programm mit einem Updater und ich habe einen Fehler gemacht, bevor Sie es freigegeben. Ich habe total vergessen, das Update zu umgehen, damit der Benutzer es später aktualisieren kann.Versuchen, Argumente an Java-Anwendung

Jetzt versuche ich es zu beheben und ich dachte, dass das Erstellen eines Arguments mit "-no_patching" die beste Lösung dafür ist.

Hier ist der Code:

public static void main(String... args) throws Exception { 
    if (args.length == 0) { 
     checkVersion(); 
     System.err.println("patching ON"); 
    } else if(args.toString().matches("-no_patching")) { 
     System.err.println("patching OFF"); 
     launchApp(); 
    } 
} 

Die Sache ist, wenn ich das Programm ausführen mit dem Argument es für 1 Sekunde läuft dann hält er an. Was mache ich falsch?

Antwort

1

args Array ist. Sie sollten es tun, wie folgt:

for(String arg : args) 
{ 
    if(arg.matches("-no_patching")){ 
     System.err.println("patching OFF"); 
     launchApp(); 
    } 
} 
+0

Nice one vergleichen, ich denke, das einen Bonus für Zukunft hat, wenn ich mehr args hinzufügen müssen, Danke! – Cravenica

1

Hier ist der Fehler bei Zeile args.toString().matches("-no_patching").

Das

else if(args[0].equals("-no_patching")){ // make sure args length is 1 
      System.err.println("patching OFF"); 
      launchApp(); 
     } 

toString() auf args Array sollten Sie nicht Inhalt geben.

1

Sie versuchen, das Array args zu vergleichen, anstatt das erste Argument aus diesem Array zu finden.

//this is not what you want 
args.toString().matches("-no_patching") 

Sie müssen erstes Element aus dem Array und dann Vergleich zu tun:

args[0].equals("-no_patching") 
0

die Sie interessieren, konvertieren args auf eine Liste und verwenden die Methode enthält, wenn es zu sehen sind irgendwelche Übereinstimmungen Argument:

public static void main(String... args) throws Exception { 
    if(args.length == 0){ 
    checkVersion(); 
    System.err.println("patching ON"); 
    } else if(Arrays.asList(args).contains("-no_patching")){ 
     System.err.println("patching OFF"); 
     launchApp(); 
    } 
} 
0

i Array Sache völlig vergessen zu. .. ich glaube, ich panische ein bisschen xD

else if(args[0].equals("-no_patching")){ 
    //do something 
} 

hat den Trick, danke!

+0

akzeptiere eine Antwort wenn es funktioniert ... diese Frage wird unbeantwortet angezeigt. –

0

Ich denke, Sie einen falschen Vergleich versuchen, in den ELSE IF

  else if(args.toString().matches("-no_patching")) 

args.toString() würde einigen Adresswert des Argument-Array args geben. Wenn dies mit Ihrem Argument "-no_patching" verglichen wird, würde es definitiv FALSE zurückgeben.

Vielmehr können Sie immer wie

  else if(args[0].toString().matches("-no_patching"))