Gdzie umieścić słoiki zewnętrzne? [duplikat]

To pytanie ma już odpowiedź tutaj:

Używam Eclipse (3.4) i moja klasa kompiluje się bez ostrzeżeń i błędów. Mój projekt wykorzystuje zewnętrzny plik jar.

Gdzie muszę umieścić ten zewnętrzny plik jar, aby nie otrzymać java.lang.NoClassDefFoundError podczas używania tej klasy z innego projektu (nie w Eclipse)?

Mógłbym po prostu wyodrębnić słoik do folderu projektu, ale to nie jest w porządku.

Edit: to pytanie nie dotyczy importowania słoików w Eclipse, ale używania ich poza Eclipse.

Author: Burkhard, 2008-11-28

9 answers

Jeśli chcesz dołączyć plik JAR do swojego projektu Eclipse, zazwyczaj tworzysz folder' lib ' w folderze projektu i umieszczasz tam plik. Następnie musisz powiedzieć eclipse, aby włączył go do swojej ścieżki klasowej, aby Twój kod skompilował się i uruchomił wewnątrz eclipse.

Aby to zrobić:
- Przejdź do właściwości swojego projektu
- Wybierz 'Java Build Path' w lewej kolumnie
- Wybierz zakładkę "biblioteki" w środkowej części okna
- Kliknij Dodaj słoiki button-to da ci listę twoich projektów w eclipse-rozwiń swój projekt i do folderu lib - Twój jar tam będzie.
- Wybierz JAR, kliknij OK i ponownie OK z okna właściwości.

Twój kod zostanie skompilowany i uruchomiony.

 56
Author: James Camfield,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-13 14:56:19

Umieść go w swoim jre/lib/ext folderze

Wszystko, co mówi się o classpath, jest prawdą, ale jest to spójne i rozsądne miejsce do życia.

Możesz znaleźć swój folder jre, patrząc na zmienną środowiskową JAVA_HOME w systemie Windows.

 19
Author: Simon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 11:23:51

Nie ma znaczenia, gdzie go umieścisz, ale musisz skonfigurować swój inny projekt nie-Eclipse, aby umieścić zewnętrzne Jary w jego classpath - lub użyć mechanizmu katalogu extensions, jeśli musisz. (To jest łatwiejsze, ale wyrażanie tego wyraźnie jest prawdopodobnie lepsze.)

 7
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 11:20:58

Odpowiedź Simona wydaje się najlepsza, ale trochę przestarzała. Wygooglowaliśmy ten Oracle doc zainstalowane rozszerzenia .

Od wersji Java 6 pliki rozszerzeń JAR mogą być również umieszczane w lokalizacji niezależnej od konkretnego JRE, dzięki czemu rozszerzenia mogą być współdzielone przez wszystkie JRE zainstalowane w systemie.

Mówi, że dla Windows należy umieścić swoje rozszerzenia tutaj %SystemRoot% \ Sun \ Java \ lib \ ext .

 5
Author: user3132194,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-24 11:12:00

Wystarczy odwołać się do niego za pomocą opcji -classpath, w folderze, który nie jest zawarty w obszarze roboczym eclipse, tzn. który w ogóle nie zależy od eclipse.

Uwaga, nie możesz wykonać innego projektu za pomocą java -jar jeśli odwołujesz się do zewnętrznego Jara za pomocą opcji -cp ( Zobacz to pytanie )

 1
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:12

Umieszczam go w nowym folderze. Ten folder musi być dołączony do ścieżki budowania. Nie ma znaczenia, czy jest w Eclipse, czy na zewnątrz. Eclipse ma specyficzną ścieżkę budowania projektu i przekazuje tę ścieżkę do javac. Jeśli chcesz wykonać javac poza Eclipse, musisz przekazać ścieżkę budowania ręcznie.

 0
Author: guerda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 11:21:05

Wiem, że to nie jest dokładnie to, o co prosisz, ale czy rozważałeś użycie Mavena? Niektóre wtyczki, takie jak assembly, mogą być pomocne w takich sytuacjach.

 0
Author: javamonkey79,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 11:32:42

Mieć słoik wewnątrz Eclipse, jak napisał James Camfield.

Następnie, gdy budujesz (Ant, Maven, ręcznie) do dystrybucji, upewnij się, że plik jar jest dołączony do lub wewnątrz Twojego pliku JAR, war, ear lub jakiegokolwiek innego pliku, i że wszelkie skrypty startowe zawierają go na classpath używając opcji-classpath linii poleceń dla Javy, jak napisał VonC.

Nie martw się o przyklejenie jars w folderze java extensions, wszystko to sprawi, że zapomnisz o tym, gdy chodzi o wysłanie kodu do osoby trzeciej w celu użycia, ponieważ nie będzie go skonfigurować na ich końcu.

 0
Author: JeeBee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 11:43:59

Utwórz wspólny katalog lib i umieść ten jar oraz wszystkie inne pliki common jar, które możesz tam mieć. Jeśli używasz Mavena, to masz go już w formie lokalnego repo.

W Eclipse Utwórz zmienną classpath dla tego katalogu, a następnie użyj jej do odniesienia się do pliku jar w swoich projektach. Jeśli masz wiele projektów, które spełniają te warunki, znacznie ułatwi to życie. Ułatwia również zmianę lokalizacji katalogu głównego, jeśli przejdziesz z dysk lokalny do sieci.

W aplikacji zewnętrznej zostanie również dołączony plik jar z jego współdzielonej lokalizacji na ścieżce klasowej aplikacji.

 0
Author: Robin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 14:23:56