2015-11-16 10 views
5

Ich habe ein Problem mit der Ausführung einer einfachen JavaFX-Anwendung. Ich benutze nativen Packer, um exe zu bauen. Ich mag meine Anwendung von Windows-Datei-Kontextmenü laufen, aber wenn ich versuche, Anwendung mit params auszuführen:Gebündelte JavaFX-Anwendung wird mit nicht englischen Argumenten ausgeführt Würfe "JVM konnte nicht gestartet werden"

> JavaFXApplication1.exe ąęć 

und ich erhalte 2 Fehler:

1) enter image description here und nach Klick auf „OK „:

2) enter image description here

Wenn ich laufe Anwendung als jAR-Datei:

> java -jar JavaFXApplication1.jar ąęć 

Die Anwendung begann mit Erfolg und es funktioniert gut.

Auch wenn ich Anwendung von diesem Befehl ausführen:

> JavaFXApplication1.exe aec 

alles in Ordnung ist und gut funktioniert die Anwendung.

Beispiel Anwendungscode:

package test; 

import javafx.application.Application; 
import javafx.stage.Stage; 

public class Test extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     System.out.println("Started"); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     System.out.println("Args count: " + args.length); 
     launch(args); 
    } 
} 

ignorieren, funktioniert die Anwendung nicht in der Nähe.

Ich denke, dass es genau das gleiche Problem wie hier beschrieben: https://bugs.openjdk.java.net/browse/JDK-8133034

Hat diesen jemand lösen? Oder gibt es jemanden, der eine Umgehung dieses Problems kennt? Ich habe Java-Versionen von 1.8.40 bis 1.8.72 versucht, aber es ist auf jeder JVM fehlgeschlagen. Es ist auch kein Umweltproblem, weil ich es auf 2 verschiedenen Maschinen (und auch auf Betriebssystemen) getestet habe.

Ich würde jede Hilfe zu schätzen wissen.

+0

Haben Sie versucht, Ihr JVM-Gebietsschema einzurichten? http://stackoverflow.com/questions/8809098/how-do-i-set-the-default-locale-for-my-jvm – Leonardo

+0

Ja. Es versagt auch. – Krzysiek

Antwort

0

Das Jira-Problem erwähnt in einem Kommentar, dass es eine Regression ist, die JDK-Version 8u40b06 startet. Wenn möglich, können Sie einen älteren verwenden. Versuchen Sie 8u40b05.

Im Moment können Sie vielleicht alle Befehlsargumente in einer Datei (benannt in ASCII-Zeichen) speichern und die Dateiposition als Argument übergeben, um die tatsächlichen Argumente der Anwendung zu lesen.

Eine andere Problemumgehung (letztes Mittel?) Besteht darin, Zeichen als Unicode-Escapezeichen zu übergeben. Siehe Convert escaped Unicode character back to actual character. Obwohl es zugegebenermaßen eine hässliche und langweilige Sache ist.

+0

Es ist wirklich schwer zu finden JDK 8u40b05 .. Ich habe versucht, die neueste Beta-Version von JDK, aber Problem existiert noch ... Ihre Gedanken über Workaround ist in Ordnung, aber wie kann ich dies aus dem Kontextmenü tun? Ich kann nicht direkt an ein nicht-englisches JavaFX-App-Zeichen übergeben, um es in Unicode mit Escapezeichen zu konvertieren, da die App nicht mit diesen Argumenten ausgeführt wird. – Krzysiek

+0

Die zweite Option "Befehle in Datei speichern" ist mit einem einzelnen Befehl schwer zu erreichen. Das Dateikontextmenü in Windows kann nur einen Befehl ausführen, den ich in Windows reqistry hinzufügen muss. Also, wie in einem Befehl übergeben Sie Argumente zu Datei, speichern Sie es und führen Sie App mit dieser Datei als Parameter ... Und wo kann ich diese Datei speichern, denn wenn ich App aus tatsächlichen Ordner ausführen wird, gibt es eine Möglichkeit, die tatsächlichen Pfad enthält nicht englische Zeichen. – Krzysiek