2015-07-17 16 views
5

Mam aplikację w prostym projekcie Java. Muszę jednak wkleić ten projekt do projektu Maven. Zasadniczo stworzyłem prosty projekt Mavena i skopiowałem i wkleiłem w nim wszystkie moje zajęcia. Potrzebuję wojny, aby uruchomić się na serwerze, i muszę uruchomić Main jak aplikacja Java, ponieważ ta aplikacja konfiguruje aplikację wojny. Jednak, gdy biegnę Main, mam pewne błędy, że nie mających wcześniej:Moja aplikacja java nie czyta moich plików (projekt maven)

java.io.FileNotFoundException: zasoby \ config.properties (System nie może odnaleźć określonej ścieżki)

gdy w kodzie jest:

input = new FileInputStream("resources/config.properties"); 

to nie działa albo:

faceDetector = new CascadeClassifierDetector("D:/retinoblastoma/workspace/Resources/CascadeClassifiers/FaceDetection/haarcascade_frontalface_alt.xml"); 

Jak mogę to naprawić?

+0

Try nie odwoływać się do zasobów i zamiast tego próbować użyć czegoś takiego jak 'getClass(). getResourceAsStream ("/config.properties ")'. W zależności od konfiguracji maven, pliki te mogły zostać włączone do wynikowego pliku Jar. Które możesz chcieć otworzyć (z dowolnym programem zip) i sprawdzić. Z mojego (ograniczone zrozumienie), 'resources' jest zawarte w ścieżce klasy – MadProgrammer

Odpowiedz

3

Jeśli używasz "prostego projektu maven", maven way jest dla folderu src/main/resources. Czy skonfigurowałeś swój plik pom.xml, by zrobił coś innego?

Jeśli zrobiłeś część stworzenie słój prawidłowo, właściwy sposób, aby uzyskać plik, który znajduje się na ścieżce klasy jest:

getClass().getResourceAsStream("/path/to/resource.ext"); 

wiodący ukośnik jest ważna!

Jeśli plik NIE znajduje się w Twojej ścieżce klas (innymi słowy, będzie tak, jeśli powyższe nie działa), prawdopodobnie musisz skonfigurować program maven, aby użyć innego katalogu zasobów.

to zrobić like this (zmiana argumenty odpowiednio):

<build> 
    ... 
    <resources> 
    <resource> 
     <targetPath>META-INF/plexus</targetPath> 
     <filtering>false</filtering> 
     <directory>${basedir}/src/main/plexus</directory> 
     <includes> 
     <include>configuration.xml</include> 
     </includes> 
     <excludes> 
     <exclude>**/*.properties</exclude> 
     </excludes> 
    </resource> 
    </resources> 
    <testResources> 
    ... 
    </testResources> 
    ... 
</build> 

Następnie plik będzie na ścieżce klas i powyższy kod będzie działać. Przeczytaj powyższą dokumentację, aby uzyskać więcej informacji.

+0

Dziękuję bardzo, to pomóż mi korzystać z właściwości. Zdałem sobie sprawę, że mój błąd to kolejna rzecz. Dzięki. – Tupac

3

W prostym projekcie Mavne, wszystkie środki powinny być zlokalizowane w src/main/resources.You można uzyskać plik właściwości następnie (dla metody non-statycznego):

Properties prop = new Properties(); prop.load(getClass().getClassLoader().getResourceAsStream("config.properties"));

przypadku metody statycznej, użyj: <Class name>.class.getClassLoader().getResourceAsStream("config.properties");

sprawdź ten link, aby uzyskać więcej informacji: Reading properties file