Как я могу получить "данные сеанса", показанные в ошибке? - PullRequest
1 голос
/ 25 января 2010

Я добавляю некоторые функциональные возможности в существующее приложение, чтобы показать отладочную информацию. При рассмотрении ошибки в представлении журнала ошибок отображается нечто, называемое «данные сеанса», обычно это выглядит так:

<code>eclipse.buildId=M20090917-0800
java.version=1.6.0_11
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=sv_SE
Framework arguments:  -product org.eclipse.epp.package.rcp.product
Command-line arguments:  -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.rcp.product

Это то, что может быть полезно знать. как я могу получить эту информацию?

Ответы [ 2 ]

0 голосов
/ 25 января 2010

То, что вы видите, это информация о сеансе для программы Eclipse, а не ваша.

Ваша программа запускается в собственной JVM с гораздо меньшим количеством аргументов. Среда затмения не очень важна для вашей программы.

Фактические аргументы командной строки вашей программы, конечно, доступны в качестве аргументов для метода main(). Несколько других элементов, представляющих потенциальный интерес, будут видны в свойствах Java, которые вы можете получить с помощью System.getProperty (). Эта документация содержит названия «стандартных» свойств: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html#getProperties%28%29

0 голосов
/ 25 января 2010

Часть этой информации должна передаваться из подключаемого модуля через класс org.eclipse.core.runtime.Platform, как показано исходным кодом org.eclipse.debug.internal.core.SystemVariableResolver :

public String resolveValue(IDynamicVariable variable, String argument) throws CoreException {
    if ("ARCH".equals(argument)) { //$NON-NLS-1$ 
        return Platform.getOSArch(); 
    } else if ("ECLIPSE_HOME".equals(argument)) { //$NON-NLS-1$ 
        URL installURL = Platform.getInstallLocation().getURL(); 
        IPath ppath = new Path(installURL.getFile()).removeTrailingSeparator(); 
        return getCorrectPath(ppath.toOSString()); 
    } else if ("NL".equals(argument)) { //$NON-NLS-1$ 
        return Platform.getNL(); 
    } else if ("OS".equals(argument)) { //$NON-NLS-1$ 
        return Platform.getOS(); 
    } else if ("WS".equals(argument)) { //$NON-NLS-1$ 
        return Platform.getWS(); 
    } 
    return null;
} 

Platform.getCommandLineArgs() должен завершить отображение для сеанса затмения (но не для вашей программы).


Для программы RCP см. этот поток

Используя метод Application start(IApplicationContext context):

String[] args = (String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...