Java-эквивалент C # StackTrace (false) .FrameCount [дубликат]

Связанный .lib-файл связан с .dll

У меня была такая же проблема. Скажем, у меня есть проекты MyProject и TestProject. Я эффективно связал файл lib для MyProject с TestProject. Однако этот файл lib был создан, так как была построена DLL для MyProject. Кроме того, я не содержал исходный код для всех методов в MyProject, но только доступ к точкам входа DLL.

Чтобы решить проблему, я построил MyProject как LIB и связал TestProject с этим .lib-файлом (скопируйте вложенный файл .lib в папку TestProject). Затем я смогу снова создать MyProject как DLL. Он компилируется, поскольку lib, с которым связан TestProject, содержит код для всех методов в классах MyProject.

34
задан Gray 29 January 2014 в 16:29
поделиться

3 ответа

Я думаю, вы можете получить то же самое:

StackTraceElement[] cause = Thread.currentThread().getStackTrace();
70
ответ дан bruno conde 27 August 2018 в 09:30
поделиться

Если вы хотите, чтобы это было как String и использовали Apache Commons:

org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(new Throwable())
1
ответ дан Edward Anderson 27 August 2018 в 09:30
поделиться

Ну, вы можете немного улучшить его, не исключив при этом исключение.

Exception ex = new Exception();
ex.fillInStackTrace();
StackTraceElement[] cause = ex.getStackTrace();

На самом деле, я только что проверил: конструктор уже называет fillInStackTrace(). Поэтому вы можете упростить его:

StackTraceElement[] cause = new Exception().getStackTrace();

Это на самом деле то, что Thread.getStackTrace() делает, если он вызывается в текущем потоке, поэтому вы можете предпочесть его использовать.

10
ответ дан Michael Myers 27 August 2018 в 09:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: