Jak dodać katalog do ścieżki klas w profilu uruchamiania aplikacji w IntelliJ IDEA?

206

Próbuję dodać katalog do ścieżki klas profilu uruchamiania aplikacji

Jeśli przesłonię przy użyciu opcji -cp x: target / klas w ustawieniach maszyny Wirtualnej, pojawia się następujący błąd:

java.lang.NoClassDefFoundError: com/intellij/rt/execution/application/AppMain

Masz pomysł, jak dodać katalog do ścieżki klasy dla mojego projektu?

sal
źródło
1
Nie jest dla mnie jasne, gdzie próbujesz to dodać. Z wiersza poleceń IJ? Lub we właściwościach projektu?
Heiko Rupp,
Powiązane: youtrack.jetbrains.net/issue/IDEA-160167
AlikElzin-kilaka

Odpowiedzi:

270

W Intellij 13 znów wygląda nieco inaczej. Oto instrukcje dla Intellij 13:

  1. kliknij widok Projektu lub odkryj go, klikając przycisk „1: Projekt” na lewej krawędzi okna lub naciskając klawisze Alt + 1
  2. znajdź swój projekt lub podmoduł i kliknij go, aby go podświetlić, a następnie naciśnij F4 lub kliknij prawym przyciskiem myszy i wybierz „Otwórz ustawienia modułu” (na IntelliJ 14 stał się F12)
  3. kliknij kartę zależności
  4. Kliknij przycisk „+” po prawej stronie i wybierz „Słoiki lub katalogi ...”
  5. Znajdź swoją ścieżkę i kliknij OK
  6. W oknie dialogowym „Wybierz kategorie wybranego pliku” wybierz Classes(nawet jeśli są to właściwości), naciśnij ponownie OK i OK
  7. Możesz teraz uruchomić aplikację, która będzie miała wybraną ścieżkę na ścieżce klasy
stivlo
źródło
2
Jak więc stworzyć, aby uruchamiać konfiguracje z dwoma różnymi katalogami, które muszą być obecne wyłącznie w jednym, ale nie w drugim. W środowisku Eclipse możesz dodawać / usuwać wszystko do konfiguracji uruchamiania. Czy IntelliJ nie obsługuje tego?
Καrτhικ
9
Oczywiste jest, że można zmienić ścieżkę klasy ścieżki konfiguracji zmieniając ścieżkę klasy modułu . Ale dokładne pytanie brzmiało: „jak dodać katalog do ścieżki klasy w profilu uruchamiania aplikacji ”. Tak więc prawdziwy podał uaaquarius
Pavel Vyazankin
Dziękuję Ci ! To rozwiązało mój problem po latach poszukiwań!
JonasCz - Przywróć Monikę
1
Krok 6 mi nie wychodzi. Jestem na Intellij 14. Mam folder o nazwie lib, w którym znajduje się mój .jar. wybranie folderu lub słoika po prostu parsuje ścieżkę do intellij. nadal nie działa
Takeru
@Takeru Rozgryzłeś to?
rosshamish
91

Wygląda na to, że IntelliJ 11 zmienił metodę, a sprawdzona odpowiedź już nie działa. Na wypadek, gdyby ktoś przybył tutaj przez wyszukiwarkę, oto jak to rozwiązałem w IntelliJ 11:

  1. Przejdź do struktury projektu, kliknij Moduły i kliknij Moduł
  2. Wybierz zakładkę „Zależności”
  3. Kliknij przycisk „+” po prawej stronie i wybierz „Słoiki lub katalogi ...”
  4. Dodaj żądany katalog (y) (pamiętaj, że możesz wybrać wiele pozycji) i kliknij OK
  5. W wyświetlonym oknie dialogowym wybierz „klasy”, a NIE „katalog jar”
  6. Upewnij się, że używasz tego modułu w celu biegu

Zauważ, że krok 5 wydaje się być kluczową różnicą. Jeśli wybierzesz „katalog jar”, ​​będzie on wyglądał dokładnie tak samo w IDE, ale nie będzie zawierał ścieżki w czasie wykonywania. Wydaje się, że nie ma sposobu, aby ustalić, czy wcześniej wybrałeś „klasy” czy „katalog jar” po fakcie.

samkass
źródło
4
Dziękuję bardzo za opublikowanie tego. Właśnie zaoszczędziłeś mi godzinę.
John Jiang
Mam taki sam problem jak poprzednio z IJ11 i tym razem cieszyłem się, że znalazłem odpowiedź.
sal
Idealny. Ten sam proces dla IJ12. Natknąłem się na ten post podczas próby rozwiązania „java.lang.ClassNotFoundException: com / microsoft / jdbc / sqlserver / SQLServerDriver” To rozwiązało problem z połączeniem. Dzięki
jkmurphy1
6
Nie dostaję kroku 5 :( Okno dialogowe po prostu się nie pojawia.
Charles Wood
1
@CharlesWood: Kiedy chciałem wybrać dwa foldery, z których jeden zawiera podfoldery. Musiałem rozwinąć ten zawierający podfoldery za pomocą małego symbolu strzałki obok nazwy folderu, aby okno dialogowe się pojawiło. W przeciwnym razie okno dialogowe zostanie pominięte.
Timo Reimann
35

Możesz wypróbować opcję -Xbootclasspath / a: path w programie uruchamiającym aplikacje Java. Według opisu określa „oddzieloną dwukropkami ścieżkę katalogów, archiwów JAR i archiwów ZIP, które mają być dołączone do domyślnej ścieżki klasy bootstrap”.

uaaquarius
źródło
2
Trochę dokumentacji dotyczącej działania -Xbootclasspath: docs.oracle.com/cd/E15289_01/doc.40/e15062/optionx.htm#i1018570
Lambart
3
To dobra odpowiedź, ponieważ nie wymaga zmiany konfiguracji projektu. W rzeczywistości uważam, że najlepiej odpowiada na pytanie.
Chewy
1
Niestety nie zadziałało to dla mnie, ponieważ powoduje to, że wszystkie klasy ładowane z tej ścieżki klasy są ładowane przez moduł ładujący klasy bootstrap, który łamie kod, który zakłada, że ​​Xyz.class.getClassLoader () nie ma wartości zerowej.
Njol
@uaaquarius, Dlaczego nie ma możliwości bezpośredniej edycji ciągu wiersza poleceń? To jest frustrujące.
Pacerier,
@uaaquarius, Dlaczego jest tak, że jeśli dodam mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jarjako zależność inną metodą na stackoverflow.com/a/16742141/632951, to działa, ale używanie -Xbootclasspath/ago nie?
Pacerier,
19

Korzystam z Pomysłu 8. na karcie zależności modułu (w oknie dialogowym struktury projektu). Dodaj „bibliotekę modułów”. Tam możesz wybrać katalog Jar do dodania. Następnie upewnij się, że profil uruchamiania używa ścieżki klasy i JDK poprawnego modułu podczas uruchamiania (jest to w oknie dialogowym konfiguracji uruchamiania.

Mike Pone
źródło
11

Ustaw „Opcje maszyny wirtualnej”, takie jak: „-cp $ Classpath $; twoja_klasaspath”

Opcje VM

zoirs
źródło
To uratowało mi dzień.
Bruno Ranschaert
2

Załóżmy, że potrzebujesz tylko x: target / klas w ścieżce klasy. Następnie dodajesz ten folder do ścieżki klasy i% IDEA% \ lib \ idea_rt.jar. Teraz to zadziała. Otóż ​​to.

Oleksandr Bondarenko
źródło
4
Pytanie brzmi: jak dodać ten folder do ścieżki klasy w IDEA?
Pacerier,
0

Nie musisz określać folderu klas. Intellij powinien móc go załadować. Ten błąd pojawi się, jeśli „Wyjście kompilatora projektu” jest puste.

Upewnij się tylko, że ustawiono poniżej wartości: Ustawienia projektu -> Projekt -> Dane wyjściowe kompilatora projektu do folderu projectDir / out

VNN456
źródło