Как подключать библиотеки в java
Developer notes
About Java, Oracle and related.
01 января 2008
Classpath. Подключение сторонних библиотек
Иногда при написание программ на java необходимо подключать библиотеки сторонних разработчиков, которые не входят в Java SDK. В этом случае нам пригодится переменная окружения (параметр) classpath. Если в этой переменной прописать путь к какой либо, одной или нескольким, директориям, то все файл с расширением *.class этих директорий будут автоматически подключены к нашему проекту, и мы сможем импортировать классы из них.
Рассмотрим как добавить определённый каталог в эту переменную.
ОС Linux:
Достаточно в шеле указать значение переменной, с помощью команды:
export CLASSPATH=$CLASSPATH:/dir1 /dir2/class_dir /
Есть ещё один не рекомендуемый способ, поэтому я про него ничего писать не буду.
5 комментариев:
Важный момент, про который постоянно забывают новички (да и более продвинутые товарищи полагающиеся на генерацию classpath с помощью java ide и не проверяющие что же там она делает)
public class Foo <
public void makeFoo () <
System.out.println («foo»);
>
public static void main(String[] args) <
new Foo ().makeFoo();
>
>
Затем, спустя некоторое время была выпущена новая версия этой библиотеки. Так что теперь метод makeFoo выводит не слово «foo», а слово «bar».
public class Foo <
public void makeFoo () <
System.out.println («bar»);
>
public static void main(String[] args) <
new Foo ().makeFoo();
>
>
Эти библиотеки были помещены внутрь jar-архивов с именами test41.jar и test4.jar, соотвественно.
Посмотрите на результаты которые получаются при вызове:
Порядок следования архивов jar в classpath является важным и он задает порядок приоритета. Меняя местами архивы мы получаем различное поведение. Часто это приводит к плоховыявляемым и непонятным ошибкам.
интересный момент с порядком следования библиотек(я про такое не знал).
правда непонятно зачем включать в проект две одинаковых библиотеки разных версий?
А что за ерунда в первом абзаце?
Насколько я знаю, подключение всех jar-файлов из каталога появилось только в 1.6 версии, и для этого в конце нужно ставить wildcard’ы типа звездочки.
Только что наткнулся на вопрос студента, который уже «обгуглился», но все еще пытается подключить библиотеки заданием пути к каталогу с jar’никами. Полез сам гуглить и вот статья, которая говорит, что так и надо делать. :-\
Подключение библиотеки к проекту в Eclipse
Очень часто при создании приложения приходится пользоваться сторонними библиотеками при решении тех или иных задач. Но не все начинающие Android-разработчики умеют подключать их к своему проекту. В этой статье я расскажу, как подключаются библиотеки и какие при этом возникают ошибки. В качестве IDE будет использоваться Eclipse.
1) Подключение jar.
2) Подключение проекта с исходниками.
3) Что делать если пункт 2 не сработал.
Случай первый: библиотека поставляется в jar файле.
Это самый легкий вариант подключения библиотеки. На сегодняшний день не очень распространен и, скорее всего, будет терять популярность. Одной из причин является невозможность запаковки ресурсов всесте с библиотекой. Не так давно появился новый формат библиотек — aar. Это тот же jar-файл, толь с ресурсами. Работать с ним мне еще не приходилось, поэтому ничего больше сказать не могу.
Тут тоже есть два способа подключения jar-библиотеки к проекту.
1 способ
1) Раскройте дерево проекта в Package Explorer
2) Перетащите в папку libs ваш jar-файл (если папки libs нет, то создайте ее)
3) В открывшемся окне выберите пункт Copy files и нажмите OK
3) Нажмите правой кнопкой мыши на вашем проекте и выберите пункт Refresh
4) Готово
2 способ
1) Нажмите правой кнопкой мыши на вашем проекте и выберите пункт Properties
2) В открывшемся окне слева есть меню, выберите в нем пункт Java Build Path
3) Выберите вкладку Libraries
4) Нажмите на кнопку Add External JARs…
5) В открывшемся окне выберите файлс вашей библиотекой и нажмите OK
6) Jar-файл добавлен. Нажмите кнопку OK
7) Готово
Случай второй: библиотека поставляется в виде проекта
1) Откройте File > Import, выбираем Android > Existing Android Code into Workspace
2) Нажмите кнопку Browse
3) В открывшемся окне найдите папку с библиотекой, нажмите OK
4) Поставьте галку на пункте Copy projects into workspace
5) Нажмите Finish.
6) Нажмите правой кнопкой мыши на вашем проекте и выберите пункт Properties
8) В открывшемся окне слева есть меню, выберите в нем пункт Android
8) Нажмите на кнопку Add
9) В открывшемся окне выберите вашу библиотеку и нажмите OK
Третий случай: при импортировании библиотеки Eclipse выдает ошибку
Если при импортировании библиотеки в workspase Eclipse выдает ошибку типа … или какую-нибудь еще, то выполняем следующие действия:
Java добавить библиотеку
Подключение библиотек в Java
Библиотека — готовый набор классов и компонентов, который встраивают в программу, чтобы реализовать некий функционал. Например, в тысячах казуальных игр музыку можно проигрывать одним и тем же способом. Чтобы не тратить время на работу со звуком, программисту достаточно подключить подходящую библиотеку.
Подключение Джава-библиотек в Eclipse
Если вы пользуетесь средой разработки Eclipse, подключение библиотек в Java займёт у вас меньше минуты:
Разворачиваем дерево проекта в Package Explorer и находим папку libs. Если её нет — создаем.
В появившемся окне выбираем «копирование файлов» (copy files) и жмём OK.
Обновляем проект: правый клик — «Refresh».
Классы подключены и готовы к вызову из нашей программы.
Подключение библиотек Java в Maven и Apache-Ant
Минус подключения библиотек через IDE в том, что для пересборки проекта на другой машине нужна та же среда. Чтобы не зависеть от среды, используют системы сборки Maven и Ant.
Чтобы «прикрутить» библиотеку к проекту Maven, нужно указать её среди зависимостей в файле pom.xml. С библиотекой может подтянуться еще несколько зависимостей, которые подключаются к этой библиотеке. В случае с jar этого не происходит.
Как будет выглядеть наш pom.xml:
В Ant принцип схожий, но редактировать нужно файл build.xml. Путь к подключаемым библиотекам пишут с помощью тегов и
. Сначала объясняем, где искать библиотеку:
И далее передаём этот адрес тегу :
Как подключить Java-библиотеку вручную
Подключение jar-библиотек в Java
Открываем терминал и пишем:
ru.аuthor.libname.Main — наша библиотека
Точкой перед «/» отмечают текущую директорию.
Можно перечислить несколько библиотек, код из которых компилятор соберет в порядке их перечисления:
Теперь вы умеете подключать библиотеки даже в нестандартной ситуации: когда не установлена IDE или нужно скорректировать очередность подключения.
Библиотека — готовый набор классов и компонентов, который встраивают в программу, чтобы реализовать некий функционал. Например, в тысячах казуальных игр музыку можно проигрывать одним и тем же способом. Чтобы не тратить время на работу со звуком, программисту достаточно подключить подходящую библиотеку.
Подключение Джава-библиотек в Eclipse
Если вы пользуетесь средой разработки Eclipse, подключение библиотек в Java займёт у вас меньше минуты:
Разворачиваем дерево проекта в Package Explorer и находим папку libs. Если её нет — создаем.
В появившемся окне выбираем «копирование файлов» (copy files) и жмём OK.
Обновляем проект: правый клик — «Refresh».
Классы подключены и готовы к вызову из нашей программы.
Подключение библиотек Java в Maven и Apache-Ant
Минус подключения библиотек через IDE в том, что для пересборки проекта на другой машине нужна та же среда. Чтобы не зависеть от среды, используют системы сборки Maven и Ant.
Чтобы «прикрутить» библиотеку к проекту Maven, нужно указать её среди зависимостей в файле pom.xml. С библиотекой может подтянуться еще несколько зависимостей, которые подключаются к этой библиотеке. В случае с jar этого не происходит.
Как будет выглядеть наш pom.xml:
В Ant принцип схожий, но редактировать нужно файл build.xml. Путь к подключаемым библиотекам пишут с помощью тегов и
. Сначала объясняем, где искать библиотеку:
И далее передаём этот адрес тегу :
Как подключить Java-библиотеку вручную
Подключение jar-библиотек в Java
Открываем терминал и пишем:
ru.аuthor.libname.Main — наша библиотека
Точкой перед «/» отмечают текущую директорию.
Можно перечислить несколько библиотек, код из которых компилятор соберет в порядке их перечисления:
Теперь вы умеете подключать библиотеки даже в нестандартной ситуации: когда не установлена IDE или нужно скорректировать очередность подключения.
Быстрый старт в Java: от установки необходимого софта до первой программы
Как вы знаете, Java — один из самых популярных языков программирования в мире и его знание существенно увеличит вашу значимость как программиста. Итак, вы решили начать писать на этом языке. Вам понадобится поставить JDK для того, чтобы писать и запускать программы на Java. JDK — набор софта, разработанного Oracle, содержащий в себе компилятор (javac), среду выполнения (Java Runtime Environment), стандартную библиотеку языка, примеры и документацию. Прочитав эту статью, вы узнаете, как установить и настроить JDK на своей системе, что такое среда разработки и какие варианты IDE существуют для Java. Также вы напишете свою первую программу на Java.
Установка Java Development Kit
Итак, вы установили Java Development Kit, но это еще не всё. Необходимо настроить его для вашей системы.
Настройка JDK на примере Windows
После установки JDK и JRE не помешает установить на компьютер одну из IDE.
Установка IDE
Для начала разберёмся, что такое IDE.
IDE (Integrated Development Environment) – это комплекс программных средств, используемый программистами для разработки программного обеспечения. IDE позволяет с лёгкостью писать, запускать, отлаживать и тестировать код.
Для написания сложных программ целесообразно использовать IDE. Мы рассмотрим наиболее популярные.
Блокнот
Да, и в блокноте можно писать код! Для разработки вам потребуется всего лишь установить JDK и указать путь к ней. Пишете код в блокноте, компилируете с помощью командной строки. Тем не менее, для разработки сложных программ это не самый лучший вариант из-за отсутствия каких-либо дополнительных возможностей, присутствующих в продвинутых IDE.
NetBeans
NetBeans — выбор профессиональных Java-разработчиков. В ней есть уникальные возможности и инструменты, которые позволят вам сделать вашу программу кроссплатформенной, а код удобочитаемым. NetBeans поддерживает не только Java, но и другие языки программирования для десктоп- и веб-разработки. Она полностью бесплатна, скачать её можно с официального сайта. Вот лишь некоторые её возможности:
Eclipse
Eclipse, как и Netbeans — одна из наиболее популярных IDE. Она предоставляет впечатляющий интуитивно понятный интерфейс и производительную среду разработки, позволяющую комфортно разрабатывать приложения на Java. Скачать Eclipse можно бесплатно с официального сайта. Преимущества:
IntelliJ IDEA
IntelliJ IDEA — известная IDE для Java, написанная, как ни странно, на Java. Укомплектована уникальными инструментами и позволяет без проблем ориентироваться в программе. Нахождение ошибок и отладка кода никогда не были такими легкими, как с IntelliJ IDEA.
JCreator
JCreator — продвинутая и самая быстрая IDE для Java, написанная на C++.
Пишем свою первую программу
Итак, вы установили и настроили JDK, JRE и IDE для Java. Каков следующий шаг? Конечно же, написать программу, чтобы окончательно убедиться, что всё работает и вы готовы к изучению языка. Вы познакомитесь с базовой структурой кода на Java и создадите свою первую программу! Стоит отметить, что перед изучением Java следует ознакомиться хотя бы с самыми простыми принципами объектно-ориентированного программирования.
Структуру программы на Java можно представить так:
Структура программы на Java
В файле с исходным кодом содержится несколько классов — это части программы, имеющие определённые функции. Хорошей практикой считается разбиение программы на несколько файлов с исходным кодом, каждый со своим назначением. В классах содержатся методы — действия, которые могут выполнять объекты данного класса. В методе содержатся команды, с помощью которых вы можете получить желаемый результат.
Перед тем, как приступить к созданию программы, необходимо создать проект, а в нём и файл, в котором будет содержаться ваш код. Рассмотрим создание проекта на IDE Eclipse, но в остальных IDE процесс отличается не сильно. Cверху выберите «File», затем наведите курсор на «New», в открывшемся меню выберите «Java Project». В появившемся окне введите имя проекта и другие нужные вам настройки (если не уверены, что делать, то можно просто оставить все как есть) и нажмите «Next». Готово, вы создали проект! Осталось лишь создать в нём класс, в котором вы напишете свою первую программу. Щёлкните правой кнопкой мыши по вашему проекту (он должен появиться справа) и выберите «New» → «Class». Присвойте новому классу имя (в данном примере – это first ) и нажмите «Finish».
Приступим к написанию вашей первой программы. По традиции — это программа, выводящая на экран «Hello, world!».
Разберём по частям написанное нами:
Хорошо, вы написали вашу первую программу. Теперь её надо запустить. Для этого просто нажмите белую стрелочку в зеленом кружке на верхней панели (при наведении курсора на неё должно высветиться «Run»). После нажатия внизу откроется консоль, в которой вы увидите сообщение “Hello, world”! Поздравляю, вы написали вашу первую программу на Java и готовы погрузиться в увлекательный мир этого языка!
Полезные ссылки для дальнейшего изучения
Вот несколько ресурсов, которые помогут вам в изучении Java:
Сборка и выполнение Java программ
Сборка проекта
Сборка (англ. assembly) — двоичный файл, содержащий исполняемый код программы или (реже) другой подготовленный для использования информационный продукт.
Автоматизация сборки — этап написания скриптов или автоматизация широкого спектра задач применительно к ПО, применяемому разработчиками в их повседневной деятельности, включая такие действия, как:
Для автоматизации сборки проектов традиционно используют системы сборки, такие как make на Unix подобных системах и nmake для компилятора Microsoft. Также традиционно написание файлов для сборки проекта под эти системы является задачей нетривиальной. Конечно, пользуясь только Mictosoft Visual Studio можно даже не подозревать о существовании этих файлов, так как интегрированная среда разработки достаточно удобно скрывает всю схему работы, оставляя снаружи несколько диалоговых окон и кнопку Build. Но для сложных проектов использующих массу сторонних библиотек и кроссплатформенных проектов такой подход часто оказывается неприемлемым.
Принципы сборки в java
1. Как работает java компилятор
Текст программы — это исходный код программы на языке java.
Дополнения — это классы, которые необходимо учитывать во время сборки (библиотеки).
В итоге мы получаем набор файлов с расширением class. То есть, если мы используем сторонние библиотеки – мы должны указать их при сборке. Это могут быть скомпилированные классы или собранные подсистемы.
Не всегда для компиляции необходимо указывать дополнительные библиотеки (к примеру, если у нас программа в 1 программный файл). Но если всё же это необходимо, то для этого компилятор java необходимо запустить с аргументом «-cp» (сокращение от —classpath). После этого аргумента идёт список библиотек (jar файлов или файлов class) разделённых символом разделителем файлов (в *nix это «:», в windows это «;»).
Пример компиляции программы из одного файла:
javacHelloWorld.java
Пример компиляции программы c дополнительными библиотеками «myLib» и «my2ndLib»:
В java нет разграничения между собранной библиотекой, исполняемым приложением или же подсистемой. Что имеется в виду, что если вы хотите создать самостоятельную сущность в едином файле, вы создаёте jar файл. К примеру, если вы создаёте библиотеку, то это будет jar файл с набором классов, который могут быть использованный другими разработчиками, если это подсистема, то это часть функционала (набор классов) вынесенная за рамки основного модуля, но используемая в нём (что то вроде частной библиотеки), и т.д..
2. Выполнение java-программы.
Выполнение классов работает схожим образом с компиляцией (используются даже те же аргументы).
Если после компиляции у нас получилось 10 классов, то выполняем только класс который содержит функцию main, остальные классы должны быть представлены как библиотеки.
К примеру, запуск программы c дополнительными библиотекой «sout», которая находиться в папку «lib» выглядеть так:
По умолчанию, все классы в текущем каталоги включены в пути (-cp для классов в текущем каталоге указывать не надо). Что имеется в виду, если мы скомпилировали программу, и в итоге получили множество классов в одной папке, то мы можем запускать только лишь главный класс, остальные классы java попробует найти сама в текущем каталоге (Даже если они находятся во вложенных папках, java и туда заглянет).
3. Jar-файл
Jar-файл — это ZIP архив (то есть вы можете разархивировать его). Jar-файл должен в себе содержать набор классов и файл META-INF/MANIFEST.MF, в котором описаны характеристики данного jar-файла.
Основной вариант создания Jar-файла:
jar cf jar-file input-file(s)
Jar – это утилита и набора утилит которые вы получаете при установке java.
Когда вы создаете JAR-файл, он автоматически получает файл манифеста по умолчанию (если вы его не указали во входных файлах – он будет создан автоматически). В jar-файле может быть только один файл манифеста с указанным путём:
Добавление внешних Java классов
AnyLogic предоставляет уникальную возможность добавления любых внешних Java классов в вашу модель.
Для этого вам необходимо:
Более того, AnyLogic позволяет добавлять каталоги внешних классов. Эта возможность особенно полезна на стадии разработки модели, когда внешние Java классы постоянно изменяются. Когда же вы закончите создание вашей модели, будет проще заархивировать каталог классов в.jar файл и связать с моделью именно файл архива.
Как и библиотеки, и файлы Java архивов и каталоги классов, необходимые для построения модели, должны быть указаны в списке зависимостей модели. Этот список редактируется в секции Зависимости панели свойств модели. При экспорте модели все ресурсы, указанные в этом списке будут скопированы в тот каталог, куда будет помещен файл экспортированной модели.
Чтобы добавить внешние Java классы (в виде архивного файла Java или каталога внешних классов) в список зависимостей модели
Обращение ко внешним Java классам в модели AnyLogic
После настройки зависимостей вы можете использовать внешние Java классы в вашей модели.
С помощью следующей демонстрационной модели мы покажем, как обращаться к внешним Java классам внутри модели. В этой модели мы используем внешнюю Java библиотеку JAMA. JAMA — это базовая Java библиотека функций линейной алгебры. В нашей модели три переменные ( A, B, C ), которые являются экземплярами внешнего класса Jama.Matrix, разработанного в качестве стандартного матричного класса для Java.
Есть два способа обращения к внешним Java классам из вашей модели AnyLogic.
Завершив импорт Java пакета, вы сможете обращаться к его классам более простым способом (как это делаем мы в случае с переменной B в нашей демонстрационной модели, где указан Тип переменной Matrix ).
Мы рекомендуем пользоваться именно этим способом: импортировать весь пакет целиком и упростить доступ к внешним Java классам в вашей модели.
Удаление Java классов из зависимостей модели
Подключение внешних Java-библиотек
dimat
Well-known member
lmike
нет, пердело совершенство
Подсел я тут немного на твиттер, хочу синтегрировать с одной лотусной базой.
Будет твиттить униды документов
Шутка.
Скачал я такую библиотеку:
С экземплами, вроде всё красиво.
Помятуя слова lmike кинул jar в jvmlibext
И всё, дальше затык.
Даже к агенту подключить не могу.
Пока есть запал, помогите плз, что я делаю не так.
Спасибо заранее, камрады!
nvyush
Как я понял, «winterwell.jtwitter» это путь к классам внутри jar’a?
Я в джаве — ноль.
Надо учить.
lmike
нет, пердело совершенство
Теперь пытаюсь объявить новый обьект
В jar уже поковырялся.
nvyush
Во!
Скомпилилось!
Только «import winterwell.jtwitter.*»я написал.
Как я понял, «winterwell.jtwitter» это путь к классам внутри jar’a?
import java.util.ArrayList;
import java.util.Arrays;[/CODE]
или явно указывать пакет при объявлении переменных:
lmike
нет, пердело совершенство
ты для какой версии jvm взял jar (в манифесте смори)
и под какой jvm пущаешь.
она те грит версия класса новее — чем поддерж.
исходники у них под LGPL могешь сам пересобрать.
у них лежит готовый класс (для остальных есть исходники) BuildJTwitter.class
тока вот не знаю его версию
в любом раскладе — можно исходники втянуть в проект нетбинса или эклипса и пересобрать с нужной версией жвм
Добавлено:
засада с этой библой
там женерики и аннотации, т.е. минимально — 1.5 джава
либо код править
NickProstoNick
Статус как статус 🙂
Куда только jar-файл не кидал.
Может есть возможность загрузить класс динамически? На лету.
oshmianski
Достойный программист
NickProstoNick
Статус как статус 🙂
lmike
нет, пердело совершенство
Добавлено: но сдаётся мне что в большинстве случаев, правильнее — смириться
Добрый, правда уже сомнительно.
Замаялся я уже. Не могу подключить в Лотус jar-файлы.
В jvmlibext файлы кинул, писал в notes.ini JavaUserClasses, перезагружал комп (база на локале)
Но не видит и все.
Задача написать агента, из-за библиотек, которые открывают свои потоки не могу вставить их в тело агента, агент по завершению не закрывает нормально их. Надо вот вынести.
Если в агенте сделать в JavaAgent.java «Project->Proteries->Libraries, Add External JAR», то ошибка исчезает. НО ровно до закрытия JavaAgent.java, как только закрыл уже есть ошибка. Прошу помощи, никогда такого не делал.
UPD: сделал, почему получилось не сразу не знаю.