|
What this is
Other links
The source code
// $Header: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/NewDriver.java,v 1.7 2004/02/13 02:40:54 sebb Exp $
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.jmeter;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;
/**
* @author Michael Stover
* @version $Revision: 1.7 $
*/
public final class NewDriver
{
/** The class loader to use for loading JMeter classes. */
private static URLClassLoader loader;
/** The directory JMeter is installed in. */
private static String jmDir;
static {
List jars = new LinkedList();
String cp = System.getProperty("java.class.path");
//Find JMeter home dir
StringTokenizer tok = new StringTokenizer(cp, File.pathSeparator);
if (tok.countTokens() == 1)
{
File jar = new File(tok.nextToken());
try
{
jmDir = jar.getCanonicalFile().getParentFile().getParent();
}
catch (IOException e)
{
}
}
else
{
File userDir = new File(System.getProperty("user.dir"));
jmDir = userDir.getAbsoluteFile().getParent();
}
/*
* Does the system support UNC paths?
* If so, may need to fix them up later
*/
boolean usesUNC = System.getProperty("os.name").startsWith("Windows");
StringBuffer classpath = new StringBuffer();
File[] libDirs =
new File[] {
new File(jmDir + File.separator + "lib"),
new File(
jmDir + File.separator + "lib" + File.separator + "ext")};
for (int a = 0; a < libDirs.length; a++)
{
File[] libJars = libDirs[a].listFiles(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
return name.endsWith(".jar");
}
});
if (libJars == null){
new Throwable("Could not access "+libDirs[a]).printStackTrace();
continue;
}
for (int i = 0; i < libJars.length; i++)
{
try
{
String s = libJars[i].getPath();
// Fix path to allow the use of UNC URLs
if (usesUNC){
if (s.startsWith("\\\\") &&
!s.startsWith("\\\\\\")
)
{
s = "\\\\" + s;
}
else if (s.startsWith("//") &&
!s.startsWith("///")
)
{
s = "//" + s;
}
} // usesUNC
jars.add(new URL("file", "", s));
classpath.append(System.getProperty("path.separator"));
classpath.append(s);
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
}
}
System.setProperty(
"java.class.path",
System.getProperty("java.class.path") + classpath.toString());
loader = new URLClassLoader((URL[]) jars.toArray(new URL[0]));
}
/**
* Prevent instantiation.
*/
private NewDriver()
{
}
/**
* Get the directory where JMeter is installed. This is the absolute path
* name.
*
* @return the directory where JMeter is installed.
*/
public static String getJMeterDir()
{
return jmDir;
}
/**
* The main program which actually runs JMeter.
*
* @param args the command line arguments
*/
public static void main(String[] args)
{
Thread.currentThread().setContextClassLoader(loader);
if (System.getProperty("log4j.configuration") == null)
{
File conf = new File(jmDir, "bin" + File.separator + "log4j.conf");
System.setProperty("log4j.configuration", "file:" + conf);
}
try
{
Class JMeter = loader.loadClass("org.apache.jmeter.JMeter");
Object instance = JMeter.newInstance();
Method startup =
JMeter.getMethod(
"start",
new Class[] {(new String[0]).getClass()});
startup.invoke(instance, new Object[] { args });
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.