Podążyłem za sposobem ładowania pliku zasobów przy użyciu getClass.getResource(path)
. Fragment kodu jest tutaj:Ładowanie pliku przez getClass(). GetResource()
String url = "Test.properties";
System.out.println("Before printing paths..");
System.out.println("Path2: "+ getClass().getResource(url).getPath());
FileInputStream inputStream = new FileInputStream(new File(getClass().getResource(url).toURI()));
i_propConfig.load(inputStream);
inputStream.close();
mam skonfigurowane w Eclipse z hierarchią (Under źródło znajduje się folder o nazwie SwingDemo W SwingDemo jest mój plik java jak również pliku zasobów.) ...
- src
- SwingDemo
- CustomDialog.java
- Test.properties
- SwingDemo
Kiedy używam tego na zaćmienie wszystko działa prawidłowo. Ale jak tylko próbować uruchamiać aplikacje z cmd linii zerowej wyjątkiem wskaźnika jest występujących ..
Command Line hierarchia wdrażania jest następujący:
Folder: D:\Work\Java Progrms\SwingDemo
Hierarchia:
- SwingDemo
- CustomDialog.java
- Test.properties
Przede wszystkim skompilowany plik wewnątrz SwingDemo
folderu z linii poleceń (javac CustomDialog.java
). Potem przesunąć o jeden krok z powrotem do folderu Programy Java (jak wspomniałem pakiet wewnątrz .java klasie) i uruchamiać aplikacje za pomocą słynnego
java SwingDemo.CustomDialog
użyłem do naśladowania podobnych kroków, gdy użyłem nowego FileInputStream ("ścieżkę ") poprzednio. Po wykonaniu tej czynności otrzymuję wyjątek wskaźnika pustego.
Myślę, że getClass().getResource(url)
nie można załadować pliku z określonego katalogu. Właśnie dlatego umieściłem zasób w tym samym katalogu, co mój plik java. W Eclipse działało dobrze. Ale dlaczego powoduje to błąd podczas uruchamiania z wiersza poleceń.
To pomogło mi: „Jeśli pakiet twojej aplikacji do pliku JAR lub jeśli załadujesz klasy przez sieć, nie zadziała. " -> Zamiast tego musisz pobrać plik InputStream. –