添加JFreeChart和JCommon库后,无法访问org.jfree.chart.JFreeChart类型

问题描述 投票:0回答:1

我是Java的新手,并试图掌握JFreeChart。我试图从这个网站运行一些演示代码:https://www.tutorialspoint.com/jfreechart/jfreechart_xy_chart.htm

这是演示代码(问题的其余部分如下):

import java.awt.Color; 
import java.awt.BasicStroke; 

import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.data.xy.XYSeries; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.data.xy.XYSeriesCollection; 
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;

public class XYLineChart_AWT extends ApplicationFrame {

   public XYLineChart_AWT( String applicationTitle, String chartTitle ) {
      super(applicationTitle);
      JFreeChart xylineChart = ChartFactory.createXYLineChart(
         chartTitle ,
         "Category" ,
         "Score" ,
         createDataset() ,
         PlotOrientation.VERTICAL ,
         true , true , false);

      ChartPanel chartPanel = new ChartPanel( xylineChart );
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
      final XYPlot plot = xylineChart.getXYPlot( );

      XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
      renderer.setSeriesPaint( 0 , Color.RED );
      renderer.setSeriesPaint( 1 , Color.GREEN );
      renderer.setSeriesPaint( 2 , Color.YELLOW );
      renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
      renderer.setSeriesStroke( 1 , new BasicStroke( 3.0f ) );
      renderer.setSeriesStroke( 2 , new BasicStroke( 2.0f ) );
      plot.setRenderer( renderer ); 
      setContentPane( chartPanel ); 
   }

   private XYDataset createDataset( ) {
      final XYSeries firefox = new XYSeries( "Firefox" );          
      firefox.add( 1.0 , 1.0 );          
      firefox.add( 2.0 , 4.0 );          
      firefox.add( 3.0 , 3.0 );          

      final XYSeries chrome = new XYSeries( "Chrome" );          
      chrome.add( 1.0 , 4.0 );          
      chrome.add( 2.0 , 5.0 );          
      chrome.add( 3.0 , 6.0 );          

      final XYSeries iexplorer = new XYSeries( "InternetExplorer" );          
      iexplorer.add( 3.0 , 4.0 );          
      iexplorer.add( 4.0 , 5.0 );          
      iexplorer.add( 5.0 , 4.0 );          

      final XYSeriesCollection dataset = new XYSeriesCollection( );          
      dataset.addSeries( firefox );          
      dataset.addSeries( chrome );          
      dataset.addSeries( iexplorer );
      return dataset;
   }

   public static void main( String[ ] args ) {
      XYLineChart_AWT chart = new XYLineChart_AWT("Browser Usage Statistics",
         "Which Browser are you using?");
      chart.pack( );          
      RefineryUtilities.centerFrameOnScreen( chart );          
      chart.setVisible( true ); 
   }
}

我无法运行演示代码,因为我无法从JFreeChart库导入任何类。

一个例子可能是当我尝试导入org.jfree.chart.ChartPanel时,我收到错误“类型org.jfreechart.ChartPanel无法访问”

我已经按照PDF安装指南(http://www.jfree.org/jfreechart/download/jfreechart-1.0.0-install.pdf

我已将库导入项目文件夹。

我检查了库JAR,它们包含了我要导入的所有类。

系统信息:

JRE版本 - JavaSE 11 / JDK 11

Eclipse版本 - 4.11.0

应该导入库并且代码应该运行正常,尽管Eclipse说它们不可访问。

提前感谢任何花时间阅读此内容的人:)

java jfreechart
1个回答
1
投票

鉴于您使用的是Java 11,您可能还创建了一个

module-info.java

文件。这将是一个问题

module yourmodulename { 
   ...
}

要访问jfreechart自动模块,您需要它

module yourmodulename { 
   requires jfreechart;
}

enter image description here


此外,您所关注的PDF教程非常过时。使用Maven或Gradle作为依赖关系管理工具。如果您需要进一步澄清,请告诉我。

Maven的:

<dependency>
    <groupId>org.jfree</groupId>
    <artifactId>jfreechart</artifactId>
    <version>1.5.0</version>
</dependency>

摇篮:

implementation('org.jfree:jfreechart:1.5.0')
© www.soinside.com 2019 - 2024. All rights reserved.