<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Przyszły Programista - Najnowsze pytania i odpowiedzi w Java</title>
<link>http://forum.przyszlyprogramista.pl/?qa=qa/java</link>
<description>Powered by Question2Answer</description>
<item>
<title>Testowanie WeatherApp - testowanie serwisu</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2125/testowanie-weatherapp-testowanie-serwisu</link>
<description>&lt;p&gt;Cześć wszystkim!&lt;/p&gt;

&lt;p&gt;mam problem z testem aplikacji pogodowej. Mam 2 klasy: GetLocationService i GetLocationClient.&lt;br&gt;
GetLocationClient to klasa która konkretnie wysyła zapytanie do API i zwraca odpowiedź - jej nie chcę testować.&lt;br&gt;
GetLocationService.ma GetLocationClient jako pole i wywołuje go żeby za jego pomocą wysłać zapytanie:&lt;/p&gt;

&lt;pre class=&quot;brush:java;&quot;&gt;
public class GetLocationService extends Service&amp;lt;Location&amp;gt; {

    private final GetLocationAPIClient getLocationAPIClient;

    GetLocationService(GetLocationAPIClient getLocationAPIClient) {
        this.getLocationAPIClient = getLocationAPIClient;
    }

    @Override
    protected Task&amp;lt;Location&amp;gt; createTask() {
        return new Task&amp;lt;Location&amp;gt;() {
            @Override
            protected Location call() throws Exception {

                return getLocationAPIClient.getLocation();
            }
        };
    }
}&lt;/pre&gt;

&lt;p&gt;Chcę zamockować działanie&amp;nbsp;GetLocationClient i przetestować, czy&amp;nbsp;GetLocationService poprawnie przekazuje odpowiedź lub zgodnie z założeniem wyrzuca błąd.&lt;/p&gt;

&lt;p&gt;Alej jak przetestować createTask()? Czy ktoś testował Service?&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2125/testowanie-weatherapp-testowanie-serwisu</guid>
<pubDate>Tue, 02 Jun 2026 18:35:43 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Aplikacja pogodowa -&gt; javafx-maven-plugin</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1808/aplikacja-pogodowa-javafx-maven-plugin&amp;show=1809#a1809</link>
<description>Cześć Karol! Wydaje mi się, że to wystarczy i to jest właśnie &amp;quot;porządnie&amp;quot; zrobione.</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1808/aplikacja-pogodowa-javafx-maven-plugin&amp;show=1809#a1809</guid>
<pubDate>Fri, 12 Jan 2024 04:28:39 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: No main manifest attribute</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1798/no-main-manifest-attribute&amp;show=1799#a1799</link>
<description>Próbowałaś starszą wersje Javy niż 21? Np 19 lub 17 ? I czy w Javie nie trzeba jawnie określić klasę main? Coś jak:&lt;br /&gt;
&lt;br /&gt;
Main-Class: nazwa.projektu.Main ?</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1798/no-main-manifest-attribute&amp;show=1799#a1799</guid>
<pubDate>Wed, 27 Dec 2023 14:54:16 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Aplikacja mailowa</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1796/aplikacja-mailowa&amp;show=1797#a1797</link>
<description>&lt;p&gt;spróbuj użyć innego mila, np na wp.pl.&lt;br&gt;
&lt;br&gt;
Jak to nie pomoże:&lt;br&gt;
&lt;br&gt;
Załóż sobie nowy świeży projekt w którym przetestuj tylko i wyłącznie funkcjonalność logowania na pocztę i pobierania danych z niej. Jak wprowadzasz nową funkcjonalność do rozbudowanej aplikacji to łatwo o błąd.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dlatego zawsze nową funkcjonalność najlepiej jest przetestować na nowym świeżym prostym projekcie i jak tam wszystko zacznie działać jak należy, to dopiero wdrażaj ją do swojego głównego&amp;nbsp;projektu.&lt;/strong&gt;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1796/aplikacja-mailowa&amp;show=1797#a1797</guid>
<pubDate>Mon, 11 Dec 2023 14:05:27 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Aplikacja pogodowa</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1740/aplikacja-pogodowa&amp;show=1758#a1758</link>
<description>Nieaktualne, problem rozwiązany :)</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1740/aplikacja-pogodowa&amp;show=1758#a1758</guid>
<pubDate>Sat, 26 Aug 2023 12:37:52 +0000</pubDate>
</item>
<item>
<title>Aplikacja pogodowa</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1108/aplikacja-pogodowa</link>
<description>Cześć.&lt;br /&gt;
&lt;br /&gt;
Kończę właśnie aplikację pogodową i praktycnzie jedyną rzeczą jaka mi została, to zapamiętywanie ostatnio wybranych miast i zapisywanie do pliku. Tu mam zagwozdkę, bo dane na temat tych miast mam w MainViewController, a dostęp do metody stop() w głównym launcherze, a po drodze jeszcze jest ViewFactory. Z tego co wyczytałem w internecie i z dokumentacji, statyczny getter w controllerze nie wchodzi w grę. Czy ktoś mógłby mnie nakierować z której strony ugryźć temat, żeby to nie tylko działało, ale miało też ręce i nogi pod względem poprawności z wzorcami projektowymi&amp;gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1108/aplikacja-pogodowa</guid>
<pubDate>Thu, 10 Nov 2022 23:27:47 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Aplikacja pogodowa - dodawanie danych prognozy</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1036/aplikacja-pogodowa-dodawanie-danych-prognozy&amp;show=1037#a1037</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;Jeśli chcesz użyć kontrolera to nie można go stworzyć przez &quot;new&quot; (konstruktor) ponieważ nie będzie miał zainicjlizowanych pól &quot;@FXML&quot; oraz nie będzie &quot;widziany&quot; przez Java Fx. Aby stworzyć kontroler masz dwie drogi:&lt;/p&gt;

&lt;p&gt;1) przez FxmlLoader - tak jak to robisz w klasie ViewFactory:&lt;/p&gt;

&lt;pre&gt;
&lt;strong&gt;FXMLLoader &lt;/strong&gt;&lt;span style=&quot;color:#c66d5e&quot;&gt;fxmlLoader &lt;/span&gt;= &lt;span style=&quot;color:#cc844f&quot;&gt;new &lt;/span&gt;FXMLLoader(getClass().getResource(&lt;span style=&quot;color:#c66d5e&quot;&gt;controller&lt;/span&gt;.getFxmlName()))&lt;span style=&quot;color:#cc7832&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;2) korzystając z nested controller - więcej o tym tutaj: https://riptutorial.com/javafx/example/7285/nested-controllers&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Poniżej patch (bardzo na szybko to robiłem), jak mogłoby to wyglądać dla sposobu 1.&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
Index: src/main/java/pl/martabuchalska/view/ViewFactory.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
&amp;lt;+&amp;gt;UTF-8
===================================================================
diff --git a/src/main/java/pl/martabuchalska/view/ViewFactory.java b/src/main/java/pl/martabuchalska/view/ViewFactory.java
--- a/src/main/java/pl/martabuchalska/view/ViewFactory.java	(revision ad22b3a2d142cb4618ea418d31060c7195758bf2)
+++ b/src/main/java/pl/martabuchalska/view/ViewFactory.java	(date 1658941433415)
@@ -8,7 +8,6 @@
 import pl.martabuchalska.controller.ForecastDisplayController;
 import pl.martabuchalska.controller.MainPageController;
 import pl.martabuchalska.controller.WeatherDisplayController;
-import pl.martabuchalska.model.ForecastData;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -33,6 +32,13 @@
         //close previous window
     }
 
+    public static ForecastDisplayController showForecast() {
+        System.out.println(&quot;Showing weather display window&quot;);
+        ForecastDisplayController controller = new ForecastDisplayController(null, &quot;ForecastDisplayView.fxml&quot;);
+        initializeStage(controller);
+        return controller;
+    }
+
 
 
 
@@ -47,8 +53,8 @@
         return parent;
     }
 
-    private void initializeStage(BaseController controller){
-        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(controller.getFxmlName()));
+    private static void initializeStage(BaseController controller){
+        FXMLLoader fxmlLoader = new FXMLLoader(ViewFactory.class.getResource(controller.getFxmlName()));
         fxmlLoader.setController(controller);
 
         Parent parent;
Index: src/main/java/pl/martabuchalska/controller/WeatherDisplayController.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
&amp;lt;+&amp;gt;UTF-8
===================================================================
diff --git a/src/main/java/pl/martabuchalska/controller/WeatherDisplayController.java b/src/main/java/pl/martabuchalska/controller/WeatherDisplayController.java
--- a/src/main/java/pl/martabuchalska/controller/WeatherDisplayController.java	(revision ad22b3a2d142cb4618ea418d31060c7195758bf2)
+++ b/src/main/java/pl/martabuchalska/controller/WeatherDisplayController.java	(date 1658941365851)
@@ -4,7 +4,6 @@
 import javafx.fxml.FXML;
 import javafx.fxml.Initializable;
 import javafx.scene.Group;
-import javafx.scene.Node;
 import javafx.scene.Parent;
 import javafx.scene.control.Label;
 import javafx.scene.image.Image;
@@ -138,7 +137,7 @@
     private void populateInitialForecastBox(ForecastData forecastData) throws IOException {
 
         ViewFactory viewFactory = new ViewFactory();
-        ForecastDisplayController forecastDisplayController = new ForecastDisplayController(viewFactory, &quot;ForecastDisplayView.fxml&quot;);
+        ForecastDisplayController forecastDisplayController = viewFactory.showForecast();
         forecastDisplayController.setForecastData(forecastData);
         forecastDisplayController.getTrainingFunciton(); // works fine
 
&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Daj znać czy o to chodziło :)&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1036/aplikacja-pogodowa-dodawanie-danych-prognozy&amp;show=1037#a1037</guid>
<pubDate>Wed, 27 Jul 2022 17:09:48 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Programowanie funkcyjne a logger</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1007/programowanie-funkcyjne-a-logger&amp;show=1008#a1008</link>
<description>Rozumiem, ze to do Twojej apki a nie do pracy ? Jeżeli tak - jako ewentualny user - wybieram opcje nr 2 ponieważ jest bardziej human-readable, jako programista myślę, że chyba lepiej zrobić interfejs loggera i wstrzykiwać do klas gdzie potrzebujesz. Na pewno Java ma tez jakieś biblioteki/templatki/wbudowane mechanizmy do tego.</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1007/programowanie-funkcyjne-a-logger&amp;show=1008#a1008</guid>
<pubDate>Wed, 06 Jul 2022 18:45:57 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: JavaFX + Maven - środowisko nie widzi plików Java FX (aplikacja pogodowa)</title>
<link>http://forum.przyszlyprogramista.pl/?qa=977/javafx-maven-%C5%9Brodowisko-widzi-plik%C3%B3w-java-aplikacja-pogodowa&amp;show=1001#a1001</link>
<description>Link do repo: &lt;a href=&quot;https://github.com/MBuchalska/WhatWeather.git&quot; rel=&quot;nofollow&quot;&gt;https://github.com/MBuchalska/WhatWeather.git&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
W kodzie nie ma jeszcze w zasadzie nic, bo chciałam sprawdzić czy wywoła mi się bazowy widok, bez żadnej logiki. Dodałam do pom bibliotekę gson, jeszcze jej nie używałam. Na próbę dodałam ją też do module-info ale nie zwraca błędu.&lt;br /&gt;
&lt;br /&gt;
Próba uruchomienia daje mi błąd: java: module not found: javafx.fxml &amp;nbsp;; java: module not found: javafx.controls&lt;br /&gt;
&lt;br /&gt;
mvn clean install zwraca błąd: &amp;nbsp;Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project WhatWeather: Execution default-compile of goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile failed: Cannot invoke &amp;quot;java.lang.Throwable.getCause()&amp;quot; because &amp;quot;cause&amp;quot; is null&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Robiłam na tym projekcie próbę połączenia z API czysto w klasie Launcher, bez dodatkowych pakietów i tylko wypisywałam wyniki w terminalu, ale to działało bez problemów.</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=977/javafx-maven-%C5%9Brodowisko-widzi-plik%C3%B3w-java-aplikacja-pogodowa&amp;show=1001#a1001</guid>
<pubDate>Mon, 04 Jul 2022 21:50:09 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Tworzenie pliku jar - błędy</title>
<link>http://forum.przyszlyprogramista.pl/?qa=964/tworzenie-pliku-jar-b%C5%82%C4%99dy&amp;show=967#a967</link>
<description>Cześć, na pierwszy rzut oka ciężko powiedzieć w czym leży problem. Czy mógłbyś podać pełny log z wywołania mavena (komenda mvn clean install) i podać linka do repozytorium na githubie? Będzie dużo łatwiej pomóc mając więcej informacji :)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=964/tworzenie-pliku-jar-b%C5%82%C4%99dy&amp;show=967#a967</guid>
<pubDate>Mon, 06 Jun 2022 16:10:03 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Przekazywanie obiektów/danych między kontrolerami, w tym samym oknie aplikacji</title>
<link>http://forum.przyszlyprogramista.pl/?qa=945/przekazywanie-obiekt%C3%B3w-danych-mi%C4%99dzy-kontrolerami-aplikacji&amp;show=950#a950</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
Nie analizowałem jeszcze kodu ale po opisie nasuwa się jedno pytanie: dlaczego chcesz przesłać obiekt z głównego kontrolera do pozostałych zamiast pobierać dane bezpośrednio w tych pozostałych? Metody do pobrania danych można przenieść do osobnej klasy i stworzyć jej instancje w kontrolerach. &lt;br /&gt;
&lt;br /&gt;
Druga podpowiedź gdybyś chciał zostać przy bieżącym rozwiązaniu: nie wiem jak wygląda Twoja aplikacja ale przeważnie dane dla kolejnych dni są wyświetlane w ten sam sposób. Więc może zamiast tworzyć sztywno 5 kafelków, stwórz osobny fxml dla jednego kafelka i w kontrolerze głównym dodawaj kolejne obiekty tego kafelka do ogólnego pojemnika np. za pomocą pętli.&lt;br /&gt;
&lt;br /&gt;
Wiem, że trochę ogólnikowo ale może uda się na coś naprowadzić. Jak będziesz potrzebował to postaram się rzucić okiem na kod.</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=945/przekazywanie-obiekt%C3%B3w-danych-mi%C4%99dzy-kontrolerami-aplikacji&amp;show=950#a950</guid>
<pubDate>Mon, 16 May 2022 21:30:47 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Spring -&gt; MySQL</title>
<link>http://forum.przyszlyprogramista.pl/?qa=931/spring-mysql&amp;show=935#a935</link>
<description>&lt;p&gt;DT Netmark'u jednak znał rozwiązanie &lt;img alt=&quot;smiley&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/regular_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;smiley&quot;&gt;&lt;/p&gt;

&lt;p&gt;W adresie url trzeba usunąć numer portu (co było dla mnie dziwne, ale zadziałało) oraz w cPanelu trzeba umożliwić dostęp do bazy dla zdalnego urządzenia, z którego próbujesz uzyskać dostęp do bazy (pojedynczego za pomocą adresu IP bądź dla dowolnego za pomocą znaku %)&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=931/spring-mysql&amp;show=935#a935</guid>
<pubDate>Tue, 10 May 2022 06:47:34 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: TestFx + mockowanie</title>
<link>http://forum.przyszlyprogramista.pl/?qa=804/testfx-mockowanie&amp;show=816#a816</link>
<description>Hej,&lt;br /&gt;
&lt;br /&gt;
Dzięki za cierpliwość :) a więc tak:&lt;br /&gt;
&lt;br /&gt;
Jeśli chodzi o dwa podejścia które przedstawiłeś, to pierwsze z nich to bardziej test funkcjonalny / systemowy niż jednostkowy, natomiast drugie jest bliższe testowi jednostkowemu. Oba podejścia są poprawne i należy jest stosować zależnie od sytuacji, z tym, że zazwyczaj jednostkowe pisać łatwiej, więc tam obsługujemy wszystkie przypadki brzegowe, natomiast w testach systemowych mamy tylko główne, najczęściej pozytywne scenariusze. Z tym, że jakbyś zdecydował się na test systemowy, to nie sprawdzałbym raczej, czy plik jest tworzony, tylko skupił się na weryfikacji tego co widzi użytkownik i czy to jest poprawne (podejście blackbox: &lt;a href=&quot;https://www.imperva.com/learn/application-security/black-box-testing/&quot; rel=&quot;nofollow&quot;&gt;https://www.imperva.com/learn/application-security/black-box-testing/&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
Natomiast jeśli o mockowanie, to jak zauważyłeś przy obecnym wyglądzie kodu to nie zadziała, ponieważ testowany kontroler sam zarządza klasami ConvertingCountryNames oraz WeatherClient. Należy tu zastosować odwrócenie kontroli (więcej &lt;a href=&quot;https://stackoverflow.com/a/3140&quot; rel=&quot;nofollow&quot;&gt;https://stackoverflow.com/a/3140&lt;/a&gt;) innymi słowy instancje tych klas, które chcesz mockować powinny być dostarczone przez konstruktor/inny sposób z zewnątrz (czyli testowany kontroler traci nad nimi kontrole). W ten sposób w kodzie produkcyjnym dostarczysz odpowiednie implementacje, a w kodzie testowym mocki - jeśli będziesz miał problem aby to wdrożyć, to wrzuć to na jakiegoś brancha i zostaw mi linka to zerkne na kod.&lt;br /&gt;
&lt;br /&gt;
P.S nie widzę całego testu, ale aby adnotacje typu @InjectMocks zadziałały potrzebujesz użyć MockitoExtension (&lt;a href=&quot;https://www.baeldung.com/mockito-junit-5-extension#building-the-test-class&quot; rel=&quot;nofollow&quot;&gt;https://www.baeldung.com/mockito-junit-5-extension#building-the-test-class&lt;/a&gt;)</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=804/testfx-mockowanie&amp;show=816#a816</guid>
<pubDate>Mon, 03 Jan 2022 17:49:59 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Aplikacja pogodowa - testy jednostkowe</title>
<link>http://forum.przyszlyprogramista.pl/?qa=777/aplikacja-pogodowa-testy-jednostkowe&amp;show=780#a780</link>
<description>Hej,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Masz dwie opcje:&lt;br /&gt;
&lt;br /&gt;
1. Użyć biblioteki test-fx aby testować interakcje z interfejsem użytkownika. Trudne do napisania i trudne w utrzymaniu, ale o tyle fajne, że testują aplikacje jako black box - interesuje Cie wygląd interfejsu i reakcje na akcje użytkownika, a nie jak wygląda kod. &lt;a href=&quot;https://github.com/TestFX/TestFX&quot; rel=&quot;nofollow&quot;&gt;https://github.com/TestFX/TestFX&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. Wydzielić ile logiki możesz (w Twoim przypadku na pierwszy rzut oka nie ma tego za wiele) do osobnych klas z metodą publiczną. Wtedy testuje to klasycznie, a Controller po prostu korzysta z tych z klas jako usług.&lt;br /&gt;
&lt;br /&gt;
Oba podejścia mają swoje wady i zalety, warto znać oba, bo w zależności od sytuacji można skorzystać z jednego lub drugiego. Daj znać czy rozjaśnia Ci to trochę temat.</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=777/aplikacja-pogodowa-testy-jednostkowe&amp;show=780#a780</guid>
<pubDate>Tue, 14 Dec 2021 15:05:38 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Kilka pytań odnośnie planowania projektu w Javie</title>
<link>http://forum.przyszlyprogramista.pl/?qa=770/kilka-pyta%C5%84-odno%C5%9Bnie-planowania-projektu-w-javie&amp;show=775#a775</link>
<description>Hej :)&lt;br /&gt;
&lt;br /&gt;
Ad 1:&lt;br /&gt;
&lt;br /&gt;
Dobrze podsumowałeś temat i sam sobie odpowiedziałeś &amp;nbsp;:) - ja osobiście też preferuje drugie podejście, wydaje mi się, że taka struktura jest lepsza i jak chcesz użyć klasy, której się nie powinno to bardziej to widać. Pierwsze podejście też jest okej, wciąż widzę, że w wielu projektach właśnie w ten sposób się tworzy kod.&lt;br /&gt;
&lt;br /&gt;
Ad 2:&lt;br /&gt;
&lt;br /&gt;
Tu już odpowiedź nie jest taka prosta i oczywiście zależy :) Jeżeli dany backend jest używany tylko przez frontend i nikogo więcej, to w zasadzie tak jak jest wygodnie + wszędzie tak samo aby było spójnie. Jeśli jednak dany backend oprócz frontendu miałby innych klientów, to już trzeba pomyśleć co dane API robi i jakie dane ma zwracać. Czy dane nie posortowane mają sens? Czy każdy kto zawoła API i tak musi je posortować aby do czego kolwiek się nadawały? Jeśli każdy klient miałby zrobić tę samą pracę, to można to zrobić po stronie backendu raz a dobrze :)&lt;br /&gt;
&lt;br /&gt;
No i jeszcze kwestia kontraktu i zaufania - jeśli tworzysz frontend, który woła backend który nie jest pod Twoją kontrolą, to ja bym tutaj zawsze sortował we frontendzie, chyba, że specyfikacja backendu jasno mówi, że dane wracają posortowane.&lt;br /&gt;
&lt;br /&gt;
Generalnie tu nie będzie złotej zasady i dla każdego przypadku trzeba by się zastanowić.&lt;br /&gt;
&lt;br /&gt;
Mam nadzieję, że nie zamieszałem za bardzo, pozdrawiam.</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=770/kilka-pyta%C5%84-odno%C5%9Bnie-planowania-projektu-w-javie&amp;show=775#a775</guid>
<pubDate>Mon, 13 Dec 2021 19:40:08 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Testowanie funkcjonalności JavaFX</title>
<link>http://forum.przyszlyprogramista.pl/?qa=749/testowanie-funkcjonalno%C5%9Bci-javafx&amp;show=753#a753</link>
<description>Hej,&lt;br /&gt;
&lt;br /&gt;
Uważam podobnie jak napisał Bartek030, mogę tylko rozwinąć temat JavyFX - kontrolery testuje się w dość trudny sposób, ale użycie TestFX (&lt;a href=&quot;https://github.com/TestFX/TestFX&quot; rel=&quot;nofollow&quot;&gt;https://github.com/TestFX/TestFX&lt;/a&gt;) to jest dobry pomysł, jednak należy uważać z tymi testami, ponieważ będą dużo trudniejsze do napisania oraz utrzymania od testów standardowych klas. Jak dla mnie z ww. powodów kontroler nie musi mieć wcale testów o ile ma tylko niezbędną logikę wypełnienia widoku (czyli kontroler woła jakąś klase aby mu dostarczyła prognoze pogody i tylko przepisuje z wartości zwracanej do odpowiednich kontrolek UI). Jeśli chcesz zgłebić temat to warto napisać może przynajmniej jeden czy dwa testy dla najważniejszych zachowań kontrolera (czyli pewnie confirmButtonAction w Twoim przypadku).</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=749/testowanie-funkcjonalno%C5%9Bci-javafx&amp;show=753#a753</guid>
<pubDate>Mon, 29 Nov 2021 18:04:25 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Testy jednostkowe - artykuł o TDD</title>
<link>http://forum.przyszlyprogramista.pl/?qa=741/testy-jednostkowe-artyku%C5%82-o-tdd&amp;show=747#a747</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;Spróbuj zamockować tę interakcję w następujący sposób:&lt;/p&gt;

&lt;pre class=&quot;brush:java;&quot;&gt;
Mockito.doReturn(true).when(weaponSpy).isDistanceSufficient(entity);&lt;/pre&gt;

&lt;p&gt;Jeśli chodzi samo podejście, to mam pytanie, czy metoda `isDistanceSufficient` może być prywatna? Może najlepiej z punktu widzenia całego projektu, było by ukryć tę metodę jako prywatną.&lt;/p&gt;

&lt;p&gt;Pondato ja bym tutaj zrezygnował z tego mockowania, bo skoro chcesz przetestować metodę `doDamage`, której częścią jest `isDistanceSufficient` to jak zamockujesz tę drugą, to test nie będzie kompletny - chyba że napiszesz osobne testy dla metody `isDistanceSufficient`. Jednak w pierwszej kolejności upewniłbym się, czy metoda `isDistanceSufficient` powinna być o dostępie publicznym/pakietowym czy jednak zmienić ją na prywatną i traktować jako część implementacji.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Daj znać czy rozjaśniłem temat :)&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=741/testy-jednostkowe-artyku%C5%82-o-tdd&amp;show=747#a747</guid>
<pubDate>Thu, 25 Nov 2021 15:46:59 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Testy jednostkowe - który lepszy?</title>
<link>http://forum.przyszlyprogramista.pl/?qa=682/testy-jednostkowe-kt%C3%B3ry-lepszy&amp;show=683#a683</link>
<description>Hej,&lt;br /&gt;
&lt;br /&gt;
Twoje rozkminy są jak najbardziej OK :) zdecydowanie podejście, aby nie zagłębiać się jak wygląda implementacja danej klasy jest ok i im mniej możemy odnosić się do szczegółów implementacji podmiotu którego testujemy tym lepiej.&lt;br /&gt;
&lt;br /&gt;
Jeśli chodzi o porównanie tych testów to wg mnie test numer jeden jest dokładniejszy. Zwróc uwagę, że test nr 2 jedynie sprawdza czy metoda load cargo została wywołana (czyli defacto tutaj jest odwołanie do implementacji). Natomiast test nr jeden weryfikuje w liniach 28 i 29 poprawność wyniku, nie skupiając się na implementacji (linijke 27 ja bym sobie darował). Czy chodzi Ci właśnie głównie o linijke 27 z &amp;nbsp;verify(cargoRepository).findCargoByName(&amp;quot;package&amp;quot;); ?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Daj znać, czy rozjaśnia Ci to temat :)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
P.S nie należy mockować tzw. Value Object's czyli klas które głównie przenoszą dane, takie jak Unit. Typowo mockuje się klasy typu *Service, *Repository itp.</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=682/testy-jednostkowe-kt%C3%B3ry-lepszy&amp;show=683#a683</guid>
<pubDate>Mon, 08 Nov 2021 16:15:52 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Java - narzędzia do tworzenia widoku aplikacji</title>
<link>http://forum.przyszlyprogramista.pl/?qa=634/java-narz%C4%99dzia-do-tworzenia-widoku-aplikacji&amp;show=644#a644</link>
<description>Hej,&lt;br /&gt;
&lt;br /&gt;
W moim doświadczeniu wygląda to tak, że ostatni raz widok aplikacji webowej budowałem w Javie w okolicach 2012 roku :) Jest do tego narzędzie, nazywa się Java Server Faces (&lt;a href=&quot;https://www.tutorialspoint.com/jsf/jsf_quick_guide.htm),&quot; rel=&quot;nofollow&quot;&gt;https://www.tutorialspoint.com/jsf/jsf_quick_guide.htm),&lt;/a&gt; w skrócie JSF. Radziłbym skorzytsać z podejścia opisanego poniżej, ponieważ nie słyszałem aby w nowych projektach ktoś jeszcze stosował technologie typu JSF.&lt;br /&gt;
&lt;br /&gt;
Obecnie odchodzi się od tego podejścia - Java stała się głównie językiem backendu / strony serwerowej, natomiast widok/interfejs/frontend tworzy się głównie w technologiach opartych o JavaScript. Tobie też polecam tak do tego podejść, typowo wygląda to tak:&lt;br /&gt;
&lt;br /&gt;
1. Backend jest napisany w Javie i wystawia REST API.&lt;br /&gt;
&lt;br /&gt;
2. Frontend gdy potrzebuje pobrać dane z backendu wywołuje zapytania typu AJAX. Czyli pobiera dane tak jak aplikacja pogoda pobierała JSONa z API openweathermap, z tą różnicą, że pobiera bezpośrednio JavaScript czyli przeglądarka użytkownika końcowego.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Dlaczego tak? Daje to szereg możliwości - dzięki temu, że powstaje REST API, można dodać potem kolejny widok, np. w postaci aplikacji Android. Nie trzeba też znać Javy, aby rozwijać cześć webową aplikacji (dla Ciebie może to być minus, ale generalnie świat frontendu jak pisałem należy do JSa). Do tego dochodzi bezpieczeństwo, skalowalność itp.</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=634/java-narz%C4%99dzia-do-tworzenia-widoku-aplikacji&amp;show=644#a644</guid>
<pubDate>Tue, 26 Oct 2021 11:59:26 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Java — jak zamockować połączenie z API?</title>
<link>http://forum.przyszlyprogramista.pl/?qa=591/java-jak-zamockowa%C4%87-po%C5%82%C4%85czenie-z-api&amp;show=592#a592</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;Pomysł z wiremockiem jest dobry, ale wtedy byłby to bardziej test integracyjny niż jednostkowy (ale takie też są przydatne). Aby to zadziałało w obecnej formie musiałbyś zmienić klase &lt;a href=&quot;https://github.com/suabicii/jfx-weather/blob/master/src/main/java/pl/michaelslabikovsky/model/WeatherData.java&quot; rel=&quot;nofollow&quot;&gt;https://github.com/suabicii/jfx-weather/blob/master/src/main/java/pl/michaelslabikovsky/model/WeatherData.java&lt;/a&gt; tak aby URL/host był podawany przez konstruktor. Wtedy konstruując obiekt w kodzie produkcyjnym używasz tego URL/hosta co dotychczas, a w kodzie testowym używasz localhosta.&lt;/p&gt;

&lt;p&gt;Jest też druga opcja, aby w ogóle nie robić połączenia do zewnętrznego serwera http (czy to wiremocka czy prawdziwego). Wymaga to wprowadzenia dodatkowe poziomu abstrakcji, nazwijmy go APIClient, pseudokod poniżej:&lt;/p&gt;

&lt;pre class=&quot;brush:java;&quot;&gt;
public void connectToApi(...) {

     apiClient.call();
}


public interface ApiClient() {
  String call(String url); //could be something else than String
}


public class HttpApiClient() implements ApiClient {
  
  public String call(String url) {
    // production implementation
  }

}

public class StubApiClient() implements ApiClient { //you can use mockito library instead
  private final String response;
  public ApiClient(String response) {
    this.response = response;
  }

  public String call(String url) {
    return response;
  }

}&lt;/pre&gt;

&lt;p&gt;W ten sposób Twój kod jest odseparowany za pomocą ApiClient od sposobu pobrania tych danych - w kodzie produkcyjnym będzie to faktycznie żądanie HTTP, natomiast w kodzie testowym możesz użyć dowolnie innej implementacji, bądz też mocka za pomocą biblioteki mockito.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Mam nadzieję, że troche rozjaśniłem temat :).&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=591/java-jak-zamockowa%C4%87-po%C5%82%C4%85czenie-z-api&amp;show=592#a592</guid>
<pubDate>Fri, 17 Sep 2021 14:25:55 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: JavaFX — ładowanie danych z API w tle i trzy wersje na trzy systemy zamiast jednej</title>
<link>http://forum.przyszlyprogramista.pl/?qa=565/javafx-%C5%82adowanie-danych-trzy-wersje-systemy-zamiast-jednej&amp;show=570#a570</link>
<description>&lt;p&gt;Hej :)&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Jeśli chodzi o przetwarzanie kodu w tle, to wydaje mi się, że nie potrzebnie używasz Platform.runLater -&amp;gt; zapoznaj się z &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.oracle.com/javase/8/javafx/api/javafx/application/Platform.html#runLater-java.lang.Runnable-&quot;&gt;dokumentacją&lt;/a&gt; tej metody, kluczowy fragment:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Run the specified Runnable on the JavaFX Application Thread at some unspecified time in the future.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Oznacza to, że Runnable który przekażesz &lt;strong&gt;zostanie uruchomiony w wątku JavaFX&lt;/strong&gt; - a to jest ten wątek, którego nie chcesz blokować. Jeśli zamienisz linijke 121 w MainWindowController na&lt;/p&gt;

