Импорт метода/класса из jar файла

281
23 августа 2017, 16:18

Создал test.jar файл проекта. Поместил его в папку libs другого, но не пойму как импортировать классы/методы из этого test.jar. Подскажите пожалуйста, как организовать импорт. Пытаюсь импортировать следующие классы

import com.JSONelements.JSONBaseElement;
import com.parseJSON.BaseParser; 
import com.workWithFile.ReadFromFile; 3 класса(я написал с указанием пакетов)

Jar собирал без использовании системы сборки, просто прописал .bat и запустил его, jar файл успешно создался

D: 
cd D:\workspace\JSONParser
jar cf parseJSON.jar classFoulder/* src/* 
pause

Вообще использую Eclipse, но похоже он не видит классы. Хочу научиться и с помощью Екслипса(без сборщиков) и с помощью командной строки это проделывать. Но статей толковых нет. Написал это в главном классе нового проекта, но импорт не работает:

package com.json;
import com.JSONelements.JSONBaseElement;
import com.parseJSON.BaseParser;
import com.workWithFile.ReadFromFile;
public class TestJSON {
public static void main(String[] args) {
    String jsonString = ReadFromFile.readFile("d:/json1.txt");
    System.out.println("Formated from file: " + jsonString);
    JSONBaseElement parserJson = BaseParser.mainParse(jsonString);
    System.out.println(parserJson);
  }
}
Answer 1

В импортируемом .jar файле (созданной вами библиотеке) должен точно быть указан package, первой строчкой в каждом вашем классе.

Затем, если вы компилируете проект напрямую консольными командами, желаемый .jar файл необходимо добавить в classpath проекта, который будет использовать нужную библиотеку.

Пример:

javac -cp "/путь/до/библиотеки.jar" Проект.jar

Тогда в проекте "проект.jar" можно будет использовать библиотеку.

Если вы используете среду разработки IntelliJ IDEA, тогда нужно сделать следующее:
зайти в Project Structure... | Libraries, нажать + и добавить нужную библиотеку в список библиотек:

Это делается для того, чтобы вы могли указать import com.ваш.пэкейдж.ИмяКласса; в проекте, и при компиляции проект знал, откуда импортировать нужные классы.

С системами сборки всё гораздо проще: если нужная библиотека есть в каком-нибудь из публичных репозиториев, например в Maven Central, то достаточно будет указать всего несколько строчек в конфигурационном файле.

Пример для maven: нужно добавить строчки ниже в файл pom.xml:

<dependencies>    
    <dependency>
        <groupId>group.id.библиотеки</groupId>
        <artifactId>имя-библиотеки</artifactId>
        <version>версия</version>
    </dependency>
<!-- другие проекты -->
<dependencies>

Для gradle: добавить строчки ниже в build.gradle:

dependencies {
    compile group: 'group.id.библиотеки', name: 'имя-библиотеки', version: 'версия'
}

И так далее.

Answer 2

Файл надо поместить в CLASSPATH и тогда классы будут доступны для импорта

READ ALSO
Работа с websocket в Spring

Работа с websocket в Spring

Здравствуйте, мой вопрос заключается в следующем: у меня есть чат, реализованный с помощью javaxwebsocket, мне захотелось переделать его на Spring,...

396
Как дождаться нажатия на кнопку в Swing?

Как дождаться нажатия на кнопку в Swing?

У меня в классе RegistrationFrame, который реализует интерфейс ActionListener, по нажатию на кнопку создается класс PersonВ отдельном классе, Test, в отдельном...

254
Google map APIv2 работает на Android 5.1, но не работает на 6.0.1

Google map APIv2 работает на Android 5.1, но не работает на 6.0.1

Столкнулся с этой проблемой при компиляции программы на реальном устройстве 60

268
Работа с json. Локализация

Работа с json. Локализация

Хочу реализовать систему выбора языкового файла для перевода текстаПолучил язык установленный в клиенте у игрока

235