Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 328177

Summary: Project ant builder cannot run in headless context as it attempts to load a UI AntInputHandler (even when not in use)
Product: [Eclipse Project] Platform Reporter: Eddie Galvez <egalvez>
Component: AntAssignee: Platform-Ant-Inbox <platform-ant-inbox>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: darin.eclipse, Michael_Rennie
Version: 3.6   
Target Milestone: 3.6.2   
Hardware: PC   
OS: Linux   
Whiteboard:
Attachments:
Description Flags
patch none

Description Eddie Galvez CLA 2010-10-19 16:26:35 EDT
Build Identifier: Eclipse 3.6.1

We have a headless instance of eclipse that includes in part:

org.eclipse.ant.core
org.eclipse.ant.launching
org.apache.ant

Trying to run a headless workspace build on a workspace project that has a new Ant Builder configured to run fails with the data shown below. Note that I do NOT check the "Set an Input handler" box, and I've also tried NOT checking the "Allocate Console" box.

!SESSION 2010-10-19 16:21:17.209 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_21
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -a BuilderTester/BuilderTester.sbapp -p BuilderTester -c -o buildertester.sbbundle
Command-line arguments:  -a BuilderTester/BuilderTester.sbapp -p BuilderTester -c -o buildertester.sbbundle

!ENTRY org.eclipse.ant.launching 4 0 2010-10-19 16:21:19.596
!MESSAGE Ant Build Failed
!STACK 1
org.eclipse.core.runtime.CoreException: Unable to instantiate specified input handler class org.eclipse.ant.internal.ui.antsupport.inputhandler.AntInputHandler : java.lang.ClassNotFoundException
        at org.eclipse.ant.core.AntRunner.handleInvocationTargetException(AntRunner.java:452)
        at org.eclipse.ant.core.AntRunner.run(AntRunner.java:384)
        at org.eclipse.ant.internal.launching.launchConfigurations.AntLaunchDelegate.runInSameVM(AntLaunchDelegate.java:321)
        at org.eclipse.ant.internal.launching.launchConfigurations.AntLaunchDelegate.launch(AntLaunchDelegate.java:274)
        at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
        at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702)
        at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:695)
        at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.launchBuild(ExternalToolBuilder.java:181)
        at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.doBuildBasedOnScope(ExternalToolBuilder.java:169)
        at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.build(ExternalToolBuilder.java:88)
        at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
        at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
        at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
        at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
        at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:344)
        at com.streambase.sb.studio.SBProjectBundlerMain.start(SBProjectBundlerMain.java:346)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: Unable to instantiate specified input handler class org.eclipse.ant.internal.ui.antsupport.inputhandler.AntInputHandler : java.lang.ClassNotFoundException
        at org.eclipse.ant.internal.core.ant.InputHandlerSetter.setInputHandler(InputHandlerSetter.java:39)
        at org.eclipse.ant.internal.core.ant.InternalAntRunner.addInputHandler(InternalAntRunner.java:1337)
        at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:571)
        at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:495)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.ant.core.AntRunner.run(AntRunner.java:378)
        ... 32 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.ant.internal.ui.antsupport.inputhandler.AntInputHandler
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at org.eclipse.ant.internal.core.AntClassLoader.findClass(AntClassLoader.java:54)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at org.eclipse.ant.internal.core.ant.InputHandlerSetter.setInputHandler(InputHandlerSetter.java:33)
        ... 40 more
