adoptium-support icon indicating copy to clipboard operation
adoptium-support copied to clipboard

JFileChooser cause a Exception when call method setCurrentDirectory(f)

Open cormansa opened this issue 1 year ago • 1 comments

Please provide a brief summary of the bug

I have an application was running on Oracle JRE 8. I recomplied that application with JDK11 (adomptium)

today I tryed to use that application but I got an error :

JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); // THIS PART DOES NOT WORK on JDK 11 - cause a ArrayIndexOutOFBound fc.setCurrentDirectory(f);

I found someone reported similar bug here : https://bugs.openjdk.org/browse/JDK-8345113 My application are critical and I cannot test like I want.

For now, I use the old version in production because JFileChooser are not working. I cannot reproduce or send you the full; backstrace.

Java version : OpenJDK11U-jre_x64_windows_hotspot_11.0.25_9.zip from Adoptium website

Did you test with the latest update version?

  • [x] Yes

Please provide steps to reproduce where possible

Here the code...

Create a folder c:\chem32\data\1 and specify srcPath = c:\chem32\data\1

On that folder, we must have at least 1 folder like "1.D" "2.D" "3.D" and inside each folder a file report.txt who contain data from chromatograf

The pourpose of this function is to list all folder on c:\chem32\data\1 and check if there a report.txt file. If there more that one folder, ask user to select the good folder, othrwise, select the unique folder

private void lastDirectory() { System.out.println("lastDirectory() -> GET LAST DIRECTORY"); String Repertoire = "", Testfolder ="";

String []dirlist;
try {
 File d = new File(srcPath);
 File f = null;
 dirlist = d.list();
	
 // count folder
 int count = 0;
 
 for(int i = 0; i < dirlist.length; i++)
   {
   d = new File(srcPath+dirlist[i]);
   if(d.isDirectory())
     {		   
	 Testfolder = srcPath+dirlist[i];
	 f = new File ( Testfolder + "\\report.txt");

	 if(f.isFile() == true)
	   {
	   System.out.println("lastDirectory() -> Nous avons trouve le fichier");
	   directory = Testfolder;
       reportfilename = Testfolder + "\\report.txt";
	   System.out.println("lastDirectory() -> Le fichier est : " + reportfilename);
	   count++;
	   }
	 }
   }

 // WHY WE insciate JFileChooser here ?
 JFileChooser fc = new JFileChooser();
 fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
 // THIS PART DOES NOT WORK on JDK 11 - cause a ArrayIndexOutOFBound
 fc.setCurrentDirectory(f);
 int returnVal = 0;
 
 // Set Repertoire with the last found directory with report.txt
 Repertoire = directory;
 
 
 if(count > 1)
   {
   System.out.println("lastDirectory() -> more than one directory with report.txt has be found : ");
   JOptionPane.showMessageDialog(null,new JLabel("Il y a plus d'un repertoire avec un fichier report.txt, quel repertoire le programme doit traiter ?"),"TGLS6890 - message", JOptionPane.WARNING_MESSAGE);
   
	returnVal = fc.showOpenDialog(null);
		
  	if (returnVal == JFileChooser.APPROVE_OPTION) {
	  File selected_file = fc.getSelectedFile();
	  Repertoire = selected_file.getAbsolutePath();		  
  	  }
   }	 
 
  System.out.println("lastDirectory() -> Directory found : " + Repertoire);
  System.out.println("lastDirectory() -> Recherche fichier : " + Repertoire + "\\report.txt");
  }

Expected Results

program find the correct folder to use.

Actual Results

Application not working

What Java Version are you using?

openjdk 11.0.22 2024-01-16

What is your operating system and platform?

Windows 7 64-bits or Windows 11 64-bits

The version added is the version from my computer (dev station), but on the users computers, that's the version 11.0.25_9

How did you install Java?

From zip file

Did it work before?

Work with a old java 8 version

Did you test with other Java versions?


Relevant log output


cormansa avatar Jan 22 '25 15:01 cormansa

I was able to test on my computer -- JDK 11 ( jdk-11.0.22+7) :

lastDirectory() -> Unknow error in lastDirectory : java.lang.IndexOutOfBoundsException: Invalid index
java.lang.IndexOutOfBoundsException: Invalid index
	at java.desktop/javax.swing.DefaultRowSorter.convertUnsortedUnfiltered(DefaultRowSorter.java:523)
	at java.desktop/javax.swing.DefaultRowSorter.convertRowIndexToModel(DefaultRowSorter.java:506)
	at java.desktop/sun.swing.FilePane$SortableListModel.getElementAt(FilePane.java:751)
	at java.desktop/javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1438)
	at java.desktop/javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1389)
	at java.desktop/javax.swing.plaf.basic.BasicListUI.getCellBounds(BasicListUI.java:1027)
	at java.desktop/javax.swing.JList.getCellBounds(JList.java:1641)
	at java.desktop/javax.swing.JList.ensureIndexIsVisible(JList.java:1153)
	at java.desktop/sun.swing.FilePane.ensureIndexIsVisible(FilePane.java:1805)
	at java.desktop/sun.swing.FilePane.doDirectoryChanged(FilePane.java:1728)
	at java.desktop/sun.swing.FilePane.propertyChange(FilePane.java:1778)
	at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:341)
	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:333)
	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:266)
	at java.desktop/java.awt.Component.firePropertyChange(Component.java:8731)
	at java.desktop/javax.swing.JFileChooser.setCurrentDirectory(JFileChooser.java:608)
	at tgls6890.tgls.lastDirectory(tgls.java:807)
	at tgls6890.tgls.integration(tgls.java:382)
	at tgls6890.tgls.main(tgls.java:114)

cormansa avatar Jan 22 '25 16:01 cormansa

We are marking this issue as stale because it has not been updated for a while. This is just a way to keep the support issues queue manageable. It will be closed soon unless the stale label is removed by a committer, or a new comment is made.

github-actions[bot] avatar Apr 23 '25 00:04 github-actions[bot]

@cormansa apologies, are you able to try again with the latest 11?

karianna avatar May 05 '25 05:05 karianna

We are marking this issue as stale because it has not been updated for a while. This is just a way to keep the support issues queue manageable. It will be closed soon unless the stale label is removed by a committer, or a new comment is made.

github-actions[bot] avatar Sep 08 '25 00:09 github-actions[bot]