0

I have a program in which the client uploads a file and the file is stored in a database. Prior to Java updating on my computer, my project was working fine. Now I am getting a FileNotFoundException. Eclipse is telling me:

The JAR file C:\Program Files\Java\jre7\lib\rt.jar has no source attachment.

Anybody come across this problem?

My servlet code for uploading the file is standard:

if (!ServletFileUpload.isMultipartContent(request))
    {return;}

try 
{ 
  List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
  courseID = items.get(0).getString();
  homeworkID = items.get(1).getString();
  File storeFile = new File(items.get(2).getName());
  String fileName = storeFile.getName();
  String mimeType = new MimetypesFileTypeMap().getContentType(storeFile); //for putting file into database
  putFileIntoDB(uName, courseID, homeworkID, fileName, mimeType, storeFile);
}//try
 catch (Exception ex)
 {
   request.setAttribute("msg", "There was an error: " + ex.getMessage());
   request.getRequestDispatcher("/upload.jsp").forward(request, response);
  }

There error is found in the putFileIntoDB method when the FileInputStream is created in the line fis=new FileInputStream(f):

void putFileIntoDB(String username, String courseID, String homeworkID, String fileName, String mime, File f) throws SQLException, IOException
{   
    FileInputStream fis = null;
    java.sql.PreparedStatement pstmt = null;
    java.sql.Connection conn = null;
    try {
            conn = ConnectionManager.getConnection();
            conn.setAutoCommit(true);

            fis = new FileInputStream(f);

            pstmt = conn.prepareStatement("insert into files(username, courseID, assignmentID, fileName, mimeType, contents) values (?, ?, ?, ?, ?, ?)");
            pstmt.setString(1, username);
            pstmt.setString(2, courseID);
            pstmt.setString(3, homeworkID);
            pstmt.setString(4, fileName);
            pstmt.setString(5, mime);
            pstmt.setAsciiStream(6, fis, (int) f.length());

            pstmt.executeUpdate();
            conn.commit();
        }
    catch (Exception e)
    {
      System.err.println("Error: " + e.getMessage());
      e.printStackTrace();
    } 
    finally
    {
      pstmt.close();
      fis.close();
      conn.close();
    }
}

Anybody else come across this problem?

syb0rg
  • 8,057
  • 9
  • 41
  • 81
Lani1234
  • 522
  • 5
  • 12
  • 21

1 Answers1

1

Try below steps;

Step 1 - Configure Eclilpse to use the JDK and not the JRE.

Window->Preferences->Java->Installed JREs
Click "Add", "Standard VM", "Next"
For "JRE Home" click "Directory"
Locate your JDK directory...
Ex: C:\java\jdk1.6.0_24
Click "Finish"
Next check the JDK vs the JRE that is listed.
Click "Ok"

Step 2 - Configure your Project to use the JDK because it was created with the JRE as the "Installed JRE". New project should be OK.

Right click the project's name.
Choose "Properties", "Java Build Path"
Click the tab "Libraries".
Click "Add Libraries", select "JRE System Library", Next
Select the bottom item: Workspace default JRE (jdk1.x.x. etc....)
(Notice that it is now a JDK and not the JRE!)
Click "Finish"
Now remove the JRE libarary so you only have the JDK library.
ex: JRE System Library [JavaSE-1.6]
Click "OK"
Avinash K.P
  • 167
  • 7
  • Well I tried this and unfortunately I'm still having the same problem. I don't know what happened to my eclipse setup. I'm considering unistalling it and reinstalling it. Do you know if there is a way to revert back to a previous time when it was working? – Lani1234 Mar 19 '13 at 01:14
  • no you can't revert. Check the similar isse here: http://stackoverflow.com/questions/10367286/m2eclipse-is-unable-to-locate-c-program-files-java-jre6-lib-tools-jar – Avinash K.P Mar 19 '13 at 06:14