!SUBENTRY 1 org.eclipse.ant.core 4 1 2010-10-19 16:21:19.598
!MESSAGE Unable to instantiate specified input handler class org.eclipse.ant.internal.ui.antsupport.inputhandler.AntInputHandler : java.lang.ClassNotFoundException
!STACK 0
Unable to instantiate specified input handler class org.eclipse.ant.internal.ui.antsupport.inputhandler.AntInputHandler : java.lang.ClassNotFoundException
        at org.eclipse.ant.internal.core.ant.InputHandlerSetter.setInputHandler(InputHandlerSetter.java:39)
        at org.eclipse.ant.internal.core.ant.InternalAntRunner.addInputHandler(InternalAntRunner.java:1337)
        at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:571)
        at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:495)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.ant.core.AntRunner.run(AntRunner.java:378)
        at org.eclipse.ant.internal.launching.launchConfigurations.AntLaunchDelegate.runInSameVM(AntLaunchDelegate.java:321)
        at org.eclipse.ant.internal.launching.launchConfigurations.AntLaunchDelegate.launch(AntLaunchDelegate.java:274)
        at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
        at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702)
        at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:695)
        at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.launchBuild(ExternalToolBuilder.java:181)
        at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.doBuildBasedOnScope(ExternalToolBuilder.java:169)
        at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.build(ExternalToolBuilder.java:88)
        at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
        at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
        at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
        at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
        at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:344)
        at com.streambase.sb.studio.SBProjectBundlerMain.start(SBProjectBundlerMain.java:346)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: java.lang.ClassNotFoundException: org.eclipse.ant.internal.ui.antsupport.inputhandler.AntInputHandler
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at org.eclipse.ant.internal.core.AntClassLoader.findClass(AntClassLoader.java:54)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at org.eclipse.ant.internal.core.ant.InputHandlerSetter.setInputHandler(InputHandlerSetter.java:33)
        ... 40 more
--- Nested Exception ---
java.lang.ClassNotFoundException: org.eclipse.ant.internal.ui.antsupport.inputhandler.AntInputHandler
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at org.eclipse.ant.internal.core.AntClassLoader.findClass(AntClassLoader.java:54)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at org.eclipse.ant.internal.core.ant.InputHandlerSetter.setInputHandler(InputHandlerSetter.java:33)
        at org.eclipse.ant.internal.core.ant.InternalAntRunner.addInputHandler(InternalAntRunner.java:1337)
        at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:571)
        at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:495)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.ant.core.AntRunner.run(AntRunner.java:378)
        at org.eclipse.ant.internal.launching.launchConfigurations.AntLaunchDelegate.runInSameVM(AntLaunchDelegate.java:321)
        at org.eclipse.ant.internal.launching.launchConfigurations.AntLaunchDelegate.launch(AntLaunchDelegate.java:274)
        at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
        at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702)
        at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:695)
        at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.launchBuild(ExternalToolBuilder.java:181)
        at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.doBuildBasedOnScope(ExternalToolBuilder.java:169)
        at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.build(ExternalToolBuilder.java:88)
        at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
        at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
        at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
        at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
        at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:344)
        at com.streambase.sb.studio.SBProjectBundlerMain.start(SBProjectBundlerMain.java:346)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1383)


Reproducible: Always
Comment 1 Darin Wright CLA 2010-10-20 14:39:52 EDT
Reproduced. The problem is with a constant that was moved/re-created while fixing bug 264338.

The constants:

org.eclipse.ant.internal.launching.AntLaunching.SET_INPUTHANDLER
  value: "org.eclipse.ant.ui.SET_INPUTHANDLER"

org.eclipse.ant.internal.ui.IAntUIConstants.SET_INPUTHANDLER
  value: "org.eclipse.ant.uiSET_INPUTHANDLER"

Notice the latter (older, original) constant is missing a '.' (dot) separating the bundle name from the suffix. The default value for the constant is "true", so the tab updates the config with an attribute, but the launcher reads a different (non-existant) attribute and defaults to using an input handler.
Comment 2 Eddie Galvez CLA 2010-10-20 14:43:34 EDT
well well! Great... I saw that mispelt constant and I thought... well, maybe the developer was sloppy and just didn't have a "."...
Comment 3 Darin Wright CLA 2010-10-20 14:44:18 EDT
Created attachment 181328 [details]
patch
Comment 4 Darin Wright CLA 2010-10-20 15:03:09 EDT
Fixed in 3.6.2 and HEAD.
Comment 5 Eddie Galvez CLA 2010-10-20 15:07:46 EDT
look forward to seeing it in 3.6.2, thank you
Comment 6 Michael Rennie CLA 2011-01-21 09:59:55 EST
verified in the test build M20110119-0834
Comment 7 Eddie Galvez CLA 2011-03-15 12:36:34 EDT
I confirmed this fix is all good in 3.6.2 on our end as well