author | ohair |
Wed, 06 Apr 2011 22:06:11 -0700 | |
changeset 9035 | 1255eb81cc2f |
parent 8806 | c81d4e10ffb7 |
child 10126 | a375b8714147 |
permissions | -rw-r--r-- |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
1 |
/* |
9035
1255eb81cc2f
7033660: Update copyright year to 2011 on any files changed in 2011
ohair
parents:
8806
diff
changeset
|
2 |
* Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
4 |
* |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
5506 | 7 |
* published by the Free Software Foundation. Oracle designates this |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
8 |
* particular file as subject to the "Classpath" exception as provided |
5506 | 9 |
* by Oracle in the LICENSE file that accompanied this code. |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
10 |
* |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
11 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
12 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
13 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
14 |
* version 2 for more details (a copy is included in the LICENSE file that |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
15 |
* accompanied this code). |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
16 |
* |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
17 |
* You should have received a copy of the GNU General Public License version |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
18 |
* 2 along with this work; if not, write to the Free Software Foundation, |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
19 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
20 |
* |
5506 | 21 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
22 |
* or visit www.oracle.com if you need additional information or have any |
|
23 |
* questions. |
|
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
24 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
25 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
26 |
package sun.launcher; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
27 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
28 |
/* |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
29 |
* |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
30 |
* <p><b>This is NOT part of any API supported by Sun Microsystems. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
31 |
* If you write code that depends on this, you do so at your own |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
32 |
* risk. This code and its internal interfaces are subject to change |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
33 |
* or deletion without notice.</b> |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
34 |
* |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
35 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
36 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
37 |
/** |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
38 |
* A utility package for the java(1), javaw(1) launchers. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
39 |
* The following are helper methods that the native launcher uses |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
40 |
* to perform checks etc. using JNI, see src/share/bin/java.c |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
41 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
42 |
import java.io.File; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
43 |
import java.io.IOException; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
44 |
import java.io.PrintStream; |
8806
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
45 |
import java.io.UnsupportedEncodingException; |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
46 |
import java.lang.reflect.Method; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
47 |
import java.lang.reflect.Modifier; |
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
48 |
import java.math.BigDecimal; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
49 |
import java.math.RoundingMode; |
8806
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
50 |
import java.nio.charset.Charset; |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
51 |
import java.util.ResourceBundle; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
52 |
import java.text.MessageFormat; |
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
53 |
import java.util.ArrayList; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
54 |
import java.util.Collections; |
7810 | 55 |
import java.util.Iterator; |
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
56 |
import java.util.List; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
57 |
import java.util.Locale; |
7810 | 58 |
import java.util.Locale.Category; |
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
59 |
import java.util.Properties; |
7810 | 60 |
import java.util.Set; |
61 |
import java.util.TreeSet; |
|
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
62 |
import java.util.jar.Attributes; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
63 |
import java.util.jar.JarFile; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
64 |
import java.util.jar.Manifest; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
65 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
66 |
public enum LauncherHelper { |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
67 |
INSTANCE; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
68 |
private static final String MAIN_CLASS = "Main-Class"; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
69 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
70 |
private static StringBuilder outBuf = new StringBuilder(); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
71 |
|
2168
de3c5a0416de
6801467: Defer get the launcher resource bundle until it's needed
mchung
parents:
1343
diff
changeset
|
72 |
private static ResourceBundle javarb = null; |
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
73 |
|
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
74 |
private static final String INDENT = " "; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
75 |
private static final String VM_SETTINGS = "VM settings:"; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
76 |
private static final String PROP_SETTINGS = "Property settings:"; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
77 |
private static final String LOCALE_SETTINGS = "Locale settings:"; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
78 |
|
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
79 |
// sync with java.c and sun.misc.VM |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
80 |
private static final String diagprop = "sun.java.launcher.diag"; |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
81 |
|
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
82 |
private static final String defaultBundleName = |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
83 |
"sun.launcher.resources.launcher"; |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
84 |
private static class ResourceBundleHolder { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
85 |
private static final ResourceBundle RB = |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
86 |
ResourceBundle.getBundle(defaultBundleName); |
2168
de3c5a0416de
6801467: Defer get the launcher resource bundle until it's needed
mchung
parents:
1343
diff
changeset
|
87 |
} |
de3c5a0416de
6801467: Defer get the launcher resource bundle until it's needed
mchung
parents:
1343
diff
changeset
|
88 |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
89 |
/* |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
90 |
* A method called by the launcher to print out the standard settings, |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
91 |
* by default -XshowSettings is equivalent to -XshowSettings:all, |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
92 |
* Specific information may be gotten by using suboptions with possible |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
93 |
* values vm, properties and locale. |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
94 |
* |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
95 |
* printToStderr: choose between stdout and stderr |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
96 |
* |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
97 |
* optionFlag: specifies which options to print default is all other |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
98 |
* possible values are vm, properties, locale. |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
99 |
* |
7810 | 100 |
* initialHeapSize: in bytes, as set by the launcher, a zero-value indicates |
101 |
* this code should determine this value, using a suitable method or |
|
102 |
* the line could be omitted. |
|
103 |
* |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
104 |
* maxHeapSize: in bytes, as set by the launcher, a zero-value indicates |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
105 |
* this code should determine this value, using a suitable method. |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
106 |
* |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
107 |
* stackSize: in bytes, as set by the launcher, a zero-value indicates |
7810 | 108 |
* this code determine this value, using a suitable method or omit the |
109 |
* line entirely. |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
110 |
*/ |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
111 |
static void showSettings(boolean printToStderr, String optionFlag, |
7810 | 112 |
long initialHeapSize, long maxHeapSize, long stackSize, |
113 |
boolean isServer) { |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
114 |
|
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
115 |
PrintStream ostream = (printToStderr) ? System.err : System.out; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
116 |
String opts[] = optionFlag.split(":"); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
117 |
String optStr = (opts.length > 1 && opts[1] != null) |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
118 |
? opts[1].trim() |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
119 |
: "all"; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
120 |
switch (optStr) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
121 |
case "vm": |
7810 | 122 |
printVmSettings(ostream, initialHeapSize, maxHeapSize, |
123 |
stackSize, isServer); |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
124 |
break; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
125 |
case "properties": |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
126 |
printProperties(ostream); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
127 |
break; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
128 |
case "locale": |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
129 |
printLocale(ostream); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
130 |
break; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
131 |
default: |
7810 | 132 |
printVmSettings(ostream, initialHeapSize, maxHeapSize, |
133 |
stackSize, isServer); |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
134 |
printProperties(ostream); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
135 |
printLocale(ostream); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
136 |
break; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
137 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
138 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
139 |
|
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
140 |
/* |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
141 |
* prints the main vm settings subopt/section |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
142 |
*/ |
7810 | 143 |
private static void printVmSettings(PrintStream ostream, |
144 |
long initialHeapSize, long maxHeapSize, |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
145 |
long stackSize, boolean isServer) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
146 |
|
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
147 |
ostream.println(VM_SETTINGS); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
148 |
if (stackSize != 0L) { |
7810 | 149 |
ostream.println(INDENT + "Stack Size: " + |
150 |
SizePrefix.scaleValue(stackSize)); |
|
151 |
} |
|
152 |
if (initialHeapSize != 0L) { |
|
153 |
ostream.println(INDENT + "Min. Heap Size: " + |
|
154 |
SizePrefix.scaleValue(initialHeapSize)); |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
155 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
156 |
if (maxHeapSize != 0L) { |
7810 | 157 |
ostream.println(INDENT + "Max. Heap Size: " + |
158 |
SizePrefix.scaleValue(maxHeapSize)); |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
159 |
} else { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
160 |
ostream.println(INDENT + "Max. Heap Size (Estimated): " |
7810 | 161 |
+ SizePrefix.scaleValue(Runtime.getRuntime().maxMemory())); |
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
162 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
163 |
ostream.println(INDENT + "Ergonomics Machine Class: " |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
164 |
+ ((isServer) ? "server" : "client")); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
165 |
ostream.println(INDENT + "Using VM: " |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
166 |
+ System.getProperty("java.vm.name")); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
167 |
ostream.println(); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
168 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
169 |
|
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
170 |
/* |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
171 |
* prints the properties subopt/section |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
172 |
*/ |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
173 |
private static void printProperties(PrintStream ostream) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
174 |
Properties p = System.getProperties(); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
175 |
ostream.println(PROP_SETTINGS); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
176 |
List<String> sortedPropertyKeys = new ArrayList<>(); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
177 |
sortedPropertyKeys.addAll(p.stringPropertyNames()); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
178 |
Collections.sort(sortedPropertyKeys); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
179 |
for (String x : sortedPropertyKeys) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
180 |
printPropertyValue(ostream, x, p.getProperty(x)); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
181 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
182 |
ostream.println(); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
183 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
184 |
|
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
185 |
private static boolean isPath(String key) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
186 |
return key.endsWith(".dirs") || key.endsWith(".path"); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
187 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
188 |
|
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
189 |
private static void printPropertyValue(PrintStream ostream, |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
190 |
String key, String value) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
191 |
ostream.print(INDENT + key + " = "); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
192 |
if (key.equals("line.separator")) { |
7810 | 193 |
for (byte b : value.getBytes()) { |
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
194 |
switch (b) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
195 |
case 0xd: |
7810 | 196 |
ostream.print("\\r "); |
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
197 |
break; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
198 |
case 0xa: |
7810 | 199 |
ostream.print("\\n "); |
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
200 |
break; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
201 |
default: |
7810 | 202 |
// print any bizzare line separators in hex, but really |
203 |
// shouldn't happen. |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
204 |
ostream.printf("0x%02X", b & 0xff); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
205 |
break; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
206 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
207 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
208 |
ostream.println(); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
209 |
return; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
210 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
211 |
if (!isPath(key)) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
212 |
ostream.println(value); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
213 |
return; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
214 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
215 |
String[] values = value.split(System.getProperty("path.separator")); |
7810 | 216 |
boolean first = true; |
217 |
for (String s : values) { |
|
218 |
if (first) { // first line treated specially |
|
219 |
ostream.println(s); |
|
220 |
first = false; |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
221 |
} else { // following lines prefix with indents |
7810 | 222 |
ostream.println(INDENT + INDENT + s); |
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
223 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
224 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
225 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
226 |
|
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
227 |
/* |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
228 |
* prints the locale subopt/section |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
229 |
*/ |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
230 |
private static void printLocale(PrintStream ostream) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
231 |
Locale locale = Locale.getDefault(); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
232 |
ostream.println(LOCALE_SETTINGS); |
7810 | 233 |
ostream.println(INDENT + "default locale = " + |
234 |
locale.getDisplayLanguage()); |
|
235 |
ostream.println(INDENT + "default display locale = " + |
|
236 |
Locale.getDefault(Category.DISPLAY).getDisplayName()); |
|
237 |
ostream.println(INDENT + "default format locale = " + |
|
238 |
Locale.getDefault(Category.FORMAT).getDisplayName()); |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
239 |
printLocales(ostream); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
240 |
ostream.println(); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
241 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
242 |
|
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
243 |
private static void printLocales(PrintStream ostream) { |
7810 | 244 |
Locale[] tlocales = Locale.getAvailableLocales(); |
245 |
final int len = tlocales == null ? 0 : tlocales.length; |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
246 |
if (len < 1 ) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
247 |
return; |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
248 |
} |
7810 | 249 |
// Locale does not implement Comparable so we convert it to String |
250 |
// and sort it for pretty printing. |
|
251 |
Set<String> sortedSet = new TreeSet<>(); |
|
252 |
for (Locale l : tlocales) { |
|
253 |
sortedSet.add(l.toString()); |
|
254 |
} |
|
255 |
||
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
256 |
ostream.print(INDENT + "available locales = "); |
7810 | 257 |
Iterator<String> iter = sortedSet.iterator(); |
258 |
final int last = len - 1; |
|
259 |
for (int i = 0 ; iter.hasNext() ; i++) { |
|
260 |
String s = iter.next(); |
|
261 |
ostream.print(s); |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
262 |
if (i != last) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
263 |
ostream.print(", "); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
264 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
265 |
// print columns of 8 |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
266 |
if ((i + 1) % 8 == 0) { |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
267 |
ostream.println(); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
268 |
ostream.print(INDENT + INDENT); |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
269 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
270 |
} |
7810 | 271 |
} |
272 |
||
273 |
private enum SizePrefix { |
|
274 |
||
275 |
KILO(1024, "K"), |
|
276 |
MEGA(1024 * 1024, "M"), |
|
277 |
GIGA(1024 * 1024 * 1024, "G"), |
|
278 |
TERA(1024L * 1024L * 1024L * 1024L, "T"); |
|
279 |
long size; |
|
280 |
String abbrev; |
|
281 |
||
282 |
SizePrefix(long size, String abbrev) { |
|
283 |
this.size = size; |
|
284 |
this.abbrev = abbrev; |
|
285 |
} |
|
286 |
||
287 |
private static String scale(long v, SizePrefix prefix) { |
|
288 |
return BigDecimal.valueOf(v).divide(BigDecimal.valueOf(prefix.size), |
|
289 |
2, RoundingMode.HALF_EVEN).toPlainString() + prefix.abbrev; |
|
290 |
} |
|
291 |
/* |
|
292 |
* scale the incoming values to a human readable form, represented as |
|
293 |
* K, M, G and T, see java.c parse_size for the scaled values and |
|
294 |
* suffixes. The lowest possible scaled value is Kilo. |
|
295 |
*/ |
|
296 |
static String scaleValue(long v) { |
|
297 |
if (v < MEGA.size) { |
|
298 |
return scale(v, KILO); |
|
299 |
} else if (v < GIGA.size) { |
|
300 |
return scale(v, MEGA); |
|
301 |
} else if (v < TERA.size) { |
|
302 |
return scale(v, GIGA); |
|
303 |
} else { |
|
304 |
return scale(v, TERA); |
|
305 |
} |
|
306 |
} |
|
7297
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
307 |
} |
906c58a8b849
6452854: Provide a flag to print the java configuration
ksrini
parents:
5982
diff
changeset
|
308 |
|
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
309 |
/** |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
310 |
* A private helper method to get a localized message and also |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
311 |
* apply any arguments that we might pass. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
312 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
313 |
private static String getLocalizedMessage(String key, Object... args) { |
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
314 |
String msg = ResourceBundleHolder.RB.getString(key); |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
315 |
return (args != null) ? MessageFormat.format(msg, args) : msg; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
316 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
317 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
318 |
/** |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
319 |
* The java -help message is split into 3 parts, an invariant, followed |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
320 |
* by a set of platform dependent variant messages, finally an invariant |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
321 |
* set of lines. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
322 |
* This method initializes the help message for the first time, and also |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
323 |
* assembles the invariant header part of the message. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
324 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
325 |
static void initHelpMessage(String progname) { |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
326 |
outBuf = outBuf.append(getLocalizedMessage("java.launcher.opt.header", |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
327 |
(progname == null) ? "java" : progname )); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
328 |
outBuf = outBuf.append(getLocalizedMessage("java.launcher.opt.datamodel", |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
329 |
32)); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
330 |
outBuf = outBuf.append(getLocalizedMessage("java.launcher.opt.datamodel", |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
331 |
64)); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
332 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
333 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
334 |
/** |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
335 |
* Appends the vm selection messages to the header, already created. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
336 |
* initHelpSystem must already be called. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
337 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
338 |
static void appendVmSelectMessage(String vm1, String vm2) { |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
339 |
outBuf = outBuf.append(getLocalizedMessage("java.launcher.opt.vmselect", |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
340 |
vm1, vm2)); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
341 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
342 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
343 |
/** |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
344 |
* Appends the vm synoym message to the header, already created. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
345 |
* initHelpSystem must be called before using this method. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
346 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
347 |
static void appendVmSynonymMessage(String vm1, String vm2) { |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
348 |
outBuf = outBuf.append(getLocalizedMessage("java.launcher.opt.hotspot", |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
349 |
vm1, vm2)); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
350 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
351 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
352 |
/** |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
353 |
* Appends the vm Ergo message to the header, already created. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
354 |
* initHelpSystem must be called before using this method. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
355 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
356 |
static void appendVmErgoMessage(boolean isServerClass, String vm) { |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
357 |
outBuf = outBuf.append(getLocalizedMessage("java.launcher.ergo.message1", |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
358 |
vm)); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
359 |
outBuf = (isServerClass) |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
360 |
? outBuf.append(",\n" + |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
361 |
getLocalizedMessage("java.launcher.ergo.message2") + "\n\n") |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
362 |
: outBuf.append(".\n\n"); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
363 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
364 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
365 |
/** |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
366 |
* Appends the last invariant part to the previously created messages, |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
367 |
* and finishes up the printing to the desired output stream. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
368 |
* initHelpSystem must be called before using this method. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
369 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
370 |
static void printHelpMessage(boolean printToStderr) { |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
371 |
PrintStream ostream = (printToStderr) ? System.err : System.out; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
372 |
outBuf = outBuf.append(getLocalizedMessage("java.launcher.opt.footer", |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
373 |
File.pathSeparator)); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
374 |
ostream.println(outBuf.toString()); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
375 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
376 |
|
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
377 |
/** |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
378 |
* Prints the Xusage text to the desired output stream. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
379 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
380 |
static void printXUsageMessage(boolean printToStderr) { |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
381 |
PrintStream ostream = (printToStderr) ? System.err : System.out; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
382 |
ostream.println(getLocalizedMessage("java.launcher.X.usage", |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
383 |
File.pathSeparator)); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
384 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
385 |
|
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
386 |
static String getMainClassFromJar(PrintStream ostream, String jarname) { |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
387 |
try { |
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
388 |
JarFile jarFile = null; |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
389 |
try { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
390 |
jarFile = new JarFile(jarname); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
391 |
Manifest manifest = jarFile.getManifest(); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
392 |
if (manifest == null) { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
393 |
abort(ostream, null, "java.launcher.jar.error2", jarname); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
394 |
} |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
395 |
Attributes mainAttrs = manifest.getMainAttributes(); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
396 |
if (mainAttrs == null) { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
397 |
abort(ostream, null, "java.launcher.jar.error3", jarname); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
398 |
} |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
399 |
return mainAttrs.getValue(MAIN_CLASS).trim(); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
400 |
} finally { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
401 |
if (jarFile != null) { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
402 |
jarFile.close(); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
403 |
} |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
404 |
} |
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
405 |
} catch (IOException ioe) { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
406 |
abort(ostream, ioe, "java.launcher.jar.error1", jarname); |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
407 |
} |
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
408 |
return null; |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
409 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
410 |
|
7997
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
411 |
|
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
412 |
// From src/share/bin/java.c: |
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
413 |
// enum LaunchMode { LM_UNKNOWN = 0, LM_CLASS, LM_JAR }; |
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
414 |
|
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
415 |
private static final int LM_UNKNOWN = 0; |
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
416 |
private static final int LM_CLASS = 1; |
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
417 |
private static final int LM_JAR = 2; |
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
418 |
|
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
419 |
static void abort(PrintStream ostream, Throwable t, String msgKey, Object... args) { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
420 |
if (msgKey != null) { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
421 |
ostream.println(getLocalizedMessage(msgKey, args)); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
422 |
} |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
423 |
if (sun.misc.VM.getSavedProperty(diagprop) != null) { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
424 |
if (t != null) { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
425 |
t.printStackTrace(); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
426 |
} else { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
427 |
Thread.currentThread().dumpStack(); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
428 |
} |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
429 |
} |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
430 |
System.exit(1); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
431 |
} |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
432 |
|
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
433 |
/** |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
434 |
* This method does the following: |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
435 |
* 1. gets the classname from a Jar's manifest, if necessary |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
436 |
* 2. loads the class using the System ClassLoader |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
437 |
* 3. ensures the availability and accessibility of the main method, |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
438 |
* using signatureDiagnostic method. |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
439 |
* a. does the class exist |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
440 |
* b. is there a main |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
441 |
* c. is the main public |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
442 |
* d. is the main static |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
443 |
* c. does the main take a String array for args |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
444 |
* 4. and off we go...... |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
445 |
* |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
446 |
* @param printToStderr |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
447 |
* @param isJar |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
448 |
* @param name |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
449 |
* @return |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
450 |
*/ |
7997
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
451 |
public static Class<?> checkAndLoadMain(boolean printToStderr, |
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
452 |
int mode, |
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
453 |
String what) { |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
454 |
final PrintStream ostream = (printToStderr) ? System.err : System.out; |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
455 |
final ClassLoader ld = ClassLoader.getSystemClassLoader(); |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
456 |
// get the class name |
7997
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
457 |
String cn = null; |
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
458 |
switch (mode) { |
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
459 |
case LM_CLASS: |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
460 |
cn = what; |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
461 |
break; |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
462 |
case LM_JAR: |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
463 |
cn = getMainClassFromJar(ostream, what); |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
464 |
break; |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
465 |
default: |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
466 |
// should never happen |
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
467 |
throw new InternalError("" + mode + ": Unknown launch mode"); |
7997
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
468 |
} |
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
469 |
cn = cn.replace('/', '.'); |
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
470 |
Class<?> c = null; |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
471 |
try { |
7997
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
472 |
c = ld.loadClass(cn); |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
473 |
} catch (ClassNotFoundException cnfe) { |
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
474 |
abort(ostream, cnfe, "java.launcher.cls.error1", cn); |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
475 |
} |
8806
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
476 |
getMainMethod(ostream, c); |
7997
78536cac0841
6912013: Remove the temporary launcher fix to add modules in the bootclasspath
mchung
parents:
7810
diff
changeset
|
477 |
return c; |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
478 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
479 |
|
8806
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
480 |
static Method getMainMethod(PrintStream ostream, Class<?> clazz) { |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
481 |
String classname = clazz.getName(); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
482 |
Method method = null; |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
483 |
try { |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
484 |
method = clazz.getMethod("main", String[].class); |
5982
de622fe4f7d8
6856415: Enabling java security manager will make programe thrown wrong exception ( main method not found )
ksrini
parents:
5506
diff
changeset
|
485 |
} catch (NoSuchMethodException nsme) { |
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
486 |
abort(ostream, null, "java.launcher.cls.error4", classname); |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
487 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
488 |
/* |
1329
ce13b59a8401
4459600: java -jar fails to run Main-Class if classname followed by whitespace.
ksrini
parents:
1323
diff
changeset
|
489 |
* getMethod (above) will choose the correct method, based |
ce13b59a8401
4459600: java -jar fails to run Main-Class if classname followed by whitespace.
ksrini
parents:
1323
diff
changeset
|
490 |
* on its name and parameter type, however, we still have to |
ce13b59a8401
4459600: java -jar fails to run Main-Class if classname followed by whitespace.
ksrini
parents:
1323
diff
changeset
|
491 |
* ensure that the method is static and returns a void. |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
492 |
*/ |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
493 |
int mod = method.getModifiers(); |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
494 |
if (!Modifier.isStatic(mod)) { |
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
495 |
abort(ostream, null, "java.launcher.cls.error2", "static", classname); |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
496 |
} |
5982
de622fe4f7d8
6856415: Enabling java security manager will make programe thrown wrong exception ( main method not found )
ksrini
parents:
5506
diff
changeset
|
497 |
if (method.getReturnType() != java.lang.Void.TYPE) { |
8174
89e3a22d4cd7
6968053: (launcher) hide exceptions under certain launcher failures
ksrini
parents:
7997
diff
changeset
|
498 |
abort(ostream, null, "java.launcher.cls.error3", classname); |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
499 |
} |
8806
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
500 |
return method; |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
501 |
} |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
502 |
|
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
503 |
private static final String encprop = "sun.jnu.encoding"; |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
504 |
private static String encoding = null; |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
505 |
private static boolean isCharsetSupported = false; |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
506 |
|
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
507 |
/* |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
508 |
* converts a c or a byte array to a platform specific string, |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
509 |
* previously implemented as a native method in the launcher. |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
510 |
*/ |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
511 |
static String makePlatformString(boolean printToStderr, byte[] inArray) { |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
512 |
final PrintStream ostream = (printToStderr) ? System.err : System.out; |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
513 |
if (encoding == null) { |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
514 |
encoding = System.getProperty(encprop); |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
515 |
isCharsetSupported = Charset.isSupported(encoding); |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
516 |
} |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
517 |
try { |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
518 |
String out = isCharsetSupported |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
519 |
? new String(inArray, encoding) |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
520 |
: new String(inArray); |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
521 |
return out; |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
522 |
} catch (UnsupportedEncodingException uee) { |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
523 |
abort(ostream, uee, null); |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
524 |
} |
c81d4e10ffb7
7026184: (launcher) Regression: class with unicode name can't be launched by java.
ksrini
parents:
8174
diff
changeset
|
525 |
return null; // keep the compiler happy |
1323
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
526 |
} |
e14a3b3536cd
6742159: (launcher) improve the java launching mechanism
ksrini
parents:
diff
changeset
|
527 |
} |