git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272064 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -10,6 +10,7 @@ package org.apache.antlib.java; | |||
| import java.io.File; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.Execute; | |||
| import org.apache.myrmidon.framework.java.JavaRuntimeClassPath; | |||
| import org.apache.myrmidon.framework.file.Path; | |||
| import org.apache.tools.todo.types.Commandline; | |||
| import org.apache.tools.todo.types.PathUtil; | |||
| @@ -53,7 +54,7 @@ public class JikesAdaptor | |||
| } | |||
| // Add the runtime | |||
| PathUtil.addJavaRuntime( classpath ); | |||
| classpath.add( new JavaRuntimeClassPath() ); | |||
| // Build the command line | |||
| final Commandline cmd = exe.getCommandline(); | |||
| @@ -0,0 +1,80 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.myrmidon.framework.java; | |||
| import org.apache.myrmidon.framework.file.FileList; | |||
| import org.apache.myrmidon.framework.file.Path; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.api.TaskContext; | |||
| import org.apache.tools.todo.types.FileSet; | |||
| import org.apache.aut.nativelib.Os; | |||
| import java.util.Locale; | |||
| import java.io.File; | |||
| /** | |||
| * A FileList that evaluates to the runtime class-path for this JVM. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @version $Revision$ $Date$ | |||
| * | |||
| * @ant.type type="path" name="java-runtime" | |||
| */ | |||
| public class JavaRuntimeClassPath | |||
| implements FileList | |||
| { | |||
| /** | |||
| * Returns the files in this list. | |||
| * | |||
| * @param context the context to use to evaluate the list. | |||
| * @return The names of the files in this list. All names are absolute paths. | |||
| */ | |||
| public String[] listFiles( final TaskContext context ) | |||
| throws TaskException | |||
| { | |||
| final Path path = new Path(); | |||
| if( System.getProperty( "java.vendor" ).toLowerCase( Locale.US ).indexOf( "microsoft" ) >= 0 ) | |||
| { | |||
| // Pull in *.zip from packages directory | |||
| FileSet msZipFiles = new FileSet(); | |||
| msZipFiles.setDir( new File( System.getProperty( "java.home" ) + File.separator + "Packages" ) ); | |||
| msZipFiles.setIncludes( "*.ZIP" ); | |||
| path.addFileset( msZipFiles ); | |||
| } | |||
| else if( "Kaffe".equals( System.getProperty( "java.vm.name" ) ) ) | |||
| { | |||
| FileSet kaffeJarFiles = new FileSet(); | |||
| kaffeJarFiles.setDir( new File( System.getProperty( "java.home" ) | |||
| + File.separator + "share" | |||
| + File.separator + "kaffe" ) ); | |||
| kaffeJarFiles.setIncludes( "*.jar" ); | |||
| path.addFileset( kaffeJarFiles ); | |||
| } | |||
| else if( Os.isFamily( Os.OS_FAMILY_OSX ) ) | |||
| { | |||
| // MacOS X | |||
| final String classDir = System.getProperty( "java.home" ) + | |||
| File.separator + ".." + File.separator + "Classes"; | |||
| final File classes = new File( classDir, "classes.jar" ); | |||
| path.addLocation( classes ); | |||
| final File ui = new File( classDir, "ui.jar" ); | |||
| path.addLocation( ui ); | |||
| } | |||
| else | |||
| { | |||
| // JDK > 1.1 sets java.home to the JRE directory. | |||
| final String rt = System.getProperty( "java.home" ) + | |||
| File.separator + "lib" + File.separator + "rt.jar"; | |||
| final File rtJar = new File( rt ); | |||
| path.addLocation( rtJar ); | |||
| } | |||
| return path.listFiles( context ); | |||
| } | |||
| } | |||
| @@ -167,7 +167,6 @@ public class JJTree | |||
| } | |||
| final Path classpath = exe.getClassPath(); | |||
| classpath.addLocation( new File( javaccHome, "JavaCC.zip" ) ); | |||
| PathUtil.addJavaRuntime( classpath ); | |||
| exe.setMaxMemory( "140M" ); | |||
| exe.getSysProperties().addVariable( "install.root", javaccHome.getAbsolutePath() ); | |||
| @@ -222,7 +222,6 @@ public class JavaCC | |||
| final Path classpath = exe.getClassPath(); | |||
| classpath.addLocation( new File( javaccHome, "JavaCC.zip" ) ); | |||
| PathUtil.addJavaRuntime( classpath ); | |||
| exe.setMaxMemory( "140M" ); | |||
| exe.getSysProperties().addVariable( "install.root", javaccHome.getAbsolutePath() ); | |||
| @@ -141,50 +141,6 @@ public class PathUtil | |||
| } | |||
| } | |||
| /** | |||
| * Adds this JVM's runtime to a path. | |||
| */ | |||
| public static void addJavaRuntime( final Path path ) | |||
| throws TaskException | |||
| { | |||
| if( System.getProperty( "java.vendor" ).toLowerCase( Locale.US ).indexOf( "microsoft" ) >= 0 ) | |||
| { | |||
| // Pull in *.zip from packages directory | |||
| FileSet msZipFiles = new FileSet(); | |||
| msZipFiles.setDir( new File( System.getProperty( "java.home" ) + File.separator + "Packages" ) ); | |||
| msZipFiles.setIncludes( "*.ZIP" ); | |||
| path.addFileset( msZipFiles ); | |||
| } | |||
| else if( "Kaffe".equals( System.getProperty( "java.vm.name" ) ) ) | |||
| { | |||
| FileSet kaffeJarFiles = new FileSet(); | |||
| kaffeJarFiles.setDir( new File( System.getProperty( "java.home" ) | |||
| + File.separator + "share" | |||
| + File.separator + "kaffe" ) ); | |||
| kaffeJarFiles.setIncludes( "*.jar" ); | |||
| path.addFileset( kaffeJarFiles ); | |||
| } | |||
| else if( Os.isFamily( Os.OS_FAMILY_OSX ) ) | |||
| { | |||
| // MacOS X | |||
| final String classDir = System.getProperty( "java.home" ) + | |||
| File.separator + ".." + File.separator + "Classes"; | |||
| final File classes = new File( classDir, "classes.jar" ); | |||
| path.addLocation( classes ); | |||
| final File ui = new File( classDir, "ui.jar" ); | |||
| path.addLocation( ui ); | |||
| } | |||
| else | |||
| { | |||
| // JDK > 1.1 sets java.home to the JRE directory. | |||
| final String rt = System.getProperty( "java.home" ) + | |||
| File.separator + "lib" + File.separator + "rt.jar"; | |||
| final File rtJar = new File( rt ); | |||
| path.addLocation( rtJar ); | |||
| } | |||
| } | |||
| /** | |||
| * Adds the contents of a set of directories to a path. | |||
| */ | |||