Eu coloquei a mesma mensagem no java avançado.
Estou a utilizar o JFreeReports, decidi fazer um teste e correr o HelloWorld do report.
Os meus passos foram os seguintes, num projecto limpo.
Criei o package src, e adicionei a classe HelloWorld.
Criei um folder lib e copiei os jars que a api depende para lá ‘copy&paste :)’.
de seguida fui ao Projecto>Java Build Path>Libraries e escolhi a opção ‘add jars’ fui à pasta lib e adicionei os jars que são os seguintes :
bsf-2.3.0.jar
bsh-1.3.0.jar
gnujaxp.jar
itext-1.4.jar
jcommon-1.0.6.jar
jcommon-xml-1.0.6.jar
libfonts-0.2.1.jar
libloader-0.1.5.jar
pixie-0.8.6.jar
poi-3.0-alpha1-20050704.jar
jfreereport-0.8.7-9.jar
jfreereport-demo-0.8.7-9.jar
O código da classe HelloWorld é o seguinte
package src;
import java.awt.Color;
import java.awt.geom.Point2D;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import org.jfree.report.ElementAlignment;
import org.jfree.report.JFreeReport;
import org.jfree.report.JFreeReportBoot;
import org.jfree.report.ReportProcessingException;
import org.jfree.report.demo.helper.DefaultCloseHandler;
import org.jfree.report.demo.helper.DemoHandler;
import org.jfree.report.demo.helper.PreviewHandler;
import org.jfree.report.elementfactory.TextFieldElementFactory;
import org.jfree.report.modules.gui.base.PreviewDialog;
import org.jfree.ui.FloatDimension;
import org.jfree.util.Log;
/**
-
A very simple JFreeReport demo. The purpose of this demo is to illustrate the basic
-
steps required to connect a report definition with some data and display a report
-
preview on-screen.
-
-
In this example, the report definition is created in code. It is also possible to read
-
a report definition from an XML file…that is demonstrated elsewhere.
-
@author David Gilbert
/
public class HelloWorld implements DemoHandler
{
/*- A helper class to make this demo accessible from the DemoFrontend.
*/
private class HelloWorldPreviewHandler implements PreviewHandler
{
public HelloWorldPreviewHandler()
{
}
public void attemptPreview() { executeReport(); } } - A helper class to make this demo accessible from the DemoFrontend.
/**
- Creates and displays a simple report.
*/
public HelloWorld ()
{
}
protected void executeReport ()
{
final TableModel data = createData();
final JFreeReport report = createReportDefinition();
report.setData(data);
try
{
final PreviewDialog preview = new PreviewDialog(report);
preview.addWindowListener(new DefaultCloseHandler());
preview.pack();
preview.setVisible(true);
}
catch (ReportProcessingException e)
{
Log.error("Failed to generate report ", e);
}
}
/**
- Creates a small dataset to use in a report. JFreeReport always reads data from a
-
TableModelinstance. -
@return a dataset.
*/
private TableModel createData ()
{
final Object[] columnNames = new String[]{"Column1", "Column2"};
final DefaultTableModel result = new DefaultTableModel(columnNames, 1);
result.setValueAt("Hello\n", 0, 0);
result.setValueAt("World!\n", 0, 1);
return result;
}
/**
- Creates a report definition.
-
@return a report definition.
*/
private JFreeReport createReportDefinition ()
{
final JFreeReport report = new JFreeReport();
report.setName(getDescription());
TextFieldElementFactory factory = new TextFieldElementFactory();
factory.setName("T1");
factory.setAbsolutePosition(new Point2D.Float(0, 0));
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.RIGHT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setNullString("-");
factory.setFieldname("Column1");
report.getItemBand().addElement(factory.createElement());
factory = new TextFieldElementFactory();
factory.setName("T2");
factory.setAbsolutePosition(new Point2D.Float(200, 0));
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setNullString("-");
factory.setFieldname("Column2");
report.getItemBand().addElement(factory.createElement());
return report;
}
/**
- Returns a short description of the demo.
-
@return
*/
protected String getDescription ()
{
return “A Very Simple Report”;
}
public String getDemoName()
{
return “Hello World Demo (External)”;
}
public PreviewHandler getPreviewHandler()
{
return new HelloWorldPreviewHandler();
}
/**
- The starting point for the “Hello World” demo application.
-
@param args ignored.
*/
public static void main (final String[] args)
{
// this also installs the log.
// initialize JFreeReport
JFreeReportBoot.getInstance().start();
//final HelloWorld app =
new HelloWorld().executeReport();
}
}
Exactamente como eles o forneceram com as demonstrações do JFreeReports.
Quando eu compilo e corro no eclipse , mostra tudo certo.
Quando exporto o jar, seguindos todos os passos até no final escolhendo a classe que vai iniciar.
eu ao correr no terminar com java -jar HelloWorld.jar dá-me o seguinte erro :
Exception in thread “main” java.lang.NoClassDefFoundError: org/jfree/report/demo/helper/DemoHandler
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
E não sei o que fiz de errado, é a primeira vez que trabalho com jar’s de terceiros, portanto não sei se me podem ajudar?
Fiz alguma coisa mal no classpath?
Cumprimentos, e espero que me possam ajudar.

.