2015-11-16 18 views
5

Mam problem z uruchomieniem prostej aplikacji JavaFX. Używam rodzimego programu pakującego do kompilacji exe. Chcę uruchomić mój program z menu kontekstowego pliku Windows, ale gdy próbuję uruchomić aplikację z params:Wiązana aplikacja JavaFX działa z argumentami innymi niż angielski "Nie można uruchomić maszyny JVM"

> JavaFXApplication1.exe ąęć 

i Dostaję 2 błędy:

1) enter image description here i po kliknięciu „OK „:

2) enter image description here

Kiedy uruchomić aplikację jako pliku jar:

> java -jar JavaFXApplication1.jar ąęć 

Aplikacja zaczęła się z powodzeniem i działa poprawnie.

Ponadto, gdy uruchamiam aplikację z tym poleceniem:

> JavaFXApplication1.exe aec 

wszystko jest OK i grzywny pracy aplikacji.

przykład kod aplikacji:

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); 
    } 
} 

ignorowanie, że zastosowanie nie zamyka.

myślę, że jest to dokładnie ten sam problem, jak opisano tutaj: https://bugs.openjdk.java.net/browse/JDK-8133034

Czy ktoś rozwiązać ten problem? A może jest ktoś, kto zna obejście tego problemu? Próbowałem wersje java od 1.8.40 aż do 1.8.72, ale nie powiodło się na każdym JVM. Nie jest to również problem środowiskowy, ponieważ przetestowałem go na 2 różnych komputerach (a także systemach operacyjnych).

Byłbym wdzięczny za każdą pomoc.

+0

Czy próbowałeś ustawić ustawienia regionalne JVM? http://stackoverflow.com/questions/8809098/how-do-i-set-the-default-locale-for-my-jvm – Leonardo

+0

Tak. To także się nie udaje. – Krzysiek

Odpowiedz

0

W numerze Jira w komentarzu wspomina się, że jest to regresja rozpoczynająca wersję JDK 8u40b06. Jeśli to możliwe, jednym z rozwiązań jest użycie starszej wersji. Wypróbuj 8u40b05.

W tej chwili możesz zapisać wszystkie argumenty polecenia w pliku (nazwane znakami ASCII) i przekazać lokalizację pliku jako argument, aby odczytać rzeczywiste argumenty aplikacji.

Innym obejściem (ostatnią deską ratunku?) Jest przekazywanie znaków w postaci unikanego kodu Unicode. Zobacz Convert escaped Unicode character back to actual character. Chociaż wprawdzie jest to brzydka i nużąca rzecz.

+0

Naprawdę trudno jest znaleźć JDK 8u40b05 .. Wypróbowałem najnowszą wersję beta JDK, ale problem nadal istnieje ... Twoje myślenie o obejściu jest w porządku, ale jak mogę to zrobić z menu kontekstowego? Nie mogę przejść bezpośrednio do nieangielskojęzycznej postaci aplikacji JavaFX, aby przekonwertować ją na kod unikowy Unicode, ponieważ aplikacja nie będzie działać z tymi argumentami. – Krzysiek

+0

Opcja Seccond "Przechowywanie poleceń do pliku" jest trudna do osiągnięcia z pojedynczego polecenia. Menu kontekstowe pliku w systemie Windows może uruchamiać tylko jedno polecenie, które muszę dodać w oknie reqistry. A więc, jak w jednym poleceniu przekazać argumenty do pliku, zapisać i uruchomić aplikację z tym plikiem jako parametrem ... I gdzie mogę zapisać ten plik, ponieważ kiedy uruchomię aplikację z właściwego folderu, istnieje możliwość, że rzeczywista ścieżka będzie zawierała znaki spoza angielskiego. – Krzysiek