Package aQute.bnd.build
Class ProjectLauncher
- java.lang.Object
-
- aQute.bnd.osgi.Domain
-
- aQute.bnd.osgi.Processor
-
- aQute.bnd.build.ProjectLauncher
-
- All Implemented Interfaces:
Constants
,Registry
,aQute.service.reporter.Report
,aQute.service.reporter.Reporter
,java.io.Closeable
,java.lang.AutoCloseable
,java.lang.Iterable<java.lang.String>
- Direct Known Subclasses:
JUnitLauncher
public abstract class ProjectLauncher extends Processor
A Project Launcher is a base class to be extended by launchers. Launchers are JARs that launch a framework and install a number of bundles and then run the framework. A launcher jar must specify a Launcher-Class manifest header. This class is instantiated and cast to a LauncherPlugin. This plug in is then asked to provide a ProjectLauncher. This project launcher is then used by the project to run the code. Launchers must extend this class.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
ProjectLauncher.NotificationListener
static class
ProjectLauncher.NotificationType
-
Nested classes/interfaces inherited from class aQute.bnd.osgi.Processor
Processor.CL, Processor.FileLine
-
-
Field Summary
Fields Modifier and Type Field Description static int
ACTIVATOR_ERROR
static int
CANCELED
static int
CUSTOM_LAUNCHER
static int
DUPLICATE_BUNDLE
static java.lang.String
EMBEDDED_ACTIVATOR
protected java.lang.Appendable
err
static int
ERROR
protected java.io.InputStream
in
static int
NONE
static int
OK
protected java.lang.Appendable
out
static int
RESOLVE_ERROR
static int
SERVICES
static int
TIMEDOUT
static int
UPDATE_NEEDED
static int
WARNING
-
Fields inherited from class aQute.bnd.osgi.Processor
LIST_SPLITTER, log
-
Fields inherited from interface aQute.bnd.osgi.Constants
AUGMENT, AUGMENT_CAPABILITY_DIRECTIVE, AUGMENT_RANGE_ATTRIBUTE, AUGMENT_REQUIREMENT_DIRECTIVE, BASELINE, BASELINEREPO, BLUEPRINT_TIMEOUT_ATTRIBUTE, BLUEPRINT_WAIT_FOR_DEPENDENCIES_ATTRIBUTE, BND_ADDXMLTOTEST, BND_LASTMODIFIED, BNDDRIVER, BNDDRIVER_ANT, BNDDRIVER_BND, BNDDRIVER_ECLIPSE, BNDDRIVER_GRADLE, BNDDRIVER_GRADLE_NATIVE, BNDDRIVER_INTELLIJ, BNDDRIVER_MAVEN, BNDDRIVER_OSMORC, BNDDRIVER_SBT, BUILDFILES, BUILDPACKAGES, BUILDPATH, BUILDREPO, BUMPPOLICY, BUNDLE_ACTIVATIONPOLICY, BUNDLE_ACTIVATOR, BUNDLE_BLUEPRINT, BUNDLE_CATEGORY, BUNDLE_CLASSPATH, BUNDLE_CONTACTADDRESS, BUNDLE_CONTRIBUTORS, BUNDLE_COPYRIGHT, BUNDLE_DESCRIPTION, BUNDLE_DEVELOPERS, BUNDLE_DOCURL, BUNDLE_ICON, BUNDLE_LICENSE, BUNDLE_LOCALIZATION, BUNDLE_MANIFESTVERSION, BUNDLE_NAME, BUNDLE_NATIVECODE, BUNDLE_REQUIREDEXECUTIONENVIRONMENT, BUNDLE_SCM, BUNDLE_SPECIFIC_HEADERS, BUNDLE_SYMBOLIC_NAME_ATTRIBUTE, BUNDLE_SYMBOLICNAME, BUNDLE_UPDATELOCATION, BUNDLE_VENDOR, BUNDLE_VERSION, BUNDLE_VERSION_ATTRIBUTE, CACHEDIR, CARDINALITY_DIRECTIVE, CHECK, CLASSPATH, COMMAND_DIRECTIVE, COMPILER_SOURCE, COMPILER_TARGET, COMPONENT_ACTIVATE, COMPONENT_CONFIGURATION_POLICY, COMPONENT_DEACTIVATE, COMPONENT_DESCRIPTORS, COMPONENT_DESIGNATE, COMPONENT_DESIGNATEFACTORY, COMPONENT_DYNAMIC, COMPONENT_ENABLED, COMPONENT_FACTORY, COMPONENT_GREEDY, COMPONENT_IMMEDIATE, COMPONENT_IMPLEMENTATION, COMPONENT_MODIFIED, COMPONENT_MULTIPLE, COMPONENT_NAME, COMPONENT_NAMESPACE, COMPONENT_OPTIONAL, COMPONENT_PROPERTIES, COMPONENT_PROVIDE, COMPONENT_SERVICEFACTORY, COMPONENT_VERSION, componentDirectives, CONDITIONAL_PACKAGE, CONDITIONALPACKAGE, CONDUIT, CONNECTION_SETTINGS, CONSUMER_POLICY, CONTRACT, CREATED_BY, CURRENT_PACKAGE, CURRENT_USES, CURRENT_VERSION, DEBUG, DEFAULT_BAR_EXTENSION, DEFAULT_BND_EXTENSION, DEFAULT_BNDRUN_EXTENSION, DEFAULT_CHARSET, DEFAULT_DO_NOT_COPY, DEFAULT_JAR_EXTENSION, DEFAULT_LAUNCHER_BSN, DEFAULT_PREPROCESSS_MATCHERS, DEFAULT_PROP_BIN_DIR, DEFAULT_PROP_SRC_DIR, DEFAULT_PROP_TARGET_DIR, DEFAULT_PROP_TESTBIN_DIR, DEFAULT_PROP_TESTSRC_DIR, DEFAULT_TESTER_BSN, DEPENDSON, DEPLOY, DEPLOYREPO, DESCRIPTION_ATTRIBUTE, DIFFIGNORE, DIFFPACKAGES, DIGESTS, directives, DISTRO, DONOTCOPY, DSANNOTATIONS, DSANNOTATIONS_OPTIONS, DUPLICATE_MARKER, DYNAMICIMPORT_PACKAGE, EEPROFILE, EEPROFILE_AUTO_ATTRIBUTE, EFFECTIVE_DIRECTIVE, EMBEDDED_REPO, EMPTY, EMPTY_HEADER, EXCLUDE_DIRECTIVE, EXPERIMENTS, EXPORT, EXPORT_CONTENTS, EXPORT_PACKAGE, EXPORT_SERVICE, EXPORTTYPE, EXTENSION, EXTENSION_DIRECTIVE, FAIL_OK, FILTER_DIRECTIVE, FIXUPMESSAGES, FIXUPMESSAGES_IS_DIRECTIVE, FIXUPMESSAGES_IS_ERROR, FIXUPMESSAGES_IS_IGNORE, FIXUPMESSAGES_IS_WARNING, FIXUPMESSAGES_REPLACE_DIRECTIVE, FIXUPMESSAGES_RESTRICT_DIRECTIVE, FRAGMENT_ATTACHMENT_DIRECTIVE, FRAGMENT_HOST, FROM_DIRECTIVE, GESTALT, GESTALT_BATCH, GESTALT_CI, GESTALT_INTERACTIVE, GESTALT_OFFLINE, GESTALT_SHELL, GROUPID, headers, IGNORE_PACKAGE, IGNORE_STANDALONE, IMPORT_DIRECTIVE, IMPORT_PACKAGE, IMPORT_PRIVATE, IMPORT_REFERENCE, IMPORT_SERVICE, importDirectives, INCLUDE, INCLUDE_DIRECTIVE, INCLUDE_RESOURCE, INCLUDERESOURCE, INIT, INTERNAL_EXPORTED_DIRECTIVE, INTERNAL_SOURCE_DIRECTIVE, INVALIDFILENAMES, JAVA, JAVA_DEBUG, JAVAAGENT, JAVAC, JAVAC_PROFILE, JAVAC_SOURCE, JAVAC_TARGET, JIDENTIFIER, KEYSTORE_LOCATION_DIRECTIVE, KEYSTORE_PASSWORD_DIRECTIVE, KEYSTORE_PROVIDER_DIRECTIVE, LANGUAGE_ATTRIBUTE, LAUNCHER_PLUGIN, LIB_DIRECTIVE, LINK_ATTRIBUTE, LITERAL_ATTRIBUTE, MAKE, MANDATORY_DIRECTIVE, MANIFEST, MANIFEST_NAME, MAVEN_RELEASE, META_PERSISTENCE, METAPACKAGES, METATYPE, METATYPE_ANNOTATIONS, METATYPE_ANNOTATIONS_OPTIONS, NAME_ATTRIBUTE, NAMESECTION, NAMESPACE_STEM, NO_IMPORT_DIRECTIVE, NOANNOTATIONS, NOBUILDINCACHE, NOBUNDLES, NODEFAULTVERSION, NOEE, NOEXTRAHEADERS, NOJUNIT, NOJUNITOSGI, NOMANIFEST, NOUSES, OPTIONAL, options, OSNAME_ATTRIBUTE, OSVERSION_ATTRIBUTE, OUTPUT, OUTPUTMASK, PACKAGE, PACKAGE_JPM, PACKAGEINFOTYPE, PATH_DIRECTIVE, PEDANTIC, PLUGIN, PLUGINPATH, PLUGINPATH_SHA1_ATTR, PLUGINPATH_URL_ATTR, POM, PREPROCESSMATCHERS, PRESENCE_DIRECTIVE, PRIVATE_DIRECTIVE, PRIVATE_PACKAGE, PRIVATEPACKAGE, PROCESSOR_ATTRIBUTE, PROFILE, PROVIDE_CAPABILITY, PROVIDE_DIRECTIVE, PROVIDER_POLICY, PROVIDER_TYPE_DIRECTIVE, RELEASEREPO, REMOVE_ATTRIBUTE_DIRECTIVE, REMOVEHEADERS, REPORTNEWER, REPOSITORIES, REQUIRE_BND, REQUIRE_BUNDLE, REQUIRE_CAPABILITY, RESOLUTION, RESOLUTION_DIRECTIVE, RESOLUTION_DYNAMIC, RESOLVE, RESOURCEONLY, RUNBLACKLIST, RUNBUILDS, RUNBUNDLES, RUNEE, RUNENV, RUNFRAMEWORK, RUNFRAMEWORK_NONE, RUNFRAMEWORK_SERVICES, RUNFW, RUNJDB, RUNKEEP, RUNNOREFERENCES, RUNPATH, RUNPATH_LAUNCHER_DIRECTIVE, RUNPATH_MAIN_DIRECTIVE, RUNPROGRAMARGS, RUNPROPERTIES, RUNPROVIDEDCAPABILITIES, RUNREMOTE, RUNREPOS, RUNREQUIRE, RUNREQUIRES, RUNSTORAGE, RUNSYSTEMCAPABILITIES, RUNSYSTEMPACKAGES, RUNTIMEOUT, RUNTRACE, RUNVM, SAVEMANIFEST, SELECTION_FILTER_ATTRIBUTE, SERVICE_COMPONENT, SET_COMPONENT_DIRECTIVES, SET_COMPONENT_DIRECTIVES_1_1, SET_COMPONENT_DIRECTIVES_1_2, SIGN, SIGN_PASSWORD_DIRECTIVE, SIGNATURE_TEST, SINGLETON_DIRECTIVE, SIZE_ATTRIBUTE, SNAPSHOT, SOURCEPATH, SOURCES, SPECIFICATION_VERSION, SPLIT_PACKAGE_DIRECTIVE, STANDALONE, STRICT, SUB, SYSTEMPROPERTIES, TESTCASES, TESTCONTINUOUS, TESTER, TESTER_PLUGIN, TESTPACKAGES, TESTPATH, TESTREPORT, TESTSOURCES, TESTSUITES, TESTUNRESOLVED, TOOL, TSTAMP, UNDERTEST, UPTO, USES_DIRECTIVE, USES_USES, VALID_PROPERTY_TYPES, VERBOSE, VERSION_ATTR_HASH, VERSION_ATTR_LATEST, VERSION_ATTR_PROJECT, VERSION_ATTR_SNAPSHOT, VERSION_ATTRIBUTE, VERSION_FILTER, VISIBILITY_DIRECTIVE, WAB, WABLIB, WORKINGSET, WORKINGSET_MEMBER
-
-
Constructor Summary
Constructors Constructor Description ProjectLauncher(Project project)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
addActivator(java.lang.String e)
void
addClasspath(Container container)
protected void
addClasspath(java.util.Collection<Container> path)
void
addDefault(java.lang.String defaultSpec)
Add the specification for a set of bundles the runpath if it does not already is included.void
addRunBundle(java.lang.String f)
void
addRunProgramArgs(java.lang.String arg)
void
addRunVM(java.lang.String arg)
void
calculatedProperties(java.util.Map<java.lang.String,java.lang.Object> properties)
This method should go to the ProjectLaunchervoid
cancel()
void
cleanup()
Is called after the process exists.Jar
executable()
Create a self executable.java.util.Collection<java.lang.String>
getActivators()
java.util.Collection<java.lang.String>
getArguments()
Deprecated.java.util.Collection<java.lang.String>
getClasspath()
java.io.File
getCwd()
abstract java.lang.String
getMainTypeName()
java.util.Set<ProjectLauncher.NotificationListener>
getNotificationListeners()
Project
getProject()
java.util.Collection<java.lang.String>
getRunBundles()
java.util.Map<java.lang.String,java.lang.String>
getRunEnv()
int
getRunFramework()
Either NONE or SERVICES to indicate how the remote end launches.java.lang.String
getRunJdb()
java.util.List<java.lang.String>
getRunpath()
java.util.Collection<java.lang.String>
getRunProgramArgs()
java.util.Map<java.lang.String,java.lang.String>
getRunProperties()
java.util.List<? extends RunSession>
getRunSessions()
Get the run sessions.java.util.Collection<java.lang.String>
getRunVM()
java.io.File
getStorageDir()
java.lang.String
getSystemCapabilities()
Parameters
getSystemCapabilitiesParameters()
java.util.Map<java.lang.String,? extends java.util.Map<java.lang.String,java.lang.String>>
getSystemPackages()
long
getTimeout()
boolean
getTrace()
protected int
invoke(java.lang.Class<?> main, java.lang.String[] args)
boolean
isKeep()
int
launch()
abstract void
prepare()
Should be called when all the changes to the launchers are set.void
registerForNotifications(ProjectLauncher.NotificationListener listener)
protected void
reportResult(int result)
void
setCwd(java.io.File cwd)
void
setKeep(boolean keep)
void
setRunFramework(int n)
void
setStreams(java.lang.Appendable out, java.lang.Appendable err)
Set the stderr and stdout streams for the output process.void
setTimeout(long timeout, java.util.concurrent.TimeUnit unit)
void
setTrace(boolean level)
int
start(java.lang.ClassLoader parent)
abstract void
update()
protected void
updateFromProject()
Collect all the aspect from the project and set the local fields from them.void
write(java.lang.String text)
Write text to the debugged process as if it came from stdin.-
Methods inherited from class aQute.bnd.osgi.Processor
_basedir, _fileuri, _findfile, _frange, _native_capability, _propertiesdir, _propertiesname, _random, _thisfile, _uri, addBasicPlugin, addClose, addExtensions, addIncluded, addProperties, addProperties, append, appendPath, begin, beginHandleErrors, check, clear, close, concat, customize, doAttrbutes, doIncludeFile, doIncludeFile, endHandleErrors, error, error, exception, exists, findHeader, findHeader, findHeader, forceRefresh, formatArrays, get, get, getBase, getBaseURI, getClass, getDuration, getErrors, getExecutor, getFile, getFile, getFlattenedProperties, getFlattenedProperties, getHeader, getHeader, getHeader, getHeader, getIncluded, getInfo, getInfo, getJarFromName, getLine, getLoader, getLocation, getLogger, getMacroDomains, getManifestAsProperties, getMergedParameters, getParent, getPlugin, getPlugins, getPlugins, getProperties, getPropertiesFile, getProperty, getProperty, getProperty, getPropertyKeys, getReplacer, getScheduledExecutor, getSettings, getTop, getUnprocessedProperty, getWarnings, is, isDuplicate, isExceptions, isFailOk, isMissingPlugin, isOk, isPedantic, isPerfect, isTrace, isTrue, iterator, join, join, join, join, join, keySet, lastModified, loadPlugins, loadProperties, makePrintable, merge, mergeLocalProperties, mergeProperties, mergeProperties, mergeProperties, mergeProperties, newHashMap, newList, newList, newMap, newMap, newSet, newSet, normalize, normalize, parseHeader, parseHeader, printClause, printClauses, printClauses, printExceptionSummary, printStackTrace, progress, progress, propertiesChanged, quote, read, refresh, removeBasicPlugin, removeClose, removeDuplicateMarker, replaceAll, replaceExtension, report, report, set, setBase, setExceptions, setFileMustExist, setForceLocal, setParent, setPedantic, setProperties, setProperties, setProperties, setProperties, setProperty, setTypeSpecificPlugins, signal, since, split, split, split, toFullHeaderPattern, toString, trace, unsetProperty, updateModified, use, warning
-
Methods inherited from class aQute.bnd.osgi.Domain
copyFrom, domain, domain, domain, domain, domain, getBundleActivator, getBundleCategory, getBundleClasspath, getBundleClassPath, getBundleContactAddress, getBundleCopyright, getBundleDescription, getBundleDocURL, getBundleName, getBundleNative, getBundleRequiredExecutionEnvironment, getBundleSymbolicName, getBundleVendor, getBundleVersion, getDynamicImportPackage, getExportContents, getExportPackage, getFragmentHost, getIcon, getImportPackage, getIncludeResource, getParameters, getParameters, getParameters, getParameters, getPrivatePackage, getProvideCapability, getRequireBundle, getRequireCapability, getRunblacklist, getRunee, isSources, setAugment, setBundleActivator, setBundleClasspath, setBundleRequiredExecutionEnvironment, setBundleSymbolicName, setBundleVersion, setBundleVersion, setConditionalPackage, setExportPackage, setFailOk, setImportPackage, setIncludeResource, setPrivatePackage, setRunblacklist, setRunee, setRunfw, setRunRequires, setSources, setTranslation, translate, translate
-
-
-
-
Field Detail
-
out
protected java.lang.Appendable out
-
err
protected java.lang.Appendable err
-
in
protected java.io.InputStream in
-
SERVICES
public static final int SERVICES
- See Also:
- Constant Field Values
-
NONE
public static final int NONE
- See Also:
- Constant Field Values
-
OK
public static final int OK
- See Also:
- Constant Field Values
-
WARNING
public static final int WARNING
- See Also:
- Constant Field Values
-
ERROR
public static final int ERROR
- See Also:
- Constant Field Values
-
TIMEDOUT
public static final int TIMEDOUT
- See Also:
- Constant Field Values
-
UPDATE_NEEDED
public static final int UPDATE_NEEDED
- See Also:
- Constant Field Values
-
CANCELED
public static final int CANCELED
- See Also:
- Constant Field Values
-
DUPLICATE_BUNDLE
public static final int DUPLICATE_BUNDLE
- See Also:
- Constant Field Values
-
RESOLVE_ERROR
public static final int RESOLVE_ERROR
- See Also:
- Constant Field Values
-
ACTIVATOR_ERROR
public static final int ACTIVATOR_ERROR
- See Also:
- Constant Field Values
-
CUSTOM_LAUNCHER
public static final int CUSTOM_LAUNCHER
- See Also:
- Constant Field Values
-
EMBEDDED_ACTIVATOR
public static final java.lang.String EMBEDDED_ACTIVATOR
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ProjectLauncher
public ProjectLauncher(Project project) throws java.lang.Exception
- Throws:
java.lang.Exception
-
-
Method Detail
-
updateFromProject
protected void updateFromProject() throws java.lang.Exception
Collect all the aspect from the project and set the local fields from them. Should be called- Throws:
java.lang.Exception
-
addClasspath
public void addClasspath(Container container) throws java.lang.Exception
- Throws:
java.lang.Exception
-
addClasspath
protected void addClasspath(java.util.Collection<Container> path) throws java.lang.Exception
- Throws:
java.lang.Exception
-
addRunBundle
public void addRunBundle(java.lang.String f)
-
getRunBundles
public java.util.Collection<java.lang.String> getRunBundles()
-
addRunVM
public void addRunVM(java.lang.String arg)
-
addRunProgramArgs
public void addRunProgramArgs(java.lang.String arg)
-
getRunpath
public java.util.List<java.lang.String> getRunpath()
-
getClasspath
public java.util.Collection<java.lang.String> getClasspath()
-
getRunVM
public java.util.Collection<java.lang.String> getRunVM()
-
getArguments
@Deprecated public java.util.Collection<java.lang.String> getArguments()
Deprecated.
-
getRunProgramArgs
public java.util.Collection<java.lang.String> getRunProgramArgs()
-
getRunProperties
public java.util.Map<java.lang.String,java.lang.String> getRunProperties()
-
getStorageDir
public java.io.File getStorageDir()
-
getMainTypeName
public abstract java.lang.String getMainTypeName()
-
update
public abstract void update() throws java.lang.Exception
- Throws:
java.lang.Exception
-
launch
public int launch() throws java.lang.Exception
- Throws:
java.lang.Exception
-
start
public int start(java.lang.ClassLoader parent) throws java.lang.Exception
- Throws:
java.lang.Exception
-
invoke
protected int invoke(java.lang.Class<?> main, java.lang.String[] args) throws java.lang.Exception
- Throws:
java.lang.Exception
-
cleanup
public void cleanup()
Is called after the process exists. Can you be used to cleanup the properties file.
-
reportResult
protected void reportResult(int result)
-
setTimeout
public void setTimeout(long timeout, java.util.concurrent.TimeUnit unit)
-
getTimeout
public long getTimeout()
-
cancel
public void cancel() throws java.lang.Exception
- Throws:
java.lang.Exception
-
getSystemPackages
public java.util.Map<java.lang.String,? extends java.util.Map<java.lang.String,java.lang.String>> getSystemPackages()
-
getSystemCapabilities
public java.lang.String getSystemCapabilities()
-
getSystemCapabilitiesParameters
public Parameters getSystemCapabilitiesParameters()
-
setKeep
public void setKeep(boolean keep)
-
isKeep
public boolean isKeep()
-
getTrace
public boolean getTrace()
-
prepare
public abstract void prepare() throws java.lang.Exception
Should be called when all the changes to the launchers are set. Will calculate whatever is necessary for the launcher.- Throws:
java.lang.Exception
-
getProject
public Project getProject()
-
addActivator
public boolean addActivator(java.lang.String e)
-
getActivators
public java.util.Collection<java.lang.String> getActivators()
-
getRunFramework
public int getRunFramework()
Either NONE or SERVICES to indicate how the remote end launches. NONE means it should not use the classpath to run a framework. This likely requires some dummy framework support. SERVICES means it should load the framework from the claspath.
-
setRunFramework
public void setRunFramework(int n)
-
addDefault
public void addDefault(java.lang.String defaultSpec) throws java.lang.Exception
Add the specification for a set of bundles the runpath if it does not already is included. This can be used by subclasses to ensure the proper jars are on the classpath.- Parameters:
defaultSpec
- The default spec for default jars- Throws:
java.lang.Exception
-
executable
public Jar executable() throws java.lang.Exception
Create a self executable.- Throws:
java.lang.Exception
-
getCwd
public java.io.File getCwd()
-
setCwd
public void setCwd(java.io.File cwd)
-
getRunJdb
public java.lang.String getRunJdb()
-
getRunEnv
public java.util.Map<java.lang.String,java.lang.String> getRunEnv()
-
registerForNotifications
public void registerForNotifications(ProjectLauncher.NotificationListener listener)
-
getNotificationListeners
public java.util.Set<ProjectLauncher.NotificationListener> getNotificationListeners()
-
setStreams
public void setStreams(java.lang.Appendable out, java.lang.Appendable err)
Set the stderr and stdout streams for the output process. The debugged process must append its output (i.e. write operation in the process under debug) to the given appendables.- Parameters:
out
- std outerr
- std err
-
write
public void write(java.lang.String text) throws java.lang.Exception
Write text to the debugged process as if it came from stdin.- Parameters:
text
- the text to write- Throws:
java.lang.Exception
-
getRunSessions
public java.util.List<? extends RunSession> getRunSessions() throws java.lang.Exception
Get the run sessions. If this return null, then launch on this object should be used, otherwise each returned object provides a remote session.- Throws:
java.lang.Exception
-
calculatedProperties
public void calculatedProperties(java.util.Map<java.lang.String,java.lang.Object> properties) throws java.lang.Exception
This method should go to the ProjectLauncher- Throws:
java.lang.Exception
-
-