&lt;pre class=&quot;brush:java;&quot;&gt;
runnable.run();&lt;/pre&gt;

&lt;p&gt;To progress bar działa i pobieranie wykonuje się w tle, tyle że później dostaniesz błąd że chcesz zrobić zmianę GUI poza wątkiem JavaFX.&lt;/p&gt;

&lt;p&gt;Aby to zadziałało, musisz trochę przerobić przepływ danych: Runnable/Callable służy do sciągnięcia danych, po sciągnięciu danych powiadamia kontroler, który już w głównym wątku JavaFX uzyje tych danych:&lt;/p&gt;

&lt;p&gt;JavaFX Thread -&amp;gt; Uruchom Runnable aby pobrać dane&lt;/p&gt;

&lt;p&gt;Runnable -&amp;gt; Pobierz dane i powiadom wątek główny&lt;/p&gt;

&lt;p&gt;JavaFx Thread -&amp;gt; pobierz dane i narysuj na GUI.&lt;/p&gt;

&lt;p&gt;---------&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Teraz drugie pytanie: sprawdziłem jak to wygląda na MacOS i wg mnie nie jest źle, bo dostaje zipa, który po rozpakowaniu ma skrypt uruchamiający aplikacje w poprawny sposób - i to jest ok. Natomiast jeśli chodzi o samo budowanie aplikacji, to wydaje mi się, że potrzebujesz 3 różnych buildów na 3 różne systemy operacyjne (ponieważ inne implementacje GUI są potrzebne). Czyli 3 osobne konfiguracje tworzą 3 jary i każdy działa tylko na jednym systemie operacyjnym. Stworzenie jednego jara działającego na każdym systemie może być trudne + podatne na błędy. Jednak jakbyś dalej chciał iść w tym temacie, to zobacz sobie plugin jlink oraz rzuć okiem na ten wątek: &lt;a href=&quot;https://github.com/beryx/badass-jlink-plugin/issues/189&quot; rel=&quot;nofollow&quot;&gt;https://github.com/beryx/badass-jlink-plugin/issues/189&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;To tyle ode mnie, daj znać czy to Ci pomogło, jak coś to będziemy drążyć dalej :)&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=565/javafx-%C5%82adowanie-danych-trzy-wersje-systemy-zamiast-jednej&amp;show=570#a570</guid>
<pubDate>Mon, 06 Sep 2021 18:57:11 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: JavaFX - stylizowanie</title>
<link>http://forum.przyszlyprogramista.pl/?qa=504/javafx-stylizowanie&amp;show=533#a533</link>
<description>Na podstawie uwag Marcina, naszego speca od Javy, podsyłam dla potomnych jeden z artykułów o tym jak osiągnąć responsywność w JavieFx:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://guigarage.com/2014/11/responsive-design-javafx/&quot; rel=&quot;nofollow&quot;&gt;https://guigarage.com/2014/11/responsive-design-javafx/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Nad taką stylizacją - podobnie jak w programowaniu webowym - łatwiej zapanować ustawiając odpowiednie klasy dla naszych elementów i następnie definiując style w pliku .css</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=504/javafx-stylizowanie&amp;show=533#a533</guid>
<pubDate>Mon, 09 Aug 2021 12:50:07 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Openweathermap - parsowanie jsona</title>
<link>http://forum.przyszlyprogramista.pl/?qa=526/openweathermap-parsowanie-jsona&amp;show=529#a529</link>
<description>&lt;p&gt;Do listy parsujesz głównie dane, które są zapisane w jsonie jako tabela, czyli są w nawiasach kwadratowych. Ogólnie w plikach json spotkałem się z 3 typami danych: zwykłe pojedyncze pola, obiekty, które mogą zawierać zwykłe pola, obiekty lub tabele i właśnie tabele, które mogą zawierać typ zwykłego pola lub obiektu. I listy służą właśnie do parsowania tabel.&lt;/p&gt;

