How to add JFreeChart library to JDK? Error: package org.jfree.chart does not exist
How to add JFreeChart library to JDK? Error: package org.jfree.chart does not exist
在使用了其他语言后,我开始使用 Java。对于所有这些,我一直在使用 Atom 代码编辑器。所以我用 Java 进行了管理,但最近我发现我需要使用外部库 JFreeChart。
我在 cmd (Windows) 上使用 JDK 8 到 运行 Java 而我没有使用任何 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
由于您使用的是 pom.xml
您已经 "mavenized" 您的项目,因此您需要使用 Maven 来构建它。
所以有几件事:
- 确保您已正确下载、安装和设置 Maven(它需要是您路径的路径)...如果您还没有这样做,请查看 Welcome to Apache Maven
- 确保您的
settings.xml
已正确配置为指向 Maven 存储库(即 http://repo1.maven.org/maven2)并指定您的本地 Maven 存储库(它将下载库的位置)。
- 确保您已根据标准项目结构构建代码。
这意味着您的 Test
class 需要放在包裹 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 文件,然后您可以 运行。
更新:打包 jar
与依赖项。
为了打包 jar
与依赖项,您需要将 maven-assembly-plugin
添加到您的 pom.xml
。将此添加到 pom.xml
和 运行 mvn package
后,它应该生成(根据您的示例)一个名为 my-project-1.0-jar-with-dependencies.jar
的 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>
在使用了其他语言后,我开始使用 Java。对于所有这些,我一直在使用 Atom 代码编辑器。所以我用 Java 进行了管理,但最近我发现我需要使用外部库 JFreeChart。
我在 cmd (Windows) 上使用 JDK 8 到 运行 Java 而我没有使用任何 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
由于您使用的是 pom.xml
您已经 "mavenized" 您的项目,因此您需要使用 Maven 来构建它。
所以有几件事:
- 确保您已正确下载、安装和设置 Maven(它需要是您路径的路径)...如果您还没有这样做,请查看 Welcome to Apache Maven
- 确保您的
settings.xml
已正确配置为指向 Maven 存储库(即 http://repo1.maven.org/maven2)并指定您的本地 Maven 存储库(它将下载库的位置)。 - 确保您已根据标准项目结构构建代码。
这意味着您的 Test
class 需要放在包裹 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 文件,然后您可以 运行。
更新:打包 jar
与依赖项。
为了打包 jar
与依赖项,您需要将 maven-assembly-plugin
添加到您的 pom.xml
。将此添加到 pom.xml
和 运行 mvn package
后,它应该生成(根据您的示例)一个名为 my-project-1.0-jar-with-dependencies.jar
的 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>