# Fehlermeldung java.io.FileNotFoundException



## muellerin (10. Aug 2009)

Hallo

bin verzweifelt,
bekomme beim Ausführen des Programms immer folgende Fehlermeldung


```
java.io.FileNotFoundException: \iris.2.arff (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:106)
	at java.io.FileInputStream.<init>(FileInputStream.java:66)
	at java.io.FileReader.<init>(FileReader.java:41)
	at weka.classifiers.bayes.net.ADNode.main(Unknown Source)
```

mein Programm sieht so aus:


```
package frontend;

import input.DataDBReader;
import input.DataReader;
import input.DatafileReader;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.filechooser.FileNameExtensionFilter;

import core.ClusterPackage;

public class MainFrame extends JFrame implements ActionListener {

	/**
	 * Das Menue wird erzeugt mit folgenden Eintraegen: Datei mit Oeffnen,
	 * Speichern, Speichern unter und Beenden Daten Analysieren mit
	 * Erwartungswert, Varianz, Korrelationswert, Ausfallmechanismen,
	 * Mustererkennung und Daten visualisieren
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * The Menu of the tool.
	 */
	private JMenuBar menubar;

	/**
	 * The size of the screen.
	 */
	private Dimension screen_size;

	/**
	 * List of ClusterPackages whose information are shown in the frame.
	 */
	private ClusterPackage data;

	private static final String[] header_overview = { "Attribute",
			"Expectation", "Variance" };

	private JScrollPane scroll_data;
	private JScrollPane scroll_correlation;
	private JTable data_info;
	private JTable table_correlation;

	private JDialog dialog;

	private JPanel big, panelLeft, panelRight, button;

	private JButton open, save, delete, file;

	private DBParameterFrame db_parameter;

	private static final String str_readFile = "File";

	private static final String str_readDB = "Database";

	private static final String str_cancel = "Cancel";

	private static final String str_open = "Open";

	private static final String str_save = "Save";

	private static final String str_undo = "Undo";

	private static final String str_end = "End";

	public MainFrame() {

		/*
		 * init the frame properties
		 */
		super("Analyse Tool");
		screen_size = Toolkit.getDefaultToolkit().getScreenSize();
		setSize(screen_size);
		setExtendedState(JFrame.MAXIMIZED_BOTH);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		addWindowListener(new WindowClosingAdapter());

		Container contentPane = getContentPane();
		contentPane.setLayout(null);

		/*
		 * init menu
		 */
		menubar = new JMenuBar();
		menubar.add(createFileMenu());
		menubar.add(createDataMenu());
		setJMenuBar(menubar);

		/*
		 * ein grosses JPanel wird dem Frame hinzugefuegt
		 */
		big = new JPanel();
		big.setBounds(50, 100, (int) getWidth() - 100, (int) getHeight() - 225);
		contentPane.add(big);

		/*
		 * zwei JPanels werden dem JFrame hinzugefuegt
		 */
		panelLeft = new JPanel();
		panelLeft.setBorder(BorderFactory.createLoweredBevelBorder());
		panelLeft.setBackground(Color.WHITE);

		panelRight = new JPanel();
		panelRight.setBorder(BorderFactory.createLoweredBevelBorder());

		big.setLayout(new GridLayout(1, 2));
		big.add(panelLeft);
		big.add(panelRight);

		/*
		 * eine neues JPanel mit drei Buttons wird erstellt
		 */
		button = new JPanel();
		button.setBounds(50, 50, 315, 20);
		button.setLayout(new GridLayout(0, 3));
		open = new JButton(str_open);
		save = new JButton(str_save);
		delete = new JButton(str_undo);
		open.addActionListener(this);
		save.addActionListener(this);
		delete.addActionListener(this);
		button.add(open);
		button.add(save);
		button.add(delete);

		contentPane.add(button);

		setVisible(true);
	}

	/**
	 * Erzeugt den Menuepunkt "Datei" mit allen Untermenuepunkten und gibt es
	 * zurueck.
	 * 
	 * @return Menuepunkt "Datei" mit allen Untermenuepunkten
	 */
	private JMenu createFileMenu() {

		// ----Menuepunkt Datei anlegen---------------------
		JMenu dateiMenu = new JMenu("File");
		dateiMenu.setMnemonic('F');
		JMenuItem mi;

		// Datei-Untermenue hinzufuegen-----------------------
		dateiMenu.add(createOpenSubMenu());

		// Menueeintrag Speichern anlegen--------------------
		mi = new JMenuItem(str_save, 's');
		mi.addActionListener(this);
		dateiMenu.add(mi);

		// Seperator
		dateiMenu.addSeparator();

		// Menueeintrag Beenden anlegen-----------------------
		mi = new JMenuItem(str_end, 'e');
		mi.addActionListener(this);
		dateiMenu.add(mi);

		return dateiMenu;
	}

	/**
	 * Erzeugt Menueeintrag "Oeffnen" mit zwei Untermenues "Aus Datei" und "Aus
	 * Datenbank" und gibt es zurueck.
	 * 
	 * @return Menueeintrag "Oeffnen" mit zwei Untermenues "Aus Datei" und "Aus
	 *         Datenbank"
	 */
	private JMenu createOpenSubMenu() {

		JMenu oeffnen = new JMenu(str_open);
		oeffnen.setMnemonic('O');

		JMenuItem ausDatei = new JMenuItem(str_readFile);
		oeffnen.add(ausDatei);
		ausDatei.addActionListener(this);

		JMenuItem ausDB = new JMenuItem(str_readDB);
		oeffnen.add(ausDB);
		ausDB.addActionListener(this);

		return oeffnen;
	}

	/**
	 * Menuepunkt "Daten analysieren" mit folgenden Unterpunkten wird erzeugt
	 * "Erwartungswert", "Varianz", "Korrelationskoeffizient"
	 * "Mustererkenneung", "Daten visualisieren"
	 */
	private JMenu createDataMenu() {
		// Menuepunkt Daten analysieren erstellen-------------
		JMenu data = new JMenu("Daten analysieren");
		data.setMnemonic('A');
		JMenuItem da;
		// Menueeintrag Erwartungswert------------------------
		da = new JMenuItem("Erwartungswert");
		da.addActionListener(this);
		data.add(da);
		// Menueeintrag Varianz-------------------------------
		da = new JMenuItem("Varianz");
		da.addActionListener(this);
		data.add(da);
		// Menueeintrag Korrelationskoeffizeint-------------------
		da = new JMenuItem("Korrelationskoeffizient");
		da.addActionListener(this);
		data.add(da);
		// Seperator
		data.addSeparator();
		// Menueeintrag Ausfallmechanismen-----------------------
		data.add(createDeficitSubMenu());
		// Seperator
		data.addSeparator();
		// Menueeintrag Mustererkennung------------------------
		da = new JMenuItem("Mustererkennung");
		da.addActionListener(this);
		data.add(da);
		// Seperator
		data.addSeparator();
		// Menueeintrag Daten visualisieren-----------------------
		da = new JMenuItem("Daten visualisieren");
		da.addActionListener(this);
		data.add(da);
		return data;
	}

	/**
	 * Methode um den Menueeintrag "Ausfallmechnismen" mit den
	 * Untermenüeinträgen "NMAR", "MAR", "MCAR"
	 * 
	 * @return
	 */
	private JMenu createDeficitSubMenu() {
		JMenu deficit = new JMenu("Ausfallmechanismen");
		deficit.setMnemonic('a');
		JMenuItem nmar = new JMenuItem("NMAR");
		deficit.add(nmar);
		nmar.addActionListener(this);
		JMenuItem mar = new JMenuItem("MAR");
		deficit.add(mar);
		mar.addActionListener(this);
		JMenuItem mcar = new JMenuItem("MCAR");
		deficit.add(mcar);
		mcar.addActionListener(this);
		return deficit;
	}

	/**
	 * Method of ActionListener.
	 */
	public void actionPerformed(ActionEvent e) {

		String aktion = e.getActionCommand();
		boolean datenGelesen = false;
		File input_file = null;

		/*
		 * Oeffnen einer Datei aus dem Dateienverzeichnis
		 */
		if (aktion.equals(str_readFile)) {
			JFileChooser fc = initJFileChooser();

			int returnVal = fc.showOpenDialog(null);

			if (returnVal == JFileChooser.APPROVE_OPTION) {

				input_file = fc.getSelectedFile();

				String dateiEndung = input_file.getName().substring(
						input_file.getName().lastIndexOf(".") + 1);

				if (dateiEndung.equals(DatafileReader.END_CSV)) {

					try {

						DatafileReader.readCSV(input_file, true);
						datenGelesen = true;

					} catch (Exception e1) {

						JOptionPane.showMessageDialog(this, e1.getMessage(),
								"Input Error", JOptionPane.ERROR_MESSAGE);
						return;
					}
				} else if (dateiEndung.equals(DatafileReader.END_ARFF)) {

					try {

						DatafileReader.readArff(input_file, true);
						datenGelesen = true;

					} catch (Exception e1) {

						JOptionPane.showMessageDialog(this, e1.getMessage(),
								"Input Error", JOptionPane.ERROR_MESSAGE);
						return;
					}

				} else if (dateiEndung.equals(DatafileReader.END_XRFF)) {

					try {

						DatafileReader.readXarff(input_file, true);
						datenGelesen = true;

					} catch (Exception e1) {

						JOptionPane.showMessageDialog(this, e1.getMessage(),
								"Input Error", JOptionPane.ERROR_MESSAGE);
						return;
					}

				}

			} else {
				System.out.println("Abgebrochen durch den User");

			}

			if (dialog != null) {
				dialog.setVisible(false);
				dialog.dispose();
			}

		}

		// Lesen von einer Datenbank
		if (aktion.equals(str_readDB)) {
			if (dialog != null) {
				dialog.setVisible(false);
				dialog.dispose();
			}
			setVisible(false);
			db_parameter = new DBParameterFrame(this, true);
		}

		// Speichern unter der Datei
		if (aktion.equals(str_save)) {
			JFileChooser fc = initJFileChooser();
			int returnVal = fc.showSaveDialog(null);

			if (returnVal == JFileChooser.APPROVE_OPTION) {
				System.out
						.println("Die Datei " + fc.getSelectedFile().getName()
								+ " wird gespeichert!");
			}

		}

		// Beenden des Programms
		if (aktion.equals(str_end)) {
			System.out.println(str_end);
			boolean exitSystem = true;
			if (exitSystem) {
				System.exit(0);
			}
		}

		// Button oeffnen
		Object quelle = e.getSource();
		if (quelle == open) {

			JPanel panel = new JPanel();
			panel.setSize(120, 100);
			panel.setLayout(new GridLayout(3, 1, 10, 10));
			file = new JButton(str_readFile);
			file.addActionListener(this);
			JButton datenbank = new JButton(str_readDB);
			datenbank.addActionListener(this);
			JButton cancel = new JButton(str_cancel);
			cancel.addActionListener(this);
			panel.add(file);
			panel.add(datenbank);
			panel.add(cancel);

			dialog = new JDialog(this, "Open", true);
			dialog.setSize(panel.getWidth() + 50, panel.getHeight() + 40);
			dialog.getContentPane().setLayout(new FlowLayout());
			dialog.getContentPane().add(panel);
			dialog.setLocationRelativeTo(this);
			dialog.setVisible(true);

		}

		if (aktion.equals(str_undo)) {

			removeLoadedData();
		}

		if (aktion.equals(str_cancel)) {
			dialog.setVisible(false);
			dialog.dispose();
		}

		if (aktion.equals("Mustererkennung")) {
			System.out.println("Mustererkennung");
		}

		if (aktion.equals("Erwartungswert")) {
			System.out.println("Erwartungswert");
		}

		if (aktion.equals("Varianz")) {
			System.out.println("Varianz");
		}

		if (aktion.equals("Korrelationskoeffizient")) {
			System.out.println("Korrelationskoeffizient");
		}

		if (aktion.equals("Daten visualisieren")) {
			System.out.println("Daten visualisieren");
		}

		if (aktion.equals("MAR")) {
			System.out.println("MAR");
		}

		if (aktion.equals("NMAR")) {
			System.out.println("NMAR");
		}

		if (aktion.equals("MCAR")) {
			System.out.println("MCAR");
		}

		if (datenGelesen) {
			
			try {
				removeLoadedData();
				data = new ClusterPackage(DataReader.saveInCluster(input_file
						.getName(), new File(DataReader.out_file_full), true));
				aktualisiereTabelle();

			} catch (Exception e1) {

				e1.printStackTrace();
				return;
			}
		}
	}

	/**
	 * The data will be loaded of the database.
	 */
	public void loadDataOfDB(boolean fullData) {

		if (db_parameter != null) {

			try {
				DataDBReader.readDB(DataDBReader.MYSQL, db_parameter.getUrl(),
						db_parameter.getUser(), db_parameter.getPassword(),
						db_parameter.getTable(), fullData);
			} catch (Exception e) {

				setVisible(false);
				JOptionPane.showMessageDialog(this, e.getMessage(),
						"No Connection", JOptionPane.ERROR_MESSAGE);
				db_parameter.setVisible(true);
				return;
			}

			try {
				data = new ClusterPackage(DataReader.saveInCluster(db_parameter
						.getTable(), new File(DataReader.out_file_full), true));
				aktualisiereTabelle();
			} catch (Exception e) {
				JOptionPane.showMessageDialog(this, e.getMessage(),
						"No Connection", JOptionPane.ERROR_MESSAGE);
			}
		}
	}

	/**
	 * Inserts a table with the value of expactation and variance of each
	 * attribute and the correlation matrix into the left panel of the frame.
	 */
	private void aktualisiereTabelle() {

		/*
		 * information of the data
		 */
		// panelLeft.add(new JLabel(data.getFullData().getTableName()));

		data_info = new JTable(data.getFullData().getInfos(), header_overview);
		scroll_data = new JScrollPane(data_info);
		data_info.setFillsViewportHeight(true);
		data_info.setEnabled(false);
		panelLeft.add(scroll_data);

		/*
		 * correlation matrix
		 */
		String[] header = new String[data.getFullData().getAttributes().length + 1];
		header[0] = "";
		System.arraycopy(data.getFullData().getAttributes(), 0, header, 1, data
				.getFullData().getAttributes().length);

		table_correlation = new JTable(
				data.getFullData().getCorrelationTable(), header);
		scroll_correlation = new JScrollPane(table_correlation);
		table_correlation.setFillsViewportHeight(true);
		table_correlation.setEnabled(false);
		panelLeft.add(scroll_correlation);
	}

	/**
	 * Returns a configured JFileChooser.
	 * 
	 * @return configured JFileChooser
	 */
	private JFileChooser initJFileChooser() {
		
		// configuration
		JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));
		fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
		fc.setMultiSelectionEnabled(false);

		// filter for ending of file name
		FileNameExtensionFilter filter = new FileNameExtensionFilter(
				"*.csv, *.arff , *.xrff, *.txt", "csv", "txt", "arff", "xrff");
		fc.setFileFilter(filter);

		return fc;
	}

	/**
	 * Deletes the content of the frame.
	 */
	public void removeLoadedData() {

		panelLeft.removeAll();
		panelRight.removeAll();

		data = null;
		scroll_data = null;
		scroll_correlation = null;
		data_info = null;
		table_correlation = null;

		if (db_parameter != null) {
			db_parameter.dispose();
			db_parameter = null;
		}

	}

	public static void main(String[] args) {
		System.out.println("hallo");
		new MainFrame();
	}
}
```

würde mich über jede Hilfe freuen.
Und im vorraus schon mal Danke!!!


----------



## Marco13 (10. Aug 2009)

Ich nehme an, du wählst in einem Dialog eine Datei aus, und übergibst die dann an eine der Einlese-Klassen wie "input.DatafileReader"? Da kann man eigentlich nicht viel falsch machen. Poste mal den Rest vom Stack Trace (der Fehlermeldung) falls da noch mehr steht - und ... hast du den Quellcode von diesen "input.*"-Klassen? Dort KÖNNTE auch der Fehler liegen...


----------



## muellerin (11. Aug 2009)

Danke für die schnelle Antwort, aber habe mein Problem noch selber gelöst bekommen.
Irgendwas mit den externen jar-Dateien hat nicht richtig funktioniert. Nachdem ich sie nochmal neu importiert habe, funktioniert es auf einmal.

Vielen Dank


----------