&lt;p&gt;Nie jestem pewien czy nadają się one do parsowania pól i obiektów ale raczej generowanie listy elementów, która zawierałaby tylko jeden element trochę mija się z celem.&lt;/p&gt;

&lt;p&gt;Poniżej wrzucam dwa linki, które mogą pomóc zrozumieć temat:&lt;/p&gt;

&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=BbI8FdQOKNs&quot;&gt;FILM&lt;/a&gt;, na którym jest pokazany jak można skorzystać z biblioteki gson w maven'ie, w tym jak tworzyć i odczytywać json'y - polecam obejrzeć wszystkie 3 odcinki,&lt;/p&gt;

&lt;p&gt;oraz &lt;a rel=&quot;nofollow&quot; href=&quot;https://forum.pasja-informatyki.pl/547488/javafx-pobieranie-danych-z-pliku-json-za-pomoca-gson&quot;&gt;LINK&lt;/a&gt; do tematu na forum, gdzie temat json'a w Javie zostaje wyjaśniony trochę szerzej.&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=526/openweathermap-parsowanie-jsona&amp;show=529#a529</guid>
<pubDate>Thu, 05 Aug 2021 16:22:22 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Klient Pocztowy - javax.net.ssl.SSLHandshakeException</title>
<link>http://forum.przyszlyprogramista.pl/?qa=503/klient-pocztowy-javax-net-ssl-sslhandshakeexception&amp;show=519#a519</link>
<description>&lt;p&gt;Cześć,&lt;br&gt;
&lt;br&gt;
podkleję się pod temat, ponieważ mam problem dokładnie w tym samym miejscu, natomiast błąd wygląda nieco inaczej (treść poniżej), dodatkową informacją jest fakt, że błąd pojawił się po reinstalacji systemu windows, przed wszystko działało prawidłowo &amp;nbsp;(projekt pobrałem oczywiście z gita &lt;a href=&quot;https://github.com/NewLukasz/FirePost&quot; rel=&quot;nofollow&quot;&gt;https://github.com/NewLukasz/FirePost&lt;/a&gt;).&lt;br&gt;
&lt;br&gt;
Czy może ktoś spotkał się z tym błędem?&lt;br&gt;
&lt;br&gt;
Z góry dziękuję za pomoc.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:bash;&quot;&gt;
javax.mail.MessagingException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate);
  nested exception is:
    javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
    at mail@1.4.7/com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:670)
    at mail@1.4.7/javax.mail.Service.connect(Service.java:295)
    at mail@1.4.7/javax.mail.Service.connect(Service.java:176)
    at com.firepost/com.firepost.controller.services.LoginService.login(LoginService.java:30)
    at com.firepost/com.firepost.controller.services.LoginService$2.call(LoginService.java:55)
    at com.firepost/com.firepost.controller.services.LoginService$2.call(LoginService.java:52)
    at javafx.graphics/javafx.concurrent.Task$TaskCallable.call(Task.java:1425)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at javafx.graphics/javafx.concurrent.Service.lambda$executeTask$6(Service.java:725)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at javafx.graphics/javafx.concurrent.Service.lambda$executeTask$7(Service.java:724)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
    at java.base/sun.security.ssl.HandshakeContext.&amp;lt;init&amp;gt;(HandshakeContext.java:170)
    at java.base/sun.security.ssl.ClientHandshakeContext.&amp;lt;init&amp;gt;(ClientHandshakeContext.java:98)
    at java.base/sun.security.ssl.TransportContext.kickstart(TransportContext.java:238)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:394)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:373)
    at mail@1.4.7/com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:549)
    at mail@1.4.7/com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:354)
    at mail@1.4.7/com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:237)
    at mail@1.4.7/com.sun.mail.iap.Protocol.&amp;lt;init&amp;gt;(Protocol.java:116)
    at mail@1.4.7/com.sun.mail.imap.protocol.IMAPProtocol.&amp;lt;init&amp;gt;(IMAPProtocol.java:115)
    at mail@1.4.7/com.sun.mail.imap.IMAPStore.newIMAPProtocol(IMAPStore.java:685)
    at mail@1.4.7/com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:636)
    ... 13 more&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=503/klient-pocztowy-javax-net-ssl-sslhandshakeexception&amp;show=519#a519</guid>
