WOPath is broken on Leopard with Ant 1.7, it works fine with 1.6.5.
Under 1.7, it does not see the jars for any of the frameworks. If you
run Ant with -debug -verbose, you see this:
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
cadrejars.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
dbunit-2.2.1.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
ganymed.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
GVCWOProjectAntTasks.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/jass-
rt.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
javasvn.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
jxl.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
log4j-1.2.14.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
svnant.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
svnClientAdapter.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
svnjavahl.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
taglets.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
testng-5.6-jdk14.jar from path as it doesn't exist
dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
woproject.jar from path as it doesn't exist
dropping /Library/Frameworks/CadrePrototypes.framework/Resources/Java/
cadreprototypes.jar from path as it doesn't exist
dropping /Library/Frameworks/ERExtensions.framework/Resources/Java/
ERExtensions.jar from path as it doesn't exist
dropping /Library/Frameworks/FrontBasePlugIn.framework/Resources/Java/
FrontBasePlugIn.jar from path as it doesn't exist
dropping /Library/Frameworks/GVCEOFExtensions.framework/Resources/Java/
gvceofextensions.jar from path as it doesn't exist
dropping /Library/Frameworks/GVCFoundation.framework/Resources/Java/
gvcfoundation.jar from path as it doesn't exist
dropping /Library/Frameworks/GVCWOExtensions.framework/Resources/Java/
gvcwoextensions.jar from path as it doesn't exist
dropping /Library/Frameworks/JavaWOExtensions.framework/Resources/Java/
JavaWOExtensions.jar from path as it doesn't exist
dropping /Library/Frameworks/MicrosoftPlugIn.framework/Resources/Java/
microsoftplugin.jar from path as it doesn't exist
dropping /Library/Frameworks/JavaEOAccess.framework/Resources/Java/
javaeoaccess.jar from path as it doesn't exist
dropping /Library/Frameworks/JavaEOControl.framework/Resources/Java/
javaeocontrol.jar from path as it doesn't exist
dropping /Library/Frameworks/JavaFoundation.framework/Resources/Java/
javafoundation.jar from path as it doesn't exist
dropping /Library/Frameworks/JavaJDBCAdaptor.framework/Resources/Java/
javajdbcadaptor.jar from path as it doesn't exist
dropping /Library/Frameworks/JavaWebObjects.framework/Resources/Java/
javawebobjects.jar from path as it doesn't exist
dropping /Library/Frameworks/JavaXML.framework/Resources/Java/
javaxml.jar from path as it doesn't exist
Note that it is missing the /System and /Users/chuck prefixes on the
paths.
I have discovered that if I change
FrameworkSet.SortedDirectoryScanner, in this method
public synchronized String[] getIncludedFiles()
and comment out this line:
for (int i = 0; i < frameworkJars.length; i++)
{
// frameworkJars[i] = frameworkJars[i].substring(dirLength);
}
Note that this breaks API:
// The results of calling jarsPaths() on the FrameworkSet is a
// fully qualified path. This creates a problem as FileSet qualifies
// these file paths with the directory. To accomodate this, we
// trim off the root dir. This will be added back after
getIncludedFiles()
// is called. This (hack) was done instead of making a parallel
// implementation of jarsPath() that returns a partial path.
That it now works. I have also built some code that does not use
WOPath and this change also works fine.
This method is called from here:
[wocompile] at org.objectstyle.woproject.ant.FrameworkSet
$SortedDirectoryScanner.getIncludedFiles(Unknown Source)
[wocompile] at
org.apache.tools.ant.types.FileSet.iterator(FileSet.java:69)
[wocompile] at
org.apache.tools.ant.types.resources.Union.getCollection(Union.java:105)
[wocompile] at
org.apache.tools.ant.types.resources.Union.getCollection(Union.java:88)
[wocompile] at
org
.apache
.tools
.ant
.types
.resources
.BaseResourceCollectionContainer
.cacheCollection(BaseResourceCollectionContainer.java:244)
[wocompile] at
org
.apache
.tools
.ant
.types
.resources
.BaseResourceCollectionContainer
.iterator(BaseResourceCollectionContainer.java:120)
[wocompile] at org.apache.tools.ant.types.Path.iterator(Path.java:687)
[wocompile] at org.apache.tools.ant.types.Path.iterator(Path.java:684)
[wocompile] at
org.apache.tools.ant.types.resources.Union.getCollection(Union.java:105)
[wocompile] at
org.apache.tools.ant.types.resources.Union.list(Union.java:67)
[wocompile] at org.apache.tools.ant.types.Path.list(Path.java:356)
[wocompile] at org.apache.tools.ant.types.Path.addExisting(Path.java:
327)
[wocompile] at org.apache.tools.ant.types.Path.addExisting(Path.java:
315)
[wocompile] at
org.apache.tools.ant.types.Path.concatSpecialPath(Path.java:560)
[wocompile] at
org.apache.tools.ant.types.Path.concatSystemClasspath(Path.java:512)
[wocompile] at
org
.apache
.tools
.ant
.taskdefs
.compilers
.DefaultCompilerAdapter
.getCompileClasspath(DefaultCompilerAdapter.java:152)
Does anyone have any insight into why this is different under 1.7?
Chuck
--Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems. http://www.global-village.net/products/practical_webobjects
This archive was generated by hypermail 2.0.0 : Fri Feb 22 2008 - 19:08:18 EST