0

我正在使用一个 Java 项目,它提供了一个用户界面来执行一些用户事件。它不像大多数 Swing/Gui 应用程序那样在 main() 中作为 Runnable 线程执行。相反,它在源代码中有几个类和表单文件,并使用另一个 Java 程序从命令行运行。但是当我试图通过单击某个输入按钮来读取某个文件时,系统无法读取该文件。系统将自定义错误消息写入项目文件夹中保存的名为 log.txt 的文件中。我已经尝试过 1. 设置断点(应用程序不会在断点处停止) 2. 进行控制台打印,即 System.out.println(控制台上没有打印)

所以这两种调试方式都失败了。我正在使用 Eclipse 3.5.2 SDK (Galileo)。如何调试我的应用程序上的用户事件?

下面列出了项目 DDMT 中的源类 DataImportPanel 的概要。它在 DataImportPanel.openHeteroFile(File) 方法中给出异常。

DDMT.core.DataImportPanel 
... 
DDMT.core.DataImportPanel.heteroDistributionModel 
...  
DDMT.core.DataImportPanel.initComponents() 
DDMT.core.DataImportPanel.initComponents().new ActionListener() {...} 
...
DDMT.core.DataImportPanel.initComponents().new MouseAdapter() {...} 
DDMT.core.DataImportPanel.initComponents().new ActionListener() {...} 
DDMT.core.DataImportPanel.jButton2ActionPerformed(ActionEvent) 
... 
DDMT.core.DataImportPanel.jButton3ActionPerformed(ActionEvent) 
DDMT.core.DataImportPanel.openHeteroFile(File) 
DDMT.core.DataImportPanel.jButton8ActionPerformed(ActionEvent)  
DDMT.core.DataImportPanel.openFile(File) 
DDMT.core.DataImportPanel.jButton15ActionPerformed(ActionEvent) 
DDMT.core.DataImportPanel.jRadioButton1ActionPerformed(ActionEvent)  
DDMT.core.DataImportPanel.buttonGroup1  
...
DDMT.core.DataImportPanel.jButton8 
DDMT.core.DataImportPanel.jButton9 
DDMT.core.DataImportPanel.jLabel1 
... 
DDMT.core.DataImportPanel.jList1 
... 
DDMT.core.DataImportPanel.jPanel1 
... 
DDMT.core.DataImportPanel.jRadioButton1 
...
DDMT.core.DataImportPanel.jScrollPane1 
... 
DDMT.core.DataImportPanel.jTabbedPane1 
DDMT.core.DataImportPanel.DistributionTypes 
DDMT.core.DataImportPanel.DoubleCellRenderer

这是抛出数据导入异常的 openHeteroFile

private void openHeteroFile(File f)
{
    File file = null;
    try{
        file = f;
        file.createNewFile();
        FileReader reader = new FileReader(file);
        BufferedReader bReader = new BufferedReader(reader);

        //The vector that holds the number of columns
        attributeNames = new ArrayList<String>();

        //Read in the number of pairs
        String line = bReader.readLine();

        //load the file
        heteroDistributionModel = new DefaultListModel();
        line = bReader.readLine();
        while( line != null )
        {
            //Set up the RegEx matches
            heteroDistM = heteroDistP.matcher(line);
            firstM = firstP.matcher(line);
            firstM.find();
            String output1 = firstM.group()+" (";
            for( int j = 0; j< nodeTypes[0].length; j++)
            {
                if( controlClass.nodes[Integer.parseInt(firstM.group())].getNodeType().equals( nodeTypes[1][j]) )
                {
                    output1 = output1+nodeTypes[0][j]+")";
                }
            }
            String output2 = new String();
            while( heteroDistM.find() )
            {
                attributeNames.add(heteroDistM.group(1));
                output2 = output2 + " "+heteroDistM.group(1);
            }
            heteroDistributionModel.addElement(new String[]{output1, output2});
            line = bReader.readLine();
        }

        for (String attr : attributeNames) 
            System.out.println(attr); //debug


        jList3.setModel(heteroDistributionModel);
        jList3.setCellRenderer(new DoubleCellRenderer());
        bReader.close();
        reader.close();
    }catch(IOException ex)
    {
        controlClass.showError("Data Import: Error: File "+file.getPath()+" is not a valid Heterogeneous data file!");
    }catch(Exception ex)
    {
        ex.printStackTrace(); //debug
        controlClass.showError("Data Import: Error: Unknown problem reading file "+file.getPath()+"!");
    }
}
4

1 回答 1

1

在启动调试器的运行按钮旁边有一个绿色的小瓢虫。

我会确保进行正确的调用。还要检查你的括号、中断和返回,以确保代码实际上正在被读取。请发布 SSCCE(简短、独立、正确的示例),以便我们查看您的代码以更好地帮助您。

编辑(在 OP 添加了一些代码之后)

我很确定您的问题出在哪里 file.createNewFile();

于 2012-07-05T12:52:45.867 回答