Как добавить библиотеку JFreeChart в JDK?Ошибка: пакет org.jfree.chart не существует - PullRequest
2 голосов
/ 24 сентября 2019

Я начинаю с Java после некоторого опыта работы с другими языками.Для всех них я использовал редактор кода Atom.Итак, я справился с Java, но недавно я обнаружил, что мне нужно использовать внешнюю библиотеку JFreeChart.

Я использую JDK 8 для запуска Java на cmd (Windows) и не использую какую-либо IDE.

Я пробовал до сих пор:

javac -cp "lib/*" ./Test.java

с jfreechart-1.0.19.jar и jcommon-1.0.23.jar в папке lib .

Использование Maven с pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.codehaus.mojo</groupId>
    <artifactId>my-project</artifactId>
    <version>1.0</version>

    <!-- https://mvnrepository.com/artifact/org.jfree/jfreechart -->
    <dependencies>
      <dependency>
        <groupId>org.jfree</groupId>
        <artifactId>jfreechart</artifactId>
        <version>1.5.0</version>
    </dependency>
    <dependency>
      <groupId>org.jfree</groupId>
      <artifactId>jcommon</artifactId>
      <version>1.0.24</version>
    </dependency>
  </dependencies>
</project>

Использование системной переменной CLASSPATH:

D:\Study\Java\code\com\lib\jfreechart-1.0.19.jar
D:\Study\Java\code\com\lib\jcommon-1.0.23.jar

Размещение файлов JAR в D: \ Program Files \ Java \ jdk \ jre \ lib \ ext

и до сих пор я всегда получаю:

error: package org.jfree.chart does not exist

Теперь я немного схожу с ума, поэтому я прошу помощи.Что я могу сделать, чтобы правильно добавить эту библиотеку?

Вот мой код (возможно, я неправильно импортирую):

import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.data.general.DefaultPieDataset;
import java.io.File;

public class Test {
  public static void main(String[] args) {
    DefaultPieDataset pieDataset = new DefaultPieDataset();
  }
}

Полное сообщение об ошибке (во всех случаях это было то же самое):

D:\Study\Java\code\jfc> javac .\Test.java
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
.\Test.java:2: error: package org.jfree.chart does not exist
import org.jfree.chart.JFreeChart;

                      ^
.\Test.java:3: error: package org.jfree.chart does not exist
import org.jfree.chart.ChartUtilities;
                      ^
.\Test.java:4: error: package org.jfree.chart does not exist
import org.jfree.chart.ChartFactory;
                      ^
.\Test.java:5: error: package org.jfree.data.general does not exist
import org.jfree.data.general.DefaultPieDataset;
                             ^
.\Test.java:10: error: cannot find symbol
    DefaultPieDataset pieDataset = new DefaultPieDataset();
    ^
  symbol:   class DefaultPieDataset
  location: class Test
.\Test.java:10: error: cannot find symbol
    DefaultPieDataset pieDataset = new DefaultPieDataset();
                                       ^
  symbol:   class DefaultPieDataset
  location: class Test
6 errors

1 Ответ

2 голосов
/ 24 сентября 2019

Так как вы используете pom.xml, вы "mavenized" ваш проект и, следовательно, вам нужно использовать Maven для его создания.

Итак, есть несколько вещей:

  1. Убедитесь, что вы правильно загрузили, установили и настроили Maven (это должен быть путь вашего пути) ... если вы этого еще не сделали, проверьте Добро пожаловать в Apache Maven
  2. Убедитесь, что ваш settings.xml настроен правильно, чтобы указывать на репозиторий Maven (например, http://repo1.maven.org/maven2), а также указывать ваш локальный репозиторий Maven (куда он будет загружать библиотеки).
  3. Убедитесь, что вы структурировали свой код в соответствии со стандартной структурой проекта.

Это будет означать, что ваш класс Test должен быть помещен в пакет org.codehaus.mojo. Таким образом, в соответствии со стандартной структурой проекта, Test появится в структуре каталогов D:\Study\Java\code\jfc\src\main\java\org\codehaus\mojo\Test.java

Вы pom.xml должны сидеть в D:\Study\Java\code\jfc\ В том же каталоге, что и ваш ./pom.xml, запустить команду mvn package. Если все настроено правильно, Maven подключитсяв удаленный репозиторий, который вы настроили, загрузите эти пакеты в свой локальный репозиторий и создайте файл JAR, который вы затем сможете запустить.

Прочитайте Maven за пять минут

ОБНОВЛЕНИЕ: Упаковка jar с зависимостями.

Для упаковкиjar с зависимостями, вам нужно будет добавить maven-assembly-plugin к вашему pom.xml.После того, как вы добавили это к своему pom.xml и запустили mvn package, он должен сгенерировать (согласно вашему примеру) jar с именем my-project-1.0-jar-with-dependencies.jar (вы можете изменить descriptorRef на более подходящее имя или исключить его),Это jar должно содержать все зависимости времени выполнения вашего проекта.

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>org.codehaus.mojo.Test</mainClass>
           </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id> <!-- this is used for inheritance merges -->
          <phase>package</phase> <!-- bind to the packaging phase -->
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

Прочитал Плагин Maven Assembly: Использование

...