Community
Participate
Working Groups
I find it strange that JDT delta notification is processing non-java files in non-java projects. I was trying to debug an ArrayIndexOutOfBounds exception but every time I changed a file, the exception was thrown (and handled properly) by JDT. Why wouldn't JDT just skip files that ae not in java projects? Here's the stack trace of an ArrayIndexOutOfBounds exception for a *.txt file in a non-java project. Thread [main] (Suspended (exception java.lang.ArrayIndexOutOfBoundsException)) org.eclipse.jdt.internal.compiler.parser.Scanner.getNextCharAsJavaIdenti fierPart() line: 590 org.eclipse.jdt.internal.compiler.parser.Scanner.scanIdentifierOrKeyword () line: 2009 org.eclipse.jdt.internal.compiler.parser.Scanner.getNextToken() line: 1144 org.eclipse.jdt.core.JavaConventions.scannedIdentifier (java.lang.String) line: 92 org.eclipse.jdt.core.JavaConventions.validateIdentifier (java.lang.String) line: 220 org.eclipse.jdt.internal.core.Util.isValidFolderNameForPackage (java.lang.String) line: 546 org.eclipse.jdt.internal.core.Util.packageName (org.eclipse.core.runtime.IPath) line: 731 org.eclipse.jdt.internal.core.JavaModelManager.determineIfOnClasspath (org.eclipse.core.resources.IResource, org.eclipse.jdt.core.IJavaProject) line: 338 org.eclipse.jdt.internal.core.JavaModelManager.create (org.eclipse.core.resources.IFolder, org.eclipse.jdt.core.IJavaProject) line: 221 org.eclipse.jdt.internal.core.JavaModelManager.create (org.eclipse.core.resources.IResource, org.eclipse.jdt.core.IJavaProject) line: 158 org.eclipse.jdt.core.JavaCore.create (org.eclipse.core.resources.IResource) line: 356 org.eclipse.jdt.internal.core.DeltaProcessor.performPreBuildCheck (org.eclipse.core.resources.IResourceDelta, org.eclipse.jdt.core.IJavaElement) line: 921 org.eclipse.jdt.internal.core.DeltaProcessor.performPreBuildCheck (org.eclipse.core.resources.IResourceDelta, org.eclipse.jdt.core.IJavaElement) line: 1042 org.eclipse.jdt.internal.core.DeltaProcessor.performPreBuildCheck (org.eclipse.core.resources.IResourceDelta, org.eclipse.jdt.core.IJavaElement) line: 1042 org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged (org.eclipse.core.resources.IResourceChangeEvent) line: 1274 org.eclipse.core.internal.events.NotificationManager$1.run() line: 128 org.eclipse.core.internal.runtime.InternalPlatform.run (org.eclipse.core.runtime.ISafeRunnable) line: 802 org.eclipse.core.runtime.Platform.run (org.eclipse.core.runtime.ISafeRunnable) line: 416 org.eclipse.core.internal.events.NotificationManager.notify (org.eclipse.core.internal.events.ResourceChangeListenerList$ListenerEntry[], org.eclipse.core.resources.IResourceChangeEvent, boolean) line: 143 org.eclipse.core.internal.events.NotificationManager.broadcastChanges (org.eclipse.core.internal.watson.ElementTree, int, boolean, boolean) line: 67 org.eclipse.core.internal.resources.Workspace.broadcastChanges (org.eclipse.core.internal.watson.ElementTree, int, boolean, boolean, org.eclipse.core.runtime.IProgressMonitor) line: 133 org.eclipse.core.internal.resources.Workspace.endOperation(boolean, org.eclipse.core.runtime.IProgressMonitor) line: 730 org.eclipse.core.internal.resources.Workspace.run (org.eclipse.core.resources.IWorkspaceRunnable, org.eclipse.core.runtime.IProgressMonitor) line: 1366 org.eclipse.ui.texteditor.AbstractTextEditor$9 (org.eclipse.ui.actions.WorkspaceModifyOperation).run (org.eclipse.core.runtime.IProgressMonitor) line: 78 org.eclipse.ui.editors.text.TextEditor (org.eclipse.ui.texteditor.AbstractTextEditor).performSaveOperation (org.eclipse.ui.actions.WorkspaceModifyOperation, org.eclipse.core.runtime.IProgressMonitor) line: 2090 org.eclipse.ui.editors.text.TextEditor (org.eclipse.ui.texteditor.AbstractTextEditor).doSave (org.eclipse.core.runtime.IProgressMonitor) line: 1968 org.eclipse.ui.internal.EditorManager$11.run (org.eclipse.core.runtime.IProgressMonitor) line: 979 org.eclipse.ui.internal.EditorManager$8.run (org.eclipse.core.runtime.IProgressMonitor) line: 848 org.eclipse.jface.operation.ModalContext.runInCurrentThread (org.eclipse.jface.operation.IRunnableWithProgress, org.eclipse.core.runtime.IProgressMonitor) line: 299 org.eclipse.jface.operation.ModalContext.run (org.eclipse.jface.operation.IRunnableWithProgress, boolean, org.eclipse.core.runtime.IProgressMonitor, org.eclipse.swt.widgets.Display) line: 249 org.eclipse.jface.window.ApplicationWindow$1.run() line: 384 org.eclipse.swt.custom.BusyIndicator.showWhile (org.eclipse.swt.widgets.Display, java.lang.Runnable) line: 64 org.eclipse.ui.internal.WorkbenchWindow (org.eclipse.jface.window.ApplicationWindow).run(boolean, boolean, org.eclipse.jface.operation.IRunnableWithProgress) line: 381 org.eclipse.ui.internal.WorkbenchWindow.run(boolean, boolean, org.eclipse.jface.operation.IRunnableWithProgress) line: 1062 org.eclipse.ui.internal.EditorManager.runProgressMonitorOperation (java.lang.String, org.eclipse.jface.operation.IRunnableWithProgress, org.eclipse.ui.IWorkbenchWindow) line: 854 org.eclipse.ui.internal.EditorManager.saveEditor (org.eclipse.ui.IEditorPart, boolean) line: 984 org.eclipse.ui.internal.WorkbenchPage.saveEditor (org.eclipse.ui.IEditorPart, boolean) line: 1913 org.eclipse.ui.internal.SaveAction.run() line: 32 org.eclipse.ui.internal.SaveAction (org.eclipse.jface.action.Action).runWithEvent(org.eclipse.swt.widgets.Event) line: 749 org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection (org.eclipse.swt.widgets.Event) line: 407 org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent (org.eclipse.swt.widgets.Event) line: 361 org.eclipse.jface.action.ActionContributionItem.access$0 (org.eclipse.jface.action.ActionContributionItem, org.eclipse.swt.widgets.Event) line: 352 org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEve nt(org.eclipse.swt.widgets.Event) line: 47 org.eclipse.swt.widgets.EventTable.sendEvent (org.eclipse.swt.widgets.Event) line: 75 org.eclipse.swt.widgets.MenuItem (org.eclipse.swt.widgets.Widget).sendEvent(org.eclipse.swt.widgets.Event) line: 825 org.eclipse.swt.widgets.Display.runDeferredEvents() line: 1527 org.eclipse.swt.widgets.Display.readAndDispatch() line: 1289 org.eclipse.ui.internal.Workbench.runEventLoop() line: 1177 org.eclipse.ui.internal.Workbench.run(java.lang.Object) line: 1160 org.eclipse.core.internal.boot.InternalBootLoader.run(java.lang.String, java.net.URL, java.lang.String, java.lang.String[], java.lang.Runnable) line: 739 org.eclipse.core.boot.BootLoader.run(java.lang.String, java.net.URL, java.lang.String, java.lang.String[]) line: 432 EclipseRuntimeLauncher.main(java.lang.String[]) line: 24
Good question. Any project may contain an archive file which may be referenced by other projects on their classpath (internal JAR). Thus we have to consider their delta so as to find out if this is a case. Closing