From 0a3dd3579a6233e42d021cac1c51f26c71cbf4d5 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 22 Mar 2017 14:12:56 +0100 Subject: [PATCH] [java] makes AppMain compatible with Java <= 5 (IDEA-170021) --- java/java-runtime/src/META-INF/MANIFEST.MF | 2 +- .../rt/execution/application/AppMainV2.java | 29 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/java/java-runtime/src/META-INF/MANIFEST.MF b/java/java-runtime/src/META-INF/MANIFEST.MF index 68b89466a7fd..9b23aae49e10 100644 --- a/java/java-runtime/src/META-INF/MANIFEST.MF +++ b/java/java-runtime/src/META-INF/MANIFEST.MF @@ -1 +1 @@ -Premain-Class: com.intellij.rt.execution.application.AppMainV2 +Premain-Class: com.intellij.rt.execution.application.AppMainV2$Agent diff --git a/java/java-runtime/src/com/intellij/rt/execution/application/AppMainV2.java b/java/java-runtime/src/com/intellij/rt/execution/application/AppMainV2.java index d7284b13fdc9..d8dd87677f3c 100644 --- a/java/java-runtime/src/com/intellij/rt/execution/application/AppMainV2.java +++ b/java/java-runtime/src/com/intellij/rt/execution/application/AppMainV2.java @@ -18,6 +18,7 @@ package com.intellij.rt.execution.application; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; +import java.lang.instrument.Instrumentation; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; @@ -89,19 +90,6 @@ public class AppMainV2 { t.start(); } - public static void premain(String args) { - try { - int p = args.indexOf(':'); - if (p < 0) throw new IllegalArgumentException("incorrect parameter: " + args); - boolean helperLibLoaded = loadHelper(args.substring(p + 1)); - int portNumber = Integer.parseInt(args.substring(0, p)); - startMonitor(portNumber, helperLibLoaded); - } - catch (Throwable t) { - System.err.println("Launcher failed - \"Dump Threads\" and \"Exit\" actions are unavailable (" + t.getMessage() + ')'); - } - } - public static void main(String[] args) throws Throwable { try { boolean helperLibLoaded = loadHelper(System.getProperty(LAUNCHER_BIN_PATH)); @@ -159,4 +147,19 @@ public class AppMainV2 { return false; } } + + public static class Agent { + public static void premain(String args, Instrumentation i) { + try { + int p = args.indexOf(':'); + if (p < 0) throw new IllegalArgumentException("incorrect parameter: " + args); + boolean helperLibLoaded = loadHelper(args.substring(p + 1)); + int portNumber = Integer.parseInt(args.substring(0, p)); + startMonitor(portNumber, helperLibLoaded); + } + catch (Throwable t) { + System.err.println("Launcher failed - \"Dump Threads\" and \"Exit\" actions are unavailable (" + t.getMessage() + ')'); + } + } + } } \ No newline at end of file