Ogarnia ktoś konfigurację mavenowego projektu w Intellij IDEA?
Wykonałem 1. Nowy projekt mavenowy 2. Dodałem zależność - guave 3. Napisałem przykładowy kod używający guave 4. Kliknąłem "install" w oknie "Maven Project" w IDE i mam poniższe problemy
Problemy: 1. Zbudowany JAR ma plik MANIFEST.MF bez sprecyzowanej startowej klasy (atrybut Main-Class), chciałbym bez dodatkowych mavenowych pluginów to załatwić, tak jak da się uruchamialnego jara zbudować z poziomu komend. Na wyprodukowanym przez IntelliJ JARze wyskakuje błąd:
no main manifest attribute, in D:\IdeaProjects\myapp\target\myapp-1.0-SNAPSHOT.jar
2. Po tymczasowym naprawieniu 1 pluginem, wyskakuje kolejny błąd przy uruchamianiu jara, tym razem
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Splitter
Jeśli robiłem zwykłe kompilowanie w IDE program działał. W oknie narzędziowym Mavena w IDE widać Dependencies guavy, w oknie projektu - sekcja External Librares widać guavę. W edytorze IDE podpowiada mi funkcje z tej biblioteki. W pliku pom.xml jest dodany wpis z zależnością pom.xml
@Lewo: pewnie zbudowałeś sobie jara bez zależności, spróbuj poszukać jak zrobić fatjara z bibliotekami, albo dołączyć biblioteki do classpath przy uruchamianiu jara
@Nevtrus: inaczej - jak robiłem tutorial ze strony mavena i użyłem pluginu archetype i wygenerowałem prosty projekt, tam była chyba dodana zależność junit i działało (z tym, że na cmd używam pobranego mavena, w IDE mam wbudowanego innego mavena chyba).
@SuppressWarnings popróbuję, dzięki myślałem, że moja rola w dodawaniu zależności kończy się po dopisaniu jej w pom.xml i, że ten plik określa podczas "cyklu życia" jakie zależności ma, jak się nazywa
@Eoghan: hmm, odniosłem wrażenie, że IntelliJ IDEA ma jakieś swoje ustawienia projektów, zależności, bibliotek i modułów i z tych informacji korzysta jak uruchamia z poziomu IDE konkretne "fazy mavena" (czyli np. mvn install) i że to może być problemem
koncept rozumiem (przynajmniej tak mi się wydaje, bo dopiero się ucze tego): narzucony schemat folderów i nie ważne jakie narzędzie, maven dostarczy co trzeba i uruchomi odpowiednio skonfigurowane polecenia a pliki źródłowe
@mk321: ale czy potrzebowałeś do 1 pluginu jak nie korzystałeś z mavena i sam sobie wpisywałeś
jar -cvf jarfile sourcefile a potem
java -jar jarfile bo z tego co ja kojarzę to nie i to działało.
Pewnie będę używał pluginu, tylko wolałbym wiedzieć czemu nie robi tego mvn install, by dało się to uruchomić. Czytałem, że maven jest o tyle dobry, bo sporo rzeczy działa defaultowo i nic nie trzeba konfigurować
Dla potomnych, znalazłem takie rozwiązania: 1) Stworzenie artefaktu jar-a z zależnościami w IDE (nie korzysta z maven) 2) plugin maven-assembly-plugin 3) użycie pluginu do wygenerowania wpisu o zależnościach w pliku MANIFEST.MF a samo wskazanie MainClass jako parametr polecenia uruchomieniowego: java -cp target/my-jar.jar StartClass
Wykonałem
1. Nowy projekt mavenowy
2. Dodałem zależność - guave
3. Napisałem przykładowy kod używający guave
4. Kliknąłem "install" w oknie "Maven Project" w IDE
i mam poniższe problemy
Problemy:
1. Zbudowany JAR ma plik MANIFEST.MF bez sprecyzowanej startowej klasy (atrybut Main-Class), chciałbym bez dodatkowych mavenowych pluginów to załatwić, tak jak da się uruchamialnego jara zbudować z poziomu komend.
Na wyprodukowanym przez IntelliJ JARze wyskakuje błąd:
2. Po tymczasowym naprawieniu 1 pluginem, wyskakuje kolejny błąd przy uruchamianiu jara, tym razem
at GuavaTest.main(GuavaTest.java:8)
Jeśli robiłem zwykłe kompilowanie w IDE program działał.
W oknie narzędziowym Mavena w IDE widać Dependencies guavy, w oknie projektu - sekcja External Librares widać guavę.
W edytorze IDE podpowiada mi funkcje z tej biblioteki.
W pliku pom.xml jest dodany wpis z zależnością
pom.xml
ps. szukałem na googlach i dalej szukam, ale liczę, że ktoś rozprawił się już z tym problemem i pomoże (╯︵╰,)
#java #naukaprogramowania #programowanie #intellij #maven
@SuppressWarnings popróbuję, dzięki
myślałem, że moja rola w dodawaniu zależności kończy się po dopisaniu jej w pom.xml i, że ten plik określa podczas "cyklu życia" jakie zależności ma, jak się nazywa
i że to może być problemem
koncept rozumiem (przynajmniej tak mi się wydaje, bo dopiero się ucze tego): narzucony schemat folderów i nie ważne jakie narzędzie, maven dostarczy co trzeba i uruchomi odpowiednio skonfigurowane polecenia a pliki źródłowe
jar -cvf jarfile sourcefile
a potem
java -jar jarfile
bo z tego co ja kojarzę to nie i to działało.
Pewnie będę używał pluginu, tylko wolałbym wiedzieć czemu nie robi tego mvn install, by dało się to uruchomić.
Czytałem, że maven jest o tyle dobry, bo sporo rzeczy działa defaultowo i nic nie trzeba konfigurować
1) Stworzenie artefaktu jar-a z zależnościami w IDE (nie korzysta z maven)
2) plugin maven-assembly-plugin
3) użycie pluginu do wygenerowania wpisu o zależnościach w pliku MANIFEST.MF a samo wskazanie MainClass jako parametr polecenia uruchomieniowego: java -cp target/my-jar.jar StartClass