2017-01-08 5 views
1

Ich möchte einen "Launcher" für mein JAR-Programm machen, im Grunde macht meine EXE-Datei nichts selbst, es ist einfach zum Starten meines Jar-Programms.Warum bekomme ich "Win32Exception"?

Mein JAR-Programm kann eine Datei öffnen, und soweit ich weiß (Achtung, weil hier vielleicht das Problem liegt), öffnet das OS eine Datei, indem es ein Befehlszeilenargument an das Programm weiterleitet, das den Pfad zum Datei, oder?

Wenn ich mein Programm über die Play-Taste in Visual Studio ausführen es funktioniert gut, ich die Argumente in Properties- setzen> Debug-> Kommandozeilenargumenten, startet es mein Glas und öffnet meine Datei

Wenn ich ausführen mein Programm von CMD, übergibt das Argument auch durch cmd, es funktioniert gut und wieder öffnet es mi-Datei

Aber wenn ich recht klicke auf die Datei, die ich öffnen will, dann "öffnen mit" ... ich erhalte die System.ComponentModel.Win32Exception

ich dachte, vielleicht muss das Programm installiert werden, so habe ich eine ınnosetup installe r, aber wenn ich rechts klicke-> öffne mit ... bekomme ich Win32Exception

Was mache ich falsch?


Mein Code:

class Program 
     { 
      static void Main(string[] args) 
      { 
       var programa = new System.Diagnostics.Process(); 
       programa.StartInfo.UseShellExecute = true; 
       programa.StartInfo.FileName = "Personas.jar"; 
       String archivo ; 
       try 
       { 
        archivo = args[0]; 
       }catch(System.IndexOutOfRangeException e) 
       { 
        archivo = null; 
       } 
       if(archivo != null) 
       { 
        programa.StartInfo.Arguments = archivo; 
       } 
       try 
       { 
        programa.Start(); 
       }catch(Exception err) 
       { 

       } 
      } 
     } 

Ich werde nicht den Java-Code setzen, weil das Problem eindeutig in # C ist

The exception

+0

Es ist einfach, weil jar einfache Archive und keine ausführbaren PE-Dateien sind. Du musst es mit java -jar nameOfJar.jar starten, obwohl ich weder Spanien noch C# verstehe, ich glaube es ist die Ursache. – glee8e

+0

Worauf klicken Sie mit der rechten Maustaste? Und was wählen Sie im folgenden Dialog nach "Öffnen mit"? Hinweis: Überprüfen Sie das Arbeitsverzeichnis –

+0

@ glee8e: solange JAR-Dateien mit Javaw.exe verknüpft sind, funktioniert es –

Antwort

0

Wenn Sie Ihre Anwendung mit Visual Studio starten Das aktuelle Verzeichnis wird auf das der ausführbaren Datei gesetzt, die gestartet wird. Ich nehme an, dass sich Ihre personas.jar-Datei im selben Verzeichnis wie Ihre ausführbare Datei befindet. Wenn Sie also Ihre jar-Datei mit ShellExecute = true öffnen, wird die Datei nach der Verknüpfung gesucht und erfolgreich ausgeführt.

Wenn CMD verwenden Sie wahrscheinlich es aus dem Programmverzeichnis gestartet, so das aktuelle Verzeichnis wie oben gesetzt und alles funktioniert wieder wie geplant.

Aber wenn Sie eine Datei öffnen Mit Öffnen mit ... das aktuelle Verzeichnis wird in das Verzeichnis, das die Datei enthält, die rechts angeklickt wurde auf. Das heißt, wenn Sie versuchen, personas.jar mit ShellExecute zu öffnen, sucht es im Verzeichnis der angeklickten Datei und kann es nicht finden. Also Versagen.

Sie müssen den Pfad zur Ausführung Baugruppe erhalten und zu bedienen, dass entweder das aktuelle Verzeichnis eingestellt oder vollständig den Pfad zu qualifizieren personas.jar.

Auch die Argumente Eigenschaft des Objekts Startinfo verwenden, während eine Datei durch Assoziation zu öffnen ist keine dokumentierte Verwendung. Obwohl es jetzt funktioniert, kann es irgendwann aufhören zu arbeiten.

+0

was Sie sagten, macht Sinn, aber ich habe auch versucht, meine Datei in das gleiche Verzeichnis meiner Anwendung zu kopieren, so dass das aktuelle Verzeichnis ist das gleiche für beide Dateien, meine jar und die Datei, die ich möchte offen, es hat auch nicht funktioniert. Jedenfalls werde ich den vollständigen Pfad zu meiner JAR-Datei ausprobieren und ich werde Sie wissen lassen, ob es funktioniert. Vielen Dank –