On 15 Sep., 03:32, "Mike Schilling" <mscottschill...@hotmail.com>
wrote:
> Arne Vajhøj wrote:
> >>> If we can assume that Java version >= 1.5, main thread has
> >>> thread id 1 and max. stack depth is 1000:
>
> >>> * * * * StackTraceElement[] ste =
> >>> ManagementFactory.getThreadMXBean().getThreadInfo( 1,
> >>> * * * * 1000).getStackTrace(); String clznam =
> >>> ste[ste.length-1].getClassName();
>
> >> Is that really going to give you the class mentioned in the command
> >> line rather than the class which defines the static main() method?
>
> > You are correct. It returns the parent class where main is
> > defined.
>
> Right. *My strong impression is that trying to figure out which subclass was
> mentioned in the command line is simply hopeless (or at best extremely
> non-portable) and that, accordingly, the OP should figure out some other way
> of doing things. *Fortunately, there are dozens of them.
public static String getMainClassName()
{
for(final Map.Entry<String, String> entry : System.getenv().entrySet
())
{
if(entry.getKey().startsWith("JAVA_MAIN_CLASS"))
return entry.getValue();
}
throw new IllegalStateException("Cannot determine main class.");
}
|