当前位置: 首页 > 知识库问答 >
问题:

如何将JFreeChart库添加到JDK?错误:包组织。jfree。图表不存在

宇文修文
2023-03-14

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

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

我尝试了这么远:

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

使用jfreechart-1.0.19。jar和jcommon-1.0.23。jarlib文件夹中。

将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:\ProgramFiles\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个答案

雷晋
2023-03-14

由于您使用的是pom.xml,因此您已经将您的项目"mavenize",因此您需要使用Maven来构建它。

所以有两件事:

  1. 确保您已正确下载、安装和设置Maven(它需要是您路径的路径)。。。如果您还没有这样做,请查看欢迎使用ApacheMaven

这意味着您的Test类需要放在包org.codehaus.mojo中。因此,根据标准项目结构,Test将出现在目录结构D中:\Research\Java\code\jfc\src\main\java\org\codehaus\mojo\Test.java

五分钟后读一读Maven的文章

更新:使用依赖项打包jar

为了打包一个带有依赖项的jar,您需要将maven-asseting-plugin添加到您的pom.xml。一旦您将其添加到您的pom.xml并运行mvn包,它应该(根据您的示例)生成一个名为my-project-1.0-jar-with-dependencies.jarjar(您可以更改描述符Ref为更好的名称,或排除它)。这个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汇编插件:用法

 类似资料:
  • 我正在尝试编辑一些开源文件。在其中一个文件中,有一个“import org.apache.regexp.RE”导致错误“package org.apache.regexp”不存在 在我的Android Studio中,在哪里包括这个软件包,以便文件可以工作。非常感谢。 这是我下载jakarta-regexp.jar文件后的gradle文件

  • 注意,链接的解决方案(例如,致命错误:无法在classpath或bootclasspath中找到包java.lang)不起作用。 源代码 生成代码: export java_home=/library/java/javaVirtualMachines/jdk1.8.0_25.jdk/contents/home/bin/javac-target 1.8-source 1.8-classpath\“.

  • 我正在创建一个swing应用程序,并希望将JfreeChart添加到JPanel中。我创建了一个方法,在该方法中我创建了如下所示的图表: 创建了一个全局变量: 由于某种原因,当我点击按钮时,图表没有显示出来。

  • 几天前,我从Oracle站点安装了JDK 7 NetBeans。当我去归档时- JDK 7不是应该在那里吗?JDK是1.7 JDK 7吗?如果没有,我如何设置它,以便我可以使用JDK 7?

  • 更新:这是一个bug,已被报告,请注明:https://code.google.com/p/android/issues/detail?id=209832 我正在Android Studio上设置单元测试。 我已阅读文档并完全按照指定进行设置。我已将测试文件夹设置为 但是,当我去运行我的测试时,我得到: 错误:包org.junit不存在 我已经完全按照文档中的描述设置了我的gradle: 这个问题

  • 问题内容: 我的研究和实验还没有得到答案,所以我希望能有所帮助。 我正在修改一个应用程序的安装文件,该应用程序在以前的版本中没有我想立即添加的列。我不想手动添加列,而是要在安装文件中并且仅在表中不存在新列的情况下才添加。 该表如下创建: 如果我在create table语句下面添加以下内容,那么我不确定如果该列已经存在(可能已填充)会发生什么情况: 因此,我尝试了在某处找到的以下内容。这似乎不起作