有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Main方法不会以Eclipse结尾

我正在使用java(1.6)和WebDriver(2.16)在Eclipse(Indigo)中开发测试

我有一个相当简单的测试,运行良好,但实际上并没有“结束”。我的意思是,在执行了“main”方法中的所有代码行之后,Eclipse控制台仍然指示代码正在运行(控制台中的红色“Terminate”按钮已启用)

直到昨天,在我用一些新代码扩展了测试脚本之后,这才开始发生。我认为这就是问题所在,于是评论了所有新代码。不幸的是,这个问题依然存在

我该如何解决这个问题

谢谢你的意见

编辑

下面是JStack线程转储的相关部分。有关完整转储,请参见here

2012-01-07 10:56:40 Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.4-b02 mixed mode):

"Thread-7" daemon prio=6 tid=0x0000000008c08800 nid=0x12f4 runnable [0x000000000 921f000] java.lang.Thread.State: RUNNABLE at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(Unknown Source) at org.apache.commons.exec.StreamPumper.run(StreamPumper.java:105) at java.lang.Thread.run(Unknown Source)

"Thread-6" daemon prio=6 tid=0x0000000008d7b800 nid=0xb98 runnable [0x0000000009 11f000] java.lang.Thread.State: RUNNABLE at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(Unknown Source) at java.io.BufferedInputStream.fill(Unknown Source) at java.io.BufferedInputStream.read1(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) - locked <0x00000007d5a00888> (a java.io.BufferedInputStream) at java.io.FilterInputStream.read(Unknown Source) at org.apache.commons.exec.StreamPumper.run(StreamPumper.java:105) at java.lang.Thread.run(Unknown Source)

"Thread-5" prio=6 tid=0x000000000678b000 nid=0x10e4 runnable [0x000000000901f000 ] java.lang.Thread.State: RUNNABLE at java.lang.ProcessImpl.waitFor(Native Method) at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecut or.java:347) at org.apache.commons.exec.DefaultExecutor.access$200(DefaultExecutor.ja va:46) at org.apache.commons.exec.DefaultExecutor$1.run(DefaultExecutor.java:18 8) "main" prio=6 tid=0x000000000062e000 nid=0x450 runnable [0x000000000261f000] java.lang.Thread.State: RUNNABLE at java.lang.Thread.exit(Unknown Source)

编辑

以下是我的Excel代码(使用java IO和Apache的POI类)

public HashMap<String, String> getTestData()
{
    InputStream myxls = null;

    try {
        // Create a connection to the Excel file
        myxls = new FileInputStream(fileName);
        System.out.println("Excel Input was opened");
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        //e.printStackTrace();
    }

    // Define a workbook object
    HSSFWorkbook wb = null;

    try {
        // Instantiate the workbook object
        wb = new HSSFWorkbook(myxls);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // Create a worksheet object
    HSSFSheet sheet = wb.getSheet(sheetName);
    // Read the first row (it always contains the headers (variable names)
    HSSFRow headerRow = sheet.getRow(0);
    // Read the row requested
    HSSFRow row = sheet.getRow(dataRow);  

    //System.out.println("Creating a new HashMap from row " + dataRow + " in sheet " + sheetName);

    // Define a collection of value/value pairs
    HashMap<String,String> testData = new HashMap<String,String>();

    // Get count of columns != empty
    int columnCount = row.getPhysicalNumberOfCells();
    //System.out.println(Integer.toString(columnCount));

    String textHeader;
    String textData;

    // Loop through the columns
    for(int colcount=0; colcount < columnCount; colcount++)
    {
        // Read the column header and the cell value
        HSSFCell cell = row.getCell(colcount);
        HSSFCell headerCell = headerRow.getCell(colcount);

        switch (headerCell.getCellType ())
        {
            case HSSFCell.CELL_TYPE_NUMERIC :
            {
                // cell type numeric.
                textHeader = Double.toString(headerCell.getNumericCellValue());
                //System.out.println(textHeader);
                break;
            }
            case HSSFCell.CELL_TYPE_STRING :
            {
                // cell type string.
                HSSFRichTextString richTextString = headerCell.getRichStringCellValue();
                textHeader = richTextString.getString();
                break;
            }
            default :
            {
                // types other than String and Numeric.
                textHeader = "Type not supported";
                break;
            }

        }

        switch (cell.getCellType ())
        {
            case HSSFCell.CELL_TYPE_NUMERIC :
            {
                // cell type numeric.
                textData = Double.toString(cell.getNumericCellValue());
                break;
            }
            case HSSFCell.CELL_TYPE_STRING :
            {
                // cell type string.
                HSSFRichTextString richTextString = cell.getRichStringCellValue ();
                textData = richTextString.getString();
                break;
            }
            case HSSFCell.CELL_TYPE_BLANK :
            {
                // cell type string.
                textData = "";
                break;
            }
            default :
            {
                // types other than String and Numeric.
                textData = "Type not supported";
                break;
            }

        }


        // Add the value of each cell to the HashMap collection
        testData.put(textHeader,textData);
        //System.out.println(textHeader + " / " + textData);

    }

    try{
        // End the file object

        myxls.close();
        System.out.println("Excel Input was closed");
    }
    catch (IOException e){
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // Send the HashMap back to the calling code
    return testData;

}

共 (0) 个答案