<pubDate>Tue, 03 Aug 2021 16:58:07 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: JavaFX - problem z czcionką tylko w systemie Windows</title>
<link>http://forum.przyszlyprogramista.pl/?qa=485/javafx-problem-z-czcionk%C4%85-tylko-w-systemie-windows&amp;show=502#a502</link>
<description>Hej, nie mam czasu zaglądnąć do kodu, ale poczytaj o kodowaniu znaków, pewnie Twoja aplikacja używa jakiegoś kodowania domyślnego dla danego systemu operacyjnego i stąd te problemy. Ja bym na pierwszy strzał ustawił UTF-8 wszędzie.</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=485/javafx-problem-z-czcionk%C4%85-tylko-w-systemie-windows&amp;show=502#a502</guid>
<pubDate>Sat, 31 Jul 2021 06:37:16 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: JavaFx - problemy z uruchomieniem aplikacji</title>
<link>http://forum.przyszlyprogramista.pl/?qa=481/javafx-problemy-z-uruchomieniem-aplikacji&amp;show=482#a482</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
Miałem podobny problem a wynikał z błędnie wpisanej ścieżki do pliku fxml. Dodatkowo jeśli budujesz aplikacje na maven'ie to wszystkie pliki, które nie mają rozszerzenia .java powinny być w katalogu resources (w tym takze pliki fxml)</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=481/javafx-problemy-z-uruchomieniem-aplikacji&amp;show=482#a482</guid>
<pubDate>Mon, 26 Jul 2021 15:01:45 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: JavaFx — problem z wyświetlaniem danych z API w oknie aplikacji</title>
<link>http://forum.przyszlyprogramista.pl/?qa=404/javafx-problem-z-wy%C5%9Bwietlaniem-danych-api-oknie-aplikacji&amp;show=410#a410</link>
<description>&lt;p&gt;Hej :) przejrzałem Twój kod, problem leży w tym, jak wydzieliłeś kontrolery CurrentWeatherCityOneController i CurrentWeatherCityTwoController. Jeżeli definiujesz widoki w plikach FXML, nigdy nie powinieneś robić ręcznej inicjalizacji jak teraz robisz w konstruktorach:&lt;/p&gt;

