#java #url #javafx #jar #webengine
#java #url #javafx #jar #webengine
Вопрос:
Я программировал графический интерфейс для отображения данных с датчиков.
Графический интерфейс включает в себя визуализатор карты Google, отображающий данные с маркерами (через показания gps).
Я передавал показания по URL-адресу, используя ‘?’ и ‘amp;’:
String url = this.getClass().getResource("/resources/map.html").toExternalForm();
url ="?";
for (GPSReading r : data) {
// remove all aplhabetic characters, except for S and E (for lon
// lat) then trim the white spaces
// pass it into the url to be processed by js
url = r.toString().trim().replaceAll("[^\d.ES ]", "").replaceFirst("S", "");
url = 'amp;';
}
а затем загружаем его в веб-движок
webEngine.load(url);
Это отлично работает при запуске через eclipse, но когда я упаковываю код в исполняемый файл jar, ссылка прерывается, и в WebEngine ничего не отображается.
Это js-код, в котором я извлекаю параметры из URL:
var parameters = window.location.href;
parameters= decodeURI(parameters.split("?")[1]);
var paramArray = parameters.split('amp;');
[...]
var field = paramArray[reading].split(" ").filter(Boolean);
А затем я продолжаю и выполняю некоторый синтаксический анализ строк, который работает нормально.
Кто-нибудь знает, почему передача параметров через URL работает из eclipse, но не из Jar, есть ли способ заставить это работать?
Редактировать
Я проверил jar, и он содержит единственную внешнюю библиотеку, которую я использовал (RxTx), остальное я сделал со стандартной библиотекой Java.
Комментарии:
1. Вы смотрели GMapsFX? Это оболочка JavaFX, которая позволила бы вам размещать маркеры непосредственно из java. rterp.github.io/GMapsFX
Ответ №1:
Вы проверили, что jar, созданный eclipse, содержит все необходимые классы и внешние библиотеки, которые вам нужны. Возможно, проблема в отсутствии внешних библиотек. Затем вам нужно создать fat jar для файла со всеми вашими зависимостями
Комментарии:
1. Привет, спасибо за ответ, я генерирую jar через eclipse, поэтому я не слишком уверен. Как бы я ни тестировал, и если я не помещаю параметры в URL, карта загружается нормально (очевидно, без маркеров). Я изучаю возможность перезаписи моей js-функции nand и вызова скрипта WebEngiexecute для передачи пункта
2. вызов WebEngine.executeScript для передачи параметров в *