Syntax error on token(s), misplaced construct(s)

89,702

Solution 1

You need to place all statements after the declarations in a code block, e.g. method rather than the class block. Logically it probably makes sense to place all statements in the code block but the non-declarative statements need to be enclosed within the new block

private void processFile() {
    data.put("1", new Object[]{"ID","NAME", "LASTNAME"}); // <--Syntax error  
     ...//snip
  } catch (Exception e) {
     e.printStackTrace();
  } 
}

Solution 2

Issue resolved. I created a new project in Eclipse, added the POI (jar) to the libraries and the syntax error is no longer displayed.

Solution 3

Place all of your code within a main method:

public static void main(String[] args) {
        //All of your code goes here

}

Statements (this does not include declarations) must be executed inside a block. It appears that you are conducting a test of some code and that this is not meant to be an actual object in your code, so you must place it within the main method.

Share:
89,702
user3277243
Author by

user3277243

Updated on July 09, 2022

Comments

  • user3277243
    user3277243 almost 2 years

    How to fix this error ---> Syntax error on token(s), misplaced construct(s) The error is at the line below indicated. Note: This code was copied on the web and trying to get it to work as a learning tool I'm using Eclipse Thanks!

    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;
    
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    public class EcellTest22 {
         //Blank workbook
        XSSFWorkbook workbook = new XSSFWorkbook();
    
        //Create a blank sheet
        XSSFSheet sheet = workbook.createSheet("Employee Data");
    
        //This data needs to be written (Object[])
        Map<String, Object[]> data = new TreeMap<String, Object[]>();
         //
        data.put("1", new Object[]{"ID","NAME", "LASTNAME"}); <--Syntax error on token(s), misplaced construct(s) 
    
    
        data.put("2", new Object[]{1, "Amit", "Shukla"});
        data.put("3", new Object[]{2, "Lokesh", "Gupta"});
        data.put("4", new Object[]{3, "John", "Adwards"});
        data.put("5", new Object[]{4, "Brian", "Schultz"});
    
        //Iterate over data and write to sheet
        Set<String> keyset = data.keySet();
    
        int rownum = 0;
        for (String key : keyset) 
        {
            //create a row of excelsheet
            Row row = sheet.createRow(rownum++);
    
            //get object array of prerticuler key
            Object[] objArr = data.get(key);
    
            int cellnum = 0;
    
            for (Object obj : objArr) 
            {
                Cell cell = row.createCell(cellnum++);
                if (obj instanceof String) 
                {
                    cell.setCellValue((String) obj);
                }
                else if (obj instanceof Integer) 
                {
                    cell.setCellValue((Integer) obj);
                }
            }
        }
        try 
        {
            //Write the workbook in file system
            FileOutputStream out = new FileOutputStream(new File("C:\\Documents and Settings\\admin\\Desktop\\imp data\\howtodoinjava_demo.xlsx"));
            workbook.write(out);
            out.close();
            System.out.println("howtodoinjava_demo.xlsx written successfully on disk.");
        } 
        catch (Exception e)
        {
            e.printStackTrace();
        }
    
        }
    
    }
    
  • Noumenon
    Noumenon over 6 years
    This includes import statements.
  • Reimeus
    Reimeus over 6 years
    Obviously this doesnt include import statements :)
  • Noumenon
    Noumenon over 6 years
    I meant to say that if an import statement gets down in between your braces, it will cause this error just like other code. Happened to me with a velocity Include macro.
  • Azurespot
    Azurespot over 4 years
    Noumenon, that was the fix for my issue too. Someone had created 2 classes on the same page, and put one import statement for the 2nd class lower on the page after the first class, not in any code black (because imports wouldn't be in one). When I moved it back to the top, the error went away. I guess they can only be at the top.