提交 4ef75554 编写于 作者: L lana

Merge

......@@ -242,3 +242,4 @@ fc4ac66aa657e09de5f8257c3174f240ed0cbaf7 jdk8-b117
28ca338366ff2774ac9002f9f6eaff4101a3ea3b jdk8-b118
e4499a6529e8c3e762ba86f45cdd774c92a8e7bc jdk8-b119
d31cd980e1da31fa496a359caaf1a165aeb5791a jdk8-b120
ce05e132b1370fe8a66ab9373014d12328c591c4 jdk8-b121
......@@ -308,11 +308,7 @@ When a JAR file is signed multiple times, there are multiple \f3\&.SF\fR and \f3
.nf
\f3KEVIN\&.DSA\fP
.fi
.nf
\f3\fR
.fi
.sp
\fINote:\fR It is also possible for a JAR file to have mixed signatures, some generated by the JDK 1\&.1 by the \f3javakey\fR command and others by \f3jarsigner\fR\&. The \f3jarsigner\fR command can be used to sign JAR files that are already signed with the \f3javakey\fR command\&.
.SH OPTIONS
The following sections describe the various \f3jarsigner\fR options\&. Be aware of the following standards:
.TP 0.2i
......@@ -443,7 +439,7 @@ If this option is not specified, then \f3SHA256\fR is used\&. There must either
.br
If the \f3-certs\fR option appears on the command line with the \f3-verify\fR and \f3-verbose\fR options, then the output includes certificate information for each signer of the JAR file\&. This information includes the name of the type of certificate (stored in the \f3\&.DSA\fR file) that certifies the signer\&'s public key, and if the certificate is an X\&.509 certificate (an instance of the \f3java\&.security\&.cert\&.X509Certificate\fR), then the distinguished name of the signer\&.
The keystore is also examined\&. If no keystore value is specified on the command line, then the default keystore file (if any) is checked\&. If the public key certificate for a signer matches an entry in the keystore, then the alias name for the keystore entry for that signer is displayed in parentheses\&. If the signer comes from a JDK 1\&.1 identity database instead of from a keystore, then the alias name displays in brackets instead of parentheses\&.
The keystore is also examined\&. If no keystore value is specified on the command line, then the default keystore file (if any) is checked\&. If the public key certificate for a signer matches an entry in the keystore, then the alias name for the keystore entry for that signer is displayed in parentheses\&.
.TP
-certchain \fIfile\fR
.br
......@@ -797,178 +793,6 @@ If you specify the \f3-certs\fR option with the \f3-verify\fR and \f3-verbose\fR
.fi
.sp
If the certificate for a signer is not an X\&.509 certificate, then there is no distinguished name information\&. In that case, just the certificate type and the alias are shown\&. For example, if the certificate is a PGP certificate, and the alias is \f3bob\fR, then you would get: \f3PGP, (bob)\fR\&.
.SS VERIFICATION\ THAT\ INCLUDES\ IDENTITY\ DATABASE\ SIGNERS
If a JAR file was signed with the JDK 1\&.1 \f3javakey\fR tool, and the signer is an alias in an identity database, then the verification output includes an \f3i\fR\&. If the JAR file was signed by both an alias in an identity database and an alias in a keystore, then both \f3k\fR and \f3i\fR appear\&.
.PP
When the \f3-certs\fR option is used, any identity database aliases are shown in brackets rather than the parentheses used for keystore aliases, for example:
.sp
.nf
\f3 jarsigner \-keystore /working/mystore \-verify \-verbose \-certs writeFile\&.jar\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF\fP
.fi
.nf
\f3 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF\fP
.fi
.nf
\f3 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA\fP
.fi
.nf
\f3 199 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE\&.SF\fP
.fi
.nf
\f3 1013 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE\&.DSA\fP
.fi
.nf
\f3 smki 2752 Fri Sep 26 16:12:30 PDT 1997 writeFile\&.html\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 X\&.509, CN=Jane Smith, OU=Java Software, O=Oracle, L=cup, S=ca, C=us (jane)\fP
.fi
.nf
\f3 X\&.509, CN=Duke, OU=Java Software, O=Oracle, L=cup, S=ca, C=us [duke]\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 s = signature was verified\fP
.fi
.nf
\f3 m = entry is listed in manifest\fP
.fi
.nf
\f3 k = at least one certificate was found in keystore\fP
.fi
.nf
\f3 i = at least one certificate was found in identity scope\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 jar verified\&.\fP
.fi
.nf
\f3\fR
.fi
.sp
\fINote:\fR The alias \f3duke\fR is in brackets to denote that it is an identity database alias, and not a keystore alias\&.
.SH JDK\ 1\&.1\ COMPATIBILITY
The \f3keytool\fR and \f3jarsigner\fR tools replace the \f3javakey\fR tool in JDK 1\&.1\&. These new tools provide more features than \f3javakey\fR, including the ability to protect the keystore and private keys with passwords, and the ability to verify signatures in addition to generating them\&.
.PP
The new keystore architecture replaces the identity database that \f3javakey\fR created and managed\&. There is no backward compatibility between the keystore format and the database format used by \f3javakey\fR in JDK 1\&.1\&. However, be aware of the following:
.TP 0.2i
\(bu
It is possible to import the information from an identity database into a keystore through the \f3keytool -identitydb\fR command\&.
.TP 0.2i
\(bu
The \f3jarsigner\fR command can sign JAR files that were signed with the \f3javakey\fR command\&.
.TP 0.2i
\(bu
The \f3jarsigner\fR command can verify JAR files signed with \f3javakey\fR\&. The \f3jarsigner\fR command recognizes and can work with signer aliases that are from a JDK 1\&.1 identity database rather than a JDK keystore\&.
.SS UNSIGNED\ JARS
Unsigned JARs have the default privileges that are granted to all code\&.
.SS SIGNED\ JARS
Signed JARs have the privilege configurations based on their JDK 1\&.1\&.\fIn\fR identity and policy file status as described\&. Only trusted identities can be imported into the JDK keystore\&.
.PP
Default Privileges Granted to All Code
Identity in 1\&.1 database: \fINo\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.PP
.PP
Identity in 1\&.1 database: \fINo\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.PP
.PP
Identity in 1\&.1 database: Yes/Untrusted
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.br
See 3 in Notes Regarding Privileges of Signed JARs\&.
.PP
.PP
Identity in 1\&.1 database: Yes/Untrusted
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.br
See 1 and 3 in Notes Regarding Privileges of Signed JARs\&.
.PP
Default Privileges and Policy File Privileges Granted
Identity in 1\&.1 database: \fINo\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.PP
.PP
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.br
See 2 in Notes Regarding Privileges of Signed JARs\&.
.PP
All Privileges Granted
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.PP
.PP
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.br
See 1 in Notes Regarding Privileges of Signed JARs\&.
.PP
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.br
See 1 in Notes Regarding Privileges of Signed JARs\&.
.PP
Notes Regarding Privileges of Signed JARs
.TP 0.4i
1\&.
If an identity or alias is mentioned in the policy file, then it must be imported into the keystore for the policy file to have any effect on privileges granted\&.
.TP 0.4i
2\&.
The policy file/keystore combination has precedence over a trusted identity in the identity database\&.
.TP 0.4i
3\&.
Untrusted identities are ignored in the Java platform\&.
.SH SEE\ ALSO
.TP 0.2i
\(bu
......
......@@ -373,7 +373,7 @@ Performs additional checks for Java Native Interface (JNI) functions\&. Specific
.TP
-Xcomp
.br
Disables interpretation of Java code and compile methods on first invocation\&. By default, the JIT compiler performs 10,000 interpreted method invocations to gather information for efficient compilation\&. To increase compilation performance at the expense of efficiency, use the \f3-Xcomp\fR flag to disable interpreted method invocations\&.
Forces compilation of methods on first invocation\&. By default, the Client VM (\f3-client\fR) performs 1,000 interpreted method invocations and the Server VM (\f3-server\fR) performs 10,000 interpreted method invocations to gather information for efficient compilation\&. Specifying the \f3-Xcomp\fR option disables interpreted method invocations to increase compilation performance at the expense of efficiency\&.
You can also change the number of interpreted method invocations before compilation using the \f3-XX:CompileThreshold\fR option\&.
.TP
......@@ -937,11 +937,9 @@ Sets the minimum free space (in bytes) required for compilation\&. Append the le
.sp
.TP
.nf
-XX:CompileCommand=\fIcommand\fR,\fIclass\fR\&.\fImethod\fR[,\fIoption\fR]
-XX:CompileCommand=\fIcommand\fR,\fImethod\fR[,\fIoption\fR]
.br
.fi
Attaches a line to the \f3\&.hotspot_compiler\fR file with the command for the specific method of the class\&. For example, to exclude the \f3indexOf()\fR method of the \f3String\fR class from being compiled, use the following:
Specifies a command to perform on a method\&. For example, to exclude the \f3indexOf()\fR method of the \f3String\fR class from being compiled, use the following:
.sp
.nf
\f3\-XX:CompileCommand=exclude,java/lang/String\&.indexOf\fP
......@@ -952,12 +950,21 @@ Attaches a line to the \f3\&.hotspot_compiler\fR file with the command for the s
.sp
Note that you must specify the full class name, including all packages and subpackages separated by a slash (\f3/\fR)\&.
Note that the full class name is specified, including all packages and subpackages separated by a slash (\f3/\fR)\&. For easier cut and paste operations, it is also possible to use the method name format produced by the \f3-XX:+PrintCompilation\fR and \f3-XX:+LogCompilation\fR options:
.sp
.nf
\f3\-XX:CompileCommand=exclude,java\&.lang\&.String::indexOf\fP
.fi
.nf
\f3\fP
.fi
.sp
To add several commands, either specify this option multiple times, or separate each argument with the newline separator (\f3\en\fR)\&. To better understand the syntax of the JVM compiler commands, refer to the description of the \f3-XX:CompileCommandFile\fR option, which enables you to specify the file from which to read compiler commands\&. Notice how the syntax of the command file differs rom the syntax of the argument for the \f3-XX:CompileCommand\fR option\&. The commas and periods in the argument are aliases for spaces in the command file, making it easier to pass compiler commands through a shell\&. To pass arguments to \f3-XX:CompileCommand\fR with the same syntax as that used in the command file, you can enclose the argument in quotation marks:
If the method is specified without the signature, the command will be applied to all methods with the specified name\&. However, you can also specify the signature of the method in the class file format\&. In this case, you should enclose the arguments in quotation marks, because otherwise the shell treats the semicolon as command end\&. For example, if you want to exclude only the \f3indexOf(String)\fR method of the \f3String\fR class from being compiled, use the following:
.sp
.nf
\f3\-XX:CompileCommand="exclude java/lang/String indexOf"\fP
\f3\-XX:CompileCommand="exclude,java/lang/String\&.indexOf,(Ljava/lang/String;)I"\fP
.fi
.nf
\f3\fP
......@@ -965,10 +972,10 @@ To add several commands, either specify this option multiple times, or separate
.sp
For easier cut and paste operations, it is also possible to use the method name format produced by the \f3-XX:+PrintCompilation\fR and \f3-XX:+LogCompilation\fR options:
You can also use the asterisk (*) as a wildcard for class and method names\&. For example, to exclude all \f3indexOf()\fR methods in all classes from being compiled, use the following:
.sp
.nf
\f3\-XX:CompileCommand="exclude java\&.lang\&.String::indexOf"\fP
\f3\-XX:CompileCommand=exclude,*\&.indexOf\fP
.fi
.nf
\f3\fP
......@@ -976,14 +983,27 @@ For easier cut and paste operations, it is also possible to use the method name
.sp
The following commands are available:
The commas and periods are aliases for spaces, making it easier to pass compiler commands through a shell\&. You can pass arguments to \f3-XX:CompileCommand\fR using spaces as separators by enclosing the argument in quotation marks:
.sp
.nf
\f3\-XX:CompileCommand="exclude java/lang/String indexOf"\fP
.fi
.nf
\f3\fP
.fi
.sp
Note that after parsing the commands passed on the command line using the \f3-XX:CompileCommand\fR options, the JIT compiler then reads commands from the \f3\&.hotspot_compiler\fR file\&. You can add commands to this file or specify a different file using the \f3-XX:CompileCommandFile\fR option\&.
To add several commands, either specify the \f3-XX:CompileCommand\fR option multiple times, or separate each argument with the newline separator (\f3\en\fR)\&. The following commands are available:
.RS
.TP
break
Set a breakpoint when debugging the JVM to stop at the beginning of compilation of the specified method\&.
.TP
compileonly
Exclude all methods from compilation except for the specified method\&.
Exclude all methods from compilation except for the specified method\&. As an alternative, you can use the \f3-XX:CompileOnly\fR option, which allows to specify several methods\&.
.TP
dontinline
Prevent inlining of the specified method\&.
......@@ -1000,6 +1020,20 @@ Attempt to inline the specified method\&.
log
Exclude compilation logging (with the \f3-XX:+LogCompilation\fR option) for all methods except for the specified method\&. By default, logging is performed for all compiled methods\&.
.TP
option
This command can be used to pass a JIT compilation option to the specified method in place of the last argument (\fIoption\fR)\&. The compilation option is set at the end, after the method name\&. For example, to enable the \f3BlockLayoutByFrequency\fR option for the \f3append()\fR method of the \f3StringBuffer\fR class, use the following:
.sp
.nf
\f3\-XX:CompileCommand=option,java/lang/StringBuffer\&.append,BlockLayoutByFrequency\fP
.fi
.nf
\f3\fP
.fi
.sp
You can specify multiple compilation options, separated by commas or spaces\&.
.TP
print
Print generated assembler code after compilation of the specified method\&.
.TP
......@@ -1018,12 +1052,15 @@ Do not print the compile commands\&. By default, the commands that you specify w
You can suppress this by specifying the \f3-XX:CompileCommand=quiet\fR option before other \f3-XX:CompileCommand\fR options\&.
.RE
.TP
-XX:CompileCommandFile=\fIfilename\fR
.br
Sets the file from which JIT compiler commands are read\&. By default, the \f3\&.hotspot_compiler\fR file is used to store commands performed by the JIT compiler\&.
.RS
The optional last argument (\fIoption\fR) can be used to pass a JIT compilation option to the specified method\&. The compilation option is set at the end, after the method name\&. For example, to enable the \f3BlockLayoutByFrequency\fR option for the \f3append()\fR method of the \f3StringBuffer\fR class, use the following:
Each line in the command file represents a command, a class name, and a method name for which the command is used\&. For example, this line prints assembly code for the \f3toString()\fR method of the \f3String\fR class:
.sp
.nf
\f3\-XX:CompileCommand=option,java/lang/StringBuffer\&.append,BlockLayoutByFrequency\fP
\f3print java/lang/String toString\fP
.fi
.nf
\f3\fP
......@@ -1031,16 +1068,25 @@ The optional last argument (\fIoption\fR) can be used to pass a JIT compilation
.sp
.RE
For more information about specifying the commands for the JIT compiler to perform on methods, see the \f3-XX:CompileCommand\fR option\&.
.TP
-XX:CompileCommandFile=\fIfilename\fR
-XX:CompileOnly=\fImethods\fR
.br
Sets the file from which compiler commands are read\&. By default, the \f3\&.hotspot_compiler\fR file is used to store commands performed by the JVM compiler\&.
Sets the list of methods (separated by commas) to which compilation should be restricted\&. Only the specified methods will be compiled\&. Specify each method with the full class name (including the packages and subpackages)\&. For example, to compile only the \f3length()\fR method of the \f3String\fR class and the \f3size()\fR method of the \f3List\fR class, use the following:
.sp
.nf
\f3\-XX:CompileOnly=java/lang/String\&.length,java/util/List\&.size\fP
.fi
.nf
\f3\fP
.fi
.sp
Each line in the command file represents a command, a class name, and a method name for which the command is used (all three parts are separated by spaces)\&. For example, this line prints assembly code for the \f3toString()\fR method of the \f3String\fR class:
Note that the full class name is specified, including all packages and subpackages separated by a slash (\f3/\fR)\&. For easier cut and paste operations, it is also possible to use the method name format produced by the \f3-XX:+PrintCompilation\fR and \f3-XX:+LogCompilation\fR options:
.sp
.nf
\f3print java/lang/String toString\fP
\f3\-XX:CompileOnly=java\&.lang\&.String::length,java\&.util\&.List::size\fP
.fi
.nf
\f3\fP
......@@ -1048,14 +1094,16 @@ Each line in the command file represents a command, a class name, and a method n
.sp
To add commands to the beginning of the \f3\&.hotspot_compiler\fR file, use the \f3-XX:CompileCommand\fR option\&. Note how the syntax of the command file is different from the syntax of the argument for the \f3-XX:CompileCommand\fR option\&. The commas and periods in the argument are aliases for spaces in the command file, making it easier to pass compiler commands through a shell\&. Although it is possible to pass arguments to \f3-XX:CompileCommand\fR with the same syntax as that used in the command file, you would have to enclose the string argument in quotation marks\&.
.TP
-XX:CompileOnly=\fImethods\fR
.br
Sets the list of methods (separated by commas) to which compilation should be restricted\&. Only the specified methods will be compiled\&. Specify each method with the full class name (including the packages and subpackages)\&. For example, to compile only the \f3length()\fR method of the \f3String\fR class and the \f3size()\fR method of the \f3List\fR class, use the following:
Although wildcards are not supported, you can specify only the class or package name to compile all methods in that class or package, as well as specify just the method to compile methods with this name in any class:
.sp
.nf
\f3\-XX:CompileOnly=java/lang/String\&.length,java/util/List\&.size\fP
\f3\-XX:CompileOnly=java/lang/String\fP
.fi
.nf
\f3\-XX:CompileOnly=java/lang\fP
.fi
.nf
\f3\-XX:CompileOnly=\&.length\fP
.fi
.nf
\f3\fP
......
......@@ -308,11 +308,7 @@ When a JAR file is signed multiple times, there are multiple \f3\&.SF\fR and \f3
.nf
\f3KEVIN\&.DSA\fP
.fi
.nf
\f3\fR
.fi
.sp
\fINote:\fR It is also possible for a JAR file to have mixed signatures, some generated by the JDK 1\&.1 by the \f3javakey\fR command and others by \f3jarsigner\fR\&. The \f3jarsigner\fR command can be used to sign JAR files that are already signed with the \f3javakey\fR command\&.
.SH OPTIONS
The following sections describe the various \f3jarsigner\fR options\&. Be aware of the following standards:
.TP 0.2i
......@@ -443,7 +439,7 @@ If this option is not specified, then \f3SHA256\fR is used\&. There must either
.br
If the \f3-certs\fR option appears on the command line with the \f3-verify\fR and \f3-verbose\fR options, then the output includes certificate information for each signer of the JAR file\&. This information includes the name of the type of certificate (stored in the \f3\&.DSA\fR file) that certifies the signer\&'s public key, and if the certificate is an X\&.509 certificate (an instance of the \f3java\&.security\&.cert\&.X509Certificate\fR), then the distinguished name of the signer\&.
The keystore is also examined\&. If no keystore value is specified on the command line, then the default keystore file (if any) is checked\&. If the public key certificate for a signer matches an entry in the keystore, then the alias name for the keystore entry for that signer is displayed in parentheses\&. If the signer comes from a JDK 1\&.1 identity database instead of from a keystore, then the alias name displays in brackets instead of parentheses\&.
The keystore is also examined\&. If no keystore value is specified on the command line, then the default keystore file (if any) is checked\&. If the public key certificate for a signer matches an entry in the keystore, then the alias name for the keystore entry for that signer is displayed in parentheses\&.
.TP
-certchain \fIfile\fR
.br
......@@ -797,178 +793,6 @@ If you specify the \f3-certs\fR option with the \f3-verify\fR and \f3-verbose\fR
.fi
.sp
If the certificate for a signer is not an X\&.509 certificate, then there is no distinguished name information\&. In that case, just the certificate type and the alias are shown\&. For example, if the certificate is a PGP certificate, and the alias is \f3bob\fR, then you would get: \f3PGP, (bob)\fR\&.
.SS VERIFICATION\ THAT\ INCLUDES\ IDENTITY\ DATABASE\ SIGNERS
If a JAR file was signed with the JDK 1\&.1 \f3javakey\fR tool, and the signer is an alias in an identity database, then the verification output includes an \f3i\fR\&. If the JAR file was signed by both an alias in an identity database and an alias in a keystore, then both \f3k\fR and \f3i\fR appear\&.
.PP
When the \f3-certs\fR option is used, any identity database aliases are shown in brackets rather than the parentheses used for keystore aliases, for example:
.sp
.nf
\f3 jarsigner \-keystore /working/mystore \-verify \-verbose \-certs writeFile\&.jar\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF\fP
.fi
.nf
\f3 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF\fP
.fi
.nf
\f3 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA\fP
.fi
.nf
\f3 199 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE\&.SF\fP
.fi
.nf
\f3 1013 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE\&.DSA\fP
.fi
.nf
\f3 smki 2752 Fri Sep 26 16:12:30 PDT 1997 writeFile\&.html\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 X\&.509, CN=Jane Smith, OU=Java Software, O=Oracle, L=cup, S=ca, C=us (jane)\fP
.fi
.nf
\f3 X\&.509, CN=Duke, OU=Java Software, O=Oracle, L=cup, S=ca, C=us [duke]\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 s = signature was verified\fP
.fi
.nf
\f3 m = entry is listed in manifest\fP
.fi
.nf
\f3 k = at least one certificate was found in keystore\fP
.fi
.nf
\f3 i = at least one certificate was found in identity scope\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 jar verified\&.\fP
.fi
.nf
\f3\fR
.fi
.sp
\fINote:\fR The alias \f3duke\fR is in brackets to denote that it is an identity database alias, and not a keystore alias\&.
.SH JDK\ 1\&.1\ COMPATIBILITY
The \f3keytool\fR and \f3jarsigner\fR tools replace the \f3javakey\fR tool in JDK 1\&.1\&. These new tools provide more features than \f3javakey\fR, including the ability to protect the keystore and private keys with passwords, and the ability to verify signatures in addition to generating them\&.
.PP
The new keystore architecture replaces the identity database that \f3javakey\fR created and managed\&. There is no backward compatibility between the keystore format and the database format used by \f3javakey\fR in JDK 1\&.1\&. However, be aware of the following:
.TP 0.2i
\(bu
It is possible to import the information from an identity database into a keystore through the \f3keytool -identitydb\fR command\&.
.TP 0.2i
\(bu
The \f3jarsigner\fR command can sign JAR files that were signed with the \f3javakey\fR command\&.
.TP 0.2i
\(bu
The \f3jarsigner\fR command can verify JAR files signed with \f3javakey\fR\&. The \f3jarsigner\fR command recognizes and can work with signer aliases that are from a JDK 1\&.1 identity database rather than a JDK keystore\&.
.SS UNSIGNED\ JARS
Unsigned JARs have the default privileges that are granted to all code\&.
.SS SIGNED\ JARS
Signed JARs have the privilege configurations based on their JDK 1\&.1\&.\fIn\fR identity and policy file status as described\&. Only trusted identities can be imported into the JDK keystore\&.
.PP
Default Privileges Granted to All Code
Identity in 1\&.1 database: \fINo\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.PP
.PP
Identity in 1\&.1 database: \fINo\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.PP
.PP
Identity in 1\&.1 database: Yes/Untrusted
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.br
See 3 in Notes Regarding Privileges of Signed JARs\&.
.PP
.PP
Identity in 1\&.1 database: Yes/Untrusted
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.br
See 1 and 3 in Notes Regarding Privileges of Signed JARs\&.
.PP
Default Privileges and Policy File Privileges Granted
Identity in 1\&.1 database: \fINo\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.PP
.PP
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.br
See 2 in Notes Regarding Privileges of Signed JARs\&.
.PP
All Privileges Granted
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.PP
.PP
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.br
See 1 in Notes Regarding Privileges of Signed JARs\&.
.PP
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.br
See 1 in Notes Regarding Privileges of Signed JARs\&.
.PP
Notes Regarding Privileges of Signed JARs
.TP 0.4i
1\&.
If an identity or alias is mentioned in the policy file, then it must be imported into the keystore for the policy file to have any effect on privileges granted\&.
.TP 0.4i
2\&.
The policy file/keystore combination has precedence over a trusted identity in the identity database\&.
.TP 0.4i
3\&.
Untrusted identities are ignored in the Java platform\&.
.SH SEE\ ALSO
.TP 0.2i
\(bu
......
......@@ -373,7 +373,7 @@ Performs additional checks for Java Native Interface (JNI) functions\&. Specific
.TP
-Xcomp
.br
Disables interpretation of Java code and compile methods on first invocation\&. By default, the JIT compiler performs 10,000 interpreted method invocations to gather information for efficient compilation\&. To increase compilation performance at the expense of efficiency, use the \f3-Xcomp\fR flag to disable interpreted method invocations\&.
Forces compilation of methods on first invocation\&. By default, the Client VM (\f3-client\fR) performs 1,000 interpreted method invocations and the Server VM (\f3-server\fR) performs 10,000 interpreted method invocations to gather information for efficient compilation\&. Specifying the \f3-Xcomp\fR option disables interpreted method invocations to increase compilation performance at the expense of efficiency\&.
You can also change the number of interpreted method invocations before compilation using the \f3-XX:CompileThreshold\fR option\&.
.TP
......@@ -937,11 +937,9 @@ Sets the minimum free space (in bytes) required for compilation\&. Append the le
.sp
.TP
.nf
-XX:CompileCommand=\fIcommand\fR,\fIclass\fR\&.\fImethod\fR[,\fIoption\fR]
-XX:CompileCommand=\fIcommand\fR,\fImethod\fR[,\fIoption\fR]
.br
.fi
Attaches a line to the \f3\&.hotspot_compiler\fR file with the command for the specific method of the class\&. For example, to exclude the \f3indexOf()\fR method of the \f3String\fR class from being compiled, use the following:
Specifies a command to perform on a method\&. For example, to exclude the \f3indexOf()\fR method of the \f3String\fR class from being compiled, use the following:
.sp
.nf
\f3\-XX:CompileCommand=exclude,java/lang/String\&.indexOf\fP
......@@ -952,12 +950,21 @@ Attaches a line to the \f3\&.hotspot_compiler\fR file with the command for the s
.sp
Note that you must specify the full class name, including all packages and subpackages separated by a slash (\f3/\fR)\&.
Note that the full class name is specified, including all packages and subpackages separated by a slash (\f3/\fR)\&. For easier cut and paste operations, it is also possible to use the method name format produced by the \f3-XX:+PrintCompilation\fR and \f3-XX:+LogCompilation\fR options:
.sp
.nf
\f3\-XX:CompileCommand=exclude,java\&.lang\&.String::indexOf\fP
.fi
.nf
\f3\fP
.fi
.sp
To add several commands, either specify this option multiple times, or separate each argument with the newline separator (\f3\en\fR)\&. To better understand the syntax of the JVM compiler commands, refer to the description of the \f3-XX:CompileCommandFile\fR option, which enables you to specify the file from which to read compiler commands\&. Notice how the syntax of the command file differs rom the syntax of the argument for the \f3-XX:CompileCommand\fR option\&. The commas and periods in the argument are aliases for spaces in the command file, making it easier to pass compiler commands through a shell\&. To pass arguments to \f3-XX:CompileCommand\fR with the same syntax as that used in the command file, you can enclose the argument in quotation marks:
If the method is specified without the signature, the command will be applied to all methods with the specified name\&. However, you can also specify the signature of the method in the class file format\&. In this case, you should enclose the arguments in quotation marks, because otherwise the shell treats the semicolon as command end\&. For example, if you want to exclude only the \f3indexOf(String)\fR method of the \f3String\fR class from being compiled, use the following:
.sp
.nf
\f3\-XX:CompileCommand="exclude java/lang/String indexOf"\fP
\f3\-XX:CompileCommand="exclude,java/lang/String\&.indexOf,(Ljava/lang/String;)I"\fP
.fi
.nf
\f3\fP
......@@ -965,10 +972,10 @@ To add several commands, either specify this option multiple times, or separate
.sp
For easier cut and paste operations, it is also possible to use the method name format produced by the \f3-XX:+PrintCompilation\fR and \f3-XX:+LogCompilation\fR options:
You can also use the asterisk (*) as a wildcard for class and method names\&. For example, to exclude all \f3indexOf()\fR methods in all classes from being compiled, use the following:
.sp
.nf
\f3\-XX:CompileCommand="exclude java\&.lang\&.String::indexOf"\fP
\f3\-XX:CompileCommand=exclude,*\&.indexOf\fP
.fi
.nf
\f3\fP
......@@ -976,14 +983,27 @@ For easier cut and paste operations, it is also possible to use the method name
.sp
The following commands are available:
The commas and periods are aliases for spaces, making it easier to pass compiler commands through a shell\&. You can pass arguments to \f3-XX:CompileCommand\fR using spaces as separators by enclosing the argument in quotation marks:
.sp
.nf
\f3\-XX:CompileCommand="exclude java/lang/String indexOf"\fP
.fi
.nf
\f3\fP
.fi
.sp
Note that after parsing the commands passed on the command line using the \f3-XX:CompileCommand\fR options, the JIT compiler then reads commands from the \f3\&.hotspot_compiler\fR file\&. You can add commands to this file or specify a different file using the \f3-XX:CompileCommandFile\fR option\&.
To add several commands, either specify the \f3-XX:CompileCommand\fR option multiple times, or separate each argument with the newline separator (\f3\en\fR)\&. The following commands are available:
.RS
.TP
break
Set a breakpoint when debugging the JVM to stop at the beginning of compilation of the specified method\&.
.TP
compileonly
Exclude all methods from compilation except for the specified method\&.
Exclude all methods from compilation except for the specified method\&. As an alternative, you can use the \f3-XX:CompileOnly\fR option, which allows to specify several methods\&.
.TP
dontinline
Prevent inlining of the specified method\&.
......@@ -1000,6 +1020,20 @@ Attempt to inline the specified method\&.
log
Exclude compilation logging (with the \f3-XX:+LogCompilation\fR option) for all methods except for the specified method\&. By default, logging is performed for all compiled methods\&.
.TP
option
This command can be used to pass a JIT compilation option to the specified method in place of the last argument (\fIoption\fR)\&. The compilation option is set at the end, after the method name\&. For example, to enable the \f3BlockLayoutByFrequency\fR option for the \f3append()\fR method of the \f3StringBuffer\fR class, use the following:
.sp
.nf
\f3\-XX:CompileCommand=option,java/lang/StringBuffer\&.append,BlockLayoutByFrequency\fP
.fi
.nf
\f3\fP
.fi
.sp
You can specify multiple compilation options, separated by commas or spaces\&.
.TP
print
Print generated assembler code after compilation of the specified method\&.
.TP
......@@ -1018,12 +1052,15 @@ Do not print the compile commands\&. By default, the commands that you specify w
You can suppress this by specifying the \f3-XX:CompileCommand=quiet\fR option before other \f3-XX:CompileCommand\fR options\&.
.RE
.TP
-XX:CompileCommandFile=\fIfilename\fR
.br
Sets the file from which JIT compiler commands are read\&. By default, the \f3\&.hotspot_compiler\fR file is used to store commands performed by the JIT compiler\&.
.RS
The optional last argument (\fIoption\fR) can be used to pass a JIT compilation option to the specified method\&. The compilation option is set at the end, after the method name\&. For example, to enable the \f3BlockLayoutByFrequency\fR option for the \f3append()\fR method of the \f3StringBuffer\fR class, use the following:
Each line in the command file represents a command, a class name, and a method name for which the command is used\&. For example, this line prints assembly code for the \f3toString()\fR method of the \f3String\fR class:
.sp
.nf
\f3\-XX:CompileCommand=option,java/lang/StringBuffer\&.append,BlockLayoutByFrequency\fP
\f3print java/lang/String toString\fP
.fi
.nf
\f3\fP
......@@ -1031,16 +1068,25 @@ The optional last argument (\fIoption\fR) can be used to pass a JIT compilation
.sp
.RE
For more information about specifying the commands for the JIT compiler to perform on methods, see the \f3-XX:CompileCommand\fR option\&.
.TP
-XX:CompileCommandFile=\fIfilename\fR
-XX:CompileOnly=\fImethods\fR
.br
Sets the file from which compiler commands are read\&. By default, the \f3\&.hotspot_compiler\fR file is used to store commands performed by the JVM compiler\&.
Sets the list of methods (separated by commas) to which compilation should be restricted\&. Only the specified methods will be compiled\&. Specify each method with the full class name (including the packages and subpackages)\&. For example, to compile only the \f3length()\fR method of the \f3String\fR class and the \f3size()\fR method of the \f3List\fR class, use the following:
.sp
.nf
\f3\-XX:CompileOnly=java/lang/String\&.length,java/util/List\&.size\fP
.fi
.nf
\f3\fP
.fi
.sp
Each line in the command file represents a command, a class name, and a method name for which the command is used (all three parts are separated by spaces)\&. For example, this line prints assembly code for the \f3toString()\fR method of the \f3String\fR class:
Note that the full class name is specified, including all packages and subpackages separated by a slash (\f3/\fR)\&. For easier cut and paste operations, it is also possible to use the method name format produced by the \f3-XX:+PrintCompilation\fR and \f3-XX:+LogCompilation\fR options:
.sp
.nf
\f3print java/lang/String toString\fP
\f3\-XX:CompileOnly=java\&.lang\&.String::length,java\&.util\&.List::size\fP
.fi
.nf
\f3\fP
......@@ -1048,14 +1094,16 @@ Each line in the command file represents a command, a class name, and a method n
.sp
To add commands to the beginning of the \f3\&.hotspot_compiler\fR file, use the \f3-XX:CompileCommand\fR option\&. Note how the syntax of the command file is different from the syntax of the argument for the \f3-XX:CompileCommand\fR option\&. The commas and periods in the argument are aliases for spaces in the command file, making it easier to pass compiler commands through a shell\&. Although it is possible to pass arguments to \f3-XX:CompileCommand\fR with the same syntax as that used in the command file, you would have to enclose the string argument in quotation marks\&.
.TP
-XX:CompileOnly=\fImethods\fR
.br
Sets the list of methods (separated by commas) to which compilation should be restricted\&. Only the specified methods will be compiled\&. Specify each method with the full class name (including the packages and subpackages)\&. For example, to compile only the \f3length()\fR method of the \f3String\fR class and the \f3size()\fR method of the \f3List\fR class, use the following:
Although wildcards are not supported, you can specify only the class or package name to compile all methods in that class or package, as well as specify just the method to compile methods with this name in any class:
.sp
.nf
\f3\-XX:CompileOnly=java/lang/String\&.length,java/util/List\&.size\fP
\f3\-XX:CompileOnly=java/lang/String\fP
.fi
.nf
\f3\-XX:CompileOnly=java/lang\fP
.fi
.nf
\f3\-XX:CompileOnly=\&.length\fP
.fi
.nf
\f3\fP
......
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -22,110 +22,99 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.java.util.jar.pack;
import java.util.ListResourceBundle;
public class DriverResource_ja extends ListResourceBundle {
public static final String VERSION ="VERSION";
public static final String BAD_ARGUMENT ="BAD_ARGUMENT";
public static final String BAD_OPTION ="BAD_OPTION";
public static final String BAD_REPACK_OUTPUT="BAD_REPACK_OUTPUT";
public static final String DETECTED_ZIP_COMMENT="DETECTED_ZIP_COMMENT";
public static final String SKIP_FOR_REPACKED ="SKIP_FOR_REPACKED";
public static final String WRITE_PACK_FILE ="WRITE_PACK_FILE";
public static final String WIRTE_PACKGZ_FILE="WIRTE_PACKGZ_FILE";
public static final String SKIP_FOR_MOVE_FAILED="SKIP_FOR_MOVE_FAILED";
public static final String PACK_HELP="PACK_HELP";
public static final String UNPACK_HELP ="UNPACK_HELP";
public static final String MORE_INFO = "MORE_INFO";
public static final String DUPLICATE_OPTION = "DUPLICATE_OPTION";
public static final String BAD_SPEC = "BAD_SPEC";
//The following string is duplicate in PACK and UNPACK comment,which was draw out to ruduce translation work.
private static final String PARAMETER_V = " -v, --verbose increase program verbosity";
private static final String PARAMETER_Q = " -q, --quiet set verbosity to lowest level";
private static final String PARAMETER_LF = " -l{F}, --log-file={F} output to the given log file, or '-' for System.out";
private static final String PARAMETER_H = " -?, -h, --help print this message";
private static final String PARAMETER_VER = " -V, --version print program version";
private static final String PARAMETER_J = " -J{X} pass option X to underlying Java VM";
//The following are outputs of command 'pack200' and 'unpack200'.
//Don't translate command arguments ,words with a prefix of '-' or '--'.
//
private static final Object[][] resource= {
{VERSION,"{0}\u30D0\u30FC\u30B8\u30E7\u30F3{1}"},//parameter 0:class name;parameter 1: version value
{BAD_ARGUMENT,"\u7121\u52B9\u306A\u5F15\u6570: {0}"},
{BAD_OPTION,"\u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}={1}"},//parameter 0:option name;parameter 1:option value
{BAD_REPACK_OUTPUT,"\u7121\u52B9\u306A--repack\u51FA\u529B: {0}"},//parameter 0:filename
{DETECTED_ZIP_COMMENT,"\u691C\u51FA\u3055\u308C\u305FZIP\u30B3\u30E1\u30F3\u30C8: {0}"},//parameter 0:comment
{SKIP_FOR_REPACKED,"\u3059\u3067\u306B\u518D\u5727\u7E2E\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u3044\u307E\u3059: {0}"},//parameter 0:filename
{WRITE_PACK_FILE,"*.pack\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080\u306B\u306F\u3001--no-gzip\u3092\u6307\u5B9A\u3057\u307E\u3059: {0}"},//parameter 0:filename
{WIRTE_PACKGZ_FILE,"*.pack.gz\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080\u306B\u306F\u3001--gzip\u3092\u6307\u5B9A\u3057\u307E\u3059: {0}"},//parameter 0:filename
{SKIP_FOR_MOVE_FAILED,"\u79FB\u52D5\u304C\u5931\u6557\u3057\u305F\u305F\u3081\u89E3\u51CD\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u3044\u307E\u3059: {0}"},//parameter 0:filename
{PACK_HELP,new String[]{
"\u4F7F\u7528\u65B9\u6CD5: pack200 [-opt... | --option=value]... x.pack[.gz] y.jar",
"",
"\u5727\u7E2E\u30AA\u30D7\u30B7\u30E7\u30F3",
" -g\u3001--no-gzip \u30D7\u30EC\u30FC\u30F3\u306A*.pack\u30D5\u30A1\u30A4\u30EB\u3092\u5727\u7E2E\u305B\u305A\u306B\u51FA\u529B\u3057\u307E\u3059",
" --gzip (\u30C7\u30D5\u30A9\u30EB\u30C8)\u5727\u7E2E\u51FA\u529B\u3092gzip\u3067\u5F8C\u51E6\u7406\u3057\u307E\u3059",
" -G\u3001--strip-debug \u5727\u7E2E\u4E2D\u306B\u30C7\u30D0\u30C3\u30B0\u5C5E\u6027\u3092\u524A\u9664\u3057\u307E\u3059",
" -O\u3001--no-keep-file-order \u30D5\u30A1\u30A4\u30EB\u306E\u9806\u5E8F\u4ED8\u3051\u60C5\u5831\u3092\u8EE2\u9001\u3057\u307E\u305B\u3093",
" --keep-file-order (\u30C7\u30D5\u30A9\u30EB\u30C8)\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u9806\u5E8F\u4ED8\u3051\u3092\u4FDD\u6301\u3057\u307E\u3059",
" -S{N}\u3001--segment-limit={N} \u30BB\u30B0\u30E1\u30F3\u30C8\u5236\u9650\u3092\u51FA\u529B\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8N=1Mb)",
" -E{N}\u3001--effort={N} \u5727\u7E2E\u306E\u8A66\u884C(\u30C7\u30D5\u30A9\u30EB\u30C8N=5)",
" -H{h}\u3001--deflate-hint={h} \u30C7\u30D5\u30EC\u30FC\u30C8\u30FB\u30D2\u30F3\u30C8\u3092\u8EE2\u9001\u3057\u307E\u3059: true\u3001false\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)",
" -m{V}\u3001--modification-time={V} \u5909\u66F4\u6642\u9593\u3092\u8EE2\u9001\u3057\u307E\u3059: latest\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)",
" -P{F}\u3001--pass-file={F} \u6307\u5B9A\u3055\u308C\u305F\u5727\u7E2E\u3055\u308C\u3066\u3044\u306A\u3044\u5165\u529B\u8981\u7D20\u3092\u8EE2\u9001\u3057\u307E\u3059",
" -U{a}\u3001--unknown-attribute={a} \u4E0D\u660E\u306E\u5C5E\u6027\u30A2\u30AF\u30B7\u30E7\u30F3: error\u3001strip\u307E\u305F\u306Fpass(\u30C7\u30D5\u30A9\u30EB\u30C8)",
" -C{N}={L}\u3001--class-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)",
" -F{N}={L}\u3001--field-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)",
" -M{N}={L}\u3001--method-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)",
" -D{N}={L}\u3001--code-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)",
" -f{F}\u3001--config-file={F} Pack200.Packer\u30D7\u30ED\u30D1\u30C6\u30A3\u306B\u30D5\u30A1\u30A4\u30EBF\u3092\u8AAD\u307F\u8FBC\u307F\u307E\u3059",
PARAMETER_V ,
PARAMETER_Q ,
PARAMETER_LF ,
PARAMETER_H ,
PARAMETER_VER ,
PARAMETER_J,
"",
"\u6CE8\u610F:",
" -P\u3001-C\u3001-F\u3001-M\u304A\u3088\u3073-D\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u7D2F\u7A4D\u3055\u308C\u307E\u3059\u3002",
" \u5C5E\u6027\u5B9A\u7FA9\u306E\u4F8B: -C SourceFile=RUH .",
" Config.\u30D5\u30A1\u30A4\u30EB\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u306F\u3001Pack200 API\u306B\u3088\u3063\u3066\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002",
" -S\u3001-E\u3001-H\u3001-m\u3001-U\u306E\u5024\u306E\u610F\u5473\u306F\u3001Pack200 API\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
" \u30EC\u30A4\u30A2\u30A6\u30C8\u5B9A\u7FA9(RUH\u306A\u3069)\u306FJSR 200\u306B\u3088\u3063\u3066\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002",
"",
"\u518D\u5727\u7E2E\u30E2\u30FC\u30C9\u3067\u306F\u3001JAR\u30D5\u30A1\u30A4\u30EB\u304C\u5727\u7E2E/\u89E3\u51CD\u30B5\u30A4\u30AF\u30EB\u3067\u66F4\u65B0\u3055\u308C\u307E\u3059:",
" pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar\n"
}
},
{UNPACK_HELP,new String[]{
"\u4F7F\u7528\u65B9\u6CD5: unpack200 [-opt... | --option=value]... x.pack[.gz] y.jar\n",
"",
"\u89E3\u51CD\u30AA\u30D7\u30B7\u30E7\u30F3",
" -H{h}\u3001--deflate-hint={h} \u8EE2\u9001\u3055\u308C\u305F\u30C7\u30D5\u30EC\u30FC\u30C8\u30FB\u30D2\u30F3\u30C8\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059: true\u3001false\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)",
" -r\u3001--remove-pack-file \u89E3\u51CD\u5F8C\u306B\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059",
PARAMETER_V ,
PARAMETER_Q ,
PARAMETER_LF ,
PARAMETER_H ,
PARAMETER_VER ,
PARAMETER_J,
}
},
{MORE_INFO,"(\u8A73\u7D30\u306F\u3001{0} --help\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002)"},//parameter 0:command name
{DUPLICATE_OPTION,"\u91CD\u8907\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"},//parameter 0:option
{BAD_SPEC,"{0}\u306E\u7121\u52B9\u306A\u4ED5\u69D8: {1}"},//parameter 0:option;parameter 1:specifier
};
protected Object[][] getContents() {
return resource;
}
public static final String VERSION = "VERSION";
public static final String BAD_ARGUMENT = "BAD_ARGUMENT";
public static final String BAD_OPTION = "BAD_OPTION";
public static final String BAD_REPACK_OUTPUT = "BAD_REPACK_OUTPUT";
public static final String DETECTED_ZIP_COMMENT = "DETECTED_ZIP_COMMENT";
public static final String SKIP_FOR_REPACKED = "SKIP_FOR_REPACKED";
public static final String WRITE_PACK_FILE = "WRITE_PACK_FILE";
public static final String WRITE_PACKGZ_FILE = "WRITE_PACKGZ_FILE";
public static final String SKIP_FOR_MOVE_FAILED = "SKIP_FOR_MOVE_FAILED";
public static final String PACK_HELP = "PACK_HELP";
public static final String UNPACK_HELP = "UNPACK_HELP";
public static final String MORE_INFO = "MORE_INFO";
public static final String DUPLICATE_OPTION = "DUPLICATE_OPTION";
public static final String BAD_SPEC = "BAD_SPEC";
/*
* The following are the output of 'pack200' and 'unpack200' commands.
* Do not translate command arguments and words with a prefix of '-' or '--'.
*/
private static final Object[][] resource = {
{VERSION, "{0}\u30D0\u30FC\u30B8\u30E7\u30F3{1}"}, // parameter 0:class name;parameter 1: version value
{BAD_ARGUMENT, "\u7121\u52B9\u306A\u5F15\u6570: {0}"},
{BAD_OPTION, "\u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}={1}"}, // parameter 0:option name;parameter 1:option value
{BAD_REPACK_OUTPUT, "\u7121\u52B9\u306A--repack\u51FA\u529B: {0}"}, // parameter 0:filename
{DETECTED_ZIP_COMMENT, "\u691C\u51FA\u3055\u308C\u305FZIP\u30B3\u30E1\u30F3\u30C8: {0}"}, // parameter 0:comment
{SKIP_FOR_REPACKED, "\u3059\u3067\u306B\u518D\u5727\u7E2E\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u3044\u307E\u3059: {0}"}, // parameter 0:filename
{WRITE_PACK_FILE, "*.pack\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080\u306B\u306F\u3001--no-gzip\u3092\u6307\u5B9A\u3057\u307E\u3059: {0}"}, // parameter 0:filename
{WRITE_PACKGZ_FILE, "*.pack.gz\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080\u306B\u306F\u3001--gzip\u3092\u6307\u5B9A\u3057\u307E\u3059: {0}"}, // parameter 0:filename
{SKIP_FOR_MOVE_FAILED, "\u79FB\u52D5\u304C\u5931\u6557\u3057\u305F\u305F\u3081\u89E3\u51CD\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u3044\u307E\u3059: {0}"}, // parameter 0:filename
{PACK_HELP, new String[] {
"\u4F7F\u7528\u65B9\u6CD5: pack200 [-opt... | --option=value]... x.pack[.gz] y.jar",
"",
"\u5727\u7E2E\u30AA\u30D7\u30B7\u30E7\u30F3",
" -g\u3001--no-gzip \u30D7\u30EC\u30FC\u30F3\u306A*.pack\u30D5\u30A1\u30A4\u30EB\u3092\u5727\u7E2E\u305B\u305A\u306B\u51FA\u529B\u3057\u307E\u3059",
" --gzip (\u30C7\u30D5\u30A9\u30EB\u30C8)\u5727\u7E2E\u51FA\u529B\u3092gzip\u3067\u5F8C\u51E6\u7406\u3057\u307E\u3059",
" -G\u3001--strip-debug \u5727\u7E2E\u4E2D\u306B\u30C7\u30D0\u30C3\u30B0\u5C5E\u6027\u3092\u524A\u9664\u3057\u307E\u3059",
" -O\u3001--no-keep-file-order \u30D5\u30A1\u30A4\u30EB\u306E\u9806\u5E8F\u4ED8\u3051\u60C5\u5831\u3092\u8EE2\u9001\u3057\u307E\u305B\u3093",
" --keep-file-order (\u30C7\u30D5\u30A9\u30EB\u30C8)\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u9806\u5E8F\u4ED8\u3051\u3092\u4FDD\u6301\u3057\u307E\u3059",
" -S{N}\u3001--segment-limit={N} \u30BB\u30B0\u30E1\u30F3\u30C8\u5236\u9650\u3092\u51FA\u529B\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8N=1Mb)",
" -E{N}\u3001--effort={N} \u5727\u7E2E\u306E\u8A66\u884C(\u30C7\u30D5\u30A9\u30EB\u30C8N=5)",
" -H{h}\u3001--deflate-hint={h} \u30C7\u30D5\u30EC\u30FC\u30C8\u30FB\u30D2\u30F3\u30C8\u3092\u8EE2\u9001\u3057\u307E\u3059: true\u3001false\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)",
" -m{V}\u3001--modification-time={V} \u5909\u66F4\u6642\u9593\u3092\u8EE2\u9001\u3057\u307E\u3059: latest\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)",
" -P{F}\u3001--pass-file={F} \u6307\u5B9A\u3055\u308C\u305F\u5727\u7E2E\u3055\u308C\u3066\u3044\u306A\u3044\u5165\u529B\u8981\u7D20\u3092\u8EE2\u9001\u3057\u307E\u3059",
" -U{a}\u3001--unknown-attribute={a} \u4E0D\u660E\u306E\u5C5E\u6027\u30A2\u30AF\u30B7\u30E7\u30F3: error\u3001strip\u307E\u305F\u306Fpass(\u30C7\u30D5\u30A9\u30EB\u30C8)",
" -C{N}={L}\u3001--class-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)",
" -F{N}={L}\u3001--field-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)",
" -M{N}={L}\u3001--method-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)",
" -D{N}={L}\u3001--code-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)",
" -f{F}\u3001--config-file={F} Pack200.Packer\u30D7\u30ED\u30D1\u30C6\u30A3\u306B\u30D5\u30A1\u30A4\u30EBF\u3092\u8AAD\u307F\u8FBC\u307F\u307E\u3059",
" -v\u3001--verbose \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u5197\u9577\u6027\u3092\u9AD8\u3081\u307E\u3059",
" -q\u3001--quiet \u5197\u9577\u6027\u3092\u6700\u4F4E\u30EC\u30D9\u30EB\u306B\u8A2D\u5B9A\u3057\u307E\u3059",
" -l{F}\u3001--log-file={F} \u6307\u5B9A\u306E\u30ED\u30B0\u30FB\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306FSystem.out ('-'\u306E\u5834\u5408)\u306B\u51FA\u529B\u3057\u307E\u3059",
" -?\u3001-h\u3001--help \u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u307E\u3059",
" -V\u3001--version \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u307E\u3059",
" -J{X} \u30AA\u30D7\u30B7\u30E7\u30F3X\u3092\u57FA\u790E\u3068\u306A\u308BJava VM\u306B\u6E21\u3057\u307E\u3059",
"",
"\u6CE8\u610F:",
" -P\u3001-C\u3001-F\u3001-M\u304A\u3088\u3073-D\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u7D2F\u7A4D\u3055\u308C\u307E\u3059\u3002",
" \u5C5E\u6027\u5B9A\u7FA9\u306E\u4F8B: -C SourceFile=RUH .",
" Config.\u30D5\u30A1\u30A4\u30EB\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u306F\u3001Pack200 API\u306B\u3088\u3063\u3066\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002",
" -S\u3001-E\u3001-H\u3001-m\u3001-U\u306E\u5024\u306E\u610F\u5473\u306F\u3001Pack200 API\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
" \u30EC\u30A4\u30A2\u30A6\u30C8\u5B9A\u7FA9(RUH\u306A\u3069)\u306FJSR 200\u306B\u3088\u3063\u3066\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002",
"",
"\u518D\u5727\u7E2E\u30E2\u30FC\u30C9\u3067\u306F\u3001JAR\u30D5\u30A1\u30A4\u30EB\u304C\u5727\u7E2E/\u89E3\u51CD\u30B5\u30A4\u30AF\u30EB\u3067\u66F4\u65B0\u3055\u308C\u307E\u3059:",
" pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar\n"
}
},
{UNPACK_HELP, new String[] {
"\u4F7F\u7528\u65B9\u6CD5: unpack200 [-opt... | --option=value]... x.pack[.gz] y.jar\n",
"",
"\u89E3\u51CD\u30AA\u30D7\u30B7\u30E7\u30F3",
" -H{h}\u3001--deflate-hint={h} \u8EE2\u9001\u3055\u308C\u305F\u30C7\u30D5\u30EC\u30FC\u30C8\u30FB\u30D2\u30F3\u30C8\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059: true\u3001false\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)",
" -r\u3001--remove-pack-file \u89E3\u51CD\u5F8C\u306B\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059",
" -v\u3001--verbose \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u5197\u9577\u6027\u3092\u9AD8\u3081\u307E\u3059",
" -q\u3001--quiet \u5197\u9577\u6027\u3092\u6700\u4F4E\u30EC\u30D9\u30EB\u306B\u8A2D\u5B9A\u3057\u307E\u3059",
" -l{F}\u3001--log-file={F} \u6307\u5B9A\u306E\u30ED\u30B0\u30FB\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306FSystem.out ('-'\u306E\u5834\u5408)\u306B\u51FA\u529B\u3057\u307E\u3059",
" -?\u3001-h\u3001--help \u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u307E\u3059",
" -V\u3001--version \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u307E\u3059",
" -J{X} \u30AA\u30D7\u30B7\u30E7\u30F3X\u3092\u57FA\u790E\u3068\u306A\u308BJava VM\u306B\u6E21\u3057\u307E\u3059"
}
},
{MORE_INFO, "(\u8A73\u7D30\u306F\u3001{0} --help\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002)"}, // parameter 0:command name
{DUPLICATE_OPTION, "\u91CD\u8907\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"}, // parameter 0:option
{BAD_SPEC, "{0}\u306E\u7121\u52B9\u306A\u4ED5\u69D8: {1}"}, // parameter 0:option;parameter 1:specifier
};
protected Object[][] getContents() {
return resource;
}
}
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -22,110 +22,99 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.java.util.jar.pack;
import java.util.ListResourceBundle;
public class DriverResource_zh_CN extends ListResourceBundle {
public static final String VERSION ="VERSION";
public static final String BAD_ARGUMENT ="BAD_ARGUMENT";
public static final String BAD_OPTION ="BAD_OPTION";
public static final String BAD_REPACK_OUTPUT="BAD_REPACK_OUTPUT";
public static final String DETECTED_ZIP_COMMENT="DETECTED_ZIP_COMMENT";
public static final String SKIP_FOR_REPACKED ="SKIP_FOR_REPACKED";
public static final String WRITE_PACK_FILE ="WRITE_PACK_FILE";
public static final String WIRTE_PACKGZ_FILE="WIRTE_PACKGZ_FILE";
public static final String SKIP_FOR_MOVE_FAILED="SKIP_FOR_MOVE_FAILED";
public static final String PACK_HELP="PACK_HELP";
public static final String UNPACK_HELP ="UNPACK_HELP";
public static final String MORE_INFO = "MORE_INFO";
public static final String DUPLICATE_OPTION = "DUPLICATE_OPTION";
public static final String BAD_SPEC = "BAD_SPEC";
//The following string is duplicate in PACK and UNPACK comment,which was draw out to ruduce translation work.
private static final String PARAMETER_V = " -v, --verbose increase program verbosity";
private static final String PARAMETER_Q = " -q, --quiet set verbosity to lowest level";
private static final String PARAMETER_LF = " -l{F}, --log-file={F} output to the given log file, or '-' for System.out";
private static final String PARAMETER_H = " -?, -h, --help print this message";
private static final String PARAMETER_VER = " -V, --version print program version";
private static final String PARAMETER_J = " -J{X} pass option X to underlying Java VM";
//The following are outputs of command 'pack200' and 'unpack200'.
//Don't translate command arguments ,words with a prefix of '-' or '--'.
//
private static final Object[][] resource= {
{VERSION,"{0}\u7248\u672C{1}"},//parameter 0:class name;parameter 1: version value
{BAD_ARGUMENT,"\u9519\u8BEF\u53C2\u6570: {0}"},
{BAD_OPTION,"\u9519\u8BEF\u9009\u9879: {0}={1}"},//parameter 0:option name;parameter 1:option value
{BAD_REPACK_OUTPUT,"--repack \u8F93\u51FA\u9519\u8BEF: {0}"},//parameter 0:filename
{DETECTED_ZIP_COMMENT,"\u68C0\u6D4B\u5230 ZIP \u6CE8\u91CA: {0}"},//parameter 0:comment
{SKIP_FOR_REPACKED,"\u7531\u4E8E\u5DF2\u91CD\u65B0\u6253\u5305\u800C\u8DF3\u8FC7: {0}"},//parameter 0:filename
{WRITE_PACK_FILE,"\u8981\u5199\u5165 *.pack \u6587\u4EF6, \u8BF7\u6307\u5B9A --no-gzip: {0}"},//parameter 0:filename
{WIRTE_PACKGZ_FILE,"\u8981\u5199\u5165 *.pack.gz \u6587\u4EF6, \u8BF7\u6307\u5B9A --gzip: {0}"},//parameter 0:filename
{SKIP_FOR_MOVE_FAILED,"\u7531\u4E8E\u79FB\u52A8\u5931\u8D25\u800C\u8DF3\u8FC7\u91CD\u65B0\u6253\u5305: {0}"},//parameter 0:filename
{PACK_HELP,new String[]{
"\u7528\u6CD5: pack200 [-opt... | --option=value]... x.pack[.gz] y.jar",
"",
"\u6253\u5305\u9009\u9879",
" -g, --no-gzip \u8F93\u51FA\u65E0\u683C\u5F0F\u7684 *.pack \u6587\u4EF6, \u4E0D\u538B\u7F29",
" --gzip (\u9ED8\u8BA4\u503C) \u4F7F\u7528 gzip \u5BF9\u6253\u5305\u8FDB\u884C\u540E\u5904\u7406",
" -G, --strip-debug \u6253\u5305\u65F6\u5220\u9664\u8C03\u8BD5\u5C5E\u6027",
" -O, --no-keep-file-order \u4E0D\u4F20\u8F93\u6587\u4EF6\u6392\u5E8F\u4FE1\u606F",
" --keep-file-order (\u9ED8\u8BA4\u503C) \u4FDD\u7559\u8F93\u5165\u6587\u4EF6\u6392\u5E8F",
" -S{N}, --segment-limit={N} \u8F93\u51FA\u6BB5\u9650\u5236 (\u9ED8\u8BA4\u503C N=1Mb)",
" -E{N}, --effort={N} \u6253\u5305\u6548\u679C (\u9ED8\u8BA4\u503C N=5)",
" -H{h}, --deflate-hint={h} \u4F20\u8F93\u538B\u7F29\u63D0\u793A: true, false \u6216 keep (\u9ED8\u8BA4\u503C)",
" -m{V}, --modification-time={V} \u4F20\u8F93 modtimes: latest \u6216 keep (\u9ED8\u8BA4\u503C)",
" -P{F}, --pass-file={F} \u4F20\u8F93\u672A\u89E3\u538B\u7F29\u7684\u7ED9\u5B9A\u8F93\u5165\u5143\u7D20",
" -U{a}, --unknown-attribute={a} \u672A\u77E5\u5C5E\u6027\u64CD\u4F5C: error, strip \u6216 pass (\u9ED8\u8BA4\u503C)",
" -C{N}={L}, --class-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)",
" -F{N}={L}, --field-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)",
" -M{N}={L}, --method-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)",
" -D{N}={L}, --code-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)",
" -f{F}, --config-file={F} \u8BFB\u53D6\u6587\u4EF6 F \u7684 Pack200.Packer \u5C5E\u6027",
PARAMETER_V ,
PARAMETER_Q ,
PARAMETER_LF ,
PARAMETER_H ,
PARAMETER_VER ,
PARAMETER_J,
"",
"\u6CE8:",
" -P, -C, -F, -M \u548C -D \u9009\u9879\u7D2F\u8BA1\u3002",
" \u793A\u4F8B\u5C5E\u6027\u5B9A\u4E49: -C SourceFile=RUH\u3002",
" Config. \u6587\u4EF6\u5C5E\u6027\u7531 Pack200 API \u5B9A\u4E49\u3002",
" \u6709\u5173 -S, -E, -H-, -m, -U \u503C\u7684\u542B\u4E49, \u8BF7\u53C2\u9605 Pack200 API\u3002",
" \u5E03\u5C40\u5B9A\u4E49 (\u4F8B\u5982 RUH) \u7531 JSR 200 \u5B9A\u4E49\u3002",
"",
"\u91CD\u65B0\u6253\u5305\u6A21\u5F0F\u901A\u8FC7\u6253\u5305/\u89E3\u5305\u5468\u671F\u66F4\u65B0 JAR \u6587\u4EF6:",
" pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar\n"
}
},
{UNPACK_HELP,new String[]{
"\u7528\u6CD5: unpack200 [-opt... | --option=value]... x.pack[.gz] y.jar\n",
"",
"\u89E3\u5305\u9009\u9879",
" -H{h}, --deflate-hint={h} \u8986\u76D6\u5DF2\u4F20\u8F93\u7684\u538B\u7F29\u63D0\u793A: true, false \u6216 keep (\u9ED8\u8BA4\u503C)",
" -r, --remove-pack-file \u89E3\u5305\u4E4B\u540E\u5220\u9664\u8F93\u5165\u6587\u4EF6",
PARAMETER_V ,
PARAMETER_Q ,
PARAMETER_LF ,
PARAMETER_H ,
PARAMETER_VER ,
PARAMETER_J,
}
},
{MORE_INFO,"(\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u8FD0\u884C {0} --help\u3002)"},//parameter 0:command name
{DUPLICATE_OPTION,"\u91CD\u590D\u7684\u9009\u9879: {0}"},//parameter 0:option
{BAD_SPEC,"{0}\u7684\u89C4\u8303\u9519\u8BEF: {1}"},//parameter 0:option;parameter 1:specifier
};
protected Object[][] getContents() {
return resource;
}
public static final String VERSION = "VERSION";
public static final String BAD_ARGUMENT = "BAD_ARGUMENT";
public static final String BAD_OPTION = "BAD_OPTION";
public static final String BAD_REPACK_OUTPUT = "BAD_REPACK_OUTPUT";
public static final String DETECTED_ZIP_COMMENT = "DETECTED_ZIP_COMMENT";
public static final String SKIP_FOR_REPACKED = "SKIP_FOR_REPACKED";
public static final String WRITE_PACK_FILE = "WRITE_PACK_FILE";
public static final String WRITE_PACKGZ_FILE = "WRITE_PACKGZ_FILE";
public static final String SKIP_FOR_MOVE_FAILED = "SKIP_FOR_MOVE_FAILED";
public static final String PACK_HELP = "PACK_HELP";
public static final String UNPACK_HELP = "UNPACK_HELP";
public static final String MORE_INFO = "MORE_INFO";
public static final String DUPLICATE_OPTION = "DUPLICATE_OPTION";
public static final String BAD_SPEC = "BAD_SPEC";
/*
* The following are the output of 'pack200' and 'unpack200' commands.
* Do not translate command arguments and words with a prefix of '-' or '--'.
*/
private static final Object[][] resource = {
{VERSION, "{0}\u7248\u672C{1}"}, // parameter 0:class name;parameter 1: version value
{BAD_ARGUMENT, "\u9519\u8BEF\u53C2\u6570: {0}"},
{BAD_OPTION, "\u9519\u8BEF\u9009\u9879: {0}={1}"}, // parameter 0:option name;parameter 1:option value
{BAD_REPACK_OUTPUT, "--repack \u8F93\u51FA\u9519\u8BEF: {0}"}, // parameter 0:filename
{DETECTED_ZIP_COMMENT, "\u68C0\u6D4B\u5230 ZIP \u6CE8\u91CA: {0}"}, // parameter 0:comment
{SKIP_FOR_REPACKED, "\u7531\u4E8E\u5DF2\u91CD\u65B0\u6253\u5305\u800C\u8DF3\u8FC7: {0}"}, // parameter 0:filename
{WRITE_PACK_FILE, "\u8981\u5199\u5165 *.pack \u6587\u4EF6, \u8BF7\u6307\u5B9A --no-gzip: {0}"}, // parameter 0:filename
{WRITE_PACKGZ_FILE, "\u8981\u5199\u5165 *.pack.gz \u6587\u4EF6, \u8BF7\u6307\u5B9A --gzip: {0}"}, // parameter 0:filename
{SKIP_FOR_MOVE_FAILED, "\u7531\u4E8E\u79FB\u52A8\u5931\u8D25\u800C\u8DF3\u8FC7\u91CD\u65B0\u6253\u5305: {0}"}, // parameter 0:filename
{PACK_HELP, new String[] {
"\u7528\u6CD5: pack200 [-opt... | --option=value]... x.pack[.gz] y.jar",
"",
"\u6253\u5305\u9009\u9879",
" -g, --no-gzip \u8F93\u51FA\u65E0\u683C\u5F0F\u7684 *.pack \u6587\u4EF6, \u4E0D\u538B\u7F29",
" --gzip (\u9ED8\u8BA4\u503C) \u4F7F\u7528 gzip \u5BF9\u6253\u5305\u8FDB\u884C\u540E\u5904\u7406",
" -G, --strip-debug \u6253\u5305\u65F6\u5220\u9664\u8C03\u8BD5\u5C5E\u6027",
" -O, --no-keep-file-order \u4E0D\u4F20\u8F93\u6587\u4EF6\u6392\u5E8F\u4FE1\u606F",
" --keep-file-order (\u9ED8\u8BA4\u503C) \u4FDD\u7559\u8F93\u5165\u6587\u4EF6\u6392\u5E8F",
" -S{N}, --segment-limit={N} \u8F93\u51FA\u6BB5\u9650\u5236 (\u9ED8\u8BA4\u503C N=1Mb)",
" -E{N}, --effort={N} \u6253\u5305\u6548\u679C (\u9ED8\u8BA4\u503C N=5)",
" -H{h}, --deflate-hint={h} \u4F20\u8F93\u538B\u7F29\u63D0\u793A: true, false \u6216 keep (\u9ED8\u8BA4\u503C)",
" -m{V}, --modification-time={V} \u4F20\u8F93 modtimes: latest \u6216 keep (\u9ED8\u8BA4\u503C)",
" -P{F}, --pass-file={F} \u4F20\u8F93\u672A\u89E3\u538B\u7F29\u7684\u7ED9\u5B9A\u8F93\u5165\u5143\u7D20",
" -U{a}, --unknown-attribute={a} \u672A\u77E5\u5C5E\u6027\u64CD\u4F5C: error, strip \u6216 pass (\u9ED8\u8BA4\u503C)",
" -C{N}={L}, --class-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)",
" -F{N}={L}, --field-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)",
" -M{N}={L}, --method-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)",
" -D{N}={L}, --code-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)",
" -f{F}, --config-file={F} \u8BFB\u53D6\u6587\u4EF6 F \u7684 Pack200.Packer \u5C5E\u6027",
" -v, --verbose \u63D0\u9AD8\u7A0B\u5E8F\u8BE6\u7EC6\u7A0B\u5EA6",
" -q, --quiet \u5C06\u8BE6\u7EC6\u7A0B\u5EA6\u8BBE\u7F6E\u4E3A\u6700\u4F4E\u7EA7\u522B",
" -l{F}, --log-file={F} \u8F93\u51FA\u5230\u7ED9\u5B9A\u65E5\u5FD7\u6587\u4EF6, \u6216\u5BF9\u4E8E System.out \u6307\u5B9A '-'",
" -?, -h, --help \u8F93\u51FA\u6B64\u6D88\u606F",
" -V, --version \u8F93\u51FA\u7A0B\u5E8F\u7248\u672C",
" -J{X} \u5C06\u9009\u9879 X \u4F20\u9012\u7ED9\u57FA\u7840 Java VM",
"",
"\u6CE8:",
" -P, -C, -F, -M \u548C -D \u9009\u9879\u7D2F\u8BA1\u3002",
" \u793A\u4F8B\u5C5E\u6027\u5B9A\u4E49: -C SourceFile=RUH\u3002",
" Config. \u6587\u4EF6\u5C5E\u6027\u7531 Pack200 API \u5B9A\u4E49\u3002",
" \u6709\u5173 -S, -E, -H-, -m, -U \u503C\u7684\u542B\u4E49, \u8BF7\u53C2\u9605 Pack200 API\u3002",
" \u5E03\u5C40\u5B9A\u4E49 (\u4F8B\u5982 RUH) \u7531 JSR 200 \u5B9A\u4E49\u3002",
"",
"\u91CD\u65B0\u6253\u5305\u6A21\u5F0F\u901A\u8FC7\u6253\u5305/\u89E3\u5305\u5468\u671F\u66F4\u65B0 JAR \u6587\u4EF6:",
" pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar\n"
}
},
{UNPACK_HELP, new String[] {
"\u7528\u6CD5: unpack200 [-opt... | --option=value]... x.pack[.gz] y.jar\n",
"",
"\u89E3\u5305\u9009\u9879",
" -H{h}, --deflate-hint={h} \u8986\u76D6\u5DF2\u4F20\u8F93\u7684\u538B\u7F29\u63D0\u793A: true, false \u6216 keep (\u9ED8\u8BA4\u503C)",
" -r, --remove-pack-file \u89E3\u5305\u4E4B\u540E\u5220\u9664\u8F93\u5165\u6587\u4EF6",
" -v, --verbose \u63D0\u9AD8\u7A0B\u5E8F\u8BE6\u7EC6\u7A0B\u5EA6",
" -q, --quiet \u5C06\u8BE6\u7EC6\u7A0B\u5EA6\u8BBE\u7F6E\u4E3A\u6700\u4F4E\u7EA7\u522B",
" -l{F}, --log-file={F} \u8F93\u51FA\u5230\u7ED9\u5B9A\u65E5\u5FD7\u6587\u4EF6, \u6216\u5BF9\u4E8E System.out \u6307\u5B9A '-'",
" -?, -h, --help \u8F93\u51FA\u6B64\u6D88\u606F",
" -V, --version \u8F93\u51FA\u7A0B\u5E8F\u7248\u672C",
" -J{X} \u5C06\u9009\u9879 X \u4F20\u9012\u7ED9\u57FA\u7840 Java VM"
}
},
{MORE_INFO, "(\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u8FD0\u884C {0} --help\u3002)"}, // parameter 0:command name
{DUPLICATE_OPTION, "\u91CD\u590D\u7684\u9009\u9879: {0}"}, // parameter 0:option
{BAD_SPEC, "{0}\u7684\u89C4\u8303\u9519\u8BEF: {1}"}, // parameter 0:option;parameter 1:specifier
};
protected Object[][] getContents() {
return resource;
}
}
......@@ -143,12 +143,12 @@ InternalFrame.restoreButtonToolTip=Wiederherstellen
InternalFrame.closeButtonToolTip=Schlie\u00DFen
############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButton.textAndMnemonic=Wiede&rherstellen
InternalFrameTitlePane.moveButton.textAndMnemonic=Verschieben(&M)
InternalFrameTitlePane.sizeButton.textAndMnemonic=Gr\u00F6\u00DFe(&S)
InternalFrameTitlePane.restoreButton.textAndMnemonic=&Wiederherstellen
InternalFrameTitlePane.moveButton.textAndMnemonic=&Verschieben
InternalFrameTitlePane.sizeButton.textAndMnemonic=&Gr\u00F6\u00DFe
InternalFrameTitlePane.minimizeButton.textAndMnemonic=Mi&nimieren
InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ma&ximieren
InternalFrameTitlePane.closeButton.textAndMnemonic=S&chlie\u00DFen
InternalFrameTitlePane.closeButton.textAndMnemonic=&Schlie\u00DFen
############ Text strings #############
# Used for html forms
......
......@@ -145,7 +145,7 @@ InternalFrame.closeButtonToolTip=Cerrar
############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButton.textAndMnemonic=&Restaurar
InternalFrameTitlePane.moveButton.textAndMnemonic=&Mover
InternalFrameTitlePane.sizeButton.textAndMnemonic=Tama\u00F1o(&S)
InternalFrameTitlePane.sizeButton.textAndMnemonic=&Tama\u00F1o
InternalFrameTitlePane.minimizeButton.textAndMnemonic=Mi&nimizar
InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ma&ximizar
InternalFrameTitlePane.closeButton.textAndMnemonic=&Cerrar
......
......@@ -144,11 +144,11 @@ InternalFrame.closeButtonToolTip=Fermer
############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButton.textAndMnemonic=&Restaurer
InternalFrameTitlePane.moveButton.textAndMnemonic=D\u00E9placer(&M)
InternalFrameTitlePane.sizeButton.textAndMnemonic=Taille(&S)
InternalFrameTitlePane.minimizeButton.textAndMnemonic=R\u00E9duire(&N)
InternalFrameTitlePane.maximizeButton.textAndMnemonic=Agrandir(&X)
InternalFrameTitlePane.closeButton.textAndMnemonic=Fermer(&C)
InternalFrameTitlePane.moveButton.textAndMnemonic=D\u00E9p&lacer
InternalFrameTitlePane.sizeButton.textAndMnemonic=Re&dimensionner
InternalFrameTitlePane.minimizeButton.textAndMnemonic=&R\u00E9duire
InternalFrameTitlePane.maximizeButton.textAndMnemonic=&Agrandir
InternalFrameTitlePane.closeButton.textAndMnemonic=&Fermer
############ Text strings #############
# Used for html forms
......
......@@ -144,10 +144,10 @@ InternalFrame.closeButtonToolTip=Chiudi
############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButton.textAndMnemonic=&Ripristina
InternalFrameTitlePane.moveButton.textAndMnemonic=Sposta(&M)
InternalFrameTitlePane.sizeButton.textAndMnemonic=Dimen&sioni
InternalFrameTitlePane.minimizeButton.textAndMnemonic=Riduci a ico&na
InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ingrandisci(&X)
InternalFrameTitlePane.moveButton.textAndMnemonic=&Sposta
InternalFrameTitlePane.sizeButton.textAndMnemonic=R&idimensiona
InternalFrameTitlePane.minimizeButton.textAndMnemonic=Ri&duci a icona
InternalFrameTitlePane.maximizeButton.textAndMnemonic=In&grandisci
InternalFrameTitlePane.closeButton.textAndMnemonic=&Chiudi
############ Text strings #############
......
......@@ -145,10 +145,10 @@ InternalFrame.closeButtonToolTip=Fechar
############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButton.textAndMnemonic=&Restaurar
InternalFrameTitlePane.moveButton.textAndMnemonic=&Mover
InternalFrameTitlePane.sizeButton.textAndMnemonic=Tamanho(&S)
InternalFrameTitlePane.sizeButton.textAndMnemonic=&Dimensionar
InternalFrameTitlePane.minimizeButton.textAndMnemonic=Mi&nimizar
InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ma&ximizar
InternalFrameTitlePane.closeButton.textAndMnemonic=Fe&char
InternalFrameTitlePane.closeButton.textAndMnemonic=&Fechar
############ Text strings #############
# Used for html forms
......
......@@ -143,12 +143,12 @@ InternalFrame.restoreButtonToolTip=\u00C5terst\u00E4ll
InternalFrame.closeButtonToolTip=St\u00E4ng
############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButton.textAndMnemonic=\u00C5terst\u00E4ll(&R)
InternalFrameTitlePane.moveButton.textAndMnemonic=Flytta(&M)
InternalFrameTitlePane.restoreButton.textAndMnemonic=&\u00C5terst\u00E4ll
InternalFrameTitlePane.moveButton.textAndMnemonic=&Flytta
InternalFrameTitlePane.sizeButton.textAndMnemonic=&Storlek
InternalFrameTitlePane.minimizeButton.textAndMnemonic=Mi&nimera
InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ma&ximera
InternalFrameTitlePane.closeButton.textAndMnemonic=St\u00E4ng(&C)
InternalFrameTitlePane.closeButton.textAndMnemonic=&St\u00E4ng
############ Text strings #############
# Used for html forms
......
......@@ -143,9 +143,9 @@ InternalFrame.restoreButtonToolTip=\u5FA9\u539F
InternalFrame.closeButtonToolTip=\u95DC\u9589
############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButton.textAndMnemonic=\u5FA9\u539F(&R)
InternalFrameTitlePane.restoreButton.textAndMnemonic=\u56DE\u5FA9(&R)
InternalFrameTitlePane.moveButton.textAndMnemonic=\u79FB\u52D5(&M)
InternalFrameTitlePane.sizeButton.textAndMnemonic=\u5927\u5C0F(&S)
InternalFrameTitlePane.sizeButton.textAndMnemonic=\u8ABF\u6574\u5927\u5C0F(&S)
InternalFrameTitlePane.minimizeButton.textAndMnemonic=\u6700\u5C0F\u5316(&N)
InternalFrameTitlePane.maximizeButton.textAndMnemonic=\u6700\u5927\u5316(&X)
InternalFrameTitlePane.closeButton.textAndMnemonic=\u95DC\u9589(&C)
......
......@@ -34,6 +34,10 @@ package java.lang.annotation;
* More information about annotation types can be found in section 9.6 of
* <cite>The Java&trade; Language Specification</cite>.
*
* The {@link java.lang.reflect.AnnotatedElement} interface discusses
* compatibility concerns when evolving an annotation type from being
* non-repeatable to being repeatable.
*
* @author Josh Bloch
* @since 1.5
*/
......
......@@ -135,7 +135,77 @@ import sun.reflect.annotation.AnnotationType;
* annotations on <i>E</i> are directly present on <i>E</i> in place
* of their container annotation, in the order in which they appear in
* the value element of the container annotation.
*
* <p>There are several compatibility concerns to keep in mind if an
* annotation type <i>T</i> is originally <em>not</em> repeatable and
* later modified to be repeatable.
*
* The containing annotation type for <i>T</i> is <i>TC</i>.
*
* <ul>
*
* <li>Modifying <i>T</i> to be repeatable is source and binary
* compatible with existing uses of <i>T</i> and with existing uses
* of <i>TC</i>.
*
* That is, for source compatibility, source code with annotations of
* type <i>T</i> or of type <i>TC</i> will still compile. For binary
* compatibility, class files with annotations of type <i>T</i> or of
* type <i>TC</i> (or with other kinds of uses of type <i>T</i> or of
* type <i>TC</i>) will link against the modified version of <i>T</i>
* if they linked against the earlier version.
*
* (An annotation type <i>TC</i> may informally serve as an acting
* containing annotation type before <i>T</i> is modified to be
* formally repeatable. Alternatively, when <i>T</i> is made
* repeatable, <i>TC</i> can be introduced as a new type.)
*
* <li>If an annotation type <i>TC</i> is present on an element, and
* <i>T</i> is modified to be repeatable with <i>TC</i> as its
* containing annotation type then:
*
* <ul>
*
* <li>The change to <i>T</i> is behaviorally compatible with respect
* to the {@code get[Declared]Annotation(Class<T>)} (called with an
* argument of <i>T</i> or <i>TC</i>) and {@code
* get[Declared]Annotations()} methods because the results of the
* methods will not change due to <i>TC</i> becoming the containing
* annotation type for <i>T</i>.
*
* <li>The change to <i>T</i> changes the results of the {@code
* get[Declared]AnnotationsByType(Class<T>)} methods called with an
* argument of <i>T</i>, because those methods will now recognize an
* annotation of type <i>TC</i> as a container annotation for <i>T</i>
* and will "look through" it to expose annotations of type <i>T</i>.
*
* </ul>
*
* <li>If an annotation of type <i>T</i> is present on an
* element and <i>T</i> is made repeatable and more annotations of
* type <i>T</i> are added to the element:
*
* <ul>
*
* <li> The addition of the annotations of type <i>T</i> is both
* source compatible and binary compatible.
*
* <li>The addition of the annotations of type <i>T</i> changes the results
* of the {@code get[Declared]Annotation(Class<T>)} methods and {@code
* get[Declared]Annotations()} methods, because those methods will now
* only see a container annotation on the element and not see an
* annotation of type <i>T</i>.
*
* <li>The addition of the annotations of type <i>T</i> changes the
* results of the {@code get[Declared]AnnotationsByType(Class<T>)}
* methods, because their results will expose the additional
* annotations of type <i>T</i> whereas previously they exposed only a
* single annotation of type <i>T</i>.
*
* </ul>
*
* </ul>
*
* <p>If an annotation returned by a method in this interface contains
* (directly or indirectly) a {@link Class}-valued member referring to
* a class that is not accessible in this VM, attempting to read the class
......
......@@ -47,7 +47,7 @@ import java.security.Permission;
* class.
* <i>authority</i> is specified as:
* <pre>
* authority = hostrange [ : portrange ]
* authority = [ userinfo @ ] hostrange [ : portrange ]
* portrange = portnumber | -portnumber | portnumber-[portnumber] | *
* hostrange = ([*.] dnsname) | IPv4address | IPv6address
* </pre>
......@@ -65,6 +65,9 @@ import java.security.Permission;
* (default 443). No default is assumed for other schemes. A wildcard may be specified
* which means all ports.
* <p>
* <i>userinfo</i> is optional. A userinfo component if present, is ignored when
* creating a URLPermission, and has no effect on any other methods defined by this class.
* <p>
* The <i>path</i> component comprises a sequence of path segments,
* separated by '/' characters. <i>path</i> may also be empty. The path is specified
* in a similar way to the path in {@link java.io.FilePermission}. There are
......@@ -473,7 +476,12 @@ public final class URLPermission extends Permission {
HostPortrange p;
Authority(String scheme, String authority) {
p = new HostPortrange(scheme, authority);
int at = authority.indexOf('@');
if (at == -1) {
p = new HostPortrange(scheme, authority);
} else {
p = new HostPortrange(scheme, authority.substring(at+1));
}
}
boolean implies(Authority other) {
......
......@@ -118,6 +118,13 @@ import java.util.regex.Pattern;
* most applications.
* See {@link Instant} for a discussion as to the meaning of the second and time-scales.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code Duration} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -196,6 +196,13 @@ import java.util.Objects;
* This includes {@code Instant}, {@code LocalDate}, {@code LocalTime}, {@code OffsetDateTime},
* {@code ZonedDateTime} and {@code Duration}.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code Instant} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -121,6 +121,13 @@ import java.util.Objects;
* However, any application that makes use of historical dates, and requires them
* to be accurate will find the ISO-8601 approach unsuitable.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code LocalDate} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -119,6 +119,13 @@ import java.util.Objects;
* However, any application that makes use of historical dates, and requires them
* to be accurate will find the ISO-8601 approach unsuitable.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code LocalDateTime} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -109,6 +109,13 @@ import java.util.Objects;
* in most of the world. This API assumes that all calendar systems use the same
* representation, this class, for time-of-day.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code LocalTime} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -111,6 +111,13 @@ import java.util.Objects;
* However, any application that makes use of historical dates, and requires them
* to be accurate will find the ISO-8601 approach unsuitable.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code MonthDay} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -112,6 +112,13 @@ import java.util.Objects;
* in simpler applications. This class may be used when modeling date-time concepts in
* more detail, or when communicating to a database or in a network protocol.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code OffsetDateTime} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -102,6 +102,13 @@ import java.util.Objects;
* For example, the value "13:45.30.123456789+02:00" can be stored
* in an {@code OffsetTime}.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code OffsetTime} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -119,6 +119,13 @@ import java.util.regex.Pattern;
* The period is modeled as a directed amount of time, meaning that individual parts of the
* period may be negative.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code Period} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -119,6 +119,13 @@ import java.util.Objects;
* However, any application that makes use of historical dates, and requires them
* to be accurate will find the ISO-8601 approach unsuitable.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code Year} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -115,6 +115,13 @@ import java.util.Objects;
* However, any application that makes use of historical dates, and requires them
* to be accurate will find the ISO-8601 approach unsuitable.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code YearMonth} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -159,6 +159,13 @@ import java.util.TimeZone;
* This approach is designed to allow a {@link ZonedDateTime} to be loaded and
* queried, but not modified, on a Java Runtime with incomplete time-zone information.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code ZoneId} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This abstract class has two implementations, both of which are immutable and thread-safe.
* One implementation models region-based IDs, the other is {@code ZoneOffset} modelling
......
......@@ -114,6 +114,13 @@ import java.util.concurrent.ConcurrentMap;
* Implementations may choose to cache certain common offsets, however
* applications must not rely on such caching.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code ZoneOffset} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -142,6 +142,13 @@ import java.util.Objects;
* a vital, but secondary, piece of information, used to ensure that the class
* represents an instant, especially during a daylight savings overlap.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code ZonedDateTime} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* A {@code ZonedDateTime} holds state equivalent to three separate objects,
* a {@code LocalDateTime}, a {@code ZoneId} and the resolved {@code ZoneOffset}.
......
......@@ -102,6 +102,14 @@ import java.time.temporal.ValueRange;
* to create new HijrahDate instances.
* Alternatively, the {@link #withVariant} method can be used to convert
* to a new HijrahChronology.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code HijrahDate} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -110,6 +110,13 @@ import sun.util.calendar.LocalGregorianCalendar;
* Calling {@code japaneseDate.get(ERA)} will return 2, corresponding to
* {@code JapaneseChronology.ERA_HEISEI}.<br>
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code JapaneseDate} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -90,6 +90,13 @@ import java.util.Objects;
* This calendar system is primarily used in the Republic of China, often known as Taiwan.
* Dates are aligned such that {@code 0001-01-01 (Minguo)} is {@code 1912-01-01 (ISO)}.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code MinguoDate} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -90,6 +90,13 @@ import java.util.Objects;
* This calendar system is primarily used in Thailand.
* Dates are aligned such that {@code 2484-01-01 (Buddhist)} is {@code 1941-01-01 (ISO)}.
*
* <p>
* This is a <a href="{@docRoot}/java/lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code ThaiBuddhistDate} may have unpredictable results and should be avoided.
* The {@code equals} method should be used for comparisons.
*
* @implSpec
* This class is immutable and thread-safe.
*
......
......@@ -1116,13 +1116,13 @@ public class HashMap<K,V> extends AbstractMap<K,V>
}
}
V v = mappingFunction.apply(key);
if (old != null) {
if (v == null) {
return null;
} else if (old != null) {
old.value = v;
afterNodeAccess(old);
return v;
}
else if (v == null)
return null;
else if (t != null)
t.putTreeVal(this, tab, hash, key, v);
else {
......@@ -1212,6 +1212,8 @@ public class HashMap<K,V> extends AbstractMap<K,V>
@Override
public V merge(K key, V value,
BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
if (value == null)
throw new NullPointerException();
if (remappingFunction == null)
throw new NullPointerException();
int hash = hash(key);
......
......@@ -28,7 +28,6 @@ package java.util;
import java.util.function.Consumer;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.io.Serializable;
import java.io.IOException;
/**
......@@ -63,14 +62,17 @@ import java.io.IOException;
* provided to create a linked hash map whose order of iteration is the order
* in which its entries were last accessed, from least-recently accessed to
* most-recently (<i>access-order</i>). This kind of map is well-suited to
* building LRU caches. Invoking the <tt>put</tt> or <tt>get</tt> method
* results in an access to the corresponding entry (assuming it exists after
* the invocation completes). The <tt>putAll</tt> method generates one entry
* access for each mapping in the specified map, in the order that key-value
* mappings are provided by the specified map's entry set iterator. <i>No
* other methods generate entry accesses.</i> In particular, operations on
* collection-views do <i>not</i> affect the order of iteration of the backing
* map.
* building LRU caches. Invoking the {@code put}, {@code putIfAbsent},
* {@code get}, {@code getOrDefault}, {@code compute}, {@code computeIfAbsent},
* {@code computeIfPresent}, or {@code merge} methods results
* in an access to the corresponding entry (assuming it exists after the
* invocation completes). The {@code replace} methods only result in an access
* of the entry if the value is replaced. The {@code putAll} method generates one
* entry access for each mapping in the specified map, in the order that
* key-value mappings are provided by the specified map's entry set iterator.
* <i>No other methods generate entry accesses.</i> In particular, operations
* on collection-views do <i>not</i> affect the order of iteration of the
* backing map.
*
* <p>The {@link #removeEldestEntry(Map.Entry)} method may be overridden to
* impose a policy for removing stale mappings automatically when new mappings
......@@ -112,8 +114,8 @@ import java.io.IOException;
* iteration order. In insertion-ordered linked hash maps, merely changing
* the value associated with a key that is already contained in the map is not
* a structural modification. <strong>In access-ordered linked hash maps,
* merely querying the map with <tt>get</tt> is a structural
* modification.</strong>)
* merely querying the map with <tt>get</tt> is a structural modification.
* </strong>)
*
* <p>The iterators returned by the <tt>iterator</tt> method of the collections
* returned by all of this class's collection view methods are
......@@ -443,8 +445,19 @@ public class LinkedHashMap<K,V>
}
/**
* Removes all of the mappings from this map.
* The map will be empty after this call returns.
* {@inheritDoc}
*/
public V getOrDefault(Object key, V defaultValue) {
Node<K,V> e;
if ((e = getNode(hash(key), key)) == null)
return defaultValue;
if (accessOrder)
afterNodeAccess(e);
return e.value;
}
/**
* {@inheritDoc}
*/
public void clear() {
super.clear();
......
......@@ -600,7 +600,7 @@ public interface Map<K,V> {
* @implSpec
* The default implementation is equivalent to, for this {@code map}:
* <pre> {@code
* for ((Map.Entry<K, V> entry : map.entrySet())
* for (Map.Entry<K, V> entry : map.entrySet())
* action.accept(entry.getKey(), entry.getValue());
* }</pre>
*
......@@ -640,7 +640,7 @@ public interface Map<K,V> {
* @implSpec
* <p>The default implementation is equivalent to, for this {@code map}:
* <pre> {@code
* for ((Map.Entry<K, V> entry : map.entrySet())
* for (Map.Entry<K, V> entry : map.entrySet())
* entry.setValue(function.apply(entry.getKey(), entry.getValue()));
* }</pre>
*
......@@ -1110,8 +1110,8 @@ public interface Map<K,V> {
/**
* If the specified key is not already associated with a value or is
* associated with null, associates it with the given value.
* Otherwise, replaces the value with the results of the given
* associated with null, associates it with the given non-null value.
* Otherwise, replaces the associated value with the results of the given
* remapping function, or removes if the result is {@code null}. This
* method may be of use when combining multiple mapped values for a key.
* For example, to either create or append a {@code String msg} to a
......@@ -1121,15 +1121,14 @@ public interface Map<K,V> {
* map.merge(key, msg, String::concat)
* }</pre>
*
* <p>If the function returns {@code null}, the mapping is removed (or
* remains absent if initially absent). If the function itself throws an
* (unchecked) exception, the exception is rethrown, and the current mapping
* is left unchanged.
* <p>If the function returns {@code null} the mapping is removed. If the
* function itself throws an (unchecked) exception, the exception is
* rethrown, and the current mapping is left unchanged.
*
* @implSpec
* The default implementation is equivalent to performing the
* following steps for this {@code map}, then returning the
* current value or {@code null} if absent:
* The default implementation is equivalent to performing the following
* steps for this {@code map}, then returning the current value or
* {@code null} if absent:
*
* <pre> {@code
* V oldValue = map.get(key);
......@@ -1137,8 +1136,6 @@ public interface Map<K,V> {
* remappingFunction.apply(oldValue, value);
* if (newValue == null)
* map.remove(key);
* else if (oldValue == null)
* map.remove(key);
* else
* map.put(key, newValue);
* }</pre>
......@@ -1151,42 +1148,36 @@ public interface Map<K,V> {
* whether the function is applied once atomically only if the value is not
* present.
*
* @param key key with which the specified value is to be associated
* @param value the value to use if absent
* @param key key with which the resulting value is to be associated
* @param value the non-null value to be merged with the existing value
* associated with the key or, if no existing value or a null value
* is associated with the key, to be associated with the key
* @param remappingFunction the function to recompute a value if present
* @return the new value associated with the specified key, or null if none
* @return the new value associated with the specified key, or null if no
* value is associated with the key
* @throws UnsupportedOperationException if the {@code put} operation
* is not supported by this map
* (<a href="Collection.html#optional-restrictions">optional</a>)
* @throws ClassCastException if the class of the specified key or value
* prevents it from being stored in this map
* (<a href="Collection.html#optional-restrictions">optional</a>)
* @throws NullPointerException if the specified key is null and
* this map does not support null keys, or the remappingFunction
* is null
* @throws NullPointerException if the specified key is null and this map
* does not support null keys or the value or remappingFunction is
* null
* @since 1.8
*/
default V merge(K key, V value,
BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
Objects.requireNonNull(remappingFunction);
Objects.requireNonNull(value);
V oldValue = get(key);
if (oldValue != null) {
V newValue = remappingFunction.apply(oldValue, value);
if (newValue != null) {
put(key, newValue);
return newValue;
} else {
remove(key);
return null;
}
V newValue = (oldValue == null) ? value :
remappingFunction.apply(oldValue, value);
if(newValue == null) {
remove(key);
} else {
if (value == null) {
remove(key);
return null;
} else {
put(key, value);
return value;
}
put(key, newValue);
}
return newValue;
}
}
......@@ -463,9 +463,9 @@ public interface ConcurrentMap<K, V> extends Map<K, V> {
* {@inheritDoc}
*
* @implSpec
* The default implementation is equivalent to performing the
* following steps for this {@code map}, then returning the
* current value or {@code null} if absent:
* The default implementation is equivalent to performing the following
* steps for this {@code map}, then returning the current value or
* {@code null} if absent:
*
* <pre> {@code
* V oldValue = map.get(key);
......@@ -473,8 +473,6 @@ public interface ConcurrentMap<K, V> extends Map<K, V> {
* remappingFunction.apply(oldValue, value);
* if (newValue == null)
* map.remove(key);
* else if (oldValue == null)
* map.remove(key);
* else
* map.put(key, newValue);
* }</pre>
......
......@@ -49,6 +49,9 @@ import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.RunnableFuture;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import java.security.AccessControlContext;
import java.security.ProtectionDomain;
import java.security.Permissions;
/**
* An {@link ExecutorService} for running {@link ForkJoinTask}s.
......@@ -140,6 +143,9 @@ import java.util.concurrent.TimeUnit;
* <li>{@code java.util.concurrent.ForkJoinPool.common.exceptionHandler}
* - the class name of a {@link UncaughtExceptionHandler}
* </ul>
* If a {@link SecurityManager} is present and no factory is
* specified, then the default pool uses a factory supplying
* threads that have no {@link Permissions} enabled.
* The system class loader is used to load these classes.
* Upon any error in establishing these settings, default parameters
* are used. It is possible to disable or limit the use of threads in
......@@ -501,6 +507,16 @@ public class ForkJoinPool extends AbstractExecutorService {
* task status checks) in inapplicable cases amounts to an odd
* form of limited spin-wait before blocking in ForkJoinTask.join.
*
* As a more appropriate default in managed environments, unless
* overridden by system properties, we use workers of subclass
* InnocuousForkJoinWorkerThread when there is a SecurityManager
* present. These workers have no permissions set, do not belong
* to any user-defined ThreadGroup, and erase all ThreadLocals
* after executing any top-level task (see WorkQueue.runTask). The
* associated mechanics (mainly in ForkJoinWorkerThread) may be
* JVM-dependent and must access particular Thread class fields to
* achieve this effect.
*
* Style notes
* ===========
*
......@@ -882,6 +898,7 @@ public class ForkJoinPool extends AbstractExecutorService {
*/
final void runTask(ForkJoinTask<?> task) {
if ((currentSteal = task) != null) {
ForkJoinWorkerThread thread;
task.doExec();
ForkJoinTask<?>[] a = array;
int md = mode;
......@@ -899,6 +916,8 @@ public class ForkJoinPool extends AbstractExecutorService {
t.doExec();
}
}
if ((thread = owner) != null) // no need to do in finally clause
thread.afterTopLevelExec();
}
}
......@@ -1155,7 +1174,7 @@ public class ForkJoinPool extends AbstractExecutorService {
* Increment for seed generators. See class ThreadLocal for
* explanation.
*/
private static final int SEED_INCREMENT = 0x61c88647;
private static final int SEED_INCREMENT = 0x9e3779b9;
/*
* Bits and masks for control variables
......@@ -2084,12 +2103,10 @@ public class ForkJoinPool extends AbstractExecutorService {
((c & ~AC_MASK) |
((c & AC_MASK) + AC_UNIT))));
}
if ((b = q.base) - q.top < 0 && (t = q.pollAt(b)) != null) {
(w.currentSteal = t).doExec();
w.currentSteal = ps;
}
if ((b = q.base) - q.top < 0 && (t = q.pollAt(b)) != null)
w.runTask(t);
}
else if (active) { // decrement active count without queuing
else if (active) { // decrement active count without queuing
long nc = ((c = ctl) & ~AC_MASK) | ((c & AC_MASK) - AC_UNIT);
if ((int)(nc >> AC_SHIFT) + parallelism == 0)
break; // bypass decrement-then-increment
......@@ -3282,8 +3299,7 @@ public class ForkJoinPool extends AbstractExecutorService {
*/
private static ForkJoinPool makeCommonPool() {
int parallelism = -1;
ForkJoinWorkerThreadFactory factory
= defaultForkJoinWorkerThreadFactory;
ForkJoinWorkerThreadFactory factory = null;
UncaughtExceptionHandler handler = null;
try { // ignore exceptions in accessing/parsing properties
String pp = System.getProperty
......@@ -3302,7 +3318,12 @@ public class ForkJoinPool extends AbstractExecutorService {
getSystemClassLoader().loadClass(hp).newInstance());
} catch (Exception ignore) {
}
if (factory == null) {
if (System.getSecurityManager() == null)
factory = defaultForkJoinWorkerThreadFactory;
else // use security-managed default
factory = new InnocuousForkJoinWorkerThreadFactory();
}
if (parallelism < 0 && // default 1 less than #cores
(parallelism = Runtime.getRuntime().availableProcessors() - 1) <= 0)
parallelism = 1;
......@@ -3312,4 +3333,38 @@ public class ForkJoinPool extends AbstractExecutorService {
"ForkJoinPool.commonPool-worker-");
}
/**
* Factory for innocuous worker threads
*/
static final class InnocuousForkJoinWorkerThreadFactory
implements ForkJoinWorkerThreadFactory {
/**
* An ACC to restrict permissions for the factory itself.
* The constructed workers have no permissions set.
*/
private static final AccessControlContext innocuousAcc;
static {
Permissions innocuousPerms = new Permissions();
innocuousPerms.add(modifyThreadPermission);
innocuousPerms.add(new RuntimePermission(
"enableContextClassLoaderOverride"));
innocuousPerms.add(new RuntimePermission(
"modifyThreadGroup"));
innocuousAcc = new AccessControlContext(new ProtectionDomain[] {
new ProtectionDomain(null, innocuousPerms)
});
}
public final ForkJoinWorkerThread newThread(ForkJoinPool pool) {
return (ForkJoinWorkerThread.InnocuousForkJoinWorkerThread)
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<ForkJoinWorkerThread>() {
public ForkJoinWorkerThread run() {
return new ForkJoinWorkerThread.
InnocuousForkJoinWorkerThread(pool);
}}, innocuousAcc);
}
}
}
......@@ -35,6 +35,9 @@
package java.util.concurrent;
import java.security.AccessControlContext;
import java.security.ProtectionDomain;
/**
* A thread managed by a {@link ForkJoinPool}, which executes
* {@link ForkJoinTask}s.
......@@ -61,6 +64,10 @@ public class ForkJoinWorkerThread extends Thread {
* completes. This leads to a visibility race, that is tolerated
* by requiring that the workQueue field is only accessed by the
* owning thread.
*
* Support for (non-public) subclass InnocuousForkJoinWorkerThread
* requires that we break quite a lot of encapulation (via Unsafe)
* both here and in the subclass to access and set Thread fields.
*/
final ForkJoinPool pool; // the pool this thread works in
......@@ -79,6 +86,18 @@ public class ForkJoinWorkerThread extends Thread {
this.workQueue = pool.registerWorker(this);
}
/**
* Version for InnocuousForkJoinWorkerThread
*/
ForkJoinWorkerThread(ForkJoinPool pool, ThreadGroup threadGroup,
AccessControlContext acc) {
super(threadGroup, null, "aForkJoinWorkerThread");
U.putOrderedObject(this, INHERITEDACCESSCONTROLCONTEXT, acc);
eraseThreadLocals(); // clear before registering
this.pool = pool;
this.workQueue = pool.registerWorker(this);
}
/**
* Returns the pool hosting this thread.
*
......@@ -131,21 +150,128 @@ public class ForkJoinWorkerThread extends Thread {
* {@link ForkJoinTask}s.
*/
public void run() {
Throwable exception = null;
try {
onStart();
pool.runWorker(workQueue);
} catch (Throwable ex) {
exception = ex;
} finally {
if (workQueue.array == null) { // only run once
Throwable exception = null;
try {
onTermination(exception);
onStart();
pool.runWorker(workQueue);
} catch (Throwable ex) {
if (exception == null)
exception = ex;
exception = ex;
} finally {
pool.deregisterWorker(this, exception);
try {
onTermination(exception);
} catch (Throwable ex) {
if (exception == null)
exception = ex;
} finally {
pool.deregisterWorker(this, exception);
}
}
}
}
/**
* Erases ThreadLocals by nulling out Thread maps
*/
final void eraseThreadLocals() {
U.putObject(this, THREADLOCALS, null);
U.putObject(this, INHERITABLETHREADLOCALS, null);
}
/**
* Non-public hook method for InnocuousForkJoinWorkerThread
*/
void afterTopLevelExec() {
}
// Set up to allow setting thread fields in constructor
private static final sun.misc.Unsafe U;
private static final long THREADLOCALS;
private static final long INHERITABLETHREADLOCALS;
private static final long INHERITEDACCESSCONTROLCONTEXT;
static {
try {
U = sun.misc.Unsafe.getUnsafe();
Class<?> tk = Thread.class;
THREADLOCALS = U.objectFieldOffset
(tk.getDeclaredField("threadLocals"));
INHERITABLETHREADLOCALS = U.objectFieldOffset
(tk.getDeclaredField("inheritableThreadLocals"));
INHERITEDACCESSCONTROLCONTEXT = U.objectFieldOffset
(tk.getDeclaredField("inheritedAccessControlContext"));
} catch (Exception e) {
throw new Error(e);
}
}
/**
* A worker thread that has no permissions, is not a member of any
* user-defined ThreadGroup, and erases all ThreadLocals after
* running each top-level task.
*/
static final class InnocuousForkJoinWorkerThread extends ForkJoinWorkerThread {
/** The ThreadGroup for all InnocuousForkJoinWorkerThreads */
private static final ThreadGroup innocuousThreadGroup =
createThreadGroup();
/** An AccessControlContext supporting no privileges */
private static final AccessControlContext INNOCUOUS_ACC =
new AccessControlContext(
new ProtectionDomain[] {
new ProtectionDomain(null, null)
});
InnocuousForkJoinWorkerThread(ForkJoinPool pool) {
super(pool, innocuousThreadGroup, INNOCUOUS_ACC);
}
@Override // to erase ThreadLocals
void afterTopLevelExec() {
eraseThreadLocals();
}
@Override // to always report system loader
public ClassLoader getContextClassLoader() {
return ClassLoader.getSystemClassLoader();
}
@Override // to silently fail
public void setUncaughtExceptionHandler(UncaughtExceptionHandler x) { }
@Override // paranoically
public void setContextClassLoader(ClassLoader cl) {
throw new SecurityException("setContextClassLoader");
}
/**
* Returns a new group with the system ThreadGroup (the
* topmost, parentless group) as parent. Uses Unsafe to
* traverse Thread group and ThreadGroup parent fields.
*/
private static ThreadGroup createThreadGroup() {
try {
sun.misc.Unsafe u = sun.misc.Unsafe.getUnsafe();
Class<?> tk = Thread.class;
Class<?> gk = ThreadGroup.class;
long tg = u.objectFieldOffset(tk.getDeclaredField("group"));
long gp = u.objectFieldOffset(gk.getDeclaredField("parent"));
ThreadGroup group = (ThreadGroup)
u.getObject(Thread.currentThread(), tg);
while (group != null) {
ThreadGroup parent = (ThreadGroup)u.getObject(group, gp);
if (parent == null)
return new ThreadGroup(group,
"InnocuousForkJoinWorkerThreadGroup");
group = parent;
}
} catch (Exception e) {
throw new Error(e);
}
// fall through if null as cannot-happen safeguard
throw new Error("Cannot create ThreadGroup");
}
}
}
......@@ -329,7 +329,7 @@ public interface DoubleStream extends BaseStream<Double, DoubleStream> {
* <pre>{@code
* double result = identity;
* for (double element : this stream)
* result = accumulator.apply(result, element)
* result = accumulator.applyAsDouble(result, element)
* return result;
* }</pre>
*
......@@ -390,7 +390,7 @@ public interface DoubleStream extends BaseStream<Double, DoubleStream> {
* result = element;
* }
* else
* result = accumulator.apply(result, element);
* result = accumulator.applyAsDouble(result, element);
* }
* return foundAny ? OptionalDouble.of(result) : OptionalDouble.empty();
* }</pre>
......
......@@ -322,7 +322,7 @@ public interface IntStream extends BaseStream<Integer, IntStream> {
* <pre>{@code
* int result = identity;
* for (int element : this stream)
* result = accumulator.apply(result, element)
* result = accumulator.applyAsInt(result, element)
* return result;
* }</pre>
*
......@@ -383,7 +383,7 @@ public interface IntStream extends BaseStream<Integer, IntStream> {
* result = element;
* }
* else
* result = accumulator.apply(result, element);
* result = accumulator.applyAsInt(result, element);
* }
* return foundAny ? OptionalInt.of(result) : OptionalInt.empty();
* }</pre>
......
......@@ -327,7 +327,7 @@ public interface LongStream extends BaseStream<Long, LongStream> {
* <pre>{@code
* long result = identity;
* for (long element : this stream)
* result = accumulator.apply(result, element)
* result = accumulator.applyAsLong(result, element)
* return result;
* }</pre>
*
......@@ -388,7 +388,7 @@ public interface LongStream extends BaseStream<Long, LongStream> {
* result = element;
* }
* else
* result = accumulator.apply(result, element);
* result = accumulator.applyAsLong(result, element);
* }
* return foundAny ? OptionalLong.of(result) : OptionalLong.empty();
* }</pre>
......
......@@ -54,7 +54,7 @@ public final class StreamSupport {
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #stream(java.util.function.Supplier, int, boolean)} should be used
* to reduce the scope of potential interference with the source. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param <T> the type of stream elements
......@@ -89,7 +89,7 @@ public final class StreamSupport {
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param <T> the type of stream elements
......@@ -125,7 +125,7 @@ public final class StreamSupport {
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #intStream(java.util.function.Supplier, int, boolean)} should be
* used to reduce the scope of potential interference with the source. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param spliterator a {@code Spliterator.OfInt} describing the stream elements
......@@ -158,7 +158,7 @@ public final class StreamSupport {
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param supplier a {@code Supplier} of a {@code Spliterator.OfInt}
......@@ -192,7 +192,7 @@ public final class StreamSupport {
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #longStream(java.util.function.Supplier, int, boolean)} should be
* used to reduce the scope of potential interference with the source. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param spliterator a {@code Spliterator.OfLong} describing the stream elements
......@@ -226,7 +226,7 @@ public final class StreamSupport {
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param supplier a {@code Supplier} of a {@code Spliterator.OfLong}
......@@ -260,7 +260,7 @@ public final class StreamSupport {
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #doubleStream(java.util.function.Supplier, int, boolean)} should
* be used to reduce the scope of potential interference with the source. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param spliterator A {@code Spliterator.OfDouble} describing the stream elements
......@@ -294,7 +294,7 @@ public final class StreamSupport {
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
* <a href="package-summary.html#Non-Interference">Non-Interference</a> for
* <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param supplier A {@code Supplier} of a {@code Spliterator.OfDouble}
......
......@@ -206,7 +206,7 @@
* as {@link java.util.function.Function}, and are often lambda expressions or
* method references.
*
* <h3><a name="Non-Interference">Non-interference</a></h3>
* <h3><a name="NonInterference">Non-interference</a></h3>
*
* Streams enable you to execute possibly-parallel aggregate operations over a
* variety of data sources, including even non-thread-safe collections such as
......@@ -729,7 +729,7 @@
* modifications of the data source prior to commencement of the terminal
* operation (provided the behavioral parameters to the stream operations meet
* the required criteria for non-interference and statelessness). See
* <a href="package-summary.html#Non-Interference">Non-Interference</a>
* <a href="package-summary.html#NonInterference">Non-Interference</a>
* for more details.
*
* @since 1.8
......
......@@ -162,6 +162,15 @@ public class Main implements sun.rmi.rmic.Constants {
return false;
}
if ((flags & F_WARNINGS) != 0) {
for (Generator g : generators) {
if (g instanceof RMIGenerator) {
output(getText("rmic.jrmp.stubs.deprecated", program));
break;
}
}
}
return doCompile();
}
......
#
#
# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
......@@ -76,10 +76,10 @@ rmic.usage=Usage: {0} <options> <class names>\
\nwhere <options> includes:\
\n -keep Do not delete intermediate generated source files\
\n -keepgenerated (same as "-keep")\
\n -v1.1 Create stubs/skeletons for 1.1 stub protocol version\
\n -v1.1 Create stubs/skeletons for 1.1 stub protocol version (deprecated)\
\n -vcompat Create stubs/skeletons compatible with both\
\n 1.1 and 1.2 stub protocol versions\
\n -v1.2 (default) Create stubs for 1.2 stub protocol version only\
\n 1.1 and 1.2 stub protocol versions (deprecated)\
\n -v1.2 (default) Create stubs for 1.2 stub protocol version only (deprecated)\
\n -iiop Create stubs for IIOP. When present, <options> also includes:\
\n\
\n -always Create stubs even when they appear current\
......@@ -154,6 +154,12 @@ warn.rmic.tie.found=\
An IIOP "tie" exists for class {0}:\
\n {1}\
\nIf you use PortableRemoteObject.exportObject, you should remove this file; otherwise, your server object will be exported to IIOP rather than to JRMP.
rmic.jrmp.stubs.deprecated=\
Warning: generation and use of skeletons and static stubs for JRMP\
\nis deprecated. Skeletons are unnecessary, and static stubs have\
\nbeen superseded by dynamically generated stubs. Users are\
\nencouraged to migrate away from using {0} to generate skeletons and static\
\nstubs. See the documentation for java.rmi.server.UnicastRemoteObject.
#
# RMI-IIOP Messages
......
......@@ -75,6 +75,25 @@ public class DistributionPointFetcher {
Set<TrustAnchor> trustAnchors,
Date validity)
throws CertStoreException
{
return getCRLs(selector, signFlag, prevKey, null, provider, certStores,
reasonsMask, trustAnchors, validity);
}
/**
* Return the X509CRLs matching this selector. The selector must be
* an X509CRLSelector with certificateChecking set.
*/
public static Collection<X509CRL> getCRLs(X509CRLSelector selector,
boolean signFlag,
PublicKey prevKey,
X509Certificate prevCert,
String provider,
List<CertStore> certStores,
boolean[] reasonsMask,
Set<TrustAnchor> trustAnchors,
Date validity)
throws CertStoreException
{
X509Certificate cert = selector.getCertificateChecking();
if (cert == null) {
......@@ -101,7 +120,7 @@ public class DistributionPointFetcher {
t.hasNext() && !Arrays.equals(reasonsMask, ALL_REASONS); ) {
DistributionPoint point = t.next();
Collection<X509CRL> crls = getCRLs(selector, certImpl,
point, reasonsMask, signFlag, prevKey, provider,
point, reasonsMask, signFlag, prevKey, prevCert, provider,
certStores, trustAnchors, validity);
results.addAll(crls);
}
......@@ -125,9 +144,10 @@ public class DistributionPointFetcher {
*/
private static Collection<X509CRL> getCRLs(X509CRLSelector selector,
X509CertImpl certImpl, DistributionPoint point, boolean[] reasonsMask,
boolean signFlag, PublicKey prevKey, String provider,
List<CertStore> certStores, Set<TrustAnchor> trustAnchors,
Date validity) throws CertStoreException {
boolean signFlag, PublicKey prevKey, X509Certificate prevCert,
String provider, List<CertStore> certStores,
Set<TrustAnchor> trustAnchors, Date validity)
throws CertStoreException {
// check for full name
GeneralNames fullName = point.getFullName();
......@@ -188,8 +208,8 @@ public class DistributionPointFetcher {
// we check the issuer in verifyCRLs method
selector.setIssuerNames(null);
if (selector.match(crl) && verifyCRL(certImpl, point, crl,
reasonsMask, signFlag, prevKey, provider, trustAnchors,
certStores, validity)) {
reasonsMask, signFlag, prevKey, prevCert, provider,
trustAnchors, certStores, validity)) {
crls.add(crl);
}
} catch (IOException | CRLException e) {
......@@ -284,6 +304,8 @@ public class DistributionPointFetcher {
* @param reasonsMask the interim reasons mask
* @param signFlag true if prevKey can be used to verify the CRL
* @param prevKey the public key that verifies the certificate's signature
* @param prevCert the certificate whose public key verifies
* {@code certImpl}'s signature
* @param provider the Signature provider to use
* @param trustAnchors a {@code Set} of {@code TrustAnchor}s
* @param certStores a {@code List} of {@code CertStore}s to be used in
......@@ -294,7 +316,7 @@ public class DistributionPointFetcher {
*/
static boolean verifyCRL(X509CertImpl certImpl, DistributionPoint point,
X509CRL crl, boolean[] reasonsMask, boolean signFlag,
PublicKey prevKey, String provider,
PublicKey prevKey, X509Certificate prevCert, String provider,
Set<TrustAnchor> trustAnchors, List<CertStore> certStores,
Date validity) throws CRLException, IOException {
......@@ -591,18 +613,26 @@ public class DistributionPointFetcher {
// the subject criterion will be set by builder automatically.
}
// by far, we have validated the previous certificate, we can
// trust it during validating the CRL issuer.
// Except the performance improvement, another benefit is to break
// the dead loop while looking for the issuer back and forth
// By now, we have validated the previous certificate, so we can
// trust it during the validation of the CRL issuer.
// In addition to the performance improvement, another benefit is to
// break the dead loop while looking for the issuer back and forth
// between the delegated self-issued certificate and its issuer.
Set<TrustAnchor> newTrustAnchors = new HashSet<>(trustAnchors);
if (prevKey != null) {
// Add the previous certificate as a trust anchor.
X500Principal principal = certImpl.getIssuerX500Principal();
TrustAnchor temporary =
new TrustAnchor(principal, prevKey, null);
// If prevCert is not null, we want to construct a TrustAnchor
// using the cert object because when the certpath for the CRL
// is built later, the CertSelector will make comparisons with
// the TrustAnchor's trustedCert member rather than its pubKey.
TrustAnchor temporary;
if (prevCert != null) {
temporary = new TrustAnchor(prevCert, null);
} else {
X500Principal principal = certImpl.getIssuerX500Principal();
temporary = new TrustAnchor(principal, prevKey, null);
}
newTrustAnchors.add(temporary);
}
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -47,9 +47,7 @@ import sun.security.util.Debug;
import sun.security.x509.AccessDescription;
import sun.security.x509.AuthorityInfoAccessExtension;
import static sun.security.x509.PKIXExtensions.*;
import sun.security.x509.PolicyMappingsExtension;
import sun.security.x509.X500Name;
import sun.security.x509.X509CertImpl;
import sun.security.x509.AuthorityKeyIdentifierExtension;
/**
......@@ -672,32 +670,16 @@ class ForwardBuilder extends Builder {
currState.untrustedChecker.check(cert, Collections.<String>emptySet());
/*
* check for looping - abort a loop if
* ((we encounter the same certificate twice) AND
* ((policyMappingInhibited = true) OR (no policy mapping
* extensions can be found between the occurrences of the same
* certificate)))
* check for looping - abort a loop if we encounter the same
* certificate twice
*/
if (certPathList != null) {
boolean policyMappingFound = false;
for (X509Certificate cpListCert : certPathList) {
X509CertImpl cpListCertImpl = X509CertImpl.toImpl(cpListCert);
PolicyMappingsExtension policyMappingsExt
= cpListCertImpl.getPolicyMappingsExtension();
if (policyMappingsExt != null) {
policyMappingFound = true;
}
if (debug != null) {
debug.println("policyMappingFound = " + policyMappingFound);
}
if (cert.equals(cpListCert)) {
if ((buildParams.policyMappingInhibited()) ||
(!policyMappingFound)) {
if (debug != null) {
debug.println("loop detected!!");
}
throw new CertPathValidatorException("loop detected");
if (debug != null) {
debug.println("loop detected!!");
}
throw new CertPathValidatorException("loop detected");
}
}
}
......
......@@ -427,9 +427,14 @@ public final class OCSPResponse {
if (signerCert == null) {
// Add the Issuing CA cert and/or Trusted Responder cert to the list
// of certs from the OCSP response
certs.add((X509CertImpl) issuerCert);
if (responderCert != null) {
certs.add((X509CertImpl) responderCert);
try {
certs.add(X509CertImpl.toImpl(issuerCert));
if (responderCert != null) {
certs.add(X509CertImpl.toImpl(responderCert));
}
} catch (CertificateException ce) {
throw new CertPathValidatorException(
"Invalid issuer or trusted responder certificate", ce);
}
if (responderName != null) {
......
......@@ -456,12 +456,13 @@ class RevocationChecker extends PKIXRevocationChecker {
PublicKey pubKey, boolean signFlag)
throws CertPathValidatorException
{
checkCRLs(cert, pubKey, signFlag, true,
checkCRLs(cert, pubKey, null, signFlag, true,
stackedCerts, params.trustAnchors());
}
private void checkCRLs(X509Certificate cert, PublicKey prevKey,
boolean signFlag, boolean allowSeparateKey,
X509Certificate prevCert, boolean signFlag,
boolean allowSeparateKey,
Set<X509Certificate> stackedCerts,
Set<TrustAnchor> anchors)
throws CertPathValidatorException
......@@ -543,7 +544,7 @@ class RevocationChecker extends PKIXRevocationChecker {
try {
if (crlDP) {
approvedCRLs.addAll(DistributionPointFetcher.getCRLs(
sel, signFlag, prevKey,
sel, signFlag, prevKey, prevCert,
params.sigProvider(), certStores,
reasonsMask, anchors, null));
}
......@@ -825,7 +826,7 @@ class RevocationChecker extends PKIXRevocationChecker {
for (X509CRL crl : crls) {
if (DistributionPointFetcher.verifyCRL(
certImpl, point, crl, reasonsMask, signFlag,
prevKey, params.sigProvider(), anchors,
prevKey, null, params.sigProvider(), anchors,
certStores, params.date()))
{
results.add(crl);
......@@ -1043,7 +1044,7 @@ class RevocationChecker extends PKIXRevocationChecker {
+ " index " + i + " checking "
+ cert);
}
checkCRLs(cert, prevKey2, signFlag, true,
checkCRLs(cert, prevKey2, null, signFlag, true,
stackedCerts, newAnchors);
signFlag = certCanSignCrl(cert);
prevKey2 = cert.getPublicKey();
......@@ -1058,13 +1059,14 @@ class RevocationChecker extends PKIXRevocationChecker {
debug.println("RevocationChecker.buildToNewKey()" +
" got key " + cpbr.getPublicKey());
}
// Now check revocation on the current cert using that key.
// Now check revocation on the current cert using that key and
// the corresponding certificate.
// If it doesn't check out, try to find a different key.
// And if we can't find a key, then return false.
PublicKey newKey = cpbr.getPublicKey();
try {
checkCRLs(currCert, newKey, true, false, null,
params.trustAnchors());
checkCRLs(currCert, newKey, (X509Certificate) cpList.get(0),
true, false, null, params.trustAnchors());
// If that passed, the cert is OK!
return;
} catch (CertPathValidatorException cpve) {
......
......@@ -30,6 +30,7 @@ import java.security.GeneralSecurityException;
import java.security.InvalidAlgorithmParameterException;
import java.security.PublicKey;
import java.security.cert.*;
import java.security.cert.CertPathValidatorException.BasicReason;
import java.security.cert.PKIXReason;
import java.util.ArrayList;
import java.util.Collection;
......@@ -49,7 +50,7 @@ import sun.security.util.Debug;
* This class is able to build certification paths in either the forward
* or reverse directions.
*
* <p> If successful, it returns a certification path which has succesfully
* <p> If successful, it returns a certification path which has successfully
* satisfied all the constraints and requirements specified in the
* PKIXBuilderParameters object and has been validated according to the PKIX
* path validation algorithm defined in RFC 3280.
......@@ -510,6 +511,12 @@ public final class SunCertPathBuilder extends CertPathBuilderSpi {
debug.println
("SunCertPathBuilder.depthFirstSearchForward(): " +
"final verification failed: " + cpve);
// If the target cert itself is revoked, we
// cannot trust it. We can bail out here.
if (buildParams.targetCertConstraints().match(currCert)
&& cpve.getReason() == BasicReason.REVOKED) {
throw cpve;
}
vertex.setThrowable(cpve);
continue vertices;
}
......
/*
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -80,8 +80,8 @@ public final class ProtocolVersion implements Comparable<ProtocolVersion> {
// maximum version we implement (TLS 1.2)
final static ProtocolVersion MAX = TLS12;
// ProtocolVersion to use by default (TLS 1.0)
final static ProtocolVersion DEFAULT = TLS10;
// ProtocolVersion to use by default (TLS 1.2)
final static ProtocolVersion DEFAULT = TLS12;
// Default version for hello messages (SSLv2Hello)
final static ProtocolVersion DEFAULT_HELLO = FIPS ? TLS10 : SSL30;
......
/*
* Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -36,6 +36,7 @@ import java.security.cert.Certificate;
import javax.net.ssl.*;
import sun.security.provider.certpath.AlgorithmChecker;
import sun.security.action.GetPropertyAction;
public abstract class SSLContextImpl extends SSLContextSpi {
......@@ -421,22 +422,21 @@ public abstract class SSLContextImpl extends SSLContextSpi {
*/
/*
* The conservative SSLContext implementation for TLS, SSL, SSLv3 and
* TLS10 algorithm.
* The base abstract SSLContext implementation.
*
* This is a super class of DefaultSSLContext and TLS10Context.
* This abstract class encapsulates supported and the default server
* SSL parameters.
*
* @see SSLContext
*/
private static class ConservativeSSLContext extends SSLContextImpl {
private abstract static class AbstractSSLContext extends SSLContextImpl {
// parameters
private static SSLParameters defaultServerSSLParams;
private static SSLParameters defaultClientSSLParams;
private static SSLParameters supportedSSLParams;
private final static SSLParameters defaultServerSSLParams;
private final static SSLParameters supportedSSLParams;
static {
supportedSSLParams = new SSLParameters();
if (SunJSSE.isFIPS()) {
supportedSSLParams = new SSLParameters();
supportedSSLParams.setProtocols(new String[] {
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
......@@ -444,14 +444,7 @@ public abstract class SSLContextImpl extends SSLContextSpi {
});
defaultServerSSLParams = supportedSSLParams;
defaultClientSSLParams = new SSLParameters();
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.TLS10.name
});
} else {
supportedSSLParams = new SSLParameters();
supportedSSLParams.setProtocols(new String[] {
ProtocolVersion.SSL20Hello.name,
ProtocolVersion.SSL30.name,
......@@ -461,8 +454,36 @@ public abstract class SSLContextImpl extends SSLContextSpi {
});
defaultServerSSLParams = supportedSSLParams;
}
}
@Override
SSLParameters getDefaultServerSSLParams() {
return defaultServerSSLParams;
}
defaultClientSSLParams = new SSLParameters();
@Override
SSLParameters getSupportedSSLParams() {
return supportedSSLParams;
}
}
/*
* The SSLContext implementation for SSLv3 and TLS10 algorithm
*
* @see SSLContext
*/
public static final class TLS10Context extends AbstractSSLContext {
private final static SSLParameters defaultClientSSLParams;
static {
defaultClientSSLParams = new SSLParameters();
if (SunJSSE.isFIPS()) {
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.TLS10.name
});
} else {
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.SSL30.name,
ProtocolVersion.TLS10.name
......@@ -471,27 +492,176 @@ public abstract class SSLContextImpl extends SSLContextSpi {
}
@Override
SSLParameters getDefaultServerSSLParams() {
return defaultServerSSLParams;
SSLParameters getDefaultClientSSLParams() {
return defaultClientSSLParams;
}
}
/*
* The SSLContext implementation for TLS11 algorithm
*
* @see SSLContext
*/
public static final class TLS11Context extends AbstractSSLContext {
private final static SSLParameters defaultClientSSLParams;
static {
defaultClientSSLParams = new SSLParameters();
if (SunJSSE.isFIPS()) {
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name
});
} else {
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.SSL30.name,
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name
});
}
}
@Override
SSLParameters getDefaultClientSSLParams() {
return defaultClientSSLParams;
}
}
/*
* The SSLContext implementation for TLS12 algorithm
*
* @see SSLContext
*/
public static final class TLS12Context extends AbstractSSLContext {
private final static SSLParameters defaultClientSSLParams;
static {
defaultClientSSLParams = new SSLParameters();
if (SunJSSE.isFIPS()) {
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
ProtocolVersion.TLS12.name
});
} else {
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.SSL30.name,
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
ProtocolVersion.TLS12.name
});
}
}
@Override
SSLParameters getDefaultClientSSLParams() {
return defaultClientSSLParams;
}
}
/*
* The SSLContext implementation for customized TLS protocols
*
* @see SSLContext
*/
private static class CustomizedSSLContext extends AbstractSSLContext {
private final static String PROPERTY_NAME = "jdk.tls.client.protocols";
private final static SSLParameters defaultClientSSLParams;
private static IllegalArgumentException reservedException = null;
// Don't want a java.lang.LinkageError for illegal system property.
//
// Please don't throw exception in this static block. Otherwise,
// java.lang.LinkageError may be thrown during the instantiation of
// the provider service. Instead, let's handle the initialization
// exception in constructor.
static {
String property = AccessController.doPrivileged(
new GetPropertyAction(PROPERTY_NAME));
defaultClientSSLParams = new SSLParameters();
if (property == null || property.length() == 0) {
// the default enabled client TLS protocols
if (SunJSSE.isFIPS()) {
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
ProtocolVersion.TLS12.name
});
} else {
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.SSL30.name,
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
ProtocolVersion.TLS12.name
});
}
} else {
// remove double quote marks from beginning/end of the property
if (property.charAt(0) == '"' &&
property.charAt(property.length() - 1) == '"') {
property = property.substring(1, property.length() - 1);
}
String[] protocols = property.split(",");
for (int i = 0; i < protocols.length; i++) {
protocols[i] = protocols[i].trim();
// Is it a supported protocol name?
try {
ProtocolVersion.valueOf(protocols[i]);
} catch (IllegalArgumentException iae) {
reservedException = new IllegalArgumentException(
PROPERTY_NAME + ": " + protocols[i] +
" is not a standard SSL protocol name", iae);
}
}
if ((reservedException == null) && SunJSSE.isFIPS()) {
for (String protocol : protocols) {
if (ProtocolVersion.SSL20Hello.name.equals(protocol) ||
ProtocolVersion.SSL30.name.equals(protocol)) {
reservedException = new IllegalArgumentException(
PROPERTY_NAME + ": " + protocol +
" is not FIPS compliant");
}
}
}
if (reservedException == null) {
defaultClientSSLParams.setProtocols(protocols);
}
}
}
protected CustomizedSSLContext() {
if (reservedException != null) {
throw reservedException;
}
}
@Override
SSLParameters getSupportedSSLParams() {
return supportedSSLParams;
SSLParameters getDefaultClientSSLParams() {
return defaultClientSSLParams;
}
}
/*
* The SSLContext implementation for default algorithm
* The SSLContext implementation for default "TLS" algorithm
*
* @see SSLContext
*/
public static final class TLSContext extends CustomizedSSLContext {
// use the default constructor and methods
}
/*
* The SSLContext implementation for default "Default" algorithm
*
* @see SSLContext
*/
public static final class DefaultSSLContext extends ConservativeSSLContext {
public static final class DefaultSSLContext extends CustomizedSSLContext {
private static final String NONE = "NONE";
private static final String P11KEYSTORE = "PKCS11";
......@@ -652,147 +822,6 @@ public abstract class SSLContextImpl extends SSLContextSpi {
}
}
/*
* The SSLContext implementation for TLS, SSL, SSLv3 and TLS10 algorithm
*
* @see SSLContext
*/
public static final class TLS10Context extends ConservativeSSLContext {
// use the default constructor and methods
}
/*
* The SSLContext implementation for TLS11 algorithm
*
* @see SSLContext
*/
public static final class TLS11Context extends SSLContextImpl {
// parameters
private static SSLParameters defaultServerSSLParams;
private static SSLParameters defaultClientSSLParams;
private static SSLParameters supportedSSLParams;
static {
if (SunJSSE.isFIPS()) {
supportedSSLParams = new SSLParameters();
supportedSSLParams.setProtocols(new String[] {
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
ProtocolVersion.TLS12.name
});
defaultServerSSLParams = supportedSSLParams;
defaultClientSSLParams = new SSLParameters();
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name
});
} else {
supportedSSLParams = new SSLParameters();
supportedSSLParams.setProtocols(new String[] {
ProtocolVersion.SSL20Hello.name,
ProtocolVersion.SSL30.name,
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
ProtocolVersion.TLS12.name
});
defaultServerSSLParams = supportedSSLParams;
defaultClientSSLParams = new SSLParameters();
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.SSL30.name,
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name
});
}
}
@Override
SSLParameters getDefaultServerSSLParams() {
return defaultServerSSLParams;
}
@Override
SSLParameters getDefaultClientSSLParams() {
return defaultClientSSLParams;
}
@Override
SSLParameters getSupportedSSLParams() {
return supportedSSLParams;
}
}
/*
* The SSLContext implementation for TLS12 algorithm
*
* @see SSLContext
*/
public static final class TLS12Context extends SSLContextImpl {
// parameters
private static SSLParameters defaultServerSSLParams;
private static SSLParameters defaultClientSSLParams;
private static SSLParameters supportedSSLParams;
static {
if (SunJSSE.isFIPS()) {
supportedSSLParams = new SSLParameters();
supportedSSLParams.setProtocols(new String[] {
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
ProtocolVersion.TLS12.name
});
defaultServerSSLParams = supportedSSLParams;
defaultClientSSLParams = new SSLParameters();
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
ProtocolVersion.TLS12.name
});
} else {
supportedSSLParams = new SSLParameters();
supportedSSLParams.setProtocols(new String[] {
ProtocolVersion.SSL20Hello.name,
ProtocolVersion.SSL30.name,
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
ProtocolVersion.TLS12.name
});
defaultServerSSLParams = supportedSSLParams;
defaultClientSSLParams = new SSLParameters();
defaultClientSSLParams.setProtocols(new String[] {
ProtocolVersion.SSL30.name,
ProtocolVersion.TLS10.name,
ProtocolVersion.TLS11.name,
ProtocolVersion.TLS12.name
});
}
}
@Override
SSLParameters getDefaultServerSSLParams() {
return defaultServerSSLParams;
}
@Override
SSLParameters getDefaultClientSSLParams() {
return defaultClientSSLParams;
}
@Override
SSLParameters getSupportedSSLParams() {
return supportedSSLParams;
}
}
}
......
......@@ -60,7 +60,8 @@ public abstract class SunJSSE extends java.security.Provider {
private static final long serialVersionUID = 3231825739635378733L;
private static String info = "Sun JSSE provider" +
"(PKCS12, SunX509 key/trust factories, SSLv3, TLSv1)";
"(PKCS12, SunX509/PKIX key/trust factories, " +
"SSLv3/TLSv1/TLSv1.1/TLSv1.2)";
private static String fipsInfo =
"Sun JSSE provider (FIPS mode, crypto provider ";
......@@ -208,16 +209,17 @@ public abstract class SunJSSE extends java.security.Provider {
put("SSLContext.TLSv1",
"sun.security.ssl.SSLContextImpl$TLS10Context");
put("Alg.Alias.SSLContext.TLS", "TLSv1");
if (isfips == false) {
put("Alg.Alias.SSLContext.SSL", "TLSv1");
put("Alg.Alias.SSLContext.SSLv3", "TLSv1");
}
put("SSLContext.TLSv1.1",
"sun.security.ssl.SSLContextImpl$TLS11Context");
put("SSLContext.TLSv1.2",
"sun.security.ssl.SSLContextImpl$TLS12Context");
put("SSLContext.TLS",
"sun.security.ssl.SSLContextImpl$TLSContext");
if (isfips == false) {
put("Alg.Alias.SSLContext.SSL", "TLS");
put("Alg.Alias.SSLContext.SSLv3", "TLSv1");
}
put("SSLContext.Default",
"sun.security.ssl.SSLContextImpl$DefaultSSLContext");
......
......@@ -53,9 +53,9 @@ public class Resources_zh_CN extends java.util.ListResourceBundle {
{"If.keystore.is.not.password.protected.then.storepass.and.keypass.must.not.be.specified",
"\u5982\u679C\u5BC6\u94A5\u5E93\u672A\u53D7\u53E3\u4EE4\u4FDD\u62A4, \u5219\u4E0D\u80FD\u6307\u5B9A -storepass \u548C -keypass"},
{"Usage.jarsigner.options.jar.file.alias",
"\u7528\u6CD5: jarsigner [\u9009\u9879] jar \u6587\u4EF6\u522B\u540D"},
"\u7528\u6CD5: jarsigner [\u9009\u9879] jar-file \u522B\u540D"},
{".jarsigner.verify.options.jar.file.alias.",
" jarsigner -verify [options] jar-file [alias...]"},
" jarsigner -verify [\u9009\u9879] jar-file [\u522B\u540D...]"},
{".keystore.url.keystore.location",
"[-keystore <url>] \u5BC6\u94A5\u5E93\u4F4D\u7F6E"},
{".storepass.password.password.for.keystore.integrity",
......@@ -65,7 +65,7 @@ public class Resources_zh_CN extends java.util.ListResourceBundle {
{".keypass.password.password.for.private.key.if.different.",
"[-keypass <\u53E3\u4EE4>] \u79C1\u6709\u5BC6\u94A5\u7684\u53E3\u4EE4 (\u5982\u679C\u4E0D\u540C)"},
{".certchain.file.name.of.alternative.certchain.file",
"[-certchain <file>] \u66FF\u4EE3 certchain \u6587\u4EF6\u7684\u540D\u79F0"},
"[-certchain <\u6587\u4EF6>] \u66FF\u4EE3 certchain \u6587\u4EF6\u7684\u540D\u79F0"},
{".sigfile.file.name.of.SF.DSA.file",
"[-sigfile <\u6587\u4EF6>] .SF/.DSA \u6587\u4EF6\u7684\u540D\u79F0"},
{".signedjar.file.name.of.signed.JAR.file",
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -65,10 +65,16 @@ public class Resources_de extends java.util.ListResourceBundle {
{"Generates.certificate.from.a.certificate.request",
"Generiert ein Zertifikat aus einer Zertifikatanforderung"}, //-gencert
{"Generates.CRL", "Generiert eine CRL"}, //-gencrl
{"Generated.keyAlgName.secret.key",
"{0} Secret Key generiert"}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
"{0}-Bit {1} Secret Key generiert"}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"Importiert Eintr\u00E4ge aus einer Identity-Datenbank im JDK 1.1.x-Stil"}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
"Importiert ein Zertifikat oder eine Zertifikatkette"}, //-importcert
{"Imports.a.password",
"Importiert ein Kennwort"}, //-importpass
{"Imports.one.or.all.entries.from.another.keystore",
"Importiert einen oder alle Eintr\u00E4ge aus einem anderen Keystore"}, //-importkeystore
{"Clones.a.key.entry",
......@@ -220,6 +226,8 @@ public class Resources_de extends java.util.ListResourceBundle {
{"Must.specify.alias", "Sie m\u00FCssen einen Alias angeben"},
{"Keystore.password.must.be.at.least.6.characters",
"Keystore-Kennwort muss mindestens sechs Zeichen lang sein"},
{"Enter.the.password.to.be.stored.",
"Geben Sie das Kennwort ein, das gespeichert werden soll: "},
{"Enter.keystore.password.", "Keystore-Kennwort eingeben: "},
{"Enter.source.keystore.password.", "Quell-Keystore-Kennwort eingeben: "},
{"Enter.destination.keystore.password.", "Ziel-Keystore-Kennwort eingeben: "},
......@@ -328,6 +336,7 @@ public class Resources_de extends java.util.ListResourceBundle {
{"New.prompt.", "Neues {0}: "},
{"Passwords.must.differ", "Kennw\u00F6rter m\u00FCssen sich unterscheiden"},
{"Re.enter.new.prompt.", "Neues {0} erneut eingeben: "},
{"Re.enter.passpword.", "Geben Sie das Kennwort erneut ein: "},
{"Re.enter.new.password.", "Neues Kennwort erneut eingeben: "},
{"They.don.t.match.Try.again", "Keine \u00DCbereinstimmung. Wiederholen Sie den Vorgang"},
{"Enter.prompt.alias.name.", "{0}-Aliasnamen eingeben: "},
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -65,10 +65,16 @@ public class Resources_es extends java.util.ListResourceBundle {
{"Generates.certificate.from.a.certificate.request",
"Genera un certificado a partir de una solicitud de certificado"}, //-gencert
{"Generates.CRL", "Genera CRL"}, //-gencrl
{"Generated.keyAlgName.secret.key",
"Clave secreta {0} generada"}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
"Clave secreta {1} de {0} bits generada"}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"Importa entradas desde una base de datos de identidades JDK 1.1.x-style"}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
"Importa un certificado o una cadena de certificados"}, //-importcert
{"Imports.a.password",
"Importa una contrase\u00F1a"}, //-importpass
{"Imports.one.or.all.entries.from.another.keystore",
"Importa una o todas las entradas desde otro almac\u00E9n de claves"}, //-importkeystore
{"Clones.a.key.entry",
......@@ -220,6 +226,8 @@ public class Resources_es extends java.util.ListResourceBundle {
{"Must.specify.alias", "Se debe especificar un alias"},
{"Keystore.password.must.be.at.least.6.characters",
"La contrase\u00F1a del almac\u00E9n de claves debe tener al menos 6 caracteres"},
{"Enter.the.password.to.be.stored.",
"Introduzca la contrase\u00F1a que se va a almacenar: "},
{"Enter.keystore.password.", "Introduzca la contrase\u00F1a del almac\u00E9n de claves: "},
{"Enter.source.keystore.password.", "Introduzca la contrase\u00F1a de almac\u00E9n de claves de origen: "},
{"Enter.destination.keystore.password.", "Introduzca la contrase\u00F1a de almac\u00E9n de claves de destino: "},
......@@ -328,6 +336,7 @@ public class Resources_es extends java.util.ListResourceBundle {
{"New.prompt.", "Nuevo {0}: "},
{"Passwords.must.differ", "Las contrase\u00F1as deben ser distintas"},
{"Re.enter.new.prompt.", "Vuelva a escribir el nuevo {0}: "},
{"Re.enter.passpword.", "Vuelva a introducir la contrase\u00F1a: "},
{"Re.enter.new.password.", "Volver a escribir la contrase\u00F1a nueva: "},
{"They.don.t.match.Try.again", "No coinciden. Int\u00E9ntelo de nuevo"},
{"Enter.prompt.alias.name.", "Escriba el nombre de alias de {0}: "},
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -65,10 +65,16 @@ public class Resources_fr extends java.util.ListResourceBundle {
{"Generates.certificate.from.a.certificate.request",
"G\u00E9n\u00E8re le certificat \u00E0 partir d'une demande de certificat"}, //-gencert
{"Generates.CRL", "G\u00E9n\u00E8re la liste des certificats r\u00E9voqu\u00E9s (CRL)"}, //-gencrl
{"Generated.keyAlgName.secret.key",
"Cl\u00E9 secr\u00E8te {0} g\u00E9n\u00E9r\u00E9e"}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
"Cl\u00E9 secr\u00E8te {0} bits {1} g\u00E9n\u00E9r\u00E9e"}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"Importe les entr\u00E9es \u00E0 partir d'une base de donn\u00E9es d'identit\u00E9s de type JDK 1.1.x"}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
"Importe un certificat ou une cha\u00EEne de certificat"}, //-importcert
{"Imports.a.password",
"Importe un mot de passe"}, //-importpass
{"Imports.one.or.all.entries.from.another.keystore",
"Importe une entr\u00E9e ou la totalit\u00E9 des entr\u00E9es depuis un autre fichier de cl\u00E9s"}, //-importkeystore
{"Clones.a.key.entry",
......@@ -220,6 +226,8 @@ public class Resources_fr extends java.util.ListResourceBundle {
{"Must.specify.alias", "L'alias doit \u00EAtre sp\u00E9cifi\u00E9"},
{"Keystore.password.must.be.at.least.6.characters",
"Un mot de passe de fichier de cl\u00E9s doit comporter au moins 6 caract\u00E8res"},
{"Enter.the.password.to.be.stored.",
"Saisissez le mot de passe \u00E0 stocker : "},
{"Enter.keystore.password.", "Entrez le mot de passe du fichier de cl\u00E9s : "},
{"Enter.source.keystore.password.", "Entrez le mot de passe du fichier de cl\u00E9s source\u00A0: "},
{"Enter.destination.keystore.password.", "Entrez le mot de passe du fichier de cl\u00E9s de destination\u00A0: "},
......@@ -328,6 +336,7 @@ public class Resources_fr extends java.util.ListResourceBundle {
{"New.prompt.", "Nouveau {0} : "},
{"Passwords.must.differ", "Les mots de passe doivent diff\u00E9rer"},
{"Re.enter.new.prompt.", "Indiquez encore le nouveau {0} : "},
{"Re.enter.passpword.", "R\u00E9p\u00E9tez le mot de passe : "},
{"Re.enter.new.password.", "Ressaisissez le nouveau mot de passe : "},
{"They.don.t.match.Try.again", "Ils sont diff\u00E9rents. R\u00E9essayez."},
{"Enter.prompt.alias.name.", "Indiquez le nom d''alias {0} : "},
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -65,10 +65,16 @@ public class Resources_it extends java.util.ListResourceBundle {
{"Generates.certificate.from.a.certificate.request",
"Genera un certificato da una richiesta di certificato"}, //-gencert
{"Generates.CRL", "Genera CRL"}, //-gencrl
{"Generated.keyAlgName.secret.key",
"Generata chiave segreta {0}"}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
"Generata chiave segreta {1} a {0} bit"}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"Importa le voci da un database delle identit\u00E0 di tipo JDK 1.1.x"}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
"Importa un certificato o una catena di certificati"}, //-importcert
{"Imports.a.password",
"Importa una password"}, //-importpass
{"Imports.one.or.all.entries.from.another.keystore",
"Importa una o tutte le voci da un altro keystore"}, //-importkeystore
{"Clones.a.key.entry",
......@@ -220,6 +226,8 @@ public class Resources_it extends java.util.ListResourceBundle {
{"Must.specify.alias", "\u00C8 necessario specificare l'alias"},
{"Keystore.password.must.be.at.least.6.characters",
"La password del keystore deve contenere almeno 6 caratteri"},
{"Enter.the.password.to.be.stored.",
"Immettere la password da memorizzare: "},
{"Enter.keystore.password.", "Immettere la password del keystore: "},
{"Enter.source.keystore.password.", "Immettere la password del keystore di origine: "},
{"Enter.destination.keystore.password.", "Immettere la password del keystore di destinazione: "},
......@@ -328,6 +336,7 @@ public class Resources_it extends java.util.ListResourceBundle {
{"New.prompt.", "Nuova {0}: "},
{"Passwords.must.differ", "Le password non devono coincidere"},
{"Re.enter.new.prompt.", "Reimmettere un nuovo valore per {0}: "},
{"Re.enter.passpword.", "Reimmettere la password: "},
{"Re.enter.new.password.", "Immettere nuovamente la nuova password: "},
{"They.don.t.match.Try.again", "Non corrispondono. Riprovare."},
{"Enter.prompt.alias.name.", "Immettere nome alias {0}: "},
......@@ -335,7 +344,7 @@ public class Resources_it extends java.util.ListResourceBundle {
"Immettere un nuovo nome alias\t(premere INVIO per annullare l'importazione della voce): "},
{"Enter.alias.name.", "Immettere nome alias: "},
{".RETURN.if.same.as.for.otherAlias.",
"\t(INVIO se corrisponde al nome di <{0}>"},
"\t(INVIO se corrisponde al nome di <{0}>)"},
{".PATTERN.printX509Cert",
"Proprietario: {0}\nAutorit\u00E0 emittente: {1}\nNumero di serie: {2}\nValido da: {3} a: {4}\nImpronte digitali certificato:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Nome algoritmo firma: {8}\n\t Versione: {9}"},
{"What.is.your.first.and.last.name.",
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -65,10 +65,16 @@ public class Resources_ja extends java.util.ListResourceBundle {
{"Generates.certificate.from.a.certificate.request",
"\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u304B\u3089\u8A3C\u660E\u66F8\u3092\u751F\u6210\u3057\u307E\u3059"}, //-gencert
{"Generates.CRL", "CRL\u3092\u751F\u6210\u3057\u307E\u3059"}, //-gencrl
{"Generated.keyAlgName.secret.key",
"{0}\u79D8\u5BC6\u9375\u3092\u751F\u6210\u3057\u307E\u3057\u305F"}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
"{0}\u30D3\u30C3\u30C8{1}\u79D8\u5BC6\u9375\u3092\u751F\u6210\u3057\u307E\u3057\u305F"}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"JDK 1.1.x-style\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u30FB\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30C8\u30EA\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
"\u8A3C\u660E\u66F8\u307E\u305F\u306F\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-importcert
{"Imports.a.password",
"\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-importpass
{"Imports.one.or.all.entries.from.another.keystore",
"\u5225\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u304B\u30891\u3064\u307E\u305F\u306F\u3059\u3079\u3066\u306E\u30A8\u30F3\u30C8\u30EA\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-importkeystore
{"Clones.a.key.entry",
......@@ -220,6 +226,8 @@ public class Resources_ja extends java.util.ListResourceBundle {
{"Must.specify.alias", "\u5225\u540D\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
{"Keystore.password.must.be.at.least.6.characters",
"\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F6\u6587\u5B57\u4EE5\u4E0A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
{"Enter.the.password.to.be.stored.",
"\u4FDD\u5B58\u3059\u308B\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
{"Enter.keystore.password.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
{"Enter.source.keystore.password.", "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
{"Enter.destination.keystore.password.", "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
......@@ -328,6 +336,7 @@ public class Resources_ja extends java.util.ListResourceBundle {
{"New.prompt.", "\u65B0\u898F{0}: "},
{"Passwords.must.differ", "\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u7570\u306A\u3063\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
{"Re.enter.new.prompt.", "\u65B0\u898F{0}\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
{"Re.enter.passpword.", "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
{"Re.enter.new.password.", "\u65B0\u898F\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
{"They.don.t.match.Try.again", "\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u3082\u3046\u4E00\u5EA6\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044"},
{"Enter.prompt.alias.name.", "{0}\u306E\u5225\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -65,10 +65,16 @@ public class Resources_ko extends java.util.ListResourceBundle {
{"Generates.certificate.from.a.certificate.request",
"\uC778\uC99D\uC11C \uC694\uCCAD\uC5D0\uC11C \uC778\uC99D\uC11C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-gencert
{"Generates.CRL", "CRL\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-gencrl
{"Generated.keyAlgName.secret.key",
"{0} \uBCF4\uC548 \uD0A4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
"{0}\uBE44\uD2B8 {1} \uBCF4\uC548 \uD0A4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"JDK 1.1.x \uC2A4\uD0C0\uC77C ID \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0\uC11C \uD56D\uBAA9\uC744 \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
"\uC778\uC99D\uC11C \uB610\uB294 \uC778\uC99D\uC11C \uCCB4\uC778\uC744 \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-importcert
{"Imports.a.password",
"\uBE44\uBC00\uBC88\uD638\uB97C \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-importpass
{"Imports.one.or.all.entries.from.another.keystore",
"\uB2E4\uB978 \uD0A4 \uC800\uC7A5\uC18C\uC5D0\uC11C \uD558\uB098 \uB610\uB294 \uBAA8\uB4E0 \uD56D\uBAA9\uC744 \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-importkeystore
{"Clones.a.key.entry",
......@@ -220,6 +226,8 @@ public class Resources_ko extends java.util.ListResourceBundle {
{"Must.specify.alias", "\uBCC4\uCE6D\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4."},
{"Keystore.password.must.be.at.least.6.characters",
"\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB294 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
{"Enter.the.password.to.be.stored.",
"\uC800\uC7A5\uD560 \uBE44\uBC00\uBC88\uD638 \uC785\uB825: "},
{"Enter.keystore.password.", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 \uC785\uB825: "},
{"Enter.source.keystore.password.", "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 \uC785\uB825: "},
{"Enter.destination.keystore.password.", "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 \uC785\uB825: "},
......@@ -328,6 +336,7 @@ public class Resources_ko extends java.util.ListResourceBundle {
{"New.prompt.", "\uC0C8 {0}: "},
{"Passwords.must.differ", "\uBE44\uBC00\uBC88\uD638\uB294 \uB2EC\uB77C\uC57C \uD569\uB2C8\uB2E4."},
{"Re.enter.new.prompt.", "\uC0C8 {0} \uB2E4\uC2DC \uC785\uB825: "},
{"Re.enter.passpword.", "\uBE44\uBC00\uBC88\uD638 \uB2E4\uC2DC \uC785\uB825: "},
{"Re.enter.new.password.", "\uC0C8 \uBE44\uBC00\uBC88\uD638 \uB2E4\uC2DC \uC785\uB825: "},
{"They.don.t.match.Try.again", "\uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624."},
{"Enter.prompt.alias.name.", "{0} \uBCC4\uCE6D \uC774\uB984 \uC785\uB825: "},
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -65,10 +65,16 @@ public class Resources_pt_BR extends java.util.ListResourceBundle {
{"Generates.certificate.from.a.certificate.request",
"Gera um certificado de uma solicita\u00E7\u00E3o de certificado"}, //-gencert
{"Generates.CRL", "Gera CRL"}, //-gencrl
{"Generated.keyAlgName.secret.key",
"Chave secreta {0} gerada"}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
"Chave secreta {1} de {0} bits gerada"}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"Importa entradas de um banco de dados de identidade JDK 1.1.x-style"}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
"Importa um certificado ou uma cadeia de certificados"}, //-importcert
{"Imports.a.password",
"Importa uma senha"}, //-importpass
{"Imports.one.or.all.entries.from.another.keystore",
"Importa uma ou todas as entradas de outra \u00E1rea de armazenamento de chaves"}, //-importkeystore
{"Clones.a.key.entry",
......@@ -220,6 +226,8 @@ public class Resources_pt_BR extends java.util.ListResourceBundle {
{"Must.specify.alias", "Deve ser especificado um alias"},
{"Keystore.password.must.be.at.least.6.characters",
"A senha da \u00E1rea de armazenamento de chaves deve ter, no m\u00EDnimo, 6 caracteres"},
{"Enter.the.password.to.be.stored.",
"Digite a senha a ser armazenada: "},
{"Enter.keystore.password.", "Informe a senha da \u00E1rea de armazenamento de chaves: "},
{"Enter.source.keystore.password.", "Informe a senha da \u00E1rea de armazenamento de chaves de origem: "},
{"Enter.destination.keystore.password.", "Informe a senha da \u00E1rea de armazenamento de chaves de destino: "},
......@@ -328,6 +336,7 @@ public class Resources_pt_BR extends java.util.ListResourceBundle {
{"New.prompt.", "Nova {0}: "},
{"Passwords.must.differ", "As senhas devem ser diferentes"},
{"Re.enter.new.prompt.", "Informe novamente a nova {0}: "},
{"Re.enter.passpword.", "Redigite a senha: "},
{"Re.enter.new.password.", "Informe novamente a nova senha: "},
{"They.don.t.match.Try.again", "Elas n\u00E3o correspondem. Tente novamente"},
{"Enter.prompt.alias.name.", "Informe o nome do alias {0}: "},
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -65,10 +65,16 @@ public class Resources_sv extends java.util.ListResourceBundle {
{"Generates.certificate.from.a.certificate.request",
"Genererar certifikat fr\u00E5n certifikatbeg\u00E4ran"}, //-gencert
{"Generates.CRL", "Genererar CRL"}, //-gencrl
{"Generated.keyAlgName.secret.key",
"Genererade {0} hemlig nyckel"}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
"Genererade {0}-bitars {1} hemlig nyckel"}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"Importerar poster fr\u00E5n identitetsdatabas i JDK 1.1.x-format"}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
"Importerar ett certifikat eller en certifikatkedja"}, //-importcert
{"Imports.a.password",
"Importerar ett l\u00F6senord"}, //-importpass
{"Imports.one.or.all.entries.from.another.keystore",
"Importerar en eller alla poster fr\u00E5n annat nyckellager"}, //-importkeystore
{"Clones.a.key.entry",
......@@ -220,6 +226,8 @@ public class Resources_sv extends java.util.ListResourceBundle {
{"Must.specify.alias", "Du m\u00E5ste ange alias"},
{"Keystore.password.must.be.at.least.6.characters",
"Nyckellagerl\u00F6senordet m\u00E5ste inneh\u00E5lla minst 6 tecken"},
{"Enter.the.password.to.be.stored.",
"Ange det l\u00F6senord som ska lagras: "},
{"Enter.keystore.password.", "Ange nyckellagerl\u00F6senord: "},
{"Enter.source.keystore.password.", "Ange l\u00F6senord f\u00F6r k\u00E4llnyckellagret: "},
{"Enter.destination.keystore.password.", "Ange nyckellagerl\u00F6senord f\u00F6r destination: "},
......@@ -328,6 +336,7 @@ public class Resources_sv extends java.util.ListResourceBundle {
{"New.prompt.", "Nytt {0}: "},
{"Passwords.must.differ", "L\u00F6senorden m\u00E5ste vara olika"},
{"Re.enter.new.prompt.", "Ange nytt {0} igen: "},
{"Re.enter.passpword.", "Ange l\u00F6senord igen: "},
{"Re.enter.new.password.", "Ange det nya l\u00F6senordet igen: "},
{"They.don.t.match.Try.again", "De matchar inte. F\u00F6rs\u00F6k igen"},
{"Enter.prompt.alias.name.", "Ange aliasnamn f\u00F6r {0}: "},
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -65,10 +65,16 @@ public class Resources_zh_CN extends java.util.ListResourceBundle {
{"Generates.certificate.from.a.certificate.request",
"\u6839\u636E\u8BC1\u4E66\u8BF7\u6C42\u751F\u6210\u8BC1\u4E66"}, //-gencert
{"Generates.CRL", "\u751F\u6210 CRL"}, //-gencrl
{"Generated.keyAlgName.secret.key",
"\u5DF2\u751F\u6210{0}\u5BC6\u94A5"}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
"\u5DF2\u751F\u6210 {0} \u4F4D{1}\u5BC6\u94A5"}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"\u4ECE JDK 1.1.x \u6837\u5F0F\u7684\u8EAB\u4EFD\u6570\u636E\u5E93\u5BFC\u5165\u6761\u76EE"}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
"\u5BFC\u5165\u8BC1\u4E66\u6216\u8BC1\u4E66\u94FE"}, //-importcert
{"Imports.a.password",
"\u5BFC\u5165\u53E3\u4EE4"}, //-importpass
{"Imports.one.or.all.entries.from.another.keystore",
"\u4ECE\u5176\u4ED6\u5BC6\u94A5\u5E93\u5BFC\u5165\u4E00\u4E2A\u6216\u6240\u6709\u6761\u76EE"}, //-importkeystore
{"Clones.a.key.entry",
......@@ -220,6 +226,8 @@ public class Resources_zh_CN extends java.util.ListResourceBundle {
{"Must.specify.alias", "\u5FC5\u987B\u6307\u5B9A\u522B\u540D"},
{"Keystore.password.must.be.at.least.6.characters",
"\u5BC6\u94A5\u5E93\u53E3\u4EE4\u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"},
{"Enter.the.password.to.be.stored.",
"\u8F93\u5165\u8981\u5B58\u50A8\u7684\u53E3\u4EE4: "},
{"Enter.keystore.password.", "\u8F93\u5165\u5BC6\u94A5\u5E93\u53E3\u4EE4: "},
{"Enter.source.keystore.password.", "\u8F93\u5165\u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4: "},
{"Enter.destination.keystore.password.", "\u8F93\u5165\u76EE\u6807\u5BC6\u94A5\u5E93\u53E3\u4EE4: "},
......@@ -328,6 +336,7 @@ public class Resources_zh_CN extends java.util.ListResourceBundle {
{"New.prompt.", "\u65B0{0}: "},
{"Passwords.must.differ", "\u53E3\u4EE4\u4E0D\u80FD\u76F8\u540C"},
{"Re.enter.new.prompt.", "\u91CD\u65B0\u8F93\u5165\u65B0{0}: "},
{"Re.enter.passpword.", "\u518D\u6B21\u8F93\u5165\u53E3\u4EE4: "},
{"Re.enter.new.password.", "\u518D\u6B21\u8F93\u5165\u65B0\u53E3\u4EE4: "},
{"They.don.t.match.Try.again", "\u5B83\u4EEC\u4E0D\u5339\u914D\u3002\u8BF7\u91CD\u8BD5"},
{"Enter.prompt.alias.name.", "\u8F93\u5165{0}\u522B\u540D: "},
......
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -65,10 +65,16 @@ public class Resources_zh_TW extends java.util.ListResourceBundle {
{"Generates.certificate.from.a.certificate.request",
"\u5F9E\u6191\u8B49\u8981\u6C42\u7522\u751F\u6191\u8B49"}, //-gencert
{"Generates.CRL", "\u7522\u751F CRL"}, //-gencrl
{"Generated.keyAlgName.secret.key",
"\u5DF2\u7522\u751F {0} \u79D8\u5BC6\u91D1\u9470"}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
"\u5DF2\u7522\u751F {0} \u4F4D\u5143 {1} \u79D8\u5BC6\u91D1\u9470"}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"\u5F9E JDK 1.1.x-style \u8B58\u5225\u8CC7\u6599\u5EAB\u532F\u5165\u9805\u76EE"}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
"\u532F\u5165\u6191\u8B49\u6216\u6191\u8B49\u93C8"}, //-importcert
{"Imports.a.password",
"\u532F\u5165\u5BC6\u78BC"}, //-importpass
{"Imports.one.or.all.entries.from.another.keystore",
"\u5F9E\u5176\u4ED6\u91D1\u9470\u5132\u5B58\u5EAB\u532F\u5165\u4E00\u500B\u6216\u5168\u90E8\u9805\u76EE"}, //-importkeystore
{"Clones.a.key.entry",
......@@ -220,6 +226,8 @@ public class Resources_zh_TW extends java.util.ListResourceBundle {
{"Must.specify.alias", "\u5FC5\u9808\u6307\u5B9A\u5225\u540D"},
{"Keystore.password.must.be.at.least.6.characters",
"\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"},
{"Enter.the.password.to.be.stored.",
"\u8F38\u5165\u8981\u5132\u5B58\u7684\u5BC6\u78BC: "},
{"Enter.keystore.password.", "\u8F38\u5165\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC: "},
{"Enter.source.keystore.password.", "\u8ACB\u8F38\u5165\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC: "},
{"Enter.destination.keystore.password.", "\u8ACB\u8F38\u5165\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC: "},
......@@ -328,6 +336,7 @@ public class Resources_zh_TW extends java.util.ListResourceBundle {
{"New.prompt.", "\u65B0 {0}: "},
{"Passwords.must.differ", "\u5FC5\u9808\u662F\u4E0D\u540C\u7684\u5BC6\u78BC"},
{"Re.enter.new.prompt.", "\u91CD\u65B0\u8F38\u5165\u65B0 {0}: "},
{"Re.enter.passpword.", "\u91CD\u65B0\u8F38\u5165\u5BC6\u78BC:"},
{"Re.enter.new.password.", "\u91CD\u65B0\u8F38\u5165\u65B0\u5BC6\u78BC: "},
{"They.don.t.match.Try.again", "\u5B83\u5011\u4E0D\u76F8\u7B26\u3002\u8ACB\u91CD\u8A66"},
{"Enter.prompt.alias.name.", "\u8F38\u5165 {0} \u5225\u540D\u540D\u7A31: "},
......
......@@ -44,16 +44,16 @@ public class Resources_de extends java.util.ListResourceBundle {
{"Usage.policytool.options.", "Verwendung: policytool [Optionen]"},
{".file.file.policy.file.location",
" [-file <Datei>] Policy-Dateiverzeichnis"},
{"New", "Neu"},
{"Open", "\u00D6ffnen"},
{"Save", "Speichern"},
{"Save.As", "Speichern unter"},
{"View.Warning.Log", "Warnungslog anzeigen"},
{"Exit", "Beenden"},
{"Add.Policy.Entry", "Policy-Eintrag hinzuf\u00FCgen"},
{"Edit.Policy.Entry", "Policy-Eintrag bearbeiten"},
{"Remove.Policy.Entry", "Policy-Eintrag entfernen"},
{"Edit", "Bearbeiten"},
{"New", "&Neu"},
{"Open", "&\u00D6ffnen..."},
{"Save", "&Speichern"},
{"Save.As", "Speichern &unter..."},
{"View.Warning.Log", "&Warnungslog anzeigen"},
{"Exit", "B&eenden"},
{"Add.Policy.Entry", "Policy-Eintrag &hinzuf\u00FCgen"},
{"Edit.Policy.Entry", "Policy-Eintrag &bearbeiten"},
{"Remove.Policy.Entry", "Policy-Eintrag &entfernen"},
{"Edit", "&Bearbeiten"},
{"Retain", "Beibehalten"},
{"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
......@@ -61,8 +61,8 @@ public class Resources_de extends java.util.ListResourceBundle {
{"Add.Public.Key.Alias", "Public Key-Alias hinzuf\u00FCgen"},
{"Remove.Public.Key.Alias", "Public Key-Alias entfernen"},
{"File", "Datei"},
{"KeyStore", "KeyStore"},
{"File", "&Datei"},
{"KeyStore", "&KeyStore"},
{"Policy.File.", "Policy-Datei:"},
{"Could.not.open.policy.file.policyFile.e.toString.",
"Policy-Datei konnte nicht ge\u00F6ffnet werden: {0}: {1}"},
......@@ -84,20 +84,20 @@ public class Resources_de extends java.util.ListResourceBundle {
{"OK.to.overwrite.existing.file.filename.",
"Vorhandene Datei {0} \u00FCberschreiben?"},
{"Cancel", "Abbrechen"},
{"CodeBase.", "CodeBase:"},
{"SignedBy.", "SignedBy:"},
{"Add.Principal", "Principal hinzuf\u00FCgen"},
{"Edit.Principal", "Principal bearbeiten"},
{"Remove.Principal", "Principal entfernen"},
{"Principals.", "Principals:"},
{".Add.Permission", " Berechtigung hinzuf\u00FCgen"},
{".Edit.Permission", " Berechtigung bearbeiten"},
{"Remove.Permission", "Berechtigung entfernen"},
{"CodeBase.", "&CodeBase:"},
{"SignedBy.", "&SignedBy:"},
{"Add.Principal", "Principal &hinzuf\u00FCgen"},
{"Edit.Principal", "Principal &bearbeiten"},
{"Remove.Principal", "Principal ent&fernen"},
{"Principals.", "&Principals:"},
{".Add.Permission", " B&erechtigung hinzuf\u00FCgen"},
{".Edit.Permission", " Be&rechtigung bearbeiten"},
{"Remove.Permission", "Berec&htigung entfernen"},
{"Done", "Fertig"},
{"KeyStore.URL.", "KeyStore-URL:"},
{"KeyStore.Type.", "KeyStore-Typ:"},
{"KeyStore.Provider.", "KeyStore-Provider:"},
{"KeyStore.Password.URL.", "KeyStore-Kennwort-URL:"},
{"KeyStore.URL.", "KeyStore-&URL:"},
{"KeyStore.Type.", "KeyStore-&Typ:"},
{"KeyStore.Provider.", "KeyStore-&Provider:"},
{"KeyStore.Password.URL.", "KeyStore-Kenn&wort-URL:"},
{"Principals", "Principals"},
{".Edit.Principal.", " Principal bearbeiten:"},
{".Add.New.Principal.", " Neuen Principal hinzuf\u00FCgen:"},
......@@ -117,8 +117,8 @@ public class Resources_de extends java.util.ListResourceBundle {
"Policy erfolgreich in {0} geschrieben"},
{"null.filename", "Null-Dateiname"},
{"Save.changes.", "\u00C4nderungen speichern?"},
{"Yes", "Ja"},
{"No", "Nein"},
{"Yes", "&Ja"},
{"No", "&Nein"},
{"Policy.Entry", "Policy-Eintrag"},
{"Save.Changes", "\u00C4nderungen speichern"},
{"No.Policy.Entry.selected", "Kein Policy-Eintrag ausgew\u00E4hlt"},
......
......@@ -44,16 +44,16 @@ public class Resources_es extends java.util.ListResourceBundle {
{"Usage.policytool.options.", "Sintaxis: policytool [opciones]"},
{".file.file.policy.file.location",
" [-file <archivo>] ubicaci\u00F3n del archivo de normas"},
{"New", "Nuevo"},
{"Open", "Abrir"},
{"Save", "Guardar"},
{"Save.As", "Guardar como"},
{"View.Warning.Log", "Ver Log de Advertencias"},
{"Exit", "Salir"},
{"Add.Policy.Entry", "Agregar Entrada de Pol\u00EDtica"},
{"Edit.Policy.Entry", "Editar Entrada de Pol\u00EDtica"},
{"Remove.Policy.Entry", "Eliminar Entrada de Pol\u00EDtica"},
{"Edit", "Editar"},
{"New", "&Nueva"},
{"Open", "&Abrir..."},
{"Save", "&Guardar"},
{"Save.As", "Guardar &como..."},
{"View.Warning.Log", "Ver &log de advertencias"},
{"Exit", "&Salir"},
{"Add.Policy.Entry", "Agregar &entrada de pol\u00EDtica"},
{"Edit.Policy.Entry", "E&ditar entrada de pol\u00EDtica"},
{"Remove.Policy.Entry", "&Eliminar entrada de pol\u00EDtica"},
{"Edit", "&Editar"},
{"Retain", "Mantener"},
{"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
......@@ -61,8 +61,8 @@ public class Resources_es extends java.util.ListResourceBundle {
{"Add.Public.Key.Alias", "Agregar Alias de Clave P\u00FAblico"},
{"Remove.Public.Key.Alias", "Eliminar Alias de Clave P\u00FAblico"},
{"File", "Archivo"},
{"KeyStore", "Almac\u00E9n de Claves"},
{"File", "&Archivo"},
{"KeyStore", "Al&mac\u00E9n de claves"},
{"Policy.File.", "Archivo de Pol\u00EDtica:"},
{"Could.not.open.policy.file.policyFile.e.toString.",
"No se ha podido abrir el archivo de pol\u00EDtica: {0}: {1}"},
......@@ -84,20 +84,20 @@ public class Resources_es extends java.util.ListResourceBundle {
{"OK.to.overwrite.existing.file.filename.",
"\u00BFSobrescribir el archivo existente {0}?"},
{"Cancel", "Cancelar"},
{"CodeBase.", "CodeBase:"},
{"SignedBy.", "SignedBy:"},
{"Add.Principal", "Agregar Principal"},
{"Edit.Principal", "Editar Principal"},
{"Remove.Principal", "Eliminar Principal"},
{"Principals.", "Principales:"},
{".Add.Permission", " Agregar Permiso"},
{".Edit.Permission", " Editar Permiso"},
{"Remove.Permission", "Eliminar Permiso"},
{"CodeBase.", "&CodeBase:"},
{"SignedBy.", "&SignedBy:"},
{"Add.Principal", "&Agregar principal"},
{"Edit.Principal", "&Editar principal"},
{"Remove.Principal", "Elimina&r principal"},
{"Principals.", "&Principales:"},
{".Add.Permission", "A&gregar permiso"},
{".Edit.Permission", "Ed&itar permiso"},
{"Remove.Permission", "Eli&minar permiso"},
{"Done", "Listo"},
{"KeyStore.URL.", "URL de Almac\u00E9n de Claves:"},
{"KeyStore.Type.", "Tipo de Almac\u00E9n de Claves:"},
{"KeyStore.Provider.", "Proveedor de Almac\u00E9n de Claves:"},
{"KeyStore.Password.URL.", "URL de Contrase\u00F1a de Almac\u00E9n de Claves:"},
{"KeyStore.URL.", "&URL de almac\u00E9n de claves:"},
{"KeyStore.Type.", "&Tipo de almac\u00E9n de claves:"},
{"KeyStore.Provider.", "&Proveedor de almac\u00E9n de claves:"},
{"KeyStore.Password.URL.", "URL de Contra&se\u00F1a de almac\u00E9n de claves:"},
{"Principals", "Principales"},
{".Edit.Principal.", " Editar Principal:"},
{".Add.New.Principal.", " Agregar Nuevo Principal:"},
......@@ -117,8 +117,8 @@ public class Resources_es extends java.util.ListResourceBundle {
"Pol\u00EDtica escrita correctamente en {0}"},
{"null.filename", "nombre de archivo nulo"},
{"Save.changes.", "\u00BFGuardar los cambios?"},
{"Yes", "S\u00ED"},
{"No", "No"},
{"Yes", "&S\u00ED"},
{"No", "&No"},
{"Policy.Entry", "Entrada de Pol\u00EDtica"},
{"Save.Changes", "Guardar Cambios"},
{"No.Policy.Entry.selected", "No se ha seleccionado la entrada de pol\u00EDtica"},
......
......@@ -44,25 +44,25 @@ public class Resources_fr extends java.util.ListResourceBundle {
{"Usage.policytool.options.", "Syntaxe : policytool [options]"},
{".file.file.policy.file.location",
" [-file <file>] emplacement du fichier de r\u00E8gles"},
{"New", "Nouveau"},
{"Open", "Ouvrir"},
{"Save", "Enregistrer"},
{"Save.As", "Enregistrer sous"},
{"View.Warning.Log", "Afficher le journal des avertissements"},
{"Exit", "Quitter"},
{"Add.Policy.Entry", "Ajouter une r\u00E8gle"},
{"Edit.Policy.Entry", "Modifier une r\u00E8gle"},
{"Remove.Policy.Entry", "Enlever une r\u00E8gle"},
{"Edit", "Modifier"},
{"New", "&Nouveau"},
{"Open", "&Ouvrir..."},
{"Save", "Enregi&strer"},
{"Save.As", "Enregistrer so&us..."},
{"View.Warning.Log", "Affic&her le journal des avertissements"},
{"Exit", "&Quitter"},
{"Add.Policy.Entry", "&Ajouter une r\u00E8gle"},
{"Edit.Policy.Entry", "Modifi&er une r\u00E8gle"},
{"Remove.Policy.Entry", "Enlever une &r\u00E8gle"},
{"Edit", "Modifi&er"},
{"Retain", "Conserver"},
{"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
"Avertissement : il se peut que le nom de fichier contienne des barres obliques inverses avec caract\u00E8re d'\u00E9chappement. Il n'est pas n\u00E9cessaire d'ajouter un caract\u00E8re d'\u00E9chappement aux barres obliques inverses. L'outil proc\u00E8de \u00E0 l'\u00E9chappement si n\u00E9cessaire lorsqu'il \u00E9crit le contenu des r\u00E8gles dans la zone de stockage persistant).\n\nCliquez sur Conserver pour garder le nom saisi ou sur Modifier pour le remplacer."},
"Avertissement : il se peut que le nom de fichier contienne des barres obliques inverses avec caract\u00E8re d'\u00E9chappement. Il n'est pas n\u00E9cessaire d'ajouter un caract\u00E8re d'\u00E9chappement aux barres obliques inverses. L'outil proc\u00E8de \u00E0 l'\u00E9chappement si n\u00E9cessaire lorsqu'il \u00E9crit le contenu des r\u00E8gles dans la zone de stockage persistant.\n\nCliquez sur Conserver pour garder le nom saisi ou sur Modifier pour le remplacer."},
{"Add.Public.Key.Alias", "Ajouter un alias de cl\u00E9 publique"},
{"Remove.Public.Key.Alias", "Enlever un alias de cl\u00E9 publique"},
{"File", "Fichier"},
{"KeyStore", "Fichier de cl\u00E9s"},
{"File", "&Fichier"},
{"KeyStore", "Fichier &de cl\u00E9s"},
{"Policy.File.", "Fichier de r\u00E8gles :"},
{"Could.not.open.policy.file.policyFile.e.toString.",
"Impossible d''ouvrir le fichier de r\u00E8gles\u00A0: {0}: {1}"},
......@@ -84,20 +84,20 @@ public class Resources_fr extends java.util.ListResourceBundle {
{"OK.to.overwrite.existing.file.filename.",
"Remplacer le fichier existant {0} ?"},
{"Cancel", "Annuler"},
{"CodeBase.", "Base de code :"},
{"SignedBy.", "Sign\u00E9 par :"},
{"Add.Principal", "Ajouter un principal"},
{"Edit.Principal", "Modifier un principal"},
{"Remove.Principal", "Enlever un principal"},
{"Principals.", "Principaux :"},
{".Add.Permission", " Ajouter un droit"},
{".Edit.Permission", " Modifier un droit"},
{"Remove.Permission", "Enlever un droit"},
{"CodeBase.", "Base de &code :"},
{"SignedBy.", "&Sign\u00E9 par :"},
{"Add.Principal", "&Ajouter un principal"},
{"Edit.Principal", "Modifi&er un principal"},
{"Remove.Principal", "Enleve&r un principal"},
{"Principals.", "&Principaux :"},
{".Add.Permission", " Ajouter un &droit"},
{".Edit.Permission", " Mod&ifier un droit"},
{"Remove.Permission", "Enlever un dr&oit"},
{"Done", "Termin\u00E9"},
{"KeyStore.URL.", "URL du fichier de cl\u00E9s :"},
{"KeyStore.Type.", "Type du fichier de cl\u00E9s :"},
{"KeyStore.Provider.", "Fournisseur du fichier de cl\u00E9s :"},
{"KeyStore.Password.URL.", "URL du mot de passe du fichier de cl\u00E9s :"},
{"KeyStore.URL.", "&URL du fichier de cl\u00E9s :"},
{"KeyStore.Type.", "&Type du fichier de cl\u00E9s :"},
{"KeyStore.Provider.", "Four&nisseur du fichier de cl\u00E9s :"},
{"KeyStore.Password.URL.", "UR&L du mot de passe du fichier de cl\u00E9s :"},
{"Principals", "Principaux"},
{".Edit.Principal.", " Modifier un principal :"},
{".Add.New.Principal.", " Ajouter un principal :"},
......@@ -117,8 +117,8 @@ public class Resources_fr extends java.util.ListResourceBundle {
"R\u00E8gle \u00E9crite dans {0}"},
{"null.filename", "nom de fichier NULL"},
{"Save.changes.", "Enregistrer les modifications ?"},
{"Yes", "Oui"},
{"No", "Non"},
{"Yes", "&Oui"},
{"No", "&Non"},
{"Policy.Entry", "R\u00E8gle"},
{"Save.Changes", "Enregistrer les modifications"},
{"No.Policy.Entry.selected", "Aucune r\u00E8gle s\u00E9lectionn\u00E9e"},
......
......@@ -44,16 +44,16 @@ public class Resources_it extends java.util.ListResourceBundle {
{"Usage.policytool.options.", "Uso: policytool [opzioni]"},
{".file.file.policy.file.location",
" [-file <file>] posizione del file dei criteri"},
{"New", "Nuovo"},
{"Open", "Apri"},
{"Save", "Salva"},
{"Save.As", "Salva con nome"},
{"View.Warning.Log", "Visualizza registro avvertenze"},
{"Exit", "Esci"},
{"Add.Policy.Entry", "Aggiungi voce dei criteri"},
{"Edit.Policy.Entry", "Modifica voce dei criteri"},
{"Remove.Policy.Entry", "Rimuovi voce dei criteri"},
{"Edit", "Modifica"},
{"New", "&Nuovo"},
{"Open", "&Apri..."},
{"Save", "&Salva"},
{"Save.As", "Sal&va con nome..."},
{"View.Warning.Log", "Visuali&zza registro avvertenze"},
{"Exit", "&Esci"},
{"Add.Policy.Entry", "Aggi&ungi voce criteri"},
{"Edit.Policy.Entry", "&Modifica voce criteri"},
{"Remove.Policy.Entry", "&Rimuovi voce criteri"},
{"Edit", "&Modifica"},
{"Retain", "Mantieni"},
{"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
......@@ -61,8 +61,8 @@ public class Resources_it extends java.util.ListResourceBundle {
{"Add.Public.Key.Alias", "Aggiungi alias chiave pubblica"},
{"Remove.Public.Key.Alias", "Rimuovi alias chiave pubblica"},
{"File", "File"},
{"KeyStore", "Keystore"},
{"File", "&File"},
{"KeyStore", "&Keystore"},
{"Policy.File.", "File dei criteri:"},
{"Could.not.open.policy.file.policyFile.e.toString.",
"Impossibile aprire il file di criteri {0}: {1}"},
......@@ -84,20 +84,20 @@ public class Resources_it extends java.util.ListResourceBundle {
{"OK.to.overwrite.existing.file.filename.",
"OK per sovrascrivere il file {0}?"},
{"Cancel", "Annulla"},
{"CodeBase.", "CodeBase:"},
{"SignedBy.", "SignedBy:"},
{"Add.Principal", "Aggiungi principal"},
{"Edit.Principal", "Modifica principal"},
{"Remove.Principal", "Rimuovi principal"},
{"Principals.", "Principal:"},
{".Add.Permission", " Aggiungi autorizzazione"},
{".Edit.Permission", " Modifica autorizzazione"},
{"Remove.Permission", "Rimuovi autorizzazione"},
{"CodeBase.", "&CodeBase:"},
{"SignedBy.", "&SignedBy:"},
{"Add.Principal", "&Aggiungi principal"},
{"Edit.Principal", "&Modifica principal"},
{"Remove.Principal", "&Rimuovi principal"},
{"Principals.", "&Principal:"},
{".Add.Permission", " Aggiu&ngi autorizzazione"},
{".Edit.Permission", " Mo&difica autorizzazione"},
{"Remove.Permission", "R&imuovi autorizzazione"},
{"Done", "Fine"},
{"KeyStore.URL.", "URL keystore:"},
{"KeyStore.Type.", "Tipo keystore:"},
{"KeyStore.Provider.", "Provider keystore:"},
{"KeyStore.Password.URL.", "URL password keystore:"},
{"KeyStore.URL.", "&URL keystore:"},
{"KeyStore.Type.", "&Tipo keystore:"},
{"KeyStore.Provider.", "Pro&vider keystore:"},
{"KeyStore.Password.URL.", "URL pass&word keystore:"},
{"Principals", "Principal:"},
{".Edit.Principal.", " Modifica principal:"},
{".Add.New.Principal.", " Aggiungi nuovo principal:"},
......@@ -117,8 +117,8 @@ public class Resources_it extends java.util.ListResourceBundle {
"I criteri sono stati scritti in {0}"},
{"null.filename", "nome file nullo"},
{"Save.changes.", "Salvare le modifiche?"},
{"Yes", "S\u00EC"},
{"No", "No"},
{"Yes", "&S\u00EC"},
{"No", "&No"},
{"Policy.Entry", "Voce dei criteri"},
{"Save.Changes", "Salva le modifiche"},
{"No.Policy.Entry.selected", "Nessuna voce dei criteri selezionata"},
......
......@@ -44,16 +44,16 @@ public class Resources_ja extends java.util.ListResourceBundle {
{"Usage.policytool.options.", "\u4F7F\u7528\u65B9\u6CD5: policytool [options]"},
{".file.file.policy.file.location",
" [-file <file>] \u30DD\u30EA\u30B7\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240"},
{"New", "\u65B0\u898F"},
{"Open", "\u958B\u304F"},
{"Save", "\u4FDD\u5B58"},
{"Save.As", "\u5225\u540D\u4FDD\u5B58"},
{"View.Warning.Log", "\u8B66\u544A\u30ED\u30B0\u306E\u8868\u793A"},
{"Exit", "\u7D42\u4E86"},
{"Add.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u8FFD\u52A0"},
{"Edit.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u7DE8\u96C6"},
{"Remove.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u524A\u9664"},
{"Edit", "\u7DE8\u96C6"},
{"New", "\u65B0\u898F(&N)"},
{"Open", "\u958B\u304F(&O)..."},
{"Save", "\u4FDD\u5B58(&S)"},
{"Save.As", "\u5225\u540D\u4FDD\u5B58(&A)..."},
{"View.Warning.Log", "\u8B66\u544A\u30ED\u30B0\u306E\u8868\u793A(&W)"},
{"Exit", "\u7D42\u4E86(&X)"},
{"Add.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u8FFD\u52A0(&A)"},
{"Edit.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u7DE8\u96C6(&E)"},
{"Remove.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u524A\u9664(&R)"},
{"Edit", "\u7DE8\u96C6(&E)"},
{"Retain", "\u4FDD\u6301"},
{"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
......@@ -61,8 +61,8 @@ public class Resources_ja extends java.util.ListResourceBundle {
{"Add.Public.Key.Alias", "\u516C\u958B\u9375\u306E\u5225\u540D\u306E\u8FFD\u52A0"},
{"Remove.Public.Key.Alias", "\u516C\u958B\u9375\u306E\u5225\u540D\u3092\u524A\u9664"},
{"File", "\u30D5\u30A1\u30A4\u30EB"},
{"KeyStore", "\u30AD\u30FC\u30B9\u30C8\u30A2"},
{"File", "\u30D5\u30A1\u30A4\u30EB(&F)"},
{"KeyStore", "\u30AD\u30FC\u30B9\u30C8\u30A2(&K)"},
{"Policy.File.", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB:"},
{"Could.not.open.policy.file.policyFile.e.toString.",
"\u30DD\u30EA\u30B7\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F: {0}: {1}"},
......@@ -84,20 +84,20 @@ public class Resources_ja extends java.util.ListResourceBundle {
{"OK.to.overwrite.existing.file.filename.",
"\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB{0}\u306B\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\u3002"},
{"Cancel", "\u53D6\u6D88"},
{"CodeBase.", "CodeBase:"},
{"SignedBy.", "SignedBy:"},
{"Add.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u8FFD\u52A0"},
{"Edit.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u7DE8\u96C6"},
{"Remove.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u524A\u9664"},
{"Principals.", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB:"},
{".Add.Permission", " \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0"},
{".Edit.Permission", " \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u7DE8\u96C6"},
{"Remove.Permission", "\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u524A\u9664"},
{"CodeBase.", "CodeBase(&C):"},
{"SignedBy.", "SignedBy(&S):"},
{"Add.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u8FFD\u52A0(&A)"},
{"Edit.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u7DE8\u96C6(&E)"},
{"Remove.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u524A\u9664(&R)"},
{"Principals.", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB(&P):"},
{".Add.Permission", " \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0(&D)"},
{".Edit.Permission", " \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u7DE8\u96C6(&I)"},
{"Remove.Permission", "\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u524A\u9664(&M)"},
{"Done", "\u5B8C\u4E86"},
{"KeyStore.URL.", "\u30AD\u30FC\u30B9\u30C8\u30A2URL:"},
{"KeyStore.Type.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7:"},
{"KeyStore.Provider.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0:"},
{"KeyStore.Password.URL.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9URL:"},
{"KeyStore.URL.", "\u30AD\u30FC\u30B9\u30C8\u30A2URL(&U):"},
{"KeyStore.Type.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7(&T):"},
{"KeyStore.Provider.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0(&P):"},
{"KeyStore.Password.URL.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9URL(&W):"},
{"Principals", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB"},
{".Edit.Principal.", " \u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u7DE8\u96C6:"},
{".Add.New.Principal.", " \u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u65B0\u898F\u8FFD\u52A0:"},
......@@ -117,8 +117,8 @@ public class Resources_ja extends java.util.ListResourceBundle {
"\u30DD\u30EA\u30B7\u30FC\u306E{0}\u3078\u306E\u66F8\u8FBC\u307F\u306B\u6210\u529F\u3057\u307E\u3057\u305F"},
{"null.filename", "\u30D5\u30A1\u30A4\u30EB\u540D\u304Cnull\u3067\u3059"},
{"Save.changes.", "\u5909\u66F4\u3092\u4FDD\u5B58\u3057\u307E\u3059\u304B\u3002"},
{"Yes", "\u306F\u3044"},
{"No", "\u3044\u3044\u3048"},
{"Yes", "\u306F\u3044(&Y)"},
{"No", "\u3044\u3044\u3048(&N)"},
{"Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA"},
{"Save.Changes", "\u5909\u66F4\u3092\u4FDD\u5B58\u3057\u307E\u3059"},
{"No.Policy.Entry.selected", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
......
......@@ -44,16 +44,16 @@ public class Resources_ko extends java.util.ListResourceBundle {
{"Usage.policytool.options.", "\uC0AC\uC6A9\uBC95: policytool [options]"},
{".file.file.policy.file.location",
" [-file <file>] \uC815\uCC45 \uD30C\uC77C \uC704\uCE58"},
{"New", "\uC0C8\uB85C \uB9CC\uB4E4\uAE30"},
{"Open", "\uC5F4\uAE30"},
{"Save", "\uC800\uC7A5"},
{"Save.As", "\uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uC800\uC7A5"},
{"View.Warning.Log", "\uACBD\uACE0 \uB85C\uADF8 \uBCF4\uAE30"},
{"Exit", "\uC885\uB8CC"},
{"Add.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uCD94\uAC00"},
{"Edit.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uD3B8\uC9D1"},
{"Remove.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uC81C\uAC70"},
{"Edit", "\uD3B8\uC9D1"},
{"New", "\uC0C8\uB85C \uB9CC\uB4E4\uAE30(&N)"},
{"Open", "\uC5F4\uAE30(&O)..."},
{"Save", "\uC800\uC7A5(&S)"},
{"Save.As", "\uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uC800\uC7A5(&A)..."},
{"View.Warning.Log", "\uACBD\uACE0 \uB85C\uADF8 \uBCF4\uAE30(&W)"},
{"Exit", "\uC885\uB8CC(&X)"},
{"Add.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uCD94\uAC00(&A)"},
{"Edit.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uD3B8\uC9D1(&E)"},
{"Remove.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uC81C\uAC70(&R)"},
{"Edit", "\uD3B8\uC9D1(&E)"},
{"Retain", "\uC720\uC9C0"},
{"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
......@@ -61,8 +61,8 @@ public class Resources_ko extends java.util.ListResourceBundle {
{"Add.Public.Key.Alias", "\uACF5\uC6A9 \uD0A4 \uBCC4\uCE6D \uCD94\uAC00"},
{"Remove.Public.Key.Alias", "\uACF5\uC6A9 \uD0A4 \uBCC4\uCE6D \uC81C\uAC70"},
{"File", "\uD30C\uC77C"},
{"KeyStore", "\uD0A4 \uC800\uC7A5\uC18C"},
{"File", "\uD30C\uC77C(&F)"},
{"KeyStore", "\uD0A4 \uC800\uC7A5\uC18C(&K)"},
{"Policy.File.", "\uC815\uCC45 \uD30C\uC77C:"},
{"Could.not.open.policy.file.policyFile.e.toString.",
"\uC815\uCC45 \uD30C\uC77C\uC744 \uC5F4 \uC218 \uC5C6\uC74C: {0}: {1}"},
......@@ -84,20 +84,20 @@ public class Resources_ko extends java.util.ListResourceBundle {
{"OK.to.overwrite.existing.file.filename.",
"\uAE30\uC874 \uD30C\uC77C {0}\uC744(\uB97C) \uACB9\uCCD0 \uC4F0\uACA0\uC2B5\uB2C8\uAE4C?"},
{"Cancel", "\uCDE8\uC18C"},
{"CodeBase.", "CodeBase:"},
{"SignedBy.", "SignedBy:"},
{"Add.Principal", "\uC8FC\uCCB4 \uCD94\uAC00"},
{"Edit.Principal", "\uC8FC\uCCB4 \uD3B8\uC9D1"},
{"Remove.Principal", "\uC8FC\uCCB4 \uC81C\uAC70"},
{"Principals.", "\uC8FC\uCCB4:"},
{".Add.Permission", " \uAD8C\uD55C \uCD94\uAC00"},
{".Edit.Permission", " \uAD8C\uD55C \uD3B8\uC9D1"},
{"Remove.Permission", "\uAD8C\uD55C \uC81C\uAC70"},
{"CodeBase.", "CodeBase(&C)"},
{"SignedBy.", "SignedBy(&S):"},
{"Add.Principal", "\uC8FC\uCCB4 \uCD94\uAC00(&A)"},
{"Edit.Principal", "\uC8FC\uCCB4 \uD3B8\uC9D1(&E)"},
{"Remove.Principal", "\uC8FC\uCCB4 \uC81C\uAC70(&R)"},
{"Principals.", "\uC8FC\uCCB4(&P):"},
{".Add.Permission", " \uAD8C\uD55C \uCD94\uAC00(&D)"},
{".Edit.Permission", " \uAD8C\uD55C \uD3B8\uC9D1(&I)"},
{"Remove.Permission", "\uAD8C\uD55C \uC81C\uAC70(&M)"},
{"Done", "\uC644\uB8CC"},
{"KeyStore.URL.", "\uD0A4 \uC800\uC7A5\uC18C URL:"},
{"KeyStore.Type.", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615:"},
{"KeyStore.Provider.", "\uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790:"},
{"KeyStore.Password.URL.", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 URL:"},
{"KeyStore.URL.", "\uD0A4 \uC800\uC7A5\uC18C URL(&U):"},
{"KeyStore.Type.", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615(&T):"},
{"KeyStore.Provider.", "\uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790(&P):"},
{"KeyStore.Password.URL.", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 URL(&W):"},
{"Principals", "\uC8FC\uCCB4"},
{".Edit.Principal.", " \uC8FC\uCCB4 \uD3B8\uC9D1:"},
{".Add.New.Principal.", " \uC0C8 \uC8FC\uCCB4 \uCD94\uAC00:"},
......@@ -117,8 +117,8 @@ public class Resources_ko extends java.util.ListResourceBundle {
"{0}\uC5D0 \uC131\uACF5\uC801\uC73C\uB85C \uC815\uCC45\uC744 \uC37C\uC2B5\uB2C8\uB2E4."},
{"null.filename", "\uB110 \uD30C\uC77C \uC774\uB984"},
{"Save.changes.", "\uBCC0\uACBD \uC0AC\uD56D\uC744 \uC800\uC7A5\uD558\uACA0\uC2B5\uB2C8\uAE4C?"},
{"Yes", "\uC608"},
{"No", "\uC544\uB2C8\uC624"},
{"Yes", "\uC608(&Y)"},
{"No", "\uC544\uB2C8\uC624(&N)"},
{"Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9"},
{"Save.Changes", "\uBCC0\uACBD \uC0AC\uD56D \uC800\uC7A5"},
{"No.Policy.Entry.selected", "\uC120\uD0DD\uB41C \uC815\uCC45 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},
......
......@@ -44,16 +44,16 @@ public class Resources_pt_BR extends java.util.ListResourceBundle {
{"Usage.policytool.options.", "Uso: policytool [op\u00E7\u00F5es]"},
{".file.file.policy.file.location",
" [-file <arquivo>] localiza\u00E7\u00E3o do arquivo de pol\u00EDtica"},
{"New", "Novo"},
{"Open", "Abrir"},
{"Save", "Salvar"},
{"Save.As", "Salvar Como"},
{"View.Warning.Log", "Exibir Log de Advert\u00EAncias"},
{"Exit", "Sair"},
{"Add.Policy.Entry", "Adicionar Entrada de Pol\u00EDtica"},
{"Edit.Policy.Entry", "Editar Entrada de Pol\u00EDtica"},
{"Remove.Policy.Entry", "Remover Entrada de Pol\u00EDtica"},
{"Edit", "Editar"},
{"New", "&Novo"},
{"Open", "&Abrir..."},
{"Save", "&Salvar"},
{"Save.As", "Salvar c&omo..."},
{"View.Warning.Log", "E&xibir Log de Advert\u00EAncias"},
{"Exit", "S&air"},
{"Add.Policy.Entry", "&Adicionar Entrada de Pol\u00EDtica"},
{"Edit.Policy.Entry", "&Editar Entrada de Pol\u00EDtica"},
{"Remove.Policy.Entry", "&Remover Entrada de Pol\u00EDtica"},
{"Edit", "&Editar"},
{"Retain", "Reter"},
{"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
......@@ -61,8 +61,8 @@ public class Resources_pt_BR extends java.util.ListResourceBundle {
{"Add.Public.Key.Alias", "Adicionar Alias de Chave P\u00FAblica"},
{"Remove.Public.Key.Alias", "Remover Alias de Chave P\u00FAblica"},
{"File", "Arquivo"},
{"KeyStore", "KeyStore"},
{"File", "&Arquivo"},
{"KeyStore", "&KeyStore"},
{"Policy.File.", "Arquivo de Pol\u00EDtica:"},
{"Could.not.open.policy.file.policyFile.e.toString.",
"N\u00E3o foi poss\u00EDvel abrir o arquivo de pol\u00EDtica: {0}: {1}"},
......@@ -84,20 +84,20 @@ public class Resources_pt_BR extends java.util.ListResourceBundle {
{"OK.to.overwrite.existing.file.filename.",
"Est\u00E1 correto substituir o arquivo existente {0}?"},
{"Cancel", "Cancelar"},
{"CodeBase.", "CodeBase:"},
{"SignedBy.", "SignedBy:"},
{"Add.Principal", "Adicionar Principal"},
{"Edit.Principal", "Editar Principal"},
{"Remove.Principal", "Remover Principal"},
{"Principals.", "Principais:"},
{".Add.Permission", " Adicionar Permiss\u00E3o"},
{".Edit.Permission", " Editar Permiss\u00E3o"},
{"Remove.Permission", "Remover Permiss\u00E3o"},
{"CodeBase.", "&CodeBase:"},
{"SignedBy.", "&SignedBy:"},
{"Add.Principal", "&Adicionar Principal"},
{"Edit.Principal", "&Editar Principal"},
{"Remove.Principal", "&Remover Principal"},
{"Principals.", "&Principais:"},
{".Add.Permission", " A&dicionar Permiss\u00E3o"},
{".Edit.Permission", " Ed&itar Permiss\u00E3o"},
{"Remove.Permission", "Re&mover Permiss\u00E3o"},
{"Done", "Conclu\u00EDdo"},
{"KeyStore.URL.", "URL do KeyStore:"},
{"KeyStore.Type.", "Tipo de KeyStore:"},
{"KeyStore.Provider.", "Fornecedor de KeyStore:"},
{"KeyStore.Password.URL.", "URL da Senha do KeyStore:"},
{"KeyStore.URL.", "&URL do KeyStore:"},
{"KeyStore.Type.", "&Tipo de KeyStore:"},
{"KeyStore.Provider.", "&Fornecedor de KeyStore:"},
{"KeyStore.Password.URL.", "URL da Senha do Ke&yStore:"},
{"Principals", "Principais"},
{".Edit.Principal.", " Editar Principal:"},
{".Add.New.Principal.", " Adicionar Novo Principal:"},
......@@ -117,8 +117,8 @@ public class Resources_pt_BR extends java.util.ListResourceBundle {
"Pol\u00EDtica gravada com \u00EAxito em {0}"},
{"null.filename", "nome de arquivo nulo"},
{"Save.changes.", "Salvar altera\u00E7\u00F5es?"},
{"Yes", "Sim"},
{"No", "N\u00E3o"},
{"Yes", "&Sim"},
{"No", "&N\u00E3o"},
{"Policy.Entry", "Entrada de Pol\u00EDtica"},
{"Save.Changes", "Salvar Altera\u00E7\u00F5es"},
{"No.Policy.Entry.selected", "Nenhuma Entrada de Pol\u00EDtica Selecionada"},
......
......@@ -44,16 +44,16 @@ public class Resources_sv extends java.util.ListResourceBundle {
{"Usage.policytool.options.", "Syntax: policytool [alternativ]"},
{".file.file.policy.file.location",
" [-file <fil>] policyfilens plats"},
{"New", "Nytt"},
{"Open", "\u00D6ppna"},
{"Save", "Spara"},
{"Save.As", "Spara som"},
{"View.Warning.Log", "Visa varningslogg"},
{"Exit", "Avsluta"},
{"Add.Policy.Entry", "L\u00E4gg till policypost"},
{"Edit.Policy.Entry", "Redigera policypost"},
{"Remove.Policy.Entry", "Ta bort policypost"},
{"Edit", "Redigera"},
{"New", "&Nytt"},
{"Open", "&\u00D6ppna..."},
{"Save", "S&para"},
{"Save.As", "Spara &som..."},
{"View.Warning.Log", "Visa varningslo&gg"},
{"Exit", "A&vsluta"},
{"Add.Policy.Entry", "&L\u00E4gg till policypost"},
{"Edit.Policy.Entry", "&Redigera policypost"},
{"Remove.Policy.Entry", "&Ta bort policypost"},
{"Edit", "&Redigera"},
{"Retain", "Beh\u00E5ll"},
{"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
......@@ -61,8 +61,8 @@ public class Resources_sv extends java.util.ListResourceBundle {
{"Add.Public.Key.Alias", "L\u00E4gg till offentligt nyckelalias"},
{"Remove.Public.Key.Alias", "Ta bort offentligt nyckelalias"},
{"File", "Fil"},
{"KeyStore", "Nyckellager"},
{"File", "&Arkiv"},
{"KeyStore", "&KeyStore"},
{"Policy.File.", "Policyfil:"},
{"Could.not.open.policy.file.policyFile.e.toString.",
"Kan inte \u00F6ppna policyfilen: {0}: {1}"},
......@@ -84,20 +84,20 @@ public class Resources_sv extends java.util.ListResourceBundle {
{"OK.to.overwrite.existing.file.filename.",
"Ska den befintliga filen {0} skrivas \u00F6ver?"},
{"Cancel", "Avbryt"},
{"CodeBase.", "Kodbas:"},
{"SignedBy.", "Signerad av:"},
{"Add.Principal", "L\u00E4gg till identitetshavare"},
{"Edit.Principal", "Redigera identitetshavare"},
{"Remove.Principal", "Ta bort identitetshavare"},
{"CodeBase.", "&CodeBase:"},
{"SignedBy.", "&SignedBy:"},
{"Add.Principal", "&L\u00E4gg till identitetshavare"},
{"Edit.Principal", "&Redigera identitetshavare"},
{"Remove.Principal", "&Ta bort identitetshavare"},
{"Principals.", "Identitetshavare:"},
{".Add.Permission", " L\u00E4gg till beh\u00F6righet"},
{".Edit.Permission", " Redigera beh\u00F6righet"},
{"Remove.Permission", "Ta bort beh\u00F6righet"},
{".Add.Permission", " L&\u00E4gg till beh\u00F6righet"},
{".Edit.Permission", " Re&digera beh\u00F6righet"},
{"Remove.Permission", "Ta &bort beh\u00F6righet"},
{"Done", "Utf\u00F6rd"},
{"KeyStore.URL.", "URL f\u00F6r nyckellager:"},
{"KeyStore.Type.", "Nyckellagertyp:"},
{"KeyStore.Provider.", "Nyckellagerleverant\u00F6r:"},
{"KeyStore.Password.URL.", "URL f\u00F6r l\u00F6senord till nyckellager:"},
{"KeyStore.URL.", "KeyStore-&URL:"},
{"KeyStore.Type.", "KeyStore-&typ:"},
{"KeyStore.Provider.", "KeyStore-&leverant\u00F6r:"},
{"KeyStore.Password.URL.", "KeyStore-l\u00F6sen&ords-URL:"},
{"Principals", "Identitetshavare"},
{".Edit.Principal.", " Redigera identitetshavare:"},
{".Add.New.Principal.", " L\u00E4gg till ny identitetshavare:"},
......@@ -117,8 +117,8 @@ public class Resources_sv extends java.util.ListResourceBundle {
"Policy har skrivits till {0}"},
{"null.filename", "nullfilnamn"},
{"Save.changes.", "Vill du spara \u00E4ndringarna?"},
{"Yes", "Ja"},
{"No", "Nej"},
{"Yes", "&Ja"},
{"No", "&Nej"},
{"Policy.Entry", "Policyfel"},
{"Save.Changes", "Spara \u00E4ndringar"},
{"No.Policy.Entry.selected", "Ingen policypost har valts"},
......
......@@ -44,16 +44,16 @@ public class Resources_zh_CN extends java.util.ListResourceBundle {
{"Usage.policytool.options.", "\u7528\u6CD5: policytool [\u9009\u9879]"},
{".file.file.policy.file.location",
" [-file <file>] \u7B56\u7565\u6587\u4EF6\u4F4D\u7F6E"},
{"New", "\u65B0\u5EFA"},
{"Open", "\u6253\u5F00"},
{"Save", "\u4FDD\u5B58"},
{"Save.As", "\u53E6\u5B58\u4E3A"},
{"View.Warning.Log", "\u67E5\u770B\u8B66\u544A\u65E5\u5FD7"},
{"Exit", "\u9000\u51FA"},
{"Add.Policy.Entry", "\u6DFB\u52A0\u7B56\u7565\u6761\u76EE"},
{"Edit.Policy.Entry", "\u7F16\u8F91\u7B56\u7565\u6761\u76EE"},
{"Remove.Policy.Entry", "\u5220\u9664\u7B56\u7565\u6761\u76EE"},
{"Edit", "\u7F16\u8F91"},
{"New", "\u65B0\u5EFA(&N)"},
{"Open", "\u6253\u5F00(&O)..."},
{"Save", "\u4FDD\u5B58(&S)"},
{"Save.As", "\u53E6\u5B58\u4E3A(&A)..."},
{"View.Warning.Log", "\u67E5\u770B\u8B66\u544A\u65E5\u5FD7(&W)"},
{"Exit", "\u9000\u51FA(&X)"},
{"Add.Policy.Entry", "\u6DFB\u52A0\u7B56\u7565\u6761\u76EE(&A)"},
{"Edit.Policy.Entry", "\u7F16\u8F91\u7B56\u7565\u6761\u76EE(&E)"},
{"Remove.Policy.Entry", "\u5220\u9664\u7B56\u7565\u6761\u76EE(&R)"},
{"Edit", "\u7F16\u8F91(&E)"},
{"Retain", "\u4FDD\u7559"},
{"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
......@@ -61,8 +61,8 @@ public class Resources_zh_CN extends java.util.ListResourceBundle {
{"Add.Public.Key.Alias", "\u6DFB\u52A0\u516C\u5171\u5BC6\u94A5\u522B\u540D"},
{"Remove.Public.Key.Alias", "\u5220\u9664\u516C\u5171\u5BC6\u94A5\u522B\u540D"},
{"File", "\u6587\u4EF6"},
{"KeyStore", "\u5BC6\u94A5\u5E93"},
{"File", "\u6587\u4EF6(&F)"},
{"KeyStore", "\u5BC6\u94A5\u5E93(&K)"},
{"Policy.File.", "\u7B56\u7565\u6587\u4EF6:"},
{"Could.not.open.policy.file.policyFile.e.toString.",
"\u65E0\u6CD5\u6253\u5F00\u7B56\u7565\u6587\u4EF6: {0}: {1}"},
......@@ -84,20 +84,20 @@ public class Resources_zh_CN extends java.util.ListResourceBundle {
{"OK.to.overwrite.existing.file.filename.",
"\u786E\u8BA4\u8986\u76D6\u73B0\u6709\u7684\u6587\u4EF6{0}?"},
{"Cancel", "\u53D6\u6D88"},
{"CodeBase.", "CodeBase:"},
{"SignedBy.", "SignedBy:"},
{"Add.Principal", "\u6DFB\u52A0\u4E3B\u7528\u6237"},
{"Edit.Principal", "\u7F16\u8F91\u4E3B\u7528\u6237"},
{"Remove.Principal", "\u5220\u9664\u4E3B\u7528\u6237"},
{"Principals.", "\u4E3B\u7528\u6237:"},
{".Add.Permission", " \u6DFB\u52A0\u6743\u9650"},
{".Edit.Permission", " \u7F16\u8F91\u6743\u9650"},
{"Remove.Permission", "\u5220\u9664\u6743\u9650"},
{"CodeBase.", "CodeBase(&C):"},
{"SignedBy.", "SignedBy(&S):"},
{"Add.Principal", "\u6DFB\u52A0\u4E3B\u7528\u6237(&A)"},
{"Edit.Principal", "\u7F16\u8F91\u4E3B\u7528\u6237(&E)"},
{"Remove.Principal", "\u5220\u9664\u4E3B\u7528\u6237(&R)"},
{"Principals.", "\u4E3B\u7528\u6237(&P):"},
{".Add.Permission", " \u6DFB\u52A0\u6743\u9650(&D)"},
{".Edit.Permission", " \u7F16\u8F91\u6743\u9650(&I)"},
{"Remove.Permission", "\u5220\u9664\u6743\u9650(&M)"},
{"Done", "\u5B8C\u6210"},
{"KeyStore.URL.", "\u5BC6\u94A5\u5E93 URL:"},
{"KeyStore.Type.", "\u5BC6\u94A5\u5E93\u7C7B\u578B:"},
{"KeyStore.Provider.", "\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9:"},
{"KeyStore.Password.URL.", "\u5BC6\u94A5\u5E93\u53E3\u4EE4 URL:"},
{"KeyStore.URL.", "\u5BC6\u94A5\u5E93 URL(&U):"},
{"KeyStore.Type.", "\u5BC6\u94A5\u5E93\u7C7B\u578B(&T):"},
{"KeyStore.Provider.", "\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9(&P):"},
{"KeyStore.Password.URL.", "\u5BC6\u94A5\u5E93\u53E3\u4EE4 URL(&W):"},
{"Principals", "\u4E3B\u7528\u6237"},
{".Edit.Principal.", " \u7F16\u8F91\u4E3B\u7528\u6237:"},
{".Add.New.Principal.", " \u6DFB\u52A0\u65B0\u4E3B\u7528\u6237:"},
......@@ -117,8 +117,8 @@ public class Resources_zh_CN extends java.util.ListResourceBundle {
"\u7B56\u7565\u5DF2\u6210\u529F\u5199\u5165\u5230{0}"},
{"null.filename", "\u7A7A\u6587\u4EF6\u540D"},
{"Save.changes.", "\u662F\u5426\u4FDD\u5B58\u6240\u505A\u7684\u66F4\u6539?"},
{"Yes", "\u662F"},
{"No", "\u5426"},
{"Yes", "\u662F(&Y)"},
{"No", "\u5426(&N)"},
{"Policy.Entry", "\u7B56\u7565\u6761\u76EE"},
{"Save.Changes", "\u4FDD\u5B58\u66F4\u6539"},
{"No.Policy.Entry.selected", "\u6CA1\u6709\u9009\u62E9\u7B56\u7565\u6761\u76EE"},
......
......@@ -44,16 +44,16 @@ public class Resources_zh_TW extends java.util.ListResourceBundle {
{"Usage.policytool.options.", "\u7528\u6CD5: policytool [options]"},
{".file.file.policy.file.location",
" [-file <file>] \u539F\u5247\u6A94\u6848\u4F4D\u7F6E"},
{"New", "\u65B0\u589E"},
{"Open", "\u958B\u555F"},
{"Save", "\u5132\u5B58"},
{"Save.As", "\u53E6\u5B58\u65B0\u6A94"},
{"View.Warning.Log", "\u6AA2\u8996\u8B66\u544A\u8A18\u9304"},
{"Exit", "\u7D50\u675F"},
{"Add.Policy.Entry", "\u65B0\u589E\u539F\u5247\u9805\u76EE"},
{"Edit.Policy.Entry", "\u7DE8\u8F2F\u539F\u5247\u9805\u76EE"},
{"Remove.Policy.Entry", "\u79FB\u9664\u539F\u5247\u9805\u76EE"},
{"Edit", "\u7DE8\u8F2F"},
{"New", "\u65B0\u5EFA(&N)"},
{"Open", "\u958B\u555F(&O)..."},
{"Save", "\u5132\u5B58(&S)"},
{"Save.As", "\u53E6\u5B58\u65B0\u6A94(&A)..."},
{"View.Warning.Log", "\u6AA2\u8996\u8B66\u544A\u8A18\u9304(&W)"},
{"Exit", "\u7D50\u675F(&X)"},
{"Add.Policy.Entry", "\u65B0\u589E\u539F\u5247\u9805\u76EE(&A)"},
{"Edit.Policy.Entry", "\u7DE8\u8F2F\u539F\u5247\u9805\u76EE(&E)"},
{"Remove.Policy.Entry", "\u79FB\u9664\u539F\u5247\u9805\u76EE(&R)"},
{"Edit", "\u7DE8\u8F2F(&E)"},
{"Retain", "\u4FDD\u7559"},
{"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
......@@ -61,8 +61,8 @@ public class Resources_zh_TW extends java.util.ListResourceBundle {
{"Add.Public.Key.Alias", "\u65B0\u589E\u516C\u958B\u91D1\u9470\u5225\u540D"},
{"Remove.Public.Key.Alias", "\u79FB\u9664\u516C\u958B\u91D1\u9470\u5225\u540D"},
{"File", "\u6A94\u6848"},
{"KeyStore", "\u91D1\u9470\u5132\u5B58\u5EAB"},
{"File", "\u6A94\u6848(&F)"},
{"KeyStore", "\u91D1\u9470\u5132\u5B58\u5EAB(&K)"},
{"Policy.File.", "\u539F\u5247\u6A94\u6848: "},
{"Could.not.open.policy.file.policyFile.e.toString.",
"\u7121\u6CD5\u958B\u555F\u539F\u5247\u6A94\u6848: {0}: {1}"},
......@@ -84,20 +84,20 @@ public class Resources_zh_TW extends java.util.ListResourceBundle {
{"OK.to.overwrite.existing.file.filename.",
"\u78BA\u8A8D\u8986\u5BEB\u73FE\u5B58\u7684\u6A94\u6848 {0}\uFF1F"},
{"Cancel", "\u53D6\u6D88"},
{"CodeBase.", "CodeBase:"},
{"SignedBy.", "SignedBy:"},
{"Add.Principal", "\u65B0\u589E Principal"},
{"Edit.Principal", "\u7DE8\u8F2F Principal"},
{"Remove.Principal", "\u79FB\u9664 Principal"},
{"Principals.", "Principal:"},
{".Add.Permission", " \u65B0\u589E\u6B0A\u9650"},
{".Edit.Permission", " \u7DE8\u8F2F\u6B0A\u9650"},
{"Remove.Permission", "\u79FB\u9664\u6B0A\u9650"},
{"CodeBase.", "CodeBase(&C):"},
{"SignedBy.", "SignedBy(&S):"},
{"Add.Principal", "\u65B0\u589E Principal(&A)"},
{"Edit.Principal", "\u7DE8\u8F2F Principal(&E)"},
{"Remove.Principal", "\u79FB\u9664 Principal(&R)"},
{"Principals.", "Principal(&P):"},
{".Add.Permission", " \u65B0\u589E\u6B0A\u9650(&D)"},
{".Edit.Permission", " \u7DE8\u8F2F\u6B0A\u9650(&I)"},
{"Remove.Permission", "\u79FB\u9664\u6B0A\u9650(&M)"},
{"Done", "\u5B8C\u6210"},
{"KeyStore.URL.", "\u91D1\u9470\u5132\u5B58\u5EAB URL: "},
{"KeyStore.Type.", "\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B:"},
{"KeyStore.Provider.", "\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005:"},
{"KeyStore.Password.URL.", "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC URL: "},
{"KeyStore.URL.", "\u91D1\u9470\u5132\u5B58\u5EAB URL(&U): "},
{"KeyStore.Type.", "\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B(&T):"},
{"KeyStore.Provider.", "\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005(&P):"},
{"KeyStore.Password.URL.", "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC URL(&W): "},
{"Principals", "Principal"},
{".Edit.Principal.", " \u7DE8\u8F2F Principal: "},
{".Add.New.Principal.", " \u65B0\u589E Principal: "},
......@@ -117,8 +117,8 @@ public class Resources_zh_TW extends java.util.ListResourceBundle {
"\u539F\u5247\u6210\u529F\u5BEB\u5165\u81F3 {0}"},
{"null.filename", "\u7A7A\u503C\u6A94\u540D"},
{"Save.changes.", "\u5132\u5B58\u8B8A\u66F4\uFF1F"},
{"Yes", "\u662F"},
{"No", "\u5426"},
{"Yes", "\u662F(&Y)"},
{"No", "\u5426(&N)"},
{"Policy.Entry", "\u539F\u5247\u9805\u76EE"},
{"Save.Changes", "\u5132\u5B58\u8B8A\u66F4"},
{"No.Policy.Entry.selected", "\u6C92\u6709\u9078\u53D6\u539F\u5247\u9805\u76EE"},
......
......@@ -45,4 +45,4 @@ out.extracted=extra\u00EDdo: {0}
out.inflated=\ inflado: {0}
out.size=(entrada = {0}) (salida = {1})
usage=Sintaxis: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] archivos...\nOpciones:\n -c crear nuevo archivo\n -t crear la tabla de contenido del archivo\n -x extraer el archive mencionado (o todos) del archivo\n -u actualizar archive existente\n -v generar salida detallada de los datos de salida est\u00E1ndar\n -f especificar nombre de archive de almacenamiento\n -m incluir informaci\u00F3n de manifiesto del archive de manifiesto especificado\n -n realizar normalizaci\u00F3n de Pack200 despu\u00E9s de crear un nuevo archivo\n -e especificar punto de entrada de la aplicaci\u00F3n para la aplicaci\u00F3n aut\u00F3noma \n que se incluye dentro de un archive jar ejecutable\n -0 s\u00F3lo almacenar; no utilizar compresi\u00F3n ZIP\n -M no crear un archive de manifiesto para las entradas\n -i generar informaci\u00F3n de \u00EDndice para los archives jar especificados\n -C cambiar al directorio especificado e incluir el archivo siguiente\nSi alg\u00FAn archivo es un directorio, se procesar\u00E1 de forma recurrente.\nEl nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\nespecifican en el mismo orden que los indicadores 'm', 'f' y 'e'.\n\nEjemplo 1: para archivar archivos de dos clases en un archivo llamado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nEjemplo 2: utilice un archivo de manifiesto existente 'mymanifest' y archive todos los\n archivos del directorio foo/ en 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
usage=Sintaxis: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] archivos...\nOpciones:\n -c crear nuevo archivo\n -t crear la tabla de contenido del archivo\n -x extraer el archive mencionado (o todos) del archivo\n -u actualizar archive existente\n -v generar salida detallada de los datos de salida est\u00E1ndar\n -f especificar nombre de archive de almacenamiento\n -m incluir informaci\u00F3n de manifiesto del archive de manifiesto especificado\n -n realizar normalizaci\u00F3n de Pack200 despu\u00E9s de crear un nuevo archivo\n -e especificar punto de entrada de la aplicaci\u00F3n para la aplicaci\u00F3n aut\u00F3noma \n que se incluye dentro de un archive jar ejecutable\n -0 s\u00F3lo almacenar; no utilizar compresi\u00F3n ZIP\n -M no crear un archive de manifiesto para las entradas\n -i generar informaci\u00F3n de \u00EDndice para los archives jar especificados\n -C cambiar al directorio especificado e incluir el archivo siguiente\nSi alg\u00FAn archivo es un directorio, se procesar\u00E1 de forma recurrente.\nEl nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\nespecifican en el mismo orden que los indicadores 'm', 'f' y 'e'.\n\nEjemplo 1: para archivar archivos de dos clases en un archivo llamado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nEjemplo 2: utilice un archivo de manifiesto existente 'mymanifest' y archive todos los\n archivos del directorio foo/ en 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
......@@ -45,4 +45,4 @@ out.extracted=extra\u00EDdo: {0}
out.inflated=\ inflado: {0}
out.size=(entrada = {0}) (sa\u00EDda= {1})
usage=Uso: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] arquivos ...\nOp\u00E7\u00F5es:\n -c cria novo archive\n -t lista o sum\u00E1rio do archive\n -x extrai arquivos com o nome (ou todos) do arquivo compactado\n -u atualiza o archive existente\n -v gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n -f especifica o nome do archive\n -m inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n -n executa a normaliza\u00E7\u00E3o Pack200 ap\u00F3s a cria\u00E7\u00E3o de um novo archive\n -e especifica o ponto de entrada da aplica\u00E7\u00E3o para aplica\u00E7\u00E3o independente \n empacotada em um arquivo jar execut\u00E1vel\n -0 armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n -M n\u00E3o cria um arquivo de manifesto para as entradas\n -i gera informa\u00E7\u00F5es de \u00EDndice para os arquivos jar especificados\n -C altera para o diret\u00F3rio especificado e inclui o arquivo seguinte\nSe algum arquivo for um diret\u00F3rio, ent\u00E3o ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do archive e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um archive chamado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n arquivos no diret\u00F3rio foo/ na 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
usage=Uso: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] arquivos ...\nOp\u00E7\u00F5es:\n -c cria novo arquivo compactado\n -t lista o sum\u00E1rio do arquivo compactado\n -x extrai arquivos com o nome (ou todos) do arquivo compactado\n -u atualiza o arquivo compactado existente\n -v gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n -f especifica o nome do arquivo do arquivo compactado\n -m inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n -n executa a normaliza\u00E7\u00E3o Pack200 ap\u00F3s a cria\u00E7\u00E3o de um novo arquivo compactado\n -e especifica o ponto de entrada da aplica\u00E7\u00E3o para aplica\u00E7\u00E3o stand-alone \n empacotada em um arquivo jar execut\u00E1vel\n -0 armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n -M n\u00E3o cria um arquivo de manifesto para as entradas\n -i gera informa\u00E7\u00F5es de \u00EDndice para os arquivos especificados\n -C passa para o diret\u00F3rio especificado e inclui o arquivo a seguir\nSe um arquivo tamb\u00E9m for um diret\u00F3rio, ele ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo compactado e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo compactado denominado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n arquivos no diret\u00F3rio foo/ na 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
......@@ -278,4 +278,4 @@ EXPAND=\u5C55\u958B
KBYTES={0} KB
PLOT=\u30D7\u30ED\u30C3\u30C8
VISUALIZE=\u8996\u899A\u5316
ZZ_USAGE_TEXT=\u4F7F\u7528\u65B9\u6CD5: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]\n\n -interval \u66F4\u65B0\u9593\u9694\u3092n\u79D2\u306B\u8A2D\u5B9A\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8\u306F4\u79D2)\n -notile \u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u6700\u521D\u306B\u4E26\u3079\u3066\u8868\u793A\u3057\u306A\u3044(2\u3064\u4EE5\u4E0A\u306E\u63A5\u7D9A\u306B\u3064\u3044\u3066)\n -pluginpath JConsole\u304C\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u53C2\u7167\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u30D1\u30B9\u3092\u6307\u5B9A\u3059\u308B\n -version \u30D7\u30ED\u30B0\u30E9\u30E0\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u5370\u5237\u3059\u308B\n\n connection = pid || host:port || JMX URL (service:jmx:<protocol>://...)\n pid \u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9\u306E\u30D7\u30ED\u30BB\u30B9ID\n host \u30EA\u30E2\u30FC\u30C8\u30FB\u30DB\u30B9\u30C8\u540D\u307E\u305F\u306FIP\u30A2\u30C9\u30EC\u30B9\n port \u30EA\u30E2\u30FC\u30C8\u63A5\u7D9A\u7528\u306E\u30DD\u30FC\u30C8\u756A\u53F7\n\n -J JConsole\u304C\u5B9F\u884C\u4E2D\u306EJava\u4EEE\u60F3\u30DE\u30B7\u30F3\u3078\u306E\n \u5165\u529B\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B
ZZ_USAGE_TEXT=\u4F7F\u7528\u65B9\u6CD5: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]\n\n -interval \u66F4\u65B0\u9593\u9694\u3092n\u79D2\u306B\u8A2D\u5B9A\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8\u306F4\u79D2)\n -notile \u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u6700\u521D\u306B\u4E26\u3079\u3066\u8868\u793A\u3057\u306A\u3044(2\u3064\u4EE5\u4E0A\u306E\u63A5\u7D9A\u306B\u3064\u3044\u3066)\n -pluginpath JConsole\u304C\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u53C2\u7167\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u30D1\u30B9\u3092\u6307\u5B9A\u3059\u308B\n -version \u30D7\u30ED\u30B0\u30E9\u30E0\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3059\u308B\n\n connection = pid || host:port || JMX URL (service:jmx:<protocol>://...)\n pid \u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9\u306E\u30D7\u30ED\u30BB\u30B9ID\n host \u30EA\u30E2\u30FC\u30C8\u30FB\u30DB\u30B9\u30C8\u540D\u307E\u305F\u306FIP\u30A2\u30C9\u30EC\u30B9\n port \u30EA\u30E2\u30FC\u30C8\u63A5\u7D9A\u7528\u306E\u30DD\u30FC\u30C8\u756A\u53F7\n\n -J JConsole\u304C\u5B9F\u884C\u4E2D\u306EJava\u4EEE\u60F3\u30DE\u30B7\u30F3\u3078\u306E\n \u5165\u529B\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B
......@@ -27,7 +27,7 @@
# these are the same as the non-localized level name.
# The following ALL CAPS words should be translated.
ALL=\u5168\u90E8
ALL=\u6240\u6709
# The following ALL CAPS words should be translated.
SEVERE=\u56B4\u91CD
# The following ALL CAPS words should be translated.
......
#
# Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
#
#
# COPYRIGHT AND PERMISSION NOTICE
#
# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
# Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of the Unicode data files and any associated documentation (the "Data
# Files") or Unicode software and any associated documentation (the
# "Software") to deal in the Data Files or Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, and/or sell copies of the Data Files or Software, and
# to permit persons to whom the Data Files or Software are furnished to do
# so, provided that (a) the above copyright notice(s) and this permission
# notice appear with all copies of the Data Files or Software, (b) both the
# above copyright notice(s) and this permission notice appear in associated
# documentation, and (c) there is clear notice in each modified Data File or
# in the Software as well as in the documentation associated with the Data
# File(s) or Software that the data or software has been modified.
#
# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
#
# Except as contained in this notice, the name of a copyright holder shall not
# be used in advertising or otherwise to promote the sale, use or other
# dealings in these Data Files or Software without prior written
# authorization of the copyright holder.
#
# Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
ce=checheno
ik=inupiaque
jv=javan\u00eas
nd=ndebele do norte
nr=ndebele do sul
st=soto do sul
AX=Ilhas Aland
BA=B\u00f3snia-Herzegovina
BH=Bahrain
KP=Cor\u00e9ia do Norte
MK=Maced\u00f4nia
ZW=Zimb\u00e1bue
#
# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
#
# COPYRIGHT AND PERMISSION NOTICE
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
# Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of the Unicode data files and any associated documentation (the "Data
# Files") or Unicode software and any associated documentation (the
# "Software") to deal in the Data Files or Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, and/or sell copies of the Data Files or Software, and
# to permit persons to whom the Data Files or Software are furnished to do
# so, provided that (a) the above copyright notice(s) and this permission
# notice appear with all copies of the Data Files or Software, (b) both the
# above copyright notice(s) and this permission notice appear in associated
# documentation, and (c) there is clear notice in each modified Data File or
# in the Software as well as in the documentation associated with the Data
# File(s) or Software that the data or software has been modified.
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
# Except as contained in this notice, the name of a copyright holder shall not
# be used in advertising or otherwise to promote the sale, use or other
# dealings in these Data Files or Software without prior written
# authorization of the copyright holder.
#Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under the
#Terms of Use in http://www.unicode.org/copyright.html.
#Permission is hereby granted, free of charge, to any person obtaining a copy of
#the Unicode data files and any associated documentation (the "Data Files") or
#Unicode software and any associated documentation (the "Software") to deal in
#the Data Files or Software without restriction, including without limitation
#the rights to use, copy, modify, merge, publish, distribute, and/or sell copies
#of the Data Files or Software, and to permit persons to whom the Data Files or
#Software are furnished to do so, provided that (a) the above copyright notice(s)
#and this permission notice appear with all copies of the Data Files or
#Software, (b) both the above copyright notice(s) and this permission notice
#appear in associated documentation, and (c) there is clear notice in each
#modified Data File or in the Software as well as in the documentation
#associated with the Data File(s) or Software that the data or software has been
#modified.
#THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
#EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
#PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
#THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
#DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
#WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
#OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
#SOFTWARE.
#Except as contained in this notice, the name of a copyright holder shall not be
#used in advertising or otherwise to promote the sale, use or other dealings in
#these Data Files or Software without prior written authorization of the
#copyright holder.
#
# Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
#
af=afrikaans
ce=chechene
cs=checo
et=est\u00f3nio
hi=Hindi
hy=arm\u00e9nio
ig=igbo
ik=Inupiaq
jv=jv
mk=maced\u00f3nio
oc=proven\u00e7al
os=oss\u00e9tico
pl=polaco
sl=esloveno
rm=Romanche
ta=T\u00e2mil
tg=tajique
to=tonga
afa=Afeghani (1927-2002)
ang=Florim das Antilhas Holandesas
art=idioma artifical
awa=Awadhi
bad=Dinar da B\u00f3snia-Herzeg\u00f3vina
bai=bamileke Languages
bam=Marco b\u00f3snio-herzeg\u00f3vino convers\u00edvel
bug=Buginese
cad=D\u00f3lar canadiano
cel=idioma c\u00e9ltico
chn=jarg\u00e3o chinook
cpe=crioulo ou pidgin do ingl\u00eas
cpf=crioulo ou pidgin do franc\u00eas
cpp=crioulo ou pidgin do portugu\u00eas
cus=idioma cuchita
dra=idioma drav\u00edtico
dyu=diula
egy=eg\u00edpcio cl\u00e1ssico
enm=ingl\u00eas medieval
fiu=idioma ugro-fin\u00eas
frm=franc\u00eas medieval
frs=fr\u00edsio oriental
gmh=alem\u00e3o medieval alto
grc=grego cl\u00e1ssico
gsw=alem\u00e3o da Su\u00ed\u00e7a
hsb=sorbiano superior
iba=Iban
khi=khoisan
lez=lezghiano
mga=irland\u00eas, medieval (900-1200)
nah=Nauatle
nds=baixo alem\u00e3o
nic=C\u00f3rdoba nicaraguano
non=norse, old
peo=persa arcaico (aprox. 600-400 a.C.)
pra=idioma pr\u00e1cito
pro=proven\u00e7al, arcaico (at\u00e9 1500)
rom=roman\u00eas
sai=idioma ind\u00edgeno sul-americano
sal=salishan languages
sgn=linguages de sinais
ssa=idioma nilo-sariano
tai=idioma tail\u00e2ndes
tet=T\u00e9tum
tog=togan\u00eas
tyv=tuviniano
wen=idioma s\u00f3rbio
Armn=arm\u00e9nio
Blis=s\u00edmbolos Bliss
Egyd=eg\u00edpcio dem\u00f3tico
Egyh=eg\u00edpcio hier\u00e1tico
Inds=indus
Laoo=Lao
Lina=linear A
Linb=linear B
Sylo=siloti nagri
Tale=tai le
Taml=tamil
Telu=telugu
Xsux=cuneiforme sumero-acadiano
Zxxx=n\u00e3o escrito
Zzzz=inv\u00e1lido ou desconhecido
AE=Emiratos \u00c1rabes Unidos
AI=Anguila
AM=Arm\u00e9nia
AQ=Ant\u00e1rctica
AZ=Azerbeij\u00e3o
BA=B\u00f3snia-Herzegovina
AX=Ilhas \u00c5land
BF=Burkina-Faso
BH=Bahrein
BJ=Benim
BW=Botswana
BY=Bielorr\u00fassia
CC=Ilhas Cocos
CG=Congo-Brazzaville
CM=Camar\u00f5es
CX=Ilha do Natal
CZ=Rep\u00fablica Checa
EE=Est\u00f3nia
EG=Egipto
EH=Sahara Ocidental
ER=Eritreia
EH=Sara Ocidental
FK=Ilhas Falkland
FM=Estados Federados da Micron\u00e9sia
FO=Ilhas Faro\u00e9
GL=Gronel\u00e2ndia
GS=Ilhas South Georgia e South Sandwich
GW=Guin\u00e9-Bissau
HK=Hong Kong - Regi\u00e3o Administrativa Especial da China
HK=Regi\u00e3o Administrativa Especial de Hong Kong
IR=Ir\u00e3o
KE=Qu\u00e9nia
KG=Quirguizist\u00e3o
KN=Saint Kitts e Nevis
KP=Coreia do Norte
KR=Coreia do Sul
KY=Ilhas Caim\u00e3o
KZ=Cazaquist\u00e3o
LA=Lao, Rep\u00fablica Popular Democr\u00e1tica
LA=Laos, Rep\u00fablica Popular Democr\u00e1tica do
LV=Let\u00f3nia
MC=M\u00f3naco
MD=Mold\u00e1via, Rep\u00fablica da
MG=Madag\u00e1scar
MK=Maced\u00f3nia, Rep\u00fablica da
MO=Macau - Regi\u00e3o Administrativa Especial da China
MK=Maced\u00f3nia
MM=Mianmar
MO=Regi\u00e3o Administrativa Especial de Macau
MP=Ilhas Mariana do Norte
MS=Monserrate
MU=Maur\u00edcias
NC=Nova Caled\u00f3nia
PG=Papua Nova Guin\u00e9
NL=Pa\u00edses Baixos
PG=Papu\u00e1sia-Nova Guin\u00e9
PL=Pol\u00f3nia
PS=Territ\u00f3rio Palestiniano
RE=Reunion
QA=Qatar
RO=Rom\u00e9nia
SC=Seicheles
SG=Singapura
SI=Eslov\u00e9nia
SM=S\u00e3o Marino
TC=Ilhas Turcas e Caicos
TD=Tchade
TF=Territ\u00f3rios Franceses a Sul
TJ=Tajiquist\u00e3o
TM=Turquemenist\u00e3o
UM=Ilhas Minor Outlying (E.U.A)
UZ=Uzbaquist\u00e3o
VA=Santa S\u00e9 (Estado da Cidade do Vaticano)
VC=Saint Vincent e Grenadines
VG=Ilhas Virgin Brit\u00e2nicas
VI=Ilhas Virgin E.U.A.
TT=Trindade e Tobago
UZ=Usbequist\u00e3o
VI=Ilhas Virgens E.U.A.
VN=Vietname
YE=I\u00e9men
ZW=Zimbabwe
009=Oce\u00e2nia
015=Norte de \u00c1frica
035=Sudeste Asi\u00e1tico
154=Europa do Norte
......@@ -308,11 +308,7 @@ When a JAR file is signed multiple times, there are multiple \f3\&.SF\fR and \f3
.nf
\f3KEVIN\&.DSA\fP
.fi
.nf
\f3\fR
.fi
.sp
\fINote:\fR It is also possible for a JAR file to have mixed signatures, some generated by the JDK 1\&.1 by the \f3javakey\fR command and others by \f3jarsigner\fR\&. The \f3jarsigner\fR command can be used to sign JAR files that are already signed with the \f3javakey\fR command\&.
.SH OPTIONS
The following sections describe the various \f3jarsigner\fR options\&. Be aware of the following standards:
.TP 0.2i
......@@ -443,7 +439,7 @@ If this option is not specified, then \f3SHA256\fR is used\&. There must either
.br
If the \f3-certs\fR option appears on the command line with the \f3-verify\fR and \f3-verbose\fR options, then the output includes certificate information for each signer of the JAR file\&. This information includes the name of the type of certificate (stored in the \f3\&.DSA\fR file) that certifies the signer\&'s public key, and if the certificate is an X\&.509 certificate (an instance of the \f3java\&.security\&.cert\&.X509Certificate\fR), then the distinguished name of the signer\&.
The keystore is also examined\&. If no keystore value is specified on the command line, then the default keystore file (if any) is checked\&. If the public key certificate for a signer matches an entry in the keystore, then the alias name for the keystore entry for that signer is displayed in parentheses\&. If the signer comes from a JDK 1\&.1 identity database instead of from a keystore, then the alias name displays in brackets instead of parentheses\&.
The keystore is also examined\&. If no keystore value is specified on the command line, then the default keystore file (if any) is checked\&. If the public key certificate for a signer matches an entry in the keystore, then the alias name for the keystore entry for that signer is displayed in parentheses\&.
.TP
-certchain \fIfile\fR
.br
......@@ -797,178 +793,6 @@ If you specify the \f3-certs\fR option with the \f3-verify\fR and \f3-verbose\fR
.fi
.sp
If the certificate for a signer is not an X\&.509 certificate, then there is no distinguished name information\&. In that case, just the certificate type and the alias are shown\&. For example, if the certificate is a PGP certificate, and the alias is \f3bob\fR, then you would get: \f3PGP, (bob)\fR\&.
.SS VERIFICATION\ THAT\ INCLUDES\ IDENTITY\ DATABASE\ SIGNERS
If a JAR file was signed with the JDK 1\&.1 \f3javakey\fR tool, and the signer is an alias in an identity database, then the verification output includes an \f3i\fR\&. If the JAR file was signed by both an alias in an identity database and an alias in a keystore, then both \f3k\fR and \f3i\fR appear\&.
.PP
When the \f3-certs\fR option is used, any identity database aliases are shown in brackets rather than the parentheses used for keystore aliases, for example:
.sp
.nf
\f3 jarsigner \-keystore /working/mystore \-verify \-verbose \-certs writeFile\&.jar\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF\fP
.fi
.nf
\f3 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF\fP
.fi
.nf
\f3 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA\fP
.fi
.nf
\f3 199 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE\&.SF\fP
.fi
.nf
\f3 1013 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE\&.DSA\fP
.fi
.nf
\f3 smki 2752 Fri Sep 26 16:12:30 PDT 1997 writeFile\&.html\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 X\&.509, CN=Jane Smith, OU=Java Software, O=Oracle, L=cup, S=ca, C=us (jane)\fP
.fi
.nf
\f3 X\&.509, CN=Duke, OU=Java Software, O=Oracle, L=cup, S=ca, C=us [duke]\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 s = signature was verified\fP
.fi
.nf
\f3 m = entry is listed in manifest\fP
.fi
.nf
\f3 k = at least one certificate was found in keystore\fP
.fi
.nf
\f3 i = at least one certificate was found in identity scope\fP
.fi
.nf
\f3\fR
.fi
.nf
\f3 jar verified\&.\fP
.fi
.nf
\f3\fR
.fi
.sp
\fINote:\fR The alias \f3duke\fR is in brackets to denote that it is an identity database alias, and not a keystore alias\&.
.SH JDK\ 1\&.1\ COMPATIBILITY
The \f3keytool\fR and \f3jarsigner\fR tools replace the \f3javakey\fR tool in JDK 1\&.1\&. These new tools provide more features than \f3javakey\fR, including the ability to protect the keystore and private keys with passwords, and the ability to verify signatures in addition to generating them\&.
.PP
The new keystore architecture replaces the identity database that \f3javakey\fR created and managed\&. There is no backward compatibility between the keystore format and the database format used by \f3javakey\fR in JDK 1\&.1\&. However, be aware of the following:
.TP 0.2i
\(bu
It is possible to import the information from an identity database into a keystore through the \f3keytool -identitydb\fR command\&.
.TP 0.2i
\(bu
The \f3jarsigner\fR command can sign JAR files that were signed with the \f3javakey\fR command\&.
.TP 0.2i
\(bu
The \f3jarsigner\fR command can verify JAR files signed with \f3javakey\fR\&. The \f3jarsigner\fR command recognizes and can work with signer aliases that are from a JDK 1\&.1 identity database rather than a JDK keystore\&.
.SS UNSIGNED\ JARS
Unsigned JARs have the default privileges that are granted to all code\&.
.SS SIGNED\ JARS
Signed JARs have the privilege configurations based on their JDK 1\&.1\&.\fIn\fR identity and policy file status as described\&. Only trusted identities can be imported into the JDK keystore\&.
.PP
Default Privileges Granted to All Code
Identity in 1\&.1 database: \fINo\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.PP
.PP
Identity in 1\&.1 database: \fINo\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.PP
.PP
Identity in 1\&.1 database: Yes/Untrusted
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.br
See 3 in Notes Regarding Privileges of Signed JARs\&.
.PP
.PP
Identity in 1\&.1 database: Yes/Untrusted
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.br
See 1 and 3 in Notes Regarding Privileges of Signed JARs\&.
.PP
Default Privileges and Policy File Privileges Granted
Identity in 1\&.1 database: \fINo\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.PP
.PP
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.br
See 2 in Notes Regarding Privileges of Signed JARs\&.
.PP
All Privileges Granted
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.PP
.PP
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fIYes\fR
.br
Policy file grants privileges to identity/alias: \fINo\fR
.br
See 1 in Notes Regarding Privileges of Signed JARs\&.
.PP
Identity in 1\&.1 database: \fIYes/Trusted\fR
.br
Trusted identity imported into Java keystore from 1\&.1\&. database: \fINo\fR
.br
Policy file grants privileges to identity/alias: \fIYes\fR
.br
See 1 in Notes Regarding Privileges of Signed JARs\&.
.PP
Notes Regarding Privileges of Signed JARs
.TP 0.4i
1\&.
If an identity or alias is mentioned in the policy file, then it must be imported into the keystore for the policy file to have any effect on privileges granted\&.
.TP 0.4i
2\&.
The policy file/keystore combination has precedence over a trusted identity in the identity database\&.
.TP 0.4i
3\&.
Untrusted identities are ignored in the Java platform\&.
.SH SEE\ ALSO
.TP 0.2i
\(bu
......
......@@ -373,7 +373,7 @@ Performs additional checks for Java Native Interface (JNI) functions\&. Specific
.TP
-Xcomp
.br
Disables interpretation of Java code and compile methods on first invocation\&. By default, the JIT compiler performs 10,000 interpreted method invocations to gather information for efficient compilation\&. To increase compilation performance at the expense of efficiency, use the \f3-Xcomp\fR flag to disable interpreted method invocations\&.
Forces compilation of methods on first invocation\&. By default, the Client VM (\f3-client\fR) performs 1,000 interpreted method invocations and the Server VM (\f3-server\fR) performs 10,000 interpreted method invocations to gather information for efficient compilation\&. Specifying the \f3-Xcomp\fR option disables interpreted method invocations to increase compilation performance at the expense of efficiency\&.
You can also change the number of interpreted method invocations before compilation using the \f3-XX:CompileThreshold\fR option\&.
.TP
......@@ -937,11 +937,9 @@ Sets the minimum free space (in bytes) required for compilation\&. Append the le
.sp
.TP
.nf
-XX:CompileCommand=\fIcommand\fR,\fIclass\fR\&.\fImethod\fR[,\fIoption\fR]
-XX:CompileCommand=\fIcommand\fR,\fImethod\fR[,\fIoption\fR]
.br
.fi
Attaches a line to the \f3\&.hotspot_compiler\fR file with the command for the specific method of the class\&. For example, to exclude the \f3indexOf()\fR method of the \f3String\fR class from being compiled, use the following:
Specifies a command to perform on a method\&. For example, to exclude the \f3indexOf()\fR method of the \f3String\fR class from being compiled, use the following:
.sp
.nf
\f3\-XX:CompileCommand=exclude,java/lang/String\&.indexOf\fP
......@@ -952,12 +950,21 @@ Attaches a line to the \f3\&.hotspot_compiler\fR file with the command for the s
.sp
Note that you must specify the full class name, including all packages and subpackages separated by a slash (\f3/\fR)\&.
Note that the full class name is specified, including all packages and subpackages separated by a slash (\f3/\fR)\&. For easier cut and paste operations, it is also possible to use the method name format produced by the \f3-XX:+PrintCompilation\fR and \f3-XX:+LogCompilation\fR options:
.sp
.nf
\f3\-XX:CompileCommand=exclude,java\&.lang\&.String::indexOf\fP
.fi
.nf
\f3\fP
.fi
.sp
To add several commands, either specify this option multiple times, or separate each argument with the newline separator (\f3\en\fR)\&. To better understand the syntax of the JVM compiler commands, refer to the description of the \f3-XX:CompileCommandFile\fR option, which enables you to specify the file from which to read compiler commands\&. Notice how the syntax of the command file differs rom the syntax of the argument for the \f3-XX:CompileCommand\fR option\&. The commas and periods in the argument are aliases for spaces in the command file, making it easier to pass compiler commands through a shell\&. To pass arguments to \f3-XX:CompileCommand\fR with the same syntax as that used in the command file, you can enclose the argument in quotation marks:
If the method is specified without the signature, the command will be applied to all methods with the specified name\&. However, you can also specify the signature of the method in the class file format\&. In this case, you should enclose the arguments in quotation marks, because otherwise the shell treats the semicolon as command end\&. For example, if you want to exclude only the \f3indexOf(String)\fR method of the \f3String\fR class from being compiled, use the following:
.sp
.nf
\f3\-XX:CompileCommand="exclude java/lang/String indexOf"\fP
\f3\-XX:CompileCommand="exclude,java/lang/String\&.indexOf,(Ljava/lang/String;)I"\fP
.fi
.nf
\f3\fP
......@@ -965,10 +972,10 @@ To add several commands, either specify this option multiple times, or separate
.sp
For easier cut and paste operations, it is also possible to use the method name format produced by the \f3-XX:+PrintCompilation\fR and \f3-XX:+LogCompilation\fR options:
You can also use the asterisk (*) as a wildcard for class and method names\&. For example, to exclude all \f3indexOf()\fR methods in all classes from being compiled, use the following:
.sp
.nf
\f3\-XX:CompileCommand="exclude java\&.lang\&.String::indexOf"\fP
\f3\-XX:CompileCommand=exclude,*\&.indexOf\fP
.fi
.nf
\f3\fP
......@@ -976,14 +983,27 @@ For easier cut and paste operations, it is also possible to use the method name
.sp
The following commands are available:
The commas and periods are aliases for spaces, making it easier to pass compiler commands through a shell\&. You can pass arguments to \f3-XX:CompileCommand\fR using spaces as separators by enclosing the argument in quotation marks:
.sp
.nf
\f3\-XX:CompileCommand="exclude java/lang/String indexOf"\fP
.fi
.nf
\f3\fP
.fi
.sp
Note that after parsing the commands passed on the command line using the \f3-XX:CompileCommand\fR options, the JIT compiler then reads commands from the \f3\&.hotspot_compiler\fR file\&. You can add commands to this file or specify a different file using the \f3-XX:CompileCommandFile\fR option\&.
To add several commands, either specify the \f3-XX:CompileCommand\fR option multiple times, or separate each argument with the newline separator (\f3\en\fR)\&. The following commands are available:
.RS
.TP
break
Set a breakpoint when debugging the JVM to stop at the beginning of compilation of the specified method\&.
.TP
compileonly
Exclude all methods from compilation except for the specified method\&.
Exclude all methods from compilation except for the specified method\&. As an alternative, you can use the \f3-XX:CompileOnly\fR option, which allows to specify several methods\&.
.TP
dontinline
Prevent inlining of the specified method\&.
......@@ -1000,6 +1020,20 @@ Attempt to inline the specified method\&.
log
Exclude compilation logging (with the \f3-XX:+LogCompilation\fR option) for all methods except for the specified method\&. By default, logging is performed for all compiled methods\&.
.TP
option
This command can be used to pass a JIT compilation option to the specified method in place of the last argument (\fIoption\fR)\&. The compilation option is set at the end, after the method name\&. For example, to enable the \f3BlockLayoutByFrequency\fR option for the \f3append()\fR method of the \f3StringBuffer\fR class, use the following:
.sp
.nf
\f3\-XX:CompileCommand=option,java/lang/StringBuffer\&.append,BlockLayoutByFrequency\fP
.fi
.nf
\f3\fP
.fi
.sp
You can specify multiple compilation options, separated by commas or spaces\&.
.TP
print
Print generated assembler code after compilation of the specified method\&.
.TP
......@@ -1018,12 +1052,15 @@ Do not print the compile commands\&. By default, the commands that you specify w
You can suppress this by specifying the \f3-XX:CompileCommand=quiet\fR option before other \f3-XX:CompileCommand\fR options\&.
.RE
.TP
-XX:CompileCommandFile=\fIfilename\fR
.br
Sets the file from which JIT compiler commands are read\&. By default, the \f3\&.hotspot_compiler\fR file is used to store commands performed by the JIT compiler\&.
.RS
The optional last argument (\fIoption\fR) can be used to pass a JIT compilation option to the specified method\&. The compilation option is set at the end, after the method name\&. For example, to enable the \f3BlockLayoutByFrequency\fR option for the \f3append()\fR method of the \f3StringBuffer\fR class, use the following:
Each line in the command file represents a command, a class name, and a method name for which the command is used\&. For example, this line prints assembly code for the \f3toString()\fR method of the \f3String\fR class:
.sp
.nf
\f3\-XX:CompileCommand=option,java/lang/StringBuffer\&.append,BlockLayoutByFrequency\fP
\f3print java/lang/String toString\fP
.fi
.nf
\f3\fP
......@@ -1031,16 +1068,25 @@ The optional last argument (\fIoption\fR) can be used to pass a JIT compilation
.sp
.RE
For more information about specifying the commands for the JIT compiler to perform on methods, see the \f3-XX:CompileCommand\fR option\&.
.TP
-XX:CompileCommandFile=\fIfilename\fR
-XX:CompileOnly=\fImethods\fR
.br
Sets the file from which compiler commands are read\&. By default, the \f3\&.hotspot_compiler\fR file is used to store commands performed by the JVM compiler\&.
Sets the list of methods (separated by commas) to which compilation should be restricted\&. Only the specified methods will be compiled\&. Specify each method with the full class name (including the packages and subpackages)\&. For example, to compile only the \f3length()\fR method of the \f3String\fR class and the \f3size()\fR method of the \f3List\fR class, use the following:
.sp
.nf
\f3\-XX:CompileOnly=java/lang/String\&.length,java/util/List\&.size\fP
.fi
.nf
\f3\fP
.fi
.sp
Each line in the command file represents a command, a class name, and a method name for which the command is used (all three parts are separated by spaces)\&. For example, this line prints assembly code for the \f3toString()\fR method of the \f3String\fR class:
Note that the full class name is specified, including all packages and subpackages separated by a slash (\f3/\fR)\&. For easier cut and paste operations, it is also possible to use the method name format produced by the \f3-XX:+PrintCompilation\fR and \f3-XX:+LogCompilation\fR options:
.sp
.nf
\f3print java/lang/String toString\fP
\f3\-XX:CompileOnly=java\&.lang\&.String::length,java\&.util\&.List::size\fP
.fi
.nf
\f3\fP
......@@ -1048,14 +1094,16 @@ Each line in the command file represents a command, a class name, and a method n
.sp
To add commands to the beginning of the \f3\&.hotspot_compiler\fR file, use the \f3-XX:CompileCommand\fR option\&. Note how the syntax of the command file is different from the syntax of the argument for the \f3-XX:CompileCommand\fR option\&. The commas and periods in the argument are aliases for spaces in the command file, making it easier to pass compiler commands through a shell\&. Although it is possible to pass arguments to \f3-XX:CompileCommand\fR with the same syntax as that used in the command file, you would have to enclose the string argument in quotation marks\&.
.TP
-XX:CompileOnly=\fImethods\fR
.br
Sets the list of methods (separated by commas) to which compilation should be restricted\&. Only the specified methods will be compiled\&. Specify each method with the full class name (including the packages and subpackages)\&. For example, to compile only the \f3length()\fR method of the \f3String\fR class and the \f3size()\fR method of the \f3List\fR class, use the following:
Although wildcards are not supported, you can specify only the class or package name to compile all methods in that class or package, as well as specify just the method to compile methods with this name in any class:
.sp
.nf
\f3\-XX:CompileOnly=java/lang/String\&.length,java/util/List\&.size\fP
\f3\-XX:CompileOnly=java/lang/String\fP
.fi
.nf
\f3\-XX:CompileOnly=java/lang\fP
.fi
.nf
\f3\-XX:CompileOnly=\&.length\fP
.fi
.nf
\f3\fP
......
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 8029354
* @run main/othervm OpenURL
*/
import java.net.*;
import java.io.*;
public class OpenURL {
public static void main (String[] args) throws Exception {
System.setSecurityManager(new SecurityManager());
try {
URL url = new URL ("http://joe@127.0.0.1/a/b");
HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
InputStream is = urlc.getInputStream();
// error will throw exception other than SecurityException
} catch (SecurityException e) {
System.out.println("OK");
}
}
}
......@@ -1847,7 +1847,7 @@ public class TCKLocalDateTime extends AbstractDateTimeTest {
LocalDateTime dt = base.plusMinutes(i);
t = t.plusMinutes(1);
if (t == LocalTime.MIDNIGHT) {
if (t.equals(LocalTime.MIDNIGHT)) {
d = d.plusDays(1);
}
......@@ -2539,7 +2539,7 @@ public class TCKLocalDateTime extends AbstractDateTimeTest {
LocalDateTime dt = base.minusMinutes(i);
t = t.plusMinutes(1);
if (t == LocalTime.MIDNIGHT) {
if (t.equals(LocalTime.MIDNIGHT)) {
d = d.plusDays(1);
}
......
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册