Thursday, January 7, 2010

Viewing Groovy Application's Classpath

Because the set of classes that Groovy applications see is wider than the set standard Java applications see, it can be helpful to see what classes are already on the Groovy classpath. This is very easy to do and the one line of executable Groovy to do this is shown in the next code listing.

  1. #!/usr/bin/env groovy  
  2. this.class.classLoader.rootLoader.URLs.each{ println it }  


The above code takes advantage of the Groovy RootLoader. This RootLoader is often used to dynamically add a library to the Groovy application's classpath, but, as the example here shows, can also be used to see what Groovy sees.

When the above code is executed, the results shown next are seen.

  1. file:/C:/java/examples/groovyExamples/displayGroovyClasspath/./  
  2. file:/C:/Program%20Files/Java/jre6/lib/ext/QTJava.zip  
  3. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/ant-1.7.1.jar  
  4. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/ant-junit-1.7.1.jar  
  5. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/ant-launcher-1.7.1.jar  
  6. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/antlr-2.7.7.jar  
  7. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/asm-3.2.jar  
  8. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/asm-analysis-3.2.jar  
  9. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/asm-commons-3.2.jar  
  10. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/asm-tree-3.2.jar  
  11. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/asm-util-3.2.jar  
  12. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/balloontip_2009-01-2.jar  
  13. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-anim-1.7.jar  
  14. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-awt-util-1.7.jar  
  15. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-bridge-1.7.jar  
  16. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-codec-1.7.jar  
  17. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-css-1.7.jar  
  18. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-dom-1.7.jar  
  19. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-ext-1.7.jar  
  20. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-extension-1.7.jar  
  21. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-gui-util-1.7.jar  
  22. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-gvt-1.7.jar  
  23. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-parser-1.7.jar  
  24. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-script-1.7.jar  
  25. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-svg-dom-1.7.jar  
  26. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-svggen-1.7.jar  
  27. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-swing-1.7.jar  
  28. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-transcoder-1.7.jar  
  29. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-util-1.7.jar  
  30. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/batik-xml-1.7.jar  
  31. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/bsf-2.4.0.jar  
  32. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/commons-cli-1.2.jar  
  33. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/commons-logging-1.1.1.jar  
  34. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/cssbuilder-0.3.jar  
  35. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/cssparser-0.9.5.jar  
  36. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/Filters.jar  
  37. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/flamingo-4.0.jar  
  38. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/flamingo-4.0dev.jar  
  39. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/flamingobuilder-0.2.jar  
  40. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/forms-1.2.1.jar  
  41. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/fxbuilder-0.2.jar  
  42. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/gant-1.9.0_groovy-1.7.0.jar  
  43. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/gfxbuilder-core-0.2.3.jar  
  44. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/gfxbuilder-svg-0.2.3.jar  
  45. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/gfxbuilder-swingx-0.2.3.jar  
  46. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/gpars-0.9.jar  
  47. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/groovy-1.7.0.jar  
  48. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/ivy-2.1.0.jar  
  49. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/jacob-1.14.3.jar  
  50. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/JFXtras-0.5.jar  
  51. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/jide-oss-2.6.2.jar  
  52. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/jidebuilder-2.2.jar  
  53. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/jline-0.9.94.jar  
  54. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/jsilhouette-geom-0.3.1.jar  
  55. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/jsp-api-2.0.jar  
  56. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/jsr166y-070108.jar  
  57. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/junit-4.7.jar  
  58. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/l2fprod-common-all.jar  
  59. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/macwidgets-0.9.4.jar  
  60. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/macwidgetsbuilder-0.2.jar  
  61. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/maven-ant-tasks-2.0.10.jar  
  62. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/miglayout-3.6.3-swing.jar  
  63. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/MultipleGradientPaint.jar  
  64. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/netty-3.1.5.GA.jar  
  65. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/sac-1.3.jar  
  66. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/scriptom-1.6.0.jar  
  67. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/scriptom-ie-6-tlb-1.6.0.jar  
  68. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/scriptom-office-2K3-tlb-1.6.0.jar  
  69. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/scriptom-sapi-tlb-1.6.0.jar  
  70. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/scriptom-scripting-tlb-1.6.0.jar  
  71. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/scriptom-wbem-tlb-1.6.0.jar  
  72. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/scriptom-wsh-tlb-1.6.0.jar  
  73. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/servlet-api-2.4.jar  
  74. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/spock-core-0.3.jar  
  75. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/svg-salamander-1.0.jar  
  76. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/swing-worker-1.1.jar  
  77. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/swingx-1.0.jar  
  78. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/swingx-beaninfo-0.9.5.jar  
  79. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/swingx-ws.jar  
  80. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/swingxbuilder-0.1.6.jar  
  81. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/swingxtrasbuilder-0.1.jar  
  82. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/timingframework-1.0.jar  
  83. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/trident-1.0.jar  
  84. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/tridentbuilder-0.1.jar  
  85. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/xml-apis-ext-1.3.04.jar  
  86. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/xstream-1.3.1.jar  
  87. file:/C:/Program%20Files/Groovy/Groovy-1.7.0/lib/xswingx-0.2.jar  
  88. file:/C:/Program%20Files/Java/jdk1.6.0_14/lib/tools.jar  


The results returned from that simple Groovy script indicate what is already advertised about where Groovy automatically looks for classes and JARs: the current directory, the JRE extension mechanism directory, the Groovy installation's lib directory (%GROOVY_HOME%\lib or ${GROOVY_HOME}/lib), and the JDK's tools.jar. Had I specified any classes or JARs on the classpath using the -cp option, those would have been displayed here as well.