&lt;pre class=&quot;brush:java;&quot;&gt;
   public CurrentWeatherCityOneController() {
        currentWeatherCityOneImg = new ImageView();
        currentWeatherResultCityOne = new Label();
        currentTemperatureCityOne = new Label();
        currentPressureCityOne = new Label();
        currentWindSpeedCityOne = new Label();
        currentHumidityCityOne = new Label();
    }&lt;/pre&gt;

&lt;p&gt;Zauważ, że w MainController nie robisz inicjalizacji pól poniżej, tylko one są zainicjalizowane przez FXMLLoader&lt;/p&gt;

&lt;pre class=&quot;brush:java;&quot;&gt;
 @FXML
    private ChoiceBox&amp;lt;String&amp;gt; cityOneChoiceBox;

    @FXML
    private ChoiceBox&amp;lt;String&amp;gt; cityTwoChoiceBox;&lt;/pre&gt;

&lt;p&gt;Zacznij od tego, tutaj przesyłam krótki tutorial jak poprawnie zrobić &lt;em&gt;nested components&lt;/em&gt; w JavaFX: &lt;a rel=&quot;nofollow&quot; href=&quot;https://riptutorial.com/javafx/example/7285/nested-controllers&quot;&gt;https://riptutorial.com/javafx/example/7285/nested-controllers&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Powodzenia :)&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=404/javafx-problem-z-wy%C5%9Bwietlaniem-danych-api-oknie-aplikacji&amp;show=410#a410</guid>
<pubDate>Wed, 30 Jun 2021 18:25:43 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Maven i JavaFX w IntellijIDEA sieje błędami</title>
<link>http://forum.przyszlyprogramista.pl/?qa=375/maven-i-javafx-w-intellijidea-sieje-b%C5%82%C4%99dami&amp;show=385#a385</link>
<description>&lt;p&gt;Hej, problem może leżeć w tym, że plik FXML powinien leżeć w /&lt;span style=&quot;font-family:Courier New,Courier,monospace&quot;&gt;src/main/resources/..../view/&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Obecnie leży w podkatalogu &lt;span style=&quot;font-family:Courier New,Courier,monospace&quot;&gt;java&lt;/span&gt;, natomiast maven kompiluje wszystkie pliki .java w nim się znajdujące i ignoruje pozostałe. &lt;span style=&quot;text-decoration: underline;&quot;&gt;Pliki nie javowowe należy trzymać właśnie w &lt;span style=&quot;font-family:Courier New,Courier,monospace&quot;&gt;resources&lt;/span&gt;&lt;/span&gt;. Prosta rozpiska standardowych katalogów mavena &lt;a rel=&quot;nofollow&quot; href=&quot;http://www.java2s.com/Tutorials/Java/Maven_Tutorial/1030__Maven_Directory_Structure.htm&quot;&gt;tutaj&lt;/a&gt;.&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=375/maven-i-javafx-w-intellijidea-sieje-b%C5%82%C4%99dami&amp;show=385#a385</guid>
<pubDate>Fri, 18 Jun 2021 06:00:02 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Aplikacja pogodowa - wyświetlanie pogody na kolejne dni</title>
<link>http://forum.przyszlyprogramista.pl/?qa=271/aplikacja-pogodowa-wy%C5%9Bwietlanie-pogody-na-kolejne-dni&amp;show=298#a298</link>
<description>Hej da się tak zrobić;) sam też wpadłem na taki pomysł . Jutro wieczorem będę przed komputerem to Cię nakieruje jak to można sprawnie zrobić.</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=271/aplikacja-pogodowa-wy%C5%9Bwietlanie-pogody-na-kolejne-dni&amp;show=298#a298</guid>
<pubDate>Sat, 22 May 2021 00:37:59 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Failed to execute goal org.openjfx:javafx-maven-plugin:0.0.4:run</title>
<link>http://forum.przyszlyprogramista.pl/?qa=222/failed-to-execute-goal-org-openjfx-javafx-maven-plugin-0-run&amp;show=235#a235</link>
<description>&lt;p&gt;Dzięki za rady, ale niestety nic mnie nie naprowadziło na rozwiązanie&amp;nbsp;&lt;img alt=&quot;sad&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/sad_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;sad&quot;&gt;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Druga podejrzana rzecz to fragment `&amp;lt;executable&amp;gt;/usr/lib/jvm/jdk-11.0.10/bin/java&amp;lt;/executable&amp;gt;` - czy na pewno pod taką scieżką masz JVM'a ? Możesz usunąć całą tę linijke, może pomoże :)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A skąd wiesz, że tam niekoniecznie znajduje się JVM? Jeśli tam go nie ma, to gdzie może być? Dodam, że mam Linuksa Ubuntu 20.04&amp;nbsp;&lt;img alt=&quot;smiley&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/regular_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;smiley&quot;&gt;. Błąd, który wymieniłem w pierwszym poście pokazuje się niezależnie od tego, czy ta linijka jest czy jej nie ma, także usunięcie jej nic nie zmieniło.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Przy takich mało mówiacych komunikatach warto wywołać mavena w trybie szerszego reportowania błędów dodająć `-e -X` do polecenia&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Niestety to, co „wypluła” konsola po dodaniu tych flag do polecenia niewiele mi mówi&amp;nbsp;&lt;img alt=&quot;sad&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/sad_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;sad&quot;&gt;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Użyłem&amp;nbsp;w miarę najnowszych wersji i nie było problemu z JavaFX&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;U mnie nic to nie dało.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Jak wspominałem, projekt kompiluje się prawidłowo, zarówno poprzez&amp;nbsp;&lt;em&gt;compiler:compile&lt;/em&gt;, jak i&amp;nbsp;&lt;em&gt;mvn clean install&lt;/em&gt;, gorzej z uruchomieniem (nie działa &lt;em&gt;javafx:run.&lt;/em&gt;&amp;nbsp;jak również próba uruchomienia wygenerowanego&amp;nbsp;plik .jar).&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Oto kod na GH, jeśli ktoś z Was chciałby go przetestować na swoim kompie i lepiej zobaczyć, co jest nie tak:&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/suabicii/javafx-mvn-template&quot;&gt;https://github.com/suabicii/javafx-mvn-template&lt;/a&gt;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=222/failed-to-execute-goal-org-openjfx-javafx-maven-plugin-0-run&amp;show=235#a235</guid>
<pubDate>Mon, 17 May 2021 11:03:03 +0000</pubDate>
</item>
</channel>
</rss>