java - 如何将JFreeChart库添加到JDK?错误: package org. jfree.chart不存在

标签 java maven libraries jfreechart

在获得了一些其他语言的经验后,我开始使用 Java。对于所有这些,我一直在使用 Atom 代码编辑器。所以我已经使用 Java 进行管理,但最近我发现我需要使用外部库 JFreeChart。

我使用 JDK 8 在 cmd (Windows) 上运行 Java,并且没有使用任何 IDE。

到目前为止我尝试过:

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

lib文件夹中包含jfreechart-1.0.19.jarjcommon-1.0.23.jar

通过 pom.xml 使用 Maven:

<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

最佳答案

由于您使用的是pom.xml您已经“mavenized”了您的项目,因此您需要使用 Maven 来构建它。

所以有几件事:

  1. 确保您已正确下载、安装并设置 Maven(它需要是您的路径的路径)...如果您还没有这样做,请查看 Welcome to 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 in Five Minutes

    更新:打包 jar具有依赖关系。

    为了打包jar对于依赖项,您需要添加 maven-assembly-plugin给您pom.xml 。将其添加到您的 pom.xml 后并运行mvn package它应该生成(根据您的示例) jarmy-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 Plugin : Usage

    关于java - 如何将JFreeChart库添加到JDK?错误: package org. jfree.chart不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58084891/

    相关文章:

    maven - 为什么 forEach 标签不能与 Tomcat 一起使用,但与 Jetty 一起使用却一切正常?

    java - IntelliJ 添加的项目库在包中不起作用

    linux - Windows 上 "install"第三方库和头文件到哪里?

    java - 遍历String中包含的字符时,是否最好在for循环语句的内部或外部调用length方法?

    java - 如何将现有的 javascript 转换为 java 以与 GWT 一起使用?

    eclipse - 在 maven POM 中设置 Tomcat 库依赖项

    java - Maven在eclipse上按F11时自动安装项目

    c - 如何知道我是否有 C 库?

    java - 扩展 Selenium WebDriver WebElement?

    java - 当我从 Task Scheduler 的 bat 文件中运行 java 程序时,包不存在错误...但是当双击 bat 文件时它会运行