diff --git a/.hgtags b/.hgtags index cbaa3d31764..c32c6439a05 100644 --- a/.hgtags +++ b/.hgtags @@ -102,3 +102,5 @@ aa894c225b1a517b665ac2a58295217ea2245134 jdk7-b124 f658ec2730fa29323c36d23c27e54c7219ef5e16 jdk7-b125 f1df068076986679ea1105532a65529d63a89060 jdk7-b126 f83cd8bd35c678f94e526990e03dc838d0ec2717 jdk7-b127 +7da3f5f30855dec6bf3a86529e87dee883b90c72 jdk7-b128 +6823ea7eb8eb6fab405d7edb7a5c2f690887a2fa jdk7-b129 diff --git a/.hgtags-top-repo b/.hgtags-top-repo index 3e2de35b9c2..4fe77eb16d4 100644 --- a/.hgtags-top-repo +++ b/.hgtags-top-repo @@ -102,3 +102,5 @@ ed6950da30cf1e8904b4bdb034d471647942271f jdk7-b123 5c4df7e992775c102f08e9f1c0a124b324641b70 jdk7-b125 b566d490905691787f8931f69947a92c67c6d5e4 jdk7-b126 bd70f76b0309068f157ae759c36eac8f2c6d098e jdk7-b127 +57d702105b23fb90e40beaf00f8f8aeae5e249e7 jdk7-b128 +a6b015b59fbc2518762c17ccc35702f03ef7713a jdk7-b129 diff --git a/README-builds.html b/README-builds.html index f98260ceca4..b59457c74ab 100644 --- a/README-builds.html +++ b/README-builds.html @@ -921,7 +921,7 @@

Ant

- All OpenJDK builds require access to least Ant 1.6.5. + All OpenJDK builds require access to least Ant 1.7.1. The Ant tool is available from the Ant download site. diff --git a/corba/.hgtags b/corba/.hgtags index 3af1bd0f35e..17e1c755061 100644 --- a/corba/.hgtags +++ b/corba/.hgtags @@ -102,3 +102,5 @@ f90b3e014e831eb4f32ef035a1dad2b8ba87949f jdk7-b124 1ce58c72b7892cb813eb920276c7e7f17a1b79fe jdk7-b125 d7532bcd3742f1576dd07ff9fbb535c9c9a276e9 jdk7-b126 64775e83f4df894355f45555f50c410de6727b4e jdk7-b127 +9baa8f94a11d6c5cab3f9f0e5a20106326d0932e jdk7-b128 +66fa0fcc779296c99746b09efce6109944f82f30 jdk7-b129 diff --git a/corba/make/common/Defs.gmk b/corba/make/common/Defs.gmk index 6d78ecb580e..ade12fb285a 100644 --- a/corba/make/common/Defs.gmk +++ b/corba/make/common/Defs.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1995, 2011, 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 @@ -63,8 +63,8 @@ include $(TOPDIR)/make/common/Defs-$(PLATFORM).gmk # Localizations for the different parts of the product beyond English # -JRE_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK -PLUGIN_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK +JRE_LOCALES = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK +PLUGIN_LOCALES = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK JDK_LOCALES = ja zh_CN # diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_de.properties b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_de.properties index 3ed58f3637a..b33670ea62f 100644 --- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_de.properties +++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2005, 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 @@ -23,85 +23,85 @@ # questions. # -orbd.usage=Syntax: {0} \n\nwobei folgende m\u00f6glich sind:\n -port Aktivierungsport, an dem der ORBD gestartet werden sollte, Standardvorgabe 1049 (optional)\n -defaultdb Verzeichnis f\u00fcr ORBD-Dateien, Standardvorgabe "./orb.db" (optional)\n -serverid Server-ID f\u00fcr ORBD, Standardvorgabe 1 (optional)\n -ORBInitialPort Anfangsport (erforderlich)\n -ORBInitialHost Anf\u00e4nglicher Rechnername (erforderlich)\n +orbd.usage=Verwendung: {0} \n\nwobei folgende m\u00F6glich sind:\n -port Aktivierungsport, an dem der ORBD gestartet werden sollte, Standardwert 1049 (optional)\n -defaultdb Verzeichnis f\u00FCr ORBD-Dateien, Standardwert "./orb.db" (optional)\n -serverid Server-ID f\u00FCr ORBD, Standardwert 1 (optional)\n -ORBInitialPort Anfangsport (erforderlich)\n -ORBInitialHost Anf\u00E4nglicher HostName (erforderlich)\n -servertool.usage=Syntax: {0} \n\nwobei folgende m\u00f6glich sind:\n -ORBInitialPort Anfangsport (erforderlich)\n -ORBInitialHost Anf\u00e4nglicher Rechnername (erforderlich)\n -servertool.banner=\n\nWillkommen beim Java IDL-Server-Tool \nBitte geben Sie an der Eingabeaufforderung Befehle ein. \n -servertool.shorthelp=\n\n\tVerf\u00fcgbare Befehle: \n\t------------------- \n -servertool.baddef=Fehlerhafte Serverdefinition: {0} -servertool.nosuchserver=\tDer Server wurde nicht gefunden. -servertool.helddown=\tServer ist au\u00dfer Betrieb. -servertool.nosuchorb=\tUng\u00fcltige ORB -servertool.serverup=\tServer ist bereits in Betrieb. -servertool.appname=\tAnwendungsname - {0} +servertool.usage=Verwendung: {0} \n\nwobei folgende m\u00F6glich sind:\n -ORBInitialPort Anfangsport (erforderlich)\n -ORBInitialHost Anf\u00E4nglicher HostName (erforderlich)\n +servertool.banner=\n\nWillkommen beim Java IDL-Servertool \nGeben Sie die entsprechenden Befehle im Prompt ein \n +servertool.shorthelp=\n\n\tVerf\u00FCgbare Befehle: \n\t------------------- \n +servertool.baddef=Ung\u00FCltige Serverdefinition: {0} +servertool.nosuchserver=\tServer wurde nicht gefunden. +servertool.helddown=\tServer ist au\u00DFer Betrieb. +servertool.nosuchorb=\tUng\u00FCltiger ORB. +servertool.serverup=\tServer ist bereits hochgefahren. +servertool.appname=\tapplicationName - {0} servertool.name=\tName - {0} -servertool.classpath=\tKlassenpfad - {0} -servertool.args=\tArgs - {0} -servertool.vmargs=\tVmargs - {0} +servertool.classpath=\tclasspath - {0} +servertool.args=\targs - {0} +servertool.vmargs=\tvmargs - {0} servertool.serverid=\tServer-ID - {0} -servertool.servernotrunning=\tServer l\u00e4uft nicht. -servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n +servertool.servernotrunning=\tServer wird nicht ausgef\u00FChrt. +servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n servertool.register1=aktivierbaren Server registrieren -servertool.register2=\tServer registriert (serverid = {0}) -servertool.register3=\tServer registriert, aber au\u00dfer Betrieb (serverid = {0}) -servertool.register4=\tServer bereits registriert (serverid = {0}) +servertool.register2=\tServer registriert (serverid = {0}). +servertool.register3=\tServer registriert, aber au\u00DFer Betrieb (serverid = {0}). +servertool.register4=\tServer bereits registriert (serverid = {0}). servertool.unregister=\n\tunregister [ -serverid | -applicationName ] \n -servertool.unregister1=Registrierung eines registrierten Servers l\u00f6schen -servertool.unregister2=\tServer-Registrierung gel\u00f6scht +servertool.unregister1=Registrierung eines registrierten Servers aufheben +servertool.unregister2=\tServerregistrierung aufgehoben. -servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n -servertool.locate1=Finden von Ports eines speziellen Typs bei einem registrierten Server +servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n +servertool.locate1=Ports eines speziellen Typs f\u00FCr einen registrierten Server finden servertool.locate2=\n\n\tHostname {0} \n\n\t\tPort\t\tPorttyp\t\tORB-ID\n\t\t----\t\t-------\t\t------\n servertool.locateorb=\n\tlocateperorb [ -serverid | -applicationName ] [ -orbid ]\n -servertool.locateorb1=Finden von Ports eines speziellen ORBs bei einem registrierten Server -servertool.locateorb2=\n\n\tHostname {0} \n\n\t\tPort\t\tPorttyp\t\tORB-ID\n\t\t----\t\t-------\t\t------\n +servertool.locateorb1=Ports f\u00FCr einen speziellen ORB bei einem registrierten Server finden +servertool.locateorb2=\n\n\tHostname {0} \n\n\t\tPort\t\tPortType\t\tORB-ID\n\t\t----\t\t-------\t\t------\n servertool.getserverid=\n\tgetserverid [ -applicationName ] \n -servertool.getserverid1=\u00dcbergeben der Server-ID f\u00fcr einen Anwendungsnamen -servertool.getserverid2=\tServer-ID f\u00fcr Anwendungsname {0} ist {1}. +servertool.getserverid1=Server-ID f\u00FCr applicationName zur\u00FCckgeben +servertool.getserverid2=\tServer-ID f\u00FCr applicationName {0} ist {1} servertool.list=\n\tlist\n -servertool.list1=Auflisten aller registrierten Server -servertool.list2=\n\tServer-ID\tServer-Klassenname\t\tServer-Anwendung\n\t---------\t------------------\t\t----------------\n +servertool.list1=alle registrierten Server auflisten +servertool.list2=\n\tServer-ID\tServerklassenname\t\tServeranwendung\n\t---------\t-----------------\t\t------------------\n servertool.listactive=\n\tlistactive -servertool.listactive1=Auflisten der gegenw\u00e4rtig aktiven Server +servertool.listactive1=derzeit aktive Server auflisten servertool.listappnames=\tlistappnames\n -servertool.listappnames1=Auflisten der gegenw\u00e4rtig definierten Anwendungsnamen -servertool.listappnames2=Gegenw\u00e4rtig definierte Serveranwendungsnamen: +servertool.listappnames1=derzeit definierte applicationNames auflisten +servertool.listappnames2=Derzeit definierte Server-applicationNames: servertool.shutdown=\n\tshutdown [ -serverid | -applicationName ]\n -servertool.shutdown1=Herunterfahren eines registrierten Servers -servertool.shutdown2=\tServer erfolgreich heruntergefahren +servertool.shutdown1=registrierten Server herunterfahren +servertool.shutdown2=\tServer erfolgreich heruntergefahren. servertool.startserver=\n\tstartup [ -serverid | -applicationName ]\n -servertool.startserver1=Hochfahren eines registrierten Servers -servertool.startserver2=\tServer erfolgreich hochgefahren +servertool.startserver1=registrierten Server starten +servertool.startserver2=\tServer erfolgreich hochgefahren. servertool.quit=\n\tquit\n -servertool.quit1=Dieses Tool beenden +servertool.quit1=dieses Tool beenden servertool.help=\thelp\n\tOR\n\thelp \n -servertool.help1=Hilfe anfordern +servertool.help1=Hilfe abrufen -servertool.orbidmap=\tSyntax: orblist [ -serverid | -applicationName ]\n +servertool.orbidmap=\\Verwendung: orblist [ -serverid | -applicationName ]\n servertool.orbidmap1=Liste von ORB-Namen und ihren Zuordnungen servertool.orbidmap2=\n\tORB-ID\t\tORB-Name\n\t------\t\t--------\n -pnameserv.success=St\u00e4ndiger Namensserver erfolgreich hochgefahren +pnameserv.success=Persistenter NameServer erfolgreich gestartet -bootstrap.usage=Syntax: {0} \n\nwobei folgende m\u00f6glich sind:\n -ORBInitialPort Erster Port (erforderlich)\n -InitialServicesFile Datei mit Liste von Anfangsdiensten (erforderlich)\n -bootstrap.success=Ein Port wird auf {0} eingestellt, und Dienste werden von {1} gelesen -bootstrap.filenotreadable=Die Datei {0} kann nicht gelesen werden. -bootstrap.filenotfound=Die Datei {0} wurde nicht gefunden. -bootstrap.exception=Beim Speichern von Eigenschaften in Datei {0} wurde eine Ausnahme aufgefangen: Ausnahme {1}. +bootstrap.usage=Verwendung: {0} \n\nwobei folgende m\u00F6glich sind:\n -ORBInitialPort Anf\u00E4nglicher Port (erforderlich)\n -InitialServicesFile Datei mit Liste von anf\u00E4nglichen Services (erforderlich)\n +bootstrap.success=Port wird auf {0} gesetzt, Services werden aus {1} gelesen +bootstrap.filenotreadable=Datei {0} kann nicht gelesen werden +bootstrap.filenotfound=Datei {0} wurde nicht gefunden +bootstrap.exception=Beim Speichern von Eigenschaften in Datei {0} wurde eine Ausnahme abgefangen: Ausnahme {1} -tnameserv.exception=Beim Hochfahren des Bootstrap-Dienstes auf Port {0} wurde eine Ausnahme aufgefangen. -tnameserv.usage=Versuchen Sie, einen anderen Port mit den Befehlszeilenargumenten -ORBInitialPort zu verwenden. -tnameserv.invalidhostoption=ORBInitialHost ist keine g\u00fcltige Option f\u00fcr NameService -tnameserv.orbinitialport0=ORBInitialPort 0 ist keine g\u00fcltige Option f\u00fcr NameService -tnameserv.hs1=Anf\u00e4nglicher Namenskontext:\n{0} -tnameserv.hs2=\u00dcbergangsnamensserver: Port f\u00fcr anf\u00e4ngliche Objektreferenzen wird eingestellt auf: {0} -tnameserv.hs3=Bereit +tnameserv.exception=Beim Hochfahren des Bootstrap-Services auf Port {0} wurde eine Ausnahme abgefangen +tnameserv.usage=Verwenden Sie einen anderen Port mit den Befehlszeilenargumenten -ORBInitialPort +tnameserv.invalidhostoption=ORBInitialHost ist keine g\u00FCltige Option f\u00FCr NameService +tnameserv.orbinitialport0=ORBInitialPort 0 ist keine g\u00FCltige Option f\u00FCr NameService +tnameserv.hs1=Anf\u00E4nglicher Namenskontext:\n{0} +tnameserv.hs2=TransientNameServer: Port f\u00FCr anf\u00E4ngliche Objektreferenzen wird auf {0} gesetzt +tnameserv.hs3=Bereit. -orbd.commfailure=\nORBD konnte nicht gestartet werden, weil ORBinitialPort bereits verwendet wird -orbd.internalexception=\ORBD konnte wegen einer internen Ausnahme nicht gestartet werden. \nM\u00f6gliche Ursachen: \n1. Der angegebene ORBInitialPort oder ORBActivationPort wird bereits verwendet \n2. Keine Berechtigung zum Schreiben von orb.db +orbd.commfailure=\nStart von ORBD nicht erfolgreich, da ORBinitialPort bereits verwendet wird +orbd.internalexception=\nStart von ORBD aufgrund einer internen Ausnahme nicht erfolgreich. \nM\u00F6gliche Ursachen: \n1. Der angegebene ORBInitialPort oder ORBActivationPort wird bereits verwendet \n2. Keine Berechtigung zum Schreiben von orb.db diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_es.properties b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_es.properties index 80cbfcf50c0..12562891caa 100644 --- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_es.properties +++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_es.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2005, 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 @@ -23,24 +23,24 @@ # questions. # -orbd.usage=Sintaxis: {0} \n\ndonde incluye:\n -port Puerto de activaci\u00f3n en el que se debe iniciar el ORBD, el predeterminado es el 1049 (opcional)\n -defaultdb Directorio para los archivos de ORBD, el predeterminado es "./orb.db" (opcional)\n -serverid Identificador de servidor para ORBD, el predeterminado es 1 (opcional)\n -ORBInitialPort Puerto inicial (necesario)\n -ORBInitialHost Nombre de sistema inicial (necesario)\n +orbd.usage=Sintaxis: {0} \n\ndonde incluye:\n -port Puerto de activaci\u00F3n en el que se debe iniciar el ORBD, por defecto es el 1049 (opcional)\n -defaultdb Directorio para los archivos de ORBD, por defecto es "./orb.db" (opcional)\n -serverid Identificador de servidor para ORBD, por defecto es 1 (opcional)\n -ORBInitialPort Puerto inicial (necesario)\n -ORBInitialHost Nombre de host inicial (necesario)\n -servertool.usage=Sintaxis: {0} \n\ndonde incluye:\n -ORBInitialPort Puerto inicial (necesario)\n -ORBInitialHost Nombre de sistema inicial (necesario)\n -servertool.banner=\n\nBienvenido Java IDL Server Tool \nescriba los comandos en el indicador \n +servertool.usage=Sintaxis: {0} \n\ndonde incluye:\n -ORBInitialPort Puerto inicial (necesario)\n -ORBInitialHost Nombre de host inicial (necesario)\n +servertool.banner=\n\nBienvenido a Java IDL Server Tool \nescriba los comandos en la petici\u00F3n de datos \n servertool.shorthelp=\n\n\tComandos disponibles: \n\t------------------- \n -servertool.baddef=Definici\u00f3n de servidor incorrecta: {0} +servertool.baddef=Definici\u00F3n de servidor incorrecta: {0} servertool.nosuchserver=\tno se ha encontrado el servidor. servertool.helddown=\tel servidor se mantiene desconectado. -servertool.nosuchorb=\tORB no v\u00e1lido. -servertool.serverup=\tel servidor ya est\u00e1 conectado. -servertool.appname=\tnombre de aplicaci\u00f3n - {0} -servertool.name=\tnombre - {0} -servertool.classpath=\truta de clase - {0} -servertool.args=\targumentos - {0} -servertool.vmargs=\targumentos de MV - {0} -servertool.serverid=\tidentificador de servidor - {0} -servertool.servernotrunning=\tel servidor no se est\u00e1 ejecutando. -servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n +servertool.nosuchorb=\tORB no v\u00E1lido. +servertool.serverup=\tel servidor ya est\u00E1 conectado. +servertool.appname=\tapplicationName - {0} +servertool.name=\tname - {0} +servertool.classpath=\tclasspath - {0} +servertool.args=\targs - {0} +servertool.vmargs=\tvmargs - {0} +servertool.serverid=\tserver id - {0} +servertool.servernotrunning=\tel servidor no se est\u00E1 ejecutando. +servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n servertool.register1=registrar un servidor que se pueda activar servertool.register2=\tservidor registrado (identificador de servidor = {0}). servertool.register3=\tservidor registrado pero desconectado (identificador de servidor = {0}). @@ -51,57 +51,57 @@ servertool.unregister1=anular el registro de un servidor registrado servertool.unregister2=\tanulado el registro del servidor. servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n -servertool.locate1=localizar puertos de un tipo espec\u00edfico para un servidor registrado -servertool.locate2=\n\n\tNombre de sistema {0} \n\n\t\tPuerto\t\tTipo de puerto\t\tIdentificador ORB\n\t\t----\t\t---------\t\t------\n +servertool.locate1=localizar puertos de un tipo espec\u00EDfico para un servidor registrado +servertool.locate2=\n\n\tNombre de host {0} \n\n\t\tPuerto\t\tTipo de puerto\t\tIdentificador ORB\n\t\t----\t\t---------\t\t------\n servertool.locateorb=\n\tlocateperorb [ -serverid | -applicationName ] [ -orbid ]\n -servertool.locateorb1=localizar puertos para un ORB espec\u00edfico del servidor registrado -servertool.locateorb2=\n\n\tNombre de sistema {0} \n\n\t\tPuerto\t\tTipo de puerto\t\tIdentificador de ORB\n\t\t----\t\t--------\t\t------\n +servertool.locateorb1=localizar puertos para un ORB espec\u00EDfico del servidor registrado +servertool.locateorb2=\n\n\tNombre de host {0} \n\n\t\tPuerto\t\tTipo de puerto\t\tIdentificador de ORB\n\t\t----\t\t--------\t\t------\n servertool.getserverid=\n\tgetserverid [ -applicationName ] \n -servertool.getserverid1=devolver el identificador de servidor para un nombre de aplicaci\u00f3n -servertool.getserverid2=\tIdentificador de servidor para el nombre de aplicaci\u00f3n {0} es {1} +servertool.getserverid1=devolver el identificador de servidor para un valor de applicationName +servertool.getserverid2=\tEl identificador de servidor para applicationName {0} es {1} -servertool.list=\n\tlista\n +servertool.list=\n\tlist\n servertool.list1=enumerar todos los servidores registrados -servertool.list2=\n\tIdentificador de servidor\tNombre de clase del servidor\t\tAplicaci\u00f3n de servidor\n\t-------------------------\t----------------------------\t\t----------------------\n +servertool.list2=\n\tIdentificador de servidor\tNombre de clase del servidor\t\tAplicaci\u00F3n de servidor\n\t-------------------------\t----------------------------\t\t----------------------\n servertool.listactive=\n\tlistactive servertool.listactive1=enumerar los servidores actualmente activos servertool.listappnames=\tlistappnames\n -servertool.listappnames1=enumerar los nombres de aplicaci\u00f3n actualmente definidos -servertool.listappnames2=Nombres de aplicaci\u00f3n de servidor actualmente definidos: +servertool.listappnames1=enumerar los nombres de aplicaci\u00F3n actualmente definidos +servertool.listappnames2=Nombres de aplicaci\u00F3n de servidor actualmente definidos: servertool.shutdown=\n\tshutdown [ -serverid | -applicationName ]\n servertool.shutdown1=apagar un servidor registrado -servertool.shutdown2=\tservidor apagado satisfactoriamente. +servertool.shutdown2=\tservidor apagado correctamente. servertool.startserver=\n\tstartup [ -serverid | -applicationName ]\n servertool.startserver1=iniciar un servidor registrado -servertool.startserver2=\tservidor iniciado satisfactoriamente. +servertool.startserver2=\tservidor iniciado correctamente. -servertool.quit=\n\tsalir\n +servertool.quit=\n\tquit\n servertool.quit1=salir de esta herramienta servertool.help=\thelp\n\tO\n\thelp \n servertool.help1=obtener ayuda servertool.orbidmap=\tSintaxis: orblist [ -serverid | -applicationName ]\n -servertool.orbidmap1=lista de nombres de ORB y su reasignaci\u00f3n +servertool.orbidmap1=lista de nombres de ORB y su asignaci\u00F3n servertool.orbidmap2=\n\tIdentificador de ORB\t\tNombre de ORB\n\t------\t\t--------\n -pnameserv.success=Servidor de nombres constante iniciado satisfactoriamente +pnameserv.success=NameServer constante iniciado correctamente bootstrap.usage=Sintaxis: {0} \n\ndonde incluye:\n -ORBInitialPort Puerto inicial (necesario)\n -InitialServicesFile Archivo que contiene una lista de los servicios iniciales (necesario)\n -bootstrap.success=estableciendo puerto en {0} y leyendo servicios de {1} +bootstrap.success=definiendo puerto en {0} y leyendo servicios de {1} bootstrap.filenotreadable=el archivo {0} no se puede leer bootstrap.filenotfound=no se ha encontrado el archivo {0} -bootstrap.exception=se ha interceptado una excepci\u00f3n al guardar las propiedades en el archivo {0}: Excepci\u00f3n {1} +bootstrap.exception=se ha obtenido una excepci\u00F3n al guardar las propiedades en el archivo {0}: Excepci\u00F3n {1} -tnameserv.exception=se ha interceptado una excepci\u00f3n al iniciar el servicio de rutina de carga en el puerto {0} -tnameserv.usage=intente utilizar un puerto distinto con argumentos de l\u00ednea de comandos -ORBInitialPort -tnameserv.invalidhostoption=ORBInitialHost no es una opci\u00f3n v\u00e1lida para NameService -tnameserv.orbinitialport0=ORBInitialPort 0 no es una opci\u00f3n v\u00e1lida para NameService -tnameserv.hs1=Contexto de asignaci\u00f3n de nombres inicial:\n{0} -tnameserv.hs2=TransientNameServer: estableciendo puerto para referencias a objeto iniciales en: {0} +tnameserv.exception=se ha obtenido una excepci\u00F3n al iniciar el servicio de inicializaci\u00F3n de datos en el puerto {0} +tnameserv.usage=intente utilizar un puerto distinto con argumentos de l\u00EDnea de comandos -ORBInitialPort +tnameserv.invalidhostoption=ORBInitialHost no es una opci\u00F3n v\u00E1lida para NameService +tnameserv.orbinitialport0=ORBInitialPort 0 no es una opci\u00F3n v\u00E1lida para NameService +tnameserv.hs1=Contexto de Nomenclatura Inicial:\n{0} +tnameserv.hs2=TransientNameServer: definiendo puerto para referencias a objeto iniciales en: {0} tnameserv.hs3=Listo. -orbd.commfailure=\nORBD no puede iniciarse porque ORBinitialPort ya est\u00e1 en uso -orbd.internalexception=\nORBD no puede iniciarse debido a una excepci\u00f3n interna. \nCausas posibles: \n1. El ORBInitialPort o el ORBActivationPort especificado ya est\u00e1 en uso \n2. No tiene permiso de escritura para orb.db +orbd.commfailure=\nORBD no puede iniciarse porque ORBinitialPort ya est\u00E1 en uso +orbd.internalexception=\nORBD no puede iniciarse debido a una excepci\u00F3n interna. \nCausas posibles: \n1. El ORBInitialPort o el ORBActivationPort especificado ya est\u00E1 en uso \n2. No tiene permiso de escritura para orb.db diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_fr.properties b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_fr.properties index 331309ae916..b1b64f1f9f3 100644 --- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_fr.properties +++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_fr.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2005, 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 @@ -23,58 +23,58 @@ # questions. # -orbd.usage=Syntaxe : {0} \n\no\u00f9 comprend :\n -port Port d''activation o\u00f9 le ORBD doit \u00eatre d\u00e9marr\u00e9, 1049 par d\u00e9faut (facultatif)\n -defaultdb R\u00e9pertoire des fichiers ORBD, par d\u00e9faut "./orb.db" (facultatif)\n -serverid ID de serveur pour ORBD, 1 (facultatif)\n -ORBInitialPort Port initial (requis)\n -ORBInitialHost Nom d''h\u00f4te initial (requis)\n +orbd.usage=Syntaxe : {0} \n\no\u00F9 comprend :\n -port Port d''activation o\u00F9 l''ORBD doit \u00EAtre d\u00E9marr\u00E9, 1049 par d\u00E9faut (facultatif)\n -defaultdb R\u00E9pertoire des fichiers ORBD, par d\u00E9faut "./orb.db" (facultatif)\n -serverid ID de serveur pour ORBD, 1 par d\u00E9faut (facultatif)\n -ORBInitialPort Port initial (obligatoire)\n -ORBInitialHost Nom d''h\u00F4te initial (obligatoire)\n -servertool.usage=Syntaxe : {0} \n\no\u00f9 comprend :\n -ORBInitialPort Port initial (requis)\n -ORBInitialHost Nom d''h\u00f4te initial (requis)\n -servertool.banner=\n\nBienvenue dans l'outil Java IDL Server Tool \nSp\u00e9cifiez des commandes \u00e0 l'invite \n +servertool.usage=Syntaxe : {0} \n\no\u00F9 comprend :\n -ORBInitialPort Port initial (obligatoire)\n -ORBInitialHost Nom d''h\u00F4te initial (obligatoire)\n +servertool.banner=\n\nBienvenue dans l'outil Java IDL Server Tool \nSp\u00E9cifiez des commandes \u00E0 l'invite \n servertool.shorthelp=\n\n\tCommandes disponibles : \n\t------------------- \n -servertool.baddef=D\u00e9finition de serveur non valide : {0} +servertool.baddef=D\u00E9finition de serveur incorrecte : {0} servertool.nosuchserver=\tce serveur est introuvable. servertool.helddown=\tserveur interrompu. servertool.nosuchorb=\tORB non valide. -servertool.serverup=\tle serveur fonctionne d\u00e9j\u00e0. -servertool.appname=\tNom d''application - {0} -servertool.name=\tnom - {0} +servertool.serverup=\tle serveur fonctionne d\u00E9j\u00E0. +servertool.appname=\tapplicationName - {0} +servertool.name=\tname - {0} servertool.classpath=\tclasspath - {0} servertool.args=\targs - {0} servertool.vmargs=\tvmargs - {0} -servertool.serverid=\tserver id - {0} -servertool.servernotrunning=\tLe serveur ne fonctionne pas. -servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n +servertool.serverid=\tID de serveur - {0} +servertool.servernotrunning=\tle serveur ne fonctionne pas. +servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n servertool.register1=inscrire un serveur activable servertool.register2=\tserveur inscrit (ID serveur = {0}). servertool.register3=\tserveur inscrit mais interrompu (ID serveur = {0}). -servertool.register4=\tserveur d\u00e9j\u00e0 inscrit (ID serveur = {0}). +servertool.register4=\tserveur d\u00E9j\u00E0 inscrit (ID serveur = {0}). servertool.unregister=\n\tunregister [ -serverid | -applicationName ] \n -servertool.unregister1=d\u00e9sinscrire un serveur inscrit -servertool.unregister2=\tserveur d\u00e9sinscrit. +servertool.unregister1=d\u00E9sinscrire un serveur inscrit +servertool.unregister2=\tserveur d\u00E9sinscrit. -servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n -servertool.locate1=rep\u00e9rer des ports de type sp\u00e9cifique d'un serveur inscrit -servertool.locate2=\n\n\tNom d''h\u00f4te {0} \n\n\t\tPort\t\tType de port\t\tID ORB\n\t\t----\t\t---------\t\t------\n +servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n +servertool.locate1=rep\u00E9rer des ports de type sp\u00E9cifique d'un serveur inscrit +servertool.locate2=\n\n\tNom d''h\u00F4te {0} \n\n\t\tPort\t\tType de port\t\tID ORB\n\t\t----\t\t---------\t\t------\n servertool.locateorb=\n\tlocateperorb [ -serverid | -applicationName ] [ -orbid ]\n -servertool.locateorb1=rep\u00e9rer les ports d'un ORB sp\u00e9cifique de serveurs inscrits -servertool.locateorb2=\n\n\tNom d''h\u00f4te {0} \n\n\t\tPort\t\tType de port\t\tID ORB\n\t\t----\t\t--------\t\t------\n +servertool.locateorb1=rep\u00E9rer les ports d'un ORB sp\u00E9cifique de serveur inscrit +servertool.locateorb2=\n\n\tNom d''h\u00F4te {0} \n\n\t\tPort\t\tType de port\t\tID ORB\n\t\t----\t\t--------\t\t------\n servertool.getserverid=\n\tgetserverid [ -applicationName ] \n -servertool.getserverid1=renvoyer l'ID serveur pour un applicationName -servertool.getserverid2=\tL''ID serveur de applicationName {0} est {1} +servertool.getserverid1=renvoyer l'ID serveur pour un nom d'application +servertool.getserverid2=\tL''ID serveur du nom d''application {0} est {1} -servertool.list=\n\tlist +servertool.list=\n\tlist\n servertool.list1=lister tous les serveurs inscrits servertool.list2=\n\tID serveur\tNom de classe serveur\t\tApplication serveur\n\t---------\t-----------------\t\t------------------\n servertool.listactive=\n\tlistactive servertool.listactive1=lister les serveurs actifs servertool.listappnames=\tlistappnames\n -servertool.listappnames1=lister les noms d'application d\u00e9finis -servertool.listappnames2=noms d'application du serveur d\u00e9finis : +servertool.listappnames1=lister les noms d'application d\u00E9finis +servertool.listappnames2=Noms d'application du serveur d\u00E9finis : servertool.shutdown=\n\tshutdown [ -serverid | -applicationName ]\n -servertool.shutdown1=arr\u00eater un serveur inscrit -servertool.shutdown2=\tserveur arr\u00eat\u00e9. +servertool.shutdown1=arr\u00EAter un serveur inscrit +servertool.shutdown2=\tserveur arr\u00EAt\u00E9. servertool.startserver=\n\tstartup [ -serverid | -applicationName ]\n -servertool.startserver1=d\u00e9marrer un serveur inscrit -servertool.startserver2=\tserveur d\u00e9marr\u00e9. +servertool.startserver1=d\u00E9marrer un serveur inscrit +servertool.startserver2=\tserveur d\u00E9marr\u00E9. servertool.quit=\n\tquit\n servertool.quit1=fermer cet outil @@ -83,25 +83,25 @@ servertool.help=\thelp\n\tOR\n\thelp \n servertool.help1=afficher l'aide servertool.orbidmap=\tSyntaxe : orblist [ -serverid | -applicationName ]\n -servertool.orbidmap1=liste des noms orb et de leur mappage +servertool.orbidmap1=liste des noms ORB et de leur mappage servertool.orbidmap2=\n\tID ORB\t\tNom ORB\n\t------\t\t--------\n -pnameserv.success=NameServer persistant d\u00e9marr\u00e9 +pnameserv.success=NameServer persistant d\u00E9marr\u00E9 -bootstrap.usage=Syntaxe : {0} \n\no\u00f9 comprend :\n -ORBInitialPort Port initial (requis)\n -InitialServicesFile Fichier contenant la liste des services initiaux (requis)\n +bootstrap.usage=Syntaxe : {0} \n\no\u00F9 comprend :\n -ORBInitialPort Port initial (obligatoire)\n -InitialServicesFile Fichier contenant la liste des services initiaux (obligatoire)\n bootstrap.success=configuration du port sur {0} et lecture des services de {1} bootstrap.filenotreadable=le fichier {0} n''est pas lisible bootstrap.filenotfound=fichier {0} introuvable -bootstrap.exception=erreur d\u00e9tect\u00e9e pendant l''enregistrement des propri\u00e9t\u00e9s dans le fichier {0} : Erreur {1} +bootstrap.exception=exception d\u00E9tect\u00E9e lors de l''enregistrement des propri\u00E9t\u00E9s dans le fichier {0}. Exception : {1} -tnameserv.exception=Erreur d\u00e9tect\u00e9e pendant le d\u00e9marrage du service d''amor\u00e7age sur le port {0} -tnameserv.usage=essayez un autre port avec les arguments de ligne de commande -ORBInitialPort +tnameserv.exception=exception d\u00E9tect\u00E9e lors du d\u00E9marrage du service bootstrap sur le port {0} +tnameserv.usage=essayez un autre port avec les arguments de ligne de commande -ORBInitialPort tnameserv.invalidhostoption=ORBInitialHost n'est pas une option valide pour NameService tnameserv.orbinitialport0=ORBInitialPort 0 n'est pas une option valide pour NameService -tnameserv.hs1=Contexte d''appellation initial :\n{0} -tnameserv.hs2=TransientNameServer : configuration du port pour des r\u00e9f\u00e9rences d''objet initial \u00e0 : {0} -tnameserv.hs3=Pr\u00eat. +tnameserv.hs1=Contexte de d\u00E9nomination initial :\n{0} +tnameserv.hs2=TransientNameServer : configuration du port pour des r\u00E9f\u00E9rences d''objet initial sur {0} +tnameserv.hs3=Pr\u00EAt. -orbd.commfailure=\nLe d\u00e9marrage de ORBD a \u00e9chou\u00e9 car ORBinitialPort est d\u00e9j\u00e0 utilis\u00e9 -orbd.internalexception=\nLe d\u00e9marrage de ORBD a \u00e9chou\u00e9 \u00e0 cause d'une exception interne. \nCauses possibles\u00a0: \n1. Le ORBInitialPort ou le ORBActivationPort sp\u00e9cifi\u00e9 est d\u00e9j\u00e0 utilis\u00e9 \n2. Pas d'autorisation en \u00e9criture permettant d'\u00e9crire orb.db +orbd.commfailure=\nLe d\u00E9marrage d'ORBD a \u00E9chou\u00E9 car ORBinitialPort est d\u00E9j\u00E0 utilis\u00E9 +orbd.internalexception=\nLe d\u00E9marrage d'ORBD a \u00E9chou\u00E9 en raison d'une exception interne. \nCauses possibles\u00A0: \n1. L'\u00E9l\u00E9ment ORBInitialPort ou ORBActivationPort sp\u00E9cifi\u00E9 est d\u00E9j\u00E0 utilis\u00E9 \n2. Aucune autorisation en \u00E9criture permettant d'\u00E9crire orb.db diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_it.properties b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_it.properties index 699ca04ae01..1ef1814688f 100644 --- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_it.properties +++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_it.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2005, 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 @@ -23,28 +23,28 @@ # questions. # -orbd.usage=Utilizzo: {0} \n\ndove comprende:\n -port Porta di attivazione da cui avviare ORBD, default 1049 (opzionale)\n -defaultdb Directory per i file ORBD, default "./orb.db" (opzionale)\n -serverid Id server per ORBD, default 1 (opzionale)\n -ORBInitialPort Porta iniziale (richiesta)\n -ORBInitialHost Nome host iniziale (richiesto)\n +orbd.usage=Utilizzo: {0} \n\ndove include:\n -port Porta di attivazione da cui avviare ORBD, valore predefinito 1049 (opzionale)\n -defaultdb Directory per i file ORBD, valore predefinito "./orb.db" (opzionale)\n -serverid ID server per ORBD, valore predefinito 1 (opzionale)\n -ORBInitialPort Porta iniziale (richiesta)\n -ORBInitialHost HostName iniziale (richiesto)\n -servertool.usage=Utilizzo: {0} \n\ndove comprende:\n -ORBInitialPort Porta iniziale (richiesta)\n -ORBInitialHost Nome host iniziale (richiesto)\n -servertool.banner=\n\nBenvenuti a Java IDL Server Tool \nimmettere i comandi quando richiesto \n +servertool.usage=Utilizzo: {0} \n\ndove include:\n -ORBInitialPort Porta iniziale (richiesta)\n -ORBInitialHost HostName iniziale (richiesto)\n +servertool.banner=\n\nBenvenuti in Java IDL Server Tool \nimmettere i comandi quando richiesto \n servertool.shorthelp=\n\n\tComandi disponibili:\n\t-------------------- \n servertool.baddef=Definizione server errata: {0} servertool.nosuchserver=\timpossibile trovare il server indicato. -servertool.helddown=\til server \u00e8 mantenuto inattivo. +servertool.helddown=\til server \u00E8 mantenuto inattivo. servertool.nosuchorb=\tORB non valido. -servertool.serverup=\til server \u00e8 gi\u00e0 attivo. -servertool.appname=\tNomeApplicazione - {0} +servertool.serverup=\til server \u00E8 gi\u00E0 attivo. +servertool.appname=\tapplicationName - {0} servertool.name=\tnome - {0} servertool.classpath=\tclasspath - {0} servertool.args=\targom - {0} servertool.vmargs=\targomvm - {0} -servertool.serverid=\tid server - {0} -servertool.servernotrunning=\til server non \u00e8 in funzione. +servertool.serverid=\tID server - {0} +servertool.servernotrunning=\til server non \u00E8 in funzione. servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n servertool.register1=registra un server attivabile servertool.register2=\tserver registrato (idserver = {0}). servertool.register3=\tserver registrato ma mantenuto inattivo (idserver = {0}). -servertool.register4=\tserver gi\u00e0 registrato (idserver = {0}). +servertool.register4=\tserver gi\u00E0 registrato (idserver = {0}). servertool.unregister=\n\tunregister [ -serverid | -applicationName ] \n servertool.unregister1=rimuovi un server registrato. @@ -55,19 +55,19 @@ servertool.locate1=individua le porte di un tipo specifico per un server registr servertool.locate2=\n\n\tNome host {0} \n\n\t\tPorta\t\tTipo porta\t\tId ORB\n\t\t-----\t\t----------\t\t------\n servertool.locateorb=\n\tlocateperorb [ -serverid | -applicationName ] [ -orbid ]\n servertool.locateorb1=individua le porte per un orb specifico di un server registrato -servertool.locateorb2=\n\n\tNome host {0} \n\n\t\tPorta\t\tTipoPorta\t\tId ORB\n\t\t-----\t\t---------\t\t------\n +servertool.locateorb2=\n\n\tNome host {0} \n\n\t\tPorta\t\tPortType\t\tId ORB\n\t\t-----\t\t---------\t\t------\n servertool.getserverid=\n\tgetserverid [ -applicationName ] \n servertool.getserverid1=restituisce l'id server per un applicationName -servertool.getserverid2=\tL''ID server per applicationName {0} \u00e8 {1} +servertool.getserverid2=\tL''ID server per applicationName {0} \u00E8 {1} -servertool.list=\n\tlist\n +servertool.list=\n\tlista\n servertool.list1=elenca tutti i server registrati servertool.list2=\n\tID server\tNome classe server\t\tApplicazione server\n\t---------\t------------------\t\t-------------------\n servertool.listactive=\n\tlistactive -servertool.listactive1=elenca i server attualmente attivi +servertool.listactive1=elenca i server attivi al momento servertool.listappnames=\tlistappnames\n -servertool.listappnames1=elenca gli applicationName attualmente definiti -servertool.listappnames2=applicationName del server attualmente definiti: +servertool.listappnames1=elenca applicationNames definiti al momento +servertool.listappnames2=applicationNames del server definiti al momento: servertool.shutdown=\n\tshutdown [ -serverid | -applicationName ]\n servertool.shutdown1=arresta un server registrato @@ -76,32 +76,32 @@ servertool.startserver=\n\tstartup [ -serverid | -applicationName \n -servertool.help1=get help +servertool.help1=Guida servertool.orbidmap=\tUtilizzo: orblist [ -serverid | -applicationName ]\n -servertool.orbidmap1=elenco dei nomi orb e relativa mappatura +servertool.orbidmap1=lista nomi orb e relativa mappatura servertool.orbidmap2=\n\tId ORB\t\tNome ORB\n\t------\t\t--------\n pnameserv.success=NameServer persistente avviato correttamente -bootstrap.usage=Utilizzo: {0} \n\ndove comprende:\n -ORBInitialPort Porta iniziale (richiesta)\n -InitialServicesFile File contenente l''elenco dei servizi iniziali (richiesto)\n +bootstrap.usage=Utilizzo: {0} \n\ndove include:\n -ORBInitialPort Porta iniziale (richiesta)\n -InitialServicesFile File contenente la lista dei servizi iniziali (richiesto)\n bootstrap.success=impostazione porta su {0} e lettura servizi da {1} in corso -bootstrap.filenotreadable=il file {0} non \u00e8 leggibile +bootstrap.filenotreadable=il file {0} non \u00E8 leggibile bootstrap.filenotfound=impossibile trovare il file {0} -bootstrap.exception=rilevata un''eccezione durante il salvataggio delle propriet\u00e0 nel file {0}: eccezione {1} +bootstrap.exception=rilevata un''eccezione durante il salvataggio delle propriet\u00E0 nel file {0}: eccezione {1} tnameserv.exception=rilevata un''eccezione durante l''avvio del servizio di bootstrap sulla porta {0} tnameserv.usage=utilizzare un'altra porta con gli argomenti di riga di comando -ORBInitialPort -tnameserv.invalidhostoption=ORBInitialHost non \u00e8 un'opzione valida per NameService -tnameserv.orbinitialport0=ORBInitialPort 0 non \u00e8 un'opzione valida per NameService +tnameserv.invalidhostoption=ORBInitialHost non \u00E8 un'opzione valida per NameService +tnameserv.orbinitialport0=ORBInitialPort 0 non \u00E8 un'opzione valida per NameService tnameserv.hs1=Contesto di denominazione iniziale:\n{0} tnameserv.hs2=TransientNameServer: impostazione della porta per i riferimenti degli oggetti iniziali a: {0} tnameserv.hs3=Pronto. -orbd.commfailure=\nImpossibile avviare ORBD perch\u00e9 ORBinitialPort \u00e8 gi\u00e0 in uso -orbd.internalexception=\nImpossibile avviare ORBD a causa di un'eccezione interna. \neCause possibili: \n1. ORBInitialPort o ORBActivationPort specificato gi\u00e0 in uso \n2. Mancanza dei permessi di scrittura per orb.db +orbd.commfailure=\nImpossibile avviare ORBD perch\u00E9 ORBinitialPort \u00E8 gi\u00E0 in uso +orbd.internalexception=\nImpossibile avviare ORBD a causa di un'eccezione interna. \neCause possibili: \n1. ORBInitialPort o ORBActivationPort specificato gi\u00E0 in uso \n2. Non esistono autorizzazioni per scrivere orb.db diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ja.properties b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ja.properties index 77d0309b526..c236f07507b 100644 --- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ja.properties +++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2005, 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 @@ -23,85 +23,85 @@ # questions. # -orbd.usage=\u4f7f\u3044\u65b9: {0} \n\n \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n -port ORBD \u306e\u8d77\u52d5\u30dd\u30fc\u30c8\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 1049 (\u30aa\u30d7\u30b7\u30e7\u30f3)\n -defaultdb ORBD \u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f "./orb.db" (\u30aa\u30d7\u30b7\u30e7\u30f3)\n -serverid ORBD \u306e\u30b5\u30fc\u30d0 Id\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 1 (\u30aa\u30d7\u30b7\u30e7\u30f3)\n -ORBInitialPort \u521d\u671f\u30dd\u30fc\u30c8 (\u5fc5\u9808)\n -ORBInitialHost \u521d\u671f\u30db\u30b9\u30c8\u540d (\u5fc5\u9808)\n +orbd.usage=\u4F7F\u7528\u65B9\u6CD5: {0} \n\n\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -port ORBD\u306E\u8D77\u52D5\u30DD\u30FC\u30C8\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F1049(\u30AA\u30D7\u30B7\u30E7\u30F3)\n -defaultdb ORBD\u30D5\u30A1\u30A4\u30EB\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F"./orb.db"(\u30AA\u30D7\u30B7\u30E7\u30F3)\n -serverid ORBD\u306E\u30B5\u30FC\u30D0\u30FCId\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F1(\u30AA\u30D7\u30B7\u30E7\u30F3)\n -ORBInitialPort \u521D\u671F\u30DD\u30FC\u30C8(\u5FC5\u9808)\n -ORBInitialHost \u521D\u671F\u30DB\u30B9\u30C8\u540D(\u5FC5\u9808)\n -servertool.usage=\u4f7f\u3044\u65b9: {0} \n\n \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n -ORBInitialPort \u521d\u671f\u30dd\u30fc\u30c8 (\u5fc5\u9808)\n -ORBInitialHost \u521d\u671f\u30db\u30b9\u30c8\u540d (\u5fc5\u9808)\n -servertool.banner=\n\nJava IDL Server Tool \u3078\u3088\u3046\u3053\u305d\n\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 \n -servertool.shorthelp=\n\n\t\u4f7f\u7528\u53ef\u80fd\u306a\u30b3\u30de\u30f3\u30c9: \n\t------------------- \n -servertool.baddef=\u4e0d\u6b63\u306a\u30b5\u30fc\u30d0\u5b9a\u7fa9: {0} -servertool.nosuchserver=\t\u6307\u5b9a\u3055\u308c\u305f\u30b5\u30fc\u30d0\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -servertool.helddown=\t\u30b5\u30fc\u30d0\u306f\u505c\u6b62\u3057\u3066\u3044\u307e\u3059\u3002 -servertool.nosuchorb=\tORB \u304c\u7121\u52b9\u3067\u3059\u3002 -servertool.serverup=\t\u30b5\u30fc\u30d0\u306f\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059\u3002 -servertool.appname=\tapplicationName - {0} -servertool.name=\tname - {0} +servertool.usage=\u4F7F\u7528\u65B9\u6CD5: {0} \n\n\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -ORBInitialPort \u521D\u671F\u30DD\u30FC\u30C8(\u5FC5\u9808)\n -ORBInitialHost \u521D\u671F\u30DB\u30B9\u30C8\u540D(\u5FC5\u9808)\n +servertool.banner=\n\nJava IDL Server Tool\u3078\u3088\u3046\u3053\u305D\n\u30D7\u30ED\u30F3\u30D7\u30C8\u306B\u30B3\u30DE\u30F3\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\n +servertool.shorthelp=\n\n\t\u4F7F\u7528\u53EF\u80FD\u306A\u30B3\u30DE\u30F3\u30C9: \n\t------------------- \n +servertool.baddef=\u4E0D\u6B63\u306A\u30B5\u30FC\u30D0\u30FC\u5B9A\u7FA9: {0} +servertool.nosuchserver=\t\u6307\u5B9A\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +servertool.helddown=\t\u30B5\u30FC\u30D0\u30FC\u306F\u505C\u6B62\u3057\u3066\u3044\u307E\u3059\u3002 +servertool.nosuchorb=\tORB\u304C\u7121\u52B9\u3067\u3059\u3002 +servertool.serverup=\t\u30B5\u30FC\u30D0\u30FC\u306F\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059\u3002 +servertool.appname=\tapplicationName - {0} +servertool.name=\tname - {0} servertool.classpath=\tclasspath - {0} -servertool.args=\targs - {0} -servertool.vmargs=\tvmargs - {0} +servertool.args=\targs - {0} +servertool.vmargs=\tvmargs - {0} servertool.serverid=\tserver id - {0} -servertool.servernotrunning=\t\u30b5\u30fc\u30d0\u306f\u7a3c\u52d5\u3057\u3066\u3044\u307e\u305b\u3093\u3002 -servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n -servertool.register1=\u8d77\u52d5\u53ef\u80fd\u306a\u30b5\u30fc\u30d0\u3092\u767b\u9332\u3057\u307e\u3059\u3002 -servertool.register2=\t\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0 (serverid = {0})\u3002 -servertool.register3=\t\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u304c\u8d77\u52d5\u3057\u3066\u3044\u306a\u3044\u30b5\u30fc\u30d0 (serverid = {0})\u3002 -servertool.register4=\t\u767b\u9332\u6e08\u307f\u306e\u30b5\u30fc\u30d0 (serverid = {0})\u3002 +servertool.servernotrunning=\t\u30B5\u30FC\u30D0\u30FC\u306F\u7A3C\u50CD\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n +servertool.register1=\u8D77\u52D5\u53EF\u80FD\u306A\u30B5\u30FC\u30D0\u30FC\u3092\u767B\u9332\u3057\u307E\u3059 +servertool.register2=\t\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC(serverid={0})\u3002 +servertool.register3=\t\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u304C\u8D77\u52D5\u3057\u3066\u3044\u306A\u3044\u30B5\u30FC\u30D0\u30FC(serverid={0})\u3002 +servertool.register4=\t\u767B\u9332\u6E08\u306E\u30B5\u30FC\u30D0\u30FC(serverid={0})\u3002 -servertool.unregister=\n\tunregister [ -serverid | -applicationName ] \n -servertool.unregister1=\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0\u306e\u767b\u9332\u3092\u89e3\u9664\u3057\u307e\u3059\u3002 -servertool.unregister2=\t\u30b5\u30fc\u30d0\u306e\u767b\u9332\u304c\u89e3\u9664\u3055\u308c\u307e\u3057\u305f\u3002 +servertool.unregister=\n\tunregister [ -serverid | -applicationName ]\n +servertool.unregister1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u306E\u767B\u9332\u3092\u89E3\u9664\u3057\u307E\u3059 +servertool.unregister2=\t\u30B5\u30FC\u30D0\u30FC\u306E\u767B\u9332\u304C\u89E3\u9664\u3055\u308C\u307E\u3057\u305F\u3002 -servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n -servertool.locate1=\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0\u306e\u7279\u5b9a\u30bf\u30a4\u30d7\u306e\u30dd\u30fc\u30c8\u3092\u691c\u51fa\u3057\u307e\u3059\u3002 -servertool.locate2=\n\n\t\u30db\u30b9\u30c8\u540d {0} \n\n\t\t\u30dd\u30fc\u30c8\t\t\u30dd\u30fc\u30c8\u30bf\u30a4\u30d7\t\tORB ID\n\t\t------\t\t------------\t\t------\n +servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ]\n +servertool.locate1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u306E\u7279\u5B9A\u30BF\u30A4\u30D7\u306E\u30DD\u30FC\u30C8\u3092\u691C\u51FA\u3057\u307E\u3059 +servertool.locate2=\n\n\t\u30DB\u30B9\u30C8\u540D{0}\n\n\t\t\u30DD\u30FC\u30C8\t\t\u30DD\u30FC\u30C8\u30FB\u30BF\u30A4\u30D7\t\tORB ID\n\t\t------\t\t------------\t\t------\n servertool.locateorb=\n\tlocateperorb [ -serverid | -applicationName ] [ -orbid ]\n -servertool.locateorb1=\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0\u306e\u7279\u5b9a ORB \u306e\u30dd\u30fc\u30c8\u3092\u691c\u51fa\u3057\u307e\u3059\u3002 -servertool.locateorb2=\n\n\t\u30db\u30b9\u30c8\u540d {0} \n\n\t\t\u30dd\u30fc\u30c8\t\t\u30dd\u30fc\u30c8\u30bf\u30a4\u30d7\t\tORB ID\n\t\t------\t\t------------\t\t------\n -servertool.getserverid=\n\tgetserverid [ -applicationName ] \n -servertool.getserverid1=applicationName \u306e\u30b5\u30fc\u30d0 ID \u3092\u8fd4\u3057\u307e\u3059\u3002 -servertool.getserverid2=\tapplicationName {0} \u306e\u30b5\u30fc\u30d0 ID \u306f {1} \u3067\u3059\u3002 +servertool.locateorb1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u306E\u7279\u5B9AORB\u306E\u30DD\u30FC\u30C8\u3092\u691C\u51FA\u3057\u307E\u3059 +servertool.locateorb2=\n\n\t\u30DB\u30B9\u30C8\u540D{0}\n\n\t\t\u30DD\u30FC\u30C8\t\t\u30DD\u30FC\u30C8\u30FB\u30BF\u30A4\u30D7\t\tORB ID\n\t\t------\t\t------------\t\t------\n +servertool.getserverid=\n\tgetserverid [ -applicationName ]\n +servertool.getserverid1=applicationName\u306E\u30B5\u30FC\u30D0\u30FCID\u3092\u8FD4\u3057\u307E\u3059 +servertool.getserverid2=\tapplicationName {0}\u306E\u30B5\u30FC\u30D0\u30FCID\u306F{1}\u3067\u3059 -servertool.list=\n\t\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002\n -servertool.list1=\u767b\u9332\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d0\u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 -servertool.list2=\n\t\u30b5\u30fc\u30d0 Id\t\u30b5\u30fc\u30d0\u306e\u30af\u30e9\u30b9\u540d\t\t\u30b5\u30fc\u30d0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\n\t---------\t----------------\t\t----------------------\n -servertool.listactive=\n\t\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30b5\u30fc\u30d0\u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 -servertool.listactive1=\u73fe\u5728\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30b5\u30fc\u30d0\u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 -servertool.listappnames=\tapplicationNames \u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002\n -servertool.listappnames1=\u73fe\u5728\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b applicationNames \u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 -servertool.listappnames2=\u73fe\u5728\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30b5\u30fc\u30d0 applicationNames: +servertool.list=\n\t\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\n +servertool.list1=\u767B\u9332\u3055\u308C\u305F\u3059\u3079\u3066\u306E\u30B5\u30FC\u30D0\u30FC\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059 +servertool.list2=\n\t\u30B5\u30FC\u30D0\u30FCID\t\u30B5\u30FC\u30D0\u30FC\u306E\u30AF\u30E9\u30B9\u540D\t\t\u30B5\u30FC\u30D0\u30FC\u30FB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\n\t---------\t----------------\t\t----------------------\n +servertool.listactive=\n\t\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B5\u30FC\u30D0\u30FC\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059 +servertool.listactive1=\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B5\u30FC\u30D0\u30FC\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059 +servertool.listappnames=\tapplicationNames\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\n +servertool.listappnames1=\u73FE\u5728\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308BapplicationNames\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059 +servertool.listappnames2=\u73FE\u5728\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u30B5\u30FC\u30D0\u30FCapplicationNames: servertool.shutdown=\n\tshutdown [ -serverid | -applicationName ]\n -servertool.shutdown1=\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002 -servertool.shutdown2=\t\u30b5\u30fc\u30d0\u306e\u505c\u6b62\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002 +servertool.shutdown1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u3092\u505C\u6B62\u3057\u307E\u3059 +servertool.shutdown2=\t\u30B5\u30FC\u30D0\u30FC\u306E\u505C\u6B62\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002 servertool.startserver=\n\tstartup [ -serverid | -applicationName ]\n -servertool.startserver1=\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002 -servertool.startserver2=\t\u30b5\u30fc\u30d0\u306e\u8d77\u52d5\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002 +servertool.startserver1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u3057\u307E\u3059 +servertool.startserver2=\t\u30B5\u30FC\u30D0\u30FC\u306E\u8D77\u52D5\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002 -servertool.quit=\n\tquit\n -servertool.quit1=\u3053\u306e\u30c4\u30fc\u30eb\u3092\u7d42\u4e86\u3057\u307e\u3059\u3002 +servertool.quit=\n\t\u7D42\u4E86\u3057\u307E\u3059\n +servertool.quit1=\u3053\u306E\u30C4\u30FC\u30EB\u3092\u7D42\u4E86\u3057\u307E\u3059 -servertool.help=\thelp\n\t\u307e\u305f\u306f\n\thelp \n -servertool.help1=\u30d8\u30eb\u30d7\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +servertool.help=\thelp\n\t\u307E\u305F\u306F\n\thelp \n +servertool.help1=\u30D8\u30EB\u30D7\u3092\u8868\u793A\u3057\u307E\u3059 -servertool.orbidmap=\t\u4f7f\u3044\u65b9: orblist [ -serverid | -applicationName ]\n -servertool.orbidmap1=ORB \u540d\u304a\u3088\u3073\u305d\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u306e\u30ea\u30b9\u30c8 -servertool.orbidmap2=\n\tORB Id\t\tORB \u540d\n\t------\t\t--------\n -pnameserv.success=\u6301\u7d9a NameServer \u306e\u8d77\u52d5\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002 +servertool.orbidmap=\t\u4F7F\u7528\u65B9\u6CD5: orblist [ -serverid | -applicationName ]\n +servertool.orbidmap1=ORB\u540D\u304A\u3088\u3073\u305D\u306E\u30DE\u30C3\u30D4\u30F3\u30B0\u306E\u30EA\u30B9\u30C8 +servertool.orbidmap2=\n\tORB ID\t\tORB\u540D\n\t------\t\t--------\n +pnameserv.success=\u6301\u7D9ANameServer\u306E\u8D77\u52D5\u306B\u6210\u529F\u3057\u307E\u3057\u305F -bootstrap.usage=\u4f7f\u3044\u65b9: {0} \n\n \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n -ORBInitialPort \u521d\u671f\u30dd\u30fc\u30c8 (\u5fc5\u9808)\n -InitialServicesFile \u521d\u671f\u30b5\u30fc\u30d3\u30b9\u30ea\u30b9\u30c8\u3092\u542b\u3080\u30d5\u30a1\u30a4\u30eb (\u5fc5\u9808)\n -bootstrap.success=\u30dd\u30fc\u30c8\u3092 {0} \u306b\u8a2d\u5b9a\u3057\u3001{1} \u304b\u3089\u30b5\u30fc\u30d3\u30b9\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002 -bootstrap.filenotreadable=\u30d5\u30a1\u30a4\u30eb {0} \u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3002 -bootstrap.filenotfound=\u30d5\u30a1\u30a4\u30eb {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -bootstrap.exception=\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u30d5\u30a1\u30a4\u30eb {0} \u306b\u4fdd\u5b58\u4e2d\u306b\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f: \u4f8b\u5916 {1} +bootstrap.usage=\u4F7F\u7528\u65B9\u6CD5: {0} \n\n\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -ORBInitialPort \u521D\u671F\u30DD\u30FC\u30C8(\u5FC5\u9808)\n -InitialServicesFile \u521D\u671F\u30B5\u30FC\u30D3\u30B9\u30FB\u30EA\u30B9\u30C8\u3092\u542B\u3080\u30D5\u30A1\u30A4\u30EB(\u5FC5\u9808)\n +bootstrap.success=\u30DD\u30FC\u30C8\u3092{0}\u306B\u8A2D\u5B9A\u3057\u3001{1}\u304B\u3089\u30B5\u30FC\u30D3\u30B9\u3092\u8AAD\u307F\u8FBC\u307F\u307E\u3059 +bootstrap.filenotreadable=\u30D5\u30A1\u30A4\u30EB{0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093 +bootstrap.filenotfound=\u30D5\u30A1\u30A4\u30EB{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +bootstrap.exception=\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u30D5\u30A1\u30A4\u30EB{0}\u306B\u4FDD\u5B58\u4E2D\u306B\u4F8B\u5916\u3092\u6355\u6349\u3057\u307E\u3057\u305F: \u4F8B\u5916{1} -tnameserv.exception=\u30dd\u30fc\u30c8 {0} \u3067\u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30b5\u30fc\u30d3\u30b9\u3092\u8d77\u52d5\u4e2d\u306b\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f\u3002 -tnameserv.usage=\u30b3\u30de\u30f3\u30c9\u884c\u5f15\u6570 -ORBInitialPort \u3092\u4f7f\u3063\u3066\u5225\u306e\u30dd\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -tnameserv.invalidhostoption=ORBInitialHost \u306f NameService \u306b\u6709\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -tnameserv.orbinitialport0=ORBInitialPort 0 \u306f NameService \u306b\u6709\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -tnameserv.hs1=\u521d\u671f\u30cd\u30fc\u30df\u30f3\u30b0\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8:\n{0} -tnameserv.hs2=TransientNameServer: \u521d\u671f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u53c2\u7167\u306e\u30dd\u30fc\u30c8\u3092 {0} \u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 -tnameserv.hs3=\u6e96\u5099\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002 +tnameserv.exception=\u30DD\u30FC\u30C8{0}\u3067\u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30B5\u30FC\u30D3\u30B9\u3092\u8D77\u52D5\u4E2D\u306B\u4F8B\u5916\u3092\u6355\u6349\u3057\u307E\u3057\u305F +tnameserv.usage=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570-ORBInitialPort\u3092\u4F7F\u7528\u3057\u3066\u5225\u306E\u30DD\u30FC\u30C8\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044 +tnameserv.invalidhostoption=ORBInitialHost\u306FNameService\u306B\u6709\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +tnameserv.orbinitialport0=ORBInitialPort 0\u306FNameService\u306B\u6709\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +tnameserv.hs1=\u521D\u671F\u30CD\u30FC\u30DF\u30F3\u30B0\u30FB\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8:\n{0} +tnameserv.hs2=TransientNameServer: \u521D\u671F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u53C2\u7167\u306E\u30DD\u30FC\u30C8\u3092{0}\u306B\u8A2D\u5B9A\u3057\u307E\u3059 +tnameserv.hs3=\u6E96\u5099\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\u3002 -orbd.commfailure=\nORBinitialPort \u304c\u4f7f\u7528\u4e2d\u3067\u3042\u308b\u305f\u3081\u3001ORBD \u306e\u8d77\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -orbd.internalexception=\n\u5185\u90e8\u4f8b\u5916\u306e\u305f\u3081\u306b ORBD \u306e\u8d77\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\n\u8003\u3048\u3089\u308c\u308b\u539f\u56e0: \n1. \u6307\u5b9a\u3055\u308c\u305f ORBInitialPort \u307e\u305f\u306f ORBActivationPort \u304c\u4f7f\u7528\u4e2d\n2. orb.db \u3078\u306e\u66f8\u304d\u8fbc\u307f\u6a29\u9650\u304c\u306a\u3044 +orbd.commfailure=\nORBinitialPort\u304C\u4F7F\u7528\u4E2D\u3067\u3042\u308B\u305F\u3081\u3001ORBD\u306E\u8D77\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F +orbd.internalexception=\n\u5185\u90E8\u4F8B\u5916\u306E\u305F\u3081\u306BORBD\u306E\u8D77\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\n\u8003\u3048\u3089\u308C\u308B\u539F\u56E0: \n1. \u6307\u5B9A\u3055\u308C\u305FORBInitialPort\u307E\u305F\u306FORBActivationPort\u304C\u4F7F\u7528\u4E2D\n2. orb.db\u3078\u306E\u66F8\u8FBC\u307F\u6A29\u9650\u304C\u306A\u3044 diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ko.properties b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ko.properties index 616b17ce256..7be6158a9f5 100644 --- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ko.properties +++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ko.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2005, 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 @@ -23,85 +23,85 @@ # questions. # -orbd.usage=\uc0ac\uc6a9\ubc95: {0} <\uc635\uc158> \n\n<\uc635\uc158>\uc5d0 \ub4e4\uc5b4\uac00\ub294 \ud56d\ubaa9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n -port ORBD\uac00 \uc2dc\uc791\ub418\uc5b4\uc57c \ud558\ub294 \ud65c\uc131 \ud3ec\ud2b8\ub85c \uae30\ubcf8\uac12\uc740 1049\uc785\ub2c8\ub2e4(\uc120\ud0dd \uc0ac\ud56d).\n -defaultdb ORBD \ud30c\uc77c\uc758 \ub514\ub809\ud1a0\ub9ac. \uae30\ubcf8\uac12\uc740 "./orb.db"\uc785\ub2c8\ub2e4(\uc120\ud0dd \uc0ac\ud56d).\n -serverid ORBD\uc758 \uc11c\ubc84 ID. \uae30\ubcf8\uac12\uc740 1 \uc785\ub2c8\ub2e4(\uc120\ud0dd \uc0ac\ud56d).\n -ORBInitialPort \ucd08\uae30 \ud3ec\ud2b8(\ud544\uc218)\n -ORBInitialHost \ucd08\uae30 \ud638\uc2a4\ud2b8\uba85(\ud544\uc218)\n +orbd.usage=\uC0AC\uC6A9\uBC95: {0} \n\n\uC5EC\uAE30\uC11C \uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n -port ORBD\uAC00 \uC2DC\uC791\uB418\uC5B4\uC57C \uD558\uB294 \uD65C\uC131 \uD3EC\uD2B8\uB85C, \uAE30\uBCF8\uAC12\uC740 1049\uC785\uB2C8\uB2E4(\uC120\uD0DD \uC0AC\uD56D).\n -defaultdb ORBD \uD30C\uC77C\uC758 \uB514\uB809\uD1A0\uB9AC\uB85C, \uAE30\uBCF8\uAC12\uC740 "./orb.db"\uC785\uB2C8\uB2E4(\uC120\uD0DD \uC0AC\uD56D).\n -serverid ORBD\uC758 \uC11C\uBC84 ID\uB85C, \uAE30\uBCF8\uAC12\uC740 1 \uC785\uB2C8\uB2E4(\uC120\uD0DD \uC0AC\uD56D).\n -ORBInitialPort \uCD08\uAE30 \uD3EC\uD2B8\uC785\uB2C8\uB2E4(\uD544\uC218).\n -ORBInitialHost \uCD08\uAE30 HostName\uC785\uB2C8\uB2E4(\uD544\uC218).\n -servertool.usage=\uc0ac\uc6a9\ubc95: {0} <\uc635\uc158> \n\n<\uc635\uc158>\uc5d0 \ub4e4\uc5b4\uac00\ub294 \ud56d\ubaa9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n -ORBInitialPort \ucd08\uae30 \ud3ec\ud2b8(\ud544\uc218)\n -ORBInitialHost \ucd08\uae30 \ud638\uc2a4\ud2b8\uba85(\ud544\uc218)\n -servertool.banner=\n\nJava IDL \uc11c\ubc84 \ub3c4\uad6c\uc785\ub2c8\ub2e4\n\ud504\ub86c\ud504\ud2b8\uc5d0 \uba85\ub839\uc5b4\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624\n -servertool.shorthelp=\n\n\t\uc0ac\uc6a9 \uac00\ub2a5\ud55c \uba85\ub839\uc5b4: \n\t------------------- \n -servertool.baddef=\uc798\ubabb\ub41c \uc11c\ubc84 \uc815\uc758: {0} -servertool.nosuchserver=\t\ud574\ub2f9 \uc11c\ubc84\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -servertool.helddown=\t\uc11c\ubc84\uac00 \ub2e4\uc6b4\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -servertool.nosuchorb=\t\uc798\ubabb\ub41c ORB. -servertool.serverup=\t\uc11c\ubc84\uac00 \uc774\ubbf8 \uac00\ub3d9\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -servertool.appname=\t\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc774\ub984 - {0} -servertool.name=\t\uc774\ub984 - {0} +servertool.usage=\uC0AC\uC6A9\uBC95: {0} \n\n\uC5EC\uAE30\uC11C \uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n -ORBInitialPort \uCD08\uAE30 \uD3EC\uD2B8\uC785\uB2C8\uB2E4(\uD544\uC218).\n -ORBInitialHost \uCD08\uAE30 HostName\uC785\uB2C8\uB2E4(\uD544\uC218).\n +servertool.banner=\n\nJava IDL \uC11C\uBC84 \uD234 \uC2DC\uC791 \n\uD504\uB86C\uD504\uD2B8\uC5D0 \uBA85\uB839\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624.\n +servertool.shorthelp=\n\n\t\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uBA85\uB839: \n\t------------------- \n +servertool.baddef=\uC798\uBABB\uB41C \uC11C\uBC84 \uC815\uC758: {0} +servertool.nosuchserver=\t\uD574\uB2F9 \uC11C\uBC84\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +servertool.helddown=\t\uC11C\uBC84\uC758 \uC791\uB3D9\uC774 \uC911\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +servertool.nosuchorb=\tORB\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +servertool.serverup=\t\uC11C\uBC84\uAC00 \uC774\uBBF8 \uC791\uB3D9 \uC911\uC785\uB2C8\uB2E4. +servertool.appname=\tapplicationName - {0} +servertool.name=\tname - {0} servertool.classpath=\tclasspath - {0} servertool.args=\targs - {0} servertool.vmargs=\tvmargs - {0} -servertool.serverid=\t\uc11c\ubc84 ID - {0} -servertool.servernotrunning=\t\uc11c\ubc84\uac00 \uc2e4\ud589 \uc911\uc774 \uc544\ub2d9\ub2c8\ub2e4. -servertool.register=\n\n\tregister -server <\uc11c\ubc84 \ud074\ub798\uc2a4 \uc774\ub984> \n\t -applicationName <\ub300\uccb4 \uc11c\ubc84 \uc774\ub984> \n\t -classpath <\uc11c\ubc84\uc758 classpath> \n\t -args <\uc11c\ubc84 \uc778\uc790> \n\t -vmargs <\uc11c\ubc84 Java VM \uc778\uc790>\n -servertool.register1=\ud65c\uc131 \uac00\ub2a5 \uc11c\ubc84 \ub4f1\ub85d -servertool.register2=\t\uc11c\ubc84\uac00 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4(serverid = {0}). -servertool.register3=\t\uc11c\ubc84\uac00 \ub4f1\ub85d\ub418\uc5c8\uc9c0\ub9cc \ub2e4\uc6b4\ub418\uc5c8\uc2b5\ub2c8\ub2e4(serverid = {0}). -servertool.register4=\t\uc11c\ubc84\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4(serverid = {0}). +servertool.serverid=\tserver id - {0} +servertool.servernotrunning=\t\uC11C\uBC84\uAC00 \uC2E4\uD589 \uC911\uC774 \uC544\uB2D9\uB2C8\uB2E4. +servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n +servertool.register1=\uD65C\uC131 \uAC00\uB2A5 \uC11C\uBC84 \uB4F1\uB85D +servertool.register2=\t\uC11C\uBC84\uAC00 \uB4F1\uB85D\uB418\uC5C8\uC2B5\uB2C8\uB2E4(serverid = {0}). +servertool.register3=\t\uC11C\uBC84\uAC00 \uB4F1\uB85D\uB418\uC5C8\uC9C0\uB9CC \uC791\uB3D9\uC774 \uC911\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4(serverid = {0}). +servertool.register4=\t\uC11C\uBC84\uAC00 \uC774\uBBF8 \uB4F1\uB85D\uB418\uC5C8\uC2B5\uB2C8\uB2E4(serverid = {0}). -servertool.unregister=\n\tunregister [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ] \n -servertool.unregister1=\ub4f1\ub85d\ub41c \uc11c\ubc84\uc758 \ub4f1\ub85d\uc744 \ucde8\uc18c\ud569\ub2c8\ub2e4 -servertool.unregister2=\t\uc11c\ubc84\uac00 \ub4f1\ub85d \ucde8\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +servertool.unregister=\n\tunregister [ -serverid | -applicationName ] \n +servertool.unregister1=\uB4F1\uB85D\uB41C \uC11C\uBC84\uC758 \uB4F1\uB85D \uD574\uC81C +servertool.unregister2=\t\uC11C\uBC84\uC758 \uB4F1\uB85D\uC774 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -servertool.locate=\n\tlocate [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ] [ <-endpointType ] \n -servertool.locate1=\ub4f1\ub85d\ub41c \uc11c\ubc84\uc5d0 \ub300\ud55c \ud2b9\uc815 \uc885\ub958\uc758 \ud3ec\ud2b8\ub97c \ucc3e\uc2b5\ub2c8\ub2e4 -servertool.locate2=\n\n\t\ud638\uc2a4\ud2b8 \uc774\ub984 {0} \n\n\t\t\ud3ec\ud2b8\t\t\ud3ec\ud2b8 \uc885\ub958\t\tORB ID\n\t\t----\t\t---------\t\t------\n -servertool.locateorb=\n\tlocateperorb [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ] [ -orbid ]\n -servertool.locateorb1=\ub4f1\ub85d\ub41c \uc11c\ubc84\uc758 \ud2b9\uc815 ORB\uc5d0 \ub300\ud55c \ud3ec\ud2b8\ub97c \ucc3e\uc2b5\ub2c8\ub2e4 -servertool.locateorb2=\n\n\t\ud638\uc2a4\ud2b8 \uc774\ub984 {0} \n\n\t\t\ud3ec\ud2b8\t\t\ud3ec\ud2b8 \uc885\ub958\t\tORB ID\n\t\t----\t\t--------\t\t------\n -servertool.getserverid=\n\tgetserverid [ -applicationName <\uc774\ub984> ] \n -servertool.getserverid1=\uc9c0\uc815\ud55c \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc774\ub984\uc5d0 \ub300\ud55c \uc11c\ubc84 ID\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. -servertool.getserverid2=\t\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc774\ub984 {0}\uc5d0 \ub300\ud55c \uc11c\ubc84 ID\ub294 {1}\uc785\ub2c8\ub2e4. +servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n +servertool.locate1=\uB4F1\uB85D\uB41C \uC11C\uBC84\uC5D0 \uB300\uD55C \uD2B9\uC815 \uC720\uD615\uC758 \uD3EC\uD2B8 \uCC3E\uAE30 +servertool.locate2=\n\n\t\uD638\uC2A4\uD2B8 \uC774\uB984 {0} \n\n\t\t\uD3EC\uD2B8\t\t\uD3EC\uD2B8 \uC720\uD615\t\tORB ID\n\t\t----\t\t---------\t\t------\n +servertool.locateorb=\n\tlocateperorb [ -serverid | -applicationName ] [ -orbid ]\n +servertool.locateorb1=\uB4F1\uB85D\uB41C \uC11C\uBC84\uC5D0 \uB300\uD55C \uD2B9\uC815 ORB\uC758 \uD3EC\uD2B8 \uCC3E\uAE30 +servertool.locateorb2=\n\n\t\uD638\uC2A4\uD2B8 \uC774\uB984 {0} \n\n\t\t\uD3EC\uD2B8\t\tPortType\t\tORB ID\n\t\t----\t\t--------\t\t------\n +servertool.getserverid=\n\tgetserverid [ -applicationName ] \n +servertool.getserverid1=applicationName\uC5D0 \uB300\uD55C \uC11C\uBC84 ID \uBC18\uD658 +servertool.getserverid2=\tapplicationName {0}\uC5D0 \uB300\uD55C \uC11C\uBC84 ID\uB294 {1}\uC785\uB2C8\uB2E4. -servertool.list=\n\t\ubaa9\ub85d\n -servertool.list1=\ub4f1\ub85d\ub41c \uc11c\ubc84\ub97c \ubaa8\ub450 \ub098\uc5f4\ud569\ub2c8\ub2e4. -servertool.list2=\n\t\uc11c\ubc84 ID\t\uc11c\ubc84 \ud074\ub798\uc2a4 \uc774\ub984\t\t\uc11c\ubc84 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\n\t---------\t-----------------\t\t------------------\n +servertool.list=\n\t\uBAA9\uB85D\n +servertool.list1=\uB4F1\uB85D\uB41C \uC11C\uBC84 \uBAA8\uB450 \uB098\uC5F4 +servertool.list2=\n\t\uC11C\uBC84 ID\t\uC11C\uBC84 \uD074\uB798\uC2A4 \uC774\uB984\t\t\uC11C\uBC84 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8\n\t---------\t-----------------\t\t------------------\n servertool.listactive=\n\tlistactive -servertool.listactive1=\ud604\uc7ac\uc758 \ud65c\uc131 \uc11c\ubc84\ub97c \ub098\uc5f4\ud569\ub2c8\ub2e4. +servertool.listactive1=\uD604\uC7AC \uD65C\uC131 \uC11C\uBC84 \uB098\uC5F4 servertool.listappnames=\tlistappnames\n -servertool.listappnames1=\ud604\uc7ac \uc815\uc758\ub41c \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc774\ub984\uc744 \ub098\uc5f4\ud569\ub2c8\ub2e4. -servertool.listappnames2=\ud604\uc7ac \uc815\uc758\ub41c \uc11c\ubc84 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc774\ub984: +servertool.listappnames1=\uD604\uC7AC \uC815\uC758\uB41C applicationNames \uB098\uC5F4 +servertool.listappnames2=\uD604\uC7AC \uC815\uC758\uB41C \uC11C\uBC84 applicationNames: -servertool.shutdown=\n\tshutdown [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ]\n -servertool.shutdown1=\ub4f1\ub85d\ub41c \uc11c\ubc84\ub97c \uc885\ub8cc\ud569\ub2c8\ub2e4. -servertool.shutdown2=\t\uc11c\ubc84\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc885\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -servertool.startserver=\n\tstartup [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ]\n -servertool.startserver1=\ub4f1\ub85d\ub41c \uc11c\ubc84\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4. -servertool.startserver2=\t\uc11c\ubc84\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +servertool.shutdown=\n\tshutdown [ -serverid | -applicationName ]\n +servertool.shutdown1=\uB4F1\uB85D\uB41C \uC11C\uBC84 \uC885\uB8CC +servertool.shutdown2=\t\uC11C\uBC84\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uC885\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +servertool.startserver=\n\tstartup [ -serverid | -applicationName ]\n +servertool.startserver1=\uB4F1\uB85D\uB41C \uC11C\uBC84 \uC2DC\uC791 +servertool.startserver2=\t\uC11C\uBC84\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uC2DC\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4. servertool.quit=\n\tquit\n -servertool.quit1=\uc774 \ub3c4\uad6c\ub97c \uc885\ub8cc\ud569\ub2c8\ub2e4. +servertool.quit1=\uC774 \uD234 \uC885\uB8CC -servertool.help=\thelp\n\t\ub610\ub294\n\thelp <\uba85\ub839\uc5b4 \uc774\ub984>\n -servertool.help1=\ub3c4\uc6c0\ub9d0\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4. +servertool.help=\thelp\n\tOR\n\thelp \n +servertool.help1=\uB3C4\uC6C0\uB9D0 \uD45C\uC2DC -servertool.orbidmap=\tUsage:orblist [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ]\n -servertool.orbidmap1=ORB \uc774\ub984\uacfc \ud574\ub2f9 \ub9e4\ud551\uc744 \ub098\uc5f4\ud569\ub2c8\ub2e4 -servertool.orbidmap2=\n\tORB ID\t\tORB \uc774\ub984\n\t------\t\t--------\n -pnameserv.success=\uc9c0\uc18d \uc774\ub984 \uc11c\ubc84\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4 +servertool.orbidmap=\t\uC0AC\uC6A9\uBC95: orblist [ -serverid | -applicationName ]\n +servertool.orbidmap1=ORB \uC774\uB984\uACFC \uD574\uB2F9 \uB9E4\uD551 \uB098\uC5F4 +servertool.orbidmap2=\n\tORB ID\t\tORB \uC774\uB984\n\t------\t\t--------\n +pnameserv.success=\uC9C0\uC18D NameServer\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uC2DC\uC791\uB428 -bootstrap.usage=\uc0ac\uc6a9\ubc95: {0} <\uc635\uc158> \n\n<\uc635\uc158>\uc5d0 \ub4e4\uc5b4\uac00\ub294 \ud56d\ubaa9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n -ORBInitialPort \ucd08\uae30 \ud3ec\ud2b8(\ud544\uc218)\n -InitialServicesFile \ucd08\uae30 \uc11c\ube44\uc2a4 \ubaa9\ub85d\uc774 \ub4e4\uc5b4 \uc788\ub294 \ud30c\uc77c(\ud544\uc218)\n -bootstrap.success=\ud3ec\ud2b8\ub97c {0}(\uc73c)\ub85c \uc124\uc815\ud558\uace0 {1}\uc5d0\uc11c \uc11c\ube44\uc2a4\ub97c \uc77d\uc2b5\ub2c8\ub2e4 -bootstrap.filenotreadable={0} \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 -bootstrap.filenotfound={0} \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 -bootstrap.exception={0} \ud30c\uc77c\uc5d0 \ub4f1\ub85d \uc815\ubcf4\ub97c \uc800\uc7a5\ud558\ub294 \ub3d9\uc548 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.\uc608\uc678 {1} +bootstrap.usage=\uC0AC\uC6A9\uBC95: {0} \n\n\uC5EC\uAE30\uC11C \uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n -ORBInitialPort \uCD08\uAE30 \uD3EC\uD2B8\uC785\uB2C8\uB2E4(\uD544\uC218).\n -InitialServicesFile \uCD08\uAE30 \uC11C\uBE44\uC2A4 \uBAA9\uB85D\uC774 \uB4E4\uC5B4 \uC788\uB294 \uD30C\uC77C\uC785\uB2C8\uB2E4(\uD544\uC218).\n +bootstrap.success=\uD3EC\uD2B8\uB97C {0}(\uC73C)\uB85C \uC124\uC815\uD558\uACE0 {1}\uC5D0\uC11C \uC11C\uBE44\uC2A4\uB97C \uC77D\uB294 \uC911 +bootstrap.filenotreadable={0} \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +bootstrap.filenotfound={0} \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +bootstrap.exception={0} \uD30C\uC77C\uC5D0 \uC18D\uC131\uC744 \uC800\uC7A5\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {1} \uC608\uC678 \uC0AC\uD56D -tnameserv.exception={0} \ud3ec\ud2b8\uc5d0\uc11c \ubd80\ud2b8\uc2a4\ud2b8\ub7a9 \uc11c\ube44\uc2a4\ub97c \uc2dc\uc791\ud558\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4 -tnameserv.usage=ORBInitialPort <\ud3ec\ud2b8 \ubc88\ud638> \uba85\ub839\uc904 \uc778\uc790\ub85c \ub2e4\ub978 \ud3ec\ud2b8 \uc0ac\uc6a9\uc744 \uc2dc\ub3c4\ud569\ub2c8\ub2e4 -tnameserv.invalidhostoption=ORBInitialHost\ub294 NameService\uc758 \uc720\ud6a8\ud55c \uc635\uc158\uc774 \uc544\ub2d9\ub2c8\ub2e4. -tnameserv.orbinitialport0=ORBInitialPort 0\uc740 NameService\uc758 \uc720\ud6a8\ud55c \uc635\uc158\uc774 \uc544\ub2d9\ub2c8\ub2e4 -tnameserv.hs1=\ucd08\uae30 \uba85\ub839 \ucee8\ud14d\uc2a4\ud2b8:\n{0} -tnameserv.hs2=TransientNameServer:\ucd08\uae30 \uac1d\uccb4 \ucc38\uc870\ub97c \uc704\ud55c \ud3ec\ud2b8 \uc124\uc815: {0} {0} -tnameserv.hs3=\uc900\ube44\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +tnameserv.exception={0} \uD3EC\uD2B8\uC5D0\uC11C \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uC11C\uBE44\uC2A4\uB97C \uC2DC\uC791\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +tnameserv.usage=-ORBInitialPort \uBA85\uB839\uD589 \uC778\uC218\uB85C \uB2E4\uB978 \uD3EC\uD2B8 \uC0AC\uC6A9 \uC2DC\uB3C4 +tnameserv.invalidhostoption=ORBInitialHost\uB294 NameService\uC5D0 \uB300\uD574 \uC801\uD569\uD55C \uC635\uC158\uC774 \uC544\uB2D9\uB2C8\uB2E4. +tnameserv.orbinitialport0=ORBInitialPort 0\uC740 NameService\uC5D0 \uB300\uD574 \uC801\uD569\uD55C \uC635\uC158\uC774 \uC544\uB2D9\uB2C8\uB2E4. +tnameserv.hs1=\uCD08\uAE30 \uC774\uB984 \uC9C0\uC815 \uCEE8\uD14D\uC2A4\uD2B8:\n{0} +tnameserv.hs2=TransientNameServer: \uCD08\uAE30 \uAC1D\uCCB4 \uCC38\uC870\uB97C \uC704\uD55C \uD3EC\uD2B8\uB97C {0}(\uC73C)\uB85C \uC124\uC815\uD558\uB294 \uC911 +tnameserv.hs3=\uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -orbd.commfailure=\nORBinitialPort\uac00 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc774\ubbc0\ub85c ORBD\ub97c \uc2dc\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -orbd.internalexception=\n\ub0b4\ubd80 \uc624\ub958\ub85c \uc778\ud574 ORBD\ub97c \uc2dc\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n\uac00\ub2a5\ud55c \uc774\uc720: \n1. \uc9c0\uc815\ud55c ORBInitialPort \ub610\ub294 ORBActivationPort\uac00 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4.\n2. orb.db\uc744 \uc791\uc131\ud560 \uc4f0\uae30 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +orbd.commfailure=\nORBinitialPort\uAC00 \uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC774\uC5B4\uC11C ORBD \uC2DC\uC791\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +orbd.internalexception=\n\uB0B4\uBD80 \uC608\uC678 \uC0AC\uD56D\uC73C\uB85C \uC778\uD574 ORBD \uC2DC\uC791\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \n\uAC00\uB2A5\uD55C \uC6D0\uC778: \n1. \uC9C0\uC815\uB41C ORBInitialPort \uB610\uB294 ORBActivationPort\uAC00 \uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC785\uB2C8\uB2E4.\n2. orb.db\uB97C \uC4F8 \uC218 \uC788\uB294 \uC4F0\uAE30 \uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_pt_BR.properties b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_pt_BR.properties index 7fc4dddab18..eeeb083abae 100644 --- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_pt_BR.properties +++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_pt_BR.properties @@ -1,5 +1,5 @@ - -# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. +# +# Copyright (c) 2000, 2005, 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 @@ -23,85 +23,85 @@ # questions. # -orbd.usage=Uso: {0} \n\nem que inclui:\n -port porta de ativa\u00e7\u00e3o na qual o ORBD deve ser iniciado, padr\u00e3o 1049 (opcional)\n -defaultdb diret\u00f3rio dos arquivos ORBD, padr\u00e3o "./orb.db" (opcional)\n -serverid id do servidor para ORBD, padr\u00e3o 1 (opcional)\n -ORBInitialPort porta inicial (necess\u00e1rio)\n -ORBInitialHost nome de host inicial (necess\u00e1rio)\n +orbd.usage=Uso: {0} \n\nem que inclui:\n -port porta de ativa\u00E7\u00E3o na qual o ORBD deve ser iniciado, default 1049 (opcional)\n -defaultdb diret\u00F3rio dos arquivos ORBD, default "./orb.db" (opcional)\n -serverid id do servidor para ORBD, default 1 (opcional)\n -ORBInitialPort porta inicial (necess\u00E1rio)\n -ORBInitialHost nome de host inicial (necess\u00E1rio)\n -servertool.usage=Uso: {0} \n\nem que inclui:\n -ORBInitialPort porta inicial (necess\u00e1rio)\n -ORBInitialHost nome de host inicial (necess\u00e1rio)\n -servertool.banner=\n\nBem-vindo a ferramenta de servidor IDL Java \ninsira os comandos no prompt \n -servertool.shorthelp=\n\n\tComandos dispon\u00edveis: \n\t------------------- \n -servertool.baddef=Servidor mal definido: {0} -servertool.nosuchserver=\tservidor n\u00e3o encontrado. -servertool.helddown=\to servidor est\u00e1 em espera. -servertool.nosuchorb=\tORB inv\u00e1lido. -servertool.serverup=\to servidor j\u00e1 est\u00e1 ativo. +servertool.usage=Uso: {0} \n\nem que inclui:\n -ORBInitialPort porta inicial (necess\u00E1rio)\n -ORBInitialHost nome de host inicial (necess\u00E1rio)\n +servertool.banner=\n\nBem-vindo \u00E0 Ferramenta de Servidor IDL Java \ninsira os comandos no prompt \n +servertool.shorthelp=\n\n\tComandos Dispon\u00EDveis: \n\t------------------- \n +servertool.baddef=Defini\u00E7\u00E3o do servidor inv\u00E1lida: {0} +servertool.nosuchserver=\tservidor n\u00E3o encontrado. +servertool.helddown=\to servidor est\u00E1 em espera. +servertool.nosuchorb=\tORB inv\u00E1lido. +servertool.serverup=\to servidor j\u00E1 est\u00E1 ativo. servertool.appname=\tapplicationName - {0} servertool.name=\tname - {0} servertool.classpath=\tclasspath - {0} servertool.args=\targs - {0} servertool.vmargs=\tvmargs - {0} servertool.serverid=\tserver id - {0} -servertool.servernotrunning=\to servidor n\u00e3o est\u00e1 em execu\u00e7\u00e3o. +servertool.servernotrunning=\to servidor n\u00E3o est\u00E1 em execu\u00E7\u00E3o. servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n -servertool.register1=registra um servidor ativ\u00e1vel +servertool.register1=registra um servidor ativ\u00E1vel servertool.register2=\tservidor registrado (serverid = {0}). servertool.register3=\tservidor registrado, mas em espera (serverid = {0}). -servertool.register4=\tservidor j\u00e1 registrado (serverid = {0}). +servertool.register4=\tservidor j\u00E1 registrado (serverid = {0}). servertool.unregister=\n\tunregister [ -serverid | -applicationName ] \n servertool.unregister1=cancela o registro de um servidor registrado -servertool.unregister2=\tservidor n\u00e3o registrado. +servertool.unregister2=\tservidor n\u00E3o registrado. servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n -servertool.locate1=localiza portas de tipo espec\u00edfico para um servidor registrado -servertool.locate2=\n\n\tNome do host {0} \n\n\t\tPorta\t\tTipo de porta\t\tId do ORB\n\t\t----\t\t---------\t\t------\n +servertool.locate1=localiza portas de tipo espec\u00EDfico para um servidor registrado +servertool.locate2=\n\n\tNome do Host {0} \n\n\t\tPorta\t\tTipo de Porta\t\tId do ORB\n\t\t----\t\t---------\t\t------\n servertool.locateorb=\n\tlocateperorb [ -serverid | -applicationName ] [ -orbid ]\n -servertool.locateorb1=localiza portas para um orb espec\u00edfico de servidor registrado -servertool.locateorb2=\n\n\tNome do host {0} \n\n\t\tPorta\t\tTipo de porta\t\tId do ORB\n\t\t----\t\t--------\t\t------\n +servertool.locateorb1=localiza portas para um orb espec\u00EDfico de servidor registrado +servertool.locateorb2=\n\n\tNome do Host {0} \n\n\t\tPorta\t\tTipo de Porta\t\tId do ORB\n\t\t----\t\t--------\t\t------\n servertool.getserverid=\n\tgetserverid [ -applicationName ] \n servertool.getserverid1=retorna o id do servidor de um applicationName -servertool.getserverid2=\tID do servidor de applicationName {0} \u00e9 {1} +servertool.getserverid2=\tID do Servidor de applicationName {0} \u00E9 {1} servertool.list=\n\tlist\n servertool.list1=lista todos os servidores registrados -servertool.list2=\n\tId do servidor\tNome de classe do servidor\t\tAplicativo do servidor\n\t---------\t-----------------\t\t------------------\n +servertool.list2=\n\tId do Servidor\tNome de Classe do Servidor\t\tAplica\u00E7\u00E3o do Servidor\n\t---------\t-----------------\t\t------------------\n servertool.listactive=\n\tlistactive servertool.listactive1=lista os servidores atualmente ativos servertool.listappnames=\tlistappnames\n servertool.listappnames1=lista os applicationNames atualmente definidos -servertool.listappnames2=applicationNames do servidor atualmente definidos: +servertool.listappnames2=applicationNames do servidor definidos atualmente: servertool.shutdown=\n\tshutdown [ -serverid | -applicationName ]\n -servertool.shutdown1=desliga um servidor registrado -servertool.shutdown2=\tservidor desligado com \u00eaxito. +servertool.shutdown1=faz shutdown de um servidor registrado +servertool.shutdown2=\tshutdown do servidor bem-sucedido. servertool.startserver=\n\tstartup [ -serverid | -applicationName ]\n servertool.startserver1=inicia um servidor registrado -servertool.startserver2=\tservidor iniciado com \u00eaxito. +servertool.startserver2=\tservidor iniciado com \u00EAxito. servertool.quit=\n\tquit\n servertool.quit1=sai desta ferramenta servertool.help=\thelp\n\tOR\n\thelp \n -servertool.help1=obt\u00e9m ajuda +servertool.help1=obt\u00E9m ajuda servertool.orbidmap=\tUso: orblist [ -serverid | -applicationName ]\n servertool.orbidmap1=lista de nomes de orb e seus mapeamentos servertool.orbidmap2=\n\tId de ORB\t\tNome de ORB\n\t------\t\t--------\n -pnameserv.success=NameServer persistente iniciado com \u00eaxito +pnameserv.success=NameServer Persistente Iniciado com \u00CAxito -bootstrap.usage=Uso: {0} \n\nem que inclui:\n -ORBInitialPort porta inicial (necess\u00e1rio)\n -InitialServicesFile arquivo que cont\u00e9m a lista de servi\u00e7os iniciais (necess\u00e1rio)\n -bootstrap.success=configurando porta para {0} e lendo servi\u00e7os de {1} -bootstrap.filenotreadable=o arquivo {0} n\u00e3o \u00e9 leg\u00edvel -bootstrap.filenotfound=arquivo {0} n\u00e3o encontrado -bootstrap.exception=exce\u00e7\u00e3o capturada ao salvar as propriedades no arquivo {0}: Exce\u00e7\u00e3o {1} +bootstrap.usage=Uso: {0} \n\nem que inclui:\n -ORBInitialPort porta inicial (necess\u00E1rio)\n -InitialServicesFile arquivo que cont\u00E9m a lista de servi\u00E7os iniciais (necess\u00E1rio)\n +bootstrap.success=definindo porta para {0} e lendo servi\u00E7os de {1} +bootstrap.filenotreadable=o arquivo {0} n\u00E3o \u00E9 leg\u00EDvel +bootstrap.filenotfound=arquivo {0} n\u00E3o encontrado +bootstrap.exception=exce\u00E7\u00E3o capturada ao salvar as propriedades no Arquivo {0}: exce\u00E7\u00E3o {1} -tnameserv.exception=uma exce\u00e7\u00e3o capturada ao iniciar o servi\u00e7o de inicializa\u00e7\u00e3o na porta {0} -tnameserv.usage=tente usar outra porta com os argumentos de linha de comando -ORBInitialPort -tnameserv.invalidhostoption=ORBInitialHost n\u00e3o \u00e9 uma op\u00e7\u00e3o v\u00e1lida para NameService -tnameserv.orbinitialport0=ORBInitialPort 0 n\u00e3o \u00e9 uma op\u00e7\u00e3o v\u00e1lida para NameService -tnameserv.hs1=Contexto de nomea\u00e7\u00e3o inicial:\n{0} -tnameserv.hs2=TransientNameServer: definindo porta para as refer\u00eancias de objeto iniciais: {0} +tnameserv.exception=uma exce\u00E7\u00E3o capturada ao iniciar o servi\u00E7o de inicializa\u00E7\u00E3o na porta {0} +tnameserv.usage=tente usar outra porta com os argumentos de linha de comandos -ORBInitialPort +tnameserv.invalidhostoption=ORBInitialHost n\u00E3o \u00E9 uma op\u00E7\u00E3o v\u00E1lida para NameService +tnameserv.orbinitialport0=ORBInitialPort 0 n\u00E3o \u00E9 uma op\u00E7\u00E3o v\u00E1lida para NameService +tnameserv.hs1=Contexto de Nomea\u00E7\u00E3o Inicial:\n{0} +tnameserv.hs2=TransientNameServer: definindo porta para as refer\u00EAncias de objeto iniciais: {0} tnameserv.hs3=Pronto. -orbd.commfailure=\nFalha ao iniciar ORBD porque ORBinitialPort j\u00e1 est\u00e1 em uso -orbd.internalexception=\nFalha ao iniciar ORBD devido a uma exce\u00e7\u00e3o interna. \nPoss\u00edveis causas: \n1. ORBInitialPort especificado ou ORBActivationPort j\u00e1 em uso \n2. Sem permiss\u00e3o de grava\u00e7\u00e3o para gravar orb.db +orbd.commfailure=\nFalha ao iniciar ORBD porque ORBinitialPort j\u00E1 est\u00E1 em uso +orbd.internalexception=\nFalha ao iniciar ORBD devido a uma exce\u00E7\u00E3o interna. \nPoss\u00EDveis causas: \n1. ORBInitialPort especificado ou ORBActivationPort j\u00E1 em uso \n2. Sem permiss\u00E3o de grava\u00E7\u00E3o para gravar orb.db diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_sv.properties b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_sv.properties index 5dd8b44d13d..c11488e9f48 100644 --- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_sv.properties +++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_sv.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2005, 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 @@ -23,85 +23,85 @@ # questions. # -orbd.usage=G\u00f6r s\u00e5 h\u00e4r: {0} \n\nd\u00e4r omfattar:\n -port Aktiveringsport d\u00e4r ORBD ska startas, standard 1049 (valfritt)\n -defaultdb Katalog f\u00f6r ORBD-filer, standard "./orb.db" (valfritt)\n -serverid Server-ID f\u00f6r ORBD, standard 1 (valfritt)\n -ORBInitialPort Initialport (obligatoriskt)\n -ORBInitialHost Initialt v\u00e4rdnamn (obligatoriskt)\n +orbd.usage=Syntax: {0} \n\nd\u00E4r inkluderar:\n -port Aktiveringsport d\u00E4r ORBD ska startas, standard 1049 (valfritt)\n -defaultdb Katalog f\u00F6r ORBD-filer, standard "./orb.db" (valfritt)\n -serverid Server-id f\u00F6r ORBD, standard 1 (valfritt)\n -ORBInitialPort Ursprunglig port (obligatoriskt)\n -ORBInitialHost Ursprungligt v\u00E4rdnamn (obligatoriskt)\n -servertool.usage=G\u00f6r s\u00e5 h\u00e4r: {0} \n\nd\u00e4r omfattar:\n -ORBInitialPort Initialport (obligatoriskt)\n -ORBInitialHost Initialt v\u00e4rdnamn (obligatoriskt)\n -servertool.banner=\n\nV\u00e4lkommen till Java IDL Server Tool \nskriv kommandona vid prompten \n -servertool.shorthelp=\n\n\tTillg\u00e4ngliga kommandon: \n\t------------------- \n -servertool.baddef=D\u00e5lig serverdefinition: {0} -servertool.nosuchserver=\tn\u00e5gon s\u00e5dan server kan inte hittas. -servertool.helddown=\tserver h\u00e5lls nere. +servertool.usage=Syntax: {0} \n\nd\u00E4r inkluderar:\n -ORBInitialPort Ursprunglig port (obligatoriskt)\n -ORBInitialHost Ursprungligt v\u00E4rdnamn (obligatoriskt)\n +servertool.banner=\n\nV\u00E4lkommen till Java IDL Server Tool \nange kommandona vid kommandoraden \n +servertool.shorthelp=\n\n\tTillg\u00E4ngliga kommandon: \n\t------------------- \n +servertool.baddef=Felaktig serverdefinition: {0} +servertool.nosuchserver=\tn\u00E5gon s\u00E5dan server kan inte hittas. +servertool.helddown=\tservern h\u00E5lls avst\u00E4ngd. servertool.nosuchorb=\togiltig ORB. -servertool.serverup=\tserver \u00e4r redan uppe. +servertool.serverup=\tserver \u00E4r redan startad servertool.appname=\tapplicationName - {0} servertool.name=\tnamn - {0} servertool.classpath=\tclasspath - {0} servertool.args=\targs - {0} servertool.vmargs=\tvmargs - {0} servertool.serverid=\tserver id - {0} -servertool.servernotrunning=\tserver k\u00f6rs inte. -servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n +servertool.servernotrunning=\tserver k\u00F6rs inte. +servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n servertool.register1=registrera en aktiverbar server servertool.register2=\tserver registrerad (serverid = {0}). -servertool.register3=\tserver registrerad men h\u00e5lls nere (serverid = {0}). +servertool.register3=\tserver registrerad men h\u00E5lls avst\u00E4ngd(serverid = {0}). servertool.register4=\tserver har redan registrerats (serverid = {0}). servertool.unregister=\n\tunregister [ -serverid | -applicationName ] \n servertool.unregister1=avregistrera en registrerad server -servertool.unregister2=\tserver oregistrerad. +servertool.unregister2=\tserver avregistrerad. -servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n -servertool.locate1=lokaliserar portar av en viss typ f\u00f6r en registrerad server -servertool.locate2=\n\n\tV\u00e4rdnamn {0} \n\n\t\tPort\t\tPorttyp\t\tORB-ID\n\t\t----\t\t---------\t\t------\n +servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n +servertool.locate1=hitta portar av en viss typ f\u00F6r en registrerad server +servertool.locate2=\n\n\tV\u00E4rdnamn {0} \n\n\t\tPort\t\tPorttyp\t\tORB-id\n\t\t----\t\t---------\t\t------\n servertool.locateorb=\n\tlocateperorb [ -serverid | -applicationName ] [ -orbid ]\n -servertool.locateorb1=lokaliserar portar f\u00f6r en viss ORB f\u00f6r en registrerad server -servertool.locateorb2=\n\n\tV\u00e4rdnamn {0} \n\n\t\tPort\t\tPorttyp\t\tORB-ID\n\t\t----\t\t--------\t\t------\n +servertool.locateorb1=hitta portar f\u00F6r en viss ORB f\u00F6r en registrerad server +servertool.locateorb2=\n\n\tV\u00E4rdnamn {0} \n\n\t\tPort\t\tPorttyp\t\tORB-id\n\t\t----\t\t--------\t\t------\n servertool.getserverid=\n\tgetserverid [ -applicationName ] \n -servertool.getserverid1=returnerar server-id f\u00f6r ett applicationName -servertool.getserverid2=\tServer-ID f\u00f6r applicationName {0} \u00e4r {1} +servertool.getserverid1=returnerar server-id f\u00F6r ett applicationName +servertool.getserverid2=\tServer-id f\u00F6r applicationName {0} \u00E4r {1} servertool.list=\n\tlist_\n servertool.list1=listar alla registrerade servrar -servertool.list2=\n\tServer Id\tServer Class Name\t\tServer Application\n\t---------\t-----------------\t\t------------------\n +servertool.list2=\n\tServer-id\tServerklassnamn\t\tServerapplikation\n\t---------\t-----------------\t\t------------------\n servertool.listactive=\n\tlistactive -servertool.listactive1=listar alla f\u00f6r tillf\u00e4llet aktiva servrar +servertool.listactive1=listar alla f\u00F6r tillf\u00E4llet aktiva servrar servertool.listappnames=\tlistappnames\n -servertool.listappnames1=listar de applicationNames som f\u00f6r tillf\u00e4llet \u00e4r definierade -servertool.listappnames2=Aktuella definierade server-applicationNames: +servertool.listappnames1=listar de applicationNames som f\u00F6r tillf\u00E4llet \u00E4r definierade +servertool.listappnames2=Definierade applikationsnamn f\u00F6r servern: servertool.shutdown=\n\tshutdown [ -serverid | -applicationName ]\n -servertool.shutdown1=st\u00e4nger en registrerad server -servertool.shutdown2=\tserver har st\u00e4ngts av. +servertool.shutdown1=st\u00E4nger av en registrerad server +servertool.shutdown2=\tserver har st\u00E4ngts av. servertool.startserver=\n\tstartup [ -serverid | -applicationName ]\n servertool.startserver1=startar en registrerad server servertool.startserver2=\tserver har startats. servertool.quit=\n\tquit\n -servertool.quit1=avsluta det h\u00e4r verktyget +servertool.quit1=avsluta det h\u00E4r verktyget -servertool.help=\thelp\n\tOR\n\thelp \n -servertool.help1=get help +servertool.help=\thelp\n\tELLER\n\thelp \n +servertool.help1=f\u00E5 hj\u00E4lp -servertool.orbidmap=\tG\u00f6r s\u00e5 h\u00e4r: orblist [ -serverid | -applicationName ]\n -servertool.orbidmap1=lista \u00f6ver ORB-namn och deras mappning -servertool.orbidmap2=\n\tORB-ID\t\tORB-namn\n\t------\t\t--------\n -pnameserv.success=Namnservern har startats utan problem +servertool.orbidmap=\tSyntax: orblist [ -serverid | -applicationName ]\n +servertool.orbidmap1=lista \u00F6ver ORB-namn och deras mappning +servertool.orbidmap2=\n\tORB-id\t\tORB-namn\n\t------\t\t--------\n +pnameserv.success=Den best\u00E4ndiga namnservern har startats -bootstrap.usage=G\u00f6r s\u00e5 h\u00e4r: {0} \n\nd\u00e4r omfattar:\n -ORBInitialPort Initialport (obligatoriskt)\n -InitialServicesFile En fil som inneh\u00e5ller en lista \u00f6ver initiala tj\u00e4nster (obligatoriskt)\n -bootstrap.success=s\u00e4tter porten till {0} och l\u00e4ser tj\u00e4nster fr\u00e5n {1} -bootstrap.filenotreadable=filen {0} g\u00e5r inte att l\u00e4sa -bootstrap.filenotfound=filen {0} g\u00e5r inte att hitta -bootstrap.exception=p\u00e5tr\u00e4ffade undantag medan egenskaper sparades i filen {0}: Undantag {1} +bootstrap.usage=Syntax: {0} \n\nd\u00E4r inkluderar:\n -ORBInitialPort Ursprunglig port (obligatoriskt)\n -InitialServicesFile En fil som inneh\u00E5ller en lista \u00F6ver ursprungliga tj\u00E4nster (obligatoriskt)\n +bootstrap.success=st\u00E4ller in porten till {0} och l\u00E4ser tj\u00E4nster fr\u00E5n {1} +bootstrap.filenotreadable=filen {0} kan inte l\u00E4sas +bootstrap.filenotfound=filen {0} hittas inte +bootstrap.exception=p\u00E5tr\u00E4ffade undantag medan egenskaper sparades i filen {0}: Undantag {1} -tnameserv.exception=p\u00e5tr\u00e4ffade ett undantagsfel n\u00e4r starttj\u00e4nsten startades vid porten {0} -tnameserv.usage=f\u00f6rs\u00f6k att anv\u00e4nda en annan port med kommandoradsargument -ORBInitialPort -tnameserv.invalidhostoption=ORBInitialHost \u00e4r inte ett giltigt alternativ f\u00f6r NameService -tnameserv.orbinitialport0=ORBInitialPort 0 \u00e4r inte ett giltigt alternativ f\u00f6r NameService -tnameserv.hs1=Initial namngivningskontext:\n{0} -tnameserv.hs2=TransientNameServer: anger port f\u00f6r initiala objektreferenser till: {0} -tnameserv.hs3=Klar. +tnameserv.exception=p\u00E5tr\u00E4ffade ett undantag n\u00E4r starttj\u00E4nsten startades vid porten {0} +tnameserv.usage=f\u00F6rs\u00F6k att anv\u00E4nda en annan port med kommandoradsargument -ORBInitialPort +tnameserv.invalidhostoption=ORBInitialHost \u00E4r inte ett giltigt alternativ f\u00F6r NameService +tnameserv.orbinitialport0=ORBInitialPort 0 \u00E4r inte ett giltigt alternativ f\u00F6r NameService +tnameserv.hs1=Ursprunglig namngivningskontext:\n{0} +tnameserv.hs2=TransientNameServer: st\u00E4ller in port f\u00F6r ursprungliga objektreferenser till: {0} +tnameserv.hs3=Redo. -orbd.commfailure=\nMisslyckades starta ORBD f\u00f6r att ORBinitialport anv\u00e4ndas redan -orbd.internalexception=\nMisslyckades starta ORBD p\u00e5 grund av internt undantag. \nM\u00f6jliga Orsakar: \n1. Anget ORBInitialPort or ORBAktiveringsPort anv\u00e4ndas redan \n2. No Write Tillst\u00e5nd att skriva orb.db +orbd.commfailure=\nKunde inte starta ORBD eftersom ORBinitialport redan anv\u00E4nds +orbd.internalexception=\nKunde inte starta ORBD p\u00E5 grund av internt undantag. \nM\u00F6jliga orsaker: \n1. Angivet ORBInitialPort eller ORBActivationPort anv\u00E4ndas redan \n2. Ingen beh\u00F6righet att skriva till orb.db diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_CN.properties b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_CN.properties index 60c2407004e..6dce9e6e827 100644 --- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_CN.properties +++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2005, 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 @@ -23,85 +23,85 @@ # questions. # -orbd.usage=\u7528\u6cd5\uff1a{0} <\u9009\u9879> \n\n\u5176\u4e2d\uff0c<\u9009\u9879> \u5305\u62ec\uff1a\n -port \u6fc0\u6d3b\u542f\u52a8 ORBD \u7684\u7aef\u53e3\uff0c\u7f3a\u7701\u503c\u4e3a 1049 (\u53ef\u9009)\n -defaultdb ORBD \u6587\u4ef6\u7684\u76ee\u5f55\uff0c\u7f3a\u7701\u503c\u4e3a "./orb.db" (\u53ef\u9009)\n -serverid ORBD \u7684\u670d\u52a1\u5668\u6807\u8bc6\u7b26\uff0c\u7f3a\u7701\u503c\u4e3a 1 (\u53ef\u9009)\n -ORBInitialPort \u521d\u59cb\u7aef\u53e3\uff08\u5fc5\u9700\uff09\n -ORBInitialHost \u521d\u59cb\u4e3b\u673a\u540d\u79f0\uff08\u5fc5\u9700\uff09\n +orbd.usage=\u7528\u6CD5: {0} <\u9009\u9879> \n\n\u5176\u4E2D, <\u9009\u9879> \u5305\u62EC: \n -port \u6FC0\u6D3B\u542F\u52A8 ORBD \u7684\u7AEF\u53E3, \u9ED8\u8BA4\u503C\u4E3A 1049 (\u53EF\u9009)\n -defaultdb ORBD \u6587\u4EF6\u7684\u76EE\u5F55, \u9ED8\u8BA4\u503C\u4E3A "./orb.db" (\u53EF\u9009)\n -serverid ORBD \u7684\u670D\u52A1\u5668 ID, \u9ED8\u8BA4\u503C\u4E3A 1 (\u53EF\u9009)\n -ORBInitialPort \u521D\u59CB\u7AEF\u53E3 (\u5FC5\u9700)\n -ORBInitialHost \u521D\u59CB HostName (\u5FC5\u9700)\n -servertool.usage=\u7528\u6cd5\uff1a {0} <\u9009\u9879> \n\n\u5176\u4e2d\uff0c<\u9009\u9879> \u5305\u62ec\uff1a\n -ORBInitialPort \u521d\u59cb\u7aef\u53e3\uff08\u5fc5\u9700\uff09\n -ORBInitialHost \u521d\u59cb\u4e3b\u673a\u540d\u79f0\uff08\u5fc5\u9700\uff09\n -servertool.banner=\n\n\u6b22\u8fce\u4f7f\u7528 Java IDL \u670d\u52a1\u5668\u5de5\u5177 \n\u8bf7\u5728\u63d0\u793a\u5904\u8f93\u5165\u547d\u4ee4 \n -servertool.shorthelp=\n\n\t\u53ef\u7528\u547d\u4ee4\uff1a\n\t------------------- \n -servertool.baddef=\u9519\u8bef\u7684\u670d\u52a1\u5668\u5b9a\u4e49\uff1a {0} -servertool.nosuchserver=\t\u627e\u4e0d\u5230\u8fd9\u79cd\u670d\u52a1\u5668\u3002 -servertool.helddown=\t\u670d\u52a1\u5668\u5df2\u88ab\u5173\u95ed\u3002 -servertool.nosuchorb=\t\u65e0\u6548\u7684\u5bf9\u8c61\u8bf7\u6c42\u4ee3\u7406\u7a0b\u5e8f (ORB)\u3002 -servertool.serverup=\t\u670d\u52a1\u5668\u5df2\u5f00\u542f\u3002 +servertool.usage=\u7528\u6CD5: {0} <\u9009\u9879> \n\n\u5176\u4E2D, <\u9009\u9879> \u5305\u62EC: \n -ORBInitialPort \u521D\u59CB\u7AEF\u53E3 (\u5FC5\u9700)\n -ORBInitialHost \u521D\u59CB HostName (\u5FC5\u9700)\n +servertool.banner=\n\n\u6B22\u8FCE\u4F7F\u7528 Java IDL \u670D\u52A1\u5668\u5DE5\u5177 \n\u8BF7\u5728\u63D0\u793A\u5904\u8F93\u5165\u547D\u4EE4 \n +servertool.shorthelp=\n\n\t\u53EF\u7528\u547D\u4EE4: \n\t------------------- \n +servertool.baddef=\u9519\u8BEF\u7684\u670D\u52A1\u5668\u5B9A\u4E49: {0} +servertool.nosuchserver=\t\u627E\u4E0D\u5230\u8FD9\u79CD\u670D\u52A1\u5668\u3002 +servertool.helddown=\t\u670D\u52A1\u5668\u5DF2\u88AB\u5173\u95ED\u3002 +servertool.nosuchorb=\t\u65E0\u6548\u7684\u5BF9\u8C61\u8BF7\u6C42\u4EE3\u7406\u7A0B\u5E8F (ORB)\u3002 +servertool.serverup=\t\u670D\u52A1\u5668\u5DF2\u5728\u8FD0\u884C\u3002 servertool.appname=\tapplicationName - {0} servertool.name=\tname - {0} servertool.classpath=\tclasspath - {0} servertool.args=\targs - {0} servertool.vmargs=\tvmargs - {0} -servertool.serverid=\t\u670d\u52a1\u5668\u6807\u8bc6\u7b26 - {0} -servertool.servernotrunning=\t\u670d\u52a1\u5668\u6ca1\u6709\u8fd0\u884c\u3002 -servertool.register=\n\n\tregister -server<\u670d\u52a1\u5668\u7c7b\u540d\u79f0> \n\t -applicationName <\u5907\u7528\u670d\u52a1\u5668\u540d\u79f0> \n\t -classpath <\u5230\u670d\u52a1\u5668\u7684\u7c7b\u8def\u5f84> \n\t -args <\u670d\u52a1\u5668\u7684\u53c2\u6570> \n\t -vmargs <\u670d\u52a1\u5668 Java VM \u7684\u53c2\u6570>\n -servertool.register1=\u6ce8\u518c\u4e00\u4e2a\u53ef\u6fc0\u6d3b\u7684\u670d\u52a1\u5668 -servertool.register2=\t\u5df2\u6ce8\u518c\u670d\u52a1\u5668 (serverid = {0})\u3002 -servertool.register3=\t\u5df2\u6ce8\u518c\u670d\u52a1\u5668\uff0c\u4f46\u5df2\u88ab\u5173\u95ed (serverid = {0})\u3002 -servertool.register4=\t\u670d\u52a1\u5668\u5df2\u6ce8\u518c (serverid = {0})\u3002 +servertool.serverid=\t\u670D\u52A1\u5668 ID - {0} +servertool.servernotrunning=\t\u670D\u52A1\u5668\u6CA1\u6709\u8FD0\u884C\u3002 +servertool.register=\n\n\tregister -server<\u670D\u52A1\u5668\u7C7B\u540D\u79F0> \n\t -applicationName <\u5907\u7528\u670D\u52A1\u5668\u540D\u79F0> \n\t -classpath <\u670D\u52A1\u5668\u7684\u7C7B\u8DEF\u5F84> \n\t -args <\u670D\u52A1\u5668\u7684\u53C2\u6570> \n\t -vmargs <\u670D\u52A1\u5668 Java VM \u7684\u53C2\u6570>\n +servertool.register1=\u6CE8\u518C\u4E00\u4E2A\u53EF\u6FC0\u6D3B\u7684\u670D\u52A1\u5668 +servertool.register2=\t\u5DF2\u6CE8\u518C\u670D\u52A1\u5668 (serverid = {0})\u3002 +servertool.register3=\t\u5DF2\u6CE8\u518C\u670D\u52A1\u5668, \u4F46\u5DF2\u88AB\u5173\u95ED (serverid = {0})\u3002 +servertool.register4=\t\u670D\u52A1\u5668\u5DF2\u6CE8\u518C (serverid = {0})\u3002 servertool.unregister=\n\tunregister [ -serverid | -applicationName ] \n -servertool.unregister1=\u53d6\u6d88\u670d\u52a1\u5668\u6ce8\u518c -servertool.unregister2=\t\u670d\u52a1\u5668\u672a\u6ce8\u518c\u3002 +servertool.unregister1=\u6CE8\u9500\u5DF2\u6CE8\u518C\u7684\u670D\u52A1\u5668 +servertool.unregister2=\t\u670D\u52A1\u5668\u5DF2\u6CE8\u9500\u3002 servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n -servertool.locate1=\u4e3a\u5df2\u6ce8\u518c\u670d\u52a1\u5668\u5b9a\u4f4d\u7279\u5b9a\u7c7b\u578b\u7684\u7aef\u53e3 -servertool.locate2=\n\n\t\u4e3b\u673a\u540d\u79f0 {0} \n\n\t\t\u7aef\u53e3\t\t\u7aef\u53e3\u7c7b\u578b\t\tORB \u6807\u8bc6\n\t\t----\t\t---------\t\t------\n +servertool.locate1=\u4E3A\u5DF2\u6CE8\u518C\u670D\u52A1\u5668\u5B9A\u4F4D\u7279\u5B9A\u7C7B\u578B\u7684\u7AEF\u53E3 +servertool.locate2=\n\n\t\u4E3B\u673A\u540D\u79F0 {0} \n\n\t\t\u7AEF\u53E3\t\t\u7AEF\u53E3\u7C7B\u578B\t\tORB \u6807\u8BC6\n\t\t----\t\t---------\t\t------\n servertool.locateorb=\n\tlocateperorb [ -serverid | -applicationName ] [ -orbid ]\n -servertool.locateorb1=\u4e3a\u5df2\u6ce8\u518c\u670d\u52a1\u5668\u7684\u7279\u5b9a\u5bf9\u8c61\u8bf7\u6c42\u4ee3\u7406\u7a0b\u5e8f\u5b9a\u4f4d\u7aef\u53e3\u3002 -servertool.locateorb2=\n\n\t\u4e3b\u673a\u540d\u79f0 {0} \n\n\t\t\u7aef\u53e3\t\t\u7aef\u53e3\u7c7b\u578b\t\tORB \u6807\u8bc6\n\t\t----\t\t--------\t\t------\n +servertool.locateorb1=\u4E3A\u5DF2\u6CE8\u518C\u670D\u52A1\u5668\u7684\u7279\u5B9A\u5BF9\u8C61\u8BF7\u6C42\u4EE3\u7406\u7A0B\u5E8F\u5B9A\u4F4D\u7AEF\u53E3\u3002 +servertool.locateorb2=\n\n\t\u4E3B\u673A\u540D\u79F0 {0} \n\n\t\t\u7AEF\u53E3\t\t\u7AEF\u53E3\u7C7B\u578B\t\tORB \u6807\u8BC6\n\t\t----\t\t--------\t\t------\n servertool.getserverid=\n\tgetserverid [ -applicationName ] \n -servertool.getserverid1=\u8fd4\u56de\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0\u7684\u670d\u52a1\u5668\u6807\u8bc6\u7b26 -servertool.getserverid2=\t\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0 {0} \u7684\u670d\u52a1\u5668\u6807\u8bc6\u7b26\u662f {1} +servertool.getserverid1=\u8FD4\u56DE applicationName \u7684\u670D\u52A1\u5668 ID +servertool.getserverid2=\tapplicationName {0} \u7684\u670D\u52A1\u5668 ID \u662F {1} servertool.list=\n\t\u5217\u8868\n -servertool.list1=\u5217\u51fa\u6240\u6709\u5df2\u6ce8\u518c\u670d\u52a1\u5668 -servertool.list2=\n\t\u670d\u52a1\u5668\u6807\u8bc6\u7b26\t\t\u670d\u52a1\u5668\u7c7b\u540d\u79f0\t\t\t\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f\n\t---------\t-----------------\t------------------\n +servertool.list1=\u5217\u51FA\u6240\u6709\u5DF2\u6CE8\u518C\u670D\u52A1\u5668 +servertool.list2=\n\t\u670D\u52A1\u5668 ID\t\u670D\u52A1\u5668\u7C7B\u540D\u79F0\t\t\u670D\u52A1\u5668\u5E94\u7528\u7A0B\u5E8F\n\t---------\t-----------------\t\t------------------\n servertool.listactive=\n\tlistactive -servertool.listactive1=\u5217\u51fa\u5f53\u524d\u6d3b\u52a8\u7684\u670d\u52a1\u5668 +servertool.listactive1=\u5217\u51FA\u5F53\u524D\u6D3B\u52A8\u7684\u670D\u52A1\u5668 servertool.listappnames=\tlistappnames\n -servertool.listappnames1=\u5217\u51fa\u5f53\u524d\u5b9a\u4e49\u7684\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0 -servertool.listappnames2=\u5f53\u524d\u5b9a\u4e49\u7684\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0\uff1a +servertool.listappnames1=\u5217\u51FA\u5F53\u524D\u5B9A\u4E49\u7684 applicationName +servertool.listappnames2=\u5F53\u524D\u5B9A\u4E49\u7684\u670D\u52A1\u5668 applicationName: servertool.shutdown=\n\tshutdown [ -serverid | -applicationName ]\n -servertool.shutdown1=\u5173\u95ed\u4e00\u4e2a\u5df2\u6ce8\u518c\u670d\u52a1\u5668 -servertool.shutdown2=\t\u670d\u52a1\u5668\u6210\u529f\u5173\u95ed\u3002 +servertool.shutdown1=\u5173\u95ED\u4E00\u4E2A\u5DF2\u6CE8\u518C\u670D\u52A1\u5668 +servertool.shutdown2=\t\u670D\u52A1\u5668\u6210\u529F\u5173\u95ED\u3002 servertool.startserver=\n\tstartup [ -serverid | -applicationName ]\n -servertool.startserver1=\u542f\u52a8\u4e00\u4e2a\u5df2\u6ce8\u518c\u670d\u52a1\u5668 -servertool.startserver2=\t\u670d\u52a1\u5668\u6210\u529f\u542f\u52a8\u3002 +servertool.startserver1=\u542F\u52A8\u4E00\u4E2A\u5DF2\u6CE8\u518C\u670D\u52A1\u5668 +servertool.startserver2=\t\u670D\u52A1\u5668\u6210\u529F\u542F\u52A8\u3002 -servertool.quit=\n\t\u9000\u51fa\n -servertool.quit1=\u9000\u51fa\u6b64\u5de5\u5177 +servertool.quit=\n\t\u9000\u51FA\n +servertool.quit1=\u9000\u51FA\u6B64\u5DE5\u5177 servertool.help=\thelp\n\t\u6216\n\thelp \n -servertool.help1=\u53d6\u5f97\u5e2e\u52a9 +servertool.help1=\u83B7\u53D6\u5E2E\u52A9 -servertool.orbidmap=\t\u7528\u6cd5\uff1aorblist [ -serverid | -applicationName ]\n -servertool.orbidmap1=\u5bf9\u8c61\u8bf7\u6c42\u4ee3\u7406\u7a0b\u5e8f (orb) \u540d\u79f0\u53ca\u5176\u6620\u5c04\u5217\u8868 -servertool.orbidmap2=\n\tORB \u6807\u8bc6\t\tORB \u540d\u79f0\n\t------\t\t--------\n -pnameserv.success=\u6301\u4e45\u6027\u540d\u79f0\u670d\u52a1\u5668\u6210\u529f\u542f\u52a8 +servertool.orbidmap=\t\u7528\u6CD5: orblist [ -serverid | -applicationName ]\n +servertool.orbidmap1=\u5BF9\u8C61\u8BF7\u6C42\u4EE3\u7406\u7A0B\u5E8F (orb) \u540D\u79F0\u53CA\u5176\u6620\u5C04\u5217\u8868 +servertool.orbidmap2=\n\tORB \u6807\u8BC6\t\tORB \u540D\u79F0\n\t------\t\t--------\n +pnameserv.success=\u6301\u4E45\u6027\u540D\u79F0\u670D\u52A1\u5668\u6210\u529F\u542F\u52A8 -bootstrap.usage=\u7528\u6cd5\uff1a{0} <\u9009\u9879> \n\n\u5176\u4e2d\uff0c<\u9009\u9879> \u5305\u62ec\uff1a\n -ORBInitialPort \u521d\u59cb\u7aef\u53e3\uff08\u5fc5\u9700\uff09\n -InitialServicesFile \u5305\u542b\u521d\u59cb\u670d\u52a1\u5217\u8868\u7684\u6587\u4ef6\uff08\u5fc5\u9700\uff09\n -bootstrap.success=\u5c06\u7aef\u53e3\u8bbe\u7f6e\u4e3a{0}\u5e76\u4ece{1}\u8bfb\u53d6\u670d\u52a1 -bootstrap.filenotreadable=\u4e0d\u53ef\u8bfb\u53d6\u6587\u4ef6 {0} -bootstrap.filenotfound=\u6ca1\u6709\u627e\u5230\u6587\u4ef6{0} -bootstrap.exception=\u5c06\u5c5e\u6027\u4fdd\u5b58\u5230\u6587\u4ef6{0}\u65f6\u53d1\u751f\u5f02\u5e38\uff1a\u5f02\u5e38 {1} +bootstrap.usage=\u7528\u6CD5: {0} <\u9009\u9879> \n\n\u5176\u4E2D, <\u9009\u9879> \u5305\u62EC: \n -ORBInitialPort \u521D\u59CB\u7AEF\u53E3 (\u5FC5\u9700)\n -InitialServicesFile \u5305\u542B\u521D\u59CB\u670D\u52A1\u5217\u8868\u7684\u6587\u4EF6 (\u5FC5\u9700)\n +bootstrap.success=\u5C06\u7AEF\u53E3\u8BBE\u7F6E\u4E3A{0}\u5E76\u4ECE{1}\u8BFB\u53D6\u670D\u52A1 +bootstrap.filenotreadable=\u6587\u4EF6{0}\u4E0D\u53EF\u8BFB\u53D6 +bootstrap.filenotfound=\u6CA1\u6709\u627E\u5230\u6587\u4EF6{0} +bootstrap.exception=\u5C06\u5C5E\u6027\u4FDD\u5B58\u5230\u6587\u4EF6{0}\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF: \u5F02\u5E38\u9519\u8BEF{1} -tnameserv.exception=\u542f\u52a8{0}\u7aef\u53e3\u4e0a\u7684\u81ea\u5f15\u5bfc\u7a0b\u5e8f\u670d\u52a1\u65f6\u53d1\u751f\u5f02\u5e38 -tnameserv.usage=\u5c1d\u8bd5\u5229\u7528\u547d\u4ee4\u884c\u53c2\u6570\u4f7f\u7528\u4e0d\u540c\u7684\u7aef\u53e3 -ORBInnitialPort -tnameserv.invalidhostoption=ORBInitialHost \u4e0d\u662f\u540d\u79f0\u670d\u52a1\u5668\u7684\u6709\u6548\u9009\u9879 -tnameserv.orbinitialport0=ORBInitialPort 0 \u4e0d\u662f\u540d\u79f0\u670d\u52a1\u5668\u7684\u6709\u6548\u9009\u9879 -tnameserv.hs1=\u521d\u59cb\u7684\u547d\u540d\u8303\u56f4\uff1a\n{0} -tnameserv.hs2=TransientNameServer: \u5c06\u521d\u59cb\u5bf9\u8c61\u5f15\u7528\u7aef\u53e3\u8bbe\u7f6e\u4e3a\uff1a{0} -tnameserv.hs3=\u51c6\u5907\u5c31\u7eea\u3002 +tnameserv.exception=\u542F\u52A8{0}\u7AEF\u53E3\u4E0A\u7684\u5F15\u5BFC\u7A0B\u5E8F\u670D\u52A1\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF +tnameserv.usage=\u5C1D\u8BD5\u5229\u7528\u547D\u4EE4\u884C\u53C2\u6570 -ORBInitialPort \u4F7F\u7528\u4E0D\u540C\u7684\u7AEF\u53E3 +tnameserv.invalidhostoption=ORBInitialHost \u4E0D\u662F NameService \u7684\u6709\u6548\u9009\u9879 +tnameserv.orbinitialport0=ORBInitialPort 0 \u4E0D\u662F NameService \u7684\u6709\u6548\u9009\u9879 +tnameserv.hs1=\u521D\u59CB\u7684\u547D\u540D\u4E0A\u4E0B\u6587: \n{0} +tnameserv.hs2=TransientNameServer: \u5C06\u521D\u59CB\u5BF9\u8C61\u5F15\u7528\u7AEF\u53E3\u8BBE\u7F6E\u4E3A: {0} +tnameserv.hs3=\u51C6\u5907\u5C31\u7EEA\u3002 -orbd.commfailure=\n\u7531\u4e8e ORBinitialPort \u5df2\u5728\u4f7f\u7528\u4e2d\uff0c\u542f\u52a8 ORBD \u5931\u8d25 -orbd.internalexception=\n\u5185\u90e8\u5f02\u5e38\uff0c\u542f\u52a8 ORBD \u5931\u8d25\u3002 \n\u53ef\u80fd\u539f\u56e0\uff1a\n1. \u6307\u5b9a\u7684 ORBInitialPort \u6216 ORBActivationPort \u5df2\u5728\u4f7f\u7528\u4e2d \n2. \u6ca1\u6709\u5199 orb.db \u7684\u5199\u5165\u6743\u9650 +orbd.commfailure=\n\u7531\u4E8E ORBinitialPort \u5DF2\u5728\u4F7F\u7528\u4E2D, \u65E0\u6CD5\u542F\u52A8 ORBD +orbd.internalexception=\n\u7531\u4E8E\u5185\u90E8\u5F02\u5E38\u9519\u8BEF, \u65E0\u6CD5\u542F\u52A8 ORBD\u3002\n\u53EF\u80FD\u539F\u56E0: \n1. \u6307\u5B9A\u7684 ORBInitialPort \u6216 ORBActivationPort \u5DF2\u5728\u4F7F\u7528\u4E2D \n2. \u6CA1\u6709\u5199\u5165 orb.db \u7684\u6743\u9650 diff --git a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_TW.properties b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_TW.properties index 7db8591348b..db797522663 100644 --- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_TW.properties +++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_TW.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2005, 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 @@ -23,85 +23,85 @@ # questions. # -orbd.usage=\u7528\u6cd5\uff1a{0} \n\n\u5176\u4e2d \u5305\u62ec\uff1a\n -port ORBD \u61c9\u88ab\u555f\u52d5\u7684\u555f\u52d5\u57e0\u6240\u5728\uff0c\u9810\u8a2d\u70ba 1049 (\u53ef\u9078)\n -defaultdb ORBD \u6a94\u6848\u7684\u76ee\u9304\uff0c\u9810\u8a2d "./orb.db" (\u53ef\u9078)\n -serverid ORBD \u4f3a\u670d\u5668 Id\uff0c\u9810\u8a2d\u70ba 1 (\u53ef\u9078)\n -ORBInitialPort \u8d77\u59cb\u57e0\uff08\u5fc5\u8981\uff09\n -ORBInitialHost \u8d77\u59cb\u4e3b\u6a5f\u540d\u7a31\uff08\u5fc5\u8981\uff09\n +orbd.usage=\u7528\u6CD5: {0} \n\n\u5176\u4E2D \u5305\u62EC: \n -port ORBD \u61C9\u88AB\u555F\u52D5\u7684\u555F\u52D5\u9023\u63A5\u57E0\u6240\u5728\uFF0C\u9810\u8A2D\u70BA 1049 (\u53EF\u9078)\n -defaultdb ORBD \u6A94\u6848\u7684\u76EE\u9304\uFF0C\u9810\u8A2D "./orb.db" (\u53EF\u9078)\n -serverid ORBD \u4F3A\u670D\u5668 Id\uFF0C\u9810\u8A2D\u70BA 1 (\u53EF\u9078)\n -ORBInitialPort \u8D77\u59CB\u9023\u63A5\u57E0 (\u5FC5\u8981)\n -ORBInitialHost \u8D77\u59CB\u4E3B\u6A5F\u540D\u7A31 (\u5FC5\u8981)\n -servertool.usage=\u7528\u6cd5\uff1a {0} \n\nwhere \u5305\u62ec\uff1a\n -ORBInitialPort \u8d77\u59cb\u57e0\uff08\u5fc5\u8981\uff09\n -ORBInitialHost \u8d77\u59cb\u4e3b\u6a5f\u540d\u7a31\uff08\u5fc5\u8981\uff09\n -servertool.banner=\n\n\u6b61\u8fce\u4f86\u5230 Java IDL \u4f3a\u670d\u5668\u5de5\u5177 \n\u8acb\u5728\u63d0\u793a\u8655\u8f38\u5165\u6307\u4ee4 \n -servertool.shorthelp=\n\n\t\u73fe\u6709\u7684\u6307\u4ee4\uff1a\n\t------------------- \n -servertool.baddef=\u932f\u8aa4\u7684\u4f3a\u670d\u5668\u5b9a\u7fa9\uff1a {0} -servertool.nosuchserver=\t\u627e\u4e0d\u5230\u9019\u500b\u4f3a\u670d\u5668\u3002 -servertool.helddown=\t\u4f3a\u670d\u5668\u4e0d\u5728\u5de5\u4f5c\u72c0\u614b\u3002 +servertool.usage=\u7528\u6CD5: {0} \n\nwhere \u5305\u62EC:\n -ORBInitialPort \u8D77\u59CB\u9023\u63A5\u57E0 (\u5FC5\u8981)\n -ORBInitialHost \u8D77\u59CB\u4E3B\u6A5F\u540D\u7A31 (\u5FC5\u8981)\n +servertool.banner=\n\n\u6B61\u8FCE\u4F7F\u7528 Java IDL \u4F3A\u670D\u5668\u5DE5\u5177 \n\u8ACB\u5728\u63D0\u793A\u8655\u8F38\u5165\u547D\u4EE4 \n +servertool.shorthelp=\n\n\t\u53EF\u7528\u7684\u547D\u4EE4: \n\t------------------- \n +servertool.baddef=\u932F\u8AA4\u7684\u4F3A\u670D\u5668\u5B9A\u7FA9: {0} +servertool.nosuchserver=\t\u627E\u4E0D\u5230\u9019\u500B\u4F3A\u670D\u5668\u3002 +servertool.helddown=\t\u4F3A\u670D\u5668\u4E0D\u5728\u5DE5\u4F5C\u72C0\u614B\u3002 servertool.nosuchorb=\t\u7121\u6548\u7684 ORB. -servertool.serverup=\t\u4f3a\u670d\u5668\u5df2\u5728\u5de5\u4f5c\u72c0\u614b\u3002 +servertool.serverup=\t\u4F3A\u670D\u5668\u5DF2\u5728\u5DE5\u4F5C\u72C0\u614B\u3002 servertool.appname=\tapplicationName - {0} -servertool.name=\t\u540d\u7a31 - {0} +servertool.name=\tname - {0} servertool.classpath=\tclasspath - {0} servertool.args=\targs - {0} servertool.vmargs=\tvmargs - {0} -servertool.serverid=\t\u4f3a\u670d\u5668 id - {0} -servertool.servernotrunning=\t\u4f3a\u670d\u5668\u672a\u904b\u4f5c\u3002 -servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n -servertool.register1=\u8a3b\u518a\u4e00\u500b\u53ef\u555f\u52d5\u7684\u4f3a\u670d\u5668 -servertool.register2=\t\u5df2\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668 (serverid = {0})\u3002 -servertool.register3=\t\u5df2\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668\uff0c\u4f46\u4e0d\u5728\u5de5\u4f5c\u72c0\u614b (serverid = {0})\u3002 -servertool.register4=\t\u4f3a\u670d\u5668\u5df2\u8a3b\u518a (serverid = {0})\u3002 +servertool.serverid=\tserver id - {0} +servertool.servernotrunning=\t\u4F3A\u670D\u5668\u672A\u57F7\u884C\u3002 +servertool.register=\n\n\tregister -server \n\t -applicationName \n\t -classpath \n\t -args \n\t -vmargs \n +servertool.register1=\u8A3B\u518A\u4E00\u500B\u53EF\u555F\u52D5\u7684\u4F3A\u670D\u5668 +servertool.register2=\t\u5DF2\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668 (serverid = {0})\u3002 +servertool.register3=\t\u5DF2\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668\uFF0C\u4F46\u4E0D\u5728\u5DE5\u4F5C\u72C0\u614B (serverid = {0})\u3002 +servertool.register4=\t\u4F3A\u670D\u5668\u5DF2\u8A3B\u518A (serverid = {0})\u3002 servertool.unregister=\n\tunregister [ -serverid | -applicationName ] \n -servertool.unregister1=\u672a\u8a3b\u518a\u4e00\u500b\u5df2\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668 -servertool.unregister2=\t\u4f3a\u670d\u5668\u672a\u8a3b\u518a\u3002 +servertool.unregister1=\u5C07\u5DF2\u8A3B\u518A\u7684\u4F3A\u670D\u5668\u53D6\u6D88\u8A3B\u518A +servertool.unregister2=\t\u4F3A\u670D\u5668\u5DF2\u53D6\u6D88\u8A3B\u518A\u3002 servertool.locate=\n\tlocate [ -serverid | -applicationName ] [ <-endpointType ] \n -servertool.locate1=\u91dd\u5c0d\u4e00\u500b\u5df2\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668\u5c0b\u627e\u7279\u5b9a\u985e\u578b\u7684\u9023\u63a5\u57e0 -servertool.locate2=\n\n\t\u4e3b\u6a5f\u540d\u7a31 {0} \n\n\t\tPort\t\tPort Type\t\tORB Id\n\t\t----\t\t---------\t\t------\n +servertool.locate1=\u91DD\u5C0D\u4E00\u500B\u5DF2\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668\u5C0B\u627E\u7279\u5B9A\u985E\u578B\u7684\u9023\u63A5\u57E0 +servertool.locate2=\n\n\t\u4E3B\u6A5F\u540D\u7A31 {0} \n\n\t\t\u9023\u63A5\u57E0\t\t\u9023\u63A5\u57E0\u985E\u578B\t\tORB Id\n\t\t----\t\t---------\t\t------\n servertool.locateorb=\n\tlocateperorb [ -serverid | -applicationName ] [ -orbid ]\n -servertool.locateorb1=\u91dd\u5c0d\u5df2\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668\u7684\u7279\u5b9a orb \u5c0b\u627e\u9023\u63a5\u57e0\u3002 -servertool.locateorb2=\n\n\t\u4e3b\u6a5f\u540d\u7a31 {0} \n\n\t\tPort\t\tPortType\t\tORB Id\n\t\t----\t\t--------\t\t------\n +servertool.locateorb1=\u91DD\u5C0D\u5DF2\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668\u7684\u7279\u5B9A orb \u5C0B\u627E\u9023\u63A5\u57E0\u3002 +servertool.locateorb2=\n\n\t\u4E3B\u6A5F\u540D\u7A31 {0} \n\n\t\t\u9023\u63A5\u57E0\t\t\u9023\u63A5\u57E0\u985E\u578B\t\tORB Id\n\t\t----\t\t--------\t\t------\n servertool.getserverid=\n\tgetserverid [ -applicationName ] \n -servertool.getserverid1=\u91dd\u5c0d\u4e00\u500b applicationName \u50b3\u56de\u4f3a\u670d\u5668\u8b58\u5225\u78bc -servertool.getserverid2=\tapplicationName \u7684\u4f3a\u670d\u5668\u8b58\u5225\u78bc {0} \u70ba {1} +servertool.getserverid1=\u50B3\u56DE applicationName \u7684\u4F3A\u670D\u5668\u8B58\u5225\u78BC +servertool.getserverid2=\tapplicationName \u7684\u4F3A\u670D\u5668\u8B58\u5225\u78BC {0} \u70BA {1} -servertool.list=\n\t\u6e05\u55ae\n -servertool.list1=\u5217\u51fa\u6240\u6709\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668 -servertool.list2=\n\t\u4f3a\u670d\u5668\u8b58\u5225\u78bc\t\u4f3a\u670d\u5668\u985e\u5225\u540d\u7a31\t\t\u4f3a\u670d\u5668\u61c9\u7528\u7a0b\u5f0f\n\t---------\t-----------------\t\t------------------\n +servertool.list=\n\tlist\n +servertool.list1=\u5217\u51FA\u6240\u6709\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668 +servertool.list2=\n\t\u4F3A\u670D\u5668\u8B58\u5225\u78BC\t\u4F3A\u670D\u5668\u985E\u5225\u540D\u7A31\t\t\u4F3A\u670D\u5668\u61C9\u7528\u7A0B\u5F0F\n\t---------\t-----------------\t\t------------------\n servertool.listactive=\n\tlistactive -servertool.listactive1=\u5217\u51fa\u73fe\u5728\u555f\u52d5\u7684\u4f3a\u670d\u5668 +servertool.listactive1=\u5217\u51FA\u76EE\u524D\u4F7F\u7528\u4E2D\u7684\u4F3A\u670D\u5668 servertool.listappnames=\tlistappnames\n -servertool.listappnames1=\u5217\u51fa\u73fe\u5728\u88ab\u5b9a\u7fa9\u7684 applicationNames -servertool.listappnames2=\u73fe\u5728\u5b9a\u7fa9\u7684\u4f3a\u670d\u5668 applicationNames\uff1a +servertool.listappnames1=\u5217\u51FA\u76EE\u524D\u5B9A\u7FA9\u7684 applicationNames +servertool.listappnames2=\u76EE\u524D\u5B9A\u7FA9\u7684\u4F3A\u670D\u5668 applicationNames: servertool.shutdown=\n\tshutdown [ -serverid | -applicationName ]\n -servertool.shutdown1=\u95dc\u9589\u4e00\u500b\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668 -servertool.shutdown2=\t\u4f3a\u670d\u5668\u95dc\u9589\u6210\u529f\u3002 +servertool.shutdown1=\u95DC\u9589\u4E00\u500B\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668 +servertool.shutdown2=\t\u4F3A\u670D\u5668\u95DC\u9589\u6210\u529F\u3002 servertool.startserver=\n\tstartup [ -serverid | -applicationName ]\n -servertool.startserver1=\u958b\u555f\u4e00\u500b\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668 -servertool.startserver2=\t\u4f3a\u670d\u5668\u958b\u555f\u6210\u529f\u3002 +servertool.startserver1=\u555F\u52D5\u4E00\u500B\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668 +servertool.startserver2=\t\u4F3A\u670D\u5668\u555F\u52D5\u6210\u529F\u3002 -servertool.quit=\n\t\u96e2\u958b\n -servertool.quit1=\u96e2\u958b\u9019\u500b\u5de5\u5177 +servertool.quit=\n\tquit\n +servertool.quit1=\u96E2\u958B\u9019\u500B\u5DE5\u5177 -servertool.help=\t\u5e6b\u52a9\n\tOR\n\thelp \n -servertool.help1=\u53d6\u5f97\u5e6b\u52a9 +servertool.help=\thelp\n\t\u6216\n\thelp \n +servertool.help1=\u53D6\u5F97\u8AAA\u660E -servertool.orbidmap=\t\u7528\u6cd5\uff1a orblist [ -serverid | -applicationName ]\n -servertool.orbidmap1=orb \u540d\u7a31\u53ca\u5176\u5c0d\u6620\u6e05\u55ae -servertool.orbidmap2=\n\tORB Id\t\tORB \u540d\u7a31\n\t------\t\t--------\n -pnameserv.success=\u6c38\u4e45\u6027 NameServer \u958b\u555f\u6210\u529f +servertool.orbidmap=\t\u7528\u6CD5: orblist [ -serverid | -applicationName ]\n +servertool.orbidmap1=orb \u540D\u7A31\u53CA\u5176\u5C0D\u6620\u6E05\u55AE +servertool.orbidmap2=\n\tORB Id\t\tORB \u540D\u7A31\n\t------\t\t--------\n +pnameserv.success=\u6C38\u4E45\u6027 NameServer \u555F\u52D5\u6210\u529F -bootstrap.usage=\u7528\u6cd5\uff1a {0} \n\n\u5176\u4e2d \u5305\u62ec\uff1a\n -ORBInitialPort \u8d77\u59cb\u57e0\uff08\u5fc5\u8981\uff09\n -InitialServicesFile \u542b\u6709\u8d77\u555f\u670d\u52d9\u6e05\u55ae\u7684\u6a94\u6848\uff08\u5fc5\u8981\uff09\n -bootstrap.success=\u8a2d\u5b9a\u9023\u63a5\u57e0\u81f3 {0} \u4e26\u5f9e {1} \u8b80\u53d6\u670d\u52d9 -bootstrap.filenotreadable=\u6a94\u6848 {0} \u7121\u6cd5\u8b80\u53d6 -bootstrap.filenotfound=\u6a94\u6848 {0} \u672a\u627e\u5230 -bootstrap.exception=\u5c07\u5c6c\u6027\u5132\u5b58\u81f3\u6a94\u6848 {0} \u6642\u767c\u751f\u7570\u5e38\uff1a\u7570\u5e38 {1} +bootstrap.usage=\u7528\u6CD5: {0} \n\n\u5176\u4E2D \u5305\u62EC: \n -ORBInitialPort \u8D77\u59CB\u9023\u63A5\u57E0 (\u5FC5\u8981)\n -InitialServicesFile \u542B\u6709\u8D77\u59CB\u670D\u52D9\u6E05\u55AE\u7684\u6A94\u6848 (\u5FC5\u8981)\n +bootstrap.success=\u8A2D\u5B9A\u9023\u63A5\u57E0\u81F3 {0} \u4E26\u5F9E {1} \u8B80\u53D6\u670D\u52D9 +bootstrap.filenotreadable=\u6A94\u6848 {0} \u7121\u6CD5\u8B80\u53D6 +bootstrap.filenotfound=\u627E\u4E0D\u5230\u6A94\u6848 {0} +bootstrap.exception=\u5C07\u5C6C\u6027\u5132\u5B58\u81F3\u6A94\u6848 {0} \u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1: \u7570\u5E38\u72C0\u6CC1 {1} -tnameserv.exception=\u958b\u555f {0} \u9023\u63a5\u57e0\u4e0a\u7684\u555f\u52d5\u7a0b\u5f0f\u670d\u52d9\u6642\uff0c\u767c\u751f\u7570\u5e38 -tnameserv.usage=\u8a66\u8457\u5229\u7528\u542b\u6709\u6307\u4ee4\u884c\u5f15\u6578\u7684\u4e0d\u540c\u9023\u63a5\u57e0 -ORBInitialPort -tnameserv.invalidhostoption=ORBInitialHost \u4e0d\u662f NameService \u7684\u6709\u6548\u9078\u9805 -tnameserv.orbinitialport0=ORBInitialPort 0 \u4e0d\u662f NameService \u7684\u6709\u6548\u9078\u9805 -tnameserv.hs1=\u8d77\u59cb\u547d\u540d\u5167\u6587\uff1a\n{0} -tnameserv.hs2=TransientNameServer: \u91dd\u5c0d\u8d77\u59cb\u7269\u4ef6\u53c3\u7167\uff0c\u8a2d\u5b9a\u9023\u63a5\u57e0\u81f3\uff1a{0} -tnameserv.hs3=\u5c31\u7dd2\u3002 +tnameserv.exception=\u958B\u555F {0} \u9023\u63A5\u57E0\u4E0A\u7684\u555F\u52D5\u5B89\u88DD\u670D\u52D9\u6642\uFF0C\u767C\u751F\u7570\u5E38\u72C0\u6CC1 +tnameserv.usage=\u5617\u8A66\u4EE5\u547D\u4EE4\u884C\u5F15\u6578\u4F86\u4F7F\u7528\u4E0D\u540C\u9023\u63A5\u57E0 -ORBInitialPort +tnameserv.invalidhostoption=ORBInitialHost \u4E0D\u662F NameService \u7684\u6709\u6548\u9078\u9805 +tnameserv.orbinitialport0=ORBInitialPort 0 \u4E0D\u662F NameService \u7684\u6709\u6548\u9078\u9805 +tnameserv.hs1=\u8D77\u59CB\u547D\u540D\u76F8\u95DC\u8CC7\u8A0A\u74B0\u5883: \n{0} +tnameserv.hs2=TransientNameServer: \u91DD\u5C0D\u8D77\u59CB\u7269\u4EF6\u53C3\u7167\uFF0C\u8A2D\u5B9A\u9023\u63A5\u57E0\u81F3: {0} +tnameserv.hs3=\u5C31\u7DD2\u3002 -orbd.commfailure=\n\u56e0\u70ba ORBinitialPort \u5728\u4f7f\u7528\u4e2d\uff0c\u6240\u4ee5\u7121\u6cd5\u555f\u52d5 ORBD\u3002 -orbd.internalexception=\n\u56e0\u70ba\u5167\u90e8\u767c\u751f\u7570\u5e38\uff0c\u6240\u4ee5\u7121\u6cd5\u555f\u52d5 ORBD\u3002 \n\u53ef\u80fd\u7684\u539f\u56e0\uff1a \n1. \u6307\u5b9a\u7684 ORBInitialPort \u6216 ORBActivationPort \u5728\u4f7f\u7528\u4e2d\u3002 \n2. \u6c92\u6709\u5beb\u5165 orb.db \u7684\u8a31\u53ef\u6b0a\u3002 +orbd.commfailure=\n\u56E0\u70BA ORBinitialPort \u5728\u4F7F\u7528\u4E2D\uFF0C\u6240\u4EE5\u7121\u6CD5\u555F\u52D5 ORBD\u3002 +orbd.internalexception=\n\u56E0\u70BA\u5167\u90E8\u767C\u751F\u7570\u5E38\uFF0C\u6240\u4EE5\u7121\u6CD5\u555F\u52D5 ORBD\u3002 \n\u53EF\u80FD\u7684\u539F\u56E0: \n1. \u6307\u5B9A\u7684 ORBInitialPort \u6216 ORBActivationPort \u5728\u4F7F\u7528\u4E2D\u3002 \n2. \u6C92\u6709\u5BEB\u5165 orb.db \u7684\u6B0A\u9650\u3002 diff --git a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Activation.mc b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Activation.mc index 5e89129aa83..ab7b2a6b74e 100644 --- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Activation.mc +++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Activation.mc @@ -1,5 +1,5 @@ ; -; Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. +; Copyright (c) 2003, 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 diff --git a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/IOR.mc b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/IOR.mc index 58070926ea9..958cb6ee40b 100644 --- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/IOR.mc +++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/IOR.mc @@ -1,5 +1,5 @@ ; -; Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. +; Copyright (c) 2003, 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 diff --git a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Interceptors.mc b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Interceptors.mc index 29071c32103..5b27058ec50 100644 --- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Interceptors.mc +++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Interceptors.mc @@ -1,5 +1,5 @@ ; -; Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. +; Copyright (c) 2003, 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 diff --git a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Naming.mc b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Naming.mc index 1125cb3dfa5..ec6d05e5383 100644 --- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Naming.mc +++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Naming.mc @@ -1,5 +1,5 @@ ; -; Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. +; Copyright (c) 2003, 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 diff --git a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/OMG.mc b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/OMG.mc index ac9c5cd2374..757e6dd3fbb 100644 --- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/OMG.mc +++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/OMG.mc @@ -1,5 +1,5 @@ ; -; Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. +; Copyright (c) 2003, 2004, 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 diff --git a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/ORBUtil.mc b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/ORBUtil.mc index 50366bf8e78..412c742a461 100644 --- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/ORBUtil.mc +++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/ORBUtil.mc @@ -1,6 +1,6 @@ ; -; Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. +; Copyright (c) 2003, 2009, 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 diff --git a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/POA.mc b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/POA.mc index 39616aef171..0c8d477cd10 100644 --- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/POA.mc +++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/POA.mc @@ -1,5 +1,5 @@ ; -; Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. +; Copyright (c) 2003, 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 diff --git a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Util.mc b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Util.mc index 6cc0d858bbf..3d6b58e08a8 100644 --- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Util.mc +++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Util.mc @@ -1,5 +1,5 @@ ; -; Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. +; Copyright (c) 2003, 2004, 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 diff --git a/hotspot/.hgtags b/hotspot/.hgtags index 2f8ef840141..b18bf3dc7f1 100644 --- a/hotspot/.hgtags +++ b/hotspot/.hgtags @@ -143,4 +143,8 @@ f5603a6e50422046ebc0d2f1671d55cb8f1bf1e9 jdk7-b120 e24ab3fa6aafad3efabbe7dba9918c5f461a20b1 jdk7-b125 4c851c931d001a882cab809aaf3a55371b919244 jdk7-b126 e24ab3fa6aafad3efabbe7dba9918c5f461a20b1 hs20-b06 +d535bf4c12355a2897e918da9f8910c0aceec4fb hs20-b07 102466e70debc4b907afbd7624e34ddb1aafee9f jdk7-b127 +9a5762f448595794d449a8e17342abd81a3fadaf jdk7-b128 +ae4b185f2ed14af7bab610738c333840598cdcc4 jdk7-b129 +ae4b185f2ed14af7bab610738c333840598cdcc4 hs21-b01 diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java index 3bbe31378d5..e4a6b6b9879 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java @@ -428,6 +428,36 @@ public class CommandProcessor { } } }, + new Command("symbol", "symbol address", false) { + public void doit(Tokens t) { + if (t.countTokens() != 1) { + usage(); + } else { + Address a = VM.getVM().getDebugger().parseAddress(t.nextToken()); + Symbol.create(a).printValueOn(out); + out.println(); + } + } + }, + new Command("symboltable", "symboltable name", false) { + public void doit(Tokens t) { + if (t.countTokens() != 1) { + usage(); + } else { + out.println(SymbolTable.getTheTable().probe(t.nextToken())); + } + } + }, + new Command("symboldump", "symboldump", false) { + public void doit(Tokens t) { + SymbolTable.getTheTable().symbolsDo(new SymbolTable.SymbolVisitor() { + public void visit(Symbol sym) { + sym.printValueOn(out); + out.println(); + } + }); + } + }, new Command("flags", "flags [ flag ]", false) { public void doit(Tokens t) { int tokens = t.countTokens(); @@ -629,17 +659,6 @@ public class CommandProcessor { } } }, - new Command("symbol", "symbol name", false) { - public void doit(Tokens t) { - if (t.countTokens() != 1) { - usage(); - } else { - String symbol = t.nextToken(); - Address a = lookup(symbol); - out.println(symbol + " = " + a); - } - } - }, new Command("printstatics", "printstatics [ type ]", false) { public void doit(Tokens t) { if (t.countTokens() > 1) { @@ -1262,6 +1281,9 @@ public class CommandProcessor { this.err = err; for (int i = 0; i < commandList.length; i++) { Command c = commandList[i]; + if (commands.get(c.name) != null) { + throw new InternalError(c.name + " has multiple definitions"); + } commands.put(c.name, c); } if (debugger.isAttached()) { diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java index 9cf6122c761..fcaf4766811 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java @@ -89,6 +89,37 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase { readVMLongConstants(); } + public Type lookupType(String cTypeName, boolean throwException) { + Type fieldType = super.lookupType(cTypeName, false); + if (fieldType == null && cTypeName.startsWith("const ")) { + fieldType = (BasicType)lookupType(cTypeName.substring(6), false); + } + if (fieldType == null && cTypeName.endsWith(" const")) { + fieldType = (BasicType)lookupType(cTypeName.substring(0, cTypeName.length() - 6), false); + } + if (fieldType == null) { + if (cTypeName.startsWith("GrowableArray<") && cTypeName.endsWith(">*")) { + String ttype = cTypeName.substring("GrowableArray<".length(), + cTypeName.length() - 2); + Type templateType = lookupType(ttype, false); + if (templateType == null && typeNameIsPointerType(ttype)) { + templateType = recursiveCreateBasicPointerType(ttype); + } + if (templateType == null) { + lookupOrFail(ttype); + } + fieldType = recursiveCreateBasicPointerType(cTypeName); + } + } + if (fieldType == null && typeNameIsPointerType(cTypeName)) { + fieldType = recursiveCreateBasicPointerType(cTypeName); + } + if (fieldType == null && throwException) { + super.lookupType(cTypeName, true); + } + return fieldType; + } + private void readVMTypes() { // Get the variables we need in order to traverse the VMTypeEntry[] long typeEntryTypeNameOffset; @@ -250,7 +281,7 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase { BasicType containingType = lookupOrFail(typeName); // The field's Type must already be in the database -- no exceptions - BasicType fieldType = lookupOrFail(typeString); + BasicType fieldType = (BasicType)lookupType(typeString); // Create field by type createField(containingType, fieldName, fieldType, @@ -442,10 +473,17 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase { workarounds due to incomplete information in the VMStructs database. */ private BasicPointerType recursiveCreateBasicPointerType(String typeName) { + BasicPointerType result = (BasicPointerType)super.lookupType(typeName, false); + if (result != null) { + return result; + } String targetTypeName = typeName.substring(0, typeName.lastIndexOf('*')).trim(); Type targetType = null; if (typeNameIsPointerType(targetTypeName)) { - targetType = recursiveCreateBasicPointerType(targetTypeName); + targetType = lookupType(targetTypeName, false); + if (targetType == null) { + targetType = recursiveCreateBasicPointerType(targetTypeName); + } } else { targetType = lookupType(targetTypeName, false); if (targetType == null) { @@ -466,6 +504,20 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase { BasicType basicTargetType = createBasicType(targetTypeName, false, true, true); basicTargetType.setSize(1); targetType = basicTargetType; + } else if (targetTypeName.startsWith("GrowableArray<")) { + BasicType basicTargetType = createBasicType(targetTypeName, false, false, false); + + // transfer fields from GenericGrowableArray to template instance + BasicType generic = lookupOrFail("GenericGrowableArray"); + basicTargetType.setSize(generic.getSize()); + Iterator fields = generic.getFields(); + while (fields.hasNext()) { + Field f = (Field)fields.next(); + basicTargetType.addField(internalCreateField(basicTargetType, f.getName(), + f.getType(), f.isStatic(), + f.getOffset(), null)); + } + targetType = basicTargetType; } else { if (DEBUG) { System.err.println("WARNING: missing target type \"" + targetTypeName + "\" for pointer type \"" + typeName + "\""); @@ -474,7 +526,10 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase { } } } - return new BasicPointerType(this, typeName, targetType); + result = new BasicPointerType(this, typeName, targetType); + result.setSize(UNINITIALIZED_SIZE); + addType(result); + return result; } private boolean typeNameIsPointerType(String typeName) { diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java index 1633888108a..67962adefb6 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java @@ -112,7 +112,7 @@ public class BytecodeLoadConstant extends BytecodeWithCPIndex { } // return Symbol (if unresolved) or Klass (if resolved) - public Oop getKlass() { + public Object getKlass() { if (Assert.ASSERTS_ENABLED) { Assert.that(isKlassConstant(), "not a klass literal"); } @@ -121,11 +121,11 @@ public class BytecodeLoadConstant extends BytecodeWithCPIndex { // decide based on the oop type. ConstantPool cpool = method().getConstants(); int cpIndex = index(); - Oop oop = cpool.getObjAt(cpIndex); - if (oop.isKlass()) { - return (Klass) oop; - } else if (oop.isSymbol()) { - return (Symbol) oop; + ConstantPool.CPSlot oop = cpool.getSlotAt(cpIndex); + if (oop.isOop()) { + return (Klass) oop.getOop(); + } else if (oop.isMetaData()) { + return oop.getSymbol(); } else { throw new RuntimeException("should not reach here"); } @@ -165,12 +165,12 @@ public class BytecodeLoadConstant extends BytecodeWithCPIndex { // tag change from 'unresolved' to 'string' does not happen atomically. // We just look at the object at the corresponding index and // decide based on the oop type. - Oop obj = cpool.getObjAt(cpIndex); - if (obj.isSymbol()) { - Symbol sym = (Symbol) obj; - return ""; - } else if (obj.isInstance()) { - return ""; + ConstantPool.CPSlot obj = cpool.getSlotAt(cpIndex); + if (obj.isMetaData()) { + Symbol sym = obj.getSymbol(); + return ""; + } else if (obj.isOop()) { + return ""; } else { throw new RuntimeException("should not reach here"); } @@ -178,13 +178,13 @@ public class BytecodeLoadConstant extends BytecodeWithCPIndex { // tag change from 'unresolved' to 'klass' does not happen atomically. // We just look at the object at the corresponding index and // decide based on the oop type. - Oop obj = cpool.getObjAt(cpIndex); - if (obj.isKlass()) { - Klass k = (Klass) obj; - return ""; - } else if (obj.isSymbol()) { - Symbol sym = (Symbol) obj; - return ""; + ConstantPool.CPSlot obj = cpool.getSlotAt(cpIndex); + if (obj.isOop()) { + Klass k = (Klass) obj.getOop(); + return ""; + } else if (obj.isMetaData()) { + Symbol sym = obj.getSymbol(); + return ""; } else { throw new RuntimeException("should not reach here"); } diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithKlass.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithKlass.java index 56353599208..3a62c2dad0c 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithKlass.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithKlass.java @@ -37,11 +37,11 @@ public class BytecodeWithKlass extends BytecodeWithCPIndex { } public Symbol getClassName() { - Oop obj = method().getConstants().getObjAt(index()); - if (obj instanceof Symbol) { - return (Symbol)obj; + ConstantPool.CPSlot obj = method().getConstants().getSlotAt(index()); + if (obj.isMetaData()) { + return obj.getSymbol(); } else { - return ((Klass)obj).getName(); + return ((Klass)obj.getOop()).getName(); } } diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java index cb0c38f5df1..a42479d5385 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java @@ -63,7 +63,7 @@ public class DictionaryEntry extends sun.jvm.hotspot.utilities.HashtableEntry { } public Klass klass() { - return (Klass) literal(); + return (Klass)VM.getVM().getObjectHeap().newOop(literalValue().addOffsetToAsOopHandle(0)); } public DictionaryEntry(Address addr) { diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/LoaderConstraintEntry.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/LoaderConstraintEntry.java index 6f0296372f8..a6b2a743ec2 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/LoaderConstraintEntry.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/LoaderConstraintEntry.java @@ -42,14 +42,14 @@ public class LoaderConstraintEntry extends sun.jvm.hotspot.utilities.HashtableEn private static synchronized void initialize(TypeDataBase db) { Type type = db.lookupType("LoaderConstraintEntry"); - nameField = type.getOopField("_name"); + nameField = type.getAddressField("_name"); numLoadersField = type.getCIntegerField("_num_loaders"); maxLoadersField = type.getCIntegerField("_max_loaders"); loadersField = type.getAddressField("_loaders"); } // Fields - private static sun.jvm.hotspot.types.OopField nameField; + private static AddressField nameField; private static CIntegerField numLoadersField; private static CIntegerField maxLoadersField; private static AddressField loadersField; @@ -57,7 +57,7 @@ public class LoaderConstraintEntry extends sun.jvm.hotspot.utilities.HashtableEn // Accessors public Symbol name() { - return (Symbol) VM.getVM().getObjectHeap().newOop(nameField.getValue(addr)); + return Symbol.create(nameField.getValue(addr)); } public int numLoaders() { diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/PlaceholderEntry.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/PlaceholderEntry.java index f6f1dc7e9f8..5574910a320 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/PlaceholderEntry.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/PlaceholderEntry.java @@ -58,7 +58,7 @@ public class PlaceholderEntry extends sun.jvm.hotspot.utilities.HashtableEntry { } public Symbol klass() { - return (Symbol) literal(); + return Symbol.create(literalValue()); } /* covariant return type :-( diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/StringTable.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/StringTable.java index 0dd66f1fbef..c17610cb29f 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/StringTable.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/StringTable.java @@ -70,11 +70,13 @@ public class StringTable extends sun.jvm.hotspot.utilities.Hashtable { } public void stringsDo(StringVisitor visitor) { + ObjectHeap oh = VM.getVM().getObjectHeap(); int numBuckets = tableSize(); for (int i = 0; i < numBuckets; i++) { for (HashtableEntry e = (HashtableEntry) bucket(i); e != null; e = (HashtableEntry) e.next()) { - visitor.visit((Instance) e.literal()); + Instance s = (Instance)oh.newOop(e.literalValue().addOffsetToAsOopHandle(0)); + visitor.visit(s); } } } diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java index 0ad8aea1d80..cfee9fbe004 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java @@ -85,7 +85,7 @@ public class SymbolTable extends sun.jvm.hotspot.utilities.Hashtable { long hashValue = hashSymbol(name); for (HashtableEntry e = (HashtableEntry) bucket(hashToIndex(hashValue)); e != null; e = (HashtableEntry) e.next()) { if (e.hash() == hashValue) { - Symbol sym = (Symbol) e.literal(); + Symbol sym = Symbol.create(e.literalValue()); if (sym.equals(name)) { return sym; } @@ -103,7 +103,7 @@ public class SymbolTable extends sun.jvm.hotspot.utilities.Hashtable { for (int i = 0; i < numBuckets; i++) { for (HashtableEntry e = (HashtableEntry) bucket(i); e != null; e = (HashtableEntry) e.next()) { - visitor.visit((Symbol) e.literal()); + visitor.visit(Symbol.create(e.literalValue())); } } } diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java index 31cc2a956e1..f1babff8cb6 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java @@ -35,6 +35,38 @@ import sun.jvm.hotspot.utilities.*; // as described in the class file public class ConstantPool extends Oop implements ClassConstants { + + public class CPSlot { + private Address ptr; + + CPSlot(Address ptr) { + this.ptr = ptr; + } + CPSlot(Symbol sym) { + this.ptr = sym.getAddress().orWithMask(1); + } + + public boolean isOop() { + return (ptr.minus(null) & 1) == 0; + } + public boolean isMetaData() { + return (ptr.minus(null) & 1) == 1; + } + + public Symbol getSymbol() { + if (isMetaData()) { + return Symbol.create(ptr.xorWithMask(1)); + } + throw new InternalError("not a symbol"); + } + public Oop getOop() { + if (isOop()) { + return VM.getVM().getObjectHeap().newOop(ptr.addOffsetToAsOopHandle(0)); + } + throw new InternalError("not an oop"); + } + } + // Used for debugging this code private static final boolean DEBUG = false; @@ -110,12 +142,17 @@ public class ConstantPool extends Oop implements ClassConstants { return new ConstantTag(getTags().getByteAt((int) index)); } - public Oop getObjAt(long index){ + public CPSlot getSlotAt(long index) { + return new CPSlot(getHandle().getAddressAt(indexOffset(index))); + } + + public Oop getObjAtRaw(long index){ return getHeap().newOop(getHandle().getOopHandleAt(indexOffset(index))); } public Symbol getSymbolAt(long index) { - return (Symbol) getObjAt(index); + CPSlot slot = getSlotAt(index); + return slot.getSymbol(); } public int getIntAt(long index){ @@ -187,7 +224,7 @@ public class ConstantPool extends Oop implements ClassConstants { // returns null, if not resolved. public Klass getKlassRefAt(int which) { if( ! getTagAt(which).isKlass()) return null; - return (Klass) getObjAt(which); + return (Klass) getObjAtRaw(which); } // returns null, if not resolved. @@ -477,7 +514,7 @@ public class ConstantPool extends Oop implements ClassConstants { case JVM_CONSTANT_Class: { dos.writeByte(cpConstType); // Klass already resolved. ConstantPool constains klassOop. - Klass refKls = (Klass) getObjAt(ci); + Klass refKls = (Klass) getObjAtRaw(ci); String klassName = refKls.getName().asString(); Short s = (Short) utf8ToIndex.get(klassName); dos.writeShort(s.shortValue()); @@ -498,7 +535,7 @@ public class ConstantPool extends Oop implements ClassConstants { case JVM_CONSTANT_String: { dos.writeByte(cpConstType); - String str = OopUtilities.stringOopToString(getObjAt(ci)); + String str = OopUtilities.stringOopToString(getObjAtRaw(ci)); Short s = (Short) utf8ToIndex.get(str); dos.writeShort(s.shortValue()); if (DEBUG) debugMessage("CP[" + ci + "] = string " + s); diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java index 04d64086740..35a9d194037 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java @@ -576,7 +576,7 @@ public class GenerateOopMap { ConstantPool cp = method().getConstants(); int nameAndTypeIdx = cp.name_and_type_ref_index_at(idx); int signatureIdx = cp.signature_ref_index_at(nameAndTypeIdx); - symbolOop signature = cp.symbol_at(signatureIdx); + Symbol* signature = cp.symbol_at(signatureIdx); tty.print("%s", signature.as_C_string()); */ } @@ -616,7 +616,7 @@ public class GenerateOopMap { constantPoolOop cp = method().constants(); int nameAndTypeIdx = cp.name_and_type_ref_index_at(idx); int signatureIdx = cp.signature_ref_index_at(nameAndTypeIdx); - symbolOop signature = cp.symbol_at(signatureIdx); + Symbol* signature = cp.symbol_at(signatureIdx); tty.print("%s", signature.as_C_string()); */ } diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java index 6572d7ac0ec..0b33b94e7be 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java @@ -82,8 +82,8 @@ public class InstanceKlass extends Klass { classLoader = new OopField(type.getOopField("_class_loader"), Oop.getHeaderSize()); protectionDomain = new OopField(type.getOopField("_protection_domain"), Oop.getHeaderSize()); signers = new OopField(type.getOopField("_signers"), Oop.getHeaderSize()); - sourceFileName = new OopField(type.getOopField("_source_file_name"), Oop.getHeaderSize()); - sourceDebugExtension = new OopField(type.getOopField("_source_debug_extension"), Oop.getHeaderSize()); + sourceFileName = type.getAddressField("_source_file_name"); + sourceDebugExtension = type.getAddressField("_source_debug_extension"); innerClasses = new OopField(type.getOopField("_inner_classes"), Oop.getHeaderSize()); nonstaticFieldSize = new CIntField(type.getCIntegerField("_nonstatic_field_size"), Oop.getHeaderSize()); staticFieldSize = new CIntField(type.getCIntegerField("_static_field_size"), Oop.getHeaderSize()); @@ -94,7 +94,7 @@ public class InstanceKlass extends Klass { vtableLen = new CIntField(type.getCIntegerField("_vtable_len"), Oop.getHeaderSize()); itableLen = new CIntField(type.getCIntegerField("_itable_len"), Oop.getHeaderSize()); breakpoints = type.getAddressField("_breakpoints"); - genericSignature = new OopField(type.getOopField("_generic_signature"), Oop.getHeaderSize()); + genericSignature = type.getAddressField("_generic_signature"); majorVersion = new CIntField(type.getCIntegerField("_major_version"), Oop.getHeaderSize()); minorVersion = new CIntField(type.getCIntegerField("_minor_version"), Oop.getHeaderSize()); headerSize = alignObjectOffset(Oop.getHeaderSize() + type.getSize()); @@ -135,8 +135,8 @@ public class InstanceKlass extends Klass { private static OopField classLoader; private static OopField protectionDomain; private static OopField signers; - private static OopField sourceFileName; - private static OopField sourceDebugExtension; + private static AddressField sourceFileName; + private static AddressField sourceDebugExtension; private static OopField innerClasses; private static CIntField nonstaticFieldSize; private static CIntField staticFieldSize; @@ -147,7 +147,7 @@ public class InstanceKlass extends Klass { private static CIntField vtableLen; private static CIntField itableLen; private static AddressField breakpoints; - private static OopField genericSignature; + private static AddressField genericSignature; private static CIntField majorVersion; private static CIntField minorVersion; @@ -257,8 +257,8 @@ public class InstanceKlass extends Klass { public Oop getClassLoader() { return classLoader.getValue(this); } public Oop getProtectionDomain() { return protectionDomain.getValue(this); } public ObjArray getSigners() { return (ObjArray) signers.getValue(this); } - public Symbol getSourceFileName() { return (Symbol) sourceFileName.getValue(this); } - public Symbol getSourceDebugExtension(){ return (Symbol) sourceDebugExtension.getValue(this); } + public Symbol getSourceFileName() { return getSymbol(sourceFileName); } + public Symbol getSourceDebugExtension(){ return getSymbol(sourceDebugExtension); } public TypeArray getInnerClasses() { return (TypeArray) innerClasses.getValue(this); } public long getNonstaticFieldSize() { return nonstaticFieldSize.getValue(this); } public long getStaticFieldSize() { return staticFieldSize.getValue(this); } @@ -267,7 +267,7 @@ public class InstanceKlass extends Klass { public boolean getIsMarkedDependent() { return isMarkedDependent.getValue(this) != 0; } public long getVtableLen() { return vtableLen.getValue(this); } public long getItableLen() { return itableLen.getValue(this); } - public Symbol getGenericSignature() { return (Symbol) genericSignature.getValue(this); } + public Symbol getGenericSignature() { return getSymbol(genericSignature); } public long majorVersion() { return majorVersion.getValue(this); } public long minorVersion() { return minorVersion.getValue(this); } @@ -308,12 +308,12 @@ public class InstanceKlass extends Klass { if (ioff != 0) { // only look at classes that are already loaded // since we are looking for the flags for our self. - Oop classInfo = getConstants().getObjAt(ioff); + ConstantPool.CPSlot classInfo = getConstants().getSlotAt(ioff); Symbol name = null; - if (classInfo instanceof Klass) { - name = ((Klass) classInfo).getName(); - } else if (classInfo instanceof Symbol) { - name = (Symbol) classInfo; + if (classInfo.isOop()) { + name = ((Klass) classInfo.getOop()).getName(); + } else if (classInfo.isMetaData()) { + name = classInfo.getSymbol(); } else { throw new RuntimeException("should not reach here"); } @@ -358,12 +358,12 @@ public class InstanceKlass extends Klass { // 'ioff' can be zero. // refer to JVM spec. section 4.7.5. if (ioff != 0) { - Oop iclassInfo = getConstants().getObjAt(ioff); + ConstantPool.CPSlot iclassInfo = getConstants().getSlotAt(ioff); Symbol innerName = null; - if (iclassInfo instanceof Klass) { - innerName = ((Klass) iclassInfo).getName(); - } else if (iclassInfo instanceof Symbol) { - innerName = (Symbol) iclassInfo; + if (iclassInfo.isOop()) { + innerName = ((Klass) iclassInfo.getOop()).getName(); + } else if (iclassInfo.isMetaData()) { + innerName = iclassInfo.getSymbol(); } else { throw new RuntimeException("should not reach here"); } @@ -387,12 +387,12 @@ public class InstanceKlass extends Klass { } } } else { - Oop oclassInfo = getConstants().getObjAt(ooff); + ConstantPool.CPSlot oclassInfo = getConstants().getSlotAt(ooff); Symbol outerName = null; - if (oclassInfo instanceof Klass) { - outerName = ((Klass) oclassInfo).getName(); - } else if (oclassInfo instanceof Symbol) { - outerName = (Symbol) oclassInfo; + if (oclassInfo.isOop()) { + outerName = ((Klass) oclassInfo.getOop()).getName(); + } else if (oclassInfo.isMetaData()) { + outerName = oclassInfo.getSymbol(); } else { throw new RuntimeException("should not reach here"); } @@ -450,7 +450,6 @@ public class InstanceKlass extends Klass { visitor.doOop(classLoader, true); visitor.doOop(protectionDomain, true); visitor.doOop(signers, true); - visitor.doOop(sourceFileName, true); visitor.doOop(innerClasses, true); visitor.doCInt(nonstaticFieldSize, true); visitor.doCInt(staticFieldSize, true); @@ -467,7 +466,7 @@ public class InstanceKlass extends Klass { for (int index = 0; index < length; index += NEXT_OFFSET) { short accessFlags = fields.getShortAt(index + ACCESS_FLAGS_OFFSET); short signatureIndex = fields.getShortAt(index + SIGNATURE_INDEX_OFFSET); - FieldType type = new FieldType((Symbol) getConstants().getObjAt(signatureIndex)); + FieldType type = new FieldType(getConstants().getSymbolAt(signatureIndex)); AccessFlags access = new AccessFlags(accessFlags); if (access.isStatic()) { visitField(visitor, type, index); @@ -490,7 +489,7 @@ public class InstanceKlass extends Klass { short accessFlags = fields.getShortAt(index + ACCESS_FLAGS_OFFSET); short signatureIndex = fields.getShortAt(index + SIGNATURE_INDEX_OFFSET); - FieldType type = new FieldType((Symbol) getConstants().getObjAt(signatureIndex)); + FieldType type = new FieldType(getConstants().getSymbolAt(signatureIndex)); AccessFlags access = new AccessFlags(accessFlags); if (!access.isStatic()) { visitField(visitor, type, index); @@ -787,7 +786,7 @@ public class InstanceKlass extends Klass { private Field newField(int index) { TypeArray fields = getFields(); short signatureIndex = fields.getShortAt(index + SIGNATURE_INDEX_OFFSET); - FieldType type = new FieldType((Symbol) getConstants().getObjAt(signatureIndex)); + FieldType type = new FieldType(getConstants().getSymbolAt(signatureIndex)); if (type.isOop()) { if (VM.getVM().isCompressedOopsEnabled()) { return new NarrowOopField(this, index); diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java index 9444b6cec2f..ccb5e5b46b0 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java @@ -53,7 +53,7 @@ public class Klass extends Oop implements ClassConstants { javaMirror = new OopField(type.getOopField("_java_mirror"), Oop.getHeaderSize()); superField = new OopField(type.getOopField("_super"), Oop.getHeaderSize()); layoutHelper = new IntField(type.getJIntField("_layout_helper"), Oop.getHeaderSize()); - name = new OopField(type.getOopField("_name"), Oop.getHeaderSize()); + name = type.getAddressField("_name"); accessFlags = new CIntField(type.getCIntegerField("_access_flags"), Oop.getHeaderSize()); subklass = new OopField(type.getOopField("_subklass"), Oop.getHeaderSize()); nextSibling = new OopField(type.getOopField("_next_sibling"), Oop.getHeaderSize()); @@ -83,18 +83,26 @@ public class Klass extends Oop implements ClassConstants { private static OopField javaMirror; private static OopField superField; private static IntField layoutHelper; - private static OopField name; + private static AddressField name; private static CIntField accessFlags; private static OopField subklass; private static OopField nextSibling; private static CIntField allocCount; + private Address getValue(AddressField field) { + return getHandle().getAddressAt(field.getOffset() + Oop.getHeaderSize()); + } + + protected Symbol getSymbol(AddressField field) { + return Symbol.create(getHandle().getAddressAt(field.getOffset() + Oop.getHeaderSize())); + } + // Accessors for declared fields public Instance getJavaMirror() { return (Instance) javaMirror.getValue(this); } public Klass getSuper() { return (Klass) superField.getValue(this); } public Klass getJavaSuper() { return null; } public int getLayoutHelper() { return (int) layoutHelper.getValue(this); } - public Symbol getName() { return (Symbol) name.getValue(this); } + public Symbol getName() { return getSymbol(name); } public long getAccessFlags() { return accessFlags.getValue(this); } // Convenience routine public AccessFlags getAccessFlagsObj(){ return new AccessFlags(getAccessFlags()); } @@ -162,7 +170,7 @@ public class Klass extends Oop implements ClassConstants { visitor.doOop(javaMirror, true); visitor.doOop(superField, true); visitor.doInt(layoutHelper, true); - visitor.doOop(name, true); + // visitor.doOop(name, true); visitor.doCInt(accessFlags, true); visitor.doOop(subklass, true); visitor.doOop(nextSibling, true); diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Method.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Method.java index 2d6fc5b6e8f..ed551bc74e4 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Method.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Method.java @@ -196,11 +196,11 @@ public class Method extends Oop { public Address getFromCompiledCodeEntryPoint() { return fromCompiledCodeEntryPointField.getValue(this); } */ // Accessors - public Symbol getName() { return (Symbol) getConstants().getObjAt(getNameIndex()); } - public Symbol getSignature() { return (Symbol) getConstants().getObjAt(getSignatureIndex()); } + public Symbol getName() { return getConstants().getSymbolAt(getNameIndex()); } + public Symbol getSignature() { return getConstants().getSymbolAt(getSignatureIndex()); } public Symbol getGenericSignature() { long index = getGenericSignatureIndex(); - return (index != 0L) ? (Symbol) getConstants().getObjAt(index) : null; + return (index != 0L) ? getConstants().getSymbolAt(index) : null; } // Method holder (the Klass holding this method) diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java index 564463d9ed4..08aa0143c8e 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java @@ -47,7 +47,6 @@ public class ObjectHeap { DEBUG = System.getProperty("sun.jvm.hotspot.oops.ObjectHeap.DEBUG") != null; } - private OopHandle symbolKlassHandle; private OopHandle methodKlassHandle; private OopHandle constMethodKlassHandle; private OopHandle methodDataKlassHandle; @@ -68,7 +67,6 @@ public class ObjectHeap { private OopHandle arrayKlassKlassHandle; private OopHandle compiledICHolderKlassHandle; - private SymbolKlass symbolKlassObj; private MethodKlass methodKlassObj; private ConstMethodKlass constMethodKlassObj; private MethodDataKlass methodDataKlassObj; @@ -93,9 +91,6 @@ public class ObjectHeap { // Lookup the roots in the object hierarchy. Type universeType = db.lookupType("Universe"); - symbolKlassHandle = universeType.getOopField("_symbolKlassObj").getValue(); - symbolKlassObj = new SymbolKlass(symbolKlassHandle, this); - methodKlassHandle = universeType.getOopField("_methodKlassObj").getValue(); methodKlassObj = new MethodKlass(methodKlassHandle, this); @@ -199,7 +194,6 @@ public class ObjectHeap { public long getDoubleSize() { return doubleSize; } // Accessors for well-known system classes (from Universe) - public SymbolKlass getSymbolKlassObj() { return symbolKlassObj; } public MethodKlass getMethodKlassObj() { return methodKlassObj; } public ConstMethodKlass getConstMethodKlassObj() { return constMethodKlassObj; } public MethodDataKlass getMethodDataKlassObj() { return methodDataKlassObj; } @@ -337,7 +331,6 @@ public class ObjectHeap { // First check if handle is one of the root objects if (handle.equals(methodKlassHandle)) return getMethodKlassObj(); if (handle.equals(constMethodKlassHandle)) return getConstMethodKlassObj(); - if (handle.equals(symbolKlassHandle)) return getSymbolKlassObj(); if (handle.equals(constantPoolKlassHandle)) return getConstantPoolKlassObj(); if (handle.equals(constantPoolCacheKlassHandle)) return getConstantPoolCacheKlassObj(); if (handle.equals(instanceKlassKlassHandle)) return getInstanceKlassKlassObj(); @@ -363,7 +356,6 @@ public class ObjectHeap { if (klass != null) { if (klass.equals(methodKlassHandle)) return new Method(handle, this); if (klass.equals(constMethodKlassHandle)) return new ConstMethod(handle, this); - if (klass.equals(symbolKlassHandle)) return new Symbol(handle, this); if (klass.equals(constantPoolKlassHandle)) return new ConstantPool(handle, this); if (klass.equals(constantPoolCacheKlassHandle)) return new ConstantPoolCache(handle, this); if (!VM.getVM().isCore()) { diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Symbol.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Symbol.java index 708c54011bd..964e3a8de3f 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Symbol.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Symbol.java @@ -34,7 +34,7 @@ import sun.jvm.hotspot.utilities.*; // A Symbol is a canonicalized string. // All Symbols reside in global symbolTable. -public class Symbol extends Oop { +public class Symbol extends VMObject { static { VM.registerVMInitializedObserver(new Observer() { public void update(Observable o, Object data) { @@ -44,9 +44,10 @@ public class Symbol extends Oop { } private static synchronized void initialize(TypeDataBase db) throws WrongTypeException { - Type type = db.lookupType("symbolOopDesc"); - length = new CIntField(type.getCIntegerField("_length"), 0); + Type type = db.lookupType("Symbol"); + length = type.getCIntegerField("_length"); baseOffset = type.getField("_body").getOffset(); + idHash = type.getCIntegerField("_identity_hash"); } // Format: @@ -55,8 +56,15 @@ public class Symbol extends Oop { // [length] byte size of uft8 string // ..body.. - Symbol(OopHandle handle, ObjectHeap heap) { - super(handle, heap); + public static Symbol create(Address addr) { + if (addr == null) { + return null; + } + return new Symbol(addr); + } + + Symbol(Address addr) { + super(addr); } public boolean isSymbol() { return true; } @@ -64,15 +72,19 @@ public class Symbol extends Oop { private static long baseOffset; // tells where the array part starts // Fields - private static CIntField length; + private static CIntegerField length; // Accessors for declared fields - public long getLength() { return length.getValue(this); } + public long getLength() { return length.getValue(this.addr); } public byte getByteAt(long index) { - return getHandle().getJByteAt(baseOffset + index); + return addr.getJByteAt(baseOffset + index); } + private static CIntegerField idHash; + + public int identityHash() { return (int)idHash.getValue(this.addr); } + public boolean equals(byte[] modUTF8Chars) { int l = (int) getLength(); if (l != modUTF8Chars.length) return false; @@ -98,7 +110,9 @@ public class Symbol extends Oop { // Decode the byte array and return the string. try { return readModifiedUTF8(asByteArray()); - } catch(IOException e) { + } catch(Exception e) { + System.err.println(addr); + e.printStackTrace(); return null; } } @@ -111,28 +125,13 @@ public class Symbol extends Oop { tty.print("#" + asString()); } - public long getObjectSize() { - return alignObjectSize(baseOffset + getLength()); - } - - void iterateFields(OopVisitor visitor, boolean doVMFields) { - super.iterateFields(visitor, doVMFields); - if (doVMFields) { - visitor.doCInt(length, true); - int length = (int) getLength(); - for (int index = 0; index < length; index++) { - visitor.doByte(new ByteField(new IndexableFieldIdentifier(index), baseOffset + index, false), true); - } - } - } - /** Note: this comparison is used for vtable sorting only; it doesn't matter what order it defines, as long as it is a total, - time-invariant order Since symbolOops are in permSpace, their + time-invariant order Since Symbol* are in C_HEAP, their relative order in memory never changes, so use address comparison for speed. */ public int fastCompare(Symbol other) { - return (int) getHandle().minus(other.getHandle()); + return (int) addr.minus(other.addr); } private static String readModifiedUTF8(byte[] buf) throws IOException { diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/SymbolKlass.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/SymbolKlass.java deleted file mode 100644 index 6fe000d424a..00000000000 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/SymbolKlass.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2000, 2001, 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. - * - */ - -package sun.jvm.hotspot.oops; - -import java.io.*; -import java.util.*; -import sun.jvm.hotspot.debugger.*; -import sun.jvm.hotspot.runtime.*; -import sun.jvm.hotspot.types.*; - -// A SymbolKlass is the klass for all Symbols - -public class SymbolKlass extends Klass { - static { - VM.registerVMInitializedObserver(new Observer() { - public void update(Observable o, Object data) { - initialize(VM.getVM().getTypeDataBase()); - } - }); - } - - private static synchronized void initialize(TypeDataBase db) throws WrongTypeException { - Type type = db.lookupType("symbolKlass"); - headerSize = type.getSize() + Oop.getHeaderSize(); - } - - SymbolKlass(OopHandle handle, ObjectHeap heap) { - super(handle, heap); - } - - private static long headerSize; - - public long getObjectSize() { return alignObjectSize(headerSize); } - - public void printValueOn(PrintStream tty) { - tty.print("SymbolKlass"); - } -} diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/LowMemoryDetectorThread.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ServiceThread.java similarity index 83% rename from hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/LowMemoryDetectorThread.java rename to hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ServiceThread.java index f3d630d16f9..ad81488091a 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/LowMemoryDetectorThread.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ServiceThread.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011 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 @@ -29,13 +29,13 @@ import java.io.*; import sun.jvm.hotspot.debugger.*; import sun.jvm.hotspot.types.*; -public class LowMemoryDetectorThread extends JavaThread { - public LowMemoryDetectorThread(Address addr) { +public class ServiceThread extends JavaThread { + public ServiceThread(Address addr) { super(addr); } public boolean isJavaThread() { return false; } public boolean isHiddenFromExternalView() { return true; } - public boolean isLowMemoryDetectorThread() { return true; } + public boolean isServiceThread() { return true; } } diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Thread.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Thread.java index 3a3466eeb3c..2948f7b95ca 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Thread.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Thread.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, 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 @@ -111,7 +111,7 @@ public class Thread extends VMObject { public boolean isJvmtiAgentThread() { return false; } public boolean isWatcherThread() { return false; } public boolean isConcurrentMarkSweepThread() { return false; } - public boolean isLowMemoryDetectorThread() { return false; } + public boolean isServiceThread() { return false; } /** Memory operations */ public void oopsDo(AddressVisitor oopVisitor) { diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java index 29196ee05d6..d90d08bd726 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, 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 @@ -107,14 +107,14 @@ public class Threads { // for now, use JavaThread itself. fix it later with appropriate class if needed virtualConstructor.addMapping("SurrogateLockerThread", JavaThread.class); virtualConstructor.addMapping("JvmtiAgentThread", JvmtiAgentThread.class); - virtualConstructor.addMapping("LowMemoryDetectorThread", LowMemoryDetectorThread.class); + virtualConstructor.addMapping("ServiceThread", ServiceThread.class); } public Threads() { } /** NOTE: this returns objects of type JavaThread, CompilerThread, - JvmtiAgentThread, and LowMemoryDetectorThread. + JvmtiAgentThread, and ServiceThread. The latter four are subclasses of the former. Most operations (fetching the top frame, etc.) are only allowed to be performed on a "pure" JavaThread. For this reason, {@link @@ -143,7 +143,7 @@ public class Threads { return thread; } catch (Exception e) { throw new RuntimeException("Unable to deduce type of thread from address " + threadAddr + - " (expected type JavaThread, CompilerThread, LowMemoryDetectorThread, JvmtiAgentThread, or SurrogateLockerThread)", e); + " (expected type JavaThread, CompilerThread, ServiceThread, JvmtiAgentThread, or SurrogateLockerThread)", e); } } diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java index 494f1765f13..3896c67d77c 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java @@ -229,7 +229,7 @@ public class ClassWriter implements /* imports */ ClassConstants case JVM_CONSTANT_Class: { dos.writeByte(cpConstType); // Klass already resolved. ConstantPool constains klassOop. - Klass refKls = (Klass) cpool.getObjAt(ci); + Klass refKls = (Klass) cpool.getObjAtRaw(ci); String klassName = refKls.getName().asString(); Short s = (Short) utf8ToIndex.get(klassName); @@ -255,7 +255,7 @@ public class ClassWriter implements /* imports */ ClassConstants case JVM_CONSTANT_String: { dos.writeByte(cpConstType); - String str = OopUtilities.stringOopToString(cpool.getObjAt(ci)); + String str = OopUtilities.stringOopToString(cpool.getObjAtRaw(ci)); Short s = (Short) utf8ToIndex.get(str); dos.writeShort(s.shortValue()); if (DEBUG) debugMessage("CP[" + ci + "] = string " + s); diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/Field.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/Field.java index 0f22705b665..2ef0e48c958 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/Field.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/Field.java @@ -56,7 +56,7 @@ import sun.jvm.hotspot.debugger.*; FIXME: among other things, this interface is not sufficient to - describe fields which are themselves arrays (like symbolOop's + describe fields which are themselves arrays (like Symbol's jbyte _body[1]). */ public interface Field { /** Get the name of this field */ diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java index 979d80b3062..147e3bd5590 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java @@ -530,7 +530,7 @@ public class HTMLGenerator implements /* imports */ ClassConstants { case JVM_CONSTANT_Class: buf.cell("JVM_CONSTANT_Class"); - Klass klass = (Klass) cpool.getObjAt(index); + Klass klass = (Klass) cpool.getObjAtRaw(index); if (klass instanceof InstanceKlass) { buf.cell(genKlassLink((InstanceKlass) klass)); } else { @@ -555,7 +555,7 @@ public class HTMLGenerator implements /* imports */ ClassConstants { case JVM_CONSTANT_String: buf.cell("JVM_CONSTANT_String"); buf.cell("\"" + - escapeHTMLSpecialChars(OopUtilities.stringOopToString(cpool.getObjAt(index))) + "\""); + escapeHTMLSpecialChars(OopUtilities.stringOopToString(cpool.getObjAtRaw(index))) + "\""); break; case JVM_CONSTANT_Fieldref: @@ -672,11 +672,11 @@ public class HTMLGenerator implements /* imports */ ClassConstants { buf.beginTag("ul"); for (int exp = 0; exp < exceptions.length; exp++) { short cpIndex = (short) exceptions[exp].getClassCPIndex(); - Oop obj = cpool.getObjAt(cpIndex); - if (obj instanceof Symbol) { - buf.li(((Symbol)obj).asString().replace('/', '.')); + ConstantPool.CPSlot obj = cpool.getSlotAt(cpIndex); + if (obj.isMetaData()) { + buf.li((obj.getSymbol()).asString().replace('/', '.')); } else { - buf.li(genKlassLink((InstanceKlass)obj)); + buf.li(genKlassLink((InstanceKlass)obj.getOop())); } } buf.endTag("ul"); @@ -756,7 +756,7 @@ public class HTMLGenerator implements /* imports */ ClassConstants { } else if (instr instanceof BytecodeLoadConstant) { BytecodeLoadConstant ldc = (BytecodeLoadConstant) instr; if (ldc.isKlassConstant()) { - Oop oop = ldc.getKlass(); + Object oop = ldc.getKlass(); if (oop instanceof Klass) { buf.append(""); } // derived class may return Class diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HashtableEntry.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HashtableEntry.java index d623be7642a..1ae9dfaf48a 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HashtableEntry.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HashtableEntry.java @@ -41,16 +41,16 @@ public class HashtableEntry extends BasicHashtableEntry { } private static synchronized void initialize(TypeDataBase db) { - Type type = db.lookupType("HashtableEntry"); - literalField = type.getOopField("_literal"); + Type type = db.lookupType("HashtableEntry"); + literalField = type.getAddressField("_literal"); } // Fields - private static OopField literalField; + private static AddressField literalField; // Accessors - public Oop literal() { - return VM.getVM().getObjectHeap().newOop(literalField.getValue(addr)); + public Address literalValue() { + return literalField.getValue(addr); } public HashtableEntry(Address addr) { diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java index 8b5e4d777c6..8da90314005 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java @@ -740,7 +740,7 @@ public class HeapHprofBinWriter extends AbstractHeapGraphWriter { for (Iterator itr = fields.iterator(); itr.hasNext();) { Field field = (Field) itr.next(); Symbol name = symTbl.probe(field.getID().getName()); - writeObjectID(name); + writeSymbolID(name); char typeCode = (char) field.getSignature().getByteAt(0); int kind = signatureToHprofKind(typeCode); out.writeByte((byte)kind); @@ -852,7 +852,7 @@ public class HeapHprofBinWriter extends AbstractHeapGraphWriter { private void writeSymbol(Symbol sym) throws IOException { byte[] buf = sym.asString().getBytes("UTF-8"); writeHeader(HPROF_UTF8, buf.length + OBJ_ID_SIZE); - writeObjectID(sym); + writeSymbolID(sym); out.write(buf); } @@ -869,7 +869,7 @@ public class HeapHprofBinWriter extends AbstractHeapGraphWriter { out.writeInt(serialNum); writeObjectID(clazz); out.writeInt(DUMMY_STACK_TRACE_ID); - writeObjectID(k.getName()); + writeSymbolID(k.getName()); serialNum++; } catch (IOException exp) { throw new RuntimeException(exp); @@ -901,6 +901,10 @@ public class HeapHprofBinWriter extends AbstractHeapGraphWriter { writeObjectID(address); } + private void writeSymbolID(Symbol sym) throws IOException { + writeObjectID(getAddressValue(sym.getAddress())); + } + private void writeObjectID(long address) throws IOException { if (OBJ_ID_SIZE == 4) { out.writeInt((int) address); diff --git a/hotspot/make/Makefile b/hotspot/make/Makefile index e55408cc484..fd46aeef087 100644 --- a/hotspot/make/Makefile +++ b/hotspot/make/Makefile @@ -73,6 +73,7 @@ else include defs.make endif +include $(GAMMADIR)/make/altsrc.make ifneq ($(ALT_OUTPUTDIR),) ALT_OUT=ALT_OUTPUTDIR=$(ALT_OUTPUTDIR) @@ -361,7 +362,8 @@ $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/code/% $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/prims/% $(install-file) -$(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h: $(HS_SRC_DIR)/cpu/$(HS_ARCH)/vm/jni_$(HS_ARCH).h +HS_JNI_ARCH_SRC=$(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(HS_ARCH)/vm/jni_$(HS_ARCH).h) +$(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h: $(HS_JNI_ARCH_SRC) $(install-file) $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/services/% diff --git a/hotspot/make/altsrc.make b/hotspot/make/altsrc.make new file mode 100644 index 00000000000..a86b8326812 --- /dev/null +++ b/hotspot/make/altsrc.make @@ -0,0 +1,92 @@ +# +# Copyright (c) 2011, 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. +# +# + +# This file defines variables and macros which are used in the makefiles to +# allow distributions to augment or replace common hotspot code with +# distribution-specific source files. + +# Requires: GAMMADIR +# Provides: +# variables: HS_COMMON_SRC, HS_ALT_SRC, HS_COMMON_SRC_REL, and HS_ALT_SRC_REL +# functions: altsrc-equiv, if-has-altsrc, altsrc, altsrc-replace + +HS_COMMON_SRC_REL=src + +# This needs to be changed to a more generic location, but we keep it as this +# for now for compatibility +HS_ALT_SRC_REL=src/closed + +HS_COMMON_SRC=$(GAMMADIR)/$(HS_COMMON_SRC_REL) +HS_ALT_SRC=$(GAMMADIR)/$(HS_ALT_SRC_REL) + + +## altsrc-equiv +# +# Convert a common source path to an alternative source path +# +# Parameter: An absolute path into the common sources +# Result: The matching path to the alternate-source location +# +altsrc-equiv=$(subst $(HS_COMMON_SRC)/,$(HS_ALT_SRC)/,$(1)) + + +## if-has-altsrc +# +# Conditional macro to test for the existence of an alternate source path +# +# Parameter: An absolute path into the common sources +# Parameter: Result if the alternative-source location exists +# Parameter: Result if the alternative-source location does not exist +# Result: expands to parameter 2 or 3 depending on existence of alternate source +# +if-has-altsrc=$(if $(wildcard $(call altsrc-equiv,$(1))),$(2),$(3)) + + +## altsrc +# +# Converts common source path to alternate source path if the alternate +# path exists, otherwise evaluates to nul (empty string) +# +# Parameter: An absolute path into the common sources +# Result: The equivalent path to the alternate-source location, if such a +# location exists on the filesystem. Otherwise it expands to empty. +# +altsrc=$(call if-has-altsrc,$(1),$(call altsrc-equiv,$(1))) + +## commonsrc +# +# Returns parameter. +# +commonsrc=$(1) + + +## altsrc-replace +# +# Converts a common source path to an alternate source path if the alternate +# source path exists. Otherwise it evaluates to the input common source path. +# +# Parameter: An absolute path into the common sources +# Result: A path to either the common or alternate sources +# +altsrc-replace=$(call if-has-altsrc,$(1),$(call altsrc-equiv,$(1)),$(1)) diff --git a/hotspot/make/hotspot_version b/hotspot/make/hotspot_version index 0442c544cb6..dfa5badbaa5 100644 --- a/hotspot/make/hotspot_version +++ b/hotspot/make/hotspot_version @@ -33,9 +33,9 @@ # Don't put quotes (fail windows build). HOTSPOT_VM_COPYRIGHT=Copyright 2011 -HS_MAJOR_VER=20 +HS_MAJOR_VER=21 HS_MINOR_VER=0 -HS_BUILD_NUMBER=07 +HS_BUILD_NUMBER=02 JDK_MAJOR_VER=1 JDK_MINOR_VER=7 diff --git a/hotspot/make/jprt.properties b/hotspot/make/jprt.properties index c8bbb3c6c14..698ad33dce6 100644 --- a/hotspot/make/jprt.properties +++ b/hotspot/make/jprt.properties @@ -44,6 +44,11 @@ jprt.tools.default.release=${jprt.submit.release} jprt.sync.push=false +# Note: we want both embedded releases and regular releases to build and test +# all platforms so that regressions are not introduced (eg. change to +# common code by SE breaks PPC/ARM; change to common code by SE-E breaks +# sparc etc. + # Define the Solaris platforms we want for the various releases jprt.my.solaris.sparc.jdk7=solaris_sparc_5.10 @@ -55,6 +60,8 @@ jprt.my.solaris.sparc.jdk6u10=solaris_sparc_5.8 jprt.my.solaris.sparc.jdk6u14=solaris_sparc_5.8 jprt.my.solaris.sparc.jdk6u18=solaris_sparc_5.8 jprt.my.solaris.sparc.jdk6u20=solaris_sparc_5.8 +jprt.my.solaris.sparc.ejdk7=${jprt.my.solaris.sparc.jdk7} +jprt.my.solaris.sparc.ejdk6=${jprt.my.solaris.sparc.jdk6} jprt.my.solaris.sparc=${jprt.my.solaris.sparc.${jprt.tools.default.release}} jprt.my.solaris.sparcv9.jdk7=solaris_sparcv9_5.10 @@ -66,6 +73,8 @@ jprt.my.solaris.sparcv9.jdk6u10=solaris_sparcv9_5.8 jprt.my.solaris.sparcv9.jdk6u14=solaris_sparcv9_5.8 jprt.my.solaris.sparcv9.jdk6u18=solaris_sparcv9_5.8 jprt.my.solaris.sparcv9.jdk6u20=solaris_sparcv9_5.8 +jprt.my.solaris.sparcv9.ejdk7=${jprt.my.solaris.sparcv9.jdk7} +jprt.my.solaris.sparcv9.ejdk6=${jprt.my.solaris.sparcv9.jdk6} jprt.my.solaris.sparcv9=${jprt.my.solaris.sparcv9.${jprt.tools.default.release}} jprt.my.solaris.i586.jdk7=solaris_i586_5.10 @@ -77,6 +86,8 @@ jprt.my.solaris.i586.jdk6u10=solaris_i586_5.8 jprt.my.solaris.i586.jdk6u14=solaris_i586_5.8 jprt.my.solaris.i586.jdk6u18=solaris_i586_5.8 jprt.my.solaris.i586.jdk6u20=solaris_i586_5.8 +jprt.my.solaris.i586.ejdk7=${jprt.my.solaris.i586.jdk7} +jprt.my.solaris.i586.ejdk6=${jprt.my.solaris.i586.jdk6} jprt.my.solaris.i586=${jprt.my.solaris.i586.${jprt.tools.default.release}} jprt.my.solaris.x64.jdk7=solaris_x64_5.10 @@ -88,6 +99,8 @@ jprt.my.solaris.x64.jdk6u10=solaris_x64_5.10 jprt.my.solaris.x64.jdk6u14=solaris_x64_5.10 jprt.my.solaris.x64.jdk6u18=solaris_x64_5.10 jprt.my.solaris.x64.jdk6u20=solaris_x64_5.10 +jprt.my.solaris.x64.ejdk7=${jprt.my.solaris.x64.jdk7} +jprt.my.solaris.x64.ejdk6=${jprt.my.solaris.x64.jdk6} jprt.my.solaris.x64=${jprt.my.solaris.x64.${jprt.tools.default.release}} jprt.my.linux.i586.jdk7=linux_i586_2.6 @@ -99,6 +112,8 @@ jprt.my.linux.i586.jdk6u10=linux_i586_2.4 jprt.my.linux.i586.jdk6u14=linux_i586_2.4 jprt.my.linux.i586.jdk6u18=linux_i586_2.4 jprt.my.linux.i586.jdk6u20=linux_i586_2.4 +jprt.my.linux.i586.ejdk7=linux_i586_2.6 +jprt.my.linux.i586.ejdk6=linux_i586_2.6 jprt.my.linux.i586=${jprt.my.linux.i586.${jprt.tools.default.release}} jprt.my.linux.x64.jdk7=linux_x64_2.6 @@ -110,8 +125,45 @@ jprt.my.linux.x64.jdk6u10=linux_x64_2.4 jprt.my.linux.x64.jdk6u14=linux_x64_2.4 jprt.my.linux.x64.jdk6u18=linux_x64_2.4 jprt.my.linux.x64.jdk6u20=linux_x64_2.4 +jprt.my.linux.x64.ejdk7=${jprt.my.linux.x64.jdk7} +jprt.my.linux.x64.ejdk6=${jprt.my.linux.x64.jdk6} jprt.my.linux.x64=${jprt.my.linux.x64.${jprt.tools.default.release}} +jprt.my.linux.ppc.jdk7=linux_ppc_2.6 +jprt.my.linux.ppc.jdk7b107=linux_ppc_2.6 +jprt.my.linux.ppc.jdk7temp=linux_ppc_2.6 +jprt.my.linux.ppc.ejdk6=linux_ppc_2.6 +jprt.my.linux.ppc.ejdk7=linux_ppc_2.6 +jprt.my.linux.ppc=${jprt.my.linux.ppc.${jprt.tools.default.release}} + +jprt.my.linux.ppcv2.jdk7=linux_ppcv2_2.6 +jprt.my.linux.ppcv2.jdk7b107=linux_ppcv2_2.6 +jprt.my.linux.ppcv2.jdk7temp=linux_ppcv2_2.6 +jprt.my.linux.ppcv2.ejdk6=linux_ppcv2_2.6 +jprt.my.linux.ppcv2.ejdk7=linux_ppcv2_2.6 +jprt.my.linux.ppcv2=${jprt.my.linux.ppcv2.${jprt.tools.default.release}} + +jprt.my.linux.ppcsflt.jdk7=linux_ppcsflt_2.6 +jprt.my.linux.ppcsflt.jdk7b107=linux_ppcsflt_2.6 +jprt.my.linux.ppcsflt.jdk7temp=linux_ppcsflt_2.6 +jprt.my.linux.ppcsflt.ejdk6=linux_ppcsflt_2.6 +jprt.my.linux.ppcsflt.ejdk7=linux_ppcsflt_2.6 +jprt.my.linux.ppcsflt=${jprt.my.linux.ppcsflt.${jprt.tools.default.release}} + +jprt.my.linux.armvfp.jdk7=linux_armvfp_2.6 +jprt.my.linux.armvfp.jdk7b107=linux_armvfp_2.6 +jprt.my.linux.armvfp.jdk7temp=linux_armvfp_2.6 +jprt.my.linux.armvfp.ejdk6=linux_armvfp_2.6 +jprt.my.linux.armvfp.ejdk7=linux_armvfp_2.6 +jprt.my.linux.armvfp=${jprt.my.linux.armvfp.${jprt.tools.default.release}} + +jprt.my.linux.armsflt.jdk7=linux_armsflt_2.6 +jprt.my.linux.armsflt.jdk7b107=linux_armsflt_2.6 +jprt.my.linux.armsflt.jdk7temp=linux_armsflt_2.6 +jprt.my.linux.armsflt.ejdk6=linux_armsflt_2.6 +jprt.my.linux.armsflt.ejdk7=linux_armsflt_2.6 +jprt.my.linux.armsflt=${jprt.my.linux.armsflt.${jprt.tools.default.release}} + jprt.my.windows.i586.jdk7=windows_i586_5.1 jprt.my.windows.i586.jdk7b107=windows_i586_5.0 jprt.my.windows.i586.jdk7temp=windows_i586_5.0 @@ -121,6 +173,8 @@ jprt.my.windows.i586.jdk6u10=windows_i586_5.0 jprt.my.windows.i586.jdk6u14=windows_i586_5.0 jprt.my.windows.i586.jdk6u18=windows_i586_5.0 jprt.my.windows.i586.jdk6u20=windows_i586_5.0 +jprt.my.windows.i586.ejdk7=${jprt.my.windows.i586.jdk7} +jprt.my.windows.i586.ejdk6=${jprt.my.windows.i586.jdk6} jprt.my.windows.i586=${jprt.my.windows.i586.${jprt.tools.default.release}} jprt.my.windows.x64.jdk7=windows_x64_5.2 @@ -132,11 +186,13 @@ jprt.my.windows.x64.jdk6u10=windows_x64_5.2 jprt.my.windows.x64.jdk6u14=windows_x64_5.2 jprt.my.windows.x64.jdk6u18=windows_x64_5.2 jprt.my.windows.x64.jdk6u20=windows_x64_5.2 +jprt.my.windows.x64.ejdk7=${jprt.my.windows.x64.jdk7} +jprt.my.windows.x64.ejdk6=${jprt.my.windows.x64.jdk6} jprt.my.windows.x64=${jprt.my.windows.x64.${jprt.tools.default.release}} # Standard list of jprt build targets for this source tree -jprt.build.targets= \ +jprt.build.targets.standard= \ ${jprt.my.solaris.sparc}-{product|fastdebug|debug}, \ ${jprt.my.solaris.sparcv9}-{product|fastdebug|debug}, \ ${jprt.my.solaris.i586}-{product|fastdebug|debug}, \ @@ -146,6 +202,30 @@ jprt.build.targets= \ ${jprt.my.windows.i586}-{product|fastdebug|debug}, \ ${jprt.my.windows.x64}-{product|fastdebug|debug} +jprt.build.targets.embedded= \ + ${jprt.my.linux.i586}-{product|fastdebug|debug}, \ + ${jprt.my.linux.ppc}-{product|fastdebug}, \ + ${jprt.my.linux.ppcv2}-{product|fastdebug}, \ + ${jprt.my.linux.ppcsflt}-{product|fastdebug}, \ + ${jprt.my.linux.armvfp}-{product|fastdebug}, \ + ${jprt.my.linux.armsflt}-{product|fastdebug} + +jprt.build.targets.all=${jprt.build.targets.standard}, \ + ${jprt.build.targets.embedded} + +jprt.build.targets.jdk7=${jprt.build.targets.all} +jprt.build.targets.jdk7temp=${jprt.build.targets.all} +jprt.build.targets.jdk7b107=${jprt.build.targets.all} +jprt.build.targets.jdk6=${jprt.build.targets.standard} +jprt.build.targets.jdk6perf=${jprt.build.targets.standard} +jprt.build.targets.jdk6u10=${jprt.build.targets.standard} +jprt.build.targets.jdk6u14=${jprt.build.targets.standard} +jprt.build.targets.jdk6u18=${jprt.build.targets.standard} +jprt.build.targets.jdk6u20=${jprt.build.targets.standard} +jprt.build.targets.ejdk6=${jprt.build.targets.all} +jprt.build.targets.ejdk7=${jprt.build.targets.all} +jprt.build.targets=${jprt.build.targets.${jprt.tools.default.release}} + # Subset lists of test targets for this source tree jprt.my.solaris.sparc.test.targets= \ @@ -372,9 +452,14 @@ jprt.my.windows.x64.test.targets = \ ${jprt.my.windows.x64}-product-c2-jbb_G1, \ ${jprt.my.windows.x64}-product-c2-jbb_ParOldGC -# The complete list of test targets for jprt +# Testing for actual embedded builds is different to standard +jprt.my.linux.i586.test.targets.embedded = \ + linux_i586_2.6-product-c1-scimark -jprt.test.targets = \ +# The complete list of test targets for jprt +# Note: no PPC or ARM tests at this stage + +jprt.test.targets.standard = \ ${jprt.my.solaris.sparc.test.targets}, \ ${jprt.my.solaris.sparcv9.test.targets}, \ ${jprt.my.solaris.i586.test.targets}, \ @@ -384,15 +469,41 @@ jprt.test.targets = \ ${jprt.my.windows.i586.test.targets}, \ ${jprt.my.windows.x64.test.targets} +jprt.test.targets.embedded= \ + ${jprt.my.linux.i586.test.targets.embedded}, \ + ${jprt.my.solaris.sparc.test.targets}, \ + ${jprt.my.solaris.sparcv9.test.targets}, \ + ${jprt.my.solaris.i586.test.targets}, \ + ${jprt.my.solaris.x64.test.targets}, \ + ${jprt.my.linux.x64.test.targets}, \ + ${jprt.my.windows.i586.test.targets}, \ + ${jprt.my.windows.x64.test.targets} + + +jprt.test.targets.jdk7=${jprt.test.targets.standard} +jprt.test.targets.jdk7temp=${jprt.test.targets.standard} +jprt.test.targets.jdk7b105=${jprt.test.targets.standard} +jprt.test.targets.jdk6=${jprt.test.targets.standard} +jprt.test.targets.jdk6perf=${jprt.test.targets.standard} +jprt.test.targets.jdk6u10=${jprt.test.targets.standard} +jprt.test.targets.jdk6u14=${jprt.test.targets.standard} +jprt.test.targets.jdk6u18=${jprt.test.targets.standard} +jprt.test.targets.jdk6u20=${jprt.test.targets.standard} +jprt.test.targets.ejdk6=${jprt.test.targets.embedded} +jprt.test.targets.ejdk7=${jprt.test.targets.embedded} +jprt.test.targets=${jprt.test.targets.${jprt.tools.default.release}} + # The default test/Makefile targets that should be run #jprt.make.rule.test.targets=*-product-*-packtest -jprt.make.rule.test.targets = \ +jprt.make.rule.test.targets.standard.client = \ ${jprt.my.solaris.sparc}-*-c1-clienttest, \ ${jprt.my.solaris.i586}-*-c1-clienttest, \ ${jprt.my.linux.i586}-*-c1-clienttest, \ - ${jprt.my.windows.i586}-*-c1-clienttest, \ + ${jprt.my.windows.i586}-*-c1-clienttest + +jprt.make.rule.test.targets.standard.server = \ ${jprt.my.solaris.sparc}-*-c2-servertest, \ ${jprt.my.solaris.sparcv9}-*-c2-servertest, \ ${jprt.my.solaris.i586}-*-c2-servertest, \ @@ -402,3 +513,23 @@ jprt.make.rule.test.targets = \ ${jprt.my.windows.i586}-*-c2-servertest, \ ${jprt.my.windows.x64}-*-c2-servertest +jprt.make.rule.test.targets.standard = \ + ${jprt.make.rule.test.targets.standard.client}, \ + ${jprt.make.rule.test.targets.standard.server} + +jprt.make.rule.test.targets.embedded = \ + ${jprt.make.rule.test.targets.standard.client} + +jprt.make.rule.test.targets.jdk7=${jprt.make.rule.test.targets.standard} +jprt.make.rule.test.targets.jdk7temp=${jprt.make.rule.test.targets.standard} +jprt.make.rule.test.targets.jdk7b107=${jprt.make.rule.test.targets.standard} +jprt.make.rule.test.targets.jdk6=${jprt.make.rule.test.targets.standard} +jprt.make.rule.test.targets.jdk6perf=${jprt.make.rule.test.targets.standard} +jprt.make.rule.test.targets.jdk6u10=${jprt.make.rule.test.targets.standard} +jprt.make.rule.test.targets.jdk6u14=${jprt.make.rule.test.targets.standard} +jprt.make.rule.test.targets.jdk6u18=${jprt.make.rule.test.targets.standard} +jprt.make.rule.test.targets.jdk6u20=${jprt.make.rule.test.targets.standard} +jprt.make.rule.test.targets.ejdk6=${jprt.make.rule.test.targets.embedded} +jprt.make.rule.test.targets.ejdk7=${jprt.make.rule.test.targets.embedded} +jprt.make.rule.test.targets=${jprt.make.rule.test.targets.${jprt.tools.default.release}} + diff --git a/hotspot/make/linux/Makefile b/hotspot/make/linux/Makefile index 93d83ea2f81..ec1e60b7c2d 100644 --- a/hotspot/make/linux/Makefile +++ b/hotspot/make/linux/Makefile @@ -208,7 +208,7 @@ TARGETS_ZERO = $(addsuffix zero,$(TARGETS)) TARGETS_SHARK = $(addsuffix shark,$(TARGETS)) BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make -BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) +BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) BUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION) BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS) diff --git a/hotspot/make/linux/makefiles/adlc.make b/hotspot/make/linux/makefiles/adlc.make index a4d2babb4b8..84ff8f88c58 100644 --- a/hotspot/make/linux/makefiles/adlc.make +++ b/hotspot/make/linux/makefiles/adlc.make @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2011, 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 @@ -39,8 +39,9 @@ OS = $(Platform_os_family) SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad -SOURCES.AD = $(GAMMADIR)/src/cpu/$(ARCH)/vm/$(Platform_arch_model).ad \ - $(GAMMADIR)/src/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad +SOURCES.AD = \ + $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \ + $(call altsrc-replace,$(HS_COMMON_SRC)/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad) EXEC = $(OUTDIR)/adlc diff --git a/hotspot/make/linux/makefiles/arm.make b/hotspot/make/linux/makefiles/arm.make new file mode 100644 index 00000000000..3c5dc2ca151 --- /dev/null +++ b/hotspot/make/linux/makefiles/arm.make @@ -0,0 +1,10 @@ +# +# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. +# ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. +# + +Obj_Files += linux_arm.o + +LIBS += $(EXT_LIBS_PATH)/sflt_glibc.a + +CFLAGS += -DVM_LITTLE_ENDIAN diff --git a/hotspot/make/linux/makefiles/buildtree.make b/hotspot/make/linux/makefiles/buildtree.make index 4ba1f0e74b4..becd97477c9 100644 --- a/hotspot/make/linux/makefiles/buildtree.make +++ b/hotspot/make/linux/makefiles/buildtree.make @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2011, 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 @@ -24,7 +24,7 @@ # Usage: # -# $(MAKE) -f buildtree.make ARCH=arch BUILDARCH=buildarch LIBARCH=libarch +# $(MAKE) -f buildtree.make SRCARCH=srcarch BUILDARCH=buildarch LIBARCH=libarch # GAMMADIR=dir OS_FAMILY=os VARIANT=variant # # The macros ARCH, GAMMADIR, OS_FAMILY and VARIANT must be defined in the @@ -56,6 +56,8 @@ # having to read the dependency files for the vm. include $(GAMMADIR)/make/scm.make +include $(GAMMADIR)/make/altsrc.make + # 'gmake MAKE_VERBOSE=y' or 'gmake QUIETLY=' gives all the gory details. QUIETLY$(MAKE_VERBOSE) = @ @@ -127,7 +129,7 @@ BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.ma env.sh env.csh jdkpath.sh .dbxrc test_gamma BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \ - ARCH=$(ARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT) + SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT) # Define variables to be set in flags.make. # Default values are set in make/defs.make. @@ -146,13 +148,7 @@ endif # Define HOTSPOT_VM_DISTRO based on settings in make/openjdk_distro # or make/hotspot_distro. ifndef HOTSPOT_VM_DISTRO - CLOSED_DIR_EXISTS := $(shell \ - if [ -d $(GAMMADIR)/src/closed ] ; then \ - echo true; \ - else \ - echo false; \ - fi) - ifeq ($(CLOSED_DIR_EXISTS), true) + ifeq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true) include $(GAMMADIR)/make/hotspot_distro else include $(GAMMADIR)/make/openjdk_distro @@ -177,6 +173,11 @@ $(SUBMAKE_DIRS): $(SIMPLE_DIRS) FORCE $(SIMPLE_DIRS): $(QUIETLY) mkdir -p $@ +# Convenience macro which takes a source relative path, applies $(1) to the +# absolute path, and then replaces $(GAMMADIR) in the result with a +# literal "$(GAMMADIR)/" suitable for inclusion in a Makefile. +gamma-path=$(subst $(GAMMADIR),\$$(GAMMADIR),$(call $(1),$(HS_COMMON_SRC)/$(2))) + flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst @echo Creating $@ ... $(QUIETLY) ( \ @@ -187,7 +188,7 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst echo; \ echo "GAMMADIR = $(GAMMADIR)"; \ echo "SYSDEFS = \$$(Platform_sysdefs)"; \ - echo "SRCARCH = $(ARCH)"; \ + echo "SRCARCH = $(SRCARCH)"; \ echo "BUILDARCH = $(BUILDARCH)"; \ echo "LIBARCH = $(LIBARCH)"; \ echo "TARGET = $(TARGET)"; \ @@ -208,16 +209,28 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst echo; \ echo "Src_Dirs_V = \\"; \ sed 's/$$/ \\/;s|$(GAMMADIR)|$$(GAMMADIR)|' ../shared_dirs.lst; \ - echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \ - echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \ - echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \ + echo "$(call gamma-path,altsrc,cpu/$(SRCARCH)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,cpu/$(SRCARCH)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os/posix/vm)"; \ echo; \ echo "Src_Dirs_I = \\"; \ - echo "\$$(GAMMADIR)/src/share/vm \\"; \ - echo "\$$(GAMMADIR)/src/share/vm/prims \\"; \ - echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \ - echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \ - echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \ + echo "$(call gamma-path,altsrc,share/vm/prims) \\"; \ + echo "$(call gamma-path,commonsrc,share/vm/prims) \\"; \ + echo "$(call gamma-path,altsrc,share/vm) \\"; \ + echo "$(call gamma-path,commonsrc,share/vm) \\"; \ + echo "$(call gamma-path,altsrc,cpu/$(SRCARCH)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,cpu/$(SRCARCH)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os/posix/vm)"; \ [ -n "$(CFLAGS_BROWSE)" ] && \ echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \ [ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \ @@ -241,9 +254,14 @@ flags_vm.make: $(BUILDTREE_MAKE) ../shared_dirs.lst ../shared_dirs.lst: $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm @echo Creating directory list $@ - $(QUIETLY) find $(GAMMADIR)/src/share/vm/* -prune \ + $(QUIETLY) if [ -d $(HS_ALT_SRC)/share/vm ]; then \ + find $(HS_ALT_SRC)/share/vm/* -prune \ + -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \ + \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@; \ + fi; + $(QUIETLY) find $(HS_COMMON_SRC)/share/vm/* -prune \ -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \ - \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@ + \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; >> $@ Makefile: $(BUILDTREE_MAKE) @echo Creating $@ ... diff --git a/hotspot/make/linux/makefiles/gcc.make b/hotspot/make/linux/makefiles/gcc.make index aa879b10fc3..04c407bce9e 100644 --- a/hotspot/make/linux/makefiles/gcc.make +++ b/hotspot/make/linux/makefiles/gcc.make @@ -75,6 +75,11 @@ CFLAGS += -fno-rtti CFLAGS += -fno-exceptions CFLAGS += -D_REENTRANT CFLAGS += -fcheck-new +# version 4 and above support fvisibility=hidden (matches jni_x86.h file) +# except 4.1.2 gives pointless warnings that can't be disabled (afaik) +ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" +CFLAGS += -fvisibility=hidden +endif ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) ARCHFLAG/i486 = -m32 -march=i586 diff --git a/hotspot/make/linux/makefiles/mapfile-vers-debug b/hotspot/make/linux/makefiles/mapfile-vers-debug index a7ba4583ee9..7022aba2e39 100644 --- a/hotspot/make/linux/makefiles/mapfile-vers-debug +++ b/hotspot/make/linux/makefiles/mapfile-vers-debug @@ -262,14 +262,6 @@ SUNWprivate_1.1 { JVM_SetField; JVM_SetPrimitiveField; - # Needed for dropping VM into JDK 1.3.x, 1.4 - _JVM_native_threads; - jdk_sem_init; - jdk_sem_post; - jdk_sem_wait; - jdk_pthread_sigmask; - jdk_waitpid; - # debug JVM JVM_AccessVMBooleanFlag; JVM_AccessVMIntFlag; diff --git a/hotspot/make/linux/makefiles/mapfile-vers-product b/hotspot/make/linux/makefiles/mapfile-vers-product index 7f7e279aa2f..201252d2d29 100644 --- a/hotspot/make/linux/makefiles/mapfile-vers-product +++ b/hotspot/make/linux/makefiles/mapfile-vers-product @@ -262,14 +262,6 @@ SUNWprivate_1.1 { JVM_SetField; JVM_SetPrimitiveField; - # Needed for dropping VM into JDK 1.3.x, 1.4 - _JVM_native_threads; - jdk_sem_init; - jdk_sem_post; - jdk_sem_wait; - jdk_pthread_sigmask; - jdk_waitpid; - # miscellaneous functions jio_fprintf; jio_printf; diff --git a/hotspot/make/linux/makefiles/ppc.make b/hotspot/make/linux/makefiles/ppc.make new file mode 100644 index 00000000000..50ac9fe0d8c --- /dev/null +++ b/hotspot/make/linux/makefiles/ppc.make @@ -0,0 +1,11 @@ +# +# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. +# + +# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized +OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT) + +# Must also specify if CPU is big endian +CFLAGS += -DVM_BIG_ENDIAN + diff --git a/hotspot/make/linux/makefiles/rules.make b/hotspot/make/linux/makefiles/rules.make index 4ce9e3db872..4237597e986 100644 --- a/hotspot/make/linux/makefiles/rules.make +++ b/hotspot/make/linux/makefiles/rules.make @@ -1,5 +1,5 @@ # -# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2003, 2011, 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 @@ -146,6 +146,8 @@ ifndef LP64 include $(GAMMADIR)/make/pic.make endif +include $(GAMMADIR)/make/altsrc.make + # The non-PIC object files are only generated for 32 bit platforms. ifdef LP64 %.o: %.cpp diff --git a/hotspot/make/linux/makefiles/top.make b/hotspot/make/linux/makefiles/top.make index db9224fc215..41c50940d25 100644 --- a/hotspot/make/linux/makefiles/top.make +++ b/hotspot/make/linux/makefiles/top.make @@ -39,6 +39,8 @@ # Instead, use "gmake" (or "gnumake") from the command line. --Rose #MAKE = gmake +include $(GAMMADIR)/make/altsrc.make + TOPDIR = $(shell echo `pwd`) GENERATED = $(TOPDIR)/../generated VM = $(GAMMADIR)/src/share/vm @@ -57,8 +59,8 @@ Cached_plat = $(GENERATED)/platform.current AD_Dir = $(GENERATED)/adfiles ADLC = $(AD_Dir)/adlc -AD_Spec = $(GAMMADIR)/src/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad -AD_Src = $(GAMMADIR)/src/share/vm/adlc +AD_Spec = $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad) +AD_Src = $(call altsrc-replace,$(HS_COMMON_SRC)/share/vm/adlc) AD_Names = ad_$(Platform_arch_model).hpp ad_$(Platform_arch_model).cpp AD_Files = $(AD_Names:%=$(AD_Dir)/%) diff --git a/hotspot/make/linux/makefiles/vm.make b/hotspot/make/linux/makefiles/vm.make index 653da7de6a7..d564055c539 100644 --- a/hotspot/make/linux/makefiles/vm.make +++ b/hotspot/make/linux/makefiles/vm.make @@ -28,6 +28,7 @@ # Common build rules. MAKEFILES_DIR=$(GAMMADIR)/make/$(Platform_os_family)/makefiles include $(MAKEFILES_DIR)/rules.make +include $(GAMMADIR)/make/altsrc.make default: build @@ -119,17 +120,27 @@ JVM = jvm LIBJVM = lib$(JVM).so LIBJVM_G = lib$(JVM)$(G_SUFFIX).so -CORE_PATHS := $(shell find $(GAMMADIR)/src/share/vm/* -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \)) -CORE_PATHS += $(GAMMADIR)/src/os/$(Platform_os_family)/vm -CORE_PATHS += $(GAMMADIR)/src/cpu/$(Platform_arch)/vm -CORE_PATHS += $(GAMMADIR)/src/os_cpu/$(Platform_os_arch)/vm -CORE_PATHS += $(GENERATED)/jvmtifiles +SPECIAL_PATHS:=adlc c1 gc_implementation opto shark libadt -COMPILER1_PATHS := $(GAMMADIR)/src/share/vm/c1 +SOURCE_PATHS=\ + $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \ + \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \)) +SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm +SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm +SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm +SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm -COMPILER2_PATHS := $(GAMMADIR)/src/share/vm/opto -COMPILER2_PATHS += $(GAMMADIR)/src/share/vm/libadt -COMPILER2_PATHS += $(GENERATED)/adfiles +CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path)) +CORE_PATHS+=$(GENERATED)/jvmtifiles + +COMPILER1_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/c1) +COMPILER1_PATHS += $(HS_COMMON_SRC)/share/vm/c1 + +COMPILER2_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/opto) +COMPILER2_PATHS += $(call altsrc,$(HS_COMMON_SRC)/share/vm/libadt) +COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/opto +COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt +COMPILER2_PATHS += $(GENERATED)/adfiles # Include dirs per type. Src_Dirs/CORE := $(CORE_PATHS) diff --git a/hotspot/make/linux/platform_arm b/hotspot/make/linux/platform_arm new file mode 100644 index 00000000000..13206d63738 --- /dev/null +++ b/hotspot/make/linux/platform_arm @@ -0,0 +1,17 @@ +os_family = linux + +arch = arm + +arch_model = arm + +os_arch = linux_arm + +os_arch_model = linux_arm + +lib_arch = arm + +compiler = gcc + +gnu_dis_arch = arm + +sysdefs = -DLINUX -D_GNU_SOURCE -DARM diff --git a/hotspot/make/linux/platform_ppc b/hotspot/make/linux/platform_ppc new file mode 100644 index 00000000000..c37b8d6b12c --- /dev/null +++ b/hotspot/make/linux/platform_ppc @@ -0,0 +1,17 @@ +os_family = linux + +arch = ppc + +arch_model = ppc + +os_arch = linux_ppc + +os_arch_model = linux_ppc + +lib_arch = ppc + +compiler = gcc + +gnu_dis_arch = ppc + +sysdefs = -DLINUX -D_GNU_SOURCE -DPPC diff --git a/hotspot/make/solaris/makefiles/adlc.make b/hotspot/make/solaris/makefiles/adlc.make index 7fc55b9d39e..981e187f729 100644 --- a/hotspot/make/solaris/makefiles/adlc.make +++ b/hotspot/make/solaris/makefiles/adlc.make @@ -27,6 +27,7 @@ # It knows how to compile, link, and run the adlc. include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/rules.make +include $(GAMMADIR)/make/altsrc.make # ######################################################################### @@ -39,8 +40,9 @@ OS = $(Platform_os_family) SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad -SOURCES.AD = $(GAMMADIR)/src/cpu/$(ARCH)/vm/$(Platform_arch_model).ad \ - $(GAMMADIR)/src/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad +SOURCES.AD = \ + $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \ + $(call altsrc-replace,$(HS_COMMON_SRC)/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad) EXEC = $(OUTDIR)/adlc diff --git a/hotspot/make/solaris/makefiles/buildtree.make b/hotspot/make/solaris/makefiles/buildtree.make index 08224ef1103..8cca8a07ebb 100644 --- a/hotspot/make/solaris/makefiles/buildtree.make +++ b/hotspot/make/solaris/makefiles/buildtree.make @@ -56,6 +56,7 @@ # having to read the dependency files for the vm. include $(GAMMADIR)/make/scm.make +include $(GAMMADIR)/make/altsrc.make # 'gmake MAKE_VERBOSE=y' or 'gmake QUIETLY=' gives all the gory details. QUIETLY$(MAKE_VERBOSE) = @ @@ -139,13 +140,7 @@ endif # Define HOTSPOT_VM_DISTRO based on settings in make/openjdk_distro # or make/hotspot_distro. ifndef HOTSPOT_VM_DISTRO - CLOSED_DIR_EXISTS := $(shell \ - if [ -d $(GAMMADIR)/src/closed ] ; then \ - echo true; \ - else \ - echo false; \ - fi) - ifeq ($(CLOSED_DIR_EXISTS), true) + ifeq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true) include $(GAMMADIR)/make/hotspot_distro else include $(GAMMADIR)/make/openjdk_distro @@ -170,6 +165,11 @@ $(SUBMAKE_DIRS): $(SIMPLE_DIRS) FORCE $(SIMPLE_DIRS): $(QUIETLY) mkdir -p $@ +# Convenience macro which takes a source relative path, applies $(1) to the +# absolute path, and then replaces $(GAMMADIR) in the result with a +# literal "$(GAMMADIR)/" suitable for inclusion in a Makefile. +gamma-path=$(subst $(GAMMADIR),\$$(GAMMADIR),$(call $(1),$(HS_COMMON_SRC)/$(2))) + flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst @echo Creating $@ ... $(QUIETLY) ( \ @@ -202,16 +202,28 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst echo; \ echo "Src_Dirs_V = \\"; \ sed 's/$$/ \\/;s|$(GAMMADIR)|$$(GAMMADIR)|' ../shared_dirs.lst; \ - echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \ - echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \ - echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \ + echo "$(call gamma-path,altsrc,cpu/$(ARCH)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,cpu/$(ARCH)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os/posix/vm)"; \ echo; \ echo "Src_Dirs_I = \\"; \ - echo "\$$(GAMMADIR)/src/share/vm \\"; \ - echo "\$$(GAMMADIR)/src/share/vm/prims \\"; \ - echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \ - echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \ - echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \ + echo "$(call gamma-path,altsrc,share/vm/prims) \\"; \ + echo "$(call gamma-path,commonsrc,share/vm/prims) \\"; \ + echo "$(call gamma-path,altsrc,share/vm) \\"; \ + echo "$(call gamma-path,commonsrc,share/vm) \\"; \ + echo "$(call gamma-path,altsrc,cpu/$(ARCH)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,cpu/$(ARCH)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \ + echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \ + echo "$(call gamma-path,commonsrc,os/posix/vm)"; \ [ -n "$(CFLAGS_BROWSE)" ] && \ echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \ [ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \ @@ -235,9 +247,14 @@ flags_vm.make: $(BUILDTREE_MAKE) ../shared_dirs.lst ../shared_dirs.lst: $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm @echo Creating directory list $@ - $(QUIETLY) find $(GAMMADIR)/src/share/vm/* -prune \ + $(QUIETLY) if [ -d $(HS_ALT_SRC)/share/vm ]; then \ + find $(HS_ALT_SRC)/share/vm/* -prune \ + -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \ + \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@; \ + fi; + $(QUIETLY) find $(HS_COMMON_SRC)/share/vm/* -prune \ -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \ - \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@ + \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; >> $@ Makefile: $(BUILDTREE_MAKE) @echo Creating $@ ... diff --git a/hotspot/make/solaris/makefiles/rules.make b/hotspot/make/solaris/makefiles/rules.make index baafe9c4fd0..4f2cc860805 100644 --- a/hotspot/make/solaris/makefiles/rules.make +++ b/hotspot/make/solaris/makefiles/rules.make @@ -146,6 +146,8 @@ ifndef LP64 include $(GAMMADIR)/make/pic.make endif +include $(GAMMADIR)/make/altsrc.make + # Sun compiler for 64 bit Solaris does not support building non-PIC object files. ifdef LP64 %.o: %.cpp diff --git a/hotspot/make/solaris/makefiles/top.make b/hotspot/make/solaris/makefiles/top.make index b0505e77aae..893e9c00cab 100644 --- a/hotspot/make/solaris/makefiles/top.make +++ b/hotspot/make/solaris/makefiles/top.make @@ -39,6 +39,8 @@ # Instead, use "gmake" (or "gnumake") from the command line. --Rose #MAKE = gmake +include $(GAMMADIR)/make/altsrc.make + GENERATED = ../generated VM = $(GAMMADIR)/src/share/vm Plat_File = $(Platform_file) @@ -48,8 +50,8 @@ Cached_plat = $(GENERATED)/platform.current AD_Dir = $(GENERATED)/adfiles ADLC = $(AD_Dir)/adlc -AD_Spec = $(GAMMADIR)/src/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad -AD_Src = $(GAMMADIR)/src/share/vm/adlc +AD_Spec = $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad) +AD_Src = $(call altsrc-replace,$(HS_COMMON_SRC)/share/vm/adlc) AD_Names = ad_$(Platform_arch_model).hpp ad_$(Platform_arch_model).cpp AD_Files = $(AD_Names:%=$(AD_Dir)/%) diff --git a/hotspot/make/solaris/makefiles/vm.make b/hotspot/make/solaris/makefiles/vm.make index 9728b1dc43c..5ad02c00c53 100644 --- a/hotspot/make/solaris/makefiles/vm.make +++ b/hotspot/make/solaris/makefiles/vm.make @@ -28,6 +28,7 @@ # Common build rules. MAKEFILES_DIR=$(GAMMADIR)/make/$(Platform_os_family)/makefiles include $(MAKEFILES_DIR)/rules.make +include $(GAMMADIR)/make/altsrc.make default: build @@ -139,16 +140,26 @@ JVM = jvm LIBJVM = lib$(JVM).so LIBJVM_G = lib$(JVM)$(G_SUFFIX).so -CORE_PATHS := $(shell find $(GAMMADIR)/src/share/vm/* -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \)) -CORE_PATHS += $(GAMMADIR)/src/os/$(Platform_os_family)/vm -CORE_PATHS += $(GAMMADIR)/src/cpu/$(Platform_arch)/vm -CORE_PATHS += $(GAMMADIR)/src/os_cpu/$(Platform_os_arch)/vm -CORE_PATHS += $(GENERATED)/jvmtifiles +SPECIAL_PATHS:=adlc c1 dist gc_implementation opto shark libadt -COMPILER1_PATHS := $(GAMMADIR)/src/share/vm/c1 +SOURCE_PATHS=\ + $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \ + \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \)) +SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm +SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm +SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm +SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm -COMPILER2_PATHS := $(GAMMADIR)/src/share/vm/opto -COMPILER2_PATHS += $(GAMMADIR)/src/share/vm/libadt +CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path)) +CORE_PATHS+=$(GENERATED)/jvmtifiles + +COMPILER1_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/c1) +COMPILER1_PATHS += $(HS_COMMON_SRC)/share/vm/c1 + +COMPILER2_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/opto) +COMPILER2_PATHS += $(call altsrc,$(HS_COMMON_SRC)/share/vm/libadt) +COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/opto +COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt COMPILER2_PATHS += $(GENERATED)/adfiles # Include dirs per type. diff --git a/hotspot/make/windows/create_obj_files.sh b/hotspot/make/windows/create_obj_files.sh index 52ae0bb785c..0c8276962e6 100644 --- a/hotspot/make/windows/create_obj_files.sh +++ b/hotspot/make/windows/create_obj_files.sh @@ -51,21 +51,48 @@ Platform_os_arch=windows_$Platform_arch WorkSpace=$4 GENERATED=$5 -BASE_PATHS="` $FIND ${WorkSpace}/src/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \)`" -BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/share/vm/gc_implementation/shared" -BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/os/${Platform_os_family}/vm" -BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/cpu/${Platform_arch}/vm" -BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/os_cpu/${Platform_os_arch}/vm" +COMMONSRC_REL=src +ALTSRC_REL=src/closed # Change this to pick up alt sources from somewhere else + +COMMONSRC=${WorkSpace}/${COMMONSRC_REL} +ALTSRC=${WorkSpace}/${ALTSRC_REL} + +BASE_PATHS="`if [ -d ${ALTSRC}/share/vm ]; then $FIND ${ALTSRC}/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \); fi`" +BASE_PATHS="${BASE_PATHS} ` $FIND ${COMMONSRC}/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \)`" + +for sd in \ + share/vm/gc_implementation/shared \ + os/${Platform_os_family}/vm \ + cpu/${Platform_arch}/vm \ + os_cpu/${Platform_os_arch}/vm; do + if [ -d "${ALTSRC}/${sd}" ]; then + BASE_PATHS="${BASE_PATHS} ${ALTSRC}/${sd}" + fi + BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/${sd}" +done + BASE_PATHS="${BASE_PATHS} ${GENERATED}/jvmtifiles" CORE_PATHS="${BASE_PATHS}" # shared is already in BASE_PATHS. Should add vm/memory but that one is also in BASE_PATHS. -CORE_PATHS="${CORE_PATHS} `$FIND ${WorkSpace}/src/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`" +if [ -d "${ALTSRC}/share/vm/gc_implementation" ]; then + CORE_PATHS="${CORE_PATHS} `$FIND ${ALTSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`" +fi +CORE_PATHS="${CORE_PATHS} `$FIND ${COMMONSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`" -COMPILER1_PATHS="${WorkSpace}/src/share/vm/c1" +if [ -d "${ALTSRC}/share/vm/c1" ]; then + COMPILER1_PATHS="${ALTSRC}/share/vm/c1" +fi +COMPILER1_PATHS="${COMPILER1_PATHS} ${COMMONSRC}/share/vm/c1" -COMPILER2_PATHS="${WorkSpace}/src/share/vm/opto" -COMPILER2_PATHS="${COMPILER2_PATHS} ${WorkSpace}/src/share/vm/libadt" +if [ -d "${ALTSRC}/share/vm/opto" ]; then + COMPILER2_PATHS="${ALTSRC}/share/vm/opto" +fi +COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/opto" +if [ -d "${ALTSRC}/share/vm/libadt" ]; then + COMPILER2_PATHS="${COMPILER2_PATHS} ${ALTSRC}/share/vm/libadt" +fi +COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/libadt" COMPILER2_PATHS="${COMPILER2_PATHS} ${GENERATED}/adfiles" # Include dirs per type. diff --git a/hotspot/make/windows/makefiles/vm.make b/hotspot/make/windows/makefiles/vm.make index 69ff1a7e780..4bcdd4a3bbe 100644 --- a/hotspot/make/windows/makefiles/vm.make +++ b/hotspot/make/windows/makefiles/vm.make @@ -27,6 +27,9 @@ Res_Files=.\version.res !include ..\generated\objfiles.make +COMMONSRC=$(WorkSpace)\src +ALTSRC=$(WorkSpace)\src\closed + !ifdef RELEASE !ifdef DEVELOP CPP_FLAGS=$(CPP_FLAGS) /D "DEBUG" @@ -111,13 +114,30 @@ LINK_FLAGS=$(LINK_FLAGS) $(STACK_SIZE) /subsystem:windows /dll /base:0x8000000 \ /export:JVM_GetThreadStateValues \ /export:JVM_InitAgentProperties -CPP_INCLUDE_DIRS=\ - /I "..\generated" \ - /I "$(WorkSpace)\src\share\vm" \ - /I "$(WorkSpace)\src\share\vm\prims" \ - /I "$(WorkSpace)\src\os\windows\vm" \ - /I "$(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm" \ - /I "$(WorkSpace)\src\cpu\$(Platform_arch)\vm" +CPP_INCLUDE_DIRS=/I "..\generated" + +!if exists($(ALTSRC)\share\vm) +CPP_INCLUDE_DIRS=$(CPP_INCLUDE_DIRS) /I "$(ALTSRC)\share\vm" +!endif + +!if exists($(ALTSRC)\os\windows\vm) +CPP_INCLUDE_DIRS=$(CPP_INCLUDE_DIRS) /I "$(ALTSRC)\os\windows\vm" +!endif + +!if exists($(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm) +CPP_INCLUDE_DIRS=$(CPP_INCLUDE_DIRS) /I "$(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm" +!endif + +!if exists($(ALTSRC)\cpu\$(Platform_arch)\vm) +CPP_INCLUDE_DIRS=$(CPP_INCLUDE_DIRS) /I "$(ALTSRC)\cpu\$(Platform_arch)\vm" +!endif + +CPP_INCLUDE_DIRS=$(CPP_INCLUDE_DIRS) \ + /I "$(COMMONSRC)\share\vm" \ + /I "$(COMMONSRC)\share\vm\prims" \ + /I "$(COMMONSRC)\os\windows\vm" \ + /I "$(COMMONSRC)\os_cpu\windows_$(Platform_arch)\vm" \ + /I "$(COMMONSRC)\cpu\$(Platform_arch)\vm" CPP_DONT_USE_PCH=/D DONT_USE_PRECOMPILED_HEADER @@ -127,7 +147,7 @@ CPP_USE_PCH=/Fp"vm.pch" /Yu"precompiled.hpp" CPP_USE_PCH=$(CPP_DONT_USE_PCH) !endif -# Where to find the source code for the virtual machine +# Where to find the source code for the virtual machine (is this used?) VM_PATH=../generated VM_PATH=$(VM_PATH);../generated/adfiles VM_PATH=$(VM_PATH);../generated/jvmtifiles @@ -188,81 +208,157 @@ bytecodeInterpreterWithChecks.obj: ..\generated\jvmtifiles\bytecodeInterpreterWi $(CPP) $(CPP_FLAGS) $(CPP_DONT_USE_PCH) /c ..\generated\jvmtifiles\bytecodeInterpreterWithChecks.cpp # Default rules for the Virtual Machine -{$(WorkSpace)\src\share\vm\c1}.cpp.obj:: +{$(COMMONSRC)\share\vm\c1}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\compiler}.cpp.obj:: +{$(COMMONSRC)\share\vm\compiler}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\code}.cpp.obj:: +{$(COMMONSRC)\share\vm\code}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\interpreter}.cpp.obj:: +{$(COMMONSRC)\share\vm\interpreter}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\ci}.cpp.obj:: +{$(COMMONSRC)\share\vm\ci}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\classfile}.cpp.obj:: +{$(COMMONSRC)\share\vm\classfile}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\gc_implementation\parallelScavenge}.cpp.obj:: +{$(COMMONSRC)\share\vm\gc_implementation\parallelScavenge}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\gc_implementation\shared}.cpp.obj:: +{$(COMMONSRC)\share\vm\gc_implementation\shared}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\gc_implementation\parNew}.cpp.obj:: +{$(COMMONSRC)\share\vm\gc_implementation\parNew}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\gc_implementation\concurrentMarkSweep}.cpp.obj:: +{$(COMMONSRC)\share\vm\gc_implementation\concurrentMarkSweep}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\gc_implementation\g1}.cpp.obj:: +{$(COMMONSRC)\share\vm\gc_implementation\g1}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\gc_interface}.cpp.obj:: +{$(COMMONSRC)\share\vm\gc_interface}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\asm}.cpp.obj:: +{$(COMMONSRC)\share\vm\asm}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\memory}.cpp.obj:: +{$(COMMONSRC)\share\vm\memory}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\oops}.cpp.obj:: +{$(COMMONSRC)\share\vm\oops}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\prims}.cpp.obj:: +{$(COMMONSRC)\share\vm\prims}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\runtime}.cpp.obj:: +{$(COMMONSRC)\share\vm\runtime}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\services}.cpp.obj:: +{$(COMMONSRC)\share\vm\services}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\utilities}.cpp.obj:: +{$(COMMONSRC)\share\vm\utilities}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\libadt}.cpp.obj:: +{$(COMMONSRC)\share\vm\libadt}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\share\vm\opto}.cpp.obj:: +{$(COMMONSRC)\share\vm\opto}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\os\windows\vm}.cpp.obj:: +{$(COMMONSRC)\os\windows\vm}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< # This guy should remain a single colon rule because # otherwise we can't specify the output filename. -{$(WorkSpace)\src\os\windows\vm}.rc.res: +{$(COMMONSRC)\os\windows\vm}.rc.res: @$(RC) $(RC_FLAGS) /fo"$@" $< -{$(WorkSpace)\src\cpu\$(Platform_arch)\vm}.cpp.obj:: +{$(COMMONSRC)\cpu\$(Platform_arch)\vm}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< -{$(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm}.cpp.obj:: +{$(COMMONSRC)\os_cpu\windows_$(Platform_arch)\vm}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\c1}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\compiler}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\code}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\interpreter}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\ci}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\classfile}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\gc_implementation\parallelScavenge}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\gc_implementation\shared}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\gc_implementation\parNew}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\gc_implementation\concurrentMarkSweep}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\gc_implementation\g1}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\gc_interface}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\asm}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\memory}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\oops}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\prims}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\runtime}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\services}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\utilities}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\libadt}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\share\vm\opto}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\os\windows\vm}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +# otherwise we can't specify the output filename. +{$(ALTSRC)\os\windows\vm}.rc.res: + @$(RC) $(RC_FLAGS) /fo"$@" $< + +{$(ALTSRC)\cpu\$(Platform_arch)\vm}.cpp.obj:: + $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< + +{$(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm}.cpp.obj:: $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $< {..\generated\incls}.cpp.obj:: diff --git a/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp b/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp index ee5f6afb5de..049b75144c3 100644 --- a/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -129,27 +129,6 @@ void SimpleExceptionStub::emit_code(LIR_Assembler* ce) { } -// Implementation of ArrayStoreExceptionStub - -ArrayStoreExceptionStub::ArrayStoreExceptionStub(CodeEmitInfo* info): - _info(info) { -} - - -void ArrayStoreExceptionStub::emit_code(LIR_Assembler* ce) { - __ bind(_entry); - __ call(Runtime1::entry_for(Runtime1::throw_array_store_exception_id), relocInfo::runtime_call_type); - __ delayed()->nop(); - ce->add_call_info_here(_info); - ce->verify_oop_map(_info); -#ifdef ASSERT - __ should_not_reach_here(); -#endif -} - - - - // Implementation of NewInstanceStub NewInstanceStub::NewInstanceStub(LIR_Opr klass_reg, LIR_Opr result, ciInstanceKlass* klass, CodeEmitInfo* info, Runtime1::StubID stub_id) { diff --git a/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp b/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp index 3a10d5ad8a9..559471961ef 100644 --- a/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp @@ -710,7 +710,7 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) { case throw_array_store_exception_id: { __ set_info("throw_array_store_exception", dont_gc_arguments); - oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_array_store_exception), false); + oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_array_store_exception), true); } break; diff --git a/hotspot/src/cpu/sparc/vm/jni_sparc.h b/hotspot/src/cpu/sparc/vm/jni_sparc.h index 9712dfc9d0d..2e177a8692e 100644 --- a/hotspot/src/cpu/sparc/vm/jni_sparc.h +++ b/hotspot/src/cpu/sparc/vm/jni_sparc.h @@ -23,8 +23,13 @@ * questions. */ -#define JNIEXPORT -#define JNIIMPORT +#if defined(__GNUC__) && (__GNUC__ >= 4) + #define JNIEXPORT __attribute__((visibility("default"))) + #define JNIIMPORT __attribute__((visibility("default"))) +#else + #define JNIEXPORT + #define JNIIMPORT +#endif #define JNICALL typedef int jint; diff --git a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp index 751b512084d..df6aa841838 100644 --- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp @@ -2541,7 +2541,7 @@ nmethod *SharedRuntime::generate_dtrace_nmethod( in_sig_bt[i++] = bt; // Collect remaining bits of signature out_sig_bt[total_c_args++] = bt; if( bt == T_OBJECT) { - symbolOop s = ss.as_symbol_or_null(); + Symbol* s = ss.as_symbol_or_null(); if (s == vmSymbols::java_lang_String()) { total_strings++; out_sig_bt[total_c_args-1] = T_ADDRESS; diff --git a/hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp b/hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp index 62088bd100e..7453375353a 100644 --- a/hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp +++ b/hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -411,20 +411,6 @@ void SimpleExceptionStub::emit_code(LIR_Assembler* ce) { } -ArrayStoreExceptionStub::ArrayStoreExceptionStub(CodeEmitInfo* info): - _info(info) { -} - - -void ArrayStoreExceptionStub::emit_code(LIR_Assembler* ce) { - assert(__ rsp_offset() == 0, "frame size should be fixed"); - __ bind(_entry); - __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::throw_array_store_exception_id))); - ce->add_call_info_here(_info); - debug_only(__ should_not_reach_here()); -} - - void ArrayCopyStub::emit_code(LIR_Assembler* ce) { //---------------slow case: call to native----------------- __ bind(_entry); diff --git a/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp b/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp index cdea66f3866..14ef001bda7 100644 --- a/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp +++ b/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, 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 @@ -733,8 +733,8 @@ void LIRGenerator::do_AttemptUpdate(Intrinsic* x) { // generate compare-and-swap; produces zero condition if swap occurs int value_offset = sun_misc_AtomicLongCSImpl::value_offset(); - LIR_Opr addr = obj.result(); - __ add(addr, LIR_OprFact::intConst(value_offset), addr); + LIR_Opr addr = new_pointer_register(); + __ leal(LIR_OprFact::address(new LIR_Address(obj.result(), value_offset, T_LONG)), addr); LIR_Opr t1 = LIR_OprFact::illegalOpr; // no temp needed LIR_Opr t2 = LIR_OprFact::illegalOpr; // no temp needed __ cas_long(addr, cmp_value.result(), new_value.result(), t1, t2); diff --git a/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp b/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp index 0a56804258d..eede111be44 100644 --- a/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp +++ b/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp @@ -1337,7 +1337,7 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) { { StubFrame f(sasm, "throw_array_store_exception", dont_gc_arguments); // tos + 0: link // + 1: return address - oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_array_store_exception), false); + oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_array_store_exception), true); } break; diff --git a/hotspot/src/cpu/x86/vm/jni_x86.h b/hotspot/src/cpu/x86/vm/jni_x86.h index c6d322f2b24..9715d0e3237 100644 --- a/hotspot/src/cpu/x86/vm/jni_x86.h +++ b/hotspot/src/cpu/x86/vm/jni_x86.h @@ -27,10 +27,16 @@ #define _JAVASOFT_JNI_MD_H_ #if defined(SOLARIS) || defined(LINUX) + +#if defined(__GNUC__) && (__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2) + #define JNIEXPORT __attribute__((visibility("default"))) + #define JNIIMPORT __attribute__((visibility("default"))) +#else #define JNIEXPORT #define JNIIMPORT - #define JNICALL +#endif + #define JNICALL typedef int jint; #ifdef _LP64 diff --git a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp index 5a34d46314c..9a1f72af1ab 100644 --- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp +++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp @@ -1974,7 +1974,7 @@ nmethod *SharedRuntime::generate_dtrace_nmethod( in_sig_bt[i++] = bt; // Collect remaining bits of signature out_sig_bt[total_c_args++] = bt; if( bt == T_OBJECT) { - symbolOop s = ss.as_symbol_or_null(); + Symbol* s = ss.as_symbol_or_null(); // symbol is created if (s == vmSymbols::java_lang_String()) { total_strings++; out_sig_bt[total_c_args-1] = T_ADDRESS; diff --git a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp index e3455dea520..d26e69f3b43 100644 --- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp +++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp @@ -1980,7 +1980,7 @@ nmethod *SharedRuntime::generate_dtrace_nmethod(MacroAssembler *masm, in_sig_bt[i++] = bt; // Collect remaining bits of signature out_sig_bt[total_c_args++] = bt; if( bt == T_OBJECT) { - symbolOop s = ss.as_symbol_or_null(); + Symbol* s = ss.as_symbol_or_null(); // symbol is created if (s == vmSymbols::java_lang_String()) { total_strings++; out_sig_bt[total_c_args-1] = T_ADDRESS; diff --git a/hotspot/src/cpu/zero/vm/jni_zero.h b/hotspot/src/cpu/zero/vm/jni_zero.h index 0e21634dff6..132a6bbb60d 100644 --- a/hotspot/src/cpu/zero/vm/jni_zero.h +++ b/hotspot/src/cpu/zero/vm/jni_zero.h @@ -24,8 +24,14 @@ * questions. */ -#define JNIEXPORT -#define JNIIMPORT + +#if defined(__GNUC__) && (__GNUC__ >= 4) + #define JNIEXPORT __attribute__((visibility("default"))) + #define JNIIMPORT __attribute__((visibility("default"))) +#else + #define JNIEXPORT + #define JNIIMPORT +#endif #define JNICALL typedef int jint; diff --git a/hotspot/src/os/linux/vm/jvm_linux.cpp b/hotspot/src/os/linux/vm/jvm_linux.cpp index ea5bf2d36c7..6e305b80211 100644 --- a/hotspot/src/os/linux/vm/jvm_linux.cpp +++ b/hotspot/src/os/linux/vm/jvm_linux.cpp @@ -29,11 +29,6 @@ #include -/* - * FIXME: This is temporary hack to keep Linux Runtime.exec() - * code happy. See $JDK/src/linux/native/java/lang/UnixProcess_md.c - */ -int _JVM_native_threads = 1; // sun.misc.Signal /////////////////////////////////////////////////////////// // Signal code is mostly copied from classic vm, signals_md.c 1.4 98/08/23 diff --git a/hotspot/src/os/linux/vm/osThread_linux.cpp b/hotspot/src/os/linux/vm/osThread_linux.cpp index f4ec9f78faa..bf454ff9003 100644 --- a/hotspot/src/os/linux/vm/osThread_linux.cpp +++ b/hotspot/src/os/linux/vm/osThread_linux.cpp @@ -39,6 +39,12 @@ #ifdef TARGET_ARCH_zero # include "assembler_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "assembler_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "assembler_ppc.inline.hpp" +#endif void OSThread::pd_initialize() { diff --git a/hotspot/src/os/linux/vm/os_linux.cpp b/hotspot/src/os/linux/vm/os_linux.cpp index 5d34fc50c7d..6bdcdd2165c 100644 --- a/hotspot/src/os/linux/vm/os_linux.cpp +++ b/hotspot/src/os/linux/vm/os_linux.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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,6 +76,14 @@ # include "assembler_zero.inline.hpp" # include "nativeInst_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "assembler_arm.inline.hpp" +# include "nativeInst_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "assembler_ppc.inline.hpp" +# include "nativeInst_ppc.hpp" +#endif #ifdef COMPILER1 #include "c1/c1_Runtime1.hpp" #endif @@ -123,6 +131,7 @@ #define ALL_64_BITS CONST64(0xFFFFFFFFFFFFFFFF) #define SEC_IN_NANOSECS 1000000000LL +#define LARGEPAGES_BIT (1 << 6) //////////////////////////////////////////////////////////////////////////////// // global variables julong os::Linux::_physical_memory = 0; @@ -2509,8 +2518,10 @@ char *os::scan_pages(char *start, char* end, page_info* page_expected, page_info return end; } -extern "C" void numa_warn(int number, char *where, ...) { } -extern "C" void numa_error(char *where) { } +// Something to do with the numa-aware allocator needs these symbols +extern "C" JNIEXPORT void numa_warn(int number, char *where, ...) { } +extern "C" JNIEXPORT void numa_error(char *where) { } +extern "C" JNIEXPORT int fork1() { return fork(); } // If we are running with libnuma version > 2, then we should @@ -2807,6 +2818,43 @@ bool os::unguard_memory(char* addr, size_t size) { return linux_mprotect(addr, size, PROT_READ|PROT_WRITE); } +/* +* Set the coredump_filter bits to include largepages in core dump (bit 6) +* +* From the coredump_filter documentation: +* +* - (bit 0) anonymous private memory +* - (bit 1) anonymous shared memory +* - (bit 2) file-backed private memory +* - (bit 3) file-backed shared memory +* - (bit 4) ELF header pages in file-backed private memory areas (it is +* effective only if the bit 2 is cleared) +* - (bit 5) hugetlb private memory +* - (bit 6) hugetlb shared memory +*/ +static void set_coredump_filter(void) { + FILE *f; + long cdm; + + if ((f = fopen("/proc/self/coredump_filter", "r+")) == NULL) { + return; + } + + if (fscanf(f, "%lx", &cdm) != 1) { + fclose(f); + return; + } + + rewind(f); + + if ((cdm & LARGEPAGES_BIT) == 0) { + cdm |= LARGEPAGES_BIT; + fprintf(f, "%#lx", cdm); + } + + fclose(f); +} + // Large page support static size_t _large_page_size = 0; @@ -2864,6 +2912,8 @@ bool os::large_page_init() { _page_sizes[2] = 0; } + set_coredump_filter(); + // Large page support is available on 2.6 or newer kernel, some vendors // (e.g. Redhat) have backported it to their 2.4 based distributions. // We optimistically assume the support is available. If later it turns out @@ -3483,7 +3533,7 @@ bool os::is_interrupted(Thread* thread, bool clear_interrupted) { // Note that the VM will print warnings if it detects conflicting signal // handlers, unless invoked with the option "-XX:+AllowUserSignalHandlers". // -extern "C" int +extern "C" JNIEXPORT int JVM_handle_linux_signal(int signo, siginfo_t* siginfo, void* ucontext, int abort_if_unrecognized); @@ -4678,44 +4728,6 @@ void os::pause() { } } -extern "C" { - -/** - * NOTE: the following code is to keep the green threads code - * in the libjava.so happy. Once the green threads is removed, - * these code will no longer be needed. - */ -int -jdk_waitpid(pid_t pid, int* status, int options) { - return waitpid(pid, status, options); -} - -int -fork1() { - return fork(); -} - -int -jdk_sem_init(sem_t *sem, int pshared, unsigned int value) { - return sem_init(sem, pshared, value); -} - -int -jdk_sem_post(sem_t *sem) { - return sem_post(sem); -} - -int -jdk_sem_wait(sem_t *sem) { - return sem_wait(sem); -} - -int -jdk_pthread_sigmask(int how , const sigset_t* newmask, sigset_t* oldmask) { - return pthread_sigmask(how , newmask, oldmask); -} - -} // Refer to the comments in os_solaris.cpp park-unpark. // diff --git a/hotspot/src/os/linux/vm/os_linux.inline.hpp b/hotspot/src/os/linux/vm/os_linux.inline.hpp index 9af7e789764..c2301be5052 100644 --- a/hotspot/src/os/linux/vm/os_linux.inline.hpp +++ b/hotspot/src/os/linux/vm/os_linux.inline.hpp @@ -39,6 +39,14 @@ # include "atomic_linux_zero.inline.hpp" # include "orderAccess_linux_zero.inline.hpp" #endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "atomic_linux_arm.inline.hpp" +# include "orderAccess_linux_arm.inline.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "atomic_linux_ppc.inline.hpp" +# include "orderAccess_linux_ppc.inline.hpp" +#endif // System includes diff --git a/hotspot/src/os/linux/vm/thread_linux.inline.hpp b/hotspot/src/os/linux/vm/thread_linux.inline.hpp index f09ed2877ef..93e1d481ef7 100644 --- a/hotspot/src/os/linux/vm/thread_linux.inline.hpp +++ b/hotspot/src/os/linux/vm/thread_linux.inline.hpp @@ -44,6 +44,16 @@ # include "orderAccess_linux_zero.inline.hpp" # include "prefetch_linux_zero.inline.hpp" #endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "atomic_linux_arm.inline.hpp" +# include "orderAccess_linux_arm.inline.hpp" +# include "prefetch_linux_arm.inline.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "atomic_linux_ppc.inline.hpp" +# include "orderAccess_linux_ppc.inline.hpp" +# include "prefetch_linux_ppc.inline.hpp" +#endif // Contains inlined functions for class Thread and ThreadLocalStorage diff --git a/hotspot/src/os/posix/vm/os_posix.cpp b/hotspot/src/os/posix/vm/os_posix.cpp new file mode 100644 index 00000000000..079fa7bc0b2 --- /dev/null +++ b/hotspot/src/os/posix/vm/os_posix.cpp @@ -0,0 +1,61 @@ +/* +* Copyright (c) 1999, 2011, 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. +* +*/ + +#include "prims/jvm.h" +#include "runtime/os.hpp" +#include "utilities/vmError.hpp" + +#include +#include + +// Check core dump limit and report possible place where core can be found +void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize) { + struct rlimit rlim; + static char cwd[O_BUFLEN]; + bool success; + + get_current_directory(cwd, sizeof(cwd)); + + if (getrlimit(RLIMIT_CORE, &rlim) != 0) { + jio_snprintf(buffer, bufferSize, "%s/core or core.%d (may not exist)", cwd, current_process_id()); + success = true; + } else { + switch(rlim.rlim_cur) { + case RLIM_INFINITY: + jio_snprintf(buffer, bufferSize, "%s/core or core.%d", cwd, current_process_id()); + success = true; + break; + case 0: + jio_snprintf(buffer, bufferSize, "Core dumps have been disabled. To enable core dumping, try \"ulimit -c unlimited\" before starting Java again"); + success = false; + break; + default: + jio_snprintf(buffer, bufferSize, "%s/core or core.%d (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", cwd, current_process_id(), (unsigned long)(rlim.rlim_cur >> 10)); + success = true; + break; + } + } + VMError::report_coredump_status(buffer, success); +} + diff --git a/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp b/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp index 632a2126394..adfd1718538 100644 --- a/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp +++ b/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp @@ -49,7 +49,7 @@ #include "oops/klass.hpp" #include "oops/methodOop.hpp" #include "oops/oop.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/virtualspace.hpp" #include "runtime/vmStructs.hpp" #include "utilities/accessFlags.hpp" @@ -215,8 +215,8 @@ int generateJvmOffsets(GEN_variant gen_variant) { GEN_VALUE(AccessFlags_NATIVE, JVM_ACC_NATIVE); GEN_VALUE(constMethodOopDesc_has_linenumber_table, constMethodOopDesc::_has_linenumber_table); GEN_OFFS(AccessFlags, _flags); - GEN_OFFS(symbolOopDesc, _length); - GEN_OFFS(symbolOopDesc, _body); + GEN_OFFS(Symbol, _length); + GEN_OFFS(Symbol, _body); printf("\n"); GEN_OFFS(methodOopDesc, _constMethod); diff --git a/hotspot/src/os/solaris/dtrace/jhelper.d b/hotspot/src/os/solaris/dtrace/jhelper.d index 567d049cc7e..0a93d25cc35 100644 --- a/hotspot/src/os/solaris/dtrace/jhelper.d +++ b/hotspot/src/os/solaris/dtrace/jhelper.d @@ -114,8 +114,8 @@ dtrace:helper:ustack: copyin_offset(OFFSET_HeapBlockHeader_used); copyin_offset(OFFSET_oopDesc_metadata); - copyin_offset(OFFSET_symbolOopDesc_length); - copyin_offset(OFFSET_symbolOopDesc_body); + copyin_offset(OFFSET_Symbol_length); + copyin_offset(OFFSET_Symbol_body); copyin_offset(OFFSET_methodOopDesc_constMethod); copyin_offset(OFFSET_methodOopDesc_constants); @@ -366,13 +366,13 @@ dtrace:helper:ustack: this->nameIndex * sizeof (pointer) + SIZE_constantPoolOopDesc); this->nameSymbolLength = copyin_uint16(this->nameSymbol + - OFFSET_symbolOopDesc_length); + OFFSET_Symbol_length); this->signatureSymbol = copyin_ptr(this->constantPool + this->signatureIndex * sizeof (pointer) + SIZE_constantPoolOopDesc); this->signatureSymbolLength = copyin_uint16(this->signatureSymbol + - OFFSET_symbolOopDesc_length); + OFFSET_Symbol_length); this->klassPtr = copyin_ptr(this->constantPool + OFFSET_constantPoolOopDesc_pool_holder); @@ -381,7 +381,7 @@ dtrace:helper:ustack: OFFSET_Klass_name + SIZE_oopDesc); this->klassSymbolLength = copyin_uint16(this->klassSymbol + - OFFSET_symbolOopDesc_length); + OFFSET_Symbol_length); /* * Enough for three strings, plus the '.', plus the trailing '\0'. @@ -390,7 +390,7 @@ dtrace:helper:ustack: this->nameSymbolLength + this->signatureSymbolLength + 2 + 1); - copyinto(this->klassSymbol + OFFSET_symbolOopDesc_body, + copyinto(this->klassSymbol + OFFSET_Symbol_body, this->klassSymbolLength, this->result); /* @@ -398,11 +398,11 @@ dtrace:helper:ustack: */ this->result[this->klassSymbolLength] = '.'; - copyinto(this->nameSymbol + OFFSET_symbolOopDesc_body, + copyinto(this->nameSymbol + OFFSET_Symbol_body, this->nameSymbolLength, this->result + this->klassSymbolLength + 1); - copyinto(this->signatureSymbol + OFFSET_symbolOopDesc_body, + copyinto(this->signatureSymbol + OFFSET_Symbol_body, this->signatureSymbolLength, this->result + this->klassSymbolLength + this->nameSymbolLength + 1); diff --git a/hotspot/src/os/solaris/dtrace/libjvm_db.c b/hotspot/src/os/solaris/dtrace/libjvm_db.c index 5e1d626800f..2c01516cedd 100644 --- a/hotspot/src/os/solaris/dtrace/libjvm_db.c +++ b/hotspot/src/os/solaris/dtrace/libjvm_db.c @@ -524,10 +524,10 @@ name_for_methodOop(jvm_agent_t* J, uint64_t methodOopPtr, char * result, size_t CHECK_FAIL(err); err = read_pointer(J, constantPool + nameIndex * POINTER_SIZE + SIZE_constantPoolOopDesc, &nameSymbol); CHECK_FAIL(err); - err = ps_pread(J->P, nameSymbol + OFFSET_symbolOopDesc_length, &nameSymbolLength, 2); + err = ps_pread(J->P, nameSymbol + OFFSET_Symbol_length, &nameSymbolLength, 2); CHECK_FAIL(err); nameString = (char*)calloc(nameSymbolLength + 1, 1); - err = ps_pread(J->P, nameSymbol + OFFSET_symbolOopDesc_body, nameString, nameSymbolLength); + err = ps_pread(J->P, nameSymbol + OFFSET_Symbol_body, nameString, nameSymbolLength); CHECK_FAIL(err); /* To get signature string */ @@ -535,10 +535,10 @@ name_for_methodOop(jvm_agent_t* J, uint64_t methodOopPtr, char * result, size_t CHECK_FAIL(err); err = read_pointer(J, constantPool + signatureIndex * POINTER_SIZE + SIZE_constantPoolOopDesc, &signatureSymbol); CHECK_FAIL(err); - err = ps_pread(J->P, signatureSymbol + OFFSET_symbolOopDesc_length, &signatureSymbolLength, 2); + err = ps_pread(J->P, signatureSymbol + OFFSET_Symbol_length, &signatureSymbolLength, 2); CHECK_FAIL(err); signatureString = (char*)calloc(signatureSymbolLength + 1, 1); - err = ps_pread(J->P, signatureSymbol + OFFSET_symbolOopDesc_body, signatureString, signatureSymbolLength); + err = ps_pread(J->P, signatureSymbol + OFFSET_Symbol_body, signatureString, signatureSymbolLength); CHECK_FAIL(err); /* To get klass string */ @@ -546,10 +546,10 @@ name_for_methodOop(jvm_agent_t* J, uint64_t methodOopPtr, char * result, size_t CHECK_FAIL(err); err = read_pointer(J, klassPtr + OFFSET_Klass_name + SIZE_oopDesc, &klassSymbol); CHECK_FAIL(err); - err = ps_pread(J->P, klassSymbol + OFFSET_symbolOopDesc_length, &klassSymbolLength, 2); + err = ps_pread(J->P, klassSymbol + OFFSET_Symbol_length, &klassSymbolLength, 2); CHECK_FAIL(err); klassString = (char*)calloc(klassSymbolLength + 1, 1); - err = ps_pread(J->P, klassSymbol + OFFSET_symbolOopDesc_body, klassString, klassSymbolLength); + err = ps_pread(J->P, klassSymbol + OFFSET_Symbol_body, klassString, klassSymbolLength); CHECK_FAIL(err); result[0] = '\0'; diff --git a/hotspot/src/os/solaris/vm/dtraceJSDT_solaris.cpp b/hotspot/src/os/solaris/vm/dtraceJSDT_solaris.cpp index fb901a1ed2e..c88d4fadea0 100644 --- a/hotspot/src/os/solaris/vm/dtraceJSDT_solaris.cpp +++ b/hotspot/src/os/solaris/vm/dtraceJSDT_solaris.cpp @@ -142,7 +142,7 @@ int DTraceJSDT::pd_activate( ++strcount; for(int prbc = 0; prbc < provider->probe_count; ++prbc) { JVM_DTraceProbe* p = &(provider->probes[prbc]); - symbolOop sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); + Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); // function + name + one per argument strcount += 2 + ArgumentCount(sig).size(); } @@ -178,7 +178,7 @@ int DTraceJSDT::pd_activate( stroffs[curstr++] = string_index; string_index += strlen(name) + 1; - symbolOop sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); + Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); SignatureStream ss(sig); for ( ; !ss.at_return_type(); ss.next()) { BasicType bt = ss.type(); @@ -227,7 +227,7 @@ int DTraceJSDT::pd_activate( uint32_t argscount = 0; for(int prbc = 0; prbc < provider->probe_count; ++prbc) { JVM_DTraceProbe* p = &(provider->probes[prbc]); - symbolOop sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); + Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); argscount += ArgumentCount(sig).size(); } secoffs[argoffs_sec] = align_size_up(offset, alignment_for[ARG_OFFSETS]); @@ -298,7 +298,7 @@ int DTraceJSDT::pd_activate( strcpy(str, name); str += strlen(name) + 1; - symbolOop sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); + Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); SignatureStream ss(sig); for ( ; !ss.at_return_type(); ss.next()) { BasicType bt = ss.type(); @@ -433,7 +433,7 @@ int DTraceJSDT::pd_activate( uint8_t* par = (uint8_t*)(dof + sec->dofs_offset); for (int prbc = 0; prbc < provider->probe_count; ++prbc) { JVM_DTraceProbe* p = &(provider->probes[prbc]); - symbolOop sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); + Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); uint8_t count = (uint8_t)ArgumentCount(sig).size(); for (uint8_t i = 0; i < count; ++i) { *par++ = i; diff --git a/hotspot/src/os/solaris/vm/os_solaris.cpp b/hotspot/src/os/solaris/vm/os_solaris.cpp index 80c7c4d5058..fad8d4466b5 100644 --- a/hotspot/src/os/solaris/vm/os_solaris.cpp +++ b/hotspot/src/os/solaris/vm/os_solaris.cpp @@ -4221,7 +4221,9 @@ void os::os_exception_wrapper(java_call_t f, JavaValue* value, methodHandle* met // Note that the VM will print warnings if it detects conflicting signal // handlers, unless invoked with the option "-XX:+AllowUserSignalHandlers". // -extern "C" int JVM_handle_solaris_signal(int signo, siginfo_t* siginfo, void* ucontext, int abort_if_unrecognized); +extern "C" JNIEXPORT int +JVM_handle_solaris_signal(int signo, siginfo_t* siginfo, void* ucontext, + int abort_if_unrecognized); void signalHandler(int sig, siginfo_t* info, void* ucVoid) { diff --git a/hotspot/src/os/windows/vm/os_windows.cpp b/hotspot/src/os/windows/vm/os_windows.cpp index 2eeb3d33392..1b1f04bd052 100644 --- a/hotspot/src/os/windows/vm/os_windows.cpp +++ b/hotspot/src/os/windows/vm/os_windows.cpp @@ -1,5 +1,5 @@ /* - * CopyrighT (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, 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 @@ -915,6 +915,85 @@ void os::shutdown() { } } + +static BOOL (WINAPI *_MiniDumpWriteDump) ( HANDLE, DWORD, HANDLE, MINIDUMP_TYPE, PMINIDUMP_EXCEPTION_INFORMATION, + PMINIDUMP_USER_STREAM_INFORMATION, PMINIDUMP_CALLBACK_INFORMATION); + +void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize) { + HINSTANCE dbghelp; + EXCEPTION_POINTERS ep; + MINIDUMP_EXCEPTION_INFORMATION mei; + HANDLE hProcess = GetCurrentProcess(); + DWORD processId = GetCurrentProcessId(); + HANDLE dumpFile; + MINIDUMP_TYPE dumpType; + static const char* cwd; + + // If running on a client version of Windows and user has not explicitly enabled dumping + if (!os::win32::is_windows_server() && !CreateMinidumpOnCrash) { + VMError::report_coredump_status("Minidumps are not enabled by default on client versions of Windows", false); + return; + // If running on a server version of Windows and user has explictly disabled dumping + } else if (os::win32::is_windows_server() && !FLAG_IS_DEFAULT(CreateMinidumpOnCrash) && !CreateMinidumpOnCrash) { + VMError::report_coredump_status("Minidump has been disabled from the command line", false); + return; + } + + dbghelp = LoadLibrary("DBGHELP.DLL"); + + if (dbghelp == NULL) { + VMError::report_coredump_status("Failed to load dbghelp.dll", false); + return; + } + + _MiniDumpWriteDump = CAST_TO_FN_PTR( + BOOL(WINAPI *)( HANDLE, DWORD, HANDLE, MINIDUMP_TYPE, PMINIDUMP_EXCEPTION_INFORMATION, + PMINIDUMP_USER_STREAM_INFORMATION, PMINIDUMP_CALLBACK_INFORMATION), + GetProcAddress(dbghelp, "MiniDumpWriteDump")); + + if (_MiniDumpWriteDump == NULL) { + VMError::report_coredump_status("Failed to find MiniDumpWriteDump() in module dbghelp.dll", false); + return; + } + + dumpType = (MINIDUMP_TYPE)(MiniDumpWithFullMemory | MiniDumpWithHandleData); + +// Older versions of dbghelp.h doesn't contain all the dumptypes we want, dbghelp.h with +// API_VERSION_NUMBER 11 or higher contains the ones we want though +#if API_VERSION_NUMBER >= 11 + dumpType = (MINIDUMP_TYPE)(dumpType | MiniDumpWithFullMemoryInfo | MiniDumpWithThreadInfo | + MiniDumpWithUnloadedModules); +#endif + + cwd = get_current_directory(NULL, 0); + jio_snprintf(buffer, bufferSize, "%s\\hs_err_pid%u.mdmp",cwd, current_process_id()); + dumpFile = CreateFile(buffer, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + + if (dumpFile == INVALID_HANDLE_VALUE) { + VMError::report_coredump_status("Failed to create file for dumping", false); + return; + } + + ep.ContextRecord = (PCONTEXT) contextRecord; + ep.ExceptionRecord = (PEXCEPTION_RECORD) exceptionRecord; + + mei.ThreadId = GetCurrentThreadId(); + mei.ExceptionPointers = &ep; + + // Older versions of dbghelp.dll (the one shipped with Win2003 for example) may not support all + // the dump types we really want. If first call fails, lets fall back to just use MiniDumpWithFullMemory then. + if (_MiniDumpWriteDump(hProcess, processId, dumpFile, dumpType, &mei, NULL, NULL) == false && + _MiniDumpWriteDump(hProcess, processId, dumpFile, (MINIDUMP_TYPE)MiniDumpWithFullMemory, &mei, NULL, NULL) == false) { + VMError::report_coredump_status("Call to MiniDumpWriteDump() failed", false); + } else { + VMError::report_coredump_status(buffer, true); + } + + CloseHandle(dumpFile); +} + + + void os::abort(bool dump_core) { os::shutdown(); @@ -3274,7 +3353,7 @@ volatile intx os::win32::_os_thread_count = 0; bool os::win32::_is_nt = false; bool os::win32::_is_windows_2003 = false; - +bool os::win32::_is_windows_server = false; void os::win32::initialize_system_info() { SYSTEM_INFO si; @@ -3293,9 +3372,9 @@ void os::win32::initialize_system_info() { GlobalMemoryStatusEx(&ms); _physical_memory = ms.ullTotalPhys; - OSVERSIONINFO oi; - oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&oi); + OSVERSIONINFOEX oi; + oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + GetVersionEx((OSVERSIONINFO*)&oi); switch(oi.dwPlatformId) { case VER_PLATFORM_WIN32_WINDOWS: _is_nt = false; break; case VER_PLATFORM_WIN32_NT: @@ -3305,6 +3384,10 @@ void os::win32::initialize_system_info() { if (os_vers == 5002) { _is_windows_2003 = true; } + if (oi.wProductType == VER_NT_DOMAIN_CONTROLLER || + oi.wProductType == VER_NT_SERVER) { + _is_windows_server = true; + } } break; default: fatal("Unknown platform"); diff --git a/hotspot/src/os/windows/vm/os_windows.hpp b/hotspot/src/os/windows/vm/os_windows.hpp index ddc7e203657..5576f0bc38d 100644 --- a/hotspot/src/os/windows/vm/os_windows.hpp +++ b/hotspot/src/os/windows/vm/os_windows.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, 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 @@ -38,6 +38,7 @@ class win32 { static size_t _default_stack_size; static bool _is_nt; static bool _is_windows_2003; + static bool _is_windows_server; public: // Windows-specific interface: @@ -64,6 +65,9 @@ class win32 { // Tells whether the platform is NT or Windown95 static bool is_nt() { return _is_nt; } + // Tells whether this is a server version of Windows + static bool is_windows_server() { return _is_windows_server; } + // Tells whether the platform is Windows 2003 static bool is_windows_2003() { return _is_windows_2003; } diff --git a/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp index e759e7d8dea..a9984d0e615 100644 --- a/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp +++ b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp @@ -542,7 +542,7 @@ inline static bool checkICMiss(sigcontext* uc, address* pc, address* stub) { return false; } -extern "C" int +extern "C" JNIEXPORT int JVM_handle_linux_signal(int sig, siginfo_t* info, void* ucVoid, diff --git a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp index f657dfec2d6..b5e159076d5 100644 --- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp +++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp @@ -216,7 +216,7 @@ extern "C" void FetchNPFI () ; extern "C" void FetchNResume () ; #endif // AMD64 -extern "C" int +extern "C" JNIEXPORT int JVM_handle_linux_signal(int sig, siginfo_t* info, void* ucVoid, diff --git a/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp b/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp index 40e15e2f4f8..afeb60a93f4 100644 --- a/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp +++ b/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp @@ -116,7 +116,7 @@ frame os::fetch_frame_from_context(void* ucVoid) { ShouldNotCallThis(); } -extern "C" int +extern "C" JNIEXPORT int JVM_handle_linux_signal(int sig, siginfo_t* info, void* ucVoid, diff --git a/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp b/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp index 3b83be3ebba..e9724f1cd8e 100644 --- a/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp +++ b/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp @@ -317,9 +317,9 @@ extern "C" void Fetch32Resume () ; extern "C" void FetchNPFI () ; extern "C" void FetchNResume () ; -extern "C" int JVM_handle_solaris_signal(int signo, siginfo_t* siginfo, void* ucontext, int abort_if_unrecognized); - -int JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid, int abort_if_unrecognized) { +extern "C" JNIEXPORT int +JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid, + int abort_if_unrecognized) { ucontext_t* uc = (ucontext_t*) ucVoid; Thread* t = ThreadLocalStorage::get_thread_slow(); diff --git a/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp b/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp index d9bb0eb58c3..2de4d6969bd 100644 --- a/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp +++ b/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp @@ -365,8 +365,6 @@ bool os::is_allocatable(size_t bytes) { } -extern "C" int JVM_handle_solaris_signal(int signo, siginfo_t* siginfo, void* ucontext, int abort_if_unrecognized); - extern "C" void Fetch32PFI () ; extern "C" void Fetch32Resume () ; #ifdef AMD64 @@ -374,7 +372,9 @@ extern "C" void FetchNPFI () ; extern "C" void FetchNResume () ; #endif // AMD64 -int JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid, int abort_if_unrecognized) { +extern "C" JNIEXPORT int +JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid, + int abort_if_unrecognized) { ucontext_t* uc = (ucontext_t*) ucVoid; #ifndef AMD64 diff --git a/hotspot/src/share/vm/asm/assembler.cpp b/hotspot/src/share/vm/asm/assembler.cpp index e4e890931f5..2f739393f58 100644 --- a/hotspot/src/share/vm/asm/assembler.cpp +++ b/hotspot/src/share/vm/asm/assembler.cpp @@ -37,6 +37,12 @@ #ifdef TARGET_ARCH_zero # include "assembler_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "assembler_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "assembler_ppc.inline.hpp" +#endif // Implementation of AbstractAssembler diff --git a/hotspot/src/share/vm/asm/assembler.hpp b/hotspot/src/share/vm/asm/assembler.hpp index 0b3544e695f..db0fbadbd5c 100644 --- a/hotspot/src/share/vm/asm/assembler.hpp +++ b/hotspot/src/share/vm/asm/assembler.hpp @@ -43,6 +43,14 @@ # include "register_zero.hpp" # include "vm_version_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "register_arm.hpp" +# include "vm_version_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "register_ppc.hpp" +# include "vm_version_ppc.hpp" +#endif // This file contains platform-independent assembler declarations. @@ -395,6 +403,12 @@ class AbstractAssembler : public ResourceObj { #ifdef TARGET_ARCH_zero # include "assembler_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "assembler_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "assembler_ppc.hpp" +#endif #endif // SHARE_VM_ASM_ASSEMBLER_HPP diff --git a/hotspot/src/share/vm/asm/codeBuffer.hpp b/hotspot/src/share/vm/asm/codeBuffer.hpp index 8ab664d4963..dfcd1cf0a27 100644 --- a/hotspot/src/share/vm/asm/codeBuffer.hpp +++ b/hotspot/src/share/vm/asm/codeBuffer.hpp @@ -566,6 +566,12 @@ class CodeBuffer: public StackObj { #ifdef TARGET_ARCH_zero # include "codeBuffer_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "codeBuffer_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "codeBuffer_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp b/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp index 56a254c7748..a2d4009408e 100644 --- a/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp +++ b/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -898,4 +898,4 @@ void Canonicalizer::do_UnsafePrefetchRead (UnsafePrefetchRead* x) {} void Canonicalizer::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {} void Canonicalizer::do_ProfileCall(ProfileCall* x) {} void Canonicalizer::do_ProfileInvoke(ProfileInvoke* x) {} - +void Canonicalizer::do_RuntimeCall(RuntimeCall* x) {} diff --git a/hotspot/src/share/vm/c1/c1_Canonicalizer.hpp b/hotspot/src/share/vm/c1/c1_Canonicalizer.hpp index e784fc953a2..c5048c7b474 100644 --- a/hotspot/src/share/vm/c1/c1_Canonicalizer.hpp +++ b/hotspot/src/share/vm/c1/c1_Canonicalizer.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -102,6 +102,7 @@ class Canonicalizer: InstructionVisitor { virtual void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x); virtual void do_ProfileCall (ProfileCall* x); virtual void do_ProfileInvoke (ProfileInvoke* x); + virtual void do_RuntimeCall (RuntimeCall* x); }; #endif // SHARE_VM_C1_C1_CANONICALIZER_HPP diff --git a/hotspot/src/share/vm/c1/c1_CodeStubs.hpp b/hotspot/src/share/vm/c1/c1_CodeStubs.hpp index 7579b0cfebc..1367f080dcf 100644 --- a/hotspot/src/share/vm/c1/c1_CodeStubs.hpp +++ b/hotspot/src/share/vm/c1/c1_CodeStubs.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -476,18 +476,12 @@ class SimpleExceptionStub: public CodeStub { -class ArrayStoreExceptionStub: public CodeStub { +class ArrayStoreExceptionStub: public SimpleExceptionStub { private: CodeEmitInfo* _info; public: - ArrayStoreExceptionStub(CodeEmitInfo* info); - virtual void emit_code(LIR_Assembler* emit); - virtual CodeEmitInfo* info() const { return _info; } - virtual bool is_exception_throw_stub() const { return true; } - virtual void visit(LIR_OpVisitState* visitor) { - visitor->do_slow_case(_info); - } + ArrayStoreExceptionStub(LIR_Opr obj, CodeEmitInfo* info): SimpleExceptionStub(Runtime1::throw_array_store_exception_id, obj, info) {} #ifndef PRODUCT virtual void print_name(outputStream* out) const { out->print("ArrayStoreExceptionStub"); } #endif // PRODUCT diff --git a/hotspot/src/share/vm/c1/c1_Defs.hpp b/hotspot/src/share/vm/c1/c1_Defs.hpp index 7f964c09ac6..564e7b3cb5f 100644 --- a/hotspot/src/share/vm/c1/c1_Defs.hpp +++ b/hotspot/src/share/vm/c1/c1_Defs.hpp @@ -35,6 +35,12 @@ #ifdef TARGET_ARCH_zero # include "register_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "register_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "register_ppc.hpp" +#endif // set frame size and return address offset to these values in blobs // (if the compiled frame uses ebp as link pointer on IA; otherwise, @@ -50,6 +56,12 @@ enum { #ifdef TARGET_ARCH_sparc # include "c1_Defs_sparc.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "c1_Defs_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "c1_Defs_ppc.hpp" +#endif // native word offsets from memory address diff --git a/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp b/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp index a84d8a15269..3e8adbe14c4 100644 --- a/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp +++ b/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp @@ -38,6 +38,12 @@ class FpuStackSim; #ifdef TARGET_ARCH_sparc # include "c1_FpuStackSim_sparc.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "c1_FpuStackSim_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "c1_FpuStackSim_ppc.hpp" +#endif #endif // SHARE_VM_C1_C1_FPUSTACKSIM_HPP diff --git a/hotspot/src/share/vm/c1/c1_FrameMap.cpp b/hotspot/src/share/vm/c1/c1_FrameMap.cpp index 5b10b966db1..74eab9bd08e 100644 --- a/hotspot/src/share/vm/c1/c1_FrameMap.cpp +++ b/hotspot/src/share/vm/c1/c1_FrameMap.cpp @@ -35,6 +35,12 @@ #ifdef TARGET_ARCH_zero # include "vmreg_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "vmreg_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vmreg_ppc.inline.hpp" +#endif diff --git a/hotspot/src/share/vm/c1/c1_FrameMap.hpp b/hotspot/src/share/vm/c1/c1_FrameMap.hpp index c112ad54006..266ae094057 100644 --- a/hotspot/src/share/vm/c1/c1_FrameMap.hpp +++ b/hotspot/src/share/vm/c1/c1_FrameMap.hpp @@ -87,6 +87,12 @@ class FrameMap : public CompilationResourceObj { #endif #ifdef TARGET_ARCH_sparc # include "c1_FrameMap_sparc.hpp" +#endif +#ifdef TARGET_ARCH_arm +# include "c1_FrameMap_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "c1_FrameMap_ppc.hpp" #endif diff --git a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp index c1f1e1744b5..cd3dfe010ab 100644 --- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp +++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp @@ -1396,6 +1396,13 @@ void GraphBuilder::method_return(Value x) { if (continuation() != NULL) { assert(!method()->is_synchronized() || InlineSynchronizedMethods, "can not inline synchronized methods yet"); + if (compilation()->env()->dtrace_method_probes()) { + // Report exit from inline methods + Values* args = new Values(1); + args->push(append(new Constant(new ObjectConstant(method())))); + append(new RuntimeCall(voidType, "dtrace_method_exit", CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), args)); + } + // If the inlined method is synchronized, the monitor must be // released before we jump to the continuation block. if (method()->is_synchronized()) { @@ -3301,6 +3308,13 @@ void GraphBuilder::fill_sync_handler(Value lock, BlockBegin* sync_handler, bool Value exception = append_with_bci(new ExceptionObject(), SynchronizationEntryBCI); assert(exception->is_pinned(), "must be"); + if (compilation()->env()->dtrace_method_probes()) { + // Report exit from inline methods + Values* args = new Values(1); + args->push(append(new Constant(new ObjectConstant(method())))); + append(new RuntimeCall(voidType, "dtrace_method_exit", CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), args)); + } + int bci = SynchronizationEntryBCI; if (lock) { assert(state()->locks_size() > 0 && state()->lock_at(state()->locks_size() - 1) == lock, "lock is missing"); @@ -3486,6 +3500,11 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known) { inline_sync_entry(lock, sync_handler); } + if (compilation()->env()->dtrace_method_probes()) { + Values* args = new Values(1); + args->push(append(new Constant(new ObjectConstant(method())))); + append(new RuntimeCall(voidType, "dtrace_method_entry", CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry), args)); + } BlockBegin* callee_start_block = block_at(0); if (callee_start_block != NULL) { diff --git a/hotspot/src/share/vm/c1/c1_Instruction.hpp b/hotspot/src/share/vm/c1/c1_Instruction.hpp index 63b30819c7f..3a5eecc2d7b 100644 --- a/hotspot/src/share/vm/c1/c1_Instruction.hpp +++ b/hotspot/src/share/vm/c1/c1_Instruction.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -106,6 +106,7 @@ class UnsafePrefetchRead; class UnsafePrefetchWrite; class ProfileCall; class ProfileInvoke; +class RuntimeCall; // A Value is a reference to the instruction creating the value typedef Instruction* Value; @@ -202,6 +203,7 @@ class InstructionVisitor: public StackObj { virtual void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) = 0; virtual void do_ProfileCall (ProfileCall* x) = 0; virtual void do_ProfileInvoke (ProfileInvoke* x) = 0; + virtual void do_RuntimeCall (RuntimeCall* x) = 0; }; @@ -314,6 +316,8 @@ class Instruction: public CompilationResourceObj { return res; } + static const int no_bci = -99; + enum InstructionFlag { NeedsNullCheckFlag = 0, CanTrapFlag, @@ -2267,6 +2271,38 @@ LEAF(ProfileCall, Instruction) virtual void input_values_do(ValueVisitor* f) { if (_recv != NULL) f->visit(&_recv); } }; + +// Call some C runtime function that doesn't safepoint, +// optionally passing the current thread as the first argument. +LEAF(RuntimeCall, Instruction) + private: + const char* _entry_name; + address _entry; + Values* _args; + bool _pass_thread; // Pass the JavaThread* as an implicit first argument + + public: + RuntimeCall(ValueType* type, const char* entry_name, address entry, Values* args, bool pass_thread = true) + : Instruction(type) + , _entry(entry) + , _args(args) + , _entry_name(entry_name) + , _pass_thread(pass_thread) { + ASSERT_VALUES + pin(); + } + + const char* entry_name() const { return _entry_name; } + address entry() const { return _entry; } + int number_of_arguments() const { return _args->length(); } + Value argument_at(int i) const { return _args->at(i); } + bool pass_thread() const { return _pass_thread; } + + virtual void input_values_do(ValueVisitor* f) { + for (int i = 0; i < _args->length(); i++) f->visit(_args->adr_at(i)); + } +}; + // Use to trip invocation counter of an inlined method LEAF(ProfileInvoke, Instruction) diff --git a/hotspot/src/share/vm/c1/c1_InstructionPrinter.cpp b/hotspot/src/share/vm/c1/c1_InstructionPrinter.cpp index 1b9930cb215..e27ce064d94 100644 --- a/hotspot/src/share/vm/c1/c1_InstructionPrinter.cpp +++ b/hotspot/src/share/vm/c1/c1_InstructionPrinter.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -841,4 +841,13 @@ void InstructionPrinter::do_ProfileInvoke(ProfileInvoke* x) { } +void InstructionPrinter::do_RuntimeCall(RuntimeCall* x) { + output()->print("call_rt %s(", x->entry_name()); + for (int i = 0; i < x->number_of_arguments(); i++) { + if (i > 0) output()->print(", "); + print_value(x->argument_at(i)); + } + output()->put(')'); +} + #endif // PRODUCT diff --git a/hotspot/src/share/vm/c1/c1_InstructionPrinter.hpp b/hotspot/src/share/vm/c1/c1_InstructionPrinter.hpp index 3f3921e31ae..94479704240 100644 --- a/hotspot/src/share/vm/c1/c1_InstructionPrinter.hpp +++ b/hotspot/src/share/vm/c1/c1_InstructionPrinter.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -131,6 +131,7 @@ class InstructionPrinter: public InstructionVisitor { virtual void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x); virtual void do_ProfileCall (ProfileCall* x); virtual void do_ProfileInvoke (ProfileInvoke* x); + virtual void do_RuntimeCall (RuntimeCall* x); }; #endif // PRODUCT diff --git a/hotspot/src/share/vm/c1/c1_LIR.cpp b/hotspot/src/share/vm/c1/c1_LIR.cpp index bce59a55d9d..f6e10ec6fdf 100644 --- a/hotspot/src/share/vm/c1/c1_LIR.cpp +++ b/hotspot/src/share/vm/c1/c1_LIR.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, 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 @@ -396,7 +396,7 @@ LIR_OpTypeCheck::LIR_OpTypeCheck(LIR_Code code, LIR_Opr object, LIR_Opr array, L , _should_profile(false) { if (code == lir_store_check) { - _stub = new ArrayStoreExceptionStub(info_for_exception); + _stub = new ArrayStoreExceptionStub(object, info_for_exception); assert(info_for_exception != NULL, "store_check throws exceptions"); } else { ShouldNotReachHere(); diff --git a/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp b/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp index 1b57ea2f095..510bf2f92a5 100644 --- a/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp +++ b/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp @@ -42,6 +42,14 @@ # include "nativeInst_zero.hpp" # include "vmreg_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "nativeInst_arm.hpp" +# include "vmreg_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "nativeInst_ppc.hpp" +# include "vmreg_ppc.inline.hpp" +#endif void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) { diff --git a/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp b/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp index bb18c253eb5..074027a8719 100644 --- a/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp +++ b/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp @@ -252,6 +252,12 @@ class LIR_Assembler: public CompilationResourceObj { #ifdef TARGET_ARCH_sparc # include "c1_LIRAssembler_sparc.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "c1_LIRAssembler_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "c1_LIRAssembler_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp b/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp index 78e81e26f54..3faff5367fa 100644 --- a/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp +++ b/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, 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 @@ -2741,6 +2741,31 @@ void LIRGenerator::increment_event_counter_impl(CodeEmitInfo* info, } } +void LIRGenerator::do_RuntimeCall(RuntimeCall* x) { + LIR_OprList* args = new LIR_OprList(x->number_of_arguments()); + BasicTypeList* signature = new BasicTypeList(x->number_of_arguments()); + + if (x->pass_thread()) { + signature->append(T_ADDRESS); + args->append(getThreadPointer()); + } + + for (int i = 0; i < x->number_of_arguments(); i++) { + Value a = x->argument_at(i); + LIRItem* item = new LIRItem(a, this); + item->load_item(); + args->append(item->result()); + signature->append(as_BasicType(a->type())); + } + + LIR_Opr result = call_runtime(signature, args, x->entry(), x->type(), NULL); + if (x->type() == voidType) { + set_no_result(x); + } else { + __ move(result, rlock_result(x)); + } +} + LIR_Opr LIRGenerator::call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info) { LIRItemList args(1); LIRItem value(arg1, this); diff --git a/hotspot/src/share/vm/c1/c1_LIRGenerator.hpp b/hotspot/src/share/vm/c1/c1_LIRGenerator.hpp index 96b6b1c1995..4b9c4aeca73 100644 --- a/hotspot/src/share/vm/c1/c1_LIRGenerator.hpp +++ b/hotspot/src/share/vm/c1/c1_LIRGenerator.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, 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 @@ -522,6 +522,7 @@ class LIRGenerator: public InstructionVisitor, public BlockClosure { virtual void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x); virtual void do_ProfileCall (ProfileCall* x); virtual void do_ProfileInvoke (ProfileInvoke* x); + virtual void do_RuntimeCall (RuntimeCall* x); }; diff --git a/hotspot/src/share/vm/c1/c1_LinearScan.cpp b/hotspot/src/share/vm/c1/c1_LinearScan.cpp index 7419f9e8fac..16fd0aea1ca 100644 --- a/hotspot/src/share/vm/c1/c1_LinearScan.cpp +++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp @@ -41,6 +41,12 @@ #ifdef TARGET_ARCH_zero # include "vmreg_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "vmreg_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vmreg_ppc.inline.hpp" +#endif #ifndef PRODUCT diff --git a/hotspot/src/share/vm/c1/c1_LinearScan.hpp b/hotspot/src/share/vm/c1/c1_LinearScan.hpp index 018570f9c56..3436cb5c2be 100644 --- a/hotspot/src/share/vm/c1/c1_LinearScan.hpp +++ b/hotspot/src/share/vm/c1/c1_LinearScan.hpp @@ -972,6 +972,12 @@ class LinearScanTimers : public StackObj { #ifdef TARGET_ARCH_sparc # include "c1_LinearScan_sparc.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "c1_LinearScan_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "c1_LinearScan_ppc.hpp" +#endif #endif // SHARE_VM_C1_C1_LINEARSCAN_HPP diff --git a/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp b/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp index 41ee336343e..9887c2af61d 100644 --- a/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp +++ b/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp @@ -35,6 +35,12 @@ #ifdef TARGET_ARCH_zero # include "assembler_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "assembler_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "assembler_ppc.inline.hpp" +#endif class CodeEmitInfo; @@ -61,6 +67,12 @@ class C1_MacroAssembler: public MacroAssembler { #ifdef TARGET_ARCH_sparc # include "c1_MacroAssembler_sparc.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "c1_MacroAssembler_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "c1_MacroAssembler_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/c1/c1_Optimizer.cpp b/hotspot/src/share/vm/c1/c1_Optimizer.cpp index b4da85cc4ff..93d610e6245 100644 --- a/hotspot/src/share/vm/c1/c1_Optimizer.cpp +++ b/hotspot/src/share/vm/c1/c1_Optimizer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -496,6 +496,7 @@ public: void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x); void do_ProfileCall (ProfileCall* x); void do_ProfileInvoke (ProfileInvoke* x); + void do_RuntimeCall (RuntimeCall* x); }; @@ -664,6 +665,7 @@ void NullCheckVisitor::do_UnsafePrefetchRead (UnsafePrefetchRead* x) {} void NullCheckVisitor::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {} void NullCheckVisitor::do_ProfileCall (ProfileCall* x) { nce()->clear_last_explicit_null_check(); } void NullCheckVisitor::do_ProfileInvoke (ProfileInvoke* x) {} +void NullCheckVisitor::do_RuntimeCall (RuntimeCall* x) {} void NullCheckEliminator::visit(Value* p) { diff --git a/hotspot/src/share/vm/c1/c1_Runtime1.cpp b/hotspot/src/share/vm/c1/c1_Runtime1.cpp index 205d49b5298..f939f1d76ee 100644 --- a/hotspot/src/share/vm/c1/c1_Runtime1.cpp +++ b/hotspot/src/share/vm/c1/c1_Runtime1.cpp @@ -339,8 +339,10 @@ JRT_ENTRY(void, Runtime1::unimplemented_entry(JavaThread* thread, StubID id)) JRT_END -JRT_ENTRY(void, Runtime1::throw_array_store_exception(JavaThread* thread)) - THROW(vmSymbolHandles::java_lang_ArrayStoreException()); +JRT_ENTRY(void, Runtime1::throw_array_store_exception(JavaThread* thread, oopDesc* obj)) + ResourceMark rm(thread); + const char* klass_name = Klass::cast(obj->klass())->external_name(); + SharedRuntime::throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_ArrayStoreException(), klass_name); JRT_END diff --git a/hotspot/src/share/vm/c1/c1_Runtime1.hpp b/hotspot/src/share/vm/c1/c1_Runtime1.hpp index c6ef0d516b8..84f839fbf5e 100644 --- a/hotspot/src/share/vm/c1/c1_Runtime1.hpp +++ b/hotspot/src/share/vm/c1/c1_Runtime1.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -143,9 +143,9 @@ class Runtime1: public AllStatic { static void throw_index_exception(JavaThread* thread, int index); static void throw_div0_exception(JavaThread* thread); static void throw_null_pointer_exception(JavaThread* thread); - static void throw_class_cast_exception(JavaThread* thread, oopDesc* obect); + static void throw_class_cast_exception(JavaThread* thread, oopDesc* object); static void throw_incompatible_class_change_error(JavaThread* thread); - static void throw_array_store_exception(JavaThread* thread); + static void throw_array_store_exception(JavaThread* thread, oopDesc* object); static void monitorenter(JavaThread* thread, oopDesc* obj, BasicObjectLock* lock); static void monitorexit (JavaThread* thread, BasicObjectLock* lock); diff --git a/hotspot/src/share/vm/c1/c1_ValueMap.hpp b/hotspot/src/share/vm/c1/c1_ValueMap.hpp index 9359abda10a..7dcae91f34f 100644 --- a/hotspot/src/share/vm/c1/c1_ValueMap.hpp +++ b/hotspot/src/share/vm/c1/c1_ValueMap.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -192,11 +192,12 @@ class ValueNumberingVisitor: public InstructionVisitor { void do_ExceptionObject(ExceptionObject* x) { /* nothing to do */ } void do_RoundFP (RoundFP* x) { /* nothing to do */ } void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ } - void do_ProfileInvoke (ProfileInvoke* x) { /* nothing to do */ }; void do_UnsafeGetObject(UnsafeGetObject* x) { /* nothing to do */ } void do_UnsafePrefetchRead (UnsafePrefetchRead* x) { /* nothing to do */ } void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) { /* nothing to do */ } void do_ProfileCall (ProfileCall* x) { /* nothing to do */ } + void do_ProfileInvoke (ProfileInvoke* x) { /* nothing to do */ }; + void do_RuntimeCall (RuntimeCall* x) { /* nothing to do */ }; }; diff --git a/hotspot/src/share/vm/c1/c1_globals.hpp b/hotspot/src/share/vm/c1/c1_globals.hpp index 9b4db1c0f9f..fd890cf7e47 100644 --- a/hotspot/src/share/vm/c1/c1_globals.hpp +++ b/hotspot/src/share/vm/c1/c1_globals.hpp @@ -32,6 +32,12 @@ #ifdef TARGET_ARCH_sparc # include "c1_globals_sparc.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "c1_globals_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "c1_globals_ppc.hpp" +#endif #ifdef TARGET_OS_FAMILY_linux # include "c1_globals_linux.hpp" #endif diff --git a/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp b/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp index 9017232a237..45910919080 100644 --- a/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp +++ b/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp @@ -233,6 +233,10 @@ void BCEscapeAnalyzer::invoke(StateInfo &state, Bytecodes::Code code, ciMethod* // compute size of arguments int arg_size = target->arg_size(); + if (code == Bytecodes::_invokedynamic) { + assert(!target->is_static(), "receiver explicit in method"); + arg_size--; // implicit, not really on stack + } if (!target->is_loaded() && code == Bytecodes::_invokestatic) { arg_size--; } @@ -250,6 +254,10 @@ void BCEscapeAnalyzer::invoke(StateInfo &state, Bytecodes::Code code, ciMethod* ArgumentMap arg = state._stack[i]; skip_callee = !is_argument(arg) || !is_arg_stack(arg) || (directly_recursive && arg.is_singleton(i - arg_base)); } + // For now we conservatively skip invokedynamic. + if (code == Bytecodes::_invokedynamic) { + skip_callee = true; + } if (skip_callee) { TRACE_BCEA(3, tty->print_cr("[EA] skipping method %s::%s", holder->name()->as_utf8(), target->name()->as_utf8())); for (i = 0; i < arg_size; i++) { diff --git a/hotspot/src/share/vm/ci/ciClassList.hpp b/hotspot/src/share/vm/ci/ciClassList.hpp index d9c3f75b2ba..01deadd7ef3 100644 --- a/hotspot/src/share/vm/ci/ciClassList.hpp +++ b/hotspot/src/share/vm/ci/ciClassList.hpp @@ -60,7 +60,6 @@ class ciReturnAddress; class ciKlass; class ciInstanceKlass; class ciMethodKlass; -class ciSymbolKlass; class ciArrayKlass; class ciObjArrayKlass; class ciTypeArrayKlass; @@ -112,7 +111,6 @@ friend class ciReturnAddress; \ friend class ciKlass; \ friend class ciInstanceKlass; \ friend class ciMethodKlass; \ -friend class ciSymbolKlass; \ friend class ciArrayKlass; \ friend class ciObjArrayKlass; \ friend class ciTypeArrayKlass; \ diff --git a/hotspot/src/share/vm/ci/ciEnv.cpp b/hotspot/src/share/vm/ci/ciEnv.cpp index 2f20fcc9861..55dfd0c78e2 100644 --- a/hotspot/src/share/vm/ci/ciEnv.cpp +++ b/hotspot/src/share/vm/ci/ciEnv.cpp @@ -68,7 +68,6 @@ ciObject* ciEnv::_null_object_instance; ciMethodKlass* ciEnv::_method_klass_instance; -ciSymbolKlass* ciEnv::_symbol_klass_instance; ciKlassKlass* ciEnv::_klass_klass_instance; ciInstanceKlassKlass* ciEnv::_instance_klass_klass_instance; ciTypeArrayKlassKlass* ciEnv::_type_array_klass_klass_instance; @@ -202,6 +201,7 @@ ciEnv::ciEnv(Arena* arena) { ciEnv::~ciEnv() { CompilerThread* current_thread = CompilerThread::current(); + _factory->remove_symbols(); current_thread->set_env(NULL); } @@ -234,7 +234,7 @@ void ciEnv::cache_dtrace_flags() { // ------------------------------------------------------------------ // helper for lazy exception creation -ciInstance* ciEnv::get_or_create_exception(jobject& handle, symbolHandle name) { +ciInstance* ciEnv::get_or_create_exception(jobject& handle, Symbol* name) { VM_ENTRY_MARK; if (handle == NULL) { // Cf. universe.cpp, creation of Universe::_null_ptr_exception_instance. @@ -261,7 +261,7 @@ ciInstance* ciEnv::ArrayIndexOutOfBoundsException_instance() { if (_ArrayIndexOutOfBoundsException_instance == NULL) { _ArrayIndexOutOfBoundsException_instance = get_or_create_exception(_ArrayIndexOutOfBoundsException_handle, - vmSymbolHandles::java_lang_ArrayIndexOutOfBoundsException()); + vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); } return _ArrayIndexOutOfBoundsException_instance; } @@ -269,7 +269,7 @@ ciInstance* ciEnv::ArrayStoreException_instance() { if (_ArrayStoreException_instance == NULL) { _ArrayStoreException_instance = get_or_create_exception(_ArrayStoreException_handle, - vmSymbolHandles::java_lang_ArrayStoreException()); + vmSymbols::java_lang_ArrayStoreException()); } return _ArrayStoreException_instance; } @@ -277,7 +277,7 @@ ciInstance* ciEnv::ClassCastException_instance() { if (_ClassCastException_instance == NULL) { _ClassCastException_instance = get_or_create_exception(_ClassCastException_handle, - vmSymbolHandles::java_lang_ClassCastException()); + vmSymbols::java_lang_ClassCastException()); } return _ClassCastException_instance; } @@ -377,14 +377,16 @@ ciKlass* ciEnv::get_klass_by_name_impl(ciKlass* accessing_klass, EXCEPTION_CONTEXT; // Now we need to check the SystemDictionary - symbolHandle sym(THREAD, name->get_symbolOop()); + Symbol* sym = name->get_symbol(); if (sym->byte_at(0) == 'L' && sym->byte_at(sym->utf8_length()-1) == ';') { // This is a name from a signature. Strip off the trimmings. - sym = oopFactory::new_symbol_handle(sym->as_utf8()+1, - sym->utf8_length()-2, - KILL_COMPILE_ON_FATAL_(_unloaded_ciinstance_klass)); - name = get_object(sym())->as_symbol(); + // Call recursive to keep scope of strippedsym. + TempNewSymbol strippedsym = SymbolTable::new_symbol(sym->as_utf8()+1, + sym->utf8_length()-2, + KILL_COMPILE_ON_FATAL_(_unloaded_ciinstance_klass)); + ciSymbol* strippedname = get_symbol(strippedsym); + return get_klass_by_name_impl(accessing_klass, strippedname, require_local); } // Check for prior unloaded klass. The SystemDictionary's answers @@ -430,13 +432,14 @@ ciKlass* ciEnv::get_klass_by_name_impl(ciKlass* accessing_klass, (sym->byte_at(1) == '[' || sym->byte_at(1) == 'L')) { // We have an unloaded array. // Build it on the fly if the element class exists. - symbolOop elem_sym = oopFactory::new_symbol(sym->as_utf8()+1, - sym->utf8_length()-1, - KILL_COMPILE_ON_FATAL_(fail_type)); + TempNewSymbol elem_sym = SymbolTable::new_symbol(sym->as_utf8()+1, + sym->utf8_length()-1, + KILL_COMPILE_ON_FATAL_(fail_type)); + // Get element ciKlass recursively. ciKlass* elem_klass = get_klass_by_name_impl(accessing_klass, - get_object(elem_sym)->as_symbol(), + get_symbol(elem_sym), require_local); if (elem_klass != NULL && elem_klass->is_loaded()) { // Now make an array for it @@ -475,7 +478,7 @@ ciKlass* ciEnv::get_klass_by_index_impl(constantPoolHandle cpool, ciInstanceKlass* accessor) { EXCEPTION_CONTEXT; KlassHandle klass (THREAD, constantPoolOopDesc::klass_at_if_loaded(cpool, index)); - symbolHandle klass_name; + Symbol* klass_name = NULL; if (klass.is_null()) { // The klass has not been inserted into the constant pool. // Try to look it up by name. @@ -490,10 +493,10 @@ ciKlass* ciEnv::get_klass_by_index_impl(constantPoolHandle cpool, // very recently. klass = KlassHandle(THREAD, cpool->resolved_klass_at(index)); } else if (tag.is_symbol()) { - klass_name = symbolHandle(THREAD, cpool->symbol_at(index)); + klass_name = cpool->symbol_at(index); } else { assert(cpool->tag_at(index).is_unresolved_klass(), "wrong tag"); - klass_name = symbolHandle(THREAD, cpool->unresolved_klass_at(index)); + klass_name = cpool->unresolved_klass_at(index); } } } @@ -501,7 +504,7 @@ ciKlass* ciEnv::get_klass_by_index_impl(constantPoolHandle cpool, if (klass.is_null()) { // Not found in constant pool. Use the name to do the lookup. ciKlass* k = get_klass_by_name_impl(accessor, - get_object(klass_name())->as_symbol(), + get_symbol(klass_name), false); // Calculate accessibility the hard way. if (!k->is_loaded()) { @@ -519,7 +522,7 @@ ciKlass* ciEnv::get_klass_by_index_impl(constantPoolHandle cpool, // Check for prior unloaded klass. The SystemDictionary's answers // can vary over time but the compiler needs consistency. - ciSymbol* name = get_object(klass()->klass_part()->name())->as_symbol(); + ciSymbol* name = get_symbol(klass()->klass_part()->name()); ciKlass* unloaded_klass = check_get_unloaded_klass(accessor, name); if (unloaded_klass != NULL) { is_accessible = false; @@ -605,7 +608,7 @@ ciConstant ciEnv::get_constant_by_index_impl(constantPoolHandle cpool, return ciConstant(T_OBJECT, ciobj); } else if (tag.is_method_type()) { // must execute Java code to link this CP entry into cache[i].f1 - ciSymbol* signature = get_object(cpool->method_type_signature_at(index))->as_symbol(); + ciSymbol* signature = get_symbol(cpool->method_type_signature_at(index)); ciObject* ciobj = get_unloaded_method_type_constant(signature); return ciConstant(T_OBJECT, ciobj); } else if (tag.is_method_handle()) { @@ -613,8 +616,8 @@ ciConstant ciEnv::get_constant_by_index_impl(constantPoolHandle cpool, int ref_kind = cpool->method_handle_ref_kind_at(index); int callee_index = cpool->method_handle_klass_index_at(index); ciKlass* callee = get_klass_by_index_impl(cpool, callee_index, ignore_will_link, accessor); - ciSymbol* name = get_object(cpool->method_handle_name_ref_at(index))->as_symbol(); - ciSymbol* signature = get_object(cpool->method_handle_signature_ref_at(index))->as_symbol(); + ciSymbol* name = get_symbol(cpool->method_handle_name_ref_at(index)); + ciSymbol* signature = get_symbol(cpool->method_handle_signature_ref_at(index)); ciObject* ciobj = get_unloaded_method_handle_constant(callee, name, signature, ref_kind); return ciConstant(T_OBJECT, ciobj); } else { @@ -674,33 +677,31 @@ ciField* ciEnv::get_field_by_index(ciInstanceKlass* accessor, // name, signature, and bytecode. methodOop ciEnv::lookup_method(instanceKlass* accessor, instanceKlass* holder, - symbolOop name, - symbolOop sig, + Symbol* name, + Symbol* sig, Bytecodes::Code bc) { EXCEPTION_CONTEXT; KlassHandle h_accessor(THREAD, accessor); KlassHandle h_holder(THREAD, holder); - symbolHandle h_name(THREAD, name); - symbolHandle h_sig(THREAD, sig); LinkResolver::check_klass_accessability(h_accessor, h_holder, KILL_COMPILE_ON_FATAL_(NULL)); methodHandle dest_method; switch (bc) { case Bytecodes::_invokestatic: dest_method = - LinkResolver::resolve_static_call_or_null(h_holder, h_name, h_sig, h_accessor); + LinkResolver::resolve_static_call_or_null(h_holder, name, sig, h_accessor); break; case Bytecodes::_invokespecial: dest_method = - LinkResolver::resolve_special_call_or_null(h_holder, h_name, h_sig, h_accessor); + LinkResolver::resolve_special_call_or_null(h_holder, name, sig, h_accessor); break; case Bytecodes::_invokeinterface: dest_method = - LinkResolver::linktime_resolve_interface_method_or_null(h_holder, h_name, h_sig, + LinkResolver::linktime_resolve_interface_method_or_null(h_holder, name, sig, h_accessor, true); break; case Bytecodes::_invokevirtual: dest_method = - LinkResolver::linktime_resolve_virtual_method_or_null(h_holder, h_name, h_sig, + LinkResolver::linktime_resolve_virtual_method_or_null(h_holder, name, sig, h_accessor, true); break; default: ShouldNotReachHere(); @@ -721,8 +722,8 @@ ciMethod* ciEnv::get_method_by_index_impl(constantPoolHandle cpool, ciInstanceKlass* declared_holder = get_instance_klass_for_declared_method_holder(holder); // Get the method's name and signature. - symbolOop name_sym = cpool->name_ref_at(index); - symbolOop sig_sym = cpool->signature_ref_at(index); + Symbol* name_sym = cpool->name_ref_at(index); + Symbol* sig_sym = cpool->signature_ref_at(index); if (holder_is_accessible) { // Our declared holder is loaded. instanceKlass* lookup = declared_holder->get_instanceKlass(); @@ -738,8 +739,8 @@ ciMethod* ciEnv::get_method_by_index_impl(constantPoolHandle cpool, // lookup. return get_unloaded_method(declared_holder, - get_object(name_sym)->as_symbol(), - get_object(sig_sym)->as_symbol()); + get_symbol(name_sym), + get_symbol(sig_sym)); } @@ -759,7 +760,7 @@ ciMethod* ciEnv::get_fake_invokedynamic_method_impl(constantPoolHandle cpool, // compiler, but it is simpler to stop the code path here with an unlinked method. if (!is_resolved) { ciInstanceKlass* mh_klass = get_object(SystemDictionary::MethodHandle_klass())->as_instance_klass(); - ciSymbol* sig_sym = get_object(cpool->signature_ref_at(index))->as_symbol(); + ciSymbol* sig_sym = get_symbol(cpool->signature_ref_at(index)); return get_unloaded_method(mh_klass, ciSymbol::invokeExact_name(), sig_sym); } diff --git a/hotspot/src/share/vm/ci/ciEnv.hpp b/hotspot/src/share/vm/ci/ciEnv.hpp index 98431e57a8b..53c3ee15d9d 100644 --- a/hotspot/src/share/vm/ci/ciEnv.hpp +++ b/hotspot/src/share/vm/ci/ciEnv.hpp @@ -79,7 +79,6 @@ private: // Distinguished instances of certain ciObjects.. static ciObject* _null_object_instance; static ciMethodKlass* _method_klass_instance; - static ciSymbolKlass* _symbol_klass_instance; static ciKlassKlass* _klass_klass_instance; static ciInstanceKlassKlass* _instance_klass_klass_instance; static ciTypeArrayKlassKlass* _type_array_klass_klass_instance; @@ -160,8 +159,8 @@ private: klassOop resolved_klassOop); methodOop lookup_method(instanceKlass* accessor, instanceKlass* holder, - symbolOop name, - symbolOop sig, + Symbol* name, + Symbol* sig, Bytecodes::Code bc); // Get a ciObject from the object factory. Ensures uniqueness @@ -174,9 +173,18 @@ private: } } + ciSymbol* get_symbol(Symbol* o) { + if (o == NULL) { + ShouldNotReachHere(); + return NULL; + } else { + return _factory->get_symbol(o); + } + } + ciMethod* get_method_from_handle(jobject method); - ciInstance* get_or_create_exception(jobject& handle, symbolHandle name); + ciInstance* get_or_create_exception(jobject& handle, Symbol* name); // Get a ciMethod representing either an unfound method or // a method with an unloaded holder. Ensures uniqueness of diff --git a/hotspot/src/share/vm/ci/ciField.cpp b/hotspot/src/share/vm/ci/ciField.cpp index 8045b423871..ef12c7c0ce9 100644 --- a/hotspot/src/share/vm/ci/ciField.cpp +++ b/hotspot/src/share/vm/ci/ciField.cpp @@ -79,15 +79,15 @@ ciField::ciField(ciInstanceKlass* klass, int index): _known_to_link_with(NULL) { constantPoolHandle cpool(thread, klass->get_instanceKlass()->constants()); // Get the field's name, signature, and type. - symbolHandle name (thread, cpool->name_ref_at(index)); - _name = ciEnv::current(thread)->get_object(name())->as_symbol(); + Symbol* name = cpool->name_ref_at(index); + _name = ciEnv::current(thread)->get_symbol(name); int nt_index = cpool->name_and_type_ref_index_at(index); int sig_index = cpool->signature_ref_index_at(nt_index); - symbolHandle signature (thread, cpool->symbol_at(sig_index)); - _signature = ciEnv::current(thread)->get_object(signature())->as_symbol(); + Symbol* signature = cpool->symbol_at(sig_index); + _signature = ciEnv::current(thread)->get_symbol(signature); - BasicType field_type = FieldType::basic_type(signature()); + BasicType field_type = FieldType::basic_type(signature); // If the field is a pointer type, get the klass of the // field. @@ -100,7 +100,7 @@ ciField::ciField(ciInstanceKlass* klass, int index): _known_to_link_with(NULL) { _type = ciType::make(field_type); } - _name = (ciSymbol*)ciEnv::current(thread)->get_object(name()); + _name = (ciSymbol*)ciEnv::current(thread)->get_symbol(name); // Get the field's declared holder. // @@ -130,7 +130,7 @@ ciField::ciField(ciInstanceKlass* klass, int index): _known_to_link_with(NULL) { // Perform the field lookup. fieldDescriptor field_desc; klassOop canonical_holder = - loaded_decl_holder->find_field(name(), signature(), &field_desc); + loaded_decl_holder->find_field(name, signature, &field_desc); if (canonical_holder == NULL) { // Field lookup failed. Will be detected by will_link. _holder = declared_holder; @@ -150,8 +150,8 @@ ciField::ciField(fieldDescriptor *fd): _known_to_link_with(NULL) { // Get the field's name, signature, and type. ciEnv* env = CURRENT_ENV; - _name = env->get_object(fd->name())->as_symbol(); - _signature = env->get_object(fd->signature())->as_symbol(); + _name = env->get_symbol(fd->name()); + _signature = env->get_symbol(fd->signature()); BasicType field_type = fd->field_type(); diff --git a/hotspot/src/share/vm/ci/ciInstanceKlass.cpp b/hotspot/src/share/vm/ci/ciInstanceKlass.cpp index 8b9eeafd0d0..412f54f6e7f 100644 --- a/hotspot/src/share/vm/ci/ciInstanceKlass.cpp +++ b/hotspot/src/share/vm/ci/ciInstanceKlass.cpp @@ -380,7 +380,7 @@ ciField* ciInstanceKlass::get_field_by_name(ciSymbol* name, ciSymbol* signature, VM_ENTRY_MARK; instanceKlass* k = get_instanceKlass(); fieldDescriptor fd; - klassOop def = k->find_field(name->get_symbolOop(), signature->get_symbolOop(), is_static, &fd); + klassOop def = k->find_field(name->get_symbol(), signature->get_symbol(), is_static, &fd); if (def == NULL) { return NULL; } @@ -541,8 +541,8 @@ ciInstanceKlass::compute_nonstatic_fields_impl(GrowableArray* ciMethod* ciInstanceKlass::find_method(ciSymbol* name, ciSymbol* signature) { VM_ENTRY_MARK; instanceKlass* k = get_instanceKlass(); - symbolOop name_sym = name->get_symbolOop(); - symbolOop sig_sym= signature->get_symbolOop(); + Symbol* name_sym = name->get_symbol(); + Symbol* sig_sym= signature->get_symbol(); methodOop m = k->find_method(name_sym, sig_sym); if (m == NULL) return NULL; diff --git a/hotspot/src/share/vm/ci/ciKlass.cpp b/hotspot/src/share/vm/ci/ciKlass.cpp index 1adf63fd1e5..03aeff4f265 100644 --- a/hotspot/src/share/vm/ci/ciKlass.cpp +++ b/hotspot/src/share/vm/ci/ciKlass.cpp @@ -39,9 +39,9 @@ ciKlass::ciKlass(KlassHandle h_k) : ciType(h_k) { assert(get_oop()->is_klass(), "wrong type"); Klass* k = get_Klass(); _layout_helper = k->layout_helper(); - symbolOop klass_name = k->name(); + Symbol* klass_name = k->name(); assert(klass_name != NULL, "wrong ciKlass constructor"); - _name = CURRENT_ENV->get_object(klass_name)->as_symbol(); + _name = CURRENT_ENV->get_symbol(klass_name); } // ------------------------------------------------------------------ diff --git a/hotspot/src/share/vm/ci/ciMethod.cpp b/hotspot/src/share/vm/ci/ciMethod.cpp index d1d86923f41..1805cfc26a4 100644 --- a/hotspot/src/share/vm/ci/ciMethod.cpp +++ b/hotspot/src/share/vm/ci/ciMethod.cpp @@ -122,9 +122,9 @@ ciMethod::ciMethod(methodHandle h_m) : ciObject(h_m) { // generating _signature may allow GC and therefore move m. // These fields are always filled in. - _name = env->get_object(h_m()->name())->as_symbol(); + _name = env->get_symbol(h_m()->name()); _holder = env->get_object(h_m()->method_holder())->as_instance_klass(); - ciSymbol* sig_symbol = env->get_object(h_m()->signature())->as_symbol(); + ciSymbol* sig_symbol = env->get_symbol(h_m()->signature()); _signature = new (env->arena()) ciSignature(_holder, sig_symbol); _method_data = NULL; // Take a snapshot of these values, so they will be commensurate with the MDO. @@ -649,8 +649,8 @@ ciMethod* ciMethod::resolve_invoke(ciKlass* caller, ciKlass* exact_receiver) { KlassHandle caller_klass (THREAD, caller->get_klassOop()); KlassHandle h_recv (THREAD, exact_receiver->get_klassOop()); KlassHandle h_resolved (THREAD, holder()->get_klassOop()); - symbolHandle h_name (THREAD, name()->get_symbolOop()); - symbolHandle h_signature (THREAD, signature()->get_symbolOop()); + Symbol* h_name = name()->get_symbol(); + Symbol* h_signature = signature()->get_symbol(); methodHandle m; // Only do exact lookup if receiver klass has been linked. Otherwise, @@ -702,8 +702,8 @@ int ciMethod::resolve_vtable_index(ciKlass* caller, ciKlass* receiver) { KlassHandle caller_klass (THREAD, caller->get_klassOop()); KlassHandle h_recv (THREAD, receiver->get_klassOop()); - symbolHandle h_name (THREAD, name()->get_symbolOop()); - symbolHandle h_signature (THREAD, signature()->get_symbolOop()); + Symbol* h_name = name()->get_symbol(); + Symbol* h_signature = signature()->get_symbol(); vtable_index = LinkResolver::resolve_virtual_vtable_index(h_recv, h_recv, h_name, h_signature, caller_klass); if (vtable_index == methodOopDesc::nonvirtual_vtable_index) { diff --git a/hotspot/src/share/vm/ci/ciObjArrayKlass.cpp b/hotspot/src/share/vm/ci/ciObjArrayKlass.cpp index c04d31b4df4..c5cd7009c47 100644 --- a/hotspot/src/share/vm/ci/ciObjArrayKlass.cpp +++ b/hotspot/src/share/vm/ci/ciObjArrayKlass.cpp @@ -110,7 +110,7 @@ ciSymbol* ciObjArrayKlass::construct_array_name(ciSymbol* element_name, EXCEPTION_CONTEXT; int element_len = element_name->utf8_length(); - symbolOop base_name_sym = element_name->get_symbolOop(); + Symbol* base_name_sym = element_name->get_symbol(); char* name; if (base_name_sym->byte_at(0) == '[' || diff --git a/hotspot/src/share/vm/ci/ciObject.hpp b/hotspot/src/share/vm/ci/ciObject.hpp index e3a85a1235c..0a93d9f1149 100644 --- a/hotspot/src/share/vm/ci/ciObject.hpp +++ b/hotspot/src/share/vm/ci/ciObject.hpp @@ -268,10 +268,6 @@ public: assert(is_type_array_klass(), "bad cast"); return (ciTypeArrayKlass*)this; } - ciSymbolKlass* as_symbol_klass() { - assert(is_symbol_klass(), "bad cast"); - return (ciSymbolKlass*)this; - } ciKlassKlass* as_klass_klass() { assert(is_klass_klass(), "bad cast"); return (ciKlassKlass*)this; diff --git a/hotspot/src/share/vm/ci/ciObjectFactory.cpp b/hotspot/src/share/vm/ci/ciObjectFactory.cpp index abc5408af49..9956d323ce8 100644 --- a/hotspot/src/share/vm/ci/ciObjectFactory.cpp +++ b/hotspot/src/share/vm/ci/ciObjectFactory.cpp @@ -38,7 +38,6 @@ #include "ci/ciObjArrayKlassKlass.hpp" #include "ci/ciObjectFactory.hpp" #include "ci/ciSymbol.hpp" -#include "ci/ciSymbolKlass.hpp" #include "ci/ciTypeArray.hpp" #include "ci/ciTypeArrayKlass.hpp" #include "ci/ciTypeArrayKlassKlass.hpp" @@ -98,6 +97,8 @@ ciObjectFactory::ciObjectFactory(Arena* arena, _unloaded_instances = new (arena) GrowableArray(arena, 4, 0, NULL); _return_addresses = new (arena) GrowableArray(arena, 8, 0, NULL); + + _symbols = new (arena) GrowableArray(arena, 100, 0, NULL); } // ------------------------------------------------------------------ @@ -127,19 +128,19 @@ void ciObjectFactory::init_shared_objects() { // Create the shared symbols, but not in _shared_ci_objects. int i; for (i = vmSymbols::FIRST_SID; i < vmSymbols::SID_LIMIT; i++) { - symbolHandle sym_handle = vmSymbolHandles::symbol_handle_at((vmSymbols::SID) i); - assert(vmSymbols::find_sid(sym_handle()) == i, "1-1 mapping"); - ciSymbol* sym = new (_arena) ciSymbol(sym_handle, (vmSymbols::SID) i); + Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i); + assert(vmSymbols::find_sid(vmsym) == i, "1-1 mapping"); + ciSymbol* sym = new (_arena) ciSymbol(vmsym, (vmSymbols::SID) i); init_ident_of(sym); _shared_ci_symbols[i] = sym; } #ifdef ASSERT for (i = vmSymbols::FIRST_SID; i < vmSymbols::SID_LIMIT; i++) { - symbolHandle sym_handle = vmSymbolHandles::symbol_handle_at((vmSymbols::SID) i); + Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i); ciSymbol* sym = vm_symbol_at((vmSymbols::SID) i); - assert(sym->get_oop() == sym_handle(), "oop must match"); + assert(sym->get_symbol() == vmsym, "oop must match"); } - assert(ciSymbol::void_class_signature()->get_oop() == vmSymbols::void_class_signature(), "spot check"); + assert(ciSymbol::void_class_signature()->get_symbol() == vmSymbols::void_class_signature(), "spot check"); #endif } @@ -157,8 +158,6 @@ void ciObjectFactory::init_shared_objects() { init_ident_of(ciEnv::_null_object_instance); ciEnv::_method_klass_instance = get(Universe::methodKlassObj())->as_method_klass(); - ciEnv::_symbol_klass_instance = - get(Universe::symbolKlassObj())->as_symbol_klass(); ciEnv::_klass_klass_instance = get(Universe::klassKlassObj())->as_klass_klass(); ciEnv::_instance_klass_klass_instance = @@ -188,7 +187,7 @@ void ciObjectFactory::init_shared_objects() { } } - ciEnv::_unloaded_cisymbol = (ciSymbol*) ciObjectFactory::get(vmSymbols::dummy_symbol_oop()); + ciEnv::_unloaded_cisymbol = ciObjectFactory::get_symbol(vmSymbols::dummy_symbol()); // Create dummy instanceKlass and objArrayKlass object and assign them idents ciEnv::_unloaded_ciinstance_klass = new (_arena) ciInstanceKlass(ciEnv::_unloaded_cisymbol, NULL, NULL); init_ident_of(ciEnv::_unloaded_ciinstance_klass); @@ -218,6 +217,30 @@ void ciObjectFactory::init_shared_objects() { _shared_ci_objects = _ci_objects; } + +ciSymbol* ciObjectFactory::get_symbol(Symbol* key) { + vmSymbols::SID sid = vmSymbols::find_sid(key); + if (sid != vmSymbols::NO_SID) { + // do not pollute the main cache with it + return vm_symbol_at(sid); + } + + assert(vmSymbols::find_sid(key) == vmSymbols::NO_SID, ""); + ciSymbol* s = new (arena()) ciSymbol(key, vmSymbols::NO_SID); + _symbols->push(s); + return s; +} + +// Decrement the refcount when done on symbols referenced by this compilation. +void ciObjectFactory::remove_symbols() { + for (int i = 0; i < _symbols->length(); i++) { + ciSymbol* s = _symbols->at(i); + s->get_symbol()->decrement_refcount(); + } + // Since _symbols is resource allocated we're not allowed to delete it + // but it'll go away just the same. +} + // ------------------------------------------------------------------ // ciObjectFactory::get // @@ -255,15 +278,6 @@ ciObject* ciObjectFactory::get(oop key) { return bucket->object(); } - // Check in the shared symbol area before putting it in the list. - if (key->is_symbol()) { - vmSymbols::SID sid = vmSymbols::find_sid((symbolOop)key); - if (sid != vmSymbols::NO_SID) { - // do not pollute the main cache with it - return vm_symbol_at(sid); - } - } - // The ciObject does not yet exist. Create it and insert it // into the cache. Handle keyHandle(key); @@ -297,11 +311,7 @@ ciObject* ciObjectFactory::get(oop key) { ciObject* ciObjectFactory::create_new_object(oop o) { EXCEPTION_CONTEXT; - if (o->is_symbol()) { - symbolHandle h_o(THREAD, (symbolOop)o); - assert(vmSymbols::find_sid(h_o()) == vmSymbols::NO_SID, ""); - return new (arena()) ciSymbol(h_o, vmSymbols::NO_SID); - } else if (o->is_klass()) { + if (o->is_klass()) { KlassHandle h_k(THREAD, (klassOop)o); Klass* k = ((klassOop)o)->klass_part(); if (k->oop_is_instance()) { @@ -312,8 +322,6 @@ ciObject* ciObjectFactory::create_new_object(oop o) { return new (arena()) ciTypeArrayKlass(h_k); } else if (k->oop_is_method()) { return new (arena()) ciMethodKlass(h_k); - } else if (k->oop_is_symbol()) { - return new (arena()) ciSymbolKlass(h_k); } else if (k->oop_is_klass()) { if (k->oop_is_objArrayKlass()) { return new (arena()) ciObjArrayKlassKlass(h_k); @@ -426,22 +434,20 @@ ciKlass* ciObjectFactory::get_unloaded_klass(ciKlass* accessing_klass, // unloaded instanceKlass. Deal with both. if (name->byte_at(0) == '[') { // Decompose the name.' - jint dimension = 0; - symbolOop element_name = NULL; - BasicType element_type= FieldType::get_array_info(name->get_symbolOop(), - &dimension, - &element_name, - THREAD); + FieldArrayInfo fd; + BasicType element_type = FieldType::get_array_info(name->get_symbol(), + fd, THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_EXCEPTION; CURRENT_THREAD_ENV->record_out_of_memory_failure(); return ciEnv::_unloaded_ciobjarrayklass; } + int dimension = fd.dimension(); assert(element_type != T_ARRAY, "unsuccessful decomposition"); ciKlass* element_klass = NULL; if (element_type == T_OBJECT) { ciEnv *env = CURRENT_THREAD_ENV; - ciSymbol* ci_name = env->get_object(element_name)->as_symbol(); + ciSymbol* ci_name = env->get_symbol(fd.object_key()); element_klass = env->get_klass_by_name(accessing_klass, ci_name, false)->as_instance_klass(); } else { @@ -573,6 +579,10 @@ void ciObjectFactory::init_ident_of(ciObject* obj) { obj->set_ident(_next_ident++); } +void ciObjectFactory::init_ident_of(ciSymbol* obj) { + obj->set_ident(_next_ident++); +} + // ------------------------------------------------------------------ // ciObjectFactory::find diff --git a/hotspot/src/share/vm/ci/ciObjectFactory.hpp b/hotspot/src/share/vm/ci/ciObjectFactory.hpp index 280f7214491..50f585f47a9 100644 --- a/hotspot/src/share/vm/ci/ciObjectFactory.hpp +++ b/hotspot/src/share/vm/ci/ciObjectFactory.hpp @@ -48,6 +48,7 @@ private: GrowableArray* _unloaded_klasses; GrowableArray* _unloaded_instances; GrowableArray* _return_addresses; + GrowableArray* _symbols; // keep list of symbols created int _next_ident; public: @@ -76,6 +77,7 @@ private: void insert_non_perm(NonPermObject* &where, oop key, ciObject* obj); void init_ident_of(ciObject* obj); + void init_ident_of(ciSymbol* obj); Arena* arena() { return _arena; } @@ -88,13 +90,15 @@ public: static void initialize(); void init_shared_objects(); + void remove_symbols(); ciObjectFactory(Arena* arena, int expected_size); - // Get the ciObject corresponding to some oop. ciObject* get(oop key); + ciSymbol* get_symbol(Symbol* key); + // Get the ciSymbol corresponding to one of the vmSymbols. static ciSymbol* vm_symbol_at(int index); diff --git a/hotspot/src/share/vm/ci/ciSignature.cpp b/hotspot/src/share/vm/ci/ciSignature.cpp index 738e28d7cac..b68f3f8caf2 100644 --- a/hotspot/src/share/vm/ci/ciSignature.cpp +++ b/hotspot/src/share/vm/ci/ciSignature.cpp @@ -47,7 +47,8 @@ ciSignature::ciSignature(ciKlass* accessing_klass, ciSymbol* symbol) { int size = 0; int count = 0; - symbolHandle sh (THREAD, symbol->get_symbolOop()); + ResourceMark rm(THREAD); + Symbol* sh = symbol->get_symbol(); SignatureStream ss(sh); for (; ; ss.next()) { // Process one element of the signature @@ -55,14 +56,14 @@ ciSignature::ciSignature(ciKlass* accessing_klass, ciSymbol* symbol) { if (!ss.is_object()) { type = ciType::make(ss.type()); } else { - symbolOop name = ss.as_symbol(THREAD); + Symbol* name = ss.as_symbol(THREAD); if (HAS_PENDING_EXCEPTION) { type = ss.is_array() ? (ciType*)ciEnv::unloaded_ciobjarrayklass() : (ciType*)ciEnv::unloaded_ciinstance_klass(); env->record_out_of_memory_failure(); CLEAR_PENDING_EXCEPTION; } else { - ciSymbol* klass_name = env->get_object(name)->as_symbol(); + ciSymbol* klass_name = env->get_symbol(name); type = env->get_klass_by_name_impl(_accessing_klass, klass_name, false); } } diff --git a/hotspot/src/share/vm/ci/ciSignature.hpp b/hotspot/src/share/vm/ci/ciSignature.hpp index 700daaad603..5ac1170eeee 100644 --- a/hotspot/src/share/vm/ci/ciSignature.hpp +++ b/hotspot/src/share/vm/ci/ciSignature.hpp @@ -48,7 +48,7 @@ private: void get_all_klasses(); - symbolOop get_symbolOop() const { return _symbol->get_symbolOop(); } + Symbol* get_symbol() const { return _symbol->get_symbol(); } public: ciSymbol* as_symbol() const { return _symbol; } diff --git a/hotspot/src/share/vm/ci/ciSymbol.cpp b/hotspot/src/share/vm/ci/ciSymbol.cpp index 08cc704b747..e1fe49f1e75 100644 --- a/hotspot/src/share/vm/ci/ciSymbol.cpp +++ b/hotspot/src/share/vm/ci/ciSymbol.cpp @@ -30,23 +30,27 @@ // ------------------------------------------------------------------ // ciSymbol::ciSymbol // -// Preallocated handle variant. Used with handles from vmSymboHandles. -ciSymbol::ciSymbol(symbolHandle h_s, vmSymbols::SID sid) - : ciObject(h_s), _sid(sid) +// Preallocated symbol variant. Used with symbols from vmSymbols. +ciSymbol::ciSymbol(Symbol* s, vmSymbols::SID sid) + : _symbol(s), _sid(sid) { + assert(_symbol != NULL, "adding null symbol"); + _symbol->increment_refcount(); // increment ref count assert(sid_ok(), "must be in vmSymbols"); } // Normal case for non-famous symbols. -ciSymbol::ciSymbol(symbolOop s) - : ciObject(s), _sid(vmSymbols::NO_SID) +ciSymbol::ciSymbol(Symbol* s) + : _symbol(s), _sid(vmSymbols::NO_SID) { + assert(_symbol != NULL, "adding null symbol"); + _symbol->increment_refcount(); // increment ref count assert(sid_ok(), "must not be in vmSymbols"); } // ciSymbol // -// This class represents a symbolOop in the HotSpot virtual +// This class represents a Symbol* in the HotSpot virtual // machine. // ------------------------------------------------------------------ @@ -55,20 +59,20 @@ ciSymbol::ciSymbol(symbolOop s) // The text of the symbol as a null-terminated C string. const char* ciSymbol::as_utf8() { VM_QUICK_ENTRY_MARK; - symbolOop s = get_symbolOop(); + Symbol* s = get_symbol(); return s->as_utf8(); } // ------------------------------------------------------------------ // ciSymbol::base -jbyte* ciSymbol::base() { - GUARDED_VM_ENTRY(return get_symbolOop()->base();) +const jbyte* ciSymbol::base() { + GUARDED_VM_ENTRY(return get_symbol()->base();) } // ------------------------------------------------------------------ // ciSymbol::byte_at int ciSymbol::byte_at(int i) { - GUARDED_VM_ENTRY(return get_symbolOop()->byte_at(i);) + GUARDED_VM_ENTRY(return get_symbol()->byte_at(i);) } // ------------------------------------------------------------------ @@ -76,7 +80,7 @@ int ciSymbol::byte_at(int i) { // // Tests if the symbol starts with the given prefix. bool ciSymbol::starts_with(const char* prefix, int len) const { - GUARDED_VM_ENTRY(return get_symbolOop()->starts_with(prefix, len);) + GUARDED_VM_ENTRY(return get_symbol()->starts_with(prefix, len);) } // ------------------------------------------------------------------ @@ -84,13 +88,13 @@ bool ciSymbol::starts_with(const char* prefix, int len) const { // // Determines where the symbol contains the given substring. int ciSymbol::index_of_at(int i, const char* str, int len) const { - GUARDED_VM_ENTRY(return get_symbolOop()->index_of_at(i, str, len);) + GUARDED_VM_ENTRY(return get_symbol()->index_of_at(i, str, len);) } // ------------------------------------------------------------------ // ciSymbol::utf8_length int ciSymbol::utf8_length() { - GUARDED_VM_ENTRY(return get_symbolOop()->utf8_length();) + GUARDED_VM_ENTRY(return get_symbol()->utf8_length();) } // ------------------------------------------------------------------ @@ -107,7 +111,7 @@ void ciSymbol::print_impl(outputStream* st) { // // Print the value of this symbol on an outputStream void ciSymbol::print_symbol_on(outputStream *st) { - GUARDED_VM_ENTRY(get_symbolOop()->print_symbol_on(st);) + GUARDED_VM_ENTRY(get_symbol()->print_symbol_on(st);) } // ------------------------------------------------------------------ @@ -116,15 +120,13 @@ void ciSymbol::print_symbol_on(outputStream *st) { // Make a ciSymbol from a C string (implementation). ciSymbol* ciSymbol::make_impl(const char* s) { EXCEPTION_CONTEXT; - // For some reason, oopFactory::new_symbol doesn't declare its - // char* argument as const. - symbolOop sym = oopFactory::new_symbol((char*)s, (int)strlen(s), THREAD); + TempNewSymbol sym = SymbolTable::new_symbol(s, THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_EXCEPTION; CURRENT_THREAD_ENV->record_out_of_memory_failure(); return ciEnv::_unloaded_cisymbol; } - return CURRENT_THREAD_ENV->get_object(sym)->as_symbol(); + return CURRENT_THREAD_ENV->get_symbol(sym); } // ------------------------------------------------------------------ diff --git a/hotspot/src/share/vm/ci/ciSymbol.hpp b/hotspot/src/share/vm/ci/ciSymbol.hpp index 6664934a2e7..ec2a588cbf1 100644 --- a/hotspot/src/share/vm/ci/ciSymbol.hpp +++ b/hotspot/src/share/vm/ci/ciSymbol.hpp @@ -28,15 +28,18 @@ #include "ci/ciObject.hpp" #include "ci/ciObjectFactory.hpp" #include "classfile/vmSymbols.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" // ciSymbol // -// This class represents a symbolOop in the HotSpot virtual +// This class represents a Symbol* in the HotSpot virtual // machine. -class ciSymbol : public ciObject { +class ciSymbol : public ResourceObj { + Symbol* _symbol; + uint _ident; + CI_PACKAGE_ACCESS - // These friends all make direct use of get_symbolOop: + // These friends all make direct use of get_symbol: friend class ciEnv; friend class ciInstanceKlass; friend class ciSignature; @@ -45,24 +48,28 @@ class ciSymbol : public ciObject { private: const vmSymbols::SID _sid; - DEBUG_ONLY( bool sid_ok() { return vmSymbols::find_sid(get_symbolOop()) == _sid; } ) + DEBUG_ONLY( bool sid_ok() { return vmSymbols::find_sid(get_symbol()) == _sid; } ) - ciSymbol(symbolOop s); // normal case, for symbols not mentioned in vmSymbols - ciSymbol(symbolHandle s, vmSymbols::SID sid); // for use with vmSymbolHandles + ciSymbol(Symbol* s); // normal case, for symbols not mentioned in vmSymbols + ciSymbol(Symbol* s, vmSymbols::SID sid); // for use with vmSymbols - symbolOop get_symbolOop() const { return (symbolOop)get_oop(); } + Symbol* get_symbol() const { return _symbol; } const char* type_string() { return "ciSymbol"; } void print_impl(outputStream* st); - // This is public in symbolOop but private here, because the base can move: - jbyte* base(); + // This is public in Symbol* but private here, because the base can move: + const jbyte* base(); // Make a ciSymbol from a C string (implementation). static ciSymbol* make_impl(const char* s); + void set_ident(uint id) { _ident = id; } public: + // A number unique to this object. + uint ident() { return _ident; } + // The enumeration ID from vmSymbols, or vmSymbols::NO_SID if none. vmSymbols::SID sid() const { return _sid; } @@ -79,9 +86,6 @@ public: // Determines where the symbol contains the given substring. int index_of_at(int i, const char* str, int len) const; - // What kind of ciObject is this? - bool is_symbol() { return true; } - void print_symbol_on(outputStream* st); void print_symbol() { print_symbol_on(tty); @@ -96,6 +100,13 @@ public: static ciSymbol* name() { return ciObjectFactory::vm_symbol_at(vmSymbols::VM_SYMBOL_ENUM_NAME(name)); } VM_SYMBOLS_DO(CI_SYMBOL_DECLARE, CI_SYMBOL_DECLARE) #undef CI_SYMBOL_DECLARE + + void print() { + _symbol->print(); + } + + // Are two ciSymbols equal? + bool equals(ciSymbol* obj) { return this->_symbol == obj->get_symbol(); } }; #endif // SHARE_VM_CI_CISYMBOL_HPP diff --git a/hotspot/src/share/vm/ci/ciSymbolKlass.hpp b/hotspot/src/share/vm/ci/ciSymbolKlass.hpp deleted file mode 100644 index 604a7be1884..00000000000 --- a/hotspot/src/share/vm/ci/ciSymbolKlass.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 1999, 2010, 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. - * - */ - -#ifndef SHARE_VM_CI_CISYMBOLKLASS_HPP -#define SHARE_VM_CI_CISYMBOLKLASS_HPP - -#include "ci/ciKlass.hpp" -#include "ci/ciSymbol.hpp" - -// ciSymbolKlass -// -// This class represents a klassOop in the HotSpot virtual machine -// whose Klass part in a symbolKlass. Although, in the VM -// Klass hierarchy, symbolKlass is a direct subclass of typeArrayKlass, -// we do not model this relationship in the ciObject hierarchy -- the -// subclassing is used to share implementation and is not of note -// to compiler writers. -class ciSymbolKlass : public ciKlass { - CI_PACKAGE_ACCESS - -protected: - ciSymbolKlass(KlassHandle h_k) - : ciKlass(h_k, ciSymbol::make("unique_symbolKlass")) { - assert(get_Klass()->oop_is_symbol(), "wrong type"); - } - - symbolKlass* get_symbolKlass() { return (symbolKlass*)get_Klass(); } - - const char* type_string() { return "ciSymbolKlass"; } - -public: - // What kind of ciObject is this? - bool is_symbol_klass() { return true; } - - // Return the distinguished ciSymbolKlass instance. - static ciSymbolKlass* make(); -}; - -#endif // SHARE_VM_CI_CISYMBOLKLASS_HPP diff --git a/hotspot/src/share/vm/ci/compilerInterface.hpp b/hotspot/src/share/vm/ci/compilerInterface.hpp index b5db53c0e42..b3a7d75fc08 100644 --- a/hotspot/src/share/vm/ci/compilerInterface.hpp +++ b/hotspot/src/share/vm/ci/compilerInterface.hpp @@ -49,7 +49,6 @@ #include "ci/ciSignature.hpp" #include "ci/ciStreams.hpp" #include "ci/ciSymbol.hpp" -#include "ci/ciSymbolKlass.hpp" #include "ci/ciTypeArray.hpp" #include "ci/ciTypeArrayKlass.hpp" #include "ci/ciTypeArrayKlassKlass.hpp" diff --git a/hotspot/src/share/vm/classfile/classFileError.cpp b/hotspot/src/share/vm/classfile/classFileError.cpp index 80aa37af9fb..f72ec11996d 100644 --- a/hotspot/src/share/vm/classfile/classFileError.cpp +++ b/hotspot/src/share/vm/classfile/classFileError.cpp @@ -31,25 +31,25 @@ void ClassFileParser::classfile_parse_error(const char* msg, TRAPS) { ResourceMark rm(THREAD); - Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbolHandles::java_lang_ClassFormatError(), + Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbols::java_lang_ClassFormatError(), msg, _class_name->as_C_string()); } void ClassFileParser::classfile_parse_error(const char* msg, int index, TRAPS) { ResourceMark rm(THREAD); - Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbolHandles::java_lang_ClassFormatError(), + Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbols::java_lang_ClassFormatError(), msg, index, _class_name->as_C_string()); } void ClassFileParser::classfile_parse_error(const char* msg, const char *name, TRAPS) { ResourceMark rm(THREAD); - Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbolHandles::java_lang_ClassFormatError(), + Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbols::java_lang_ClassFormatError(), msg, name, _class_name->as_C_string()); } void ClassFileParser::classfile_parse_error(const char* msg, int index, const char *name, TRAPS) { ResourceMark rm(THREAD); - Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbolHandles::java_lang_ClassFormatError(), + Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbols::java_lang_ClassFormatError(), msg, index, name, _class_name->as_C_string()); } @@ -57,7 +57,7 @@ void StackMapStream::stackmap_format_error(const char* msg, TRAPS) { ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_ClassFormatError(), + vmSymbols::java_lang_ClassFormatError(), "StackMapTable format error: %s", msg ); } diff --git a/hotspot/src/share/vm/classfile/classFileParser.cpp b/hotspot/src/share/vm/classfile/classFileParser.cpp index 3779fc7d67a..b71a45c804f 100644 --- a/hotspot/src/share/vm/classfile/classFileParser.cpp +++ b/hotspot/src/share/vm/classfile/classFileParser.cpp @@ -41,7 +41,7 @@ #include "oops/klassOop.hpp" #include "oops/klassVtable.hpp" #include "oops/methodOop.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "prims/jvmtiExport.hpp" #include "runtime/javaCalls.hpp" #include "runtime/perfData.hpp" @@ -267,14 +267,14 @@ void ClassFileParser::parse_constant_pool_entries(constantPoolHandle cp, int len } unsigned int hash; - symbolOop result = SymbolTable::lookup_only((char*)utf8_buffer, utf8_length, hash); + Symbol* result = SymbolTable::lookup_only((char*)utf8_buffer, utf8_length, hash); if (result == NULL) { names[names_count] = (char*)utf8_buffer; lengths[names_count] = utf8_length; indices[names_count] = index; hashValues[names_count++] = hash; if (names_count == SymbolTable::symbol_alloc_batch_size) { - oopFactory::new_symbols(cp, names_count, names, lengths, indices, hashValues, CHECK); + SymbolTable::new_symbols(cp, names_count, names, lengths, indices, hashValues, CHECK); names_count = 0; } } else { @@ -291,7 +291,7 @@ void ClassFileParser::parse_constant_pool_entries(constantPoolHandle cp, int len // Allocate the remaining symbols if (names_count > 0) { - oopFactory::new_symbols(cp, names_count, names, lengths, indices, hashValues, CHECK); + SymbolTable::new_symbols(cp, names_count, names, lengths, indices, hashValues, CHECK); } // Copy _current pointer of local copy back to stream(). @@ -301,6 +301,23 @@ void ClassFileParser::parse_constant_pool_entries(constantPoolHandle cp, int len cfs0->set_current(cfs1.current()); } +// This class unreferences constant pool symbols if an error has occurred +// while parsing the class before it is assigned into the class. +// If it gets an error after that it is unloaded and the constant pool will +// be cleaned up then. +class ConstantPoolCleaner : public StackObj { + constantPoolHandle _cphandle; + bool _in_error; + public: + ConstantPoolCleaner(constantPoolHandle cp) : _cphandle(cp), _in_error(true) {} + ~ConstantPoolCleaner() { + if (_in_error && _cphandle.not_null()) { + _cphandle->unreference_symbols(); + } + } + void set_in_error(bool clean) { _in_error = clean; } +}; + bool inline valid_cp_range(int index, int length) { return (index > 0 && index < length); } constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) { @@ -319,6 +336,7 @@ constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) { constantPoolHandle cp (THREAD, constant_pool); cp->set_partially_loaded(); // Enables heap verify to work on partial constantPoolOops + ConstantPoolCleaner cp_in_error(cp); // set constant pool to be cleaned up. // parsing constant pool entries parse_constant_pool_entries(cp, length, CHECK_(nullHandle)); @@ -411,7 +429,7 @@ constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) { cp->tag_at(string_index).is_utf8(), "Invalid constant pool index %u in class file %s", string_index, CHECK_(nullHandle)); - symbolOop sym = cp->symbol_at(string_index); + Symbol* sym = cp->symbol_at(string_index); cp->unresolved_string_at_put(index, sym); } break; @@ -526,6 +544,7 @@ constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) { } if (!_need_verify) { + cp_in_error.set_in_error(false); return cp; } @@ -535,7 +554,7 @@ constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) { jbyte tag = cp->tag_at(index).value(); switch (tag) { case JVM_CONSTANT_UnresolvedClass: { - symbolHandle class_name(THREAD, cp->unresolved_klass_at(index)); + Symbol* class_name = cp->unresolved_klass_at(index); // check the name, even if _cp_patches will overwrite it verify_legal_class_name(class_name, CHECK_(nullHandle)); break; @@ -544,8 +563,8 @@ constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) { if (_need_verify && _major_version >= JAVA_7_VERSION) { int sig_index = cp->signature_ref_index_at(index); int name_index = cp->name_ref_index_at(index); - symbolHandle name(THREAD, cp->symbol_at(name_index)); - symbolHandle sig(THREAD, cp->symbol_at(sig_index)); + Symbol* name = cp->symbol_at(name_index); + Symbol* sig = cp->symbol_at(sig_index); if (sig->byte_at(0) == JVM_SIGNATURE_FUNC) { verify_legal_method_signature(name, sig, CHECK_(nullHandle)); } else { @@ -562,8 +581,8 @@ constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) { int name_ref_index = cp->name_ref_index_at(name_and_type_ref_index); // already verified to be utf8 int signature_ref_index = cp->signature_ref_index_at(name_and_type_ref_index); - symbolHandle name(THREAD, cp->symbol_at(name_ref_index)); - symbolHandle signature(THREAD, cp->symbol_at(signature_ref_index)); + Symbol* name = cp->symbol_at(name_ref_index); + Symbol* signature = cp->symbol_at(signature_ref_index); if (tag == JVM_CONSTANT_Fieldref) { verify_legal_field_name(name, CHECK_(nullHandle)); if (_need_verify && _major_version >= JAVA_7_VERSION) { @@ -590,11 +609,11 @@ constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) { } if (tag == JVM_CONSTANT_Methodref) { // 4509014: If a class method name begins with '<', it must be "". - assert(!name.is_null(), "method name in constant pool is null"); + assert(name != NULL, "method name in constant pool is null"); unsigned int name_len = name->utf8_length(); assert(name_len > 0, "bad method name"); // already verified as legal name if (name->byte_at(0) == '<') { - if (name() != vmSymbols::object_initializer_name()) { + if (name != vmSymbols::object_initializer_name()) { classfile_parse_error( "Bad method name at constant pool index %u in class file %s", name_ref_index, CHECK_(nullHandle)); @@ -615,15 +634,15 @@ constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) { { int name_and_type_ref_index = cp->name_and_type_ref_index_at(ref_index); int name_ref_index = cp->name_ref_index_at(name_and_type_ref_index); - symbolHandle name(THREAD, cp->symbol_at(name_ref_index)); + Symbol* name = cp->symbol_at(name_ref_index); if (ref_kind == JVM_REF_newInvokeSpecial) { - if (name() != vmSymbols::object_initializer_name()) { + if (name != vmSymbols::object_initializer_name()) { classfile_parse_error( "Bad constructor name at constant pool index %u in class file %s", name_ref_index, CHECK_(nullHandle)); } } else { - if (name() == vmSymbols::object_initializer_name()) { + if (name == vmSymbols::object_initializer_name()) { classfile_parse_error( "Bad method name at constant pool index %u in class file %s", name_ref_index, CHECK_(nullHandle)); @@ -636,14 +655,18 @@ constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) { break; } case JVM_CONSTANT_MethodType: { - symbolHandle no_name = vmSymbolHandles::type_name(); // place holder - symbolHandle signature(THREAD, cp->method_type_signature_at(index)); + Symbol* no_name = vmSymbols::type_name(); // place holder + Symbol* signature = cp->method_type_signature_at(index); verify_legal_method_signature(no_name, signature, CHECK_(nullHandle)); break; } + case JVM_CONSTANT_Utf8: { + assert(cp->symbol_at(index)->refcount() != 0, "count corrupted"); + } } // end of switch } // end of for + cp_in_error.set_in_error(false); return cp; } @@ -665,8 +688,8 @@ void ClassFileParser::patch_constant_pool(constantPoolHandle cp, int index, Hand guarantee_property(java_lang_String::is_instance(patch()), "Illegal class patch at %d in class file %s", index, CHECK); - symbolHandle name = java_lang_String::as_symbol(patch(), CHECK); - cp->unresolved_klass_at_put(index, name()); + Symbol* name = java_lang_String::as_symbol(patch(), CHECK); + cp->unresolved_klass_at_put(index, name); } break; @@ -717,15 +740,15 @@ void ClassFileParser::patch_constant_pool(constantPoolHandle cp, int index, Hand class NameSigHash: public ResourceObj { public: - symbolOop _name; // name - symbolOop _sig; // signature + Symbol* _name; // name + Symbol* _sig; // signature NameSigHash* _next; // Next entry in hash table }; #define HASH_ROW_SIZE 256 -unsigned int hash(symbolOop name, symbolOop sig) { +unsigned int hash(Symbol* name, Symbol* sig) { unsigned int raw_hash = 0; raw_hash += ((unsigned int)(uintptr_t)name) >> (LogHeapWordSize + 2); raw_hash += ((unsigned int)(uintptr_t)sig) >> LogHeapWordSize; @@ -742,8 +765,8 @@ void initialize_hashtable(NameSigHash** table) { // Return true if no duplicate is found. And name/sig is added as a new entry in table. // The old format checker uses heap sort to find duplicates. // NOTE: caller should guarantee that GC doesn't happen during the life cycle -// of table since we don't expect symbolOop's to move. -bool put_after_lookup(symbolOop name, symbolOop sig, NameSigHash** table) { +// of table since we don't expect Symbol*'s to move. +bool put_after_lookup(Symbol* name, Symbol* sig, NameSigHash** table) { assert(name != NULL, "name in constant pool is NULL"); // First lookup for duplicates @@ -773,7 +796,7 @@ objArrayHandle ClassFileParser::parse_interfaces(constantPoolHandle cp, int length, Handle class_loader, Handle protection_domain, - symbolHandle class_name, + Symbol* class_name, TRAPS) { ClassFileStream* cfs = stream(); assert(length > 0, "only called for length>0"); @@ -793,7 +816,7 @@ objArrayHandle ClassFileParser::parse_interfaces(constantPoolHandle cp, if (cp->tag_at(interface_index).is_klass()) { interf = KlassHandle(THREAD, cp->resolved_klass_at(interface_index)); } else { - symbolHandle unresolved_klass (THREAD, cp->klass_name_at(interface_index)); + Symbol* unresolved_klass = cp->klass_name_at(interface_index); // Don't need to check legal name because it's checked when parsing constant pool. // But need to make sure it's not an array type. @@ -830,7 +853,7 @@ objArrayHandle ClassFileParser::parse_interfaces(constantPoolHandle cp, debug_only(No_Safepoint_Verifier nsv;) for (index = 0; index < length; index++) { klassOop k = (klassOop)interfaces->obj_at(index); - symbolOop name = instanceKlass::cast(k)->name(); + Symbol* name = instanceKlass::cast(k)->name(); // If no duplicates, add (name, NULL) in hashtable interface_names. if (!put_after_lookup(name, NULL, interface_names)) { dup = true; @@ -908,7 +931,7 @@ void ClassFileParser::parse_field_attributes(constantPoolHandle cp, "Invalid field attribute index %u in class file %s", attribute_name_index, CHECK); - symbolOop attribute_name = cp->symbol_at(attribute_name_index); + Symbol* attribute_name = cp->symbol_at(attribute_name_index); if (is_static && attribute_name == vmSymbols::tag_constant_value()) { // ignore if non-static if (constantvalue_index != 0) { @@ -1031,7 +1054,7 @@ typeArrayHandle ClassFileParser::parse_fields(constantPoolHandle cp, bool is_int valid_cp_range(name_index, cp_size) && cp->tag_at(name_index).is_utf8(), "Invalid constant pool index %u for field name in class file %s", name_index, CHECK_(nullHandle)); - symbolHandle name(THREAD, cp->symbol_at(name_index)); + Symbol* name = cp->symbol_at(name_index); verify_legal_field_name(name, CHECK_(nullHandle)); u2 signature_index = cfs->get_u2_fast(); @@ -1040,7 +1063,7 @@ typeArrayHandle ClassFileParser::parse_fields(constantPoolHandle cp, bool is_int cp->tag_at(signature_index).is_utf8(), "Invalid constant pool index %u for field signature in class file %s", signature_index, CHECK_(nullHandle)); - symbolHandle sig(THREAD, cp->symbol_at(signature_index)); + Symbol* sig = cp->symbol_at(signature_index); verify_legal_field_signature(name, sig, CHECK_(nullHandle)); u2 constantvalue_index = 0; @@ -1166,9 +1189,9 @@ typeArrayHandle ClassFileParser::parse_fields(constantPoolHandle cp, bool is_int debug_only(No_Safepoint_Verifier nsv;) for (int i = 0; i < length*instanceKlass::next_offset; i += instanceKlass::next_offset) { int name_index = fields->ushort_at(i + instanceKlass::name_index_offset); - symbolOop name = cp->symbol_at(name_index); + Symbol* name = cp->symbol_at(name_index); int sig_index = fields->ushort_at(i + instanceKlass::signature_index_offset); - symbolOop sig = cp->symbol_at(sig_index); + Symbol* sig = cp->symbol_at(sig_index); // If no duplicates, add name/signature in hashtable names_and_sigs. if (!put_after_lookup(name, sig, names_and_sigs)) { dup = true; @@ -1422,16 +1445,16 @@ u2* ClassFileParser::parse_localvariable_table(u4 code_length, "Signature index %u in %s has bad constant type in class file %s", descriptor_index, tbl_name, CHECK_NULL); - symbolHandle name(THREAD, cp->symbol_at(name_index)); - symbolHandle sig(THREAD, cp->symbol_at(descriptor_index)); + Symbol* name = cp->symbol_at(name_index); + Symbol* sig = cp->symbol_at(descriptor_index); verify_legal_field_name(name, CHECK_NULL); u2 extra_slot = 0; if (!isLVTT) { verify_legal_field_signature(name, sig, CHECK_NULL); // 4894874: check special cases for double and long local variables - if (sig() == vmSymbols::type_signature(T_DOUBLE) || - sig() == vmSymbols::type_signature(T_LONG)) { + if (sig == vmSymbols::type_signature(T_DOUBLE) || + sig == vmSymbols::type_signature(T_LONG)) { extra_slot = 1; } } @@ -1539,7 +1562,7 @@ u2* ClassFileParser::parse_checked_exceptions(u2* checked_exceptions_length, } void ClassFileParser::throwIllegalSignature( - const char* type, symbolHandle name, symbolHandle sig, TRAPS) { + const char* type, Symbol* name, Symbol* sig, TRAPS) { ResourceMark rm(THREAD); Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbols::java_lang_ClassFormatError(), @@ -1580,7 +1603,7 @@ methodHandle ClassFileParser::parse_method(constantPoolHandle cp, bool is_interf cp->tag_at(name_index).is_utf8(), "Illegal constant pool index %u for method name in class file %s", name_index, CHECK_(nullHandle)); - symbolHandle name(THREAD, cp->symbol_at(name_index)); + Symbol* name = cp->symbol_at(name_index); verify_legal_method_name(name, CHECK_(nullHandle)); u2 signature_index = cfs->get_u2_fast(); @@ -1589,7 +1612,7 @@ methodHandle ClassFileParser::parse_method(constantPoolHandle cp, bool is_interf cp->tag_at(signature_index).is_utf8(), "Illegal constant pool index %u for method signature in class file %s", signature_index, CHECK_(nullHandle)); - symbolHandle signature(THREAD, cp->symbol_at(signature_index)); + Symbol* signature = cp->symbol_at(signature_index); AccessFlags access_flags; if (name == vmSymbols::class_initializer_name()) { @@ -1660,7 +1683,7 @@ methodHandle ClassFileParser::parse_method(constantPoolHandle cp, bool is_interf "Invalid method attribute name index %u in class file %s", method_attribute_name_index, CHECK_(nullHandle)); - symbolOop method_attribute_name = cp->symbol_at(method_attribute_name_index); + Symbol* method_attribute_name = cp->symbol_at(method_attribute_name_index); if (method_attribute_name == vmSymbols::tag_code()) { // Parse Code attribute if (_need_verify) { @@ -2057,16 +2080,16 @@ methodHandle ClassFileParser::parse_method(constantPoolHandle cp, bool is_interf 0, CHECK_(nullHandle)); - if (name() == vmSymbols::finalize_method_name() && - signature() == vmSymbols::void_method_signature()) { + if (name == vmSymbols::finalize_method_name() && + signature == vmSymbols::void_method_signature()) { if (m->is_empty_method()) { _has_empty_finalizer = true; } else { _has_finalizer = true; } } - if (name() == vmSymbols::object_initializer_name() && - signature() == vmSymbols::void_method_signature() && + if (name == vmSymbols::object_initializer_name() && + signature == vmSymbols::void_method_signature() && m->is_vanilla_constructor()) { _has_vanilla_constructor = true; } @@ -2193,7 +2216,7 @@ typeArrayHandle ClassFileParser::sort_methods(objArrayHandle methods, } } // Sort method array by ascending method name (for faster lookups & vtable construction) - // Note that the ordering is not alphabetical, see symbolOopDesc::fast_compare + // Note that the ordering is not alphabetical, see Symbol::fast_compare methodOopDesc::sort_methods(methods(), methods_annotations(), methods_parameter_annotations(), @@ -2242,9 +2265,10 @@ void ClassFileParser::parse_classfile_source_debug_extension_attribute(constantP if (JvmtiExport::can_get_source_debug_extension()) { // Optimistically assume that only 1 byte UTF format is used // (common case) - symbolOop sde_symbol = oopFactory::new_symbol((char*)sde_buffer, - length, CHECK); + TempNewSymbol sde_symbol = SymbolTable::new_symbol((const char*)sde_buffer, length, CHECK); k->set_source_debug_extension(sde_symbol); + // Note that set_source_debug_extension() increments the reference count + // for its copy of the Symbol*, so use a TempNewSymbol here. } // Got utf8 string, set stream position forward cfs->skip_u1(length, CHECK); @@ -2440,7 +2464,7 @@ void ClassFileParser::parse_classfile_attributes(constantPoolHandle cp, instance cp->tag_at(attribute_name_index).is_utf8(), "Attribute name has bad constant pool index %u in class file %s", attribute_name_index, CHECK); - symbolOop tag = cp->symbol_at(attribute_name_index); + Symbol* tag = cp->symbol_at(attribute_name_index); if (tag == vmSymbols::tag_source_file()) { // Check for SourceFile tag if (_need_verify) { @@ -2607,7 +2631,7 @@ static void initialize_static_field(fieldDescriptor* fd, TRAPS) { case T_OBJECT: { #ifdef ASSERT - symbolOop sym = oopFactory::new_symbol("Ljava/lang/String;", CHECK); + TempNewSymbol sym = SymbolTable::new_symbol("Ljava/lang/String;", CHECK); assert(fd->signature() == sym, "just checking"); #endif oop string = fd->string_initial_value(CHECK); @@ -2650,8 +2674,8 @@ void ClassFileParser::java_lang_ref_Reference_fix_pre(typeArrayHandle* fields_pt (*fields_ptr)()->ushort_at(i + instanceKlass::name_index_offset); int sig_index = (*fields_ptr)()->ushort_at(i + instanceKlass::signature_index_offset); - symbolOop f_name = cp->symbol_at(name_index); - symbolOop f_sig = cp->symbol_at(sig_index); + Symbol* f_name = cp->symbol_at(name_index); + Symbol* f_sig = cp->symbol_at(sig_index); if (f_sig == vmSymbols::reference_signature() && reference_index == 0) { // Save the index for reference signature for later use. // The fake discovered field does not entries in the @@ -2805,9 +2829,8 @@ void ClassFileParser::java_dyn_MethodHandle_fix_pre(constantPoolHandle cp, int name_index = fields->ushort_at(i + instanceKlass::name_index_offset); int sig_index = fields->ushort_at(i + instanceKlass::signature_index_offset); int acc_flags = fields->ushort_at(i + instanceKlass::access_flags_offset); - symbolOop f_name = cp->symbol_at(name_index); - symbolOop f_sig = cp->symbol_at(sig_index); - + Symbol* f_name = cp->symbol_at(name_index); + Symbol* f_sig = cp->symbol_at(sig_index); if (f_name == vmSymbols::vmentry_name() && (acc_flags & JVM_ACC_STATIC) == 0) { if (f_sig == vmSymbols::machine_word_signature()) { // If the signature of vmentry is already changed, we're done. @@ -2841,12 +2864,12 @@ void ClassFileParser::java_dyn_MethodHandle_fix_pre(constantPoolHandle cp, } -instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, +instanceKlassHandle ClassFileParser::parseClassFile(Symbol* name, Handle class_loader, Handle protection_domain, KlassHandle host_klass, GrowableArray* cp_patches, - symbolHandle& parsed_name, + TempNewSymbol& parsed_name, bool verify, TRAPS) { // So that JVMTI can cache class file in the state before retransformable agents @@ -2899,7 +2922,7 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, cfs->set_verify(_need_verify); // Save the class file name for easier error message printing. - _class_name = name.not_null()? name : vmSymbolHandles::unknown_class_name(); + _class_name = (name != NULL) ? name : vmSymbols::unknown_class_name(); cfs->guarantee_more(8, CHECK_(nullHandle)); // magic, major, minor // Magic value @@ -2914,10 +2937,10 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, // Check version numbers - we check this even with verifier off if (!is_supported_version(major_version, minor_version)) { - if (name.is_null()) { + if (name == NULL) { Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_UnsupportedClassVersionError(), + vmSymbols::java_lang_UnsupportedClassVersionError(), "Unsupported major.minor version %u.%u", major_version, minor_version); @@ -2925,7 +2948,7 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_UnsupportedClassVersionError(), + vmSymbols::java_lang_UnsupportedClassVersionError(), "%s : Unsupported major.minor version %u.%u", name->as_C_string(), major_version, @@ -2944,6 +2967,8 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, // Constant pool constantPoolHandle cp = parse_constant_pool(CHECK_(nullHandle)); + ConstantPoolCleaner error_handler(cp); // set constant pool to be cleaned up. + int cp_size = cp->length(); cfs->guarantee_more(8, CHECK_(nullHandle)); // flags, this_class, super_class, infs_len @@ -2968,12 +2993,15 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, "Invalid this class index %u in constant pool in class file %s", this_class_index, CHECK_(nullHandle)); - symbolHandle class_name (THREAD, cp->unresolved_klass_at(this_class_index)); - assert(class_name.not_null(), "class_name can't be null"); + Symbol* class_name = cp->unresolved_klass_at(this_class_index); + assert(class_name != NULL, "class_name can't be null"); // It's important to set parsed_name *before* resolving the super class. // (it's used for cleanup by the caller if parsing fails) parsed_name = class_name; + // parsed_name is returned and can be used if there's an error, so add to + // its reference count. Caller will decrement the refcount. + parsed_name->increment_refcount(); // Update _class_name which could be null previously to be class_name _class_name = class_name; @@ -2993,11 +3021,11 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, { HandleMark hm(THREAD); // Checks if name in class file matches requested name - if (name.not_null() && class_name() != name()) { + if (name != NULL && class_name != name) { ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_NoClassDefFoundError(), + vmSymbols::java_lang_NoClassDefFoundError(), "%s (wrong name: %s)", name->as_C_string(), class_name->as_C_string() @@ -3006,14 +3034,14 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, } if (TraceClassLoadingPreorder) { - tty->print("[Loading %s", name()->as_klass_external_name()); + tty->print("[Loading %s", name->as_klass_external_name()); if (cfs->source() != NULL) tty->print(" from %s", cfs->source()); tty->print_cr("]"); } u2 super_class_index = cfs->get_u2_fast(); if (super_class_index == 0) { - check_property(class_name() == vmSymbols::java_lang_Object(), + check_property(class_name == vmSymbols::java_lang_Object(), "Invalid superclass index %u in class file %s", super_class_index, CHECK_(nullHandle)); @@ -3075,11 +3103,11 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, // We check super class after class file is parsed and format is checked if (super_class_index > 0 && super_klass.is_null()) { - symbolHandle sk (THREAD, cp->klass_name_at(super_class_index)); + Symbol* sk = cp->klass_name_at(super_class_index); if (access_flags.is_interface()) { // Before attempting to resolve the superclass, check for class format // errors not checked yet. - guarantee_property(sk() == vmSymbols::java_lang_Object(), + guarantee_property(sk == vmSymbols::java_lang_Object(), "Interfaces must have java.lang.Object as superclass in class file %s", CHECK_(nullHandle)); } @@ -3100,7 +3128,7 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_IncompatibleClassChangeError(), + vmSymbols::java_lang_IncompatibleClassChangeError(), "class %s has interface %s as super class", class_name->as_klass_external_name(), super_klass->external_name() @@ -3193,18 +3221,18 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, next_nonstatic_field_offset = first_nonstatic_field_offset; // Add fake fields for java.lang.Class instances (also see below) - if (class_name() == vmSymbols::java_lang_Class() && class_loader.is_null()) { + if (class_name == vmSymbols::java_lang_Class() && class_loader.is_null()) { java_lang_Class_fix_pre(&methods, &fac, CHECK_(nullHandle)); } // adjust the vmentry field declaration in java.dyn.MethodHandle - if (EnableMethodHandles && class_name() == vmSymbols::sun_dyn_MethodHandleImpl() && class_loader.is_null()) { + if (EnableMethodHandles && class_name == vmSymbols::sun_dyn_MethodHandleImpl() && class_loader.is_null()) { java_dyn_MethodHandle_fix_pre(cp, fields, &fac, CHECK_(nullHandle)); } // Add a fake "discovered" field if it is not present // for compatibility with earlier jdk's. - if (class_name() == vmSymbols::java_lang_ref_Reference() + if (class_name == vmSymbols::java_lang_ref_Reference() && class_loader.is_null()) { java_lang_ref_Reference_fix_pre(&fields, cp, &fac, CHECK_(nullHandle)); } @@ -3236,7 +3264,7 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, // Add fake fields for java.lang.Class instances (also see above). // FieldsAllocationStyle and CompactFields values will be reset to default. - if(class_name() == vmSymbols::java_lang_Class() && class_loader.is_null()) { + if(class_name == vmSymbols::java_lang_Class() && class_loader.is_null()) { java_lang_Class_fix_post(&next_nonstatic_field_offset); nonstatic_oop_offsets[0] = first_nonstatic_field_offset; const uint fake_oop_count = (next_nonstatic_field_offset - @@ -3279,22 +3307,22 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, // (see in JavaClasses::compute_hard_coded_offsets()). // Use default fields allocation order for them. if( (allocation_style != 0 || compact_fields ) && class_loader.is_null() && - (class_name() == vmSymbols::java_lang_AssertionStatusDirectives() || - class_name() == vmSymbols::java_lang_Class() || - class_name() == vmSymbols::java_lang_ClassLoader() || - class_name() == vmSymbols::java_lang_ref_Reference() || - class_name() == vmSymbols::java_lang_ref_SoftReference() || - class_name() == vmSymbols::java_lang_StackTraceElement() || - class_name() == vmSymbols::java_lang_String() || - class_name() == vmSymbols::java_lang_Throwable() || - class_name() == vmSymbols::java_lang_Boolean() || - class_name() == vmSymbols::java_lang_Character() || - class_name() == vmSymbols::java_lang_Float() || - class_name() == vmSymbols::java_lang_Double() || - class_name() == vmSymbols::java_lang_Byte() || - class_name() == vmSymbols::java_lang_Short() || - class_name() == vmSymbols::java_lang_Integer() || - class_name() == vmSymbols::java_lang_Long())) { + (class_name == vmSymbols::java_lang_AssertionStatusDirectives() || + class_name == vmSymbols::java_lang_Class() || + class_name == vmSymbols::java_lang_ClassLoader() || + class_name == vmSymbols::java_lang_ref_Reference() || + class_name == vmSymbols::java_lang_ref_SoftReference() || + class_name == vmSymbols::java_lang_StackTraceElement() || + class_name == vmSymbols::java_lang_String() || + class_name == vmSymbols::java_lang_Throwable() || + class_name == vmSymbols::java_lang_Boolean() || + class_name == vmSymbols::java_lang_Character() || + class_name == vmSymbols::java_lang_Float() || + class_name == vmSymbols::java_lang_Double() || + class_name == vmSymbols::java_lang_Byte() || + class_name == vmSymbols::java_lang_Short() || + class_name == vmSymbols::java_lang_Integer() || + class_name == vmSymbols::java_lang_Long())) { allocation_style = 0; // Allocate oops first compact_fields = false; // Don't compact fields } @@ -3543,6 +3571,7 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name, this_klass->set_has_nonstatic_fields(has_nonstatic_fields); this_klass->set_static_oop_field_size(fac.static_oop_count); cp->set_pool_holder(this_klass()); + error_handler.set_in_error(false); // turn off error handler for cp this_klass->set_constants(cp()); this_klass->set_local_interfaces(local_interfaces()); this_klass->set_fields(fields()); @@ -3935,7 +3964,7 @@ void ClassFileParser::check_super_class_access(instanceKlassHandle this_klass, T ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_IllegalAccessError(), + vmSymbols::java_lang_IllegalAccessError(), "class %s cannot access its superclass %s", this_klass->external_name(), instanceKlass::cast(super)->external_name() @@ -3955,7 +3984,7 @@ void ClassFileParser::check_super_interface_access(instanceKlassHandle this_klas ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_IllegalAccessError(), + vmSymbols::java_lang_IllegalAccessError(), "class %s cannot access its superinterface %s", this_klass->external_name(), instanceKlass::cast(k)->external_name() @@ -3979,8 +4008,8 @@ void ClassFileParser::check_final_method_override(instanceKlassHandle this_klass (!m->is_static()) && (m->name() != vmSymbols::object_initializer_name())) { - symbolOop name = m->name(); - symbolOop signature = m->signature(); + Symbol* name = m->name(); + Symbol* signature = m->signature(); klassOop k = this_klass->super(); methodOop super_m = NULL; while (k != NULL) { @@ -4003,7 +4032,7 @@ void ClassFileParser::check_final_method_override(instanceKlassHandle this_klass ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_VerifyError(), + vmSymbols::java_lang_VerifyError(), "class %s overrides final method %s.%s", this_klass->external_name(), name->as_C_string(), @@ -4037,7 +4066,7 @@ void ClassFileParser::check_illegal_static_method(instanceKlassHandle this_klass ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_VerifyError(), + vmSymbols::java_lang_VerifyError(), "Illegal static method %s in interface %s", m->name()->as_C_string(), this_klass->external_name() @@ -4067,7 +4096,7 @@ void ClassFileParser::verify_legal_class_modifiers(jint flags, TRAPS) { ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_ClassFormatError(), + vmSymbols::java_lang_ClassFormatError(), "Illegal class modifiers in class %s: 0x%X", _class_name->as_C_string(), flags ); @@ -4127,7 +4156,7 @@ void ClassFileParser::verify_legal_field_modifiers( ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_ClassFormatError(), + vmSymbols::java_lang_ClassFormatError(), "Illegal field modifiers in class %s: 0x%X", _class_name->as_C_string(), flags); return; @@ -4135,7 +4164,7 @@ void ClassFileParser::verify_legal_field_modifiers( } void ClassFileParser::verify_legal_method_modifiers( - jint flags, bool is_interface, symbolHandle name, TRAPS) { + jint flags, bool is_interface, Symbol* name, TRAPS) { if (!_need_verify) { return; } const bool is_public = (flags & JVM_ACC_PUBLIC) != 0; @@ -4180,7 +4209,7 @@ void ClassFileParser::verify_legal_method_modifiers( ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_ClassFormatError(), + vmSymbols::java_lang_ClassFormatError(), "Method %s in class %s has illegal modifiers: 0x%X", name->as_C_string(), _class_name->as_C_string(), flags); return; @@ -4251,7 +4280,7 @@ void ClassFileParser::verify_legal_utf8(const unsigned char* buffer, int length, } // Checks if name is a legal class name. -void ClassFileParser::verify_legal_class_name(symbolHandle name, TRAPS) { +void ClassFileParser::verify_legal_class_name(Symbol* name, TRAPS) { if (!_need_verify || _relax_verify) { return; } char buf[fixed_buffer_size]; @@ -4281,7 +4310,7 @@ void ClassFileParser::verify_legal_class_name(symbolHandle name, TRAPS) { ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_ClassFormatError(), + vmSymbols::java_lang_ClassFormatError(), "Illegal class name \"%s\" in class file %s", bytes, _class_name->as_C_string() ); @@ -4290,7 +4319,7 @@ void ClassFileParser::verify_legal_class_name(symbolHandle name, TRAPS) { } // Checks if name is a legal field name. -void ClassFileParser::verify_legal_field_name(symbolHandle name, TRAPS) { +void ClassFileParser::verify_legal_field_name(Symbol* name, TRAPS) { if (!_need_verify || _relax_verify) { return; } char buf[fixed_buffer_size]; @@ -4314,7 +4343,7 @@ void ClassFileParser::verify_legal_field_name(symbolHandle name, TRAPS) { ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_ClassFormatError(), + vmSymbols::java_lang_ClassFormatError(), "Illegal field name \"%s\" in class %s", bytes, _class_name->as_C_string() ); @@ -4323,10 +4352,10 @@ void ClassFileParser::verify_legal_field_name(symbolHandle name, TRAPS) { } // Checks if name is a legal method name. -void ClassFileParser::verify_legal_method_name(symbolHandle name, TRAPS) { +void ClassFileParser::verify_legal_method_name(Symbol* name, TRAPS) { if (!_need_verify || _relax_verify) { return; } - assert(!name.is_null(), "method name is null"); + assert(name != NULL, "method name is null"); char buf[fixed_buffer_size]; char* bytes = name->as_utf8_flexible_buffer(THREAD, buf, fixed_buffer_size); unsigned int length = name->utf8_length(); @@ -4351,7 +4380,7 @@ void ClassFileParser::verify_legal_method_name(symbolHandle name, TRAPS) { ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_ClassFormatError(), + vmSymbols::java_lang_ClassFormatError(), "Illegal method name \"%s\" in class %s", bytes, _class_name->as_C_string() ); @@ -4361,7 +4390,7 @@ void ClassFileParser::verify_legal_method_name(symbolHandle name, TRAPS) { // Checks if signature is a legal field signature. -void ClassFileParser::verify_legal_field_signature(symbolHandle name, symbolHandle signature, TRAPS) { +void ClassFileParser::verify_legal_field_signature(Symbol* name, Symbol* signature, TRAPS) { if (!_need_verify) { return; } char buf[fixed_buffer_size]; @@ -4376,7 +4405,7 @@ void ClassFileParser::verify_legal_field_signature(symbolHandle name, symbolHand // Checks if signature is a legal method signature. // Returns number of parameters -int ClassFileParser::verify_legal_method_signature(symbolHandle name, symbolHandle signature, TRAPS) { +int ClassFileParser::verify_legal_method_signature(Symbol* name, Symbol* signature, TRAPS) { if (!_need_verify) { // make sure caller's args_size will be less than 0 even for non-static // method so it will be recomputed in compute_size_of_parameters(). @@ -4508,8 +4537,8 @@ char* ClassFileParser::skip_over_field_name(char* name, bool slash_ok, unsigned // public static boolean isJavaIdentifierStart(char ch); JavaCalls::call_static(&result, klass, - vmSymbolHandles::isJavaIdentifierStart_name(), - vmSymbolHandles::int_bool_signature(), + vmSymbols::isJavaIdentifierStart_name(), + vmSymbols::int_bool_signature(), &args, THREAD); @@ -4525,8 +4554,8 @@ char* ClassFileParser::skip_over_field_name(char* name, bool slash_ok, unsigned // public static boolean isJavaIdentifierPart(char ch); JavaCalls::call_static(&result, klass, - vmSymbolHandles::isJavaIdentifierPart_name(), - vmSymbolHandles::int_bool_signature(), + vmSymbols::isJavaIdentifierPart_name(), + vmSymbols::int_bool_signature(), &args, THREAD); diff --git a/hotspot/src/share/vm/classfile/classFileParser.hpp b/hotspot/src/share/vm/classfile/classFileParser.hpp index f0926978353..4dc61fc32b0 100644 --- a/hotspot/src/share/vm/classfile/classFileParser.hpp +++ b/hotspot/src/share/vm/classfile/classFileParser.hpp @@ -32,6 +32,7 @@ #include "runtime/handles.inline.hpp" #include "utilities/accessFlags.hpp" +class TempNewSymbol; // Parser for for .class files // // The bytes describing the class file structure is read from a Stream object @@ -42,7 +43,7 @@ class ClassFileParser VALUE_OBJ_CLASS_SPEC { bool _relax_verify; u2 _major_version; u2 _minor_version; - symbolHandle _class_name; + Symbol* _class_name; KlassHandle _host_klass; GrowableArray* _cp_patches; // overrides for CP entries @@ -73,7 +74,7 @@ class ClassFileParser VALUE_OBJ_CLASS_SPEC { int length, Handle class_loader, Handle protection_domain, - symbolHandle class_name, + Symbol* class_name, TRAPS); // Field parsing @@ -209,21 +210,21 @@ class ClassFileParser VALUE_OBJ_CLASS_SPEC { } void throwIllegalSignature( - const char* type, symbolHandle name, symbolHandle sig, TRAPS); + const char* type, Symbol* name, Symbol* sig, TRAPS); bool is_supported_version(u2 major, u2 minor); bool has_illegal_visibility(jint flags); void verify_constantvalue(int constantvalue_index, int signature_index, constantPoolHandle cp, TRAPS); void verify_legal_utf8(const unsigned char* buffer, int length, TRAPS); - void verify_legal_class_name(symbolHandle name, TRAPS); - void verify_legal_field_name(symbolHandle name, TRAPS); - void verify_legal_method_name(symbolHandle name, TRAPS); - void verify_legal_field_signature(symbolHandle fieldname, symbolHandle signature, TRAPS); - int verify_legal_method_signature(symbolHandle methodname, symbolHandle signature, TRAPS); + void verify_legal_class_name(Symbol* name, TRAPS); + void verify_legal_field_name(Symbol* name, TRAPS); + void verify_legal_method_name(Symbol* name, TRAPS); + void verify_legal_field_signature(Symbol* fieldname, Symbol* signature, TRAPS); + int verify_legal_method_signature(Symbol* methodname, Symbol* signature, TRAPS); void verify_legal_class_modifiers(jint flags, TRAPS); void verify_legal_field_modifiers(jint flags, bool is_interface, TRAPS); - void verify_legal_method_modifiers(jint flags, bool is_interface, symbolHandle name, TRAPS); + void verify_legal_method_modifiers(jint flags, bool is_interface, Symbol* name, TRAPS); bool verify_unqualified_name(char* name, unsigned int length, int type); char* skip_over_field_name(char* name, bool slash_ok, unsigned int length); char* skip_over_field_signature(char* signature, bool void_ok, unsigned int length, TRAPS); @@ -272,21 +273,21 @@ class ClassFileParser VALUE_OBJ_CLASS_SPEC { // // "parsed_name" is updated by this method, and is the name found // while parsing the stream. - instanceKlassHandle parseClassFile(symbolHandle name, + instanceKlassHandle parseClassFile(Symbol* name, Handle class_loader, Handle protection_domain, - symbolHandle& parsed_name, + TempNewSymbol& parsed_name, bool verify, TRAPS) { KlassHandle no_host_klass; return parseClassFile(name, class_loader, protection_domain, no_host_klass, NULL, parsed_name, verify, THREAD); } - instanceKlassHandle parseClassFile(symbolHandle name, + instanceKlassHandle parseClassFile(Symbol* name, Handle class_loader, Handle protection_domain, KlassHandle host_klass, GrowableArray* cp_patches, - symbolHandle& parsed_name, + TempNewSymbol& parsed_name, bool verify, TRAPS); diff --git a/hotspot/src/share/vm/classfile/classFileStream.hpp b/hotspot/src/share/vm/classfile/classFileStream.hpp index dfadb7b00db..3c94a1edf1e 100644 --- a/hotspot/src/share/vm/classfile/classFileStream.hpp +++ b/hotspot/src/share/vm/classfile/classFileStream.hpp @@ -35,6 +35,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif // Input stream for reading .class file // diff --git a/hotspot/src/share/vm/classfile/classLoader.cpp b/hotspot/src/share/vm/classfile/classLoader.cpp index 593bc9177a9..41ca1692139 100644 --- a/hotspot/src/share/vm/classfile/classLoader.cpp +++ b/hotspot/src/share/vm/classfile/classLoader.cpp @@ -41,7 +41,7 @@ #include "oops/instanceKlass.hpp" #include "oops/instanceRefKlass.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "prims/jvm_misc.hpp" #include "runtime/arguments.hpp" #include "runtime/compilationPolicy.hpp" @@ -752,11 +752,7 @@ void PackageHashtable::copy_table(char** top, char* end, } } if (*top + n + sizeof(intptr_t) >= end) { - warning("\nThe shared miscellaneous data space is not large " - "enough to \npreload requested classes. Use " - "-XX:SharedMiscDataSize= to increase \nthe initial " - "size of the miscellaneous data space.\n"); - exit(2); + report_out_of_shared_space(SharedMiscData); } // Copy the table data (the strings) to the shared space. @@ -875,9 +871,9 @@ objArrayOop ClassLoader::get_system_packages(TRAPS) { } -instanceKlassHandle ClassLoader::load_classfile(symbolHandle h_name, TRAPS) { +instanceKlassHandle ClassLoader::load_classfile(Symbol* h_name, TRAPS) { ResourceMark rm(THREAD); - EventMark m("loading class " INTPTR_FORMAT, (address)h_name()); + EventMark m("loading class " INTPTR_FORMAT, (address)h_name); ThreadProfilerMark tpm(ThreadProfilerMark::classLoaderRegion); stringStream st; @@ -912,7 +908,7 @@ instanceKlassHandle ClassLoader::load_classfile(symbolHandle h_name, TRAPS) { ClassFileParser parser(stream); Handle class_loader; Handle protection_domain; - symbolHandle parsed_name; + TempNewSymbol parsed_name = NULL; instanceKlassHandle result = parser.parseClassFile(h_name, class_loader, protection_domain, @@ -1308,7 +1304,7 @@ void ClassLoader::compile_the_world_in(char* name, Handle loader, TRAPS) { if (_compile_the_world_counter > CompileTheWorldStopAt) return; // Construct name without extension - symbolHandle sym = oopFactory::new_symbol_handle(buffer, CHECK); + TempNewSymbol sym = SymbolTable::new_symbol(buffer, CHECK); // Use loader to load and initialize class klassOop ik = SystemDictionary::resolve_or_null(sym, loader, Handle(), THREAD); instanceKlassHandle k (THREAD, ik); diff --git a/hotspot/src/share/vm/classfile/classLoader.hpp b/hotspot/src/share/vm/classfile/classLoader.hpp index 5073f882653..95c36bd87f1 100644 --- a/hotspot/src/share/vm/classfile/classLoader.hpp +++ b/hotspot/src/share/vm/classfile/classLoader.hpp @@ -280,7 +280,7 @@ class ClassLoader: AllStatic { } // Load individual .class file - static instanceKlassHandle load_classfile(symbolHandle h_name, TRAPS); + static instanceKlassHandle load_classfile(Symbol* h_name, TRAPS); // If the specified package has been loaded by the system, then returns // the name of the directory or ZIP file that the package was loaded from. diff --git a/hotspot/src/share/vm/classfile/dictionary.cpp b/hotspot/src/share/vm/classfile/dictionary.cpp index cff89e66a36..f3e8be25cfa 100644 --- a/hotspot/src/share/vm/classfile/dictionary.cpp +++ b/hotspot/src/share/vm/classfile/dictionary.cpp @@ -36,7 +36,7 @@ int Dictionary::_current_class_index = 0; Dictionary::Dictionary(int table_size) - : TwoOopHashtable(table_size, sizeof(DictionaryEntry)) { + : TwoOopHashtable(table_size, sizeof(DictionaryEntry)) { _current_class_index = 0; _current_class_entry = NULL; }; @@ -45,7 +45,7 @@ Dictionary::Dictionary(int table_size) Dictionary::Dictionary(int table_size, HashtableBucket* t, int number_of_entries) - : TwoOopHashtable(table_size, sizeof(DictionaryEntry), t, number_of_entries) { + : TwoOopHashtable(table_size, sizeof(DictionaryEntry), t, number_of_entries) { _current_class_index = 0; _current_class_entry = NULL; }; @@ -54,7 +54,7 @@ Dictionary::Dictionary(int table_size, HashtableBucket* t, DictionaryEntry* Dictionary::new_entry(unsigned int hash, klassOop klass, oop loader) { DictionaryEntry* entry; - entry = (DictionaryEntry*)Hashtable::new_entry(hash, klass); + entry = (DictionaryEntry*)Hashtable::new_entry(hash, klass); entry->set_loader(loader); entry->set_pd_set(NULL); return entry; @@ -62,7 +62,7 @@ DictionaryEntry* Dictionary::new_entry(unsigned int hash, klassOop klass, DictionaryEntry* Dictionary::new_entry() { - DictionaryEntry* entry = (DictionaryEntry*)Hashtable::new_entry(0L, NULL); + DictionaryEntry* entry = (DictionaryEntry*)Hashtable::new_entry(0L, NULL); entry->set_loader(NULL); entry->set_pd_set(NULL); return entry; @@ -76,7 +76,7 @@ void Dictionary::free_entry(DictionaryEntry* entry) { entry->set_pd_set(to_delete->next()); delete to_delete; } - Hashtable::free_entry(entry); + Hashtable::free_entry(entry); } @@ -298,7 +298,7 @@ void Dictionary::always_strong_classes_do(OopClosure* blk) { for (DictionaryEntry *probe = bucket(index); probe != NULL; probe = probe->next()) { - oop e = probe->klass(); + klassOop e = probe->klass(); oop class_loader = probe->loader(); if (is_strongly_reachable(class_loader, e)) { blk->do_oop((oop*)probe->klass_addr()); @@ -421,11 +421,11 @@ klassOop Dictionary::try_get_next_class() { // also cast to volatile; we do this to ensure store order is maintained // by the compilers. -void Dictionary::add_klass(symbolHandle class_name, Handle class_loader, +void Dictionary::add_klass(Symbol* class_name, Handle class_loader, KlassHandle obj) { assert_locked_or_safepoint(SystemDictionary_lock); assert(obj() != NULL, "adding NULL obj"); - assert(Klass::cast(obj())->name() == class_name(), "sanity check on name"); + assert(Klass::cast(obj())->name() == class_name, "sanity check on name"); unsigned int hash = compute_hash(class_name, class_loader); int index = hash_to_index(hash); @@ -444,15 +444,14 @@ void Dictionary::add_klass(symbolHandle class_name, Handle class_loader, // Callers should be aware that an entry could be added just after // _buckets[index] is read here, so the caller will not see the new entry. DictionaryEntry* Dictionary::get_entry(int index, unsigned int hash, - symbolHandle class_name, + Symbol* class_name, Handle class_loader) { - symbolOop name_ = class_name(); - oop loader_ = class_loader(); + oop loader = class_loader(); debug_only(_lookup_count++); for (DictionaryEntry* entry = bucket(index); entry != NULL; entry = entry->next()) { - if (entry->hash() == hash && entry->equals(name_, loader_)) { + if (entry->hash() == hash && entry->equals(class_name, loader)) { return entry; } debug_only(_lookup_length++); @@ -461,7 +460,7 @@ DictionaryEntry* Dictionary::get_entry(int index, unsigned int hash, } -klassOop Dictionary::find(int index, unsigned int hash, symbolHandle name, +klassOop Dictionary::find(int index, unsigned int hash, Symbol* name, Handle loader, Handle protection_domain, TRAPS) { DictionaryEntry* entry = get_entry(index, hash, name, loader); if (entry != NULL && entry->is_valid_protection_domain(protection_domain)) { @@ -473,7 +472,7 @@ klassOop Dictionary::find(int index, unsigned int hash, symbolHandle name, klassOop Dictionary::find_class(int index, unsigned int hash, - symbolHandle name, Handle loader) { + Symbol* name, Handle loader) { assert_locked_or_safepoint(SystemDictionary_lock); assert (index == index_for(name, loader), "incorrect index?"); @@ -486,7 +485,7 @@ klassOop Dictionary::find_class(int index, unsigned int hash, // that table is static. klassOop Dictionary::find_shared_class(int index, unsigned int hash, - symbolHandle name) { + Symbol* name) { assert (index == index_for(name, Handle()), "incorrect index?"); DictionaryEntry* entry = get_entry(index, hash, name, Handle()); @@ -498,7 +497,7 @@ void Dictionary::add_protection_domain(int index, unsigned int hash, instanceKlassHandle klass, Handle loader, Handle protection_domain, TRAPS) { - symbolHandle klass_name(THREAD, klass->name()); + Symbol* klass_name = klass->name(); DictionaryEntry* entry = get_entry(index, hash, klass_name, loader); assert(entry != NULL,"entry must be present, we just created it"); @@ -513,7 +512,7 @@ void Dictionary::add_protection_domain(int index, unsigned int hash, bool Dictionary::is_valid_protection_domain(int index, unsigned int hash, - symbolHandle name, + Symbol* name, Handle loader, Handle protection_domain) { DictionaryEntry* entry = get_entry(index, hash, name, loader); @@ -545,7 +544,7 @@ void Dictionary::reorder_dictionary() { DictionaryEntry* p = master_list; master_list = master_list->next(); p->set_next(NULL); - symbolHandle class_name (thread, instanceKlass::cast((klassOop)(p->klass()))->name()); + Symbol* class_name = instanceKlass::cast((klassOop)(p->klass()))->name(); unsigned int hash = compute_hash(class_name, Handle(thread, p->loader())); int index = hash_to_index(hash); p->set_hash(hash); @@ -555,22 +554,22 @@ void Dictionary::reorder_dictionary() { } SymbolPropertyTable::SymbolPropertyTable(int table_size) - : Hashtable(table_size, sizeof(SymbolPropertyEntry)) + : Hashtable(table_size, sizeof(SymbolPropertyEntry)) { } SymbolPropertyTable::SymbolPropertyTable(int table_size, HashtableBucket* t, int number_of_entries) - : Hashtable(table_size, sizeof(SymbolPropertyEntry), t, number_of_entries) + : Hashtable(table_size, sizeof(SymbolPropertyEntry), t, number_of_entries) { } SymbolPropertyEntry* SymbolPropertyTable::find_entry(int index, unsigned int hash, - symbolHandle sym, + Symbol* sym, intptr_t sym_mode) { assert(index == index_for(sym, sym_mode), "incorrect index?"); for (SymbolPropertyEntry* p = bucket(index); p != NULL; p = p->next()) { - if (p->hash() == hash && p->symbol() == sym() && p->symbol_mode() == sym_mode) { + if (p->hash() == hash && p->symbol() == sym && p->symbol_mode() == sym_mode) { return p; } } @@ -579,13 +578,13 @@ SymbolPropertyEntry* SymbolPropertyTable::find_entry(int index, unsigned int has SymbolPropertyEntry* SymbolPropertyTable::add_entry(int index, unsigned int hash, - symbolHandle sym, intptr_t sym_mode) { + Symbol* sym, intptr_t sym_mode) { assert_locked_or_safepoint(SystemDictionary_lock); assert(index == index_for(sym, sym_mode), "incorrect index?"); assert(find_entry(index, hash, sym, sym_mode) == NULL, "no double entry"); - SymbolPropertyEntry* p = new_entry(hash, sym(), sym_mode); - Hashtable::add_entry(index, p); + SymbolPropertyEntry* p = new_entry(hash, sym, sym_mode); + Hashtable::add_entry(index, p); return p; } @@ -593,7 +592,6 @@ SymbolPropertyEntry* SymbolPropertyTable::add_entry(int index, unsigned int hash void SymbolPropertyTable::oops_do(OopClosure* f) { for (int index = 0; index < table_size(); index++) { for (SymbolPropertyEntry* p = bucket(index); p != NULL; p = p->next()) { - f->do_oop((oop*) p->symbol_addr()); if (p->property_oop() != NULL) { f->do_oop(p->property_oop_addr()); } diff --git a/hotspot/src/share/vm/classfile/dictionary.hpp b/hotspot/src/share/vm/classfile/dictionary.hpp index bc6a009b511..157ce15c0a6 100644 --- a/hotspot/src/share/vm/classfile/dictionary.hpp +++ b/hotspot/src/share/vm/classfile/dictionary.hpp @@ -36,7 +36,7 @@ class DictionaryEntry; // The data structure for the system dictionary (and the shared system // dictionary). -class Dictionary : public TwoOopHashtable { +class Dictionary : public TwoOopHashtable { friend class VMStructs; private: // current iteration index. @@ -45,19 +45,19 @@ private: static DictionaryEntry* _current_class_entry; DictionaryEntry* get_entry(int index, unsigned int hash, - symbolHandle name, Handle loader); + Symbol* name, Handle loader); DictionaryEntry* bucket(int i) { - return (DictionaryEntry*)Hashtable::bucket(i); + return (DictionaryEntry*)Hashtable::bucket(i); } // The following method is not MT-safe and must be done under lock. DictionaryEntry** bucket_addr(int i) { - return (DictionaryEntry**)Hashtable::bucket_addr(i); + return (DictionaryEntry**)Hashtable::bucket_addr(i); } void add_entry(int index, DictionaryEntry* new_entry) { - Hashtable::add_entry(index, (HashtableEntry*)new_entry); + Hashtable::add_entry(index, (HashtableEntry*)new_entry); } @@ -71,12 +71,12 @@ public: void free_entry(DictionaryEntry* entry); - void add_klass(symbolHandle class_name, Handle class_loader,KlassHandle obj); + void add_klass(Symbol* class_name, Handle class_loader,KlassHandle obj); klassOop find_class(int index, unsigned int hash, - symbolHandle name, Handle loader); + Symbol* name, Handle loader); - klassOop find_shared_class(int index, unsigned int hash, symbolHandle name); + klassOop find_shared_class(int index, unsigned int hash, Symbol* name); // Compiler support klassOop try_get_next_class(); @@ -95,7 +95,7 @@ public: // Classes loaded by the bootstrap loader are always strongly reachable. // If we're not doing class unloading, all classes are strongly reachable. - static bool is_strongly_reachable(oop class_loader, oop klass) { + static bool is_strongly_reachable(oop class_loader, klassOop klass) { assert (klass != NULL, "should have non-null klass"); return (class_loader == NULL || !ClassUnloading); } @@ -105,10 +105,10 @@ public: bool do_unloading(BoolObjectClosure* is_alive); // Protection domains - klassOop find(int index, unsigned int hash, symbolHandle name, + klassOop find(int index, unsigned int hash, Symbol* name, Handle loader, Handle protection_domain, TRAPS); bool is_valid_protection_domain(int index, unsigned int hash, - symbolHandle name, Handle class_loader, + Symbol* name, Handle class_loader, Handle protection_domain); void add_protection_domain(int index, unsigned int hash, instanceKlassHandle klass, Handle loader, @@ -147,7 +147,7 @@ class ProtectionDomainEntry :public CHeapObj { // An entry in the system dictionary, this describes a class as // { klassOop, loader, protection_domain }. -class DictionaryEntry : public HashtableEntry { +class DictionaryEntry : public HashtableEntry { friend class VMStructs; private: // Contains the set of approved protection domains that can access @@ -166,11 +166,11 @@ class DictionaryEntry : public HashtableEntry { klassOop* klass_addr() { return (klassOop*)literal_addr(); } DictionaryEntry* next() const { - return (DictionaryEntry*)HashtableEntry::next(); + return (DictionaryEntry*)HashtableEntry::next(); } DictionaryEntry** next_addr() { - return (DictionaryEntry**)HashtableEntry::next_addr(); + return (DictionaryEntry**)HashtableEntry::next_addr(); } oop loader() const { return _loader; } @@ -209,7 +209,7 @@ class DictionaryEntry : public HashtableEntry { } } - bool equals(symbolOop class_name, oop class_loader) const { + bool equals(Symbol* class_name, oop class_loader) const { klassOop klass = (klassOop)literal(); return (instanceKlass::cast(klass)->name() == class_name && _loader == class_loader); @@ -226,9 +226,9 @@ class DictionaryEntry : public HashtableEntry { } }; -// Entry in a SymbolPropertyTable, mapping a single symbolOop +// Entry in a SymbolPropertyTable, mapping a single Symbol* // to a managed and an unmanaged pointer. -class SymbolPropertyEntry : public HashtableEntry { +class SymbolPropertyEntry : public HashtableEntry { friend class VMStructs; private: intptr_t _symbol_mode; // secondary key @@ -236,7 +236,7 @@ class SymbolPropertyEntry : public HashtableEntry { address _property_data; public: - symbolOop symbol() const { return (symbolOop) literal(); } + Symbol* symbol() const { return literal(); } intptr_t symbol_mode() const { return _symbol_mode; } void set_symbol_mode(intptr_t m) { _symbol_mode = m; } @@ -248,14 +248,13 @@ class SymbolPropertyEntry : public HashtableEntry { void set_property_data(address p) { _property_data = p; } SymbolPropertyEntry* next() const { - return (SymbolPropertyEntry*)HashtableEntry::next(); + return (SymbolPropertyEntry*)HashtableEntry::next(); } SymbolPropertyEntry** next_addr() { - return (SymbolPropertyEntry**)HashtableEntry::next_addr(); + return (SymbolPropertyEntry**)HashtableEntry::next_addr(); } - oop* symbol_addr() { return literal_addr(); } oop* property_oop_addr() { return &_property_oop; } void print_on(outputStream* st) const { @@ -279,16 +278,16 @@ class SymbolPropertyEntry : public HashtableEntry { // A system-internal mapping of symbols to pointers, both managed // and unmanaged. Used to record the auto-generation of each method // MethodHandle.invoke(S)T, for all signatures (S)T. -class SymbolPropertyTable : public Hashtable { +class SymbolPropertyTable : public Hashtable { friend class VMStructs; private: SymbolPropertyEntry* bucket(int i) { - return (SymbolPropertyEntry*) Hashtable::bucket(i); + return (SymbolPropertyEntry*) Hashtable::bucket(i); } // The following method is not MT-safe and must be done under lock. SymbolPropertyEntry** bucket_addr(int i) { - return (SymbolPropertyEntry**) Hashtable::bucket_addr(i); + return (SymbolPropertyEntry**) Hashtable::bucket_addr(i); } void add_entry(int index, SymbolPropertyEntry* new_entry) { @@ -298,8 +297,10 @@ private: ShouldNotReachHere(); } - SymbolPropertyEntry* new_entry(unsigned int hash, symbolOop symbol, intptr_t symbol_mode) { - SymbolPropertyEntry* entry = (SymbolPropertyEntry*) Hashtable::new_entry(hash, symbol); + SymbolPropertyEntry* new_entry(unsigned int hash, Symbol* symbol, intptr_t symbol_mode) { + SymbolPropertyEntry* entry = (SymbolPropertyEntry*) Hashtable::new_entry(hash, symbol); + // Hashtable with Symbol* literal must increment and decrement refcount. + symbol->increment_refcount(); entry->set_symbol_mode(symbol_mode); entry->set_property_oop(NULL); entry->set_property_data(NULL); @@ -311,23 +312,25 @@ public: SymbolPropertyTable(int table_size, HashtableBucket* t, int number_of_entries); void free_entry(SymbolPropertyEntry* entry) { - Hashtable::free_entry(entry); + // decrement Symbol refcount here because hashtable doesn't. + entry->literal()->decrement_refcount(); + Hashtable::free_entry(entry); } - unsigned int compute_hash(symbolHandle sym, intptr_t symbol_mode) { + unsigned int compute_hash(Symbol* sym, intptr_t symbol_mode) { // Use the regular identity_hash. - return Hashtable::compute_hash(sym) ^ symbol_mode; + return Hashtable::compute_hash(sym) ^ symbol_mode; } - int index_for(symbolHandle name, intptr_t symbol_mode) { + int index_for(Symbol* name, intptr_t symbol_mode) { return hash_to_index(compute_hash(name, symbol_mode)); } // need not be locked; no state change - SymbolPropertyEntry* find_entry(int index, unsigned int hash, symbolHandle name, intptr_t name_mode); + SymbolPropertyEntry* find_entry(int index, unsigned int hash, Symbol* name, intptr_t name_mode); // must be done under SystemDictionary_lock - SymbolPropertyEntry* add_entry(int index, unsigned int hash, symbolHandle name, intptr_t name_mode); + SymbolPropertyEntry* add_entry(int index, unsigned int hash, Symbol* name, intptr_t name_mode); // GC support void oops_do(OopClosure* f); @@ -343,6 +346,4 @@ public: #endif void verify(); }; - - #endif // SHARE_VM_CLASSFILE_DICTIONARY_HPP diff --git a/hotspot/src/share/vm/classfile/javaAssertions.cpp b/hotspot/src/share/vm/classfile/javaAssertions.cpp index 0c64222cb60..e56b617c53d 100644 --- a/hotspot/src/share/vm/classfile/javaAssertions.cpp +++ b/hotspot/src/share/vm/classfile/javaAssertions.cpp @@ -93,7 +93,7 @@ void JavaAssertions::addOption(const char* name, bool enable) { } oop JavaAssertions::createAssertionStatusDirectives(TRAPS) { - symbolHandle asd_sym = vmSymbolHandles::java_lang_AssertionStatusDirectives(); + Symbol* asd_sym = vmSymbols::java_lang_AssertionStatusDirectives(); klassOop k = SystemDictionary::resolve_or_fail(asd_sym, true, CHECK_NULL); instanceKlassHandle asd_klass (THREAD, k); asd_klass->initialize(CHECK_NULL); diff --git a/hotspot/src/share/vm/classfile/javaClasses.cpp b/hotspot/src/share/vm/classfile/javaClasses.cpp index 8eee5de5448..d23ff719e73 100644 --- a/hotspot/src/share/vm/classfile/javaClasses.cpp +++ b/hotspot/src/share/vm/classfile/javaClasses.cpp @@ -36,7 +36,7 @@ #include "oops/klass.hpp" #include "oops/klassOop.hpp" #include "oops/methodOop.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "oops/typeArrayOop.hpp" #include "runtime/fieldDescriptor.hpp" #include "runtime/handles.inline.hpp" @@ -57,7 +57,7 @@ #endif static bool find_field(instanceKlass* ik, - symbolOop name_symbol, symbolOop signature_symbol, + Symbol* name_symbol, Symbol* signature_symbol, fieldDescriptor* fd, bool allow_super = false) { if (allow_super) @@ -69,7 +69,7 @@ static bool find_field(instanceKlass* ik, // Helpful routine for computing field offsets at run time rather than hardcoding them static void compute_offset(int &dest_offset, - klassOop klass_oop, symbolOop name_symbol, symbolOop signature_symbol, + klassOop klass_oop, Symbol* name_symbol, Symbol* signature_symbol, bool allow_super = false) { fieldDescriptor fd; instanceKlass* ik = instanceKlass::cast(klass_oop); @@ -84,7 +84,7 @@ compute_offset(int &dest_offset, // Same as above but for "optional" offsets that might not be present in certain JDK versions static void compute_optional_offset(int& dest_offset, - klassOop klass_oop, symbolOop name_symbol, symbolOop signature_symbol, + klassOop klass_oop, Symbol* name_symbol, Symbol* signature_symbol, bool allow_super = false) { fieldDescriptor fd; instanceKlass* ik = instanceKlass::cast(klass_oop); @@ -164,7 +164,7 @@ oop java_lang_String::create_oop_from_str(const char* utf8_str, TRAPS) { return h_obj(); } -Handle java_lang_String::create_from_symbol(symbolHandle symbol, TRAPS) { +Handle java_lang_String::create_from_symbol(Symbol* symbol, TRAPS) { int length = UTF8::unicode_length((char*)symbol->bytes(), symbol->utf8_length()); Handle h_obj = basic_create(length, false, CHECK_NH); if (length > 0) { @@ -278,17 +278,17 @@ jchar* java_lang_String::as_unicode_string(oop java_string, int& length) { return result; } -symbolHandle java_lang_String::as_symbol(Handle java_string, TRAPS) { +Symbol* java_lang_String::as_symbol(Handle java_string, TRAPS) { oop obj = java_string(); typeArrayOop value = java_lang_String::value(obj); int offset = java_lang_String::offset(obj); int length = java_lang_String::length(obj); jchar* base = (length == 0) ? NULL : value->char_at_addr(offset); - symbolOop sym = SymbolTable::lookup_unicode(base, length, THREAD); - return symbolHandle(THREAD, sym); + Symbol* sym = SymbolTable::lookup_unicode(base, length, THREAD); + return sym; } -symbolOop java_lang_String::as_symbol_or_null(oop java_string) { +Symbol* java_lang_String::as_symbol_or_null(oop java_string) { typeArrayOop value = java_lang_String::value(java_string); int offset = java_lang_String::offset(java_string); int length = java_lang_String::length(java_string); @@ -437,7 +437,7 @@ klassOop java_lang_Class::as_klassOop(oop java_class) { void java_lang_Class::print_signature(oop java_class, outputStream* st) { assert(java_lang_Class::is_instance(java_class), "must be a Class object"); - symbolOop name = NULL; + Symbol* name = NULL; bool is_instance = false; if (is_primitive(java_class)) { name = vmSymbols::type_signature(primitive_type(java_class)); @@ -455,25 +455,32 @@ void java_lang_Class::print_signature(oop java_class, outputStream* st) { if (is_instance) st->print(";"); } -symbolOop java_lang_Class::as_signature(oop java_class, bool intern_if_not_found, TRAPS) { +Symbol* java_lang_Class::as_signature(oop java_class, bool intern_if_not_found, TRAPS) { assert(java_lang_Class::is_instance(java_class), "must be a Class object"); - symbolOop name = NULL; + Symbol* name; if (is_primitive(java_class)) { - return vmSymbols::type_signature(primitive_type(java_class)); + name = vmSymbols::type_signature(primitive_type(java_class)); + // Because this can create a new symbol, the caller has to decrement + // the refcount, so make adjustment here and below for symbols returned + // that are not created or incremented due to a successful lookup. + name->increment_refcount(); } else { klassOop k = as_klassOop(java_class); if (!Klass::cast(k)->oop_is_instance()) { - return Klass::cast(k)->name(); + name = Klass::cast(k)->name(); + name->increment_refcount(); } else { ResourceMark rm; const char* sigstr = Klass::cast(k)->signature_name(); int siglen = (int) strlen(sigstr); - if (!intern_if_not_found) - return SymbolTable::probe(sigstr, siglen); - else - return oopFactory::new_symbol(sigstr, siglen, THREAD); + if (!intern_if_not_found) { + name = SymbolTable::probe(sigstr, siglen); + } else { + name = SymbolTable::new_symbol(sigstr, siglen, THREAD); + } } } + return name; } @@ -1022,8 +1029,8 @@ void java_lang_Throwable::print_to_stream(Handle stream, const char* str) { JavaCalls::call_virtual(&result, stream, KlassHandle(THREAD, stream->klass()), - vmSymbolHandles::println_name(), - vmSymbolHandles::char_array_void_signature(), + vmSymbols::println_name(), + vmSymbols::char_array_void_signature(), arg, THREAD); } @@ -1077,8 +1084,8 @@ void java_lang_Throwable::print_stack_trace(oop throwable, outputStream* st) { JavaCalls::call_virtual(&result, h_throwable, KlassHandle(THREAD, h_throwable->klass()), - vmSymbolHandles::getCause_name(), - vmSymbolHandles::void_throwable_signature(), + vmSymbols::getCause_name(), + vmSymbols::void_throwable_signature(), THREAD); // Ignore any exceptions. we are in the middle of exception handling. Same as classic VM. if (HAS_PENDING_EXCEPTION) { @@ -1516,7 +1523,7 @@ oop java_lang_StackTraceElement::create(methodHandle method, int bci, TRAPS) { oop methodname = StringTable::intern(method->name(), CHECK_0); java_lang_StackTraceElement::set_methodName(element(), methodname); // Fill in source file name - symbolOop source = instanceKlass::cast(method->method_holder())->source_file_name(); + Symbol* source = instanceKlass::cast(method->method_holder())->source_file_name(); oop filename = StringTable::intern(source, CHECK_0); java_lang_StackTraceElement::set_fileName(element(), filename); // File in source line number @@ -1732,7 +1739,7 @@ void java_lang_reflect_Constructor::compute_offsets() { Handle java_lang_reflect_Constructor::create(TRAPS) { assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); - symbolHandle name = vmSymbolHandles::java_lang_reflect_Constructor(); + Symbol* name = vmSymbols::java_lang_reflect_Constructor(); klassOop k = SystemDictionary::resolve_or_fail(name, true, CHECK_NH); instanceKlassHandle klass (THREAD, k); // Ensure it is initialized @@ -1854,7 +1861,7 @@ void java_lang_reflect_Field::compute_offsets() { Handle java_lang_reflect_Field::create(TRAPS) { assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); - symbolHandle name = vmSymbolHandles::java_lang_reflect_Field(); + Symbol* name = vmSymbols::java_lang_reflect_Field(); klassOop k = SystemDictionary::resolve_or_fail(name, true, CHECK_NH); instanceKlassHandle klass (THREAD, k); // Ensure it is initialized @@ -2422,16 +2429,19 @@ void java_dyn_MethodType::print_signature(oop mt, outputStream* st) { java_lang_Class::print_signature(rtype(mt), st); } -symbolOop java_dyn_MethodType::as_signature(oop mt, bool intern_if_not_found, TRAPS) { +Symbol* java_dyn_MethodType::as_signature(oop mt, bool intern_if_not_found, TRAPS) { ResourceMark rm; stringStream buffer(128); print_signature(mt, &buffer); const char* sigstr = buffer.base(); int siglen = (int) buffer.size(); - if (!intern_if_not_found) - return SymbolTable::probe(sigstr, siglen); - else - return oopFactory::new_symbol(sigstr, siglen, THREAD); + Symbol *name; + if (!intern_if_not_found) { + name = SymbolTable::probe(sigstr, siglen); + } else { + name = SymbolTable::new_symbol(sigstr, siglen, THREAD); + } + return name; } oop java_dyn_MethodType::rtype(oop mt) { @@ -2908,13 +2918,12 @@ void JavaClasses::compute_offsets() { bool JavaClasses::check_offset(const char *klass_name, int hardcoded_offset, const char *field_name, const char* field_sig) { EXCEPTION_MARK; fieldDescriptor fd; - symbolHandle klass_sym = oopFactory::new_symbol_handle(klass_name, CATCH); + TempNewSymbol klass_sym = SymbolTable::new_symbol(klass_name, CATCH); klassOop k = SystemDictionary::resolve_or_fail(klass_sym, true, CATCH); instanceKlassHandle h_klass (THREAD, k); - //instanceKlassHandle h_klass(klass); - symbolHandle f_name = oopFactory::new_symbol_handle(field_name, CATCH); - symbolHandle f_sig = oopFactory::new_symbol_handle(field_sig, CATCH); - if (!h_klass->find_local_field(f_name(), f_sig(), &fd)) { + TempNewSymbol f_name = SymbolTable::new_symbol(field_name, CATCH); + TempNewSymbol f_sig = SymbolTable::new_symbol(field_sig, CATCH); + if (!h_klass->find_local_field(f_name, f_sig, &fd)) { tty->print_cr("Nonstatic field %s.%s not found", klass_name, field_name); return false; } @@ -2935,12 +2944,12 @@ bool JavaClasses::check_offset(const char *klass_name, int hardcoded_offset, con bool JavaClasses::check_static_offset(const char *klass_name, int hardcoded_offset, const char *field_name, const char* field_sig) { EXCEPTION_MARK; fieldDescriptor fd; - symbolHandle klass_sym = oopFactory::new_symbol_handle(klass_name, CATCH); + TempNewSymbol klass_sym = SymbolTable::new_symbol(klass_name, CATCH); klassOop k = SystemDictionary::resolve_or_fail(klass_sym, true, CATCH); instanceKlassHandle h_klass (THREAD, k); - symbolHandle f_name = oopFactory::new_symbol_handle(field_name, CATCH); - symbolHandle f_sig = oopFactory::new_symbol_handle(field_sig, CATCH); - if (!h_klass->find_local_field(f_name(), f_sig(), &fd)) { + TempNewSymbol f_name = SymbolTable::new_symbol(field_name, CATCH); + TempNewSymbol f_sig = SymbolTable::new_symbol(field_sig, CATCH); + if (!h_klass->find_local_field(f_name, f_sig, &fd)) { tty->print_cr("Static field %s.%s not found", klass_name, field_name); return false; } @@ -2960,12 +2969,12 @@ bool JavaClasses::check_static_offset(const char *klass_name, int hardcoded_offs bool JavaClasses::check_constant(const char *klass_name, int hardcoded_constant, const char *field_name, const char* field_sig) { EXCEPTION_MARK; fieldDescriptor fd; - symbolHandle klass_sym = oopFactory::new_symbol_handle(klass_name, CATCH); + TempNewSymbol klass_sym = SymbolTable::new_symbol(klass_name, CATCH); klassOop k = SystemDictionary::resolve_or_fail(klass_sym, true, CATCH); instanceKlassHandle h_klass (THREAD, k); - symbolHandle f_name = oopFactory::new_symbol_handle(field_name, CATCH); - symbolHandle f_sig = oopFactory::new_symbol_handle(field_sig, CATCH); - if (!h_klass->find_local_field(f_name(), f_sig(), &fd)) { + TempNewSymbol f_name = SymbolTable::new_symbol(field_name, CATCH); + TempNewSymbol f_sig = SymbolTable::new_symbol(field_sig, CATCH); + if (!h_klass->find_local_field(f_name, f_sig, &fd)) { tty->print_cr("Static field %s.%s not found", klass_name, field_name); return false; } diff --git a/hotspot/src/share/vm/classfile/javaClasses.hpp b/hotspot/src/share/vm/classfile/javaClasses.hpp index bb65db96158..813ae615d1b 100644 --- a/hotspot/src/share/vm/classfile/javaClasses.hpp +++ b/hotspot/src/share/vm/classfile/javaClasses.hpp @@ -78,7 +78,7 @@ class java_lang_String : AllStatic { static oop create_oop_from_unicode(jchar* unicode, int len, TRAPS); static Handle create_from_str(const char* utf8_str, TRAPS); static oop create_oop_from_str(const char* utf8_str, TRAPS); - static Handle create_from_symbol(symbolHandle symbol, TRAPS); + static Handle create_from_symbol(Symbol* symbol, TRAPS); static Handle create_from_platform_dependent_str(const char* str, TRAPS); static Handle char_converter(Handle java_string, jchar from_char, jchar to_char, TRAPS); @@ -116,8 +116,8 @@ class java_lang_String : AllStatic { static Handle internalize_classname(Handle java_string, TRAPS) { return char_converter(java_string, '.', '/', THREAD); } // Conversion - static symbolHandle as_symbol(Handle java_string, TRAPS); - static symbolOop as_symbol_or_null(oop java_string); + static Symbol* as_symbol(Handle java_string, TRAPS); + static Symbol* as_symbol_or_null(oop java_string); // Testers static bool is_instance(oop obj) { @@ -167,7 +167,7 @@ class java_lang_Class : AllStatic { (*reference_klass) = KlassHandle(refk_oop); return result; } - static symbolOop as_signature(oop java_class, bool intern_if_not_found, TRAPS); + static Symbol* as_signature(oop java_class, bool intern_if_not_found, TRAPS); static void print_signature(oop java_class, outputStream *st); // Testing static bool is_instance(oop obj) { @@ -1039,7 +1039,7 @@ class java_dyn_MethodType: AllStatic { static oop ptype(oop mt, int index); static int ptype_count(oop mt); - static symbolOop as_signature(oop mt, bool intern_if_not_found, TRAPS); + static Symbol* as_signature(oop mt, bool intern_if_not_found, TRAPS); static void print_signature(oop mt, outputStream* st); static bool is_instance(oop obj) { diff --git a/hotspot/src/share/vm/classfile/loaderConstraints.cpp b/hotspot/src/share/vm/classfile/loaderConstraints.cpp index cd608191169..1cf77f9dab5 100644 --- a/hotspot/src/share/vm/classfile/loaderConstraints.cpp +++ b/hotspot/src/share/vm/classfile/loaderConstraints.cpp @@ -31,28 +31,33 @@ #include "utilities/hashtable.inline.hpp" LoaderConstraintTable::LoaderConstraintTable(int nof_buckets) - : Hashtable(nof_buckets, sizeof(LoaderConstraintEntry)) {}; + : Hashtable(nof_buckets, sizeof(LoaderConstraintEntry)) {}; LoaderConstraintEntry* LoaderConstraintTable::new_entry( - unsigned int hash, symbolOop name, + unsigned int hash, Symbol* name, klassOop klass, int num_loaders, int max_loaders) { LoaderConstraintEntry* entry; - entry = (LoaderConstraintEntry*)Hashtable::new_entry(hash, klass); + entry = (LoaderConstraintEntry*)Hashtable::new_entry(hash, klass); entry->set_name(name); entry->set_num_loaders(num_loaders); entry->set_max_loaders(max_loaders); return entry; } +void LoaderConstraintTable::free_entry(LoaderConstraintEntry *entry) { + // decrement name refcount before freeing + entry->name()->decrement_refcount(); + Hashtable::free_entry(entry); +} + void LoaderConstraintTable::oops_do(OopClosure* f) { for (int index = 0; index < table_size(); index++) { for (LoaderConstraintEntry* probe = bucket(index); probe != NULL; probe = probe->next()) { - f->do_oop((oop*)(probe->name_addr())); if (probe->klass() != NULL) { f->do_oop((oop*)probe->klass_addr()); } @@ -65,27 +70,13 @@ void LoaderConstraintTable::oops_do(OopClosure* f) { } } -// We must keep the symbolOop used in the name alive. We'll use the -// loaders to decide if a particular entry can be purged. -void LoaderConstraintTable::always_strong_classes_do(OopClosure* blk) { - // We must keep the symbolOop used in the name alive. - for (int cindex = 0; cindex < table_size(); cindex++) { - for (LoaderConstraintEntry* lc_probe = bucket(cindex); - lc_probe != NULL; - lc_probe = lc_probe->next()) { - assert (lc_probe->name() != NULL, "corrupted loader constraint table"); - blk->do_oop((oop*)lc_probe->name_addr()); - } - } -} - // The loaderConstraintTable must always be accessed with the // SystemDictionary lock held. This is true even for readers as // entries in the table could be being dynamically resized. LoaderConstraintEntry** LoaderConstraintTable::find_loader_constraint( - symbolHandle name, Handle loader) { + Symbol* name, Handle loader) { unsigned int hash = compute_hash(name); int index = hash_to_index(hash); @@ -93,7 +84,7 @@ LoaderConstraintEntry** LoaderConstraintTable::find_loader_constraint( while (*pp) { LoaderConstraintEntry* p = *pp; if (p->hash() == hash) { - if (p->name() == name()) { + if (p->name() == name) { for (int i = p->num_loaders() - 1; i >= 0; i--) { if (p->loader(i) == loader()) { return pp; @@ -177,7 +168,6 @@ void LoaderConstraintTable::purge_loader_constraints(BoolObjectClosure* is_alive free_entry(probe); } else { #ifdef ASSERT - assert(is_alive->do_object_b(probe->name()), "name should be live"); if (probe->klass() != NULL) { assert(is_alive->do_object_b(probe->klass()), "klass should be live"); } @@ -194,7 +184,7 @@ void LoaderConstraintTable::purge_loader_constraints(BoolObjectClosure* is_alive } } -bool LoaderConstraintTable::add_entry(symbolHandle class_name, +bool LoaderConstraintTable::add_entry(Symbol* class_name, klassOop klass1, Handle class_loader1, klassOop klass2, Handle class_loader2) { int failure_code = 0; // encode different reasons for failing @@ -233,7 +223,7 @@ bool LoaderConstraintTable::add_entry(symbolHandle class_name, unsigned int hash = compute_hash(class_name); int index = hash_to_index(hash); LoaderConstraintEntry* p; - p = new_entry(hash, class_name(), klass, 2, 2); + p = new_entry(hash, class_name, klass, 2, 2); p->set_loaders(NEW_C_HEAP_ARRAY(oop, 2)); p->set_loader(0, class_loader1()); p->set_loader(1, class_loader2()); @@ -244,7 +234,7 @@ bool LoaderConstraintTable::add_entry(symbolHandle class_name, ResourceMark rm; tty->print("[Adding new constraint for name: %s, loader[0]: %s," " loader[1]: %s ]\n", - class_name()->as_C_string(), + class_name->as_C_string(), SystemDictionary::loader_name(class_loader1()), SystemDictionary::loader_name(class_loader2()) ); @@ -257,7 +247,7 @@ bool LoaderConstraintTable::add_entry(symbolHandle class_name, ResourceMark rm; tty->print("[Setting class object in existing constraint for" " name: %s and loader %s ]\n", - class_name()->as_C_string(), + class_name->as_C_string(), SystemDictionary::loader_name(class_loader1()) ); } @@ -288,7 +278,7 @@ bool LoaderConstraintTable::add_entry(symbolHandle class_name, } tty->print("[Failed to add constraint for name: %s, loader[0]: %s," " loader[1]: %s, Reason: %s ]\n", - class_name()->as_C_string(), + class_name->as_C_string(), SystemDictionary::loader_name(class_loader1()), SystemDictionary::loader_name(class_loader2()), reason @@ -303,14 +293,14 @@ bool LoaderConstraintTable::add_entry(symbolHandle class_name, // violated bool LoaderConstraintTable::check_or_update(instanceKlassHandle k, Handle loader, - symbolHandle name) { + Symbol* name) { LoaderConstraintEntry* p = *(find_loader_constraint(name, loader)); if (p && p->klass() != NULL && p->klass() != k()) { if (TraceLoaderConstraints) { ResourceMark rm; tty->print("[Constraint check failed for name %s, loader %s: " "the presented class object differs from that stored ]\n", - name()->as_C_string(), + name->as_C_string(), SystemDictionary::loader_name(loader())); } return false; @@ -321,7 +311,7 @@ bool LoaderConstraintTable::check_or_update(instanceKlassHandle k, ResourceMark rm; tty->print("[Updating constraint for name %s, loader %s, " "by setting class object ]\n", - name()->as_C_string(), + name->as_C_string(), SystemDictionary::loader_name(loader())); } } @@ -329,7 +319,7 @@ bool LoaderConstraintTable::check_or_update(instanceKlassHandle k, } } -klassOop LoaderConstraintTable::find_constrained_klass(symbolHandle name, +klassOop LoaderConstraintTable::find_constrained_klass(Symbol* name, Handle loader) { LoaderConstraintEntry *p = *(find_loader_constraint(name, loader)); if (p != NULL && p->klass() != NULL) @@ -442,11 +432,10 @@ void LoaderConstraintTable::verify(Dictionary* dictionary, for (LoaderConstraintEntry* probe = bucket(cindex); probe != NULL; probe = probe->next()) { - guarantee(probe->name()->is_symbol(), "should be symbol"); if (probe->klass() != NULL) { instanceKlass* ik = instanceKlass::cast(probe->klass()); guarantee(ik->name() == probe->name(), "name should match"); - symbolHandle name (thread, ik->name()); + Symbol* name = ik->name(); Handle loader(thread, ik->class_loader()); unsigned int d_hash = dictionary->compute_hash(name, loader); int d_index = dictionary->hash_to_index(d_hash); diff --git a/hotspot/src/share/vm/classfile/loaderConstraints.hpp b/hotspot/src/share/vm/classfile/loaderConstraints.hpp index c6dd29ae639..1efec51d5d5 100644 --- a/hotspot/src/share/vm/classfile/loaderConstraints.hpp +++ b/hotspot/src/share/vm/classfile/loaderConstraints.hpp @@ -31,7 +31,7 @@ class LoaderConstraintEntry; -class LoaderConstraintTable : public Hashtable { +class LoaderConstraintTable : public Hashtable { friend class VMStructs; private: @@ -40,39 +40,39 @@ private: _nof_buckets = 1009 // number of buckets in hash table }; - LoaderConstraintEntry** find_loader_constraint(symbolHandle name, + LoaderConstraintEntry** find_loader_constraint(Symbol* name, Handle loader); public: LoaderConstraintTable(int nof_buckets); - LoaderConstraintEntry* new_entry(unsigned int hash, symbolOop name, + LoaderConstraintEntry* new_entry(unsigned int hash, Symbol* name, klassOop klass, int num_loaders, int max_loaders); + void free_entry(LoaderConstraintEntry *entry); LoaderConstraintEntry* bucket(int i) { - return (LoaderConstraintEntry*)Hashtable::bucket(i); + return (LoaderConstraintEntry*)Hashtable::bucket(i); } LoaderConstraintEntry** bucket_addr(int i) { - return (LoaderConstraintEntry**)Hashtable::bucket_addr(i); + return (LoaderConstraintEntry**)Hashtable::bucket_addr(i); } // GC support void oops_do(OopClosure* f); - void always_strong_classes_do(OopClosure* blk); // Check class loader constraints - bool add_entry(symbolHandle name, klassOop klass1, Handle loader1, + bool add_entry(Symbol* name, klassOop klass1, Handle loader1, klassOop klass2, Handle loader2); // Note: The main entry point for this module is via SystemDictionary. - // SystemDictionary::check_signature_loaders(symbolHandle signature, + // SystemDictionary::check_signature_loaders(Symbol* signature, // Handle loader1, Handle loader2, // bool is_method, TRAPS) - klassOop find_constrained_klass(symbolHandle name, Handle loader); + klassOop find_constrained_klass(Symbol* name, Handle loader); // Class loader constraints @@ -83,7 +83,7 @@ public: LoaderConstraintEntry** pp2, klassOop klass); bool check_or_update(instanceKlassHandle k, Handle loader, - symbolHandle name); + Symbol* name); void purge_loader_constraints(BoolObjectClosure* is_alive); @@ -94,34 +94,36 @@ public: #endif }; -class LoaderConstraintEntry : public HashtableEntry { +class LoaderConstraintEntry : public HashtableEntry { friend class VMStructs; private: - symbolOop _name; // class name + Symbol* _name; // class name int _num_loaders; int _max_loaders; oop* _loaders; // initiating loaders public: - klassOop klass() { return (klassOop)literal(); } - klassOop* klass_addr() { return (klassOop*)literal_addr(); } + klassOop klass() { return literal(); } + klassOop* klass_addr() { return literal_addr(); } void set_klass(klassOop k) { set_literal(k); } LoaderConstraintEntry* next() { - return (LoaderConstraintEntry*)HashtableEntry::next(); + return (LoaderConstraintEntry*)HashtableEntry::next(); } LoaderConstraintEntry** next_addr() { - return (LoaderConstraintEntry**)HashtableEntry::next_addr(); + return (LoaderConstraintEntry**)HashtableEntry::next_addr(); } void set_next(LoaderConstraintEntry* next) { - HashtableEntry::set_next(next); + HashtableEntry::set_next(next); } - symbolOop name() { return _name; } - symbolOop* name_addr() { return &_name; } - void set_name(symbolOop name) { _name = name; } + Symbol* name() { return _name; } + void set_name(Symbol* name) { + _name = name; + if (name != NULL) name->increment_refcount(); + } int num_loaders() { return _num_loaders; } void set_num_loaders(int i) { _num_loaders = i; } diff --git a/hotspot/src/share/vm/classfile/placeholders.cpp b/hotspot/src/share/vm/classfile/placeholders.cpp index 6deba4f1bc3..9099f28cb51 100644 --- a/hotspot/src/share/vm/classfile/placeholders.cpp +++ b/hotspot/src/share/vm/classfile/placeholders.cpp @@ -31,10 +31,12 @@ // Placeholder methods -PlaceholderEntry* PlaceholderTable::new_entry(int hash, symbolOop name, +PlaceholderEntry* PlaceholderTable::new_entry(int hash, Symbol* name, oop loader, bool havesupername, - symbolOop supername) { - PlaceholderEntry* entry = (PlaceholderEntry*)Hashtable::new_entry(hash, name); + Symbol* supername) { + PlaceholderEntry* entry = (PlaceholderEntry*)Hashtable::new_entry(hash, name); + // Hashtable with Symbol* literal must increment and decrement refcount. + name->increment_refcount(); entry->set_loader(loader); entry->set_havesupername(havesupername); entry->set_supername(supername); @@ -46,33 +48,40 @@ PlaceholderEntry* PlaceholderTable::new_entry(int hash, symbolOop name, return entry; } +void PlaceholderTable::free_entry(PlaceholderEntry* entry) { + // decrement Symbol refcount here because Hashtable doesn't. + entry->literal()->decrement_refcount(); + if (entry->supername() != NULL) entry->supername()->decrement_refcount(); + Hashtable::free_entry(entry); +} + // Placeholder objects represent classes currently being loaded. // All threads examining the placeholder table must hold the // SystemDictionary_lock, so we don't need special precautions // on store ordering here. void PlaceholderTable::add_entry(int index, unsigned int hash, - symbolHandle class_name, Handle class_loader, - bool havesupername, symbolHandle supername){ + Symbol* class_name, Handle class_loader, + bool havesupername, Symbol* supername){ assert_locked_or_safepoint(SystemDictionary_lock); - assert(!class_name.is_null(), "adding NULL obj"); + assert(class_name != NULL, "adding NULL obj"); // Both readers and writers are locked so it's safe to just // create the placeholder and insert it in the list without a membar. - PlaceholderEntry* entry = new_entry(hash, class_name(), class_loader(), havesupername, supername()); + PlaceholderEntry* entry = new_entry(hash, class_name, class_loader(), havesupername, supername); add_entry(index, entry); } // Remove a placeholder object. void PlaceholderTable::remove_entry(int index, unsigned int hash, - symbolHandle class_name, + Symbol* class_name, Handle class_loader) { assert_locked_or_safepoint(SystemDictionary_lock); PlaceholderEntry** p = bucket_addr(index); while (*p) { PlaceholderEntry *probe = *p; - if (probe->hash() == hash && probe->equals(class_name(), class_loader())) { + if (probe->hash() == hash && probe->equals(class_name, class_loader())) { // Delete entry *p = probe->next(); free_entry(probe); @@ -83,29 +92,28 @@ void PlaceholderTable::remove_entry(int index, unsigned int hash, } PlaceholderEntry* PlaceholderTable::get_entry(int index, unsigned int hash, - symbolHandle class_name, + Symbol* class_name, Handle class_loader) { assert_locked_or_safepoint(SystemDictionary_lock); - symbolOop class_name_ = class_name(); oop class_loader_ = class_loader(); for (PlaceholderEntry *place_probe = bucket(index); place_probe != NULL; place_probe = place_probe->next()) { if (place_probe->hash() == hash && - place_probe->equals(class_name_, class_loader_)) { + place_probe->equals(class_name, class_loader_)) { return place_probe; } } return NULL; } -symbolOop PlaceholderTable::find_entry(int index, unsigned int hash, - symbolHandle class_name, +Symbol* PlaceholderTable::find_entry(int index, unsigned int hash, + Symbol* class_name, Handle class_loader) { PlaceholderEntry* probe = get_entry(index, hash, class_name, class_loader); - return (probe? probe->klass(): symbolOop(NULL)); + return (probe? probe->klassname(): (Symbol*)NULL); } // find_and_add returns probe pointer - old or new @@ -113,7 +121,7 @@ symbolOop PlaceholderTable::find_entry(int index, unsigned int hash, // If entry exists, reuse entry // For both, push SeenThread for classloadAction // if havesupername: this is used for circularity for instanceklass loading -PlaceholderEntry* PlaceholderTable::find_and_add(int index, unsigned int hash, symbolHandle name, Handle loader, classloadAction action, symbolHandle supername, Thread* thread) { +PlaceholderEntry* PlaceholderTable::find_and_add(int index, unsigned int hash, Symbol* name, Handle loader, classloadAction action, Symbol* supername, Thread* thread) { PlaceholderEntry* probe = get_entry(index, hash, name, loader); if (probe == NULL) { // Nothing found, add place holder @@ -122,7 +130,7 @@ PlaceholderEntry* PlaceholderTable::find_and_add(int index, unsigned int hash, s } else { if (action == LOAD_SUPER) { probe->set_havesupername(true); - probe->set_supername(supername()); + probe->set_supername(supername); } } if (probe) probe->add_seen_thread(thread, action); @@ -145,7 +153,7 @@ PlaceholderEntry* PlaceholderTable::find_and_add(int index, unsigned int hash, s // Therefore - must always check SD first // Ignores the case where entry is not found void PlaceholderTable::find_and_remove(int index, unsigned int hash, - symbolHandle name, Handle loader, Thread* thread) { + Symbol* name, Handle loader, Thread* thread) { assert_locked_or_safepoint(SystemDictionary_lock); PlaceholderEntry *probe = get_entry(index, hash, name, loader); if (probe != NULL) { @@ -158,7 +166,7 @@ void PlaceholderTable::find_and_remove(int index, unsigned int hash, } PlaceholderTable::PlaceholderTable(int table_size) - : TwoOopHashtable(table_size, sizeof(PlaceholderEntry)) { + : TwoOopHashtable(table_size, sizeof(PlaceholderEntry)) { } @@ -174,26 +182,22 @@ void PlaceholderTable::oops_do(OopClosure* f) { void PlaceholderEntry::oops_do(OopClosure* blk) { - assert(klass() != NULL, "should have a non-null klass"); - blk->do_oop((oop*)klass_addr()); + assert(klassname() != NULL, "should have a non-null klass"); if (_loader != NULL) { blk->do_oop(loader_addr()); } - if (_supername != NULL) { - blk->do_oop((oop*)supername_addr()); - } if (_instanceKlass != NULL) { blk->do_oop((oop*)instanceKlass_addr()); } } // do all entries in the placeholder table -void PlaceholderTable::entries_do(void f(symbolOop, oop)) { +void PlaceholderTable::entries_do(void f(Symbol*, oop)) { for (int index = 0; index < table_size(); index++) { for (PlaceholderEntry* probe = bucket(index); probe != NULL; probe = probe->next()) { - f(probe->klass(), probe->loader()); + f(probe->klassname(), probe->loader()); } } } @@ -202,7 +206,7 @@ void PlaceholderTable::entries_do(void f(symbolOop, oop)) { #ifndef PRODUCT // Note, doesn't append a cr void PlaceholderEntry::print() const { - klass()->print_value(); + klassname()->print_value(); if (loader() != NULL) { tty->print(", loader "); loader()->print_value(); @@ -238,7 +242,6 @@ void PlaceholderEntry::verify() const { guarantee(instanceKlass() == NULL || Klass::cast(instanceKlass())->oop_is_instance(), "checking type of instanceKlass result"); - klass()->verify(); } void PlaceholderTable::verify() { diff --git a/hotspot/src/share/vm/classfile/placeholders.hpp b/hotspot/src/share/vm/classfile/placeholders.hpp index 82c7aaffff8..852bf769426 100644 --- a/hotspot/src/share/vm/classfile/placeholders.hpp +++ b/hotspot/src/share/vm/classfile/placeholders.hpp @@ -34,35 +34,36 @@ class PlaceholderEntry; // being loaded, as well as arrays of primitives. // -class PlaceholderTable : public TwoOopHashtable { +class PlaceholderTable : public TwoOopHashtable { friend class VMStructs; public: PlaceholderTable(int table_size); - PlaceholderEntry* new_entry(int hash, symbolOop name, oop loader, bool havesupername, symbolOop supername); + PlaceholderEntry* new_entry(int hash, Symbol* name, oop loader, bool havesupername, Symbol* supername); + void free_entry(PlaceholderEntry* entry); PlaceholderEntry* bucket(int i) { - return (PlaceholderEntry*)Hashtable::bucket(i); + return (PlaceholderEntry*)Hashtable::bucket(i); } PlaceholderEntry** bucket_addr(int i) { - return (PlaceholderEntry**)Hashtable::bucket_addr(i); + return (PlaceholderEntry**)Hashtable::bucket_addr(i); } void add_entry(int index, PlaceholderEntry* new_entry) { - Hashtable::add_entry(index, (HashtableEntry*)new_entry); + Hashtable::add_entry(index, (HashtableEntry*)new_entry); } - void add_entry(int index, unsigned int hash, symbolHandle name, - Handle loader, bool havesupername, symbolHandle supername); + void add_entry(int index, unsigned int hash, Symbol* name, + Handle loader, bool havesupername, Symbol* supername); -// This returns a symbolOop to match type for SystemDictionary - symbolOop find_entry(int index, unsigned int hash, - symbolHandle name, Handle loader); + // This returns a Symbol* to match type for SystemDictionary + Symbol* find_entry(int index, unsigned int hash, + Symbol* name, Handle loader); PlaceholderEntry* get_entry(int index, unsigned int hash, - symbolHandle name, Handle loader); + Symbol* name, Handle loader); // caller to create a placeholder entry must enumerate an action // caller claims ownership of that action @@ -84,22 +85,22 @@ public: // If no entry exists, add a placeholder entry and push SeenThread // If entry exists, reuse entry and push SeenThread for classloadAction PlaceholderEntry* find_and_add(int index, unsigned int hash, - symbolHandle name, Handle loader, - classloadAction action, symbolHandle supername, + Symbol* name, Handle loader, + classloadAction action, Symbol* supername, Thread* thread); void remove_entry(int index, unsigned int hash, - symbolHandle name, Handle loader); + Symbol* name, Handle loader); // Remove placeholder information void find_and_remove(int index, unsigned int hash, - symbolHandle name, Handle loader, Thread* thread); + Symbol* name, Handle loader, Thread* thread); // GC support. void oops_do(OopClosure* f); // JVMTI support - void entries_do(void f(symbolOop, oop)); + void entries_do(void f(Symbol*, oop)); #ifndef PRODUCT void print(); @@ -151,14 +152,14 @@ public: // on store ordering here. // The system dictionary is the only user of this class. -class PlaceholderEntry : public HashtableEntry { +class PlaceholderEntry : public HashtableEntry { friend class VMStructs; private: oop _loader; // initiating loader bool _havesupername; // distinguish between null supername, and unknown - symbolOop _supername; + Symbol* _supername; Thread* _definer; // owner of define token klassOop _instanceKlass; // instanceKlass from successful define SeenThread* _superThreadQ; // doubly-linked queue of Threads loading a superclass for this class @@ -173,8 +174,7 @@ class PlaceholderEntry : public HashtableEntry { public: // Simple accessors, used only by SystemDictionary - symbolOop klass() const { return (symbolOop)literal(); } - symbolOop* klass_addr() { return (symbolOop*)literal_addr(); } + Symbol* klassname() const { return literal(); } oop loader() const { return _loader; } void set_loader(oop loader) { _loader = loader; } @@ -183,9 +183,11 @@ class PlaceholderEntry : public HashtableEntry { bool havesupername() const { return _havesupername; } void set_havesupername(bool havesupername) { _havesupername = havesupername; } - symbolOop supername() const { return _supername; } - void set_supername(symbolOop supername) { _supername = supername; } - symbolOop* supername_addr() { return &_supername; } + Symbol* supername() const { return _supername; } + void set_supername(Symbol* supername) { + _supername = supername; + if (_supername != NULL) _supername->increment_refcount(); + } Thread* definer() const {return _definer; } void set_definer(Thread* definer) { _definer = definer; } @@ -204,17 +206,17 @@ class PlaceholderEntry : public HashtableEntry { void set_defineThreadQ(SeenThread* SeenThread) { _defineThreadQ = SeenThread; } PlaceholderEntry* next() const { - return (PlaceholderEntry*)HashtableEntry::next(); + return (PlaceholderEntry*)HashtableEntry::next(); } PlaceholderEntry** next_addr() { - return (PlaceholderEntry**)HashtableEntry::next_addr(); + return (PlaceholderEntry**)HashtableEntry::next_addr(); } // Test for equality // Entries are unique for class/classloader name pair - bool equals(symbolOop class_name, oop class_loader) const { - return (klass() == class_name && loader() == class_loader); + bool equals(Symbol* class_name, oop class_loader) const { + return (klassname() == class_name && loader() == class_loader); } SeenThread* actionToQueue(PlaceholderTable::classloadAction action) { diff --git a/hotspot/src/share/vm/classfile/resolutionErrors.cpp b/hotspot/src/share/vm/classfile/resolutionErrors.cpp index 1de360541ad..c61c6689b39 100644 --- a/hotspot/src/share/vm/classfile/resolutionErrors.cpp +++ b/hotspot/src/share/vm/classfile/resolutionErrors.cpp @@ -32,12 +32,12 @@ // add new entry to the table void ResolutionErrorTable::add_entry(int index, unsigned int hash, - constantPoolHandle pool, int cp_index, symbolHandle error) + constantPoolHandle pool, int cp_index, Symbol* error) { assert_locked_or_safepoint(SystemDictionary_lock); - assert(!pool.is_null() && !error.is_null(), "adding NULL obj"); + assert(!pool.is_null() && error != NULL, "adding NULL obj"); - ResolutionErrorEntry* entry = new_entry(hash, pool(), cp_index, error()); + ResolutionErrorEntry* entry = new_entry(hash, pool(), cp_index, error); add_entry(index, entry); } @@ -57,20 +57,35 @@ ResolutionErrorEntry* ResolutionErrorTable::find_entry(int index, unsigned int h return NULL; } +void ResolutionErrorEntry::set_error(Symbol* e) { + assert(e == NULL || _error == NULL, "cannot reset error"); + _error = e; + if (_error != NULL) _error->increment_refcount(); +} + // create new error entry ResolutionErrorEntry* ResolutionErrorTable::new_entry(int hash, constantPoolOop pool, - int cp_index, symbolOop error) + int cp_index, Symbol* error) { - ResolutionErrorEntry* entry = (ResolutionErrorEntry*)Hashtable::new_entry(hash, pool); + ResolutionErrorEntry* entry = (ResolutionErrorEntry*)Hashtable::new_entry(hash, pool); entry->set_cp_index(cp_index); + NOT_PRODUCT(entry->set_error(NULL);) entry->set_error(error); return entry; } +void ResolutionErrorTable::free_entry(ResolutionErrorEntry *entry) { + // decrement error refcount + assert(entry->error() != NULL, "error should be set"); + entry->error()->decrement_refcount(); + Hashtable::free_entry(entry); +} + + // create resolution error table ResolutionErrorTable::ResolutionErrorTable(int table_size) - : Hashtable(table_size, sizeof(ResolutionErrorEntry)) { + : Hashtable(table_size, sizeof(ResolutionErrorEntry)) { } // GC support @@ -80,7 +95,7 @@ void ResolutionErrorTable::oops_do(OopClosure* f) { probe != NULL; probe = probe->next()) { assert(probe->pool() != (constantPoolOop)NULL, "resolution error table is corrupt"); - assert(probe->error() != (symbolOop)NULL, "resolution error table is corrupt"); + assert(probe->error() != (Symbol*)NULL, "resolution error table is corrupt"); probe->oops_do(f); } } @@ -89,20 +104,6 @@ void ResolutionErrorTable::oops_do(OopClosure* f) { // GC support void ResolutionErrorEntry::oops_do(OopClosure* blk) { blk->do_oop((oop*)pool_addr()); - blk->do_oop((oop*)error_addr()); -} - -// We must keep the symbolOop used in the error alive. The constantPoolOop will -// decide when the entry can be purged. -void ResolutionErrorTable::always_strong_classes_do(OopClosure* blk) { - for (int i = 0; i < table_size(); i++) { - for (ResolutionErrorEntry* probe = bucket(i); - probe != NULL; - probe = probe->next()) { - assert(probe->error() != (symbolOop)NULL, "resolution error table is corrupt"); - blk->do_oop((oop*)probe->error_addr()); - } - } } // Remove unloaded entries from the table diff --git a/hotspot/src/share/vm/classfile/resolutionErrors.hpp b/hotspot/src/share/vm/classfile/resolutionErrors.hpp index 03786afd59b..fed9c083ddf 100644 --- a/hotspot/src/share/vm/classfile/resolutionErrors.hpp +++ b/hotspot/src/share/vm/classfile/resolutionErrors.hpp @@ -33,27 +33,28 @@ class ResolutionErrorEntry; // ResolutionError objects are used to record errors encountered during // constant pool resolution (JVMS 5.4.3). -class ResolutionErrorTable : public Hashtable { +class ResolutionErrorTable : public Hashtable { public: ResolutionErrorTable(int table_size); - ResolutionErrorEntry* new_entry(int hash, constantPoolOop pool, int cp_index, symbolOop error); + ResolutionErrorEntry* new_entry(int hash, constantPoolOop pool, int cp_index, Symbol* error); + void free_entry(ResolutionErrorEntry *entry); ResolutionErrorEntry* bucket(int i) { - return (ResolutionErrorEntry*)Hashtable::bucket(i); + return (ResolutionErrorEntry*)Hashtable::bucket(i); } ResolutionErrorEntry** bucket_addr(int i) { - return (ResolutionErrorEntry**)Hashtable::bucket_addr(i); + return (ResolutionErrorEntry**)Hashtable::bucket_addr(i); } void add_entry(int index, ResolutionErrorEntry* new_entry) { - Hashtable::add_entry(index, (HashtableEntry*)new_entry); + Hashtable::add_entry(index, (HashtableEntry*)new_entry); } void add_entry(int index, unsigned int hash, - constantPoolHandle pool, int which, symbolHandle error); + constantPoolHandle pool, int which, Symbol* error); // find error given the constant pool and constant pool index @@ -68,18 +69,15 @@ public: // purges unloaded entries from the table void purge_resolution_errors(BoolObjectClosure* is_alive); - // this table keeps symbolOops alive - void always_strong_classes_do(OopClosure* blk); - // GC support. void oops_do(OopClosure* f); }; -class ResolutionErrorEntry : public HashtableEntry { +class ResolutionErrorEntry : public HashtableEntry { private: int _cp_index; - symbolOop _error; + Symbol* _error; public: constantPoolOop pool() const { return (constantPoolOop)literal(); } @@ -88,16 +86,15 @@ class ResolutionErrorEntry : public HashtableEntry { int cp_index() const { return _cp_index; } void set_cp_index(int cp_index) { _cp_index = cp_index; } - symbolOop error() const { return _error; } - void set_error(symbolOop e) { _error = e; } - symbolOop* error_addr() { return &_error; } + Symbol* error() const { return _error; } + void set_error(Symbol* e); ResolutionErrorEntry* next() const { - return (ResolutionErrorEntry*)HashtableEntry::next(); + return (ResolutionErrorEntry*)HashtableEntry::next(); } ResolutionErrorEntry** next_addr() { - return (ResolutionErrorEntry**)HashtableEntry::next_addr(); + return (ResolutionErrorEntry**)HashtableEntry::next_addr(); } // GC support diff --git a/hotspot/src/share/vm/classfile/stackMapFrame.cpp b/hotspot/src/share/vm/classfile/stackMapFrame.cpp index 702d4f2578b..4203ad3d0af 100644 --- a/hotspot/src/share/vm/classfile/stackMapFrame.cpp +++ b/hotspot/src/share/vm/classfile/stackMapFrame.cpp @@ -27,7 +27,7 @@ #include "classfile/verifier.hpp" #include "memory/resourceArea.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/handles.inline.hpp" #include "utilities/globalDefinitions.hpp" @@ -90,8 +90,7 @@ void StackMapFrame::initialize_object( VerificationType StackMapFrame::set_locals_from_arg( const methodHandle m, VerificationType thisKlass, TRAPS) { - symbolHandle signature(THREAD, m->signature()); - SignatureStream ss(signature); + SignatureStream ss(m->signature()); int init_local_num = 0; if (!m->is_static()) { init_local_num++; @@ -118,8 +117,14 @@ VerificationType StackMapFrame::set_locals_from_arg( case T_OBJECT: case T_ARRAY: { - symbolOop sig = ss.as_symbol(CHECK_(VerificationType::bogus_type())); - return VerificationType::reference_type(symbolHandle(THREAD, sig)); + Symbol* sig = ss.as_symbol(CHECK_(VerificationType::bogus_type())); + // Create another symbol to save as signature stream unreferences + // this symbol. + Symbol* sig_copy = + verifier()->create_temporary_symbol(sig, 0, sig->utf8_length(), + CHECK_(VerificationType::bogus_type())); + assert(sig_copy == sig, "symbols don't match"); + return VerificationType::reference_type(sig_copy); } case T_INT: return VerificationType::integer_type(); case T_BYTE: return VerificationType::byte_type(); @@ -157,7 +162,7 @@ bool StackMapFrame::is_assignable_to( VerificationType* from, VerificationType* to, int32_t len, TRAPS) const { for (int32_t i = 0; i < len; i++) { bool subtype = to[i].is_assignable_from( - from[i], verifier()->current_class(), THREAD); + from[i], verifier(), THREAD); if (!subtype) { return false; } @@ -187,7 +192,7 @@ VerificationType StackMapFrame::pop_stack_ex(VerificationType type, TRAPS) { } VerificationType top = _stack[--_stack_size]; bool subtype = type.is_assignable_from( - top, verifier()->current_class(), CHECK_(VerificationType::bogus_type())); + top, verifier(), CHECK_(VerificationType::bogus_type())); if (!subtype) { verifier()->verify_error(_offset, "Bad type on operand stack"); return VerificationType::bogus_type(); @@ -203,7 +208,7 @@ VerificationType StackMapFrame::get_local( return VerificationType::bogus_type(); } bool subtype = type.is_assignable_from(_locals[index], - verifier()->current_class(), CHECK_(VerificationType::bogus_type())); + verifier(), CHECK_(VerificationType::bogus_type())); if (!subtype) { verifier()->verify_error(_offset, "Bad local variable type"); return VerificationType::bogus_type(); @@ -221,9 +226,9 @@ void StackMapFrame::get_local_2( return; } bool subtype1 = type1.is_assignable_from( - _locals[index], verifier()->current_class(), CHECK); + _locals[index], verifier(), CHECK); bool subtype2 = type2.is_assignable_from( - _locals[index+1], verifier()->current_class(), CHECK); + _locals[index+1], verifier(), CHECK); if (!subtype1 || !subtype2) { verifier()->verify_error(_offset, "Bad local variable type"); return; diff --git a/hotspot/src/share/vm/classfile/stackMapFrame.hpp b/hotspot/src/share/vm/classfile/stackMapFrame.hpp index 5a21fbea5d6..f1abc0c9ec2 100644 --- a/hotspot/src/share/vm/classfile/stackMapFrame.hpp +++ b/hotspot/src/share/vm/classfile/stackMapFrame.hpp @@ -177,8 +177,7 @@ class StackMapFrame : public ResourceObj { if (_stack_size != 0) { VerificationType top = _stack[_stack_size - 1]; bool subtype = type.is_assignable_from( - top, verifier()->current_class(), - CHECK_(VerificationType::bogus_type())); + top, verifier(), CHECK_(VerificationType::bogus_type())); if (subtype) { _stack_size --; NOT_PRODUCT( _stack[_stack_size] = VerificationType::bogus_type(); ) @@ -194,11 +193,9 @@ class StackMapFrame : public ResourceObj { assert(type2.is_long() || type2.is_double(), "must be long/double_2"); if (_stack_size >= 2) { VerificationType top1 = _stack[_stack_size - 1]; - bool subtype1 = type1.is_assignable_from( - top1, verifier()->current_class(), CHECK); + bool subtype1 = type1.is_assignable_from(top1, verifier(), CHECK); VerificationType top2 = _stack[_stack_size - 2]; - bool subtype2 = type2.is_assignable_from( - top2, verifier()->current_class(), CHECK); + bool subtype2 = type2.is_assignable_from(top2, verifier(), CHECK); if (subtype1 && subtype2) { _stack_size -= 2; NOT_PRODUCT( _stack[_stack_size] = VerificationType::bogus_type(); ) diff --git a/hotspot/src/share/vm/classfile/stackMapTable.cpp b/hotspot/src/share/vm/classfile/stackMapTable.cpp index ae0b10f8d5d..f6a0b427386 100644 --- a/hotspot/src/share/vm/classfile/stackMapTable.cpp +++ b/hotspot/src/share/vm/classfile/stackMapTable.cpp @@ -184,8 +184,7 @@ VerificationType StackMapReader::parse_verification_type(u1* flags, TRAPS) { _stream->stackmap_format_error("bad class index", THREAD); return VerificationType::bogus_type(); } - return VerificationType::reference_type( - symbolHandle(THREAD, _cp->klass_name_at(class_index))); + return VerificationType::reference_type(_cp->klass_name_at(class_index)); } if (tag == ITEM_UninitializedThis) { if (flags != NULL) { diff --git a/hotspot/src/share/vm/classfile/stackMapTable.hpp b/hotspot/src/share/vm/classfile/stackMapTable.hpp index 96115b40e15..2d2798a717a 100644 --- a/hotspot/src/share/vm/classfile/stackMapTable.hpp +++ b/hotspot/src/share/vm/classfile/stackMapTable.hpp @@ -39,6 +39,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif class StackMapReader; diff --git a/hotspot/src/share/vm/classfile/symbolTable.cpp b/hotspot/src/share/vm/classfile/symbolTable.cpp index fd54f4d26bc..f200b9a5f64 100644 --- a/hotspot/src/share/vm/classfile/symbolTable.cpp +++ b/hotspot/src/share/vm/classfile/symbolTable.cpp @@ -31,7 +31,6 @@ #include "memory/gcLocker.inline.hpp" #include "oops/oop.inline.hpp" #include "oops/oop.inline2.hpp" -#include "oops/symbolKlass.hpp" #include "runtime/mutexLocker.hpp" #include "utilities/hashtable.inline.hpp" @@ -39,14 +38,97 @@ SymbolTable* SymbolTable::_the_table = NULL; +Symbol* SymbolTable::allocate_symbol(const u1* name, int len, TRAPS) { + // Don't allow symbols to be created which cannot fit in a Symbol*. + if (len > Symbol::max_length()) { + THROW_MSG_0(vmSymbols::java_lang_InternalError(), + "name is too long to represent"); + } + Symbol* sym = new (len) Symbol(name, len); + assert(sym != NULL, "new should call vm_exit_out_of_memory if C_HEAP is exhausted"); + return sym; +} + +bool SymbolTable::allocate_symbols(int names_count, const u1** names, + int* lengths, Symbol** syms, TRAPS) { + for (int i = 0; i< names_count; i++) { + if (lengths[i] > Symbol::max_length()) { + THROW_MSG_0(vmSymbols::java_lang_InternalError(), + "name is too long to represent"); + } + } + + for (int i = 0; i< names_count; i++) { + int len = lengths[i]; + syms[i] = new (len) Symbol(names[i], len); + assert(syms[i] != NULL, "new should call vm_exit_out_of_memory if " + "C_HEAP is exhausted"); + } + return true; +} + +// Call function for all symbols in the symbol table. +void SymbolTable::symbols_do(SymbolClosure *cl) { + const int n = the_table()->table_size(); + for (int i = 0; i < n; i++) { + for (HashtableEntry* p = the_table()->bucket(i); + p != NULL; + p = p->next()) { + cl->do_symbol(p->literal_addr()); + } + } +} + +int SymbolTable::symbols_removed = 0; +int SymbolTable::symbols_counted = 0; + +// Remove unreferenced symbols from the symbol table +// This is done late during GC. This doesn't use the hash table unlink because +// it assumes that the literals are oops. +void SymbolTable::unlink() { + int removed = 0; + int total = 0; + int memory_total = 0; + for (int i = 0; i < the_table()->table_size(); ++i) { + for (HashtableEntry** p = the_table()->bucket_addr(i); *p != NULL; ) { + HashtableEntry* entry = *p; + if (entry->is_shared()) { + break; + } + Symbol* s = entry->literal(); + memory_total += s->object_size(); + total++; + assert(s != NULL, "just checking"); + // If reference count is zero, remove. + if (s->refcount() == 0) { + delete s; + removed++; + *p = entry->next(); + the_table()->free_entry(entry); + } else { + p = entry->next_addr(); + } + } + } + symbols_removed += removed; + symbols_counted += total; + if (PrintGCDetails) { + gclog_or_tty->print(" [Symbols=%d size=%dK] ", total, + (memory_total*HeapWordSize)/1024); + } +} + + // Lookup a symbol in a bucket. -symbolOop SymbolTable::lookup(int index, const char* name, +Symbol* SymbolTable::lookup(int index, const char* name, int len, unsigned int hash) { - for (HashtableEntry* e = bucket(index); e != NULL; e = e->next()) { + for (HashtableEntry* e = bucket(index); e != NULL; e = e->next()) { if (e->hash() == hash) { - symbolOop sym = symbolOop(e->literal()); + Symbol* sym = e->literal(); if (sym->equals(name, len)) { + // something is referencing this symbol now. + sym->increment_refcount(); return sym; } } @@ -62,11 +144,11 @@ symbolOop SymbolTable::lookup(int index, const char* name, // entries in the symbol table during normal execution (only during // safepoints). -symbolOop SymbolTable::lookup(const char* name, int len, TRAPS) { +Symbol* SymbolTable::lookup(const char* name, int len, TRAPS) { unsigned int hashValue = hash_symbol(name, len); int index = the_table()->hash_to_index(hashValue); - symbolOop s = the_table()->lookup(index, name, len, hashValue); + Symbol* s = the_table()->lookup(index, name, len, hashValue); // Found if (s != NULL) return s; @@ -75,7 +157,7 @@ symbolOop SymbolTable::lookup(const char* name, int len, TRAPS) { return the_table()->basic_add(index, (u1*)name, len, hashValue, CHECK_NULL); } -symbolOop SymbolTable::lookup(symbolHandle sym, int begin, int end, TRAPS) { +Symbol* SymbolTable::lookup(const Symbol* sym, int begin, int end, TRAPS) { char* buffer; int index, len; unsigned int hashValue; @@ -87,7 +169,7 @@ symbolOop SymbolTable::lookup(symbolHandle sym, int begin, int end, TRAPS) { len = end - begin; hashValue = hash_symbol(name, len); index = the_table()->hash_to_index(hashValue); - symbolOop s = the_table()->lookup(index, name, len, hashValue); + Symbol* s = the_table()->lookup(index, name, len, hashValue); // Found if (s != NULL) return s; @@ -111,18 +193,19 @@ symbolOop SymbolTable::lookup(symbolHandle sym, int begin, int end, TRAPS) { return the_table()->basic_add(index, (u1*)buffer, len, hashValue, CHECK_NULL); } -symbolOop SymbolTable::lookup_only(const char* name, int len, +Symbol* SymbolTable::lookup_only(const char* name, int len, unsigned int& hash) { hash = hash_symbol(name, len); int index = the_table()->hash_to_index(hash); - return the_table()->lookup(index, name, len, hash); + Symbol* s = the_table()->lookup(index, name, len, hash); + return s; } // Suggestion: Push unicode-based lookup all the way into the hashing // and probing logic, so there is no need for convert_to_utf8 until -// an actual new symbolOop is created. -symbolOop SymbolTable::lookup_unicode(const jchar* name, int utf16_length, TRAPS) { +// an actual new Symbol* is created. +Symbol* SymbolTable::lookup_unicode(const jchar* name, int utf16_length, TRAPS) { int utf8_length = UNICODE::utf8_length((jchar*) name, utf16_length); char stack_buf[128]; if (utf8_length < (int) sizeof(stack_buf)) { @@ -137,7 +220,7 @@ symbolOop SymbolTable::lookup_unicode(const jchar* name, int utf16_length, TRAPS } } -symbolOop SymbolTable::lookup_only_unicode(const jchar* name, int utf16_length, +Symbol* SymbolTable::lookup_only_unicode(const jchar* name, int utf16_length, unsigned int& hash) { int utf8_length = UNICODE::utf8_length((jchar*) name, utf16_length); char stack_buf[128]; @@ -163,25 +246,23 @@ void SymbolTable::add(constantPoolHandle cp, int names_count, // do it the hard way for (int i=0; ihash_to_index(hashValues[i]); - symbolOop sym = table->basic_add(index, (u1*)names[i], lengths[i], + Symbol* sym = table->basic_add(index, (u1*)names[i], lengths[i], hashValues[i], CHECK); cp->symbol_at_put(cp_indices[i], sym); } } } -symbolOop SymbolTable::basic_add(int index, u1 *name, int len, +Symbol* SymbolTable::basic_add(int index, u1 *name, int len, unsigned int hashValue, TRAPS) { assert(!Universe::heap()->is_in_reserved(name) || GC_locker::is_active(), "proposed name of symbol must be stable"); // We assume that lookup() has been called already, that it failed, // and symbol was not found. We create the symbol here. - symbolKlass* sk = (symbolKlass*) Universe::symbolKlassObj()->klass_part(); - symbolOop s_oop = sk->allocate_symbol(name, len, CHECK_NULL); - symbolHandle sym (THREAD, s_oop); + Symbol* sym = allocate_symbol(name, len, CHECK_NULL); - // Allocation must be done before grapping the SymbolTable_lock lock + // Allocation must be done before grabbing the SymbolTable_lock lock MutexLocker ml(SymbolTable_lock, THREAD); assert(sym->equals((char*)name, len), "symbol must be properly initialized"); @@ -189,51 +270,51 @@ symbolOop SymbolTable::basic_add(int index, u1 *name, int len, // Since look-up was done lock-free, we need to check if another // thread beat us in the race to insert the symbol. - symbolOop test = lookup(index, (char*)name, len, hashValue); + Symbol* test = lookup(index, (char*)name, len, hashValue); if (test != NULL) { // A race occurred and another thread introduced the symbol, this one // will be dropped and collected. + delete sym; + assert(test->refcount() != 0, "lookup should have incremented the count"); return test; } - HashtableEntry* entry = new_entry(hashValue, sym()); + HashtableEntry* entry = new_entry(hashValue, sym); + sym->increment_refcount(); add_entry(index, entry); - return sym(); + return sym; } bool SymbolTable::basic_add(constantPoolHandle cp, int names_count, const char** names, int* lengths, int* cp_indices, unsigned int* hashValues, TRAPS) { - symbolKlass* sk = (symbolKlass*) Universe::symbolKlassObj()->klass_part(); - symbolOop sym_oops[symbol_alloc_batch_size]; - bool allocated = sk->allocate_symbols(names_count, names, lengths, - sym_oops, CHECK_false); + Symbol* syms[symbol_alloc_batch_size]; + bool allocated = allocate_symbols(names_count, (const u1**)names, lengths, + syms, CHECK_false); if (!allocated) { return false; } - symbolHandle syms[symbol_alloc_batch_size]; - int i; - for (i=0; iequals(names[i], lengths[i]), "symbol must be properly initialized"); // Since look-up was done lock-free, we need to check if another // thread beat us in the race to insert the symbol. int index = hash_to_index(hashValues[i]); - symbolOop test = lookup(index, names[i], lengths[i], hashValues[i]); + Symbol* test = lookup(index, names[i], lengths[i], hashValues[i]); if (test != NULL) { // A race occurred and another thread introduced the symbol, this one // will be dropped and collected. Use test instead. cp->symbol_at_put(cp_indices[i], test); + assert(test->refcount() != 0, "lookup should have incremented the count"); + delete syms[i]; } else { - symbolOop sym = syms[i](); - HashtableEntry* entry = new_entry(hashValues[i], sym); + Symbol* sym = syms[i]; + HashtableEntry* entry = new_entry(hashValues[i], sym); + sym->increment_refcount(); // increment refcount in external hashtable add_entry(index, entry); cp->symbol_at_put(cp_indices[i], sym); } @@ -245,12 +326,10 @@ bool SymbolTable::basic_add(constantPoolHandle cp, int names_count, void SymbolTable::verify() { for (int i = 0; i < the_table()->table_size(); ++i) { - HashtableEntry* p = the_table()->bucket(i); + HashtableEntry* p = the_table()->bucket(i); for ( ; p != NULL; p = p->next()) { - symbolOop s = symbolOop(p->literal()); + Symbol* s = (Symbol*)(p->literal()); guarantee(s != NULL, "symbol is NULL"); - s->verify(); - guarantee(s->is_perm(), "symbol not in permspace"); unsigned int h = hash_symbol((char*)s->bytes(), s->utf8_length()); guarantee(p->hash() == h, "broken hash in symbol table entry"); guarantee(the_table()->hash_to_index(h) == i, @@ -279,10 +358,14 @@ void SymbolTable::print_histogram() { int total = 0; int max_symbols = 0; int out_of_range = 0; + int memory_total = 0; + int count = 0; for (i = 0; i < the_table()->table_size(); i++) { - HashtableEntry* p = the_table()->bucket(i); + HashtableEntry* p = the_table()->bucket(i); for ( ; p != NULL; p = p->next()) { - int counter = symbolOop(p->literal())->utf8_length(); + memory_total += p->literal()->object_size(); + count++; + int counter = p->literal()->utf8_length(); total += counter; if (counter < results_length) { results[counter]++; @@ -293,6 +376,17 @@ void SymbolTable::print_histogram() { } } tty->print_cr("Symbol Table:"); + tty->print_cr("Total number of symbols %5d", count); + tty->print_cr("Total size in memory %5dK", + (memory_total*HeapWordSize)/1024); + tty->print_cr("Total counted %5d", symbols_counted); + tty->print_cr("Total removed %5d", symbols_removed); + if (symbols_counted > 0) { + tty->print_cr("Percent removed %3.2f", + ((float)symbols_removed/(float)symbols_counted)* 100); + } + tty->print_cr("Reference counts %5d", Symbol::_total_count); + tty->print_cr("Histogram of symbol length:"); tty->print_cr("%8s %5d", "Total ", total); tty->print_cr("%8s %5d", "Maximum", max_symbols); tty->print_cr("%8s %3.2f", "Average", @@ -304,24 +398,43 @@ void SymbolTable::print_histogram() { tty->print_cr("%6d %10d", i, results[i]); } } - int line_length = 70; - tty->print_cr("%s %30s", " Length", "Number chains that length"); - for (i = 0; i < results_length; i++) { - if (results[i] > 0) { - tty->print("%4d", i); - for (j = 0; (j < results[i]) && (j < line_length); j++) { - tty->print("%1s", "*"); + if (Verbose) { + int line_length = 70; + tty->print_cr("%s %30s", " Length", "Number chains that length"); + for (i = 0; i < results_length; i++) { + if (results[i] > 0) { + tty->print("%4d", i); + for (j = 0; (j < results[i]) && (j < line_length); j++) { + tty->print("%1s", "*"); + } + if (j == line_length) { + tty->print("%1s", "+"); + } + tty->cr(); } - if (j == line_length) { - tty->print("%1s", "+"); - } - tty->cr(); } } tty->print_cr(" %s %d: %d\n", "Number chains longer than", results_length, out_of_range); } +void SymbolTable::print() { + for (int i = 0; i < the_table()->table_size(); ++i) { + HashtableEntry** p = the_table()->bucket_addr(i); + HashtableEntry* entry = the_table()->bucket(i); + if (entry != NULL) { + while (entry != NULL) { + tty->print(PTR_FORMAT " ", entry->literal()); + entry->literal()->print(); + tty->print(" %d", entry->literal()->refcount()); + p = entry->next_addr(); + entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); + } + tty->cr(); + } + } +} + #endif // PRODUCT // -------------------------------------------------------------------------- @@ -396,7 +509,7 @@ StringTable* StringTable::_the_table = NULL; oop StringTable::lookup(int index, jchar* name, int len, unsigned int hash) { - for (HashtableEntry* l = bucket(index); l != NULL; l = l->next()) { + for (HashtableEntry* l = bucket(index); l != NULL; l = l->next()) { if (l->hash() == hash) { if (java_lang_String::equals(l->literal(), name, len)) { return l->literal(); @@ -436,13 +549,13 @@ oop StringTable::basic_add(int index, Handle string_or_null, jchar* name, return test; } - HashtableEntry* entry = new_entry(hashValue, string()); + HashtableEntry* entry = new_entry(hashValue, string()); add_entry(index, entry); return string(); } -oop StringTable::lookup(symbolOop symbol) { +oop StringTable::lookup(Symbol* symbol) { ResourceMark rm; int length; jchar* chars = symbol->as_unicode(length); @@ -466,7 +579,7 @@ oop StringTable::intern(Handle string_or_null, jchar* name, hashValue, CHECK_NULL); } -oop StringTable::intern(symbolOop symbol, TRAPS) { +oop StringTable::intern(Symbol* symbol, TRAPS) { if (symbol == NULL) return NULL; ResourceMark rm(THREAD); int length; @@ -500,9 +613,50 @@ oop StringTable::intern(const char* utf8_string, TRAPS) { return result; } +void StringTable::unlink(BoolObjectClosure* is_alive) { + // Readers of the table are unlocked, so we should only be removing + // entries at a safepoint. + assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint"); + for (int i = 0; i < the_table()->table_size(); ++i) { + for (HashtableEntry** p = the_table()->bucket_addr(i); *p != NULL; ) { + HashtableEntry* entry = *p; + if (entry->is_shared()) { + break; + } + assert(entry->literal() != NULL, "just checking"); + if (is_alive->do_object_b(entry->literal())) { + p = entry->next_addr(); + } else { + *p = entry->next(); + the_table()->free_entry(entry); + } + } + } +} + +void StringTable::oops_do(OopClosure* f) { + for (int i = 0; i < the_table()->table_size(); ++i) { + HashtableEntry** p = the_table()->bucket_addr(i); + HashtableEntry* entry = the_table()->bucket(i); + while (entry != NULL) { + f->do_oop((oop*)entry->literal_addr()); + + // Did the closure remove the literal from the table? + if (entry->literal() == NULL) { + assert(!entry->is_shared(), "immutable hashtable entry?"); + *p = entry->next(); + the_table()->free_entry(entry); + } else { + p = entry->next_addr(); + } + entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); + } + } +} + void StringTable::verify() { for (int i = 0; i < the_table()->table_size(); ++i) { - HashtableEntry* p = the_table()->bucket(i); + HashtableEntry* p = the_table()->bucket(i); for ( ; p != NULL; p = p->next()) { oop s = p->literal(); guarantee(s != NULL, "interned string is NULL"); diff --git a/hotspot/src/share/vm/classfile/symbolTable.hpp b/hotspot/src/share/vm/classfile/symbolTable.hpp index 8444b4f9de5..89acd79facb 100644 --- a/hotspot/src/share/vm/classfile/symbolTable.hpp +++ b/hotspot/src/share/vm/classfile/symbolTable.hpp @@ -26,11 +26,11 @@ #define SHARE_VM_CLASSFILE_SYMBOLTABLE_HPP #include "memory/allocation.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "utilities/hashtable.hpp" -// The symbol table holds all symbolOops and corresponding interned strings. -// symbolOops and literal strings should be canonicalized. +// The symbol table holds all Symbol*s and corresponding interned strings. +// Symbol*s and literal strings should be canonicalized. // // The interned strings are created lazily. // @@ -42,32 +42,76 @@ class BoolObjectClosure; -class SymbolTable : public Hashtable { +// Class to hold a newly created or referenced Symbol* temporarily in scope. +// new_symbol() and lookup() will create a Symbol* if not already in the +// symbol table and add to the symbol's reference count. +// probe() and lookup_only() will increment the refcount if symbol is found. +class TempNewSymbol : public StackObj { + Symbol* _temp; + + public: + TempNewSymbol() : _temp(NULL) {} + // Creating or looking up a symbol increments the symbol's reference count + TempNewSymbol(Symbol *s) : _temp(s) {} + + // Operator= increments reference count. + void operator=(const TempNewSymbol &s) { + _temp = s._temp; + if (_temp !=NULL) _temp->increment_refcount(); + } + + // Decrement reference counter so it can go away if it's unique + ~TempNewSymbol() { if (_temp != NULL) _temp->decrement_refcount(); } + + // Operators so they can be used like Symbols + Symbol* operator -> () const { return _temp; } + bool operator == (Symbol* o) const { return _temp == o; } + // Sneaky conversion function + operator Symbol*() { return _temp; } +}; + +class SymbolTable : public Hashtable { friend class VMStructs; + friend class ClassFileParser; private: // The symbol table static SymbolTable* _the_table; + // For statistics + static int symbols_removed; + static int symbols_counted; + + Symbol* allocate_symbol(const u1* name, int len, TRAPS); // Assumes no characters larger than 0x7F + bool allocate_symbols(int names_count, const u1** names, int* lengths, Symbol** syms, TRAPS); + // Adding elements - symbolOop basic_add(int index, u1* name, int len, + Symbol* basic_add(int index, u1* name, int len, unsigned int hashValue, TRAPS); bool basic_add(constantPoolHandle cp, int names_count, const char** names, int* lengths, int* cp_indices, unsigned int* hashValues, TRAPS); + static void new_symbols(constantPoolHandle cp, int names_count, + const char** name, int* lengths, + int* cp_indices, unsigned int* hashValues, + TRAPS) { + add(cp, names_count, name, lengths, cp_indices, hashValues, THREAD); + } + + // Table size enum { symbol_table_size = 20011 }; - symbolOop lookup(int index, const char* name, int len, unsigned int hash); + Symbol* lookup(int index, const char* name, int len, unsigned int hash); SymbolTable() - : Hashtable(symbol_table_size, sizeof (HashtableEntry)) {} + : Hashtable(symbol_table_size, sizeof (HashtableEntry)) {} SymbolTable(HashtableBucket* t, int number_of_entries) - : Hashtable(symbol_table_size, sizeof (HashtableEntry), t, + : Hashtable(symbol_table_size, sizeof (HashtableEntry), t, number_of_entries) {} @@ -92,66 +136,76 @@ public: _the_table = new SymbolTable(t, number_of_entries); } - static symbolOop lookup(const char* name, int len, TRAPS); + static Symbol* lookup(const char* name, int len, TRAPS); // lookup only, won't add. Also calculate hash. - static symbolOop lookup_only(const char* name, int len, unsigned int& hash); + static Symbol* lookup_only(const char* name, int len, unsigned int& hash); // Only copy to C string to be added if lookup failed. - static symbolOop lookup(symbolHandle sym, int begin, int end, TRAPS); + static Symbol* lookup(const Symbol* sym, int begin, int end, TRAPS); + + static void release(Symbol* sym); // jchar (utf16) version of lookups - static symbolOop lookup_unicode(const jchar* name, int len, TRAPS); - static symbolOop lookup_only_unicode(const jchar* name, int len, unsigned int& hash); + static Symbol* lookup_unicode(const jchar* name, int len, TRAPS); + static Symbol* lookup_only_unicode(const jchar* name, int len, unsigned int& hash); static void add(constantPoolHandle cp, int names_count, const char** names, int* lengths, int* cp_indices, unsigned int* hashValues, TRAPS); - // GC support - // Delete pointers to otherwise-unreachable objects. - static void unlink(BoolObjectClosure* cl) { - the_table()->Hashtable::unlink(cl); - } + // Release any dead symbols + static void unlink(); - // Invoke "f->do_oop" on the locations of all oops in the table. - static void oops_do(OopClosure* f) { - the_table()->Hashtable::oops_do(f); + // iterate over symbols + static void symbols_do(SymbolClosure *cl); + + // Symbol creation + static Symbol* new_symbol(const char* utf8_buffer, int length, TRAPS) { + assert(utf8_buffer != NULL, "just checking"); + return lookup(utf8_buffer, length, THREAD); + } + static Symbol* new_symbol(const char* name, TRAPS) { + return new_symbol(name, (int)strlen(name), THREAD); + } + static Symbol* new_symbol(const Symbol* sym, int begin, int end, TRAPS) { + assert(begin <= end && end <= sym->utf8_length(), "just checking"); + return lookup(sym, begin, end, THREAD); } // Symbol lookup - static symbolOop lookup(int index, const char* name, int len, TRAPS); + static Symbol* lookup(int index, const char* name, int len, TRAPS); // Needed for preloading classes in signatures when compiling. // Returns the symbol is already present in symbol table, otherwise // NULL. NO ALLOCATION IS GUARANTEED! - static symbolOop probe(const char* name, int len) { + static Symbol* probe(const char* name, int len) { unsigned int ignore_hash; return lookup_only(name, len, ignore_hash); } - static symbolOop probe_unicode(const jchar* name, int len) { + static Symbol* probe_unicode(const jchar* name, int len) { unsigned int ignore_hash; return lookup_only_unicode(name, len, ignore_hash); } // Histogram static void print_histogram() PRODUCT_RETURN; + static void print() PRODUCT_RETURN; // Debugging static void verify(); // Sharing static void copy_buckets(char** top, char*end) { - the_table()->Hashtable::copy_buckets(top, end); + the_table()->Hashtable::copy_buckets(top, end); } static void copy_table(char** top, char*end) { - the_table()->Hashtable::copy_table(top, end); + the_table()->Hashtable::copy_table(top, end); } static void reverse(void* boundary = NULL) { - ((Hashtable*)the_table())->reverse(boundary); + the_table()->Hashtable::reverse(boundary); } }; - -class StringTable : public Hashtable { +class StringTable : public Hashtable { friend class VMStructs; private: @@ -169,10 +223,10 @@ private: oop lookup(int index, jchar* chars, int length, unsigned int hashValue); - StringTable() : Hashtable(string_table_size, sizeof (HashtableEntry)) {} + StringTable() : Hashtable(string_table_size, sizeof (HashtableEntry)) {} StringTable(HashtableBucket* t, int number_of_entries) - : Hashtable(string_table_size, sizeof (HashtableEntry), t, + : Hashtable(string_table_size, sizeof (HashtableEntry), t, number_of_entries) {} public: @@ -192,26 +246,20 @@ public: _the_table = new StringTable(t, number_of_entries); } - static int hash_string(jchar* s, int len); - // GC support // Delete pointers to otherwise-unreachable objects. - static void unlink(BoolObjectClosure* cl) { - the_table()->Hashtable::unlink(cl); - } + static void unlink(BoolObjectClosure* cl); // Invoke "f->do_oop" on the locations of all oops in the table. - static void oops_do(OopClosure* f) { - the_table()->Hashtable::oops_do(f); - } + static void oops_do(OopClosure* f); // Probing - static oop lookup(symbolOop symbol); + static oop lookup(Symbol* symbol); // Interning - static oop intern(symbolOop symbol, TRAPS); + static oop intern(Symbol* symbol, TRAPS); static oop intern(oop string, TRAPS); static oop intern(const char *utf8_string, TRAPS); @@ -220,13 +268,13 @@ public: // Sharing static void copy_buckets(char** top, char*end) { - the_table()->Hashtable::copy_buckets(top, end); + the_table()->Hashtable::copy_buckets(top, end); } static void copy_table(char** top, char*end) { - the_table()->Hashtable::copy_table(top, end); + the_table()->Hashtable::copy_table(top, end); } static void reverse() { - ((BasicHashtable*)the_table())->reverse(); + the_table()->Hashtable::reverse(); } }; diff --git a/hotspot/src/share/vm/classfile/systemDictionary.cpp b/hotspot/src/share/vm/classfile/systemDictionary.cpp index 5716e87163e..522de398db6 100644 --- a/hotspot/src/share/vm/classfile/systemDictionary.cpp +++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp @@ -93,8 +93,8 @@ void SystemDictionary::compute_java_system_loader(TRAPS) { JavaValue result(T_OBJECT); JavaCalls::call_static(&result, KlassHandle(THREAD, WK_KLASS(ClassLoader_klass)), - vmSymbolHandles::getSystemClassLoader_name(), - vmSymbolHandles::void_classloader_signature(), + vmSymbols::getSystemClassLoader_name(), + vmSymbols::void_classloader_signature(), CHECK); _java_system_loader = (oop)result.get_jobject(); @@ -107,8 +107,8 @@ void SystemDictionary::compute_java_system_loader(TRAPS) { #ifdef ASSERT // return true if class_name contains no '.' (internal format is '/') -bool SystemDictionary::is_internal_format(symbolHandle class_name) { - if (class_name.not_null()) { +bool SystemDictionary::is_internal_format(Symbol* class_name) { + if (class_name != NULL) { ResourceMark rm; char* name = class_name->as_C_string(); return strchr(name, '.') == NULL; @@ -141,7 +141,7 @@ bool SystemDictionary::is_parallelDefine(Handle class_loader) { // Forwards to resolve_or_null -klassOop SystemDictionary::resolve_or_fail(symbolHandle class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS) { +klassOop SystemDictionary::resolve_or_fail(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS) { klassOop klass = resolve_or_null(class_name, class_loader, protection_domain, THREAD); if (HAS_PENDING_EXCEPTION || klass == NULL) { KlassHandle k_h(THREAD, klass); @@ -151,7 +151,7 @@ klassOop SystemDictionary::resolve_or_fail(symbolHandle class_name, Handle class return klass; } -klassOop SystemDictionary::handle_resolution_exception(symbolHandle class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS) { +klassOop SystemDictionary::handle_resolution_exception(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS) { if (HAS_PENDING_EXCEPTION) { // If we have a pending exception we forward it to the caller, unless throw_error is true, // in which case we have to check whether the pending exception is a ClassNotFoundException, @@ -180,7 +180,7 @@ klassOop SystemDictionary::handle_resolution_exception(symbolHandle class_name, } -klassOop SystemDictionary::resolve_or_fail(symbolHandle class_name, +klassOop SystemDictionary::resolve_or_fail(Symbol* class_name, bool throw_error, TRAPS) { return resolve_or_fail(class_name, Handle(), Handle(), throw_error, THREAD); @@ -189,48 +189,49 @@ klassOop SystemDictionary::resolve_or_fail(symbolHandle class_name, // Forwards to resolve_instance_class_or_null -klassOop SystemDictionary::resolve_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS) { +klassOop SystemDictionary::resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) { assert(!THREAD->is_Compiler_thread(), "Can not load classes with the Compiler thread"); - if (FieldType::is_array(class_name())) { + if (FieldType::is_array(class_name)) { return resolve_array_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL); + } else if (FieldType::is_obj(class_name)) { + ResourceMark rm(THREAD); + // Ignore wrapping L and ;. + TempNewSymbol name = SymbolTable::new_symbol(class_name->as_C_string() + 1, + class_name->utf8_length() - 2, CHECK_NULL); + return resolve_instance_class_or_null(name, class_loader, protection_domain, CHECK_NULL); } else { return resolve_instance_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL); } } -klassOop SystemDictionary::resolve_or_null(symbolHandle class_name, TRAPS) { +klassOop SystemDictionary::resolve_or_null(Symbol* class_name, TRAPS) { return resolve_or_null(class_name, Handle(), Handle(), THREAD); } // Forwards to resolve_instance_class_or_null -klassOop SystemDictionary::resolve_array_class_or_null(symbolHandle class_name, +klassOop SystemDictionary::resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) { - assert(FieldType::is_array(class_name()), "must be array"); - jint dimension; - symbolOop object_key; + assert(FieldType::is_array(class_name), "must be array"); klassOop k = NULL; - // dimension and object_key are assigned as a side-effect of this call - BasicType t = FieldType::get_array_info(class_name(), - &dimension, - &object_key, - CHECK_NULL); - + FieldArrayInfo fd; + // dimension and object_key in FieldArrayInfo are assigned as a side-effect + // of this call + BasicType t = FieldType::get_array_info(class_name, fd, CHECK_NULL); if (t == T_OBJECT) { - symbolHandle h_key(THREAD, object_key); // naked oop "k" is OK here -- we assign back into it - k = SystemDictionary::resolve_instance_class_or_null(h_key, + k = SystemDictionary::resolve_instance_class_or_null(fd.object_key(), class_loader, protection_domain, CHECK_NULL); if (k != NULL) { - k = Klass::cast(k)->array_klass(dimension, CHECK_NULL); + k = Klass::cast(k)->array_klass(fd.dimension(), CHECK_NULL); } } else { k = Universe::typeArrayKlassObj(t); - k = typeArrayKlass::cast(k)->array_klass(dimension, CHECK_NULL); + k = typeArrayKlass::cast(k)->array_klass(fd.dimension(), CHECK_NULL); } return k; } @@ -271,8 +272,8 @@ klassOop SystemDictionary::resolve_array_class_or_null(symbolHandle class_name, // Must be called, even if superclass is null, since this is // where the placeholder entry is created which claims this // thread is loading this class/classloader. -klassOop SystemDictionary::resolve_super_or_fail(symbolHandle child_name, - symbolHandle class_name, +klassOop SystemDictionary::resolve_super_or_fail(Symbol* child_name, + Symbol* class_name, Handle class_loader, Handle protection_domain, bool is_superclass, @@ -281,7 +282,7 @@ klassOop SystemDictionary::resolve_super_or_fail(symbolHandle child_name, // Try to get one of the well-known klasses. // They are trusted, and do not participate in circularities. if (LinkWellKnownClasses) { - klassOop k = find_well_known_klass(class_name()); + klassOop k = find_well_known_klass(class_name); if (k != NULL) { return k; } @@ -323,7 +324,7 @@ klassOop SystemDictionary::resolve_super_or_fail(symbolHandle child_name, if ((childk != NULL ) && (is_superclass) && ((quicksuperk = instanceKlass::cast(childk)->super()) != NULL) && - ((Klass::cast(quicksuperk)->name() == class_name()) && + ((Klass::cast(quicksuperk)->name() == class_name) && (Klass::cast(quicksuperk)->class_loader() == class_loader()))) { return quicksuperk; } else { @@ -342,7 +343,7 @@ klassOop SystemDictionary::resolve_super_or_fail(symbolHandle child_name, } // java.lang.Object should have been found above - assert(class_name() != NULL, "null super class for resolving"); + assert(class_name != NULL, "null super class for resolving"); // Resolve the super class or interface, check results on return klassOop superk = NULL; superk = SystemDictionary::resolve_or_null(class_name, @@ -392,8 +393,8 @@ void SystemDictionary::validate_protection_domain(instanceKlassHandle klass, JavaCalls::call_special(&result, class_loader, system_loader, - vmSymbolHandles::checkPackageAccess_name(), - vmSymbolHandles::class_protectiondomain_signature(), + vmSymbols::checkPackageAccess_name(), + vmSymbols::class_protectiondomain_signature(), Handle(THREAD, klass->java_mirror()), protection_domain, THREAD); @@ -414,7 +415,7 @@ void SystemDictionary::validate_protection_domain(instanceKlassHandle klass, { // We recalculate the entry here -- we've called out to java since // the last time it was calculated. - symbolHandle kn(THREAD, klass->name()); + Symbol* kn = klass->name(); unsigned int d_hash = dictionary()->compute_hash(kn, class_loader); int d_index = dictionary()->hash_to_index(d_hash); @@ -489,7 +490,7 @@ void SystemDictionary::double_lock_wait(Handle lockObject, TRAPS) { // and we are done, // If return null klassOop and no pending exception, the caller must load the class instanceKlassHandle SystemDictionary::handle_parallel_super_load( - symbolHandle name, symbolHandle superclassname, Handle class_loader, + Symbol* name, Symbol* superclassname, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS) { instanceKlassHandle nh = instanceKlassHandle(); // null Handle @@ -578,17 +579,9 @@ instanceKlassHandle SystemDictionary::handle_parallel_super_load( } -klassOop SystemDictionary::resolve_instance_class_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS) { - assert(class_name.not_null() && !FieldType::is_array(class_name()), "invalid class name"); - // First check to see if we should remove wrapping L and ; - symbolHandle name; - if (FieldType::is_obj(class_name())) { - ResourceMark rm(THREAD); - // Ignore wrapping L and ;. - name = oopFactory::new_symbol_handle(class_name()->as_C_string() + 1, class_name()->utf8_length() - 2, CHECK_NULL); - } else { - name = class_name; - } +klassOop SystemDictionary::resolve_instance_class_or_null(Symbol* name, Handle class_loader, Handle protection_domain, TRAPS) { + assert(name != NULL && !FieldType::is_array(name) && + !FieldType::is_obj(name), "invalid class name"); // UseNewReflection // Fix for 4474172; see evaluation for more details @@ -632,7 +625,7 @@ klassOop SystemDictionary::resolve_instance_class_or_null(symbolHandle class_nam bool havesupername = false; instanceKlassHandle k; PlaceholderEntry* placeholder; - symbolHandle superclassname; + Symbol* superclassname = NULL; { MutexLocker mu(SystemDictionary_lock, THREAD); @@ -646,7 +639,7 @@ klassOop SystemDictionary::resolve_instance_class_or_null(symbolHandle class_nam if (placeholder && placeholder->super_load_in_progress()) { super_load_in_progress = true; if (placeholder->havesupername() == true) { - superclassname = symbolHandle(THREAD, placeholder->supername()); + superclassname = placeholder->supername(); havesupername = true; } } @@ -691,7 +684,6 @@ klassOop SystemDictionary::resolve_instance_class_or_null(symbolHandle class_nam // No performance benefit and no deadlock issues. // case 5. parallelCapable user level classloaders - without objectLocker // Allow parallel classloading of a class/classloader pair - symbolHandle nullsymbolHandle; bool throw_circularity_error = false; { MutexLocker mu(SystemDictionary_lock, THREAD); @@ -733,7 +725,7 @@ klassOop SystemDictionary::resolve_instance_class_or_null(symbolHandle class_nam // LOAD_INSTANCE in parallel // add placeholder entry even if error - callers will remove on error if (!throw_circularity_error && !class_has_been_loaded) { - PlaceholderEntry* newprobe = placeholders()->find_and_add(p_index, p_hash, name, class_loader, PlaceholderTable::LOAD_INSTANCE, nullsymbolHandle, THREAD); + PlaceholderEntry* newprobe = placeholders()->find_and_add(p_index, p_hash, name, class_loader, PlaceholderTable::LOAD_INSTANCE, NULL, THREAD); // For class loaders that do not acquire the classloader object lock, // if they did not catch another thread holding LOAD_INSTANCE, // need a check analogous to the acquire ObjectLocker/find_class @@ -837,7 +829,7 @@ klassOop SystemDictionary::resolve_instance_class_or_null(symbolHandle class_nam { Handle loader (THREAD, k->class_loader()); MutexLocker mu(SystemDictionary_lock, THREAD); - oop kk = find_class_or_placeholder(name, loader); + oop kk = find_class(name, loader); assert(kk == k(), "should be present in dictionary"); } #endif @@ -880,7 +872,7 @@ klassOop SystemDictionary::resolve_instance_class_or_null(symbolHandle class_nam // _dictionary->bucket(index) is read here, so the caller will not see // the new entry. -klassOop SystemDictionary::find(symbolHandle class_name, +klassOop SystemDictionary::find(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) { @@ -910,37 +902,34 @@ klassOop SystemDictionary::find(symbolHandle class_name, // Look for a loaded instance or array klass by name. Do not do any loading. // return NULL in case of error. -klassOop SystemDictionary::find_instance_or_array_klass(symbolHandle class_name, +klassOop SystemDictionary::find_instance_or_array_klass(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) { klassOop k = NULL; - assert(class_name() != NULL, "class name must be non NULL"); + assert(class_name != NULL, "class name must be non NULL"); // Try to get one of the well-known klasses. if (LinkWellKnownClasses) { - k = find_well_known_klass(class_name()); + k = find_well_known_klass(class_name); if (k != NULL) { return k; } } - if (FieldType::is_array(class_name())) { + if (FieldType::is_array(class_name)) { // The name refers to an array. Parse the name. - jint dimension; - symbolOop object_key; - - // dimension and object_key are assigned as a side-effect of this call - BasicType t = FieldType::get_array_info(class_name(), &dimension, - &object_key, CHECK_(NULL)); + // dimension and object_key in FieldArrayInfo are assigned as a + // side-effect of this call + FieldArrayInfo fd; + BasicType t = FieldType::get_array_info(class_name, fd, CHECK_(NULL)); if (t != T_OBJECT) { k = Universe::typeArrayKlassObj(t); } else { - symbolHandle h_key(THREAD, object_key); - k = SystemDictionary::find(h_key, class_loader, protection_domain, THREAD); + k = SystemDictionary::find(fd.object_key(), class_loader, protection_domain, THREAD); } if (k != NULL) { - k = Klass::cast(k)->array_klass_or_null(dimension); + k = Klass::cast(k)->array_klass_or_null(fd.dimension()); } } else { k = find(class_name, class_loader, protection_domain, THREAD); @@ -949,7 +938,7 @@ klassOop SystemDictionary::find_instance_or_array_klass(symbolHandle class_name, } // Quick range check for names of well-known classes: -static symbolOop wk_klass_name_limits[2] = {NULL, NULL}; +static Symbol* wk_klass_name_limits[2] = {NULL, NULL}; #ifndef PRODUCT static int find_wkk_calls, find_wkk_probes, find_wkk_wins; @@ -957,7 +946,7 @@ static int find_wkk_calls, find_wkk_probes, find_wkk_wins; // => 60% hit after limit guard, 25% total win rate #endif -klassOop SystemDictionary::find_well_known_klass(symbolOop class_name) { +klassOop SystemDictionary::find_well_known_klass(Symbol* class_name) { // A bounds-check on class_name will quickly get a negative result. NOT_PRODUCT(find_wkk_calls++); if (class_name >= wk_klass_name_limits[0] && @@ -983,14 +972,14 @@ klassOop SystemDictionary::find_well_known_klass(symbolOop class_name) { // Note: this method is much like resolve_from_stream, but // updates no supplemental data structures. // TODO consolidate the two methods with a helper routine? -klassOop SystemDictionary::parse_stream(symbolHandle class_name, +klassOop SystemDictionary::parse_stream(Symbol* class_name, Handle class_loader, Handle protection_domain, ClassFileStream* st, KlassHandle host_klass, GrowableArray* cp_patches, TRAPS) { - symbolHandle parsed_name; + TempNewSymbol parsed_name = NULL; // Parse the stream. Note that we do this even though this klass might // already be present in the SystemDictionary, otherwise we would not @@ -1011,13 +1000,12 @@ klassOop SystemDictionary::parse_stream(symbolHandle class_name, true, THREAD); - // We don't redefine the class, so we just need to clean up whether there // was an error or not (don't want to modify any system dictionary // data structures). // Parsed name could be null if we threw an error before we got far // enough along to parse it -- in that case, there is nothing to clean up. - if (!parsed_name.is_null()) { + if (parsed_name != NULL) { unsigned int p_hash = placeholders()->compute_hash(parsed_name, class_loader); int p_index = placeholders()->hash_to_index(p_hash); @@ -1060,7 +1048,7 @@ klassOop SystemDictionary::parse_stream(symbolHandle class_name, // Note: class_name can be NULL. In that case we do not know the name of // the class until we have parsed the stream. -klassOop SystemDictionary::resolve_from_stream(symbolHandle class_name, +klassOop SystemDictionary::resolve_from_stream(Symbol* class_name, Handle class_loader, Handle protection_domain, ClassFileStream* st, @@ -1079,7 +1067,7 @@ klassOop SystemDictionary::resolve_from_stream(symbolHandle class_name, check_loader_lock_contention(lockObject, THREAD); ObjectLocker ol(lockObject, THREAD, DoObjectLock); - symbolHandle parsed_name; + TempNewSymbol parsed_name = NULL; // Parse the stream. Note that we do this even though this klass might // already be present in the SystemDictionary, otherwise we would not @@ -1101,7 +1089,7 @@ klassOop SystemDictionary::resolve_from_stream(symbolHandle class_name, const char* pkg = "java/"; if (!HAS_PENDING_EXCEPTION && !class_loader.is_null() && - !parsed_name.is_null() && + parsed_name != NULL && !strncmp((const char*)parsed_name->bytes(), pkg, strlen(pkg))) { // It is illegal to define classes in the "java." package from // JVM_DefineClass or jni_DefineClass unless you're the bootclassloader @@ -1121,9 +1109,8 @@ klassOop SystemDictionary::resolve_from_stream(symbolHandle class_name, } if (!HAS_PENDING_EXCEPTION) { - assert(!parsed_name.is_null(), "Sanity"); - assert(class_name.is_null() || class_name() == parsed_name(), - "name mismatch"); + assert(parsed_name != NULL, "Sanity"); + assert(class_name == NULL || class_name == parsed_name, "name mismatch"); // Verification prevents us from creating names with dots in them, this // asserts that that's the case. assert(is_internal_format(parsed_name), @@ -1144,7 +1131,7 @@ klassOop SystemDictionary::resolve_from_stream(symbolHandle class_name, // must make sure parsed_name is valid first (it won't be if we had // a format error before the class was parsed far enough to // find the name). - if (HAS_PENDING_EXCEPTION && !parsed_name.is_null()) { + if (HAS_PENDING_EXCEPTION && parsed_name != NULL) { unsigned int p_hash = placeholders()->compute_hash(parsed_name, class_loader); int p_index = placeholders()->hash_to_index(p_hash); @@ -1160,16 +1147,16 @@ klassOop SystemDictionary::resolve_from_stream(symbolHandle class_name, // SystemDictionary; this is only done on success debug_only( { if (!HAS_PENDING_EXCEPTION) { - assert(!parsed_name.is_null(), "parsed_name is still null?"); - symbolHandle h_name (THREAD, k->name()); + assert(parsed_name != NULL, "parsed_name is still null?"); + Symbol* h_name = k->name(); Handle h_loader (THREAD, k->class_loader()); MutexLocker mu(SystemDictionary_lock, THREAD); - oop check = find_class_or_placeholder(parsed_name, class_loader); + klassOop check = find_class(parsed_name, class_loader); assert(check == k(), "should be present in the dictionary"); - oop check2 = find_class_or_placeholder(h_name, h_loader); + klassOop check2 = find_class(h_name, h_loader); assert(check == check2, "name inconsistancy in SystemDictionary"); } } ); @@ -1189,7 +1176,7 @@ void SystemDictionary::set_shared_dictionary(HashtableBucket* t, int length, // If there is a shared dictionary, then find the entry for the // given shared system class, if any. -klassOop SystemDictionary::find_shared_class(symbolHandle class_name) { +klassOop SystemDictionary::find_shared_class(Symbol* class_name) { if (shared_dictionary() != NULL) { unsigned int d_hash = dictionary()->compute_hash(class_name, Handle()); int d_index = dictionary()->hash_to_index(d_hash); @@ -1207,7 +1194,7 @@ klassOop SystemDictionary::find_shared_class(symbolHandle class_name) { // object hierarchy until loaded.] instanceKlassHandle SystemDictionary::load_shared_class( - symbolHandle class_name, Handle class_loader, TRAPS) { + Symbol* class_name, Handle class_loader, TRAPS) { instanceKlassHandle ik (THREAD, find_shared_class(class_name)); return load_shared_class(ik, class_loader, THREAD); } @@ -1222,14 +1209,14 @@ instanceKlassHandle SystemDictionary::load_shared_class( assert(class_loader.is_null(), "non-null classloader for shared class?"); if (ik.not_null()) { instanceKlassHandle nh = instanceKlassHandle(); // null Handle - symbolHandle class_name(THREAD, ik->name()); + Symbol* class_name = ik->name(); // Found the class, now load the superclass and interfaces. If they // are shared, add them to the main system dictionary and reset // their hierarchy references (supers, subs, and interfaces). if (ik->super() != NULL) { - symbolHandle cn(THREAD, ik->super()->klass_part()->name()); + Symbol* cn = ik->super()->klass_part()->name(); resolve_super_or_fail(class_name, cn, class_loader, Handle(), true, CHECK_(nh)); } @@ -1243,7 +1230,7 @@ instanceKlassHandle SystemDictionary::load_shared_class( // interfaces' instanceKlass's C++ vtbls haven't been // reinitialized yet (they will be once the interface classes // are loaded) - symbolHandle name (THREAD, k->klass_part()->name()); + Symbol* name = k->klass_part()->name(); resolve_super_or_fail(class_name, name, class_loader, Handle(), false, CHECK_(nh)); } @@ -1290,7 +1277,7 @@ instanceKlassHandle SystemDictionary::load_shared_class( // Note that with delegation class loaders all classes in another loader will // first try to call this so it'd better be fast!! static instanceKlassHandle download_and_retry_class_load( - symbolHandle class_name, + Symbol* class_name, TRAPS) { klassOop dlm = SystemDictionary::sun_jkernel_DownloadManager_klass(); @@ -1313,8 +1300,8 @@ static instanceKlassHandle download_and_retry_class_load( // public static String getBootClassPathEntryForClass(String className); JavaCalls::call_static(&result, KlassHandle(THREAD, dlm), - vmSymbolHandles::getBootClassPathEntryForClass_name(), - vmSymbolHandles::string_string_signature(), + vmSymbols::getBootClassPathEntryForClass_name(), + vmSymbols::string_string_signature(), class_string, CHECK_(nk)); @@ -1344,7 +1331,7 @@ static instanceKlassHandle download_and_retry_class_load( #endif // KERNEL -instanceKlassHandle SystemDictionary::load_instance_class(symbolHandle class_name, Handle class_loader, TRAPS) { +instanceKlassHandle SystemDictionary::load_instance_class(Symbol* class_name, Handle class_loader, TRAPS) { instanceKlassHandle nh = instanceKlassHandle(); // null Handle if (class_loader.is_null()) { @@ -1419,16 +1406,16 @@ instanceKlassHandle SystemDictionary::load_instance_class(symbolHandle class_nam JavaCalls::call_special(&result, class_loader, spec_klass, - vmSymbolHandles::loadClassInternal_name(), - vmSymbolHandles::string_class_signature(), + vmSymbols::loadClassInternal_name(), + vmSymbols::string_class_signature(), string, CHECK_(nh)); } else { JavaCalls::call_virtual(&result, class_loader, spec_klass, - vmSymbolHandles::loadClass_name(), - vmSymbolHandles::string_class_signature(), + vmSymbols::loadClass_name(), + vmSymbols::string_class_signature(), string, CHECK_(nh)); } @@ -1444,7 +1431,7 @@ instanceKlassHandle SystemDictionary::load_instance_class(symbolHandle class_nam // For user defined Java class loaders, check that the name returned is // the same as that requested. This check is done for the bootstrap // loader when parsing the class file. - if (class_name() == k->name()) { + if (class_name == k->name()) { return k; } } @@ -1477,7 +1464,7 @@ void SystemDictionary::define_instance_class(instanceKlassHandle k, TRAPS) { // classloader lock held // Parallel classloaders will call find_or_define_instance_class // which will require a token to perform the define class - symbolHandle name_h(THREAD, k->name()); + Symbol* name_h = k->name(); unsigned int d_hash = dictionary()->compute_hash(name_h, class_loader_h); int d_index = dictionary()->hash_to_index(d_hash); check_constraints(d_index, d_hash, k, class_loader_h, true, CHECK); @@ -1536,10 +1523,10 @@ void SystemDictionary::define_instance_class(instanceKlassHandle k, TRAPS) { // findClass(), i.e. FindLoadedClass/DefineClassIfAbsent or they // potentially waste time reading and parsing the bytestream. // Note: VM callers should ensure consistency of k/class_name,class_loader -instanceKlassHandle SystemDictionary::find_or_define_instance_class(symbolHandle class_name, Handle class_loader, instanceKlassHandle k, TRAPS) { +instanceKlassHandle SystemDictionary::find_or_define_instance_class(Symbol* class_name, Handle class_loader, instanceKlassHandle k, TRAPS) { instanceKlassHandle nh = instanceKlassHandle(); // null Handle - symbolHandle name_h(THREAD, k->name()); // passed in class_name may be null + Symbol* name_h = k->name(); // passed in class_name may be null unsigned int d_hash = dictionary()->compute_hash(name_h, class_loader); int d_index = dictionary()->hash_to_index(d_hash); @@ -1560,8 +1547,7 @@ instanceKlassHandle SystemDictionary::find_or_define_instance_class(symbolHandle } // Acquire define token for this class/classloader - symbolHandle nullsymbolHandle; - probe = placeholders()->find_and_add(p_index, p_hash, name_h, class_loader, PlaceholderTable::DEFINE_CLASS, nullsymbolHandle, THREAD); + probe = placeholders()->find_and_add(p_index, p_hash, name_h, class_loader, PlaceholderTable::DEFINE_CLASS, NULL, THREAD); // Wait if another thread defining in parallel // All threads wait - even those that will throw duplicate class: otherwise // caller is surprised by LinkageError: duplicate, but findLoadedClass fails @@ -1653,7 +1639,7 @@ void SystemDictionary::check_loader_lock_contention(Handle loader_lock, TRAPS) { // Lookup klassOop SystemDictionary::find_class(int index, unsigned int hash, - symbolHandle class_name, + Symbol* class_name, Handle class_loader) { assert_locked_or_safepoint(SystemDictionary_lock); assert (index == dictionary()->index_for(class_name, class_loader), @@ -1665,18 +1651,17 @@ klassOop SystemDictionary::find_class(int index, unsigned int hash, // Basic find on classes in the midst of being loaded -symbolOop SystemDictionary::find_placeholder(int index, unsigned int hash, - symbolHandle class_name, - Handle class_loader) { +Symbol* SystemDictionary::find_placeholder(Symbol* class_name, + Handle class_loader) { assert_locked_or_safepoint(SystemDictionary_lock); - - return placeholders()->find_entry(index, hash, class_name, class_loader); + unsigned int p_hash = placeholders()->compute_hash(class_name, class_loader); + int p_index = placeholders()->hash_to_index(p_hash); + return placeholders()->find_entry(p_index, p_hash, class_name, class_loader); } // Used for assertions and verification only -oop SystemDictionary::find_class_or_placeholder(symbolHandle class_name, - Handle class_loader) { +klassOop SystemDictionary::find_class(Symbol* class_name, Handle class_loader) { #ifndef ASSERT guarantee(VerifyBeforeGC || VerifyDuringGC || @@ -1684,22 +1669,11 @@ oop SystemDictionary::find_class_or_placeholder(symbolHandle class_name, VerifyAfterGC, "too expensive"); #endif assert_locked_or_safepoint(SystemDictionary_lock); - symbolOop class_name_ = class_name(); - oop class_loader_ = class_loader(); // First look in the loaded class array unsigned int d_hash = dictionary()->compute_hash(class_name, class_loader); int d_index = dictionary()->hash_to_index(d_hash); - oop lookup = find_class(d_index, d_hash, class_name, class_loader); - - if (lookup == NULL) { - // Next try the placeholders - unsigned int p_hash = placeholders()->compute_hash(class_name,class_loader); - int p_index = placeholders()->hash_to_index(p_hash); - lookup = find_placeholder(p_index, p_hash, class_name, class_loader); - } - - return lookup; + return find_class(d_index, d_hash, class_name, class_loader); } @@ -1757,12 +1731,6 @@ void SystemDictionary::always_strong_classes_do(OopClosure* blk) { // Visit extra methods invoke_method_table()->oops_do(blk); - - // Loader constraints. We must keep the symbolOop used in the name alive. - constraints()->always_strong_classes_do(blk); - - // Resolution errors keep the symbolOop for the error alive - resolution_errors()->always_strong_classes_do(blk); } @@ -1808,9 +1776,6 @@ void SystemDictionary::oops_do(OopClosure* f) { void SystemDictionary::preloaded_oops_do(OopClosure* f) { - f->do_oop((oop*) &wk_klass_name_limits[0]); - f->do_oop((oop*) &wk_klass_name_limits[1]); - for (int k = (int)FIRST_WKID; k < (int)WKID_LIMIT; k++) { f->do_oop((oop*) &_well_known_klasses[k]); } @@ -1862,7 +1827,7 @@ void SystemDictionary::classes_do(void f(klassOop, oop, TRAPS), TRAPS) { dictionary()->classes_do(f, CHECK); } -void SystemDictionary::placeholders_do(void f(symbolOop, oop)) { +void SystemDictionary::placeholders_do(void f(Symbol*, oop)) { placeholders()->entries_do(f); } @@ -1882,7 +1847,7 @@ void SystemDictionary::load_abstract_ownable_synchronizer_klass(TRAPS) { // class is loaded. klassOop aos = _abstract_ownable_synchronizer_klass; if (aos == NULL) { - klassOop k = resolve_or_fail(vmSymbolHandles::java_util_concurrent_locks_AbstractOwnableSynchronizer(), true, CHECK); + klassOop k = resolve_or_fail(vmSymbols::java_util_concurrent_locks_AbstractOwnableSynchronizer(), true, CHECK); // Force a fence to prevent any read before the write completes OrderAccess::fence(); _abstract_ownable_synchronizer_klass = k; @@ -1924,7 +1889,7 @@ bool SystemDictionary::initialize_wk_klass(WKID id, int init_opt, TRAPS) { assert(id >= (int)FIRST_WKID && id < (int)WKID_LIMIT, "oob"); int info = wk_init_info[id - FIRST_WKID]; int sid = (info >> CEIL_LG_OPTION_LIMIT); - symbolHandle symbol = vmSymbolHandles::symbol_handle_at((vmSymbols::SID)sid); + Symbol* symbol = vmSymbols::symbol_at((vmSymbols::SID)sid); klassOop* klassp = &_well_known_klasses[id]; bool must_load = (init_opt < SystemDictionary::Opt); bool try_load = true; @@ -1954,7 +1919,7 @@ void SystemDictionary::initialize_wk_klasses_until(WKID limit_id, WKID &start_id initialize_wk_klass((WKID)id, opt, CHECK); // Update limits, so find_well_known_klass can be very fast: - symbolOop s = vmSymbols::symbol_at((vmSymbols::SID)sid); + Symbol* s = vmSymbols::symbol_at((vmSymbols::SID)sid); if (wk_klass_name_limits[1] == NULL) { wk_klass_name_limits[0] = wk_klass_name_limits[1] = s; } else if (wk_klass_name_limits[1] < s) { @@ -2081,7 +2046,7 @@ void SystemDictionary::check_constraints(int d_index, unsigned int d_hash, TRAPS) { const char *linkage_error = NULL; { - symbolHandle name (THREAD, k->name()); + Symbol* name = k->name(); MutexLocker mu(SystemDictionary_lock, THREAD); klassOop check = find_class(d_index, d_hash, name, class_loader); @@ -2102,10 +2067,8 @@ void SystemDictionary::check_constraints(int d_index, unsigned int d_hash, } #ifdef ASSERT - unsigned int p_hash = placeholders()->compute_hash(name, class_loader); - int p_index = placeholders()->hash_to_index(p_hash); - symbolOop ph_check = find_placeholder(p_index, p_hash, name, class_loader); - assert(ph_check == NULL || ph_check == name(), "invalid symbol"); + Symbol* ph_check = find_placeholder(name, class_loader); + assert(ph_check == NULL || ph_check == name, "invalid symbol"); #endif if (linkage_error == NULL) { @@ -2141,7 +2104,7 @@ void SystemDictionary::update_dictionary(int d_index, unsigned int d_hash, TRAPS) { // Compile_lock prevents systemDictionary updates during compilations assert_locked_or_safepoint(Compile_lock); - symbolHandle name (THREAD, k->name()); + Symbol* name = k->name(); { MutexLocker mu1(SystemDictionary_lock, THREAD); @@ -2181,7 +2144,7 @@ void SystemDictionary::update_dictionary(int d_index, unsigned int d_hash, // while only one thread can define a class at one time, multiple // classes can resolve the superclass for a class at one time, // and the placeholder is used to track that -// symbolOop ph_check = find_placeholder(p_index, p_hash, name, class_loader); +// Symbol* ph_check = find_placeholder(name, class_loader); // assert (ph_check == NULL, "should not have a placeholder entry"); #endif SystemDictionary_lock->notify_all(); @@ -2190,7 +2153,7 @@ void SystemDictionary::update_dictionary(int d_index, unsigned int d_hash, klassOop SystemDictionary::find_constrained_instance_or_array_klass( - symbolHandle class_name, Handle class_loader, TRAPS) { + Symbol* class_name, Handle class_loader, TRAPS) { // First see if it has been loaded directly. // Force the protection domain to be null. (This removes protection checks.) @@ -2203,23 +2166,20 @@ klassOop SystemDictionary::find_constrained_instance_or_array_klass( // Now look to see if it has been loaded elsewhere, and is subject to // a loader constraint that would require this loader to return the // klass that is already loaded. - if (FieldType::is_array(class_name())) { + if (FieldType::is_array(class_name)) { // For array classes, their klassOops are not kept in the // constraint table. The element klassOops are. - jint dimension; - symbolOop object_key; - BasicType t = FieldType::get_array_info(class_name(), &dimension, - &object_key, CHECK_(NULL)); + FieldArrayInfo fd; + BasicType t = FieldType::get_array_info(class_name, fd, CHECK_(NULL)); if (t != T_OBJECT) { klass = Universe::typeArrayKlassObj(t); } else { - symbolHandle elem_name(THREAD, object_key); MutexLocker mu(SystemDictionary_lock, THREAD); - klass = constraints()->find_constrained_klass(elem_name, class_loader); + klass = constraints()->find_constrained_klass(fd.object_key(), class_loader); } // If element class already loaded, allocate array klass if (klass != NULL) { - klass = Klass::cast(klass)->array_klass_or_null(dimension); + klass = Klass::cast(klass)->array_klass_or_null(fd.dimension()); } } else { MutexLocker mu(SystemDictionary_lock, THREAD); @@ -2231,25 +2191,23 @@ klassOop SystemDictionary::find_constrained_instance_or_array_klass( } -bool SystemDictionary::add_loader_constraint(symbolHandle class_name, +bool SystemDictionary::add_loader_constraint(Symbol* class_name, Handle class_loader1, Handle class_loader2, Thread* THREAD) { - symbolHandle constraint_name; - if (!FieldType::is_array(class_name())) { + Symbol* constraint_name = NULL; + if (!FieldType::is_array(class_name)) { constraint_name = class_name; } else { // For array classes, their klassOops are not kept in the // constraint table. The element classes are. - jint dimension; - symbolOop object_key; - BasicType t = FieldType::get_array_info(class_name(), &dimension, - &object_key, CHECK_(false)); + FieldArrayInfo fd; + BasicType t = FieldType::get_array_info(class_name, fd, CHECK_(false)); // primitive types always pass if (t != T_OBJECT) { return true; } else { - constraint_name = symbolHandle(THREAD, object_key); + constraint_name = fd.object_key(); } } unsigned int d_hash1 = dictionary()->compute_hash(constraint_name, class_loader1); @@ -2272,7 +2230,7 @@ bool SystemDictionary::add_loader_constraint(symbolHandle class_name, // Add entry to resolution error table to record the error when the first // attempt to resolve a reference to a class has failed. -void SystemDictionary::add_resolution_error(constantPoolHandle pool, int which, symbolHandle error) { +void SystemDictionary::add_resolution_error(constantPoolHandle pool, int which, Symbol* error) { unsigned int hash = resolution_errors()->compute_hash(pool, which); int index = resolution_errors()->hash_to_index(hash); { @@ -2282,13 +2240,13 @@ void SystemDictionary::add_resolution_error(constantPoolHandle pool, int which, } // Lookup resolution error table. Returns error if found, otherwise NULL. -symbolOop SystemDictionary::find_resolution_error(constantPoolHandle pool, int which) { +Symbol* SystemDictionary::find_resolution_error(constantPoolHandle pool, int which) { unsigned int hash = resolution_errors()->compute_hash(pool, which); int index = resolution_errors()->hash_to_index(hash); { MutexLocker ml(SystemDictionary_lock, Thread::current()); ResolutionErrorEntry* entry = resolution_errors()->find_entry(index, hash, pool, which); - return (entry != NULL) ? entry->error() : (symbolOop)NULL; + return (entry != NULL) ? entry->error() : (Symbol*)NULL; } } @@ -2344,7 +2302,7 @@ symbolOop SystemDictionary::find_resolution_error(constantPoolHandle pool, int w // NULL if no constraint failed. The returned C string needs cleaning up // with a ResourceMark in the caller. No exception except OOME is thrown. // Arrays are not added to the loader constraint table, their elements are. -char* SystemDictionary::check_signature_loaders(symbolHandle signature, +char* SystemDictionary::check_signature_loaders(Symbol* signature, Handle loader1, Handle loader2, bool is_method, TRAPS) { // Nothing to do if loaders are the same. @@ -2352,13 +2310,14 @@ char* SystemDictionary::check_signature_loaders(symbolHandle signature, return NULL; } + ResourceMark rm(THREAD); SignatureStream sig_strm(signature, is_method); while (!sig_strm.is_done()) { if (sig_strm.is_object()) { - symbolOop s = sig_strm.as_symbol(CHECK_NULL); - symbolHandle sig (THREAD, s); + Symbol* s = sig_strm.as_symbol(CHECK_NULL); + Symbol* sig = s; if (!add_loader_constraint(sig, loader1, loader2, THREAD)) { - return sig()->as_C_string(); + return sig->as_C_string(); } } sig_strm.next(); @@ -2367,12 +2326,12 @@ char* SystemDictionary::check_signature_loaders(symbolHandle signature, } -methodOop SystemDictionary::find_method_handle_invoke(symbolHandle name, - symbolHandle signature, +methodOop SystemDictionary::find_method_handle_invoke(Symbol* name, + Symbol* signature, KlassHandle accessing_klass, TRAPS) { if (!EnableMethodHandles) return NULL; - vmSymbols::SID name_id = vmSymbols::find_sid(name()); + vmSymbols::SID name_id = vmSymbols::find_sid(name); assert(name_id != vmSymbols::NO_SID, "must be a known name"); unsigned int hash = invoke_method_table()->compute_hash(signature, name_id); int index = invoke_method_table()->hash_to_index(hash); @@ -2385,7 +2344,7 @@ methodOop SystemDictionary::find_method_handle_invoke(symbolHandle name, return NULL; // do not attempt from within compiler bool for_invokeGeneric = (name_id == vmSymbols::VM_SYMBOL_ENUM_NAME(invokeGeneric_name)); bool found_on_bcp = false; - Handle mt = find_method_handle_type(signature(), accessing_klass, + Handle mt = find_method_handle_type(signature, accessing_klass, for_invokeGeneric, found_on_bcp, CHECK_NULL); KlassHandle mh_klass = SystemDictionaryHandles::MethodHandle_klass(); @@ -2416,7 +2375,7 @@ methodOop SystemDictionary::find_method_handle_invoke(symbolHandle name, // signature, as interpreted relative to the given class loader. // Because of class loader constraints, all method handle usage must be // consistent with this loader. -Handle SystemDictionary::find_method_handle_type(symbolHandle signature, +Handle SystemDictionary::find_method_handle_type(Symbol* signature, KlassHandle accessing_klass, bool for_invokeGeneric, bool& return_bcp_flag, @@ -2424,11 +2383,12 @@ Handle SystemDictionary::find_method_handle_type(symbolHandle signature, Handle class_loader, protection_domain; bool is_on_bcp = true; // keep this true as long as we can materialize from the boot classloader Handle empty; - int npts = ArgumentCount(signature()).size(); + int npts = ArgumentCount(signature).size(); objArrayHandle pts = oopFactory::new_objArray(SystemDictionary::Class_klass(), npts, CHECK_(empty)); int arg = 0; Handle rt; // the return type from the signature - for (SignatureStream ss(signature()); !ss.is_done(); ss.next()) { + ResourceMark rm(THREAD); + for (SignatureStream ss(signature); !ss.is_done(); ss.next()) { oop mirror = NULL; if (is_on_bcp) { mirror = ss.as_java_mirror(class_loader, protection_domain, @@ -2500,17 +2460,18 @@ Handle SystemDictionary::find_method_handle_type(symbolHandle signature, Handle SystemDictionary::link_method_handle_constant(KlassHandle caller, int ref_kind, //e.g., JVM_REF_invokeVirtual KlassHandle callee, - symbolHandle name_sym, - symbolHandle signature, + Symbol* name_sym, + Symbol* signature, TRAPS) { Handle empty; - Handle name = java_lang_String::create_from_symbol(name_sym(), CHECK_(empty)); + Handle name = java_lang_String::create_from_symbol(name_sym, CHECK_(empty)); Handle type; if (signature->utf8_length() > 0 && signature->byte_at(0) == '(') { bool ignore_is_on_bcp = false; type = find_method_handle_type(signature, caller, false, ignore_is_on_bcp, CHECK_(empty)); } else { - SignatureStream ss(signature(), false); + ResourceMark rm(THREAD); + SignatureStream ss(signature, false); if (!ss.is_done()) { oop mirror = ss.as_java_mirror(caller->class_loader(), caller->protection_domain(), SignatureStream::NCDFError, CHECK_(empty)); @@ -2542,7 +2503,7 @@ Handle SystemDictionary::link_method_handle_constant(KlassHandle caller, // Ask Java code to find or construct a java.dyn.CallSite for the given // name and signature, as interpreted relative to the given class loader. Handle SystemDictionary::make_dynamic_call_site(Handle bootstrap_method, - symbolHandle name, + Symbol* name, methodHandle signature_invoker, Handle info, methodHandle caller_method, @@ -2557,7 +2518,7 @@ Handle SystemDictionary::make_dynamic_call_site(Handle bootstrap_method, MethodHandles::init_MemberName(caller_mname(), caller_method()); // call sun.dyn.MethodHandleNatives::makeDynamicCallSite(bootm, name, mtype, info, caller_mname, caller_pos) - oop name_str_oop = StringTable::intern(name(), CHECK_(empty)); // not a handle! + oop name_str_oop = StringTable::intern(name, CHECK_(empty)); // not a handle! JavaCallArguments args(Handle(THREAD, bootstrap_method())); args.push_oop(name_str_oop); args.push_oop(signature_invoker->method_handle_type()); @@ -2740,16 +2701,20 @@ void SystemDictionary::verify() { void SystemDictionary::verify_obj_klass_present(Handle obj, - symbolHandle class_name, + Symbol* class_name, Handle class_loader) { GCMutexLocker mu(SystemDictionary_lock); - oop probe = find_class_or_placeholder(class_name, class_loader); + Symbol* name; + + klassOop probe = find_class(class_name, class_loader); if (probe == NULL) { probe = SystemDictionary::find_shared_class(class_name); + if (probe == NULL) { + name = find_placeholder(class_name, class_loader); + } } - guarantee(probe != NULL && - (!probe->is_klass() || probe == obj()), - "Loaded klasses should be in SystemDictionary"); + guarantee(probe != NULL || name != NULL, + "Loaded klasses should be in SystemDictionary"); } #ifndef PRODUCT diff --git a/hotspot/src/share/vm/classfile/systemDictionary.hpp b/hotspot/src/share/vm/classfile/systemDictionary.hpp index 9dc5b933f80..89dbadef639 100644 --- a/hotspot/src/share/vm/classfile/systemDictionary.hpp +++ b/hotspot/src/share/vm/classfile/systemDictionary.hpp @@ -28,14 +28,14 @@ #include "classfile/classFileStream.hpp" #include "classfile/classLoader.hpp" #include "oops/objArrayOop.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/java.hpp" #include "runtime/reflectionUtils.hpp" #include "utilities/hashtable.hpp" // The system dictionary stores all loaded classes and maps: // -// [class name,class loader] -> class i.e. [symbolOop,oop] -> klassOop +// [class name,class loader] -> class i.e. [Symbol*,oop] -> klassOop // // Classes are loaded lazily. The default VM class loader is // represented as NULL. @@ -226,26 +226,26 @@ class SystemDictionary : AllStatic { // throw_error flag. For most uses the throw_error argument should be set // to true. - static klassOop resolve_or_fail(symbolHandle class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS); + static klassOop resolve_or_fail(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS); // Convenient call for null loader and protection domain. - static klassOop resolve_or_fail(symbolHandle class_name, bool throw_error, TRAPS); + static klassOop resolve_or_fail(Symbol* class_name, bool throw_error, TRAPS); private: // handle error translation for resolve_or_null results - static klassOop handle_resolution_exception(symbolHandle class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS); + static klassOop handle_resolution_exception(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS); public: // Returns a class with a given class name and class loader. // Loads the class if needed. If not found NULL is returned. - static klassOop resolve_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS); + static klassOop resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); // Version with null loader and protection domain - static klassOop resolve_or_null(symbolHandle class_name, TRAPS); + static klassOop resolve_or_null(Symbol* class_name, TRAPS); // Resolve a superclass or superinterface. Called from ClassFileParser, // parse_interfaces, resolve_instance_class_or_null, load_shared_class // "child_name" is the class whose super class or interface is being resolved. - static klassOop resolve_super_or_fail(symbolHandle child_name, - symbolHandle class_name, + static klassOop resolve_super_or_fail(Symbol* child_name, + Symbol* class_name, Handle class_loader, Handle protection_domain, bool is_superclass, @@ -253,7 +253,7 @@ public: // Parse new stream. This won't update the system dictionary or // class hierarchy, simply parse the stream. Used by JVMTI RedefineClasses. - static klassOop parse_stream(symbolHandle class_name, + static klassOop parse_stream(Symbol* class_name, Handle class_loader, Handle protection_domain, ClassFileStream* st, @@ -261,7 +261,7 @@ public: KlassHandle nullHandle; return parse_stream(class_name, class_loader, protection_domain, st, nullHandle, NULL, THREAD); } - static klassOop parse_stream(symbolHandle class_name, + static klassOop parse_stream(Symbol* class_name, Handle class_loader, Handle protection_domain, ClassFileStream* st, @@ -270,23 +270,23 @@ public: TRAPS); // Resolve from stream (called by jni_DefineClass and JVM_DefineClass) - static klassOop resolve_from_stream(symbolHandle class_name, Handle class_loader, + static klassOop resolve_from_stream(Symbol* class_name, Handle class_loader, Handle protection_domain, ClassFileStream* st, bool verify, TRAPS); // Lookup an already loaded class. If not found NULL is returned. - static klassOop find(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS); + static klassOop find(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); // Lookup an already loaded instance or array class. // Do not make any queries to class loaders; consult only the cache. // If not found NULL is returned. - static klassOop find_instance_or_array_klass(symbolHandle class_name, + static klassOop find_instance_or_array_klass(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); // If the given name is known to vmSymbols, return the well-know klass: - static klassOop find_well_known_klass(symbolOop class_name); + static klassOop find_well_known_klass(Symbol* class_name); // Lookup an instance or array class that has already been loaded // either into the given class loader, or else into another class @@ -309,7 +309,7 @@ public: // satisfied, and it is safe for classes in the given class loader // to manipulate strongly-typed values of the found class, subject // to local linkage and access checks. - static klassOop find_constrained_instance_or_array_klass(symbolHandle class_name, + static klassOop find_constrained_instance_or_array_klass(Symbol* class_name, Handle class_loader, TRAPS); @@ -324,7 +324,7 @@ public: // (added for helpers that use HandleMarks and ResourceMarks) static void classes_do(void f(klassOop, oop, TRAPS), TRAPS); // All entries in the placeholder table and their class loaders - static void placeholders_do(void f(symbolOop, oop)); + static void placeholders_do(void f(Symbol*, oop)); // Iterate over all methods in all klasses in dictionary static void methods_do(void f(methodOop)); @@ -383,12 +383,12 @@ public: static void verify(); #ifdef ASSERT - static bool is_internal_format(symbolHandle class_name); + static bool is_internal_format(Symbol* class_name); #endif // Verify class is in dictionary static void verify_obj_klass_present(Handle obj, - symbolHandle class_name, + Symbol* class_name, Handle class_loader); // Initialization @@ -469,19 +469,19 @@ public: // Note: java_lang_Class::primitive_type is the inverse of java_mirror // Check class loader constraints - static bool add_loader_constraint(symbolHandle name, Handle loader1, + static bool add_loader_constraint(Symbol* name, Handle loader1, Handle loader2, TRAPS); - static char* check_signature_loaders(symbolHandle signature, Handle loader1, + static char* check_signature_loaders(Symbol* signature, Handle loader1, Handle loader2, bool is_method, TRAPS); // JSR 292 // find the java.dyn.MethodHandles::invoke method for a given signature - static methodOop find_method_handle_invoke(symbolHandle name, - symbolHandle signature, + static methodOop find_method_handle_invoke(Symbol* name, + Symbol* signature, KlassHandle accessing_klass, TRAPS); // ask Java to compute a java.dyn.MethodType object for a given signature - static Handle find_method_handle_type(symbolHandle signature, + static Handle find_method_handle_type(Symbol* signature, KlassHandle accessing_klass, bool for_invokeGeneric, bool& return_bcp_flag, @@ -490,13 +490,13 @@ public: static Handle link_method_handle_constant(KlassHandle caller, int ref_kind, //e.g., JVM_REF_invokeVirtual KlassHandle callee, - symbolHandle name, - symbolHandle signature, + Symbol* name, + Symbol* signature, TRAPS); // ask Java to create a dynamic call site, while linking an invokedynamic op static Handle make_dynamic_call_site(Handle bootstrap_method, // Callee information: - symbolHandle name, + Symbol* name, methodHandle signature_invoker, Handle info, // Caller information: @@ -519,8 +519,8 @@ public: // Record the error when the first attempt to resolve a reference from a constant // pool entry to a class fails. - static void add_resolution_error(constantPoolHandle pool, int which, symbolHandle error); - static symbolOop find_resolution_error(constantPoolHandle pool, int which); + static void add_resolution_error(constantPoolHandle pool, int which, Symbol* error); + static Symbol* find_resolution_error(constantPoolHandle pool, int which); private: @@ -580,29 +580,29 @@ private: static SymbolPropertyTable* invoke_method_table() { return _invoke_method_table; } // Basic loading operations - static klassOop resolve_instance_class_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS); - static klassOop resolve_array_class_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS); - static instanceKlassHandle handle_parallel_super_load(symbolHandle class_name, symbolHandle supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS); + static klassOop resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); + static klassOop resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); + static instanceKlassHandle handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS); // Wait on SystemDictionary_lock; unlocks lockObject before // waiting; relocks lockObject with correct recursion count // after waiting, but before reentering SystemDictionary_lock // to preserve lock order semantics. static void double_lock_wait(Handle lockObject, TRAPS); static void define_instance_class(instanceKlassHandle k, TRAPS); - static instanceKlassHandle find_or_define_instance_class(symbolHandle class_name, + static instanceKlassHandle find_or_define_instance_class(Symbol* class_name, Handle class_loader, instanceKlassHandle k, TRAPS); - static instanceKlassHandle load_shared_class(symbolHandle class_name, + static instanceKlassHandle load_shared_class(Symbol* class_name, Handle class_loader, TRAPS); static instanceKlassHandle load_shared_class(instanceKlassHandle ik, Handle class_loader, TRAPS); - static instanceKlassHandle load_instance_class(symbolHandle class_name, Handle class_loader, TRAPS); + static instanceKlassHandle load_instance_class(Symbol* class_name, Handle class_loader, TRAPS); static Handle compute_loader_lock_object(Handle class_loader, TRAPS); static void check_loader_lock_contention(Handle loader_lock, TRAPS); static bool is_parallelCapable(Handle class_loader); static bool is_parallelDefine(Handle class_loader); - static klassOop find_shared_class(symbolHandle class_name); + static klassOop find_shared_class(Symbol* class_name); // Setup link to hierarchy static void add_to_hierarchy(instanceKlassHandle k, TRAPS); @@ -613,34 +613,29 @@ private: // Basic find on loaded classes static klassOop find_class(int index, unsigned int hash, - symbolHandle name, Handle loader); + Symbol* name, Handle loader); + static klassOop find_class(Symbol* class_name, Handle class_loader); // Basic find on classes in the midst of being loaded - static symbolOop find_placeholder(int index, unsigned int hash, - symbolHandle name, Handle loader); - - // Basic find operation of loaded classes and classes in the midst - // of loading; used for assertions and verification only. - static oop find_class_or_placeholder(symbolHandle class_name, - Handle class_loader); + static Symbol* find_placeholder(Symbol* name, Handle loader); // Updating entry in dictionary // Add a completely loaded class - static void add_klass(int index, symbolHandle class_name, + static void add_klass(int index, Symbol* class_name, Handle class_loader, KlassHandle obj); // Add a placeholder for a class being loaded static void add_placeholder(int index, - symbolHandle class_name, + Symbol* class_name, Handle class_loader); static void remove_placeholder(int index, - symbolHandle class_name, + Symbol* class_name, Handle class_loader); // Performs cleanups after resolve_super_or_fail. This typically needs // to be called on failure. // Won't throw, but can block. - static void resolution_cleanups(symbolHandle class_name, + static void resolution_cleanups(Symbol* class_name, Handle class_loader, TRAPS); @@ -670,7 +665,6 @@ private: static bool _has_checkPackageAccess; }; -// Cf. vmSymbols vs. vmSymbolHandles class SystemDictionaryHandles : AllStatic { public: #define WK_KLASS_HANDLE_DECLARE(name, ignore_symbol, option) \ diff --git a/hotspot/src/share/vm/classfile/verificationType.cpp b/hotspot/src/share/vm/classfile/verificationType.cpp index 7a2612a1224..0e994fcf4be 100644 --- a/hotspot/src/share/vm/classfile/verificationType.cpp +++ b/hotspot/src/share/vm/classfile/verificationType.cpp @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "classfile/symbolTable.hpp" #include "classfile/verificationType.hpp" +#include "classfile/verifier.hpp" VerificationType VerificationType::from_tag(u1 tag) { switch (tag) { @@ -41,7 +42,8 @@ VerificationType VerificationType::from_tag(u1 tag) { } bool VerificationType::is_reference_assignable_from( - const VerificationType& from, instanceKlassHandle context, TRAPS) const { + const VerificationType& from, ClassVerifier* context, TRAPS) const { + instanceKlassHandle klass = context->current_class(); if (from.is_null()) { // null is assignable to any reference return true; @@ -56,8 +58,8 @@ bool VerificationType::is_reference_assignable_from( return true; } klassOop obj = SystemDictionary::resolve_or_fail( - name_handle(), Handle(THREAD, context->class_loader()), - Handle(THREAD, context->protection_domain()), true, CHECK_false); + name(), Handle(THREAD, klass->class_loader()), + Handle(THREAD, klass->protection_domain()), true, CHECK_false); KlassHandle this_class(THREAD, obj); if (this_class->is_interface()) { @@ -66,13 +68,13 @@ bool VerificationType::is_reference_assignable_from( return true; } else if (from.is_object()) { klassOop from_class = SystemDictionary::resolve_or_fail( - from.name_handle(), Handle(THREAD, context->class_loader()), - Handle(THREAD, context->protection_domain()), true, CHECK_false); + from.name(), Handle(THREAD, klass->class_loader()), + Handle(THREAD, klass->protection_domain()), true, CHECK_false); return instanceKlass::cast(from_class)->is_subclass_of(this_class()); } } else if (is_array() && from.is_array()) { - VerificationType comp_this = get_component(CHECK_false); - VerificationType comp_from = from.get_component(CHECK_false); + VerificationType comp_this = get_component(context, CHECK_false); + VerificationType comp_from = from.get_component(context, CHECK_false); if (!comp_this.is_bogus() && !comp_from.is_bogus()) { return comp_this.is_assignable_from(comp_from, context, CHECK_false); } @@ -80,9 +82,9 @@ bool VerificationType::is_reference_assignable_from( return false; } -VerificationType VerificationType::get_component(TRAPS) const { +VerificationType VerificationType::get_component(ClassVerifier *context, TRAPS) const { assert(is_array() && name()->utf8_length() >= 2, "Must be a valid array"); - symbolOop component; + Symbol* component; switch (name()->byte_at(1)) { case 'Z': return VerificationType(Boolean); case 'B': return VerificationType(Byte); @@ -93,12 +95,12 @@ VerificationType VerificationType::get_component(TRAPS) const { case 'F': return VerificationType(Float); case 'D': return VerificationType(Double); case '[': - component = SymbolTable::lookup( + component = context->create_temporary_symbol( name(), 1, name()->utf8_length(), CHECK_(VerificationType::bogus_type())); return VerificationType::reference_type(component); case 'L': - component = SymbolTable::lookup( + component = context->create_temporary_symbol( name(), 2, name()->utf8_length() - 1, CHECK_(VerificationType::bogus_type())); return VerificationType::reference_type(component); diff --git a/hotspot/src/share/vm/classfile/verificationType.hpp b/hotspot/src/share/vm/classfile/verificationType.hpp index 8163d966e5a..e4e67489dec 100644 --- a/hotspot/src/share/vm/classfile/verificationType.hpp +++ b/hotspot/src/share/vm/classfile/verificationType.hpp @@ -29,7 +29,7 @@ #include "memory/allocation.hpp" #include "oops/instanceKlass.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/handles.hpp" #include "runtime/signature.hpp" @@ -47,6 +47,8 @@ enum { ITEM_Bogus = (uint)-1 }; +class ClassVerifier; + class VerificationType VALUE_OBJ_CLASS_SPEC { private: // Least significant bits of _handle are always 0, so we use these as @@ -56,7 +58,7 @@ class VerificationType VALUE_OBJ_CLASS_SPEC { // will catch this and we'll have to add a descriminator tag to this // structure. union { - symbolOop* _handle; + Symbol* _sym; uintptr_t _data; } _u; @@ -73,7 +75,7 @@ class VerificationType VALUE_OBJ_CLASS_SPEC { TypeMask = 0x00000003, // Topmost types encoding - Reference = 0x0, // _handle contains the name + Reference = 0x0, // _sym contains the name Primitive = 0x1, // see below for primitive list Uninitialized = 0x2, // 0x00ffff00 contains bci TypeQuery = 0x3, // Meta-types used for category testing @@ -85,7 +87,7 @@ class VerificationType VALUE_OBJ_CLASS_SPEC { Category2_2ndFlag = 0x04, // Second word of a two-word value // special reference values - Null = 0x00000000, // A reference with a 0 handle is null + Null = 0x00000000, // A reference with a 0 sym is null // Primitives categories (the second byte determines the category) Category1 = (Category1Flag << 1 * BitsPerByte) | Primitive, @@ -152,17 +154,14 @@ class VerificationType VALUE_OBJ_CLASS_SPEC { static VerificationType category2_2nd_check() { return VerificationType(Category2_2ndQuery); } - // For reference types, store the actual oop* handle - static VerificationType reference_type(symbolHandle sh) { - assert(((uintptr_t)sh.raw_value() & 0x3) == 0, "Oops must be aligned"); + // For reference types, store the actual Symbol + static VerificationType reference_type(Symbol* sh) { + assert(((uintptr_t)sh & 0x3) == 0, "Oops must be aligned"); // If the above assert fails in the future because oop* isn't aligned, // then this type encoding system will have to change to have a tag value // to descriminate between oops and primitives. - return VerificationType((uintptr_t)((symbolOop*)sh.raw_value())); + return VerificationType((uintptr_t)sh); } - static VerificationType reference_type(symbolOop s, TRAPS) - { return reference_type(symbolHandle(THREAD, s)); } - static VerificationType uninitialized_type(u2 bci) { return VerificationType(bci << 1 * BitsPerByte | Uninitialized); } static VerificationType uninitialized_this_type() @@ -242,13 +241,9 @@ class VerificationType VALUE_OBJ_CLASS_SPEC { return ((_u._data & BciMask) >> 1 * BitsPerByte); } - symbolHandle name_handle() const { + Symbol* name() const { assert(is_reference() && !is_null(), "Must be a non-null reference"); - return symbolHandle(_u._handle, true); - } - symbolOop name() const { - assert(is_reference() && !is_null(), "Must be a non-null reference"); - return *(_u._handle); + return _u._sym; } bool equals(const VerificationType& t) const { @@ -269,7 +264,7 @@ class VerificationType VALUE_OBJ_CLASS_SPEC { // is assignable to another. Returns true if one can assign 'from' to // this. bool is_assignable_from( - const VerificationType& from, instanceKlassHandle context, TRAPS) const { + const VerificationType& from, ClassVerifier* context, TRAPS) const { if (equals(from) || is_bogus()) { return true; } else { @@ -298,7 +293,7 @@ class VerificationType VALUE_OBJ_CLASS_SPEC { } } - VerificationType get_component(TRAPS) const; + VerificationType get_component(ClassVerifier* context, TRAPS) const; int dimensions() const { assert(is_array(), "Must be an array"); @@ -312,7 +307,7 @@ class VerificationType VALUE_OBJ_CLASS_SPEC { private: bool is_reference_assignable_from( - const VerificationType&, instanceKlassHandle, TRAPS) const; + const VerificationType&, ClassVerifier*, TRAPS) const; }; #endif // SHARE_VM_CLASSFILE_VERIFICATIONTYPE_HPP diff --git a/hotspot/src/share/vm/classfile/verifier.cpp b/hotspot/src/share/vm/classfile/verifier.cpp index 2690ac3f7bf..65e6fbf5a54 100644 --- a/hotspot/src/share/vm/classfile/verifier.cpp +++ b/hotspot/src/share/vm/classfile/verifier.cpp @@ -51,6 +51,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif #define NOFAILOVER_MAJOR_VERSION 51 @@ -98,10 +104,10 @@ bool Verifier::relax_verify_for(oop loader) { } bool Verifier::verify(instanceKlassHandle klass, Verifier::Mode mode, bool should_verify_class, TRAPS) { - ResourceMark rm(THREAD); HandleMark hm; + ResourceMark rm(THREAD); - symbolHandle exception_name; + Symbol* exception_name = NULL; const size_t message_buffer_len = klass->name()->utf8_length() + 1024; char* message_buffer = NEW_RESOURCE_ARRAY(char, message_buffer_len); @@ -141,7 +147,7 @@ bool Verifier::verify(instanceKlassHandle klass, Verifier::Mode mode, bool shoul tty->print("Verification for %s has", klassName); tty->print_cr(" exception pending %s ", instanceKlass::cast(PENDING_EXCEPTION->klass())->external_name()); - } else if (!exception_name.is_null()) { + } else if (exception_name != NULL) { tty->print_cr("Verification for %s failed", klassName); } tty->print_cr("End class verification for: %s", klassName); @@ -150,7 +156,7 @@ bool Verifier::verify(instanceKlassHandle klass, Verifier::Mode mode, bool shoul if (HAS_PENDING_EXCEPTION) { return false; // use the existing exception - } else if (exception_name.is_null()) { + } else if (exception_name == NULL) { return true; // verifcation succeeded } else { // VerifyError or ClassFormatError to be created and thrown ResourceMark rm(THREAD); @@ -172,7 +178,7 @@ bool Verifier::verify(instanceKlassHandle klass, Verifier::Mode mode, bool shoul } bool Verifier::is_eligible_for_verification(instanceKlassHandle klass, bool should_verify_class) { - symbolOop name = klass->name(); + Symbol* name = klass->name(); klassOop refl_magic_klass = SystemDictionary::reflect_MagicAccessorImpl_klass(); return (should_verify_for(klass->class_loader(), should_verify_class) && @@ -202,7 +208,7 @@ bool Verifier::is_eligible_for_verification(instanceKlassHandle klass, bool shou ); } -symbolHandle Verifier::inference_verify( +Symbol* Verifier::inference_verify( instanceKlassHandle klass, char* message, size_t message_len, TRAPS) { JavaThread* thread = (JavaThread*)THREAD; JNIEnv *env = thread->jni_environment(); @@ -245,18 +251,17 @@ symbolHandle Verifier::inference_verify( // These numbers are chosen so that VerifyClassCodes interface doesn't need // to be changed (still return jboolean (unsigned char)), and result is // 1 when verification is passed. - symbolHandle nh(NULL); if (result == 0) { return vmSymbols::java_lang_VerifyError(); } else if (result == 1) { - return nh; // verified. + return NULL; // verified. } else if (result == 2) { - THROW_MSG_(vmSymbols::java_lang_OutOfMemoryError(), message, nh); + THROW_MSG_(vmSymbols::java_lang_OutOfMemoryError(), message, NULL); } else if (result == 3) { return vmSymbols::java_lang_ClassFormatError(); } else { ShouldNotReachHere(); - return nh; + return NULL; } } @@ -266,12 +271,19 @@ bool ClassVerifier::_verify_verbose = false; ClassVerifier::ClassVerifier( instanceKlassHandle klass, char* msg, size_t msg_len, TRAPS) - : _thread(THREAD), _exception_type(symbolHandle()), _message(msg), + : _thread(THREAD), _exception_type(NULL), _message(msg), _message_buffer_len(msg_len), _klass(klass) { _this_type = VerificationType::reference_type(klass->name()); + // Create list to hold symbols in reference area. + _symbols = new GrowableArray(100, 0, NULL); } ClassVerifier::~ClassVerifier() { + // Decrement the reference count for any symbols created. + for (int i = 0; i < _symbols->length(); i++) { + Symbol* s = _symbols->at(i); + s->decrement_refcount(); + } } VerificationType ClassVerifier::object_type() const { @@ -308,7 +320,6 @@ void ClassVerifier::verify_class(TRAPS) { } void ClassVerifier::verify_method(methodHandle m, TRAPS) { - ResourceMark rm(THREAD); _method = m; // initialize _method if (_verify_verbose) { tty->print_cr("Verifying method %s", m->name_and_sig_as_C_string()); @@ -615,7 +626,7 @@ void ClassVerifier::verify_method(methodHandle m, TRAPS) { VerificationType::null_type(), CHECK_VERIFY(this)); } else { VerificationType component = - atype.get_component(CHECK_VERIFY(this)); + atype.get_component(this, CHECK_VERIFY(this)); current_frame.push_stack(component, CHECK_VERIFY(this)); } no_control_flow = false; break; @@ -1386,7 +1397,7 @@ void ClassVerifier::verify_exception_handler_table(u4 code_length, char* code_da VerificationType throwable = VerificationType::reference_type(vmSymbols::java_lang_Throwable()); bool is_subclass = throwable.is_assignable_from( - catch_type, current_class(), CHECK_VERIFY(this)); + catch_type, this, CHECK_VERIFY(this)); if (!is_subclass) { // 4286534: should throw VerifyError according to recent spec change verify_error( @@ -1473,8 +1484,6 @@ void ClassVerifier::verify_exception_handler_targets(u2 bci, bool this_uninit, S if(bci >= start_pc && bci < end_pc) { u1 flags = current_frame->flags(); if (this_uninit) { flags |= FLAG_THIS_UNINIT; } - - ResourceMark rm(THREAD); StackMapFrame* new_frame = current_frame->frame_in_exception_handler(flags); if (catch_type_index != 0) { // We know that this index refers to a subclass of Throwable @@ -1575,7 +1584,7 @@ void ClassVerifier::class_format_error(const char* msg, ...) { va_end(va); } -klassOop ClassVerifier::load_class(symbolHandle name, TRAPS) { +klassOop ClassVerifier::load_class(Symbol* name, TRAPS) { // Get current loader and protection domain first. oop loader = current_class()->class_loader(); oop protection_domain = current_class()->protection_domain(); @@ -1587,8 +1596,8 @@ klassOop ClassVerifier::load_class(symbolHandle name, TRAPS) { bool ClassVerifier::is_protected_access(instanceKlassHandle this_class, klassOop target_class, - symbolOop field_name, - symbolOop field_sig, + Symbol* field_name, + Symbol* field_sig, bool is_method) { No_Safepoint_Verifier nosafepoint; @@ -1736,7 +1745,7 @@ void ClassVerifier::verify_switch( } bool ClassVerifier::name_in_supers( - symbolOop ref_name, instanceKlassHandle current) { + Symbol* ref_name, instanceKlassHandle current) { klassOop super = current->super(); while (super != NULL) { if (super->klass_part()->name() == ref_name) { @@ -1755,8 +1764,8 @@ void ClassVerifier::verify_field_instructions(RawBytecodeStream* bcs, verify_cp_type(index, cp, 1 << JVM_CONSTANT_Fieldref, CHECK_VERIFY(this)); // Get field name and signature - symbolHandle field_name = symbolHandle(THREAD, cp->name_ref_at(index)); - symbolHandle field_sig = symbolHandle(THREAD, cp->signature_ref_at(index)); + Symbol* field_name = cp->name_ref_at(index); + Symbol* field_sig = cp->signature_ref_at(index); if (!SignatureVerifier::is_valid_type_signature(field_sig)) { class_format_error( @@ -1823,11 +1832,11 @@ void ClassVerifier::verify_field_instructions(RawBytecodeStream* bcs, fieldDescriptor fd; if (stack_object_type == VerificationType::uninitialized_this_type() && target_class_type.equals(current_type()) && - _klass->find_local_field(field_name(), field_sig(), &fd)) { + _klass->find_local_field(field_name, field_sig, &fd)) { stack_object_type = current_type(); } is_assignable = target_class_type.is_assignable_from( - stack_object_type, current_class(), CHECK_VERIFY(this)); + stack_object_type, this, CHECK_VERIFY(this)); if (!is_assignable) { verify_error(bci, "Bad type on operand stack in putfield"); return; @@ -1836,9 +1845,9 @@ void ClassVerifier::verify_field_instructions(RawBytecodeStream* bcs, check_protected: { if (_this_type == stack_object_type) break; // stack_object_type must be assignable to _current_class_type - symbolHandle ref_class_name = symbolHandle(THREAD, - cp->klass_name_at(cp->klass_ref_index_at(index))); - if (!name_in_supers(ref_class_name(), current_class())) + Symbol* ref_class_name = + cp->klass_name_at(cp->klass_ref_index_at(index)); + if (!name_in_supers(ref_class_name, current_class())) // stack_object_type must be assignable to _current_class_type since: // 1. stack_object_type must be assignable to ref_class. // 2. ref_class must be _current_class or a subclass of it. It can't @@ -1846,12 +1855,12 @@ void ClassVerifier::verify_field_instructions(RawBytecodeStream* bcs, break; klassOop ref_class_oop = load_class(ref_class_name, CHECK); - if (is_protected_access(current_class(), ref_class_oop, field_name(), - field_sig(), false)) { + if (is_protected_access(current_class(), ref_class_oop, field_name, + field_sig, false)) { // It's protected access, check if stack object is assignable to // current class. is_assignable = current_type().is_assignable_from( - stack_object_type, current_class(), CHECK_VERIFY(this)); + stack_object_type, this, CHECK_VERIFY(this)); if (!is_assignable) { verify_error(bci, "Bad access to protected data in getfield"); return; @@ -1911,7 +1920,7 @@ void ClassVerifier::verify_invoke_init( instanceKlassHandle mh(THREAD, m->method_holder()); if (m->is_protected() && !mh->is_same_class_package(_klass())) { bool assignable = current_type().is_assignable_from( - objectref_type, current_class(), CHECK_VERIFY(this)); + objectref_type, this, CHECK_VERIFY(this)); if (!assignable) { verify_error(bci, "Bad access to protected method"); return; @@ -1941,8 +1950,8 @@ void ClassVerifier::verify_invoke_instructions( verify_cp_type(index, cp, types, CHECK_VERIFY(this)); // Get method name and signature - symbolHandle method_name(THREAD, cp->name_ref_at(index)); - symbolHandle method_sig(THREAD, cp->signature_ref_at(index)); + Symbol* method_name = cp->name_ref_at(index); + Symbol* method_sig = cp->signature_ref_at(index); if (!SignatureVerifier::is_valid_method_signature(method_sig)) { class_format_error( @@ -2035,7 +2044,7 @@ void ClassVerifier::verify_invoke_instructions( if (method_name->byte_at(0) == '<') { // Make sure can only be invoked by invokespecial if (opcode != Bytecodes::_invokespecial || - method_name() != vmSymbols::object_initializer_name()) { + method_name != vmSymbols::object_initializer_name()) { verify_error(bci, "Illegal call to internal method"); return; } @@ -2044,7 +2053,7 @@ void ClassVerifier::verify_invoke_instructions( && !ref_class_type.equals(VerificationType::reference_type( current_class()->super()->klass_part()->name()))) { bool subtype = ref_class_type.is_assignable_from( - current_type(), current_class(), CHECK_VERIFY(this)); + current_type(), this, CHECK_VERIFY(this)); if (!subtype) { verify_error(bci, "Bad invokespecial instruction: " "current class isn't assignable to reference class."); @@ -2058,7 +2067,7 @@ void ClassVerifier::verify_invoke_instructions( // Check objectref on operand stack if (opcode != Bytecodes::_invokestatic && opcode != Bytecodes::_invokedynamic) { - if (method_name() == vmSymbols::object_initializer_name()) { // method + if (method_name == vmSymbols::object_initializer_name()) { // method verify_invoke_init(bcs, ref_class_type, current_frame, code_length, this_uninit, cp, CHECK_VERIFY(this)); } else { // other methods @@ -2070,22 +2079,22 @@ void ClassVerifier::verify_invoke_instructions( current_frame->pop_stack(ref_class_type, CHECK_VERIFY(this)); if (current_type() != stack_object_type) { assert(cp->cache() == NULL, "not rewritten yet"); - symbolHandle ref_class_name = symbolHandle(THREAD, - cp->klass_name_at(cp->klass_ref_index_at(index))); + Symbol* ref_class_name = + cp->klass_name_at(cp->klass_ref_index_at(index)); // See the comments in verify_field_instructions() for // the rationale behind this. - if (name_in_supers(ref_class_name(), current_class())) { + if (name_in_supers(ref_class_name, current_class())) { klassOop ref_class = load_class(ref_class_name, CHECK); if (is_protected_access( - _klass, ref_class, method_name(), method_sig(), true)) { + _klass, ref_class, method_name, method_sig, true)) { // It's protected access, check if stack object is // assignable to current class. bool is_assignable = current_type().is_assignable_from( - stack_object_type, current_class(), CHECK_VERIFY(this)); + stack_object_type, this, CHECK_VERIFY(this)); if (!is_assignable) { if (ref_class_type.name() == vmSymbols::java_lang_Object() && stack_object_type.is_array() - && method_name() == vmSymbols::clone_name()) { + && method_name == vmSymbols::clone_name()) { // Special case: arrays pretend to implement public Object // clone(). } else { @@ -2105,7 +2114,7 @@ void ClassVerifier::verify_invoke_instructions( } // Push the result type. if (sig_stream.type() != T_VOID) { - if (method_name() == vmSymbols::object_initializer_name()) { + if (method_name == vmSymbols::object_initializer_name()) { // method must have a void return type verify_error(bci, "Return type must be void in method"); return; @@ -2130,7 +2139,7 @@ VerificationType ClassVerifier::get_newarray_type( } // from_bt[index] contains the array signature which has a length of 2 - symbolHandle sig = oopFactory::new_symbol_handle( + Symbol* sig = create_temporary_symbol( from_bt[index], 2, CHECK_(VerificationType::bogus_type())); return VerificationType::reference_type(sig); } @@ -2143,7 +2152,6 @@ void ClassVerifier::verify_anewarray( VerificationType component_type = cp_index_to_type(index, cp, CHECK_VERIFY(this)); - ResourceMark rm(THREAD); int length; char* arr_sig_str; if (component_type.is_array()) { // it's an array @@ -2163,7 +2171,7 @@ void ClassVerifier::verify_anewarray( strncpy(&arr_sig_str[2], component_name, length - 2); arr_sig_str[length - 1] = ';'; } - symbolHandle arr_sig = oopFactory::new_symbol_handle( + Symbol* arr_sig = create_temporary_symbol( arr_sig_str, length, CHECK_VERIFY(this)); VerificationType new_array_type = VerificationType::reference_type(arr_sig); current_frame->push_stack(new_array_type, CHECK_VERIFY(this)); @@ -2256,9 +2264,25 @@ void ClassVerifier::verify_return_value( verify_error(bci, "Method expects a return value"); return; } - bool match = return_type.is_assignable_from(type, _klass, CHECK_VERIFY(this)); + bool match = return_type.is_assignable_from(type, this, CHECK_VERIFY(this)); if (!match) { verify_error(bci, "Bad return type"); return; } } + +// The verifier creates symbols which are substrings of Symbols. +// These are stored in the verifier until the end of verification so that +// they can be reference counted. +Symbol* ClassVerifier::create_temporary_symbol(const Symbol *s, int begin, + int end, TRAPS) { + Symbol* sym = SymbolTable::new_symbol(s, begin, end, CHECK_NULL); + _symbols->push(sym); + return sym; +} + +Symbol* ClassVerifier::create_temporary_symbol(const char *s, int length, TRAPS) { + Symbol* sym = SymbolTable::new_symbol(s, length, CHECK_NULL); + _symbols->push(sym); + return sym; +} diff --git a/hotspot/src/share/vm/classfile/verifier.hpp b/hotspot/src/share/vm/classfile/verifier.hpp index c3ef4670602..97f51c9579f 100644 --- a/hotspot/src/share/vm/classfile/verifier.hpp +++ b/hotspot/src/share/vm/classfile/verifier.hpp @@ -59,7 +59,7 @@ class Verifier : AllStatic { private: static bool is_eligible_for_verification(instanceKlassHandle klass, bool should_verify_class); - static symbolHandle inference_verify( + static Symbol* inference_verify( instanceKlassHandle klass, char* msg, size_t msg_len, TRAPS); }; @@ -69,8 +69,8 @@ class StackMapTable; // Summary of verifier's memory usage: // StackMapTable is stack allocated. -// StackMapFrame are resource allocated. There is one ResourceMark -// for each method. +// StackMapFrame are resource allocated. There is only one ResourceMark +// for each class verification, which is created at the top level. // There is one mutable StackMapFrame (current_frame) which is updated // by abstract bytecode interpretation. frame_in_exception_handler() returns // a frame that has a mutable one-item stack (ready for pushing the @@ -80,8 +80,6 @@ class StackMapTable; // locals/stack arrays in StackMapFrame are resource allocated. // locals/stack arrays can be shared between StackMapFrame's, except // the mutable StackMapFrame (current_frame). -// Care needs to be taken to make sure resource objects don't outlive -// the lifetime of their ResourceMark. // These macros are used similarly to CHECK macros but also check // the status of the verifier and return if that has an error. @@ -94,9 +92,10 @@ class StackMapTable; class ClassVerifier : public StackObj { private: Thread* _thread; - symbolHandle _exception_type; + Symbol* _exception_type; char* _message; size_t _message_buffer_len; + GrowableArray* _symbols; // keep a list of symbols created void verify_method(methodHandle method, TRAPS); char* generate_code_data(methodHandle m, u4 code_length, TRAPS); @@ -110,7 +109,7 @@ class ClassVerifier : public StackObj { bool is_protected_access( instanceKlassHandle this_class, klassOop target_class, - symbolOop field_name, symbolOop field_sig, bool is_method); + Symbol* field_name, Symbol* field_sig, bool is_method); void verify_cp_index(constantPoolHandle cp, int index, TRAPS); void verify_cp_type( @@ -165,7 +164,7 @@ class ClassVerifier : public StackObj { void verify_astore(u2 index, StackMapFrame* current_frame, TRAPS); void verify_iinc (u2 index, StackMapFrame* current_frame, TRAPS); - bool name_in_supers(symbolOop ref_name, instanceKlassHandle current); + bool name_in_supers(Symbol* ref_name, instanceKlassHandle current); VerificationType object_type() const; @@ -206,8 +205,8 @@ class ClassVerifier : public StackObj { void verify_class(TRAPS); // Return status modes - symbolHandle result() const { return _exception_type; } - bool has_error() const { return !(result().is_null()); } + Symbol* result() const { return _exception_type; } + bool has_error() const { return result() != NULL; } // Called when verify or class format errors are encountered. // May throw an exception based upon the mode. @@ -216,16 +215,22 @@ class ClassVerifier : public StackObj { void class_format_error(const char* fmt, ...); void format_error_message(const char* fmt, int offset, va_list args); - klassOop load_class(symbolHandle name, TRAPS); + klassOop load_class(Symbol* name, TRAPS); int change_sig_to_verificationType( SignatureStream* sig_type, VerificationType* inference_type, TRAPS); VerificationType cp_index_to_type(int index, constantPoolHandle cp, TRAPS) { - return VerificationType::reference_type( - symbolHandle(THREAD, cp->klass_name_at(index))); + return VerificationType::reference_type(cp->klass_name_at(index)); } + // Keep a list of temporary symbols created during verification because + // their reference counts need to be decrememented when the verifier object + // goes out of scope. Since these symbols escape the scope in which they're + // created, we can't use a TempNewSymbol. + Symbol* create_temporary_symbol(const Symbol* s, int begin, int end, TRAPS); + Symbol* create_temporary_symbol(const char *s, int length, TRAPS); + static bool _verify_verbose; // for debugging }; @@ -236,9 +241,14 @@ inline int ClassVerifier::change_sig_to_verificationType( case T_OBJECT: case T_ARRAY: { - symbolOop name = sig_type->as_symbol(CHECK_0); + Symbol* name = sig_type->as_symbol(CHECK_0); + // Create another symbol to save as signature stream unreferences + // this symbol. + Symbol* name_copy = + create_temporary_symbol(name, 0, name->utf8_length(), CHECK_0); + assert(name_copy == name, "symbols don't match"); *inference_type = - VerificationType::reference_type(symbolHandle(THREAD, name)); + VerificationType::reference_type(name_copy); return 1; } case T_LONG: diff --git a/hotspot/src/share/vm/classfile/vmSymbols.cpp b/hotspot/src/share/vm/classfile/vmSymbols.cpp index c0138c40874..716750c72ae 100644 --- a/hotspot/src/share/vm/classfile/vmSymbols.cpp +++ b/hotspot/src/share/vm/classfile/vmSymbols.cpp @@ -30,11 +30,11 @@ #include "utilities/xmlstream.hpp" -symbolOop vmSymbols::_symbols[vmSymbols::SID_LIMIT]; +Symbol* vmSymbols::_symbols[vmSymbols::SID_LIMIT]; -symbolOop vmSymbols::_type_signatures[T_VOID+1] = { NULL /*, NULL...*/ }; +Symbol* vmSymbols::_type_signatures[T_VOID+1] = { NULL /*, NULL...*/ }; -inline int compare_symbol(symbolOop a, symbolOop b) { +inline int compare_symbol(Symbol* a, Symbol* b) { if (a == b) return 0; // follow the natural address order: return (address)a > (address)b ? +1 : -1; @@ -43,8 +43,8 @@ inline int compare_symbol(symbolOop a, symbolOop b) { static vmSymbols::SID vm_symbol_index[vmSymbols::SID_LIMIT]; extern "C" { static int compare_vmsymbol_sid(const void* void_a, const void* void_b) { - symbolOop a = vmSymbols::symbol_at(*((vmSymbols::SID*) void_a)); - symbolOop b = vmSymbols::symbol_at(*((vmSymbols::SID*) void_b)); + Symbol* a = vmSymbols::symbol_at(*((vmSymbols::SID*) void_a)); + Symbol* b = vmSymbols::symbol_at(*((vmSymbols::SID*) void_b)); return compare_symbol(a, b); } } @@ -79,7 +79,7 @@ void vmSymbols::initialize(TRAPS) { if (!UseSharedSpaces) { const char* string = &vm_symbol_bodies[0]; for (int index = (int)FIRST_SID; index < (int)SID_LIMIT; index++) { - symbolOop sym = oopFactory::new_symbol(string, CHECK); + Symbol* sym = SymbolTable::new_symbol(string, CHECK); _symbols[index] = sym; string += strlen(string); // skip string body string += 1; // skip trailing null @@ -100,7 +100,7 @@ void vmSymbols::initialize(TRAPS) { #ifdef ASSERT // Check for duplicates: for (int i1 = (int)FIRST_SID; i1 < (int)SID_LIMIT; i1++) { - symbolOop sym = symbol_at((SID)i1); + Symbol* sym = symbol_at((SID)i1); for (int i2 = (int)FIRST_SID; i2 < i1; i2++) { if (symbol_at((SID)i2) == sym) { tty->print("*** Duplicate VM symbol SIDs %s(%d) and %s(%d): \"", @@ -128,16 +128,16 @@ void vmSymbols::initialize(TRAPS) { // Spot-check correspondence between strings, symbols, and enums: assert(_symbols[NO_SID] == NULL, "must be"); const char* str = "java/lang/Object"; - symbolOop sym = oopFactory::new_symbol(str, CHECK); - assert(strcmp(str, (char*)sym->base()) == 0, ""); - assert(sym == java_lang_Object(), ""); + TempNewSymbol jlo = SymbolTable::new_symbol(str, CHECK); + assert(strncmp(str, (char*)jlo->base(), jlo->utf8_length()) == 0, ""); + assert(jlo == java_lang_Object(), ""); SID sid = VM_SYMBOL_ENUM_NAME(java_lang_Object); - assert(find_sid(sym) == sid, ""); - assert(symbol_at(sid) == sym, ""); + assert(find_sid(jlo) == sid, ""); + assert(symbol_at(sid) == jlo, ""); // Make sure find_sid produces the right answer in each case. for (int index = (int)FIRST_SID; index < (int)SID_LIMIT; index++) { - sym = symbol_at((SID)index); + Symbol* sym = symbol_at((SID)index); sid = find_sid(sym); assert(sid == (SID)index, "symbol index works"); // Note: If there are duplicates, this assert will fail. @@ -147,8 +147,8 @@ void vmSymbols::initialize(TRAPS) { // The string "format" happens (at the moment) not to be a vmSymbol, // though it is a method name in java.lang.String. str = "format"; - sym = oopFactory::new_symbol(str, CHECK); - sid = find_sid(sym); + TempNewSymbol fmt = SymbolTable::new_symbol(str, CHECK); + sid = find_sid(fmt); assert(sid == NO_SID, "symbol index works (negative test)"); } #endif @@ -172,22 +172,23 @@ const char* vmSymbols::name_for(vmSymbols::SID sid) { -void vmSymbols::oops_do(OopClosure* f, bool do_all) { +void vmSymbols::symbols_do(SymbolClosure* f) { for (int index = (int)FIRST_SID; index < (int)SID_LIMIT; index++) { - f->do_oop((oop*) &_symbols[index]); + f->do_symbol(&_symbols[index]); } for (int i = 0; i < T_VOID+1; i++) { - if (_type_signatures[i] != NULL) { - assert(i >= T_BOOLEAN, "checking"); - f->do_oop((oop*)&_type_signatures[i]); - } else if (do_all) { - f->do_oop((oop*)&_type_signatures[i]); - } + f->do_symbol(&_type_signatures[i]); } } +void vmSymbols::serialize(SerializeOopClosure* soc) { + soc->do_region((u_char*)&_symbols[FIRST_SID], + (SID_LIMIT - FIRST_SID) * sizeof(_symbols[0])); + soc->do_region((u_char*)_type_signatures, sizeof(_type_signatures)); +} -BasicType vmSymbols::signature_type(symbolOop s) { + +BasicType vmSymbols::signature_type(Symbol* s) { assert(s != NULL, "checking"); for (int i = T_BOOLEAN; i < T_VOID+1; i++) { if (s == _type_signatures[i]) { @@ -205,7 +206,7 @@ static int find_sid_calls, find_sid_probes; // (Typical counts are calls=7000 and probes=17000.) #endif -vmSymbols::SID vmSymbols::find_sid(symbolOop symbol) { +vmSymbols::SID vmSymbols::find_sid(Symbol* symbol) { // Handle the majority of misses by a bounds check. // Then, use a binary search over the index. // Expected trip count is less than log2_SID_LIMIT, about eight. @@ -260,7 +261,7 @@ vmSymbols::SID vmSymbols::find_sid(symbolOop symbol) { // (We have already proven that there are no duplicates in the list.) SID sid2 = NO_SID; for (int index = (int)FIRST_SID; index < (int)SID_LIMIT; index++) { - symbolOop sym2 = symbol_at((SID)index); + Symbol* sym2 = symbol_at((SID)index); if (sym2 == symbol) { sid2 = (SID)index; break; @@ -319,9 +320,9 @@ vmIntrinsics::ID vmIntrinsics::for_raw_conversion(BasicType src, BasicType dest) methodOop vmIntrinsics::method_for(vmIntrinsics::ID id) { if (id == _none) return NULL; - symbolOop cname = vmSymbols::symbol_at(class_for(id)); - symbolOop mname = vmSymbols::symbol_at(name_for(id)); - symbolOop msig = vmSymbols::symbol_at(signature_for(id)); + Symbol* cname = vmSymbols::symbol_at(class_for(id)); + Symbol* mname = vmSymbols::symbol_at(name_for(id)); + Symbol* msig = vmSymbols::symbol_at(signature_for(id)); if (cname == NULL || mname == NULL || msig == NULL) return NULL; klassOop k = SystemDictionary::find_well_known_klass(cname); if (k == NULL) return NULL; @@ -490,17 +491,17 @@ vmIntrinsics::Flags vmIntrinsics::flags_for(vmIntrinsics::ID id) { #ifndef PRODUCT // verify_method performs an extra check on a matched intrinsic method -static bool match_method(methodOop m, symbolOop n, symbolOop s) { +static bool match_method(methodOop m, Symbol* n, Symbol* s) { return (m->name() == n && m->signature() == s); } -static vmIntrinsics::ID match_method_with_klass(methodOop m, symbolOop mk) { +static vmIntrinsics::ID match_method_with_klass(methodOop m, Symbol* mk) { #define VM_INTRINSIC_MATCH(id, klassname, namepart, sigpart, flags) \ - { symbolOop k = vmSymbols::klassname(); \ + { Symbol* k = vmSymbols::klassname(); \ if (mk == k) { \ - symbolOop n = vmSymbols::namepart(); \ - symbolOop s = vmSymbols::sigpart(); \ + Symbol* n = vmSymbols::namepart(); \ + Symbol* s = vmSymbols::sigpart(); \ if (match_method(m, n, s)) \ return vmIntrinsics::id; \ } } @@ -511,7 +512,7 @@ static vmIntrinsics::ID match_method_with_klass(methodOop m, symbolOop mk) { } void vmIntrinsics::verify_method(ID actual_id, methodOop m) { - symbolOop mk = Klass::cast(m->method_holder())->name(); + Symbol* mk = Klass::cast(m->method_holder())->name(); ID declared_id = match_method_with_klass(m, mk); if (declared_id == actual_id) return; // success diff --git a/hotspot/src/share/vm/classfile/vmSymbols.hpp b/hotspot/src/share/vm/classfile/vmSymbols.hpp index 6a9ef12a525..d149e3f05b9 100644 --- a/hotspot/src/share/vm/classfile/vmSymbols.hpp +++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp @@ -25,17 +25,15 @@ #ifndef SHARE_VM_CLASSFILE_VMSYMBOLS_HPP #define SHARE_VM_CLASSFILE_VMSYMBOLS_HPP -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" +#include "memory/iterator.hpp" -// The classes vmSymbols and vmSymbolHandles are a name spaces for fast lookup of -// symbols commonly used in the VM. The first class return a symbolOop, while the -// second class returns a SymbolHandle. The underlying data structure is shared -// between the two classes. +// The class vmSymbols is a name space for fast lookup of +// symbols commonly used in the VM. // // Sample usage: // -// symbolOop obj = vmSymbols::java_lang_Object()(); -// SymbolHandle handle = vmSymbolHandles::java_lang_Object(); +// Symbol* obj = vmSymbols::java_lang_Object(); // Useful sub-macros exported by this header file: @@ -110,7 +108,6 @@ template(java_lang_AssertionStatusDirectives, "java/lang/AssertionStatusDirectives") \ template(sun_jkernel_DownloadManager, "sun/jkernel/DownloadManager") \ template(getBootClassPathEntryForClass_name, "getBootClassPathEntryForClass") \ - template(setBootClassLoaderHook_name, "setBootClassLoaderHook") \ template(sun_misc_PostVMInitHook, "sun/misc/PostVMInitHook") \ \ /* class file format tags */ \ @@ -459,7 +456,7 @@ VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, do_alias) \ \ /* returned by the C1 compiler in case there's not enough memory to allocate a new symbol*/ \ - template(dummy_symbol_oop, "illegal symbol") \ + template(dummy_symbol, "illegal symbol") \ \ /* used by ClassFormatError when class name is not known yet */ \ template(unknown_class_name, "") \ @@ -938,10 +935,9 @@ // Class vmSymbols class vmSymbols: AllStatic { - friend class vmSymbolHandles; friend class vmIntrinsics; public: - // enum for figuring positions and size of array holding symbolOops + // enum for figuring positions and size of array holding Symbol*s enum SID { NO_SID = 0, @@ -963,39 +959,42 @@ class vmSymbols: AllStatic { private: // The symbol array - static symbolOop _symbols[]; + static Symbol* _symbols[]; // Field signatures indexed by BasicType. - static symbolOop _type_signatures[T_VOID+1]; + static Symbol* _type_signatures[T_VOID+1]; public: // Initialization static void initialize(TRAPS); // Accessing - #define VM_SYMBOL_DECLARE(name, ignore) \ - static symbolOop name() { return _symbols[VM_SYMBOL_ENUM_NAME(name)]; } + #define VM_SYMBOL_DECLARE(name, ignore) \ + static Symbol* name() { \ + return _symbols[VM_SYMBOL_ENUM_NAME(name)]; \ + } VM_SYMBOLS_DO(VM_SYMBOL_DECLARE, VM_SYMBOL_DECLARE) #undef VM_SYMBOL_DECLARE - // GC support - static void oops_do(OopClosure* f, bool do_all = false); + // Sharing support + static void symbols_do(SymbolClosure* f); + static void serialize(SerializeOopClosure* soc); - static symbolOop type_signature(BasicType t) { + static Symbol* type_signature(BasicType t) { assert((uint)t < T_VOID+1, "range check"); assert(_type_signatures[t] != NULL, "domain check"); return _type_signatures[t]; } // inverse of type_signature; returns T_OBJECT if s is not recognized - static BasicType signature_type(symbolOop s); + static BasicType signature_type(Symbol* s); - static symbolOop symbol_at(SID id) { + static Symbol* symbol_at(SID id) { assert(id >= FIRST_SID && id < SID_LIMIT, "oob"); assert(_symbols[id] != NULL, "init"); return _symbols[id]; } // Returns symbol's SID if one is assigned, else NO_SID. - static SID find_sid(symbolOop symbol); + static SID find_sid(Symbol* symbol); #ifndef PRODUCT // No need for this in the product: @@ -1003,34 +1002,6 @@ class vmSymbols: AllStatic { #endif //PRODUCT }; - -// Class vmSymbolHandles - -class vmSymbolHandles: AllStatic { - friend class vmIntrinsics; - friend class ciObjectFactory; - - public: - // Accessing - #define VM_SYMBOL_HANDLE_DECLARE(name, ignore) \ - static symbolHandle name() { return symbol_handle_at(vmSymbols::VM_SYMBOL_ENUM_NAME(name)); } - VM_SYMBOLS_DO(VM_SYMBOL_HANDLE_DECLARE, VM_SYMBOL_HANDLE_DECLARE) - #undef VM_SYMBOL_HANDLE_DECLARE - - static symbolHandle symbol_handle_at(vmSymbols::SID id) { - return symbolHandle(&vmSymbols::_symbols[(int)id], false); - } - - static symbolHandle type_signature(BasicType t) { - assert(vmSymbols::type_signature(t) != NULL, "domain check"); - return symbolHandle(&vmSymbols::_type_signatures[t], false); - } - // inverse of type_signature; returns T_OBJECT if s is not recognized - static BasicType signature_type(symbolHandle s) { - return vmSymbols::signature_type(s()); - } -}; - // VM Intrinsic ID's uniquely identify some very special methods class vmIntrinsics: AllStatic { friend class vmSymbols; diff --git a/hotspot/src/share/vm/code/codeBlob.cpp b/hotspot/src/share/vm/code/codeBlob.cpp index 81d09f5cc5c..b90ed8cbdda 100644 --- a/hotspot/src/share/vm/code/codeBlob.cpp +++ b/hotspot/src/share/vm/code/codeBlob.cpp @@ -48,6 +48,12 @@ #ifdef TARGET_ARCH_zero # include "nativeInst_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "nativeInst_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "nativeInst_ppc.hpp" +#endif #ifdef COMPILER1 #include "c1/c1_Runtime1.hpp" #endif diff --git a/hotspot/src/share/vm/code/compiledIC.cpp b/hotspot/src/share/vm/code/compiledIC.cpp index b8e0f2821c3..b374257061e 100644 --- a/hotspot/src/share/vm/code/compiledIC.cpp +++ b/hotspot/src/share/vm/code/compiledIC.cpp @@ -34,7 +34,7 @@ #include "memory/oopFactory.hpp" #include "oops/methodOop.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/icache.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/stubRoutines.hpp" diff --git a/hotspot/src/share/vm/code/compiledIC.hpp b/hotspot/src/share/vm/code/compiledIC.hpp index a5524ca164c..979dcd52300 100644 --- a/hotspot/src/share/vm/code/compiledIC.hpp +++ b/hotspot/src/share/vm/code/compiledIC.hpp @@ -38,6 +38,12 @@ #ifdef TARGET_ARCH_zero # include "nativeInst_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "nativeInst_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "nativeInst_ppc.hpp" +#endif //----------------------------------------------------------------------------- // The CompiledIC represents a compiled inline cache. diff --git a/hotspot/src/share/vm/code/dependencies.cpp b/hotspot/src/share/vm/code/dependencies.cpp index 6b564b286e4..fb0d1cf42ee 100644 --- a/hotspot/src/share/vm/code/dependencies.cpp +++ b/hotspot/src/share/vm/code/dependencies.cpp @@ -628,8 +628,8 @@ class ClassHierarchyWalker { private: // optional method descriptor to check for: - symbolOop _name; - symbolOop _signature; + Symbol* _name; + Symbol* _signature; // special classes which are not allowed to be witnesses: klassOop _participants[PARTICIPANT_LIMIT+1]; diff --git a/hotspot/src/share/vm/code/icBuffer.cpp b/hotspot/src/share/vm/code/icBuffer.cpp index d36f9109efa..90dbf934a47 100644 --- a/hotspot/src/share/vm/code/icBuffer.cpp +++ b/hotspot/src/share/vm/code/icBuffer.cpp @@ -46,6 +46,12 @@ #ifdef TARGET_ARCH_zero # include "assembler_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "assembler_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "assembler_ppc.inline.hpp" +#endif DEF_STUB_INTERFACE(ICStub); diff --git a/hotspot/src/share/vm/code/nmethod.cpp b/hotspot/src/share/vm/code/nmethod.cpp index 5f7d994cbd0..19a00227690 100644 --- a/hotspot/src/share/vm/code/nmethod.cpp +++ b/hotspot/src/share/vm/code/nmethod.cpp @@ -34,6 +34,7 @@ #include "interpreter/bytecode.hpp" #include "oops/methodDataOop.hpp" #include "prims/jvmtiRedefineClassesTrace.hpp" +#include "prims/jvmtiImpl.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/sweeper.hpp" #include "utilities/dtrace.hpp" @@ -57,9 +58,9 @@ HS_DTRACE_PROBE_DECL6(hotspot, compiled__method__unload, { \ methodOop m = (method); \ if (m != NULL) { \ - symbolOop klass_name = m->klass_name(); \ - symbolOop name = m->name(); \ - symbolOop signature = m->signature(); \ + Symbol* klass_name = m->klass_name(); \ + Symbol* name = m->name(); \ + Symbol* signature = m->signature(); \ HS_DTRACE_PROBE6(hotspot, compiled__method__unload, \ klass_name->bytes(), klass_name->utf8_length(), \ name->bytes(), name->utf8_length(), \ @@ -1533,7 +1534,10 @@ void nmethod::post_compiled_method_load_event() { } if (JvmtiExport::should_post_compiled_method_load()) { - JvmtiExport::post_compiled_method_load(this); + // Let the Service thread (which is a real Java thread) post the event + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); + JvmtiDeferredEventQueue::enqueue( + JvmtiDeferredEvent::compiled_method_load_event(this)); } } @@ -1566,8 +1570,17 @@ void nmethod::post_compiled_method_unload() { // ref will have been cleared. if (_jmethod_id != NULL && JvmtiExport::should_post_compiled_method_unload()) { assert(!unload_reported(), "already unloaded"); - HandleMark hm; - JvmtiExport::post_compiled_method_unload(_jmethod_id, insts_begin()); + JvmtiDeferredEvent event = + JvmtiDeferredEvent::compiled_method_unload_event( + _jmethod_id, insts_begin()); + if (SafepointSynchronize::is_at_safepoint()) { + // Don't want to take the queueing lock. Add it as pending and + // it will get enqueued later. + JvmtiDeferredEventQueue::add_pending_event(event); + } else { + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); + JvmtiDeferredEventQueue::enqueue(event); + } } // The JVMTI CompiledMethodUnload event can be enabled or disabled at @@ -1865,7 +1878,7 @@ void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map SimpleScopeDesc ssd(this, fr.pc()); Bytecode_invoke call(ssd.method(), ssd.bci()); bool has_receiver = call.has_receiver(); - symbolOop signature = call.signature(); + Symbol* signature = call.signature(); fr.oops_compiled_arguments_do(signature, has_receiver, reg_map, f); } #endif // !SHARK @@ -2636,7 +2649,7 @@ void nmethod::print_nmethod_labels(outputStream* stream, address block_begin) { } else { bool did_name = false; if (!at_this && ss.is_object()) { - symbolOop name = ss.as_symbol_or_null(); + Symbol* name = ss.as_symbol_or_null(); if (name != NULL) { name->print_value_on(stream); did_name = true; diff --git a/hotspot/src/share/vm/code/nmethod.hpp b/hotspot/src/share/vm/code/nmethod.hpp index 5fa91f46f89..650c654d687 100644 --- a/hotspot/src/share/vm/code/nmethod.hpp +++ b/hotspot/src/share/vm/code/nmethod.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, 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 @@ -696,10 +696,11 @@ public: class nmethodLocker : public StackObj { nmethod* _nm; + public: + static void lock_nmethod(nmethod* nm); // note: nm can be NULL static void unlock_nmethod(nmethod* nm); // (ditto) - public: nmethodLocker(address pc); // derive nm from pc nmethodLocker(nmethod *nm) { _nm = nm; lock_nmethod(_nm); } nmethodLocker() { _nm = NULL; } diff --git a/hotspot/src/share/vm/code/relocInfo.cpp b/hotspot/src/share/vm/code/relocInfo.cpp index fa63dc7d827..55676b444de 100644 --- a/hotspot/src/share/vm/code/relocInfo.cpp +++ b/hotspot/src/share/vm/code/relocInfo.cpp @@ -41,6 +41,14 @@ # include "assembler_zero.inline.hpp" # include "nativeInst_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "assembler_arm.inline.hpp" +# include "nativeInst_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "assembler_ppc.inline.hpp" +# include "nativeInst_ppc.hpp" +#endif const RelocationHolder RelocationHolder::none; // its type is relocInfo::none diff --git a/hotspot/src/share/vm/code/relocInfo.hpp b/hotspot/src/share/vm/code/relocInfo.hpp index c3c4468a71f..e5587b259ed 100644 --- a/hotspot/src/share/vm/code/relocInfo.hpp +++ b/hotspot/src/share/vm/code/relocInfo.hpp @@ -429,6 +429,12 @@ class relocInfo VALUE_OBJ_CLASS_SPEC { #endif #ifdef TARGET_ARCH_zero # include "relocInfo_zero.hpp" +#endif +#ifdef TARGET_ARCH_arm +# include "relocInfo_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "relocInfo_ppc.hpp" #endif diff --git a/hotspot/src/share/vm/code/vmreg.hpp b/hotspot/src/share/vm/code/vmreg.hpp index 1be8ea2f8da..cd00dd42836 100644 --- a/hotspot/src/share/vm/code/vmreg.hpp +++ b/hotspot/src/share/vm/code/vmreg.hpp @@ -36,6 +36,12 @@ #ifdef TARGET_ARCH_zero # include "register_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "register_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "register_ppc.hpp" +#endif #ifdef COMPILER2 #include "opto/adlcVMDeps.hpp" #include "utilities/ostream.hpp" @@ -51,6 +57,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/adGlobals_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/adGlobals_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/adGlobals_ppc.hpp" +#endif #endif //------------------------------VMReg------------------------------------------ @@ -164,6 +176,12 @@ public: #ifdef TARGET_ARCH_zero # include "vmreg_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "vmreg_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vmreg_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/compiler/compileBroker.cpp b/hotspot/src/share/vm/compiler/compileBroker.cpp index 7c432b42241..c59d4c4ce56 100644 --- a/hotspot/src/share/vm/compiler/compileBroker.cpp +++ b/hotspot/src/share/vm/compiler/compileBroker.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -66,9 +66,9 @@ HS_DTRACE_PROBE_DECL9(hotspot, method__compile__end, #define DTRACE_METHOD_COMPILE_BEGIN_PROBE(compiler, method) \ { \ char* comp_name = (char*)(compiler)->name(); \ - symbolOop klass_name = (method)->klass_name(); \ - symbolOop name = (method)->name(); \ - symbolOop signature = (method)->signature(); \ + Symbol* klass_name = (method)->klass_name(); \ + Symbol* name = (method)->name(); \ + Symbol* signature = (method)->signature(); \ HS_DTRACE_PROBE8(hotspot, method__compile__begin, \ comp_name, strlen(comp_name), \ klass_name->bytes(), klass_name->utf8_length(), \ @@ -79,9 +79,9 @@ HS_DTRACE_PROBE_DECL9(hotspot, method__compile__end, #define DTRACE_METHOD_COMPILE_END_PROBE(compiler, method, success) \ { \ char* comp_name = (char*)(compiler)->name(); \ - symbolOop klass_name = (method)->klass_name(); \ - symbolOop name = (method)->name(); \ - symbolOop signature = (method)->signature(); \ + Symbol* klass_name = (method)->klass_name(); \ + Symbol* name = (method)->name(); \ + Symbol* signature = (method)->signature(); \ HS_DTRACE_PROBE9(hotspot, method__compile__end, \ comp_name, strlen(comp_name), \ klass_name->bytes(), klass_name->utf8_length(), \ @@ -689,7 +689,7 @@ CompilerThread* CompileBroker::make_compiler_thread(const char* name, CompileQue CompilerThread* compiler_thread = NULL; klassOop k = - SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_Thread(), + SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK_0); instanceKlassHandle klass (THREAD, k); instanceHandle thread_oop = klass->allocate_instance_handle(CHECK_0); @@ -700,8 +700,8 @@ CompilerThread* CompileBroker::make_compiler_thread(const char* name, CompileQue JavaValue result(T_VOID); JavaCalls::call_special(&result, thread_oop, klass, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::threadgroup_string_void_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::threadgroup_string_void_signature(), thread_group, string, CHECK_0); @@ -1210,7 +1210,17 @@ uint CompileBroker::assign_compile_id(methodHandle method, int osr_bci) { // Should the current thread be blocked until this compilation request // has been fulfilled? bool CompileBroker::is_compile_blocking(methodHandle method, int osr_bci) { - return !BackgroundCompilation; + if (!BackgroundCompilation) { + Symbol* class_name = method->method_holder()->klass_part()->name(); + if (class_name->starts_with("java/lang/ref/Reference", 23)) { + // The reference handler thread can dead lock with the GC if compilation is blocking, + // so we avoid blocking compiles for anything in the java.lang.ref.Reference class, + // including inner classes such as ReferenceHandler. + return false; + } + return true; + } + return false; } diff --git a/hotspot/src/share/vm/compiler/compileLog.hpp b/hotspot/src/share/vm/compiler/compileLog.hpp index 8e7b4512289..ae7d01c724c 100644 --- a/hotspot/src/share/vm/compiler/compileLog.hpp +++ b/hotspot/src/share/vm/compiler/compileLog.hpp @@ -63,7 +63,7 @@ class CompileLog : public xmlStream { stringStream* context() { return &_context; } void name(ciSymbol* s); // name='s' - void name(symbolHandle s) { xmlStream::name(s); } + void name(Symbol* s) { xmlStream::name(s); } // Output an object description, return obj->ident(). int identify(ciObject* obj); diff --git a/hotspot/src/share/vm/compiler/compilerOracle.cpp b/hotspot/src/share/vm/compiler/compilerOracle.cpp index 31464896198..178a045dcfd 100644 --- a/hotspot/src/share/vm/compiler/compilerOracle.cpp +++ b/hotspot/src/share/vm/compiler/compilerOracle.cpp @@ -30,7 +30,7 @@ #include "oops/klass.hpp" #include "oops/methodOop.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/handles.inline.hpp" #include "runtime/jniHandles.hpp" @@ -46,33 +46,33 @@ class MethodMatcher : public CHeapObj { }; protected: - jobject _class_name; + Symbol* _class_name; + Symbol* _method_name; + Symbol* _signature; Mode _class_mode; - jobject _method_name; Mode _method_mode; - jobject _signature; MethodMatcher* _next; - static bool match(symbolHandle candidate, symbolHandle match, Mode match_mode); + static bool match(Symbol* candidate, Symbol* match, Mode match_mode); - symbolHandle class_name() const { return (symbolOop)JNIHandles::resolve_non_null(_class_name); } - symbolHandle method_name() const { return (symbolOop)JNIHandles::resolve_non_null(_method_name); } - symbolHandle signature() const { return (symbolOop)JNIHandles::resolve(_signature); } + Symbol* class_name() const { return _class_name; } + Symbol* method_name() const { return _method_name; } + Symbol* signature() const { return _signature; } public: - MethodMatcher(symbolHandle class_name, Mode class_mode, - symbolHandle method_name, Mode method_mode, - symbolHandle signature, MethodMatcher* next); - MethodMatcher(symbolHandle class_name, symbolHandle method_name, MethodMatcher* next); + MethodMatcher(Symbol* class_name, Mode class_mode, + Symbol* method_name, Mode method_mode, + Symbol* signature, MethodMatcher* next); + MethodMatcher(Symbol* class_name, Symbol* method_name, MethodMatcher* next); // utility method MethodMatcher* find(methodHandle method) { - symbolHandle class_name = Klass::cast(method->method_holder())->name(); - symbolHandle method_name = method->name(); + Symbol* class_name = Klass::cast(method->method_holder())->name(); + Symbol* method_name = method->name(); for (MethodMatcher* current = this; current != NULL; current = current->_next) { if (match(class_name, current->class_name(), current->_class_mode) && match(method_name, current->method_name(), current->_method_mode) && - (current->signature().is_null() || current->signature()() == method->signature())) { + (current->signature() == NULL || current->signature() == method->signature())) { return current; } } @@ -85,14 +85,14 @@ class MethodMatcher : public CHeapObj { MethodMatcher* next() const { return _next; } - static void print_symbol(symbolHandle h, Mode mode) { + static void print_symbol(Symbol* h, Mode mode) { ResourceMark rm; if (mode == Suffix || mode == Substring || mode == Any) { tty->print("*"); } if (mode != Any) { - h()->print_symbol_on(tty); + h->print_symbol_on(tty); } if (mode == Prefix || mode == Substring) { tty->print("*"); @@ -103,7 +103,7 @@ class MethodMatcher : public CHeapObj { print_symbol(class_name(), _class_mode); tty->print("."); print_symbol(method_name(), _method_mode); - if (!signature().is_null()) { + if (signature() != NULL) { tty->print(" "); signature()->print_symbol_on(tty); } @@ -115,9 +115,9 @@ class MethodMatcher : public CHeapObj { } }; -MethodMatcher::MethodMatcher(symbolHandle class_name, symbolHandle method_name, MethodMatcher* next) { - _class_name = JNIHandles::make_global(class_name); - _method_name = JNIHandles::make_global(method_name); +MethodMatcher::MethodMatcher(Symbol* class_name, Symbol* method_name, MethodMatcher* next) { + _class_name = class_name; + _method_name = method_name; _next = next; _class_mode = MethodMatcher::Exact; _method_mode = MethodMatcher::Exact; @@ -125,24 +125,24 @@ MethodMatcher::MethodMatcher(symbolHandle class_name, symbolHandle method_name, } -MethodMatcher::MethodMatcher(symbolHandle class_name, Mode class_mode, - symbolHandle method_name, Mode method_mode, - symbolHandle signature, MethodMatcher* next): +MethodMatcher::MethodMatcher(Symbol* class_name, Mode class_mode, + Symbol* method_name, Mode method_mode, + Symbol* signature, MethodMatcher* next): _class_mode(class_mode) , _method_mode(method_mode) , _next(next) - , _class_name(JNIHandles::make_global(class_name())) - , _method_name(JNIHandles::make_global(method_name())) - , _signature(JNIHandles::make_global(signature())) { + , _class_name(class_name) + , _method_name(method_name) + , _signature(signature) { } -bool MethodMatcher::match(symbolHandle candidate, symbolHandle match, Mode match_mode) { +bool MethodMatcher::match(Symbol* candidate, Symbol* match, Mode match_mode) { if (match_mode == Any) { return true; } if (match_mode == Exact) { - return candidate() == match(); + return candidate == match; } ResourceMark rm; @@ -171,9 +171,9 @@ bool MethodMatcher::match(symbolHandle candidate, symbolHandle match, Mode match class MethodOptionMatcher: public MethodMatcher { const char * option; public: - MethodOptionMatcher(symbolHandle class_name, Mode class_mode, - symbolHandle method_name, Mode method_mode, - symbolHandle signature, const char * opt, MethodMatcher* next): + MethodOptionMatcher(Symbol* class_name, Mode class_mode, + Symbol* method_name, Mode method_mode, + Symbol* signature, const char * opt, MethodMatcher* next): MethodMatcher(class_name, class_mode, method_name, method_mode, signature, next) { option = opt; } @@ -256,9 +256,9 @@ static bool check_predicate(OracleCommand command, methodHandle method) { static MethodMatcher* add_predicate(OracleCommand command, - symbolHandle class_name, MethodMatcher::Mode c_mode, - symbolHandle method_name, MethodMatcher::Mode m_mode, - symbolHandle signature) { + Symbol* class_name, MethodMatcher::Mode c_mode, + Symbol* method_name, MethodMatcher::Mode m_mode, + Symbol* signature) { assert(command != OptionCommand, "must use add_option_string"); if (command == LogCommand && !LogCompilation && lists[LogCommand] == NULL) tty->print_cr("Warning: +LogCompilation must be enabled in order for individual methods to be logged."); @@ -268,9 +268,9 @@ static MethodMatcher* add_predicate(OracleCommand command, -static MethodMatcher* add_option_string(symbolHandle class_name, MethodMatcher::Mode c_mode, - symbolHandle method_name, MethodMatcher::Mode m_mode, - symbolHandle signature, +static MethodMatcher* add_option_string(Symbol* class_name, MethodMatcher::Mode c_mode, + Symbol* method_name, MethodMatcher::Mode m_mode, + Symbol* signature, const char* option) { lists[OptionCommand] = new MethodOptionMatcher(class_name, c_mode, method_name, m_mode, signature, option, lists[OptionCommand]); @@ -497,9 +497,9 @@ void CompilerOracle::parse_from_line(char* line) { if (scan_line(line, class_name, &c_match, method_name, &m_match, &bytes_read, error_msg)) { EXCEPTION_MARK; - symbolHandle c_name = oopFactory::new_symbol_handle(class_name, CHECK); - symbolHandle m_name = oopFactory::new_symbol_handle(method_name, CHECK); - symbolHandle signature; + Symbol* c_name = SymbolTable::new_symbol(class_name, CHECK); + Symbol* m_name = SymbolTable::new_symbol(method_name, CHECK); + Symbol* signature = NULL; line += bytes_read; // there might be a signature following the method. @@ -507,7 +507,7 @@ void CompilerOracle::parse_from_line(char* line) { if (1 == sscanf(line, "%*[ \t](%254[[);/" RANGEBASE "]%n", sig + 1, &bytes_read)) { sig[0] = '('; line += bytes_read; - signature = oopFactory::new_symbol_handle(sig, CHECK); + signature = SymbolTable::new_symbol(sig, CHECK); } if (command == OptionCommand) { @@ -714,9 +714,9 @@ void CompilerOracle::parse_compile_only(char * line) { } EXCEPTION_MARK; - symbolHandle c_name = oopFactory::new_symbol_handle(className, CHECK); - symbolHandle m_name = oopFactory::new_symbol_handle(methodName, CHECK); - symbolHandle signature; + Symbol* c_name = SymbolTable::new_symbol(className, CHECK); + Symbol* m_name = SymbolTable::new_symbol(methodName, CHECK); + Symbol* signature = NULL; add_predicate(CompileOnlyCommand, c_name, c_match, m_name, m_match, signature); if (PrintVMOptions) { diff --git a/hotspot/src/share/vm/compiler/compilerOracle.hpp b/hotspot/src/share/vm/compiler/compilerOracle.hpp index fd5b0fbcc19..7e6b5cf09a6 100644 --- a/hotspot/src/share/vm/compiler/compilerOracle.hpp +++ b/hotspot/src/share/vm/compiler/compilerOracle.hpp @@ -31,8 +31,6 @@ // CompilerOracle is an interface for turning on and off compilation // for some methods -class symbolHandle; - class CompilerOracle : AllStatic { private: static bool _quiet; diff --git a/hotspot/src/share/vm/compiler/disassembler.cpp b/hotspot/src/share/vm/compiler/disassembler.cpp index f81ce0e686b..4b1ad9ab8bf 100644 --- a/hotspot/src/share/vm/compiler/disassembler.cpp +++ b/hotspot/src/share/vm/compiler/disassembler.cpp @@ -41,6 +41,12 @@ #ifdef TARGET_ARCH_zero # include "depChecker_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "depChecker_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "depChecker_ppc.hpp" +#endif #ifdef SHARK #include "shark/sharkEntry.hpp" #endif diff --git a/hotspot/src/share/vm/compiler/disassembler.hpp b/hotspot/src/share/vm/compiler/disassembler.hpp index f954109228a..03b377065b7 100644 --- a/hotspot/src/share/vm/compiler/disassembler.hpp +++ b/hotspot/src/share/vm/compiler/disassembler.hpp @@ -69,6 +69,12 @@ class Disassembler { #endif #ifdef TARGET_ARCH_zero # include "disassembler_zero.hpp" +#endif +#ifdef TARGET_ARCH_arm +# include "disassembler_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "disassembler_ppc.hpp" #endif diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp index 2bbe0aa1f9f..5b1d1eb47f3 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp @@ -5921,9 +5921,10 @@ void CMSCollector::refProcessingWork(bool asynch, bool clear_all_soft_refs) { { TraceTime t("scrub symbol & string tables", PrintGCDetails, false, gclog_or_tty); - // Now clean up stale oops in SymbolTable and StringTable - SymbolTable::unlink(&_is_alive_closure); + // Now clean up stale oops in StringTable StringTable::unlink(&_is_alive_closure); + // Clean up unreferenced symbols in symbol table. + SymbolTable::unlink(); } } diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp index d26530323d2..c0d968aa8f4 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, 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 @@ -99,7 +99,7 @@ void ConcurrentG1Refine::init() { if (G1ConcRSLogCacheSize > 0) { _g1h = G1CollectedHeap::heap(); _max_n_card_counts = - (unsigned) (_g1h->g1_reserved_obj_bytes() >> CardTableModRefBS::card_shift); + (unsigned) (_g1h->max_capacity() >> CardTableModRefBS::card_shift); size_t max_card_num = ((size_t)1 << (sizeof(unsigned)*BitsPerByte-1)) - 1; guarantee(_max_n_card_counts < max_card_num, "card_num representation"); diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp index e082c1b21d9..3f72bc84dc5 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp @@ -1055,7 +1055,12 @@ public: do { double start_vtime_sec = os::elapsedVTime(); double start_time_sec = os::elapsedTime(); - the_task->do_marking_step(10.0); + double mark_step_duration_ms = G1ConcMarkStepDurationMillis; + + the_task->do_marking_step(mark_step_duration_ms, + true /* do_stealing */, + true /* do_termination */); + double end_time_sec = os::elapsedTime(); double end_vtime_sec = os::elapsedVTime(); double elapsed_vtime_sec = end_vtime_sec - start_vtime_sec; @@ -1111,7 +1116,8 @@ void ConcurrentMark::markFromRoots() { _restart_for_overflow = false; - set_phase(MAX2((size_t) 1, parallel_marking_threads()), true); + size_t active_workers = MAX2((size_t) 1, parallel_marking_threads()); + set_phase(active_workers, true /* concurrent */); CMConcurrentMarkingTask markingTask(this, cmThread()); if (parallel_marking_threads() > 0) @@ -1176,6 +1182,12 @@ void ConcurrentMark::checkpointRootsFinal(bool clear_all_soft_refs) { /* silent */ false, /* use_prev_marking */ false); } + assert(!restart_for_overflow(), "sanity"); + } + + // Reset the marking state if marking completed + if (!restart_for_overflow()) { + set_non_marking_state(); } #if VERIFY_OBJS_PROCESSED @@ -1500,21 +1512,19 @@ class G1NoteEndOfConcMarkClosure : public HeapRegionClosure { size_t _max_live_bytes; size_t _regions_claimed; size_t _freed_bytes; - FreeRegionList _local_cleanup_list; - HumongousRegionSet _humongous_proxy_set; + FreeRegionList* _local_cleanup_list; + HumongousRegionSet* _humongous_proxy_set; + HRRSCleanupTask* _hrrs_cleanup_task; double _claimed_region_time; double _max_region_time; public: G1NoteEndOfConcMarkClosure(G1CollectedHeap* g1, - int worker_num); + int worker_num, + FreeRegionList* local_cleanup_list, + HumongousRegionSet* humongous_proxy_set, + HRRSCleanupTask* hrrs_cleanup_task); size_t freed_bytes() { return _freed_bytes; } - FreeRegionList* local_cleanup_list() { - return &_local_cleanup_list; - } - HumongousRegionSet* humongous_proxy_set() { - return &_humongous_proxy_set; - } bool doHeapRegion(HeapRegion *r); @@ -1541,7 +1551,12 @@ public: void work(int i) { double start = os::elapsedTime(); - G1NoteEndOfConcMarkClosure g1_note_end(_g1h, i); + FreeRegionList local_cleanup_list("Local Cleanup List"); + HumongousRegionSet humongous_proxy_set("Local Cleanup Humongous Proxy Set"); + HRRSCleanupTask hrrs_cleanup_task; + G1NoteEndOfConcMarkClosure g1_note_end(_g1h, i, &local_cleanup_list, + &humongous_proxy_set, + &hrrs_cleanup_task); if (G1CollectedHeap::use_parallel_gc_threads()) { _g1h->heap_region_par_iterate_chunked(&g1_note_end, i, HeapRegion::NoteEndClaimValue); @@ -1553,15 +1568,17 @@ public: // Now update the lists _g1h->update_sets_after_freeing_regions(g1_note_end.freed_bytes(), NULL /* free_list */, - g1_note_end.humongous_proxy_set(), + &humongous_proxy_set, true /* par */); { MutexLockerEx x(ParGCRareEvent_lock, Mutex::_no_safepoint_check_flag); _max_live_bytes += g1_note_end.max_live_bytes(); _freed_bytes += g1_note_end.freed_bytes(); - _cleanup_list->add_as_tail(g1_note_end.local_cleanup_list()); - assert(g1_note_end.local_cleanup_list()->is_empty(), "post-condition"); + _cleanup_list->add_as_tail(&local_cleanup_list); + assert(local_cleanup_list.is_empty(), "post-condition"); + + HeapRegionRemSet::finish_cleanup_task(&hrrs_cleanup_task); } double end = os::elapsedTime(); if (G1PrintParCleanupStats) { @@ -1602,13 +1619,17 @@ public: G1NoteEndOfConcMarkClosure:: G1NoteEndOfConcMarkClosure(G1CollectedHeap* g1, - int worker_num) + int worker_num, + FreeRegionList* local_cleanup_list, + HumongousRegionSet* humongous_proxy_set, + HRRSCleanupTask* hrrs_cleanup_task) : _g1(g1), _worker_num(worker_num), _max_live_bytes(0), _regions_claimed(0), _freed_bytes(0), _claimed_region_time(0.0), _max_region_time(0.0), - _local_cleanup_list("Local Cleanup List"), - _humongous_proxy_set("Local Cleanup Humongous Proxy Set") { } + _local_cleanup_list(local_cleanup_list), + _humongous_proxy_set(humongous_proxy_set), + _hrrs_cleanup_task(hrrs_cleanup_task) { } bool G1NoteEndOfConcMarkClosure::doHeapRegion(HeapRegion *hr) { // We use a claim value of zero here because all regions @@ -1619,11 +1640,12 @@ bool G1NoteEndOfConcMarkClosure::doHeapRegion(HeapRegion *hr) { _regions_claimed++; hr->note_end_of_marking(); _max_live_bytes += hr->max_live_bytes(); - _g1->free_region_if_totally_empty(hr, - &_freed_bytes, - &_local_cleanup_list, - &_humongous_proxy_set, - true /* par */); + _g1->free_region_if_empty(hr, + &_freed_bytes, + _local_cleanup_list, + _humongous_proxy_set, + _hrrs_cleanup_task, + true /* par */); double region_time = (os::elapsedTime() - start); _claimed_region_time += region_time; if (region_time > _max_region_time) _max_region_time = region_time; @@ -1659,6 +1681,8 @@ void ConcurrentMark::cleanup() { double start = os::elapsedTime(); + HeapRegionRemSet::reset_for_cleanup_tasks(); + // Do counting once more with the world stopped for good measure. G1ParFinalCountTask g1_par_count_task(g1h, nextMarkBitMap(), &_region_bm, &_card_bm); @@ -1853,6 +1877,8 @@ void ConcurrentMark::completeCleanup() { assert(local_free_list.is_empty(), "post-condition"); } +// Support closures for reference procssing in G1 + bool G1CMIsAliveClosure::do_object_b(oop obj) { HeapWord* addr = (HeapWord*)obj; return addr != NULL && @@ -1873,11 +1899,17 @@ class G1CMKeepAliveClosure: public OopClosure { virtual void do_oop( oop* p) { do_oop_work(p); } template void do_oop_work(T* p) { - oop thisOop = oopDesc::load_decode_heap_oop(p); - HeapWord* addr = (HeapWord*)thisOop; - if (_g1->is_in_g1_reserved(addr) && _g1->is_obj_ill(thisOop)) { + oop obj = oopDesc::load_decode_heap_oop(p); + HeapWord* addr = (HeapWord*)obj; + + if (_cm->verbose_high()) + gclog_or_tty->print_cr("\t[0] we're looking at location " + "*"PTR_FORMAT" = "PTR_FORMAT, + p, (void*) obj); + + if (_g1->is_in_g1_reserved(addr) && _g1->is_obj_ill(obj)) { _bitMap->mark(addr); - _cm->mark_stack_push(thisOop); + _cm->mark_stack_push(obj); } } }; @@ -1899,6 +1931,199 @@ class G1CMDrainMarkingStackClosure: public VoidClosure { } }; +// 'Keep Alive' closure used by parallel reference processing. +// An instance of this closure is used in the parallel reference processing +// code rather than an instance of G1CMKeepAliveClosure. We could have used +// the G1CMKeepAliveClosure as it is MT-safe. Also reference objects are +// placed on to discovered ref lists once so we can mark and push with no +// need to check whether the object has already been marked. Using the +// G1CMKeepAliveClosure would mean, however, having all the worker threads +// operating on the global mark stack. This means that an individual +// worker would be doing lock-free pushes while it processes its own +// discovered ref list followed by drain call. If the discovered ref lists +// are unbalanced then this could cause interference with the other +// workers. Using a CMTask (and its embedded local data structures) +// avoids that potential interference. +class G1CMParKeepAliveAndDrainClosure: public OopClosure { + ConcurrentMark* _cm; + CMTask* _task; + CMBitMap* _bitMap; + int _ref_counter_limit; + int _ref_counter; + public: + G1CMParKeepAliveAndDrainClosure(ConcurrentMark* cm, + CMTask* task, + CMBitMap* bitMap) : + _cm(cm), _task(task), _bitMap(bitMap), + _ref_counter_limit(G1RefProcDrainInterval) + { + assert(_ref_counter_limit > 0, "sanity"); + _ref_counter = _ref_counter_limit; + } + + virtual void do_oop(narrowOop* p) { do_oop_work(p); } + virtual void do_oop( oop* p) { do_oop_work(p); } + + template void do_oop_work(T* p) { + if (!_cm->has_overflown()) { + oop obj = oopDesc::load_decode_heap_oop(p); + if (_cm->verbose_high()) + gclog_or_tty->print_cr("\t[%d] we're looking at location " + "*"PTR_FORMAT" = "PTR_FORMAT, + _task->task_id(), p, (void*) obj); + + _task->deal_with_reference(obj); + _ref_counter--; + + if (_ref_counter == 0) { + // We have dealt with _ref_counter_limit references, pushing them and objects + // reachable from them on to the local stack (and possibly the global stack). + // Call do_marking_step() to process these entries. We call the routine in a + // loop, which we'll exit if there's nothing more to do (i.e. we're done + // with the entries that we've pushed as a result of the deal_with_reference + // calls above) or we overflow. + // Note: CMTask::do_marking_step() can set the CMTask::has_aborted() flag + // while there may still be some work to do. (See the comment at the + // beginning of CMTask::do_marking_step() for those conditions - one of which + // is reaching the specified time target.) It is only when + // CMTask::do_marking_step() returns without setting the has_aborted() flag + // that the marking has completed. + do { + double mark_step_duration_ms = G1ConcMarkStepDurationMillis; + _task->do_marking_step(mark_step_duration_ms, + false /* do_stealing */, + false /* do_termination */); + } while (_task->has_aborted() && !_cm->has_overflown()); + _ref_counter = _ref_counter_limit; + } + } else { + if (_cm->verbose_high()) + gclog_or_tty->print_cr("\t[%d] CM Overflow", _task->task_id()); + } + } +}; + +class G1CMParDrainMarkingStackClosure: public VoidClosure { + ConcurrentMark* _cm; + CMTask* _task; + public: + G1CMParDrainMarkingStackClosure(ConcurrentMark* cm, CMTask* task) : + _cm(cm), _task(task) + {} + + void do_void() { + do { + if (_cm->verbose_high()) + gclog_or_tty->print_cr("\t[%d] Drain: Calling do marking_step", _task->task_id()); + + // We call CMTask::do_marking_step() to completely drain the local and + // global marking stacks. The routine is called in a loop, which we'll + // exit if there's nothing more to do (i.e. we'completely drained the + // entries that were pushed as a result of applying the + // G1CMParKeepAliveAndDrainClosure to the entries on the discovered ref + // lists above) or we overflow the global marking stack. + // Note: CMTask::do_marking_step() can set the CMTask::has_aborted() flag + // while there may still be some work to do. (See the comment at the + // beginning of CMTask::do_marking_step() for those conditions - one of which + // is reaching the specified time target.) It is only when + // CMTask::do_marking_step() returns without setting the has_aborted() flag + // that the marking has completed. + + _task->do_marking_step(1000000000.0 /* something very large */, + true /* do_stealing */, + true /* do_termination */); + } while (_task->has_aborted() && !_cm->has_overflown()); + } +}; + +// Implementation of AbstractRefProcTaskExecutor for G1 +class G1RefProcTaskExecutor: public AbstractRefProcTaskExecutor { +private: + G1CollectedHeap* _g1h; + ConcurrentMark* _cm; + CMBitMap* _bitmap; + WorkGang* _workers; + int _active_workers; + +public: + G1RefProcTaskExecutor(G1CollectedHeap* g1h, + ConcurrentMark* cm, + CMBitMap* bitmap, + WorkGang* workers, + int n_workers) : + _g1h(g1h), _cm(cm), _bitmap(bitmap), + _workers(workers), _active_workers(n_workers) + { } + + // Executes the given task using concurrent marking worker threads. + virtual void execute(ProcessTask& task); + virtual void execute(EnqueueTask& task); +}; + +class G1RefProcTaskProxy: public AbstractGangTask { + typedef AbstractRefProcTaskExecutor::ProcessTask ProcessTask; + ProcessTask& _proc_task; + G1CollectedHeap* _g1h; + ConcurrentMark* _cm; + CMBitMap* _bitmap; + +public: + G1RefProcTaskProxy(ProcessTask& proc_task, + G1CollectedHeap* g1h, + ConcurrentMark* cm, + CMBitMap* bitmap) : + AbstractGangTask("Process reference objects in parallel"), + _proc_task(proc_task), _g1h(g1h), _cm(cm), _bitmap(bitmap) + {} + + virtual void work(int i) { + CMTask* marking_task = _cm->task(i); + G1CMIsAliveClosure g1_is_alive(_g1h); + G1CMParKeepAliveAndDrainClosure g1_par_keep_alive(_cm, marking_task, _bitmap); + G1CMParDrainMarkingStackClosure g1_par_drain(_cm, marking_task); + + _proc_task.work(i, g1_is_alive, g1_par_keep_alive, g1_par_drain); + } +}; + +void G1RefProcTaskExecutor::execute(ProcessTask& proc_task) { + assert(_workers != NULL, "Need parallel worker threads."); + + G1RefProcTaskProxy proc_task_proxy(proc_task, _g1h, _cm, _bitmap); + + // We need to reset the phase for each task execution so that + // the termination protocol of CMTask::do_marking_step works. + _cm->set_phase(_active_workers, false /* concurrent */); + _g1h->set_par_threads(_active_workers); + _workers->run_task(&proc_task_proxy); + _g1h->set_par_threads(0); +} + +class G1RefEnqueueTaskProxy: public AbstractGangTask { + typedef AbstractRefProcTaskExecutor::EnqueueTask EnqueueTask; + EnqueueTask& _enq_task; + +public: + G1RefEnqueueTaskProxy(EnqueueTask& enq_task) : + AbstractGangTask("Enqueue reference objects in parallel"), + _enq_task(enq_task) + { } + + virtual void work(int i) { + _enq_task.work(i); + } +}; + +void G1RefProcTaskExecutor::execute(EnqueueTask& enq_task) { + assert(_workers != NULL, "Need parallel worker threads."); + + G1RefEnqueueTaskProxy enq_task_proxy(enq_task); + + _g1h->set_par_threads(_active_workers); + _workers->run_task(&enq_task_proxy); + _g1h->set_par_threads(0); +} + void ConcurrentMark::weakRefsWork(bool clear_all_soft_refs) { ResourceMark rm; HandleMark hm; @@ -1917,24 +2142,59 @@ void ConcurrentMark::weakRefsWork(bool clear_all_soft_refs) { G1CMDrainMarkingStackClosure g1_drain_mark_stack(nextMarkBitMap(), &_markStack, &g1_keep_alive); - // XXXYYY Also: copy the parallel ref processing code from CMS. - rp->process_discovered_references(&g1_is_alive, - &g1_keep_alive, - &g1_drain_mark_stack, - NULL); + // We use the work gang from the G1CollectedHeap and we utilize all + // the worker threads. + int active_workers = MAX2(MIN2(g1h->workers()->total_workers(), (int)_max_task_num), 1); + + G1RefProcTaskExecutor par_task_executor(g1h, this, nextMarkBitMap(), + g1h->workers(), active_workers); + + if (rp->processing_is_mt()) { + // Set the degree of MT here. If the discovery is done MT, there + // may have been a different number of threads doing the discovery + // and a different number of discovered lists may have Ref objects. + // That is OK as long as the Reference lists are balanced (see + // balance_all_queues() and balance_queues()). + rp->set_mt_degree(active_workers); + + rp->process_discovered_references(&g1_is_alive, + &g1_keep_alive, + &g1_drain_mark_stack, + &par_task_executor); + + // The work routines of the parallel keep_alive and drain_marking_stack + // will set the has_overflown flag if we overflow the global marking + // stack. + } else { + rp->process_discovered_references(&g1_is_alive, + &g1_keep_alive, + &g1_drain_mark_stack, + NULL); + + } + assert(_markStack.overflow() || _markStack.isEmpty(), - "mark stack should be empty (unless it overflowed)"); + "mark stack should be empty (unless it overflowed)"); if (_markStack.overflow()) { + // Should have been done already when we tried to push an + // entry on to the global mark stack. But let's do it again. set_has_overflown(); } - rp->enqueue_discovered_references(); + if (rp->processing_is_mt()) { + assert(rp->num_q() == active_workers, "why not"); + rp->enqueue_discovered_references(&par_task_executor); + } else { + rp->enqueue_discovered_references(); + } + rp->verify_no_references_recorded(); assert(!rp->discovery_enabled(), "should have been disabled"); - // Now clean up stale oops in SymbolTable and StringTable - SymbolTable::unlink(&g1_is_alive); + // Now clean up stale oops in StringTable StringTable::unlink(&g1_is_alive); + // Clean up unreferenced symbols in symbol table. + SymbolTable::unlink(); } void ConcurrentMark::swapMarkBitMaps() { @@ -1955,7 +2215,9 @@ public: CMTask* task = _cm->task(worker_i); task->record_start_time(); do { - task->do_marking_step(1000000000.0 /* something very large */); + task->do_marking_step(1000000000.0 /* something very large */, + true /* do_stealing */, + true /* do_termination */); } while (task->has_aborted() && !_cm->has_overflown()); // If we overflow, then we do not want to restart. We instead // want to abort remark and do concurrent marking again. @@ -1978,7 +2240,7 @@ void ConcurrentMark::checkpointRootsFinalWork() { G1CollectedHeap::StrongRootsScope srs(g1h); // this is remark, so we'll use up all available threads int active_workers = ParallelGCThreads; - set_phase(active_workers, false); + set_phase(active_workers, false /* concurrent */); CMRemarkTask remarkTask(this); // We will start all available threads, even if we decide that the @@ -1992,7 +2254,7 @@ void ConcurrentMark::checkpointRootsFinalWork() { G1CollectedHeap::StrongRootsScope srs(g1h); // this is remark, so we'll use up all available threads int active_workers = 1; - set_phase(active_workers, false); + set_phase(active_workers, false /* concurrent */); CMRemarkTask remarkTask(this); // We will start all available threads, even if we decide that the @@ -2005,9 +2267,6 @@ void ConcurrentMark::checkpointRootsFinalWork() { print_stats(); - if (!restart_for_overflow()) - set_non_marking_state(); - #if VERIFY_OBJS_PROCESSED if (_scan_obj_cl.objs_processed != ThreadLocalObjQueue::objs_enqueued) { gclog_or_tty->print_cr("Processed = %d, enqueued = %d.", @@ -3124,7 +3383,7 @@ void CMTask::deal_with_reference(oop obj) { // do nothing } #else // _CHECK_BOTH_FINGERS_ - // we will only check the global finger + // we will only check the global finger if (objAddr < global_finger) { // see long comment above @@ -3249,7 +3508,7 @@ void CMTask::regular_clock_call() { double elapsed_time_ms = curr_time_ms - _start_time_ms; if (elapsed_time_ms > _time_target_ms) { set_has_aborted(); - _has_aborted_timed_out = true; + _has_timed_out = true; statsOnly( ++_aborted_timed_out ); return; } @@ -3754,7 +4013,9 @@ void CMTask::print_stats() { *****************************************************************************/ -void CMTask::do_marking_step(double time_target_ms) { +void CMTask::do_marking_step(double time_target_ms, + bool do_stealing, + bool do_termination) { assert(time_target_ms >= 1.0, "minimum granularity is 1ms"); assert(concurrent() == _cm->concurrent(), "they should be the same"); @@ -3794,7 +4055,7 @@ void CMTask::do_marking_step(double time_target_ms) { // clear all flags clear_has_aborted(); - _has_aborted_timed_out = false; + _has_timed_out = false; _draining_satb_buffers = false; ++_calls; @@ -3970,7 +4231,7 @@ void CMTask::do_marking_step(double time_target_ms) { drain_global_stack(false); // Attempt at work stealing from other task's queues. - if (!has_aborted()) { + if (do_stealing && !has_aborted()) { // We have not aborted. This means that we have finished all that // we could. Let's try to do some stealing... @@ -4011,7 +4272,7 @@ void CMTask::do_marking_step(double time_target_ms) { // We still haven't aborted. Now, let's try to get into the // termination protocol. - if (!has_aborted()) { + if (do_termination && !has_aborted()) { // We cannot check whether the global stack is empty, since other // tasks might be concurrently pushing objects on it. We also cannot // check if the region stack is empty because if a thread is aborting @@ -4087,7 +4348,7 @@ void CMTask::do_marking_step(double time_target_ms) { statsOnly( ++_aborted ); - if (_has_aborted_timed_out) { + if (_has_timed_out) { double diff_ms = elapsed_time_ms - _time_target_ms; // Keep statistics of how well we did with respect to hitting // our target only if we actually timed out (if we aborted for diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp index 9aa961bae4e..e256d4e1f83 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp @@ -353,6 +353,10 @@ class ConcurrentMark: public CHeapObj { friend class CMConcurrentMarkingTask; friend class G1ParNoteEndTask; friend class CalcLiveObjectsClosure; + friend class G1RefProcTaskProxy; + friend class G1RefProcTaskExecutor; + friend class G1CMParKeepAliveAndDrainClosure; + friend class G1CMParDrainMarkingStackClosure; protected: ConcurrentMarkThread* _cmThread; // the thread doing the work @@ -936,7 +940,7 @@ private: // if this is true, then the task has aborted for some reason bool _has_aborted; // set when the task aborts because it has met its time quota - bool _has_aborted_timed_out; + bool _has_timed_out; // true when we're draining SATB buffers; this avoids the task // aborting due to SATB buffers being available (as we're already // dealing with them) @@ -1041,7 +1045,7 @@ public: // trying not to exceed the given duration. However, it might exit // prematurely, according to some conditions (i.e. SATB buffers are // available for processing). - void do_marking_step(double target_ms); + void do_marking_step(double target_ms, bool do_stealing, bool do_termination); // These two calls start and stop the timer void record_start_time() { @@ -1063,7 +1067,8 @@ public: bool has_aborted() { return _has_aborted; } void set_has_aborted() { _has_aborted = true; } void clear_has_aborted() { _has_aborted = false; } - bool claimed() { return _claimed; } + bool has_timed_out() { return _has_timed_out; } + bool claimed() { return _claimed; } // Support routines for the partially scanned region that may be // recorded as a result of aborting while draining the CMRegionStack diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp index 8186e61ce04..5ff79ac6122 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp @@ -251,7 +251,17 @@ void ConcurrentMarkThread::run() { // Now do the remainder of the cleanup operation. _cm->completeCleanup(); + // Notify anyone who's waiting that there are no more free + // regions coming. We have to do this before we join the STS, + // otherwise we might deadlock: a GC worker could be blocked + // waiting for the notification whereas this thread will be + // blocked for the pause to finish while it's trying to join + // the STS, which is conditional on the GC workers finishing. + g1h->reset_free_regions_coming(); + + _sts.join(); g1_policy->record_concurrent_mark_cleanup_completed(); + _sts.leave(); double cleanup_end_sec = os::elapsedTime(); if (PrintGC) { @@ -260,9 +270,6 @@ void ConcurrentMarkThread::run() { gclog_or_tty->print_cr("[GC concurrent-cleanup-end, %1.7lf]", cleanup_end_sec - cleanup_start_sec); } - - // We're done: no more free regions coming. - g1h->reset_free_regions_coming(); } guarantee(cm()->cleanup_list_is_empty(), "at this point there should be no regions on the cleanup list"); diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp index db86135530b..a4f01adf0aa 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -546,8 +546,11 @@ HeapRegion* G1CollectedHeap::new_region_work(size_t word_size, res = new_region_try_secondary_free_list(word_size); } if (res == NULL && do_expand) { - expand(word_size * HeapWordSize); - res = _free_list.remove_head_or_null(); + if (expand(word_size * HeapWordSize)) { + // The expansion succeeded and so we should have at least one + // region on the free list. + res = _free_list.remove_head(); + } } if (res != NULL) { if (G1PrintHeapRegions) { @@ -631,9 +634,22 @@ HeapWord* G1CollectedHeap::humongous_obj_allocate(size_t word_size) { if (first == -1) { // The only thing we can do now is attempt expansion. if (fs + x_size >= num_regions) { - expand((num_regions - fs) * HeapRegion::GrainBytes); - first = humongous_obj_allocate_find_first(num_regions, word_size); - assert(first != -1, "this should have worked"); + // If the number of regions we're trying to allocate for this + // object is at most the number of regions in the free suffix, + // then the call to humongous_obj_allocate_find_first() above + // should have succeeded and we wouldn't be here. + // + // We should only be trying to expand when the free suffix is + // not sufficient for the object _and_ we have some expansion + // room available. + assert(num_regions > fs, "earlier allocation should have succeeded"); + + if (expand((num_regions - fs) * HeapRegion::GrainBytes)) { + first = humongous_obj_allocate_find_first(num_regions, word_size); + // If the expansion was successful then the allocation + // should have been successful. + assert(first != -1, "this should have worked"); + } } } @@ -1647,16 +1663,17 @@ resize_if_necessary_after_full_collection(size_t word_size) { if (capacity_after_gc < minimum_desired_capacity) { // Don't expand unless it's significant size_t expand_bytes = minimum_desired_capacity - capacity_after_gc; - expand(expand_bytes); - if (PrintGC && Verbose) { - gclog_or_tty->print_cr(" " - " expanding:" - " max_heap_size: %6.1fK" - " minimum_desired_capacity: %6.1fK" - " expand_bytes: %6.1fK", - (double) max_heap_size / (double) K, - (double) minimum_desired_capacity / (double) K, - (double) expand_bytes / (double) K); + if (expand(expand_bytes)) { + if (PrintGC && Verbose) { + gclog_or_tty->print_cr(" " + " expanding:" + " max_heap_size: %6.1fK" + " minimum_desired_capacity: %6.1fK" + " expand_bytes: %6.1fK", + (double) max_heap_size / (double) K, + (double) minimum_desired_capacity / (double) K, + (double) expand_bytes / (double) K); + } } // No expansion, now see if we want to shrink @@ -1757,66 +1774,84 @@ HeapWord* G1CollectedHeap::expand_and_allocate(size_t word_size) { verify_region_sets_optional(); - size_t expand_bytes = word_size * HeapWordSize; - if (expand_bytes < MinHeapDeltaBytes) { - expand_bytes = MinHeapDeltaBytes; + size_t expand_bytes = MAX2(word_size * HeapWordSize, MinHeapDeltaBytes); + if (expand(expand_bytes)) { + verify_region_sets_optional(); + return attempt_allocation_at_safepoint(word_size, + false /* expect_null_cur_alloc_region */); } - expand(expand_bytes); - - verify_region_sets_optional(); - - return attempt_allocation_at_safepoint(word_size, - false /* expect_null_cur_alloc_region */); + return NULL; } -// FIXME: both this and shrink could probably be more efficient by -// doing one "VirtualSpace::expand_by" call rather than several. -void G1CollectedHeap::expand(size_t expand_bytes) { +bool G1CollectedHeap::expand(size_t expand_bytes) { size_t old_mem_size = _g1_storage.committed_size(); - // We expand by a minimum of 1K. - expand_bytes = MAX2(expand_bytes, (size_t)K); - size_t aligned_expand_bytes = - ReservedSpace::page_align_size_up(expand_bytes); + size_t aligned_expand_bytes = ReservedSpace::page_align_size_up(expand_bytes); aligned_expand_bytes = align_size_up(aligned_expand_bytes, HeapRegion::GrainBytes); - expand_bytes = aligned_expand_bytes; - while (expand_bytes > 0) { - HeapWord* base = (HeapWord*)_g1_storage.high(); - // Commit more storage. - bool successful = _g1_storage.expand_by(HeapRegion::GrainBytes); - if (!successful) { - expand_bytes = 0; - } else { - expand_bytes -= HeapRegion::GrainBytes; - // Expand the committed region. - HeapWord* high = (HeapWord*) _g1_storage.high(); - _g1_committed.set_end(high); + + if (Verbose && PrintGC) { + gclog_or_tty->print("Expanding garbage-first heap from %ldK by %ldK", + old_mem_size/K, aligned_expand_bytes/K); + } + + HeapWord* old_end = (HeapWord*)_g1_storage.high(); + bool successful = _g1_storage.expand_by(aligned_expand_bytes); + if (successful) { + HeapWord* new_end = (HeapWord*)_g1_storage.high(); + + // Expand the committed region. + _g1_committed.set_end(new_end); + + // Tell the cardtable about the expansion. + Universe::heap()->barrier_set()->resize_covered_region(_g1_committed); + + // And the offset table as well. + _bot_shared->resize(_g1_committed.word_size()); + + expand_bytes = aligned_expand_bytes; + HeapWord* base = old_end; + + // Create the heap regions for [old_end, new_end) + while (expand_bytes > 0) { + HeapWord* high = base + HeapRegion::GrainWords; + // Create a new HeapRegion. MemRegion mr(base, high); bool is_zeroed = !_g1_max_committed.contains(base); HeapRegion* hr = new HeapRegion(_bot_shared, mr, is_zeroed); - // Now update max_committed if necessary. - _g1_max_committed.set_end(MAX2(_g1_max_committed.end(), high)); - // Add it to the HeapRegionSeq. _hrs->insert(hr); _free_list.add_as_tail(hr); + // And we used up an expansion region to create it. _expansion_regions--; - // Tell the cardtable about it. - Universe::heap()->barrier_set()->resize_covered_region(_g1_committed); - // And the offset table as well. - _bot_shared->resize(_g1_committed.word_size()); + + expand_bytes -= HeapRegion::GrainBytes; + base += HeapRegion::GrainWords; + } + assert(base == new_end, "sanity"); + + // Now update max_committed if necessary. + _g1_max_committed.set_end(MAX2(_g1_max_committed.end(), new_end)); + + } else { + // The expansion of the virtual storage space was unsuccessful. + // Let's see if it was because we ran out of swap. + if (G1ExitOnExpansionFailure && + _g1_storage.uncommitted_size() >= aligned_expand_bytes) { + // We had head room... + vm_exit_out_of_memory(aligned_expand_bytes, "G1 heap expansion"); } } if (Verbose && PrintGC) { size_t new_mem_size = _g1_storage.committed_size(); - gclog_or_tty->print_cr("Expanding garbage-first heap from %ldK by %ldK to %ldK", - old_mem_size/K, aligned_expand_bytes/K, + gclog_or_tty->print_cr("...%s, expanded to %ldK", + (successful ? "Successful" : "Failed"), new_mem_size/K); } + return successful; } void G1CollectedHeap::shrink_helper(size_t shrink_bytes) @@ -2088,7 +2123,10 @@ jint G1CollectedHeap::initialize() { HeapRegionRemSet::init_heap(max_regions()); // Now expand into the initial heap size. - expand(init_byte_size); + if (!expand(init_byte_size)) { + vm_exit_during_initialization("Failed to allocate initial heap."); + return JNI_ENOMEM; + } // Perform any initialization actions delegated to the policy. g1_policy()->init(); @@ -2744,7 +2782,7 @@ size_t G1CollectedHeap::large_typearray_limit() { } size_t G1CollectedHeap::max_capacity() const { - return g1_reserved_obj_bytes(); + return _g1_reserved.byte_size(); } jlong G1CollectedHeap::millis_since_last_gc() { @@ -3538,7 +3576,12 @@ G1CollectedHeap::do_collection_pause_at_safepoint(double target_pause_time_ms) { size_t expand_bytes = g1_policy()->expansion_amount(); if (expand_bytes > 0) { size_t bytes_before = capacity(); - expand(expand_bytes); + if (!expand(expand_bytes)) { + // We failed to expand the heap so let's verify that + // committed/uncommitted amount match the backing store + assert(capacity() == _g1_storage.committed_size(), "committed size mismatch"); + assert(max_capacity() == _g1_storage.reserved_size(), "reserved size mismatch"); + } } } @@ -3762,7 +3805,7 @@ void G1CollectedHeap::get_gc_alloc_regions() { if (alloc_region == NULL) { // we will get a new GC alloc region - alloc_region = new_gc_alloc_region(ap, 0); + alloc_region = new_gc_alloc_region(ap, HeapRegion::GrainWords); } else { // the region was retained from the last collection ++_gc_alloc_region_counts[ap]; @@ -4925,10 +4968,11 @@ void G1CollectedHeap::evacuate_collection_set() { COMPILER2_PRESENT(DerivedPointerTable::update_pointers()); } -void G1CollectedHeap::free_region_if_totally_empty(HeapRegion* hr, +void G1CollectedHeap::free_region_if_empty(HeapRegion* hr, size_t* pre_used, FreeRegionList* free_list, HumongousRegionSet* humongous_proxy_set, + HRRSCleanupTask* hrrs_cleanup_task, bool par) { if (hr->used() > 0 && hr->max_live_bytes() == 0 && !hr->is_young()) { if (hr->isHumongous()) { @@ -4937,6 +4981,8 @@ void G1CollectedHeap::free_region_if_totally_empty(HeapRegion* hr, } else { free_region(hr, pre_used, free_list, par); } + } else { + hr->rem_set()->do_cleanup_work(hrrs_cleanup_task); } } @@ -5308,7 +5354,7 @@ size_t G1CollectedHeap::n_regions() { size_t G1CollectedHeap::max_regions() { return - (size_t)align_size_up(g1_reserved_obj_bytes(), HeapRegion::GrainBytes) / + (size_t)align_size_up(max_capacity(), HeapRegion::GrainBytes) / HeapRegion::GrainBytes; } diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp index 709dbd62843..e3185856948 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -40,6 +40,7 @@ class HeapRegion; class HeapRegionSeq; +class HRRSCleanupTask; class PermanentGenerationSpec; class GenerationSpec; class OopsInHeapRegionClosure; @@ -618,8 +619,10 @@ protected: public: // Expand the garbage-first heap by at least the given size (in bytes!). + // Returns true if the heap was expanded by the requested amount; + // false otherwise. // (Rounds up to a HeapRegion boundary.) - virtual void expand(size_t expand_bytes); + bool expand(size_t expand_bytes); // Do anything common to GC's. virtual void gc_prologue(bool full); @@ -980,9 +983,6 @@ public: // Reference Processing accessor ReferenceProcessor* ref_processor() { return _ref_processor; } - // Reserved (g1 only; super method includes perm), capacity and the used - // portion in bytes. - size_t g1_reserved_obj_bytes() const { return _g1_reserved.byte_size(); } virtual size_t capacity() const; virtual size_t used() const; // This should be called when we're not holding the heap lock. The @@ -1099,11 +1099,12 @@ public: // all dead. It calls either free_region() or // free_humongous_region() depending on the type of the region that // is passed to it. - void free_region_if_totally_empty(HeapRegion* hr, - size_t* pre_used, - FreeRegionList* free_list, - HumongousRegionSet* humongous_proxy_set, - bool par); + void free_region_if_empty(HeapRegion* hr, + size_t* pre_used, + FreeRegionList* free_list, + HumongousRegionSet* humongous_proxy_set, + HRRSCleanupTask* hrrs_cleanup_task, + bool par); // It appends the free list to the master free list and updates the // master humongous list according to the contents of the proxy diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp index 63a5d63c780..ff3c55acc4b 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp @@ -2011,7 +2011,7 @@ size_t G1CollectorPolicy::expansion_amount() { // space, whichever is smaller, bounded below by a minimum // expansion (unless that's all that's left.) const size_t min_expand_bytes = 1*M; - size_t reserved_bytes = _g1->g1_reserved_obj_bytes(); + size_t reserved_bytes = _g1->max_capacity(); size_t committed_bytes = _g1->capacity(); size_t uncommitted_bytes = reserved_bytes - committed_bytes; size_t expand_bytes; diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp index 1c6c5df31c9..68d5d84f2d4 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp @@ -172,9 +172,10 @@ void G1MarkSweep::mark_sweep_phase1(bool& marked_for_unloading, assert(GenMarkSweep::_marking_stack.is_empty(), "just drained"); - // Visit symbol and interned string tables and delete unmarked oops - SymbolTable::unlink(&GenMarkSweep::is_alive); + // Visit interned string tables and delete unmarked oops StringTable::unlink(&GenMarkSweep::is_alive); + // Clean up unreferenced symbols in symbol table. + SymbolTable::unlink(); assert(GenMarkSweep::_marking_stack.is_empty(), "stack should be empty by now"); diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp index 622028c402d..48d3dbd100c 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, 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 @@ -735,7 +735,7 @@ bool G1RemSet::concurrentRefineOneCard_impl(jbyte* card_ptr, int worker_i, MemRegion dirtyRegion(start, end); #if CARD_REPEAT_HISTO - init_ct_freq_table(_g1->g1_reserved_obj_bytes()); + init_ct_freq_table(_g1->max_capacity()); ct_freq_note_card(_ct_bs->index_for(start)); #endif diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp index b6fcf614fcc..19a8338c6e6 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp @@ -81,6 +81,14 @@ product(intx, G1MarkRegionStackSize, 1024 * 1024, \ "Size of the region stack for concurrent marking.") \ \ + product(double, G1ConcMarkStepDurationMillis, 10.0, \ + "Target duration of individual concurrent marking steps " \ + "in milliseconds.") \ + \ + product(intx, G1RefProcDrainInterval, 10, \ + "The number of discovered reference objects to process before " \ + "draining concurrent marking work queues.") \ + \ develop(bool, G1SATBBarrierPrintNullPreVals, false, \ "If true, count frac of ptr writes with null pre-vals.") \ \ @@ -293,9 +301,13 @@ develop(uintx, G1StressConcRegionFreeingDelayMillis, 0, \ "Artificial delay during concurrent region freeing") \ \ - develop(bool, ReduceInitialCardMarksForG1, false, \ + develop(bool, ReduceInitialCardMarksForG1, false, \ "When ReduceInitialCardMarks is true, this flag setting " \ - " controls whether G1 allows the RICM optimization") + " controls whether G1 allows the RICM optimization") \ + \ + develop(bool, G1ExitOnExpansionFailure, false, \ + "Raise a fatal VM exit out of memory failure in the event " \ + " that heap expansion fails due to running out of swap.") G1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG) diff --git a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp index dde8255cd99..8e498ea4a7f 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, 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 @@ -463,7 +463,6 @@ public: } static void par_contract_all(); - }; void PosParPRT::par_contract_all() { @@ -1070,6 +1069,11 @@ bool OtherRegionsTable::contains_reference_locked(OopOrNarrowOopStar from) const } +void +OtherRegionsTable::do_cleanup_work(HRRSCleanupTask* hrrs_cleanup_task) { + _sparse_table.do_cleanup_work(hrrs_cleanup_task); +} + // Determines how many threads can add records to an rset in parallel. // This can be done by either mutator threads together with the // concurrent refinement threads or GC threads. @@ -1384,6 +1388,19 @@ void HeapRegionRemSet::print_recorded() { } } +void HeapRegionRemSet::reset_for_cleanup_tasks() { + SparsePRT::reset_for_cleanup_tasks(); +} + +void HeapRegionRemSet::do_cleanup_work(HRRSCleanupTask* hrrs_cleanup_task) { + _other_regions.do_cleanup_work(hrrs_cleanup_task); +} + +void +HeapRegionRemSet::finish_cleanup_task(HRRSCleanupTask* hrrs_cleanup_task) { + SparsePRT::finish_cleanup_task(hrrs_cleanup_task); +} + #ifndef PRODUCT void HeapRegionRemSet::test() { os::sleep(Thread::current(), (jlong)5000, false); diff --git a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp index 62378db5788..3f0169bb3ee 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, 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 @@ -38,6 +38,10 @@ class HeapRegionRemSetIterator; class PosParPRT; class SparsePRT; +// Essentially a wrapper around SparsePRTCleanupTask. See +// sparsePRT.hpp for more details. +class HRRSCleanupTask : public SparsePRTCleanupTask { +}; // The "_coarse_map" is a bitmap with one bit for each region, where set // bits indicate that the corresponding region may contain some pointer @@ -156,6 +160,8 @@ public: // "from_hr" is being cleared; remove any entries from it. void clear_incoming_entry(HeapRegion* from_hr); + void do_cleanup_work(HRRSCleanupTask* hrrs_cleanup_task); + // Declare the heap size (in # of regions) to the OtherRegionsTable. // (Uses it to initialize from_card_cache). static void init_from_card_cache(size_t max_regions); @@ -165,10 +171,8 @@ public: static void shrink_from_card_cache(size_t new_n_regs); static void print_from_card_cache(); - }; - class HeapRegionRemSet : public CHeapObj { friend class VMStructs; friend class HeapRegionRemSetIterator; @@ -342,11 +346,16 @@ public: static void print_recorded(); static void record_event(Event evnt); + // These are wrappers for the similarly-named methods on + // SparsePRT. Look at sparsePRT.hpp for more details. + static void reset_for_cleanup_tasks(); + void do_cleanup_work(HRRSCleanupTask* hrrs_cleanup_task); + static void finish_cleanup_task(HRRSCleanupTask* hrrs_cleanup_task); + // Run unit tests. #ifndef PRODUCT static void test(); #endif - }; class HeapRegionRemSetIterator : public CHeapObj { diff --git a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp index 0363352af72..2e15190c526 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp @@ -195,10 +195,10 @@ int HeapRegionSeq::find_contiguous(size_t num) { assert(0 <= res && res < _regions.length(), err_msg("res: %d should be valid", res)); _alloc_search_start = res + (int) num; + assert(0 < _alloc_search_start && _alloc_search_start <= _regions.length(), + err_msg("_alloc_search_start: %d should be valid", + _alloc_search_start)); } - assert(0 < _alloc_search_start && _alloc_search_start <= _regions.length(), - err_msg("_alloc_search_start: %d should be valid", - _alloc_search_start)); return res; } diff --git a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.cpp b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.cpp index 042ca86c6d9..156bc698175 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, 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 @@ -415,6 +415,38 @@ SparsePRT* SparsePRT::get_from_expanded_list() { return NULL; } +void SparsePRT::reset_for_cleanup_tasks() { + _head_expanded_list = NULL; +} + +void SparsePRT::do_cleanup_work(SparsePRTCleanupTask* sprt_cleanup_task) { + if (should_be_on_expanded_list()) { + sprt_cleanup_task->add(this); + } +} + +void SparsePRT::finish_cleanup_task(SparsePRTCleanupTask* sprt_cleanup_task) { + assert(ParGCRareEvent_lock->owned_by_self(), "pre-condition"); + SparsePRT* head = sprt_cleanup_task->head(); + SparsePRT* tail = sprt_cleanup_task->tail(); + if (head != NULL) { + assert(tail != NULL, "if head is not NULL, so should tail"); + + tail->set_next_expanded(_head_expanded_list); + _head_expanded_list = head; + } else { + assert(tail == NULL, "if head is NULL, so should tail"); + } +} + +bool SparsePRT::should_be_on_expanded_list() { + if (_expanded) { + assert(_cur != _next, "if _expanded is true, cur should be != _next"); + } else { + assert(_cur == _next, "if _expanded is false, cur should be == _next"); + } + return expanded(); +} void SparsePRT::cleanup_all() { // First clean up all expanded tables so they agree on next and cur. @@ -484,6 +516,7 @@ void SparsePRT::clear() { _cur->clear(); } _next = _cur; + _expanded = false; } void SparsePRT::cleanup() { @@ -518,3 +551,15 @@ void SparsePRT::expand() { } add_to_expanded_list(this); } + +void SparsePRTCleanupTask::add(SparsePRT* sprt) { + assert(sprt->should_be_on_expanded_list(), "pre-condition"); + + sprt->set_next_expanded(NULL); + if (_tail != NULL) { + _tail->set_next_expanded(sprt); + } else { + _head = sprt; + } + _tail = sprt; +} diff --git a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp index 86e1789dbe4..6780086795f 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, 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 @@ -212,8 +212,11 @@ public: // mutex. class SparsePRTIter; +class SparsePRTCleanupTask; class SparsePRT VALUE_OBJ_CLASS_SPEC { + friend class SparsePRTCleanupTask; + // Iterations are done on the _cur hash table, since they only need to // see entries visible at the start of a collection pause. // All other operations are done using the _next hash table. @@ -238,6 +241,8 @@ class SparsePRT VALUE_OBJ_CLASS_SPEC { SparsePRT* next_expanded() { return _next_expanded; } void set_next_expanded(SparsePRT* nxt) { _next_expanded = nxt; } + bool should_be_on_expanded_list(); + static SparsePRT* _head_expanded_list; public: @@ -284,12 +289,36 @@ public: static void add_to_expanded_list(SparsePRT* sprt); static SparsePRT* get_from_expanded_list(); + // The purpose of these three methods is to help the GC workers + // during the cleanup pause to recreate the expanded list, purging + // any tables from it that belong to regions that are freed during + // cleanup (if we don't purge those tables, there is a race that + // causes various crashes; see CR 7014261). + // + // We chose to recreate the expanded list, instead of purging + // entries from it by iterating over it, to avoid this serial phase + // at the end of the cleanup pause. + // + // The three methods below work as follows: + // * reset_for_cleanup_tasks() : Nulls the expanded list head at the + // start of the cleanup pause. + // * do_cleanup_work() : Called by the cleanup workers for every + // region that is not free / is being freed by the cleanup + // pause. It creates a list of expanded tables whose head / tail + // are on the thread-local SparsePRTCleanupTask object. + // * finish_cleanup_task() : Called by the cleanup workers after + // they complete their cleanup task. It adds the local list into + // the global expanded list. It assumes that the + // ParGCRareEvent_lock is being held to ensure MT-safety. + static void reset_for_cleanup_tasks(); + void do_cleanup_work(SparsePRTCleanupTask* sprt_cleanup_task); + static void finish_cleanup_task(SparsePRTCleanupTask* sprt_cleanup_task); + bool contains_card(RegionIdx_t region_id, CardIdx_t card_index) const { return _next->contains_card(region_id, card_index); } }; - class SparsePRTIter: public RSHashTableIter { public: void init(const SparsePRT* sprt) { @@ -300,4 +329,22 @@ public: } }; +// This allows each worker during a cleanup pause to create a +// thread-local list of sparse tables that have been expanded and need +// to be processed at the beginning of the next GC pause. This lists +// are concatenated into the single expanded list at the end of the +// cleanup pause. +class SparsePRTCleanupTask VALUE_OBJ_CLASS_SPEC { +private: + SparsePRT* _head; + SparsePRT* _tail; + +public: + SparsePRTCleanupTask() : _head(NULL), _tail(NULL) { } + + void add(SparsePRT* sprt); + SparsePRT* head() { return _head; } + SparsePRT* tail() { return _tail; } +}; + #endif // SHARE_VM_GC_IMPLEMENTATION_G1_SPARSEPRT_HPP diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp index 2054dc4a36c..b081ad09f4d 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp @@ -116,10 +116,6 @@ void MarkFromRootsTask::do_it(GCTaskManager* manager, uint which) { SystemDictionary::always_strong_oops_do(&mark_and_push_closure); break; - case vm_symbols: - vmSymbols::oops_do(&mark_and_push_closure); - break; - case code_cache: // Do not treat nmethods as strong roots for mark/sweep, since we can unload them. //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(&mark_and_push_closure)); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp index fd6ee5e76e8..2a35caccdf1 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp @@ -98,9 +98,8 @@ class MarkFromRootsTask : public GCTask { management = 6, jvmti = 7, system_dictionary = 8, - vm_symbols = 9, - reference_processing = 10, - code_cache = 11 + reference_processing = 9, + code_cache = 10 }; private: RootType _root_type; diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp index 4c96c3d41d0..d39999aaaaa 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp @@ -527,7 +527,6 @@ void PSMarkSweep::mark_sweep_phase1(bool clear_all_softrefs) { Management::oops_do(mark_and_push_closure()); JvmtiExport::oops_do(mark_and_push_closure()); SystemDictionary::always_strong_oops_do(mark_and_push_closure()); - vmSymbols::oops_do(mark_and_push_closure()); // Do not treat nmethods as strong roots for mark/sweep, since we can unload them. //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(mark_and_push_closure())); } @@ -558,9 +557,10 @@ void PSMarkSweep::mark_sweep_phase1(bool clear_all_softrefs) { follow_mdo_weak_refs(); assert(_marking_stack.is_empty(), "just drained"); - // Visit symbol and interned string tables and delete unmarked oops - SymbolTable::unlink(is_alive_closure()); + // Visit interned string tables and delete unmarked oops StringTable::unlink(is_alive_closure()); + // Clean up unreferenced symbols in symbol table. + SymbolTable::unlink(); assert(_marking_stack.is_empty(), "stack should be empty by now"); } @@ -634,7 +634,6 @@ void PSMarkSweep::mark_sweep_phase3() { JvmtiExport::oops_do(adjust_root_pointer_closure()); // SO_AllClasses SystemDictionary::oops_do(adjust_root_pointer_closure()); - vmSymbols::oops_do(adjust_root_pointer_closure()); //CodeCache::scavenge_root_nmethods_oops_do(adjust_root_pointer_closure()); // Now adjust pointers in remaining weak roots. (All of which should @@ -643,7 +642,6 @@ void PSMarkSweep::mark_sweep_phase3() { JNIHandles::weak_oops_do(&always_true, adjust_root_pointer_closure()); CodeCache::oops_do(adjust_pointer_closure()); - SymbolTable::oops_do(adjust_root_pointer_closure()); StringTable::oops_do(adjust_root_pointer_closure()); ref_processor()->weak_oops_do(adjust_root_pointer_closure()); PSScavenge::reference_processor()->weak_oops_do(adjust_root_pointer_closure()); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp index 87ba37e496b..2a77d277f52 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp @@ -2375,7 +2375,6 @@ void PSParallelCompact::marking_phase(ParCompactionManager* cm, q->enqueue(new MarkFromRootsTask(MarkFromRootsTask::management)); q->enqueue(new MarkFromRootsTask(MarkFromRootsTask::system_dictionary)); q->enqueue(new MarkFromRootsTask(MarkFromRootsTask::jvmti)); - q->enqueue(new MarkFromRootsTask(MarkFromRootsTask::vm_symbols)); q->enqueue(new MarkFromRootsTask(MarkFromRootsTask::code_cache)); if (parallel_gc_threads > 1) { @@ -2425,9 +2424,10 @@ void PSParallelCompact::marking_phase(ParCompactionManager* cm, // Revisit memoized MDO's and clear any unmarked weak refs follow_mdo_weak_refs(); - // Visit symbol and interned string tables and delete unmarked oops - SymbolTable::unlink(is_alive_closure()); + // Visit interned string tables and delete unmarked oops StringTable::unlink(is_alive_closure()); + // Clean up unreferenced symbols in symbol table. + SymbolTable::unlink(); assert(cm->marking_stacks_empty(), "marking stacks should be empty"); } @@ -2456,7 +2456,6 @@ void PSParallelCompact::adjust_roots() { JvmtiExport::oops_do(adjust_root_pointer_closure()); // SO_AllClasses SystemDictionary::oops_do(adjust_root_pointer_closure()); - vmSymbols::oops_do(adjust_root_pointer_closure()); // Now adjust pointers in remaining weak roots. (All of which should // have been cleared if they pointed to non-surviving objects.) @@ -2464,7 +2463,6 @@ void PSParallelCompact::adjust_roots() { JNIHandles::weak_oops_do(&always_true, adjust_root_pointer_closure()); CodeCache::oops_do(adjust_pointer_closure()); - SymbolTable::oops_do(adjust_root_pointer_closure()); StringTable::oops_do(adjust_root_pointer_closure()); ref_processor()->weak_oops_do(adjust_root_pointer_closure()); // Roots were visited so references into the young gen in roots diff --git a/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp b/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp index b2d410ad617..4e089c14cde 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp +++ b/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp @@ -116,10 +116,8 @@ class AllocationStats VALUE_OBJ_CLASS_SPEC { _demand_rate_estimate.sample(rate); float new_rate = _demand_rate_estimate.padded_average(); ssize_t old_desired = _desired; - _desired = (ssize_t)(new_rate * (inter_sweep_estimate - + CMSExtrapolateSweep - ? intra_sweep_estimate - : 0.0)); + float delta_ise = (CMSExtrapolateSweep ? intra_sweep_estimate : 0.0); + _desired = (ssize_t)(new_rate * (inter_sweep_estimate + delta_ise)); if (PrintFLSStatistics > 1) { gclog_or_tty->print_cr("demand: %d, old_rate: %f, current_rate: %f, new_rate: %f, old_desired: %d, new_desired: %d", demand, old_rate, rate, new_rate, old_desired, _desired); diff --git a/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp b/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp index 594e70abaa3..c16ec595cef 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp @@ -187,7 +187,7 @@ SurrogateLockerThread::SurrogateLockerThread() : SurrogateLockerThread* SurrogateLockerThread::make(TRAPS) { klassOop k = - SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_Thread(), + SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK_NULL); instanceKlassHandle klass (THREAD, k); instanceHandle thread_oop = klass->allocate_instance_handle(CHECK_NULL); @@ -200,8 +200,8 @@ SurrogateLockerThread* SurrogateLockerThread::make(TRAPS) { JavaValue result(T_VOID); JavaCalls::call_special(&result, thread_oop, klass, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::threadgroup_string_void_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::threadgroup_string_void_signature(), thread_group, string, CHECK_NULL); diff --git a/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp b/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp index 267f73d3b99..caa6efed1c8 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp @@ -106,8 +106,8 @@ void AdaptivePaddedNoZeroDevAverage::sample(float new_sample) { } LinearLeastSquareFit::LinearLeastSquareFit(unsigned weight) : - _sum_x(0), _sum_y(0), _sum_xy(0), - _mean_x(weight), _mean_y(weight) {} + _sum_x(0), _sum_x_squared(0), _sum_y(0), _sum_xy(0), + _intercept(0), _slope(0), _mean_x(weight), _mean_y(weight) {} void LinearLeastSquareFit::update(double x, double y) { _sum_x = _sum_x + x; diff --git a/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp b/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp index a72c715c0e3..3ddcda650dd 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp @@ -111,7 +111,7 @@ void MarkSweep::FollowRootClosure::do_oop(narrowOop* p) { follow_root(p); } MarkSweep::MarkAndPushClosure MarkSweep::mark_and_push_closure; -void MarkSweep::MarkAndPushClosure::do_oop(oop* p) { mark_and_push(p); } +void MarkSweep::MarkAndPushClosure::do_oop(oop* p) { assert(*p == NULL || (*p)->is_oop(), ""); mark_and_push(p); } void MarkSweep::MarkAndPushClosure::do_oop(narrowOop* p) { mark_and_push(p); } void MarkSweep::follow_stack() { diff --git a/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp b/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp index 73eae232dc9..2dd19992785 100644 --- a/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp +++ b/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp @@ -41,6 +41,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "interp_masm_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "interp_masm_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "interp_masm_ppc.hpp" +#endif #ifdef TARGET_OS_FAMILY_linux # include "thread_linux.inline.hpp" #endif diff --git a/hotspot/src/share/vm/interpreter/bytecode.cpp b/hotspot/src/share/vm/interpreter/bytecode.cpp index b204a4f2691..eefc72e82ba 100644 --- a/hotspot/src/share/vm/interpreter/bytecode.cpp +++ b/hotspot/src/share/vm/interpreter/bytecode.cpp @@ -124,21 +124,20 @@ void Bytecode_invoke::verify() const { } -symbolOop Bytecode_member_ref::signature() const { +Symbol* Bytecode_member_ref::signature() const { constantPoolOop constants = method()->constants(); return constants->signature_ref_at(index()); } -symbolOop Bytecode_member_ref::name() const { +Symbol* Bytecode_member_ref::name() const { constantPoolOop constants = method()->constants(); return constants->name_ref_at(index()); } -BasicType Bytecode_member_ref::result_type(Thread *thread) const { - symbolHandle sh(thread, signature()); - ResultTypeFinder rts(sh); +BasicType Bytecode_member_ref::result_type() const { + ResultTypeFinder rts(signature()); rts.iterate(); return rts.type(); } diff --git a/hotspot/src/share/vm/interpreter/bytecode.hpp b/hotspot/src/share/vm/interpreter/bytecode.hpp index 8ef4031c9f5..7fb50dffb99 100644 --- a/hotspot/src/share/vm/interpreter/bytecode.hpp +++ b/hotspot/src/share/vm/interpreter/bytecode.hpp @@ -37,6 +37,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif class ciBytecodeStream; @@ -193,10 +199,10 @@ class Bytecode_member_ref: public Bytecode { public: int index() const; // cache index (loaded from instruction) int pool_index() const; // constant pool index - symbolOop name() const; // returns the name of the method or field - symbolOop signature() const; // returns the signature of the method or field + Symbol* name() const; // returns the name of the method or field + Symbol* signature() const; // returns the signature of the method or field - BasicType result_type(Thread* thread) const; // returns the result type of the getfield or invoke + BasicType result_type() const; // returns the result type of the getfield or invoke }; // Abstraction for invoke_{virtual, static, interface, special} diff --git a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp index c214457b4f4..7b77e875b3d 100644 --- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp +++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp @@ -59,6 +59,12 @@ #ifdef TARGET_OS_ARCH_windows_x86 # include "orderAccess_windows_x86.inline.hpp" #endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "orderAccess_linux_arm.inline.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "orderAccess_linux_ppc.inline.hpp" +#endif // no precompiled headers diff --git a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp index 636a070d668..1f59ee47ceb 100644 --- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp +++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp @@ -41,6 +41,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif #ifdef CC_INTERP @@ -587,6 +593,12 @@ void print(); #ifdef TARGET_ARCH_zero # include "bytecodeInterpreter_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytecodeInterpreter_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytecodeInterpreter_ppc.hpp" +#endif }; // BytecodeInterpreter diff --git a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp index d0dcf6ce7b7..c0dc4b61b40 100644 --- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp +++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp @@ -52,6 +52,12 @@ #ifdef TARGET_ARCH_zero # include "bytecodeInterpreter_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytecodeInterpreter_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytecodeInterpreter_ppc.inline.hpp" +#endif #endif // CC_INTERP diff --git a/hotspot/src/share/vm/interpreter/bytecodeStream.hpp b/hotspot/src/share/vm/interpreter/bytecodeStream.hpp index 05e4e64d088..532a05632ad 100644 --- a/hotspot/src/share/vm/interpreter/bytecodeStream.hpp +++ b/hotspot/src/share/vm/interpreter/bytecodeStream.hpp @@ -37,6 +37,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif // A BytecodeStream is used for fast iteration over the bytecodes // of a methodOop. diff --git a/hotspot/src/share/vm/interpreter/bytecodeTracer.cpp b/hotspot/src/share/vm/interpreter/bytecodeTracer.cpp index 97f6ca47488..ff28656b3cd 100644 --- a/hotspot/src/share/vm/interpreter/bytecodeTracer.cpp +++ b/hotspot/src/share/vm/interpreter/bytecodeTracer.cpp @@ -188,7 +188,7 @@ void BytecodeTracer::trace(methodHandle method, address bcp, outputStream* st) { _closure->trace(method, bcp, st); } -void print_symbol(symbolOop sym, outputStream* st) { +void print_symbol(Symbol* sym, outputStream* st) { char buf[40]; int len = sym->utf8_length(); if (len >= (int)sizeof(buf)) { @@ -205,10 +205,9 @@ void print_oop(oop value, outputStream* st) { } else if (java_lang_String::is_instance(value)) { EXCEPTION_MARK; Handle h_value (THREAD, value); - symbolHandle sym = java_lang_String::as_symbol(h_value, CATCH); - print_symbol(sym(), st); - } else if (value->is_symbol()) { - print_symbol(symbolOop(value), st); + Symbol* sym = java_lang_String::as_symbol(h_value, CATCH); + print_symbol(sym, st); + sym->decrement_refcount(); } else { st->print_cr(" " PTR_FORMAT, (intptr_t) value); } @@ -316,7 +315,7 @@ void BytecodePrinter::print_constant(int i, outputStream* st) { } else if (tag.is_method_type()) { int i2 = constants->method_type_index_at(i); st->print(" %d", i2); - print_oop(constants->symbol_at(i2), st); + print_symbol(constants->symbol_at(i2), st); } else if (tag.is_method_handle()) { int kind = constants->method_handle_ref_kind_at(i); int i2 = constants->method_handle_index_at(i); @@ -354,11 +353,11 @@ void BytecodePrinter::print_field_or_method(int orig_i, int i, outputStream* st) return; } - symbolOop name = constants->uncached_name_ref_at(i); - symbolOop signature = constants->uncached_signature_ref_at(i); + Symbol* name = constants->uncached_name_ref_at(i); + Symbol* signature = constants->uncached_signature_ref_at(i); const char* sep = (tag.is_field() ? "/" : ""); if (has_klass) { - symbolOop klass = constants->klass_name_at(constants->uncached_klass_ref_index_at(i)); + Symbol* klass = constants->klass_name_at(constants->uncached_klass_ref_index_at(i)); st->print_cr(" %d <%s.%s%s%s> ", i, klass->as_C_string(), name->as_C_string(), sep, signature->as_C_string()); } else { if (tag.is_invoke_dynamic()) { @@ -438,7 +437,7 @@ void BytecodePrinter::print_attributes(int bci, outputStream* st) { case Bytecodes::_anewarray: { int klass_index = get_index_u2(); constantPoolOop constants = method()->constants(); - symbolOop name = constants->klass_name_at(klass_index); + Symbol* name = constants->klass_name_at(klass_index); st->print_cr(" %s ", name->as_C_string()); } break; @@ -446,7 +445,7 @@ void BytecodePrinter::print_attributes(int bci, outputStream* st) { int klass_index = get_index_u2(); int nof_dims = get_index_u1(); constantPoolOop constants = method()->constants(); - symbolOop name = constants->klass_name_at(klass_index); + Symbol* name = constants->klass_name_at(klass_index); st->print_cr(" %s %d", name->as_C_string(), nof_dims); } break; @@ -552,7 +551,7 @@ void BytecodePrinter::print_attributes(int bci, outputStream* st) { case Bytecodes::_instanceof: { int i = get_index_u2(); constantPoolOop constants = method()->constants(); - symbolOop name = constants->klass_name_at(i); + Symbol* name = constants->klass_name_at(i); st->print_cr(" %d <%s>", i, name->as_C_string()); } break; diff --git a/hotspot/src/share/vm/interpreter/bytecodes.cpp b/hotspot/src/share/vm/interpreter/bytecodes.cpp index 45c42bb592e..5e4b9dcee2a 100644 --- a/hotspot/src/share/vm/interpreter/bytecodes.cpp +++ b/hotspot/src/share/vm/interpreter/bytecodes.cpp @@ -35,6 +35,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif #if defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER < 1600)) diff --git a/hotspot/src/share/vm/interpreter/bytecodes.hpp b/hotspot/src/share/vm/interpreter/bytecodes.hpp index 29313cd44b6..6194ad62134 100644 --- a/hotspot/src/share/vm/interpreter/bytecodes.hpp +++ b/hotspot/src/share/vm/interpreter/bytecodes.hpp @@ -293,6 +293,12 @@ class Bytecodes: AllStatic { #endif #ifdef TARGET_ARCH_zero # include "bytecodes_zero.hpp" +#endif +#ifdef TARGET_ARCH_arm +# include "bytecodes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytecodes_ppc.hpp" #endif diff --git a/hotspot/src/share/vm/interpreter/cppInterpreter.hpp b/hotspot/src/share/vm/interpreter/cppInterpreter.hpp index c428634ecac..45d7921c07f 100644 --- a/hotspot/src/share/vm/interpreter/cppInterpreter.hpp +++ b/hotspot/src/share/vm/interpreter/cppInterpreter.hpp @@ -90,6 +90,12 @@ class CppInterpreter: public AbstractInterpreter { #ifdef TARGET_ARCH_zero # include "cppInterpreter_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "cppInterpreter_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "cppInterpreter_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp b/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp index fa0b785c3c5..b324f953e30 100644 --- a/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp +++ b/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp @@ -53,6 +53,12 @@ class CppInterpreterGenerator: public AbstractInterpreterGenerator { #ifdef TARGET_ARCH_zero # include "cppInterpreterGenerator_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "cppInterpreterGenerator_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "cppInterpreterGenerator_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/interpreter/interpreter.cpp b/hotspot/src/share/vm/interpreter/interpreter.cpp index 3edcc6cd9d8..04a9d68f486 100644 --- a/hotspot/src/share/vm/interpreter/interpreter.cpp +++ b/hotspot/src/share/vm/interpreter/interpreter.cpp @@ -302,7 +302,7 @@ address AbstractInterpreter::deopt_continue_after_entry(methodOop method, addres Thread *thread = Thread::current(); ResourceMark rm(thread); methodHandle mh(thread, method); - type = Bytecode_invoke(mh, bci).result_type(thread); + type = Bytecode_invoke(mh, bci).result_type(); // since the cache entry might not be initialized: // (NOT needed for the old calling convension) if (!is_top_frame) { @@ -316,7 +316,7 @@ address AbstractInterpreter::deopt_continue_after_entry(methodOop method, addres Thread *thread = Thread::current(); ResourceMark rm(thread); methodHandle mh(thread, method); - type = Bytecode_invoke(mh, bci).result_type(thread); + type = Bytecode_invoke(mh, bci).result_type(); // since the cache entry might not be initialized: // (NOT needed for the old calling convension) if (!is_top_frame) { diff --git a/hotspot/src/share/vm/interpreter/interpreter.hpp b/hotspot/src/share/vm/interpreter/interpreter.hpp index 9de4afa6ade..698a2edcd8f 100644 --- a/hotspot/src/share/vm/interpreter/interpreter.hpp +++ b/hotspot/src/share/vm/interpreter/interpreter.hpp @@ -152,6 +152,12 @@ class Interpreter: public CC_INTERP_ONLY(CppInterpreter) NOT_CC_INTERP(TemplateI #ifdef TARGET_ARCH_zero # include "interpreter_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "interpreter_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "interpreter_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp b/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp index 1030248f4ec..1a228e20795 100644 --- a/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp +++ b/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp @@ -50,6 +50,12 @@ InterpreterGenerator(StubQueue* _code); #ifdef TARGET_ARCH_zero # include "interpreterGenerator_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "interpreterGenerator_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "interpreterGenerator_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp index 80947a00ab5..a5e92ee13c8 100644 --- a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp +++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp @@ -39,7 +39,7 @@ #include "oops/methodDataOop.hpp" #include "oops/objArrayKlass.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "prims/jvmtiExport.hpp" #include "prims/nativeLookup.hpp" #include "runtime/biasedLocking.hpp" @@ -65,6 +65,12 @@ #ifdef TARGET_ARCH_zero # include "vm_version_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "vm_version_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vm_version_ppc.hpp" +#endif #ifdef COMPILER2 #include "opto/runtime.hpp" #endif @@ -295,7 +301,7 @@ IRT_END IRT_ENTRY(void, InterpreterRuntime::create_exception(JavaThread* thread, char* name, char* message)) // lookup exception klass - symbolHandle s = oopFactory::new_symbol_handle(name, CHECK); + TempNewSymbol s = SymbolTable::new_symbol(name, CHECK); if (ProfileTraps) { if (s == vmSymbols::java_lang_ArithmeticException()) { note_trap(thread, Deoptimization::Reason_div0_check, CHECK); @@ -304,7 +310,7 @@ IRT_ENTRY(void, InterpreterRuntime::create_exception(JavaThread* thread, char* n } } // create exception - Handle exception = Exceptions::new_exception(thread, s(), message); + Handle exception = Exceptions::new_exception(thread, s, message); thread->set_vm_result(exception()); IRT_END @@ -313,12 +319,12 @@ IRT_ENTRY(void, InterpreterRuntime::create_klass_exception(JavaThread* thread, c ResourceMark rm(thread); const char* klass_name = Klass::cast(obj->klass())->external_name(); // lookup exception klass - symbolHandle s = oopFactory::new_symbol_handle(name, CHECK); + TempNewSymbol s = SymbolTable::new_symbol(name, CHECK); if (ProfileTraps) { note_trap(thread, Deoptimization::Reason_class_check, CHECK); } // create exception, with klass name as detail message - Handle exception = Exceptions::new_exception(thread, s(), klass_name); + Handle exception = Exceptions::new_exception(thread, s, klass_name); thread->set_vm_result(exception()); IRT_END @@ -326,13 +332,13 @@ IRT_END IRT_ENTRY(void, InterpreterRuntime::throw_ArrayIndexOutOfBoundsException(JavaThread* thread, char* name, jint index)) char message[jintAsStringSize]; // lookup exception klass - symbolHandle s = oopFactory::new_symbol_handle(name, CHECK); + TempNewSymbol s = SymbolTable::new_symbol(name, CHECK); if (ProfileTraps) { note_trap(thread, Deoptimization::Reason_range_check, CHECK); } // create exception sprintf(message, "%d", index); - THROW_MSG(s(), message); + THROW_MSG(s, message); IRT_END IRT_ENTRY(void, InterpreterRuntime::throw_ClassCastException( @@ -673,7 +679,7 @@ IRT_ENTRY(void, InterpreterRuntime::resolve_invoke(JavaThread* thread, Bytecodes ResourceMark rm(thread); methodHandle m (thread, method(thread)); Bytecode_invoke call(m, bci(thread)); - symbolHandle signature (thread, call.signature()); + Symbol* signature = call.signature(); receiver = Handle(thread, thread->last_frame().interpreter_callee_receiver(signature)); assert(Universe::heap()->is_in_reserved_or_null(receiver()), @@ -797,7 +803,7 @@ IRT_ENTRY(void, InterpreterRuntime::resolve_invokedynamic(JavaThread* thread)) { if (!pool->cache()->secondary_entry_at(site_index)->is_f1_null()) return; - symbolHandle call_site_name(THREAD, pool->name_ref_at(site_index)); + Symbol* call_site_name = pool->name_ref_at(site_index); Handle call_site = SystemDictionary::make_dynamic_call_site(bootm, @@ -1178,9 +1184,7 @@ void SignatureHandlerLibrary::add(methodHandle method) { handler_index = _fingerprints->length() - 1; } } - } else { - CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops()); - } + // Set handler under SignatureHandlerLibrary_lock if (handler_index < 0) { // use generic signature handler method->set_signature_handler(Interpreter::slow_signature_handler()); @@ -1188,21 +1192,29 @@ void SignatureHandlerLibrary::add(methodHandle method) { // set handler method->set_signature_handler(_handlers->at(handler_index)); } + } else { + CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops()); + // use generic signature handler + method->set_signature_handler(Interpreter::slow_signature_handler()); + } } #ifdef ASSERT - int handler_index, fingerprint_index; + int handler_index = -1; + int fingerprint_index = -2; { // '_handlers' and '_fingerprints' are 'GrowableArray's and are NOT synchronized // in any way if accessed from multiple threads. To avoid races with another // thread which may change the arrays in the above, mutex protected block, we // have to protect this read access here with the same mutex as well! MutexLocker mu(SignatureHandlerLibrary_lock); + if (_handlers != NULL) { handler_index = _handlers->find(method->signature_handler()); fingerprint_index = _fingerprints->find(Fingerprinter(method).fingerprint()); } + } assert(method->signature_handler() == Interpreter::slow_signature_handler() || handler_index == fingerprint_index, "sanity check"); -#endif +#endif // ASSERT } diff --git a/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp b/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp index 84b3910224b..caa9068af33 100644 --- a/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp +++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp @@ -156,6 +156,12 @@ class InterpreterRuntime: AllStatic { #endif #ifdef TARGET_ARCH_zero # include "interpreterRT_zero.hpp" +#endif +#ifdef TARGET_ARCH_arm +# include "interpreterRT_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "interpreterRT_ppc.hpp" #endif diff --git a/hotspot/src/share/vm/interpreter/linkResolver.cpp b/hotspot/src/share/vm/interpreter/linkResolver.cpp index 2dd2a94c0cf..71f2c7598f6 100644 --- a/hotspot/src/share/vm/interpreter/linkResolver.cpp +++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp @@ -56,7 +56,7 @@ //------------------------------------------------------------------------------------------------------------------------ // Implementation of FieldAccessInfo -void FieldAccessInfo::set(KlassHandle klass, symbolHandle name, int field_index, int field_offset, +void FieldAccessInfo::set(KlassHandle klass, Symbol* name, int field_index, int field_offset, BasicType field_type, AccessFlags access_flags) { _klass = klass; _name = name; @@ -148,7 +148,7 @@ void LinkResolver::check_klass_accessability(KlassHandle ref_klass, KlassHandle ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_IllegalAccessError(), + vmSymbols::java_lang_IllegalAccessError(), "tried to access class %s from class %s", sel_klass->external_name(), ref_klass->external_name() @@ -174,8 +174,8 @@ void LinkResolver::resolve_klass_no_update(KlassHandle& result, constantPoolHand // // According to JVM spec. $5.4.3c & $5.4.3d -void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS) { - methodOop result_oop = klass->uncached_lookup_method(name(), signature()); +void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { + methodOop result_oop = klass->uncached_lookup_method(name, signature); if (EnableMethodHandles && result_oop != NULL) { switch (result_oop->intrinsic_id()) { case vmIntrinsics::_invokeExact: @@ -189,39 +189,39 @@ void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle kl } // returns first instance method -void LinkResolver::lookup_instance_method_in_klasses(methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS) { - methodOop result_oop = klass->uncached_lookup_method(name(), signature()); +void LinkResolver::lookup_instance_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { + methodOop result_oop = klass->uncached_lookup_method(name, signature); result = methodHandle(THREAD, result_oop); while (!result.is_null() && result->is_static()) { klass = KlassHandle(THREAD, Klass::cast(result->method_holder())->super()); - result = methodHandle(THREAD, klass->uncached_lookup_method(name(), signature())); + result = methodHandle(THREAD, klass->uncached_lookup_method(name, signature)); } } -int LinkResolver::vtable_index_of_miranda_method(KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS) { +int LinkResolver::vtable_index_of_miranda_method(KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { ResourceMark rm(THREAD); klassVtable *vt = instanceKlass::cast(klass())->vtable(); - return vt->index_of_miranda(name(), signature()); + return vt->index_of_miranda(name, signature); } -void LinkResolver::lookup_method_in_interfaces(methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS) { +void LinkResolver::lookup_method_in_interfaces(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { instanceKlass *ik = instanceKlass::cast(klass()); - result = methodHandle(THREAD, ik->lookup_method_in_all_interfaces(name(), signature())); + result = methodHandle(THREAD, ik->lookup_method_in_all_interfaces(name, signature)); } void LinkResolver::lookup_implicit_method(methodHandle& result, - KlassHandle klass, symbolHandle name, symbolHandle signature, + KlassHandle klass, Symbol* name, Symbol* signature, KlassHandle current_klass, TRAPS) { if (EnableMethodHandles && klass() == SystemDictionary::MethodHandle_klass() && - methodOopDesc::is_method_handle_invoke_name(name())) { + methodOopDesc::is_method_handle_invoke_name(name)) { if (!MethodHandles::enabled()) { // Make sure the Java part of the runtime has been booted up. klassOop natives = SystemDictionary::MethodHandleNatives_klass(); if (natives == NULL || instanceKlass::cast(natives)->is_not_initialized()) { - SystemDictionary::resolve_or_fail(vmSymbolHandles::sun_dyn_MethodHandleNatives(), + SystemDictionary::resolve_or_fail(vmSymbols::sun_dyn_MethodHandleNatives(), Handle(), Handle(), true, @@ -233,7 +233,7 @@ void LinkResolver::lookup_implicit_method(methodHandle& result, current_klass, CHECK); if (result_oop != NULL) { - assert(result_oop->is_method_handle_invoke() && result_oop->signature() == signature(), "consistent"); + assert(result_oop->is_method_handle_invoke() && result_oop->signature() == signature, "consistent"); result = methodHandle(THREAD, result_oop); } } @@ -273,7 +273,7 @@ void LinkResolver::check_method_accessability(KlassHandle ref_klass, ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_IllegalAccessError(), + vmSymbols::java_lang_IllegalAccessError(), "tried to access method %s.%s%s from class %s", sel_klass->external_name(), sel_method->name()->as_C_string(), @@ -290,8 +290,8 @@ void LinkResolver::resolve_method(methodHandle& resolved_method, KlassHandle& re // resolve klass resolve_klass(resolved_klass, pool, index, CHECK); - symbolHandle method_name (THREAD, pool->name_ref_at(index)); - symbolHandle method_signature (THREAD, pool->signature_ref_at(index)); + Symbol* method_name = pool->name_ref_at(index); + Symbol* method_signature = pool->signature_ref_at(index); KlassHandle current_klass(THREAD, pool->pool_holder()); resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, CHECK); @@ -301,9 +301,9 @@ void LinkResolver::resolve_dynamic_method(methodHandle& resolved_method, KlassHa // The class is java.dyn.MethodHandle resolved_klass = SystemDictionaryHandles::MethodHandle_klass(); - symbolHandle method_name = vmSymbolHandles::invokeExact_name(); + Symbol* method_name = vmSymbols::invokeExact_name(); - symbolHandle method_signature(THREAD, pool->signature_ref_at(index)); + Symbol* method_signature = pool->signature_ref_at(index); KlassHandle current_klass (THREAD, pool->pool_holder()); resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, CHECK); @@ -313,8 +313,8 @@ void LinkResolver::resolve_interface_method(methodHandle& resolved_method, Klass // resolve klass resolve_klass(resolved_klass, pool, index, CHECK); - symbolHandle method_name (THREAD, pool->name_ref_at(index)); - symbolHandle method_signature (THREAD, pool->signature_ref_at(index)); + Symbol* method_name = pool->name_ref_at(index); + Symbol* method_signature = pool->signature_ref_at(index); KlassHandle current_klass(THREAD, pool->pool_holder()); resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, CHECK); @@ -322,7 +322,7 @@ void LinkResolver::resolve_interface_method(methodHandle& resolved_method, Klass void LinkResolver::resolve_method(methodHandle& resolved_method, KlassHandle resolved_klass, - symbolHandle method_name, symbolHandle method_signature, + Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS) { // 1. check if klass is not interface @@ -349,8 +349,8 @@ void LinkResolver::resolve_method(methodHandle& resolved_method, KlassHandle res ResourceMark rm(THREAD); THROW_MSG(vmSymbols::java_lang_NoSuchMethodError(), methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()), - method_name(), - method_signature())); + method_name, + method_signature)); } } @@ -359,8 +359,8 @@ void LinkResolver::resolve_method(methodHandle& resolved_method, KlassHandle res ResourceMark rm(THREAD); THROW_MSG(vmSymbols::java_lang_AbstractMethodError(), methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()), - method_name(), - method_signature())); + method_name, + method_signature)); } // 6. access checks, access checking may be turned off when calling from within the VM. @@ -387,7 +387,7 @@ void LinkResolver::resolve_method(methodHandle& resolved_method, KlassHandle res " \"%s\" the class loader (instance of %s) of the current class, %s," " and the class loader (instance of %s) for resolved class, %s, have" " different Class objects for the type %s used in the signature"; - char* sig = methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),method_name(),method_signature()); + char* sig = methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),method_name,method_signature); const char* loader1 = SystemDictionary::loader_name(loader()); char* current = instanceKlass::cast(current_klass())->name()->as_C_string(); const char* loader2 = SystemDictionary::loader_name(class_loader()); @@ -406,8 +406,8 @@ void LinkResolver::resolve_method(methodHandle& resolved_method, KlassHandle res void LinkResolver::resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, - symbolHandle method_name, - symbolHandle method_signature, + Symbol* method_name, + Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS) { @@ -429,8 +429,8 @@ void LinkResolver::resolve_interface_method(methodHandle& resolved_method, ResourceMark rm(THREAD); THROW_MSG(vmSymbols::java_lang_NoSuchMethodError(), methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()), - method_name(), - method_signature())); + method_name, + method_signature)); } } @@ -449,7 +449,7 @@ void LinkResolver::resolve_interface_method(methodHandle& resolved_method, "current class, %s, and the class loader (instance of %s) for " "resolved class, %s, have different Class objects for the type %s " "used in the signature"; - char* sig = methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),method_name(),method_signature()); + char* sig = methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),method_name,method_signature); const char* loader1 = SystemDictionary::loader_name(loader()); char* current = instanceKlass::cast(current_klass())->name()->as_C_string(); const char* loader2 = SystemDictionary::loader_name(class_loader()); @@ -482,7 +482,7 @@ void LinkResolver::check_field_accessability(KlassHandle ref_klass, ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_IllegalAccessError(), + vmSymbols::java_lang_IllegalAccessError(), "tried to access field %s.%s from class %s", sel_klass->external_name(), fd.name()->as_C_string(), @@ -511,9 +511,8 @@ void LinkResolver::resolve_field(FieldAccessInfo& result, constantPoolHandle poo resolve_klass_no_update(resolved_klass, pool, index, CHECK); } // Load these early in case the resolve of the containing klass fails - symbolOop field = pool->name_ref_at(index); - symbolHandle field_h (THREAD, field); // preserve in case we need the name - symbolOop sig = pool->signature_ref_at(index); + Symbol* field = pool->name_ref_at(index); + Symbol* sig = pool->signature_ref_at(index); // Check if there's a resolved klass containing the field if( resolved_klass.is_null() ) { ResourceMark rm(THREAD); @@ -559,7 +558,7 @@ void LinkResolver::resolve_field(FieldAccessInfo& result, constantPoolHandle poo HandleMark hm(THREAD); Handle ref_loader (THREAD, instanceKlass::cast(ref_klass())->class_loader()); Handle sel_loader (THREAD, instanceKlass::cast(sel_klass())->class_loader()); - symbolHandle signature_ref (THREAD, pool->signature_ref_at(index)); + Symbol* signature_ref = pool->signature_ref_at(index); { ResourceMark rm(THREAD); char* failed_type_name = @@ -572,7 +571,7 @@ void LinkResolver::resolve_field(FieldAccessInfo& result, constantPoolHandle poo " \"%s\" the class loader (instance of %s) of the referring class, " "%s, and the class loader (instance of %s) for the field's resolved " "type, %s, have different Class objects for that type"; - char* field_name = field_h()->as_C_string(); + char* field_name = field->as_C_string(); const char* loader1 = SystemDictionary::loader_name(ref_loader()); char* sel = instanceKlass::cast(sel_klass())->name()->as_C_string(); const char* loader2 = SystemDictionary::loader_name(sel_loader()); @@ -589,7 +588,7 @@ void LinkResolver::resolve_field(FieldAccessInfo& result, constantPoolHandle poo // return information. note that the klass is set to the actual klass containing the // field, otherwise access of static fields in superclasses will not work. KlassHandle holder (THREAD, fd.field_holder()); - symbolHandle name (THREAD, fd.name()); + Symbol* name = fd.name(); result.set(holder, name, fd.index(), fd.offset(), fd.field_type(), fd.access_flags()); } @@ -605,8 +604,8 @@ void LinkResolver::resolve_field(FieldAccessInfo& result, constantPoolHandle poo // recv_klass the receiver klass -void LinkResolver::resolve_static_call(CallInfo& result, KlassHandle& resolved_klass, symbolHandle method_name, - symbolHandle method_signature, KlassHandle current_klass, +void LinkResolver::resolve_static_call(CallInfo& result, KlassHandle& resolved_klass, Symbol* method_name, + Symbol* method_signature, KlassHandle current_klass, bool check_access, bool initialize_class, TRAPS) { methodHandle resolved_method; linktime_resolve_static_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); @@ -624,7 +623,7 @@ void LinkResolver::resolve_static_call(CallInfo& result, KlassHandle& resolved_k // throws linktime exceptions void LinkResolver::linktime_resolve_static_method(methodHandle& resolved_method, KlassHandle resolved_klass, - symbolHandle method_name, symbolHandle method_signature, + Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS) { resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); @@ -641,8 +640,8 @@ void LinkResolver::linktime_resolve_static_method(methodHandle& resolved_method, } -void LinkResolver::resolve_special_call(CallInfo& result, KlassHandle resolved_klass, symbolHandle method_name, - symbolHandle method_signature, KlassHandle current_klass, bool check_access, TRAPS) { +void LinkResolver::resolve_special_call(CallInfo& result, KlassHandle resolved_klass, Symbol* method_name, + Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS) { methodHandle resolved_method; linktime_resolve_special_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); runtime_resolve_special_method(result, resolved_method, resolved_klass, current_klass, check_access, CHECK); @@ -650,7 +649,7 @@ void LinkResolver::resolve_special_call(CallInfo& result, KlassHandle resolved_k // throws linktime exceptions void LinkResolver::linktime_resolve_special_method(methodHandle& resolved_method, KlassHandle resolved_klass, - symbolHandle method_name, symbolHandle method_signature, + Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS) { resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); @@ -661,7 +660,7 @@ void LinkResolver::linktime_resolve_special_method(methodHandle& resolved_method ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_NoSuchMethodError(), + vmSymbols::java_lang_NoSuchMethodError(), "%s: method %s%s not found", resolved_klass->external_name(), resolved_method->name()->as_C_string(), @@ -703,8 +702,8 @@ void LinkResolver::runtime_resolve_special_method(CallInfo& result, methodHandle // Lookup super method KlassHandle super_klass(THREAD, current_klass->super()); lookup_instance_method_in_klasses(sel_method, super_klass, - symbolHandle(THREAD, resolved_method->name()), - symbolHandle(THREAD, resolved_method->signature()), CHECK); + resolved_method->name(), + resolved_method->signature(), CHECK); // check if found if (sel_method.is_null()) { ResourceMark rm(THREAD); @@ -739,7 +738,7 @@ void LinkResolver::runtime_resolve_special_method(CallInfo& result, methodHandle } void LinkResolver::resolve_virtual_call(CallInfo& result, Handle recv, KlassHandle receiver_klass, KlassHandle resolved_klass, - symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, + Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, bool check_null_and_abstract, TRAPS) { methodHandle resolved_method; linktime_resolve_virtual_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); @@ -748,7 +747,7 @@ void LinkResolver::resolve_virtual_call(CallInfo& result, Handle recv, KlassHand // throws linktime exceptions void LinkResolver::linktime_resolve_virtual_method(methodHandle &resolved_method, KlassHandle resolved_klass, - symbolHandle method_name, symbolHandle method_signature, + Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS) { // normal method resolution resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); @@ -798,8 +797,8 @@ void LinkResolver::runtime_resolve_virtual_method(CallInfo& result, // do lookup based on receiver klass using the vtable index if (resolved_method->method_holder()->klass_part()->is_interface()) { // miranda method vtable_index = vtable_index_of_miranda_method(resolved_klass, - symbolHandle(THREAD, resolved_method->name()), - symbolHandle(THREAD, resolved_method->signature()), CHECK); + resolved_method->name(), + resolved_method->signature(), CHECK); assert(vtable_index >= 0 , "we should have valid vtable index at this point"); instanceKlass* inst = instanceKlass::cast(recv_klass()); @@ -847,7 +846,7 @@ void LinkResolver::runtime_resolve_virtual_method(CallInfo& result, } void LinkResolver::resolve_interface_call(CallInfo& result, Handle recv, KlassHandle recv_klass, KlassHandle resolved_klass, - symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, + Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, bool check_null_and_abstract, TRAPS) { methodHandle resolved_method; linktime_resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); @@ -855,8 +854,8 @@ void LinkResolver::resolve_interface_call(CallInfo& result, Handle recv, KlassHa } // throws linktime exceptions -void LinkResolver::linktime_resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, symbolHandle method_name, - symbolHandle method_signature, KlassHandle current_klass, bool check_access, TRAPS) { +void LinkResolver::linktime_resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, + Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS) { // normal interface method resolution resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); @@ -883,8 +882,8 @@ void LinkResolver::runtime_resolve_interface_method(CallInfo& result, methodHand // do lookup based on receiver klass methodHandle sel_method; lookup_instance_method_in_klasses(sel_method, recv_klass, - symbolHandle(THREAD, resolved_method->name()), - symbolHandle(THREAD, resolved_method->signature()), CHECK); + resolved_method->name(), + resolved_method->signature(), CHECK); // check if method exists if (sel_method.is_null()) { ResourceMark rm(THREAD); @@ -916,8 +915,8 @@ void LinkResolver::runtime_resolve_interface_method(CallInfo& result, methodHand methodHandle LinkResolver::linktime_resolve_interface_method_or_null( KlassHandle resolved_klass, - symbolHandle method_name, - symbolHandle method_signature, + Symbol* method_name, + Symbol* method_signature, KlassHandle current_klass, bool check_access) { EXCEPTION_MARK; @@ -933,8 +932,8 @@ methodHandle LinkResolver::linktime_resolve_interface_method_or_null( methodHandle LinkResolver::linktime_resolve_virtual_method_or_null( KlassHandle resolved_klass, - symbolHandle method_name, - symbolHandle method_signature, + Symbol* method_name, + Symbol* method_signature, KlassHandle current_klass, bool check_access) { EXCEPTION_MARK; @@ -951,8 +950,8 @@ methodHandle LinkResolver::linktime_resolve_virtual_method_or_null( methodHandle LinkResolver::resolve_virtual_call_or_null( KlassHandle receiver_klass, KlassHandle resolved_klass, - symbolHandle name, - symbolHandle signature, + Symbol* name, + Symbol* signature, KlassHandle current_klass) { EXCEPTION_MARK; CallInfo info; @@ -967,8 +966,8 @@ methodHandle LinkResolver::resolve_virtual_call_or_null( methodHandle LinkResolver::resolve_interface_call_or_null( KlassHandle receiver_klass, KlassHandle resolved_klass, - symbolHandle name, - symbolHandle signature, + Symbol* name, + Symbol* signature, KlassHandle current_klass) { EXCEPTION_MARK; CallInfo info; @@ -983,8 +982,8 @@ methodHandle LinkResolver::resolve_interface_call_or_null( int LinkResolver::resolve_virtual_vtable_index( KlassHandle receiver_klass, KlassHandle resolved_klass, - symbolHandle name, - symbolHandle signature, + Symbol* name, + Symbol* signature, KlassHandle current_klass) { EXCEPTION_MARK; CallInfo info; @@ -998,8 +997,8 @@ int LinkResolver::resolve_virtual_vtable_index( methodHandle LinkResolver::resolve_static_call_or_null( KlassHandle resolved_klass, - symbolHandle name, - symbolHandle signature, + Symbol* name, + Symbol* signature, KlassHandle current_klass) { EXCEPTION_MARK; CallInfo info; @@ -1011,7 +1010,7 @@ methodHandle LinkResolver::resolve_static_call_or_null( return info.selected_method(); } -methodHandle LinkResolver::resolve_special_call_or_null(KlassHandle resolved_klass, symbolHandle name, symbolHandle signature, +methodHandle LinkResolver::resolve_special_call_or_null(KlassHandle resolved_klass, Symbol* name, Symbol* signature, KlassHandle current_klass) { EXCEPTION_MARK; CallInfo info; @@ -1039,22 +1038,22 @@ void LinkResolver::resolve_invoke(CallInfo& result, Handle recv, constantPoolHan return; } -void LinkResolver::resolve_pool(KlassHandle& resolved_klass, symbolHandle& method_name, symbolHandle& method_signature, +void LinkResolver::resolve_pool(KlassHandle& resolved_klass, Symbol*& method_name, Symbol*& method_signature, KlassHandle& current_klass, constantPoolHandle pool, int index, TRAPS) { // resolve klass resolve_klass(resolved_klass, pool, index, CHECK); // Get name, signature, and static klass - method_name = symbolHandle(THREAD, pool->name_ref_at(index)); - method_signature = symbolHandle(THREAD, pool->signature_ref_at(index)); + method_name = pool->name_ref_at(index); + method_signature = pool->signature_ref_at(index); current_klass = KlassHandle(THREAD, pool->pool_holder()); } void LinkResolver::resolve_invokestatic(CallInfo& result, constantPoolHandle pool, int index, TRAPS) { KlassHandle resolved_klass; - symbolHandle method_name; - symbolHandle method_signature; + Symbol* method_name = NULL; + Symbol* method_signature = NULL; KlassHandle current_klass; resolve_pool(resolved_klass, method_name, method_signature, current_klass, pool, index, CHECK); resolve_static_call(result, resolved_klass, method_name, method_signature, current_klass, true, true, CHECK); @@ -1063,8 +1062,8 @@ void LinkResolver::resolve_invokestatic(CallInfo& result, constantPoolHandle poo void LinkResolver::resolve_invokespecial(CallInfo& result, constantPoolHandle pool, int index, TRAPS) { KlassHandle resolved_klass; - symbolHandle method_name; - symbolHandle method_signature; + Symbol* method_name = NULL; + Symbol* method_signature = NULL; KlassHandle current_klass; resolve_pool(resolved_klass, method_name, method_signature, current_klass, pool, index, CHECK); resolve_special_call(result, resolved_klass, method_name, method_signature, current_klass, true, CHECK); @@ -1076,8 +1075,8 @@ void LinkResolver::resolve_invokevirtual(CallInfo& result, Handle recv, TRAPS) { KlassHandle resolved_klass; - symbolHandle method_name; - symbolHandle method_signature; + Symbol* method_name = NULL; + Symbol* method_signature = NULL; KlassHandle current_klass; resolve_pool(resolved_klass, method_name, method_signature, current_klass, pool, index, CHECK); KlassHandle recvrKlass (THREAD, recv.is_null() ? (klassOop)NULL : recv->klass()); @@ -1087,8 +1086,8 @@ void LinkResolver::resolve_invokevirtual(CallInfo& result, Handle recv, void LinkResolver::resolve_invokeinterface(CallInfo& result, Handle recv, constantPoolHandle pool, int index, TRAPS) { KlassHandle resolved_klass; - symbolHandle method_name; - symbolHandle method_signature; + Symbol* method_name = NULL; + Symbol* method_signature = NULL; KlassHandle current_klass; resolve_pool(resolved_klass, method_name, method_signature, current_klass, pool, index, CHECK); KlassHandle recvrKlass (THREAD, recv.is_null() ? (klassOop)NULL : recv->klass()); @@ -1102,8 +1101,8 @@ void LinkResolver::resolve_invokedynamic(CallInfo& result, constantPoolHandle po // This guy is reached from InterpreterRuntime::resolve_invokedynamic. // At this point, we only need the signature, and can ignore the name. - symbolHandle method_signature(THREAD, pool->signature_ref_at(raw_index)); // raw_index works directly - symbolHandle method_name = vmSymbolHandles::invokeExact_name(); + Symbol* method_signature = pool->signature_ref_at(raw_index); // raw_index works directly + Symbol* method_name = vmSymbols::invokeExact_name(); KlassHandle resolved_klass = SystemDictionaryHandles::MethodHandle_klass(); // JSR 292: this must be an implicitly generated method MethodHandle.invokeExact(*...) diff --git a/hotspot/src/share/vm/interpreter/linkResolver.hpp b/hotspot/src/share/vm/interpreter/linkResolver.hpp index ea1b5b6b5b5..9d2bd57965d 100644 --- a/hotspot/src/share/vm/interpreter/linkResolver.hpp +++ b/hotspot/src/share/vm/interpreter/linkResolver.hpp @@ -45,17 +45,17 @@ class LinkInfo VALUE_OBJ_CLASS_SPEC { class FieldAccessInfo: public LinkInfo { protected: KlassHandle _klass; - symbolHandle _name; + Symbol* _name; AccessFlags _access_flags; int _field_index; // original index in the klass int _field_offset; BasicType _field_type; public: - void set(KlassHandle klass, symbolHandle name, int field_index, int field_offset, + void set(KlassHandle klass, Symbol* name, int field_index, int field_offset, BasicType field_type, AccessFlags access_flags); KlassHandle klass() const { return _klass; } - symbolHandle name() const { return _name; } + Symbol* name() const { return _name; } int field_index() const { return _field_index; } int field_offset() const { return _field_offset; } BasicType field_type() const { return _field_type; } @@ -107,26 +107,26 @@ class CallInfo: public LinkInfo { class LinkResolver: AllStatic { private: - static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); - static void lookup_instance_method_in_klasses (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); - static void lookup_method_in_interfaces (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); - static void lookup_implicit_method (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, + static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); + static void lookup_instance_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); + static void lookup_method_in_interfaces (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); + static void lookup_implicit_method (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, KlassHandle current_klass, TRAPS); - static int vtable_index_of_miranda_method(KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); + static int vtable_index_of_miranda_method(KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); static void resolve_klass (KlassHandle& result, constantPoolHandle pool, int index, TRAPS); static void resolve_klass_no_update (KlassHandle& result, constantPoolHandle pool, int index, TRAPS); // no update of constantPool entry - static void resolve_pool (KlassHandle& resolved_klass, symbolHandle& method_name, symbolHandle& method_signature, KlassHandle& current_klass, constantPoolHandle pool, int index, TRAPS); + static void resolve_pool (KlassHandle& resolved_klass, Symbol*& method_name, Symbol*& method_signature, KlassHandle& current_klass, constantPoolHandle pool, int index, TRAPS); - static void resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access, TRAPS); - static void resolve_method (methodHandle& resolved_method, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access, TRAPS); + static void resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS); + static void resolve_method (methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS); - static void linktime_resolve_static_method (methodHandle& resolved_method, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access, TRAPS); - static void linktime_resolve_special_method (methodHandle& resolved_method, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access, TRAPS); - static void linktime_resolve_virtual_method (methodHandle &resolved_method, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature,KlassHandle current_klass, bool check_access, TRAPS); - static void linktime_resolve_interface_method (methodHandle& resolved_method, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access, TRAPS); + static void linktime_resolve_static_method (methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS); + static void linktime_resolve_special_method (methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS); + static void linktime_resolve_virtual_method (methodHandle &resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature,KlassHandle current_klass, bool check_access, TRAPS); + static void linktime_resolve_interface_method (methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS); static void runtime_resolve_special_method (CallInfo& result, methodHandle resolved_method, KlassHandle resolved_klass, KlassHandle current_klass, bool check_access, TRAPS); static void runtime_resolve_virtual_method (CallInfo& result, methodHandle resolved_method, KlassHandle resolved_klass, Handle recv, KlassHandle recv_klass, bool check_null_and_abstract, TRAPS); @@ -152,24 +152,24 @@ class LinkResolver: AllStatic { // runtime resolving: // resolved_klass = specified class (i.e., static receiver class) // current_klass = sending method holder (i.e., class containing the method containing the call being resolved) - static void resolve_static_call (CallInfo& result, KlassHandle& resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access, bool initialize_klass, TRAPS); - static void resolve_special_call (CallInfo& result, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access, TRAPS); - static void resolve_virtual_call (CallInfo& result, Handle recv, KlassHandle recv_klass, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access, bool check_null_and_abstract, TRAPS); - static void resolve_interface_call(CallInfo& result, Handle recv, KlassHandle recv_klass, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access, bool check_null_and_abstract, TRAPS); + static void resolve_static_call (CallInfo& result, KlassHandle& resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, bool initialize_klass, TRAPS); + static void resolve_special_call (CallInfo& result, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS); + static void resolve_virtual_call (CallInfo& result, Handle recv, KlassHandle recv_klass, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, bool check_null_and_abstract, TRAPS); + static void resolve_interface_call(CallInfo& result, Handle recv, KlassHandle recv_klass, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, bool check_null_and_abstract, TRAPS); // same as above for compile-time resolution; but returns null handle instead of throwing an exception on error // also, does not initialize klass (i.e., no side effects) - static methodHandle resolve_virtual_call_or_null (KlassHandle receiver_klass, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass); - static methodHandle resolve_interface_call_or_null(KlassHandle receiver_klass, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass); - static methodHandle resolve_static_call_or_null (KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass); - static methodHandle resolve_special_call_or_null (KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass); + static methodHandle resolve_virtual_call_or_null (KlassHandle receiver_klass, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass); + static methodHandle resolve_interface_call_or_null(KlassHandle receiver_klass, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass); + static methodHandle resolve_static_call_or_null (KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass); + static methodHandle resolve_special_call_or_null (KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass); // same as above for compile-time resolution; returns vtable_index if current_klass if linked - static int resolve_virtual_vtable_index (KlassHandle receiver_klass, KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass); + static int resolve_virtual_vtable_index (KlassHandle receiver_klass, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass); // static resolving for compiler (does not throw exceptions, returns null handle if unsuccessful) - static methodHandle linktime_resolve_virtual_method_or_null (KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access); - static methodHandle linktime_resolve_interface_method_or_null(KlassHandle resolved_klass, symbolHandle method_name, symbolHandle method_signature, KlassHandle current_klass, bool check_access); + static methodHandle linktime_resolve_virtual_method_or_null (KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access); + static methodHandle linktime_resolve_interface_method_or_null(KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access); // runtime resolving from constant pool static void resolve_invokestatic (CallInfo& result, constantPoolHandle pool, int index, TRAPS); diff --git a/hotspot/src/share/vm/interpreter/templateInterpreter.hpp b/hotspot/src/share/vm/interpreter/templateInterpreter.hpp index 73b02b57f33..40717ec5677 100644 --- a/hotspot/src/share/vm/interpreter/templateInterpreter.hpp +++ b/hotspot/src/share/vm/interpreter/templateInterpreter.hpp @@ -192,6 +192,12 @@ class TemplateInterpreter: public AbstractInterpreter { #ifdef TARGET_ARCH_zero # include "templateInterpreter_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "templateInterpreter_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "templateInterpreter_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp b/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp index 3d92fff0454..dc63589ed42 100644 --- a/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp +++ b/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp @@ -96,6 +96,12 @@ class TemplateInterpreterGenerator: public AbstractInterpreterGenerator { #ifdef TARGET_ARCH_zero # include "templateInterpreterGenerator_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "templateInterpreterGenerator_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "templateInterpreterGenerator_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/interpreter/templateTable.hpp b/hotspot/src/share/vm/interpreter/templateTable.hpp index 0bca2dcd348..d38623247e4 100644 --- a/hotspot/src/share/vm/interpreter/templateTable.hpp +++ b/hotspot/src/share/vm/interpreter/templateTable.hpp @@ -40,6 +40,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "interp_masm_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "interp_masm_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "interp_masm_ppc.hpp" +#endif #ifndef CC_INTERP // All the necessary definitions used for (bytecode) template generation. Instead of @@ -364,6 +370,12 @@ class TemplateTable: AllStatic { #ifdef TARGET_ARCH_MODEL_zero # include "templateTable_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "templateTable_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "templateTable_ppc.hpp" +#endif }; #endif /* !CC_INTERP */ diff --git a/hotspot/src/share/vm/memory/classify.cpp b/hotspot/src/share/vm/memory/classify.cpp index 130ecf32f9f..afd534d3194 100644 --- a/hotspot/src/share/vm/memory/classify.cpp +++ b/hotspot/src/share/vm/memory/classify.cpp @@ -68,8 +68,6 @@ object_type ClassifyObjectClosure::classify_object(oop obj, bool count) { type = typeArray_type; } else if (obj->is_objArray()) { type = objArray_type; - } else if (obj->is_symbol()) { - type = symbol_type; } else if (obj->is_klass()) { Klass* k = ((klassOop)obj)->klass_part(); if (k->oop_is_instance()) { @@ -158,8 +156,6 @@ void ClassifyInstanceKlassClosure::do_object(oop obj) { name = "_typeArrayKlassKlassObj"; } else if (obj == Universe::instanceKlassKlassObj()) { name = "_instanceKlassKlassObj"; - } else if (obj == Universe::symbolKlassObj()) { - name = "_symbolKlassObj"; } else if (obj == Universe::methodKlassObj()) { name = "_methodKlassObj"; } else if (obj == Universe::constMethodKlassObj()) { diff --git a/hotspot/src/share/vm/memory/compactingPermGenGen.cpp b/hotspot/src/share/vm/memory/compactingPermGenGen.cpp index f64986441c5..a57994c0f0d 100644 --- a/hotspot/src/share/vm/memory/compactingPermGenGen.cpp +++ b/hotspot/src/share/vm/memory/compactingPermGenGen.cpp @@ -95,17 +95,11 @@ class RecursiveAdjustSharedObjectClosure : public OopClosure { // their stack to the class without having added the class to the // dictionary yet. This means the class will be marked during phase 1 // but will not be unmarked during the application of the -// RecursiveAdjustSharedObjectClosure to the SystemDictionary. Note -// that we must not call find_shared_class with non-read-only symbols -// as doing so can cause hash codes to be computed, destroying -// forwarding pointers. -class TraversePlaceholdersClosure : public OopClosure { - protected: - template inline void do_oop_work(T* p) { - oop obj = oopDesc::load_decode_heap_oop_not_null(p); - if (obj->klass() == Universe::symbolKlassObj() && - obj->is_shared_readonly()) { - symbolHandle sym((symbolOop) obj); +// RecursiveAdjustSharedObjectClosure to the SystemDictionary. +class TraversePlaceholdersClosure { + public: + static void placeholders_do(Symbol* sym, oop loader) { + if (CompactingPermGenGen::is_shared(sym)) { oop k = SystemDictionary::find_shared_class(sym); if (k != NULL) { RecursiveAdjustSharedObjectClosure clo; @@ -113,13 +107,8 @@ class TraversePlaceholdersClosure : public OopClosure { } } } - public: - virtual void do_oop(oop* p) { TraversePlaceholdersClosure::do_oop_work(p); } - virtual void do_oop(narrowOop* p) { TraversePlaceholdersClosure::do_oop_work(p); } - }; - void CompactingPermGenGen::initialize_performance_counters() { const char* gen_name = "perm"; @@ -335,8 +324,7 @@ void CompactingPermGenGen::pre_adjust_pointers() { Universe::oops_do(&blk); StringTable::oops_do(&blk); SystemDictionary::always_strong_classes_do(&blk); - TraversePlaceholdersClosure tpc; - SystemDictionary::placeholders_do(&tpc); + SystemDictionary::placeholders_do(TraversePlaceholdersClosure::placeholders_do); } } } @@ -490,5 +478,3 @@ bool CompactingPermGenGen::remap_shared_readonly_as_readwrite() { } return true; } - -void** CompactingPermGenGen::_vtbl_list; diff --git a/hotspot/src/share/vm/memory/compactingPermGenGen.hpp b/hotspot/src/share/vm/memory/compactingPermGenGen.hpp index 99224fb4e6c..cf1ffe17530 100644 --- a/hotspot/src/share/vm/memory/compactingPermGenGen.hpp +++ b/hotspot/src/share/vm/memory/compactingPermGenGen.hpp @@ -96,9 +96,6 @@ private: static HeapWord* misccode_end; static HeapWord* shared_end; - // List of klassOops whose vtbl entries are used to patch others. - static void** _vtbl_list; - // Performance Counters GenerationCounters* _gen_counters; CSpaceCounters* _space_counters; @@ -153,32 +150,25 @@ public: VirtualSpace* mc_space() { return &_mc_vs; } ContiguousSpace* unshared_space() const { return _the_space; } - static bool inline is_shared(const oopDesc* p) { - return (HeapWord*)p >= shared_bottom && (HeapWord*)p < shared_end; + static bool inline is_shared(const void* p) { + return p >= shared_bottom && p < shared_end; } // RedefineClasses note: this tester is used to check residence of // the specified oop in the shared readonly space and not whether // the oop is readonly. - static bool inline is_shared_readonly(const oopDesc* p) { - return (HeapWord*)p >= readonly_bottom && (HeapWord*)p < readonly_end; + static bool inline is_shared_readonly(const void* p) { + return p >= readonly_bottom && p < readonly_end; } // RedefineClasses note: this tester is used to check residence of // the specified oop in the shared readwrite space and not whether // the oop is readwrite. - static bool inline is_shared_readwrite(const oopDesc* p) { - return (HeapWord*)p >= readwrite_bottom && (HeapWord*)p < readwrite_end; + static bool inline is_shared_readwrite(const void* p) { + return p >= readwrite_bottom && p < readwrite_end; } - bool is_in_unshared(const void* p) const { - return OneContigSpaceCardGeneration::is_in(p); - } - - bool is_in_shared(const void* p) const { - return p >= shared_bottom && p < shared_end; - } - + // Checks if the pointer is either in unshared space or in shared space inline bool is_in(const void* p) const { - return is_in_unshared(p) || is_in_shared(p); + return OneContigSpaceCardGeneration::is_in(p) || is_shared(p); } inline PermanentGenerationSpec* spec() const { return _spec; } @@ -236,6 +226,9 @@ public: void** vtable, char** md_top, char* md_end, char** mc_top, char* mc_end); + static void* find_matching_vtbl_ptr(void** vtbl_list, + void* new_vtable_start, + void* obj); void verify(bool allow_dirty); diff --git a/hotspot/src/share/vm/memory/dump.cpp b/hotspot/src/share/vm/memory/dump.cpp index 3e6f90e84e1..e987d96d968 100644 --- a/hotspot/src/share/vm/memory/dump.cpp +++ b/hotspot/src/share/vm/memory/dump.cpp @@ -133,6 +133,69 @@ static bool mark_object(oop obj) { return false; } + +class MoveSymbols : public SymbolClosure { +private: + char* _start; + char* _end; + char* _top; + int _count; + + bool in_shared_space(Symbol* sym) const { + return (char*)sym >= _start && (char*)sym < _end; + } + + Symbol* get_shared_copy(Symbol* sym) { + return sym->refcount() > 0 ? NULL : (Symbol*)(_start - sym->refcount()); + } + + Symbol* make_shared_copy(Symbol* sym) { + Symbol* new_sym = (Symbol*)_top; + int size = sym->object_size(); + _top += size * HeapWordSize; + if (_top <= _end) { + Copy::disjoint_words((HeapWord*)sym, (HeapWord*)new_sym, size); + // Encode a reference to the copy as a negative distance from _start + // When a symbol is being copied to a shared space + // during CDS archive creation, the original symbol is marked + // as relocated by putting a negative value to its _refcount field, + // This value is also used to find where exactly the shared copy is + // (see MoveSymbols::get_shared_copy), so that the other references + // to this symbol could be changed to point to the shared copy. + sym->_refcount = (int)(_start - (char*)new_sym); + // Mark the symbol in the shared archive as immortal so it is read only + // and not refcounted. + new_sym->_refcount = -1; + _count++; + } else { + report_out_of_shared_space(SharedMiscData); + } + return new_sym; + } + +public: + MoveSymbols(char* top, char* end) : + _start(top), _end(end), _top(top), _count(0) { } + + char* get_top() const { return _top; } + int count() const { return _count; } + + void do_symbol(Symbol** p) { + Symbol* sym = load_symbol(p); + if (sym != NULL && !in_shared_space(sym)) { + Symbol* new_sym = get_shared_copy(sym); + if (new_sym == NULL) { + // The symbol has not been relocated yet; copy it to _top address + assert(sym->refcount() > 0, "should have positive reference count"); + new_sym = make_shared_copy(sym); + } + // Make the reference point to the shared copy of the symbol + store_symbol(p, new_sym); + } + } +}; + + // Closure: mark objects closure. class MarkObjectsOopClosure : public OopClosure { @@ -164,7 +227,7 @@ static void mark_object_recursive_skipping_klasses(oop obj) { } -// Closure: mark common read-only objects, excluding symbols +// Closure: mark common read-only objects class MarkCommonReadOnly : public ObjectClosure { private: @@ -216,54 +279,52 @@ public: }; -// Closure: mark common symbols +// Closure: find symbol references in Java Heap objects -class MarkCommonSymbols : public ObjectClosure { +class CommonSymbolsClosure : public ObjectClosure { private: - MarkObjectsOopClosure mark_all; + SymbolClosure* _closure; public: + CommonSymbolsClosure(SymbolClosure* closure) : _closure(closure) { } + void do_object(oop obj) { - // Mark symbols refered to by method objects. + // Traverse symbols referenced by method objects. if (obj->is_method()) { methodOop m = methodOop(obj); - mark_object(m->name()); - mark_object(m->signature()); + constantPoolOop constants = m->constants(); + _closure->do_symbol(constants->symbol_at_addr(m->name_index())); + _closure->do_symbol(constants->symbol_at_addr(m->signature_index())); } - // Mark symbols referenced by klass objects which are read-only. + // Traverse symbols referenced by klass objects which are read-only. else if (obj->is_klass()) { + Klass* k = Klass::cast((klassOop)obj); + k->shared_symbols_iterate(_closure); if (obj->blueprint()->oop_is_instanceKlass()) { instanceKlass* ik = instanceKlass::cast((klassOop)obj); - mark_object(ik->name()); - mark_object(ik->generic_signature()); - mark_object(ik->source_file_name()); - mark_object(ik->source_debug_extension()); - typeArrayOop inner_classes = ik->inner_classes(); if (inner_classes != NULL) { - int length = inner_classes->length(); - for (int i = 0; - i < length; - i += instanceKlass::inner_class_next_offset) { + constantPoolOop constants = ik->constants(); + int n = inner_classes->length(); + for (int i = 0; i < n; i += instanceKlass::inner_class_next_offset) { int ioff = i + instanceKlass::inner_class_inner_name_offset; int index = inner_classes->ushort_at(ioff); if (index != 0) { - mark_object(ik->constants()->symbol_at(index)); + _closure->do_symbol(constants->symbol_at_addr(index)); } } } - ik->field_names_and_sigs_iterate(&mark_all); } } - // Mark symbols referenced by other constantpool entries. + // Traverse symbols referenced by other constantpool entries. - if (obj->is_constantPool()) { - constantPoolOop(obj)->shared_symbols_iterate(&mark_all); + else if (obj->is_constantPool()) { + constantPoolOop(obj)->shared_symbols_iterate(_closure); } } }; @@ -404,18 +465,7 @@ public: int s = obj->size(); oop sh_obj = (oop)_space->allocate(s); if (sh_obj == NULL) { - if (_read_only) { - warning("\nThe permanent generation read only space is not large " - "enough to \npreload requested classes. Use " - "-XX:SharedReadOnlySize= to increase \nthe initial " - "size of the read only space.\n"); - } else { - warning("\nThe permanent generation read write space is not large " - "enough to \npreload requested classes. Use " - "-XX:SharedReadWriteSize= to increase \nthe initial " - "size of the read write space.\n"); - } - exit(2); + report_out_of_shared_space(_read_only ? SharedReadOnly : SharedReadWrite); } if (PrintSharedSpaces && Verbose && WizardMode) { tty->print_cr("\nMoveMarkedObjects: " PTR_FORMAT " -> " PTR_FORMAT " %s", obj, sh_obj, @@ -459,8 +509,6 @@ public: instanceKlass* ik = instanceKlass::cast((klassOop)obj); int i; - mark_and_move_for_policy(OP_favor_startup, ik->name(), _move_ro); - if (ik->super() != NULL) { do_object(ik->super()); } @@ -469,7 +517,6 @@ public: mark_and_move_for_policy(OP_favor_startup, interfaces, _move_ro); for(i = 0; i < interfaces->length(); i++) { klassOop k = klassOop(interfaces->obj_at(i)); - mark_and_move_for_policy(OP_favor_startup, k->klass_part()->name(), _move_ro); do_object(k); } @@ -479,14 +526,6 @@ public: mark_and_move_for_policy(OP_favor_startup, m->constMethod(), _move_ro); mark_and_move_for_policy(OP_favor_runtime, m->constMethod()->exception_table(), _move_ro); mark_and_move_for_policy(OP_favor_runtime, m->constMethod()->stackmap_data(), _move_ro); - - // We don't move the name symbolOop here because it may invalidate - // method ordering, which is dependent on the address of the name - // symbolOop. It will get promoted later with the other symbols. - // Method name is rarely accessed during classloading anyway. - // mark_and_move_for_policy(OP_balanced, m->name(), _move_ro); - - mark_and_move_for_policy(OP_favor_startup, m->signature(), _move_ro); } mark_and_move_for_policy(OP_favor_startup, ik->transitive_interfaces(), _move_ro); @@ -574,45 +613,43 @@ public: }; -void sort_methods(instanceKlass* ik, TRAPS) { - klassOop super = ik->super(); - if (super != NULL) { - sort_methods(instanceKlass::cast(super), THREAD); - } - - // The methods array must be ordered by symbolOop address. (See - // classFileParser.cpp where methods in a class are originally - // sorted.) Since objects have just be reordered, this must be - // corrected. - methodOopDesc::sort_methods(ik->methods(), - ik->methods_annotations(), - ik->methods_parameter_annotations(), - ik->methods_default_annotations(), - true /* idempotent, slow */); - - // Itable indices are calculated based on methods array order - // (see klassItable::compute_itable_index()). Must reinitialize. - // We assume that since checkconstraints is false, this method - // cannot throw an exception. An exception here would be - // problematic since this is the VMThread, not a JavaThread. - ik->itable()->initialize_itable(false, THREAD); -} - -// Sort methods if the oop is an instanceKlass. +// The methods array must be reordered by Symbol* address. +// (See classFileParser.cpp where methods in a class are originally +// sorted). The addresses of symbols have been changed as a result +// of moving to the shared space. class SortMethodsClosure: public ObjectClosure { +public: + void do_object(oop obj) { + if (obj->blueprint()->oop_is_instanceKlass()) { + instanceKlass* ik = instanceKlass::cast((klassOop)obj); + methodOopDesc::sort_methods(ik->methods(), + ik->methods_annotations(), + ik->methods_parameter_annotations(), + ik->methods_default_annotations(), + true /* idempotent, slow */); + } + } +}; + +// Itable indices are calculated based on methods array order +// (see klassItable::compute_itable_index()). Must reinitialize +// after ALL methods of ALL classes have been reordered. +// We assume that since checkconstraints is false, this method +// cannot throw an exception. An exception here would be +// problematic since this is the VMThread, not a JavaThread. + +class ReinitializeItables: public ObjectClosure { private: Thread* _thread; public: - SortMethodsClosure(Thread* thread) : _thread(thread) {} + ReinitializeItables(Thread* thread) : _thread(thread) {} void do_object(oop obj) { - // instanceKlass objects need some adjustment. if (obj->blueprint()->oop_is_instanceKlass()) { instanceKlass* ik = instanceKlass::cast((klassOop)obj); - - sort_methods(ik, _thread); + ik->itable()->initialize_itable(false, _thread); } } }; @@ -673,18 +710,9 @@ private: oop* top; char* end; - void out_of_space() { - warning("\nThe shared miscellaneous data space is not large " - "enough to \npreload requested classes. Use " - "-XX:SharedMiscDataSize= to increase \nthe initial " - "size of the miscellaneous data space.\n"); - exit(2); - } - - inline void check_space() { if ((char*)top + sizeof(oop) > end) { - out_of_space(); + report_out_of_shared_space(SharedMiscData); } } @@ -737,7 +765,7 @@ public: void do_region(u_char* start, size_t size) { if ((char*)top + size > end) { - out_of_space(); + report_out_of_shared_space(SharedMiscData); } assert((intptr_t)start % sizeof(oop) == 0, "bad alignment"); assert(size % sizeof(oop) == 0, "bad size"); @@ -870,46 +898,53 @@ static void print_contents() { class PatchKlassVtables: public ObjectClosure { private: - void* _vtbl_ptr; - VirtualSpace* _md_vs; GrowableArray* _klass_objects; public: - - PatchKlassVtables(void* vtbl_ptr, VirtualSpace* md_vs) { - _vtbl_ptr = vtbl_ptr; - _md_vs = md_vs; + PatchKlassVtables() { _klass_objects = new GrowableArray(); } - void do_object(oop obj) { if (obj->is_klass()) { _klass_objects->append(klassOop(obj)); } } - - void patch(void** vtbl_list, int vtbl_list_size) { - for (int i = 0; i < _klass_objects->length(); ++i) { + void patch(void** vtbl_list, void* new_vtable_start) { + int n = _klass_objects->length(); + for (int i = 0; i < n; i++) { klassOop obj = (klassOop)_klass_objects->at(i); Klass* k = obj->klass_part(); - void* v = *(void**)k; - - int n; - for (n = 0; n < vtbl_list_size; ++n) { - *(void**)k = NULL; - if (vtbl_list[n] == v) { - *(void**)k = (void**)_vtbl_ptr + - (n * CompactingPermGenGen::num_virtuals); - break; - } - } - guarantee(n < vtbl_list_size, "unable to find matching vtbl pointer"); + *(void**)k = CompactingPermGenGen::find_matching_vtbl_ptr( + vtbl_list, new_vtable_start, k); } } }; +// Walk through all symbols and patch their vtable pointers. +// Note that symbols have vtable pointers only in non-product builds +// (see allocation.hpp). + +#ifndef PRODUCT +class PatchSymbolVtables: public SymbolClosure { +private: + void* _new_vtbl_ptr; + +public: + PatchSymbolVtables(void** vtbl_list, void* new_vtable_start) { + Symbol s; + _new_vtbl_ptr = CompactingPermGenGen::find_matching_vtbl_ptr( + vtbl_list, new_vtable_start, &s); + } + + void do_symbol(Symbol** p) { + Symbol* sym = load_symbol(p); + *(void**)sym = _new_vtbl_ptr; + } +}; +#endif + // Populate the shared space. @@ -969,7 +1004,6 @@ public: MarkObjectsOopClosure mark_all; MarkCommonReadOnly mark_common_ro; - MarkCommonSymbols mark_common_symbols; MarkStringValues mark_string_values; MarkReadWriteObjects mark_rw; MarkStringObjects mark_strings; @@ -1013,112 +1047,6 @@ public: MarkAndMoveOrderedReadOnly mark_and_move_ordered_ro(&move_ro); MarkAndMoveOrderedReadWrite mark_and_move_ordered_rw(&move_rw); - // Phase 1a: move commonly used read-only objects to the read-only space. - - if (SharedOptimizeColdStart) { - tty->print("Moving pre-ordered read-only objects to shared space at " PTR_FORMAT " ... ", - _ro_space->top()); - for (int i = 0; i < _class_promote_order->length(); i++) { - oop obj = _class_promote_order->at(i); - mark_and_move_ordered_ro.do_object(obj); - } - tty->print_cr("done. "); - } - - tty->print("Moving read-only objects to shared space at " PTR_FORMAT " ... ", - _ro_space->top()); - gch->object_iterate(&mark_common_ro); - gch->object_iterate(&move_ro); - tty->print_cr("done. "); - - // Phase 1b: move commonly used symbols to the read-only space. - - tty->print("Moving common symbols to shared space at " PTR_FORMAT " ... ", - _ro_space->top()); - gch->object_iterate(&mark_common_symbols); - gch->object_iterate(&move_ro); - tty->print_cr("done. "); - - // Phase 1c: move remaining symbols to the read-only space - // (e.g. String initializers). - - tty->print("Moving remaining symbols to shared space at " PTR_FORMAT " ... ", - _ro_space->top()); - vmSymbols::oops_do(&mark_all, true); - gch->object_iterate(&move_ro); - tty->print_cr("done. "); - - // Phase 1d: move String character arrays to the read-only space. - - tty->print("Moving string char arrays to shared space at " PTR_FORMAT " ... ", - _ro_space->top()); - gch->object_iterate(&mark_string_values); - gch->object_iterate(&move_ro); - tty->print_cr("done. "); - - // Phase 2: move all remaining symbols to the read-only space. The - // remaining symbols are assumed to be string initializers no longer - // referenced. - - void* extra_symbols = _ro_space->top(); - tty->print("Moving additional symbols to shared space at " PTR_FORMAT " ... ", - _ro_space->top()); - SymbolTable::oops_do(&mark_all); - gch->object_iterate(&move_ro); - tty->print_cr("done. "); - tty->print_cr("Read-only space ends at " PTR_FORMAT ", %d bytes.", - _ro_space->top(), _ro_space->used()); - - // Phase 3: move read-write objects to the read-write space, except - // Strings. - - if (SharedOptimizeColdStart) { - tty->print("Moving pre-ordered read-write objects to shared space at " PTR_FORMAT " ... ", - _rw_space->top()); - for (int i = 0; i < _class_promote_order->length(); i++) { - oop obj = _class_promote_order->at(i); - mark_and_move_ordered_rw.do_object(obj); - } - tty->print_cr("done. "); - } - tty->print("Moving read-write objects to shared space at " PTR_FORMAT " ... ", - _rw_space->top()); - Universe::oops_do(&mark_all, true); - SystemDictionary::oops_do(&mark_all); - oop tmp = Universe::arithmetic_exception_instance(); - mark_object(java_lang_Throwable::message(tmp)); - gch->object_iterate(&mark_rw); - gch->object_iterate(&move_rw); - tty->print_cr("done. "); - - // Phase 4: move String objects to the read-write space. - - tty->print("Moving String objects to shared space at " PTR_FORMAT " ... ", - _rw_space->top()); - StringTable::oops_do(&mark_all); - gch->object_iterate(&mark_strings); - gch->object_iterate(&move_rw); - tty->print_cr("done. "); - tty->print_cr("Read-write space ends at " PTR_FORMAT ", %d bytes.", - _rw_space->top(), _rw_space->used()); - -#ifdef DEBUG - // Check: scan for objects which were not moved. - - CheckRemainingObjects check_objects; - gch->object_iterate(&check_objects); - check_objects.status(); -#endif - - // Resolve forwarding in objects and saved C++ structures - tty->print("Updating references to shared objects ... "); - ResolveForwardingClosure resolve; - Universe::oops_do(&resolve); - SystemDictionary::oops_do(&resolve); - StringTable::oops_do(&resolve); - SymbolTable::oops_do(&resolve); - vmSymbols::oops_do(&resolve); - // Set up the share data and shared code segments. char* md_top = _md_vs->low(); @@ -1144,6 +1072,122 @@ public: &md_top, md_end, &mc_top, mc_end); + // Reserve space for the total size and the number of stored symbols. + + md_top += sizeof(intptr_t) * 2; + + MoveSymbols move_symbols(md_top, md_end); + CommonSymbolsClosure traverse_common_symbols(&move_symbols); + + // Phase 1a: remove symbols with _refcount == 0 + + SymbolTable::unlink(); + + // Phase 1b: move commonly used symbols referenced by oop fields. + + tty->print("Moving common symbols to metadata section at " PTR_FORMAT " ... ", + move_symbols.get_top()); + gch->object_iterate(&traverse_common_symbols); + tty->print_cr("done. "); + + // Phase 1c: move known names and signatures. + + tty->print("Moving vmSymbols to metadata section at " PTR_FORMAT " ... ", + move_symbols.get_top()); + vmSymbols::symbols_do(&move_symbols); + tty->print_cr("done. "); + + // Phase 1d: move the remaining symbols by scanning the whole SymbolTable. + + void* extra_symbols = move_symbols.get_top(); + tty->print("Moving the remaining symbols to metadata section at " PTR_FORMAT " ... ", + move_symbols.get_top()); + SymbolTable::symbols_do(&move_symbols); + tty->print_cr("done. "); + + // Record the total length of all symbols at the beginning of the block. + ((intptr_t*)md_top)[-2] = move_symbols.get_top() - md_top; + ((intptr_t*)md_top)[-1] = move_symbols.count(); + tty->print_cr("Moved %d symbols, %d bytes.", + move_symbols.count(), move_symbols.get_top() - md_top); + // Advance the pointer to the end of symbol store. + md_top = move_symbols.get_top(); + + + // Phase 2: move commonly used read-only objects to the read-only space. + + if (SharedOptimizeColdStart) { + tty->print("Moving pre-ordered read-only objects to shared space at " PTR_FORMAT " ... ", + _ro_space->top()); + for (int i = 0; i < _class_promote_order->length(); i++) { + oop obj = _class_promote_order->at(i); + mark_and_move_ordered_ro.do_object(obj); + } + tty->print_cr("done. "); + } + + tty->print("Moving read-only objects to shared space at " PTR_FORMAT " ... ", + _ro_space->top()); + gch->object_iterate(&mark_common_ro); + gch->object_iterate(&move_ro); + tty->print_cr("done. "); + + // Phase 3: move String character arrays to the read-only space. + + tty->print("Moving string char arrays to shared space at " PTR_FORMAT " ... ", + _ro_space->top()); + gch->object_iterate(&mark_string_values); + gch->object_iterate(&move_ro); + tty->print_cr("done. "); + + // Phase 4: move read-write objects to the read-write space, except + // Strings. + + if (SharedOptimizeColdStart) { + tty->print("Moving pre-ordered read-write objects to shared space at " PTR_FORMAT " ... ", + _rw_space->top()); + for (int i = 0; i < _class_promote_order->length(); i++) { + oop obj = _class_promote_order->at(i); + mark_and_move_ordered_rw.do_object(obj); + } + tty->print_cr("done. "); + } + tty->print("Moving read-write objects to shared space at " PTR_FORMAT " ... ", + _rw_space->top()); + Universe::oops_do(&mark_all, true); + SystemDictionary::oops_do(&mark_all); + oop tmp = Universe::arithmetic_exception_instance(); + mark_object(java_lang_Throwable::message(tmp)); + gch->object_iterate(&mark_rw); + gch->object_iterate(&move_rw); + tty->print_cr("done. "); + + // Phase 5: move String objects to the read-write space. + + tty->print("Moving String objects to shared space at " PTR_FORMAT " ... ", + _rw_space->top()); + StringTable::oops_do(&mark_all); + gch->object_iterate(&mark_strings); + gch->object_iterate(&move_rw); + tty->print_cr("done. "); + tty->print_cr("Read-write space ends at " PTR_FORMAT ", %d bytes.", + _rw_space->top(), _rw_space->used()); + +#ifdef DEBUG + // Check: scan for objects which were not moved. + + CheckRemainingObjects check_objects; + gch->object_iterate(&check_objects); + check_objects.status(); +#endif + + // Resolve forwarding in objects and saved C++ structures + tty->print("Updating references to shared objects ... "); + ResolveForwardingClosure resolve; + Universe::oops_do(&resolve); + SystemDictionary::oops_do(&resolve); + StringTable::oops_do(&resolve); + // Fix (forward) all of the references in these shared objects (which // are required to point ONLY to objects in the shared spaces). // Also, create a list of all objects which might later contain a @@ -1166,9 +1210,13 @@ public: // pointer resolution, so that methods can be promoted in any order // with respect to their holder classes. - SortMethodsClosure sort(THREAD); + SortMethodsClosure sort; gen->ro_space()->object_iterate(&sort); gen->rw_space()->object_iterate(&sort); + + ReinitializeItables reinit_itables(THREAD); + gen->ro_space()->object_iterate(&reinit_itables); + gen->rw_space()->object_iterate(&reinit_itables); tty->print_cr("done. "); tty->cr(); @@ -1233,9 +1281,16 @@ public: // Update the vtable pointers in all of the Klass objects in the // heap. They should point to newly generated vtable. - PatchKlassVtables pkvt(vtable, _md_vs); + PatchKlassVtables pkvt; _rw_space->object_iterate(&pkvt); - pkvt.patch(vtbl_list, vtbl_list_size); + pkvt.patch(vtbl_list, vtable); + +#ifndef PRODUCT + // Update the vtable pointers in all symbols, + // but only in non-product builds where symbols DO have virtual methods. + PatchSymbolVtables psvt(vtbl_list, vtable); + SymbolTable::symbols_do(&psvt); +#endif char* saved_vtbl = (char*)malloc(vtbl_list_size * sizeof(void*)); memmove(saved_vtbl, vtbl_list, vtbl_list_size * sizeof(void*)); @@ -1304,6 +1359,19 @@ jint CompactingPermGenGen::dump_shared(GrowableArray* class_promote_order, return JNI_OK; } +void* CompactingPermGenGen::find_matching_vtbl_ptr(void** vtbl_list, + void* new_vtable_start, + void* obj) { + void* old_vtbl_ptr = *(void**)obj; + for (int i = 0; i < vtbl_list_size; i++) { + if (vtbl_list[i] == old_vtbl_ptr) { + return (void**)new_vtable_start + i * num_virtuals; + } + } + ShouldNotReachHere(); + return NULL; +} + class LinkClassesClosure : public ObjectClosure { private: @@ -1431,8 +1499,7 @@ void GenCollectedHeap::preload_and_dump(TRAPS) { computed_jsum = jsum(computed_jsum, class_name, (const int)name_len - 1); // Got a class name - load it. - symbolHandle class_name_symbol = oopFactory::new_symbol(class_name, - THREAD); + TempNewSymbol class_name_symbol = SymbolTable::new_symbol(class_name, THREAD); guarantee(!HAS_PENDING_EXCEPTION, "Exception creating a symbol."); klassOop klass = SystemDictionary::resolve_or_null(class_name_symbol, THREAD); diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.cpp b/hotspot/src/share/vm/memory/genCollectedHeap.cpp index 7f906e4ae98..84551154a7d 100644 --- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp +++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp @@ -875,10 +875,7 @@ void GenCollectedHeap::collect_locked(GCCause::Cause cause) { void GenCollectedHeap::collect_locked(GCCause::Cause cause, int max_level) { if (_preloading_shared_classes) { - warning("\nThe permanent generation is not large enough to preload " - "requested classes.\nUse -XX:PermSize= to increase the initial " - "size of the permanent generation.\n"); - vm_exit(2); + report_out_of_shared_space(SharedPermGen); } // Read the GC count while holding the Heap_lock unsigned int gc_count_before = total_collections(); diff --git a/hotspot/src/share/vm/memory/genMarkSweep.cpp b/hotspot/src/share/vm/memory/genMarkSweep.cpp index 44b958d1e23..8d67a7988b1 100644 --- a/hotspot/src/share/vm/memory/genMarkSweep.cpp +++ b/hotspot/src/share/vm/memory/genMarkSweep.cpp @@ -296,9 +296,10 @@ void GenMarkSweep::mark_sweep_phase1(int level, follow_mdo_weak_refs(); assert(_marking_stack.is_empty(), "just drained"); - // Visit symbol and interned string tables and delete unmarked oops - SymbolTable::unlink(&is_alive); + // Visit interned string tables and delete unmarked oops StringTable::unlink(&is_alive); + // Clean up unreferenced symbols in symbol table. + SymbolTable::unlink(); assert(_marking_stack.is_empty(), "stack should be empty by now"); } diff --git a/hotspot/src/share/vm/memory/heapInspection.cpp b/hotspot/src/share/vm/memory/heapInspection.cpp index 5bd354a9725..545a580c6cf 100644 --- a/hotspot/src/share/vm/memory/heapInspection.cpp +++ b/hotspot/src/share/vm/memory/heapInspection.cpp @@ -56,7 +56,6 @@ void KlassInfoEntry::print_on(outputStream* st) const { if (_klass == Universe::objArrayKlassKlassObj()) name = ""; else if (_klass == Universe::instanceKlassKlassObj()) name = ""; else if (_klass == Universe::typeArrayKlassKlassObj()) name = ""; else - if (_klass == Universe::symbolKlassObj()) name = ""; else if (_klass == Universe::boolArrayKlassObj()) name = ""; else if (_klass == Universe::charArrayKlassObj()) name = ""; else if (_klass == Universe::singleArrayKlassObj()) name = ""; else diff --git a/hotspot/src/share/vm/memory/iterator.hpp b/hotspot/src/share/vm/memory/iterator.hpp index 60e833b2ae6..ca36ab4dee9 100644 --- a/hotspot/src/share/vm/memory/iterator.hpp +++ b/hotspot/src/share/vm/memory/iterator.hpp @@ -290,6 +290,22 @@ public: virtual void do_tag(int tag) = 0; }; +class SymbolClosure : public StackObj { + public: + virtual void do_symbol(Symbol**) = 0; + + // Clear LSB in symbol address; it can be set by CPSlot. + static Symbol* load_symbol(Symbol** p) { + return (Symbol*)(intptr_t(*p) & ~1); + } + + // Store symbol, adjusting new pointer if the original pointer was adjusted + // (symbol references in constant pool slots have their LSB set to 1). + static void store_symbol(Symbol** p, Symbol* sym) { + *p = (Symbol*)(intptr_t(sym) | (intptr_t(*p) & 1)); + } +}; + #ifdef ASSERT // This class is used to flag phases of a collection that // can unload classes and which should override the diff --git a/hotspot/src/share/vm/memory/oopFactory.hpp b/hotspot/src/share/vm/memory/oopFactory.hpp index 79ce99c4c58..da01364d038 100644 --- a/hotspot/src/share/vm/memory/oopFactory.hpp +++ b/hotspot/src/share/vm/memory/oopFactory.hpp @@ -64,34 +64,6 @@ class oopFactory: AllStatic { static typeArrayOop new_typeArray(BasicType type, int length, TRAPS); - // Symbols - static symbolOop new_symbol(const char* utf8_buffer, int length, TRAPS) { - assert(utf8_buffer != NULL, "just checking"); - return SymbolTable::lookup(utf8_buffer, length, CHECK_NULL); - } - static void new_symbols(constantPoolHandle cp, int names_count, - const char** name, int* lengths, - int* cp_indices, unsigned int* hashValues, - TRAPS) { - SymbolTable::add(cp, names_count, name, lengths, cp_indices, - hashValues, CHECK); - } - - static symbolOop new_symbol(char* name, TRAPS) { return new_symbol(name, (int)strlen(name), CHECK_NULL); } - static symbolOop new_symbol(const char* name, TRAPS) { return new_symbol(name, (int)strlen(name), CHECK_NULL); } - static symbolOop new_symbol(symbolHandle sym, int begin, int end, TRAPS) { - assert(begin <= end && end <= sym->utf8_length(), "just checking"); - return SymbolTable::lookup(sym, begin, end, CHECK_NULL); - } - - // Create symbols as above but return a handle - static symbolHandle new_symbol_handle(const char* name, int length, TRAPS) { - symbolOop sym = new_symbol(name, length, THREAD); - return symbolHandle(THREAD, sym); - } - static symbolHandle new_symbol_handle(char* name, TRAPS) { return new_symbol_handle(name, (int)strlen(name), CHECK_(symbolHandle())); } - static symbolHandle new_symbol_handle(const char* name, TRAPS) { return new_symbol_handle(name, (int)strlen(name), CHECK_(symbolHandle())); } - // Constant pools static constantPoolOop new_constantPool (int length, bool is_conc_safe, diff --git a/hotspot/src/share/vm/memory/restore.cpp b/hotspot/src/share/vm/memory/restore.cpp index 024ac26a582..db7f9e9eb84 100644 --- a/hotspot/src/share/vm/memory/restore.cpp +++ b/hotspot/src/share/vm/memory/restore.cpp @@ -107,15 +107,23 @@ void CompactingPermGenGen::initialize_oops() { // Skip over (reserve space for) a list of addresses of C++ vtables // for Klass objects. They get filled in later. + void** vtbl_list = (void**)buffer; + buffer += vtbl_list_size * sizeof(void*); + Universe::init_self_patching_vtbl_list(vtbl_list, vtbl_list_size); + // Skip over (reserve space for) dummy C++ vtables Klass objects. // They are used as is. - void** vtbl_list = (void**)buffer; - buffer += vtbl_list_size * sizeof(void*); intptr_t vtable_size = *(intptr_t*)buffer; buffer += sizeof(intptr_t); buffer += vtable_size; + // Skip the recorded symbols. + + intptr_t total_symbol_size = *(intptr_t*)buffer; + buffer += sizeof(intptr_t) * 2; + buffer += total_symbol_size; + // Create the symbol table using the bucket array at this spot in the // misc data space. Since the symbol table is often modified, this // region (of mapped pages) will be copy-on-write. diff --git a/hotspot/src/share/vm/memory/serialize.cpp b/hotspot/src/share/vm/memory/serialize.cpp index 2aa933ce853..629620c8357 100644 --- a/hotspot/src/share/vm/memory/serialize.cpp +++ b/hotspot/src/share/vm/memory/serialize.cpp @@ -61,7 +61,7 @@ void CompactingPermGenGen::serialize_oops(SerializeOopClosure* soc) { soc->do_tag(sizeof(constantPoolCacheOopDesc)); soc->do_tag(objArrayOopDesc::base_offset_in_bytes()); soc->do_tag(typeArrayOopDesc::base_offset_in_bytes(T_BYTE)); - soc->do_tag(sizeof(symbolOopDesc)); + soc->do_tag(sizeof(Symbol)); soc->do_tag(sizeof(klassOopDesc)); soc->do_tag(sizeof(markOopDesc)); soc->do_tag(sizeof(compiledICHolderOopDesc)); @@ -83,8 +83,12 @@ void CompactingPermGenGen::serialize_oops(SerializeOopClosure* soc) { // Dump/restore miscellaneous oops. Universe::oops_do(soc, true); soc->do_tag(--tag); + CodeCache::oops_do(soc); + soc->do_tag(--tag); + + // Dump/restore references to commonly used names and signatures. + vmSymbols::serialize(soc); + soc->do_tag(--tag); - vmSymbols::oops_do(soc, true); soc->do_tag(--tag); - CodeCache::oops_do(soc); soc->do_tag(--tag); soc->do_tag(666); } diff --git a/hotspot/src/share/vm/memory/sharedHeap.cpp b/hotspot/src/share/vm/memory/sharedHeap.cpp index 3c21da751d0..e42ecc18dc9 100644 --- a/hotspot/src/share/vm/memory/sharedHeap.cpp +++ b/hotspot/src/share/vm/memory/sharedHeap.cpp @@ -46,7 +46,6 @@ enum SH_process_strong_roots_tasks { SH_PS_Management_oops_do, SH_PS_SystemDictionary_oops_do, SH_PS_jvmti_oops_do, - SH_PS_vmSymbols_oops_do, SH_PS_SymbolTable_oops_do, SH_PS_StringTable_oops_do, SH_PS_CodeCache_oops_do, @@ -169,11 +168,6 @@ void SharedHeap::process_strong_roots(bool activate_scope, } if (!_process_strong_tasks->is_task_claimed(SH_PS_SymbolTable_oops_do)) { - if (so & SO_Symbols) { - SymbolTable::oops_do(roots); - } - // Verify if the symbol table contents are in the perm gen - NOT_PRODUCT(SymbolTable::oops_do(&assert_is_perm_closure)); } if (!_process_strong_tasks->is_task_claimed(SH_PS_StringTable_oops_do)) { @@ -210,20 +204,6 @@ void SharedHeap::process_strong_roots(bool activate_scope, NOT_PRODUCT(CodeCache::asserted_non_scavengable_nmethods_do(&assert_code_is_perm)); } - // Roots that should point only into permanent generation. - { - OopClosure* blk = NULL; - if (collecting_perm_gen) { - blk = roots; - } else { - debug_only(blk = &assert_is_perm_closure); - } - if (blk != NULL) { - if (!_process_strong_tasks->is_task_claimed(SH_PS_vmSymbols_oops_do)) - vmSymbols::oops_do(blk); - } - } - if (!collecting_perm_gen) { // All threads perform this; coordination is handled internally. @@ -273,7 +253,6 @@ void SharedHeap::process_weak_roots(OopClosure* root_closure, JNIHandles::weak_oops_do(&always_true, root_closure); CodeCache::blobs_do(code_roots); - SymbolTable::oops_do(root_closure); if (UseSharedSpaces && !DumpSharedSpaces) { SkipAdjustingSharedStrings skip_closure(root_closure); StringTable::oops_do(&skip_closure); diff --git a/hotspot/src/share/vm/memory/universe.cpp b/hotspot/src/share/vm/memory/universe.cpp index 9d5af98fdfb..6ea6c32cd50 100644 --- a/hotspot/src/share/vm/memory/universe.cpp +++ b/hotspot/src/share/vm/memory/universe.cpp @@ -59,7 +59,6 @@ #include "oops/methodKlass.hpp" #include "oops/objArrayKlassKlass.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolKlass.hpp" #include "oops/typeArrayKlass.hpp" #include "oops/typeArrayKlassKlass.hpp" #include "prims/jvmtiRedefineClassesTrace.hpp" @@ -108,7 +107,6 @@ klassOop Universe::_singleArrayKlassObj = NULL; klassOop Universe::_doubleArrayKlassObj = NULL; klassOop Universe::_typeArrayKlassObjs[T_VOID+1] = { NULL /*, NULL...*/ }; klassOop Universe::_objectArrayKlassObj = NULL; -klassOop Universe::_symbolKlassObj = NULL; klassOop Universe::_methodKlassObj = NULL; klassOop Universe::_constMethodKlassObj = NULL; klassOop Universe::_methodDataKlassObj = NULL; @@ -155,7 +153,6 @@ oop Universe::_null_ptr_exception_instance = NULL; oop Universe::_arithmetic_exception_instance = NULL; oop Universe::_virtual_machine_error_instance = NULL; oop Universe::_vm_exception = NULL; -oop Universe::_emptySymbol = NULL; // These variables are guarded by FullGCALot_lock. debug_only(objArrayOop Universe::_fullgc_alot_dummy_array = NULL;) @@ -190,7 +187,6 @@ void Universe::basic_type_classes_do(void f(klassOop)) { void Universe::system_classes_do(void f(klassOop)) { - f(symbolKlassObj()); f(methodKlassObj()); f(constMethodKlassObj()); f(methodDataKlassObj()); @@ -242,7 +238,6 @@ void Universe::oops_do(OopClosure* f, bool do_all) { } } } - f->do_oop((oop*)&_symbolKlassObj); f->do_oop((oop*)&_methodKlassObj); f->do_oop((oop*)&_constMethodKlassObj); f->do_oop((oop*)&_methodDataKlassObj); @@ -279,7 +274,6 @@ void Universe::oops_do(OopClosure* f, bool do_all) { f->do_oop((oop*)&_main_thread_group); f->do_oop((oop*)&_system_thread_group); f->do_oop((oop*)&_vm_exception); - f->do_oop((oop*)&_emptySymbol); debug_only(f->do_oop((oop*)&_fullgc_alot_dummy_array);) } @@ -312,10 +306,6 @@ void Universe::genesis(TRAPS) { _instanceKlassKlassObj = instanceKlassKlass::create_klass(CHECK); _typeArrayKlassKlassObj = typeArrayKlassKlass::create_klass(CHECK); - _symbolKlassObj = symbolKlass::create_klass(CHECK); - - _emptySymbol = oopFactory::new_symbol("", CHECK); - _boolArrayKlassObj = typeArrayKlass::create_klass(T_BOOLEAN, sizeof(jboolean), CHECK); _charArrayKlassObj = typeArrayKlass::create_klass(T_CHAR, sizeof(jchar), CHECK); _singleArrayKlassObj = typeArrayKlass::create_klass(T_FLOAT, sizeof(jfloat), CHECK); @@ -349,13 +339,6 @@ void Universe::genesis(TRAPS) { _the_empty_system_obj_array = oopFactory::new_system_objArray(0, CHECK); _the_array_interfaces_array = oopFactory::new_system_objArray(2, CHECK); - _vm_exception = oopFactory::new_symbol("vm exception holder", CHECK); - } else { - FileMapInfo *mapinfo = FileMapInfo::current_info(); - char* buffer = mapinfo->region_base(CompactingPermGenGen::md); - void** vtbl_list = (void**)buffer; - init_self_patching_vtbl_list(vtbl_list, - CompactingPermGenGen::vtbl_list_size); } } @@ -449,15 +432,15 @@ void Universe::genesis(TRAPS) { if (JDK_Version::is_partially_initialized()) { uint8_t jdk_version; klassOop k = SystemDictionary::resolve_or_null( - vmSymbolHandles::java_lang_management_MemoryUsage(), THREAD); + vmSymbols::java_lang_management_MemoryUsage(), THREAD); CLEAR_PENDING_EXCEPTION; // ignore exceptions if (k == NULL) { k = SystemDictionary::resolve_or_null( - vmSymbolHandles::java_lang_CharSequence(), THREAD); + vmSymbols::java_lang_CharSequence(), THREAD); CLEAR_PENDING_EXCEPTION; // ignore exceptions if (k == NULL) { k = SystemDictionary::resolve_or_null( - vmSymbolHandles::java_lang_Shutdown(), THREAD); + vmSymbols::java_lang_Shutdown(), THREAD); CLEAR_PENDING_EXCEPTION; // ignore exceptions if (k == NULL) { jdk_version = 2; @@ -520,11 +503,16 @@ void Universe::genesis(TRAPS) { } -static inline void add_vtable(void** list, int* n, Klass* o, int count) { - list[(*n)++] = *(void**)&o->vtbl_value(); - guarantee((*n) <= count, "vtable list too small."); +static inline void* dereference(void* addr) { + return *(void**)addr; } +static inline void add_vtable(void** list, int* n, void* o, int count) { + guarantee((*n) < count, "vtable list too small"); + void* vtable = dereference(o); + assert(dereference(vtable) != NULL, "invalid vtable"); + list[(*n)++] = vtable; +} void Universe::init_self_patching_vtbl_list(void** list, int count) { int n = 0; @@ -535,7 +523,6 @@ void Universe::init_self_patching_vtbl_list(void** list, int count) { { instanceKlass o; add_vtable(list, &n, &o, count); } { instanceRefKlass o; add_vtable(list, &n, &o, count); } { typeArrayKlassKlass o; add_vtable(list, &n, &o, count); } - { symbolKlass o; add_vtable(list, &n, &o, count); } { typeArrayKlass o; add_vtable(list, &n, &o, count); } { methodKlass o; add_vtable(list, &n, &o, count); } { constMethodKlass o; add_vtable(list, &n, &o, count); } @@ -544,6 +531,11 @@ void Universe::init_self_patching_vtbl_list(void** list, int count) { { objArrayKlass o; add_vtable(list, &n, &o, count); } { methodDataKlass o; add_vtable(list, &n, &o, count); } { compiledICHolderKlass o; add_vtable(list, &n, &o, count); } +#ifndef PRODUCT + // In non-product builds CHeapObj is derived from AllocatedObj, + // so symbols in CDS archive should have their vtable pointer patched. + { Symbol o; add_vtable(list, &n, &o, count); } +#endif } @@ -633,8 +625,8 @@ void Universe::run_finalizers_on_exit() { JavaCalls::call_static( &result, finalizer_klass, - vmSymbolHandles::run_finalizers_on_exit_name(), - vmSymbolHandles::void_method_signature(), + vmSymbols::run_finalizers_on_exit_name(), + vmSymbols::void_method_signature(), THREAD ); // Ignore any pending exceptions @@ -1037,7 +1029,7 @@ bool universe_post_init() { // Setup preallocated empty java.lang.Class array Universe::_the_empty_class_klass_array = oopFactory::new_objArray(SystemDictionary::Class_klass(), 0, CHECK_false); // Setup preallocated OutOfMemoryError errors - k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_OutOfMemoryError(), true, CHECK_false); + k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_OutOfMemoryError(), true, CHECK_false); k_h = instanceKlassHandle(THREAD, k); Universe::_out_of_memory_error_java_heap = k_h->allocate_permanent_instance(CHECK_false); Universe::_out_of_memory_error_perm_gen = k_h->allocate_permanent_instance(CHECK_false); @@ -1047,15 +1039,15 @@ bool universe_post_init() { // Setup preallocated NullPointerException // (this is currently used for a cheap & dirty solution in compiler exception handling) - k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_NullPointerException(), true, CHECK_false); + k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_NullPointerException(), true, CHECK_false); Universe::_null_ptr_exception_instance = instanceKlass::cast(k)->allocate_permanent_instance(CHECK_false); // Setup preallocated ArithmeticException // (this is currently used for a cheap & dirty solution in compiler exception handling) - k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_ArithmeticException(), true, CHECK_false); + k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_ArithmeticException(), true, CHECK_false); Universe::_arithmetic_exception_instance = instanceKlass::cast(k)->allocate_permanent_instance(CHECK_false); // Virtual Machine Error for when we get into a situation we can't resolve k = SystemDictionary::resolve_or_fail( - vmSymbolHandles::java_lang_VirtualMachineError(), true, CHECK_false); + vmSymbols::java_lang_VirtualMachineError(), true, CHECK_false); bool linked = instanceKlass::cast(k)->link_class_or_fail(CHECK_false); if (!linked) { tty->print_cr("Unable to link/verify VirtualMachineError class"); @@ -1063,6 +1055,9 @@ bool universe_post_init() { } Universe::_virtual_machine_error_instance = instanceKlass::cast(k)->allocate_permanent_instance(CHECK_false); + + Universe::_vm_exception = instanceKlass::cast(k)->allocate_permanent_instance(CHECK_false); + } if (!DumpSharedSpaces) { // These are the only Java fields that are currently set during shared space dumping. @@ -1117,7 +1112,7 @@ bool universe_post_init() { // Note: No race-condition here, since a resolve will always return the same result // Setup method for security checks - k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_reflect_Method(), true, CHECK_false); + k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_reflect_Method(), true, CHECK_false); k_h = instanceKlassHandle(THREAD, k); k_h->link_class(CHECK_false); m = k_h->find_method(vmSymbols::invoke_name(), vmSymbols::object_object_array_object_signature()); diff --git a/hotspot/src/share/vm/memory/universe.hpp b/hotspot/src/share/vm/memory/universe.hpp index f57f7be6aee..df2b15b4223 100644 --- a/hotspot/src/share/vm/memory/universe.hpp +++ b/hotspot/src/share/vm/memory/universe.hpp @@ -139,7 +139,6 @@ class Universe: AllStatic { static klassOop _objectArrayKlassObj; - static klassOop _symbolKlassObj; static klassOop _methodKlassObj; static klassOop _constMethodKlassObj; static klassOop _methodDataKlassObj; @@ -198,8 +197,6 @@ class Universe: AllStatic { // the vm thread. static oop _vm_exception; - static oop _emptySymbol; // Canonical empty string ("") symbol - // The particular choice of collected heap. static CollectedHeap* _collectedHeap; @@ -273,7 +270,6 @@ class Universe: AllStatic { return _typeArrayKlassObjs[t]; } - static klassOop symbolKlassObj() { return _symbolKlassObj; } static klassOop methodKlassObj() { return _methodKlassObj; } static klassOop constMethodKlassObj() { return _constMethodKlassObj; } static klassOop methodDataKlassObj() { return _methodDataKlassObj; } @@ -287,9 +283,8 @@ class Universe: AllStatic { static klassOop compiledICHolderKlassObj() { return _compiledICHolderKlassObj; } static klassOop systemObjArrayKlassObj() { return _systemObjArrayKlassObj; } - // Known objects in tbe VM - static oop int_mirror() { return check_mirror(_int_mirror); -} + // Known objects in the VM + static oop int_mirror() { return check_mirror(_int_mirror); } static oop float_mirror() { return check_mirror(_float_mirror); } static oop double_mirror() { return check_mirror(_double_mirror); } static oop byte_mirror() { return check_mirror(_byte_mirror); } @@ -327,7 +322,6 @@ class Universe: AllStatic { static oop arithmetic_exception_instance() { return _arithmetic_exception_instance; } static oop virtual_machine_error_instance() { return _virtual_machine_error_instance; } static oop vm_exception() { return _vm_exception; } - static oop emptySymbol() { return _emptySymbol; } // OutOfMemoryError support. Returns an error with the required message. The returned error // may or may not have a backtrace. If error has a backtrace then the stack trace is already diff --git a/hotspot/src/share/vm/oops/arrayKlass.cpp b/hotspot/src/share/vm/oops/arrayKlass.cpp index 2022bb88c7e..b17a30570a7 100644 --- a/hotspot/src/share/vm/oops/arrayKlass.cpp +++ b/hotspot/src/share/vm/oops/arrayKlass.cpp @@ -64,7 +64,7 @@ oop arrayKlass::multi_allocate(int rank, jint* sizes, TRAPS) { return NULL; } -methodOop arrayKlass::uncached_lookup_method(symbolOop name, symbolOop signature) const { +methodOop arrayKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const { // There are no methods in an array klass but the super class (Object) has some assert(super(), "super klass must be present"); return Klass::cast(super())->uncached_lookup_method(name, signature); diff --git a/hotspot/src/share/vm/oops/arrayKlass.hpp b/hotspot/src/share/vm/oops/arrayKlass.hpp index dff8363b2f0..cfc06274cdf 100644 --- a/hotspot/src/share/vm/oops/arrayKlass.hpp +++ b/hotspot/src/share/vm/oops/arrayKlass.hpp @@ -84,7 +84,7 @@ class arrayKlass: public Klass { objArrayOop allocate_arrayArray(int n, int length, TRAPS); // Lookup operations - methodOop uncached_lookup_method(symbolOop name, symbolOop signature) const; + methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const; // Casting from klassOop static arrayKlass* cast(klassOop k) { diff --git a/hotspot/src/share/vm/oops/arrayOop.cpp b/hotspot/src/share/vm/oops/arrayOop.cpp index 304f1219fb0..896b7bff5e5 100644 --- a/hotspot/src/share/vm/oops/arrayOop.cpp +++ b/hotspot/src/share/vm/oops/arrayOop.cpp @@ -26,6 +26,6 @@ #include "oops/arrayOop.hpp" #include "oops/objArrayOop.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" // <> diff --git a/hotspot/src/share/vm/oops/constantPoolKlass.cpp b/hotspot/src/share/vm/oops/constantPoolKlass.cpp index a7243c98d25..85d363b3e5a 100644 --- a/hotspot/src/share/vm/oops/constantPoolKlass.cpp +++ b/hotspot/src/share/vm/oops/constantPoolKlass.cpp @@ -33,7 +33,7 @@ #include "oops/constantPoolOop.hpp" #include "oops/oop.inline.hpp" #include "oops/oop.inline2.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/handles.inline.hpp" #ifdef TARGET_OS_FAMILY_linux # include "thread_linux.inline.hpp" @@ -388,8 +388,12 @@ void constantPoolKlass::oop_print_on(oop obj, outputStream* st) { case JVM_CONSTANT_UnresolvedClass : // fall-through case JVM_CONSTANT_UnresolvedClassInError: { // unresolved_klass_at requires lock or safe world. - oop entry = *cp->obj_at_addr(index); - entry->print_value_on(st); + CPSlot entry = cp->slot_at(index); + if (entry.is_oop()) { + entry.get_oop()->print_value_on(st); + } else { + entry.get_symbol()->print_value_on(st); + } } break; case JVM_CONSTANT_MethodHandle : @@ -450,36 +454,43 @@ void constantPoolKlass::oop_verify_on(oop obj, outputStream* st) { constantPoolOop cp = constantPoolOop(obj); guarantee(cp->is_perm(), "should be in permspace"); if (!cp->partially_loaded()) { - oop* base = (oop*)cp->base(); for (int i = 0; i< cp->length(); i++) { + CPSlot entry = cp->slot_at(i); if (cp->tag_at(i).is_klass()) { - guarantee((*base)->is_perm(), "should be in permspace"); - guarantee((*base)->is_klass(), "should be klass"); + if (entry.is_oop()) { + guarantee(entry.get_oop()->is_perm(), "should be in permspace"); + guarantee(entry.get_oop()->is_klass(), "should be klass"); + } } if (cp->tag_at(i).is_unresolved_klass()) { - guarantee((*base)->is_perm(), "should be in permspace"); - guarantee((*base)->is_symbol() || (*base)->is_klass(), - "should be symbol or klass"); + if (entry.is_oop()) { + guarantee(entry.get_oop()->is_perm(), "should be in permspace"); + guarantee(entry.get_oop()->is_klass(), "should be klass"); + } } if (cp->tag_at(i).is_symbol()) { - guarantee((*base)->is_perm(), "should be in permspace"); - guarantee((*base)->is_symbol(), "should be symbol"); + guarantee(entry.get_symbol()->refcount() != 0, "should have nonzero reference count"); } if (cp->tag_at(i).is_unresolved_string()) { - guarantee((*base)->is_perm(), "should be in permspace"); - guarantee((*base)->is_symbol() || (*base)->is_instance(), - "should be symbol or instance"); + if (entry.is_oop()) { + guarantee(entry.get_oop()->is_perm(), "should be in permspace"); + guarantee(entry.get_oop()->is_instance(), "should be instance"); + } + else { + guarantee(entry.get_symbol()->refcount() != 0, "should have nonzero reference count"); + } } if (cp->tag_at(i).is_string()) { if (!cp->has_pseudo_string()) { - guarantee((*base)->is_perm(), "should be in permspace"); - guarantee((*base)->is_instance(), "should be instance"); + if (entry.is_oop()) { + guarantee(entry.get_oop()->is_perm(), "should be in permspace"); + guarantee(entry.get_oop()->is_instance(), "should be instance"); + } } else { // can be non-perm, can be non-instance (array) } } // FIXME: verify JSR 292 tags JVM_CONSTANT_MethodHandle, etc. - base++; } guarantee(cp->tags()->is_perm(), "should be in permspace"); guarantee(cp->tags()->is_typeArray(), "should be type array"); diff --git a/hotspot/src/share/vm/oops/constantPoolOop.cpp b/hotspot/src/share/vm/oops/constantPoolOop.cpp index 8c5cf8aa042..605d33329d2 100644 --- a/hotspot/src/share/vm/oops/constantPoolOop.cpp +++ b/hotspot/src/share/vm/oops/constantPoolOop.cpp @@ -52,13 +52,14 @@ void constantPoolOopDesc::set_flag_at(FlagBit fb) { } klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int which, TRAPS) { - // A resolved constantPool entry will contain a klassOop, otherwise a symbolOop. + // A resolved constantPool entry will contain a klassOop, otherwise a Symbol*. // It is not safe to rely on the tag bit's here, since we don't have a lock, and the entry and // tag is not updated atomicly. - oop entry = *(this_oop->obj_at_addr(which)); - if (entry->is_klass()) { + CPSlot entry = this_oop->slot_at(which); + if (entry.is_oop()) { + assert(entry.get_oop()->is_klass(), "must be"); // Already resolved - return entry. - return (klassOop)entry; + return (klassOop)entry.get_oop(); } // Acquire lock on constant oop while doing update. After we get the lock, we check if another object @@ -67,7 +68,7 @@ klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int whi bool do_resolve = false; bool in_error = false; - symbolHandle name; + Symbol* name = NULL; Handle loader; { ObjectLocker ol(this_oop, THREAD); @@ -76,7 +77,7 @@ klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int whi in_error = true; } else { do_resolve = true; - name = symbolHandle(THREAD, this_oop->unresolved_klass_at(which)); + name = this_oop->unresolved_klass_at(which); loader = Handle(THREAD, instanceKlass::cast(this_oop->pool_holder())->class_loader()); } } @@ -86,8 +87,8 @@ klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int whi // The original attempt to resolve this constant pool entry failed so find the // original error and throw it again (JVMS 5.4.3). if (in_error) { - symbolOop error = SystemDictionary::find_resolution_error(this_oop, which); - guarantee(error != (symbolOop)NULL, "tag mismatch with resolution error table"); + Symbol* error = SystemDictionary::find_resolution_error(this_oop, which); + guarantee(error != (Symbol*)NULL, "tag mismatch with resolution error table"); ResourceMark rm; // exception text will be the class name const char* className = this_oop->unresolved_klass_at(which)->as_C_string(); @@ -110,7 +111,7 @@ klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int whi // to resolve this constant pool entry fail with the same error (JVMS 5.4.3). if (HAS_PENDING_EXCEPTION) { ResourceMark rm; - symbolHandle error(PENDING_EXCEPTION->klass()->klass_part()->name()); + Symbol* error = PENDING_EXCEPTION->klass()->klass_part()->name(); bool throw_orig_error = false; { @@ -120,7 +121,7 @@ klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int whi if (this_oop->tag_at(which).is_klass()) { CLEAR_PENDING_EXCEPTION; entry = this_oop->resolved_klass_at(which); - return (klassOop)entry; + return (klassOop)entry.get_oop(); } if (!PENDING_EXCEPTION-> @@ -135,8 +136,8 @@ klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int whi this_oop->tag_at_put(which, JVM_CONSTANT_UnresolvedClassInError); } else { // some other thread has put the class in error state. - error = symbolHandle(SystemDictionary::find_resolution_error(this_oop, which)); - assert(!error.is_null(), "checking"); + error = SystemDictionary::find_resolution_error(this_oop, which); + assert(error != NULL, "checking"); throw_orig_error = true; } } // unlocked @@ -162,7 +163,7 @@ klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int whi vframeStream vfst(JavaThread::current()); if (!vfst.at_end()) { line_number = vfst.method()->line_number_from_bci(vfst.bci()); - symbolOop s = instanceKlass::cast(vfst.method()->method_holder())->source_file_name(); + Symbol* s = instanceKlass::cast(vfst.method()->method_holder())->source_file_name(); if (s != NULL) { source_file = s->as_C_string(); } @@ -192,8 +193,8 @@ klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int whi } entry = this_oop->resolved_klass_at(which); - assert(entry->is_klass(), "must be resolved at this point"); - return (klassOop)entry; + assert(entry.is_oop() && entry.get_oop()->is_klass(), "must be resolved at this point"); + return (klassOop)entry.get_oop(); } @@ -202,13 +203,14 @@ klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int whi // instanceof operations. Returns NULL if the class has not been loaded or // if the verification of constant pool failed klassOop constantPoolOopDesc::klass_at_if_loaded(constantPoolHandle this_oop, int which) { - oop entry = *this_oop->obj_at_addr(which); - if (entry->is_klass()) { - return (klassOop)entry; + CPSlot entry = this_oop->slot_at(which); + if (entry.is_oop()) { + assert(entry.get_oop()->is_klass(), "must be"); + return (klassOop)entry.get_oop(); } else { - assert(entry->is_symbol(), "must be either symbol or klass"); + assert(entry.is_metadata(), "must be either symbol or klass"); Thread *thread = Thread::current(); - symbolHandle name (thread, (symbolOop)entry); + Symbol* name = entry.get_symbol(); oop loader = instanceKlass::cast(this_oop->pool_holder())->class_loader(); oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain(); Handle h_prot (thread, protection_domain); @@ -244,12 +246,13 @@ klassOop constantPoolOopDesc::klass_ref_at_if_loaded(constantPoolHandle this_oop // Note: We cannot update the ConstantPool from the vm_thread. klassOop constantPoolOopDesc::klass_ref_at_if_loaded_check(constantPoolHandle this_oop, int index, TRAPS) { int which = this_oop->klass_ref_index_at(index); - oop entry = *this_oop->obj_at_addr(which); - if (entry->is_klass()) { - return (klassOop)entry; + CPSlot entry = this_oop->slot_at(which); + if (entry.is_oop()) { + assert(entry.get_oop()->is_klass(), "must be"); + return (klassOop)entry.get_oop(); } else { - assert(entry->is_symbol(), "must be either symbol or klass"); - symbolHandle name (THREAD, (symbolOop)entry); + assert(entry.is_metadata(), "must be either symbol or klass"); + Symbol* name = entry.get_symbol(); oop loader = instanceKlass::cast(this_oop->pool_holder())->class_loader(); oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain(); Handle h_loader(THREAD, loader); @@ -263,13 +266,13 @@ klassOop constantPoolOopDesc::klass_ref_at_if_loaded_check(constantPoolHandle th } -symbolOop constantPoolOopDesc::impl_name_ref_at(int which, bool uncached) { +Symbol* constantPoolOopDesc::impl_name_ref_at(int which, bool uncached) { int name_index = name_ref_index_at(impl_name_and_type_ref_index_at(which, uncached)); return symbol_at(name_index); } -symbolOop constantPoolOopDesc::impl_signature_ref_at(int which, bool uncached) { +Symbol* constantPoolOopDesc::impl_signature_ref_at(int which, bool uncached) { int signature_index = signature_ref_index_at(impl_name_and_type_ref_index_at(which, uncached)); return symbol_at(signature_index); } @@ -361,39 +364,40 @@ klassOop constantPoolOopDesc::klass_ref_at(int which, TRAPS) { } -symbolOop constantPoolOopDesc::klass_name_at(int which) { +Symbol* constantPoolOopDesc::klass_name_at(int which) { assert(tag_at(which).is_unresolved_klass() || tag_at(which).is_klass(), "Corrupted constant pool"); - // A resolved constantPool entry will contain a klassOop, otherwise a symbolOop. + // A resolved constantPool entry will contain a klassOop, otherwise a Symbol*. // It is not safe to rely on the tag bit's here, since we don't have a lock, and the entry and // tag is not updated atomicly. - oop entry = *(obj_at_addr(which)); - if (entry->is_klass()) { + CPSlot entry = slot_at(which); + if (entry.is_oop()) { // Already resolved - return entry's name. - return klassOop(entry)->klass_part()->name(); + assert(entry.get_oop()->is_klass(), "must be"); + return klassOop(entry.get_oop())->klass_part()->name(); } else { - assert(entry->is_symbol(), "must be either symbol or klass"); - return (symbolOop)entry; + assert(entry.is_metadata(), "must be either symbol or klass"); + return entry.get_symbol(); } } -symbolOop constantPoolOopDesc::klass_ref_at_noresolve(int which) { +Symbol* constantPoolOopDesc::klass_ref_at_noresolve(int which) { jint ref_index = klass_ref_index_at(which); return klass_at_noresolve(ref_index); } -symbolOop constantPoolOopDesc::uncached_klass_ref_at_noresolve(int which) { +Symbol* constantPoolOopDesc::uncached_klass_ref_at_noresolve(int which) { jint ref_index = uncached_klass_ref_index_at(which); return klass_at_noresolve(ref_index); } char* constantPoolOopDesc::string_at_noresolve(int which) { // Test entry type in case string is resolved while in here. - oop entry = *(obj_at_addr(which)); - if (entry->is_symbol()) { - return ((symbolOop)entry)->as_C_string(); - } else if (java_lang_String::is_instance(entry)) { - return java_lang_String::as_utf8_string(entry); + CPSlot entry = slot_at(which); + if (entry.is_metadata()) { + return (entry.get_symbol())->as_C_string(); + } else if (java_lang_String::is_instance(entry.get_oop())) { + return java_lang_String::as_utf8_string(entry.get_oop()); } else { return (char*)""; } @@ -498,8 +502,8 @@ oop constantPoolOopDesc::resolve_constant_at_impl(constantPoolHandle this_oop, i { int ref_kind = this_oop->method_handle_ref_kind_at(index); int callee_index = this_oop->method_handle_klass_index_at(index); - symbolHandle name(THREAD, this_oop->method_handle_name_ref_at(index)); - symbolHandle signature(THREAD, this_oop->method_handle_signature_ref_at(index)); + Symbol* name = this_oop->method_handle_name_ref_at(index); + Symbol* signature = this_oop->method_handle_signature_ref_at(index); if (PrintMiscellaneous) tty->print_cr("resolve JVM_CONSTANT_MethodHandle:%d [%d/%d/%d] %s.%s", ref_kind, index, this_oop->method_handle_index_at(index), @@ -524,7 +528,7 @@ oop constantPoolOopDesc::resolve_constant_at_impl(constantPoolHandle this_oop, i case JVM_CONSTANT_MethodType: { - symbolHandle signature(THREAD, this_oop->method_type_signature_at(index)); + Symbol* signature = this_oop->method_type_signature_at(index); if (PrintMiscellaneous) tty->print_cr("resolve JVM_CONSTANT_MethodType [%d/%d] %s", index, this_oop->method_type_index_at(index), @@ -605,30 +609,33 @@ oop constantPoolOopDesc::resolve_constant_at_impl(constantPoolHandle this_oop, i } oop constantPoolOopDesc::string_at_impl(constantPoolHandle this_oop, int which, TRAPS) { - oop entry = *(this_oop->obj_at_addr(which)); - if (entry->is_symbol()) { + oop str = NULL; + CPSlot entry = this_oop->slot_at(which); + if (entry.is_metadata()) { ObjectLocker ol(this_oop, THREAD); if (this_oop->tag_at(which).is_unresolved_string()) { // Intern string - symbolOop sym = this_oop->unresolved_string_at(which); - entry = StringTable::intern(sym, CHECK_(constantPoolOop(NULL))); - this_oop->string_at_put(which, entry); + Symbol* sym = this_oop->unresolved_string_at(which); + str = StringTable::intern(sym, CHECK_(constantPoolOop(NULL))); + this_oop->string_at_put(which, str); } else { // Another thread beat us and interned string, read string from constant pool - entry = this_oop->resolved_string_at(which); + str = this_oop->resolved_string_at(which); } + } else { + str = entry.get_oop(); } - assert(java_lang_String::is_instance(entry), "must be string"); - return entry; + assert(java_lang_String::is_instance(str), "must be string"); + return str; } bool constantPoolOopDesc::is_pseudo_string_at(int which) { - oop entry = *(obj_at_addr(which)); - if (entry->is_symbol()) + CPSlot entry = slot_at(which); + if (entry.is_metadata()) // Not yet resolved, but it will resolve to a string. return false; - else if (java_lang_String::is_instance(entry)) + else if (java_lang_String::is_instance(entry.get_oop())) return false; // actually, it might be a non-interned or non-perm string else // truly pseudo @@ -638,8 +645,8 @@ bool constantPoolOopDesc::is_pseudo_string_at(int which) { bool constantPoolOopDesc::klass_name_at_matches(instanceKlassHandle k, int which) { - // Names are interned, so we can compare symbolOops directly - symbolOop cp_name = klass_name_at(which); + // Names are interned, so we can compare Symbol*s directly + Symbol* cp_name = klass_name_at(which); return (cp_name == k->name()); } @@ -650,7 +657,7 @@ int constantPoolOopDesc::pre_resolve_shared_klasses(TRAPS) { for (int index = 1; index < tags()->length(); index++) { // Index 0 is unused if (tag_at(index).is_unresolved_string()) { // Intern string - symbolOop sym = unresolved_string_at(index); + Symbol* sym = unresolved_string_at(index); oop entry = StringTable::intern(sym, CHECK_(-1)); string_at_put(index, entry); } @@ -658,23 +665,39 @@ int constantPoolOopDesc::pre_resolve_shared_klasses(TRAPS) { return count; } +// Iterate over symbols and decrement ones which are Symbol*s. +// This is done during GC so do not need to lock constantPool unless we +// have per-thread safepoints. +// Only decrement the UTF8 symbols. Unresolved classes and strings point to +// these symbols but didn't increment the reference count. +void constantPoolOopDesc::unreference_symbols() { + for (int index = 1; index < length(); index++) { // Index 0 is unused + constantTag tag = tag_at(index); + if (tag.is_symbol()) { + symbol_at(index)->decrement_refcount(); + } + } +} // Iterate over symbols which are used as class, field, method names and // signatures (in preparation for writing to the shared archive). -void constantPoolOopDesc::shared_symbols_iterate(OopClosure* closure) { +void constantPoolOopDesc::shared_symbols_iterate(SymbolClosure* closure) { for (int index = 1; index < length(); index++) { // Index 0 is unused switch (tag_at(index).value()) { case JVM_CONSTANT_UnresolvedClass: - closure->do_oop(obj_at_addr(index)); + case JVM_CONSTANT_UnresolvedString: + case JVM_CONSTANT_Utf8: + assert(slot_at(index).is_metadata(), "must be symbol"); + closure->do_symbol(symbol_at_addr(index)); break; case JVM_CONSTANT_NameAndType: { int i = *int_at_addr(index); - closure->do_oop(obj_at_addr((unsigned)i >> 16)); - closure->do_oop(obj_at_addr((unsigned)i & 0xffff)); + closure->do_symbol(symbol_at_addr((unsigned)i >> 16)); + closure->do_symbol(symbol_at_addr((unsigned)i & 0xffff)); } break; @@ -692,12 +715,6 @@ void constantPoolOopDesc::shared_symbols_iterate(OopClosure* closure) { // Do nothing! Not a symbol. break; - case JVM_CONSTANT_UnresolvedString: - case JVM_CONSTANT_Utf8: - // These constants are symbols, but unless these symbols are - // actually to be used for something, we don't want to mark them. - break; - case JVM_CONSTANT_Long: case JVM_CONSTANT_Double: // Do nothing! Not an oop. (But takes two pool entries.) @@ -744,7 +761,7 @@ void constantPoolOopDesc::shared_strings_iterate(OopClosure* closure) { break; case JVM_CONSTANT_String: - closure->do_oop(obj_at_addr(index)); + closure->do_oop(obj_at_addr_raw(index)); break; case JVM_CONSTANT_UnresolvedString: @@ -904,8 +921,8 @@ bool constantPoolOopDesc::compare_entry_to(int index1, constantPoolHandle cp2, case JVM_CONSTANT_UnresolvedClass: { - symbolOop k1 = unresolved_klass_at(index1); - symbolOop k2 = cp2->unresolved_klass_at(index2); + Symbol* k1 = unresolved_klass_at(index1); + Symbol* k2 = cp2->unresolved_klass_at(index2); if (k1 == k2) { return true; } @@ -960,8 +977,8 @@ bool constantPoolOopDesc::compare_entry_to(int index1, constantPoolHandle cp2, case JVM_CONSTANT_UnresolvedString: { - symbolOop s1 = unresolved_string_at(index1); - symbolOop s2 = cp2->unresolved_string_at(index2); + Symbol* s1 = unresolved_string_at(index1); + Symbol* s2 = cp2->unresolved_string_at(index2); if (s1 == s2) { return true; } @@ -969,8 +986,8 @@ bool constantPoolOopDesc::compare_entry_to(int index1, constantPoolHandle cp2, case JVM_CONSTANT_Utf8: { - symbolOop s1 = symbol_at(index1); - symbolOop s2 = cp2->symbol_at(index2); + Symbol* s1 = symbol_at(index1); + Symbol* s2 = cp2->symbol_at(index2); if (s1 == s2) { return true; } @@ -1158,13 +1175,13 @@ void constantPoolOopDesc::copy_entry_to(constantPoolHandle from_cp, int from_i, case JVM_CONSTANT_UnresolvedClass: { - symbolOop k = from_cp->unresolved_klass_at(from_i); + Symbol* k = from_cp->unresolved_klass_at(from_i); to_cp->unresolved_klass_at_put(to_i, k); } break; case JVM_CONSTANT_UnresolvedClassInError: { - symbolOop k = from_cp->unresolved_klass_at(from_i); + Symbol* k = from_cp->unresolved_klass_at(from_i); to_cp->unresolved_klass_at_put(to_i, k); to_cp->tag_at_put(to_i, JVM_CONSTANT_UnresolvedClassInError); } break; @@ -1172,14 +1189,16 @@ void constantPoolOopDesc::copy_entry_to(constantPoolHandle from_cp, int from_i, case JVM_CONSTANT_UnresolvedString: { - symbolOop s = from_cp->unresolved_string_at(from_i); + Symbol* s = from_cp->unresolved_string_at(from_i); to_cp->unresolved_string_at_put(to_i, s); } break; case JVM_CONSTANT_Utf8: { - symbolOop s = from_cp->symbol_at(from_i); + Symbol* s = from_cp->symbol_at(from_i); to_cp->symbol_at_put(to_i, s); + // This constantPool has the same lifetime as the original, so don't + // increase reference counts for the copy. } break; case JVM_CONSTANT_MethodType: @@ -1453,7 +1472,7 @@ jint constantPoolOopDesc::hash_entries_to(SymbolHashMap *symmap, switch(tag) { case JVM_CONSTANT_Utf8: { - symbolOop sym = symbol_at(idx); + Symbol* sym = symbol_at(idx); symmap->add_entry(sym, idx); DBG(printf("adding symbol entry %s = %d\n", sym->as_utf8(), idx)); break; @@ -1461,7 +1480,7 @@ jint constantPoolOopDesc::hash_entries_to(SymbolHashMap *symmap, case JVM_CONSTANT_Class: case JVM_CONSTANT_UnresolvedClass: case JVM_CONSTANT_UnresolvedClassInError: { - symbolOop sym = klass_name_at(idx); + Symbol* sym = klass_name_at(idx); classmap->add_entry(sym, idx); DBG(printf("adding class entry %s = %d\n", sym->as_utf8(), idx)); break; @@ -1509,7 +1528,7 @@ int constantPoolOopDesc::copy_cpool_bytes(int cpool_size, break; } case JVM_CONSTANT_Utf8: { - symbolOop sym = symbol_at(idx); + Symbol* sym = symbol_at(idx); char* str = sym->as_utf8(); // Warning! It's crashing on x86 with len = sym->utf8_length() int len = (int) strlen(str); @@ -1546,7 +1565,7 @@ int constantPoolOopDesc::copy_cpool_bytes(int cpool_size, case JVM_CONSTANT_UnresolvedClass: case JVM_CONSTANT_UnresolvedClassInError: { *bytes = JVM_CONSTANT_Class; - symbolOop sym = klass_name_at(idx); + Symbol* sym = klass_name_at(idx); idx1 = tbl->symbol_to_value(sym); assert(idx1 != 0, "Have not found a hashtable entry"); Bytes::put_Java_u2((address) (bytes+1), idx1); @@ -1556,19 +1575,19 @@ int constantPoolOopDesc::copy_cpool_bytes(int cpool_size, case JVM_CONSTANT_String: { unsigned int hash; char *str = string_at_noresolve(idx); - symbolOop sym = SymbolTable::lookup_only(str, (int) strlen(str), hash); + TempNewSymbol sym = SymbolTable::lookup_only(str, (int) strlen(str), hash); if (sym == NULL) { // sym can be NULL if string refers to incorrectly encoded JVM_CONSTANT_Utf8 // this can happen with JVM TI; see CR 6839599 for more details - oop string = *(obj_at_addr(idx)); + oop string = *(obj_at_addr_raw(idx)); assert(java_lang_String::is_instance(string),"Not a String"); DBG(printf("Error #%03hd tag=%03hd\n", idx, tag)); idx1 = 0; for (int j = 0; j < tbl->table_size() && idx1 == 0; j++) { for (SymbolHashMapEntry* cur = tbl->bucket(j); cur != NULL; cur = cur->next()) { int length; - sym = cur->symbol(); - jchar* chars = sym->as_unicode(length); + Symbol* s = cur->symbol(); + jchar* chars = s->as_unicode(length); if (java_lang_String::equals(string, chars, length)) { idx1 = cur->value(); DBG(printf("Index found: %d\n",idx1)); @@ -1586,7 +1605,7 @@ int constantPoolOopDesc::copy_cpool_bytes(int cpool_size, } case JVM_CONSTANT_UnresolvedString: { *bytes = JVM_CONSTANT_String; - symbolOop sym = unresolved_string_at(idx); + Symbol* sym = unresolved_string_at(idx); idx1 = tbl->symbol_to_value(sym); assert(idx1 != 0, "Have not found a hashtable entry"); Bytes::put_Java_u2((address) (bytes+1), idx1); @@ -1666,7 +1685,7 @@ int constantPoolOopDesc::copy_cpool_bytes(int cpool_size, } /* end copy_cpool_bytes */ -void SymbolHashMap::add_entry(symbolOop sym, u2 value) { +void SymbolHashMap::add_entry(Symbol* sym, u2 value) { char *str = sym->as_utf8(); unsigned int hash = compute_hash(str, sym->utf8_length()); unsigned int index = hash % table_size(); @@ -1687,7 +1706,7 @@ void SymbolHashMap::add_entry(symbolOop sym, u2 value) { assert(entry->symbol() != NULL, "SymbolHashMapEntry symbol is NULL"); } -SymbolHashMapEntry* SymbolHashMap::find_entry(symbolOop sym) { +SymbolHashMapEntry* SymbolHashMap::find_entry(Symbol* sym) { assert(sym != NULL, "SymbolHashMap::find_entry - symbol is NULL"); char *str = sym->as_utf8(); int len = sym->utf8_length(); diff --git a/hotspot/src/share/vm/oops/constantPoolOop.hpp b/hotspot/src/share/vm/oops/constantPoolOop.hpp index 53929c3c8dc..fa482a5c4da 100644 --- a/hotspot/src/share/vm/oops/constantPoolOop.hpp +++ b/hotspot/src/share/vm/oops/constantPoolOop.hpp @@ -27,6 +27,7 @@ #include "oops/arrayOop.hpp" #include "oops/cpCacheOop.hpp" +#include "oops/symbol.hpp" #include "oops/typeArrayOop.hpp" #include "utilities/constantTag.hpp" #ifdef TARGET_ARCH_x86 @@ -38,6 +39,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif // A constantPool is an array containing class constants as described in the // class file. @@ -47,10 +54,32 @@ // modified when the entry is resolved. If a klass or string constant pool // entry is read without a lock, only the resolved state guarantees that // the entry in the constant pool is a klass or String object and -// not a symbolOop. +// not a Symbol*. class SymbolHashMap; +class CPSlot VALUE_OBJ_CLASS_SPEC { + intptr_t _ptr; + public: + CPSlot(intptr_t ptr): _ptr(ptr) {} + CPSlot(void* ptr): _ptr((intptr_t)ptr) {} + CPSlot(oop ptr): _ptr((intptr_t)ptr) {} + CPSlot(Symbol* ptr): _ptr((intptr_t)ptr | 1) {} + + intptr_t value() { return _ptr; } + bool is_oop() { return (_ptr & 1) == 0; } + bool is_metadata() { return (_ptr & 1) == 1; } + + oop get_oop() { + assert(is_oop(), "bad call"); + return oop(_ptr); + } + Symbol* get_symbol() { + assert(is_metadata(), "bad call"); + return (Symbol*)(_ptr & ~1); + } +}; + class constantPoolOopDesc : public oopDesc { friend class VMStructs; friend class BytecodeInterpreter; // Directly extracts an oop in the pool for fast instanceof/checkcast @@ -89,11 +118,41 @@ class constantPoolOopDesc : public oopDesc { oop* cache_addr() { return (oop*)&_cache; } oop* operands_addr() { return (oop*)&_operands; } - oop* obj_at_addr(int which) const { + CPSlot slot_at(int which) { + assert(is_within_bounds(which), "index out of bounds"); + // There's a transitional value of zero when converting from + // Symbol->0->Klass for G1 when resolving classes and strings. + // wait for the value to be non-zero (this is temporary) + volatile intptr_t adr = (intptr_t)OrderAccess::load_ptr_acquire(obj_at_addr_raw(which)); + if (adr == 0 && which != 0) { + constantTag t = tag_at(which); + if (t.is_unresolved_klass() || t.is_klass() || + t.is_unresolved_string() || t.is_string()) { + while ((adr = (intptr_t)OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))) == 0); + } + } + return CPSlot(adr); + } + + void slot_at_put(int which, CPSlot s) const { + assert(is_within_bounds(which), "index out of bounds"); + *(intptr_t*)&base()[which] = s.value(); + } + oop* obj_at_addr_raw(int which) const { assert(is_within_bounds(which), "index out of bounds"); return (oop*) &base()[which]; } + void obj_at_put_without_check(int which, oop o) { + assert(is_within_bounds(which), "index out of bounds"); + oop_store_without_check((volatile oop *)obj_at_addr_raw(which), o); + } + + void obj_at_put(int which, oop o) const { + assert(is_within_bounds(which), "index out of bounds"); + oop_store((volatile oop*)obj_at_addr_raw(which), o); + } + jint* int_at_addr(int which) const { assert(is_within_bounds(which), "index out of bounds"); return (jint*) &base()[which]; @@ -141,15 +200,20 @@ class constantPoolOopDesc : public oopDesc { // Storing constants void klass_at_put(int which, klassOop k) { - oop_store_without_check((volatile oop *)obj_at_addr(which), oop(k)); + // Overwrite the old index with a GC friendly value so + // that if G1 looks during the transition during oop_store it won't + // assert the symbol is not an oop. + *obj_at_addr_raw(which) = NULL; + assert(k != NULL, "resolved class shouldn't be null"); + obj_at_put_without_check(which, k); // The interpreter assumes when the tag is stored, the klass is resolved - // and the klassOop is a klass rather than a symbolOop, so we need + // and the klassOop is a klass rather than a Symbol*, so we need // hardware store ordering here. release_tag_at_put(which, JVM_CONSTANT_Class); if (UseConcMarkSweepGC) { // In case the earlier card-mark was consumed by a concurrent // marking thread before the tag was updated, redirty the card. - oop_store_without_check((volatile oop *)obj_at_addr(which), oop(k)); + obj_at_put_without_check(which, k); } } @@ -160,13 +224,9 @@ class constantPoolOopDesc : public oopDesc { } // Temporary until actual use - void unresolved_klass_at_put(int which, symbolOop s) { - // Overwrite the old index with a GC friendly value so - // that if GC looks during the transition it won't try - // to treat a small integer as oop. - *obj_at_addr(which) = NULL; + void unresolved_klass_at_put(int which, Symbol* s) { release_tag_at_put(which, JVM_CONSTANT_UnresolvedClass); - oop_store_without_check(obj_at_addr(which), oop(s)); + slot_at_put(which, s); } void method_handle_index_at_put(int which, int ref_kind, int ref_index) { @@ -191,10 +251,9 @@ class constantPoolOopDesc : public oopDesc { } // Temporary until actual use - void unresolved_string_at_put(int which, symbolOop s) { - *obj_at_addr(which) = NULL; + void unresolved_string_at_put(int which, Symbol* s) { release_tag_at_put(which, JVM_CONSTANT_UnresolvedString); - oop_store_without_check(obj_at_addr(which), oop(s)); + slot_at_put(which, s); } void int_at_put(int which, jint i) { @@ -220,28 +279,39 @@ class constantPoolOopDesc : public oopDesc { Bytes::put_native_u8((address) double_at_addr(which), *((u8*) &d)); } - void symbol_at_put(int which, symbolOop s) { + Symbol** symbol_at_addr(int which) const { + assert(is_within_bounds(which), "index out of bounds"); + return (Symbol**) &base()[which]; + } + + void symbol_at_put(int which, Symbol* s) { + assert(s->refcount() != 0, "should have nonzero refcount"); tag_at_put(which, JVM_CONSTANT_Utf8); - oop_store_without_check(obj_at_addr(which), oop(s)); + slot_at_put(which, s); } void string_at_put(int which, oop str) { - oop_store((volatile oop*)obj_at_addr(which), str); + // Overwrite the old index with a GC friendly value so + // that if G1 looks during the transition during oop_store it won't + // assert the symbol is not an oop. + *obj_at_addr_raw(which) = NULL; + assert(str != NULL, "resolved string shouldn't be null"); + obj_at_put(which, str); release_tag_at_put(which, JVM_CONSTANT_String); if (UseConcMarkSweepGC) { // In case the earlier card-mark was consumed by a concurrent // marking thread before the tag was updated, redirty the card. - oop_store_without_check((volatile oop *)obj_at_addr(which), str); + obj_at_put_without_check(which, str); } } void object_at_put(int which, oop str) { - oop_store((volatile oop*) obj_at_addr(which), str); + obj_at_put(which, str); release_tag_at_put(which, JVM_CONSTANT_Object); if (UseConcMarkSweepGC) { // In case the earlier card-mark was consumed by a concurrent // marking thread before the tag was updated, redirty the card. - oop_store_without_check((volatile oop*) obj_at_addr(which), str); + obj_at_put_without_check(which, str); } } @@ -279,13 +349,19 @@ class constantPoolOopDesc : public oopDesc { bool is_pointer_entry(int which) { constantTag tag = tag_at(which); return tag.is_klass() || - tag.is_unresolved_klass() || - tag.is_symbol() || - tag.is_unresolved_string() || tag.is_string() || tag.is_object(); } + // Whether the entry points to an object for ldc (resolved or not) + bool is_object_entry(int which) { + constantTag tag = tag_at(which); + return is_pointer_entry(which) || + tag.is_unresolved_klass() || + tag.is_unresolved_string() || + tag.is_symbol(); + } + // Fetching constants klassOop klass_at(int which, TRAPS) { @@ -293,25 +369,25 @@ class constantPoolOopDesc : public oopDesc { return klass_at_impl(h_this, which, CHECK_NULL); } - symbolOop klass_name_at(int which); // Returns the name, w/o resolving. + Symbol* klass_name_at(int which); // Returns the name, w/o resolving. klassOop resolved_klass_at(int which) { // Used by Compiler guarantee(tag_at(which).is_klass(), "Corrupted constant pool"); // Must do an acquire here in case another thread resolved the klass // behind our back, lest we later load stale values thru the oop. - return klassOop((oop)OrderAccess::load_ptr_acquire(obj_at_addr(which))); + return klassOop(CPSlot(OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))).get_oop()); } // This method should only be used with a cpool lock or during parsing or gc - symbolOop unresolved_klass_at(int which) { // Temporary until actual use - symbolOop s = symbolOop((oop)OrderAccess::load_ptr_acquire(obj_at_addr(which))); + Symbol* unresolved_klass_at(int which) { // Temporary until actual use + Symbol* s = CPSlot(OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))).get_symbol(); // check that the klass is still unresolved. assert(tag_at(which).is_unresolved_klass(), "Corrupted constant pool"); return s; } // RedefineClasses() API support: - symbolOop klass_at_noresolve(int which) { return klass_name_at(which); } + Symbol* klass_at_noresolve(int which) { return klass_name_at(which); } jint int_at(int which) { assert(tag_at(which).is_int(), "Corrupted constant pool"); @@ -336,9 +412,9 @@ class constantPoolOopDesc : public oopDesc { return *((jdouble*)&tmp); } - symbolOop symbol_at(int which) { + Symbol* symbol_at(int which) { assert(tag_at(which).is_utf8(), "Corrupted constant pool"); - return symbolOop(*obj_at_addr(which)); + return slot_at(which).get_symbol(); } oop string_at(int which, TRAPS) { @@ -348,7 +424,7 @@ class constantPoolOopDesc : public oopDesc { oop object_at(int which) { assert(tag_at(which).is_object(), "Corrupted constant pool"); - return *obj_at_addr(which); + return slot_at(which).get_oop(); } // A "pseudo-string" is an non-string oop that has found is way into @@ -362,7 +438,7 @@ class constantPoolOopDesc : public oopDesc { oop pseudo_string_at(int which) { assert(tag_at(which).is_string(), "Corrupted constant pool"); - return *obj_at_addr(which); + return slot_at(which).get_oop(); } void pseudo_string_at_put(int which, oop x) { @@ -378,12 +454,12 @@ class constantPoolOopDesc : public oopDesc { assert(tag_at(which).is_string(), "Corrupted constant pool"); // Must do an acquire here in case another thread resolved the klass // behind our back, lest we later load stale values thru the oop. - return (oop)OrderAccess::load_ptr_acquire(obj_at_addr(which)); + return CPSlot(OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))).get_oop(); } // This method should only be used with a cpool lock or during parsing or gc - symbolOop unresolved_string_at(int which) { // Temporary until actual use - symbolOop s = symbolOop((oop)OrderAccess::load_ptr_acquire(obj_at_addr(which))); + Symbol* unresolved_string_at(int which) { // Temporary until actual use + Symbol* s = CPSlot(OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))).get_symbol(); // check that the string is still unresolved. assert(tag_at(which).is_unresolved_string(), "Corrupted constant pool"); return s; @@ -391,7 +467,7 @@ class constantPoolOopDesc : public oopDesc { // Returns an UTF8 for a CONSTANT_String entry at a given index. // UTF8 char* representation was chosen to avoid conversion of - // java_lang_Strings at resolved entries into symbolOops + // java_lang_Strings at resolved entries into Symbol*s // or vice versa. // Caller is responsible for checking for pseudo-strings. char* string_at_noresolve(int which); @@ -414,11 +490,11 @@ class constantPoolOopDesc : public oopDesc { return *int_at_addr(which); } // Derived queries: - symbolOop method_handle_name_ref_at(int which) { + Symbol* method_handle_name_ref_at(int which) { int member = method_handle_index_at(which); return impl_name_ref_at(member, true); } - symbolOop method_handle_signature_ref_at(int which) { + Symbol* method_handle_signature_ref_at(int which) { int member = method_handle_index_at(which); return impl_signature_ref_at(member, true); } @@ -426,7 +502,7 @@ class constantPoolOopDesc : public oopDesc { int member = method_handle_index_at(which); return impl_klass_ref_index_at(member, true); } - symbolOop method_type_signature_at(int which) { + Symbol* method_type_signature_at(int which) { int sym = method_type_index_at(which); return symbol_at(sym); } @@ -534,9 +610,9 @@ class constantPoolOopDesc : public oopDesc { // Lookup for entries consisting of (klass_index, name_and_type index) klassOop klass_ref_at(int which, TRAPS); - symbolOop klass_ref_at_noresolve(int which); - symbolOop name_ref_at(int which) { return impl_name_ref_at(which, false); } - symbolOop signature_ref_at(int which) { return impl_signature_ref_at(which, false); } + Symbol* klass_ref_at_noresolve(int which); + Symbol* name_ref_at(int which) { return impl_name_ref_at(which, false); } + Symbol* signature_ref_at(int which) { return impl_signature_ref_at(which, false); } int klass_ref_index_at(int which) { return impl_klass_ref_index_at(which, false); } int name_and_type_ref_index_at(int which) { return impl_name_and_type_ref_index_at(which, false); } @@ -605,15 +681,15 @@ class constantPoolOopDesc : public oopDesc { // Routines currently used for annotations (only called by jvm.cpp) but which might be used in the // future by other Java code. These take constant pool indices rather than // constant pool cache indices as do the peer methods above. - symbolOop uncached_klass_ref_at_noresolve(int which); - symbolOop uncached_name_ref_at(int which) { return impl_name_ref_at(which, true); } - symbolOop uncached_signature_ref_at(int which) { return impl_signature_ref_at(which, true); } + Symbol* uncached_klass_ref_at_noresolve(int which); + Symbol* uncached_name_ref_at(int which) { return impl_name_ref_at(which, true); } + Symbol* uncached_signature_ref_at(int which) { return impl_signature_ref_at(which, true); } int uncached_klass_ref_index_at(int which) { return impl_klass_ref_index_at(which, true); } int uncached_name_and_type_ref_index_at(int which) { return impl_name_and_type_ref_index_at(which, true); } // Sharing int pre_resolve_shared_klasses(TRAPS); - void shared_symbols_iterate(OopClosure* closure0); + void shared_symbols_iterate(SymbolClosure* closure0); void shared_tags_iterate(OopClosure* closure0); void shared_strings_iterate(OopClosure* closure0); @@ -628,8 +704,8 @@ class constantPoolOopDesc : public oopDesc { private: - symbolOop impl_name_ref_at(int which, bool uncached); - symbolOop impl_signature_ref_at(int which, bool uncached); + Symbol* impl_name_ref_at(int which, bool uncached); + Symbol* impl_signature_ref_at(int which, bool uncached); int impl_klass_ref_index_at(int which, bool uncached); int impl_name_and_type_ref_index_at(int which, bool uncached); @@ -672,6 +748,9 @@ class constantPoolOopDesc : public oopDesc { int orig_length() const { return _orig_length; } void set_orig_length(int orig_length) { _orig_length = orig_length; } + // Decrease ref counts of symbols that are in the constant pool + // when the holder class is unloaded + void unreference_symbols(); // JVMTI accesss - GetConstantPool, RetransformClasses, ... friend class JvmtiConstantPoolReconstituter; @@ -694,7 +773,7 @@ class SymbolHashMapEntry : public CHeapObj { private: unsigned int _hash; // 32-bit hash for item SymbolHashMapEntry* _next; // Next element in the linked list for this bucket - symbolOop _symbol; // 1-st part of the mapping: symbol => value + Symbol* _symbol; // 1-st part of the mapping: symbol => value u2 _value; // 2-nd part of the mapping: symbol => value public: @@ -704,13 +783,13 @@ class SymbolHashMapEntry : public CHeapObj { SymbolHashMapEntry* next() const { return _next; } void set_next(SymbolHashMapEntry* next) { _next = next; } - symbolOop symbol() const { return _symbol; } - void set_symbol(symbolOop sym) { _symbol = sym; } + Symbol* symbol() const { return _symbol; } + void set_symbol(Symbol* sym) { _symbol = sym; } u2 value() const { return _value; } void set_value(u2 value) { _value = value; } - SymbolHashMapEntry(unsigned int hash, symbolOop symbol, u2 value) + SymbolHashMapEntry(unsigned int hash, Symbol* symbol, u2 value) : _hash(hash), _symbol(symbol), _value(value), _next(NULL) {} }; // End SymbolHashMapEntry class @@ -769,10 +848,10 @@ class SymbolHashMap: public CHeapObj { return _buckets[i].entry(); } - void add_entry(symbolOop sym, u2 value); - SymbolHashMapEntry* find_entry(symbolOop sym); + void add_entry(Symbol* sym, u2 value); + SymbolHashMapEntry* find_entry(Symbol* sym); - u2 symbol_to_value(symbolOop sym) { + u2 symbol_to_value(Symbol* sym) { SymbolHashMapEntry *entry = find_entry(sym); return (entry == NULL) ? 0 : entry->value(); } diff --git a/hotspot/src/share/vm/oops/generateOopMap.cpp b/hotspot/src/share/vm/oops/generateOopMap.cpp index 66ed440a3fc..10b39c69f70 100644 --- a/hotspot/src/share/vm/oops/generateOopMap.cpp +++ b/hotspot/src/share/vm/oops/generateOopMap.cpp @@ -26,7 +26,7 @@ #include "interpreter/bytecodeStream.hpp" #include "oops/generateOopMap.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/handles.inline.hpp" #include "runtime/java.hpp" #include "runtime/relocator.hpp" @@ -123,7 +123,7 @@ class ComputeCallStack : public SignatureIterator { set(CellTypeState::value); } public: - ComputeCallStack(symbolOop signature) : SignatureIterator(signature) {}; + ComputeCallStack(Symbol* signature) : SignatureIterator(signature) {}; // Compute methods int compute_for_parameters(bool is_static, CellTypeState *effect) { @@ -177,7 +177,7 @@ class ComputeEntryStack : public SignatureIterator { set(CellTypeState::value); } public: - ComputeEntryStack(symbolOop signature) : SignatureIterator(signature) {}; + ComputeEntryStack(Symbol* signature) : SignatureIterator(signature) {}; // Compute methods int compute_for_parameters(bool is_static, CellTypeState *effect) { @@ -660,7 +660,7 @@ void GenerateOopMap::make_context_uninitialized() { _monitor_top = 0; } -int GenerateOopMap::methodsig_to_effect(symbolOop signature, bool is_static, CellTypeState* effect) { +int GenerateOopMap::methodsig_to_effect(Symbol* signature, bool is_static, CellTypeState* effect) { ComputeEntryStack ces(signature); return ces.compute_for_parameters(is_static, effect); } @@ -1265,7 +1265,7 @@ void GenerateOopMap::print_current_state(outputStream *os, constantPoolOop cp = method()->constants(); int nameAndTypeIdx = cp->name_and_type_ref_index_at(idx); int signatureIdx = cp->signature_ref_index_at(nameAndTypeIdx); - symbolOop signature = cp->symbol_at(signatureIdx); + Symbol* signature = cp->symbol_at(signatureIdx); os->print("%s", signature->as_C_string()); } os->cr(); @@ -1297,7 +1297,7 @@ void GenerateOopMap::print_current_state(outputStream *os, constantPoolOop cp = method()->constants(); int nameAndTypeIdx = cp->name_and_type_ref_index_at(idx); int signatureIdx = cp->signature_ref_index_at(nameAndTypeIdx); - symbolOop signature = cp->symbol_at(signatureIdx); + Symbol* signature = cp->symbol_at(signatureIdx); os->print("%s", signature->as_C_string()); } os->cr(); @@ -1844,7 +1844,7 @@ void GenerateOopMap::do_ldc(int bci) { // Make sure bt==T_OBJECT is the same as old code (is_pointer_entry). // Note that CONSTANT_MethodHandle entries are u2 index pairs, not pointer-entries, // and they are processed by _fast_aldc and the CP cache. - assert((ldc.has_cache_index() || cp->is_pointer_entry(ldc.pool_index())) + assert((ldc.has_cache_index() || cp->is_object_entry(ldc.pool_index())) ? (bt == T_OBJECT) : true, "expected object type"); ppush1(cts); } @@ -1884,7 +1884,7 @@ void GenerateOopMap::do_field(int is_get, int is_static, int idx, int bci) { constantPoolOop cp = method()->constants(); int nameAndTypeIdx = cp->name_and_type_ref_index_at(idx); int signatureIdx = cp->signature_ref_index_at(nameAndTypeIdx); - symbolOop signature = cp->symbol_at(signatureIdx); + Symbol* signature = cp->symbol_at(signatureIdx); // Parse signature (espcially simple for fields) assert(signature->utf8_length() > 0, "field signatures cannot have zero length"); @@ -1912,7 +1912,7 @@ void GenerateOopMap::do_field(int is_get, int is_static, int idx, int bci) { void GenerateOopMap::do_method(int is_static, int is_interface, int idx, int bci) { // Dig up signature for field in constant pool constantPoolOop cp = _method->constants(); - symbolOop signature = cp->signature_ref_at(idx); + Symbol* signature = cp->signature_ref_at(idx); // Parse method signature CellTypeState out[4]; diff --git a/hotspot/src/share/vm/oops/generateOopMap.hpp b/hotspot/src/share/vm/oops/generateOopMap.hpp index b6c35f768f6..92437407d3c 100644 --- a/hotspot/src/share/vm/oops/generateOopMap.hpp +++ b/hotspot/src/share/vm/oops/generateOopMap.hpp @@ -323,7 +323,7 @@ class GenerateOopMap VALUE_OBJ_CLASS_SPEC { // Cell type methods void init_state(); void make_context_uninitialized (); - int methodsig_to_effect (symbolOop signature, bool isStatic, CellTypeState* effect); + int methodsig_to_effect (Symbol* signature, bool isStatic, CellTypeState* effect); bool merge_local_state_vectors (CellTypeState* cts, CellTypeState* bbts); bool merge_monitor_state_vectors(CellTypeState* cts, CellTypeState* bbts); void copy_state (CellTypeState *dst, CellTypeState *src); diff --git a/hotspot/src/share/vm/oops/instanceKlass.cpp b/hotspot/src/share/vm/oops/instanceKlass.cpp index 46b22001903..893fddf3ba5 100644 --- a/hotspot/src/share/vm/oops/instanceKlass.cpp +++ b/hotspot/src/share/vm/oops/instanceKlass.cpp @@ -41,7 +41,7 @@ #include "oops/methodOop.hpp" #include "oops/objArrayKlassKlass.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "prims/jvmtiExport.hpp" #include "prims/jvmtiRedefineClassesTrace.hpp" #include "runtime/fieldDescriptor.hpp" @@ -96,7 +96,7 @@ HS_DTRACE_PROBE_DECL5(hotspot, class__initialization__end, { \ char* data = NULL; \ int len = 0; \ - symbolOop name = (clss)->name(); \ + Symbol* name = (clss)->name(); \ if (name != NULL) { \ data = (char*)name->bytes(); \ len = name->utf8_length(); \ @@ -109,7 +109,7 @@ HS_DTRACE_PROBE_DECL5(hotspot, class__initialization__end, { \ char* data = NULL; \ int len = 0; \ - symbolOop name = (clss)->name(); \ + Symbol* name = (clss)->name(); \ if (name != NULL) { \ data = (char*)name->bytes(); \ len = name->utf8_length(); \ @@ -266,7 +266,7 @@ bool instanceKlass::link_class_impl( ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_IncompatibleClassChangeError(), + vmSymbols::java_lang_IncompatibleClassChangeError(), "class %s has interface %s as super class", this_oop->external_name(), super->external_name() @@ -500,8 +500,8 @@ void instanceKlass::initialize_impl(instanceKlassHandle this_oop, TRAPS) { THROW_OOP(e()); } else { JavaCallArguments args(e); - THROW_ARG(vmSymbolHandles::java_lang_ExceptionInInitializerError(), - vmSymbolHandles::throwable_void_signature(), + THROW_ARG(vmSymbols::java_lang_ExceptionInInitializerError(), + vmSymbols::throwable_void_signature(), &args); } } @@ -770,13 +770,13 @@ void instanceKlass::mask_for(methodHandle method, int bci, } -bool instanceKlass::find_local_field(symbolOop name, symbolOop sig, fieldDescriptor* fd) const { +bool instanceKlass::find_local_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const { const int n = fields()->length(); for (int i = 0; i < n; i += next_offset ) { int name_index = fields()->ushort_at(i + name_index_offset); int sig_index = fields()->ushort_at(i + signature_index_offset); - symbolOop f_name = constants()->symbol_at(name_index); - symbolOop f_sig = constants()->symbol_at(sig_index); + Symbol* f_name = constants()->symbol_at(name_index); + Symbol* f_sig = constants()->symbol_at(sig_index); if (f_name == name && f_sig == sig) { fd->initialize(as_klassOop(), i); return true; @@ -786,21 +786,23 @@ bool instanceKlass::find_local_field(symbolOop name, symbolOop sig, fieldDescrip } -void instanceKlass::field_names_and_sigs_iterate(OopClosure* closure) { +void instanceKlass::shared_symbols_iterate(SymbolClosure* closure) { + Klass::shared_symbols_iterate(closure); + closure->do_symbol(&_generic_signature); + closure->do_symbol(&_source_file_name); + closure->do_symbol(&_source_debug_extension); + const int n = fields()->length(); for (int i = 0; i < n; i += next_offset ) { int name_index = fields()->ushort_at(i + name_index_offset); - symbolOop name = constants()->symbol_at(name_index); - closure->do_oop((oop*)&name); - + closure->do_symbol(constants()->symbol_at_addr(name_index)); int sig_index = fields()->ushort_at(i + signature_index_offset); - symbolOop sig = constants()->symbol_at(sig_index); - closure->do_oop((oop*)&sig); + closure->do_symbol(constants()->symbol_at_addr(sig_index)); } } -klassOop instanceKlass::find_interface_field(symbolOop name, symbolOop sig, fieldDescriptor* fd) const { +klassOop instanceKlass::find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const { const int n = local_interfaces()->length(); for (int i = 0; i < n; i++) { klassOop intf1 = klassOop(local_interfaces()->obj_at(i)); @@ -819,7 +821,7 @@ klassOop instanceKlass::find_interface_field(symbolOop name, symbolOop sig, fiel } -klassOop instanceKlass::find_field(symbolOop name, symbolOop sig, fieldDescriptor* fd) const { +klassOop instanceKlass::find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const { // search order according to newest JVM spec (5.4.3.2, p.167). // 1) search for field in current klass if (find_local_field(name, sig, fd)) { @@ -838,7 +840,7 @@ klassOop instanceKlass::find_field(symbolOop name, symbolOop sig, fieldDescripto } -klassOop instanceKlass::find_field(symbolOop name, symbolOop sig, bool is_static, fieldDescriptor* fd) const { +klassOop instanceKlass::find_field(Symbol* name, Symbol* sig, bool is_static, fieldDescriptor* fd) const { // search order according to newest JVM spec (5.4.3.2, p.167). // 1) search for field in current klass if (find_local_field(name, sig, fd)) { @@ -965,7 +967,7 @@ void instanceKlass::with_array_klasses_do(void f(klassOop k)) { } #ifdef ASSERT -static int linear_search(objArrayOop methods, symbolOop name, symbolOop signature) { +static int linear_search(objArrayOop methods, Symbol* name, Symbol* signature) { int len = methods->length(); for (int index = 0; index < len; index++) { methodOop m = (methodOop)(methods->obj_at(index)); @@ -978,11 +980,11 @@ static int linear_search(objArrayOop methods, symbolOop name, symbolOop signatur } #endif -methodOop instanceKlass::find_method(symbolOop name, symbolOop signature) const { +methodOop instanceKlass::find_method(Symbol* name, Symbol* signature) const { return instanceKlass::find_method(methods(), name, signature); } -methodOop instanceKlass::find_method(objArrayOop methods, symbolOop name, symbolOop signature) { +methodOop instanceKlass::find_method(objArrayOop methods, Symbol* name, Symbol* signature) { int len = methods->length(); // methods are sorted, so do binary search int l = 0; @@ -1030,7 +1032,7 @@ methodOop instanceKlass::find_method(objArrayOop methods, symbolOop name, symbol return NULL; } -methodOop instanceKlass::uncached_lookup_method(symbolOop name, symbolOop signature) const { +methodOop instanceKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const { klassOop klass = as_klassOop(); while (klass != NULL) { methodOop method = instanceKlass::cast(klass)->find_method(name, signature); @@ -1041,8 +1043,8 @@ methodOop instanceKlass::uncached_lookup_method(symbolOop name, symbolOop signat } // lookup a method in all the interfaces that this class implements -methodOop instanceKlass::lookup_method_in_all_interfaces(symbolOop name, - symbolOop signature) const { +methodOop instanceKlass::lookup_method_in_all_interfaces(Symbol* name, + Symbol* signature) const { objArrayOop all_ifs = instanceKlass::cast(as_klassOop())->transitive_interfaces(); int num_ifs = all_ifs->length(); instanceKlass *ik = NULL; @@ -1990,6 +1992,26 @@ void instanceKlass::release_C_heap_structures() { _cached_class_file_bytes = NULL; _cached_class_file_len = 0; } + + // Decrement symbol reference counts associated with the unloaded class. + if (_name != NULL) _name->decrement_refcount(); + // unreference array name derived from this class name (arrays of an unloaded + // class can't be referenced anymore). + if (_array_name != NULL) _array_name->decrement_refcount(); + if (_source_file_name != NULL) _source_file_name->decrement_refcount(); + if (_source_debug_extension != NULL) _source_debug_extension->decrement_refcount(); + // walk constant pool and decrement symbol reference counts + _constants->unreference_symbols(); +} + +void instanceKlass::set_source_file_name(Symbol* n) { + _source_file_name = n; + if (_source_file_name != NULL) _source_file_name->increment_refcount(); +} + +void instanceKlass::set_source_debug_extension(Symbol* n) { + _source_debug_extension = n; + if (_source_debug_extension != NULL) _source_debug_extension->increment_refcount(); } const char* instanceKlass::signature_name() const { @@ -2011,7 +2033,7 @@ const char* instanceKlass::signature_name() const { bool instanceKlass::is_same_class_package(klassOop class2) { klassOop class1 = as_klassOop(); oop classloader1 = instanceKlass::cast(class1)->class_loader(); - symbolOop classname1 = Klass::cast(class1)->name(); + Symbol* classname1 = Klass::cast(class1)->name(); if (Klass::cast(class2)->oop_is_objArray()) { class2 = objArrayKlass::cast(class2)->bottom_klass(); @@ -2023,16 +2045,16 @@ bool instanceKlass::is_same_class_package(klassOop class2) { assert(Klass::cast(class2)->oop_is_typeArray(), "should be type array"); classloader2 = NULL; } - symbolOop classname2 = Klass::cast(class2)->name(); + Symbol* classname2 = Klass::cast(class2)->name(); return instanceKlass::is_same_class_package(classloader1, classname1, classloader2, classname2); } -bool instanceKlass::is_same_class_package(oop classloader2, symbolOop classname2) { +bool instanceKlass::is_same_class_package(oop classloader2, Symbol* classname2) { klassOop class1 = as_klassOop(); oop classloader1 = instanceKlass::cast(class1)->class_loader(); - symbolOop classname1 = Klass::cast(class1)->name(); + Symbol* classname1 = Klass::cast(class1)->name(); return instanceKlass::is_same_class_package(classloader1, classname1, classloader2, classname2); @@ -2040,8 +2062,8 @@ bool instanceKlass::is_same_class_package(oop classloader2, symbolOop classname2 // return true if two classes are in the same package, classloader // and classname information is enough to determine a class's package -bool instanceKlass::is_same_class_package(oop class_loader1, symbolOop class_name1, - oop class_loader2, symbolOop class_name2) { +bool instanceKlass::is_same_class_package(oop class_loader1, Symbol* class_name1, + oop class_loader2, Symbol* class_name2) { if (class_loader1 != class_loader2) { return false; } else if (class_name1 == class_name2) { @@ -2049,14 +2071,14 @@ bool instanceKlass::is_same_class_package(oop class_loader1, symbolOop class_nam } else { ResourceMark rm; - // The symbolOop's are in UTF8 encoding. Since we only need to check explicitly + // The Symbol*'s are in UTF8 encoding. Since we only need to check explicitly // for ASCII characters ('/', 'L', '['), we can keep them in UTF8 encoding. // Otherwise, we just compare jbyte values between the strings. - jbyte *name1 = class_name1->base(); - jbyte *name2 = class_name2->base(); + const jbyte *name1 = class_name1->base(); + const jbyte *name2 = class_name2->base(); - jbyte *last_slash1 = UTF8::strrchr(name1, class_name1->utf8_length(), '/'); - jbyte *last_slash2 = UTF8::strrchr(name2, class_name2->utf8_length(), '/'); + const jbyte *last_slash1 = UTF8::strrchr(name1, class_name1->utf8_length(), '/'); + const jbyte *last_slash2 = UTF8::strrchr(name2, class_name2->utf8_length(), '/'); if ((last_slash1 == NULL) || (last_slash2 == NULL)) { // One of the two doesn't have a package. Only return true @@ -2097,7 +2119,7 @@ bool instanceKlass::is_same_class_package(oop class_loader1, symbolOop class_nam // Assumes name-signature match // "this" is instanceKlass of super_method which must exist // note that the instanceKlass of the method in the targetclassname has not always been created yet -bool instanceKlass::is_override(methodHandle super_method, Handle targetclassloader, symbolHandle targetclassname, TRAPS) { +bool instanceKlass::is_override(methodHandle super_method, Handle targetclassloader, Symbol* targetclassname, TRAPS) { // Private methods can not be overridden if (super_method->is_private()) { return false; @@ -2109,12 +2131,12 @@ bool instanceKlass::is_override(methodHandle super_method, Handle targetclassloa } // Package-private methods are not inherited outside of package assert(super_method->is_package_private(), "must be package private"); - return(is_same_class_package(targetclassloader(), targetclassname())); + return(is_same_class_package(targetclassloader(), targetclassname)); } /* defined for now in jvm.cpp, for historical reasons *-- klassOop instanceKlass::compute_enclosing_class_impl(instanceKlassHandle self, - symbolOop& simple_name_result, TRAPS) { + Symbol*& simple_name_result, TRAPS) { ... } */ @@ -2185,7 +2207,7 @@ jint instanceKlass::compute_modifier_flags(TRAPS) const { // only look at classes that are already loaded // since we are looking for the flags for our self. - symbolOop inner_name = ik->constants()->klass_name_at(ioff); + Symbol* inner_name = ik->constants()->klass_name_at(ioff); if ((ik->name() == inner_name)) { // This is really a member class. access = inner_class_list_h->ushort_at(i + instanceKlass::inner_class_access_flags_offset); @@ -2224,7 +2246,7 @@ methodOop instanceKlass::method_at_itable(klassOop holder, int index, TRAPS) { // If the interface isn't implemented by the receiver class, // the VM should throw IncompatibleClassChangeError. if (cnt >= nof_interfaces) { - THROW_OOP_0(vmSymbols::java_lang_IncompatibleClassChangeError()); + THROW_0(vmSymbols::java_lang_IncompatibleClassChangeError()); } klassOop ik = ioe->interface_klass(); @@ -2234,7 +2256,7 @@ methodOop instanceKlass::method_at_itable(klassOop holder, int index, TRAPS) { itableMethodEntry* ime = ioe->first_method_entry(as_klassOop()); methodOop m = ime[index].method(); if (m == NULL) { - THROW_OOP_0(vmSymbols::java_lang_AbstractMethodError()); + THROW_0(vmSymbols::java_lang_AbstractMethodError()); } return m; } @@ -2721,8 +2743,8 @@ void instanceKlass::add_previous_version(instanceKlassHandle ikh, if (!emcp_methods->at(i)) { // only obsolete methods are interesting methodOop old_method = (methodOop) old_methods->obj_at(i); - symbolOop m_name = old_method->name(); - symbolOop m_signature = old_method->signature(); + Symbol* m_name = old_method->name(); + Symbol* m_signature = old_method->signature(); // skip the last entry since we just added it for (int j = _previous_versions->length() - 2; j >= 0; j--) { diff --git a/hotspot/src/share/vm/oops/instanceKlass.hpp b/hotspot/src/share/vm/oops/instanceKlass.hpp index d37a60a7f62..6a09bdfa5cc 100644 --- a/hotspot/src/share/vm/oops/instanceKlass.hpp +++ b/hotspot/src/share/vm/oops/instanceKlass.hpp @@ -189,16 +189,10 @@ class instanceKlass: public Klass { klassOop _host_klass; // Class signers. objArrayOop _signers; - // Name of source file containing this klass, NULL if not specified. - symbolOop _source_file_name; - // the source debug extension for this klass, NULL if not specified. - symbolOop _source_debug_extension; // inner_classes attribute. typeArrayOop _inner_classes; // Implementors of this interface (not valid if it overflows) klassOop _implementors[implementors_limit]; - // Generic signature, or null if none. - symbolOop _generic_signature; // invokedynamic bootstrap method (a java.dyn.MethodHandle) oop _bootstrap_method; // Annotations for this class, or null if none. @@ -222,6 +216,16 @@ class instanceKlass: public Klass { // End of the oop block. // + // Name of source file containing this klass, NULL if not specified. + Symbol* _source_file_name; + // the source debug extension for this klass, NULL if not specified. + Symbol* _source_debug_extension; + // Generic signature, or null if none. + Symbol* _generic_signature; + // Array name derived from this class which needs unreferencing + // if this class is unloaded. + Symbol* _array_name; + // Number of heapOopSize words used by non-static fields in this klass // (including inherited fields but after header_size()). int _nonstatic_field_size; @@ -343,12 +347,12 @@ class instanceKlass: public Klass { }; // method override check - bool is_override(methodHandle super_method, Handle targetclassloader, symbolHandle targetclassname, TRAPS); + bool is_override(methodHandle super_method, Handle targetclassloader, Symbol* targetclassname, TRAPS); // package bool is_same_class_package(klassOop class2); - bool is_same_class_package(oop classloader2, symbolOop classname2); - static bool is_same_class_package(oop class_loader1, symbolOop class_name1, oop class_loader2, symbolOop class_name2); + bool is_same_class_package(oop classloader2, Symbol* classname2); + static bool is_same_class_package(oop class_loader1, Symbol* class_name1, oop class_loader2, Symbol* class_name2); // find an enclosing class (defined where original code was, in jvm.cpp!) klassOop compute_enclosing_class(bool* inner_is_member, TRAPS) { @@ -402,13 +406,13 @@ class instanceKlass: public Klass { void set_reference_type(ReferenceType t) { _reference_type = t; } // find local field, returns true if found - bool find_local_field(symbolOop name, symbolOop sig, fieldDescriptor* fd) const; + bool find_local_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; // find field in direct superinterfaces, returns the interface in which the field is defined - klassOop find_interface_field(symbolOop name, symbolOop sig, fieldDescriptor* fd) const; + klassOop find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; // find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined - klassOop find_field(symbolOop name, symbolOop sig, fieldDescriptor* fd) const; + klassOop find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; // find instance or static fields according to JVM spec 5.4.3.2, returns the klass in which the field is defined - klassOop find_field(symbolOop name, symbolOop sig, bool is_static, fieldDescriptor* fd) const; + klassOop find_field(Symbol* name, Symbol* sig, bool is_static, fieldDescriptor* fd) const; // find a non-static or static field given its offset within the class. bool contains_field_offset(int offset) { @@ -419,15 +423,15 @@ class instanceKlass: public Klass { bool find_field_from_offset(int offset, bool is_static, fieldDescriptor* fd) const; // find a local method (returns NULL if not found) - methodOop find_method(symbolOop name, symbolOop signature) const; - static methodOop find_method(objArrayOop methods, symbolOop name, symbolOop signature); + methodOop find_method(Symbol* name, Symbol* signature) const; + static methodOop find_method(objArrayOop methods, Symbol* name, Symbol* signature); // lookup operation (returns NULL if not found) - methodOop uncached_lookup_method(symbolOop name, symbolOop signature) const; + methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const; // lookup a method in all the interfaces that this class implements // (returns NULL if not found) - methodOop lookup_method_in_all_interfaces(symbolOop name, symbolOop signature) const; + methodOop lookup_method_in_all_interfaces(Symbol* name, Symbol* signature) const; // constant pool constantPoolOop constants() const { return _constants; } @@ -451,8 +455,8 @@ class instanceKlass: public Klass { void set_signers(objArrayOop s) { oop_store((oop*) &_signers, oop(s)); } // source file name - symbolOop source_file_name() const { return _source_file_name; } - void set_source_file_name(symbolOop n) { oop_store_without_check((oop*) &_source_file_name, (oop) n); } + Symbol* source_file_name() const { return _source_file_name; } + void set_source_file_name(Symbol* n); // minor and major version numbers of class file u2 minor_version() const { return _minor_version; } @@ -461,8 +465,12 @@ class instanceKlass: public Klass { void set_major_version(u2 major_version) { _major_version = major_version; } // source debug extension - symbolOop source_debug_extension() const { return _source_debug_extension; } - void set_source_debug_extension(symbolOop n){ oop_store_without_check((oop*) &_source_debug_extension, (oop) n); } + Symbol* source_debug_extension() const { return _source_debug_extension; } + void set_source_debug_extension(Symbol* n); + + // symbol unloading support (refcount already added) + Symbol* array_name() { return _array_name; } + void set_array_name(Symbol* name) { assert(_array_name == NULL, "name already created"); _array_name = name; } // nonstatic oop-map blocks static int nonstatic_oop_map_size(unsigned int oop_map_count) { @@ -511,8 +519,9 @@ class instanceKlass: public Klass { void set_initial_method_idnum(u2 value) { _idnum_allocated_count = value; } // generics support - symbolOop generic_signature() const { return _generic_signature; } - void set_generic_signature(symbolOop sig) { oop_store_without_check((oop*)&_generic_signature, (oop)sig); } + Symbol* generic_signature() const { return _generic_signature; } + void set_generic_signature(Symbol* sig) { _generic_signature = sig; } + u2 enclosing_method_class_index() const { return _enclosing_method_class_index; } u2 enclosing_method_method_index() const { return _enclosing_method_method_index; } void set_enclosing_method_indices(u2 class_index, @@ -807,11 +816,8 @@ private: oop* adr_protection_domain() const { return (oop*)&this->_protection_domain;} oop* adr_host_klass() const { return (oop*)&this->_host_klass;} oop* adr_signers() const { return (oop*)&this->_signers;} - oop* adr_source_file_name() const { return (oop*)&this->_source_file_name;} - oop* adr_source_debug_extension() const { return (oop*)&this->_source_debug_extension;} oop* adr_inner_classes() const { return (oop*)&this->_inner_classes;} oop* adr_implementors() const { return (oop*)&this->_implementors[0];} - oop* adr_generic_signature() const { return (oop*)&this->_generic_signature;} oop* adr_bootstrap_method() const { return (oop*)&this->_bootstrap_method;} oop* adr_methods_jmethod_ids() const { return (oop*)&this->_methods_jmethod_ids;} oop* adr_methods_cached_itable_indices() const { return (oop*)&this->_methods_cached_itable_indices;} @@ -843,7 +849,7 @@ private: public: // sharing support virtual void remove_unshareable_info(); - void field_names_and_sigs_iterate(OopClosure* closure); + virtual void shared_symbols_iterate(SymbolClosure* closure); // jvm support jint compute_modifier_flags(TRAPS) const; diff --git a/hotspot/src/share/vm/oops/instanceKlassKlass.cpp b/hotspot/src/share/vm/oops/instanceKlassKlass.cpp index e273f625122..e2667bba792 100644 --- a/hotspot/src/share/vm/oops/instanceKlassKlass.cpp +++ b/hotspot/src/share/vm/oops/instanceKlassKlass.cpp @@ -37,7 +37,7 @@ #include "oops/objArrayOop.hpp" #include "oops/oop.inline.hpp" #include "oops/oop.inline2.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "oops/typeArrayOop.hpp" #include "prims/jvmtiExport.hpp" #include "runtime/fieldDescriptor.hpp" @@ -101,13 +101,10 @@ void instanceKlassKlass::oop_follow_contents(oop obj) { MarkSweep::mark_and_push(ik->adr_fields()); MarkSweep::mark_and_push(ik->adr_constants()); MarkSweep::mark_and_push(ik->adr_class_loader()); - MarkSweep::mark_and_push(ik->adr_source_file_name()); - MarkSweep::mark_and_push(ik->adr_source_debug_extension()); MarkSweep::mark_and_push(ik->adr_inner_classes()); MarkSweep::mark_and_push(ik->adr_protection_domain()); MarkSweep::mark_and_push(ik->adr_host_klass()); MarkSweep::mark_and_push(ik->adr_signers()); - MarkSweep::mark_and_push(ik->adr_generic_signature()); MarkSweep::mark_and_push(ik->adr_bootstrap_method()); MarkSweep::mark_and_push(ik->adr_class_annotations()); MarkSweep::mark_and_push(ik->adr_fields_annotations()); @@ -142,13 +139,10 @@ void instanceKlassKlass::oop_follow_contents(ParCompactionManager* cm, PSParallelCompact::mark_and_push(cm, ik->adr_fields()); PSParallelCompact::mark_and_push(cm, ik->adr_constants()); PSParallelCompact::mark_and_push(cm, ik->adr_class_loader()); - PSParallelCompact::mark_and_push(cm, ik->adr_source_file_name()); - PSParallelCompact::mark_and_push(cm, ik->adr_source_debug_extension()); PSParallelCompact::mark_and_push(cm, ik->adr_inner_classes()); PSParallelCompact::mark_and_push(cm, ik->adr_protection_domain()); PSParallelCompact::mark_and_push(cm, ik->adr_host_klass()); PSParallelCompact::mark_and_push(cm, ik->adr_signers()); - PSParallelCompact::mark_and_push(cm, ik->adr_generic_signature()); PSParallelCompact::mark_and_push(cm, ik->adr_bootstrap_method()); PSParallelCompact::mark_and_push(cm, ik->adr_class_annotations()); PSParallelCompact::mark_and_push(cm, ik->adr_fields_annotations()); @@ -189,13 +183,10 @@ int instanceKlassKlass::oop_oop_iterate(oop obj, OopClosure* blk) { blk->do_oop(ik->adr_protection_domain()); blk->do_oop(ik->adr_host_klass()); blk->do_oop(ik->adr_signers()); - blk->do_oop(ik->adr_source_file_name()); - blk->do_oop(ik->adr_source_debug_extension()); blk->do_oop(ik->adr_inner_classes()); for (int i = 0; i < instanceKlass::implementors_limit; i++) { blk->do_oop(&ik->adr_implementors()[i]); } - blk->do_oop(ik->adr_generic_signature()); blk->do_oop(ik->adr_bootstrap_method()); blk->do_oop(ik->adr_class_annotations()); blk->do_oop(ik->adr_fields_annotations()); @@ -245,18 +236,12 @@ int instanceKlassKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, if (mr.contains(adr)) blk->do_oop(adr); adr = ik->adr_signers(); if (mr.contains(adr)) blk->do_oop(adr); - adr = ik->adr_source_file_name(); - if (mr.contains(adr)) blk->do_oop(adr); - adr = ik->adr_source_debug_extension(); - if (mr.contains(adr)) blk->do_oop(adr); adr = ik->adr_inner_classes(); if (mr.contains(adr)) blk->do_oop(adr); adr = ik->adr_implementors(); for (int i = 0; i < instanceKlass::implementors_limit; i++) { if (mr.contains(&adr[i])) blk->do_oop(&adr[i]); } - adr = ik->adr_generic_signature(); - if (mr.contains(adr)) blk->do_oop(adr); adr = ik->adr_bootstrap_method(); if (mr.contains(adr)) blk->do_oop(adr); adr = ik->adr_class_annotations(); @@ -296,13 +281,10 @@ int instanceKlassKlass::oop_adjust_pointers(oop obj) { MarkSweep::adjust_pointer(ik->adr_protection_domain()); MarkSweep::adjust_pointer(ik->adr_host_klass()); MarkSweep::adjust_pointer(ik->adr_signers()); - MarkSweep::adjust_pointer(ik->adr_source_file_name()); - MarkSweep::adjust_pointer(ik->adr_source_debug_extension()); MarkSweep::adjust_pointer(ik->adr_inner_classes()); for (int i = 0; i < instanceKlass::implementors_limit; i++) { MarkSweep::adjust_pointer(&ik->adr_implementors()[i]); } - MarkSweep::adjust_pointer(ik->adr_generic_signature()); MarkSweep::adjust_pointer(ik->adr_bootstrap_method()); MarkSweep::adjust_pointer(ik->adr_class_annotations()); MarkSweep::adjust_pointer(ik->adr_fields_annotations()); @@ -452,6 +434,8 @@ instanceKlassKlass::allocate_instance_klass(int vtable_len, int itable_len, ik->set_signers(NULL); ik->set_source_file_name(NULL); ik->set_source_debug_extension(NULL); + ik->set_source_debug_extension(NULL); + ik->set_array_name(NULL); ik->set_inner_classes(NULL); ik->set_static_oop_field_size(0); ik->set_nonstatic_field_size(0); @@ -667,7 +651,7 @@ void instanceKlassKlass::oop_verify_on(oop obj, outputStream* st) { #endif // Verify that klass is present in SystemDictionary if (ik->is_loaded() && !ik->is_anonymous()) { - symbolHandle h_name (thread, ik->name()); + Symbol* h_name = ik->name(); Handle h_loader (thread, ik->class_loader()); Handle h_obj(thread, obj); SystemDictionary::verify_obj_klass_present(h_obj, h_name, h_loader); @@ -793,14 +777,6 @@ void instanceKlassKlass::oop_verify_on(oop obj, outputStream* st) { guarantee(ik->constants()->is_constantPool(), "should be constant pool"); guarantee(ik->inner_classes()->is_perm(), "should be in permspace"); guarantee(ik->inner_classes()->is_typeArray(), "should be type array"); - if (ik->source_file_name() != NULL) { - guarantee(ik->source_file_name()->is_perm(), "should be in permspace"); - guarantee(ik->source_file_name()->is_symbol(), "should be symbol"); - } - if (ik->source_debug_extension() != NULL) { - guarantee(ik->source_debug_extension()->is_perm(), "should be in permspace"); - guarantee(ik->source_debug_extension()->is_symbol(), "should be symbol"); - } if (ik->protection_domain() != NULL) { guarantee(ik->protection_domain()->is_oop(), "should be oop"); } @@ -810,10 +786,6 @@ void instanceKlassKlass::oop_verify_on(oop obj, outputStream* st) { if (ik->signers() != NULL) { guarantee(ik->signers()->is_objArray(), "should be obj array"); } - if (ik->generic_signature() != NULL) { - guarantee(ik->generic_signature()->is_perm(), "should be in permspace"); - guarantee(ik->generic_signature()->is_symbol(), "should be symbol"); - } if (ik->class_annotations() != NULL) { guarantee(ik->class_annotations()->is_typeArray(), "should be type array"); } diff --git a/hotspot/src/share/vm/oops/klass.cpp b/hotspot/src/share/vm/oops/klass.cpp index 7c16ce2ba6b..294830c17f2 100644 --- a/hotspot/src/share/vm/oops/klass.cpp +++ b/hotspot/src/share/vm/oops/klass.cpp @@ -35,6 +35,10 @@ #include "oops/oop.inline2.hpp" #include "runtime/atomic.hpp" +void Klass::set_name(Symbol* n) { + _name = n; + if (_name != NULL) _name->increment_refcount(); +} bool Klass::is_subclass_of(klassOop k) const { // Run up the super chain and check @@ -115,7 +119,7 @@ bool Klass::compute_is_subtype_of(klassOop k) { } -methodOop Klass::uncached_lookup_method(symbolOop name, symbolOop signature) const { +methodOop Klass::uncached_lookup_method(Symbol* name, Symbol* signature) const { #ifdef ASSERT tty->print_cr("Error: uncached_lookup_method called on a klass oop." " Likely error: reflection method does not correctly" @@ -454,6 +458,11 @@ void Klass::remove_unshareable_info() { } +void Klass::shared_symbols_iterate(SymbolClosure* closure) { + closure->do_symbol(&_name); +} + + klassOop Klass::array_klass_or_null(int rank) { EXCEPTION_MARK; // No exception can be thrown by array_klass_impl when called with or_null == true. diff --git a/hotspot/src/share/vm/oops/klass.hpp b/hotspot/src/share/vm/oops/klass.hpp index 46ce42eabd9..4dbff59e490 100644 --- a/hotspot/src/share/vm/oops/klass.hpp +++ b/hotspot/src/share/vm/oops/klass.hpp @@ -212,6 +212,10 @@ class Klass : public Klass_vtbl { // secondary supers, else is &_primary_supers[depth()]. juint _super_check_offset; + // Class name. Instance classes: java/lang/String, etc. Array classes: [I, + // [Ljava/lang/String;, etc. Set to zero for all other kinds of classes. + Symbol* _name; + public: oop* oop_block_beg() const { return adr_secondary_super_cache(); } oop* oop_block_end() const { return adr_next_sibling() + 1; } @@ -235,9 +239,6 @@ class Klass : public Klass_vtbl { oop _java_mirror; // Superclass klassOop _super; - // Class name. Instance classes: java/lang/String, etc. Array classes: [I, - // [Ljava/lang/String;, etc. Set to zero for all other kinds of classes. - symbolOop _name; // First subclass (NULL if none); _subklass->next_sibling() is next one klassOop _subklass; // Sibling link (or NULL); links all subklasses of a klass @@ -361,7 +362,6 @@ class Klass : public Klass_vtbl { oop* adr_secondary_super_cache() const { return (oop*)&_secondary_super_cache; } oop* adr_secondary_supers()const { return (oop*)&_secondary_supers; } oop* adr_java_mirror() const { return (oop*)&_java_mirror; } - oop* adr_name() const { return (oop*)&_name; } oop* adr_subklass() const { return (oop*)&_subklass; } oop* adr_next_sibling() const { return (oop*)&_next_sibling; } @@ -511,9 +511,9 @@ class Klass : public Klass_vtbl { virtual void initialize(TRAPS); // lookup operation for MethodLookupCache friend class MethodLookupCache; - virtual methodOop uncached_lookup_method(symbolOop name, symbolOop signature) const; + virtual methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const; public: - methodOop lookup_method(symbolOop name, symbolOop signature) const { + methodOop lookup_method(Symbol* name, Symbol* signature) const { return uncached_lookup_method(name, signature); } @@ -537,6 +537,7 @@ class Klass : public Klass_vtbl { public: virtual void remove_unshareable_info(); + virtual void shared_symbols_iterate(SymbolClosure* closure); protected: // computes the subtype relationship @@ -579,7 +580,6 @@ class Klass : public Klass_vtbl { virtual bool oop_is_instanceRef() const { return false; } virtual bool oop_is_array() const { return false; } virtual bool oop_is_objArray_slow() const { return false; } - virtual bool oop_is_symbol() const { return false; } virtual bool oop_is_klass() const { return false; } virtual bool oop_is_thread() const { return false; } virtual bool oop_is_method() const { return false; } @@ -781,8 +781,8 @@ class Klass : public Klass_vtbl { Klass *up_cast_abstract(); // klass name - symbolOop name() const { return _name; } - void set_name(symbolOop n) { oop_store_without_check((oop*) &_name, (oop) n); } + Symbol* name() const { return _name; } + void set_name(Symbol* n); friend class klassKlass; diff --git a/hotspot/src/share/vm/oops/klassKlass.cpp b/hotspot/src/share/vm/oops/klassKlass.cpp index 0d26d81561c..79867acf06d 100644 --- a/hotspot/src/share/vm/oops/klassKlass.cpp +++ b/hotspot/src/share/vm/oops/klassKlass.cpp @@ -37,8 +37,7 @@ #include "oops/objArrayKlass.hpp" #include "oops/oop.inline.hpp" #include "oops/oop.inline2.hpp" -#include "oops/symbolKlass.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "oops/typeArrayKlass.hpp" #include "runtime/handles.inline.hpp" #ifndef SERIALGC @@ -70,7 +69,6 @@ void klassKlass::oop_follow_contents(oop obj) { MarkSweep::mark_and_push(k->adr_secondary_super_cache()); MarkSweep::mark_and_push(k->adr_secondary_supers()); MarkSweep::mark_and_push(k->adr_java_mirror()); - MarkSweep::mark_and_push(k->adr_name()); // We follow the subklass and sibling links at the end of the // marking phase, since otherwise following them will prevent // class unloading (all classes are transitively linked from @@ -90,7 +88,6 @@ void klassKlass::oop_follow_contents(ParCompactionManager* cm, PSParallelCompact::mark_and_push(cm, k->adr_secondary_super_cache()); PSParallelCompact::mark_and_push(cm, k->adr_secondary_supers()); PSParallelCompact::mark_and_push(cm, k->adr_java_mirror()); - PSParallelCompact::mark_and_push(cm, k->adr_name()); // We follow the subklass and sibling links at the end of the // marking phase, since otherwise following them will prevent // class unloading (all classes are transitively linked from @@ -110,7 +107,6 @@ int klassKlass::oop_oop_iterate(oop obj, OopClosure* blk) { blk->do_oop(k->adr_secondary_super_cache()); blk->do_oop(k->adr_secondary_supers()); blk->do_oop(k->adr_java_mirror()); - blk->do_oop(k->adr_name()); // The following are in the perm gen and are treated // specially in a later phase of a perm gen collection; ... assert(oop(k)->is_perm(), "should be in perm"); @@ -144,8 +140,6 @@ int klassKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) { if (mr.contains(adr)) blk->do_oop(adr); adr = k->adr_java_mirror(); if (mr.contains(adr)) blk->do_oop(adr); - adr = k->adr_name(); - if (mr.contains(adr)) blk->do_oop(adr); // The following are "weak links" in the perm gen and are // treated specially in a later phase of a perm gen collection. assert(oop(k)->is_perm(), "should be in perm"); @@ -174,7 +168,6 @@ int klassKlass::oop_adjust_pointers(oop obj) { MarkSweep::adjust_pointer(k->adr_secondary_super_cache()); MarkSweep::adjust_pointer(k->adr_secondary_supers()); MarkSweep::adjust_pointer(k->adr_java_mirror()); - MarkSweep::adjust_pointer(k->adr_name()); MarkSweep::adjust_pointer(k->adr_subklass()); MarkSweep::adjust_pointer(k->adr_next_sibling()); return size; @@ -256,9 +249,4 @@ void klassKlass::oop_verify_on(oop obj, outputStream* st) { guarantee(k->java_mirror()->is_perm(), "should be in permspace"); guarantee(k->java_mirror()->is_instance(), "should be instance"); } - if (k->name() != NULL) { - guarantee(Universe::heap()->is_in_permanent(k->name()), - "should be in permspace"); - guarantee(k->name()->is_symbol(), "should be symbol"); - } } diff --git a/hotspot/src/share/vm/oops/klassVtable.cpp b/hotspot/src/share/vm/oops/klassVtable.cpp index c7909164b78..4ea39839b5e 100644 --- a/hotspot/src/share/vm/oops/klassVtable.cpp +++ b/hotspot/src/share/vm/oops/klassVtable.cpp @@ -61,7 +61,7 @@ void klassVtable::compute_vtable_size_and_num_mirandas(int &vtable_length, objArrayOop methods, AccessFlags class_flags, Handle classloader, - symbolHandle classname, + Symbol* classname, objArrayOop local_interfaces, TRAPS ) { @@ -210,7 +210,7 @@ void klassVtable::initialize_vtable(bool checkconstraints, TRAPS) { // the superclass's method, but might indirectly override a super-super class's vtable entry // If none found, return a null superk, else return the superk of the method this does override instanceKlass* klassVtable::find_transitive_override(instanceKlass* initialsuper, methodHandle target_method, - int vtable_index, Handle target_loader, symbolHandle target_classname, Thread * THREAD) { + int vtable_index, Handle target_loader, Symbol* target_classname, Thread * THREAD) { instanceKlass* superk = initialsuper; while (superk != NULL && superk->super() != NULL) { instanceKlass* supersuperklass = instanceKlass::cast(superk->super()); @@ -218,9 +218,9 @@ instanceKlass* klassVtable::find_transitive_override(instanceKlass* initialsuper if (vtable_index < ssVtable->length()) { methodOop super_method = ssVtable->method_at(vtable_index); #ifndef PRODUCT - symbolHandle name(THREAD,target_method()->name()); - symbolHandle signature(THREAD,target_method()->signature()); - assert(super_method->name() == name() && super_method->signature() == signature(), "vtable entry name/sig mismatch"); + Symbol* name= target_method()->name(); + Symbol* signature = target_method()->signature(); + assert(super_method->name() == name && super_method->signature() == signature, "vtable entry name/sig mismatch"); #endif if (supersuperklass->is_override(super_method, target_loader, target_classname, THREAD)) { #ifndef PRODUCT @@ -294,14 +294,14 @@ bool klassVtable::update_inherited_vtable(instanceKlass* klass, methodHandle tar // which can block for gc, once we are in this loop, use handles // For classfiles built with >= jdk7, we now look for transitive overrides - symbolHandle name(THREAD,target_method()->name()); - symbolHandle signature(THREAD,target_method()->signature()); + Symbol* name = target_method()->name(); + Symbol* signature = target_method()->signature(); Handle target_loader(THREAD, _klass->class_loader()); - symbolHandle target_classname(THREAD, _klass->name()); + Symbol* target_classname = _klass->name(); for(int i = 0; i < super_vtable_len; i++) { methodOop super_method = method_at(i); // Check if method name matches - if (super_method->name() == name() && super_method->signature() == signature()) { + if (super_method->name() == name && super_method->signature() == signature) { // get super_klass for method_holder for the found method instanceKlass* super_klass = instanceKlass::cast(super_method->method_holder()); @@ -406,7 +406,7 @@ void klassVtable::put_method_at(methodOop m, int index) { bool klassVtable::needs_new_vtable_entry(methodHandle target_method, klassOop super, Handle classloader, - symbolHandle classname, + Symbol* classname, AccessFlags class_flags, TRAPS) { if ((class_flags.is_final() || target_method()->is_final()) || @@ -436,8 +436,8 @@ bool klassVtable::needs_new_vtable_entry(methodHandle target_method, // search through the super class hierarchy to see if we need // a new entry ResourceMark rm; - symbolOop name = target_method()->name(); - symbolOop signature = target_method()->signature(); + Symbol* name = target_method()->name(); + Symbol* signature = target_method()->signature(); klassOop k = super; methodOop super_method = NULL; instanceKlass *holder = NULL; @@ -485,7 +485,7 @@ bool klassVtable::needs_new_vtable_entry(methodHandle target_method, // Support for miranda methods // get the vtable index of a miranda method with matching "name" and "signature" -int klassVtable::index_of_miranda(symbolOop name, symbolOop signature) { +int klassVtable::index_of_miranda(Symbol* name, Symbol* signature) { // search from the bottom, might be faster for (int i = (length() - 1); i >= 0; i--) { methodOop m = table()[i].method(); @@ -516,9 +516,8 @@ bool klassVtable::is_miranda_entry_at(int i) { // check if a method is a miranda method, given a class's methods table and it's super // the caller must make sure that the method belongs to an interface implemented by the class bool klassVtable::is_miranda(methodOop m, objArrayOop class_methods, klassOop super) { - symbolOop name = m->name(); - symbolOop signature = m->signature(); - + Symbol* name = m->name(); + Symbol* signature = m->signature(); if (instanceKlass::find_method(class_methods, name, signature) == NULL) { // did not find it in the method table of the current class if (super == NULL) { @@ -929,8 +928,8 @@ void klassItable::initialize_itable_for_interface(int method_table_offset, Klass // methods needs a handle in case of gc from check_signature_loaders for(; i < nof_methods; i++) { methodOop m = (methodOop)methods()->obj_at(i); - symbolOop method_name = m->name(); - symbolOop method_signature = m->signature(); + Symbol* method_name = m->name(); + Symbol* method_signature = m->signature(); // This is same code as in Linkresolver::lookup_instance_method_in_klasses methodOop target = klass->uncached_lookup_method(method_name, method_signature); diff --git a/hotspot/src/share/vm/oops/klassVtable.hpp b/hotspot/src/share/vm/oops/klassVtable.hpp index 058643771d2..1f77ea7291d 100644 --- a/hotspot/src/share/vm/oops/klassVtable.hpp +++ b/hotspot/src/share/vm/oops/klassVtable.hpp @@ -71,7 +71,7 @@ class klassVtable : public ResourceObj { // searching; all methods return -1 if not found int index_of(methodOop m) const { return index_of(m, _length); } - int index_of_miranda(symbolOop name, symbolOop signature); + int index_of_miranda(Symbol* name, Symbol* signature); void initialize_vtable(bool checkconstraints, TRAPS); // initialize vtable of a new klass @@ -79,7 +79,7 @@ class klassVtable : public ResourceObj { static void compute_vtable_size_and_num_mirandas(int &vtable_length, int &num_miranda_methods, klassOop super, objArrayOop methods, AccessFlags class_flags, Handle classloader, - symbolHandle classname, objArrayOop local_interfaces, + Symbol* classname, objArrayOop local_interfaces, TRAPS); // RedefineClasses() API support: @@ -125,11 +125,11 @@ class klassVtable : public ResourceObj { int initialize_from_super(KlassHandle super); int index_of(methodOop m, int len) const; // same as index_of, but search only up to len void put_method_at(methodOop m, int index); - static bool needs_new_vtable_entry(methodHandle m, klassOop super, Handle classloader, symbolHandle classname, AccessFlags access_flags, TRAPS); + static bool needs_new_vtable_entry(methodHandle m, klassOop super, Handle classloader, Symbol* classname, AccessFlags access_flags, TRAPS); bool update_inherited_vtable(instanceKlass* klass, methodHandle target_method, int super_vtable_len, bool checkconstraints, TRAPS); instanceKlass* find_transitive_override(instanceKlass* initialsuper, methodHandle target_method, int vtable_index, - Handle target_loader, symbolHandle target_classname, Thread* THREAD); + Handle target_loader, Symbol* target_classname, Thread* THREAD); // support for miranda methods bool is_miranda_entry_at(int i); diff --git a/hotspot/src/share/vm/oops/markOop.hpp b/hotspot/src/share/vm/oops/markOop.hpp index 20b643d03ef..0dca58494ec 100644 --- a/hotspot/src/share/vm/oops/markOop.hpp +++ b/hotspot/src/share/vm/oops/markOop.hpp @@ -118,14 +118,7 @@ class markOopDesc: public oopDesc { }; // The biased locking code currently requires that the age bits be - // contiguous to the lock bits. Class data sharing would prefer the - // hash bits to be lower down to provide more random hash codes for - // shared read-only symbolOop objects, because these objects' mark - // words are set to their own address with marked_value in the lock - // bit, and using lower bits would make their identity hash values - // more random. However, the performance decision was made in favor - // of the biased locking code. - + // contiguous to the lock bits. enum { lock_shift = 0, biased_lock_shift = lock_bits, age_shift = lock_bits + biased_lock_bits, diff --git a/hotspot/src/share/vm/oops/methodKlass.cpp b/hotspot/src/share/vm/oops/methodKlass.cpp index 9afbf33fbf0..08c49ae4d6a 100644 --- a/hotspot/src/share/vm/oops/methodKlass.cpp +++ b/hotspot/src/share/vm/oops/methodKlass.cpp @@ -36,7 +36,7 @@ #include "oops/methodKlass.hpp" #include "oops/oop.inline.hpp" #include "oops/oop.inline2.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/handles.inline.hpp" klassOop methodKlass::create_klass(TRAPS) { @@ -353,10 +353,6 @@ void methodKlass::oop_verify_on(oop obj, outputStream* st) { if (!obj->partially_loaded()) { methodOop m = methodOop(obj); guarantee(m->is_perm(), "should be in permspace"); - guarantee(m->name()->is_perm(), "should be in permspace"); - guarantee(m->name()->is_symbol(), "should be symbol"); - guarantee(m->signature()->is_perm(), "should be in permspace"); - guarantee(m->signature()->is_symbol(), "should be symbol"); guarantee(m->constants()->is_perm(), "should be in permspace"); guarantee(m->constants()->is_constantPool(), "should be constant pool"); guarantee(m->constMethod()->is_constMethod(), "should be constMethodOop"); diff --git a/hotspot/src/share/vm/oops/methodOop.cpp b/hotspot/src/share/vm/oops/methodOop.cpp index 1dab0cbd6d8..42ffbec7f1a 100644 --- a/hotspot/src/share/vm/oops/methodOop.cpp +++ b/hotspot/src/share/vm/oops/methodOop.cpp @@ -38,7 +38,7 @@ #include "oops/methodDataOop.hpp" #include "oops/methodOop.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "prims/jvmtiExport.hpp" #include "prims/methodHandleWalk.hpp" #include "prims/nativeLookup.hpp" @@ -77,7 +77,7 @@ char* methodOopDesc::name_and_sig_as_C_string(char* buf, int size) { return name_and_sig_as_C_string(Klass::cast(constants()->pool_holder()), name(), signature(), buf, size); } -char* methodOopDesc::name_and_sig_as_C_string(Klass* klass, symbolOop method_name, symbolOop signature) { +char* methodOopDesc::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature) { const char* klass_name = klass->external_name(); int klass_name_len = (int)strlen(klass_name); int method_name_len = method_name->utf8_length(); @@ -91,8 +91,8 @@ char* methodOopDesc::name_and_sig_as_C_string(Klass* klass, symbolOop method_nam return dest; } -char* methodOopDesc::name_and_sig_as_C_string(Klass* klass, symbolOop method_name, symbolOop signature, char* buf, int size) { - symbolOop klass_name = klass->name(); +char* methodOopDesc::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature, char* buf, int size) { + Symbol* klass_name = klass->name(); klass_name->as_klass_external_name(buf, size); int len = (int)strlen(buf); @@ -221,7 +221,7 @@ int methodOopDesc::object_size(bool is_native) { } -symbolOop methodOopDesc::klass_name() const { +Symbol* methodOopDesc::klass_name() const { klassOop k = method_holder(); assert(k->is_klass(), "must be klass"); instanceKlass* ik = (instanceKlass*) k->klass_part(); @@ -333,8 +333,7 @@ int methodOopDesc::extra_stack_words() { void methodOopDesc::compute_size_of_parameters(Thread *thread) { - symbolHandle h_signature(thread, signature()); - ArgumentSizeComputer asc(h_signature); + ArgumentSizeComputer asc(signature()); set_size_of_parameters(asc.size() + (is_static() ? 0 : 1)); } @@ -520,7 +519,7 @@ int methodOopDesc::line_number_from_bci(int bci) const { bool methodOopDesc::is_klass_loaded_by_klass_index(int klass_index) const { if( _constants->tag_at(klass_index).is_unresolved_klass() ) { Thread *thread = Thread::current(); - symbolHandle klass_name(thread, _constants->klass_name_at(klass_index)); + Symbol* klass_name = _constants->klass_name_at(klass_index); Handle loader(thread, instanceKlass::cast(method_holder())->class_loader()); Handle prot (thread, Klass::cast(method_holder())->protection_domain()); return SystemDictionary::find(klass_name, loader, prot, thread) != NULL; @@ -852,7 +851,7 @@ bool methodOopDesc::is_method_handle_invoke_name(vmSymbols::SID name_sid) { // Constant pool structure for invoke methods: enum { _imcp_invoke_name = 1, // utf8: 'invokeExact' or 'invokeGeneric' - _imcp_invoke_signature, // utf8: (variable symbolOop) + _imcp_invoke_signature, // utf8: (variable Symbol*) _imcp_method_type_value, // string: (variable java/dyn/MethodType, sic) _imcp_limit }; @@ -895,8 +894,8 @@ bool methodOopDesc::is_method_handle_adapter() const { } methodHandle methodOopDesc::make_invoke_method(KlassHandle holder, - symbolHandle name, - symbolHandle signature, + Symbol* name, + Symbol* signature, Handle method_type, TRAPS) { methodHandle empty; @@ -914,9 +913,9 @@ methodHandle methodOopDesc::make_invoke_method(KlassHandle holder, constantPoolOop cp_oop = oopFactory::new_constantPool(_imcp_limit, IsSafeConc, CHECK_(empty)); cp = constantPoolHandle(THREAD, cp_oop); } - cp->symbol_at_put(_imcp_invoke_name, name()); - cp->symbol_at_put(_imcp_invoke_signature, signature()); - cp->string_at_put(_imcp_method_type_value, vmSymbols::void_signature()); + cp->symbol_at_put(_imcp_invoke_name, name); + cp->symbol_at_put(_imcp_invoke_signature, signature); + cp->string_at_put(_imcp_method_type_value, Universe::the_null_string()); cp->set_pool_holder(holder()); // set up the fancy stuff: @@ -932,7 +931,7 @@ methodHandle methodOopDesc::make_invoke_method(KlassHandle holder, m->set_name_index(_imcp_invoke_name); m->set_signature_index(_imcp_invoke_signature); assert(is_method_handle_invoke_name(m->name()), ""); - assert(m->signature() == signature(), ""); + assert(m->signature() == signature, ""); assert(m->is_method_handle_invoke(), ""); #ifdef CC_INTERP ResultTypeFinder rtf(signature()); @@ -1047,7 +1046,7 @@ vmSymbols::SID methodOopDesc::klass_id_for_intrinsics(klassOop holder) { return vmSymbols::NO_SID; // regardless of name, no intrinsics here // see if the klass name is well-known: - symbolOop klass_name = instanceKlass::cast(holder)->name(); + Symbol* klass_name = instanceKlass::cast(holder)->name(); return vmSymbols::find_sid(klass_name); } @@ -1123,11 +1122,12 @@ bool methodOopDesc::load_signature_classes(methodHandle m, TRAPS) { bool sig_is_loaded = true; Handle class_loader(THREAD, instanceKlass::cast(m->method_holder())->class_loader()); Handle protection_domain(THREAD, Klass::cast(m->method_holder())->protection_domain()); - symbolHandle signature(THREAD, m->signature()); + ResourceMark rm(THREAD); + Symbol* signature = m->signature(); for(SignatureStream ss(signature); !ss.is_done(); ss.next()) { if (ss.is_object()) { - symbolOop sym = ss.as_symbol(CHECK_(false)); - symbolHandle name (THREAD, sym); + Symbol* sym = ss.as_symbol(CHECK_(false)); + Symbol* name = sym; klassOop klass = SystemDictionary::resolve_or_null(name, class_loader, protection_domain, THREAD); // We are loading classes eagerly. If a ClassNotFoundException or @@ -1149,11 +1149,12 @@ bool methodOopDesc::load_signature_classes(methodHandle m, TRAPS) { bool methodOopDesc::has_unloaded_classes_in_signature(methodHandle m, TRAPS) { Handle class_loader(THREAD, instanceKlass::cast(m->method_holder())->class_loader()); Handle protection_domain(THREAD, Klass::cast(m->method_holder())->protection_domain()); - symbolHandle signature(THREAD, m->signature()); + ResourceMark rm(THREAD); + Symbol* signature = m->signature(); for(SignatureStream ss(signature); !ss.is_done(); ss.next()) { if (ss.type() == T_OBJECT) { - symbolHandle name(THREAD, ss.as_symbol_or_null()); - if (name() == NULL) return true; + Symbol* name = ss.as_symbol_or_null(); + if (name == NULL) return true; klassOop klass = SystemDictionary::find(name, class_loader, protection_domain, THREAD); if (klass == NULL) return true; } @@ -1317,7 +1318,7 @@ class SignatureTypePrinter : public SignatureTypeNames { } public: - SignatureTypePrinter(symbolHandle signature, outputStream* st) : SignatureTypeNames(signature) { + SignatureTypePrinter(Symbol* signature, outputStream* st) : SignatureTypeNames(signature) { _st = st; _use_separator = false; } diff --git a/hotspot/src/share/vm/oops/methodOop.hpp b/hotspot/src/share/vm/oops/methodOop.hpp index 9f74b8fe8e4..279424514d1 100644 --- a/hotspot/src/share/vm/oops/methodOop.hpp +++ b/hotspot/src/share/vm/oops/methodOop.hpp @@ -161,17 +161,17 @@ class methodOopDesc : public oopDesc { void set_access_flags(AccessFlags flags) { _access_flags = flags; } // name - symbolOop name() const { return _constants->symbol_at(name_index()); } + Symbol* name() const { return _constants->symbol_at(name_index()); } int name_index() const { return constMethod()->name_index(); } void set_name_index(int index) { constMethod()->set_name_index(index); } // signature - symbolOop signature() const { return _constants->symbol_at(signature_index()); } + Symbol* signature() const { return _constants->symbol_at(signature_index()); } int signature_index() const { return constMethod()->signature_index(); } void set_signature_index(int index) { constMethod()->set_signature_index(index); } // generics support - symbolOop generic_signature() const { int idx = generic_signature_index(); return ((idx != 0) ? _constants->symbol_at(idx) : (symbolOop)NULL); } + Symbol* generic_signature() const { int idx = generic_signature_index(); return ((idx != 0) ? _constants->symbol_at(idx) : (Symbol*)NULL); } int generic_signature_index() const { return constMethod()->generic_signature_index(); } void set_generic_signature_index(int index) { constMethod()->set_generic_signature_index(index); } @@ -193,8 +193,8 @@ class methodOopDesc : public oopDesc { char* name_and_sig_as_C_string(char* buf, int size); // Static routine in the situations we don't have a methodOop - static char* name_and_sig_as_C_string(Klass* klass, symbolOop method_name, symbolOop signature); - static char* name_and_sig_as_C_string(Klass* klass, symbolOop method_name, symbolOop signature, char* buf, int size); + static char* name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature); + static char* name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature, char* buf, int size); Bytecodes::Code java_code_at(int bci) const { return Bytecodes::java_code_at(this, bcp_from(bci)); @@ -433,7 +433,7 @@ class methodOopDesc : public oopDesc { klassOop method_holder() const { return _constants->pool_holder(); } void compute_size_of_parameters(Thread *thread); // word size of parameters (receiver if any + arguments) - symbolOop klass_name() const; // returns the name of the method holder + Symbol* klass_name() const; // returns the name of the method holder BasicType result_type() const; // type of the method result int result_type_index() const; // type index of the method result bool is_returning_oop() const { BasicType r = result_type(); return (r == T_OBJECT || r == T_ARRAY); } @@ -564,15 +564,15 @@ class methodOopDesc : public oopDesc { // JSR 292 support bool is_method_handle_invoke() const { return access_flags().is_method_handle_invoke(); } static bool is_method_handle_invoke_name(vmSymbols::SID name_sid); - static bool is_method_handle_invoke_name(symbolOop name) { + static bool is_method_handle_invoke_name(Symbol* name) { return is_method_handle_invoke_name(vmSymbols::find_sid(name)); } // Tests if this method is an internal adapter frame from the // MethodHandleCompiler. bool is_method_handle_adapter() const; static methodHandle make_invoke_method(KlassHandle holder, - symbolHandle name, //invokeExact or invokeGeneric - symbolHandle signature, //anything at all + Symbol* name, //invokeExact or invokeGeneric + Symbol* signature, //anything at all Handle method_type, TRAPS); // these operate only on invoke methods: diff --git a/hotspot/src/share/vm/oops/objArrayKlass.cpp b/hotspot/src/share/vm/oops/objArrayKlass.cpp index d31d710bc63..405301d8d71 100644 --- a/hotspot/src/share/vm/oops/objArrayKlass.cpp +++ b/hotspot/src/share/vm/oops/objArrayKlass.cpp @@ -37,7 +37,7 @@ #include "oops/objArrayOop.hpp" #include "oops/oop.inline.hpp" #include "oops/oop.inline2.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/handles.inline.hpp" #include "runtime/mutexLocker.hpp" #include "utilities/copy.hpp" diff --git a/hotspot/src/share/vm/oops/objArrayKlassKlass.cpp b/hotspot/src/share/vm/oops/objArrayKlassKlass.cpp index 324de79950f..b85e8dffc66 100644 --- a/hotspot/src/share/vm/oops/objArrayKlassKlass.cpp +++ b/hotspot/src/share/vm/oops/objArrayKlassKlass.cpp @@ -110,14 +110,11 @@ klassOop objArrayKlassKlass::allocate_objArray_klass_impl(objArrayKlassKlassHand } } - // Create type name for klass (except for symbol arrays, since symbolKlass - // does not have a name). This will potentially allocate an object, cause - // GC, and all other kinds of things. Hence, this must be done before we - // get a handle to the new objArrayKlass we want to construct. We cannot - // block while holding a handling to a partly initialized object. - symbolHandle name = symbolHandle(); + // Create type name for klass. + Symbol* name = NULL; + if (!element_klass->oop_is_instance() || + (name = instanceKlass::cast(element_klass())->array_name()) == NULL) { - if (!element_klass->oop_is_symbol()) { ResourceMark rm(THREAD); char *name_str = element_klass->name()->as_C_string(); int len = element_klass->name()->utf8_length(); @@ -133,7 +130,11 @@ klassOop objArrayKlassKlass::allocate_objArray_klass_impl(objArrayKlassKlassHand new_str[idx++] = ';'; } new_str[idx++] = '\0'; - name = oopFactory::new_symbol_handle(new_str, CHECK_0); + name = SymbolTable::new_symbol(new_str, CHECK_0); + if (element_klass->oop_is_instance()) { + instanceKlass* ik = instanceKlass::cast(element_klass()); + ik->set_array_name(name); + } } objArrayKlass o; @@ -142,12 +143,15 @@ klassOop objArrayKlassKlass::allocate_objArray_klass_impl(objArrayKlassKlassHand this_oop, CHECK_0); - // Initialize instance variables objArrayKlass* oak = objArrayKlass::cast(k()); oak->set_dimension(n); oak->set_element_klass(element_klass()); - oak->set_name(name()); + oak->set_name(name); + // decrement refcount because object arrays are not explicitly freed. The + // instanceKlass array_name() keeps the name counted while the klass is + // loaded. + name->decrement_refcount(); klassOop bk; if (element_klass->oop_is_objArray()) { diff --git a/hotspot/src/share/vm/oops/oop.hpp b/hotspot/src/share/vm/oops/oop.hpp index 3ef043cebae..dae1c43c0ff 100644 --- a/hotspot/src/share/vm/oops/oop.hpp +++ b/hotspot/src/share/vm/oops/oop.hpp @@ -127,7 +127,6 @@ class oopDesc { bool is_instanceRef() const; bool is_array() const; bool is_objArray() const; - bool is_symbol() const; bool is_klass() const; bool is_thread() const; bool is_method() const; diff --git a/hotspot/src/share/vm/oops/oop.inline.hpp b/hotspot/src/share/vm/oops/oop.inline.hpp index 25b078b4c79..afdccfb262b 100644 --- a/hotspot/src/share/vm/oops/oop.inline.hpp +++ b/hotspot/src/share/vm/oops/oop.inline.hpp @@ -52,6 +52,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif // Implementation of all inlined member functions defined in oop.hpp // We need a separate file to avoid circular references @@ -140,7 +146,6 @@ inline bool oopDesc::is_array() const { return blueprint()->oop_is_ inline bool oopDesc::is_objArray() const { return blueprint()->oop_is_objArray(); } inline bool oopDesc::is_typeArray() const { return blueprint()->oop_is_typeArray(); } inline bool oopDesc::is_javaArray() const { return blueprint()->oop_is_javaArray(); } -inline bool oopDesc::is_symbol() const { return blueprint()->oop_is_symbol(); } inline bool oopDesc::is_klass() const { return blueprint()->oop_is_klass(); } inline bool oopDesc::is_thread() const { return blueprint()->oop_is_thread(); } inline bool oopDesc::is_method() const { return blueprint()->oop_is_method(); } diff --git a/hotspot/src/share/vm/oops/oopsHierarchy.hpp b/hotspot/src/share/vm/oops/oopsHierarchy.hpp index 4990e0684de..106fa144ef6 100644 --- a/hotspot/src/share/vm/oops/oopsHierarchy.hpp +++ b/hotspot/src/share/vm/oops/oopsHierarchy.hpp @@ -49,7 +49,6 @@ typedef class objArrayOopDesc* objArrayOop; typedef class typeArrayOopDesc* typeArrayOop; typedef class constantPoolOopDesc* constantPoolOop; typedef class constantPoolCacheOopDesc* constantPoolCacheOop; -typedef class symbolOopDesc* symbolOop; typedef class klassOopDesc* klassOop; typedef class markOopDesc* markOop; typedef class compiledICHolderOopDesc* compiledICHolderOop; @@ -166,7 +165,6 @@ DEF_OOP(constantPool); DEF_OOP(constantPoolCache); DEF_OOP(objArray); DEF_OOP(typeArray); -DEF_OOP(symbol); DEF_OOP(klass); DEF_OOP(compiledICHolder); @@ -190,7 +188,6 @@ class objArrayKlass; class typeArrayKlass; class constantPoolKlass; class constantPoolCacheKlass; -class symbolKlass; class compiledICHolderKlass; #endif // SHARE_VM_OOPS_OOPSHIERARCHY_HPP diff --git a/hotspot/src/share/vm/oops/symbolOop.cpp b/hotspot/src/share/vm/oops/symbol.cpp similarity index 64% rename from hotspot/src/share/vm/oops/symbolOop.cpp rename to hotspot/src/share/vm/oops/symbol.cpp index c5c82555281..ef2040ae051 100644 --- a/hotspot/src/share/vm/oops/symbolOop.cpp +++ b/hotspot/src/share/vm/oops/symbol.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2009, 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,16 +22,29 @@ * */ + #include "precompiled.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" +#include "runtime/os.hpp" +#include "memory/allocation.inline.hpp" +Symbol::Symbol(const u1* name, int length) : _refcount(0), _length(length) { + _identity_hash = os::random(); + for (int i = 0; i < _length; i++) { + byte_at_put(i, name[i]); + } +} + +void* Symbol::operator new(size_t size, int len) { + return (void *) AllocateHeap(object_size(len) * HeapWordSize, "symbol"); +} // ------------------------------------------------------------------ -// symbolOopDesc::equals +// Symbol::equals // // Compares the symbol with a string of the given length. -bool symbolOopDesc::equals(const char* str, int len) const { +bool Symbol::equals(const char* str, int len) const { int l = utf8_length(); if (l != len) return false; while (l-- > 0) { @@ -44,11 +57,11 @@ bool symbolOopDesc::equals(const char* str, int len) const { // ------------------------------------------------------------------ -// symbolOopDesc::starts_with +// Symbol::starts_with // // Tests if the symbol starts with the specified prefix of the given // length. -bool symbolOopDesc::starts_with(const char* prefix, int len) const { +bool Symbol::starts_with(const char* prefix, int len) const { if (len > utf8_length()) return false; while (len-- > 0) { if (prefix[len] != (char) byte_at(len)) @@ -60,15 +73,15 @@ bool symbolOopDesc::starts_with(const char* prefix, int len) const { // ------------------------------------------------------------------ -// symbolOopDesc::index_of +// Symbol::index_of // // Finds if the given string is a substring of this symbol's utf8 bytes. // Return -1 on failure. Otherwise return the first index where str occurs. -int symbolOopDesc::index_of_at(int i, const char* str, int len) const { +int Symbol::index_of_at(int i, const char* str, int len) const { assert(i >= 0 && i <= utf8_length(), "oob"); if (len <= 0) return 0; char first_char = str[0]; - address bytes = (address) ((symbolOopDesc*)this)->base(); + address bytes = (address) ((Symbol*)this)->base(); address limit = bytes + utf8_length() - len; // inclusive limit address scan = bytes + i; if (scan > limit) @@ -84,7 +97,7 @@ int symbolOopDesc::index_of_at(int i, const char* str, int len) const { } -char* symbolOopDesc::as_C_string(char* buf, int size) const { +char* Symbol::as_C_string(char* buf, int size) const { if (size > 0) { int len = MIN2(size - 1, utf8_length()); for (int i = 0; i < len; i++) { @@ -95,13 +108,13 @@ char* symbolOopDesc::as_C_string(char* buf, int size) const { return buf; } -char* symbolOopDesc::as_C_string() const { +char* Symbol::as_C_string() const { int len = utf8_length(); char* str = NEW_RESOURCE_ARRAY(char, len + 1); return as_C_string(str, len + 1); } -char* symbolOopDesc::as_C_string_flexible_buffer(Thread* t, +char* Symbol::as_C_string_flexible_buffer(Thread* t, char* buf, int size) const { char* str; int len = utf8_length(); @@ -114,7 +127,7 @@ char* symbolOopDesc::as_C_string_flexible_buffer(Thread* t, return as_C_string(str, buf_len); } -void symbolOopDesc::print_symbol_on(outputStream* st) { +void Symbol::print_symbol_on(outputStream* st) const { st = st ? st : tty; int length = UTF8::unicode_length((const char*)bytes(), utf8_length()); const char *ptr = (const char *)bytes(); @@ -129,8 +142,8 @@ void symbolOopDesc::print_symbol_on(outputStream* st) { } } -jchar* symbolOopDesc::as_unicode(int& length) const { - symbolOopDesc* this_ptr = (symbolOopDesc*)this; +jchar* Symbol::as_unicode(int& length) const { + Symbol* this_ptr = (Symbol*)this; length = UTF8::unicode_length((char*)this_ptr->bytes(), utf8_length()); jchar* result = NEW_RESOURCE_ARRAY(jchar, length); if (length > 0) { @@ -139,7 +152,7 @@ jchar* symbolOopDesc::as_unicode(int& length) const { return result; } -const char* symbolOopDesc::as_klass_external_name(char* buf, int size) const { +const char* Symbol::as_klass_external_name(char* buf, int size) const { if (size > 0) { char* str = as_C_string(buf, size); int length = (int)strlen(str); @@ -155,7 +168,7 @@ const char* symbolOopDesc::as_klass_external_name(char* buf, int size) const { } } -const char* symbolOopDesc::as_klass_external_name() const { +const char* Symbol::as_klass_external_name() const { char* str = as_C_string(); int length = (int)strlen(str); // Turn all '/'s into '.'s (also for array klasses) @@ -166,3 +179,53 @@ const char* symbolOopDesc::as_klass_external_name() const { } return str; } + + +void Symbol::print_on(outputStream* st) const { + if (this == NULL) { + st->print_cr("NULL"); + } else { + st->print("Symbol: '"); + print_symbol_on(st); + st->print("'"); + st->print(" count %d", refcount()); + } +} + +// The print_value functions are present in all builds, to support the +// disassembler and error reporting. +void Symbol::print_value_on(outputStream* st) const { + if (this == NULL) { + st->print("NULL"); + } else { + st->print("'"); + for (int i = 0; i < utf8_length(); i++) { + st->print("%c", byte_at(i)); + } + st->print("'"); + } +} + +void Symbol::increment_refcount() { + // Only increment the refcount if positive. If negative either + // overflow has occurred or it is a permanent symbol in a read only + // shared archive. + if (_refcount >= 0) { + Atomic::inc(&_refcount); + NOT_PRODUCT(Atomic::inc(&_total_count);) + } +} + +void Symbol::decrement_refcount() { + if (_refcount >= 0) { + Atomic::dec(&_refcount); +#ifdef ASSERT + if (_refcount < 0) { + print(); + assert(false, "reference count underflow for symbol"); + } +#endif + } +} + +NOT_PRODUCT(int Symbol::_total_count = 0;) diff --git a/hotspot/src/share/vm/oops/symbol.hpp b/hotspot/src/share/vm/oops/symbol.hpp new file mode 100644 index 00000000000..63c1df4f126 --- /dev/null +++ b/hotspot/src/share/vm/oops/symbol.hpp @@ -0,0 +1,223 @@ +/* + * Copyright (c) 1997, 2009, 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. + * + */ + +#ifndef SHARE_VM_OOPS_SYMBOL_HPP +#define SHARE_VM_OOPS_SYMBOL_HPP + +#include "utilities/utf8.hpp" +#include "memory/allocation.hpp" + +// A Symbol is a canonicalized string. +// All Symbols reside in global SymbolTable and are reference counted. + +// Reference counting +// +// All Symbols are allocated and added to the SymbolTable. +// When a class is unloaded, the reference counts of the Symbol pointers in +// the ConstantPool and in instanceKlass (see release_C_heap_structures) are +// decremented. When the reference count for a Symbol goes to 0, the garbage +// collector can free the Symbol and remove it from the SymbolTable. +// +// 0) Symbols need to be reference counted when a pointer to the Symbol is +// saved in persistent storage. This does not include the pointer +// in the SymbolTable bucket (the _literal field in HashtableEntry) +// that points to the Symbol. All other stores of a Symbol* +// to a field of a persistent variable (e.g., the _name filed in +// FieldAccessInfo or _ptr in a CPSlot) is reference counted. +// +// 1) The lookup of a "name" in the SymbolTable either creates a Symbol F for +// "name" and returns a pointer to F or finds a pre-existing Symbol F for +// "name" and returns a pointer to it. In both cases the reference count for F +// is incremented under the assumption that a pointer to F will be created from +// the return value. Thus the increment of the reference count is on the lookup +// and not on the assignment to the new Symbol*. That is +// Symbol* G = lookup() +// ^ increment on lookup() +// and not +// Symbol* G = lookup() +// ^ increment on assignmnet +// The reference count must be decremented manually when the copy of the +// pointer G is destroyed. +// +// 2) For a local Symbol* A that is a copy of an existing Symbol* B, the +// reference counting is elided when the scope of B is greater than the scope +// of A. For example, in the code fragment +// below "klass" is passed as a parameter to the method. Symbol* "kn" +// is a copy of the name in "klass". +// +// Symbol* kn = klass->name(); +// unsigned int d_hash = dictionary()->compute_hash(kn, class_loader); +// +// The scope of "klass" is greater than the scope of "kn" so the reference +// counting for "kn" is elided. +// +// Symbol* copied from ConstantPool entries are good candidates for reference +// counting elision. The ConstantPool entries for a class C exist until C is +// unloaded. If a Symbol* is copied out of the ConstantPool into Symbol* X, +// the Symbol* in the ConstantPool will in general out live X so the reference +// counting on X can be elided. +// +// For cases where the scope of A is not greater than the scope of B, +// the reference counting is explicitly done. See ciSymbol, +// ResolutionErrorEntry and ClassVerifier for examples. +// +// 3) When a Symbol K is created for temporary use, generally for substrings of +// an existing symbol or to create a new symbol, assign it to a +// TempNewSymbol. The SymbolTable methods new_symbol(), lookup() +// and probe() all potentially return a pointer to a new Symbol. +// The allocation (or lookup) of K increments the reference count for K +// and the destructor decrements the reference count. +// +// Another example of TempNewSymbol usage is parsed_name used in +// ClassFileParser::parseClassFile() where parsed_name is used in the cleanup +// after a failed attempt to load a class. Here parsed_name is a +// TempNewSymbol (passed in as a parameter) so the reference count on its symbol +// will be decremented when it goes out of scope. + +class Symbol : public CHeapObj { + friend class VMStructs; + friend class SymbolTable; + friend class MoveSymbols; + private: + volatile int _refcount; + int _identity_hash; + unsigned short _length; // number of UTF8 characters in the symbol + jbyte _body[1]; + + enum { + // max_symbol_length is constrained by type of _length + max_symbol_length = (1 << 16) -1 + }; + + static int object_size(int length) { + size_t size = heap_word_size(sizeof(Symbol) + length); + return align_object_size(size); + } + + void byte_at_put(int index, int value) { + assert(index >=0 && index < _length, "symbol index overflow"); + _body[index] = value; + } + + Symbol(const u1* name, int length); + void* operator new(size_t size, int len); + + public: + // Low-level access (used with care, since not GC-safe) + const jbyte* base() const { return &_body[0]; } + + int object_size() { return object_size(utf8_length()); } + + // Returns the largest size symbol we can safely hold. + static int max_length() { + return max_symbol_length; + } + + int identity_hash() { + return _identity_hash; + } + + // Reference counting. See comments above this class for when to use. + int refcount() const { return _refcount; } + void increment_refcount(); + void decrement_refcount(); + + int byte_at(int index) const { + assert(index >=0 && index < _length, "symbol index overflow"); + return base()[index]; + } + + const jbyte* bytes() const { return base(); } + + int utf8_length() const { return _length; } + + // Compares the symbol with a string. + bool equals(const char* str, int len) const; + bool equals(const char* str) const { return equals(str, (int) strlen(str)); } + + // Tests if the symbol starts with the given prefix. + bool starts_with(const char* prefix, int len) const; + bool starts_with(const char* prefix) const { + return starts_with(prefix, (int) strlen(prefix)); + } + + // Tests if the symbol starts with the given prefix. + int index_of_at(int i, const char* str, int len) const; + int index_of_at(int i, const char* str) const { + return index_of_at(i, str, (int) strlen(str)); + } + + // Three-way compare for sorting; returns -1/0/1 if receiver is than arg + // note that the ordering is not alfabetical + inline int fast_compare(Symbol* other) const; + + // Returns receiver converted to null-terminated UTF-8 string; string is + // allocated in resource area, or in the char buffer provided by caller. + char* as_C_string() const; + char* as_C_string(char* buf, int size) const; + // Use buf if needed buffer length is <= size. + char* as_C_string_flexible_buffer(Thread* t, char* buf, int size) const; + + + // Returns a null terminated utf8 string in a resource array + char* as_utf8() const { return as_C_string(); } + char* as_utf8_flexible_buffer(Thread* t, char* buf, int size) const { + return as_C_string_flexible_buffer(t, buf, size); + } + + jchar* as_unicode(int& length) const; + + // Treating this symbol as a class name, returns the Java name for the class. + // String is allocated in resource area if buffer is not provided. + // See Klass::external_name() + const char* as_klass_external_name() const; + const char* as_klass_external_name(char* buf, int size) const; + + // Printing + void print_symbol_on(outputStream* st = NULL) const; + void print_on(outputStream* st) const; // First level print + void print_value_on(outputStream* st) const; // Second level print. + + // printing on default output stream + void print() { print_on(tty); } + void print_value() { print_value_on(tty); } + +#ifndef PRODUCT + // Empty constructor to create a dummy symbol object on stack + // only for getting its vtable pointer. + Symbol() { } + + static int _total_count; +#endif +}; + +// Note: this comparison is used for vtable sorting only; it doesn't matter +// what order it defines, as long as it is a total, time-invariant order +// Since Symbol*s are in C_HEAP, their relative order in memory never changes, +// so use address comparison for speed +int Symbol::fast_compare(Symbol* other) const { + return (((uintptr_t)this < (uintptr_t)other) ? -1 + : ((uintptr_t)this == (uintptr_t) other) ? 0 : 1); +} +#endif // SHARE_VM_OOPS_SYMBOL_HPP diff --git a/hotspot/src/share/vm/oops/symbolKlass.cpp b/hotspot/src/share/vm/oops/symbolKlass.cpp deleted file mode 100644 index a569725e479..00000000000 --- a/hotspot/src/share/vm/oops/symbolKlass.cpp +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright (c) 1997, 2010, 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. - * - */ - -#include "precompiled.hpp" -#include "classfile/symbolTable.hpp" -#include "memory/gcLocker.hpp" -#include "oops/oop.inline.hpp" -#include "oops/symbolKlass.hpp" -#include "oops/symbolOop.hpp" -#include "runtime/handles.inline.hpp" - -symbolOop symbolKlass::allocate_symbol(u1* name, int len, TRAPS) { - // Don't allow symbol oops to be created which cannot fit in a symbolOop. - if (len > symbolOopDesc::max_length()) { - THROW_MSG_0(vmSymbols::java_lang_InternalError(), - "name is too long to represent"); - } - int size = symbolOopDesc::object_size(len); - symbolKlassHandle h_k(THREAD, as_klassOop()); - symbolOop sym = (symbolOop) - CollectedHeap::permanent_obj_allocate(h_k, size, CHECK_NULL); - assert(!sym->is_parsable(), "not expecting parsability yet."); - No_Safepoint_Verifier no_safepoint; - sym->set_utf8_length(len); - for (int i = 0; i < len; i++) { - sym->byte_at_put(i, name[i]); - } - // Let the first emptySymbol be created and - // ensure only one is ever created. - assert(sym->is_parsable() || Universe::emptySymbol() == NULL, - "should be parsable here."); - return sym; -} - -bool symbolKlass::allocate_symbols(int names_count, const char** names, - int* lengths, symbolOop* sym_oops, TRAPS) { - if (UseConcMarkSweepGC || UseParallelGC) { - // Concurrent GC needs to mark all the allocated symbol oops after - // the remark phase which isn't done below (except the first symbol oop). - // So return false which will let the symbols be allocated one by one. - // The parallel collector uses an object start array to find the - // start of objects on a dirty card. The object start array is not - // updated for the start of each symbol so is not precise. During - // object array verification this causes a verification failure. - // In a product build this causes extra searching for the start of - // a symbol. As with the concurrent collector a return of false will - // cause each symbol to be allocated separately and in the case - // of the parallel collector will cause the object - // start array to be updated. - return false; - } - - assert(names_count > 0, "can't allocate 0 symbols"); - - int total_size = 0; - int i, sizes[SymbolTable::symbol_alloc_batch_size]; - for (i=0; i symbolOopDesc::max_length()) { - return false; - } - int sz = symbolOopDesc::object_size(len); - sizes[i] = sz * HeapWordSize; - total_size += sz; - } - symbolKlassHandle h_k(THREAD, as_klassOop()); - HeapWord* base = Universe::heap()->permanent_mem_allocate(total_size); - if (base == NULL) { - return false; - } - - // CAN'T take any safepoint during the initialization of the symbol oops ! - No_Safepoint_Verifier nosafepoint; - - klassOop sk = h_k(); - int pos = 0; - for (i=0; iset_mark(markOopDesc::prototype()); - s->set_klass(sk); - s->set_utf8_length(lengths[i]); - const char* name = names[i]; - for (int j=0; jbyte_at_put(j, name[j]); - } - - assert(s->is_parsable(), "should be parsable here."); - - sym_oops[i] = s; - pos += sizes[i]; - } - return true; -} - -klassOop symbolKlass::create_klass(TRAPS) { - symbolKlass o; - KlassHandle h_this_klass(THREAD, Universe::klassKlassObj()); - KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_NULL); - // Make sure size calculation is right - assert(k()->size() == align_object_size(header_size()), "wrong size for object"); -// java_lang_Class::create_mirror(k, CHECK_NULL); // Allocate mirror - return k(); -} - -int symbolKlass::oop_size(oop obj) const { - assert(obj->is_symbol(),"must be a symbol"); - symbolOop s = symbolOop(obj); - int size = s->object_size(); - return size; -} - -bool symbolKlass::oop_is_parsable(oop obj) const { - assert(obj->is_symbol(),"must be a symbol"); - symbolOop s = symbolOop(obj); - return s->object_is_parsable(); -} - -void symbolKlass::oop_follow_contents(oop obj) { - assert (obj->is_symbol(), "object must be symbol"); - // Performance tweak: We skip iterating over the klass pointer since we - // know that Universe::symbolKlassObj never moves. - // Note: do not follow next link here (see SymbolTable::follow_contents) -} - -#ifndef SERIALGC -void symbolKlass::oop_follow_contents(ParCompactionManager* cm, oop obj) { - assert (obj->is_symbol(), "object must be symbol"); - // Performance tweak: We skip iterating over the klass pointer since we - // know that Universe::symbolKlassObj never moves. - // Note: do not follow next link here (see SymbolTable::follow_contents) -} -#endif // SERIALGC - -int symbolKlass::oop_oop_iterate(oop obj, OopClosure* blk) { - assert(obj->is_symbol(), "object must be symbol"); - symbolOop s = symbolOop(obj); - // Get size before changing pointers. - // Don't call size() or oop_size() since that is a virtual call. - int size = s->object_size(); - // Performance tweak: We skip iterating over the klass pointer since we - // know that Universe::symbolKlassObj never moves. - return size; -} - - -int symbolKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) { - assert(obj->is_symbol(), "object must be symbol"); - symbolOop s = symbolOop(obj); - // Get size before changing pointers. - // Don't call size() or oop_size() since that is a virtual call. - int size = s->object_size(); - // Performance tweak: We skip iterating over the klass pointer since we - // know that Universe::symbolKlassObj never moves. - return size; -} - - -int symbolKlass::oop_adjust_pointers(oop obj) { - assert(obj->is_symbol(), "should be symbol"); - symbolOop s = symbolOop(obj); - // Get size before changing pointers. - // Don't call size() or oop_size() since that is a virtual call. - int size = s->object_size(); - // Performance tweak: We skip iterating over the klass pointer since we - // know that Universe::symbolKlassObj never moves. - return size; -} - - -#ifndef SERIALGC -void symbolKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { - assert(obj->is_symbol(), "should be symbol"); -} - -int symbolKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { - assert(obj->is_symbol(), "should be symbol"); - return symbolOop(obj)->object_size(); -} - -int symbolKlass::oop_update_pointers(ParCompactionManager* cm, oop obj, - HeapWord* beg_addr, HeapWord* end_addr) { - assert(obj->is_symbol(), "should be symbol"); - return symbolOop(obj)->object_size(); -} -#endif // SERIALGC - -#ifndef PRODUCT -// Printing - -void symbolKlass::oop_print_on(oop obj, outputStream* st) { - st->print("Symbol: '"); - symbolOop(obj)->print_symbol_on(st); - st->print("'"); -} - -#endif //PRODUCT - -void symbolKlass::oop_print_value_on(oop obj, outputStream* st) { - symbolOop sym = symbolOop(obj); - st->print("'"); - for (int i = 0; i < sym->utf8_length(); i++) { - st->print("%c", sym->byte_at(i)); - } - st->print("'"); -} - -const char* symbolKlass::internal_name() const { - return "{symbol}"; -} diff --git a/hotspot/src/share/vm/oops/symbolKlass.hpp b/hotspot/src/share/vm/oops/symbolKlass.hpp deleted file mode 100644 index 852e99701ac..00000000000 --- a/hotspot/src/share/vm/oops/symbolKlass.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 1997, 2010, 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. - * - */ - -#ifndef SHARE_VM_OOPS_SYMBOLKLASS_HPP -#define SHARE_VM_OOPS_SYMBOLKLASS_HPP - -#include "oops/typeArrayKlass.hpp" - -// a symbolKlass is the klass for a symbolOop - -class symbolKlass : public Klass { - friend class VMStructs; - private: - juint _alloc_size; // allocation profiling support - public: - // Allocation - DEFINE_ALLOCATE_PERMANENT(symbolKlass); - static klassOop create_klass(TRAPS); - symbolOop allocate_symbol(u1* name, int len, TRAPS); // Assumes no characters larger than 0x7F - bool allocate_symbols(int names_count, const char** names, int* lengths, symbolOop* sym_oops, TRAPS); - - // Test operation - bool oop_is_symbol() const { return true; } - - // Casting from klassOop - static symbolKlass* cast(klassOop k) { - assert(k->klass_part()->oop_is_symbol(), "cast to symbolKlass"); - return (symbolKlass*) k->klass_part(); - } - - static int header_size() { return oopDesc::header_size() + sizeof(symbolKlass)/HeapWordSize; } - int oop_size(oop obj) const; - int klass_oop_size() const { return object_size(); } - int object_size() const { return align_object_size(header_size()); } - - // Garbage collection - void oop_follow_contents(oop obj); - int oop_adjust_pointers(oop obj); - bool oop_is_parsable(oop obj) const; - - // Parallel Scavenge and Parallel Old - PARALLEL_GC_DECLS - - // Allocation profiling support - juint alloc_size() const { return _alloc_size; } - void set_alloc_size(juint n) { _alloc_size = n; } - - // Iterators - int oop_oop_iterate(oop obj, OopClosure* blk); - int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr); - - // Printing - void oop_print_value_on(oop obj, outputStream* st); -#ifndef PRODUCT - void oop_print_on(oop obj, outputStream* st); -#endif //PRODUCT - const char* internal_name() const; -}; - -#endif // SHARE_VM_OOPS_SYMBOLKLASS_HPP diff --git a/hotspot/src/share/vm/oops/symbolOop.hpp b/hotspot/src/share/vm/oops/symbolOop.hpp deleted file mode 100644 index 475397f9a2f..00000000000 --- a/hotspot/src/share/vm/oops/symbolOop.hpp +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1997, 2010, 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. - * - */ - -#ifndef SHARE_VM_OOPS_SYMBOLOOP_HPP -#define SHARE_VM_OOPS_SYMBOLOOP_HPP - -#include "oops/typeArrayOop.hpp" -#include "utilities/utf8.hpp" - -// A symbolOop is a canonicalized string. -// All symbolOops reside in global symbolTable. -// See oopFactory::new_symbol for how to allocate a symbolOop - -class symbolOopDesc : public oopDesc { - friend class VMStructs; - private: - unsigned short _length; // number of UTF8 characters in the symbol - jbyte _body[1]; - - enum { - // max_symbol_length is constrained by type of _length - max_symbol_length = (1 << 16) -1 - }; - public: - - // Low-level access (used with care, since not GC-safe) - jbyte* base() { return &_body[0]; } - - - // Returns the largest size symbol we can safely hold. - static int max_length() { - return max_symbol_length; - } - - static int object_size(int length) { - int size = header_size() + (sizeof(unsigned short) + length + HeapWordSize - 1) / HeapWordSize; - return align_object_size(size); - } - - int object_size() { return object_size(utf8_length()); } - - int byte_at(int index) const { - assert(index >=0 && index < _length, "symbol index overflow"); - return ((symbolOopDesc*)this)->base()[index]; - } - - void byte_at_put(int index, int value) { - assert(index >=0 && index < _length, "symbol index overflow"); - ((symbolOopDesc*)this)->base()[index] = value; - } - - jbyte* bytes() { return base(); } - - int utf8_length() const { return _length; } - - void set_utf8_length(int len) { _length = len; } - - // Compares the symbol with a string. - bool equals(const char* str, int len) const; - bool equals(const char* str) const { return equals(str, (int) strlen(str)); } - - // Tests if the symbol starts with the given prefix. - bool starts_with(const char* prefix, int len) const; - bool starts_with(const char* prefix) const { - return starts_with(prefix, (int) strlen(prefix)); - } - - // Tests if the symbol starts with the given prefix. - int index_of_at(int i, const char* str, int len) const; - int index_of_at(int i, const char* str) const { - return index_of_at(i, str, (int) strlen(str)); - } - - // Three-way compare for sorting; returns -1/0/1 if receiver is than arg - // note that the ordering is not alfabetical - inline int fast_compare(symbolOop other) const; - - // Returns receiver converted to null-terminated UTF-8 string; string is - // allocated in resource area, or in the char buffer provided by caller. - char* as_C_string() const; - char* as_C_string(char* buf, int size) const; - // Use buf if needed buffer length is <= size. - char* as_C_string_flexible_buffer(Thread* t, char* buf, int size) const; - - - // Returns a null terminated utf8 string in a resource array - char* as_utf8() const { return as_C_string(); } - char* as_utf8_flexible_buffer(Thread* t, char* buf, int size) const { - return as_C_string_flexible_buffer(t, buf, size); - } - - jchar* as_unicode(int& length) const; - - // Treating this symbol as a class name, returns the Java name for the class. - // String is allocated in resource area if buffer is not provided. - // See Klass::external_name() - const char* as_klass_external_name() const; - const char* as_klass_external_name(char* buf, int size) const; - - bool object_is_parsable() const { - return (utf8_length() > 0 || (oop)this == Universe::emptySymbol()); - } - - // Printing - void print_symbol_on(outputStream* st = NULL); -}; - - -// Note: this comparison is used for vtable sorting only; it doesn't matter -// what order it defines, as long as it is a total, time-invariant order -// Since symbolOops are in permSpace, their relative order in memory never changes, -// so use address comparison for speed -int symbolOopDesc::fast_compare(symbolOop other) const { - return (((uintptr_t)this < (uintptr_t)other) ? -1 - : ((uintptr_t)this == (uintptr_t) other) ? 0 : 1); -} - -#endif // SHARE_VM_OOPS_SYMBOLOOP_HPP diff --git a/hotspot/src/share/vm/oops/typeArrayKlass.cpp b/hotspot/src/share/vm/oops/typeArrayKlass.cpp index 99d3f65cb80..3ec36256945 100644 --- a/hotspot/src/share/vm/oops/typeArrayKlass.cpp +++ b/hotspot/src/share/vm/oops/typeArrayKlass.cpp @@ -53,16 +53,15 @@ klassOop typeArrayKlass::create_klass(BasicType type, int scale, const char* name_str, TRAPS) { typeArrayKlass o; - symbolHandle sym(symbolOop(NULL)); - // bootstrapping: don't create sym if symbolKlass not created yet - if (Universe::symbolKlassObj() != NULL && name_str != NULL) { - sym = oopFactory::new_symbol_handle(name_str, CHECK_NULL); + Symbol* sym = NULL; + if (name_str != NULL) { + sym = SymbolTable::new_symbol(name_str, CHECK_NULL); } KlassHandle klassklass (THREAD, Universe::typeArrayKlassKlassObj()); arrayKlassHandle k = base_create_array_klass(o.vtbl_value(), header_size(), klassklass, CHECK_NULL); typeArrayKlass* ak = typeArrayKlass::cast(k()); - ak->set_name(sym()); + ak->set_name(sym); ak->set_layout_helper(array_layout_helper(type)); assert(scale == (1 << ak->log2_element_size()), "scale must check out"); assert(ak->oop_is_javaArray(), "sanity"); diff --git a/hotspot/src/share/vm/oops/typeArrayOop.hpp b/hotspot/src/share/vm/oops/typeArrayOop.hpp index 05d4ef81db0..c39987be5c7 100644 --- a/hotspot/src/share/vm/oops/typeArrayOop.hpp +++ b/hotspot/src/share/vm/oops/typeArrayOop.hpp @@ -45,6 +45,12 @@ #ifdef TARGET_OS_ARCH_windows_x86 # include "orderAccess_windows_x86.inline.hpp" #endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "orderAccess_linux_arm.inline.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "orderAccess_linux_ppc.inline.hpp" +#endif // A typeArrayOop is an array containing basic types (non oop elements). // It is used for arrays of {characters, singles, doubles, bytes, shorts, integers, longs} diff --git a/hotspot/src/share/vm/opto/buildOopMap.cpp b/hotspot/src/share/vm/opto/buildOopMap.cpp index 564fd369aff..32a174729c7 100644 --- a/hotspot/src/share/vm/opto/buildOopMap.cpp +++ b/hotspot/src/share/vm/opto/buildOopMap.cpp @@ -41,6 +41,12 @@ #ifdef TARGET_ARCH_zero # include "vmreg_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "vmreg_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vmreg_ppc.inline.hpp" +#endif // The functions in this file builds OopMaps after all scheduling is done. // diff --git a/hotspot/src/share/vm/opto/c2_globals.hpp b/hotspot/src/share/vm/opto/c2_globals.hpp index fe516dff508..159b2805081 100644 --- a/hotspot/src/share/vm/opto/c2_globals.hpp +++ b/hotspot/src/share/vm/opto/c2_globals.hpp @@ -32,6 +32,9 @@ #ifdef TARGET_ARCH_sparc # include "c2_globals_sparc.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "c2_globals_arm.hpp" +#endif #ifdef TARGET_OS_FAMILY_linux # include "c2_globals_linux.hpp" #endif diff --git a/hotspot/src/share/vm/opto/c2compiler.cpp b/hotspot/src/share/vm/opto/c2compiler.cpp index 889fc4295ae..7b0b9be59a6 100644 --- a/hotspot/src/share/vm/opto/c2compiler.cpp +++ b/hotspot/src/share/vm/opto/c2compiler.cpp @@ -37,6 +37,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/ad_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/ad_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/ad_ppc.hpp" +#endif volatile int C2Compiler::_runtimes = uninitialized; diff --git a/hotspot/src/share/vm/opto/compile.cpp b/hotspot/src/share/vm/opto/compile.cpp index cad5224e62d..a1d9659af82 100644 --- a/hotspot/src/share/vm/opto/compile.cpp +++ b/hotspot/src/share/vm/opto/compile.cpp @@ -74,6 +74,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/ad_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/ad_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/ad_ppc.hpp" +#endif // -------------------- Compile::mach_constant_base_node ----------------------- diff --git a/hotspot/src/share/vm/opto/gcm.cpp b/hotspot/src/share/vm/opto/gcm.cpp index 1a0116445d2..2122f7ca733 100644 --- a/hotspot/src/share/vm/opto/gcm.cpp +++ b/hotspot/src/share/vm/opto/gcm.cpp @@ -47,6 +47,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/ad_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/ad_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/ad_ppc.hpp" +#endif // Portions of code courtesy of Clifford Click diff --git a/hotspot/src/share/vm/opto/locknode.hpp b/hotspot/src/share/vm/opto/locknode.hpp index 3858a038fc2..64a1027a73c 100644 --- a/hotspot/src/share/vm/opto/locknode.hpp +++ b/hotspot/src/share/vm/opto/locknode.hpp @@ -40,6 +40,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/ad_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/ad_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/ad_ppc.hpp" +#endif //------------------------------BoxLockNode------------------------------------ class BoxLockNode : public Node { diff --git a/hotspot/src/share/vm/opto/output.hpp b/hotspot/src/share/vm/opto/output.hpp index 7e3237198e3..51eaa5c5e2b 100644 --- a/hotspot/src/share/vm/opto/output.hpp +++ b/hotspot/src/share/vm/opto/output.hpp @@ -39,6 +39,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/ad_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/ad_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/ad_ppc.hpp" +#endif class Arena; class Bundle; diff --git a/hotspot/src/share/vm/opto/regmask.cpp b/hotspot/src/share/vm/opto/regmask.cpp index b1ba93801f9..3841a42fc53 100644 --- a/hotspot/src/share/vm/opto/regmask.cpp +++ b/hotspot/src/share/vm/opto/regmask.cpp @@ -37,6 +37,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/ad_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/ad_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/ad_ppc.hpp" +#endif #define RM_SIZE _RM_SIZE /* a constant private to the class RegMask */ diff --git a/hotspot/src/share/vm/opto/regmask.hpp b/hotspot/src/share/vm/opto/regmask.hpp index b1c280da298..7c3e7182580 100644 --- a/hotspot/src/share/vm/opto/regmask.hpp +++ b/hotspot/src/share/vm/opto/regmask.hpp @@ -40,6 +40,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/adGlobals_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/adGlobals_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/adGlobals_ppc.hpp" +#endif // Some fun naming (textual) substitutions: // diff --git a/hotspot/src/share/vm/opto/runtime.cpp b/hotspot/src/share/vm/opto/runtime.cpp index c549b1ba443..b0544fef2ec 100644 --- a/hotspot/src/share/vm/opto/runtime.cpp +++ b/hotspot/src/share/vm/opto/runtime.cpp @@ -80,6 +80,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/ad_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/ad_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/ad_ppc.hpp" +#endif // For debugging purposes: @@ -477,7 +483,7 @@ const TypeFunc *OptoRuntime::g1_wb_post_Type() { const TypeFunc *OptoRuntime::uncommon_trap_Type() { // create input type (domain) const Type **fields = TypeTuple::fields(1); - // symbolOop name of class to be loaded + // Symbol* name of class to be loaded fields[TypeFunc::Parms+0] = TypeInt::INT; const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields); @@ -586,7 +592,7 @@ const TypeFunc* OptoRuntime::modf_Type() { const TypeFunc *OptoRuntime::Math_D_D_Type() { // create input type (domain) const Type **fields = TypeTuple::fields(2); - // symbolOop name of class to be loaded + // Symbol* name of class to be loaded fields[TypeFunc::Parms+0] = Type::DOUBLE; fields[TypeFunc::Parms+1] = Type::HALF; const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+2, fields); diff --git a/hotspot/src/share/vm/precompiled.hpp b/hotspot/src/share/vm/precompiled.hpp index 602331ea4af..1b804cbf215 100644 --- a/hotspot/src/share/vm/precompiled.hpp +++ b/hotspot/src/share/vm/precompiled.hpp @@ -169,7 +169,7 @@ # include "oops/oop.inline.hpp" # include "oops/oop.inline2.hpp" # include "oops/oopsHierarchy.hpp" -# include "oops/symbolOop.hpp" +# include "oops/symbol.hpp" # include "oops/typeArrayKlass.hpp" # include "oops/typeArrayOop.hpp" # include "prims/jni.h" diff --git a/hotspot/src/share/vm/prims/forte.cpp b/hotspot/src/share/vm/prims/forte.cpp index c1cb5531263..3c48f01d245 100644 --- a/hotspot/src/share/vm/prims/forte.cpp +++ b/hotspot/src/share/vm/prims/forte.cpp @@ -520,6 +520,7 @@ static void forte_fill_call_trace_given_top(JavaThread* thd, // method_id - jmethodID of the method being executed extern "C" { +JNIEXPORT void AsyncGetCallTrace(ASGCT_CallTrace *trace, jint depth, void* ucontext) { // This is if'd out because we no longer use thread suspension. diff --git a/hotspot/src/share/vm/prims/jni.cpp b/hotspot/src/share/vm/prims/jni.cpp index 2638d7dc4e8..a4b7a4dfdb4 100644 --- a/hotspot/src/share/vm/prims/jni.cpp +++ b/hotspot/src/share/vm/prims/jni.cpp @@ -40,7 +40,7 @@ #include "oops/objArrayKlass.hpp" #include "oops/objArrayOop.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "oops/typeArrayKlass.hpp" #include "oops/typeArrayOop.hpp" #include "prims/jni.h" @@ -338,16 +338,15 @@ JNI_ENTRY(jclass, jni_DefineClass(JNIEnv *env, const char *name, jobject loaderR // Since exceptions can be thrown, class initialization can take place // if name is NULL no check for class name in .class stream has to be made. - symbolHandle class_name; if (name != NULL) { const int str_len = (int)strlen(name); - if (str_len > symbolOopDesc::max_length()) { + if (str_len > Symbol::max_length()) { // It's impossible to create this class; the name cannot fit // into the constant pool. THROW_MSG_0(vmSymbols::java_lang_NoClassDefFoundError(), name); } - class_name = oopFactory::new_symbol_handle(name, str_len, CHECK_NULL); } + TempNewSymbol class_name = SymbolTable::new_symbol(name, THREAD); ResourceMark rm(THREAD); ClassFileStream st((u1*) buf, bufLen, NULL); @@ -394,7 +393,7 @@ JNI_ENTRY(jclass, jni_FindClass(JNIEnv *env, const char *name)) // Sanity check the name: it cannot be null or larger than the maximum size // name we can fit in the constant pool. - if (name == NULL || (int)strlen(name) > symbolOopDesc::max_length()) { + if (name == NULL || (int)strlen(name) > Symbol::max_length()) { THROW_MSG_0(vmSymbols::java_lang_NoClassDefFoundError(), name); } @@ -411,8 +410,8 @@ JNI_ENTRY(jclass, jni_FindClass(JNIEnv *env, const char *name)) k->name() == vmSymbols::java_lang_ClassLoader_NativeLibrary()) { JavaValue result(T_OBJECT); JavaCalls::call_static(&result, k, - vmSymbolHandles::getFromClass_name(), - vmSymbolHandles::void_class_signature(), + vmSymbols::getFromClass_name(), + vmSymbols::void_class_signature(), thread); if (HAS_PENDING_EXCEPTION) { Handle ex(thread, thread->pending_exception()); @@ -430,7 +429,7 @@ JNI_ENTRY(jclass, jni_FindClass(JNIEnv *env, const char *name)) loader = Handle(THREAD, SystemDictionary::java_system_loader()); } - symbolHandle sym = oopFactory::new_symbol_handle(name, CHECK_NULL); + TempNewSymbol sym = SymbolTable::new_symbol(name, CHECK_NULL); result = find_class_from_class_loader(env, sym, true, loader, protection_domain, true, thread); @@ -609,7 +608,7 @@ JNI_ENTRY(jint, jni_ThrowNew(JNIEnv *env, jclass clazz, const char *message)) DT_RETURN_MARK(ThrowNew, jint, (const jint&)ret); instanceKlass* k = instanceKlass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz))); - symbolHandle name = symbolHandle(THREAD, k->name()); + Symbol* name = k->name(); Handle class_loader (THREAD, k->class_loader()); Handle protection_domain (THREAD, k->protection_domain()); THROW_MSG_LOADER_(name, (char *)message, class_loader, protection_domain, JNI_OK); @@ -663,8 +662,8 @@ JNI_ENTRY_NO_PRESERVE(void, jni_ExceptionDescribe(JNIEnv *env)) ex, KlassHandle(THREAD, SystemDictionary::Throwable_klass()), - vmSymbolHandles::printStackTrace_name(), - vmSymbolHandles::void_method_signature(), + vmSymbols::printStackTrace_name(), + vmSymbols::void_method_signature(), THREAD); // If an exception is thrown in the call it gets thrown away. Not much // we can do with it. The native code that calls this, does not check @@ -838,8 +837,7 @@ class JNI_ArgumentPusher : public SignatureIterator { virtual void get_double () = 0; virtual void get_object () = 0; - JNI_ArgumentPusher(Thread *thread, symbolOop signature) - : SignatureIterator(thread, signature) { + JNI_ArgumentPusher(Symbol* signature) : SignatureIterator(signature) { this->_return_type = T_ILLEGAL; _arguments = NULL; } @@ -895,12 +893,12 @@ class JNI_ArgumentPusherVaArg : public JNI_ArgumentPusher { } public: - JNI_ArgumentPusherVaArg(Thread *thread, symbolOop signature, va_list rap) - : JNI_ArgumentPusher(thread, signature) { + JNI_ArgumentPusherVaArg(Symbol* signature, va_list rap) + : JNI_ArgumentPusher(signature) { set_ap(rap); } - JNI_ArgumentPusherVaArg(Thread *thread, jmethodID method_id, va_list rap) - : JNI_ArgumentPusher(thread, JNIHandles::resolve_jmethod_id(method_id)->signature()) { + JNI_ArgumentPusherVaArg(jmethodID method_id, va_list rap) + : JNI_ArgumentPusher(JNIHandles::resolve_jmethod_id(method_id)->signature()) { set_ap(rap); } @@ -966,12 +964,12 @@ class JNI_ArgumentPusherArray : public JNI_ArgumentPusher { inline void set_ap(const jvalue *rap) { _ap = rap; } public: - JNI_ArgumentPusherArray(Thread *thread, symbolOop signature, const jvalue *rap) - : JNI_ArgumentPusher(thread, signature) { + JNI_ArgumentPusherArray(Symbol* signature, const jvalue *rap) + : JNI_ArgumentPusher(signature) { set_ap(rap); } - JNI_ArgumentPusherArray(Thread *thread, jmethodID method_id, const jvalue *rap) - : JNI_ArgumentPusher(thread, JNIHandles::resolve_jmethod_id(method_id)->signature()) { + JNI_ArgumentPusherArray(jmethodID method_id, const jvalue *rap) + : JNI_ArgumentPusher(JNIHandles::resolve_jmethod_id(method_id)->signature()) { set_ap(rap); } @@ -1038,8 +1036,8 @@ static methodHandle jni_resolve_interface_call(Handle recv, methodHandle method, KlassHandle recv_klass; // Default to NULL (use of ?: can confuse gcc) if (recv.not_null()) recv_klass = KlassHandle(THREAD, recv->klass()); KlassHandle spec_klass (THREAD, method->method_holder()); - symbolHandle name (THREAD, method->name()); - symbolHandle signature (THREAD, method->signature()); + Symbol* name = method->name(); + Symbol* signature = method->signature(); CallInfo info; LinkResolver::resolve_interface_call(info, recv, recv_klass, spec_klass, name, signature, KlassHandle(), false, true, CHECK_(methodHandle())); return info.selected_method(); @@ -1051,8 +1049,8 @@ static methodHandle jni_resolve_virtual_call(Handle recv, methodHandle method, T KlassHandle recv_klass; // Default to NULL (use of ?: can confuse gcc) if (recv.not_null()) recv_klass = KlassHandle(THREAD, recv->klass()); KlassHandle spec_klass (THREAD, method->method_holder()); - symbolHandle name (THREAD, method->name()); - symbolHandle signature (THREAD, method->signature()); + Symbol* name = method->name(); + Symbol* signature = method->signature(); CallInfo info; LinkResolver::resolve_virtual_call(info, recv, recv_klass, spec_klass, name, signature, KlassHandle(), false, true, CHECK_(methodHandle())); return info.selected_method(); @@ -1073,7 +1071,7 @@ static void jni_invoke_static(JNIEnv *env, JavaValue* result, jobject receiver, assert(method->is_static(), "method should be static"); // Fill out JavaCallArguments object - args->iterate( Fingerprinter(THREAD, method).fingerprint() ); + args->iterate( Fingerprinter(method).fingerprint() ); // Initialize result type result->set_type(args->get_ret_type()); @@ -1149,7 +1147,7 @@ static void jni_invoke_nonstatic(JNIEnv *env, JavaValue* result, jobject receive args->push_receiver(h_recv); // Push jobject handle // Fill out JavaCallArguments object - args->iterate( Fingerprinter(THREAD, method).fingerprint() ); + args->iterate( Fingerprinter(method).fingerprint() ); // Initialize result type result->set_type(args->get_ret_type()); @@ -1196,7 +1194,7 @@ JNI_ENTRY(jobject, jni_NewObjectA(JNIEnv *env, jclass clazz, jmethodID methodID, instanceOop i = alloc_object(clazz, CHECK_NULL); obj = JNIHandles::make_local(env, i); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherArray ap(THREAD, methodID, args); + JNI_ArgumentPusherArray ap(methodID, args); jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL); return obj; JNI_END @@ -1212,7 +1210,7 @@ JNI_ENTRY(jobject, jni_NewObjectV(JNIEnv *env, jclass clazz, jmethodID methodID, instanceOop i = alloc_object(clazz, CHECK_NULL); obj = JNIHandles::make_local(env, i); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); + JNI_ArgumentPusherVaArg ap(methodID, args); jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL); return obj; JNI_END @@ -1230,7 +1228,7 @@ JNI_ENTRY(jobject, jni_NewObject(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args; va_start(args, methodID); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); + JNI_ArgumentPusherVaArg ap(methodID, args); jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL); va_end(args); return obj; @@ -1271,16 +1269,13 @@ static jmethodID get_method_id(JNIEnv *env, jclass clazz, const char *name_str, // The class should have been loaded (we have an instance of the class // passed in) so the method and signature should already be in the symbol // table. If they're not there, the method doesn't exist. - symbolHandle signature = - symbolHandle(THREAD, SymbolTable::probe(sig, (int)strlen(sig))); - symbolHandle name; - if (name_str == NULL) { - name = vmSymbolHandles::object_initializer_name(); - } else { - name = symbolHandle(THREAD, - SymbolTable::probe(name_str, (int)strlen(name_str))); - } - if (name.is_null() || signature.is_null()) { + const char *name_to_probe = (name_str == NULL) + ? vmSymbols::object_initializer_name()->as_C_string() + : name_str; + TempNewSymbol name = SymbolTable::probe(name_to_probe, (int)strlen(name_to_probe)); + TempNewSymbol signature = SymbolTable::probe(sig, (int)strlen(sig)); + + if (name == NULL || signature == NULL) { THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), name_str); } @@ -1298,20 +1293,20 @@ static jmethodID get_method_id(JNIEnv *env, jclass clazz, const char *name_str, Klass::cast(klass())->initialize(CHECK_NULL); methodOop m; - if (name() == vmSymbols::object_initializer_name() || - name() == vmSymbols::class_initializer_name()) { + if (name == vmSymbols::object_initializer_name() || + name == vmSymbols::class_initializer_name()) { // Never search superclasses for constructors if (klass->oop_is_instance()) { - m = instanceKlass::cast(klass())->find_method(name(), signature()); + m = instanceKlass::cast(klass())->find_method(name, signature); } else { m = NULL; } } else { - m = klass->lookup_method(name(), signature()); + m = klass->lookup_method(name, signature); // Look up interfaces if (m == NULL && klass->oop_is_instance()) { - m = instanceKlass::cast(klass())->lookup_method_in_all_interfaces(name(), - signature()); + m = instanceKlass::cast(klass())->lookup_method_in_all_interfaces(name, + signature); } } if (m == NULL || (m->is_static() != is_static)) { @@ -1365,7 +1360,7 @@ JNI_ENTRY(ResultType, \ va_list args; \ va_start(args, methodID); \ JavaValue jvalue(Tag); \ - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \ + JNI_ArgumentPusherVaArg ap(methodID, args); \ jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK_0); \ va_end(args); \ ret = jvalue.get_##ResultType(); \ @@ -1383,7 +1378,7 @@ JNI_ENTRY(ResultType, \ (const ResultType&)ret);\ \ JavaValue jvalue(Tag); \ - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \ + JNI_ArgumentPusherVaArg ap(methodID, args); \ jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK_0); \ ret = jvalue.get_##ResultType(); \ return ret;\ @@ -1399,7 +1394,7 @@ JNI_ENTRY(ResultType, \ (const ResultType&)ret);\ \ JavaValue jvalue(Tag); \ - JNI_ArgumentPusherArray ap(THREAD, methodID, args); \ + JNI_ArgumentPusherArray ap(methodID, args); \ jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK_0); \ ret = jvalue.get_##ResultType(); \ return ret;\ @@ -1429,7 +1424,7 @@ JNI_ENTRY(void, jni_CallVoidMethod(JNIEnv *env, jobject obj, jmethodID methodID, va_list args; va_start(args, methodID); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); + JNI_ArgumentPusherVaArg ap(methodID, args); jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK); va_end(args); JNI_END @@ -1441,7 +1436,7 @@ JNI_ENTRY(void, jni_CallVoidMethodV(JNIEnv *env, jobject obj, jmethodID methodID DT_VOID_RETURN_MARK(CallVoidMethodV); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); + JNI_ArgumentPusherVaArg ap(methodID, args); jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK); JNI_END @@ -1452,7 +1447,7 @@ JNI_ENTRY(void, jni_CallVoidMethodA(JNIEnv *env, jobject obj, jmethodID methodID DT_VOID_RETURN_MARK(CallVoidMethodA); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherArray ap(THREAD, methodID, args); + JNI_ArgumentPusherArray ap(methodID, args); jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK); JNI_END @@ -1475,7 +1470,7 @@ JNI_ENTRY(ResultType, \ va_list args; \ va_start(args, methodID); \ JavaValue jvalue(Tag); \ - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \ + JNI_ArgumentPusherVaArg ap(methodID, args); \ jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_0); \ va_end(args); \ ret = jvalue.get_##ResultType(); \ @@ -1491,7 +1486,7 @@ JNI_ENTRY(ResultType, \ (const ResultType&)ret);\ \ JavaValue jvalue(Tag); \ - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \ + JNI_ArgumentPusherVaArg ap(methodID, args); \ jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_0); \ ret = jvalue.get_##ResultType(); \ return ret;\ @@ -1506,7 +1501,7 @@ JNI_ENTRY(ResultType, \ (const ResultType&)ret);\ \ JavaValue jvalue(Tag); \ - JNI_ArgumentPusherArray ap(THREAD, methodID, args); \ + JNI_ArgumentPusherArray ap(methodID, args); \ jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_0); \ ret = jvalue.get_##ResultType(); \ return ret;\ @@ -1539,7 +1534,7 @@ JNI_ENTRY(void, jni_CallNonvirtualVoidMethod(JNIEnv *env, jobject obj, jclass cl va_list args; va_start(args, methodID); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); + JNI_ArgumentPusherVaArg ap(methodID, args); jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK); va_end(args); JNI_END @@ -1553,7 +1548,7 @@ JNI_ENTRY(void, jni_CallNonvirtualVoidMethodV(JNIEnv *env, jobject obj, jclass c DT_VOID_RETURN_MARK(CallNonvirtualVoidMethodV); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); + JNI_ArgumentPusherVaArg ap(methodID, args); jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK); JNI_END @@ -1564,7 +1559,7 @@ JNI_ENTRY(void, jni_CallNonvirtualVoidMethodA(JNIEnv *env, jobject obj, jclass c env, obj, cls, methodID); DT_VOID_RETURN_MARK(CallNonvirtualVoidMethodA); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherArray ap(THREAD, methodID, args); + JNI_ArgumentPusherArray ap(methodID, args); jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK); JNI_END @@ -1587,7 +1582,7 @@ JNI_ENTRY(ResultType, \ va_list args; \ va_start(args, methodID); \ JavaValue jvalue(Tag); \ - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \ + JNI_ArgumentPusherVaArg ap(methodID, args); \ jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \ va_end(args); \ ret = jvalue.get_##ResultType(); \ @@ -1603,7 +1598,7 @@ JNI_ENTRY(ResultType, \ (const ResultType&)ret);\ \ JavaValue jvalue(Tag); \ - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \ + JNI_ArgumentPusherVaArg ap(methodID, args); \ jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \ ret = jvalue.get_##ResultType(); \ return ret;\ @@ -1618,7 +1613,7 @@ JNI_ENTRY(ResultType, \ (const ResultType&)ret);\ \ JavaValue jvalue(Tag); \ - JNI_ArgumentPusherArray ap(THREAD, methodID, args); \ + JNI_ArgumentPusherArray ap(methodID, args); \ jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \ ret = jvalue.get_##ResultType(); \ return ret;\ @@ -1649,7 +1644,7 @@ JNI_ENTRY(void, jni_CallStaticVoidMethod(JNIEnv *env, jclass cls, jmethodID meth va_list args; va_start(args, methodID); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); + JNI_ArgumentPusherVaArg ap(methodID, args); jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK); va_end(args); JNI_END @@ -1661,7 +1656,7 @@ JNI_ENTRY(void, jni_CallStaticVoidMethodV(JNIEnv *env, jclass cls, jmethodID met DT_VOID_RETURN_MARK(CallStaticVoidMethodV); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); + JNI_ArgumentPusherVaArg ap(methodID, args); jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK); JNI_END @@ -1672,7 +1667,7 @@ JNI_ENTRY(void, jni_CallStaticVoidMethodA(JNIEnv *env, jclass cls, jmethodID met DT_VOID_RETURN_MARK(CallStaticVoidMethodA); JavaValue jvalue(T_VOID); - JNI_ArgumentPusherArray ap(THREAD, methodID, args); + JNI_ArgumentPusherArray ap(methodID, args); jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK); JNI_END @@ -1694,11 +1689,9 @@ JNI_ENTRY(jfieldID, jni_GetFieldID(JNIEnv *env, jclass clazz, // The class should have been loaded (we have an instance of the class // passed in) so the field and signature should already be in the symbol // table. If they're not there, the field doesn't exist. - symbolHandle fieldname = - symbolHandle(THREAD, SymbolTable::probe(name, (int)strlen(name))); - symbolHandle signame = - symbolHandle(THREAD, SymbolTable::probe(sig, (int)strlen(sig))); - if (fieldname.is_null() || signame.is_null()) { + TempNewSymbol fieldname = SymbolTable::probe(name, (int)strlen(name)); + TempNewSymbol signame = SymbolTable::probe(sig, (int)strlen(sig)); + if (fieldname == NULL || signame == NULL) { THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name); } KlassHandle k(THREAD, @@ -1708,7 +1701,7 @@ JNI_ENTRY(jfieldID, jni_GetFieldID(JNIEnv *env, jclass clazz, fieldDescriptor fd; if (!Klass::cast(k())->oop_is_instance() || - !instanceKlass::cast(k())->find_field(fieldname(), signame(), false, &fd)) { + !instanceKlass::cast(k())->find_field(fieldname, signame, false, &fd)) { THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name); } @@ -1893,11 +1886,9 @@ JNI_ENTRY(jfieldID, jni_GetStaticFieldID(JNIEnv *env, jclass clazz, // The class should have been loaded (we have an instance of the class // passed in) so the field and signature should already be in the symbol // table. If they're not there, the field doesn't exist. - symbolHandle fieldname = - symbolHandle(THREAD, SymbolTable::probe(name, (int)strlen(name))); - symbolHandle signame = - symbolHandle(THREAD, SymbolTable::probe(sig, (int)strlen(sig))); - if (fieldname.is_null() || signame.is_null()) { + TempNewSymbol fieldname = SymbolTable::probe(name, (int)strlen(name)); + TempNewSymbol signame = SymbolTable::probe(sig, (int)strlen(sig)); + if (fieldname == NULL || signame == NULL) { THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name); } KlassHandle k(THREAD, @@ -1907,7 +1898,7 @@ JNI_ENTRY(jfieldID, jni_GetStaticFieldID(JNIEnv *env, jclass clazz, fieldDescriptor fd; if (!Klass::cast(k())->oop_is_instance() || - !instanceKlass::cast(k())->find_field(fieldname(), signame(), true, &fd)) { + !instanceKlass::cast(k())->find_field(fieldname, signame, true, &fd)) { THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name); } @@ -2389,7 +2380,7 @@ DEFINE_SETSCALARARRAYREGION(T_DOUBLE, jdouble, Double, double) // to see if the native method is now wrapped with the prefixes. See the // SetNativeMethodPrefix(es) functions in the JVM TI Spec for details. static methodOop find_prefixed_native(KlassHandle k, - symbolHandle name, symbolHandle signature, TRAPS) { + Symbol* name, Symbol* signature, TRAPS) { ResourceMark rm(THREAD); methodOop method; int name_len = name->utf8_length(); @@ -2405,11 +2396,11 @@ static methodOop find_prefixed_native(KlassHandle k, char* trial_name_str = NEW_RESOURCE_ARRAY(char, trial_len + 1); strcpy(trial_name_str, prefix); strcat(trial_name_str, name_str); - symbolHandle trial_name(THREAD, SymbolTable::probe(trial_name_str, trial_len)); - if (trial_name.is_null()) { + TempNewSymbol trial_name = SymbolTable::probe(trial_name_str, trial_len); + if (trial_name == NULL) { continue; // no such symbol, so this prefix wasn't used, try the next prefix } - method = Klass::cast(k())->lookup_method(trial_name(), signature()); + method = Klass::cast(k())->lookup_method(trial_name, signature); if (method == NULL) { continue; // signature doesn't match, try the next prefix } @@ -2424,13 +2415,13 @@ static methodOop find_prefixed_native(KlassHandle k, return NULL; // not found } -static bool register_native(KlassHandle k, symbolHandle name, symbolHandle signature, address entry, TRAPS) { - methodOop method = Klass::cast(k())->lookup_method(name(), signature()); +static bool register_native(KlassHandle k, Symbol* name, Symbol* signature, address entry, TRAPS) { + methodOop method = Klass::cast(k())->lookup_method(name, signature); if (method == NULL) { ResourceMark rm; stringStream st; st.print("Method %s name or signature does not match", - methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name(), signature())); + methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name, signature)); THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), false); } if (!method->is_native()) { @@ -2440,7 +2431,7 @@ static bool register_native(KlassHandle k, symbolHandle name, symbolHandle signa ResourceMark rm; stringStream st; st.print("Method %s is not declared as native", - methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name(), signature())); + methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name, signature)); THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), false); } } @@ -2480,10 +2471,10 @@ JNI_ENTRY(jint, jni_RegisterNatives(JNIEnv *env, jclass clazz, // The class should have been loaded (we have an instance of the class // passed in) so the method and signature should already be in the symbol // table. If they're not there, the method doesn't exist. - symbolHandle name(THREAD, SymbolTable::probe(meth_name, meth_name_len)); - symbolHandle signature(THREAD, SymbolTable::probe(meth_sig, (int)strlen(meth_sig))); + TempNewSymbol name = SymbolTable::probe(meth_name, meth_name_len); + TempNewSymbol signature = SymbolTable::probe(meth_sig, (int)strlen(meth_sig)); - if (name.is_null() || signature.is_null()) { + if (name == NULL || signature == NULL) { ResourceMark rm; stringStream st; st.print("Method %s.%s%s not found", Klass::cast(h_k())->external_name(), meth_name, meth_sig); @@ -2717,7 +2708,7 @@ static jclass lookupOne(JNIEnv* env, const char* name, TRAPS) { Handle loader; // null (bootstrap) loader Handle protection_domain; // null protection domain - symbolHandle sym = oopFactory::new_symbol_handle(name, CHECK_NULL); + TempNewSymbol sym = SymbolTable::new_symbol(name, CHECK_NULL); jclass result = find_class_from_class_loader(env, sym, true, loader, protection_domain, true, CHECK_NULL); if (TraceClassResolution && result != NULL) { diff --git a/hotspot/src/share/vm/prims/jniCheck.cpp b/hotspot/src/share/vm/prims/jniCheck.cpp index 0b332cd8747..6301c9865cb 100644 --- a/hotspot/src/share/vm/prims/jniCheck.cpp +++ b/hotspot/src/share/vm/prims/jniCheck.cpp @@ -27,7 +27,7 @@ #include "classfile/vmSymbols.hpp" #include "oops/instanceKlass.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "prims/jni.h" #include "prims/jniCheck.hpp" #include "prims/jvm_misc.hpp" @@ -45,6 +45,12 @@ #ifdef TARGET_ARCH_zero # include "jniTypes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "jniTypes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "jniTypes_ppc.hpp" +#endif // Heap objects are allowed to be directly referenced only in VM code, diff --git a/hotspot/src/share/vm/prims/jni_md.h b/hotspot/src/share/vm/prims/jni_md.h index 3cf4017f4db..72aa1dc3977 100644 --- a/hotspot/src/share/vm/prims/jni_md.h +++ b/hotspot/src/share/vm/prims/jni_md.h @@ -33,6 +33,12 @@ #ifdef TARGET_ARCH_zero # include "jni_zero.h" #endif +#ifdef TARGET_ARCH_arm +# include "jni_arm.h" +#endif +#ifdef TARGET_ARCH_ppc +# include "jni_ppc.h" +#endif /* diff --git a/hotspot/src/share/vm/prims/jvm.cpp b/hotspot/src/share/vm/prims/jvm.cpp index 76dcd92cd39..417052502cc 100644 --- a/hotspot/src/share/vm/prims/jvm.cpp +++ b/hotspot/src/share/vm/prims/jvm.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, 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 @@ -124,9 +124,9 @@ static void trace_class_resolution_impl(klassOop to_class, TRAPS) { vframeStream vfst(jthread); // scan up the stack skipping ClassLoader, AccessController and PrivilegedAction frames - symbolHandle access_controller = oopFactory::new_symbol_handle("java/security/AccessController", CHECK); + TempNewSymbol access_controller = SymbolTable::new_symbol("java/security/AccessController", CHECK); klassOop access_controller_klass = SystemDictionary::resolve_or_fail(access_controller, false, CHECK); - symbolHandle privileged_action = oopFactory::new_symbol_handle("java/security/PrivilegedAction", CHECK); + TempNewSymbol privileged_action = SymbolTable::new_symbol("java/security/PrivilegedAction", CHECK); klassOop privileged_action_klass = SystemDictionary::resolve_or_fail(privileged_action, false, CHECK); methodOop last_caller = NULL; @@ -175,7 +175,7 @@ static void trace_class_resolution_impl(klassOop to_class, TRAPS) { // show method name if it's a native method trace = vfst.method()->name_and_sig_as_C_string(); } - symbolOop s = instanceKlass::cast(caller)->source_file_name(); + Symbol* s = instanceKlass::cast(caller)->source_file_name(); if (s != NULL) { source_file = s->as_C_string(); } @@ -311,8 +311,8 @@ static void set_property(Handle props, const char* key, const char* value, TRAPS JavaCalls::call_virtual(&r, props, KlassHandle(THREAD, SystemDictionary::Properties_klass()), - vmSymbolHandles::put_name(), - vmSymbolHandles::object_object_object_signature(), + vmSymbols::put_name(), + vmSymbols::object_object_object_signature(), key_str, value_str, THREAD); @@ -716,13 +716,13 @@ JVM_ENTRY(jclass, JVM_FindClassFromBootLoader(JNIEnv* env, JVMWrapper2("JVM_FindClassFromBootLoader %s", name); // Java libraries should ensure that name is never null... - if (name == NULL || (int)strlen(name) > symbolOopDesc::max_length()) { + if (name == NULL || (int)strlen(name) > Symbol::max_length()) { // It's impossible to create this class; the name cannot fit // into the constant pool. return NULL; } - symbolHandle h_name = oopFactory::new_symbol_handle(name, CHECK_NULL); + TempNewSymbol h_name = SymbolTable::new_symbol(name, CHECK_NULL); klassOop k = SystemDictionary::resolve_or_null(h_name, CHECK_NULL); if (k == NULL) { return NULL; @@ -740,7 +740,7 @@ JVM_ENTRY(jclass, JVM_FindClassFromClassLoader(JNIEnv* env, const char* name, JVMWrapper3("JVM_FindClassFromClassLoader %s throw %s", name, throwError ? "error" : "exception"); // Java libraries should ensure that name is never null... - if (name == NULL || (int)strlen(name) > symbolOopDesc::max_length()) { + if (name == NULL || (int)strlen(name) > Symbol::max_length()) { // It's impossible to create this class; the name cannot fit // into the constant pool. if (throwError) { @@ -749,7 +749,7 @@ JVM_ENTRY(jclass, JVM_FindClassFromClassLoader(JNIEnv* env, const char* name, THROW_MSG_0(vmSymbols::java_lang_ClassNotFoundException(), name); } } - symbolHandle h_name = oopFactory::new_symbol_handle(name, CHECK_NULL); + TempNewSymbol h_name = SymbolTable::new_symbol(name, CHECK_NULL); Handle h_loader(THREAD, JNIHandles::resolve(loader)); jclass result = find_class_from_class_loader(env, h_name, init, h_loader, Handle(), throwError, THREAD); @@ -764,12 +764,12 @@ JVM_END JVM_ENTRY(jclass, JVM_FindClassFromClass(JNIEnv *env, const char *name, jboolean init, jclass from)) JVMWrapper2("JVM_FindClassFromClass %s", name); - if (name == NULL || (int)strlen(name) > symbolOopDesc::max_length()) { + if (name == NULL || (int)strlen(name) > Symbol::max_length()) { // It's impossible to create this class; the name cannot fit // into the constant pool. THROW_MSG_0(vmSymbols::java_lang_NoClassDefFoundError(), name); } - symbolHandle h_name = oopFactory::new_symbol_handle(name, CHECK_NULL); + TempNewSymbol h_name = SymbolTable::new_symbol(name, CHECK_NULL); oop from_class_oop = JNIHandles::resolve(from); klassOop from_class = (from_class_oop == NULL) ? (klassOop)NULL @@ -838,15 +838,15 @@ static jclass jvm_define_class_common(JNIEnv *env, const char *name, // Since exceptions can be thrown, class initialization can take place // if name is NULL no check for class name in .class stream has to be made. - symbolHandle class_name; + TempNewSymbol class_name = NULL; if (name != NULL) { const int str_len = (int)strlen(name); - if (str_len > symbolOopDesc::max_length()) { + if (str_len > Symbol::max_length()) { // It's impossible to create this class; the name cannot fit // into the constant pool. THROW_MSG_0(vmSymbols::java_lang_NoClassDefFoundError(), name); } - class_name = oopFactory::new_symbol_handle(name, str_len, CHECK_NULL); + class_name = SymbolTable::new_symbol(name, str_len, CHECK_NULL); } ResourceMark rm(THREAD); @@ -905,12 +905,12 @@ JVM_ENTRY(jclass, JVM_FindLoadedClass(JNIEnv *env, jobject loader, jstring name) if (str == NULL) return NULL; const int str_len = (int)strlen(str); - if (str_len > symbolOopDesc::max_length()) { + if (str_len > Symbol::max_length()) { // It's impossible to create this class; the name cannot fit // into the constant pool. return NULL; } - symbolHandle klass_name = oopFactory::new_symbol_handle(str, str_len,CHECK_NULL); + TempNewSymbol klass_name = SymbolTable::new_symbol(str, str_len, CHECK_NULL); // Security Note: // The Java level wrapper will perform the necessary security check allowing @@ -1155,8 +1155,8 @@ JVM_ENTRY(jobject, JVM_DoPrivileged(JNIEnv *env, jclass cls, jobject action, job !pending_exception->is_a(SystemDictionary::RuntimeException_klass())) { // Throw a java.security.PrivilegedActionException(Exception e) exception JavaCallArguments args(pending_exception); - THROW_ARG_0(vmSymbolHandles::java_security_PrivilegedActionException(), - vmSymbolHandles::exception_void_signature(), + THROW_ARG_0(vmSymbols::java_security_PrivilegedActionException(), + vmSymbols::exception_void_signature(), &args); } } @@ -1452,8 +1452,8 @@ JVM_ENTRY(jstring, JVM_GetClassSignature(JNIEnv *env, jclass cls)) if (!java_lang_Class::is_primitive(JNIHandles::resolve(cls))) { klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve(cls)); if (Klass::cast(k)->oop_is_instance()) { - symbolHandle sym = symbolHandle(THREAD, instanceKlass::cast(k)->generic_signature()); - if (sym.is_null()) return NULL; + Symbol* sym = instanceKlass::cast(k)->generic_signature(); + if (sym == NULL) return NULL; Handle str = java_lang_String::create_from_symbol(sym, CHECK_NULL); return (jstring) JNIHandles::make_local(env, str()); } @@ -1842,8 +1842,8 @@ static jobject get_method_at_helper(constantPoolHandle cp, jint index, bool forc if (k_o == NULL) return NULL; } instanceKlassHandle k(THREAD, k_o); - symbolOop name = cp->uncached_name_ref_at(index); - symbolOop sig = cp->uncached_signature_ref_at(index); + Symbol* name = cp->uncached_name_ref_at(index); + Symbol* sig = cp->uncached_signature_ref_at(index); methodHandle m (THREAD, k->find_method(name, sig)); if (m.is_null()) { THROW_MSG_0(vmSymbols::java_lang_RuntimeException(), "Unable to look up method in target class"); @@ -1893,8 +1893,8 @@ static jobject get_field_at_helper(constantPoolHandle cp, jint index, bool force if (k_o == NULL) return NULL; } instanceKlassHandle k(THREAD, k_o); - symbolOop name = cp->uncached_name_ref_at(index); - symbolOop sig = cp->uncached_signature_ref_at(index); + Symbol* name = cp->uncached_name_ref_at(index); + Symbol* sig = cp->uncached_signature_ref_at(index); fieldDescriptor fd; klassOop target_klass = k->find_field(name, sig, &fd); if (target_klass == NULL) { @@ -1937,9 +1937,9 @@ JVM_ENTRY(jobjectArray, JVM_ConstantPoolGetMemberRefInfoAt(JNIEnv *env, jobject THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index"); } int klass_ref = cp->uncached_klass_ref_index_at(index); - symbolHandle klass_name (THREAD, cp->klass_name_at(klass_ref)); - symbolHandle member_name(THREAD, cp->uncached_name_ref_at(index)); - symbolHandle member_sig (THREAD, cp->uncached_signature_ref_at(index)); + Symbol* klass_name = cp->klass_name_at(klass_ref); + Symbol* member_name = cp->uncached_name_ref_at(index); + Symbol* member_sig = cp->uncached_signature_ref_at(index); objArrayOop dest_o = oopFactory::new_objArray(SystemDictionary::String_klass(), 3, CHECK_NULL); objArrayHandle dest(THREAD, dest_o); Handle str = java_lang_String::create_from_symbol(klass_name, CHECK_NULL); @@ -2028,8 +2028,7 @@ JVM_ENTRY(jstring, JVM_ConstantPoolGetUTF8At(JNIEnv *env, jobject unused, jobjec if (!tag.is_symbol()) { THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index"); } - symbolOop sym_o = cp->symbol_at(index); - symbolHandle sym(THREAD, sym_o); + Symbol* sym = cp->symbol_at(index); Handle str = java_lang_String::create_from_symbol(sym, CHECK_NULL); return (jstring) JNIHandles::make_local(str()); } @@ -2356,7 +2355,7 @@ JVM_ENTRY(const char*, JVM_GetCPClassNameUTF(JNIEnv *env, jclass cls, jint cp_in klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls)); k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread); constantPoolOop cp = instanceKlass::cast(k)->constants(); - symbolOop classname = cp->klass_name_at(cp_index); + Symbol* classname = cp->klass_name_at(cp_index); return classname->as_utf8(); JVM_END @@ -2369,7 +2368,7 @@ JVM_ENTRY(const char*, JVM_GetCPFieldClassNameUTF(JNIEnv *env, jclass cls, jint switch (cp->tag_at(cp_index).value()) { case JVM_CONSTANT_Fieldref: { int class_index = cp->uncached_klass_ref_index_at(cp_index); - symbolOop classname = cp->klass_name_at(class_index); + Symbol* classname = cp->klass_name_at(class_index); return classname->as_utf8(); } default: @@ -2389,7 +2388,7 @@ JVM_ENTRY(const char*, JVM_GetCPMethodClassNameUTF(JNIEnv *env, jclass cls, jint case JVM_CONSTANT_Methodref: case JVM_CONSTANT_InterfaceMethodref: { int class_index = cp->uncached_klass_ref_index_at(cp_index); - symbolOop classname = cp->klass_name_at(class_index); + Symbol* classname = cp->klass_name_at(class_index); return classname->as_utf8(); } default: @@ -2410,8 +2409,8 @@ JVM_QUICK_ENTRY(jint, JVM_GetCPFieldModifiers(JNIEnv *env, jclass cls, int cp_in constantPoolOop cp_called = instanceKlass::cast(k_called)->constants(); switch (cp->tag_at(cp_index).value()) { case JVM_CONSTANT_Fieldref: { - symbolOop name = cp->uncached_name_ref_at(cp_index); - symbolOop signature = cp->uncached_signature_ref_at(cp_index); + Symbol* name = cp->uncached_name_ref_at(cp_index); + Symbol* signature = cp->uncached_signature_ref_at(cp_index); typeArrayOop fields = instanceKlass::cast(k_called)->fields(); int fields_count = fields->length(); for (int i = 0; i < fields_count; i += instanceKlass::next_offset) { @@ -2440,8 +2439,8 @@ JVM_QUICK_ENTRY(jint, JVM_GetCPMethodModifiers(JNIEnv *env, jclass cls, int cp_i switch (cp->tag_at(cp_index).value()) { case JVM_CONSTANT_Methodref: case JVM_CONSTANT_InterfaceMethodref: { - symbolOop name = cp->uncached_name_ref_at(cp_index); - symbolOop signature = cp->uncached_signature_ref_at(cp_index); + Symbol* name = cp->uncached_name_ref_at(cp_index); + Symbol* signature = cp->uncached_signature_ref_at(cp_index); objArrayOop methods = instanceKlass::cast(k_called)->methods(); int methods_count = methods->length(); for (int i = 0; i < methods_count; i++) { @@ -2586,7 +2585,7 @@ int jio_vfprintf(FILE* f, const char *fmt, va_list args) { } -int jio_printf(const char *fmt, ...) { +JNIEXPORT int jio_printf(const char *fmt, ...) { int len; va_list args; va_start(args, fmt); @@ -2629,8 +2628,8 @@ static void thread_entry(JavaThread* thread, TRAPS) { JavaCalls::call_virtual(&result, obj, KlassHandle(THREAD, SystemDictionary::Thread_klass()), - vmSymbolHandles::run_method_name(), - vmSymbolHandles::void_method_signature(), + vmSymbols::run_method_name(), + vmSymbols::void_method_signature(), THREAD); } @@ -2651,12 +2650,18 @@ JVM_ENTRY(void, JVM_StartThread(JNIEnv* env, jobject jthread)) // we operate. MutexLocker mu(Threads_lock); - // Check to see if we're running a thread that's already exited or was - // stopped (is_stillborn) or is still active (thread is not NULL). - if (java_lang_Thread::is_stillborn(JNIHandles::resolve_non_null(jthread)) || - java_lang_Thread::thread(JNIHandles::resolve_non_null(jthread)) != NULL) { - throw_illegal_thread_state = true; + // Since JDK 5 the java.lang.Thread threadStatus is used to prevent + // re-starting an already started thread, so we should usually find + // that the JavaThread is null. However for a JNI attached thread + // there is a small window between the Thread object being created + // (with its JavaThread set) and the update to its threadStatus, so we + // have to check for this + if (java_lang_Thread::thread(JNIHandles::resolve_non_null(jthread)) != NULL) { + throw_illegal_thread_state = true; } else { + // We could also check the stillborn flag to see if this thread was already stopped, but + // for historical reasons we let the thread detect that itself when it starts running + jlong size = java_lang_Thread::stackSize(JNIHandles::resolve_non_null(jthread)); // Allocate the C++ Thread structure and create the native thread. The @@ -2704,7 +2709,7 @@ JVM_END // JVM_Stop is implemented using a VM_Operation, so threads are forced to safepoints // before the quasi-asynchronous exception is delivered. This is a little obtrusive, // but is thought to be reliable and simple. In the case, where the receiver is the -// save thread as the sender, no safepoint is needed. +// same thread as the sender, no safepoint is needed. JVM_ENTRY(void, JVM_StopThread(JNIEnv* env, jobject jthread, jobject throwable)) JVMWrapper("JVM_StopThread"); @@ -2715,26 +2720,27 @@ JVM_ENTRY(void, JVM_StopThread(JNIEnv* env, jobject jthread, jobject throwable)) oop java_thread = JNIHandles::resolve_non_null(jthread); JavaThread* receiver = java_lang_Thread::thread(java_thread); Events::log("JVM_StopThread thread JavaThread " INTPTR_FORMAT " as oop " INTPTR_FORMAT " [exception " INTPTR_FORMAT "]", receiver, (address)java_thread, throwable); - // First check if thread already exited + // First check if thread is alive if (receiver != NULL) { // Check if exception is getting thrown at self (use oop equality, since the // target object might exit) if (java_thread == thread->threadObj()) { - // This is a change from JDK 1.1, but JDK 1.2 will also do it: - // NOTE (from JDK 1.2): this is done solely to prevent stopped - // threads from being restarted. - // Fix for 4314342, 4145910, perhaps others: it now doesn't have - // any effect on the "liveness" of a thread; see - // JVM_IsThreadAlive, below. - if (java_throwable->is_a(SystemDictionary::ThreadDeath_klass())) { - java_lang_Thread::set_stillborn(java_thread); - } THROW_OOP(java_throwable); } else { // Enques a VM_Operation to stop all threads and then deliver the exception... Thread::send_async_exception(java_thread, JNIHandles::resolve(throwable)); } } + else { + // Either: + // - target thread has not been started before being stopped, or + // - target thread already terminated + // We could read the threadStatus to determine which case it is + // but that is overkill as it doesn't matter. We must set the + // stillborn flag for the first case, and if the thread has already + // exited setting this flag has no affect + java_lang_Thread::set_stillborn(java_thread); + } JVM_END @@ -3106,9 +3112,8 @@ JVM_ENTRY(jint, JVM_ClassDepth(JNIEnv *env, jstring name)) Handle class_name_str = java_lang_String::internalize_classname(h_name, CHECK_0); const char* str = java_lang_String::as_utf8_string(class_name_str()); - symbolHandle class_name_sym = - symbolHandle(THREAD, SymbolTable::probe(str, (int)strlen(str))); - if (class_name_sym.is_null()) { + TempNewSymbol class_name_sym = SymbolTable::probe(str, (int)strlen(str)); + if (class_name_sym == NULL) { return -1; } @@ -3118,7 +3123,7 @@ JVM_ENTRY(jint, JVM_ClassDepth(JNIEnv *env, jstring name)) if (!vfst.method()->is_native()) { klassOop holder = vfst.method()->method_holder(); assert(holder->is_klass(), "just checking"); - if (instanceKlass::cast(holder)->name() == class_name_sym()) { + if (instanceKlass::cast(holder)->name() == class_name_sym) { return depth; } depth++; @@ -3317,13 +3322,13 @@ JVM_ENTRY(jclass, JVM_LoadClass0(JNIEnv *env, jobject receiver, const char* str = java_lang_String::as_utf8_string(string()); - if (str == NULL || (int)strlen(str) > symbolOopDesc::max_length()) { + if (str == NULL || (int)strlen(str) > Symbol::max_length()) { // It's impossible to create this class; the name cannot fit // into the constant pool. THROW_MSG_0(vmSymbols::java_lang_NoClassDefFoundError(), str); } - symbolHandle name = oopFactory::new_symbol_handle(str, CHECK_NULL); + TempNewSymbol name = SymbolTable::new_symbol(str, CHECK_NULL); Handle curr_klass (THREAD, JNIHandles::resolve(currClass)); // Find the most recent class on the stack with a non-null classloader oop loader = NULL; @@ -3966,7 +3971,7 @@ JVM_END // Shared JNI/JVM entry points ////////////////////////////////////////////////////////////// -jclass find_class_from_class_loader(JNIEnv* env, symbolHandle name, jboolean init, Handle loader, Handle protection_domain, jboolean throwError, TRAPS) { +jclass find_class_from_class_loader(JNIEnv* env, Symbol* name, jboolean init, Handle loader, Handle protection_domain, jboolean throwError, TRAPS) { // Security Note: // The Java level wrapper will perform the necessary security check allowing // us to pass the NULL as the initiating class loader. @@ -4062,14 +4067,13 @@ JVM_ENTRY(jobject, JVM_GetClassField(JNIEnv *env, jclass cls, jstring name, jint Handle str (THREAD, JNIHandles::resolve_non_null(name)); const char* cstr = java_lang_String::as_utf8_string(str()); - symbolHandle field_name = - symbolHandle(THREAD, SymbolTable::probe(cstr, (int)strlen(cstr))); - if (field_name.is_null()) { + TempNewSymbol field_name = SymbolTable::probe(cstr, (int)strlen(cstr)); + if (field_name == NULL) { THROW_0(vmSymbols::java_lang_NoSuchFieldException()); } oop mirror = JNIHandles::resolve_non_null(cls); - oop result = Reflection::reflect_field(mirror, field_name(), which, CHECK_NULL); + oop result = Reflection::reflect_field(mirror, field_name, which, CHECK_NULL); if (result == NULL) { THROW_0(vmSymbols::java_lang_NoSuchFieldException()); } @@ -4086,9 +4090,8 @@ JVM_ENTRY(jobject, JVM_GetClassMethod(JNIEnv *env, jclass cls, jstring name, job Handle str (THREAD, JNIHandles::resolve_non_null(name)); const char* cstr = java_lang_String::as_utf8_string(str()); - symbolHandle method_name = - symbolHandle(THREAD, SymbolTable::probe(cstr, (int)strlen(cstr))); - if (method_name.is_null()) { + TempNewSymbol method_name = SymbolTable::probe(cstr, (int)strlen(cstr)); + if (method_name == NULL) { THROW_0(vmSymbols::java_lang_NoSuchMethodException()); } @@ -4461,16 +4464,14 @@ JVM_ENTRY(jobjectArray, JVM_GetEnclosingMethodInfo(JNIEnv *env, jclass ofClass)) dest->obj_at_put(0, Klass::cast(enc_k)->java_mirror()); int encl_method_method_idx = ik_h->enclosing_method_method_index(); if (encl_method_method_idx != 0) { - symbolOop sym_o = ik_h->constants()->symbol_at( + Symbol* sym = ik_h->constants()->symbol_at( extract_low_short_from_int( ik_h->constants()->name_and_type_at(encl_method_method_idx))); - symbolHandle sym(THREAD, sym_o); Handle str = java_lang_String::create_from_symbol(sym, CHECK_NULL); dest->obj_at_put(1, str()); - sym_o = ik_h->constants()->symbol_at( + sym = ik_h->constants()->symbol_at( extract_high_short_from_int( ik_h->constants()->name_and_type_at(encl_method_method_idx))); - sym = symbolHandle(THREAD, sym_o); str = java_lang_String::create_from_symbol(sym, CHECK_NULL); dest->obj_at_put(2, str()); } diff --git a/hotspot/src/share/vm/prims/jvm.h b/hotspot/src/share/vm/prims/jvm.h index ec8ca4049a6..07097af3cc5 100644 --- a/hotspot/src/share/vm/prims/jvm.h +++ b/hotspot/src/share/vm/prims/jvm.h @@ -1417,16 +1417,16 @@ JVM_GetHostName(char* name, int namelen); * BE CAREFUL! The following functions do not implement the * full feature set of standard C printf formats. */ -int +JNIEXPORT int jio_vsnprintf(char *str, size_t count, const char *fmt, va_list args); -int +JNIEXPORT int jio_snprintf(char *str, size_t count, const char *fmt, ...); -int +JNIEXPORT int jio_fprintf(FILE *, const char *fmt, ...); -int +JNIEXPORT int jio_vfprintf(FILE *, const char *fmt, va_list args); diff --git a/hotspot/src/share/vm/prims/jvm_misc.hpp b/hotspot/src/share/vm/prims/jvm_misc.hpp index 2a2fb1eea41..18795124660 100644 --- a/hotspot/src/share/vm/prims/jvm_misc.hpp +++ b/hotspot/src/share/vm/prims/jvm_misc.hpp @@ -31,7 +31,7 @@ // Useful entry points shared by JNI and JVM interface. // We do not allow real JNI or JVM entry point to call each other. -jclass find_class_from_class_loader(JNIEnv* env, symbolHandle name, jboolean init, Handle loader, Handle protection_domain, jboolean throwError, TRAPS); +jclass find_class_from_class_loader(JNIEnv* env, Symbol* name, jboolean init, Handle loader, Handle protection_domain, jboolean throwError, TRAPS); void trace_class_resolution(klassOop to_class); diff --git a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp index 191d97ec656..fa08cf712d0 100644 --- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp +++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp @@ -36,6 +36,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif // FIXME: add Deprecated, LVT, LVTT attributes // FIXME: fix Synthetic attribute // FIXME: per Serguei, add error return handling for constantPoolOopDesc::copy_cpool_bytes() @@ -461,11 +467,11 @@ void JvmtiClassFileReconstituter::write_method_info(methodHandle method) { // JVMSpec| attribute_info attributes[attributes_count]; void JvmtiClassFileReconstituter::write_class_attributes() { u2 inner_classes_length = inner_classes_attribute_length(); - symbolHandle generic_signature(thread(), ikh()->generic_signature()); + Symbol* generic_signature = ikh()->generic_signature(); typeArrayHandle anno(thread(), ikh()->class_annotations()); int attr_count = 0; - if (generic_signature() != NULL) { + if (generic_signature != NULL) { ++attr_count; } if (ikh()->source_file_name() != NULL) { @@ -483,8 +489,8 @@ void JvmtiClassFileReconstituter::write_class_attributes() { write_u2(attr_count); - if (generic_signature() != NULL) { - write_signature_attribute(symbol_to_cpool_index(generic_signature())); + if (generic_signature != NULL) { + write_signature_attribute(symbol_to_cpool_index(generic_signature)); } if (ikh()->source_file_name() != NULL) { write_source_file_attribute(); @@ -609,8 +615,7 @@ address JvmtiClassFileReconstituter::writeable_address(size_t size) { } void JvmtiClassFileReconstituter::write_attribute_name_index(const char* name) { - unsigned int hash_ignored; - symbolOop sym = SymbolTable::lookup_only(name, (int)strlen(name), hash_ignored); + TempNewSymbol sym = SymbolTable::probe(name, (int)strlen(name)); assert(sym != NULL, "attribute name symbol not found"); u2 attr_name_index = symbol_to_cpool_index(sym); assert(attr_name_index != 0, "attribute name symbol not in constant pool"); diff --git a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp index 9fa1395b1ad..42cb9f23986 100644 --- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp +++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp @@ -41,11 +41,11 @@ class JvmtiConstantPoolReconstituter : public StackObj { instanceKlassHandle ikh() { return _ikh; }; constantPoolHandle cpool() { return _cpool; }; - u2 symbol_to_cpool_index(symbolOop sym) { + u2 symbol_to_cpool_index(Symbol* sym) { return _symmap->symbol_to_value(sym); } - u2 class_symbol_to_cpool_index(symbolOop sym) { + u2 class_symbol_to_cpool_index(Symbol* sym) { return _classmap->symbol_to_value(sym); } diff --git a/hotspot/src/share/vm/prims/jvmtiEnv.cpp b/hotspot/src/share/vm/prims/jvmtiEnv.cpp index 5df7396bdc3..a6b0f1f4c80 100644 --- a/hotspot/src/share/vm/prims/jvmtiEnv.cpp +++ b/hotspot/src/share/vm/prims/jvmtiEnv.cpp @@ -541,12 +541,12 @@ JvmtiEnv::AddToSystemClassLoaderSearch(const char* segment) { JavaCalls::call_special(&res, loader, loader_ik, - vmSymbolHandles::appendToClassPathForInstrumentation_name(), - vmSymbolHandles::appendToClassPathForInstrumentation_signature(), + vmSymbols::appendToClassPathForInstrumentation_name(), + vmSymbols::appendToClassPathForInstrumentation_signature(), path, THREAD); if (HAS_PENDING_EXCEPTION) { - symbolOop ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); + Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); CLEAR_PENDING_EXCEPTION; if (ex_name == vmSymbols::java_lang_NoSuchMethodError()) { @@ -2124,7 +2124,7 @@ JvmtiEnv::GetClassSignature(oop k_mirror, char** signature_ptr, char** generic_p if (generic_ptr != NULL) { *generic_ptr = NULL; if (!isPrimitive && Klass::cast(k)->oop_is_instance()) { - symbolOop soo = instanceKlass::cast(k)->generic_signature(); + Symbol* soo = instanceKlass::cast(k)->generic_signature(); if (soo != NULL) { const char *gen_sig = soo->as_C_string(); if (gen_sig != NULL) { @@ -2176,7 +2176,7 @@ JvmtiEnv::GetSourceFileName(oop k_mirror, char** source_name_ptr) { return JVMTI_ERROR_ABSENT_INFORMATION; } - symbolOop sfnOop = instanceKlass::cast(k_klass)->source_file_name(); + Symbol* sfnOop = instanceKlass::cast(k_klass)->source_file_name(); NULL_CHECK(sfnOop, JVMTI_ERROR_ABSENT_INFORMATION); { JavaThread* current_thread = JavaThread::current(); @@ -2539,7 +2539,7 @@ JvmtiEnv::GetSourceDebugExtension(oop k_mirror, char** source_debug_extension_pt if (!Klass::cast(k)->oop_is_instance()) { return JVMTI_ERROR_ABSENT_INFORMATION; } - symbolOop sdeOop = instanceKlass::cast(k)->source_debug_extension(); + Symbol* sdeOop = instanceKlass::cast(k)->source_debug_extension(); NULL_CHECK(sdeOop, JVMTI_ERROR_ABSENT_INFORMATION); { @@ -2619,7 +2619,7 @@ JvmtiEnv::GetFieldName(fieldDescriptor* fdesc_ptr, char** name_ptr, char** signa } if (generic_ptr != NULL) { *generic_ptr = NULL; - symbolOop soop = fdesc_ptr->generic_signature(); + Symbol* soop = fdesc_ptr->generic_signature(); if (soop != NULL) { const char* gen_sig = soop->as_C_string(); if (gen_sig != NULL) { @@ -2695,7 +2695,7 @@ JvmtiEnv::GetMethodName(methodOop method_oop, char** name_ptr, char** signature_ if (generic_ptr != NULL) { *generic_ptr = NULL; - symbolOop soop = method_oop->generic_signature(); + Symbol* soop = method_oop->generic_signature(); if (soop != NULL) { const char* gen_sig = soop->as_C_string(); if (gen_sig != NULL) { diff --git a/hotspot/src/share/vm/prims/jvmtiEnvBase.cpp b/hotspot/src/share/vm/prims/jvmtiEnvBase.cpp index b1987ee7f1a..43c12537c54 100644 --- a/hotspot/src/share/vm/prims/jvmtiEnvBase.cpp +++ b/hotspot/src/share/vm/prims/jvmtiEnvBase.cpp @@ -1355,7 +1355,7 @@ JvmtiEnvBase::check_top_frame(JavaThread* current_thread, JavaThread* java_threa } // Get information about method return type - symbolHandle signature(current_thread, jvf->method()->signature()); + Symbol* signature = jvf->method()->signature(); ResultTypeFinder rtf(signature); TosState fr_tos = as_TosState(rtf.type()); diff --git a/hotspot/src/share/vm/prims/jvmtiExport.cpp b/hotspot/src/share/vm/prims/jvmtiExport.cpp index 5fc3281400c..49086af7869 100644 --- a/hotspot/src/share/vm/prims/jvmtiExport.cpp +++ b/hotspot/src/share/vm/prims/jvmtiExport.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -268,9 +268,9 @@ private: jclass _class_being_redefined; public: - JvmtiClassFileLoadEventMark(JavaThread *thread, symbolHandle name, + JvmtiClassFileLoadEventMark(JavaThread *thread, Symbol* name, Handle class_loader, Handle prot_domain, KlassHandle *class_being_redefined) : JvmtiThreadEventMark(thread) { - _class_name = name() != NULL? name->as_utf8() : NULL; + _class_name = name != NULL? name->as_utf8() : NULL; _jloader = (jobject)to_jobject(class_loader()); _protection_domain = (jobject)to_jobject(prot_domain()); if (class_being_redefined == NULL) { @@ -506,7 +506,7 @@ JvmtiExport::get_all_native_method_prefixes(int* count_ptr) { class JvmtiClassFileLoadHookPoster : public StackObj { private: - symbolHandle _h_name; + Symbol* _h_name; Handle _class_loader; Handle _h_protection_domain; unsigned char ** _data_ptr; @@ -522,7 +522,7 @@ class JvmtiClassFileLoadHookPoster : public StackObj { JvmtiClassLoadKind _load_kind; public: - inline JvmtiClassFileLoadHookPoster(symbolHandle h_name, Handle class_loader, + inline JvmtiClassFileLoadHookPoster(Symbol* h_name, Handle class_loader, Handle h_protection_domain, unsigned char **data_ptr, unsigned char **end_ptr, unsigned char **cached_data_ptr, @@ -597,7 +597,7 @@ class JvmtiClassFileLoadHookPoster : public StackObj { // EVT_TRACE(JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, // ("JVMTI [%s] class file load hook event sent %s data_ptr = %d, data_len = %d", // JvmtiTrace::safe_get_thread_name(_thread), -// _h_name.is_null() ? "NULL" : _h_name->as_utf8(), +// _h_name == NULL ? "NULL" : _h_name->as_utf8(), // _curr_data, _curr_len )); JvmtiClassFileLoadEventMark jem(_thread, _h_name, _class_loader, _h_protection_domain, @@ -655,7 +655,7 @@ class JvmtiClassFileLoadHookPoster : public StackObj { bool JvmtiExport::_should_post_class_file_load_hook = false; // this entry is for class file load hook on class load, redefine and retransform -void JvmtiExport::post_class_file_load_hook(symbolHandle h_name, +void JvmtiExport::post_class_file_load_hook(Symbol* h_name, Handle class_loader, Handle h_protection_domain, unsigned char **data_ptr, @@ -750,15 +750,12 @@ public: // pending CompiledMethodUnload support // -bool JvmtiExport::_have_pending_compiled_method_unload_events; -GrowableArray* JvmtiExport::_pending_compiled_method_unload_method_ids; -GrowableArray* JvmtiExport::_pending_compiled_method_unload_code_begins; -JavaThread* JvmtiExport::_current_poster; - -void JvmtiExport::post_compiled_method_unload_internal(JavaThread* self, jmethodID method, const void *code_begin) { +void JvmtiExport::post_compiled_method_unload( + jmethodID method, const void *code_begin) { + JavaThread* thread = JavaThread::current(); EVT_TRIG_TRACE(JVMTI_EVENT_COMPILED_METHOD_UNLOAD, ("JVMTI [%s] method compile unload event triggered", - JvmtiTrace::safe_get_thread_name(self))); + JvmtiTrace::safe_get_thread_name(thread))); // post the event for each environment that has this event enabled. JvmtiEnvIterator it; @@ -767,12 +764,12 @@ void JvmtiExport::post_compiled_method_unload_internal(JavaThread* self, jmethod EVT_TRACE(JVMTI_EVENT_COMPILED_METHOD_UNLOAD, ("JVMTI [%s] class compile method unload event sent jmethodID " PTR_FORMAT, - JvmtiTrace::safe_get_thread_name(self), method)); + JvmtiTrace::safe_get_thread_name(thread), method)); - ResourceMark rm(self); + ResourceMark rm(thread); - JvmtiEventMark jem(self); - JvmtiJavaThreadEventTransition jet(self); + JvmtiEventMark jem(thread); + JvmtiJavaThreadEventTransition jet(thread); jvmtiEventCompiledMethodUnload callback = env->callbacks()->CompiledMethodUnload; if (callback != NULL) { (*callback)(env->jvmti_external(), method, code_begin); @@ -781,90 +778,6 @@ void JvmtiExport::post_compiled_method_unload_internal(JavaThread* self, jmethod } } -// post any pending CompiledMethodUnload events - -void JvmtiExport::post_pending_compiled_method_unload_events() { - JavaThread* self = JavaThread::current(); - assert(!self->owns_locks(), "can't hold locks"); - - // Indicates if this is the first activiation of this function. - // In theory the profiler's callback could call back into VM and provoke - // another CompiledMethodLoad event to be posted from this thread. As the - // stack rewinds we need to ensure that the original activation does the - // completion and notifies any waiters. - bool first_activation = false; - - // the jmethodID (may not be valid) to be used for a single event - jmethodID method; - const void *code_begin; - - // grab the monitor and check if another thread is already posting - // events. If there is another thread posting events then we wait - // until it completes. (In theory we could check the pending events to - // see if any of the addresses overlap with the event that we want to - // post but as it will happen so rarely we just block any thread waiting - // to post a CompiledMethodLoad or DynamicCodeGenerated event until all - // pending CompiledMethodUnload events have been posted). - // - // If another thread isn't posting we examine the list of pending jmethodIDs. - // If the list is empty then we are done. If it's not empty then this thread - // (self) becomes the pending event poster and we remove the top (last) - // event from the list. Note that this means we remove the newest event first - // but as they are all CompiledMethodUnload events the order doesn't matter. - // Once we have removed a jmethodID then we exit the monitor. Any other thread - // wanting to post a CompiledMethodLoad or DynamicCodeGenerated event will - // be forced to wait on the monitor. - { - MutexLocker mu(JvmtiPendingEvent_lock); - if (_current_poster != self) { - while (_current_poster != NULL) { - JvmtiPendingEvent_lock->wait(); - } - } - if ((_pending_compiled_method_unload_method_ids == NULL) || - (_pending_compiled_method_unload_method_ids->length() == 0)) { - return; - } - if (_current_poster == NULL) { - _current_poster = self; - first_activation = true; - } else { - // re-entrant - guarantee(_current_poster == self, "checking"); - } - method = _pending_compiled_method_unload_method_ids->pop(); - code_begin = _pending_compiled_method_unload_code_begins->pop(); - } - - // This thread is the pending event poster so it first posts the CompiledMethodUnload - // event for the jmethodID that has been removed from the list. Once posted it - // re-grabs the monitor and checks the list again. If the list is empty then and this - // is the first activation of the function then we reset the _have_pending_events - // flag, cleanup _current_poster to indicate that no thread is now servicing the - // pending events list, and finally notify any thread that might be waiting. - for (;;) { - post_compiled_method_unload_internal(self, method, code_begin); - - // event posted, now re-grab monitor and get the next event - // If there's no next event then we are done. If this is the first - // activiation of this function by this thread notify any waiters - // so that they can post. - { - MutexLocker ml(JvmtiPendingEvent_lock); - if (_pending_compiled_method_unload_method_ids->length() == 0) { - if (first_activation) { - _have_pending_compiled_method_unload_events = false; - _current_poster = NULL; - JvmtiPendingEvent_lock->notify_all(); - } - return; - } - method = _pending_compiled_method_unload_method_ids->pop(); - code_begin = _pending_compiled_method_unload_code_begins->pop(); - } - } -} - /////////////////////////////////////////////////////////////// // // JvmtiExport @@ -1830,16 +1743,7 @@ jvmtiCompiledMethodLoadInlineRecord* create_inline_record(nmethod* nm) { } void JvmtiExport::post_compiled_method_load(nmethod *nm) { - // If there are pending CompiledMethodUnload events then these are - // posted before this CompiledMethodLoad event. We "lock" the nmethod and - // maintain a handle to the methodOop to ensure that the nmethod isn't - // flushed or unloaded while posting the events. JavaThread* thread = JavaThread::current(); - if (have_pending_compiled_method_unload_events()) { - methodHandle mh(thread, nm->method()); - nmethodLocker nml(nm); - post_pending_compiled_method_unload_events(); - } EVT_TRIG_TRACE(JVMTI_EVENT_COMPILED_METHOD_LOAD, ("JVMTI [%s] method compile load event triggered", @@ -1854,8 +1758,8 @@ void JvmtiExport::post_compiled_method_load(nmethod *nm) { JvmtiTrace::safe_get_thread_name(thread), (nm->method() == NULL) ? "NULL" : nm->method()->klass_name()->as_C_string(), (nm->method() == NULL) ? "NULL" : nm->method()->name()->as_C_string())); - ResourceMark rm(thread); + HandleMark hm(thread); // Add inlining information jvmtiCompiledMethodLoadInlineRecord* inlinerecord = create_inline_record(nm); @@ -1899,28 +1803,6 @@ void JvmtiExport::post_compiled_method_load(JvmtiEnv* env, const jmethodID metho } } -// used at a safepoint to post a CompiledMethodUnload event -void JvmtiExport::post_compiled_method_unload(jmethodID mid, const void *code_begin) { - if (SafepointSynchronize::is_at_safepoint()) { - // Class unloading can cause nmethod unloading which is reported - // by the VMThread. These must be batched to be processed later. - if (_pending_compiled_method_unload_method_ids == NULL) { - // create list lazily - _pending_compiled_method_unload_method_ids = new (ResourceObj::C_HEAP) GrowableArray(10,true); - _pending_compiled_method_unload_code_begins = new (ResourceObj::C_HEAP) GrowableArray(10,true); - } - _pending_compiled_method_unload_method_ids->append(mid); - _pending_compiled_method_unload_code_begins->append(code_begin); - _have_pending_compiled_method_unload_events = true; - } else { - // Unloading caused by the sweeper can be reported synchronously. - if (have_pending_compiled_method_unload_events()) { - post_pending_compiled_method_unload_events(); - } - post_compiled_method_unload_internal(JavaThread::current(), mid, code_begin); - } -} - void JvmtiExport::post_dynamic_code_generated_internal(const char *name, const void *code_begin, const void *code_end) { JavaThread* thread = JavaThread::current(); EVT_TRIG_TRACE(JVMTI_EVENT_DYNAMIC_CODE_GENERATED, @@ -1953,9 +1835,9 @@ void JvmtiExport::post_dynamic_code_generated(const char *name, const void *code return; } - if (have_pending_compiled_method_unload_events()) { - post_pending_compiled_method_unload_events(); - } + // Blocks until everything now in the queue has been posted + JvmtiDeferredEventQueue::flush_queue(Thread::current()); + post_dynamic_code_generated_internal(name, code_begin, code_end); } diff --git a/hotspot/src/share/vm/prims/jvmtiExport.hpp b/hotspot/src/share/vm/prims/jvmtiExport.hpp index 31b4e1ba91a..3bdff222a5f 100644 --- a/hotspot/src/share/vm/prims/jvmtiExport.hpp +++ b/hotspot/src/share/vm/prims/jvmtiExport.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2011, 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 @@ -141,25 +141,6 @@ class JvmtiExport : public AllStatic { private: - // CompiledMethodUnload events are reported from the VM thread so they - // are collected in lists (of jmethodID/addresses) and the events are posted later - // from threads posting CompieldMethodLoad or DynamicCodeGenerated events. - static bool _have_pending_compiled_method_unload_events; - static GrowableArray* _pending_compiled_method_unload_method_ids; - static GrowableArray* _pending_compiled_method_unload_code_begins; - static JavaThread* _current_poster; - - // tests if there are CompiledMethodUnload events pending - inline static bool have_pending_compiled_method_unload_events() { - return _have_pending_compiled_method_unload_events; - } - - // posts any pending CompiledMethodUnload events. - static void post_pending_compiled_method_unload_events(); - - // Perform the actual notification to interested JvmtiEnvs. - static void post_compiled_method_unload_internal(JavaThread* self, jmethodID mid, const void* code_begin); - // posts a DynamicCodeGenerated event (internal/private implementation). // The public post_dynamic_code_generated* functions make use of the // internal implementation. @@ -256,7 +237,7 @@ class JvmtiExport : public AllStatic { // single stepping management methods static void at_single_stepping_point(JavaThread *thread, methodOop method, address location) KERNEL_RETURN; static void expose_single_stepping(JavaThread *thread) KERNEL_RETURN; - static bool hide_single_stepping(JavaThread *thread) KERNEL_RETURN_(return false;); + static bool hide_single_stepping(JavaThread *thread) KERNEL_RETURN_(false); // Methods that notify the debugger that something interesting has happened in the VM. static void post_vm_start (); @@ -271,20 +252,20 @@ class JvmtiExport : public AllStatic { static oop jni_GetField_probe (JavaThread *thread, jobject jobj, oop obj, klassOop klass, jfieldID fieldID, bool is_static) - KERNEL_RETURN_(return NULL;); + KERNEL_RETURN_(NULL); static oop jni_GetField_probe_nh (JavaThread *thread, jobject jobj, oop obj, klassOop klass, jfieldID fieldID, bool is_static) - KERNEL_RETURN_(return NULL;); + KERNEL_RETURN_(NULL); static void post_field_access_by_jni (JavaThread *thread, oop obj, klassOop klass, jfieldID fieldID, bool is_static) KERNEL_RETURN; static void post_field_access (JavaThread *thread, methodOop method, address location, KlassHandle field_klass, Handle object, jfieldID field) KERNEL_RETURN; static oop jni_SetField_probe (JavaThread *thread, jobject jobj, oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type, - jvalue *value) KERNEL_RETURN_(return NULL;); + jvalue *value) KERNEL_RETURN_(NULL); static oop jni_SetField_probe_nh (JavaThread *thread, jobject jobj, oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type, - jvalue *value) KERNEL_RETURN_(return NULL;); + jvalue *value) KERNEL_RETURN_(NULL); static void post_field_modification_by_jni(JavaThread *thread, oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type, jvalue *value); @@ -306,7 +287,7 @@ class JvmtiExport : public AllStatic { static bool _should_post_class_file_load_hook; inline static void set_should_post_class_file_load_hook(bool on) { _should_post_class_file_load_hook = on; } inline static bool should_post_class_file_load_hook() { return _should_post_class_file_load_hook; } - static void post_class_file_load_hook(symbolHandle h_name, Handle class_loader, + static void post_class_file_load_hook(Symbol* h_name, Handle class_loader, Handle h_protection_domain, unsigned char **data_ptr, unsigned char **end_ptr, unsigned char **cached_data_ptr, diff --git a/hotspot/src/share/vm/prims/jvmtiImpl.cpp b/hotspot/src/share/vm/prims/jvmtiImpl.cpp index f8f94c8445a..7faf3eec57f 100644 --- a/hotspot/src/share/vm/prims/jvmtiImpl.cpp +++ b/hotspot/src/share/vm/prims/jvmtiImpl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -32,11 +32,13 @@ #include "prims/jvmtiEventController.inline.hpp" #include "prims/jvmtiImpl.hpp" #include "prims/jvmtiRedefineClasses.hpp" +#include "runtime/atomic.hpp" #include "runtime/deoptimization.hpp" #include "runtime/handles.hpp" #include "runtime/handles.inline.hpp" #include "runtime/interfaceSupport.hpp" #include "runtime/javaCalls.hpp" +#include "runtime/serviceThread.hpp" #include "runtime/signature.hpp" #include "runtime/vframe.hpp" #include "runtime/vframe_hp.hpp" @@ -285,8 +287,8 @@ void JvmtiBreakpoint::each_method_version_do(method_action meth_act) { // not saved in the PreviousVersionInfo. Thread *thread = Thread::current(); instanceKlassHandle ikh = instanceKlassHandle(thread, _method->method_holder()); - symbolOop m_name = _method->name(); - symbolOop m_signature = _method->signature(); + Symbol* m_name = _method->name(); + Symbol* m_signature = _method->signature(); { ResourceMark rm(thread); @@ -628,22 +630,22 @@ bool VM_GetOrSetLocal::is_assignable(const char* ty_sign, Klass* klass, Thread* ty_sign++; len -= 2; } - symbolHandle ty_sym = oopFactory::new_symbol_handle(ty_sign, len, thread); - if (klass->name() == ty_sym()) { + TempNewSymbol ty_sym = SymbolTable::new_symbol(ty_sign, len, thread); + if (klass->name() == ty_sym) { return true; } // Compare primary supers int super_depth = klass->super_depth(); int idx; for (idx = 0; idx < super_depth; idx++) { - if (Klass::cast(klass->primary_super_of_depth(idx))->name() == ty_sym()) { + if (Klass::cast(klass->primary_super_of_depth(idx))->name() == ty_sym) { return true; } } // Compare secondary supers objArrayOop sec_supers = klass->secondary_supers(); for (idx = 0; idx < sec_supers->length(); idx++) { - if (Klass::cast((klassOop) sec_supers->obj_at(idx))->name() == ty_sym()) { + if (Klass::cast((klassOop) sec_supers->obj_at(idx))->name() == ty_sym) { return true; } } @@ -690,7 +692,7 @@ bool VM_GetOrSetLocal::check_slot_type(javaVFrame* jvf) { _result = JVMTI_ERROR_INVALID_SLOT; return false; // Incorrect slot index } - symbolOop sign_sym = method_oop->constants()->symbol_at(signature_idx); + Symbol* sign_sym = method_oop->constants()->symbol_at(signature_idx); const char* signature = (const char *) sign_sym->as_utf8(); BasicType slot_type = char2type(signature[0]); @@ -910,3 +912,207 @@ void JvmtiSuspendControl::print() { tty->print_cr("]"); #endif } + +#ifndef KERNEL + +JvmtiDeferredEvent JvmtiDeferredEvent::compiled_method_load_event( + nmethod* nm) { + JvmtiDeferredEvent event = JvmtiDeferredEvent(TYPE_COMPILED_METHOD_LOAD); + event.set_compiled_method_load(nm); + nmethodLocker::lock_nmethod(nm); // will be unlocked when posted + return event; +} + +JvmtiDeferredEvent JvmtiDeferredEvent::compiled_method_unload_event( + jmethodID id, const void* code) { + JvmtiDeferredEvent event = JvmtiDeferredEvent(TYPE_COMPILED_METHOD_UNLOAD); + event.set_compiled_method_unload(id, code); + return event; +} + +void JvmtiDeferredEvent::post() { + switch(_type) { + case TYPE_COMPILED_METHOD_LOAD: + JvmtiExport::post_compiled_method_load(compiled_method_load()); + nmethodLocker::unlock_nmethod(compiled_method_load()); + break; + case TYPE_COMPILED_METHOD_UNLOAD: + JvmtiExport::post_compiled_method_unload( + compiled_method_unload_method_id(), + compiled_method_unload_code_begin()); + break; + case TYPE_FLUSH: + JvmtiDeferredEventQueue::flush_complete(flush_state_addr()); + break; + default: + ShouldNotReachHere(); + } +} + +JvmtiDeferredEventQueue::QueueNode* JvmtiDeferredEventQueue::_queue_tail = NULL; +JvmtiDeferredEventQueue::QueueNode* JvmtiDeferredEventQueue::_queue_head = NULL; + +volatile JvmtiDeferredEventQueue::QueueNode* + JvmtiDeferredEventQueue::_pending_list = NULL; + +bool JvmtiDeferredEventQueue::has_events() { + assert(Service_lock->owned_by_self(), "Must own Service_lock"); + return _queue_head != NULL || _pending_list != NULL; +} + +void JvmtiDeferredEventQueue::enqueue(const JvmtiDeferredEvent& event) { + assert(Service_lock->owned_by_self(), "Must own Service_lock"); + + process_pending_events(); + + // Events get added to the end of the queue (and are pulled off the front). + QueueNode* node = new QueueNode(event); + if (_queue_tail == NULL) { + _queue_tail = _queue_head = node; + } else { + assert(_queue_tail->next() == NULL, "Must be the last element in the list"); + _queue_tail->set_next(node); + _queue_tail = node; + } + + Service_lock->notify_all(); + assert((_queue_head == NULL) == (_queue_tail == NULL), + "Inconsistent queue markers"); +} + +JvmtiDeferredEvent JvmtiDeferredEventQueue::dequeue() { + assert(Service_lock->owned_by_self(), "Must own Service_lock"); + + process_pending_events(); + + assert(_queue_head != NULL, "Nothing to dequeue"); + + if (_queue_head == NULL) { + // Just in case this happens in product; it shouldn't but let's not crash + return JvmtiDeferredEvent(); + } + + QueueNode* node = _queue_head; + _queue_head = _queue_head->next(); + if (_queue_head == NULL) { + _queue_tail = NULL; + } + + assert((_queue_head == NULL) == (_queue_tail == NULL), + "Inconsistent queue markers"); + + JvmtiDeferredEvent event = node->event(); + delete node; + return event; +} + +void JvmtiDeferredEventQueue::add_pending_event( + const JvmtiDeferredEvent& event) { + + QueueNode* node = new QueueNode(event); + + bool success = false; + QueueNode* prev_value = (QueueNode*)_pending_list; + do { + node->set_next(prev_value); + prev_value = (QueueNode*)Atomic::cmpxchg_ptr( + (void*)node, (volatile void*)&_pending_list, (void*)node->next()); + } while (prev_value != node->next()); +} + +// This method transfers any events that were added by someone NOT holding +// the lock into the mainline queue. +void JvmtiDeferredEventQueue::process_pending_events() { + assert(Service_lock->owned_by_self(), "Must own Service_lock"); + + if (_pending_list != NULL) { + QueueNode* head = + (QueueNode*)Atomic::xchg_ptr(NULL, (volatile void*)&_pending_list); + + assert((_queue_head == NULL) == (_queue_tail == NULL), + "Inconsistent queue markers"); + + if (head != NULL) { + // Since we've treated the pending list as a stack (with newer + // events at the beginning), we need to join the bottom of the stack + // with the 'tail' of the queue in order to get the events in the + // right order. We do this by reversing the pending list and appending + // it to the queue. + + QueueNode* new_tail = head; + QueueNode* new_head = NULL; + + // This reverses the list + QueueNode* prev = new_tail; + QueueNode* node = new_tail->next(); + new_tail->set_next(NULL); + while (node != NULL) { + QueueNode* next = node->next(); + node->set_next(prev); + prev = node; + node = next; + } + new_head = prev; + + // Now append the new list to the queue + if (_queue_tail != NULL) { + _queue_tail->set_next(new_head); + } else { // _queue_head == NULL + _queue_head = new_head; + } + _queue_tail = new_tail; + } + } +} + +enum { + // Random - used for debugging + FLUSHING = 0x50403020, + FLUSHED = 0x09080706 +}; + +void JvmtiDeferredEventQueue::flush_queue(Thread* thread) { + + volatile int flush_state = FLUSHING; + + JvmtiDeferredEvent flush(JvmtiDeferredEvent::TYPE_FLUSH); + flush.set_flush_state_addr((int*)&flush_state); + + if (ServiceThread::is_service_thread(thread)) { + // If we are the service thread we have to post all preceding events + // Use the flush event as a token to indicate when we can stop + JvmtiDeferredEvent event; + { + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); + enqueue(flush); + event = dequeue(); + } + while (!event.is_flush_event() || + event.flush_state_addr() != &flush_state) { + event.post(); + { + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); + event = dequeue(); + } + } + } else { + // Wake up the service thread so it will process events. When it gets + // to the flush event it will set 'flush_complete' and notify us. + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); + enqueue(flush); + while (flush_state != FLUSHED) { + assert(flush_state == FLUSHING || flush_state == FLUSHED, + "only valid values for this"); + Service_lock->wait(Mutex::_no_safepoint_check_flag); + } + } +} + +void JvmtiDeferredEventQueue::flush_complete(int* state_addr) { + assert(state_addr != NULL && *state_addr == FLUSHING, "must be"); + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); + *state_addr = FLUSHED; + Service_lock->notify_all(); +} + +#endif // ndef KERNEL diff --git a/hotspot/src/share/vm/prims/jvmtiImpl.hpp b/hotspot/src/share/vm/prims/jvmtiImpl.hpp index 4f543cc4322..8adb5c44887 100644 --- a/hotspot/src/share/vm/prims/jvmtiImpl.hpp +++ b/hotspot/src/share/vm/prims/jvmtiImpl.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -433,6 +433,149 @@ public: #endif // !JVMTI_KERNEL +/** + * When a thread (such as the compiler thread or VM thread) cannot post a + * JVMTI event itself because the event needs to be posted from a Java + * thread, then it can defer the event to the Service thread for posting. + * The information needed to post the event is encapsulated into this class + * and then enqueued onto the JvmtiDeferredEventQueue, where the Service + * thread will pick it up and post it. + * + * This is currently only used for posting compiled-method-load and unload + * events, which we don't want posted from the compiler thread. + */ +class JvmtiDeferredEvent VALUE_OBJ_CLASS_SPEC { + friend class JvmtiDeferredEventQueue; + private: + typedef enum { + TYPE_NONE, + TYPE_COMPILED_METHOD_LOAD, + TYPE_COMPILED_METHOD_UNLOAD, + TYPE_FLUSH // pseudo-event used to implement flush_queue() + } Type; + + Type _type; + union { + nmethod* compiled_method_load; + struct { + jmethodID method_id; + const void* code_begin; + } compiled_method_unload; + int* flush_state_addr; + } _event_data; + + JvmtiDeferredEvent(Type t) : _type(t) {} + + void set_compiled_method_load(nmethod* nm) { + assert(_type == TYPE_COMPILED_METHOD_LOAD, "must be"); + _event_data.compiled_method_load = nm; + } + + nmethod* compiled_method_load() const { + assert(_type == TYPE_COMPILED_METHOD_LOAD, "must be"); + return _event_data.compiled_method_load; + } + + void set_compiled_method_unload(jmethodID id, const void* code) { + assert(_type == TYPE_COMPILED_METHOD_UNLOAD, "must be"); + _event_data.compiled_method_unload.method_id = id; + _event_data.compiled_method_unload.code_begin = code; + } + + jmethodID compiled_method_unload_method_id() const { + assert(_type == TYPE_COMPILED_METHOD_UNLOAD, "must be"); + return _event_data.compiled_method_unload.method_id; + } + + const void* compiled_method_unload_code_begin() const { + assert(_type == TYPE_COMPILED_METHOD_UNLOAD, "must be"); + return _event_data.compiled_method_unload.code_begin; + } + + bool is_flush_event() const { return _type == TYPE_FLUSH; } + + int* flush_state_addr() const { + assert(is_flush_event(), "must be"); + return _event_data.flush_state_addr; + } + + void set_flush_state_addr(int* flag) { + assert(is_flush_event(), "must be"); + _event_data.flush_state_addr = flag; + } + + public: + + JvmtiDeferredEvent() : _type(TYPE_NONE) {} + + // Factory methods + static JvmtiDeferredEvent compiled_method_load_event(nmethod* nm) + KERNEL_RETURN_(JvmtiDeferredEvent()); + static JvmtiDeferredEvent compiled_method_unload_event( + jmethodID id, const void* code) KERNEL_RETURN_(JvmtiDeferredEvent()); + + // Actually posts the event. + void post() KERNEL_RETURN; +}; + +/** + * Events enqueued on this queue wake up the Service thread which dequeues + * and posts the events. The Service_lock is required to be held + * when operating on the queue (except for the "pending" events). + */ +class JvmtiDeferredEventQueue : AllStatic { + friend class JvmtiDeferredEvent; + private: + class QueueNode : public CHeapObj { + private: + JvmtiDeferredEvent _event; + QueueNode* _next; + + public: + QueueNode(const JvmtiDeferredEvent& event) + : _event(event), _next(NULL) {} + + const JvmtiDeferredEvent& event() const { return _event; } + QueueNode* next() const { return _next; } + + void set_next(QueueNode* next) { _next = next; } + }; + + static QueueNode* _queue_head; // Hold Service_lock to access + static QueueNode* _queue_tail; // Hold Service_lock to access + static volatile QueueNode* _pending_list; // Uses CAS for read/update + + // Transfers events from the _pending_list to the _queue. + static void process_pending_events() KERNEL_RETURN; + + static void flush_complete(int* flush_state) KERNEL_RETURN; + + public: + // Must be holding Service_lock when calling these + static bool has_events() KERNEL_RETURN_(false); + static void enqueue(const JvmtiDeferredEvent& event) KERNEL_RETURN; + static JvmtiDeferredEvent dequeue() KERNEL_RETURN_(JvmtiDeferredEvent()); + + // This call blocks until all events enqueued prior to this call + // have been posted. The Service_lock is acquired and waited upon. + // + // Implemented by creating a "flush" event and placing it in the queue. + // When the flush event is "posted" it will call flush_complete(), which + // will release the caller. + // + // Can be called by any thread (maybe even the service thread itself). + // Not necessary for the caller to be a JavaThread. + static void flush_queue(Thread* current) KERNEL_RETURN; + + // Used to enqueue events without using a lock, for times (such as during + // safepoint) when we can't or don't want to lock the Service_lock. + // + // Events will be held off to the side until there's a call to + // dequeue(), enqueue(), or process_pending_events() (all of which require + // the holding of the Service_lock), and will be enqueued at that time. + static void add_pending_event(const JvmtiDeferredEvent&) KERNEL_RETURN; +}; + // Utility macro that checks for NULL pointers: #define NULL_CHECK(X, Y) if ((X) == NULL) { return (Y); } diff --git a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp index 68fc8fe7e81..0bc15e0b3bf 100644 --- a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp +++ b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp @@ -235,7 +235,7 @@ void VM_RedefineClasses::append_entry(constantPoolHandle scratch_cp, case JVM_CONSTANT_String: // fall through // These were indirect CP entries, but they have been changed into - // symbolOops so these entries can be directly appended. + // Symbol*s so these entries can be directly appended. case JVM_CONSTANT_UnresolvedClass: // fall through case JVM_CONSTANT_UnresolvedString: { @@ -575,12 +575,12 @@ jvmtiError VM_RedefineClasses::compare_and_normalize_class_versions( // name and signature jshort name_index = k_old_fields->short_at(i + instanceKlass::name_index_offset); jshort sig_index = k_old_fields->short_at(i +instanceKlass::signature_index_offset); - symbolOop name_sym1 = the_class->constants()->symbol_at(name_index); - symbolOop sig_sym1 = the_class->constants()->symbol_at(sig_index); + Symbol* name_sym1 = the_class->constants()->symbol_at(name_index); + Symbol* sig_sym1 = the_class->constants()->symbol_at(sig_index); name_index = k_new_fields->short_at(i + instanceKlass::name_index_offset); sig_index = k_new_fields->short_at(i + instanceKlass::signature_index_offset); - symbolOop name_sym2 = scratch_class->constants()->symbol_at(name_index); - symbolOop sig_sym2 = scratch_class->constants()->symbol_at(sig_index); + Symbol* name_sym2 = scratch_class->constants()->symbol_at(name_index); + Symbol* sig_sym2 = scratch_class->constants()->symbol_at(sig_index); if (name_sym1 != name_sym2 || sig_sym1 != sig_sym2) { return JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED; } @@ -855,7 +855,7 @@ jvmtiError VM_RedefineClasses::load_new_class_versions(TRAPS) { } klassOop the_class_oop = java_lang_Class::as_klassOop(mirror); instanceKlassHandle the_class = instanceKlassHandle(THREAD, the_class_oop); - symbolHandle the_class_sym = symbolHandle(THREAD, the_class->name()); + Symbol* the_class_sym = the_class->name(); // RC_TRACE_WITH_THREAD macro has an embedded ResourceMark RC_TRACE_WITH_THREAD(0x00000001, THREAD, @@ -886,7 +886,7 @@ jvmtiError VM_RedefineClasses::load_new_class_versions(TRAPS) { instanceKlassHandle scratch_class (THREAD, k); if (HAS_PENDING_EXCEPTION) { - symbolOop ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); + Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); // RC_TRACE_WITH_THREAD macro has an embedded ResourceMark RC_TRACE_WITH_THREAD(0x00000002, THREAD, ("parse_stream exception: '%s'", ex_name->as_C_string())); @@ -912,7 +912,7 @@ jvmtiError VM_RedefineClasses::load_new_class_versions(TRAPS) { if (!the_class->is_linked()) { the_class->link_class(THREAD); if (HAS_PENDING_EXCEPTION) { - symbolOop ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); + Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); // RC_TRACE_WITH_THREAD macro has an embedded ResourceMark RC_TRACE_WITH_THREAD(0x00000002, THREAD, ("link_class exception: '%s'", ex_name->as_C_string())); @@ -950,7 +950,7 @@ jvmtiError VM_RedefineClasses::load_new_class_versions(TRAPS) { } if (HAS_PENDING_EXCEPTION) { - symbolOop ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); + Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); // RC_TRACE_WITH_THREAD macro has an embedded ResourceMark RC_TRACE_WITH_THREAD(0x00000002, THREAD, ("verify_byte_codes exception: '%s'", ex_name->as_C_string())); @@ -976,7 +976,7 @@ jvmtiError VM_RedefineClasses::load_new_class_versions(TRAPS) { } if (HAS_PENDING_EXCEPTION) { - symbolOop ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); + Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); // RC_TRACE_WITH_THREAD macro has an embedded ResourceMark RC_TRACE_WITH_THREAD(0x00000002, THREAD, ("verify_byte_codes post merge-CP exception: '%s'", @@ -993,7 +993,7 @@ jvmtiError VM_RedefineClasses::load_new_class_versions(TRAPS) { Rewriter::rewrite(scratch_class, THREAD); if (HAS_PENDING_EXCEPTION) { - symbolOop ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); + Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name(); CLEAR_PENDING_EXCEPTION; if (ex_name == vmSymbols::java_lang_OutOfMemoryError()) { return JVMTI_ERROR_OUT_OF_MEMORY; @@ -2857,8 +2857,8 @@ class TransferNativeFunctionRegistration { // (2) with the prefix. // where 'prefix' is the prefix at that 'depth' (first prefix, second prefix,...) methodOop search_prefix_name_space(int depth, char* name_str, size_t name_len, - symbolOop signature) { - symbolOop name_symbol = SymbolTable::probe(name_str, (int)name_len); + Symbol* signature) { + TempNewSymbol name_symbol = SymbolTable::probe(name_str, (int)name_len); if (name_symbol != NULL) { methodOop method = Klass::cast(the_class())->lookup_method(name_symbol, signature); if (method != NULL) { @@ -2897,7 +2897,7 @@ class TransferNativeFunctionRegistration { // Return the method name with old prefixes stripped away. char* method_name_without_prefixes(methodOop method) { - symbolOop name = method->name(); + Symbol* name = method->name(); char* name_str = name->as_utf8(); // Old prefixing may be defunct, strip prefixes, if any. diff --git a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp index bd268ca5b8e..bf0778b535a 100644 --- a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp +++ b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp @@ -223,8 +223,8 @@ // JVM_CONSTANT_UnresolvedClass and JVM_CONSTANT_UnresolvedString // entries. During this conversion process, the UTF8 values that are // indirectly referenced by the JVM_CONSTANT_ClassIndex and -// JVM_CONSTANT_StringIndex entries are changed into symbolOops and the -// entries are modified to refer to the symbolOops. This optimization +// JVM_CONSTANT_StringIndex entries are changed into Symbol*s and the +// entries are modified to refer to the Symbol*s. This optimization // eliminates one level of indirection for those two CP entry types and // gets the entries ready for verification. During class file parsing // it is also possible for JVM_CONSTANT_UnresolvedString entries to be diff --git a/hotspot/src/share/vm/prims/jvmtiTagMap.cpp b/hotspot/src/share/vm/prims/jvmtiTagMap.cpp index a5edc2bed44..ec3a4256361 100644 --- a/hotspot/src/share/vm/prims/jvmtiTagMap.cpp +++ b/hotspot/src/share/vm/prims/jvmtiTagMap.cpp @@ -2605,7 +2605,7 @@ class SimpleRootsClosure : public OopClosure { } // some objects are ignored - in the case of simple - // roots it's mostly symbolOops that we are skipping + // roots it's mostly Symbol*s that we are skipping // here. if (!ServiceUtil::visible_oop(o)) { return; diff --git a/hotspot/src/share/vm/prims/methodComparator.cpp b/hotspot/src/share/vm/prims/methodComparator.cpp index 184979d9911..60eaf973a6a 100644 --- a/hotspot/src/share/vm/prims/methodComparator.cpp +++ b/hotspot/src/share/vm/prims/methodComparator.cpp @@ -24,7 +24,7 @@ #include "precompiled.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "prims/jvmtiRedefineClassesTrace.hpp" #include "prims/methodComparator.hpp" #include "runtime/handles.inline.hpp" diff --git a/hotspot/src/share/vm/prims/methodHandleWalk.cpp b/hotspot/src/share/vm/prims/methodHandleWalk.cpp index 4552410944f..6419b14622d 100644 --- a/hotspot/src/share/vm/prims/methodHandleWalk.cpp +++ b/hotspot/src/share/vm/prims/methodHandleWalk.cpp @@ -120,6 +120,7 @@ BasicType MethodHandleChain::compute_bound_arg_type(oop target, methodOop m, int if (cur_slot == arg_slot) return T_OBJECT; } + ResourceMark rm(THREAD); for (SignatureStream ss(m->signature()); !ss.is_done(); ss.next()) { BasicType bt = ss.type(); cur_slot -= type2size[bt]; @@ -961,9 +962,9 @@ MethodHandleCompiler::make_invoke(methodOop m, vmIntrinsics::ID iid, m = vmIntrinsics::method_for(iid); } - klassOop klass = m->method_holder(); - symbolOop name = m->name(); - symbolOop signature = m->signature(); + klassOop klass = m->method_holder(); + Symbol* name = m->name(); + Symbol* signature = m->signature(); if (tailcall) { // Actually, in order to make these methods more recognizable, @@ -1141,7 +1142,7 @@ constantPoolHandle MethodHandleCompiler::get_constant_pool(TRAPS) const { for (int i = 1; i < _constants.length(); i++) { ConstantValue* cv = _constants.at(i); switch (cv->tag()) { - case JVM_CONSTANT_Utf8: cpool->symbol_at_put( i, cv->symbol_oop() ); break; + case JVM_CONSTANT_Utf8: cpool->symbol_at_put( i, cv->symbol() ); break; case JVM_CONSTANT_Integer: cpool->int_at_put( i, cv->get_jint() ); break; case JVM_CONSTANT_Float: cpool->float_at_put( i, cv->get_jfloat() ); break; case JVM_CONSTANT_Long: cpool->long_at_put( i, cv->get_jlong() ); break; @@ -1331,7 +1332,7 @@ public: virtual ArgToken make_invoke(methodOop m, vmIntrinsics::ID iid, Bytecodes::Code op, bool tailcall, int argc, ArgToken* argv, TRAPS) { - symbolOop name, sig; + Symbol* name, sig; if (m != NULL) { name = m->name(); sig = m->signature(); diff --git a/hotspot/src/share/vm/prims/methodHandleWalk.hpp b/hotspot/src/share/vm/prims/methodHandleWalk.hpp index 91e71da33d8..aad0edb2058 100644 --- a/hotspot/src/share/vm/prims/methodHandleWalk.hpp +++ b/hotspot/src/share/vm/prims/methodHandleWalk.hpp @@ -258,16 +258,20 @@ private: int _tag; // Constant pool tag type. JavaValue _value; Handle _handle; + Symbol* _sym; public: // Constructor for oop types. ConstantValue(int tag, Handle con) : _tag(tag), _handle(con) { - assert(tag == JVM_CONSTANT_Utf8 || - tag == JVM_CONSTANT_Class || + assert(tag == JVM_CONSTANT_Class || tag == JVM_CONSTANT_String || tag == JVM_CONSTANT_Object, "must be oop type"); } + ConstantValue(int tag, Symbol* con) : _tag(tag), _sym(con) { + assert(tag == JVM_CONSTANT_Utf8, "must be symbol type"); + } + // Constructor for oop reference types. ConstantValue(int tag, int index) : _tag(tag) { assert(JVM_CONSTANT_Fieldref <= tag && tag <= JVM_CONSTANT_NameAndType, "must be ref type"); @@ -291,7 +295,7 @@ private: } int tag() const { return _tag; } - symbolOop symbol_oop() const { return (symbolOop) _handle(); } + Symbol* symbol() const { return _sym; } klassOop klass_oop() const { return (klassOop) _handle(); } oop object_oop() const { return _handle(); } int index() const { return _value.get_jint(); } @@ -336,6 +340,12 @@ private: return _constants.append(cv); } + int cpool_symbol_put(int tag, Symbol* con) { + if (con == NULL) return 0; + ConstantValue* cv = new ConstantValue(tag, con); + return _constants.append(cv); + } + int cpool_oop_reference_put(int tag, int first_index, int second_index) { if (first_index == 0 && second_index == 0) return 0; assert(first_index != 0 && second_index != 0, "no zero indexes"); @@ -365,8 +375,8 @@ private: int cpool_object_put(Handle obj) { return cpool_oop_put(JVM_CONSTANT_Object, obj); } - int cpool_symbol_put(symbolOop sym) { - return cpool_oop_put(JVM_CONSTANT_Utf8, sym); + int cpool_symbol_put(Symbol* sym) { + return cpool_symbol_put(JVM_CONSTANT_Utf8, sym); } int cpool_klass_put(klassOop klass) { return cpool_oop_put(JVM_CONSTANT_Class, klass); diff --git a/hotspot/src/share/vm/prims/methodHandles.cpp b/hotspot/src/share/vm/prims/methodHandles.cpp index f77f0b625d5..2f191632181 100644 --- a/hotspot/src/share/vm/prims/methodHandles.cpp +++ b/hotspot/src/share/vm/prims/methodHandles.cpp @@ -278,7 +278,7 @@ methodOop MethodHandles::decode_methodOop(methodOop m, int& decode_flags_result) assert(m->is_method(), ""); if (m->is_static()) { // check that signature begins '(L' or '([' (not '(I', '()', etc.) - symbolOop sig = m->signature(); + Symbol* sig = m->signature(); BasicType recv_bt = char2type(sig->byte_at(1)); // Note: recv_bt might be T_ILLEGAL if byte_at(2) is ')' assert(sig->byte_at(0) == '(', "must be method sig"); @@ -438,6 +438,25 @@ methodOop MethodHandles::decode_MemberName(oop mname, klassOop& receiver_limit_r return m; } +// convert the external string or reflective type to an internal signature +Symbol* MethodHandles::convert_to_signature(oop type_str, + bool polymorphic, + TRAPS) { + if (java_dyn_MethodType::is_instance(type_str)) { + return java_dyn_MethodType::as_signature(type_str, polymorphic, CHECK_NULL); + } else if (java_lang_Class::is_instance(type_str)) { + return java_lang_Class::as_signature(type_str, false, CHECK_NULL); + } else if (java_lang_String::is_instance(type_str)) { + if (polymorphic) { + return java_lang_String::as_symbol(type_str, CHECK_NULL); + } else { + return java_lang_String::as_symbol_or_null(type_str); + } + } else { + THROW_MSG_(vmSymbols::java_lang_InternalError(), "unrecognized type", NULL); + } +} + // An unresolved member name is a mere symbolic reference. // Resolving it plants a vmtarget/vmindex in it, // which refers dirctly to JVM internals. @@ -478,39 +497,24 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) { defc->link_class(CHECK); // convert the external string name to an internal symbol - symbolHandle name(THREAD, java_lang_String::as_symbol_or_null(name_str)); - if (name.is_null()) return; // no such name + TempNewSymbol name = java_lang_String::as_symbol_or_null(name_str); + if (name == NULL) return; // no such name name_str = NULL; // safety Handle polymorphic_method_type; bool polymorphic_signature = false; if ((flags & ALL_KINDS) == IS_METHOD && (defc() == SystemDictionary::MethodHandle_klass() && - methodOopDesc::is_method_handle_invoke_name(name()))) + methodOopDesc::is_method_handle_invoke_name(name))) polymorphic_signature = true; // convert the external string or reflective type to an internal signature - symbolHandle type; { - symbolOop type_sym = NULL; - if (java_dyn_MethodType::is_instance(type_str)) { - type_sym = java_dyn_MethodType::as_signature(type_str, polymorphic_signature, CHECK); - if (polymorphic_signature) - polymorphic_method_type = Handle(THREAD, type_str); //preserve exactly - } else if (java_lang_Class::is_instance(type_str)) { - type_sym = java_lang_Class::as_signature(type_str, false, CHECK); - } else if (java_lang_String::is_instance(type_str)) { - if (polymorphic_signature) { - type = java_lang_String::as_symbol(type_str, CHECK); - } else { - type_sym = java_lang_String::as_symbol_or_null(type_str); - } - } else { - THROW_MSG(vmSymbols::java_lang_InternalError(), "unrecognized type"); - } - if (type_sym != NULL) - type = symbolHandle(THREAD, type_sym); + TempNewSymbol type = convert_to_signature(type_str, polymorphic_signature, CHECK); + if (java_dyn_MethodType::is_instance(type_str) && polymorphic_signature) { + polymorphic_method_type = Handle(THREAD, type_str); //preserve exactly } - if (type.is_null()) return; // no such signature exists in the VM + + if (type == NULL) return; // no such signature exists in the VM type_str = NULL; // safety // Time to do the lookup. @@ -566,7 +570,7 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) { CallInfo result; { EXCEPTION_MARK; - if (name() == vmSymbols::object_initializer_name()) { + if (name == vmSymbols::object_initializer_name()) { LinkResolver::resolve_special_call(result, defc, name, type, KlassHandle(), false, THREAD); } else { @@ -594,7 +598,7 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) { { // This is taken from LinkResolver::resolve_field, sans access checks. fieldDescriptor fd; // find_field initializes fd if found - KlassHandle sel_klass(THREAD, instanceKlass::cast(defc())->find_field(name(), type(), &fd)); + KlassHandle sel_klass(THREAD, instanceKlass::cast(defc())->find_field(name, type, &fd)); // check if field exists; i.e., if a klass containing the field def has been selected if (sel_klass.is_null()) return; oop vmtarget = sel_klass->as_klassOop(); @@ -725,7 +729,7 @@ void MethodHandles::expand_MemberName(Handle mname, int suppress, TRAPS) { } int MethodHandles::find_MemberNames(klassOop k, - symbolOop name, symbolOop sig, + Symbol* name, Symbol* sig, int mflags, klassOop caller, int skip, objArrayOop results) { DEBUG_ONLY(No_Safepoint_Verifier nsv); @@ -782,8 +786,8 @@ int MethodHandles::find_MemberNames(klassOop k, if ((match_flags & (IS_METHOD | IS_CONSTRUCTOR)) != 0) { // watch out for these guys: - symbolOop init_name = vmSymbols::object_initializer_name(); - symbolOop clinit_name = vmSymbols::class_initializer_name(); + Symbol* init_name = vmSymbols::object_initializer_name(); + Symbol* clinit_name = vmSymbols::class_initializer_name(); if (name == clinit_name) clinit_name = NULL; // hack for exposing bool negate_name_test = false; // fix name so that it captures the intention of IS_CONSTRUCTOR @@ -807,7 +811,7 @@ int MethodHandles::find_MemberNames(klassOop k, } for (MethodStream st(k, local_only, !search_intfc); !st.eos(); st.next()) { methodOop m = st.method(); - symbolOop m_name = m->name(); + Symbol* m_name = m->name(); if (m_name == clinit_name) continue; if (name != NULL && ((m_name != name) ^ negate_name_test)) @@ -928,7 +932,7 @@ static bool is_always_null_type(klassOop klass) { // Must be on the boot class path: if (ik->class_loader() != NULL) return false; // Check the name. - symbolOop name = ik->name(); + Symbol* name = ik->name(); for (int i = 0; ; i++) { const char* test_name = always_null_names[i]; if (test_name == NULL) break; @@ -1026,6 +1030,7 @@ void MethodHandles::verify_method_signature(methodHandle m, int pmax = ptypes->length(); int mnum = 0; // method argument const char* err = NULL; + ResourceMark rm(THREAD); for (SignatureStream ss(m->signature()); !ss.is_done(); ss.next()) { oop ptype_oop = NULL; if (ss.at_return_type()) { @@ -1061,15 +1066,14 @@ void MethodHandles::verify_method_signature(methodHandle m, } KlassHandle pklass_handle(THREAD, pklass); pklass = NULL; // If we fail to resolve types at this point, we will throw an error. - symbolOop name_oop = ss.as_symbol(CHECK); - symbolHandle name(THREAD, name_oop); + Symbol* name = ss.as_symbol(CHECK); instanceKlass* mk = instanceKlass::cast(m->method_holder()); Handle loader(THREAD, mk->class_loader()); Handle domain(THREAD, mk->protection_domain()); mklass = SystemDictionary::resolve_or_null(name, loader, domain, CHECK); pklass = pklass_handle(); if (mklass == NULL && pklass != NULL && - Klass::cast(pklass)->name() == name() && + Klass::cast(pklass)->name() == name && m->is_method_handle_invoke()) { // Assume a match. We can't really decode the signature of MH.invoke*. continue; @@ -2288,7 +2292,8 @@ JVM_ENTRY(void, MHI_init_MT(JNIEnv *env, jobject igcls, jobject erased_jh)) { tty->print("creating MethodType form "); if (WizardMode || Verbose) { // Warning: this calls Java code on the MH! // call Object.toString() - symbolOop name = vmSymbols::toString_name(), sig = vmSymbols::void_string_signature(); + Symbol* name = vmSymbols::toString_name(); + Symbol* sig = vmSymbols::void_string_signature(); JavaCallArguments args(Handle(THREAD, JNIHandles::resolve_non_null(erased_jh))); JavaValue result(T_OBJECT); JavaCalls::call_virtual(&result, SystemDictionary::Object_klass(), name, sig, @@ -2452,7 +2457,8 @@ JVM_ENTRY(jint, MHI_getMembers(JNIEnv *env, jobject igcls, objArrayOop results = (objArrayOop) JNIHandles::resolve(results_jh); if (results == NULL || !results->is_objArray()) return -1; - symbolOop name = NULL, sig = NULL; + TempNewSymbol name = NULL; + TempNewSymbol sig = NULL; if (name_jh != NULL) { name = java_lang_String::as_symbol_or_null(JNIHandles::resolve_non_null(name_jh)); if (name == NULL) return 0; // a match is not possible @@ -2611,10 +2617,10 @@ JVM_ENTRY(void, JVM_RegisterMethodHandleMethods(JNIEnv *env, jclass MHN_class)) if (enable_MH) { KlassHandle MHI_klass = SystemDictionaryHandles::MethodHandleImpl_klass(); if (MHI_klass.not_null()) { - symbolHandle raiseException_name = oopFactory::new_symbol_handle("raiseException", CHECK); - symbolHandle raiseException_sig = oopFactory::new_symbol_handle("(ILjava/lang/Object;Ljava/lang/Object;)V", CHECK); + TempNewSymbol raiseException_name = SymbolTable::new_symbol("raiseException", CHECK); + TempNewSymbol raiseException_sig = SymbolTable::new_symbol("(ILjava/lang/Object;Ljava/lang/Object;)V", CHECK); methodOop raiseException_method = instanceKlass::cast(MHI_klass->as_klassOop()) - ->find_method(raiseException_name(), raiseException_sig()); + ->find_method(raiseException_name, raiseException_sig); if (raiseException_method != NULL && raiseException_method->is_static()) { MethodHandles::set_raise_exception_method(raiseException_method); } else { diff --git a/hotspot/src/share/vm/prims/methodHandles.hpp b/hotspot/src/share/vm/prims/methodHandles.hpp index cf9c25a5ae9..01f6272fc41 100644 --- a/hotspot/src/share/vm/prims/methodHandles.hpp +++ b/hotspot/src/share/vm/prims/methodHandles.hpp @@ -287,7 +287,7 @@ class MethodHandles: AllStatic { static void init_MemberName(oop mname_oop, oop target); // compute vmtarget/vmindex from target static void init_MemberName(oop mname_oop, methodOop m, bool do_dispatch = true); static void init_MemberName(oop mname_oop, klassOop field_holder, AccessFlags mods, int offset); - static int find_MemberNames(klassOop k, symbolOop name, symbolOop sig, + static int find_MemberNames(klassOop k, Symbol* name, Symbol* sig, int mflags, klassOop caller, int skip, objArrayOop results); // bit values for suppress argument to expand_MemberName: @@ -466,6 +466,8 @@ class MethodHandles: AllStatic { Register temp_reg, Register temp2_reg, Register temp3_reg = noreg); static void trace_method_handle(MacroAssembler* _masm, const char* adaptername) PRODUCT_RETURN; + + static Symbol* convert_to_signature(oop type_str, bool polymorphic, TRAPS); }; diff --git a/hotspot/src/share/vm/prims/nativeLookup.cpp b/hotspot/src/share/vm/prims/nativeLookup.cpp index 7278441194a..2a427f77d00 100644 --- a/hotspot/src/share/vm/prims/nativeLookup.cpp +++ b/hotspot/src/share/vm/prims/nativeLookup.cpp @@ -32,7 +32,7 @@ #include "oops/instanceKlass.hpp" #include "oops/methodOop.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "prims/jvm_misc.hpp" #include "prims/nativeLookup.hpp" #include "runtime/arguments.hpp" @@ -51,7 +51,7 @@ #endif -static void mangle_name_on(outputStream* st, symbolOop name, int begin, int end) { +static void mangle_name_on(outputStream* st, Symbol* name, int begin, int end) { char* bytes = (char*)name->bytes() + begin; char* end_bytes = (char*)name->bytes() + end; while (bytes < end_bytes) { @@ -70,7 +70,7 @@ static void mangle_name_on(outputStream* st, symbolOop name, int begin, int end) } -static void mangle_name_on(outputStream* st, symbolOop name) { +static void mangle_name_on(outputStream* st, Symbol* name) { mangle_name_on(st, name, 0, name->utf8_length()); } @@ -91,7 +91,7 @@ char* NativeLookup::pure_jni_name(methodHandle method) { char* NativeLookup::long_jni_name(methodHandle method) { // Signature ignore the wrapping parenteses and the trailing return type stringStream st; - symbolOop signature = method->signature(); + Symbol* signature = method->signature(); st.print("__"); // find ')' int end; @@ -168,8 +168,8 @@ address NativeLookup::lookup_style(methodHandle method, char* pure_name, const c JavaValue result(T_LONG); JavaCalls::call_static(&result, klass, - vmSymbolHandles::findNative_name(), - vmSymbolHandles::classloader_string_long_signature(), + vmSymbols::findNative_name(), + vmSymbols::classloader_string_long_signature(), // Arguments loader, name_arg, @@ -249,10 +249,10 @@ address NativeLookup::lookup_entry_prefixed(methodHandle method, bool& in_base_l if (wrapper_name != in_name) { // we have a name for a wrapping method int wrapper_name_len = (int)strlen(wrapper_name); - symbolHandle wrapper_symbol(THREAD, SymbolTable::probe(wrapper_name, wrapper_name_len)); - if (!wrapper_symbol.is_null()) { + TempNewSymbol wrapper_symbol = SymbolTable::probe(wrapper_name, wrapper_name_len); + if (wrapper_symbol != NULL) { KlassHandle kh(method->method_holder()); - methodOop wrapper_method = Klass::cast(kh())->lookup_method(wrapper_symbol(), + methodOop wrapper_method = Klass::cast(kh())->lookup_method(wrapper_symbol, method->signature()); if (wrapper_method != NULL && !wrapper_method->is_native()) { // we found a wrapper method, use its native entry @@ -301,9 +301,9 @@ address NativeLookup::lookup(methodHandle method, bool& in_base_library, TRAPS) address NativeLookup::base_library_lookup(const char* class_name, const char* method_name, const char* signature) { EXCEPTION_MARK; bool in_base_library = true; // SharedRuntime inits some math methods. - symbolHandle c_name = oopFactory::new_symbol_handle(class_name, CATCH); - symbolHandle m_name = oopFactory::new_symbol_handle(method_name, CATCH); - symbolHandle s_name = oopFactory::new_symbol_handle(signature, CATCH); + TempNewSymbol c_name = SymbolTable::new_symbol(class_name, CATCH); + TempNewSymbol m_name = SymbolTable::new_symbol(method_name, CATCH); + TempNewSymbol s_name = SymbolTable::new_symbol(signature, CATCH); // Find the class klassOop k = SystemDictionary::resolve_or_fail(c_name, true, CATCH); @@ -311,7 +311,7 @@ address NativeLookup::base_library_lookup(const char* class_name, const char* me // Find method and invoke standard lookup methodHandle method (THREAD, - klass->uncached_lookup_method(m_name(), s_name())); + klass->uncached_lookup_method(m_name, s_name)); address result = lookup(method, in_base_library, CATCH); assert(in_base_library, "must be in basic library"); guarantee(result != NULL, "must be non NULL"); diff --git a/hotspot/src/share/vm/prims/unsafe.cpp b/hotspot/src/share/vm/prims/unsafe.cpp index 7c64262d86f..f76b2474e46 100644 --- a/hotspot/src/share/vm/prims/unsafe.cpp +++ b/hotspot/src/share/vm/prims/unsafe.cpp @@ -991,7 +991,7 @@ Unsafe_DefineAnonymousClass_impl(JNIEnv *env, instanceKlassHandle anon_klass; { - symbolHandle no_class_name; + Symbol* no_class_name = NULL; klassOop anonk = SystemDictionary::parse_stream(no_class_name, host_loader, host_domain, &st, host_klass, cp_patches, diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp index b106d08fc60..814e0df928b 100644 --- a/hotspot/src/share/vm/runtime/arguments.cpp +++ b/hotspot/src/share/vm/runtime/arguments.cpp @@ -1941,10 +1941,16 @@ bool Arguments::check_vm_args_consistency() { status = false; } +#ifndef SERIALGC if (UseG1GC) { status = status && verify_percentage(InitiatingHeapOccupancyPercent, "InitiatingHeapOccupancyPercent"); + status = status && verify_min_value(G1RefProcDrainInterval, 1, + "G1RefProcDrainInterval"); + status = status && verify_min_value((intx)G1ConcMarkStepDurationMillis, 1, + "G1ConcMarkStepDurationMillis"); } +#endif status = status && verify_interval(RefDiscoveryPolicy, ReferenceProcessor::DiscoveryPolicyMin, @@ -3029,15 +3035,6 @@ jint Arguments::parse(const JavaVMInitArgs* args) { } ScavengeRootsInCode = 1; } -#ifdef COMPILER2 - if (EnableInvokeDynamic && DoEscapeAnalysis) { - // TODO: We need to find rules for invokedynamic and EA. For now, - // simply disable EA by default. - if (FLAG_IS_DEFAULT(DoEscapeAnalysis)) { - DoEscapeAnalysis = false; - } - } -#endif if (PrintGCDetails) { // Turn on -verbose:gc options as well diff --git a/hotspot/src/share/vm/runtime/deoptimization.cpp b/hotspot/src/share/vm/runtime/deoptimization.cpp index de431174da7..36fd0be4bd3 100644 --- a/hotspot/src/share/vm/runtime/deoptimization.cpp +++ b/hotspot/src/share/vm/runtime/deoptimization.cpp @@ -59,6 +59,12 @@ #ifdef TARGET_ARCH_zero # include "vmreg_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "vmreg_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vmreg_ppc.inline.hpp" +#endif #ifdef COMPILER2 #ifdef TARGET_ARCH_MODEL_x86_32 # include "adfiles/ad_x86_32.hpp" @@ -72,6 +78,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/ad_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/ad_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/ad_ppc.hpp" +#endif #endif bool DeoptimizationMarker::_is_active = false; @@ -396,7 +408,7 @@ Deoptimization::UnrollBlock* Deoptimization::fetch_unroll_info_helper(JavaThread HandleMark hm; methodHandle method(thread, array->element(0)->method()); Bytecode_invoke invoke = Bytecode_invoke_check(method, array->element(0)->bci()); - return_type = invoke.is_valid() ? invoke.result_type(thread) : T_ILLEGAL; + return_type = invoke.is_valid() ? invoke.result_type() : T_ILLEGAL; } // Compute information for handling adapters and adjusting the frame size of the caller. @@ -601,7 +613,7 @@ JRT_LEAF(BasicType, Deoptimization::unpack_frames(JavaThread* thread, int exec_m cur_code == Bytecodes::_invokestatic || cur_code == Bytecodes::_invokeinterface) { Bytecode_invoke invoke(mh, iframe->interpreter_frame_bci()); - symbolHandle signature(thread, invoke.signature()); + Symbol* signature = invoke.signature(); ArgumentSizeComputer asc(signature); cur_invoke_parameter_size = asc.size(); if (cur_code != Bytecodes::_invokestatic) { @@ -1156,7 +1168,7 @@ void Deoptimization::load_class_by_index(constantPoolHandle constant_pool, int i if (!constant_pool->tag_at(index).is_symbol()) return; Handle class_loader (THREAD, instanceKlass::cast(constant_pool->pool_holder())->class_loader()); - symbolHandle symbol (THREAD, constant_pool->symbol_at(index)); + Symbol* symbol = constant_pool->symbol_at(index); // class name? if (symbol->byte_at(0) != '(') { @@ -1166,10 +1178,10 @@ void Deoptimization::load_class_by_index(constantPoolHandle constant_pool, int i } // then it must be a signature! + ResourceMark rm(THREAD); for (SignatureStream ss(symbol); !ss.is_done(); ss.next()) { if (ss.is_object()) { - symbolOop s = ss.as_symbol(CHECK); - symbolHandle class_name (THREAD, s); + Symbol* class_name = ss.as_symbol(CHECK); Handle protection_domain (THREAD, Klass::cast(constant_pool->pool_holder())->protection_domain()); SystemDictionary::resolve_or_null(class_name, class_loader, protection_domain, CHECK); } @@ -1246,19 +1258,17 @@ JRT_ENTRY(void, Deoptimization::uncommon_trap_inner(JavaThread* thread, jint tra format_trap_request(buf, sizeof(buf), trap_request)); nm->log_identity(xtty); } - symbolHandle class_name; + Symbol* class_name = NULL; bool unresolved = false; if (unloaded_class_index >= 0) { constantPoolHandle constants (THREAD, trap_method->constants()); if (constants->tag_at(unloaded_class_index).is_unresolved_klass()) { - class_name = symbolHandle(THREAD, - constants->klass_name_at(unloaded_class_index)); + class_name = constants->klass_name_at(unloaded_class_index); unresolved = true; if (xtty != NULL) xtty->print(" unresolved='1'"); } else if (constants->tag_at(unloaded_class_index).is_symbol()) { - class_name = symbolHandle(THREAD, - constants->symbol_at(unloaded_class_index)); + class_name = constants->symbol_at(unloaded_class_index); } if (xtty != NULL) xtty->name(class_name); @@ -1294,7 +1304,7 @@ JRT_ENTRY(void, Deoptimization::uncommon_trap_inner(JavaThread* thread, jint tra trap_reason_name(reason), trap_action_name(action), unloaded_class_index); - if (class_name.not_null()) { + if (class_name != NULL) { tty->print(unresolved ? " unresolved class: " : " symbol: "); class_name->print_symbol_on(tty); } diff --git a/hotspot/src/share/vm/runtime/dtraceJSDT.hpp b/hotspot/src/share/vm/runtime/dtraceJSDT.hpp index 15febe45916..d6c80c7374a 100644 --- a/hotspot/src/share/vm/runtime/dtraceJSDT.hpp +++ b/hotspot/src/share/vm/runtime/dtraceJSDT.hpp @@ -35,6 +35,12 @@ #ifdef TARGET_ARCH_zero # include "nativeInst_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "nativeInst_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "nativeInst_ppc.hpp" +#endif class RegisteredProbes; typedef jlong OpaqueProbes; diff --git a/hotspot/src/share/vm/runtime/fieldDescriptor.hpp b/hotspot/src/share/vm/runtime/fieldDescriptor.hpp index 3913fcc3ba6..ced38aed21c 100644 --- a/hotspot/src/share/vm/runtime/fieldDescriptor.hpp +++ b/hotspot/src/share/vm/runtime/fieldDescriptor.hpp @@ -28,7 +28,7 @@ #include "oops/constantPoolOop.hpp" #include "oops/klassOop.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/fieldType.hpp" #include "utilities/accessFlags.hpp" #include "utilities/constantTag.hpp" @@ -49,15 +49,15 @@ class fieldDescriptor VALUE_OBJ_CLASS_SPEC { constantPoolHandle _cp; public: - symbolOop name() const { return _cp->symbol_at(_name_index); } - symbolOop signature() const { return _cp->symbol_at(_signature_index); } + Symbol* name() const { return _cp->symbol_at(_name_index); } + Symbol* signature() const { return _cp->symbol_at(_signature_index); } klassOop field_holder() const { return _cp->pool_holder(); } constantPoolOop constants() const { return _cp(); } AccessFlags access_flags() const { return _access_flags; } oop loader() const; // Offset (in words) of field from start of instanceOop / klassOop int offset() const { return _offset; } - symbolOop generic_signature() const { return (_generic_signature_index > 0 ? _cp->symbol_at(_generic_signature_index) : (symbolOop)NULL); } + Symbol* generic_signature() const { return (_generic_signature_index > 0 ? _cp->symbol_at(_generic_signature_index) : (Symbol*)NULL); } int index() const { return _index; } typeArrayOop annotations() const; diff --git a/hotspot/src/share/vm/runtime/fieldType.cpp b/hotspot/src/share/vm/runtime/fieldType.cpp index 1da94218ef8..00247f1723e 100644 --- a/hotspot/src/share/vm/runtime/fieldType.cpp +++ b/hotspot/src/share/vm/runtime/fieldType.cpp @@ -30,7 +30,7 @@ #include "runtime/fieldType.hpp" #include "runtime/signature.hpp" -void FieldType::skip_optional_size(symbolOop signature, int* index) { +void FieldType::skip_optional_size(Symbol* signature, int* index) { jchar c = signature->byte_at(*index); while (c >= '0' && c <= '9') { *index = *index + 1; @@ -38,12 +38,12 @@ void FieldType::skip_optional_size(symbolOop signature, int* index) { } } -BasicType FieldType::basic_type(symbolOop signature) { +BasicType FieldType::basic_type(Symbol* signature) { return char2type(signature->byte_at(0)); } // Check if it is a valid array signature -bool FieldType::is_valid_array_signature(symbolOop sig) { +bool FieldType::is_valid_array_signature(Symbol* sig) { assert(sig->utf8_length() > 1, "this should already have been checked"); assert(sig->byte_at(0) == '[', "this should already have been checked"); // The first character is already checked @@ -73,7 +73,7 @@ bool FieldType::is_valid_array_signature(symbolOop sig) { } -BasicType FieldType::get_array_info(symbolOop signature, jint* dimension, symbolOop* object_key, TRAPS) { +BasicType FieldType::get_array_info(Symbol* signature, FieldArrayInfo& fd, TRAPS) { assert(basic_type(signature) == T_ARRAY, "must be array"); int index = 1; int dim = 1; @@ -84,14 +84,15 @@ BasicType FieldType::get_array_info(symbolOop signature, jint* dimension, symbol skip_optional_size(signature, &index); } ResourceMark rm; - symbolOop element = oopFactory::new_symbol(signature->as_C_string() + index, CHECK_(T_BYTE)); - BasicType element_type = FieldType::basic_type(element); + char *element = signature->as_C_string() + index; + BasicType element_type = char2type(element[0]); if (element_type == T_OBJECT) { - char* object_type = element->as_C_string(); - object_type[element->utf8_length() - 1] = '\0'; - *object_key = oopFactory::new_symbol(object_type + 1, CHECK_(T_BYTE)); + int len = (int)strlen(element); + assert(element[len-1] == ';', "last char should be a semicolon"); + element[len-1] = '\0'; // chop off semicolon + fd._object_key = SymbolTable::new_symbol(element + 1, CHECK_(T_BYTE)); } // Pass dimension back to caller - *dimension = dim; + fd._dimension = dim; return element_type; } diff --git a/hotspot/src/share/vm/runtime/fieldType.hpp b/hotspot/src/share/vm/runtime/fieldType.hpp index 7f5a6e34ced..13ecf15a643 100644 --- a/hotspot/src/share/vm/runtime/fieldType.hpp +++ b/hotspot/src/share/vm/runtime/fieldType.hpp @@ -26,26 +26,42 @@ #define SHARE_VM_RUNTIME_FIELDTYPE_HPP #include "memory/allocation.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" // Note: FieldType should be based on the SignatureIterator (or vice versa). // In any case, this structure should be re-thought at some point. // A FieldType is used to determine the type of a field from a signature string. +// Information returned by get_array_info, which is scoped to decrement +// reference count if a Symbol is created in the case of T_OBJECT +class FieldArrayInfo : public StackObj { + friend class FieldType; // field type can set these fields. + int _dimension; + Symbol* _object_key; + public: + int dimension() { return _dimension; } + Symbol* object_key() { return _object_key; } + // basic constructor + FieldArrayInfo() : _dimension(0), _object_key(NULL) {} + // destructor decrements object key's refcount if created + ~FieldArrayInfo() { if (_object_key != NULL) _object_key->decrement_refcount(); } +}; + + class FieldType: public AllStatic { private: - static void skip_optional_size(symbolOop signature, int* index); - static bool is_valid_array_signature(symbolOop signature); + static void skip_optional_size(Symbol* signature, int* index); + static bool is_valid_array_signature(Symbol* signature); public: // Return basic type - static BasicType basic_type(symbolOop signature); + static BasicType basic_type(Symbol* signature); // Testing - static bool is_array(symbolOop signature) { return signature->utf8_length() > 1 && signature->byte_at(0) == '[' && is_valid_array_signature(signature); } + static bool is_array(Symbol* signature) { return signature->utf8_length() > 1 && signature->byte_at(0) == '[' && is_valid_array_signature(signature); } - static bool is_obj(symbolOop signature) { + static bool is_obj(Symbol* signature) { int sig_length = signature->utf8_length(); // Must start with 'L' and end with ';' return (sig_length >= 2 && @@ -54,7 +70,7 @@ class FieldType: public AllStatic { } // Parse field and extract array information. Works for T_ARRAY only. - static BasicType get_array_info(symbolOop signature, jint* dimension, symbolOop *object_key, TRAPS); + static BasicType get_array_info(Symbol* signature, FieldArrayInfo& ai, TRAPS); }; #endif // SHARE_VM_RUNTIME_FIELDTYPE_HPP diff --git a/hotspot/src/share/vm/runtime/fprofiler.cpp b/hotspot/src/share/vm/runtime/fprofiler.cpp index 70c79136daf..4efc3a936d1 100644 --- a/hotspot/src/share/vm/runtime/fprofiler.cpp +++ b/hotspot/src/share/vm/runtime/fprofiler.cpp @@ -31,7 +31,7 @@ #include "memory/universe.inline.hpp" #include "oops/oop.inline.hpp" #include "oops/oop.inline2.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/deoptimization.hpp" #include "runtime/fprofiler.hpp" #include "runtime/mutexLocker.hpp" @@ -318,7 +318,7 @@ class ProfilerNode { int limit; int i; methodOop m = method(); - symbolOop k = m->klass_name(); + Symbol* k = m->klass_name(); // Print the class name with dots instead of slashes limit = k->utf8_length(); for (i = 0 ; i < limit ; i += 1) { @@ -331,7 +331,7 @@ class ProfilerNode { if (limit > 0) { st->print("."); } - symbolOop n = m->name(); + Symbol* n = m->name(); limit = n->utf8_length(); for (i = 0 ; i < limit ; i += 1) { char c = (char) n->byte_at(i); @@ -339,7 +339,7 @@ class ProfilerNode { } if( Verbose ) { // Disambiguate overloaded methods - symbolOop sig = m->signature(); + Symbol* sig = m->signature(); sig->print_symbol_on(st); } } diff --git a/hotspot/src/share/vm/runtime/fprofiler.hpp b/hotspot/src/share/vm/runtime/fprofiler.hpp index 58a5f8ca081..2731dea7b6b 100644 --- a/hotspot/src/share/vm/runtime/fprofiler.hpp +++ b/hotspot/src/share/vm/runtime/fprofiler.hpp @@ -231,13 +231,13 @@ public: static void engage(JavaThread* mainThread, bool fullProfile) KERNEL_RETURN ; static void disengage() KERNEL_RETURN ; static void print(int unused) KERNEL_RETURN ; - static bool is_active() KERNEL_RETURN_(return false;) ; + static bool is_active() KERNEL_RETURN_(false) ; // This is NULL if each thread has its own thread profiler, // else this is the single thread profiler used by all threads. // In particular it makes a difference during garbage collection, // where you only want to traverse each thread profiler once. - static ThreadProfiler* get_thread_profiler() KERNEL_RETURN_(return NULL;); + static ThreadProfiler* get_thread_profiler() KERNEL_RETURN_(NULL); // Garbage Collection Support static void oops_do(OopClosure* f) KERNEL_RETURN ; @@ -246,13 +246,13 @@ public: // Returns the start address for a given pc // NULL is returned if the PCRecorder is inactive - static address bucket_start_for(address pc) KERNEL_RETURN_(return NULL;); + static address bucket_start_for(address pc) KERNEL_RETURN_(NULL); enum { MillisecsPerTick = 10 }; // ms per profiling ticks // Returns the number of ticks recorded for the bucket // pc belongs to. - static int bucket_count_for(address pc) KERNEL_RETURN_(return 0;); + static int bucket_count_for(address pc) KERNEL_RETURN_(0); #ifndef FPROF_KERNEL diff --git a/hotspot/src/share/vm/runtime/frame.cpp b/hotspot/src/share/vm/runtime/frame.cpp index 91f0292b476..5c205501a2c 100644 --- a/hotspot/src/share/vm/runtime/frame.cpp +++ b/hotspot/src/share/vm/runtime/frame.cpp @@ -52,6 +52,12 @@ #ifdef TARGET_ARCH_zero # include "nativeInst_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "nativeInst_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "nativeInst_ppc.hpp" +#endif RegisterMap::RegisterMap(JavaThread *thread, bool update_map) { _thread = thread; @@ -792,7 +798,7 @@ class InterpretedArgumentOopFinder: public SignatureInfo { } public: - InterpretedArgumentOopFinder(symbolHandle signature, bool has_receiver, frame* fr, OopClosure* f) : SignatureInfo(signature), _has_receiver(has_receiver) { + InterpretedArgumentOopFinder(Symbol* signature, bool has_receiver, frame* fr, OopClosure* f) : SignatureInfo(signature), _has_receiver(has_receiver) { // compute size of arguments int args_size = ArgumentSizeComputer(signature).size() + (has_receiver ? 1 : 0); assert(!fr->is_interpreted_frame() || @@ -846,7 +852,7 @@ class EntryFrameOopFinder: public SignatureInfo { } public: - EntryFrameOopFinder(frame* frame, symbolHandle signature, bool is_static) : SignatureInfo(signature) { + EntryFrameOopFinder(frame* frame, Symbol* signature, bool is_static) : SignatureInfo(signature) { _f = NULL; // will be set later _fr = frame; _is_static = is_static; @@ -861,7 +867,7 @@ class EntryFrameOopFinder: public SignatureInfo { }; -oop* frame::interpreter_callee_receiver_addr(symbolHandle signature) { +oop* frame::interpreter_callee_receiver_addr(Symbol* signature) { ArgumentSizeComputer asc(signature); int size = asc.size(); return (oop *)interpreter_frame_tos_at(size); @@ -922,7 +928,7 @@ void frame::oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool quer int max_locals = m->is_native() ? m->size_of_parameters() : m->max_locals(); - symbolHandle signature; + Symbol* signature = NULL; bool has_receiver = false; // Process a callee's arguments if we are at a call site @@ -932,7 +938,7 @@ void frame::oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool quer if (!m->is_native()) { Bytecode_invoke call = Bytecode_invoke_check(m, bci); if (call.is_valid()) { - signature = symbolHandle(thread, call.signature()); + signature = call.signature(); has_receiver = call.has_receiver(); if (map->include_argument_oops() && interpreter_frame_expression_stack_size() > 0) { @@ -965,7 +971,7 @@ void frame::oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool quer } -void frame::oops_interpreted_arguments_do(symbolHandle signature, bool has_receiver, OopClosure* f) { +void frame::oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f) { InterpretedArgumentOopFinder finder(signature, has_receiver, this, f); finder.oops_do(); } @@ -1014,7 +1020,7 @@ class CompiledArgumentOopFinder: public SignatureInfo { } public: - CompiledArgumentOopFinder(symbolHandle signature, bool has_receiver, OopClosure* f, frame fr, const RegisterMap* reg_map) + CompiledArgumentOopFinder(Symbol* signature, bool has_receiver, OopClosure* f, frame fr, const RegisterMap* reg_map) : SignatureInfo(signature) { // initialize CompiledArgumentOopFinder @@ -1026,7 +1032,7 @@ class CompiledArgumentOopFinder: public SignatureInfo { _arg_size = ArgumentSizeComputer(signature).size() + (has_receiver ? 1 : 0); int arg_size; - _regs = SharedRuntime::find_callee_arguments(signature(), has_receiver, &arg_size); + _regs = SharedRuntime::find_callee_arguments(signature, has_receiver, &arg_size); assert(arg_size == _arg_size, "wrong arg size"); } @@ -1039,7 +1045,7 @@ class CompiledArgumentOopFinder: public SignatureInfo { } }; -void frame::oops_compiled_arguments_do(symbolHandle signature, bool has_receiver, const RegisterMap* reg_map, OopClosure* f) { +void frame::oops_compiled_arguments_do(Symbol* signature, bool has_receiver, const RegisterMap* reg_map, OopClosure* f) { ResourceMark rm; CompiledArgumentOopFinder finder(signature, has_receiver, f, *this, reg_map); finder.oops_do(); @@ -1099,8 +1105,7 @@ void frame::oops_entry_do(OopClosure* f, const RegisterMap* map) { // must collect argument oops, as nobody else is doing it Thread *thread = Thread::current(); methodHandle m (thread, entry_frame_call_wrapper()->callee_method()); - symbolHandle signature (thread, m->signature()); - EntryFrameOopFinder finder(this, signature, m->is_static()); + EntryFrameOopFinder finder(this, m->signature(), m->is_static()); finder.arguments_do(f); } // Traverse the Handle Block saved in the entry frame diff --git a/hotspot/src/share/vm/runtime/frame.hpp b/hotspot/src/share/vm/runtime/frame.hpp index 64055dada61..4750f3a5a69 100644 --- a/hotspot/src/share/vm/runtime/frame.hpp +++ b/hotspot/src/share/vm/runtime/frame.hpp @@ -44,6 +44,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/adGlobals_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/adGlobals_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/adGlobals_ppc.hpp" +#endif #endif #ifdef ZERO #ifdef TARGET_ARCH_zero @@ -261,10 +267,10 @@ class frame VALUE_OBJ_CLASS_SPEC { // Find receiver for an invoke when arguments are just pushed on stack (i.e., callee stack-frame is // not setup) - oop interpreter_callee_receiver(symbolHandle signature) { return *interpreter_callee_receiver_addr(signature); } + oop interpreter_callee_receiver(Symbol* signature) { return *interpreter_callee_receiver_addr(signature); } - oop* interpreter_callee_receiver_addr(symbolHandle signature); + oop* interpreter_callee_receiver_addr(Symbol* signature); // expression stack (may go up or down, direction == 1 or -1) @@ -386,11 +392,11 @@ class frame VALUE_OBJ_CLASS_SPEC { oop* oopmapreg_to_location(VMReg reg, const RegisterMap* regmap) const; // Oops-do's - void oops_compiled_arguments_do(symbolHandle signature, bool has_receiver, const RegisterMap* reg_map, OopClosure* f); + void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, const RegisterMap* reg_map, OopClosure* f); void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true); private: - void oops_interpreted_arguments_do(symbolHandle signature, bool has_receiver, OopClosure* f); + void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f); // Iteration of oops void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache); @@ -457,6 +463,12 @@ class frame VALUE_OBJ_CLASS_SPEC { #ifdef TARGET_ARCH_zero # include "frame_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "frame_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "frame_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/runtime/frame.inline.hpp b/hotspot/src/share/vm/runtime/frame.inline.hpp index 9ecae452766..739a50b9a25 100644 --- a/hotspot/src/share/vm/runtime/frame.inline.hpp +++ b/hotspot/src/share/vm/runtime/frame.inline.hpp @@ -40,6 +40,12 @@ #ifdef TARGET_ARCH_zero # include "jniTypes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "jniTypes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "jniTypes_ppc.hpp" +#endif #ifdef ZERO #ifdef TARGET_ARCH_zero # include "entryFrame_zero.hpp" @@ -88,6 +94,12 @@ inline bool frame::is_first_frame() const { #ifdef TARGET_ARCH_zero # include "frame_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "frame_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "frame_ppc.inline.hpp" +#endif #endif // SHARE_VM_RUNTIME_FRAME_INLINE_HPP diff --git a/hotspot/src/share/vm/runtime/globals.hpp b/hotspot/src/share/vm/runtime/globals.hpp index 7024dacb9bc..3b929749907 100644 --- a/hotspot/src/share/vm/runtime/globals.hpp +++ b/hotspot/src/share/vm/runtime/globals.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, 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 @@ -35,6 +35,12 @@ #ifdef TARGET_ARCH_zero # include "globals_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "globals_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "globals_ppc.hpp" +#endif #ifdef TARGET_OS_FAMILY_linux # include "globals_linux.hpp" #endif @@ -62,6 +68,12 @@ #ifdef TARGET_OS_ARCH_windows_x86 # include "globals_windows_x86.hpp" #endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "globals_linux_arm.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "globals_linux_ppc.hpp" +#endif #ifdef COMPILER1 #ifdef TARGET_ARCH_x86 # include "c1_globals_x86.hpp" @@ -69,6 +81,12 @@ #ifdef TARGET_ARCH_sparc # include "c1_globals_sparc.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "c1_globals_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "c1_globals_ppc.hpp" +#endif #ifdef TARGET_OS_FAMILY_linux # include "c1_globals_linux.hpp" #endif @@ -86,6 +104,9 @@ #ifdef TARGET_ARCH_sparc # include "c2_globals_sparc.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "c2_globals_arm.hpp" +#endif #ifdef TARGET_OS_FAMILY_linux # include "c2_globals_linux.hpp" #endif @@ -410,7 +431,14 @@ class CommandLineFlags { product_pd(bool, UseMembar, \ "(Unstable) Issues membars on thread state transitions") \ \ - /* Temporary: See 6948537 */ \ + /* Temp PPC Flag to allow disabling the use of lwsync on ppc platforms \ + * that don't support it. This will be replaced by processor detection \ + * logic. \ + */ \ + product(bool, UsePPCLWSYNC, true, \ + "Use lwsync instruction if true, else use slower sync") \ + \ + /* Temporary: See 6948537 */ \ experimental(bool, UseMemSetInBOT, true, \ "(Unstable) uses memset in BOT updates in GC code") \ \ @@ -607,6 +635,9 @@ class CommandLineFlags { notproduct(bool, ZombieALot, false, \ "creates zombies (non-entrant) at exit from the runt. system") \ \ + product(bool, UnlinkSymbolsALot, false, \ + "unlink unreferenced symbols from the symbol table at safepoints")\ + \ notproduct(bool, WalkStackALot, false, \ "trace stack (no print) at every exit from the runtime system") \ \ @@ -759,6 +790,9 @@ class CommandLineFlags { product(bool, ShowMessageBoxOnError, false, \ "Keep process alive on VM fatal error") \ \ + product(bool, CreateMinidumpOnCrash, false, \ + "Create minidump on VM fatal error") \ + \ product_pd(bool, UseOSErrorReporting, \ "Let VM fatal error propagate to the OS (ie. WER on Windows)") \ \ @@ -1923,6 +1957,9 @@ class CommandLineFlags { product(bool, PrintRevisitStats, false, \ "Print revisit (klass and MDO) stack related information") \ \ + EMBEDDED_ONLY(product(bool, LowMemoryProtection, true, \ + "Enable LowMemoryProtection")) \ + \ product_pd(bool, NeverActAsServerClassMachine, \ "Never act like a server-class machine") \ \ @@ -2627,6 +2664,25 @@ class CommandLineFlags { product(bool, UseStringCache, false, \ "Enable String cache capabilities on String.java") \ \ + /* byte strings */ \ + product(bool, UseCompressedStrings, false, \ + "Enable byte-valued strings") \ + \ + product(bool, SpecialStringCompress, true, \ + "special version of string compress") \ + \ + product(bool, SpecialStringInflate, true, \ + "special version of string inflate") \ + \ + product(bool, SpecialStringCompareToCC, true, \ + "special version of string compareToCC") \ + \ + product(bool, SpecialStringIndexOfCC, true, \ + "special version of string indexOfCC") \ + \ + product(bool, SpecialStringEqualsCC, true, \ + "special version of string equalsCC") \ + \ /* statistics */ \ develop(bool, CountCompiledCalls, false, \ "counts method invocations") \ @@ -2848,9 +2904,13 @@ class CommandLineFlags { "Max. no. of lines in the stack trace for Java exceptions " \ "(0 means all)") \ \ - develop(intx, GuaranteedSafepointInterval, 1000, \ + NOT_EMBEDDED(develop(intx, GuaranteedSafepointInterval, 1000, \ "Guarantee a safepoint (at least) every so many milliseconds " \ - "(0 means none)") \ + "(0 means none)")) \ + \ + EMBEDDED_ONLY(product(intx, GuaranteedSafepointInterval, 0, \ + "Guarantee a safepoint (at least) every so many milliseconds " \ + "(0 means none)")) \ \ product(intx, SafepointTimeoutDelay, 10000, \ "Delay in milliseconds for option SafepointTimeout") \ @@ -3540,9 +3600,13 @@ class CommandLineFlags { \ /* flags for performance data collection */ \ \ - product(bool, UsePerfData, true, \ + NOT_EMBEDDED(product(bool, UsePerfData, true, \ "Flag to disable jvmstat instrumentation for performance testing" \ - "and problem isolation purposes.") \ + "and problem isolation purposes.")) \ + \ + EMBEDDED_ONLY(product(bool, UsePerfData, false, \ + "Flag to disable jvmstat instrumentation for performance testing" \ + "and problem isolation purposes.")) \ \ product(bool, PerfDataSaveToFile, false, \ "Save PerfData memory to hsperfdata_ file on exit") \ @@ -3594,6 +3658,12 @@ class CommandLineFlags { manageable(bool, PrintConcurrentLocks, false, \ "Print java.util.concurrent locks in thread dump") \ \ + product(bool, TransmitErrorReport, false, \ + "Enable error report transmission on erroneous termination") \ + \ + product(ccstr, ErrorReportServer, NULL, \ + "Override built-in error report server address") \ + \ /* Shared spaces */ \ \ product(bool, UseSharedSpaces, true, \ diff --git a/hotspot/src/share/vm/runtime/handles.hpp b/hotspot/src/share/vm/runtime/handles.hpp index b4a03ff08fe..de069d34acc 100644 --- a/hotspot/src/share/vm/runtime/handles.hpp +++ b/hotspot/src/share/vm/runtime/handles.hpp @@ -196,7 +196,6 @@ DEF_HANDLE(constantPool , is_constantPool ) DEF_HANDLE(constantPoolCache, is_constantPoolCache) DEF_HANDLE(objArray , is_objArray ) DEF_HANDLE(typeArray , is_typeArray ) -DEF_HANDLE(symbol , is_symbol ) //------------------------------------------------------------------------------------------------------------------------ // Specific KlassHandles for different Klass types @@ -233,7 +232,6 @@ DEF_KLASS_HANDLE(typeArrayKlassKlass , oop_is_typeArrayKlass) DEF_KLASS_HANDLE(arrayKlass , oop_is_array ) DEF_KLASS_HANDLE(typeArrayKlass , oop_is_typeArray_slow) DEF_KLASS_HANDLE(objArrayKlass , oop_is_objArray_slow ) -DEF_KLASS_HANDLE(symbolKlass , oop_is_symbol ) DEF_KLASS_HANDLE(constantPoolKlass , oop_is_constantPool ) DEF_KLASS_HANDLE(constantPoolCacheKlass, oop_is_constantPool ) diff --git a/hotspot/src/share/vm/runtime/icache.hpp b/hotspot/src/share/vm/runtime/icache.hpp index d8b991fbd65..7ffce5b140d 100644 --- a/hotspot/src/share/vm/runtime/icache.hpp +++ b/hotspot/src/share/vm/runtime/icache.hpp @@ -77,6 +77,12 @@ class AbstractICache : AllStatic { #ifdef TARGET_ARCH_zero # include "icache_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "icache_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "icache_ppc.hpp" +#endif diff --git a/hotspot/src/share/vm/runtime/interfaceSupport.cpp b/hotspot/src/share/vm/runtime/interfaceSupport.cpp index 93f64a33334..33c6b3eb8c3 100644 --- a/hotspot/src/share/vm/runtime/interfaceSupport.cpp +++ b/hotspot/src/share/vm/runtime/interfaceSupport.cpp @@ -198,6 +198,11 @@ void InterfaceSupport::zombieAll() { } } +void InterfaceSupport::unlinkSymbols() { + VM_UnlinkSymbols op; + VMThread::execute(&op); +} + void InterfaceSupport::deoptimizeAll() { if (is_init_completed() ) { if (DeoptimizeALot && deoptimizeAllCounter > DeoptimizeALotInterval) { diff --git a/hotspot/src/share/vm/runtime/interfaceSupport.hpp b/hotspot/src/share/vm/runtime/interfaceSupport.hpp index 98b4e5f6880..02e8e7bc5f1 100644 --- a/hotspot/src/share/vm/runtime/interfaceSupport.hpp +++ b/hotspot/src/share/vm/runtime/interfaceSupport.hpp @@ -97,6 +97,7 @@ class InterfaceSupport: AllStatic { # endif static void zombieAll(); + static void unlinkSymbols(); static void deoptimizeAll(); static void stress_derived_pointers(); static void verify_stack(); @@ -375,6 +376,9 @@ class VMEntryWrapper { if (ZombieALot) { InterfaceSupport::zombieAll(); } + if (UnlinkSymbolsALot) { + InterfaceSupport::unlinkSymbols(); + } // do verification AFTER potential deoptimization if (VerifyStack) { InterfaceSupport::verify_stack(); diff --git a/hotspot/src/share/vm/runtime/java.cpp b/hotspot/src/share/vm/runtime/java.cpp index 42cfd6a0018..f833dd2e400 100644 --- a/hotspot/src/share/vm/runtime/java.cpp +++ b/hotspot/src/share/vm/runtime/java.cpp @@ -41,7 +41,7 @@ #include "oops/methodOop.hpp" #include "oops/objArrayOop.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "prims/jvmtiExport.hpp" #include "runtime/aprofiler.hpp" #include "runtime/arguments.hpp" @@ -70,6 +70,12 @@ #ifdef TARGET_ARCH_zero # include "vm_version_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "vm_version_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vm_version_ppc.hpp" +#endif #ifdef TARGET_OS_FAMILY_linux # include "thread_linux.inline.hpp" #endif @@ -615,7 +621,7 @@ void vm_exit_during_initialization(Handle exception) { vm_abort(false); } -void vm_exit_during_initialization(symbolHandle ex, const char* message) { +void vm_exit_during_initialization(Symbol* ex, const char* message) { ResourceMark rm; vm_notify_during_shutdown(ex->as_C_string(), message); diff --git a/hotspot/src/share/vm/runtime/java.hpp b/hotspot/src/share/vm/runtime/java.hpp index aabc63116c1..37e29bda983 100644 --- a/hotspot/src/share/vm/runtime/java.hpp +++ b/hotspot/src/share/vm/runtime/java.hpp @@ -49,7 +49,7 @@ extern void notify_vm_shutdown(); // VM exit if error occurs during initialization of VM extern void vm_exit_during_initialization(Handle exception); -extern void vm_exit_during_initialization(symbolHandle exception_name, const char* message); +extern void vm_exit_during_initialization(Symbol* exception_name, const char* message); extern void vm_exit_during_initialization(const char* error, const char* message = NULL); extern void vm_shutdown_during_initialization(const char* error, const char* message = NULL); diff --git a/hotspot/src/share/vm/runtime/javaCalls.cpp b/hotspot/src/share/vm/runtime/javaCalls.cpp index beb88649a27..79ecaa480c8 100644 --- a/hotspot/src/share/vm/runtime/javaCalls.cpp +++ b/hotspot/src/share/vm/runtime/javaCalls.cpp @@ -200,7 +200,7 @@ void JavaCalls::call_default_constructor(JavaThread* thread, methodHandle method // ============ Virtual calls ============ -void JavaCalls::call_virtual(JavaValue* result, KlassHandle spec_klass, symbolHandle name, symbolHandle signature, JavaCallArguments* args, TRAPS) { +void JavaCalls::call_virtual(JavaValue* result, KlassHandle spec_klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) { CallInfo callinfo; Handle receiver = args->receiver(); KlassHandle recvrKlass(THREAD, receiver.is_null() ? (klassOop)NULL : receiver->klass()); @@ -215,13 +215,13 @@ void JavaCalls::call_virtual(JavaValue* result, KlassHandle spec_klass, symbolHa } -void JavaCalls::call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, symbolHandle name, symbolHandle signature, TRAPS) { +void JavaCalls::call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, Symbol* name, Symbol* signature, TRAPS) { JavaCallArguments args(receiver); // One oop argument call_virtual(result, spec_klass, name, signature, &args, CHECK); } -void JavaCalls::call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, symbolHandle name, symbolHandle signature, Handle arg1, TRAPS) { +void JavaCalls::call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS) { JavaCallArguments args(receiver); // One oop argument args.push_oop(arg1); call_virtual(result, spec_klass, name, signature, &args, CHECK); @@ -229,7 +229,7 @@ void JavaCalls::call_virtual(JavaValue* result, Handle receiver, KlassHandle spe -void JavaCalls::call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, symbolHandle name, symbolHandle signature, Handle arg1, Handle arg2, TRAPS) { +void JavaCalls::call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS) { JavaCallArguments args(receiver); // One oop argument args.push_oop(arg1); args.push_oop(arg2); @@ -239,7 +239,7 @@ void JavaCalls::call_virtual(JavaValue* result, Handle receiver, KlassHandle spe // ============ Special calls ============ -void JavaCalls::call_special(JavaValue* result, KlassHandle klass, symbolHandle name, symbolHandle signature, JavaCallArguments* args, TRAPS) { +void JavaCalls::call_special(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) { CallInfo callinfo; LinkResolver::resolve_special_call(callinfo, klass, name, signature, KlassHandle(), false, CHECK); methodHandle method = callinfo.selected_method(); @@ -250,20 +250,20 @@ void JavaCalls::call_special(JavaValue* result, KlassHandle klass, symbolHandle } -void JavaCalls::call_special(JavaValue* result, Handle receiver, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS) { +void JavaCalls::call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { JavaCallArguments args(receiver); // One oop argument call_special(result, klass, name, signature, &args, CHECK); } -void JavaCalls::call_special(JavaValue* result, Handle receiver, KlassHandle klass, symbolHandle name, symbolHandle signature, Handle arg1, TRAPS) { +void JavaCalls::call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS) { JavaCallArguments args(receiver); // One oop argument args.push_oop(arg1); call_special(result, klass, name, signature, &args, CHECK); } -void JavaCalls::call_special(JavaValue* result, Handle receiver, KlassHandle klass, symbolHandle name, symbolHandle signature, Handle arg1, Handle arg2, TRAPS) { +void JavaCalls::call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS) { JavaCallArguments args(receiver); // One oop argument args.push_oop(arg1); args.push_oop(arg2); @@ -273,7 +273,7 @@ void JavaCalls::call_special(JavaValue* result, Handle receiver, KlassHandle kla // ============ Static calls ============ -void JavaCalls::call_static(JavaValue* result, KlassHandle klass, symbolHandle name, symbolHandle signature, JavaCallArguments* args, TRAPS) { +void JavaCalls::call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) { CallInfo callinfo; LinkResolver::resolve_static_call(callinfo, klass, name, signature, KlassHandle(), false, true, CHECK); methodHandle method = callinfo.selected_method(); @@ -284,19 +284,19 @@ void JavaCalls::call_static(JavaValue* result, KlassHandle klass, symbolHandle n } -void JavaCalls::call_static(JavaValue* result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS) { +void JavaCalls::call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { JavaCallArguments args; // No argument call_static(result, klass, name, signature, &args, CHECK); } -void JavaCalls::call_static(JavaValue* result, KlassHandle klass, symbolHandle name, symbolHandle signature, Handle arg1, TRAPS) { +void JavaCalls::call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS) { JavaCallArguments args(arg1); // One oop argument call_static(result, klass, name, signature, &args, CHECK); } -void JavaCalls::call_static(JavaValue* result, KlassHandle klass, symbolHandle name, symbolHandle signature, Handle arg1, Handle arg2, TRAPS) { +void JavaCalls::call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS) { JavaCallArguments args; // One oop argument args.push_oop(arg1); args.push_oop(arg2); @@ -459,7 +459,7 @@ class SignatureChekker : public SignatureIterator { public: bool _is_return; - SignatureChekker(symbolHandle signature, BasicType return_type, bool is_static, bool* is_oop, intptr_t* value, Thread* thread) : SignatureIterator(signature) { + SignatureChekker(Symbol* signature, BasicType return_type, bool is_static, bool* is_oop, intptr_t* value, Thread* thread) : SignatureIterator(signature) { _is_oop = is_oop; _is_return = false; _return_type = return_type; @@ -550,7 +550,7 @@ void JavaCallArguments::verify(methodHandle method, BasicType return_type, if (return_type == T_ARRAY) return_type = T_OBJECT; // Check that oop information is correct - symbolHandle signature (thread, method->signature()); + Symbol* signature = method->signature(); SignatureChekker sc(signature, return_type, method->is_static(),_is_oop, _value, thread); sc.iterate_parameters(); diff --git a/hotspot/src/share/vm/runtime/javaCalls.hpp b/hotspot/src/share/vm/runtime/javaCalls.hpp index 9354501c4f4..535bcc15957 100644 --- a/hotspot/src/share/vm/runtime/javaCalls.hpp +++ b/hotspot/src/share/vm/runtime/javaCalls.hpp @@ -39,6 +39,12 @@ #ifdef TARGET_ARCH_zero # include "jniTypes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "jniTypes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "jniTypes_ppc.hpp" +#endif #ifdef TARGET_OS_FAMILY_linux # include "thread_linux.inline.hpp" #endif @@ -189,29 +195,29 @@ class JavaCalls: AllStatic { // call_special // ------------ // The receiver must be first oop in argument list - static void call_special(JavaValue* result, KlassHandle klass, symbolHandle name, symbolHandle signature, JavaCallArguments* args, TRAPS); + static void call_special(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS); - static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); // No args - static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, symbolHandle name, symbolHandle signature, Handle arg1, TRAPS); - static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, symbolHandle name, symbolHandle signature, Handle arg1, Handle arg2, TRAPS); + static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); // No args + static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS); + static void call_special(JavaValue* result, Handle receiver, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS); // virtual call // ------------ // The receiver must be first oop in argument list - static void call_virtual(JavaValue* result, KlassHandle spec_klass, symbolHandle name, symbolHandle signature, JavaCallArguments* args, TRAPS); + static void call_virtual(JavaValue* result, KlassHandle spec_klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS); - static void call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, symbolHandle name, symbolHandle signature, TRAPS); // No args - static void call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, symbolHandle name, symbolHandle signature, Handle arg1, TRAPS); - static void call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, symbolHandle name, symbolHandle signature, Handle arg1, Handle arg2, TRAPS); + static void call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, Symbol* name, Symbol* signature, TRAPS); // No args + static void call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS); + static void call_virtual(JavaValue* result, Handle receiver, KlassHandle spec_klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS); // Static call // ----------- - static void call_static(JavaValue* result, KlassHandle klass, symbolHandle name, symbolHandle signature, JavaCallArguments* args, TRAPS); + static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS); - static void call_static(JavaValue* result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); - static void call_static(JavaValue* result, KlassHandle klass, symbolHandle name, symbolHandle signature, Handle arg1, TRAPS); - static void call_static(JavaValue* result, KlassHandle klass, symbolHandle name, symbolHandle signature, Handle arg1, Handle arg2, TRAPS); + static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); + static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS); + static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS); // Low-level interface static void call(JavaValue* result, methodHandle method, JavaCallArguments* args, TRAPS); diff --git a/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp b/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp index 314031b7ca0..af5d7728411 100644 --- a/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp +++ b/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp @@ -44,6 +44,12 @@ #ifdef TARGET_OS_ARCH_windows_x86 # include "orderAccess_windows_x86.inline.hpp" #endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "orderAccess_linux_arm.inline.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "orderAccess_linux_ppc.inline.hpp" +#endif // // An object for encapsulating the machine/os dependent part of a JavaThread frame state // @@ -102,6 +108,12 @@ friend class JavaCallWrapper; #ifdef TARGET_ARCH_zero # include "javaFrameAnchor_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "javaFrameAnchor_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "javaFrameAnchor_ppc.hpp" +#endif public: diff --git a/hotspot/src/share/vm/runtime/mutexLocker.cpp b/hotspot/src/share/vm/runtime/mutexLocker.cpp index 25b0c339d01..b3d082f8865 100644 --- a/hotspot/src/share/vm/runtime/mutexLocker.cpp +++ b/hotspot/src/share/vm/runtime/mutexLocker.cpp @@ -129,7 +129,7 @@ Mutex* HotCardCache_lock = NULL; Monitor* GCTaskManager_lock = NULL; Mutex* Management_lock = NULL; -Monitor* LowMemory_lock = NULL; +Monitor* Service_lock = NULL; #define MAX_NUM_MUTEX 128 static Monitor * _mutex_array[MAX_NUM_MUTEX]; @@ -203,7 +203,7 @@ void mutex_init() { def(Patching_lock , Mutex , special, true ); // used for safepointing and code patching. def(ObjAllocPost_lock , Monitor, special, false); - def(LowMemory_lock , Monitor, special, true ); // used for low memory detection + def(Service_lock , Monitor, special, true ); // used for service thread operations def(JmethodIdCreation_lock , Mutex , leaf, true ); // used for creating jmethodIDs. def(SystemDictionary_lock , Monitor, leaf, true ); // lookups done by VM thread diff --git a/hotspot/src/share/vm/runtime/mutexLocker.hpp b/hotspot/src/share/vm/runtime/mutexLocker.hpp index ad3c24ca8a5..58060b82887 100644 --- a/hotspot/src/share/vm/runtime/mutexLocker.hpp +++ b/hotspot/src/share/vm/runtime/mutexLocker.hpp @@ -131,7 +131,7 @@ extern Mutex* MMUTracker_lock; // protects the MMU extern Mutex* HotCardCache_lock; // protects the hot card cache extern Mutex* Management_lock; // a lock used to serialize JVM management -extern Monitor* LowMemory_lock; // a lock used for low memory detection +extern Monitor* Service_lock; // a lock used for service thread operation // A MutexLocker provides mutual exclusion with respect to a given mutex // for the scope which contains the locker. The lock is an OS lock, not diff --git a/hotspot/src/share/vm/runtime/objectMonitor.cpp b/hotspot/src/share/vm/runtime/objectMonitor.cpp index ebe3f543147..2aade711829 100644 --- a/hotspot/src/share/vm/runtime/objectMonitor.cpp +++ b/hotspot/src/share/vm/runtime/objectMonitor.cpp @@ -79,7 +79,7 @@ HS_DTRACE_PROBE_DECL4(hotspot, monitor__contended__exit, char* bytes = NULL; \ int len = 0; \ jlong jtid = SharedRuntime::get_java_tid(thread); \ - symbolOop klassname = ((oop)(klassOop))->klass()->klass_part()->name(); \ + Symbol* klassname = ((oop)(klassOop))->klass()->klass_part()->name(); \ if (klassname != NULL) { \ bytes = (char*)klassname->bytes(); \ len = klassname->utf8_length(); \ diff --git a/hotspot/src/share/vm/runtime/os.cpp b/hotspot/src/share/vm/runtime/os.cpp index bddcb20d045..5b106f4fee9 100644 --- a/hotspot/src/share/vm/runtime/os.cpp +++ b/hotspot/src/share/vm/runtime/os.cpp @@ -255,7 +255,7 @@ static void signal_thread_entry(JavaThread* thread, TRAPS) { default: { // Dispatch the signal to java HandleMark hm(THREAD); - klassOop k = SystemDictionary::resolve_or_null(vmSymbolHandles::sun_misc_Signal(), THREAD); + klassOop k = SystemDictionary::resolve_or_null(vmSymbols::sun_misc_Signal(), THREAD); KlassHandle klass (THREAD, k); if (klass.not_null()) { JavaValue result(T_VOID); @@ -264,8 +264,8 @@ static void signal_thread_entry(JavaThread* thread, TRAPS) { JavaCalls::call_static( &result, klass, - vmSymbolHandles::dispatch_name(), - vmSymbolHandles::int_void_signature(), + vmSymbols::dispatch_name(), + vmSymbols::int_void_signature(), &args, THREAD ); @@ -298,7 +298,7 @@ void os::signal_init() { if (!ReduceSignalUsage) { // Setup JavaThread for processing signals EXCEPTION_MARK; - klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_Thread(), true, CHECK); + klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK); instanceKlassHandle klass (THREAD, k); instanceHandle thread_oop = klass->allocate_instance_handle(CHECK); @@ -310,8 +310,8 @@ void os::signal_init() { JavaValue result(T_VOID); JavaCalls::call_special(&result, thread_oop, klass, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::threadgroup_string_void_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::threadgroup_string_void_signature(), thread_group, string, CHECK); @@ -320,8 +320,8 @@ void os::signal_init() { JavaCalls::call_special(&result, thread_group, group, - vmSymbolHandles::add_method_name(), - vmSymbolHandles::thread_void_signature(), + vmSymbols::add_method_name(), + vmSymbols::thread_void_signature(), thread_oop, // ARG 1 CHECK); diff --git a/hotspot/src/share/vm/runtime/os.hpp b/hotspot/src/share/vm/runtime/os.hpp index b1476b6395c..90ca497df55 100644 --- a/hotspot/src/share/vm/runtime/os.hpp +++ b/hotspot/src/share/vm/runtime/os.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, 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 @@ -614,6 +614,9 @@ class os: AllStatic { // Structured OS Exception support static void os_exception_wrapper(java_call_t f, JavaValue* value, methodHandle* method, JavaCallArguments* args, Thread* thread); + // On Windows this will create an actual minidump, on Linux/Solaris it will simply check core dump limits + static void check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize); + // JVMTI & JVM monitoring and management support // The thread_cpu_time() and current_thread_cpu_time() are only // supported if is_thread_cpu_time_supported() returns true. @@ -675,6 +678,12 @@ class os: AllStatic { #endif #ifdef TARGET_OS_ARCH_windows_x86 # include "os_windows_x86.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "os_linux_arm.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "os_linux_ppc.hpp" #endif diff --git a/hotspot/src/share/vm/runtime/reflection.cpp b/hotspot/src/share/vm/runtime/reflection.cpp index 564f175312f..412910e8baa 100644 --- a/hotspot/src/share/vm/runtime/reflection.cpp +++ b/hotspot/src/share/vm/runtime/reflection.cpp @@ -64,7 +64,7 @@ static void trace_class_resolution(klassOop to_class) { // this frame is a likely suspect caller = vfst.method()->method_holder(); line_number = vfst.method()->line_number_from_bci(vfst.bci()); - symbolOop s = instanceKlass::cast(vfst.method()->method_holder())->source_file_name(); + Symbol* s = instanceKlass::cast(vfst.method()->method_holder())->source_file_name(); if (s != NULL) { source_file = s->as_C_string(); } @@ -622,7 +622,7 @@ void Reflection::check_for_inner_class(instanceKlassHandle outer, instanceKlassH ResourceMark rm(THREAD); Exceptions::fthrow( THREAD_AND_LOCATION, - vmSymbolHandles::java_lang_IncompatibleClassChangeError(), + vmSymbols::java_lang_IncompatibleClassChangeError(), "%s and %s disagree on InnerClasses attribute", outer->external_name(), inner->external_name() @@ -638,11 +638,11 @@ oop get_mirror_from_signature(methodHandle method, SignatureStream* ss, TRAPS) { return java_lang_Class::primitive_mirror(ss->type()); case T_OBJECT: case T_ARRAY: - symbolOop name = ss->as_symbol(CHECK_NULL); + Symbol* name = ss->as_symbol(CHECK_NULL); oop loader = instanceKlass::cast(method->method_holder())->class_loader(); oop protection_domain = instanceKlass::cast(method->method_holder())->protection_domain(); klassOop k = SystemDictionary::resolve_or_fail( - symbolHandle(THREAD, name), + name, Handle(THREAD, loader), Handle(THREAD, protection_domain), true, CHECK_NULL); @@ -660,7 +660,8 @@ objArrayHandle Reflection::get_parameter_types(methodHandle method, int paramete objArrayHandle mirrors (THREAD, m); int index = 0; // Collect parameter types - symbolHandle signature (THREAD, method->signature()); + ResourceMark rm(THREAD); + Symbol* signature = method->signature(); SignatureStream ss(signature); while (!ss.at_return_type()) { oop mirror = get_mirror_from_signature(method, &ss, CHECK_(objArrayHandle())); @@ -681,9 +682,9 @@ objArrayHandle Reflection::get_exception_types(methodHandle method, TRAPS) { } -Handle Reflection::new_type(symbolHandle signature, KlassHandle k, TRAPS) { +Handle Reflection::new_type(Symbol* signature, KlassHandle k, TRAPS) { // Basic types - BasicType type = vmSymbols::signature_type(signature()); + BasicType type = vmSymbols::signature_type(signature); if (type != T_OBJECT) { return Handle(THREAD, Universe::java_mirror(type)); } @@ -714,7 +715,7 @@ oop Reflection::new_method(methodHandle method, bool intern_name, bool for_const instanceKlassHandle holder (THREAD, method->method_holder()); int slot = method->method_idnum(); - symbolHandle signature (THREAD, method->signature()); + Symbol* signature = method->signature(); int parameter_count = ArgumentCount(signature).size(); oop return_type_oop = NULL; objArrayHandle parameter_types = get_parameter_types(method, parameter_count, &return_type_oop, CHECK_NULL); @@ -726,16 +727,16 @@ oop Reflection::new_method(methodHandle method, bool intern_name, bool for_const if (exception_types.is_null()) return NULL; - symbolHandle method_name(THREAD, method->name()); + Symbol* method_name = method->name(); Handle name; if (intern_name) { // intern_name is only true with UseNewReflection - oop name_oop = StringTable::intern(method_name(), CHECK_NULL); + oop name_oop = StringTable::intern(method_name, CHECK_NULL); name = Handle(THREAD, name_oop); } else { name = java_lang_String::create_from_symbol(method_name, CHECK_NULL); } - if (name.is_null()) return NULL; + if (name == NULL) return NULL; int modifiers = method->access_flags().as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS; @@ -751,7 +752,7 @@ oop Reflection::new_method(methodHandle method, bool intern_name, bool for_const java_lang_reflect_Method::set_override(mh(), false); if (java_lang_reflect_Method::has_signature_field() && method->generic_signature() != NULL) { - symbolHandle gs(THREAD, method->generic_signature()); + Symbol* gs = method->generic_signature(); Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL); java_lang_reflect_Method::set_signature(mh(), sig()); } @@ -774,7 +775,7 @@ oop Reflection::new_constructor(methodHandle method, TRAPS) { instanceKlassHandle holder (THREAD, method->method_holder()); int slot = method->method_idnum(); - symbolHandle signature (THREAD, method->signature()); + Symbol* signature = method->signature(); int parameter_count = ArgumentCount(signature).size(); objArrayHandle parameter_types = get_parameter_types(method, parameter_count, NULL, CHECK_NULL); if (parameter_types.is_null()) return NULL; @@ -794,7 +795,7 @@ oop Reflection::new_constructor(methodHandle method, TRAPS) { java_lang_reflect_Constructor::set_override(ch(), false); if (java_lang_reflect_Constructor::has_signature_field() && method->generic_signature() != NULL) { - symbolHandle gs(THREAD, method->generic_signature()); + Symbol* gs = method->generic_signature(); Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL); java_lang_reflect_Constructor::set_signature(ch(), sig()); } @@ -809,16 +810,16 @@ oop Reflection::new_constructor(methodHandle method, TRAPS) { oop Reflection::new_field(fieldDescriptor* fd, bool intern_name, TRAPS) { - symbolHandle field_name(THREAD, fd->name()); + Symbol* field_name = fd->name(); Handle name; if (intern_name) { // intern_name is only true with UseNewReflection - oop name_oop = StringTable::intern(field_name(), CHECK_NULL); + oop name_oop = StringTable::intern(field_name, CHECK_NULL); name = Handle(THREAD, name_oop); } else { name = java_lang_String::create_from_symbol(field_name, CHECK_NULL); } - symbolHandle signature (THREAD, fd->signature()); + Symbol* signature = fd->signature(); KlassHandle holder (THREAD, fd->field_holder()); Handle type = new_type(signature, holder, CHECK_NULL); Handle rh = java_lang_reflect_Field::create(CHECK_NULL); @@ -832,7 +833,7 @@ oop Reflection::new_field(fieldDescriptor* fd, bool intern_name, TRAPS) { java_lang_reflect_Field::set_override(rh(), false); if (java_lang_reflect_Field::has_signature_field() && fd->generic_signature() != NULL) { - symbolHandle gs(THREAD, fd->generic_signature()); + Symbol* gs = fd->generic_signature(); Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL); java_lang_reflect_Field::set_signature(rh(), sig()); } @@ -858,8 +859,8 @@ methodHandle Reflection::resolve_interface_call(instanceKlassHandle klass, metho assert(!method.is_null() , "method should not be null"); CallInfo info; - symbolHandle signature (THREAD, method->signature()); - symbolHandle name (THREAD, method->name()); + Symbol* signature = method->signature(); + Symbol* name = method->name(); LinkResolver::resolve_interface_call(info, receiver, recv_klass, klass, name, signature, KlassHandle(), false, true, @@ -912,8 +913,8 @@ oop Reflection::invoke(instanceKlassHandle klass, methodHandle reflected_method, oop resolution_exception = PENDING_EXCEPTION; CLEAR_PENDING_EXCEPTION; JavaCallArguments args(Handle(THREAD, resolution_exception)); - THROW_ARG_0(vmSymbolHandles::java_lang_reflect_InvocationTargetException(), - vmSymbolHandles::throwable_void_signature(), + THROW_ARG_0(vmSymbols::java_lang_reflect_InvocationTargetException(), + vmSymbols::throwable_void_signature(), &args); } } else { @@ -941,8 +942,8 @@ oop Reflection::invoke(instanceKlassHandle klass, methodHandle reflected_method, method->name(), method->signature())); JavaCallArguments args(h_origexception); - THROW_ARG_0(vmSymbolHandles::java_lang_reflect_InvocationTargetException(), - vmSymbolHandles::throwable_void_signature(), + THROW_ARG_0(vmSymbols::java_lang_reflect_InvocationTargetException(), + vmSymbols::throwable_void_signature(), &args); } else { ResourceMark rm(THREAD); @@ -1043,8 +1044,8 @@ oop Reflection::invoke(instanceKlassHandle klass, methodHandle reflected_method, oop target_exception = PENDING_EXCEPTION; CLEAR_PENDING_EXCEPTION; JavaCallArguments args(Handle(THREAD, target_exception)); - THROW_ARG_0(vmSymbolHandles::java_lang_reflect_InvocationTargetException(), - vmSymbolHandles::throwable_void_signature(), + THROW_ARG_0(vmSymbols::java_lang_reflect_InvocationTargetException(), + vmSymbols::throwable_void_signature(), &args); } else { if (rtype == T_BOOLEAN || rtype == T_BYTE || rtype == T_CHAR || rtype == T_SHORT) @@ -1097,9 +1098,9 @@ bool Reflection::match_parameter_types(methodHandle method, objArrayHandle types oop Reflection::new_field(FieldStream* st, TRAPS) { - symbolHandle field_name(THREAD, st->name()); + Symbol* field_name = st->name(); Handle name = java_lang_String::create_from_symbol(field_name, CHECK_NULL); - symbolHandle signature(THREAD, st->signature()); + Symbol* signature = st->signature(); Handle type = new_type(signature, st->klass(), CHECK_NULL); Handle rh = java_lang_reflect_Field::create(CHECK_NULL); oop result = rh(); @@ -1242,7 +1243,7 @@ void Reflection::field_set(jvalue* value, fieldDescriptor* fd, Handle receiver, case T_ARRAY: { Handle obj(THREAD, (oop) value->l); if (obj.not_null()) { - symbolHandle signature(THREAD, fd->signature()); + Symbol* signature = fd->signature(); Handle loader (THREAD, fd->loader()); Handle protect (THREAD, Klass::cast(fd->field_holder())->protection_domain()); klassOop k = SystemDictionary::resolve_or_fail(signature, loader, protect, true, CHECK); // may block @@ -1259,7 +1260,7 @@ void Reflection::field_set(jvalue* value, fieldDescriptor* fd, Handle receiver, } -oop Reflection::reflect_field(oop mirror, symbolOop field_name, jint which, TRAPS) { +oop Reflection::reflect_field(oop mirror, Symbol* field_name, jint which, TRAPS) { // Exclude primitive types and array types if (java_lang_Class::is_primitive(mirror)) return NULL; if (Klass::cast(java_lang_Class::as_klassOop(mirror))->oop_is_array()) return NULL; @@ -1287,7 +1288,7 @@ objArrayOop Reflection::reflect_fields(oop mirror, jint which, TRAPS) { // Exclude primitive types and array types if (java_lang_Class::is_primitive(mirror) || Klass::cast(java_lang_Class::as_klassOop(mirror))->oop_is_array()) { - symbolHandle name = vmSymbolHandles::java_lang_reflect_Field(); + Symbol* name = vmSymbols::java_lang_reflect_Field(); klassOop klass = SystemDictionary::resolve_or_fail(name, true, CHECK_NULL); return oopFactory::new_objArray(klass, 0, CHECK_NULL); // Return empty array } @@ -1308,7 +1309,7 @@ objArrayOop Reflection::reflect_fields(oop mirror, jint which, TRAPS) { } // Allocate result - symbolHandle name = vmSymbolHandles::java_lang_reflect_Field(); + Symbol* name = vmSymbols::java_lang_reflect_Field(); klassOop klass = SystemDictionary::resolve_or_fail(name, true, CHECK_NULL); objArrayOop r = oopFactory::new_objArray(klass, count, CHECK_NULL); objArrayHandle result (THREAD, r); @@ -1327,7 +1328,7 @@ objArrayOop Reflection::reflect_fields(oop mirror, jint which, TRAPS) { } -oop Reflection::reflect_method(oop mirror, symbolHandle method_name, objArrayHandle types, jint which, TRAPS) { +oop Reflection::reflect_method(oop mirror, Symbol* method_name, objArrayHandle types, jint which, TRAPS) { if (java_lang_Class::is_primitive(mirror)) return NULL; klassOop klass = java_lang_Class::as_klassOop(mirror); if (Klass::cast(klass)->oop_is_array() && which == MEMBER_DECLARED) return NULL; @@ -1351,8 +1352,8 @@ oop Reflection::reflect_method(oop mirror, symbolHandle method_name, objArrayHan for (MethodStream st(h_k, false, false); !st.eos(); st.next()) { methodHandle m(THREAD, st.method()); // For interfaces include static initializers since classic does that! - if (method_name() == m->name() && (include_clinit || (m->is_public() && !m->is_static() && !m->is_initializer()))) { - symbolHandle signature(THREAD, m->signature()); + if (method_name == m->name() && (include_clinit || (m->is_public() && !m->is_static() && !m->is_initializer()))) { + Symbol* signature = m->signature(); bool parameter_match = match_parameter_types(m, types, ArgumentCount(signature).size(), CHECK_NULL); if (parameter_match) { return new_method(m, false, false, THREAD); @@ -1364,8 +1365,8 @@ oop Reflection::reflect_method(oop mirror, symbolHandle method_name, objArrayHan { for (MethodStream st(h_k, false, false); !st.eos(); st.next()) { methodHandle m(THREAD, st.method()); - if (method_name() == m->name() && m->is_public() && m->is_static() && !m->is_initializer()) { - symbolHandle signature(THREAD, m->signature()); + if (method_name == m->name() && m->is_public() && m->is_static() && !m->is_initializer()) { + Symbol* signature = m->signature(); bool parameter_match = match_parameter_types(m, types, ArgumentCount(signature).size(), CHECK_NULL); if (parameter_match) { return new_method(m, false, false, THREAD); @@ -1379,8 +1380,8 @@ oop Reflection::reflect_method(oop mirror, symbolHandle method_name, objArrayHan { for (MethodStream st(h_k, true, true); !st.eos(); st.next()) { methodHandle m(THREAD, st.method()); - if (method_name() == m->name() && !m->is_initializer()) { - symbolHandle signature(THREAD, m->signature()); + if (method_name == m->name() && !m->is_initializer()) { + Symbol* signature = m->signature(); bool parameter_match = match_parameter_types(m, types, ArgumentCount(signature).size(), CHECK_NULL); if (parameter_match) { return new_method(m, false, false, THREAD); @@ -1531,7 +1532,7 @@ oop Reflection::reflect_constructor(oop mirror, objArrayHandle types, jint which for (MethodStream st(h_k, true, true); !st.eos(); st.next()) { methodHandle m(THREAD, st.method()); if (m->name() == vmSymbols::object_initializer_name() && (local_only || m->is_public())) { - symbolHandle signature(THREAD, m->signature()); + Symbol* signature = m->signature(); bool parameter_match = match_parameter_types(m, types, ArgumentCount(signature).size(), CHECK_NULL); if (parameter_match) { return new_constructor(m, THREAD); @@ -1569,7 +1570,7 @@ objArrayOop Reflection::reflect_constructors(oop mirror, jint which, TRAPS) { } // Allocate result - symbolHandle name = vmSymbolHandles::java_lang_reflect_Constructor(); + Symbol* name = vmSymbols::java_lang_reflect_Constructor(); klassOop klass = SystemDictionary::resolve_or_fail(name, true, CHECK_NULL); objArrayOop r = oopFactory::new_objArray(klass, count, CHECK_NULL); objArrayHandle h_result (THREAD, r); diff --git a/hotspot/src/share/vm/runtime/reflection.hpp b/hotspot/src/share/vm/runtime/reflection.hpp index e085c2aef52..1f669349543 100644 --- a/hotspot/src/share/vm/runtime/reflection.hpp +++ b/hotspot/src/share/vm/runtime/reflection.hpp @@ -55,7 +55,7 @@ class Reflection: public AllStatic { static objArrayHandle get_parameter_types(methodHandle method, int parameter_count, oop* return_type, TRAPS); static objArrayHandle get_exception_types(methodHandle method, TRAPS); // Creating new java.lang.reflect.xxx wrappers - static Handle new_type(symbolHandle signature, KlassHandle k, TRAPS); + static Handle new_type(Symbol* signature, KlassHandle k, TRAPS); public: // Constants defined by java reflection api classes @@ -157,11 +157,11 @@ public: static void field_set(jvalue* value, fieldDescriptor* fd, Handle receiver, BasicType value_type, TRAPS); // Reflective lookup of fields. Returns java.lang.reflect.Field instances. - static oop reflect_field(oop mirror, symbolOop field_name, jint which, TRAPS); + static oop reflect_field(oop mirror, Symbol* field_name, jint which, TRAPS); static objArrayOop reflect_fields(oop mirror, jint which, TRAPS); // Reflective lookup of methods. Returns java.lang.reflect.Method instances. - static oop reflect_method(oop mirror, symbolHandle method_name, objArrayHandle types, jint which, TRAPS); + static oop reflect_method(oop mirror, Symbol* method_name, objArrayHandle types, jint which, TRAPS); static objArrayOop reflect_methods(oop mirror, jint which, TRAPS); // Reflective lookup of constructors. Returns java.lang.reflect.Constructor instances. diff --git a/hotspot/src/share/vm/runtime/reflectionUtils.hpp b/hotspot/src/share/vm/runtime/reflectionUtils.hpp index cc70fc5285a..712aa51fb3c 100644 --- a/hotspot/src/share/vm/runtime/reflectionUtils.hpp +++ b/hotspot/src/share/vm/runtime/reflectionUtils.hpp @@ -100,7 +100,7 @@ class MethodStream : public KlassStream { // Usage: // // for (FieldStream st(k, false, false); !st.eos(); st.next()) { -// symbolOop field_name = st.name(); +// Symbol* field_name = st.name(); // ... // } @@ -126,11 +126,11 @@ class FieldStream : public KlassStream { flags.set_flags(fields()->ushort_at(index() + instanceKlass::access_flags_offset)); return flags; } - symbolOop name() const { + Symbol* name() const { int name_index = fields()->ushort_at(index() + instanceKlass::name_index_offset); return constants()->symbol_at(name_index); } - symbolOop signature() const { + Symbol* signature() const { int signature_index = fields()->ushort_at(index() + instanceKlass::signature_index_offset); return constants()->symbol_at(signature_index); @@ -197,7 +197,7 @@ class FilteredFieldsMap : AllStatic { // Usage: // // for (FilteredFieldStream st(k, false, false); !st.eos(); st.next()) { -// symbolOop field_name = st.name(); +// Symbol* field_name = st.name(); // ... // } diff --git a/hotspot/src/share/vm/runtime/registerMap.hpp b/hotspot/src/share/vm/runtime/registerMap.hpp index aea349b9316..da597d40ed4 100644 --- a/hotspot/src/share/vm/runtime/registerMap.hpp +++ b/hotspot/src/share/vm/runtime/registerMap.hpp @@ -36,6 +36,12 @@ #ifdef TARGET_ARCH_zero # include "register_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "register_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "register_ppc.hpp" +#endif class JavaThread; @@ -138,6 +144,12 @@ class RegisterMap : public StackObj { #ifdef TARGET_ARCH_zero # include "registerMap_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "registerMap_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "registerMap_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/runtime/relocator.hpp b/hotspot/src/share/vm/runtime/relocator.hpp index 7fc4241c800..c34866f746c 100644 --- a/hotspot/src/share/vm/runtime/relocator.hpp +++ b/hotspot/src/share/vm/runtime/relocator.hpp @@ -36,6 +36,12 @@ #ifdef TARGET_ARCH_zero # include "bytes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif // This code has been converted from the 1.1E java virtual machine // Thanks to the JavaTopics group for using the code diff --git a/hotspot/src/share/vm/runtime/rframe.cpp b/hotspot/src/share/vm/runtime/rframe.cpp index 52318c19950..f99d4d1a237 100644 --- a/hotspot/src/share/vm/runtime/rframe.cpp +++ b/hotspot/src/share/vm/runtime/rframe.cpp @@ -25,7 +25,7 @@ #include "precompiled.hpp" #include "interpreter/interpreter.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/frame.inline.hpp" #include "runtime/rframe.hpp" #include "runtime/vframe.hpp" diff --git a/hotspot/src/share/vm/runtime/safepoint.cpp b/hotspot/src/share/vm/runtime/safepoint.cpp index e2b687d3de7..bd9a9e6eb32 100644 --- a/hotspot/src/share/vm/runtime/safepoint.cpp +++ b/hotspot/src/share/vm/runtime/safepoint.cpp @@ -34,7 +34,7 @@ #include "memory/resourceArea.hpp" #include "memory/universe.inline.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/compilationPolicy.hpp" #include "runtime/deoptimization.hpp" #include "runtime/frame.inline.hpp" @@ -61,6 +61,14 @@ # include "nativeInst_zero.hpp" # include "vmreg_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "nativeInst_arm.hpp" +# include "vmreg_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "nativeInst_ppc.hpp" +# include "vmreg_ppc.inline.hpp" +#endif #ifdef TARGET_OS_FAMILY_linux # include "thread_linux.inline.hpp" #endif diff --git a/hotspot/src/share/vm/runtime/serviceThread.cpp b/hotspot/src/share/vm/runtime/serviceThread.cpp new file mode 100644 index 00000000000..600398d1c12 --- /dev/null +++ b/hotspot/src/share/vm/runtime/serviceThread.cpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2011, 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. + * + */ + +#include "precompiled.hpp" +#include "runtime/interfaceSupport.hpp" +#include "runtime/javaCalls.hpp" +#include "runtime/serviceThread.hpp" +#include "runtime/mutexLocker.hpp" +#include "prims/jvmtiImpl.hpp" + +ServiceThread* ServiceThread::_instance = NULL; + +void ServiceThread::initialize() { + EXCEPTION_MARK; + + instanceKlassHandle klass (THREAD, SystemDictionary::Thread_klass()); + instanceHandle thread_oop = klass->allocate_instance_handle(CHECK); + + const char* name = JDK_Version::is_gte_jdk17x_version() ? + "Service Thread" : "Low Memory Detector"; + + Handle string = java_lang_String::create_from_str(name, CHECK); + + // Initialize thread_oop to put it into the system threadGroup + Handle thread_group (THREAD, Universe::system_thread_group()); + JavaValue result(T_VOID); + JavaCalls::call_special(&result, thread_oop, + klass, + vmSymbols::object_initializer_name(), + vmSymbols::threadgroup_string_void_signature(), + thread_group, + string, + CHECK); + + { + MutexLocker mu(Threads_lock); + ServiceThread* thread = new ServiceThread(&service_thread_entry); + + // At this point it may be possible that no osthread was created for the + // JavaThread due to lack of memory. We would have to throw an exception + // in that case. However, since this must work and we do not allow + // exceptions anyway, check and abort if this fails. + if (thread == NULL || thread->osthread() == NULL) { + vm_exit_during_initialization("java.lang.OutOfMemoryError", + "unable to create new native thread"); + } + + java_lang_Thread::set_thread(thread_oop(), thread); + java_lang_Thread::set_priority(thread_oop(), NearMaxPriority); + java_lang_Thread::set_daemon(thread_oop()); + thread->set_threadObj(thread_oop()); + + Threads::add(thread); + Thread::start(thread); + + _instance = thread; + } +} + +void ServiceThread::service_thread_entry(JavaThread* jt, TRAPS) { + while (true) { + bool sensors_changed = false; + bool has_jvmti_events = false; + JvmtiDeferredEvent jvmti_event; + { + // Need state transition ThreadBlockInVM so that this thread + // will be handled by safepoint correctly when this thread is + // notified at a safepoint. + + // This ThreadBlockInVM object is not also considered to be + // suspend-equivalent because ServiceThread is not visible to + // external suspension. + + ThreadBlockInVM tbivm(jt); + + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); + while (!(sensors_changed = LowMemoryDetector::has_pending_requests()) && + !(has_jvmti_events = JvmtiDeferredEventQueue::has_events())) { + // wait until one of the sensors has pending requests, or there is a + // pending JVMTI event to post + Service_lock->wait(Mutex::_no_safepoint_check_flag); + } + + if (has_jvmti_events) { + jvmti_event = JvmtiDeferredEventQueue::dequeue(); + } + } + + if (has_jvmti_events) { + jvmti_event.post(); + } + + if (sensors_changed) { + LowMemoryDetector::process_sensor_changes(jt); + } + } +} + +bool ServiceThread::is_service_thread(Thread* thread) { + return thread == _instance; +} diff --git a/langtools/test/tools/javac/TryWithResources/TwrIntersection.java b/hotspot/src/share/vm/runtime/serviceThread.hpp similarity index 54% rename from langtools/test/tools/javac/TryWithResources/TwrIntersection.java rename to hotspot/src/share/vm/runtime/serviceThread.hpp index 4e3a1303736..42373e6f702 100644 --- a/langtools/test/tools/javac/TryWithResources/TwrIntersection.java +++ b/hotspot/src/share/vm/runtime/serviceThread.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 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 @@ -19,29 +19,33 @@ * 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 6911256 6964740 6965277 - * @author Maurizio Cimadamore - * @summary Resource of an intersection type crashes Flow - * @compile TwrIntersection.java - */ +#ifndef SHARE_VM_RUNTIME_SERVICETHREAD_HPP +#define SHARE_VM_RUNTIME_SERVICETHREAD_HPP -interface MyCloseable extends AutoCloseable { - void close() throws java.io.IOException; -} +#include "runtime/thread.hpp" -class ResourceTypeVar { +// A JavaThread for low memory detection support and JVMTI +// compiled-method-load events. +class ServiceThread : public JavaThread { + friend class VMStructs; + private: - public void test() { - try(getX()) { - //do something - } catch (java.io.IOException e) { // Not reachable - throw new AssertionError("Shouldn't reach here", e); - } - } + static ServiceThread* _instance; - X getX() { return null; } -} + static void service_thread_entry(JavaThread* thread, TRAPS); + ServiceThread(ThreadFunction entry_point) : JavaThread(entry_point) {}; + + public: + static void initialize(); + + // Hide this thread from external view. + bool is_hidden_from_external_view() const { return true; } + + // Returns true if the passed thread is the service thread. + static bool is_service_thread(Thread* thread); +}; + +#endif // SHARE_VM_RUNTIME_SERVICETHREAD_HPP diff --git a/hotspot/src/share/vm/runtime/sharedRuntime.cpp b/hotspot/src/share/vm/runtime/sharedRuntime.cpp index b22d99d146f..1fa811e0bd5 100644 --- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp +++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp @@ -68,6 +68,14 @@ # include "nativeInst_zero.hpp" # include "vmreg_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "nativeInst_arm.hpp" +# include "vmreg_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "nativeInst_ppc.hpp" +# include "vmreg_ppc.inline.hpp" +#endif #ifdef COMPILER1 #include "c1/c1_Runtime1.hpp" #endif @@ -527,7 +535,7 @@ address SharedRuntime::get_poll_stub(address pc) { } -oop SharedRuntime::retrieve_receiver( symbolHandle sig, frame caller ) { +oop SharedRuntime::retrieve_receiver( Symbol* sig, frame caller ) { assert(caller.is_interpreted_frame(), ""); int args_size = ArgumentSizeComputer(sig).size() + 1; assert(args_size <= caller.interpreter_frame_expression_stack_size(), "receiver must be on interpreter stack"); @@ -547,7 +555,7 @@ void SharedRuntime::throw_and_post_jvmti_exception(JavaThread *thread, Handle h_ Exceptions::_throw(thread, __FILE__, __LINE__, h_exception); } -void SharedRuntime::throw_and_post_jvmti_exception(JavaThread *thread, symbolOop name, const char *message) { +void SharedRuntime::throw_and_post_jvmti_exception(JavaThread *thread, Symbol* name, const char *message) { Handle h_exception = Exceptions::new_exception(thread, name, message); throw_and_post_jvmti_exception(thread, h_exception); } @@ -880,7 +888,7 @@ int SharedRuntime::dtrace_object_alloc_base(Thread* thread, oopDesc* o) { assert(DTraceAllocProbes, "wrong call"); Klass* klass = o->blueprint(); int size = o->size(); - symbolOop name = klass->name(); + Symbol* name = klass->name(); HS_DTRACE_PROBE4(hotspot, object__alloc, get_java_tid(thread), name->bytes(), name->utf8_length(), size * HeapWordSize); return 0; @@ -889,9 +897,9 @@ int SharedRuntime::dtrace_object_alloc_base(Thread* thread, oopDesc* o) { JRT_LEAF(int, SharedRuntime::dtrace_method_entry( JavaThread* thread, methodOopDesc* method)) assert(DTraceMethodProbes, "wrong call"); - symbolOop kname = method->klass_name(); - symbolOop name = method->name(); - symbolOop sig = method->signature(); + Symbol* kname = method->klass_name(); + Symbol* name = method->name(); + Symbol* sig = method->signature(); HS_DTRACE_PROBE7(hotspot, method__entry, get_java_tid(thread), kname->bytes(), kname->utf8_length(), name->bytes(), name->utf8_length(), @@ -902,9 +910,9 @@ JRT_END JRT_LEAF(int, SharedRuntime::dtrace_method_exit( JavaThread* thread, methodOopDesc* method)) assert(DTraceMethodProbes, "wrong call"); - symbolOop kname = method->klass_name(); - symbolOop name = method->name(); - symbolOop sig = method->signature(); + Symbol* kname = method->klass_name(); + Symbol* name = method->name(); + Symbol* sig = method->signature(); HS_DTRACE_PROBE7(hotspot, method__return, get_java_tid(thread), kname->bytes(), kname->utf8_length(), name->bytes(), name->utf8_length(), @@ -2618,6 +2626,7 @@ void SharedRuntime::get_utf(oopDesc* src, address dst) { int jlsLen = java_lang_String::length(src); jchar* jlsPos = (jlsLen == 0) ? NULL : jlsValue->char_at_addr(jlsOffset); + assert(typeArrayKlass::cast(jlsValue->klass())->element_type() == T_CHAR, "compressed string"); (void) UNICODE::as_utf8(jlsPos, jlsLen, (char *)dst, max_dtrace_string_size); } #endif // ndef HAVE_DTRACE_H @@ -2637,7 +2646,7 @@ VMReg SharedRuntime::name_for_receiver() { return regs.first(); } -VMRegPair *SharedRuntime::find_callee_arguments(symbolOop sig, bool has_receiver, int* arg_size) { +VMRegPair *SharedRuntime::find_callee_arguments(Symbol* sig, bool has_receiver, int* arg_size) { // This method is returning a data structure allocating as a // ResourceObject, so do not put any ResourceMarks in here. char *s = sig->as_C_string(); diff --git a/hotspot/src/share/vm/runtime/sharedRuntime.hpp b/hotspot/src/share/vm/runtime/sharedRuntime.hpp index 667f2b9dcce..57ee0966182 100644 --- a/hotspot/src/share/vm/runtime/sharedRuntime.hpp +++ b/hotspot/src/share/vm/runtime/sharedRuntime.hpp @@ -223,7 +223,7 @@ class SharedRuntime: AllStatic { // Helper routine for full-speed JVMTI exception throwing support static void throw_and_post_jvmti_exception(JavaThread *thread, Handle h_exception); - static void throw_and_post_jvmti_exception(JavaThread *thread, symbolOop name, const char *message = NULL); + static void throw_and_post_jvmti_exception(JavaThread *thread, Symbol* name, const char *message = NULL); // RedefineClasses() tracing support for obsolete method entry static int rc_trace_method_entry(JavaThread* thread, methodOopDesc* m); @@ -237,7 +237,7 @@ class SharedRuntime: AllStatic { // Used to back off a spin lock that is under heavy contention static void yield_all(JavaThread* thread, int attempts = 0); - static oop retrieve_receiver( symbolHandle sig, frame caller ); + static oop retrieve_receiver( Symbol* sig, frame caller ); static void register_finalizer(JavaThread* thread, oopDesc* obj); @@ -417,7 +417,7 @@ class SharedRuntime: AllStatic { // Convert a sig into a calling convention register layout // and find interesting things about it. - static VMRegPair* find_callee_arguments(symbolOop sig, bool has_receiver, int *arg_size); + static VMRegPair* find_callee_arguments(Symbol* sig, bool has_receiver, int *arg_size); static VMReg name_for_receiver(); // "Top of Stack" slots that may be unused by the calling convention but must diff --git a/hotspot/src/share/vm/runtime/signature.cpp b/hotspot/src/share/vm/runtime/signature.cpp index 8a7b0c965f3..d13d3e10e10 100644 --- a/hotspot/src/share/vm/runtime/signature.cpp +++ b/hotspot/src/share/vm/runtime/signature.cpp @@ -28,7 +28,7 @@ #include "memory/oopFactory.hpp" #include "oops/instanceKlass.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "oops/typeArrayKlass.hpp" #include "runtime/signature.hpp" @@ -44,25 +44,11 @@ // ClassName = string. -SignatureIterator::SignatureIterator(symbolHandle signature) { - assert(signature->is_symbol(), "not a symbol"); +SignatureIterator::SignatureIterator(Symbol* signature) { _signature = signature; _parameter_index = 0; } -// Overloaded version called without handle -SignatureIterator::SignatureIterator(symbolOop signature) { - symbolHandle sh(Thread::current(), signature); - _signature = sh; - _parameter_index = 0; -} - -SignatureIterator::SignatureIterator(Thread *thread, symbolOop signature) { - symbolHandle sh(thread, signature); - _signature = sh; - _parameter_index = 0; -} - void SignatureIterator::expect(char c) { if (_signature->byte_at(_index) != c) fatal(err_msg("expecting %c", c)); _index++; @@ -70,7 +56,7 @@ void SignatureIterator::expect(char c) { void SignatureIterator::skip_optional_size() { - symbolOop sig = _signature(); + Symbol* sig = _signature; char c = sig->byte_at(_index); while ('0' <= c && c <= '9') c = sig->byte_at(++_index); } @@ -104,7 +90,7 @@ int SignatureIterator::parse_type() { _index++; size = T_VOID_size; ; break; case 'L': { int begin = ++_index; - symbolOop sig = _signature(); + Symbol* sig = _signature; while (sig->byte_at(_index++) != ';') ; do_object(begin, _index); } @@ -114,7 +100,7 @@ int SignatureIterator::parse_type() { case '[': { int begin = ++_index; skip_optional_size(); - symbolOop sig = _signature(); + Symbol* sig = _signature; while (sig->byte_at(_index) == '[') { _index++; skip_optional_size(); @@ -237,7 +223,7 @@ void SignatureIterator::iterate_returntype() { // Ignore parameters _index = 0; expect('('); - symbolOop sig = _signature(); + Symbol* sig = _signature; while (sig->byte_at(_index) != ')') _index++; expect(')'); // Parse return type @@ -264,9 +250,22 @@ void SignatureIterator::iterate() { // Implementation of SignatureStream +SignatureStream::SignatureStream(Symbol* signature, bool is_method) : + _signature(signature), _at_return_type(false) { + _begin = _end = (is_method ? 1 : 0); // skip first '(' in method signatures + _names = new GrowableArray(10); + next(); +} + +SignatureStream::~SignatureStream() { + // decrement refcount for names created during signature parsing + for (int i = 0; i < _names->length(); i++) { + _names->at(i)->decrement_refcount(); + } +} bool SignatureStream::is_done() const { - return _end > _signature()->utf8_length(); + return _end > _signature->utf8_length(); } @@ -274,13 +273,13 @@ void SignatureStream::next_non_primitive(int t) { switch (t) { case 'L': { _type = T_OBJECT; - symbolOop sig = _signature(); + Symbol* sig = _signature; while (sig->byte_at(_end++) != ';'); break; } case '[': { _type = T_ARRAY; - symbolOop sig = _signature(); + Symbol* sig = _signature; char c = sig->byte_at(_end); while ('0' <= c && c <= '9') c = sig->byte_at(_end++); while (sig->byte_at(_end) == '[') { @@ -319,25 +318,28 @@ bool SignatureStream::is_array() const { return _type == T_ARRAY; } -symbolOop SignatureStream::as_symbol(TRAPS) { +Symbol* SignatureStream::as_symbol(TRAPS) { // Create a symbol from for string _begin _end int begin = _begin; int end = _end; - if ( _signature()->byte_at(_begin) == 'L' - && _signature()->byte_at(_end-1) == ';') { + if ( _signature->byte_at(_begin) == 'L' + && _signature->byte_at(_end-1) == ';') { begin++; end--; } - symbolOop result = oopFactory::new_symbol(_signature, begin, end, CHECK_NULL); - return result; + // Save names for cleaning up reference count at the end of + // SignatureStream scope. + Symbol* name = SymbolTable::new_symbol(_signature, begin, end, CHECK_NULL); + _names->push(name); // save new symbol for decrementing later + return name; } klassOop SignatureStream::as_klass(Handle class_loader, Handle protection_domain, FailureMode failure_mode, TRAPS) { if (!is_object()) return NULL; - symbolOop name = as_symbol(CHECK_NULL); + Symbol* name = as_symbol(CHECK_NULL); if (failure_mode == ReturnNull) { return SystemDictionary::resolve_or_null(name, class_loader, protection_domain, THREAD); } else { @@ -355,28 +357,28 @@ oop SignatureStream::as_java_mirror(Handle class_loader, Handle protection_domai return Klass::cast(klass)->java_mirror(); } -symbolOop SignatureStream::as_symbol_or_null() { +Symbol* SignatureStream::as_symbol_or_null() { // Create a symbol from for string _begin _end ResourceMark rm; int begin = _begin; int end = _end; - if ( _signature()->byte_at(_begin) == 'L' - && _signature()->byte_at(_end-1) == ';') { + if ( _signature->byte_at(_begin) == 'L' + && _signature->byte_at(_end-1) == ';') { begin++; end--; } char* buffer = NEW_RESOURCE_ARRAY(char, end - begin); for (int index = begin; index < end; index++) { - buffer[index - begin] = _signature()->byte_at(index); + buffer[index - begin] = _signature->byte_at(index); } - symbolOop result = SymbolTable::probe(buffer, end - begin); + Symbol* result = SymbolTable::probe(buffer, end - begin); return result; } -bool SignatureVerifier::is_valid_signature(symbolHandle sig) { +bool SignatureVerifier::is_valid_signature(Symbol* sig) { const char* signature = (const char*)sig->bytes(); ssize_t len = sig->utf8_length(); if (signature == NULL || signature[0] == '\0' || len < 1) { @@ -388,7 +390,7 @@ bool SignatureVerifier::is_valid_signature(symbolHandle sig) { } } -bool SignatureVerifier::is_valid_method_signature(symbolHandle sig) { +bool SignatureVerifier::is_valid_method_signature(Symbol* sig) { const char* method_sig = (const char*)sig->bytes(); ssize_t len = sig->utf8_length(); ssize_t index = 0; @@ -411,7 +413,7 @@ bool SignatureVerifier::is_valid_method_signature(symbolHandle sig) { return false; } -bool SignatureVerifier::is_valid_type_signature(symbolHandle sig) { +bool SignatureVerifier::is_valid_type_signature(Symbol* sig) { const char* type_sig = (const char*)sig->bytes(); ssize_t len = sig->utf8_length(); return (type_sig != NULL && len >= 1 && diff --git a/hotspot/src/share/vm/runtime/signature.hpp b/hotspot/src/share/vm/runtime/signature.hpp index d51eadaff67..11ab3e2d1e4 100644 --- a/hotspot/src/share/vm/runtime/signature.hpp +++ b/hotspot/src/share/vm/runtime/signature.hpp @@ -47,7 +47,7 @@ class SignatureIterator: public ResourceObj { protected: - symbolHandle _signature; // the signature to iterate over + Symbol* _signature; // the signature to iterate over int _index; // the current character index (only valid during iteration) int _parameter_index; // the current parameter index (0 outside iteration phase) BasicType _return_type; @@ -87,9 +87,7 @@ class SignatureIterator: public ResourceObj { }; // Constructors - SignatureIterator(symbolOop signature); - SignatureIterator(Thread *thread, symbolOop signature); - SignatureIterator(symbolHandle signature); + SignatureIterator(Symbol* signature); // Iteration void dispatch_field(); // dispatches once for field signatures @@ -138,7 +136,7 @@ class SignatureTypeNames : public SignatureIterator { void do_array (int begin, int end) { type_name("jobject" ); } public: - SignatureTypeNames(symbolHandle signature) : SignatureIterator(signature) {} + SignatureTypeNames(Symbol* signature) : SignatureIterator(signature) {} }; @@ -166,7 +164,7 @@ class SignatureInfo: public SignatureIterator { void do_array (int begin, int end) { set(T_ARRAY_size , T_ARRAY ); } public: - SignatureInfo(symbolHandle signature) : SignatureIterator(signature) { + SignatureInfo(Symbol* signature) : SignatureIterator(signature) { _has_iterated = _has_iterated_return = false; _size = 0; _return_type = T_ILLEGAL; @@ -181,7 +179,7 @@ class ArgumentSizeComputer: public SignatureInfo { private: void set(int size, BasicType type) { _size += size; } public: - ArgumentSizeComputer(symbolHandle signature) : SignatureInfo(signature) {} + ArgumentSizeComputer(Symbol* signature) : SignatureInfo(signature) {} int size() { lazy_iterate_parameters(); return _size; } }; @@ -191,7 +189,7 @@ class ArgumentCount: public SignatureInfo { private: void set(int size, BasicType type) { _size ++; } public: - ArgumentCount(symbolHandle signature) : SignatureInfo(signature) {} + ArgumentCount(Symbol* signature) : SignatureInfo(signature) {} int size() { lazy_iterate_parameters(); return _size; } }; @@ -205,7 +203,7 @@ class ResultTypeFinder: public SignatureInfo { public: BasicType type() { lazy_iterate_return(); return _return_type; } - ResultTypeFinder(symbolHandle signature) : SignatureInfo(signature) {} + ResultTypeFinder(Symbol* signature) : SignatureInfo(signature) {} }; @@ -238,11 +236,6 @@ class Fingerprinter: public SignatureIterator { _fingerprint = 0; } - Fingerprinter(Thread *thread, methodHandle method) : SignatureIterator(thread, method->signature()) { - mh = method; - _fingerprint = 0; - } - uint64_t fingerprint() { // See if we fingerprinted this method already if (mh->constMethod()->fingerprint() != CONST64(0)) { @@ -356,18 +349,19 @@ class NativeSignatureIterator: public SignatureIterator { class SignatureStream : public StackObj { private: - symbolHandle _signature; + Symbol* _signature; int _begin; int _end; BasicType _type; bool _at_return_type; + GrowableArray* _names; // symbols created while parsing signature public: bool at_return_type() const { return _at_return_type; } bool is_done() const; void next_non_primitive(int t); void next() { - symbolOop sig = _signature(); + Symbol* sig = _signature; int len = sig->utf8_length(); if (_end >= len) { _end = len + 1; @@ -392,32 +386,28 @@ class SignatureStream : public StackObj { _end++; } - SignatureStream(symbolHandle signature, - bool is_method = true) : - _signature(signature), _at_return_type(false) { - _begin = _end = (is_method ? 1 : 0); // skip first '(' in method signatures - next(); - } + SignatureStream(Symbol* signature, bool is_method = true); + ~SignatureStream(); bool is_object() const; // True if this argument is an object bool is_array() const; // True if this argument is an array BasicType type() const { return _type; } - symbolOop as_symbol(TRAPS); + Symbol* as_symbol(TRAPS); enum FailureMode { ReturnNull, CNFException, NCDFError }; klassOop as_klass(Handle class_loader, Handle protection_domain, FailureMode failure_mode, TRAPS); oop as_java_mirror(Handle class_loader, Handle protection_domain, FailureMode failure_mode, TRAPS); // return same as_symbol except allocation of new symbols is avoided. - symbolOop as_symbol_or_null(); + Symbol* as_symbol_or_null(); }; class SignatureVerifier : public StackObj { public: // Returns true if the symbol is valid method or type signature - static bool is_valid_signature(symbolHandle sig); + static bool is_valid_signature(Symbol* sig); - static bool is_valid_method_signature(symbolHandle sig); - static bool is_valid_type_signature(symbolHandle sig); + static bool is_valid_method_signature(Symbol* sig); + static bool is_valid_type_signature(Symbol* sig); private: static ssize_t is_valid_type(const char*, ssize_t); diff --git a/hotspot/src/share/vm/runtime/stackValueCollection.cpp b/hotspot/src/share/vm/runtime/stackValueCollection.cpp index 62bef8c8318..bc391e599aa 100644 --- a/hotspot/src/share/vm/runtime/stackValueCollection.cpp +++ b/hotspot/src/share/vm/runtime/stackValueCollection.cpp @@ -33,6 +33,12 @@ #ifdef TARGET_ARCH_zero # include "jniTypes_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "jniTypes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "jniTypes_ppc.hpp" +#endif jint StackValueCollection::int_at(int slot) const { intptr_t val = at(slot)->get_int(); diff --git a/hotspot/src/share/vm/runtime/statSampler.cpp b/hotspot/src/share/vm/runtime/statSampler.cpp index c0589af791b..bbb947737be 100644 --- a/hotspot/src/share/vm/runtime/statSampler.cpp +++ b/hotspot/src/share/vm/runtime/statSampler.cpp @@ -42,6 +42,12 @@ #ifdef TARGET_ARCH_zero # include "vm_version_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "vm_version_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vm_version_ppc.hpp" +#endif // -------------------------------------------------------- // StatSamplerTask @@ -196,8 +202,8 @@ const char* StatSampler::get_system_property(const char* name, TRAPS) { // public static String getProperty(String key, String def); JavaCalls::call_static(&result, KlassHandle(THREAD, SystemDictionary::System_klass()), - vmSymbolHandles::getProperty_name(), - vmSymbolHandles::string_string_signature(), + vmSymbols::getProperty_name(), + vmSymbols::string_string_signature(), key_str, CHECK_NULL); diff --git a/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp b/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp index ab9d763526f..ba395194f7f 100644 --- a/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp +++ b/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp @@ -36,6 +36,12 @@ #ifdef TARGET_ARCH_zero # include "assembler_zero.inline.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "assembler_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "assembler_ppc.inline.hpp" +#endif // Implementation of StubCodeDesc diff --git a/hotspot/src/share/vm/runtime/stubRoutines.hpp b/hotspot/src/share/vm/runtime/stubRoutines.hpp index 46aaf7c0c1b..0eb0d1136af 100644 --- a/hotspot/src/share/vm/runtime/stubRoutines.hpp +++ b/hotspot/src/share/vm/runtime/stubRoutines.hpp @@ -40,6 +40,12 @@ #ifdef TARGET_ARCH_zero # include "nativeInst_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "nativeInst_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "nativeInst_ppc.hpp" +#endif // StubRoutines provides entry points to assembly routines used by // compiled code and the run-time system. Platform-specific entry @@ -104,6 +110,12 @@ class StubRoutines: AllStatic { #endif #ifdef TARGET_ARCH_MODEL_zero # include "stubRoutines_zero.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_arm +# include "stubRoutines_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "stubRoutines_ppc.hpp" #endif diff --git a/hotspot/src/share/vm/runtime/synchronizer.cpp b/hotspot/src/share/vm/runtime/synchronizer.cpp index a11a64b715e..fd0b3da40ec 100644 --- a/hotspot/src/share/vm/runtime/synchronizer.cpp +++ b/hotspot/src/share/vm/runtime/synchronizer.cpp @@ -82,7 +82,7 @@ HS_DTRACE_PROBE_DECL4(hotspot, monitor__waited, char* bytes = NULL; \ int len = 0; \ jlong jtid = SharedRuntime::get_java_tid(thread); \ - symbolOop klassname = ((oop)(klassOop))->klass()->klass_part()->name(); \ + Symbol* klassname = ((oop)(klassOop))->klass()->klass_part()->name(); \ if (klassname != NULL) { \ bytes = (char*)klassname->bytes(); \ len = klassname->utf8_length(); \ diff --git a/hotspot/src/share/vm/runtime/thread.cpp b/hotspot/src/share/vm/runtime/thread.cpp index 0349c658495..014df57ea1c 100644 --- a/hotspot/src/share/vm/runtime/thread.cpp +++ b/hotspot/src/share/vm/runtime/thread.cpp @@ -37,7 +37,7 @@ #include "oops/instanceKlass.hpp" #include "oops/objArrayOop.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "prims/jvm_misc.hpp" #include "prims/jvmtiExport.hpp" #include "prims/jvmtiThreadState.hpp" @@ -891,7 +891,7 @@ bool Thread::set_as_starting_thread() { return os::create_main_thread((JavaThread*)this); } -static void initialize_class(symbolHandle class_name, TRAPS) { +static void initialize_class(Symbol* class_name, TRAPS) { klassOop klass = SystemDictionary::resolve_or_fail(class_name, true, CHECK); instanceKlass::cast(klass)->initialize(CHECK); } @@ -899,7 +899,7 @@ static void initialize_class(symbolHandle class_name, TRAPS) { // Creates the initial ThreadGroup static Handle create_initial_thread_group(TRAPS) { - klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_ThreadGroup(), true, CHECK_NH); + klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_ThreadGroup(), true, CHECK_NH); instanceKlassHandle klass (THREAD, k); Handle system_instance = klass->allocate_instance_handle(CHECK_NH); @@ -908,8 +908,8 @@ static Handle create_initial_thread_group(TRAPS) { JavaCalls::call_special(&result, system_instance, klass, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::void_method_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::void_method_signature(), CHECK_NH); } Universe::set_system_thread_group(system_instance()); @@ -921,8 +921,8 @@ static Handle create_initial_thread_group(TRAPS) { JavaCalls::call_special(&result, main_instance, klass, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::threadgroup_string_void_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::threadgroup_string_void_signature(), system_instance, string, CHECK_NH); @@ -932,7 +932,7 @@ static Handle create_initial_thread_group(TRAPS) { // Creates the initial Thread static oop create_initial_thread(Handle thread_group, JavaThread* thread, TRAPS) { - klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_Thread(), true, CHECK_NULL); + klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK_NULL); instanceKlassHandle klass (THREAD, k); instanceHandle thread_oop = klass->allocate_instance_handle(CHECK_NULL); @@ -945,8 +945,8 @@ static oop create_initial_thread(Handle thread_group, JavaThread* thread, TRAPS) JavaValue result(T_VOID); JavaCalls::call_special(&result, thread_oop, klass, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::threadgroup_string_void_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::threadgroup_string_void_signature(), thread_group, string, CHECK_NULL); @@ -954,30 +954,14 @@ static oop create_initial_thread(Handle thread_group, JavaThread* thread, TRAPS) } static void call_initializeSystemClass(TRAPS) { - klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_System(), true, CHECK); + klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK); instanceKlassHandle klass (THREAD, k); JavaValue result(T_VOID); - JavaCalls::call_static(&result, klass, vmSymbolHandles::initializeSystemClass_name(), - vmSymbolHandles::void_method_signature(), CHECK); + JavaCalls::call_static(&result, klass, vmSymbols::initializeSystemClass_name(), + vmSymbols::void_method_signature(), CHECK); } -#ifdef KERNEL -static void set_jkernel_boot_classloader_hook(TRAPS) { - klassOop k = SystemDictionary::sun_jkernel_DownloadManager_klass(); - instanceKlassHandle klass (THREAD, k); - - if (k == NULL) { - // sun.jkernel.DownloadManager may not present in the JDK; just return - return; - } - - JavaValue result(T_VOID); - JavaCalls::call_static(&result, klass, vmSymbolHandles::setBootClassLoaderHook_name(), - vmSymbolHandles::void_method_signature(), CHECK); -} -#endif // KERNEL - // General purpose hook into Java code, run once when the VM is initialized. // The Java library method itself may be changed independently from the VM. static void call_postVMInitHook(TRAPS) { @@ -985,8 +969,8 @@ static void call_postVMInitHook(TRAPS) { instanceKlassHandle klass (THREAD, k); if (klass.not_null()) { JavaValue result(T_VOID); - JavaCalls::call_static(&result, klass, vmSymbolHandles::run_method_name(), - vmSymbolHandles::void_method_signature(), + JavaCalls::call_static(&result, klass, vmSymbols::run_method_name(), + vmSymbols::void_method_signature(), CHECK); } } @@ -997,7 +981,7 @@ static void reset_vm_info_property(TRAPS) { const char *vm_info = VM_Version::vm_info_string(); // java.lang.System class - klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_System(), true, CHECK); + klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK); instanceKlassHandle klass (THREAD, k); // setProperty arguments @@ -1010,8 +994,8 @@ static void reset_vm_info_property(TRAPS) { // public static String setProperty(String key, String value); JavaCalls::call_static(&r, klass, - vmSymbolHandles::setProperty_name(), - vmSymbolHandles::string_string_string_signature(), + vmSymbols::setProperty_name(), + vmSymbols::string_string_string_signature(), key_str, value_str, CHECK); @@ -1022,7 +1006,7 @@ void JavaThread::allocate_threadObj(Handle thread_group, char* thread_name, bool assert(thread_group.not_null(), "thread group should be specified"); assert(threadObj() == NULL, "should only create Java thread object once"); - klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_Thread(), true, CHECK); + klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK); instanceKlassHandle klass (THREAD, k); instanceHandle thread_oop = klass->allocate_instance_handle(CHECK); @@ -1037,8 +1021,8 @@ void JavaThread::allocate_threadObj(Handle thread_group, char* thread_name, bool JavaCalls::call_special(&result, thread_oop, klass, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::threadgroup_string_void_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::threadgroup_string_void_signature(), thread_group, // Argument 1 name, // Argument 2 THREAD); @@ -1048,8 +1032,8 @@ void JavaThread::allocate_threadObj(Handle thread_group, char* thread_name, bool JavaCalls::call_special(&result, thread_oop, klass, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::threadgroup_runnable_void_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::threadgroup_runnable_void_signature(), thread_group, // Argument 1 Handle(), // Argument 2 THREAD); @@ -1070,8 +1054,8 @@ void JavaThread::allocate_threadObj(Handle thread_group, char* thread_name, bool JavaCalls::call_special(&result, thread_group, group, - vmSymbolHandles::add_method_name(), - vmSymbolHandles::thread_void_signature(), + vmSymbols::add_method_name(), + vmSymbols::thread_void_signature(), threadObj, // Arg 1 THREAD); @@ -1510,11 +1494,11 @@ void JavaThread::thread_main_inner() { assert(JavaThread::current() == this, "sanity check"); assert(this->threadObj() != NULL, "just checking"); - // Execute thread entry point. If this thread is being asked to restart, - // or has been stopped before starting, do not reexecute entry point. + // Execute thread entry point unless this thread has a pending exception + // or has been stopped before starting. // Note: Due to JVM_StopThread we can have pending exceptions already! - if (!this->has_pending_exception() && !java_lang_Thread::is_stillborn(this->threadObj())) { - // enter the thread's entry point only if we have no pending exceptions + if (!this->has_pending_exception() && + !java_lang_Thread::is_stillborn(this->threadObj())) { HandleMark hm(this); this->entry_point()(this, this); } @@ -1533,13 +1517,10 @@ static void ensure_join(JavaThread* thread) { ObjectLocker lock(threadObj, thread); // Ignore pending exception (ThreadDeath), since we are exiting anyway thread->clear_pending_exception(); - // It is of profound importance that we set the stillborn bit and reset the thread object, - // before we do the notify. Since, changing these two variable will make JVM_IsAlive return - // false. So in case another thread is doing a join on this thread , it will detect that the thread - // is dead when it gets notified. - java_lang_Thread::set_stillborn(threadObj()); // Thread is exiting. So set thread_status field in java.lang.Thread class to TERMINATED. java_lang_Thread::set_thread_status(threadObj(), java_lang_Thread::TERMINATED); + // Clear the native thread instance - this makes isAlive return false and allows the join() + // to complete once we've done the notify_all below java_lang_Thread::set_thread(threadObj(), NULL); lock.notify_all(thread); // Ignore pending exception (ThreadDeath), since we are exiting anyway @@ -1590,8 +1571,8 @@ void JavaThread::exit(bool destroy_vm, ExitType exit_type) { CallInfo callinfo; KlassHandle thread_klass(THREAD, SystemDictionary::Thread_klass()); LinkResolver::resolve_virtual_call(callinfo, threadObj, recvrKlass, thread_klass, - vmSymbolHandles::dispatchUncaughtException_name(), - vmSymbolHandles::throwable_void_signature(), + vmSymbols::dispatchUncaughtException_name(), + vmSymbols::throwable_void_signature(), KlassHandle(), false, false, THREAD); CLEAR_PENDING_EXCEPTION; methodHandle method = callinfo.selected_method(); @@ -1599,8 +1580,8 @@ void JavaThread::exit(bool destroy_vm, ExitType exit_type) { JavaValue result(T_VOID); JavaCalls::call_virtual(&result, threadObj, thread_klass, - vmSymbolHandles::dispatchUncaughtException_name(), - vmSymbolHandles::throwable_void_signature(), + vmSymbols::dispatchUncaughtException_name(), + vmSymbols::throwable_void_signature(), uncaught_exception, THREAD); } else { @@ -1608,13 +1589,21 @@ void JavaThread::exit(bool destroy_vm, ExitType exit_type) { JavaValue result(T_VOID); JavaCalls::call_virtual(&result, group, thread_group, - vmSymbolHandles::uncaughtException_name(), - vmSymbolHandles::thread_throwable_void_signature(), + vmSymbols::uncaughtException_name(), + vmSymbols::thread_throwable_void_signature(), threadObj, // Arg 1 uncaught_exception, // Arg 2 THREAD); } - CLEAR_PENDING_EXCEPTION; + if (HAS_PENDING_EXCEPTION) { + ResourceMark rm(this); + jio_fprintf(defaultStream::error_stream(), + "\nException: %s thrown from the UncaughtExceptionHandler" + " in thread \"%s\"\n", + Klass::cast(pending_exception()->klass())->external_name(), + get_thread_name()); + CLEAR_PENDING_EXCEPTION; + } } } @@ -1628,8 +1617,8 @@ void JavaThread::exit(bool destroy_vm, ExitType exit_type) { KlassHandle thread_klass(THREAD, SystemDictionary::Thread_klass()); JavaCalls::call_virtual(&result, threadObj, thread_klass, - vmSymbolHandles::exit_method_name(), - vmSymbolHandles::void_method_signature(), + vmSymbols::exit_method_name(), + vmSymbols::void_method_signature(), THREAD); CLEAR_PENDING_EXCEPTION; } @@ -1996,11 +1985,6 @@ void JavaThread::send_thread_stop(oop java_throwable) { // (the compiler thread should not be a Java thread -- fix in 1.4.2) if (is_Compiler_thread()) return; - // This is a change from JDK 1.1, but JDK 1.2 will also do it: - if (java_throwable->is_a(SystemDictionary::ThreadDeath_klass())) { - java_lang_Thread::set_stillborn(threadObj()); - } - { // Actually throw the Throwable against the target Thread - however // only if there is no thread death exception installed already. @@ -3161,7 +3145,7 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { } if (InitializeJavaLangString) { - initialize_class(vmSymbolHandles::java_lang_String(), CHECK_0); + initialize_class(vmSymbols::java_lang_String(), CHECK_0); } else { warning("java.lang.String not initialized"); } @@ -3171,10 +3155,10 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { // Forcibly initialize java/util/HashMap and mutate the private // static final "frontCacheEnabled" field before we start creating instances #ifdef ASSERT - klassOop tmp_k = SystemDictionary::find(vmSymbolHandles::java_util_HashMap(), Handle(), Handle(), CHECK_0); + klassOop tmp_k = SystemDictionary::find(vmSymbols::java_util_HashMap(), Handle(), Handle(), CHECK_0); assert(tmp_k == NULL, "java/util/HashMap should not be loaded yet"); #endif - klassOop k_o = SystemDictionary::resolve_or_null(vmSymbolHandles::java_util_HashMap(), Handle(), Handle(), CHECK_0); + klassOop k_o = SystemDictionary::resolve_or_null(vmSymbols::java_util_HashMap(), Handle(), Handle(), CHECK_0); KlassHandle k = KlassHandle(THREAD, k_o); guarantee(k.not_null(), "Must find java/util/HashMap"); instanceKlassHandle ik = instanceKlassHandle(THREAD, k()); @@ -3189,7 +3173,7 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { if (UseStringCache) { // Forcibly initialize java/lang/StringValue and mutate the private // static final "stringCacheEnabled" field before we start creating instances - klassOop k_o = SystemDictionary::resolve_or_null(vmSymbolHandles::java_lang_StringValue(), Handle(), Handle(), CHECK_0); + klassOop k_o = SystemDictionary::resolve_or_null(vmSymbols::java_lang_StringValue(), Handle(), Handle(), CHECK_0); // Possible that StringValue isn't present: if so, silently don't break if (k_o != NULL) { KlassHandle k = KlassHandle(THREAD, k_o); @@ -3206,11 +3190,11 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { // Initialize java_lang.System (needed before creating the thread) if (InitializeJavaLangSystem) { - initialize_class(vmSymbolHandles::java_lang_System(), CHECK_0); - initialize_class(vmSymbolHandles::java_lang_ThreadGroup(), CHECK_0); + initialize_class(vmSymbols::java_lang_System(), CHECK_0); + initialize_class(vmSymbols::java_lang_ThreadGroup(), CHECK_0); Handle thread_group = create_initial_thread_group(CHECK_0); Universe::set_main_thread_group(thread_group()); - initialize_class(vmSymbolHandles::java_lang_Thread(), CHECK_0); + initialize_class(vmSymbols::java_lang_Thread(), CHECK_0); oop thread_object = create_initial_thread(thread_group, main_thread, CHECK_0); main_thread->set_threadObj(thread_object); // Set thread status to running since main thread has @@ -3219,10 +3203,10 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { java_lang_Thread::RUNNABLE); // The VM preresolve methods to these classes. Make sure that get initialized - initialize_class(vmSymbolHandles::java_lang_reflect_Method(), CHECK_0); - initialize_class(vmSymbolHandles::java_lang_ref_Finalizer(), CHECK_0); + initialize_class(vmSymbols::java_lang_reflect_Method(), CHECK_0); + initialize_class(vmSymbols::java_lang_ref_Finalizer(), CHECK_0); // The VM creates & returns objects of this class. Make sure it's initialized. - initialize_class(vmSymbolHandles::java_lang_Class(), CHECK_0); + initialize_class(vmSymbols::java_lang_Class(), CHECK_0); call_initializeSystemClass(CHECK_0); } else { warning("java.lang.System not initialized"); @@ -3230,13 +3214,13 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { // an instance of OutOfMemory exception has been allocated earlier if (InitializeJavaLangExceptionsErrors) { - initialize_class(vmSymbolHandles::java_lang_OutOfMemoryError(), CHECK_0); - initialize_class(vmSymbolHandles::java_lang_NullPointerException(), CHECK_0); - initialize_class(vmSymbolHandles::java_lang_ClassCastException(), CHECK_0); - initialize_class(vmSymbolHandles::java_lang_ArrayStoreException(), CHECK_0); - initialize_class(vmSymbolHandles::java_lang_ArithmeticException(), CHECK_0); - initialize_class(vmSymbolHandles::java_lang_StackOverflowError(), CHECK_0); - initialize_class(vmSymbolHandles::java_lang_IllegalMonitorStateException(), CHECK_0); + initialize_class(vmSymbols::java_lang_OutOfMemoryError(), CHECK_0); + initialize_class(vmSymbols::java_lang_NullPointerException(), CHECK_0); + initialize_class(vmSymbols::java_lang_ClassCastException(), CHECK_0); + initialize_class(vmSymbols::java_lang_ArrayStoreException(), CHECK_0); + initialize_class(vmSymbols::java_lang_ArithmeticException(), CHECK_0); + initialize_class(vmSymbols::java_lang_StackOverflowError(), CHECK_0); + initialize_class(vmSymbols::java_lang_IllegalMonitorStateException(), CHECK_0); } else { warning("java.lang.OutOfMemoryError has not been initialized"); warning("java.lang.NullPointerException has not been initialized"); @@ -3262,7 +3246,7 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { // Future Fix : the best fix is to grant everyone permissions to read "java.compiler" and // read and write"java.vm.info" in the default policy file. See bugid 4211383 // Once that is done, we should remove this hack. - initialize_class(vmSymbolHandles::java_lang_Compiler(), CHECK_0); + initialize_class(vmSymbols::java_lang_Compiler(), CHECK_0); // More hackery - the static initializer of java.lang.Compiler adds the string "nojit" to // the java.vm.info property if no jit gets loaded through java.lang.Compiler (the hotspot @@ -3292,12 +3276,6 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { vm_exit_during_initialization(Handle(THREAD, PENDING_EXCEPTION)); } -#ifdef KERNEL - if (JDK_Version::is_gte_jdk17x_version()) { - set_jkernel_boot_classloader_hook(THREAD); - } -#endif // KERNEL - #ifndef SERIALGC // Support for ConcurrentMarkSweep. This should be cleaned up // and better encapsulated. The ugly nested if test would go away @@ -3588,7 +3566,7 @@ void JavaThread::invoke_shutdown_hooks() { EXCEPTION_MARK; klassOop k = - SystemDictionary::resolve_or_null(vmSymbolHandles::java_lang_Shutdown(), + SystemDictionary::resolve_or_null(vmSymbols::java_lang_Shutdown(), THREAD); if (k != NULL) { // SystemDictionary::resolve_or_null will return null if there was @@ -3602,8 +3580,8 @@ void JavaThread::invoke_shutdown_hooks() { JavaValue result(T_VOID); JavaCalls::call_static(&result, shutdown_klass, - vmSymbolHandles::shutdown_method_name(), - vmSymbolHandles::void_method_signature(), + vmSymbols::shutdown_method_name(), + vmSymbols::void_method_signature(), THREAD); } CLEAR_PENDING_EXCEPTION; diff --git a/hotspot/src/share/vm/runtime/thread.hpp b/hotspot/src/share/vm/runtime/thread.hpp index acdc227bdcc..73e0fda0209 100644 --- a/hotspot/src/share/vm/runtime/thread.hpp +++ b/hotspot/src/share/vm/runtime/thread.hpp @@ -1597,6 +1597,12 @@ public: #endif #ifdef TARGET_OS_ARCH_windows_x86 # include "thread_windows_x86.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "thread_linux_arm.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "thread_linux_ppc.hpp" #endif @@ -1674,16 +1680,6 @@ inline size_t JavaThread::stack_available(address cur_sp) { return cur_sp > low_addr ? cur_sp - low_addr : 0; } -// A JavaThread for low memory detection support -class LowMemoryDetectorThread : public JavaThread { - friend class VMStructs; -public: - LowMemoryDetectorThread(ThreadFunction entry_point) : JavaThread(entry_point) {}; - - // Hide this thread from external view. - bool is_hidden_from_external_view() const { return true; } -}; - // A thread used for Compilation. class CompilerThread : public JavaThread { friend class VMStructs; diff --git a/hotspot/src/share/vm/runtime/threadLocalStorage.hpp b/hotspot/src/share/vm/runtime/threadLocalStorage.hpp index 8a78e579535..2ca4260d902 100644 --- a/hotspot/src/share/vm/runtime/threadLocalStorage.hpp +++ b/hotspot/src/share/vm/runtime/threadLocalStorage.hpp @@ -61,6 +61,12 @@ class ThreadLocalStorage : AllStatic { #endif #ifdef TARGET_OS_ARCH_windows_x86 # include "threadLS_windows_x86.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "threadLS_linux_arm.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "threadLS_linux_ppc.hpp" #endif diff --git a/hotspot/src/share/vm/runtime/vframe.cpp b/hotspot/src/share/vm/runtime/vframe.cpp index b674439ae7b..9624c4983e1 100644 --- a/hotspot/src/share/vm/runtime/vframe.cpp +++ b/hotspot/src/share/vm/runtime/vframe.cpp @@ -552,7 +552,7 @@ void javaVFrame::print_value() const { tty->print("%s.%s", Klass::cast(k)->internal_name(), m->name()->as_C_string()); if (!m->is_native()) { - symbolOop source_name = instanceKlass::cast(k)->source_file_name(); + Symbol* source_name = instanceKlass::cast(k)->source_file_name(); int line_number = m->line_number_from_bci(bci()); if (source_name != NULL && (line_number != -1)) { tty->print("(%s:%d)", source_name->as_C_string(), line_number); diff --git a/hotspot/src/share/vm/runtime/vmStructs.cpp b/hotspot/src/share/vm/runtime/vmStructs.cpp index 30973292d2a..0e1c5a40b98 100644 --- a/hotspot/src/share/vm/runtime/vmStructs.cpp +++ b/hotspot/src/share/vm/runtime/vmStructs.cpp @@ -83,8 +83,7 @@ #include "oops/objArrayKlassKlass.hpp" #include "oops/objArrayOop.hpp" #include "oops/oop.inline.hpp" -#include "oops/symbolKlass.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "oops/typeArrayKlass.hpp" #include "oops/typeArrayKlassKlass.hpp" #include "oops/typeArrayOop.hpp" @@ -94,6 +93,7 @@ #include "runtime/java.hpp" #include "runtime/javaCalls.hpp" #include "runtime/perfMemory.hpp" +#include "runtime/serviceThread.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/stubRoutines.hpp" #include "runtime/virtualspace.hpp" @@ -109,6 +109,12 @@ #ifdef TARGET_ARCH_zero # include "vmStructs_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "vmStructs_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vmStructs_ppc.hpp" +#endif #ifdef TARGET_OS_FAMILY_linux # include "thread_linux.inline.hpp" #endif @@ -136,6 +142,12 @@ #ifdef TARGET_OS_ARCH_windows_x86 # include "vmStructs_windows_x86.hpp" #endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "vmStructs_linux_arm.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "vmStructs_linux_ppc.hpp" +#endif #ifndef SERIALGC #include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp" #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp" @@ -167,6 +179,12 @@ #ifdef TARGET_ARCH_MODEL_zero # include "adfiles/adGlobals_zero.hpp" #endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/adGlobals_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc +# include "adfiles/adGlobals_ppc.hpp" +#endif #endif // Note: the cross-product of (c1, c2, product, nonproduct, ...), @@ -246,8 +264,8 @@ static inline uint64_t cast_uint64_t(size_t x) nonstatic_field(instanceKlass, _class_loader, oop) \ nonstatic_field(instanceKlass, _protection_domain, oop) \ nonstatic_field(instanceKlass, _signers, objArrayOop) \ - nonstatic_field(instanceKlass, _source_file_name, symbolOop) \ - nonstatic_field(instanceKlass, _source_debug_extension, symbolOop) \ + nonstatic_field(instanceKlass, _source_file_name, Symbol*) \ + nonstatic_field(instanceKlass, _source_debug_extension, Symbol*) \ nonstatic_field(instanceKlass, _inner_classes, typeArrayOop) \ nonstatic_field(instanceKlass, _nonstatic_field_size, int) \ nonstatic_field(instanceKlass, _static_field_size, int) \ @@ -265,7 +283,7 @@ static inline uint64_t cast_uint64_t(size_t x) nonstatic_field(instanceKlass, _jni_ids, JNIid*) \ nonstatic_field(instanceKlass, _osr_nmethods_head, nmethod*) \ nonstatic_field(instanceKlass, _breakpoints, BreakpointInfo*) \ - nonstatic_field(instanceKlass, _generic_signature, symbolOop) \ + nonstatic_field(instanceKlass, _generic_signature, Symbol*) \ nonstatic_field(instanceKlass, _methods_jmethod_ids, jmethodID*) \ nonstatic_field(instanceKlass, _methods_cached_itable_indices, int*) \ volatile_nonstatic_field(instanceKlass, _idnum_allocated_count, u2) \ @@ -282,7 +300,7 @@ static inline uint64_t cast_uint64_t(size_t x) nonstatic_field(Klass, _modifier_flags, jint) \ nonstatic_field(Klass, _super, klassOop) \ nonstatic_field(Klass, _layout_helper, jint) \ - nonstatic_field(Klass, _name, symbolOop) \ + nonstatic_field(Klass, _name, Symbol*) \ nonstatic_field(Klass, _access_flags, AccessFlags) \ nonstatic_field(Klass, _subklass, klassOop) \ nonstatic_field(Klass, _next_sibling, klassOop) \ @@ -326,9 +344,10 @@ static inline uint64_t cast_uint64_t(size_t x) nonstatic_field(constMethodOopDesc, _generic_signature_index, u2) \ nonstatic_field(objArrayKlass, _element_klass, klassOop) \ nonstatic_field(objArrayKlass, _bottom_klass, klassOop) \ - nonstatic_field(symbolKlass, _alloc_size, juint) \ - nonstatic_field(symbolOopDesc, _length, unsigned short) \ - unchecked_nonstatic_field(symbolOopDesc, _body, sizeof(jbyte)) /* NOTE: no type */ \ + volatile_nonstatic_field(Symbol, _refcount, int) \ + nonstatic_field(Symbol, _identity_hash, int) \ + nonstatic_field(Symbol, _length, unsigned short) \ + unchecked_nonstatic_field(Symbol, _body, sizeof(jbyte)) /* NOTE: no type */ \ nonstatic_field(typeArrayKlass, _max_length, int) \ \ /***********************/ \ @@ -375,7 +394,6 @@ static inline uint64_t cast_uint64_t(size_t x) static_field(Universe, _longArrayKlassObj, klassOop) \ static_field(Universe, _singleArrayKlassObj, klassOop) \ static_field(Universe, _doubleArrayKlassObj, klassOop) \ - static_field(Universe, _symbolKlassObj, klassOop) \ static_field(Universe, _methodKlassObj, klassOop) \ static_field(Universe, _constMethodKlassObj, klassOop) \ static_field(Universe, _methodDataKlassObj, klassOop) \ @@ -648,7 +666,7 @@ static inline uint64_t cast_uint64_t(size_t x) \ nonstatic_field(BasicHashtableEntry, _next, BasicHashtableEntry*) \ nonstatic_field(BasicHashtableEntry, _hash, unsigned int) \ - nonstatic_field(HashtableEntry, _literal, oop) \ + nonstatic_field(HashtableEntry, _literal, intptr_t) \ \ /*************/ \ /* Hashtable */ \ @@ -683,7 +701,7 @@ static inline uint64_t cast_uint64_t(size_t x) /* LoaderConstraintEntry */ \ /*************************/ \ \ - nonstatic_field(LoaderConstraintEntry, _name, symbolOop) \ + nonstatic_field(LoaderConstraintEntry, _name, Symbol*) \ nonstatic_field(LoaderConstraintEntry, _num_loaders, int) \ nonstatic_field(LoaderConstraintEntry, _max_loaders, int) \ nonstatic_field(LoaderConstraintEntry, _loaders, oop*) \ @@ -1088,11 +1106,11 @@ static inline uint64_t cast_uint64_t(size_t x) declare_type(objArrayKlassKlass, arrayKlassKlass) \ declare_type(objArrayOopDesc, arrayOopDesc) \ declare_type(constMethodOopDesc, oopDesc) \ - declare_type(symbolKlass, Klass) \ - declare_type(symbolOopDesc, oopDesc) \ declare_type(typeArrayKlass, arrayKlass) \ declare_type(typeArrayKlassKlass, arrayKlassKlass) \ declare_type(typeArrayOopDesc, arrayOopDesc) \ + declare_toplevel_type(Symbol) \ + declare_toplevel_type(Symbol*) \ \ /********/ \ /* Oops */ \ @@ -1109,7 +1127,6 @@ static inline uint64_t cast_uint64_t(size_t x) declare_oop_type(narrowOop) \ declare_oop_type(wideKlassOop) \ declare_oop_type(constMethodOop) \ - declare_oop_type(symbolOop) \ declare_oop_type(typeArrayOop) \ \ /*************************************/ \ @@ -1207,33 +1224,21 @@ static inline uint64_t cast_uint64_t(size_t x) /*********************************/ \ \ declare_toplevel_type(BasicHashtable) \ - declare_type(Hashtable, BasicHashtable) \ - declare_type(SymbolTable, Hashtable) \ - declare_type(StringTable, Hashtable) \ - declare_type(LoaderConstraintTable, Hashtable) \ - declare_type(TwoOopHashtable, Hashtable) \ - declare_type(Dictionary, TwoOopHashtable) \ - declare_type(PlaceholderTable, TwoOopHashtable) \ - declare_toplevel_type(Hashtable*) \ - declare_toplevel_type(SymbolTable*) \ - declare_toplevel_type(StringTable*) \ - declare_toplevel_type(LoaderConstraintTable*) \ - declare_toplevel_type(TwoOopHashtable*) \ - declare_toplevel_type(Dictionary*) \ - declare_toplevel_type(PlaceholderTable*) \ + declare_type(Hashtable, BasicHashtable) \ + declare_type(SymbolTable, Hashtable) \ + declare_type(StringTable, Hashtable) \ + declare_type(LoaderConstraintTable, Hashtable) \ + declare_type(TwoOopHashtable, Hashtable) \ + declare_type(Dictionary, TwoOopHashtable) \ + declare_type(PlaceholderTable, TwoOopHashtable) \ declare_toplevel_type(BasicHashtableEntry) \ - declare_toplevel_type(BasicHashtableEntry*) \ - declare_type(HashtableEntry, BasicHashtableEntry) \ - declare_type(DictionaryEntry, HashtableEntry) \ - declare_type(PlaceholderEntry, HashtableEntry) \ - declare_type(LoaderConstraintEntry, HashtableEntry) \ - declare_toplevel_type(HashtableEntry*) \ - declare_toplevel_type(DictionaryEntry*) \ + declare_type(HashtableEntry, BasicHashtableEntry) \ + declare_type(DictionaryEntry, HashtableEntry) \ + declare_type(PlaceholderEntry, HashtableEntry) \ + declare_type(LoaderConstraintEntry, HashtableEntry) \ declare_toplevel_type(HashtableBucket) \ - declare_toplevel_type(HashtableBucket*) \ declare_toplevel_type(SystemDictionary) \ declare_toplevel_type(ProtectionDomainEntry) \ - declare_toplevel_type(ProtectionDomainEntry*) \ \ /***********************************************************/ \ /* Thread hierarchy (needed for run-time type information) */ \ @@ -1246,7 +1251,7 @@ static inline uint64_t cast_uint64_t(size_t x) declare_type(WatcherThread, Thread) \ declare_type(JavaThread, Thread) \ declare_type(JvmtiAgentThread, JavaThread) \ - declare_type(LowMemoryDetectorThread, JavaThread) \ + declare_type(ServiceThread, JavaThread) \ declare_type(CompilerThread, JavaThread) \ declare_toplevel_type(OSThread) \ declare_toplevel_type(JavaFrameAnchor) \ @@ -1667,10 +1672,10 @@ static inline uint64_t cast_uint64_t(size_t x) declare_constant(instanceKlass::initialization_error) \ \ /*********************************/ \ - /* symbolOop - symbol max length */ \ + /* Symbol* - symbol max length */ \ /*********************************/ \ \ - declare_constant(symbolOopDesc::max_symbol_length) \ + declare_constant(Symbol::max_symbol_length) \ \ /*************************************************/ \ /* constantPoolOop layout enum for InvokeDynamic */ \ @@ -2431,17 +2436,69 @@ ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMLongConstantEntryArrayStride, gHotSpotVMLon } #ifdef ASSERT +static int recursiveFindType(VMTypeEntry* origtypes, const char* typeName, bool isRecurse) { + { + VMTypeEntry* types = origtypes; + while (types->typeName != NULL) { + if (!strcmp(typeName, types->typeName)) { + return 1; + } + ++types; + } + } + size_t len = strlen(typeName); + if (typeName[len-1] == '*') { + char * s = new char[len]; + strncpy(s, typeName, len - 1); + s[len-1] = '\0'; + // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); + if (recursiveFindType(origtypes, s, true) == 1) { + delete s; + return 1; + } + delete s; + } + if (strstr(typeName, "GrowableArray<") == typeName) { + const char * start = typeName + strlen("GrowableArray<"); + const char * end = strrchr(typeName, '>'); + int len = end - start + 1; + char * s = new char[len]; + strncpy(s, start, len - 1); + s[len-1] = '\0'; + // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); + if (recursiveFindType(origtypes, s, true) == 1) { + delete s; + return 1; + } + delete s; + } + if (strstr(typeName, "const ") == typeName) { + const char * s = typeName + strlen("const "); + // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); + if (recursiveFindType(origtypes, s, true) == 1) { + return 1; + } + } + if (strstr(typeName, " const") == typeName + len - 6) { + char * s = strdup(typeName); + s[len - 6] = '\0'; + // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); + if (recursiveFindType(origtypes, s, true) == 1) { + return 1; + } + } + if (!isRecurse) { + tty->print_cr("type \"%s\" not found", typeName); + } + return 2; +} + + int VMStructs::findType(const char* typeName) { VMTypeEntry* types = gHotSpotVMTypes; - while (types->typeName != NULL) { - if (!strcmp(typeName, types->typeName)) { - return 1; - } - ++types; - } - return 0; + return recursiveFindType(types, typeName, false); } #endif diff --git a/hotspot/src/share/vm/runtime/vmStructs.hpp b/hotspot/src/share/vm/runtime/vmStructs.hpp index b02b8cc48fb..7bf6d93d064 100644 --- a/hotspot/src/share/vm/runtime/vmStructs.hpp +++ b/hotspot/src/share/vm/runtime/vmStructs.hpp @@ -68,7 +68,7 @@ typedef struct { const char* typeName; // The type name containing the given field (example: "Klass") const char* fieldName; // The field name within the type (example: "_name") - const char* typeString; // Quoted name of the type of this field (example: "symbolOopDesc*"; + const char* typeString; // Quoted name of the type of this field (example: "Symbol*"; // parsed in Java to ensure type correctness int32_t isStatic; // Indicates whether following field is an offset or an address uint64_t offset; // Offset of field within structure; only used for nonstatic fields diff --git a/hotspot/src/share/vm/runtime/vm_operations.cpp b/hotspot/src/share/vm/runtime/vm_operations.cpp index cad6de580e9..8a0cbe785b3 100644 --- a/hotspot/src/share/vm/runtime/vm_operations.cpp +++ b/hotspot/src/share/vm/runtime/vm_operations.cpp @@ -23,11 +23,13 @@ */ #include "precompiled.hpp" +#include "classfile/symbolTable.hpp" #include "classfile/vmSymbols.hpp" #include "compiler/compileBroker.hpp" #include "compiler/compilerOracle.hpp" #include "gc_implementation/shared/isGCActiveMark.hpp" #include "memory/resourceArea.hpp" +#include "oops/symbol.hpp" #include "runtime/arguments.hpp" #include "runtime/deoptimization.hpp" #include "runtime/interfaceSupport.hpp" @@ -170,6 +172,12 @@ void VM_ZombieAll::doit() { #endif // !PRODUCT +void VM_UnlinkSymbols::doit() { + JavaThread *thread = (JavaThread *)calling_thread(); + assert(thread->is_Java_thread(), "must be a Java thread"); + SymbolTable::unlink(); +} + void VM_HandleFullCodeCache::doit() { NMethodSweeper::speculative_disconnect_nmethods(_is_full); } diff --git a/hotspot/src/share/vm/runtime/vm_operations.hpp b/hotspot/src/share/vm/runtime/vm_operations.hpp index 127aabda181..77ffeb3bc63 100644 --- a/hotspot/src/share/vm/runtime/vm_operations.hpp +++ b/hotspot/src/share/vm/runtime/vm_operations.hpp @@ -50,6 +50,7 @@ template(DeoptimizeFrame) \ template(DeoptimizeAll) \ template(ZombieAll) \ + template(UnlinkSymbols) \ template(HandleFullCodeCache) \ template(Verify) \ template(PrintJNI) \ @@ -288,6 +289,14 @@ class VM_ZombieAll: public VM_Operation { }; #endif // PRODUCT +class VM_UnlinkSymbols: public VM_Operation { + public: + VM_UnlinkSymbols() {} + VMOp_Type type() const { return VMOp_UnlinkSymbols; } + void doit(); + bool allow_nested_vm_operations() const { return true; } +}; + class VM_Verify: public VM_Operation { private: KlassHandle _dependee; diff --git a/hotspot/src/share/vm/runtime/vm_version.cpp b/hotspot/src/share/vm/runtime/vm_version.cpp index 5571db998e6..4afc8cea3b9 100644 --- a/hotspot/src/share/vm/runtime/vm_version.cpp +++ b/hotspot/src/share/vm/runtime/vm_version.cpp @@ -35,6 +35,12 @@ #ifdef TARGET_ARCH_zero # include "vm_version_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "vm_version_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vm_version_ppc.hpp" +#endif const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release(); const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string(); @@ -220,12 +226,29 @@ const char* Abstract_VM_Version::internal_vm_info_string() { #endif #endif + #ifndef FLOAT_ARCH + #if defined(__SOFTFP__) + #define FLOAT_ARCH "-sflt" + #elif defined(E500V2) + #define FLOAT_ARCH "-e500v2" + #elif defined(ARM) + #define FLOAT_ARCH "-vfp" + #elif defined(PPC) + #define FLOAT_ARCH "-hflt" + #else + #define FLOAT_ARCH "" + #endif + #endif - return VMNAME " (" VM_RELEASE ") for " OS "-" CPU + return VMNAME " (" VM_RELEASE ") for " OS "-" CPU FLOAT_ARCH " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__ " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER; } +const char *Abstract_VM_Version::vm_build_user() { + return HOTSPOT_BUILD_USER; +} + unsigned int Abstract_VM_Version::jvm_version() { return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) | ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) | diff --git a/hotspot/src/share/vm/runtime/vm_version.hpp b/hotspot/src/share/vm/runtime/vm_version.hpp index 6c2dfb7acfd..28b243f41ba 100644 --- a/hotspot/src/share/vm/runtime/vm_version.hpp +++ b/hotspot/src/share/vm/runtime/vm_version.hpp @@ -59,6 +59,7 @@ class Abstract_VM_Version: AllStatic { static const char* vm_info_string(); static const char* vm_release(); static const char* vm_platform_string(); + static const char* vm_build_user(); static int vm_major_version() { assert(_initialized, "not initialized"); return _vm_major_version; } static int vm_minor_version() { assert(_initialized, "not initialized"); return _vm_minor_version; } diff --git a/hotspot/src/share/vm/services/attachListener.cpp b/hotspot/src/share/vm/services/attachListener.cpp index 607c23d778a..6ebafe96509 100644 --- a/hotspot/src/share/vm/services/attachListener.cpp +++ b/hotspot/src/share/vm/services/attachListener.cpp @@ -43,7 +43,7 @@ volatile bool AttachListener::_initialized; // Invokes sun.misc.VMSupport.serializePropertiesToByteArray to serialize // the system properties into a byte array. -static klassOop load_and_initialize_klass(symbolHandle sh, TRAPS) { +static klassOop load_and_initialize_klass(Symbol* sh, TRAPS) { klassOop k = SystemDictionary::resolve_or_fail(sh, true, CHECK_NULL); instanceKlassHandle ik (THREAD, k); if (ik->should_be_initialized()) { @@ -52,12 +52,12 @@ static klassOop load_and_initialize_klass(symbolHandle sh, TRAPS) { return ik(); } -static jint get_properties(AttachOperation* op, outputStream* out, symbolHandle serializePropertiesMethod) { +static jint get_properties(AttachOperation* op, outputStream* out, Symbol* serializePropertiesMethod) { Thread* THREAD = Thread::current(); HandleMark hm; // load sun.misc.VMSupport - symbolHandle klass = vmSymbolHandles::sun_misc_VMSupport(); + Symbol* klass = vmSymbols::sun_misc_VMSupport(); klassOop k = load_and_initialize_klass(klass, THREAD); if (HAS_PENDING_EXCEPTION) { java_lang_Throwable::print(PENDING_EXCEPTION, out); @@ -71,7 +71,7 @@ static jint get_properties(AttachOperation* op, outputStream* out, symbolHandle JavaCallArguments args; - symbolHandle signature = vmSymbolHandles::serializePropertiesToByteArray_signature(); + Symbol* signature = vmSymbols::serializePropertiesToByteArray_signature(); JavaCalls::call_static(&result, ik, serializePropertiesMethod, @@ -99,12 +99,12 @@ static jint get_properties(AttachOperation* op, outputStream* out, symbolHandle // Implementation of "properties" command. static jint get_system_properties(AttachOperation* op, outputStream* out) { - return get_properties(op, out, vmSymbolHandles::serializePropertiesToByteArray_name()); + return get_properties(op, out, vmSymbols::serializePropertiesToByteArray_name()); } // Implementation of "agent_properties" command. static jint get_agent_properties(AttachOperation* op, outputStream* out) { - return get_properties(op, out, vmSymbolHandles::serializeAgentPropertiesToByteArray_name()); + return get_properties(op, out, vmSymbols::serializeAgentPropertiesToByteArray_name()); } // Implementation of "datadump" command. @@ -430,7 +430,7 @@ static void attach_listener_thread_entry(JavaThread* thread, TRAPS) { // Starts the Attach Listener thread void AttachListener::init() { EXCEPTION_MARK; - klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_Thread(), true, CHECK); + klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK); instanceKlassHandle klass (THREAD, k); instanceHandle thread_oop = klass->allocate_instance_handle(CHECK); @@ -442,8 +442,8 @@ void AttachListener::init() { JavaValue result(T_VOID); JavaCalls::call_special(&result, thread_oop, klass, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::threadgroup_string_void_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::threadgroup_string_void_signature(), thread_group, string, CHECK); @@ -452,8 +452,8 @@ void AttachListener::init() { JavaCalls::call_special(&result, thread_group, group, - vmSymbolHandles::add_method_name(), - vmSymbolHandles::thread_void_signature(), + vmSymbols::add_method_name(), + vmSymbols::thread_void_signature(), thread_oop, // ARG 1 CHECK); diff --git a/hotspot/src/share/vm/services/attachListener.hpp b/hotspot/src/share/vm/services/attachListener.hpp index f0abf1cd1f2..68cd834fe65 100644 --- a/hotspot/src/share/vm/services/attachListener.hpp +++ b/hotspot/src/share/vm/services/attachListener.hpp @@ -59,10 +59,10 @@ class AttachListener: AllStatic { static void detachall() KERNEL_RETURN; // indicates if the Attach Listener needs to be created at startup - static bool init_at_startup() KERNEL_RETURN_(return false;); + static bool init_at_startup() KERNEL_RETURN_(false); // indicates if we have a trigger to start the Attach Listener - static bool is_init_trigger() KERNEL_RETURN_(return false;); + static bool is_init_trigger() KERNEL_RETURN_(false); #ifdef SERVICES_KERNEL static bool is_attach_supported() { return false; } diff --git a/hotspot/src/share/vm/services/classLoadingService.cpp b/hotspot/src/share/vm/services/classLoadingService.cpp index 308fe033aa4..83979a8e57d 100644 --- a/hotspot/src/share/vm/services/classLoadingService.cpp +++ b/hotspot/src/share/vm/services/classLoadingService.cpp @@ -43,7 +43,7 @@ HS_DTRACE_PROBE_DECL4(hotspot, class__unloaded, char*, int, oop, bool); { \ char* data = NULL; \ int len = 0; \ - symbolOop name = (clss)->name(); \ + Symbol* name = (clss)->name(); \ if (name != NULL) { \ data = (char*)name->bytes(); \ len = name->utf8_length(); \ diff --git a/hotspot/src/share/vm/services/heapDumper.cpp b/hotspot/src/share/vm/services/heapDumper.cpp index e30e62d1a17..be1b778242f 100644 --- a/hotspot/src/share/vm/services/heapDumper.cpp +++ b/hotspot/src/share/vm/services/heapDumper.cpp @@ -425,6 +425,7 @@ class DumpWriter : public StackObj { void write_u4(u4 x); void write_u8(u8 x); void write_objectID(oop o); + void write_symbolID(Symbol* o); void write_classID(Klass* k); void write_id(u4 x); }; @@ -568,6 +569,15 @@ void DumpWriter::write_objectID(oop o) { #endif } +void DumpWriter::write_symbolID(Symbol* s) { + address a = (address)((uintptr_t)s); +#ifdef _LP64 + write_u8((u8)a); +#else + write_u4((u4)a); +#endif +} + void DumpWriter::write_id(u4 x) { #ifdef _LP64 write_u8((u8) x); @@ -592,7 +602,7 @@ class DumperSupport : AllStatic { static void write_header(DumpWriter* writer, hprofTag tag, u4 len); // returns hprof tag for the given type signature - static hprofTag sig2tag(symbolOop sig); + static hprofTag sig2tag(Symbol* sig); // returns hprof tag for the given basic type static hprofTag type2tag(BasicType type); @@ -636,7 +646,7 @@ void DumperSupport:: write_header(DumpWriter* writer, hprofTag tag, u4 len) { } // returns hprof tag for the given type signature -hprofTag DumperSupport::sig2tag(symbolOop sig) { +hprofTag DumperSupport::sig2tag(Symbol* sig) { switch (sig->byte_at(0)) { case JVM_SIGNATURE_CLASS : return HPROF_NORMAL_OBJECT; case JVM_SIGNATURE_ARRAY : return HPROF_NORMAL_OBJECT; @@ -775,7 +785,7 @@ u4 DumperSupport::instance_size(klassOop k) { for (FieldStream fld(ikh, false, false); !fld.eos(); fld.next()) { if (!fld.access_flags().is_static()) { - symbolOop sig = fld.signature(); + Symbol* sig = fld.signature(); switch (sig->byte_at(0)) { case JVM_SIGNATURE_CLASS : case JVM_SIGNATURE_ARRAY : size += oopSize; break; @@ -815,9 +825,9 @@ void DumperSupport::dump_static_fields(DumpWriter* writer, klassOop k) { // pass 2 - dump the field descriptors and raw values for (FieldStream fld(ikh, true, true); !fld.eos(); fld.next()) { if (fld.access_flags().is_static()) { - symbolOop sig = fld.signature(); + Symbol* sig = fld.signature(); - writer->write_objectID(fld.name()); // name + writer->write_symbolID(fld.name()); // name writer->write_u1(sig2tag(sig)); // type // value @@ -836,7 +846,7 @@ void DumperSupport::dump_instance_fields(DumpWriter* writer, oop o) { for (FieldStream fld(ikh, false, false); !fld.eos(); fld.next()) { if (!fld.access_flags().is_static()) { - symbolOop sig = fld.signature(); + Symbol* sig = fld.signature(); address addr = (address)o + fld.offset(); dump_field_value(writer, sig->byte_at(0), addr); @@ -860,9 +870,9 @@ void DumperSupport::dump_instance_field_descriptors(DumpWriter* writer, klassOop // pass 2 - dump the field descriptors for (FieldStream fld(ikh, true, true); !fld.eos(); fld.next()) { if (!fld.access_flags().is_static()) { - symbolOop sig = fld.signature(); + Symbol* sig = fld.signature(); - writer->write_objectID(fld.name()); // name + writer->write_symbolID(fld.name()); // name writer->write_u1(sig2tag(sig)); // type } } @@ -1115,42 +1125,40 @@ void DumperSupport::dump_stack_frame(DumpWriter* writer, write_header(writer, HPROF_FRAME, 4*oopSize + 2*sizeof(u4)); writer->write_id(frame_serial_num); // frame serial number - writer->write_objectID(m->name()); // method's name - writer->write_objectID(m->signature()); // method's signature + writer->write_symbolID(m->name()); // method's name + writer->write_symbolID(m->signature()); // method's signature assert(Klass::cast(m->method_holder())->oop_is_instance(), "not instanceKlass"); - writer->write_objectID(instanceKlass::cast(m->method_holder())->source_file_name()); // source file name + writer->write_symbolID(instanceKlass::cast(m->method_holder())->source_file_name()); // source file name writer->write_u4(class_serial_num); // class serial number writer->write_u4((u4) line_number); // line number } + // Support class used to generate HPROF_UTF8 records from the entries in the // SymbolTable. -class SymbolTableDumper : public OopClosure { +class SymbolTableDumper : public SymbolClosure { private: DumpWriter* _writer; DumpWriter* writer() const { return _writer; } public: SymbolTableDumper(DumpWriter* writer) { _writer = writer; } - void do_oop(oop* obj_p); - void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } + void do_symbol(Symbol** p); }; -void SymbolTableDumper::do_oop(oop* obj_p) { +void SymbolTableDumper::do_symbol(Symbol** p) { ResourceMark rm; - symbolOop sym = (symbolOop)*obj_p; - + Symbol* sym = load_symbol(p); int len = sym->utf8_length(); if (len > 0) { char* s = sym->as_utf8(); DumperSupport::write_header(writer(), HPROF_UTF8, oopSize + len); - writer()->write_objectID(sym); + writer()->write_symbolID(sym); writer()->write_raw(s, len); } } - // Support class used to generate HPROF_GC_ROOT_JNI_LOCAL records class JNILocalsDumper : public OopClosure { @@ -1548,8 +1556,8 @@ void VM_HeapDumper::do_load_class(klassOop k) { writer()->write_u4(STACK_TRACE_ID); // class name ID - symbolOop name = klass->name(); - writer()->write_objectID(name); + Symbol* name = klass->name(); + writer()->write_symbolID(name); // write a LOAD_CLASS record for the array type (if it exists) k = klass->array_klass_or_null(); @@ -1727,7 +1735,7 @@ void VM_HeapDumper::doit() { // HPROF_UTF8 records SymbolTableDumper sym_dumper(writer()); - SymbolTable::oops_do(&sym_dumper); + SymbolTable::symbols_do(&sym_dumper); // write HPROF_LOAD_CLASS records SystemDictionary::classes_do(&do_load_class); diff --git a/hotspot/src/share/vm/services/lowMemoryDetector.cpp b/hotspot/src/share/vm/services/lowMemoryDetector.cpp index de5fad4da80..23c9e7467b4 100644 --- a/hotspot/src/share/vm/services/lowMemoryDetector.cpp +++ b/hotspot/src/share/vm/services/lowMemoryDetector.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -34,55 +34,11 @@ #include "services/lowMemoryDetector.hpp" #include "services/management.hpp" -LowMemoryDetectorThread* LowMemoryDetector::_detector_thread = NULL; volatile bool LowMemoryDetector::_enabled_for_collected_pools = false; volatile jint LowMemoryDetector::_disabled_count = 0; -void LowMemoryDetector::initialize() { - EXCEPTION_MARK; - - instanceKlassHandle klass (THREAD, SystemDictionary::Thread_klass()); - instanceHandle thread_oop = klass->allocate_instance_handle(CHECK); - - const char thread_name[] = "Low Memory Detector"; - Handle string = java_lang_String::create_from_str(thread_name, CHECK); - - // Initialize thread_oop to put it into the system threadGroup - Handle thread_group (THREAD, Universe::system_thread_group()); - JavaValue result(T_VOID); - JavaCalls::call_special(&result, thread_oop, - klass, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::threadgroup_string_void_signature(), - thread_group, - string, - CHECK); - - { - MutexLocker mu(Threads_lock); - _detector_thread = new LowMemoryDetectorThread(&low_memory_detector_thread_entry); - - // At this point it may be possible that no osthread was created for the - // JavaThread due to lack of memory. We would have to throw an exception - // in that case. However, since this must work and we do not allow - // exceptions anyway, check and abort if this fails. - if (_detector_thread == NULL || _detector_thread->osthread() == NULL) { - vm_exit_during_initialization("java.lang.OutOfMemoryError", - "unable to create new native thread"); - } - - java_lang_Thread::set_thread(thread_oop(), _detector_thread); - java_lang_Thread::set_priority(thread_oop(), NearMaxPriority); - java_lang_Thread::set_daemon(thread_oop()); - _detector_thread->set_threadObj(thread_oop()); - - Threads::add(_detector_thread); - Thread::start(_detector_thread); - } -} - bool LowMemoryDetector::has_pending_requests() { - assert(LowMemory_lock->owned_by_self(), "Must own LowMemory_lock"); + assert(Service_lock->owned_by_self(), "Must own Service_lock"); bool has_requests = false; int num_memory_pools = MemoryService::num_memory_pools(); for (int i = 0; i < num_memory_pools; i++) { @@ -100,47 +56,21 @@ bool LowMemoryDetector::has_pending_requests() { return has_requests; } -void LowMemoryDetector::low_memory_detector_thread_entry(JavaThread* jt, TRAPS) { - while (true) { - bool sensors_changed = false; +void LowMemoryDetector::process_sensor_changes(TRAPS) { + ResourceMark rm(THREAD); + HandleMark hm(THREAD); - { - // _no_safepoint_check_flag is used here as LowMemory_lock is a - // special lock and the VMThread may acquire this lock at safepoint. - // Need state transition ThreadBlockInVM so that this thread - // will be handled by safepoint correctly when this thread is - // notified at a safepoint. - - // This ThreadBlockInVM object is not also considered to be - // suspend-equivalent because LowMemoryDetector threads are - // not visible to external suspension. - - ThreadBlockInVM tbivm(jt); - - MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag); - while (!(sensors_changed = has_pending_requests())) { - // wait until one of the sensors has pending requests - LowMemory_lock->wait(Mutex::_no_safepoint_check_flag); - } + // No need to hold Service_lock to call out to Java + int num_memory_pools = MemoryService::num_memory_pools(); + for (int i = 0; i < num_memory_pools; i++) { + MemoryPool* pool = MemoryService::get_memory_pool(i); + SensorInfo* sensor = pool->usage_sensor(); + SensorInfo* gc_sensor = pool->gc_usage_sensor(); + if (sensor != NULL && sensor->has_pending_requests()) { + sensor->process_pending_requests(CHECK); } - - { - ResourceMark rm(THREAD); - HandleMark hm(THREAD); - - // No need to hold LowMemory_lock to call out to Java - int num_memory_pools = MemoryService::num_memory_pools(); - for (int i = 0; i < num_memory_pools; i++) { - MemoryPool* pool = MemoryService::get_memory_pool(i); - SensorInfo* sensor = pool->usage_sensor(); - SensorInfo* gc_sensor = pool->gc_usage_sensor(); - if (sensor != NULL && sensor->has_pending_requests()) { - sensor->process_pending_requests(CHECK); - } - if (gc_sensor != NULL && gc_sensor->has_pending_requests()) { - gc_sensor->process_pending_requests(CHECK); - } - } + if (gc_sensor != NULL && gc_sensor->has_pending_requests()) { + gc_sensor->process_pending_requests(CHECK); } } } @@ -148,7 +78,7 @@ void LowMemoryDetector::low_memory_detector_thread_entry(JavaThread* jt, TRAPS) // This method could be called from any Java threads // and also VMThread. void LowMemoryDetector::detect_low_memory() { - MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag); + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); bool has_pending_requests = false; int num_memory_pools = MemoryService::num_memory_pools(); @@ -166,7 +96,7 @@ void LowMemoryDetector::detect_low_memory() { } if (has_pending_requests) { - LowMemory_lock->notify_all(); + Service_lock->notify_all(); } } @@ -181,14 +111,14 @@ void LowMemoryDetector::detect_low_memory(MemoryPool* pool) { } { - MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag); + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); MemoryUsage usage = pool->get_memory_usage(); sensor->set_gauge_sensor_level(usage, pool->usage_threshold()); if (sensor->has_pending_requests()) { // notify sensor state update - LowMemory_lock->notify_all(); + Service_lock->notify_all(); } } } @@ -203,14 +133,14 @@ void LowMemoryDetector::detect_after_gc_memory(MemoryPool* pool) { } { - MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag); + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); MemoryUsage usage = pool->get_last_collection_usage(); sensor->set_counter_sensor_level(usage, pool->gc_usage_threshold()); if (sensor->has_pending_requests()) { // notify sensor state update - LowMemory_lock->notify_all(); + Service_lock->notify_all(); } } } @@ -377,15 +307,15 @@ void SensorInfo::trigger(int count, TRAPS) { JavaCalls::call_virtual(&result, sensorKlass, - vmSymbolHandles::trigger_name(), - vmSymbolHandles::trigger_method_signature(), + vmSymbols::trigger_name(), + vmSymbols::trigger_method_signature(), &args, CHECK); } { - // Holds LowMemory_lock and update the sensor state - MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag); + // Holds Service_lock and update the sensor state + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); _sensor_on = true; _sensor_count += count; _pending_trigger_count = _pending_trigger_count - count; @@ -403,15 +333,15 @@ void SensorInfo::clear(int count, TRAPS) { args.push_int((int) count); JavaCalls::call_virtual(&result, sensorKlass, - vmSymbolHandles::clear_name(), - vmSymbolHandles::int_void_signature(), + vmSymbols::clear_name(), + vmSymbols::int_void_signature(), &args, CHECK); } { - // Holds LowMemory_lock and update the sensor state - MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag); + // Holds Service_lock and update the sensor state + MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); _sensor_on = false; _pending_clear_count = 0; _pending_trigger_count = _pending_trigger_count - count; diff --git a/hotspot/src/share/vm/services/lowMemoryDetector.hpp b/hotspot/src/share/vm/services/lowMemoryDetector.hpp index 6f3a4b06dd1..ce15bad2e21 100644 --- a/hotspot/src/share/vm/services/lowMemoryDetector.hpp +++ b/hotspot/src/share/vm/services/lowMemoryDetector.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -58,8 +58,8 @@ // // May need to deal with hysteresis effect. // +// Memory detection code runs in the Service thread (serviceThread.hpp). -class LowMemoryDetectorThread; class OopClosure; class MemoryPool; @@ -211,23 +211,22 @@ public: }; class LowMemoryDetector : public AllStatic { -friend class LowMemoryDetectorDisabler; + friend class LowMemoryDetectorDisabler; + friend class ServiceThread; private: // true if any collected heap has low memory detection enabled static volatile bool _enabled_for_collected_pools; // > 0 if temporary disabed static volatile jint _disabled_count; - static LowMemoryDetectorThread* _detector_thread; - static void low_memory_detector_thread_entry(JavaThread* thread, TRAPS); static void check_memory_usage(); static bool has_pending_requests(); static bool temporary_disabled() { return _disabled_count > 0; } static void disable() { Atomic::inc(&_disabled_count); } static void enable() { Atomic::dec(&_disabled_count); } + static void process_sensor_changes(TRAPS); public: - static void initialize(); static void detect_low_memory(); static void detect_low_memory(MemoryPool* pool); static void detect_after_gc_memory(MemoryPool* pool); @@ -275,7 +274,6 @@ public: } } } - }; class LowMemoryDetectorDisabler: public StackObj { diff --git a/hotspot/src/share/vm/services/management.cpp b/hotspot/src/share/vm/services/management.cpp index 40c35874a83..d517f24577e 100644 --- a/hotspot/src/share/vm/services/management.cpp +++ b/hotspot/src/share/vm/services/management.cpp @@ -38,6 +38,7 @@ #include "runtime/javaCalls.hpp" #include "runtime/jniHandles.hpp" #include "runtime/os.hpp" +#include "runtime/serviceThread.hpp" #include "services/classLoadingService.hpp" #include "services/heapDumper.hpp" #include "services/lowMemoryDetector.hpp" @@ -112,8 +113,8 @@ void Management::init() { } void Management::initialize(TRAPS) { - // Start the low memory detector thread - LowMemoryDetector::initialize(); + // Start the service thread + ServiceThread::initialize(); if (ManagementServer) { ResourceMark rm(THREAD); @@ -122,7 +123,7 @@ void Management::initialize(TRAPS) { // Load and initialize the sun.management.Agent class // invoke startAgent method to start the management server Handle loader = Handle(THREAD, SystemDictionary::java_system_loader()); - klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::sun_management_Agent(), + klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(), loader, Handle(), true, @@ -132,8 +133,8 @@ void Management::initialize(TRAPS) { JavaValue result(T_VOID); JavaCalls::call_static(&result, ik, - vmSymbolHandles::startAgent_name(), - vmSymbolHandles::void_method_signature(), + vmSymbols::startAgent_name(), + vmSymbols::void_method_signature(), CHECK); } } @@ -142,7 +143,7 @@ void Management::get_optional_support(jmmOptionalSupport* support) { memcpy(support, &_optional_support, sizeof(jmmOptionalSupport)); } -klassOop Management::load_and_initialize_klass(symbolHandle sh, TRAPS) { +klassOop Management::load_and_initialize_klass(Symbol* sh, TRAPS) { klassOop k = SystemDictionary::resolve_or_fail(sh, true, CHECK_NULL); instanceKlassHandle ik (THREAD, k); if (ik->should_be_initialized()) { @@ -182,49 +183,49 @@ void Management::oops_do(OopClosure* f) { klassOop Management::java_lang_management_ThreadInfo_klass(TRAPS) { if (_threadInfo_klass == NULL) { - _threadInfo_klass = load_and_initialize_klass(vmSymbolHandles::java_lang_management_ThreadInfo(), CHECK_NULL); + _threadInfo_klass = load_and_initialize_klass(vmSymbols::java_lang_management_ThreadInfo(), CHECK_NULL); } return _threadInfo_klass; } klassOop Management::java_lang_management_MemoryUsage_klass(TRAPS) { if (_memoryUsage_klass == NULL) { - _memoryUsage_klass = load_and_initialize_klass(vmSymbolHandles::java_lang_management_MemoryUsage(), CHECK_NULL); + _memoryUsage_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryUsage(), CHECK_NULL); } return _memoryUsage_klass; } klassOop Management::java_lang_management_MemoryPoolMXBean_klass(TRAPS) { if (_memoryPoolMXBean_klass == NULL) { - _memoryPoolMXBean_klass = load_and_initialize_klass(vmSymbolHandles::java_lang_management_MemoryPoolMXBean(), CHECK_NULL); + _memoryPoolMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryPoolMXBean(), CHECK_NULL); } return _memoryPoolMXBean_klass; } klassOop Management::java_lang_management_MemoryManagerMXBean_klass(TRAPS) { if (_memoryManagerMXBean_klass == NULL) { - _memoryManagerMXBean_klass = load_and_initialize_klass(vmSymbolHandles::java_lang_management_MemoryManagerMXBean(), CHECK_NULL); + _memoryManagerMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryManagerMXBean(), CHECK_NULL); } return _memoryManagerMXBean_klass; } klassOop Management::java_lang_management_GarbageCollectorMXBean_klass(TRAPS) { if (_garbageCollectorMXBean_klass == NULL) { - _garbageCollectorMXBean_klass = load_and_initialize_klass(vmSymbolHandles::java_lang_management_GarbageCollectorMXBean(), CHECK_NULL); + _garbageCollectorMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_GarbageCollectorMXBean(), CHECK_NULL); } return _garbageCollectorMXBean_klass; } klassOop Management::sun_management_Sensor_klass(TRAPS) { if (_sensor_klass == NULL) { - _sensor_klass = load_and_initialize_klass(vmSymbolHandles::sun_management_Sensor(), CHECK_NULL); + _sensor_klass = load_and_initialize_klass(vmSymbols::sun_management_Sensor(), CHECK_NULL); } return _sensor_klass; } klassOop Management::sun_management_ManagementFactory_klass(TRAPS) { if (_managementFactory_klass == NULL) { - _managementFactory_klass = load_and_initialize_klass(vmSymbolHandles::sun_management_ManagementFactory(), CHECK_NULL); + _managementFactory_klass = load_and_initialize_klass(vmSymbols::sun_management_ManagementFactory(), CHECK_NULL); } return _managementFactory_klass; } @@ -290,8 +291,8 @@ instanceOop Management::create_thread_info_instance(ThreadSnapshot* snapshot, TR // Call ThreadInfo constructor with no locked monitors and synchronizers JavaCalls::call_special(&result, ik, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::java_lang_management_ThreadInfo_constructor_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::java_lang_management_ThreadInfo_constructor_signature(), &args, CHECK_NULL); @@ -325,8 +326,8 @@ instanceOop Management::create_thread_info_instance(ThreadSnapshot* snapshot, // Call ThreadInfo constructor with locked monitors and synchronizers JavaCalls::call_special(&result, ik, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::java_lang_management_ThreadInfo_with_locks_constructor_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::java_lang_management_ThreadInfo_with_locks_constructor_signature(), &args, CHECK_NULL); diff --git a/hotspot/src/share/vm/services/management.hpp b/hotspot/src/share/vm/services/management.hpp index 7c0633029ea..ec2d77ce088 100644 --- a/hotspot/src/share/vm/services/management.hpp +++ b/hotspot/src/share/vm/services/management.hpp @@ -50,7 +50,7 @@ private: static klassOop _garbageCollectorMXBean_klass; static klassOop _managementFactory_klass; - static klassOop load_and_initialize_klass(symbolHandle sh, TRAPS); + static klassOop load_and_initialize_klass(Symbol* sh, TRAPS); public: static void init(); diff --git a/hotspot/src/share/vm/services/memoryManager.cpp b/hotspot/src/share/vm/services/memoryManager.cpp index 7da7a1c4c73..41b8d82f84b 100644 --- a/hotspot/src/share/vm/services/memoryManager.cpp +++ b/hotspot/src/share/vm/services/memoryManager.cpp @@ -106,15 +106,15 @@ instanceOop MemoryManager::get_memory_manager_instance(TRAPS) { JavaCallArguments args; args.push_oop(mgr_name); // Argument 1 - symbolHandle method_name; - symbolHandle signature; + Symbol* method_name = NULL; + Symbol* signature = NULL; if (is_gc_memory_manager()) { - method_name = vmSymbolHandles::createGarbageCollector_name(); - signature = vmSymbolHandles::createGarbageCollector_signature(); + method_name = vmSymbols::createGarbageCollector_name(); + signature = vmSymbols::createGarbageCollector_signature(); args.push_oop(Handle()); // Argument 2 (for future extension) } else { - method_name = vmSymbolHandles::createMemoryManager_name(); - signature = vmSymbolHandles::createMemoryManager_signature(); + method_name = vmSymbols::createMemoryManager_name(); + signature = vmSymbols::createMemoryManager_signature(); } JavaCalls::call_static(&result, diff --git a/hotspot/src/share/vm/services/memoryPool.cpp b/hotspot/src/share/vm/services/memoryPool.cpp index f0e3fda5f97..6036bbe70b5 100644 --- a/hotspot/src/share/vm/services/memoryPool.cpp +++ b/hotspot/src/share/vm/services/memoryPool.cpp @@ -89,8 +89,8 @@ instanceOop MemoryPool::get_memory_pool_instance(TRAPS) { args.push_oop(pool_name); // Argument 1 args.push_int((int) is_heap()); // Argument 2 - symbolHandle method_name = vmSymbolHandles::createMemoryPool_name(); - symbolHandle signature = vmSymbolHandles::createMemoryPool_signature(); + Symbol* method_name = vmSymbols::createMemoryPool_name(); + Symbol* signature = vmSymbols::createMemoryPool_signature(); args.push_long(usage_threshold_value); // Argument 3 args.push_long(gc_usage_threshold_value); // Argument 4 diff --git a/hotspot/src/share/vm/services/memoryService.cpp b/hotspot/src/share/vm/services/memoryService.cpp index e046d61ffed..ee9471083a9 100644 --- a/hotspot/src/share/vm/services/memoryService.cpp +++ b/hotspot/src/share/vm/services/memoryService.cpp @@ -619,8 +619,8 @@ Handle MemoryService::create_MemoryUsage_obj(MemoryUsage usage, TRAPS) { JavaCalls::call_special(&result, ik, - vmSymbolHandles::object_initializer_name(), - vmSymbolHandles::long_long_long_long_void_signature(), + vmSymbols::object_initializer_name(), + vmSymbols::long_long_long_long_void_signature(), &args, CHECK_NH); return obj; diff --git a/hotspot/src/share/vm/services/threadService.cpp b/hotspot/src/share/vm/services/threadService.cpp index 753cc96859c..d52b765bc3c 100644 --- a/hotspot/src/share/vm/services/threadService.cpp +++ b/hotspot/src/share/vm/services/threadService.cpp @@ -249,7 +249,7 @@ Handle ThreadService::dump_stack_traces(GrowableArray* threads, // Allocate the resulting StackTraceElement[][] object ResourceMark rm(THREAD); - klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_StackTraceElement_array(), true, CHECK_NH); + klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_StackTraceElement_array(), true, CHECK_NH); objArrayKlassHandle ik (THREAD, k); objArrayOop r = oopFactory::new_objArray(ik(), num_threads, CHECK_NH); objArrayHandle result_obj(THREAD, r); diff --git a/hotspot/src/share/vm/utilities/copy.hpp b/hotspot/src/share/vm/utilities/copy.hpp index 67c11a32d85..8772fe44f06 100644 --- a/hotspot/src/share/vm/utilities/copy.hpp +++ b/hotspot/src/share/vm/utilities/copy.hpp @@ -331,6 +331,12 @@ class Copy : AllStatic { #ifdef TARGET_ARCH_zero # include "copy_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "copy_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "copy_ppc.hpp" +#endif }; diff --git a/hotspot/src/share/vm/utilities/debug.cpp b/hotspot/src/share/vm/utilities/debug.cpp index cb44189fd4a..204b360b15b 100644 --- a/hotspot/src/share/vm/utilities/debug.cpp +++ b/hotspot/src/share/vm/utilities/debug.cpp @@ -263,6 +263,27 @@ void report_untested(const char* file, int line, const char* message) { #endif // PRODUCT } +void report_out_of_shared_space(SharedSpaceType shared_space) { + static const char* name[] = { + "permanent generation", + "shared read only space", + "shared read write space", + "shared miscellaneous data space" + }; + static const char* flag[] = { + "PermGen", + "SharedReadOnlySize", + "SharedReadWriteSize", + "SharedMiscDataSize" + }; + + warning("\nThe %s is not large enough\n" + "to preload requested classes. Use -XX:%s=\n" + "to increase the initial size of %s.\n", + name[shared_space], flag[shared_space], name[shared_space]); + exit(2); +} + void report_java_out_of_memory(const char* message) { static jint out_of_memory_reported = 0; diff --git a/hotspot/src/share/vm/utilities/debug.hpp b/hotspot/src/share/vm/utilities/debug.hpp index bb92bbe90e2..a4f16060e1d 100644 --- a/hotspot/src/share/vm/utilities/debug.hpp +++ b/hotspot/src/share/vm/utilities/debug.hpp @@ -176,6 +176,16 @@ void report_untested(const char* file, int line, const char* message); void warning(const char* format, ...); +// out of shared space reporting +enum SharedSpaceType { + SharedPermGen, + SharedReadOnly, + SharedReadWrite, + SharedMiscData +}; + +void report_out_of_shared_space(SharedSpaceType space_type); + // out of memory reporting void report_java_out_of_memory(const char* message); diff --git a/hotspot/src/share/vm/utilities/elfSymbolTable.cpp b/hotspot/src/share/vm/utilities/elfSymbolTable.cpp index 45f0b73bbc9..22773aa546b 100644 --- a/hotspot/src/share/vm/utilities/elfSymbolTable.cpp +++ b/hotspot/src/share/vm/utilities/elfSymbolTable.cpp @@ -39,13 +39,14 @@ ElfSymbolTable::ElfSymbolTable(FILE* file, Elf_Shdr shdr) { // try to load the string table long cur_offset = ftell(file); if (cur_offset != -1) { - m_symbols = (Elf_Sym*)NEW_C_HEAP_ARRAY(char, shdr.sh_size); + // call malloc so we can back up if memory allocation fails. + m_symbols = (Elf_Sym*)os::malloc(shdr.sh_size); if (m_symbols) { if (fseek(file, shdr.sh_offset, SEEK_SET) || fread((void*)m_symbols, shdr.sh_size, 1, file) != 1 || fseek(file, cur_offset, SEEK_SET)) { m_status = Decoder::file_invalid; - FREE_C_HEAP_ARRAY(char, m_symbols); + os::free(m_symbols); m_symbols = NULL; } } @@ -59,7 +60,7 @@ ElfSymbolTable::ElfSymbolTable(FILE* file, Elf_Shdr shdr) { ElfSymbolTable::~ElfSymbolTable() { if (m_symbols != NULL) { - FREE_C_HEAP_ARRAY(char, m_symbols); + os::free(m_symbols); } if (m_next != NULL) { diff --git a/jdk/src/windows/native/sun/jkernel/kernel.h b/hotspot/src/share/vm/utilities/errorReporter.cpp similarity index 75% rename from jdk/src/windows/native/sun/jkernel/kernel.h rename to hotspot/src/share/vm/utilities/errorReporter.cpp index f39f42374ac..9d10453948d 100644 --- a/jdk/src/windows/native/sun/jkernel/kernel.h +++ b/hotspot/src/share/vm/utilities/errorReporter.cpp @@ -1,12 +1,10 @@ /* - * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * 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 @@ -21,5 +19,14 @@ * 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. + * */ -void preJVMStart(); + +#include "precompiled.hpp" +#include "utilities/errorReporter.hpp" + +ErrorReporter::ErrorReporter() {} + +void ErrorReporter::call(FILE* fd, char* buffer, int length) { +} + diff --git a/hotspot/src/share/vm/ci/ciSymbolKlass.cpp b/hotspot/src/share/vm/utilities/errorReporter.hpp similarity index 64% rename from hotspot/src/share/vm/ci/ciSymbolKlass.cpp rename to hotspot/src/share/vm/utilities/errorReporter.hpp index 1fb67e1a320..e7fae5fba22 100644 --- a/hotspot/src/share/vm/ci/ciSymbolKlass.cpp +++ b/hotspot/src/share/vm/utilities/errorReporter.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 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,19 +22,18 @@ * */ -#include "precompiled.hpp" -#include "ci/ciSymbolKlass.hpp" -#include "ci/ciUtilities.hpp" +#ifndef SHARE_VM_UTILITIES_ERRORREPORTER_HPP +#define SHARE_VM_UTILITIES_ERRORREPORTER_HPP -// ciSymbolKlass -// -// This class represents a klassOop in the HotSpot virtual machine -// whose Klass part is a symbolKlass. +#include "utilities/globalDefinitions.hpp" -// ------------------------------------------------------------------ -// ciSymbolKlass::instance -// -// Return the distinguished instance of this class -ciSymbolKlass* ciSymbolKlass::make() { - return CURRENT_ENV->_symbol_klass_instance; -} +class ErrorReporter : public StackObj { + +public: + ErrorReporter(); + ~ErrorReporter(){}; + + void call(FILE* fd, char *buffer, int length); +}; + +#endif // ndef SHARE_VM_UTILITIES_ERRORREPORTER_HPP diff --git a/hotspot/src/share/vm/utilities/exceptions.cpp b/hotspot/src/share/vm/utilities/exceptions.cpp index 1c838f3e41c..1d6ab0835ca 100644 --- a/hotspot/src/share/vm/utilities/exceptions.cpp +++ b/hotspot/src/share/vm/utilities/exceptions.cpp @@ -102,10 +102,10 @@ bool Exceptions::special_exception(Thread* thread, const char* file, int line, H return false; } -bool Exceptions::special_exception(Thread* thread, const char* file, int line, symbolHandle h_name, const char* message) { +bool Exceptions::special_exception(Thread* thread, const char* file, int line, Symbol* h_name, const char* message) { // bootstrapping check if (!Universe::is_fully_initialized()) { - if (h_name.is_null()) { + if (h_name == NULL) { // atleast an informative message. vm_exit_during_initialization("Exception", message); } else { @@ -161,7 +161,7 @@ void Exceptions::_throw(Thread* thread, const char* file, int line, Handle h_exc } -void Exceptions::_throw_msg(Thread* thread, const char* file, int line, symbolHandle h_name, const char* message, Handle h_loader, Handle h_protection_domain) { +void Exceptions::_throw_msg(Thread* thread, const char* file, int line, Symbol* h_name, const char* message, Handle h_loader, Handle h_protection_domain) { // Check for special boot-strapping/vm-thread handling if (special_exception(thread, file, line, h_name, message)) return; // Create and throw exception @@ -171,7 +171,7 @@ void Exceptions::_throw_msg(Thread* thread, const char* file, int line, symbolHa } // Throw an exception with a message and a cause -void Exceptions::_throw_msg_cause(Thread* thread, const char* file, int line, symbolHandle h_name, const char* message, Handle h_cause, Handle h_loader, Handle h_protection_domain) { +void Exceptions::_throw_msg_cause(Thread* thread, const char* file, int line, Symbol* h_name, const char* message, Handle h_cause, Handle h_loader, Handle h_protection_domain) { // Check for special boot-strapping/vm-thread handling if (special_exception(thread, file, line, h_name, message)) return; // Create and throw exception and init cause @@ -179,18 +179,9 @@ void Exceptions::_throw_msg_cause(Thread* thread, const char* file, int line, sy _throw(thread, file, line, h_exception, message); } -// This version creates handles and calls the other version -void Exceptions::_throw_msg(Thread* thread, const char* file, int line, - symbolOop name, const char* message) { - symbolHandle h_name(thread, name); - Handle h_loader(thread, NULL); - Handle h_protection_domain(thread, NULL); - Exceptions::_throw_msg(thread, file, line, h_name, message, h_loader, h_protection_domain); -} - // This version already has a handle for name void Exceptions::_throw_msg(Thread* thread, const char* file, int line, - symbolHandle name, const char* message) { + Symbol* name, const char* message) { Handle h_loader(thread, NULL); Handle h_protection_domain(thread, NULL); Exceptions::_throw_msg(thread, file, line, name, message, h_loader, h_protection_domain); @@ -198,13 +189,13 @@ void Exceptions::_throw_msg(Thread* thread, const char* file, int line, // This version already has a handle for name void Exceptions::_throw_msg_cause(Thread* thread, const char* file, int line, - symbolHandle name, const char* message, Handle cause) { + Symbol* name, const char* message, Handle cause) { Handle h_loader(thread, NULL); Handle h_protection_domain(thread, NULL); Exceptions::_throw_msg_cause(thread, file, line, name, message, cause, h_loader, h_protection_domain); } -void Exceptions::_throw_args(Thread* thread, const char* file, int line, symbolHandle h_name, symbolHandle h_signature, JavaCallArguments *args) { +void Exceptions::_throw_args(Thread* thread, const char* file, int line, Symbol* h_name, Symbol* h_signature, JavaCallArguments *args) { // Check for special boot-strapping/vm-thread handling if (special_exception(thread, file, line, h_name, NULL)) return; // Create and throw exception @@ -233,7 +224,7 @@ void Exceptions::throw_stack_overflow_exception(Thread* THREAD, const char* file _throw_oop(THREAD, file, line, exception()); } -void Exceptions::fthrow(Thread* thread, const char* file, int line, symbolHandle h_name, const char* format, ...) { +void Exceptions::fthrow(Thread* thread, const char* file, int line, Symbol* h_name, const char* format, ...) { const int max_msg_size = 1024; va_list ap; va_start(ap, format); @@ -247,8 +238,8 @@ void Exceptions::fthrow(Thread* thread, const char* file, int line, symbolHandle // Creates an exception oop, calls the method with the given signature. // and returns a Handle // Initializes the cause if cause non-null -Handle Exceptions::new_exception(Thread *thread, symbolHandle h_name, - symbolHandle signature, +Handle Exceptions::new_exception(Thread *thread, Symbol* h_name, + Symbol* signature, JavaCallArguments *args, Handle h_cause, Handle h_loader, Handle h_protection_domain) { @@ -275,7 +266,7 @@ Handle Exceptions::new_exception(Thread *thread, symbolHandle h_name, args->set_receiver(h_exception); // Call constructor JavaCalls::call_special(&result, klass, - vmSymbolHandles::object_initializer_name(), + vmSymbols::object_initializer_name(), signature, args, thread); @@ -292,8 +283,8 @@ Handle Exceptions::new_exception(Thread *thread, symbolHandle h_name, args1.set_receiver(h_exception); args1.push_oop(h_cause); JavaCalls::call_virtual(&result1, klass, - vmSymbolHandles::initCause_name(), - vmSymbolHandles::throwable_throwable_signature(), + vmSymbols::initCause_name(), + vmSymbols::throwable_throwable_signature(), &args1, thread); } @@ -309,15 +300,15 @@ Handle Exceptions::new_exception(Thread *thread, symbolHandle h_name, // Convenience method. Calls either the () or (String) method when // creating a new exception -Handle Exceptions::new_exception(Thread* thread, symbolHandle h_name, +Handle Exceptions::new_exception(Thread* thread, Symbol* h_name, const char* message, Handle h_cause, Handle h_loader, Handle h_protection_domain, ExceptionMsgToUtf8Mode to_utf8_safe) { JavaCallArguments args; - symbolHandle signature; + Symbol* signature = NULL; if (message == NULL) { - signature = vmSymbolHandles::void_method_signature(); + signature = vmSymbols::void_method_signature(); } else { // We want to allocate storage, but we can't do that if there's // a pending exception, so we preserve any pending exception @@ -348,7 +339,7 @@ Handle Exceptions::new_exception(Thread* thread, symbolHandle h_name, return incoming_exception; } args.push_oop(msg); - signature = vmSymbolHandles::string_void_signature(); + signature = vmSymbols::string_void_signature(); } return new_exception(thread, h_name, signature, &args, h_cause, h_loader, h_protection_domain); } @@ -362,15 +353,14 @@ Handle Exceptions::new_exception(Thread* thread, symbolHandle h_name, // point is to push this flag down to class java_lang_String since other // classes may need similar functionalities. Handle Exceptions::new_exception(Thread* thread, - symbolOop name, + Symbol* name, const char* message, ExceptionMsgToUtf8Mode to_utf8_safe) { - symbolHandle h_name(thread, name); Handle h_loader(thread, NULL); Handle h_prot(thread, NULL); Handle h_cause(thread, NULL); - return Exceptions::new_exception(thread, h_name, message, h_cause, h_loader, + return Exceptions::new_exception(thread, name, message, h_cause, h_loader, h_prot, to_utf8_safe); } diff --git a/hotspot/src/share/vm/utilities/exceptions.hpp b/hotspot/src/share/vm/utilities/exceptions.hpp index f0eca3b0d41..8651604be5c 100644 --- a/hotspot/src/share/vm/utilities/exceptions.hpp +++ b/hotspot/src/share/vm/utilities/exceptions.hpp @@ -50,8 +50,7 @@ class Thread; class Handle; -class symbolHandle; -class symbolOopDesc; +class Symbol; class JavaCallArguments; // The ThreadShadow class is a helper class to access the _pending_exception @@ -100,7 +99,7 @@ class ThreadShadow: public CHeapObj { class Exceptions { static bool special_exception(Thread *thread, const char* file, int line, Handle exception); - static bool special_exception(Thread* thread, const char* file, int line, symbolHandle name, const char* message); + static bool special_exception(Thread* thread, const char* file, int line, Symbol* name, const char* message); public: // this enum is defined to indicate whether it is safe to // ignore the encoding scheme of the original message string. @@ -112,38 +111,36 @@ class Exceptions { static void _throw_oop(Thread* thread, const char* file, int line, oop exception); static void _throw(Thread* thread, const char* file, int line, Handle exception, const char* msg = NULL); static void _throw_msg(Thread* thread, const char* file, int line, - symbolHandle name, const char* message, Handle loader, + Symbol* name, const char* message, Handle loader, Handle protection_domain); static void _throw_msg(Thread* thread, const char* file, int line, - symbolOop name, const char* message); - static void _throw_msg(Thread* thread, const char* file, int line, - symbolHandle name, const char* message); + Symbol* name, const char* message); static void _throw_args(Thread* thread, const char* file, int line, - symbolHandle name, symbolHandle signature, + Symbol* name, Symbol* signature, JavaCallArguments* args); static void _throw_msg_cause(Thread* thread, const char* file, - int line, symbolHandle h_name, const char* message, + int line, Symbol* h_name, const char* message, Handle h_cause, Handle h_loader, Handle h_protection_domain); static void _throw_msg_cause(Thread* thread, const char* file, int line, - symbolHandle name, const char* message, Handle cause); + Symbol* name, const char* message, Handle cause); // There is no THROW... macro for this method. Caller should remember // to do a return after calling it. - static void fthrow(Thread* thread, const char* file, int line, symbolHandle name, + static void fthrow(Thread* thread, const char* file, int line, Symbol* name, const char* format, ...); // Create and initialize a new exception - static Handle new_exception(Thread* thread, symbolHandle name, - symbolHandle signature, JavaCallArguments* args, + static Handle new_exception(Thread* thread, Symbol* name, + Symbol* signature, JavaCallArguments* args, Handle cause, Handle loader, Handle protection_domain); - static Handle new_exception(Thread* thread, symbolHandle name, + static Handle new_exception(Thread* thread, Symbol* name, const char* message, Handle cause, Handle loader, Handle protection_domain, ExceptionMsgToUtf8Mode to_utf8_safe = safe_to_utf8); - static Handle new_exception(Thread* thread, symbolOop name, + static Handle new_exception(Thread* thread, Symbol* name, const char* message, ExceptionMsgToUtf8Mode to_utf8_safe = safe_to_utf8); diff --git a/hotspot/src/share/vm/utilities/globalDefinitions.hpp b/hotspot/src/share/vm/utilities/globalDefinitions.hpp index 56a9043e546..820b6abcb7e 100644 --- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp +++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp @@ -328,6 +328,12 @@ extern int LogMinObjAlignmentInBytes; #ifdef TARGET_ARCH_zero # include "globalDefinitions_zero.hpp" #endif +#ifdef TARGET_ARCH_arm +# include "globalDefinitions_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "globalDefinitions_ppc.hpp" +#endif // The byte alignment to be used by Arena::Amalloc. See bugid 4169348. diff --git a/hotspot/src/share/vm/utilities/hashtable.cpp b/hotspot/src/share/vm/utilities/hashtable.cpp index 6dd9face555..aad68f13760 100644 --- a/hotspot/src/share/vm/utilities/hashtable.cpp +++ b/hotspot/src/share/vm/utilities/hashtable.cpp @@ -31,8 +31,9 @@ #include "utilities/hashtable.hpp" #include "utilities/hashtable.inline.hpp" + HS_DTRACE_PROBE_DECL4(hs_private, hashtable__new_entry, - void*, unsigned int, oop, void*); + void*, unsigned int, void*, void*); // This is a generic hashtable, designed to be used for the symbol // and string tables. @@ -67,62 +68,17 @@ BasicHashtableEntry* BasicHashtable::new_entry(unsigned int hashValue) { } -HashtableEntry* Hashtable::new_entry(unsigned int hashValue, oop obj) { - HashtableEntry* entry; +template HashtableEntry* Hashtable::new_entry(unsigned int hashValue, T obj) { + HashtableEntry* entry; - entry = (HashtableEntry*)BasicHashtable::new_entry(hashValue); - entry->set_literal(obj); // clears literal string field + entry = (HashtableEntry*)BasicHashtable::new_entry(hashValue); + entry->set_literal(obj); HS_DTRACE_PROBE4(hs_private, hashtable__new_entry, this, hashValue, obj, entry); return entry; } -// GC support - -void Hashtable::unlink(BoolObjectClosure* is_alive) { - // Readers of the table are unlocked, so we should only be removing - // entries at a safepoint. - assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint"); - for (int i = 0; i < table_size(); ++i) { - for (HashtableEntry** p = bucket_addr(i); *p != NULL; ) { - HashtableEntry* entry = *p; - if (entry->is_shared()) { - break; - } - assert(entry->literal() != NULL, "just checking"); - if (is_alive->do_object_b(entry->literal())) { - p = entry->next_addr(); - } else { - *p = entry->next(); - free_entry(entry); - } - } - } -} - - -void Hashtable::oops_do(OopClosure* f) { - for (int i = 0; i < table_size(); ++i) { - HashtableEntry** p = bucket_addr(i); - HashtableEntry* entry = bucket(i); - while (entry != NULL) { - f->do_oop(entry->literal_addr()); - - // Did the closure remove the literal from the table? - if (entry->literal() == NULL) { - assert(!entry->is_shared(), "immutable hashtable entry?"); - *p = entry->next(); - free_entry(entry); - } else { - p = entry->next_addr(); - } - entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); - } - } -} - - // Reverse the order of elements in the hash buckets. void BasicHashtable::reverse() { @@ -156,11 +112,7 @@ void BasicHashtable::copy_table(char** top, char* end) { *p != NULL; p = (*p)->next_addr()) { if (*top + entry_size() > end) { - warning("\nThe shared miscellaneous data space is not large " - "enough to \npreload requested classes. Use " - "-XX:SharedMiscDataSize= to increase \nthe initial " - "size of the miscellaneous data space.\n"); - exit(2); + report_out_of_shared_space(SharedMiscData); } *p = (BasicHashtableEntry*)memcpy(*top, *p, entry_size()); *top += entry_size(); @@ -181,15 +133,15 @@ void BasicHashtable::copy_table(char** top, char* end) { // Reverse the order of elements in the hash buckets. -void Hashtable::reverse(void* boundary) { +template void Hashtable::reverse(void* boundary) { for (int i = 0; i < table_size(); ++i) { - HashtableEntry* high_list = NULL; - HashtableEntry* low_list = NULL; - HashtableEntry* last_low_entry = NULL; - HashtableEntry* p = bucket(i); + HashtableEntry* high_list = NULL; + HashtableEntry* low_list = NULL; + HashtableEntry* last_low_entry = NULL; + HashtableEntry* p = bucket(i); while (p != NULL) { - HashtableEntry* next = p->next(); + HashtableEntry* next = p->next(); if ((void*)p->literal() >= boundary) { p->set_next(high_list); high_list = p; @@ -223,11 +175,7 @@ void BasicHashtable::copy_buckets(char** top, char* end) { *top += sizeof(intptr_t); if (*top + len > end) { - warning("\nThe shared miscellaneous data space is not large " - "enough to \npreload requested classes. Use " - "-XX:SharedMiscDataSize= to increase \nthe initial " - "size of the miscellaneous data space.\n"); - exit(2); + report_out_of_shared_space(SharedMiscData); } _buckets = (HashtableBucket*)memcpy(*top, _buckets, len); *top += len; @@ -236,11 +184,11 @@ void BasicHashtable::copy_buckets(char** top, char* end) { #ifndef PRODUCT -void Hashtable::print() { +template void Hashtable::print() { ResourceMark rm; for (int i = 0; i < table_size(); i++) { - HashtableEntry* entry = bucket(i); + HashtableEntry* entry = bucket(i); while(entry != NULL) { tty->print("%d : ", i); entry->literal()->print(); @@ -277,3 +225,10 @@ void BasicHashtable::verify_lookup_length(double load) { } #endif + +// Explicitly instantiate these types +template class Hashtable; +template class Hashtable; +template class Hashtable; +template class Hashtable; + diff --git a/hotspot/src/share/vm/utilities/hashtable.hpp b/hotspot/src/share/vm/utilities/hashtable.hpp index 632493e84b3..011da0b502a 100644 --- a/hotspot/src/share/vm/utilities/hashtable.hpp +++ b/hotspot/src/share/vm/utilities/hashtable.hpp @@ -27,7 +27,7 @@ #include "memory/allocation.hpp" #include "oops/oop.hpp" -#include "oops/symbolOop.hpp" +#include "oops/symbol.hpp" #include "runtime/handles.hpp" // This is a generic hashtable, designed to be used for the symbol @@ -96,16 +96,16 @@ public: -class HashtableEntry : public BasicHashtableEntry { +template class HashtableEntry : public BasicHashtableEntry { friend class VMStructs; private: - oop _literal; // ref to item in table. + T _literal; // ref to item in table. public: // Literal - oop literal() const { return _literal; } - oop* literal_addr() { return &_literal; } - void set_literal(oop s) { _literal = s; } + T literal() const { return _literal; } + T* literal_addr() { return &_literal; } + void set_literal(T s) { _literal = s; } HashtableEntry* next() const { return (HashtableEntry*)BasicHashtableEntry::next(); @@ -159,6 +159,8 @@ public: // Reverse the order of elements in each of the buckets. void reverse(); + static unsigned int hash_symbol(const char* s, int len); + private: // Instance variables int _table_size; @@ -205,7 +207,7 @@ public: }; -class Hashtable : public BasicHashtable { +template class Hashtable : public BasicHashtable { friend class VMStructs; public: @@ -216,16 +218,9 @@ public: HashtableBucket* buckets, int number_of_entries) : BasicHashtable(table_size, entry_size, buckets, number_of_entries) { } - // Invoke "f->do_oop" on the locations of all oops in the table. - void oops_do(OopClosure* f); - // Debugging void print() PRODUCT_RETURN; - // GC support - // Delete pointers to otherwise-unreachable objects. - void unlink(BoolObjectClosure* cl); - // Reverse the order of elements in each of the buckets. Hashtable // entries which refer to objects at a lower address than 'boundary' // are separated from those which refer to objects at higher @@ -234,45 +229,43 @@ public: protected: - static unsigned int hash_symbol(const char* s, int len); - - unsigned int compute_hash(symbolHandle name) { + unsigned int compute_hash(Symbol* name) { return (unsigned int) name->identity_hash(); } - int index_for(symbolHandle name) { + int index_for(Symbol* name) { return hash_to_index(compute_hash(name)); } // Table entry management - HashtableEntry* new_entry(unsigned int hashValue, oop obj); + HashtableEntry* new_entry(unsigned int hashValue, T obj); // The following method is MT-safe and may be used with caution. - HashtableEntry* bucket(int i) { - return (HashtableEntry*)BasicHashtable::bucket(i); + HashtableEntry* bucket(int i) { + return (HashtableEntry*)BasicHashtable::bucket(i); } // The following method is not MT-safe and must be done under lock. - HashtableEntry** bucket_addr(int i) { - return (HashtableEntry**)BasicHashtable::bucket_addr(i); + HashtableEntry** bucket_addr(int i) { + return (HashtableEntry**)BasicHashtable::bucket_addr(i); } }; // Verions of hashtable where two handles are used to compute the index. -class TwoOopHashtable : public Hashtable { +template class TwoOopHashtable : public Hashtable { friend class VMStructs; protected: TwoOopHashtable(int table_size, int entry_size) - : Hashtable(table_size, entry_size) {} + : Hashtable(table_size, entry_size) {} TwoOopHashtable(int table_size, int entry_size, HashtableBucket* t, int number_of_entries) - : Hashtable(table_size, entry_size, t, number_of_entries) {} + : Hashtable(table_size, entry_size, t, number_of_entries) {} public: - unsigned int compute_hash(symbolHandle name, Handle loader) { + unsigned int compute_hash(Symbol* name, Handle loader) { // Be careful with identity_hash(), it can safepoint and if this // were one expression, the compiler could choose to unhandle each // oop before calling identity_hash() for either of them. If the first @@ -282,7 +275,7 @@ public: return name_hash ^ loader_hash; } - int index_for(symbolHandle name, Handle loader) { + int index_for(Symbol* name, Handle loader) { return hash_to_index(compute_hash(name, loader)); } }; diff --git a/hotspot/src/share/vm/utilities/hashtable.inline.hpp b/hotspot/src/share/vm/utilities/hashtable.inline.hpp index 41cbdf38aa0..09995537b2b 100644 --- a/hotspot/src/share/vm/utilities/hashtable.inline.hpp +++ b/hotspot/src/share/vm/utilities/hashtable.inline.hpp @@ -41,7 +41,7 @@ // hash P(31) from Kernighan & Ritchie -inline unsigned int Hashtable::hash_symbol(const char* s, int len) { +inline unsigned int BasicHashtable::hash_symbol(const char* s, int len) { unsigned int h = 0; while (len-- > 0) { h = 31*h + (unsigned) *s; diff --git a/hotspot/src/share/vm/utilities/macros.hpp b/hotspot/src/share/vm/utilities/macros.hpp index f46da8efa91..808b9d0ce26 100644 --- a/hotspot/src/share/vm/utilities/macros.hpp +++ b/hotspot/src/share/vm/utilities/macros.hpp @@ -46,7 +46,7 @@ #define SERVICES_KERNEL #define KERNEL_RETURN {} -#define KERNEL_RETURN_(code) { code } +#define KERNEL_RETURN_(code) { return code; } #else // KERNEL diff --git a/hotspot/src/share/vm/utilities/ostream.cpp b/hotspot/src/share/vm/utilities/ostream.cpp index acad5fda1e4..897dba137ac 100644 --- a/hotspot/src/share/vm/utilities/ostream.cpp +++ b/hotspot/src/share/vm/utilities/ostream.cpp @@ -314,6 +314,11 @@ fileStream::fileStream(const char* file_name) { _need_close = true; } +fileStream::fileStream(const char* file_name, const char* opentype) { + _file = fopen(file_name, opentype); + _need_close = true; +} + void fileStream::write(const char* s, size_t len) { if (_file != NULL) { // Make an unused local variable to avoid warning from gcc 4.x compiler. @@ -322,6 +327,25 @@ void fileStream::write(const char* s, size_t len) { update_position(s, len); } +long fileStream::fileSize() { + long size = -1; + if (_file != NULL) { + long pos = ::ftell(_file); + if (::fseek(_file, 0, SEEK_END) == 0) { + size = ::ftell(_file); + } + ::fseek(_file, pos, SEEK_SET); + } + return size; +} + +char* fileStream::readln(char *data, int count ) { + char * ret = ::fgets(data, count, _file); + //Get rid of annoying \n char + data[::strlen(data)-1] = '\0'; + return ret; +} + fileStream::~fileStream() { if (_file != NULL) { if (_need_close) fclose(_file); diff --git a/hotspot/src/share/vm/utilities/ostream.hpp b/hotspot/src/share/vm/utilities/ostream.hpp index fd86a8da9e7..1776a5b98e7 100644 --- a/hotspot/src/share/vm/utilities/ostream.hpp +++ b/hotspot/src/share/vm/utilities/ostream.hpp @@ -159,10 +159,17 @@ class fileStream : public outputStream { bool _need_close; public: fileStream(const char* file_name); + fileStream(const char* file_name, const char* opentype); fileStream(FILE* file) { _file = file; _need_close = false; } ~fileStream(); bool is_open() const { return _file != NULL; } + void set_need_close(bool b) { _need_close = b;} virtual void write(const char* c, size_t len); + size_t read(void *data, size_t size, size_t count) { return ::fread(data, size, count, _file); } + char* readln(char *data, int count); + int eof() { return feof(_file); } + long fileSize(); + void rewind() { ::rewind(_file); } void flush(); }; diff --git a/hotspot/src/share/vm/utilities/taskqueue.hpp b/hotspot/src/share/vm/utilities/taskqueue.hpp index 8cfd83df395..79f293444d9 100644 --- a/hotspot/src/share/vm/utilities/taskqueue.hpp +++ b/hotspot/src/share/vm/utilities/taskqueue.hpp @@ -47,6 +47,12 @@ #ifdef TARGET_OS_ARCH_windows_x86 # include "orderAccess_windows_x86.inline.hpp" #endif +#ifdef TARGET_OS_ARCH_linux_arm +# include "orderAccess_linux_arm.inline.hpp" +#endif +#ifdef TARGET_OS_ARCH_linux_ppc +# include "orderAccess_linux_ppc.inline.hpp" +#endif // Simple TaskQueue stats that are collected by default in debug builds. diff --git a/hotspot/src/share/vm/utilities/utf8.cpp b/hotspot/src/share/vm/utilities/utf8.cpp index 7235aa5a380..c8c630032b9 100644 --- a/hotspot/src/share/vm/utilities/utf8.cpp +++ b/hotspot/src/share/vm/utilities/utf8.cpp @@ -164,7 +164,7 @@ void UTF8::convert_to_unicode(const char* utf8_str, jchar* unicode_str, int unic // Returns NULL if 'c' it not found. This only works as long // as 'c' is an ASCII character -jbyte* UTF8::strrchr(jbyte* base, int length, jbyte c) { +const jbyte* UTF8::strrchr(const jbyte* base, int length, jbyte c) { assert(length >= 0, "sanity check"); assert(c >= 0, "does not work for non-ASCII characters"); // Skip backwards in string until 'c' is found or end is reached @@ -172,7 +172,7 @@ jbyte* UTF8::strrchr(jbyte* base, int length, jbyte c) { return (length < 0) ? NULL : &base[length]; } -bool UTF8::equal(jbyte* base1, int length1, jbyte* base2, int length2) { +bool UTF8::equal(const jbyte* base1, int length1, const jbyte* base2, int length2) { // Length must be the same if (length1 != length2) return false; for (int i = 0; i < length1; i++) { diff --git a/hotspot/src/share/vm/utilities/utf8.hpp b/hotspot/src/share/vm/utilities/utf8.hpp index 7e2158b16dc..182b6335e1e 100644 --- a/hotspot/src/share/vm/utilities/utf8.hpp +++ b/hotspot/src/share/vm/utilities/utf8.hpp @@ -51,8 +51,8 @@ class UTF8 : AllStatic { static char* next_character(const char* str, jint* value); // Utility methods - static jbyte* strrchr(jbyte* base, int length, jbyte c); - static bool equal(jbyte* base1, int length1, jbyte* base2, int length2); + static const jbyte* strrchr(const jbyte* base, int length, jbyte c); + static bool equal(const jbyte* base1, int length1, const jbyte* base2,int length2); static bool is_supplementary_character(const unsigned char* str); static jint get_supplementary_character(const unsigned char* str); }; diff --git a/hotspot/src/share/vm/utilities/vmError.cpp b/hotspot/src/share/vm/utilities/vmError.cpp index 662e5a7c91a..9785d649d08 100644 --- a/hotspot/src/share/vm/utilities/vmError.cpp +++ b/hotspot/src/share/vm/utilities/vmError.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -35,6 +35,7 @@ #include "utilities/debug.hpp" #include "utilities/decoder.hpp" #include "utilities/defaultStream.hpp" +#include "utilities/errorReporter.hpp" #include "utilities/top.hpp" #include "utilities/vmError.hpp" @@ -200,6 +201,15 @@ static void print_bug_submit_message(outputStream *out, Thread *thread) { out->print_raw_cr("#"); } +bool VMError::coredump_status; +char VMError::coredump_message[O_BUFLEN]; + +void VMError::report_coredump_status(const char* message, bool status) { + coredump_status = status; + strncpy(coredump_message, message, sizeof(coredump_message)); + coredump_message[sizeof(coredump_message)-1] = 0; +} + // Return a string to describe the error char* VMError::error_string(char* buf, int buflen) { @@ -453,6 +463,15 @@ void VMError::report(outputStream* st) { st->cr(); st->print_cr("#"); } + STEP(63, "(printing core file information)") + st->print("# "); + if (coredump_status) { + st->print("Core dump written. Default location: %s", coredump_message); + } else { + st->print("Failed to write core dump. %s", coredump_message); + } + st->print_cr(""); + st->print_cr("#"); STEP(65, "(printing bug submit message)") @@ -769,6 +788,7 @@ void VMError::report_and_die() { // then save detailed information in log file (verbose = true). static bool out_done = false; // done printing to standard out static bool log_done = false; // done saving error log + static bool transmit_report_done = false; // done error reporting static fdStream log; // error log if (SuppressFatalErrorMessage) { @@ -790,6 +810,9 @@ void VMError::report_and_die() { ShowMessageBoxOnError = false; } + // Write a minidump on Windows, check core dump limits on Linux/Solaris + os::check_or_create_dump(_siginfo, _context, buffer, sizeof(buffer)); + // reset signal handlers or exception filter; make sure recursive crashes // are handled properly. reset_signal_handlers(); @@ -859,7 +882,7 @@ void VMError::report_and_die() { bool copy_ok = Arguments::copy_expand_pid(ErrorFile, strlen(ErrorFile), buffer, sizeof(buffer)); if (copy_ok) { - fd = open(buffer, O_WRONLY | O_CREAT | O_TRUNC, 0666); + fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666); } } @@ -870,7 +893,7 @@ void VMError::report_and_die() { // so use the default name in the current directory jio_snprintf(&buffer[len], sizeof(buffer)-len, "%shs_err_pid%u.log", os::file_separator(), os::current_process_id()); - fd = open(buffer, O_WRONLY | O_CREAT | O_TRUNC, 0666); + fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666); } if (fd == -1) { @@ -879,7 +902,7 @@ void VMError::report_and_die() { if (tmpdir != NULL && tmpdir[0] != '\0') { jio_snprintf(buffer, sizeof(buffer), "%s%shs_err_pid%u.log", tmpdir, os::file_separator(), os::current_process_id()); - fd = open(buffer, O_WRONLY | O_CREAT | O_TRUNC, 0666); + fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666); } } @@ -892,6 +915,9 @@ void VMError::report_and_die() { } else { out.print_raw_cr("# Can not save log file, dump to screen.."); log.set_fd(defaultStream::output_fd()); + /* Error reporting currently needs dumpfile. + * Maybe implement direct streaming in the future.*/ + transmit_report_done = true; } } @@ -900,6 +926,16 @@ void VMError::report_and_die() { first_error->_current_step = 0; // reset current_step first_error->_current_step_info = ""; // reset current_step string + // Run error reporting to determine whether or not to report the crash. + if (!transmit_report_done && should_report_bug(first_error->_id)) { + transmit_report_done = true; + FILE* hs_err = ::fdopen(log.fd(), "r"); + if (NULL != hs_err) { + ErrorReporter er; + er.call(hs_err, buffer, O_BUFLEN); + } + } + if (log.fd() != defaultStream::output_fd()) { close(log.fd()); } diff --git a/hotspot/src/share/vm/utilities/vmError.hpp b/hotspot/src/share/vm/utilities/vmError.hpp index e9d60b3a121..28f486940a4 100644 --- a/hotspot/src/share/vm/utilities/vmError.hpp +++ b/hotspot/src/share/vm/utilities/vmError.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -67,6 +67,14 @@ class VMError : public StackObj { static VMError* volatile first_error; static volatile jlong first_error_tid; + // Core dump status, false if we have been unable to write a core/minidump for some reason + static bool coredump_status; + + // When coredump_status is set to true this will contain the name/path to the core/minidump, + // if coredump_status if false, this will (hopefully) contain a useful error explaining why + // no core/minidump has been written to disk + static char coredump_message[O_BUFLEN]; + // used by reporting about OOM size_t _size; @@ -106,6 +114,9 @@ public: // return a string to describe the error char *error_string(char* buf, int buflen); + // Report status of core/minidump + static void report_coredump_status(const char* message, bool status); + // main error reporting function void report_and_die(); diff --git a/hotspot/src/share/vm/utilities/xmlstream.cpp b/hotspot/src/share/vm/utilities/xmlstream.cpp index 10db73c11e0..8d6a0483970 100644 --- a/hotspot/src/share/vm/utilities/xmlstream.cpp +++ b/hotspot/src/share/vm/utilities/xmlstream.cpp @@ -422,17 +422,17 @@ void xmlStream::klass_text(KlassHandle klass) { klass->name()->print_symbol_on(out()); } -void xmlStream::name(symbolHandle name) { +void xmlStream::name(const Symbol* name) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (name.is_null()) return; + if (name == NULL) return; print_raw(" name='"); name_text(name); print_raw("'"); } -void xmlStream::name_text(symbolHandle name) { +void xmlStream::name_text(const Symbol* name) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (name.is_null()) return; + if (name == NULL) return; //name->print_short_name(text()); name->print_symbol_on(text()); } @@ -455,8 +455,6 @@ void xmlStream::object_text(Handle x) { method_text(methodOop(x())); else if (x->is_klass()) klass_text(klassOop(x())); - else if (x->is_symbol()) - name_text(symbolOop(x())); else x->print_value_on(text()); } diff --git a/hotspot/src/share/vm/utilities/xmlstream.hpp b/hotspot/src/share/vm/utilities/xmlstream.hpp index a4450b9ab45..a2f39317a4a 100644 --- a/hotspot/src/share/vm/utilities/xmlstream.hpp +++ b/hotspot/src/share/vm/utilities/xmlstream.hpp @@ -139,13 +139,13 @@ class xmlStream : public outputStream { void stamp(); // stamp='1.234' void method(methodHandle m); // method='k n s' ... void klass(KlassHandle k); // klass='name' - void name(symbolHandle s); // name='name' + void name(const Symbol* s); // name='name' void object(const char* attr, Handle val); // print the text alone (sans ''): void method_text(methodHandle m); void klass_text(KlassHandle k); // klass='name' - void name_text(symbolHandle s); // name='name' + void name_text(const Symbol* s); // name='name' void object_text(Handle x); /* Example uses: diff --git a/jaxp/.hgtags b/jaxp/.hgtags index 8078946bf78..add6fe9aec2 100644 --- a/jaxp/.hgtags +++ b/jaxp/.hgtags @@ -102,3 +102,5 @@ e2aedea6495d61557326928de20dbb2d78fdd9aa jdk7-b123 6c9bdee0cc3a8912acc5189cc092b8cba6851f9d jdk7-b125 2fde639439c1fb3fbc44f533d48bb2916e813312 jdk7-b126 c532d6dbc8d18d55b5d693599ee5cd8250e16eb4 jdk7-b127 +a42c6132c746c86e9fc27ec80cbd699f6ee5edca jdk7-b128 +f5b60c5a310f992c6ca627d17ca3e042f0e0b2c3 jdk7-b129 diff --git a/jaxws/.hgtags b/jaxws/.hgtags index 3f097d53596..300f7bca8a7 100644 --- a/jaxws/.hgtags +++ b/jaxws/.hgtags @@ -102,3 +102,5 @@ a4f2e1ca67163ef79555082809d7cd719893c338 jdk7-b120 d72eea121c3bc2b649272a37b80d9417855b7146 jdk7-b125 6d772c5119d5e247bc98a57ce8b1be121554ee0a jdk7-b126 ef19f173578c804772d586a959fa3ab8a12c0598 jdk7-b127 +88d74afc55938033e744b537a22714bb2c82c9c0 jdk7-b128 +0f7b39ad902424e949e3d2dca8411b884888a76f jdk7-b129 diff --git a/jdk/.hgtags b/jdk/.hgtags index 684719db0b2..453018dc5fe 100644 --- a/jdk/.hgtags +++ b/jdk/.hgtags @@ -103,3 +103,5 @@ ac311eb325bfc763698219252bf3cee9e091f3af jdk7-b122 8361ef97a0f90086c9048beaf7cea1a37216c4cd jdk7-b126 29e09de1d0b4f84faea114cf10b3ec08b59acc4e jdk7-b127 f08682e23279d6cccbdcafda1eb0647ba4900874 jdk7-b128 +14cd5d54a8d0b9c368d60ea83a066735b9931015 jdk7-b129 +bdc069d3f9101f89ec3f81c2950ee2d68fa846d3 jdk7-b130 diff --git a/jdk/make/common/shared/Defs-versions.gmk b/jdk/make/common/shared/Defs-versions.gmk index a51cb2b75d5..5bfd708485f 100644 --- a/jdk/make/common/shared/Defs-versions.gmk +++ b/jdk/make/common/shared/Defs-versions.gmk @@ -208,7 +208,7 @@ ifeq ($(PLATFORM), windows) endif # Generic -REQUIRED_ANT_VER = 1.6.3 +REQUIRED_ANT_VER = 1.7.1 REQUIRED_BOOT_VER = 1.6 REQUIRED_FREETYPE_VERSION = 2.3.0 REQUIRED_MAKE_VER = 3.81 diff --git a/jdk/make/common/shared/Defs-windows.gmk b/jdk/make/common/shared/Defs-windows.gmk index e1af407680d..461913ac9dc 100644 --- a/jdk/make/common/shared/Defs-windows.gmk +++ b/jdk/make/common/shared/Defs-windows.gmk @@ -86,17 +86,25 @@ override INCREMENTAL_BUILD = false # ifdef USING_CYGWIN +# Macro to effectively do a toupper without an exec +define ToUpper +$(subst a,A,$(subst b,B,$(subst c,C,$(subst d,D,$(subst e,E,$(subst f,F,\ +$(subst g,G,$(subst h,H,$(subst i,I,$(subst j,J,$(subst k,K,$(subst l,L,\ +$(subst m,M,$(subst n,N,$(subst o,O,$(subst p,P,$(subst q,Q,$(subst r,R,\ +$(subst s,S,$(subst t,T,$(subst u,U,$(subst v,V,$(subst w,W,$(subst x,X,\ +$(subst y,Y,$(subst z,Z,$1)))))))))))))))))))))))))) +endef # All possible drive letters drives=a b c d e f g h i j k l m n o p q r s t v u w x y z # Convert /cygdrive/ paths to the mixed style without an exec of cygpath -# Must be a path with no spaces. +# Must be a path with no spaces. /cygdrive/letter is always lowercase +# and letter:/ is always uppercase coming from cygpath. define MixedPath -$(patsubst /%,c:/cygwin/%,$(sort $(filter-out /cygdrive/%,$(foreach drive,$(drives),$(patsubst /cygdrive/$(drive)/%,$(drive):/%,$1))))) +$(patsubst /%,$(CYGWIN_HOME)/%,$(sort $(filter-out /cygdrive/%,$(foreach drive,$(drives),$(patsubst /cygdrive/$(drive)/%,$(call ToUpper,$(drive)):/%,$1))))) endef # Use FullPath to get C:/ style non-spaces path. Never ends with a /! # We assume cygpath is available in the search path # NOTE: Use of 'pwd' with CYGWIN will not get you a mixed style path! -CYGPATH_CMD=cygpath -a -s -m define FullPath $(if $(word 2,$1),$(shell $(CYGPATH_CMD) $1 2> $(DEV_NULL)),$(call MixedPath,$(realpath $(subst ",,$1)))) endef @@ -125,10 +133,15 @@ _system_drive:=$(call CheckValue,_system_drive,C:) # UNIXCOMMAND_PATH: path to where the most common Unix commands are. # NOTE: Must end with / so that it could be empty, allowing PATH usage. +# With cygwin, just use this as is don't use FullPath on it. ifdef ALT_UNIXCOMMAND_PATH - xALT_UNIXCOMMAND_PATH :="$(subst \,/,$(ALT_UNIXCOMMAND_PATH))" - fxALT_UNIXCOMMAND_PATH :=$(call FullPath,$(xALT_UNIXCOMMAND_PATH)) - UNIXCOMMAND_PATH :=$(call PrefixPath,$(fxALT_UNIXCOMMAND_PATH)) + ifdef USING_CYGWIN + UNIXCOMMAND_PATH :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH)) + else + xALT_UNIXCOMMAND_PATH :="$(subst \,/,$(ALT_UNIXCOMMAND_PATH))" + fxALT_UNIXCOMMAND_PATH :=$(call FullPath,$(xALT_UNIXCOMMAND_PATH)) + UNIXCOMMAND_PATH :=$(call PrefixPath,$(fxALT_UNIXCOMMAND_PATH)) + endif else ifdef USING_CYGWIN UNIXCOMMAND_PATH :=$(call PrefixPath,/usr/bin) @@ -459,9 +472,11 @@ else endif # SLASH_JAVA: location of all network accessable files +# NOTE: Do not use FullPath on this because it's often a drive letter and +# plain drive letters are ambiguous, so just use this 'as is'. ifdef ALT_SLASH_JAVA xALT_SLASH_JAVA :="$(subst \,/,$(ALT_SLASH_JAVA))" - SLASH_JAVA :=$(call FullPath,$(xALT_SLASH_JAVA)) + SLASH_JAVA :=$(xALT_SLASH_JAVA) else ifdef ALT_JDK_JAVA_DRIVE SLASH_JAVA =$(JDK_JAVA_DRIVE) @@ -751,7 +766,11 @@ ifeq ($(VS2010_EXISTS),true) # we do not or cannot redistribute. # List of filenames we should NOT be dependent on -BANNED_DLLS=msvcp100[.]dll|msvcr100d[.]dll|msvcrtd[.]dll +ifeq ($(MFC_DEBUG),true) + BANNED_DLLS=msvcp100[.]dll +else + BANNED_DLLS=msvcp100[.]dll|msvcr100d[.]dll|msvcrtd[.]dll +endif # Macro to check it's input file for banned dependencies and verify the # binary was built properly. Relies on process exit code. @@ -771,7 +790,7 @@ define binary_file_verification # binary_file fi ; \ $(ECHO) "Checking for banned dependencies in: $1" && \ if [ "`$(DUMPBIN) /dependents $1 | $(EGREP) -i '$(BANNED_DLLS)'`" != "" ] ; then \ - $(ECHO) "ERROR: Found us of $(BANNED_DLLS)"; \ + $(ECHO) "ERROR: Found use of $(BANNED_DLLS)"; \ $(DUMPBIN) /dependents $1 ; \ exit 9 ; \ fi ; \ diff --git a/jdk/make/common/shared/Defs.gmk b/jdk/make/common/shared/Defs.gmk index aae5e6d85f0..587f1ad1911 100644 --- a/jdk/make/common/shared/Defs.gmk +++ b/jdk/make/common/shared/Defs.gmk @@ -54,11 +54,12 @@ include $(JDK_MAKE_SHARED_DIR)/Defs-utils.gmk # Assumes ARCH, PLATFORM, ARCH_VM_SUBDIR, JDK_TOPDIR, etc. have been defined. # Simple pwd path +# NOTE: Just use the shell's cd and pwd here, more reliable at sanity time. define PwdPath -$(shell $(CD) $1 2> $(DEV_NULL) && $(PWD)) +$(shell cd $1 2> $(DEV_NULL) && pwd) endef define AbsPwdPathCheck -$(shell $(CD) .. 2> $(DEV_NULL) && $(CD) $1 2> $(DEV_NULL) && $(PWD)) +$(shell cd .. 2> $(DEV_NULL) && cd $1 2> $(DEV_NULL) && pwd) endef # Checks an ALT value for spaces (should be one word), diff --git a/jdk/make/common/shared/Platform.gmk b/jdk/make/common/shared/Platform.gmk index dc1463cc6e2..91326a9f794 100644 --- a/jdk/make/common/shared/Platform.gmk +++ b/jdk/make/common/shared/Platform.gmk @@ -72,7 +72,11 @@ PLATFORM_SHARED=done # USING_CYGWIN windows only: true or false # ISHIELD_TEMP_MIN windows only: minimum disk space in temp area -SYSTEM_UNAME := $(shell uname) +# Only run uname once in this make session. +ifndef SYSTEM_UNAME + SYSTEM_UNAME := $(shell uname) + export SYSTEM_UNAME +endif # # Prune out all known SCM (Source Code Management) directories @@ -222,6 +226,12 @@ ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME))) PLATFORM = windows USING_CYGWIN = true export USING_CYGWIN + CYGPATH_CMD=cygpath -a -s -m + # Only run "cygpath /" once in this make session. + ifndef CYGWIN_HOME + CYGWIN_HOME := $(shell $(CYGPATH_CMD) /) + export CYGWIN_HOME + endif endif # Platform settings specific to Windows @@ -235,7 +245,12 @@ ifeq ($(PLATFORM), windows) # And sometimes PROCESSOR_IDENTIFIER is not defined at all # (in some restricted shells), so we use uname if we have to. ifeq ($(PROCESSOR_IDENTIFIER),) - PROC_ARCH:=$(shell uname -m) + # Only run uname -m once in this make session. + ifndef SYSTEM_UNAME_M + SYSTEM_UNAME_M := $(shell uname -m) + export SYSTEM_UNAME_M + endif + PROC_ARCH:=$(SYSTEM_UNAME_M) else PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER)) endif diff --git a/jdk/make/common/shared/Sanity.gmk b/jdk/make/common/shared/Sanity.gmk index 0cf3433f9dc..6883d9ce7ec 100644 --- a/jdk/make/common/shared/Sanity.gmk +++ b/jdk/make/common/shared/Sanity.gmk @@ -255,10 +255,10 @@ endif MAKE_CHECK :=$(call CheckVersions,$(MAKE_VER),$(REQUIRED_MAKE_VER)) sane-make: @if [ "$(MAKE_CHECK)" != "same" -a "$(MAKE_CHECK)" != "newer" ]; then \ - $(ECHO) "WARNING: The version of make being used is older than \n" \ + $(ECHO) "ERROR: The version of make being used is older than \n" \ " the required version of '$(REQUIRED_MAKE_VER)'. \n" \ " The version of make found was '$(MAKE_VER)'. \n" \ - "" >> $(WARNING_FILE) ; \ + "" >> $(ERROR_FILE) ; \ fi ###################################################### @@ -1259,10 +1259,10 @@ ANT_CHECK :=$(call CheckVersions,$(ANT_VER),$(REQUIRED_ANT_VER)) sane-ant_version: @if [ "$(ANT_CHECK)" != "same" \ -a "$(ANT_CHECK)" != "newer" ]; then \ - $(ECHO) "WARNING: The version of ant being used is older than \n" \ + $(ECHO) "ERROR: The version of ant being used is older than \n" \ " the required version of '$(REQUIRED_ANT_VER)'. \n" \ " The version of ant found was '$(ANT_VER)'. \n" \ - "" >> $(WARNING_FILE) ; \ + "" >> $(ERROR_FILE) ; \ fi ###################################################### diff --git a/jdk/make/java/java/FILES_java.gmk b/jdk/make/java/java/FILES_java.gmk index 47179069c17..fdd4b551912 100644 --- a/jdk/make/java/java/FILES_java.gmk +++ b/jdk/make/java/java/FILES_java.gmk @@ -443,7 +443,6 @@ JAVA_JAVA_java = \ java/io/FileReader.java \ java/io/PipedReader.java \ java/io/StringReader.java \ - java/io/TempFileHelper.java \ java/io/Writer.java \ java/io/BufferedWriter.java \ java/io/PrintWriter.java \ diff --git a/jdk/make/java/nio/FILES_java.gmk b/jdk/make/java/nio/FILES_java.gmk index cb416fe0932..9fbeafb48a3 100644 --- a/jdk/make/java/nio/FILES_java.gmk +++ b/jdk/make/java/nio/FILES_java.gmk @@ -81,12 +81,12 @@ FILES_src = \ java/nio/file/ClosedDirectoryStreamException.java \ java/nio/file/ClosedFileSystemException.java \ java/nio/file/ClosedWatchServiceException.java \ + java/nio/file/CopyMoveHelper.java \ java/nio/file/CopyOption.java \ java/nio/file/DirectoryIteratorException.java \ java/nio/file/DirectoryNotEmptyException.java \ java/nio/file/DirectoryStream.java \ java/nio/file/FileAlreadyExistsException.java \ - java/nio/file/FileRef.java \ java/nio/file/FileStore.java \ java/nio/file/FileSystem.java \ java/nio/file/FileSystemAlreadyExistsException.java \ @@ -116,6 +116,7 @@ FILES_src = \ java/nio/file/StandardCopyOption.java \ java/nio/file/StandardOpenOption.java \ java/nio/file/StandardWatchEventKind.java \ + java/nio/file/TempFileHelper.java \ java/nio/file/WatchEvent.java \ java/nio/file/WatchKey.java \ java/nio/file/WatchService.java \ @@ -127,7 +128,6 @@ FILES_src = \ java/nio/file/attribute/AclEntryType.java \ java/nio/file/attribute/AclFileAttributeView.java \ java/nio/file/attribute/AttributeView.java \ - java/nio/file/attribute/Attributes.java \ java/nio/file/attribute/BasicFileAttributeView.java \ java/nio/file/attribute/BasicFileAttributes.java \ java/nio/file/attribute/DosFileAttributeView.java \ @@ -136,8 +136,6 @@ FILES_src = \ java/nio/file/attribute/FileAttributeView.java \ java/nio/file/attribute/FileOwnerAttributeView.java \ java/nio/file/attribute/FileStoreAttributeView.java \ - java/nio/file/attribute/FileStoreSpaceAttributeView.java \ - java/nio/file/attribute/FileStoreSpaceAttributes.java \ java/nio/file/attribute/FileTime.java \ java/nio/file/attribute/GroupPrincipal.java \ java/nio/file/attribute/UserDefinedFileAttributeView.java \ @@ -246,6 +244,7 @@ FILES_src = \ sun/nio/fs/AbstractAclFileAttributeView.java \ sun/nio/fs/AbstractBasicFileAttributeView.java \ sun/nio/fs/AbstractFileTypeDetector.java \ + sun/nio/fs/AbstractFileSystemProvider.java \ sun/nio/fs/AbstractPath.java \ sun/nio/fs/AbstractPoller.java \ sun/nio/fs/AbstractUserDefinedFileAttributeView.java \ diff --git a/jdk/make/modules/modules.config b/jdk/make/modules/modules.config index f7910378ab5..2d5d785bf46 100644 --- a/jdk/make/modules/modules.config +++ b/jdk/make/modules/modules.config @@ -771,12 +771,7 @@ module client { /**************************************************************************/ -module jkernel { - include sun.jkernel.*; -} - module deploy { - include jkernel; // For now, all plugin and JNLP include com.sun.java.browser.**, diff --git a/jdk/make/netbeans/common/java-data-native.ent b/jdk/make/netbeans/common/java-data-native.ent index c968584892b..831bf255245 100644 --- a/jdk/make/netbeans/common/java-data-native.ent +++ b/jdk/make/netbeans/common/java-data-native.ent @@ -31,7 +31,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --> - + ${root}/src/share/classes ${root}/src/windows/classes @@ -39,6 +39,6 @@ ${bootstrap.jdk}/jre/lib/rt.jar ${root}/build/${platform}-${arch}/classes ${root}/build/javadoc/${name} - 1.5 + 1.7 diff --git a/jdk/make/netbeans/common/java-data-no-native.ent b/jdk/make/netbeans/common/java-data-no-native.ent index e7717f2d398..fdc06cfca34 100644 --- a/jdk/make/netbeans/common/java-data-no-native.ent +++ b/jdk/make/netbeans/common/java-data-no-native.ent @@ -31,12 +31,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --> - + ${root}/src/share/classes ${bootstrap.jdk}/jre/lib/rt.jar ${root}/build/${platform}-${arch}/classes ${root}/build/javadoc/${name} - 1.5 + 1.7 diff --git a/jdk/make/sun/Makefile b/jdk/make/sun/Makefile index 0e8bb3e4220..cac9b8781d6 100644 --- a/jdk/make/sun/Makefile +++ b/jdk/make/sun/Makefile @@ -74,8 +74,7 @@ SUBDIRS_desktop = audio $(RENDER_SUBDIR) image \ $(HEADLESS_SUBDIR) $(DGA_SUBDIR) \ jawt font jpeg cmm applet beans SUBDIRS_management = management -SUBDIRS_misc = jkernel $(ORG_SUBDIR) \ - rmi $(JDBC_SUBDIR) tracing +SUBDIRS_misc = $(ORG_SUBDIR) rmi $(JDBC_SUBDIR) tracing SUBDIRS_tools = native2ascii serialver tools jconsole include $(BUILDDIR)/common/Subdirs.gmk diff --git a/jdk/make/sun/jkernel/Makefile b/jdk/make/sun/jkernel/Makefile deleted file mode 100644 index a75ac1bf074..00000000000 --- a/jdk/make/sun/jkernel/Makefile +++ /dev/null @@ -1,94 +0,0 @@ -# -# Copyright (c) 2008, 2010, 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. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# 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. -# - -BUILDDIR = ../.. -MODULE = jkernel -PACKAGE = sun.jkernel -LIBRARY = jkernel -PRODUCT = sun - -include $(BUILDDIR)/common/Defs.gmk - -# -# Use highest optimization level -# -_OPT = $(CC_HIGHEST_OPT) - -# -# Java source files -# -include FILES_java.gmk -AUTO_FILES_JAVA_DIRS = sun/jkernel - -LOCALE_SUFFIXES = $(JDK_LOCALES) - -# -# Native source files -# - -ifeq ($(ARCH_DATA_MODEL), 32) - -ifeq ($(PLATFORM), windows) - -# If this is the VS Express compiler it will lack vc/atlmfc/ -ATL_MFC_DIR :=$(call DirExists,$(COMPILER_PATH)/../atlmfc,,) - -ifneq ($(ATL_MFC_DIR),) - -include FILES_c_windows.gmk - -vpath %.cpp $(PLATFORM_SRC)/native/sun/jkernel - - -VERSIONINFO_RESOURCE = $(PLATFORM_SRC)/native/sun/jkernel/kernel.rc - -LDLIBS += urlmon.lib wininet.lib shlwapi.lib version.lib comctl32.lib gdi32.lib -def:$(PLATFORM_SRC)/native/sun/jkernel/kernel.def - -include $(BUILDDIR)/common/Library.gmk - -endif - -endif - -endif - -# -# Resources -# -include $(TOPDIR)/make/common/internal/Resources.gmk - -# -# Rules -# -include $(BUILDDIR)/common/Classes.gmk - -# If extra compression is going to be available in the deploy build enable -# its use here by defining the JRE-relative pathname of the shared library - -ifeq ($(PLATFORM), windows) - ifdef EXTRA_COMP_INSTALL_PATH - CPPFLAGS += -DEXTRA_COMP_INSTALL_PATH=$(EXTRA_COMP_INSTALL_PATH) - endif -endif diff --git a/jdk/src/share/bin/java.c b/jdk/src/share/bin/java.c index c2a6ab99249..2d339547761 100644 --- a/jdk/src/share/bin/java.c +++ b/jdk/src/share/bin/java.c @@ -244,6 +244,7 @@ JLI_Launch(int argc, char ** argv, /* main argc, argc */ for (i = 0; i < argc ; i++) { printf("argv[%d] = %s\n", i, argv[i]); } + AddOption("-Dsun.java.launcher.diag=true", NULL); } CreateExecutionEnvironment(&argc, &argv, @@ -1009,6 +1010,8 @@ ParseArguments(int *pargc, char ***pargv, } else if (JLI_StrCmp(arg, "-XshowSettings") == 0 || JLI_StrCCmp(arg, "-XshowSettings:") == 0) { showSettings = arg; + } else if (JLI_StrCmp(arg, "-Xdiag") == 0) { + AddOption("-Dsun.java.launcher.diag=true", NULL); /* * The following case provide backward compatibility with old-style * command line options. diff --git a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_de.properties b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_de.properties index d15468e28c0..1cedaeb67c2 100644 --- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_de.properties +++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_de.properties @@ -13,72 +13,72 @@ # # accessible roles # -alert=Warnmeldung +alert=Alert awtcomponent=AWT-Komponente -checkbox=Kontrollk\u00e4stchen +checkbox=Kontrollk\u00E4stchen colorchooser=Farbauswahl -columnheader=Spaltenkopf +columnheader=Spalten-Header combobox=Kombinationsfeld canvas=Leinwand -desktopicon=Desktop-Symbol -desktoppane=Desktop-Bereich +desktopicon=Desktopsymbol +desktoppane=Desktopbereich dialog=Dialogfeld directorypane=Verzeichnisbereich -glasspane=Glasbereich +glasspane=Glass Pane filechooser=Dateiauswahl -filler=F\u00fcllbereich +filler=F\u00FCllbereich frame=Rahmen internalframe=Innerer Rahmen -label=Beschriftung -layeredpane=\u00dcberlagertes Teilfenster +label=Label +layeredpane=Layered Pane list=Liste listitem=Listenelement -menubar=Men\u00fcleiste -menu=Men\u00fc -menuitem=Men\u00fceintrag +menubar=Men\u00FCleiste +menu=Men\u00FC +menuitem=Men\u00FCpunkt optionpane=Optionsbereich pagetab=Registerkarte -pagetablist=Register -panel=Steuerbereich -passwordtext=Passworttext -popupmenu=Popup-Men\u00fc -progressbar=Fortschrittsanzeige -pushbutton=Schaltfl\u00e4che +pagetablist=Registerkartenliste +panel=Bereich +passwordtext=Kennworttext +popupmenu=Popup-Men\u00FC +progressbar=Fortschrittsbalken +pushbutton=Schaltfl\u00E4che radiobutton=Optionsfeld rootpane=Root-Bereich -rowheader=Zeilenkopf +rowheader=Zeilen-Header scrollbar=Bildlaufleiste scrollpane=Bildlaufbereich separator=Trennzeichen slider=Schieberegler -splitpane=Geteilter Anzeigebereich +splitpane=Split Pane swingcomponent=Swing-Komponente table=Tabelle text=Text tree=Baumstruktur -togglebutton=Umschaltfl\u00e4che +togglebutton=Umschaltfl\u00E4che toolbar=Symbolleiste tooltip=QuickInfo unknown=Unbekannt -viewport=Anzeigeschnittstelle +viewport=Viewport window=Fenster # # accessible relations # -labelFor=Beschriftung f\u00fcr +labelFor=Label f\u00FCr labeledBy=beschriftet von memberOf=Mitglied von -controlledBy=Gesteuert von -controllerFor=Steuerung f\u00fcr +controlledBy=controlledBy +controllerFor=controllerFor # # accessible states # active=aktiv armed=aktiviert -busy=belegt +busy=ausgelastet checked=markiert collapsed=ausgeblendet -editable=editierbar +editable=bearbeitbar expandable=erweiterbar expanded=eingeblendet enabled=aktiviert @@ -87,15 +87,15 @@ focused=fokussiert iconified=minimiert modal=modal multiline=mehrzeilig -multiselectable=mehrfach ausw\u00e4hlbar -opaque=verdeckt -pressed=gedr\u00fcckt +multiselectable=mehrfach ausw\u00E4hlbar +opaque=nicht transparent +pressed=gedr\u00FCckt resizable=skalierbar -selectable=w\u00e4hlbar -selected=ausgew\u00e4hlt +selectable=w\u00E4hlbar +selected=ausgew\u00E4hlt showing=angezeigt singleline=einzeilig -transient=tempor\u00e4r +transient=transient visible=sichtbar vertical=vertikal horizontal=horizontal @@ -109,10 +109,10 @@ toggle expand=ein-/ausblenden # # accessible relations # -flowsTo=flie\u00dft zu -flowsFrom=flie\u00dft von +flowsTo=flie\u00DFt zu +flowsFrom=flie\u00DFt von subwindowOf=Unterfenster von -parentWindowOf=\u00fcbergeordnetes Fenster von +parentWindowOf=\u00FCbergeordnetes Fenster von embeds=bettet ein embeddedBy=eingebettet in childNodeOf=untergeordneter Knoten von @@ -120,8 +120,8 @@ childNodeOf=untergeordneter Knoten von # # accessible roles # -header=Kopfzeile -footer=Fu\u00dfzeile +header=Header +footer=Footer paragraph=Absatz ruler=Lineal editbar=Bearbeitungsleiste @@ -130,9 +130,9 @@ progressMonitor=Fortschrittsmonitor # # accessible states # -managesDescendants=verwaltet abgeleitete Objekte +managesDescendants=verwaltet untergeordnete Objekte indeterminate=unbestimmt -truncated=gek\u00fcrzt +truncated=abgeschnitten # new for J2SE 1.6.0 diff --git a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_es.properties b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_es.properties index 2f744ef3c7d..fe065eda0a1 100644 --- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_es.properties +++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_es.properties @@ -14,53 +14,53 @@ # accessible roles # alert=alerta -awtcomponent=Componente AWT -checkbox=casilla de verificaci\u00f3n +awtcomponent=componente AWT +checkbox=casilla de control colorchooser=selector de color columnheader=cabecera de columna combobox=cuadro combinado -canvas=superficie +canvas=lienzo desktopicon=icono de escritorio -desktoppane=tablero de escritorio -dialog=cuadro de di\u00e1logo -directorypane=tablero de directorio -glasspane=tablero de cristal +desktoppane=panel de escritorio +dialog=cuadro de di\u00E1logo +directorypane=panel de directorio +glasspane=panel de cristal filechooser=selector de archivos filler=rellenador frame=marco internalframe=marco interno label=etiqueta -layeredpane=tablero en capas +layeredpane=panel en capas list=lista listitem=elemento de lista -menubar=barra de men\u00fas -menu=men\u00fa -menuitem=elemento de men\u00fa -optionpane=tablero de opciones -pagetab=pesta\u00f1a de p\u00e1gina -pagetablist=lista de pesta\u00f1as de p\u00e1gina +menubar=barra de men\u00FAs +menu=men\u00FA +menuitem=elemento de men\u00FA +optionpane=panel de opciones +pagetab=separador de p\u00E1gina +pagetablist=lista de separadores de p\u00E1gina panel=panel -passwordtext=texto de contrase\u00f1a -popupmenu=men\u00fa emergente +passwordtext=texto de contrase\u00F1a +popupmenu=men\u00FA emergente progressbar=barra de progreso -pushbutton=bot\u00f3n de acci\u00f3n -radiobutton=bot\u00f3n de radio -rootpane=tablero ra\u00edz +pushbutton=bot\u00F3n +radiobutton=bot\u00F3n de radio +rootpane=panel ra\u00EDz rowheader=cabecera de filas scrollbar=barra de desplazamiento -scrollpane=tablero de desplazamiento +scrollpane=panel de desplazamiento separator=separador slider=deslizador -splitpane=tablero de divisi\u00f3n +splitpane=panel de divisi\u00F3n swingcomponent=componente swing table=tabla text=texto -tree=\u00e1rbol -togglebutton=bot\u00f3n conmutador +tree=\u00E1rbol +togglebutton=bot\u00F3n conmutador toolbar=barra de herramientas -tooltip=consejo de herramienta +tooltip=ayuda de burbuja unknown=desconocido -viewport=puerto de vista +viewport=viewport window=ventana # # accessible relations @@ -68,25 +68,25 @@ window=ventana labelFor=etiqueta para labeledBy=etiquetado por memberOf=miembro de -controlledBy=controlado por -controllerFor=controlador de +controlledBy=controlledBy +controllerFor=controllerFor # # accessible states # active=activo armed=armado busy=ocupado -checked=marcado -collapsed=contra\u00eddo +checked=activado +collapsed=reducido editable=editable expandable=ampliable expanded=ampliado -enabled=habilitado +enabled=activado focusable=enfocable focused=enfocado iconified=convertido en icono modal=modal -multiline=l\u00ednea m\u00faltiple +multiline=l\u00EDnea m\u00FAltiple multiselectable=multiseleccionable opaque=opaco pressed=pulsado @@ -94,15 +94,15 @@ resizable=redimensionable selectable=seleccionable selected=seleccionado showing=mostrando -singleline=l\u00ednea \u00fanica -transient=temporal +singleline=l\u00EDnea \u00FAnica +transient=transitorio visible=visible vertical=vertical horizontal=horizontal # # accessible actions # -toggle expand=activar/desactivar ampliaci\u00f3n +toggle expand=activar/desactivar ampliaci\u00F3n # new relations, roles and states for J2SE 1.5.0 @@ -112,9 +112,9 @@ toggle expand=activar/desactivar ampliaci\u00f3n flowsTo=llega a flowsFrom=procede de subwindowOf=ventana subordinada de -parentWindowOf=ventana superior de -embeds=incluye -embeddedBy=se incluye en +parentWindowOf=ventana principal de +embeds=embebe +embeddedBy=embebido por childNodeOf=nodo secundario de # @@ -122,15 +122,15 @@ childNodeOf=nodo secundario de # header=cabecera footer=pie -paragraph=p\u00e1rrafo +paragraph=p\u00E1rrafo ruler=regla -editbar=barra de edici\u00f3n -progressMonitor=monitor de progresi\u00f3n +editbar=barra de edici\u00F3n +progressMonitor=monitor de progreso # # accessible states # -managesDescendants=gestiona objetos subordinados +managesDescendants=gestiona descendientes indeterminate=indeterminado truncated=truncado diff --git a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_fr.properties b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_fr.properties index b557bc64a30..f41a5427605 100644 --- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_fr.properties +++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_fr.properties @@ -14,95 +14,95 @@ # accessible roles # alert=alerte -awtcomponent=Composant AWT -checkbox=case \u00e0 cocher -colorchooser=s\u00e9lecteur de couleurs -columnheader=en-t\u00eate de colonne -combobox=bo\u00eete de dialogue mixte +awtcomponent=composant AWT +checkbox=case \u00E0 cocher +colorchooser=s\u00E9lecteur de couleurs +columnheader=en-t\u00EAte de colonne +combobox=liste d\u00E9roulante canvas=canevas -desktopicon=ic\u00f4ne de bureau -desktoppane=sous-fen\u00eatre de bureau -dialog=bo\u00eete de dialogue -directorypane=sous-fen\u00eatre de r\u00e9pertoires -glasspane=sous-fen\u00eatre de grossissement -filechooser=s\u00e9lecteur de fichiers -filler=\u00e9l\u00e9ment de remplissage +desktopicon=ic\u00F4ne de bureau +desktoppane=panneau de bureau +dialog=bo\u00EEte de dialogue +directorypane=panneau de r\u00E9pertoires +glasspane=panneau de grossissement +filechooser=s\u00E9lecteur de fichiers +filler=\u00E9l\u00E9ment de remplissage frame=cadre internalframe=cadre interne -label=\u00e9tiquette -layeredpane=sous-fen\u00eatre superpos\u00e9e +label=libell\u00E9 +layeredpane=panneau superpos\u00E9 list=liste -listitem=\u00e9l\u00e9ment de liste +listitem=\u00E9l\u00E9ment de liste menubar=barre de menus menu=menu menuitem=option de menu -optionpane=sous-fen\u00eatre d''options +optionpane=panneau d'options pagetab=onglet de page -pagetablist=liste d''onglets de page +pagetablist=liste d'onglets de page panel=panneau passwordtext=texte de mot de passe popupmenu=menu contextuel progressbar=barre de progression -pushbutton=bouton poussoir +pushbutton=bouton radiobutton=bouton radio -rootpane=sous-fen\u00eatre racine -rowheader=en-t\u00eate de ligne -scrollbar=barre de d\u00e9filement -scrollpane=sous-fen\u00eatre de d\u00e9filement -separator=s\u00e9parateur +rootpane=panneau racine +rowheader=en-t\u00EAte de ligne +scrollbar=barre de d\u00E9filement +scrollpane=panneau de d\u00E9filement +separator=s\u00E9parateur slider=curseur -splitpane=sous-fen\u00eatre divis\u00e9e -swingcomponent=composant de bascule +splitpane=panneau divis\u00E9 +swingcomponent=composant Swing table=tableau text=texte -tree=arbre +tree=arborescence togglebutton=bouton de basculement -toolbar=barre d''outils +toolbar=barre d'outils tooltip=info-bulle unknown=inconnu -viewport=cl\u00f4ture -window=fen\u00eatre +viewport=lucarne +window=fen\u00EAtre # # accessible relations # -labelFor=\u00e9tiquette de -labeledBy=libell\u00e9(e) par +labelFor=libell\u00E9 de +labeledBy=libell\u00E9 par memberOf=membre de -controlledBy=contr\u00f4l\u00e9 par -controllerFor=contr\u00f4leur pour +controlledBy=contr\u00F4l\u00E9 par +controllerFor=contr\u00F4leur pour # # accessible states # -active=actif(ve) -armed=arm\u00e9(e) -busy=occup\u00e9(e) -checked=coch\u00e9e -collapsed=r\u00e9duit(e) +active=actif +armed=arm\u00E9 +busy=occup\u00E9 +checked=coch\u00E9 +collapsed=r\u00E9duit editable=modifiable expandable=extensible -expanded=d\u00e9velopp\u00e9(e) -enabled=activ\u00e9(e) -focusable=zone d''entr\u00e9e possible -focused=avec zone d''entr\u00e9e -iconified=r\u00e9duit(e) \u00e0 une ic\u00f4ne -modal=modal(e) +expanded=d\u00E9velopp\u00E9 +enabled=activ\u00E9 +focusable=zone d'entr\u00E9e possible +focused=avec zone d'entr\u00E9e +iconified=r\u00E9duit \u00E0 une ic\u00F4ne +modal=modal multiline=ligne multiple -multiselectable=multis\u00e9lectionnable +multiselectable=multis\u00E9lectionnable opaque=opaque -pressed=enfonc\u00e9 +pressed=enfonc\u00E9 resizable=redimensionnable -selectable=s\u00e9lectionnable -selected=s\u00e9lectionn\u00e9(e) +selectable=s\u00E9lectionnable +selected=s\u00E9lectionn\u00E9 showing=montrant singleline=ligne unique -transient=transitoire +transient=non persistant visible=visible -vertical=vertical(e) -horizontal=horizontal(e) +vertical=vertical +horizontal=horizontal # # accessible actions # -toggle expand=basculer le d\u00e9veloppement +toggle expand=basculer le d\u00E9veloppement # new relations, roles and states for J2SE 1.5.0 @@ -111,35 +111,35 @@ toggle expand=basculer le d\u00e9veloppement # flowsTo=flux vers flowsFrom=flux depuis -subwindowOf=sous-fen\u00eatre de -parentWindowOf=fen\u00eatre parente de +subwindowOf=sous-fen\u00EAtre de +parentWindowOf=fen\u00EAtre parente de embeds=incorpore -embeddedBy=incorpor\u00e9 par -childNodeOf=n\u0153ud enfant de +embeddedBy=incorpor\u00E9 par +childNodeOf=noeud enfant de # # accessible roles # -header=en-t\u00eate +header=en-t\u00EAte footer=pied de page paragraph=paragraphe -ruler=r\u00e8gle -editbar=barre d'\u00e9dition -progressMonitor=contr\u00f4le de la progression +ruler=r\u00E8gle +editbar=barre d'\u00E9dition +progressMonitor=contr\u00F4le de la progression # # accessible states # -managesDescendants=g\u00e8re les descendants -indeterminate=ind\u00e9termin\u00e9 -truncated=tronqu\u00e9 +managesDescendants=g\u00E8re les descendants +indeterminate=ind\u00E9termin\u00E9 +truncated=tronqu\u00E9 # new for J2SE 1.6.0 # # accessible roles # -htmlcontainer=Conteneur HTML +htmlcontainer=conteneur HTML # # END OF MATERIAL TO LOCALIZE diff --git a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_it.properties b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_it.properties index 54b888e7ed8..2d5cfa39504 100644 --- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_it.properties +++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_it.properties @@ -13,45 +13,45 @@ # # accessible roles # -alert=allarme +alert=avviso awtcomponent=componente AWT checkbox=casella di controllo colorchooser=selezione colori columnheader=intestazione colonna -combobox=casella -canvas=area di disegno -desktopicon=icona del desktop -desktoppane=sottofinestra del desktop +combobox=casella combinata +canvas=sfondo +desktopicon=icona desktop +desktoppane=riquadro desktop dialog=finestra di dialogo -directorypane=sottofinestra della directory -glasspane=sottofinestra trasparente +directorypane=riquadro directory +glasspane=riquadro trasparente filechooser=selezione file -filler=utilit\u00e0 riempimento +filler=utilit\u00E0 riempimento frame=cornice internalframe=cornice interna label=etichetta -layeredpane=sottofinestra a livelli -list=elenco -listitem=voce di elenco +layeredpane=riquadro a livelli +list=lista +listitem=voce lista menubar=barra dei menu menu=menu menuitem=voce di menu -optionpane=sottofinestra delle opzioni +optionpane=riquadro opzioni pagetab=scheda pagina -pagetablist=elenco schede pagina +pagetablist=lista schede pagina panel=pannello passwordtext=testo della password -popupmenu=menu a comparsa +popupmenu=menu popup progressbar=barra di avanzamento pushbutton=pulsante radiobutton=pulsante di scelta -rootpane=sottofinestra root +rootpane=riquadro root rowheader=intestazione di riga scrollbar=barra di scorrimento -scrollpane=scorri sottofinestra +scrollpane=riquadro scorrimento separator=separatore -slider=cursore -splitpane=sottofinestra doppia +slider=dispositivo di scorrimento +splitpane=riquadro doppio swingcomponent=componente swing table=tabella text=testo @@ -68,8 +68,8 @@ window=finestra labelFor=etichetta per labeledBy=etichetta di memberOf=membro di -controlledBy=controllato da -controllerFor=controllore per +controlledBy=controlledBy +controllerFor=controllerFor # # accessible states # @@ -77,11 +77,11 @@ active=attivo armed=abilitato busy=occupato checked=verificato -collapsed=ingrandito +collapsed=compresso editable=modificabile expandable=espandibile expanded=espanso -enabled=attivato +enabled=abilitato focusable=attivabile in primo piano focused=in primo piano iconified=ridotto a icona @@ -121,7 +121,7 @@ childNodeOf=nodo figlio di # accessible roles # header=intestazione -footer=pi\u00e8 di pagina +footer=pi\u00E8 di pagina paragraph=paragrafo ruler=righello editbar=barra di modifica diff --git a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ja.properties b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ja.properties index 7843ab31bc9..91bfc942117 100644 --- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ja.properties +++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ja.properties @@ -13,133 +13,133 @@ # # accessible roles # -alert=\u8b66\u544a -awtcomponent=AWT \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8 -checkbox=\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9 -colorchooser=\u30ab\u30e9\u30fc\u30c1\u30e5\u30fc\u30b6 -columnheader=\u5217\u30d8\u30c3\u30c0 -combobox=\u30b3\u30f3\u30dc\u30dc\u30c3\u30af\u30b9 -canvas=\u30ad\u30e3\u30f3\u30d0\u30b9 -desktopicon=\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30a2\u30a4\u30b3\u30f3 -desktoppane=\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u533a\u753b -dialog=\u30c0\u30a4\u30a2\u30ed\u30b0 -directorypane=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u533a\u753b -glasspane=\u30ac\u30e9\u30b9\u533a\u753b -filechooser=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6 -filler=\u30d5\u30a3\u30e9\u30fc -frame=\u30d5\u30ec\u30fc\u30e0 -internalframe=\u5185\u90e8\u30d5\u30ec\u30fc\u30e0 -label=\u30e9\u30d9\u30eb -layeredpane=\u968e\u5c64\u5316\u3055\u308c\u305f\u533a\u753b -list=\u30ea\u30b9\u30c8 -listitem=\u30ea\u30b9\u30c8\u9805\u76ee -menubar=\u30e1\u30cb\u30e5\u30fc\u30d0\u30fc -menu=\u30e1\u30cb\u30e5\u30fc -menuitem=\u30e1\u30cb\u30e5\u30fc\u9805\u76ee -optionpane=\u30aa\u30d7\u30b7\u30e7\u30f3\u533a\u753b -pagetab=\u30da\u30fc\u30b8\u30bf\u30d6 -pagetablist=\u30da\u30fc\u30b8\u30bf\u30d6\u30ea\u30b9\u30c8 -panel=\u30d1\u30cd\u30eb -passwordtext=\u30d1\u30b9\u30ef\u30fc\u30c9\u30c6\u30ad\u30b9\u30c8 -popupmenu=\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30e1\u30cb\u30e5\u30fc -progressbar=\u9032\u6357\u30d0\u30fc -pushbutton=\u30d7\u30c3\u30b7\u30e5\u30dc\u30bf\u30f3 -radiobutton=\u30e9\u30b8\u30aa\u30dc\u30bf\u30f3 -rootpane=\u30eb\u30fc\u30c8\u533a\u753b -rowheader=\u884c\u30d8\u30c3\u30c0 -scrollbar=\u30b9\u30af\u30ed\u30fc\u30eb\u30d0\u30fc -scrollpane=\u30b9\u30af\u30ed\u30fc\u30eb\u533a\u753b -separator=\u30bb\u30d1\u30ec\u30fc\u30bf -slider=\u30b9\u30e9\u30a4\u30c0 -splitpane=\u5206\u5272\u533a\u753b -swingcomponent=Swing \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8 -table=\u30c6\u30fc\u30d6\u30eb -text=\u30c6\u30ad\u30b9\u30c8 -tree=\u30c4\u30ea\u30fc -togglebutton=\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3 -toolbar=\u30c4\u30fc\u30eb\u30d0\u30fc -tooltip=\u30c4\u30fc\u30eb\u30d2\u30f3\u30c8 -unknown=\u672a\u77e5 -viewport=\u30d3\u30e5\u30fc\u30dd\u30fc\u30c8 -window=\u30a6\u30a3\u30f3\u30c9\u30a6 +alert=\u30A2\u30E9\u30FC\u30C8 +awtcomponent=AWT\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8 +checkbox=\u30C1\u30A7\u30C3\u30AF\u30FB\u30DC\u30C3\u30AF\u30B9 +colorchooser=\u30AB\u30E9\u30FC\u30FB\u30C1\u30E5\u30FC\u30B6 +columnheader=\u5217\u30D8\u30C3\u30C0\u30FC +combobox=\u30B3\u30F3\u30DC\u30FB\u30DC\u30C3\u30AF\u30B9 +canvas=\u30AD\u30E3\u30F3\u30D0\u30B9 +desktopicon=\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u30FB\u30A2\u30A4\u30B3\u30F3 +desktoppane=\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u533A\u753B +dialog=\u30C0\u30A4\u30A2\u30ED\u30B0 +directorypane=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u533A\u753B +glasspane=\u30AC\u30E9\u30B9\u533A\u753B +filechooser=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6 +filler=\u30D5\u30A3\u30E9\u30FC +frame=\u30D5\u30EC\u30FC\u30E0 +internalframe=\u5185\u90E8\u30D5\u30EC\u30FC\u30E0 +label=\u30E9\u30D9\u30EB +layeredpane=\u968E\u5C64\u5316\u3055\u308C\u305F\u533A\u753B +list=\u30EA\u30B9\u30C8 +listitem=\u30EA\u30B9\u30C8\u9805\u76EE +menubar=\u30E1\u30CB\u30E5\u30FC\u30FB\u30D0\u30FC +menu=\u30E1\u30CB\u30E5\u30FC +menuitem=\u30E1\u30CB\u30E5\u30FC\u9805\u76EE +optionpane=\u30AA\u30D7\u30B7\u30E7\u30F3\u533A\u753B +pagetab=\u30DA\u30FC\u30B8\u30FB\u30BF\u30D6 +pagetablist=\u30DA\u30FC\u30B8\u30FB\u30BF\u30D6\u30FB\u30EA\u30B9\u30C8 +panel=\u30D1\u30CD\u30EB +passwordtext=\u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30C6\u30AD\u30B9\u30C8 +popupmenu=\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u30FB\u30E1\u30CB\u30E5\u30FC +progressbar=\u9032\u6357\u30D0\u30FC +pushbutton=\u30D7\u30C3\u30B7\u30E5\u30FB\u30DC\u30BF\u30F3 +radiobutton=\u30E9\u30B8\u30AA\u30FB\u30DC\u30BF\u30F3 +rootpane=\u30EB\u30FC\u30C8\u533A\u753B +rowheader=\u884C\u30D8\u30C3\u30C0\u30FC +scrollbar=\u30B9\u30AF\u30ED\u30FC\u30EB\u30FB\u30D0\u30FC +scrollpane=\u30B9\u30AF\u30ED\u30FC\u30EB\u533A\u753B +separator=\u30BB\u30D1\u30EC\u30FC\u30BF +slider=\u30B9\u30E9\u30A4\u30C0 +splitpane=\u5206\u5272\u533A\u753B +swingcomponent=Swing\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8 +table=\u8868 +text=\u30C6\u30AD\u30B9\u30C8 +tree=\u30C4\u30EA\u30FC +togglebutton=\u30C8\u30B0\u30EB\u30FB\u30DC\u30BF\u30F3 +toolbar=\u30C4\u30FC\u30EB\u30D0\u30FC +tooltip=\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7 +unknown=\u4E0D\u660E +viewport=\u30D3\u30E5\u30FC\u30DD\u30FC\u30C8 +window=\u30A6\u30A3\u30F3\u30C9\u30A6 # # accessible relations # -labelFor=\u30e9\u30d9\u30eb\u5143 -labeledBy=\u30e9\u30d9\u30eb\u5148 -memberOf=\u6240\u5c5e\u30e1\u30f3\u30d0 -controlledBy=\u5236\u5fa1\u5bfe\u8c61 -controllerFor=\u5236\u5fa1\u5143 +labelFor=label for +labeledBy=labeled by +memberOf=member of +controlledBy=controlledBy +controllerFor=controllerFor # # accessible states # -active=\u30a2\u30af\u30c6\u30a3\u30d6 -armed=\u4f5c\u52d5\u6e96\u5099\u5b8c\u4e86 -busy=\u30d3\u30b8\u30fc -checked=\u30c1\u30a7\u30c3\u30af -collapsed=\u77ed\u7e2e -editable=\u7de8\u96c6\u53ef\u80fd -expandable=\u5c55\u958b\u53ef\u80fd -expanded=\u5c55\u958b -enabled=\u6709\u52b9 -focusable=\u30d5\u30a9\u30fc\u30ab\u30b9\u53ef\u80fd -focused=\u30d5\u30a9\u30fc\u30ab\u30b9 -iconified=\u30a2\u30a4\u30b3\u30f3\u5316 -modal=\u30e2\u30fc\u30c0\u30eb -multiline=\u8907\u6570\u884c -multiselectable=\u8907\u6570\u9078\u629e\u53ef\u80fd -opaque=\u4e0d\u900f\u660e -pressed=\u62bc\u4e0b -resizable=\u30b5\u30a4\u30ba\u5909\u66f4\u53ef\u80fd -selectable=\u9078\u629e\u53ef\u80fd -selected=\u9078\u629e -showing=\u8868\u793a -singleline=\u5358\u4e00\u884c -transient=\u4e00\u6642 -visible=\u53ef\u8996 -vertical=\u5782\u76f4 -horizontal=\u6c34\u5e73 +active=\u30A2\u30AF\u30C6\u30A3\u30D6 +armed=\u4F5C\u52D5\u6E96\u5099\u5B8C\u4E86 +busy=\u30D3\u30B8\u30FC +checked=\u30C1\u30A7\u30C3\u30AF +collapsed=\u77ED\u7E2E +editable=\u7DE8\u96C6\u53EF\u80FD +expandable=\u5C55\u958B\u53EF\u80FD +expanded=\u5C55\u958B +enabled=\u6709\u52B9 +focusable=\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD +focused=\u30D5\u30A9\u30FC\u30AB\u30B9 +iconified=\u30A2\u30A4\u30B3\u30F3\u5316 +modal=\u30E2\u30FC\u30C0\u30EB +multiline=\u8907\u6570\u884C +multiselectable=\u8907\u6570\u9078\u629E\u53EF\u80FD +opaque=\u4E0D\u900F\u660E +pressed=\u62BC\u4E0B +resizable=\u30B5\u30A4\u30BA\u5909\u66F4\u53EF\u80FD +selectable=\u9078\u629E\u53EF\u80FD +selected=\u9078\u629E +showing=\u8868\u793A +singleline=\u5358\u4E00\u884C +transient=\u4E00\u6642 +visible=\u53EF\u8996 +vertical=\u5782\u76F4 +horizontal=\u6C34\u5E73 # # accessible actions # -toggle expand=\u30c8\u30b0\u30eb\u5c55\u958b +toggle expand=\u30C8\u30B0\u30EB\u5C55\u958B # new relations, roles and states for J2SE 1.5.0 # # accessible relations # -flowsTo=\u30d5\u30ed\u30fc\u5148 -flowsFrom=\u30d5\u30ed\u30fc\u5143 -subwindowOf=\u30b5\u30d6\u30a6\u30a3\u30f3\u30c9\u30a6 -parentWindowOf=\u89aa\u30a6\u30a3\u30f3\u30c9\u30a6 -embeds=\u57cb\u3081\u8fbc\u307f -embeddedBy=\u57cb\u3081\u8fbc\u307f\u5143 -childNodeOf=\u5b50\u30ce\u30fc\u30c9 +flowsTo=flows to +flowsFrom=flows from +subwindowOf=subwindow of +parentWindowOf=parent window of +embeds=\u57CB\u8FBC\u307F +embeddedBy=embedded by +childNodeOf=child node of # # accessible roles # -header=\u30d8\u30c3\u30c0 -footer=\u30d5\u30c3\u30bf -paragraph=\u30d1\u30e9\u30b0\u30e9\u30d5 -ruler=\u30eb\u30fc\u30e9 -editbar=\u7de8\u96c6\u30d0\u30fc -progressMonitor=\u9032\u6357\u30e2\u30cb\u30bf +header=\u30D8\u30C3\u30C0\u30FC +footer=\u30D5\u30C3\u30BF\u30FC +paragraph=\u6BB5\u843D +ruler=\u30EB\u30FC\u30E9\u30FC +editbar=\u7DE8\u96C6\u30D0\u30FC +progressMonitor=\u9032\u6357\u30E2\u30CB\u30BF\u30FC # # accessible states # -managesDescendants=\u5b50\u5b6b\u3092\u7ba1\u7406 -indeterminate=\u4e0d\u78ba\u5b9a -truncated=\u4e0d\u5b8c\u5168 +managesDescendants=\u5B50\u5B6B\u3092\u7BA1\u7406 +indeterminate=\u4E0D\u78BA\u5B9A +truncated=\u4E0D\u5B8C\u5168 # new for J2SE 1.6.0 # # accessible roles # -htmlcontainer=HTML \u30b3\u30f3\u30c6\u30ca +htmlcontainer=HTML\u30B3\u30F3\u30C6\u30CA # # END OF MATERIAL TO LOCALIZE diff --git a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ko.properties b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ko.properties index 8f94f54e0ff..bb4e95d1cc0 100644 --- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ko.properties +++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ko.properties @@ -13,133 +13,133 @@ # # accessible roles # -alert=\uacbd\uace0 -awtcomponent=AWT \uad6c\uc131\uc694\uc18c -checkbox=\ud655\uc778\ub780 -colorchooser=\uc0c9\uc0c1 \uc120\ud0dd\uae30 -columnheader=\uc5f4 \uba38\ub9ac\uae00 -combobox=\ucf64\ubcf4 \uc0c1\uc790 -canvas=\uce94\ubc84\uc2a4 -desktopicon=\ub370\uc2a4\ud06c\ud0d1 \uc544\uc774\ucf58 -desktoppane=\ub370\uc2a4\ud06c\ud0d1 \ud45c\uc2dc \uc601\uc5ed -dialog=\ub300\ud654 \uc0c1\uc790 -directorypane=\ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc \uc601\uc5ed -glasspane=\uae00\ub798\uc2a4 \ud45c\uc2dc \uc601\uc5ed -filechooser=\ud30c\uc77c \uc120\ud0dd\uae30 -filler=\ud544\ub7ec -frame=\ud504\ub808\uc784 -internalframe=\ub0b4\ubd80 \ud504\ub808\uc784 -label=\ub808\uc774\ube14 -layeredpane=\uacc4\uce35 \ud45c\uc2dc \uc601\uc5ed -list=\ubaa9\ub85d -listitem=\ubaa9\ub85d \ud56d\ubaa9 -menubar=\uba54\ub274 \ud45c\uc2dc\uc904 -menu=\uba54\ub274 -menuitem=\uba54\ub274 \ud56d\ubaa9 -optionpane=\uc635\uc158 \ud45c\uc2dc \uc601\uc5ed -pagetab=\ud398\uc774\uc9c0 \ud0ed -pagetablist=\ud398\uc774\uc9c0 \ud0ed \ubaa9\ub85d -panel=\ud328\ub110 -passwordtext=\uc554\ud638 \ud14d\uc2a4\ud2b8 -popupmenu=\ud31d\uc5c5 \uba54\ub274 -progressbar=\uc9c4\ud589 \ub9c9\ub300 -pushbutton=\ub204\ub984 \ubc84\ud2bc -radiobutton=\ub77c\ub514\uc624 \ubc84\ud2bc -rootpane=\ub8e8\ud2b8 \ud45c\uc2dc \uc601\uc5ed -rowheader=\ud589 \uba38\ub9ac\uae00 -scrollbar=\uc2a4\ud06c\ub864 \ub9c9\ub300 -scrollpane=\uc2a4\ud06c\ub864 \ud45c\uc2dc \uc601\uc5ed -separator=\uad6c\ubd84\uc790 -slider=\uc2ac\ub77c\uc774\ub354 -splitpane=\ubd84\ud560 \ud45c\uc2dc \uc601\uc5ed -swingcomponent=swing \uad6c\uc131\uc694\uc18c -table=\ud14c\uc774\ube14 -text=\ud14d\uc2a4\ud2b8 -tree=\ud2b8\ub9ac -togglebutton=\ud1a0\uae00 \ubc84\ud2bc -toolbar=\ub3c4\uad6c \ubaa8\uc74c -tooltip=\ub3c4\uad6c \ud301 -unknown=\uc54c\uc218 \uc5c6\uc74c -viewport=\ubdf0\ud3ec\ud2b8 -window=\ucc3d +alert=\uACBD\uBCF4 +awtcomponent=AWT \uAD6C\uC131 \uC694\uC18C +checkbox=\uCCB4\uD06C \uBC15\uC2A4 +colorchooser=\uC0C9\uC0C1 \uC120\uD0DD\uAE30 +columnheader=\uC5F4 \uBA38\uB9AC\uAE00 +combobox=\uCF64\uBCF4 \uC0C1\uC790 +canvas=\uCE94\uBC84\uC2A4 +desktopicon=\uBC14\uD0D5 \uD654\uBA74 \uC544\uC774\uCF58 +desktoppane=\uBC14\uD0D5 \uD654\uBA74 \uCC3D +dialog=\uB300\uD654\uC0C1\uC790 +directorypane=\uB514\uB809\uD1A0\uB9AC \uCC3D +glasspane=\uAE00\uB798\uC2A4 \uCC3D +filechooser=\uD30C\uC77C \uC120\uD0DD\uAE30 +filler=\uD544\uB7EC +frame=\uD504\uB808\uC784 +internalframe=\uB0B4\uBD80 \uD504\uB808\uC784 +label=\uB808\uC774\uBE14 +layeredpane=\uACC4\uCE35\uC801 \uCC3D +list=\uBAA9\uB85D +listitem=\uBAA9\uB85D \uD56D\uBAA9 +menubar=\uBA54\uB274 \uD45C\uC2DC\uC904 +menu=\uBA54\uB274 +menuitem=\uBA54\uB274 \uD56D\uBAA9 +optionpane=\uC635\uC158 \uCC3D +pagetab=\uD398\uC774\uC9C0 \uD0ED +pagetablist=\uD398\uC774\uC9C0 \uD0ED \uBAA9\uB85D +panel=\uD328\uB110 +passwordtext=\uBE44\uBC00\uBC88\uD638 \uD14D\uC2A4\uD2B8 +popupmenu=\uD31D\uC5C5 \uBA54\uB274 +progressbar=\uC9C4\uD589 \uB9C9\uB300 +pushbutton=\uB204\uB984 \uB2E8\uCD94 +radiobutton=\uB77C\uB514\uC624 \uB2E8\uCD94 +rootpane=\uB8E8\uD2B8 \uCC3D +rowheader=\uD589 \uBA38\uB9AC\uAE00 +scrollbar=\uC2A4\uD06C\uB864 \uB9C9\uB300 +scrollpane=\uC2A4\uD06C\uB864 \uCC3D +separator=\uAD6C\uBD84 \uAE30\uD638 +slider=\uC2AC\uB77C\uC774\uB354 +splitpane=\uBD84\uD560 \uCC3D +swingcomponent=\uD68C\uC804 \uAD6C\uC131 \uC694\uC18C +table=\uD14C\uC774\uBE14 +text=\uD14D\uC2A4\uD2B8 +tree=\uD2B8\uB9AC +togglebutton=\uD1A0\uAE00 \uB2E8\uCD94 +toolbar=\uB3C4\uAD6C \uBAA8\uC74C +tooltip=\uB3C4\uAD6C \uC124\uBA85 +unknown=\uC54C \uC218 \uC5C6\uC74C +viewport=\uBDF0\uD3EC\uD2B8 +window=\uCC3D # # accessible relations # -labelFor=\ub808\uc774\ube14 \ub300\uc0c1 -labeledBy=\ub808\uc774\ube14 \uc9c0\uc815\uc790 -memberOf=\ub2e4\uc74c\uc758 \uad6c\uc131\uc6d0 -controlledBy=\uc81c\uc5b4\uc790 -controllerFor=\uc81c\uc5b4\uae30 \ub300\uc0c1 +labelFor=\uB808\uC774\uBE14 \uB300\uC0C1 +labeledBy=\uB808\uC774\uBE14 \uC9C0\uC815\uC790 +memberOf=\uC18C\uC18D \uADF8\uB8F9 +controlledBy=controlledBy +controllerFor=controllerFor # # accessible states # -active=\ud65c\uc131 -armed=\ud06c\uae30 -busy=\uc0ac\uc6a9 \uc911 -checked=\uc120\ud0dd\ub428 -collapsed=\ucd95\uc18c\ub428 -editable=\ud3b8\uc9d1 \uac00\ub2a5 -expandable=\ud655\uc7a5 \uac00\ub2a5 -expanded=\ud655\uc7a5\ub428 -enabled=\ud65c\uc131\ud654\ub428 -focusable=\ud3ec\ucee4\uc2a4 \uac00\ub2a5 -focused=\ud3ec\ucee4\uc2a4 \uc9c0\uc815\ub428 -iconified=\uc544\uc774\ucf58\ud654\ub428 -modal=\ubaa8\ub2ec -multiline=\ubcf5\uc218 \ud589 -multiselectable=\ubcf5\uc218\ub85c \uc120\ud0dd \uac00\ub2a5 -opaque=\ubd88\ud22c\uba85 -pressed=\ub204\ub984 -resizable=\ud06c\uae30 \uc870\uc815 \uac00\ub2a5 -selectable=\uc120\ud0dd \uac00\ub2a5 -selected=\uc120\ud0dd\ub428 -showing=\ud45c\uc2dc -singleline=\ub2e8\uc120 -transient=\uc77c\uc2dc -visible=\uac00\uc2dc -vertical=\uc218\uc9c1 -horizontal=\uc218\ud3c9 +active=\uD65C\uC131 +armed=\uD06C\uAE30 +busy=\uC0AC\uC6A9 \uC911 +checked=\uC120\uD0DD\uB428 +collapsed=\uCD95\uC18C\uB428 +editable=\uD3B8\uC9D1 \uAC00\uB2A5 +expandable=\uD655\uC7A5 \uAC00\uB2A5 +expanded=\uD655\uC7A5\uB428 +enabled=\uC0AC\uC6A9 +focusable=\uD3EC\uCEE4\uC2A4 \uAC00\uB2A5 +focused=\uD3EC\uCEE4\uC2A4\uB428 +iconified=\uC544\uC774\uCF58\uD654\uB428 +modal=\uBAA8\uB2EC +multiline=\uBCF5\uC218 \uD589 +multiselectable=\uB2E4\uC911 \uC120\uD0DD \uAC00\uB2A5 +opaque=\uBD88\uD22C\uBA85 +pressed=\uB204\uB984 +resizable=\uD06C\uAE30 \uC870\uC815 \uAC00\uB2A5 +selectable=\uC120\uD0DD \uAC00\uB2A5 +selected=\uC120\uD0DD\uB428 +showing=\uD45C\uC2DC +singleline=\uD55C \uC904 +transient=\uC77C\uC2DC +visible=\uD45C\uC2DC \uAC00\uB2A5 +vertical=\uC138\uB85C +horizontal=\uAC00\uB85C # # accessible actions # -toggle expand=\ud1a0\uae00 \ud655\uc7a5 +toggle \uD655\uC7A5=\uD1A0\uAE00 \uD655\uC7A5 # new relations, roles and states for J2SE 1.5.0 # # accessible relations # -flowsTo=(\uc73c)\ub85c \ud750\ub984 -flowsFrom=\uc5d0\uc11c \ud750\ub984 -subwindowOf=\ud558\uc704 \ucc3d -parentWindowOf=\uc0c1\uc704 \ucc3d -embeds=\uc744(\ub97c) \ud3ec\ud568 -embeddedBy=\uc5d0 \ud3ec\ud568 -childNodeOf=\ud558\uc704 \ub178\ub4dc +flowsTo=\uD750\uB984 \uB300\uC0C1 +flowsFrom=\uD750\uB984 \uCD9C\uCC98 +subwindowOf=\uD558\uC704 \uCC3D +parentWindowOf=\uC0C1\uC704 \uCC3D +embeds=\uD3EC\uD568 +embeddedBy=\uD3EC\uD568 \uC8FC\uCCB4 +childNodeOf=\uD558\uC704 \uB178\uB4DC # # accessible roles # -header=\uba38\ub9ac\ub9d0 -footer=\uaf2c\ub9ac\ub9d0 -paragraph=\ub2e8\ub77d -ruler=\ub208\uae08\uc790 -editbar=\ud3b8\uc9d1 \ub3c4\uad6c -progressMonitor=\uc9c4\ud589 \ubaa8\ub2c8\ud130 +header=\uBA38\uB9AC\uAE00 +footer=\uBC14\uB2E5\uAE00 +paragraph=\uB2E8\uB77D +ruler=\uB208\uAE08\uC790 +editbar=\uD3B8\uC9D1 \uB3C4\uAD6C +progressMonitor=\uC9C4\uD589 \uBAA8\uB2C8\uD130 # # accessible states # -managesDescendants=\ud558\uc704 \ud56d\ubaa9 \uad00\ub9ac -indeterminate=\ubd80\uc815 -truncated=\uc0dd\ub7b5 +managesDescendants=\uC885\uC18D \uD56D\uBAA9 \uAD00\uB9AC +indeterminate=\uD655\uC815\uB418\uC9C0 \uC54A\uC74C +truncated=\uC798\uB9BC # new for J2SE 1.6.0 # # accessible roles # -htmlcontainer=HTML \ucee8\ud14c\uc774\ub108 +htmlcontainer=HTML \uCEE8\uD14C\uC774\uB108 # # END OF MATERIAL TO LOCALIZE diff --git a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_pt_BR.properties b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_pt_BR.properties index 8cd9de0b253..cad33b19f01 100644 --- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_pt_BR.properties +++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_pt_BR.properties @@ -15,38 +15,38 @@ # alert=alerta awtcomponent=componente AWT -checkbox=caixa de sele\u00e7\u00e3o +checkbox=caixa de sele\u00E7\u00E3o colorchooser=seletor de cores -columnheader=cabe\u00e7alho da coluna -combobox=caixa de combina\u00e7\u00e3o +columnheader=cabe\u00E7alho da coluna +combobox=caixa de combina\u00E7\u00E3o canvas=tela -desktopicon=\u00edcone da \u00e1rea de trabalho -desktoppane=painel da \u00e1rea de trabalho -dialog=caixa de di\u00e1logo -directorypane=painel do diret\u00f3rio +desktopicon=\u00EDcone da \u00E1rea de trabalho +desktoppane=painel da \u00E1rea de trabalho +dialog=caixa de di\u00E1logo +directorypane=painel do diret\u00F3rio glasspane=painel transparente filechooser=seletor de arquivos -filler=preenchimento +filler=preenchedor frame=quadro internalframe=quadro interno -label=r\u00f3tulo +label=r\u00F3tulo layeredpane=painel em camadas list=lista listitem=item da lista menubar=barra de menus menu=menu menuitem=item do menu -optionpane=painel de op\u00e7\u00f5es -pagetab=aba da p\u00e1gina -pagetablist=lista de abas da p\u00e1gina +optionpane=painel de op\u00E7\u00F5es +pagetab=guia da p\u00E1gina +pagetablist=lista de guias da p\u00E1gina panel=painel passwordtext=texto da senha popupmenu=menu pop-up progressbar=barra de progresso -pushbutton=bot\u00e3o de a\u00e7\u00e3o -radiobutton=bot\u00e3o de op\u00e7\u00e3o +pushbutton=bot\u00E3o de a\u00E7\u00E3o +radiobutton=bot\u00E3o de op\u00E7\u00E3o rootpane=painel base -rowheader=cabe\u00e7alho da linha +rowheader=cabe\u00E7alho da linha scrollbar=barra de rolagem scrollpane=painel de rolagem separator=separador @@ -55,19 +55,19 @@ splitpane=painel dividido swingcomponent=componente swing table=tabela text=texto -tree=\u00e1rvore -togglebutton=bot\u00e3o de altern\u00e2ncia +tree=\u00E1rvore +togglebutton=bot\u00E3o de altern\u00E2ncia toolbar=barra de ferramentas tooltip=dica de ferramenta unknown=desconhecido -viewport=janela de visualiza\u00e7\u00e3o +viewport=janela de visualiza\u00E7\u00E3o window=janela # # accessible relations # -labelFor=r\u00f3tulo de +labelFor=r\u00F3tulo de labeledBy=rotulado por -memberOf=membro de +memberOf=membro de controlledBy=controlledBy controllerFor=controllerFor # @@ -78,31 +78,31 @@ armed=armado busy=ocupado checked=selecionado collapsed=recolhido -editable=edit\u00e1vel -expandable=expans\u00edvel +editable=edit\u00E1vel +expandable=expans\u00EDvel expanded=expandido -enabled=habilitado -focusable=focaliz\u00e1vel +enabled=ativado +focusable=focaliz\u00E1vel focused=focalizado iconified=iconizado modal=modal -multiline=v\u00e1rias linhas -multiselectable=m\u00faltipla escolha +multiline=v\u00E1rias linhas +multiselectable=m\u00FAltipla escolha opaque=opaco pressed=pressionado -resizable=redimension\u00e1vel -selectable=selecion\u00e1vel +resizable=redimension\u00E1vel +selectable=selecion\u00E1vel selected=selecionado -showing=exibindo -singleline=linha \u00fanica -transient=transit\u00f3rio -visible=vis\u00edvel +showing=mostrando +singleline=linha \u00FAnica +transient=transit\u00F3rio +visible=vis\u00EDvel vertical=vertical horizontal=horizontal # # accessible actions # -toggle expandir=alternar expandir +toggle expandir=alternar expans\u00E3o # new relations, roles and states for J2SE 1.5.0 @@ -115,16 +115,16 @@ subwindowOf=subjanela de parentWindowOf=janela pai de embeds=integra embeddedBy=integrado por -childNodeOf=n\u00f3 filho de +childNodeOf=n\u00F3 filho de # # accessible roles # -header=cabe\u00e7alho -footer=rodap\u00e9 -paragraph=par\u00e1grafo -ruler=r\u00e9gua -editbar=barra de edi\u00e7\u00e3o +header=cabe\u00E7alho +footer=rodap\u00E9 +paragraph=par\u00E1grafo +ruler=r\u00E9gua +editbar=barra de edi\u00E7\u00E3o progressMonitor=monitor de progresso # @@ -139,7 +139,7 @@ truncated=truncado # # accessible roles # -htmlcontainer=cont\u00eainer HTML +htmlcontainer=Container de HTML # # END OF MATERIAL TO LOCALIZE diff --git a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_sv.properties b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_sv.properties index f028855d65f..337b6720d9e 100644 --- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_sv.properties +++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_sv.properties @@ -13,109 +13,109 @@ # # accessible roles # -alert=varning +alert=avisering awtcomponent=AWT-komponent checkbox=kryssruta -colorchooser=f\u00e4rgv\u00e4ljare +colorchooser=f\u00E4rgv\u00E4ljare columnheader=kolumnrubrik combobox=kombinationsruta -canvas=bakgrund +canvas=rityta desktopicon=skrivbordsikon desktoppane=skrivbordsruta dialog=dialogruta directorypane=katalogruta glasspane=glasruta -filechooser=filv\u00e4ljare +filechooser=filv\u00E4ljare filler=utfyllnad frame=ram internalframe=intern ram label=etikett layeredpane=staplad ruta list=lista -listitem=listelement -menubar=menylist +listitem=listobjekt +menubar=menyrad menu=meny menuitem=menyalternativ optionpane=alternativruta pagetab=sidflik pagetablist=sidflikslista panel=panel -passwordtext=l\u00f6senordstext +passwordtext=l\u00F6senordstext popupmenu=snabbmeny -progressbar=statuslist +progressbar=statusrad pushbutton=knapp -radiobutton=envalsknapp +radiobutton=alternativknapp rootpane=grundruta -rowheader=radhuvud -scrollbar=bl\u00e4ddringslist -scrollpane=bl\u00e4dderruta +rowheader=radrubrik +scrollbar=rullningslist +scrollpane=rullningsruta separator=avskiljare slider=skjutreglage splitpane=delad ruta swingcomponent=swing-komponent table=tabell text=text -tree=tr\u00e4d -togglebutton=v\u00e4xlingsknapp +tree=tr\u00E4d +togglebutton=v\u00E4xlingsknapp toolbar=verktygsrad tooltip=knappbeskrivning -unknown=ok\u00e4nd +unknown=ok\u00E4nd viewport=vyport -window=f\u00f6nster +window=f\u00F6nster # # accessible relations # -labelFor=etikett f\u00f6r +labelFor=etikett f\u00F6r labeledBy=etikett av memberOf=medlem i -controlledBy=kontrolleratAv -controllerFor=styrenhetF\u00f6r +controlledBy=controlledBy +controllerFor=controllerFor # # accessible states # active=aktiv -armed=anv\u00e4nd +armed=redo busy=upptagen checked=markerad -collapsed=inf\u00e4lld +collapsed=komprimerad editable=redigerbar -expandable=ut\u00f6kningsbar -expanded=ut\u00f6kad +expandable=ut\u00F6kningsbar +expanded=ut\u00F6kad enabled=aktiverad focusable=fokuseringsbar focused=fokuserad iconified=minimerad -modal=tillst\u00e5ndsberoende -multiline=flera linjer -multiselectable=multivalbar -opaque=ogenomskinlig +modal=modal +multiline=flera rader +multiselectable=flerval +opaque=t\u00E4ckande pressed=nedtryckt -resizable=storleks\u00e4ndringsbar -selectable=markeringsbar +resizable=storleks\u00E4ndringsbar +selectable=valbar selected=vald -showing=visa +showing=visas singleline=en rad -transient=flytande +transient=tillf\u00E4llig visible=synlig vertical=vertikal horizontal=horisontell # # accessible actions # -toggle expand=v\u00e4xla ut\u00f6ka +toggle ut\u00F6ka=v\u00E4xla ut\u00F6ka # new relations, roles and states for J2SE 1.5.0 # # accessible relations # -flowsTo=fl\u00f6dar till -flowsFrom=fl\u00f6dar fr\u00e5n -subwindowOf=delf\u00f6nster av -parentWindowOf=\u00f6verordnat f\u00f6nster f\u00f6r -embeds=b\u00e4ddar in -embeddedBy=b\u00e4ddas in av -childNodeOf=underordnad nod f\u00f6r +flowsTo=fl\u00F6dar till +flowsFrom=fl\u00F6dar fr\u00E5n +subwindowOf=delf\u00F6nster av +parentWindowOf=\u00F6verordnat f\u00F6nster f\u00F6r +embeds=b\u00E4ddar in +embeddedBy=b\u00E4ddas in av +childNodeOf=underordnad nod f\u00F6r # # accessible roles @@ -125,14 +125,14 @@ footer=sidfot paragraph=stycke ruler=linjal editbar=redigeringslist -progressMonitor=f\u00f6rloppsindikator +progressMonitor=f\u00F6rlopps\u00F6vervakare # # accessible states # -managesDescendants=hanterar efterf\u00f6ljare -indeterminate=obest\u00e4mt -truncated=avklippt +managesDescendants=hanterar underordnade +indeterminate=obest\u00E4mt +truncated=kapad # new for J2SE 1.6.0 diff --git a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_CN.properties b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_CN.properties index 13501058c80..755736a8885 100644 --- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_CN.properties +++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_CN.properties @@ -13,133 +13,133 @@ # # accessible roles # -alert=\u8b66\u62a5 -awtcomponent=AWT \u7ec4\u4ef6 -checkbox=\u590d\u9009\u6846 -colorchooser=\u989c\u8272\u9009\u62e9\u5668 +alert=\u9884\u8B66 +awtcomponent=AWT \u7EC4\u4EF6 +checkbox=\u590D\u9009\u6846 +colorchooser=\u989C\u8272\u9009\u62E9\u5668 columnheader=\u5217\u6807\u9898 -combobox=\u7ec4\u5408\u6846 -canvas=\u753b\u5e03 -desktopicon=\u684c\u9762\u56fe\u6807 -desktoppane=\u684c\u9762\u7a97\u683c -dialog=\u5bf9\u8bdd -directorypane=\u76ee\u5f55\u7a97\u683c -glasspane=\u73bb\u7483\u7a97\u683c -filechooser=\u6587\u4ef6\u9009\u62e9\u5668 -filler=\u6f0f\u6597 -frame=\u5e27 -internalframe=\u5185\u90e8\u5e27 -label=\u6807\u7b7e -layeredpane=\u5206\u5c42\u7a97\u683c +combobox=\u7EC4\u5408\u6846 +canvas=\u753B\u5E03 +desktopicon=\u684C\u9762\u56FE\u6807 +desktoppane=\u684C\u9762\u7A97\u683C +dialog=\u5BF9\u8BDD +directorypane=\u76EE\u5F55\u7A97\u683C +glasspane=\u73BB\u7483\u7A97\u683C +filechooser=\u6587\u4EF6\u9009\u62E9\u5668 +filler=\u6F0F\u6597 +frame=\u5E27 +internalframe=\u5185\u90E8\u5E27 +label=\u6807\u7B7E +layeredpane=\u5206\u5C42\u7A97\u683C list=\u5217\u8868 listitem=\u5217\u8868\u9879 -menubar=\u83dc\u5355\u680f -menu=\u83dc\u5355 -menuitem=\u83dc\u5355\u9879 -optionpane=\u9009\u9879\u7a97\u683c -pagetab=\u9875\u6807\u7b7e -pagetablist=\u9875\u6807\u7b7e\u5217\u8868 -panel=\u9762\u677f -passwordtext=\u5bc6\u7801\u6587\u672c -popupmenu=\u5f39\u51fa\u5f0f\u83dc\u5355 -progressbar=\u8fdb\u5ea6\u6761 -pushbutton=\u6309\u94ae -radiobutton=\u5355\u9009\u6309\u94ae -rootpane=\u6839\u7a97\u683c -rowheader=\u884c\u6807\u9898 -scrollbar=\u6eda\u52a8\u6761 -scrollpane=\u6eda\u52a8\u7a97\u683c +menubar=\u83DC\u5355\u680F +menu=\u83DC\u5355 +menuitem=\u83DC\u5355\u9879 +optionpane=\u9009\u9879\u7A97\u683C +pagetab=\u9875\u6807\u7B7E +pagetablist=\u9875\u6807\u7B7E\u5217\u8868 +panel=\u9762\u677F +passwordtext=\u53E3\u4EE4\u6587\u672C +popupmenu=\u5F39\u51FA\u5F0F\u83DC\u5355 +progressbar=\u8FDB\u5EA6\u680F +pushbutton=\u6309\u94AE +radiobutton=\u5355\u9009\u6309\u94AE +rootpane=\u6839\u7A97\u683C +rowheader=\u884C\u6807\u9898 +scrollbar=\u6EDA\u52A8\u6761 +scrollpane=\u6EDA\u52A8\u7A97\u683C separator=\u5206\u9694\u6761 -slider=\u6ed1\u5757 -splitpane=\u62c6\u5206\u7a97\u683c -swingcomponent=\u65cb\u8f6c\u7ec4\u4ef6 +slider=\u6ED1\u5757 +splitpane=\u62C6\u5206\u7A97\u683C +swingcomponent=\u65CB\u8F6C\u7EC4\u4EF6 table=\u8868 -text=\u6587\u672c +text=\u6587\u672C tree=\u6811 -togglebutton=\u5207\u6362\u6309\u94ae -toolbar=\u5de5\u5177\u680f -tooltip=\u5de5\u5177\u63d0\u793a -unknown=\u672a\u77e5 -viewport=\u89c6\u53e3 -window=\u7a97\u53e3 +togglebutton=\u5207\u6362\u6309\u94AE +toolbar=\u5DE5\u5177\u680F +tooltip=\u5DE5\u5177\u63D0\u793A +unknown=\u672A\u77E5 +viewport=\u89C6\u7A97 +window=\u7A97\u53E3 # # accessible relations # -labelFor=\u6807\u7b7e\u5c5e\u4e8e -labeledBy=\u6807\u7b7e\u5236\u4f5c\u8005 -memberOf=\u5c5e\u4e8e -controlledBy=\u63a7\u5236\u8005 -controllerFor=\u63a7\u5236\u5bf9\u8c61 +labelFor=\u6807\u7B7E\u5C5E\u4E8E +labeledBy=\u6807\u7B7E\u5236\u4F5C\u8005 +memberOf=\u5C5E\u4E8E +controlledBy=controlledBy +controllerFor=controllerFor # # accessible states # -active=\u6d3b\u52a8 -armed=\u5f85\u547d -busy=\u5fd9 -checked=\u5df2\u9009\u4e2d -collapsed=\u5df2\u6536\u7f29 -editable=\u53ef\u7f16\u8f91 -expandable=\u53ef\u5c55\u5f00 -expanded=\u5df2\u5c55\u5f00 -enabled=\u5df2\u542f\u7528 -focusable=\u53ef\u96c6\u4e2d -focused=\u5df2\u96c6\u4e2d -iconified=\u56fe\u6807\u5f0f -modal=\u6a21\u6001 -multiline=\u591a\u884c -multiselectable=\u591a\u9009\u62e9 -opaque=\u4e0d\u900f\u660e -pressed=\u5df2\u6309\u4e0b -resizable=\u5927\u5c0f\u53ef\u8c03 -selectable=\u53ef\u9009\u62e9 -selected=\u5df2\u9009\u5b9a -showing=\u6b63\u5728\u663e\u793a -singleline=\u5355\u884c -transient=\u77ac\u65f6 -visible=\u53ef\u89c1 -vertical=\u5782\u76f4 -horizontal=\u6c34\u5e73 +active=\u6D3B\u52A8 +armed=\u5F85\u547D +busy=\u5FD9 +checked=\u5DF2\u9009\u4E2D +collapsed=\u5DF2\u6536\u7F29 +editable=\u53EF\u7F16\u8F91 +expandable=\u53EF\u5C55\u5F00 +expanded=\u5DF2\u5C55\u5F00 +enabled=\u542F\u7528 +focusable=\u53EF\u96C6\u4E2D +focused=\u5DF2\u96C6\u4E2D +iconified=\u56FE\u6807\u5F0F +modal=\u6A21\u6001 +multiline=\u591A\u884C +multiselectable=\u591A\u9009\u62E9 +opaque=\u4E0D\u900F\u660E +pressed=\u5DF2\u6309\u4E0B +resizable=\u53EF\u8C03\u6574\u5927\u5C0F +selectable=\u53EF\u9009\u62E9 +selected=\u6240\u9009 +showing=\u6B63\u5728\u663E\u793A +singleline=\u5355\u884C +transient=\u77AC\u65F6 +visible=\u53EF\u89C1 +vertical=\u5782\u76F4 +horizontal=\u6C34\u5E73 # # accessible actions # -toggle expand=\u5207\u6362\u5c55\u5f00 +toggle expand=\u5207\u6362\u5C55\u5F00 # new relations, roles and states for J2SE 1.5.0 # # accessible relations # -flowsTo=\u6d41\u5411 -flowsFrom=\u6d41\u81ea -subwindowOf=\u5b50\u7a97\u53e3 -parentWindowOf=\u7236\u7a97\u53e3 -embeds=\u5d4c\u5165\u9879 -embeddedBy=\u5d4c\u5165\u8005 -childNodeOf=\u5b50\u8282\u70b9 +flowsTo=\u6D41\u5411 +flowsFrom=\u6D41\u81EA +subwindowOf=\u5B50\u7A97\u53E3 +parentWindowOf=\u7236\u7A97\u53E3 +embeds=\u5D4C\u5165\u9879 +embeddedBy=\u5D4C\u5165\u8005 +childNodeOf=\u5B50\u8282\u70B9 # # accessible roles # header=\u9875\u7709 -footer=\u9875\u811a -paragraph=\u6bb5\u843d -ruler=\u6807\u5c3a -editbar=\u7f16\u8f91\u680f -progressMonitor=\u8fdb\u5ea6\u76d1\u89c6\u5668 +footer=\u9875\u811A +paragraph=\u6BB5\u843D +ruler=\u6807\u5C3A +editbar=\u7F16\u8F91\u680F +progressMonitor=\u8FDB\u5EA6\u76D1\u89C6\u5668 # # accessible states # -managesDescendants=\u7ba1\u7406\u5b50\u5b59 -indeterminate=\u4e0d\u786e\u5b9a -truncated=\u5df2\u622a\u65ad +managesDescendants=\u7BA1\u7406\u5B50\u9879 +indeterminate=\u4E0D\u786E\u5B9A +truncated=\u5DF2\u622A\u65AD # new for J2SE 1.6.0 # # accessible roles # -htmlcontainer=HTML \u5bb9\u5668 +htmlcontainer=HTML \u5BB9\u5668 # # END OF MATERIAL TO LOCALIZE diff --git a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_TW.properties b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_TW.properties index 4c2c87e407c..f4d11b45411 100644 --- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_TW.properties +++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_TW.properties @@ -13,133 +13,133 @@ # # accessible roles # -alert=\u8b66\u793a -awtcomponent=AWT \u5143\u4ef6 -checkbox=\u6838\u53d6\u65b9\u584a -colorchooser=\u8272\u5f69\u9078\u64c7\u5668 -columnheader=\u76f4\u6b04\u6a19\u984c -combobox=\u4e0b\u62c9\u5f0f\u6e05\u55ae\u65b9\u584a -canvas=\u756b\u5e03 -desktopicon=\u684c\u9762\u5716\u793a -desktoppane=\u684c\u9762\u7a97\u683c -dialog=\u5c0d\u8a71\u65b9\u584a -directorypane=\u76ee\u9304\u7a97\u683c -glasspane=\u6aa2\u8996\u7a97\u683c -filechooser=\u6a94\u6848\u9078\u64c7\u5668 -filler=\u586b\u5145\u7269 -frame=\u6846\u67b6 -internalframe=\u5167\u90e8\u6846\u67b6 -label=\u6a19\u7c64 -layeredpane=\u5206\u5c64\u7a97\u683c -list=\u6e05\u55ae -listitem=\u6e05\u55ae\u9805\u76ee -menubar=\u529f\u80fd\u8868\u5217 -menu=\u529f\u80fd\u8868 -menuitem=\u529f\u80fd\u8868\u9805\u76ee -optionpane=\u9078\u9805\u7a97\u683c -pagetab=\u9801\u9762\u6a19\u7c64 -pagetablist=\u9801\u9762\u6a19\u7c64\u6e05\u55ae -panel=\u9762\u677f -passwordtext=\u5bc6\u78bc\u6587\u5b57 -popupmenu=\u8e66\u73fe\u5f0f\u529f\u80fd\u8868 -progressbar=\u9032\u5ea6\u5217 -pushbutton=\u4e0b\u58d3\u6309\u9215 -radiobutton=\u55ae\u9078\u9215 -rootpane=root \u7a97\u683c -rowheader=\u5217\u6a19\u984c -scrollbar=\u6372\u8ef8 -scrollpane=\u6372\u52d5\u7a97\u683c +alert=\u8B66\u793A +awtcomponent=AWT \u5143\u4EF6 +checkbox=\u6838\u53D6\u65B9\u584A +colorchooser=\u8272\u5F69\u9078\u64C7\u5668 +columnheader=\u76F4\u6B04\u6A19\u984C +combobox=\u4E0B\u62C9\u5F0F\u6E05\u55AE\u65B9\u584A +canvas=\u756B\u5E03 +desktopicon=\u684C\u9762\u5716\u793A +desktoppane=\u684C\u9762\u7A97\u683C +dialog=\u5C0D\u8A71\u65B9\u584A +directorypane=\u76EE\u9304\u7A97\u683C +glasspane=\u6AA2\u8996\u7A97\u683C +filechooser=\u6A94\u6848\u9078\u64C7\u5668 +filler=\u586B\u5145\u7269 +frame=\u6846\u67B6 +internalframe=\u5167\u90E8\u6846\u67B6 +label=\u6A19\u7C64 +layeredpane=\u5206\u5C64\u7A97\u683C +list=\u6E05\u55AE +listitem=\u6E05\u55AE\u9805\u76EE +menubar=\u529F\u80FD\u8868\u5217 +menu=\u529F\u80FD\u8868 +menuitem=\u529F\u80FD\u8868\u9805\u76EE +optionpane=\u9078\u9805\u7A97\u683C +pagetab=\u9801\u9762\u9801\u7C64 +pagetablist=\u9801\u9762\u9801\u7C64\u6E05\u55AE +panel=\u9762\u677F +passwordtext=\u5BC6\u78BC\u6587\u5B57 +popupmenu=\u5373\u73FE\u5F0F\u529F\u80FD\u8868 +progressbar=\u9032\u5EA6\u5217 +pushbutton=\u4E0B\u58D3\u6309\u9215 +radiobutton=\u55AE\u9078\u9215 +rootpane=root \u7A97\u683C +rowheader=\u5217\u6A19\u984C +scrollbar=\u6372\u8EF8 +scrollpane=\u6372\u52D5\u7A97\u683C separator=\u5206\u9694\u5143 -slider=\u6ed1\u52d5\u8ef8 -splitpane=\u5206\u5272\u7a97\u683c -swingcomponent=Swing \u5143\u4ef6 -table=\u8868\u683c -text=\u6587\u5b57 -tree=\u6a39\u72c0\u7d50\u69cb -togglebutton=\u5207\u63db\u6309\u9215 -toolbar=\u5de5\u5177\u5217 -tooltip=\u5de5\u5177\u63d0\u793a -unknown=\u672a\u77e5 -viewport=\u6aa2\u8996\u5340 -window=\u8996\u7a97 +slider=\u6ED1\u52D5\u8EF8 +splitpane=\u5206\u5272\u7A97\u683C +swingcomponent=Swing \u5143\u4EF6 +table=\u8868\u683C +text=\u6587\u5B57 +tree=\u6A39\u72C0\u7D50\u69CB +togglebutton=\u5207\u63DB\u6309\u9215 +toolbar=\u5DE5\u5177\u5217 +tooltip=\u5DE5\u5177\u63D0\u793A +unknown=\u4E0D\u660E\u7684 +viewport=\u6AA2\u8996\u5340 +window=\u8996\u7A97 # # accessible relations # -labelFor=\u6a19\u793a\u5c0d\u8c61 -labeledBy=\u6a19\u793a\u8005 -memberOf=\u6240\u5c6c\u6210\u54e1 -controlledBy=\u63a7\u5236\u8005 -controllerFor=\u63a7\u5236\u5c0d\u8c61 +labelFor=\u6A19\u793A\u5C0D\u8C61 +labeledBy=\u6A19\u793A\u8005 +memberOf=\u6240\u5C6C\u6210\u54E1 +controlledBy=\u63A7\u5236\u8005 +controllerFor=\u63A7\u5236\u5C0D\u8C61 # # accessible states # -active=\u4f5c\u7528\u4e2d -armed=\u5df2\u914d\u5099 -busy=\u5fd9\u788c\u4e2d -checked=\u5df2\u6838\u9078 -collapsed=\u5df2\u6536\u7e2e -editable=\u53ef\u7de8\u8f2f -expandable=\u53ef\u64f4\u5c55 -expanded=\u5df2\u64f4\u5c55 -enabled=\u5df2\u555f\u52d5 -focusable=\u53ef\u805a\u7126 -focused=\u5df2\u805a\u7126 -iconified=\u5df2\u5716\u793a\u5316 -modal=\u6a21\u614b -multiline=\u591a\u884c -multiselectable=\u53ef\u591a\u91cd\u9078\u53d6 -opaque=\u4e0d\u900f\u660e -pressed=\u5df2\u6309\u4e0b -resizable=\u53ef\u8abf\u6574\u5927\u5c0f -selectable=\u53ef\u9078\u53d6 -selected=\u5df2\u9078\u53d6 -showing=\u986f\u793a -singleline=\u55ae\u884c -transient=\u66ab\u6642\u7684 -visible=\u53ef\u898b\u7684 -vertical=\u5782\u76f4 -horizontal=\u6c34\u5e73 +active=\u4F5C\u7528\u4E2D +armed=\u5DF2\u914D\u5099 +busy=\u5FD9\u788C\u4E2D +checked=\u5DF2\u6838\u9078 +collapsed=\u5DF2\u6536\u7E2E +editable=\u53EF\u7DE8\u8F2F +expandable=\u53EF\u64F4\u5C55 +expanded=\u5DF2\u64F4\u5C55 +enabled=\u5DF2\u555F\u7528 +focusable=\u53EF\u805A\u7126 +focused=\u5DF2\u805A\u7126 +iconified=\u5DF2\u5716\u793A\u5316 +modal=\u6A21\u614B +multiline=\u591A\u884C +multiselectable=\u53EF\u591A\u91CD\u9078\u53D6 +opaque=\u4E0D\u900F\u660E +pressed=\u5DF2\u6309\u4E0B +resizable=\u53EF\u8ABF\u6574\u5927\u5C0F +selectable=\u53EF\u9078\u53D6 +selected=\u5DF2\u9078\u53D6 +showing=\u986F\u793A +singleline=\u55AE\u884C +transient=\u66AB\u6642\u7684 +visible=\u53EF\u898B\u7684 +vertical=\u5782\u76F4 +horizontal=\u6C34\u5E73 # # accessible actions # -toggle expand=\u5207\u63db\u64f4\u5c55 +toggle expand=\u5207\u63DB\u64F4\u5C55 # new relations, roles and states for J2SE 1.5.0 # # accessible relations # -flowsTo=\u6d41\u52d5\u81f3 -flowsFrom=\u6d41\u52d5\u81ea -subwindowOf=\u5b50\u8996\u7a97 -parentWindowOf=\u7236\u7cfb\u8996\u7a97 -embeds=\u5167\u5d4c -embeddedBy=\u5167\u5d4c\u8005 -childNodeOf=\u5b50\u7bc0\u9ede +flowsTo=\u6D41\u52D5\u81F3 +flowsFrom=\u6D41\u52D5\u81EA +subwindowOf=\u5B50\u8996\u7A97 +parentWindowOf=\u7236\u7CFB\u8996\u7A97 +embeds=\u5167\u5D4C +embeddedBy=\u5167\u5D4C\u8005 +childNodeOf=\u5B50\u7BC0\u9EDE # # accessible roles # header=\u9801\u9996 -footer=\u9801\u5c3e -paragraph=\u6bb5\u843d -ruler=\u6a19\u5c3a -editbar=\u7de8\u8f2f\u5217 -progressMonitor=\u9032\u5ea6\u76e3\u8996\u5668 +footer=\u9801\u5C3E +paragraph=\u6BB5\u843D +ruler=\u5C3A\u898F +editbar=\u7DE8\u8F2F\u5217 +progressMonitor=\u9032\u5EA6\u76E3\u8996\u5668 # # accessible states # -managesDescendants=\u7ba1\u7406\u5b50\u4ee3 -indeterminate=\u4e0d\u78ba\u5b9a -truncated=\u5df2\u622a\u65b7 +managesDescendants=\u7BA1\u7406\u5B50\u4EE3 +indeterminate=\u4E0D\u78BA\u5B9A +truncated=\u5DF2\u622A\u65B7 # new for J2SE 1.6.0 # # accessible roles # -htmlcontainer=HTML \u5bb9\u5668 +htmlcontainer=HTML \u5BB9\u5668 # # END OF MATERIAL TO LOCALIZE diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties index 9b15608c2be..3440d8f542e 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties @@ -21,19 +21,19 @@ GTKColorChooserPanel.mnemonic=71 # character of GTKColorChooserPanel.hueText should be underlined to # represent the mnemonic. GTKColorChooserPanel.hueText=Farbton: -GTKColorChooserPanel.hueMnemonic=70 +GTKColorChooserPanel.hueMnemonic=72 GTKColorChooserPanel.redText=Rot: -GTKColorChooserPanel.redMnemonic=82 +GTKColorChooserPanel.redMnemonic=69 -GTKColorChooserPanel.saturationText=S\u00e4ttigung: +GTKColorChooserPanel.saturationText=S\u00E4ttigung: GTKColorChooserPanel.saturationMnemonic=83 -GTKColorChooserPanel.greenText=Gr\u00fcn: +GTKColorChooserPanel.greenText=Gr\u00FCn: GTKColorChooserPanel.greenMnemonic=71 GTKColorChooserPanel.valueText=Wert: -GTKColorChooserPanel.valueMnemonic=87 +GTKColorChooserPanel.valueMnemonic=86 GTKColorChooserPanel.blueText=Blau: GTKColorChooserPanel.blueMnemonic=66 @@ -49,35 +49,35 @@ FileChooser.acceptAllFileFilterText=Alle Dateien FileChooser.newFolderButtonText=Neuer Ordner FileChooser.newFolderButtonMnemonic=78 FileChooser.newFolderDialogText=Ordnername: -FileChooser.newFolderNoDirectoryErrorTitleText=Error -FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory -FileChooser.deleteFileButtonText=Datei l\u00f6schen +FileChooser.newFolderNoDirectoryErrorTitleText=Fehler +FileChooser.newFolderNoDirectoryErrorText=Fehler beim Erstellen von Verzeichnis "{0}": Datei oder Verzeichnis nicht vorhanden +FileChooser.deleteFileButtonText=Datei l\u00F6schen FileChooser.deleteFileButtonMnemonic=76 FileChooser.renameFileButtonText=Datei umbenennen -FileChooser.renameFileButtonMnemonic=87 +FileChooser.renameFileButtonMnemonic=82 FileChooser.cancelButtonText=Abbrechen -FileChooser.cancelButtonMnemonic=83 -FileChooser.saveButtonText=Speichern -FileChooser.saveButtonMnemonic=69 +FileChooser.cancelButtonMnemonic=67 +FileChooser.saveButtonText=OK +FileChooser.saveButtonMnemonic=79 FileChooser.openButtonText=OK FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Speichern -FileChooser.openDialogTitleText=\u00d6ffnen +FileChooser.openDialogTitleText=\u00D6ffnen FileChooser.pathLabelText=Auswahl: FileChooser.filterLabelText=Filter: FileChooser.pathLabelMnemonic=83 FileChooser.foldersLabelText=Ordner -FileChooser.foldersLabelMnemonic=82 +FileChooser.foldersLabelMnemonic=68 FileChooser.filesLabelText=Dateien FileChooser.filesLabelMnemonic=70 -FileChooser.cancelButtonToolTipText=Farbauswahl abbrechen -FileChooser.saveButtonToolTipText=Ausgew\u00e4hlte Datei speichern -FileChooser.openButtonToolTipText=Ausgew\u00e4hlte Datei \u00f6ffnen +FileChooser.cancelButtonToolTipText=Dialogfeld f\u00FCr Dateiauswahl schlie\u00DFen. +FileChooser.saveButtonToolTipText=Ausgew\u00E4hlte Datei speichern. +FileChooser.openButtonToolTipText=Ausgew\u00E4hlte Datei \u00F6ffnen. FileChooser.renameFileDialogText=Datei "{0}" umbenennen in FileChooser.renameFileErrorTitle=Fehler FileChooser.renameFileErrorText=Fehler beim Umbenennen der Datei "{0}" in "{1}" OptionPane.okButtonMnemonic=79 -OptionPane.cancelButtonMnemonic=83 +OptionPane.cancelButtonMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties index c87f88f8ead..ed024c8ccdf 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties @@ -6,7 +6,7 @@ # GTK specific properties # GTK color chooser properties: -GTKColorChooserPanel.nameText=Selector de color para GTK +GTKColorChooserPanel.nameText=Selector de Color para GTK # mnemonic as a VK_ constant GTKColorChooserPanel.mnemonic=71 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you @@ -20,64 +20,64 @@ GTKColorChooserPanel.mnemonic=71 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second # character of GTKColorChooserPanel.hueText should be underlined to # represent the mnemonic. -GTKColorChooserPanel.hueText=Tono: -GTKColorChooserPanel.hueMnemonic=84 +GTKColorChooserPanel.hueText=Matiz: +GTKColorChooserPanel.hueMnemonic=72 GTKColorChooserPanel.redText=Rojo: -GTKColorChooserPanel.redMnemonic=82 +GTKColorChooserPanel.redMnemonic=69 -GTKColorChooserPanel.saturationText=Saturaci\u00f3n: +GTKColorChooserPanel.saturationText=Saturaci\u00F3n: GTKColorChooserPanel.saturationMnemonic=83 GTKColorChooserPanel.greenText=Verde: -GTKColorChooserPanel.greenMnemonic=86 +GTKColorChooserPanel.greenMnemonic=71 GTKColorChooserPanel.valueText=Valor: -GTKColorChooserPanel.valueMnemonic=65 +GTKColorChooserPanel.valueMnemonic=86 GTKColorChooserPanel.blueText=Azul: -GTKColorChooserPanel.blueMnemonic=65 +GTKColorChooserPanel.blueMnemonic=66 -GTKColorChooserPanel.colorNameText=Nombre del color: +GTKColorChooserPanel.colorNameText=Nombre del Color: GTKColorChooserPanel.colorNameMnemonic=78 ############ FILE CHOOSER STRINGS ############# -FileChooser.acceptAllFileFilterText=Todos los archivos -FileChooser.newFolderButtonText=Nueva carpeta +FileChooser.acceptAllFileFilterText=Todos los Archivos +FileChooser.newFolderButtonText=Nueva Carpeta FileChooser.newFolderButtonMnemonic=78 -FileChooser.newFolderDialogText=Nombre de la carpeta: +FileChooser.newFolderDialogText=Nombre de la Carpeta: FileChooser.newFolderNoDirectoryErrorTitleText=Error -FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory -FileChooser.deleteFileButtonText=Eliminar archivo +FileChooser.newFolderNoDirectoryErrorText=Error al crear el directorio "{0}": no existe dicho archivo o directorio +FileChooser.deleteFileButtonText=Suprimir Archivo FileChooser.deleteFileButtonMnemonic=76 -FileChooser.renameFileButtonText=Renombrar archivo +FileChooser.renameFileButtonText=Cambiar Nombre a Archivo FileChooser.renameFileButtonMnemonic=82 FileChooser.cancelButtonText=Cancelar FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=Guardar -FileChooser.saveButtonMnemonic=82 +FileChooser.saveButtonText=Aceptar +FileChooser.saveButtonMnemonic=79 FileChooser.openButtonText=Aceptar FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Guardar FileChooser.openDialogTitleText=Abrir -FileChooser.pathLabelText=Selecci\u00f3n: +FileChooser.pathLabelText=Selecci\u00F3n: FileChooser.filterLabelText=Filtro: FileChooser.pathLabelMnemonic=83 FileChooser.foldersLabelText=Carpetas -FileChooser.foldersLabelMnemonic=74 +FileChooser.foldersLabelMnemonic=68 FileChooser.filesLabelText=Archivos FileChooser.filesLabelMnemonic=70 -FileChooser.cancelButtonToolTipText=Cancelar cuadro de di\u00e1logo de selecci\u00f3n de archivos. +FileChooser.cancelButtonToolTipText=Abortar cuadro de di\u00E1logo del selector de archivos. FileChooser.saveButtonToolTipText=Guardar el archivo seleccionado. FileChooser.openButtonToolTipText=Abrir el archivo seleccionado. FileChooser.renameFileDialogText=Cambiar el nombre del archivo "{0}" por FileChooser.renameFileErrorTitle=Error -FileChooser.renameFileErrorText=Error al cambiar el nombre del archivo "{0}" por "{1}" +FileChooser.renameFileErrorText=Error al cambiar el nombre del archivo "{0}" a "{1}" OptionPane.okButtonMnemonic=79 OptionPane.cancelButtonMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties index 3ed6b451192..33d21c8ae6d 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties @@ -6,7 +6,7 @@ # GTK specific properties # GTK color chooser properties: -GTKColorChooserPanel.nameText=S\u00e9lectionneur de couleur GTK +GTKColorChooserPanel.nameText=S\u00E9lecteur de couleurs GTK # mnemonic as a VK_ constant GTKColorChooserPanel.mnemonic=71 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you @@ -20,25 +20,25 @@ GTKColorChooserPanel.mnemonic=71 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second # character of GTKColorChooserPanel.hueText should be underlined to # represent the mnemonic. -GTKColorChooserPanel.hueText=Teinte\u00a0: -GTKColorChooserPanel.hueMnemonic=84 +GTKColorChooserPanel.hueText=Teinte\u00A0: +GTKColorChooserPanel.hueMnemonic=72 -GTKColorChooserPanel.redText=Rouge\u00a0: -GTKColorChooserPanel.redMnemonic=82 +GTKColorChooserPanel.redText=Rouge\u00A0: +GTKColorChooserPanel.redMnemonic=69 -GTKColorChooserPanel.saturationText=Saturation\u00a0: +GTKColorChooserPanel.saturationText=Saturation\u00A0: GTKColorChooserPanel.saturationMnemonic=83 -GTKColorChooserPanel.greenText=Vert\u00a0: -GTKColorChooserPanel.greenMnemonic=69 +GTKColorChooserPanel.greenText=Vert\u00A0: +GTKColorChooserPanel.greenMnemonic=71 -GTKColorChooserPanel.valueText=Valeur\u00a0: +GTKColorChooserPanel.valueText=Valeur\u00A0: GTKColorChooserPanel.valueMnemonic=86 -GTKColorChooserPanel.blueText=Bleu\u00a0: +GTKColorChooserPanel.blueText=Bleu\u00A0: GTKColorChooserPanel.blueMnemonic=66 -GTKColorChooserPanel.colorNameText=Nom de la couleur\u00a0: +GTKColorChooserPanel.colorNameText=Nom de la couleur\u00A0: GTKColorChooserPanel.colorNameMnemonic=78 @@ -48,34 +48,34 @@ GTKColorChooserPanel.colorNameMnemonic=78 FileChooser.acceptAllFileFilterText=Tous les fichiers FileChooser.newFolderButtonText=Nouveau dossier FileChooser.newFolderButtonMnemonic=78 -FileChooser.newFolderDialogText=Nom de dossier: -FileChooser.newFolderNoDirectoryErrorTitleText=Error -FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory +FileChooser.newFolderDialogText=Nom du dossier : +FileChooser.newFolderNoDirectoryErrorTitleText=Erreur +FileChooser.newFolderNoDirectoryErrorText=Erreur lors de la cr\u00E9ation du r\u00E9pertoire "{0}" : ce fichier ou r\u00E9pertoire n''existe pas FileChooser.deleteFileButtonText=Supprimer le fichier FileChooser.deleteFileButtonMnemonic=76 FileChooser.renameFileButtonText=Renommer le fichier FileChooser.renameFileButtonMnemonic=82 FileChooser.cancelButtonText=Annuler -FileChooser.cancelButtonMnemonic=70 -FileChooser.saveButtonText=Enregistrer +FileChooser.cancelButtonMnemonic=67 +FileChooser.saveButtonText=OK FileChooser.saveButtonMnemonic=79 FileChooser.openButtonText=OK FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Enregistrer FileChooser.openDialogTitleText=Ouvrir -FileChooser.pathLabelText=S\u00e9lection\u00a0: +FileChooser.pathLabelText=S\u00E9lection\u00A0: FileChooser.filterLabelText=Filtre : FileChooser.pathLabelMnemonic=83 FileChooser.foldersLabelText=Dossiers -FileChooser.foldersLabelMnemonic=71 +FileChooser.foldersLabelMnemonic=68 FileChooser.filesLabelText=Fichiers FileChooser.filesLabelMnemonic=70 -FileChooser.cancelButtonToolTipText=Abandonner la bo\u00eete de dialogue du s\u00e9lectionneur de fichier. -FileChooser.saveButtonToolTipText=Enregistrer le fichier s\u00e9lectionn\u00e9. -FileChooser.openButtonToolTipText=Ouvrir le fichier s\u00e9lectionn\u00e9. +FileChooser.cancelButtonToolTipText=Ferme la bo\u00EEte de dialogue du s\u00E9lecteur de fichiers. +FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00E9lectionn\u00E9. +FileChooser.openButtonToolTipText=Ouvre le fichier s\u00E9lectionn\u00E9. -FileChooser.renameFileDialogText=Renommer le fichier "{0}" en +FileChooser.renameFileDialogText=Renomme le fichier "{0}" en FileChooser.renameFileErrorTitle=Erreur FileChooser.renameFileErrorText=Erreur lors du changement de nom du fichier "{0}" en "{1}" diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties index 84d4cf1a1ca..6a91c9040ce 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties @@ -20,17 +20,17 @@ GTKColorChooserPanel.mnemonic=71 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second # character of GTKColorChooserPanel.hueText should be underlined to # represent the mnemonic. -GTKColorChooserPanel.hueText=Tonalit\u00e0: -GTKColorChooserPanel.hueMnemonic=84 +GTKColorChooserPanel.hueText=Tonalit\u00E0: +GTKColorChooserPanel.hueMnemonic=72 GTKColorChooserPanel.redText=Rosso: -GTKColorChooserPanel.redMnemonic=82 +GTKColorChooserPanel.redMnemonic=69 GTKColorChooserPanel.saturationText=Saturazione: GTKColorChooserPanel.saturationMnemonic=83 GTKColorChooserPanel.greenText=Verde: -GTKColorChooserPanel.greenMnemonic=69 +GTKColorChooserPanel.greenMnemonic=71 GTKColorChooserPanel.valueText=Valore: GTKColorChooserPanel.valueMnemonic=86 @@ -49,16 +49,16 @@ FileChooser.acceptAllFileFilterText=Tutti i file FileChooser.newFolderButtonText=Nuova cartella FileChooser.newFolderButtonMnemonic=78 FileChooser.newFolderDialogText=Nome della cartella: -FileChooser.newFolderNoDirectoryErrorTitleText=Error -FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory +FileChooser.newFolderNoDirectoryErrorTitleText=Errore +FileChooser.newFolderNoDirectoryErrorText=Errore durante la creazione della directory "{0}": file o directory inesistente FileChooser.deleteFileButtonText=Elimina file FileChooser.deleteFileButtonMnemonic=76 FileChooser.renameFileButtonText=Rinomina file FileChooser.renameFileButtonMnemonic=82 FileChooser.cancelButtonText=Annulla FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=Salva -FileChooser.saveButtonMnemonic=82 +FileChooser.saveButtonText=OK +FileChooser.saveButtonMnemonic=79 FileChooser.openButtonText=OK FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Salva @@ -67,17 +67,17 @@ FileChooser.pathLabelText=Selezione: FileChooser.filterLabelText=Filtro: FileChooser.pathLabelMnemonic=83 FileChooser.foldersLabelText=Cartelle -FileChooser.foldersLabelMnemonic=79 +FileChooser.foldersLabelMnemonic=68 FileChooser.filesLabelText=File FileChooser.filesLabelMnemonic=70 -FileChooser.cancelButtonToolTipText=Chiude la finestra di dialogo di selezione colore. +FileChooser.cancelButtonToolTipText=Chiude la finestra di dialogo di selezione file. FileChooser.saveButtonToolTipText=Salva il file selezionato. FileChooser.openButtonToolTipText=Apre il file selezionato. -FileChooser.renameFileDialogText=Rinomina del file "{0}" in +FileChooser.renameFileDialogText=Rinomina file "{0}" in FileChooser.renameFileErrorTitle=Errore -FileChooser.renameFileErrorText=Errore nella rinomina del file "{0}" in "{1}" +FileChooser.renameFileErrorText=Errore durante la ridenominazione del file "{0}" in "{1}" OptionPane.okButtonMnemonic=79 OptionPane.cancelButtonMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties index 9d9c14f7e30..97501cd1cf6 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties @@ -6,7 +6,7 @@ # GTK specific properties # GTK color chooser properties: -GTKColorChooserPanel.nameText=GTK \u30ab\u30e9\u30fc\u30c1\u30e5\u30fc\u30b6 +GTKColorChooserPanel.nameText=GTK\u30AB\u30E9\u30FC\u30FB\u30C1\u30E5\u30FC\u30B6 # mnemonic as a VK_ constant GTKColorChooserPanel.mnemonic=71 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you @@ -20,64 +20,64 @@ GTKColorChooserPanel.mnemonic=71 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second # character of GTKColorChooserPanel.hueText should be underlined to # represent the mnemonic. -GTKColorChooserPanel.hueText=\u8272\u5408\u3044(H): +GTKColorChooserPanel.hueText=\u8272\u76F8: GTKColorChooserPanel.hueMnemonic=72 -GTKColorChooserPanel.redText=\u8d64(E): +GTKColorChooserPanel.redText=\u8D64: GTKColorChooserPanel.redMnemonic=69 -GTKColorChooserPanel.saturationText=\u5f69\u5ea6(S): +GTKColorChooserPanel.saturationText=\u5F69\u5EA6: GTKColorChooserPanel.saturationMnemonic=83 -GTKColorChooserPanel.greenText=\u7dd1(G): +GTKColorChooserPanel.greenText=\u7DD1: GTKColorChooserPanel.greenMnemonic=71 -GTKColorChooserPanel.valueText=\u5024(V): +GTKColorChooserPanel.valueText=\u5024: GTKColorChooserPanel.valueMnemonic=86 -GTKColorChooserPanel.blueText=\u9752(B): +GTKColorChooserPanel.blueText=\u9752: GTKColorChooserPanel.blueMnemonic=66 -GTKColorChooserPanel.colorNameText=\u8272\u540d(N): +GTKColorChooserPanel.colorNameText=\u8272\u540D: GTKColorChooserPanel.colorNameMnemonic=78 ############ FILE CHOOSER STRINGS ############# -FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb -FileChooser.newFolderButtonText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 +FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB +FileChooser.newFolderButtonText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 FileChooser.newFolderButtonMnemonic=78 -FileChooser.newFolderDialogText=\u30d5\u30a9\u30eb\u30c0\u540d: -FileChooser.newFolderNoDirectoryErrorTitleText=Error -FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory -FileChooser.deleteFileButtonText=\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664 +FileChooser.newFolderDialogText=\u30D5\u30A9\u30EB\u30C0\u540D: +FileChooser.newFolderNoDirectoryErrorTitleText=\u30A8\u30E9\u30FC +FileChooser.newFolderNoDirectoryErrorText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA"{0}"\u306E\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: \u3053\u306E\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u5B58\u5728\u3057\u307E\u305B\u3093 +FileChooser.deleteFileButtonText=\u30D5\u30A1\u30A4\u30EB\u306E\u524A\u9664 FileChooser.deleteFileButtonMnemonic=76 -FileChooser.renameFileButtonText=\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u5909\u66f4 +FileChooser.renameFileButtonText=\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u5909\u66F4 FileChooser.renameFileButtonMnemonic=82 -FileChooser.cancelButtonText=\u53d6\u6d88\u3057 +FileChooser.cancelButtonText=\u53D6\u6D88 FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\u4fdd\u5b58 +FileChooser.saveButtonText=OK FileChooser.saveButtonMnemonic=79 -FileChooser.openButtonText=\u4e86\u89e3 +FileChooser.openButtonText=OK FileChooser.openButtonMnemonic=79 -FileChooser.saveDialogTitleText=\u4fdd\u5b58 -FileChooser.openDialogTitleText=\u958b\u304f -FileChooser.pathLabelText=\u9078\u629e: -FileChooser.filterLabelText=\u30d5\u30a3\u30eb\u30bf: +FileChooser.saveDialogTitleText=\u4FDD\u5B58 +FileChooser.openDialogTitleText=\u958B\u304F +FileChooser.pathLabelText=\u9078\u629E: +FileChooser.filterLabelText=\u30D5\u30A3\u30EB\u30BF: FileChooser.pathLabelMnemonic=83 -FileChooser.foldersLabelText=\u30d5\u30a9\u30eb\u30c0 +FileChooser.foldersLabelText=\u30D5\u30A9\u30EB\u30C0 FileChooser.foldersLabelMnemonic=68 -FileChooser.filesLabelText=\u30d5\u30a1\u30a4\u30eb +FileChooser.filesLabelText=\u30D5\u30A1\u30A4\u30EB FileChooser.filesLabelMnemonic=70 -FileChooser.cancelButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u5f37\u5236\u7d42\u4e86 -FileChooser.saveButtonToolTipText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58 -FileChooser.openButtonToolTipText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f +FileChooser.cancelButtonToolTipText=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u7D42\u4E86\u3057\u307E\u3059\u3002 +FileChooser.saveButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3057\u307E\u3059\u3002 +FileChooser.openButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304D\u307E\u3059\u3002 -FileChooser.renameFileDialogText=\u30d5\u30a1\u30a4\u30eb "{0}" \u306e\u540d\u524d\u3092\u5909\u66f4: -FileChooser.renameFileErrorTitle=\u30a8\u30e9\u30fc -FileChooser.renameFileErrorText=\u30d5\u30a1\u30a4\u30eb "{0}" \u3092 "{1}" \u3078\u5909\u66f4\u6642\u306b\u30a8\u30e9\u30fc +FileChooser.renameFileDialogText=\u30D5\u30A1\u30A4\u30EB"{0}"\u3092\u6B21\u306E\u540D\u524D\u306B\u5909\u66F4: +FileChooser.renameFileErrorTitle=\u30A8\u30E9\u30FC +FileChooser.renameFileErrorText=\u30D5\u30A1\u30A4\u30EB"{0}"\u306E"{1}"\u3078\u306E\u5909\u66F4\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F OptionPane.okButtonMnemonic=79 OptionPane.cancelButtonMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties index 68586a64b77..7c9af7a73c2 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties @@ -6,7 +6,7 @@ # GTK specific properties # GTK color chooser properties: -GTKColorChooserPanel.nameText=GTK \uc0c9 \uc120\ud0dd +GTKColorChooserPanel.nameText=GTK \uC0C9\uC0C1 \uC120\uD0DD\uAE30 # mnemonic as a VK_ constant GTKColorChooserPanel.mnemonic=71 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you @@ -20,64 +20,64 @@ GTKColorChooserPanel.mnemonic=71 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second # character of GTKColorChooserPanel.hueText should be underlined to # represent the mnemonic. -GTKColorChooserPanel.hueText=\uc0c9\uc0c1(H): +GTKColorChooserPanel.hueText=\uC0C9\uC870: GTKColorChooserPanel.hueMnemonic=72 -GTKColorChooserPanel.redText=\ube68\uac15(E): +GTKColorChooserPanel.redText=\uBE68\uAC04\uC0C9: GTKColorChooserPanel.redMnemonic=69 -GTKColorChooserPanel.saturationText=\ucc44\ub3c4(S): +GTKColorChooserPanel.saturationText=\uCC44\uB3C4: GTKColorChooserPanel.saturationMnemonic=83 -GTKColorChooserPanel.greenText=\ub179\uc0c9(G): +GTKColorChooserPanel.greenText=\uB179\uC0C9: GTKColorChooserPanel.greenMnemonic=71 -GTKColorChooserPanel.valueText=\uac12(V): +GTKColorChooserPanel.valueText=\uAC12: GTKColorChooserPanel.valueMnemonic=86 -GTKColorChooserPanel.blueText=\ud30c\ub791(B): +GTKColorChooserPanel.blueText=\uD30C\uB780\uC0C9: GTKColorChooserPanel.blueMnemonic=66 -GTKColorChooserPanel.colorNameText=\uc0c9 \uc774\ub984(N): +GTKColorChooserPanel.colorNameText=\uC0C9\uC0C1 \uC774\uB984: GTKColorChooserPanel.colorNameMnemonic=78 ############ FILE CHOOSER STRINGS ############# -FileChooser.acceptAllFileFilterText=\ubaa8\ub4e0 \ud30c\uc77c -FileChooser.newFolderButtonText=\uc0c8 \ud3f4\ub354 +FileChooser.acceptAllFileFilterText=\uBAA8\uB4E0 \uD30C\uC77C +FileChooser.newFolderButtonText=\uC0C8 \uD3F4\uB354 FileChooser.newFolderButtonMnemonic=78 -FileChooser.newFolderDialogText=\ud3f4\ub354 \uc774\ub984: -FileChooser.newFolderNoDirectoryErrorTitleText=Error -FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory -FileChooser.deleteFileButtonText=\ud30c\uc77c \uc0ad\uc81c +FileChooser.newFolderDialogText=\uD3F4\uB354 \uC774\uB984: +FileChooser.newFolderNoDirectoryErrorTitleText=\uC624\uB958 +FileChooser.newFolderNoDirectoryErrorText="{0}" \uB514\uB809\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: \uD574\uB2F9 \uD30C\uC77C \uB610\uB294 \uB514\uB809\uD1A0\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. +FileChooser.deleteFileButtonText=\uD30C\uC77C \uC0AD\uC81C FileChooser.deleteFileButtonMnemonic=76 -FileChooser.renameFileButtonText=\ud30c\uc77c \uc774\ub984 \ubc14\uafb8\uae30 +FileChooser.renameFileButtonText=\uD30C\uC77C \uC774\uB984 \uBC14\uAFB8\uAE30 FileChooser.renameFileButtonMnemonic=82 -FileChooser.cancelButtonText=\ucde8\uc18c +FileChooser.cancelButtonText=\uCDE8\uC18C FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\uc800\uc7a5 +FileChooser.saveButtonText=\uD655\uC778 FileChooser.saveButtonMnemonic=79 -FileChooser.openButtonText=\ud655\uc778 +FileChooser.openButtonText=\uD655\uC778 FileChooser.openButtonMnemonic=79 -FileChooser.saveDialogTitleText=\uc800\uc7a5 -FileChooser.openDialogTitleText=\uc5f4\uae30 -FileChooser.pathLabelText=\uc120\ud0dd: -FileChooser.filterLabelText=\ud544\ud130: +FileChooser.saveDialogTitleText=\uC800\uC7A5 +FileChooser.openDialogTitleText=\uC5F4\uAE30 +FileChooser.pathLabelText=\uC120\uD0DD: +FileChooser.filterLabelText=\uD544\uD130: FileChooser.pathLabelMnemonic=83 -FileChooser.foldersLabelText=\ud3f4\ub354 +FileChooser.foldersLabelText=\uD3F4\uB354 FileChooser.foldersLabelMnemonic=68 -FileChooser.filesLabelText=\ud30c\uc77c +FileChooser.filesLabelText=\uD30C\uC77C FileChooser.filesLabelMnemonic=70 -FileChooser.cancelButtonToolTipText=\ud30c\uc77c \uc120\ud0dd \ub300\ud654 \uc0c1\uc790\ub97c \uc911\ub2e8\ud569\ub2c8\ub2e4. -FileChooser.saveButtonToolTipText=\uc120\ud0dd\ud55c \ud30c\uc77c\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4. -FileChooser.openButtonToolTipText=\uc120\ud0dd\ud55c \ud30c\uc77c\uc744 \uc5fd\ub2c8\ub2e4. +FileChooser.cancelButtonToolTipText=\uD30C\uC77C \uC120\uD0DD\uAE30 \uB300\uD654\uC0C1\uC790\uB97C \uC911\uB2E8\uD569\uB2C8\uB2E4. +FileChooser.saveButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C\uC744 \uC800\uC7A5\uD569\uB2C8\uB2E4. +FileChooser.openButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C\uC744 \uC5FD\uB2C8\uB2E4. -FileChooser.renameFileDialogText=\ud30c\uc77c "{0}"\uc744 \ub2e4\uc74c\uc73c\ub85c \uc774\ub984 \ubc14\uafb8\uae30 -FileChooser.renameFileErrorTitle=\uc624\ub958 -FileChooser.renameFileErrorText="{0}"\uc5d0\uc11c "{1}"\ub85c \uc774\ub984 \ubc14\uafb8\uae30 \uc624\ub958 +FileChooser.renameFileDialogText="{0}" \uD30C\uC77C\uC758 \uC774\uB984 \uBC14\uAFB8\uAE30 +FileChooser.renameFileErrorTitle=\uC624\uB958 +FileChooser.renameFileErrorText="{0}" \uD30C\uC77C\uC758 \uC774\uB984\uC744 "{1}"(\uC73C)\uB85C \uBC14\uAFB8\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. OptionPane.okButtonMnemonic=79 OptionPane.cancelButtonMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties index dff6f6f1528..3ca20897106 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties @@ -6,7 +6,7 @@ # GTK specific properties # GTK color chooser properties: -GTKColorChooserPanel.nameText=Seletor de cores do GTK +GTKColorChooserPanel.nameText=Seletor de Cores do GTK # mnemonic as a VK_ constant GTKColorChooserPanel.mnemonic=71 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you @@ -26,7 +26,7 @@ GTKColorChooserPanel.hueMnemonic=72 GTKColorChooserPanel.redText=Vermelho: GTKColorChooserPanel.redMnemonic=69 -GTKColorChooserPanel.saturationText=Satura\u00e7\u00e3o: +GTKColorChooserPanel.saturationText=Satura\u00E7\u00E3o: GTKColorChooserPanel.saturationMnemonic=83 GTKColorChooserPanel.greenText=Verde: @@ -38,20 +38,22 @@ GTKColorChooserPanel.valueMnemonic=86 GTKColorChooserPanel.blueText=Azul: GTKColorChooserPanel.blueMnemonic=66 -GTKColorChooserPanel.colorNameText=Nome da cor: +GTKColorChooserPanel.colorNameText=Nome da Cor: GTKColorChooserPanel.colorNameMnemonic=78 ############ FILE CHOOSER STRINGS ############# -FileChooser.acceptAllFileFilterText=Todos os arquivos -FileChooser.newFolderButtonText=Nova pasta +FileChooser.acceptAllFileFilterText=Todos os Arquivos +FileChooser.newFolderButtonText=Nova Pasta FileChooser.newFolderButtonMnemonic=78 FileChooser.newFolderDialogText=Nome da pasta: -FileChooser.deleteFileButtonText=Excluir arquivo +FileChooser.newFolderNoDirectoryErrorTitleText=Erro +FileChooser.newFolderNoDirectoryErrorText=Erro ao criar o diret\u00F3rio "{0}": N\u00E3o h\u00E1 arquivo ou diret\u00F3rio +FileChooser.deleteFileButtonText=Deletar Arquivo FileChooser.deleteFileButtonMnemonic=76 -FileChooser.renameFileButtonText=Renomear arquivo +FileChooser.renameFileButtonText=Renomear Arquivo FileChooser.renameFileButtonMnemonic=82 FileChooser.cancelButtonText=Cancelar FileChooser.cancelButtonMnemonic=67 @@ -61,7 +63,7 @@ FileChooser.openButtonText=OK FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Salvar FileChooser.openDialogTitleText=Abrir -FileChooser.pathLabelText=Sele\u00e7\u00e3o: +FileChooser.pathLabelText=Sele\u00E7\u00E3o: FileChooser.filterLabelText=Filtro: FileChooser.pathLabelMnemonic=83 FileChooser.foldersLabelText=Pastas @@ -69,7 +71,7 @@ FileChooser.foldersLabelMnemonic=68 FileChooser.filesLabelText=Arquivos FileChooser.filesLabelMnemonic=70 -FileChooser.cancelButtonToolTipText=Anular caixa de di\u00e1logo do seletor de arquivos. +FileChooser.cancelButtonToolTipText=Abortar caixa de di\u00E1logo do seletor de arquivos. FileChooser.saveButtonToolTipText=Salvar arquivo selecionado. FileChooser.openButtonToolTipText=Abrir arquivo selecionado. diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties index 672be192091..0bda01d0318 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties @@ -6,7 +6,7 @@ # GTK specific properties # GTK color chooser properties: -GTKColorChooserPanel.nameText=GTK F\u00e4rgv\u00e4ljaren +GTKColorChooserPanel.nameText=GTK-f\u00E4rgv\u00E4ljaren # mnemonic as a VK_ constant GTKColorChooserPanel.mnemonic=71 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you @@ -21,25 +21,25 @@ GTKColorChooserPanel.mnemonic=71 # character of GTKColorChooserPanel.hueText should be underlined to # represent the mnemonic. GTKColorChooserPanel.hueText=Nyans: -GTKColorChooserPanel.hueMnemonic=78 +GTKColorChooserPanel.hueMnemonic=72 -GTKColorChooserPanel.redText=R\u00f6d: -GTKColorChooserPanel.redMnemonic=82 +GTKColorChooserPanel.redText=R\u00F6d: +GTKColorChooserPanel.redMnemonic=69 -GTKColorChooserPanel.saturationText=M\u00e4ttnad: -GTKColorChooserPanel.saturationMnemonic=77 +GTKColorChooserPanel.saturationText=M\u00E4ttnad: +GTKColorChooserPanel.saturationMnemonic=83 -GTKColorChooserPanel.greenText=Gr\u00f6n: +GTKColorChooserPanel.greenText=Gr\u00F6n: GTKColorChooserPanel.greenMnemonic=71 -GTKColorChooserPanel.valueText=V\u00e4rde: +GTKColorChooserPanel.valueText=V\u00E4rde: GTKColorChooserPanel.valueMnemonic=86 -GTKColorChooserPanel.blueText=Bl\u00e5: +GTKColorChooserPanel.blueText=Bl\u00E5: GTKColorChooserPanel.blueMnemonic=66 -GTKColorChooserPanel.colorNameText=F\u00e4rgnamn: -GTKColorChooserPanel.colorNameMnemonic=70 +GTKColorChooserPanel.colorNameText=F\u00E4rg: +GTKColorChooserPanel.colorNameMnemonic=78 @@ -47,37 +47,37 @@ GTKColorChooserPanel.colorNameMnemonic=70 FileChooser.acceptAllFileFilterText=Alla filer FileChooser.newFolderButtonText=Ny mapp -FileChooser.newFolderButtonMnemonic=70 +FileChooser.newFolderButtonMnemonic=78 FileChooser.newFolderDialogText=Mapp: -FileChooser.newFolderNoDirectoryErrorTitleText=Error -FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory +FileChooser.newFolderNoDirectoryErrorTitleText=Fel +FileChooser.newFolderNoDirectoryErrorText=Ett fel intr\u00E4ffade vid f\u00F6rs\u00F6k att skapa katalogen "{0}": Filen eller katalogen finns inte FileChooser.deleteFileButtonText=Ta bort fil FileChooser.deleteFileButtonMnemonic=76 -FileChooser.renameFileButtonText=Byt namn p\u00e5 fil -FileChooser.renameFileButtonMnemonic=84 +FileChooser.renameFileButtonText=Namn\u00E4ndra fil +FileChooser.renameFileButtonMnemonic=82 FileChooser.cancelButtonText=Avbryt -FileChooser.cancelButtonMnemonic=83 -FileChooser.saveButtonText=Spara -FileChooser.saveButtonMnemonic=80 +FileChooser.cancelButtonMnemonic=67 +FileChooser.saveButtonText=OK +FileChooser.saveButtonMnemonic=79 FileChooser.openButtonText=OK FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Spara -FileChooser.openDialogTitleText=\u00d6ppna -FileChooser.pathLabelText=Markeringen: +FileChooser.openDialogTitleText=\u00D6ppna +FileChooser.pathLabelText=Val: FileChooser.filterLabelText=Filter: -FileChooser.pathLabelMnemonic=77 +FileChooser.pathLabelMnemonic=83 FileChooser.foldersLabelText=Mappar -FileChooser.foldersLabelMnemonic=82 +FileChooser.foldersLabelMnemonic=68 FileChooser.filesLabelText=Filer FileChooser.filesLabelMnemonic=70 -FileChooser.cancelButtonToolTipText=St\u00e4ng dialogrutan f\u00f6r filval. -FileChooser.saveButtonToolTipText=Spara den markerade filen. -FileChooser.openButtonToolTipText=\u00d6ppna den markerade filen. +FileChooser.cancelButtonToolTipText=Avbryt dialogrutan Filv\u00E4ljare. +FileChooser.saveButtonToolTipText=Spara vald fil. +FileChooser.openButtonToolTipText=\u00D6ppna vald fil. -FileChooser.renameFileDialogText=Byt namn p\u00e5 fil "{0}" till +FileChooser.renameFileDialogText=Namn\u00E4ndra fil "{0}" till FileChooser.renameFileErrorTitle=Fel -FileChooser.renameFileErrorText=Det gick inte att byta namn p\u00e5 fil "{0}" till "{1}" +FileChooser.renameFileErrorText=Fel vid namn\u00E4ndring av fil "{0}" till "{1}" OptionPane.okButtonMnemonic=79 -OptionPane.cancelButtonMnemonic=83 +OptionPane.cancelButtonMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties index 8a7d74cb576..425f6add749 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties @@ -6,7 +6,7 @@ # GTK specific properties # GTK color chooser properties: -GTKColorChooserPanel.nameText=GTK Color Chooser +GTKColorChooserPanel.nameText=GTK \u989C\u8272\u9009\u62E9\u5668 # mnemonic as a VK_ constant GTKColorChooserPanel.mnemonic=71 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you @@ -20,64 +20,64 @@ GTKColorChooserPanel.mnemonic=71 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second # character of GTKColorChooserPanel.hueText should be underlined to # represent the mnemonic. -GTKColorChooserPanel.hueText=\u8272\u8c03(H)\uff1a +GTKColorChooserPanel.hueText=\u8272\u8C03: GTKColorChooserPanel.hueMnemonic=72 -GTKColorChooserPanel.redText=\u7ea2(E)\uff1a +GTKColorChooserPanel.redText=\u7EA2: GTKColorChooserPanel.redMnemonic=69 -GTKColorChooserPanel.saturationText=\u9971\u548c\u5ea6(S)\uff1a +GTKColorChooserPanel.saturationText=\u9971\u548C\u5EA6: GTKColorChooserPanel.saturationMnemonic=83 -GTKColorChooserPanel.greenText=\u7eff(G)\uff1a +GTKColorChooserPanel.greenText=\u7EFF: GTKColorChooserPanel.greenMnemonic=71 -GTKColorChooserPanel.valueText=\u503c(V)\uff1a +GTKColorChooserPanel.valueText=\u503C: GTKColorChooserPanel.valueMnemonic=86 -GTKColorChooserPanel.blueText=\u84dd(B)\uff1a +GTKColorChooserPanel.blueText=\u84DD: GTKColorChooserPanel.blueMnemonic=66 -GTKColorChooserPanel.colorNameText=\u989c\u8272\u540d\u79f0(N)\uff1a +GTKColorChooserPanel.colorNameText=\u989C\u8272\u540D\u79F0: GTKColorChooserPanel.colorNameMnemonic=78 ############ FILE CHOOSER STRINGS ############# -FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4ef6 -FileChooser.newFolderButtonText=\u65b0\u5efa\u6587\u4ef6\u5939 +FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4EF6 +FileChooser.newFolderButtonText=\u65B0\u5EFA\u6587\u4EF6\u5939 FileChooser.newFolderButtonMnemonic=78 -FileChooser.newFolderDialogText=\u6587\u4ef6\u5939\u540d\uff1a -FileChooser.newFolderNoDirectoryErrorTitleText=Error -FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory -FileChooser.deleteFileButtonText=\u5220\u9664\u6587\u4ef6 +FileChooser.newFolderDialogText=\u6587\u4EF6\u5939\u540D: +FileChooser.newFolderNoDirectoryErrorTitleText=\u9519\u8BEF +FileChooser.newFolderNoDirectoryErrorText=\u521B\u5EFA\u76EE\u5F55 "{0}" \u65F6\u51FA\u9519: \u6CA1\u6709\u6B64\u7C7B\u6587\u4EF6\u6216\u76EE\u5F55 +FileChooser.deleteFileButtonText=\u5220\u9664\u6587\u4EF6 FileChooser.deleteFileButtonMnemonic=76 -FileChooser.renameFileButtonText=\u91cd\u547d\u540d\u6587\u4ef6 +FileChooser.renameFileButtonText=\u91CD\u547D\u540D\u6587\u4EF6 FileChooser.renameFileButtonMnemonic=82 -FileChooser.cancelButtonText=\u53d6\u6d88 +FileChooser.cancelButtonText=\u53D6\u6D88 FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\u4fdd\u5b58 +FileChooser.saveButtonText=\u786E\u5B9A FileChooser.saveButtonMnemonic=79 -FileChooser.openButtonText=\u786e\u5b9a +FileChooser.openButtonText=\u786E\u5B9A FileChooser.openButtonMnemonic=79 -FileChooser.saveDialogTitleText=\u4fdd\u5b58 -FileChooser.openDialogTitleText=\u6253\u5f00 -FileChooser.pathLabelText=\u9009\u62e9\uff1a -FileChooser.filterLabelText=\u8fc7\u6ee4\u5668\uff1a +FileChooser.saveDialogTitleText=\u4FDD\u5B58 +FileChooser.openDialogTitleText=\u6253\u5F00 +FileChooser.pathLabelText=\u9009\u62E9: +FileChooser.filterLabelText=\u7B5B\u9009\u5668: FileChooser.pathLabelMnemonic=83 -FileChooser.foldersLabelText=\u6587\u4ef6\u5939 +FileChooser.foldersLabelText=\u6587\u4EF6\u5939 FileChooser.foldersLabelMnemonic=68 -FileChooser.filesLabelText=\u6587\u4ef6 +FileChooser.filesLabelText=\u6587\u4EF6 FileChooser.filesLabelMnemonic=70 -FileChooser.cancelButtonToolTipText=\u7ec8\u6b62\u6587\u4ef6\u9009\u62e9\u5668\u5bf9\u8bdd\u6846\u3002 -FileChooser.saveButtonToolTipText=\u4fdd\u5b58\u9009\u5b9a\u7684\u6587\u4ef6\u3002 -FileChooser.openButtonToolTipText=\u6253\u5f00\u9009\u5b9a\u7684\u6587\u4ef6\u3002 +FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6587\u4EF6\u9009\u62E9\u5668\u5BF9\u8BDD\u6846\u3002 +FileChooser.saveButtonToolTipText=\u4FDD\u5B58\u6240\u9009\u6587\u4EF6\u3002 +FileChooser.openButtonToolTipText=\u6253\u5F00\u6240\u9009\u6587\u4EF6\u3002 -FileChooser.renameFileDialogText=\u5c06\u6587\u4ef6\u201c{0}\u201d\u91cd\u547d\u540d\u4e3a -FileChooser.renameFileErrorTitle=\u9519\u8bef -FileChooser.renameFileErrorText=\u5c06\u6587\u4ef6\u201c{0}\u201d\u91cd\u547d\u540d\u4e3a\u201c{1}\u201d\u65f6\u51fa\u9519 +FileChooser.renameFileDialogText=\u5C06\u6587\u4EF6 "{0}" \u91CD\u547D\u540D\u4E3A +FileChooser.renameFileErrorTitle=\u9519\u8BEF +FileChooser.renameFileErrorText=\u5C06\u6587\u4EF6 "{0}" \u91CD\u547D\u540D\u4E3A "{1}" \u65F6\u51FA\u9519 OptionPane.okButtonMnemonic=79 OptionPane.cancelButtonMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties index d43facb6be0..84d1d20f407 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties @@ -6,7 +6,7 @@ # GTK specific properties # GTK color chooser properties: -GTKColorChooserPanel.nameText=GTK Color Chooser +GTKColorChooserPanel.nameText=GTK \u8272\u5F69\u9078\u64C7\u5668 # mnemonic as a VK_ constant GTKColorChooserPanel.mnemonic=71 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you @@ -20,64 +20,64 @@ GTKColorChooserPanel.mnemonic=71 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second # character of GTKColorChooserPanel.hueText should be underlined to # represent the mnemonic. -GTKColorChooserPanel.hueText=\u8272\u8abf(H): +GTKColorChooserPanel.hueText=\u8272\u8ABF: GTKColorChooserPanel.hueMnemonic=72 -GTKColorChooserPanel.redText=\u7d05(E): +GTKColorChooserPanel.redText=\u7D05: GTKColorChooserPanel.redMnemonic=69 -GTKColorChooserPanel.saturationText=\u98fd\u548c(S): +GTKColorChooserPanel.saturationText=\u98FD\u548C: GTKColorChooserPanel.saturationMnemonic=83 -GTKColorChooserPanel.greenText=\u7da0(G): +GTKColorChooserPanel.greenText=\u7DA0: GTKColorChooserPanel.greenMnemonic=71 -GTKColorChooserPanel.valueText=\u503c(V): +GTKColorChooserPanel.valueText=\u503C: GTKColorChooserPanel.valueMnemonic=86 -GTKColorChooserPanel.blueText=\u85cd(B): +GTKColorChooserPanel.blueText=\u85CD: GTKColorChooserPanel.blueMnemonic=66 -GTKColorChooserPanel.colorNameText=\u984f\u8272\u540d\u7a31(N): +GTKColorChooserPanel.colorNameText=\u984F\u8272\u540D\u7A31: GTKColorChooserPanel.colorNameMnemonic=78 ############ FILE CHOOSER STRINGS ############# -FileChooser.acceptAllFileFilterText=\u6240\u6709\u6a94\u6848 -FileChooser.newFolderButtonText=\u65b0\u6a94\u6848\u593e +FileChooser.acceptAllFileFilterText=\u6240\u6709\u6A94\u6848 +FileChooser.newFolderButtonText=\u65B0\u8CC7\u6599\u593E FileChooser.newFolderButtonMnemonic=78 -FileChooser.newFolderDialogText=\u6a94\u6848\u593e\u540d\u7a31: -FileChooser.newFolderNoDirectoryErrorTitleText=Error -FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory -FileChooser.deleteFileButtonText=\u522a\u9664\u6a94\u6848 +FileChooser.newFolderDialogText=\u8CC7\u6599\u593E\u540D\u7A31: +FileChooser.newFolderNoDirectoryErrorTitleText=\u932F\u8AA4 +FileChooser.newFolderNoDirectoryErrorText=\u5EFA\u7ACB\u76EE\u9304 "{0}" \u6642\u767C\u751F\u932F\u8AA4: \u6C92\u6709\u6B64\u6A94\u6848\u6216\u76EE\u9304 +FileChooser.deleteFileButtonText=\u522A\u9664\u6A94\u6848 FileChooser.deleteFileButtonMnemonic=76 -FileChooser.renameFileButtonText=\u91cd\u65b0\u547d\u540d\u6a94\u6848 +FileChooser.renameFileButtonText=\u91CD\u65B0\u547D\u540D\u6A94\u6848 FileChooser.renameFileButtonMnemonic=82 -FileChooser.cancelButtonText=\u53d6\u6d88 +FileChooser.cancelButtonText=\u53D6\u6D88 FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\u5132\u5b58 +FileChooser.saveButtonText=\u78BA\u5B9A FileChooser.saveButtonMnemonic=79 -FileChooser.openButtonText=\u78ba\u5b9a +FileChooser.openButtonText=\u78BA\u5B9A FileChooser.openButtonMnemonic=79 -FileChooser.saveDialogTitleText=\u5132\u5b58 -FileChooser.openDialogTitleText=\u958b\u555f -FileChooser.pathLabelText=\u9078\u53d6: -FileChooser.filterLabelText=\u904e\u6ffe\u5668: +FileChooser.saveDialogTitleText=\u5132\u5B58 +FileChooser.openDialogTitleText=\u958B\u555F +FileChooser.pathLabelText=\u9078\u53D6: +FileChooser.filterLabelText=\u7BE9\u9078: FileChooser.pathLabelMnemonic=83 -FileChooser.foldersLabelText=\u6a94\u6848\u593e +FileChooser.foldersLabelText=\u8CC7\u6599\u593E FileChooser.foldersLabelMnemonic=68 -FileChooser.filesLabelText=\u6a94\u6848 +FileChooser.filesLabelText=\u6A94\u6848 FileChooser.filesLabelMnemonic=70 -FileChooser.cancelButtonToolTipText=\u4e2d\u65b7\u6a94\u6848\u9078\u64c7\u7a0b\u5f0f\u5c0d\u8a71\u65b9\u584a\u3002 -FileChooser.saveButtonToolTipText=\u5132\u5b58\u9078\u53d6\u7684\u6a94\u6848\u3002 -FileChooser.openButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u6a94\u6848\u3002 +FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6A94\u6848\u9078\u64C7\u5668\u5C0D\u8A71\u65B9\u584A\u3002 +FileChooser.saveButtonToolTipText=\u5132\u5B58\u9078\u53D6\u7684\u6A94\u6848\u3002 +FileChooser.openButtonToolTipText=\u958B\u555F\u9078\u53D6\u7684\u6A94\u6848\u3002 -FileChooser.renameFileDialogText=\u5c07\u6a94\u6848 "{0}" \u91cd\u65b0\u547d\u540d\u70ba -FileChooser.renameFileErrorTitle=\u932f\u8aa4 -FileChooser.renameFileErrorText=\u5c07\u6a94\u6848 "{0}" \u91cd\u65b0\u547d\u540d\u70ba "{1}" \u6642\u51fa\u73fe\u932f\u8aa4 +FileChooser.renameFileDialogText=\u5C07\u6A94\u6848 "{0}" \u91CD\u65B0\u547D\u540D\u70BA +FileChooser.renameFileErrorTitle=\u932F\u8AA4 +FileChooser.renameFileErrorText=\u5C07\u6A94\u6848 "{0}" \u91CD\u65B0\u547D\u540D\u70BA "{1}" \u6642\u51FA\u73FE\u932F\u8AA4 OptionPane.okButtonMnemonic=79 OptionPane.cancelButtonMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_de.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_de.properties index 9396ee98d95..f1ee7ed76b1 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_de.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_de.properties @@ -23,18 +23,18 @@ FileChooser.cancelButtonText=Abbrechen FileChooser.saveButtonText=Speichern FileChooser.openButtonText=OK FileChooser.saveDialogTitleText=Speichern -FileChooser.openDialogTitleText=\u00d6ffnen +FileChooser.openDialogTitleText=\u00D6ffnen FileChooser.updateButtonText=Aktualisieren FileChooser.helpButtonText=Hilfe FileChooser.pathLabelText=Pfad- oder Ordnernamen eingeben: FileChooser.filterLabelText=Filter FileChooser.foldersLabelText=Ordner FileChooser.filesLabelText=Dateien -FileChooser.enterFileNameLabelText=Filternamen eingeben: -FileChooser.enterFolderNameLabelText=Enter folder name: +FileChooser.enterFileNameLabelText=Dateinamen eingeben: +FileChooser.enterFolderNameLabelText=Ordnernamen eingeben: -FileChooser.cancelButtonToolTipText=Dialogfeld f\u00fcr Dateiauswahl abbrechen -FileChooser.saveButtonToolTipText=Ausgew\u00e4hlte Datei speichern -FileChooser.openButtonToolTipText=Ausgew\u00e4hlte Datei \u00f6ffnen -FileChooser.updateButtonToolTipText=Verzeichnisliste aktualisieren -FileChooser.helpButtonToolTipText=Hilfe f\u00fcr Dateiauswahl +FileChooser.cancelButtonToolTipText=Dialogfeld f\u00FCr Dateiauswahl schlie\u00DFen. +FileChooser.saveButtonToolTipText=Ausgew\u00E4hlte Datei speichern. +FileChooser.openButtonToolTipText=Ausgew\u00E4hlte Datei \u00F6ffnen. +FileChooser.updateButtonToolTipText=Verzeichnisliste aktualisieren. +FileChooser.helpButtonToolTipText=FileChooser-Hilfe. diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_es.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_es.properties index 67918e80980..c4e9108ff0e 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_es.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_es.properties @@ -26,15 +26,15 @@ FileChooser.saveDialogTitleText=Guardar FileChooser.openDialogTitleText=Abrir FileChooser.updateButtonText=Actualizar FileChooser.helpButtonText=Ayuda -FileChooser.pathLabelText=Introducir v\u00eda de acceso o nombre de carpeta: +FileChooser.pathLabelText=Introducir nombre de la ruta de acceso o carpeta: FileChooser.filterLabelText=Filtro FileChooser.foldersLabelText=Carpetas FileChooser.filesLabelText=Archivos FileChooser.enterFileNameLabelText=Introducir nombre de archivo: -FileChooser.enterFolderNameLabelText=Enter folder name: +FileChooser.enterFolderNameLabelText=Introducir nombre de carpeta: -FileChooser.cancelButtonToolTipText=Cuadro de di\u00e1logo para cancelar elector de archivo. +FileChooser.cancelButtonToolTipText=Abortar cuadro de di\u00E1logo del selector de archivos. FileChooser.saveButtonToolTipText=Guardar archivo seleccionado. FileChooser.openButtonToolTipText=Abrir archivo seleccionado. FileChooser.updateButtonToolTipText=Actualizar lista de directorios. -FileChooser.helpButtonToolTipText=Ayuda elector de archivos. +FileChooser.helpButtonToolTipText=Ayuda del selector de archivos. diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_fr.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_fr.properties index d92428272ac..8644dea7930 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_fr.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_fr.properties @@ -24,17 +24,17 @@ FileChooser.saveButtonText=Enregistrer FileChooser.openButtonText=OK FileChooser.saveDialogTitleText=Enregistrer FileChooser.openDialogTitleText=Ouvrir -FileChooser.updateButtonText=Mise \u00e0 jour +FileChooser.updateButtonText=Mettre \u00E0 jour FileChooser.helpButtonText=Aide FileChooser.pathLabelText=Entrez le chemin ou le nom du dossier : FileChooser.filterLabelText=Filtre FileChooser.foldersLabelText=Dossiers FileChooser.filesLabelText=Fichiers FileChooser.enterFileNameLabelText=Entrez le nom du fichier : -FileChooser.enterFolderNameLabelText=Enter folder name: +FileChooser.enterFolderNameLabelText=Entrez le nom du dossier : -FileChooser.cancelButtonToolTipText=Ferme la bo\u00eete de dialogue du s\u00e9lecteur de fichiers -FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00e9lectionn\u00e9 -FileChooser.openButtonToolTipText=Ouvre le fichier s\u00e9lectionn\u00e9 -FileChooser.updateButtonToolTipText=Met \u00e0 jour la liste des r\u00e9pertoires -FileChooser.helpButtonToolTipText=Aide sur le s\u00e9lecteur de fichiers +FileChooser.cancelButtonToolTipText=Ferme la bo\u00EEte de dialogue du s\u00E9lecteur de fichiers. +FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00E9lectionn\u00E9. +FileChooser.openButtonToolTipText=Ouvre le fichier s\u00E9lectionn\u00E9. +FileChooser.updateButtonToolTipText=Met \u00E0 jour la liste des r\u00E9pertoires. +FileChooser.helpButtonToolTipText=Aide du s\u00E9lecteur de fichiers diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_it.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_it.properties index bc0ba15f4c6..e637d6b5e8e 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_it.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_it.properties @@ -31,10 +31,10 @@ FileChooser.filterLabelText=Filtro FileChooser.foldersLabelText=Cartelle FileChooser.filesLabelText=File FileChooser.enterFileNameLabelText=Nome file: -FileChooser.enterFolderNameLabelText=Enter folder name: +FileChooser.enterFolderNameLabelText=Nome cartella: -FileChooser.cancelButtonToolTipText=Finestra di dialogo Interrompi Selezione file. -FileChooser.saveButtonToolTipText=Salva file selezionato. -FileChooser.openButtonToolTipText=Apri file selezionato. -FileChooser.updateButtonToolTipText=Aggiorna elenco directory. -FileChooser.helpButtonToolTipText=Guida di Selezione file. +FileChooser.cancelButtonToolTipText=Chiude la finestra di dialogo di selezione file. +FileChooser.saveButtonToolTipText=Salva il file selezionato. +FileChooser.openButtonToolTipText=Apre il file selezionato. +FileChooser.updateButtonToolTipText=Aggiorna lista directory. +FileChooser.helpButtonToolTipText=Guida FileChooser. diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ja.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ja.properties index 4ec2f48e0df..68342cc8544 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ja.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ja.properties @@ -19,22 +19,22 @@ ############ FILE CHOOSER STRINGS ############# FileChooser.acceptAllFileFilterText=* -FileChooser.cancelButtonText=\u53d6\u6d88\u3057 -FileChooser.saveButtonText=\u4fdd\u5b58 -FileChooser.openButtonText=\u4e86\u89e3 -FileChooser.saveDialogTitleText=\u4fdd\u5b58 -FileChooser.openDialogTitleText=\u958b\u304f -FileChooser.updateButtonText=\u66f4\u65b0 -FileChooser.helpButtonText=\u30d8\u30eb\u30d7 -FileChooser.pathLabelText=\u30d1\u30b9\u307e\u305f\u306f\u30d5\u30a9\u30eb\u30c0\u540d\u3092\u5165\u529b: -FileChooser.filterLabelText=\u30d5\u30a3\u30eb\u30bf -FileChooser.foldersLabelText=\u30d5\u30a9\u30eb\u30c0 -FileChooser.filesLabelText=\u30d5\u30a1\u30a4\u30eb -FileChooser.enterFileNameLabelText=\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u5165\u529b: -FileChooser.enterFolderNameLabelText=Enter folder name: +FileChooser.cancelButtonText=\u53D6\u6D88 +FileChooser.saveButtonText=\u4FDD\u5B58 +FileChooser.openButtonText=OK +FileChooser.saveDialogTitleText=\u4FDD\u5B58 +FileChooser.openDialogTitleText=\u958B\u304F +FileChooser.updateButtonText=\u66F4\u65B0 +FileChooser.helpButtonText=\u30D8\u30EB\u30D7 +FileChooser.pathLabelText=\u30D1\u30B9\u307E\u305F\u306F\u30D5\u30A9\u30EB\u30C0\u540D\u3092\u5165\u529B: +FileChooser.filterLabelText=\u30D5\u30A3\u30EB\u30BF +FileChooser.foldersLabelText=\u30D5\u30A9\u30EB\u30C0 +FileChooser.filesLabelText=\u30D5\u30A1\u30A4\u30EB +FileChooser.enterFileNameLabelText=\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u5165\u529B: +FileChooser.enterFolderNameLabelText=\u30D5\u30A9\u30EB\u30C0\u540D\u3092\u5165\u529B: -FileChooser.cancelButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u7d42\u4e86 -FileChooser.saveButtonToolTipText=\u9078\u629e\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58 -FileChooser.openButtonToolTipText=\u9078\u629e\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f -FileChooser.updateButtonToolTipText=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u8868\u793a\u3092\u66f4\u65b0 -FileChooser.helpButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u306e\u30d8\u30eb\u30d7 +FileChooser.cancelButtonToolTipText=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u7D42\u4E86\u3057\u307E\u3059\u3002 +FileChooser.saveButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3057\u307E\u3059\u3002 +FileChooser.openButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304D\u307E\u3059\u3002 +FileChooser.updateButtonToolTipText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30EA\u30B9\u30C8\u3092\u66F4\u65B0\u3057\u307E\u3059\u3002 +FileChooser.helpButtonToolTipText=FileChooser\u306E\u30D8\u30EB\u30D7\u3067\u3059\u3002 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ko.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ko.properties index 067711cf219..f522359b907 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ko.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ko.properties @@ -19,22 +19,22 @@ ############ FILE CHOOSER STRINGS ############# FileChooser.acceptAllFileFilterText=* -FileChooser.cancelButtonText=\ucde8\uc18c -FileChooser.saveButtonText=\uc800\uc7a5 -FileChooser.openButtonText=\ud655\uc778 -FileChooser.saveDialogTitleText=\uc800\uc7a5 -FileChooser.openDialogTitleText=\uc5f4\uae30 -FileChooser.updateButtonText=\uc5c5\ub370\uc774\ud2b8 -FileChooser.helpButtonText=\ub3c4\uc6c0\ub9d0 -FileChooser.pathLabelText=\uacbd\ub85c \ub610\ub294 \ud3f4\ub354 \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624: -FileChooser.filterLabelText=\ud544\ud130 -FileChooser.foldersLabelText=\ud3f4\ub354 -FileChooser.filesLabelText=\ud30c\uc77c -FileChooser.enterFileNameLabelText=\ud30c\uc77c \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624: -FileChooser.enterFolderNameLabelText=Enter folder name: +FileChooser.cancelButtonText=\uCDE8\uC18C +FileChooser.saveButtonText=\uC800\uC7A5 +FileChooser.openButtonText=\uD655\uC778 +FileChooser.saveDialogTitleText=\uC800\uC7A5 +FileChooser.openDialogTitleText=\uC5F4\uAE30 +FileChooser.updateButtonText=\uAC31\uC2E0 +FileChooser.helpButtonText=\uB3C4\uC6C0\uB9D0 +FileChooser.pathLabelText=\uACBD\uB85C \uB610\uB294 \uD3F4\uB354 \uC774\uB984 \uC785\uB825: +FileChooser.filterLabelText=\uD544\uD130 +FileChooser.foldersLabelText=\uD3F4\uB354 +FileChooser.filesLabelText=\uD30C\uC77C +FileChooser.enterFileNameLabelText=\uD30C\uC77C \uC774\uB984 \uC785\uB825: +FileChooser.enterFolderNameLabelText=\uD3F4\uB354 \uC774\uB984 \uC785\uB825: -FileChooser.cancelButtonToolTipText=\ud30c\uc77c \uc120\ud0dd \ub300\ud654\uc0c1\uc790\ub97c \uc911\uc9c0\ud569\ub2c8\ub2e4. -FileChooser.saveButtonToolTipText=\uc120\ud0dd\ub41c \ud30c\uc77c\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4. -FileChooser.openButtonToolTipText=\uc120\ud0dd\ub41c \ud30c\uc77c\uc744 \uc5fd\ub2c8\ub2e4. -FileChooser.updateButtonToolTipText=\ub514\ub809\ud1a0\ub9ac \ubaa9\ub85d\uc744 \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4. -FileChooser.helpButtonToolTipText=FileChooser \ub3c4\uc6c0\ub9d0. +FileChooser.cancelButtonToolTipText=\uD30C\uC77C \uC120\uD0DD\uAE30 \uB300\uD654\uC0C1\uC790\uB97C \uC911\uB2E8\uD569\uB2C8\uB2E4. +FileChooser.saveButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C\uC744 \uC800\uC7A5\uD569\uB2C8\uB2E4. +FileChooser.openButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C\uC744 \uC5FD\uB2C8\uB2E4. +FileChooser.updateButtonToolTipText=\uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D\uC744 \uAC31\uC2E0\uD569\uB2C8\uB2E4. +FileChooser.helpButtonToolTipText=FileChooser \uB3C4\uC6C0\uB9D0\uC785\uB2C8\uB2E4. diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_pt_BR.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_pt_BR.properties index fd5a50264f3..63b5d9d0c2f 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_pt_BR.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_pt_BR.properties @@ -26,14 +26,15 @@ FileChooser.saveDialogTitleText=Salvar FileChooser.openDialogTitleText=Abrir FileChooser.updateButtonText=Atualizar FileChooser.helpButtonText=Ajuda -FileChooser.pathLabelText=Inserir caminho ou nome da pasta: +FileChooser.pathLabelText=Informar caminho ou nome da pasta: FileChooser.filterLabelText=Filtro FileChooser.foldersLabelText=Pastas FileChooser.filesLabelText=Arquivos -FileChooser.enterFileNameLabelText=Inserir nome de arquivo: +FileChooser.enterFileNameLabelText=Informar nome do arquivo: +FileChooser.enterFolderNameLabelText=Informar nome da pasta: -FileChooser.cancelButtonToolTipText=Anular caixa de di\u00e1logo do seletor de arquivos. +FileChooser.cancelButtonToolTipText=Abortar caixa de di\u00E1logo do seletor de arquivos. FileChooser.saveButtonToolTipText=Salvar arquivo selecionado. FileChooser.openButtonToolTipText=Abrir arquivo selecionado. -FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00f3rios. +FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00F3rios. FileChooser.helpButtonToolTipText=Ajuda do FileChooser. diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_sv.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_sv.properties index dcf5ec59741..67a6c078768 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_sv.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_sv.properties @@ -23,18 +23,18 @@ FileChooser.cancelButtonText=Avbryt FileChooser.saveButtonText=Spara FileChooser.openButtonText=OK FileChooser.saveDialogTitleText=Spara -FileChooser.openDialogTitleText=\u00d6ppna +FileChooser.openDialogTitleText=\u00D6ppna FileChooser.updateButtonText=Uppdatera -FileChooser.helpButtonText=Hj\u00e4lp -FileChooser.pathLabelText=Ange s\u00f6kv\u00e4g eller mappnamn: +FileChooser.helpButtonText=Hj\u00E4lp +FileChooser.pathLabelText=Ange s\u00F6kv\u00E4g eller mappnamn: FileChooser.filterLabelText=Filter FileChooser.foldersLabelText=Mappar FileChooser.filesLabelText=Filer FileChooser.enterFileNameLabelText=Ange filnamn: -FileChooser.enterFolderNameLabelText=Enter folder name: +FileChooser.enterFolderNameLabelText=Ange ett mappnamn: -FileChooser.cancelButtonToolTipText=Avbryt \u00d6ppna fil. -FileChooser.saveButtonToolTipText=Spara markerad fil. -FileChooser.openButtonToolTipText=\u00d6ppna markerad fil. +FileChooser.cancelButtonToolTipText=Avbryt dialogrutan Filv\u00E4ljare. +FileChooser.saveButtonToolTipText=Spara vald fil. +FileChooser.openButtonToolTipText=\u00D6ppna vald fil. FileChooser.updateButtonToolTipText=Uppdatera kataloglistan. -FileChooser.helpButtonToolTipText=Hj\u00e4lp - Filv\u00e4ljare. +FileChooser.helpButtonToolTipText=Hj\u00E4lp - Filv\u00E4ljare. diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_CN.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_CN.properties index 9f1fdb8e929..a1576618dca 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_CN.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_CN.properties @@ -19,22 +19,22 @@ ############ FILE CHOOSER STRINGS ############# FileChooser.acceptAllFileFilterText=* -FileChooser.cancelButtonText=\u53d6\u6d88 -FileChooser.saveButtonText=\u4fdd\u5b58 -FileChooser.openButtonText=\u786e\u5b9a -FileChooser.saveDialogTitleText=\u4fdd\u5b58 -FileChooser.openDialogTitleText=\u6253\u5f00 -FileChooser.updateButtonText=\u66f4\u65b0 -FileChooser.helpButtonText=\u5e2e\u52a9 -FileChooser.pathLabelText=\u952e\u5165\u8def\u5f84\u6216\u6587\u4ef6\u5939\u540d\uff1a -FileChooser.filterLabelText=\u8fc7\u6ee4\u5668 -FileChooser.foldersLabelText=\u6587\u4ef6\u5939 -FileChooser.filesLabelText=\u6587\u4ef6 -FileChooser.enterFileNameLabelText=\u952e\u5165\u6587\u4ef6\u540d\uff1a -FileChooser.enterFolderNameLabelText=Enter folder name: +FileChooser.cancelButtonText=\u53D6\u6D88 +FileChooser.saveButtonText=\u4FDD\u5B58 +FileChooser.openButtonText=\u786E\u5B9A +FileChooser.saveDialogTitleText=\u4FDD\u5B58 +FileChooser.openDialogTitleText=\u6253\u5F00 +FileChooser.updateButtonText=\u66F4\u65B0 +FileChooser.helpButtonText=\u5E2E\u52A9 +FileChooser.pathLabelText=\u952E\u5165\u8DEF\u5F84\u6216\u6587\u4EF6\u5939\u540D: +FileChooser.filterLabelText=\u7B5B\u9009\u5668 +FileChooser.foldersLabelText=\u6587\u4EF6\u5939 +FileChooser.filesLabelText=\u6587\u4EF6 +FileChooser.enterFileNameLabelText=\u952E\u5165\u6587\u4EF6\u540D: +FileChooser.enterFolderNameLabelText=\u8F93\u5165\u6587\u4EF6\u5939\u540D: -FileChooser.cancelButtonToolTipText=\u7ec8\u6b62\u6587\u4ef6\u9009\u62e9\u5668\u5bf9\u8bdd\u6846 -FileChooser.saveButtonToolTipText=\u4fdd\u5b58\u9009\u62e9\u7684\u6587\u4ef6 -FileChooser.openButtonToolTipText=\u6253\u5f00\u9009\u62e9\u7684\u6587\u4ef6 -FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u5f55\u5217\u8868 -FileChooser.helpButtonToolTipText=\u6587\u4ef6\u9009\u62e9\u5668\u5e2e\u52a9 +FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6587\u4EF6\u9009\u62E9\u5668\u5BF9\u8BDD\u6846\u3002 +FileChooser.saveButtonToolTipText=\u4FDD\u5B58\u6240\u9009\u6587\u4EF6\u3002 +FileChooser.openButtonToolTipText=\u6253\u5F00\u6240\u9009\u6587\u4EF6\u3002 +FileChooser.updateButtonToolTipText=\u66F4\u65B0\u76EE\u5F55\u5217\u8868\u3002 +FileChooser.helpButtonToolTipText=FileChooser \u5E2E\u52A9\u3002 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_TW.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_TW.properties index b42af948713..f2985492b1a 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_TW.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_TW.properties @@ -19,22 +19,22 @@ ############ FILE CHOOSER STRINGS ############# FileChooser.acceptAllFileFilterText=* -FileChooser.cancelButtonText=\u53d6\u6d88 -FileChooser.saveButtonText=\u5132\u5b58 -FileChooser.openButtonText=\u78ba\u5b9a -FileChooser.saveDialogTitleText=\u5132\u5b58 -FileChooser.openDialogTitleText=\u958b\u555f -FileChooser.updateButtonText=\u66f4\u65b0 -FileChooser.helpButtonText=\u8aaa\u660e -FileChooser.pathLabelText=\u8f38\u5165\u8def\u5f91\u6216\u6a94\u6848\u593e\u540d\u7a31\ufe55 -FileChooser.filterLabelText=\u904e\u6ffe\u5668 -FileChooser.foldersLabelText=\u6a94\u6848\u593e -FileChooser.filesLabelText=\u6a94\u6848 -FileChooser.enterFileNameLabelText=\u8f38\u5165\u6a94\u6848\u540d\u7a31\ufe55 -FileChooser.enterFolderNameLabelText=Enter folder name: +FileChooser.cancelButtonText=\u53D6\u6D88 +FileChooser.saveButtonText=\u5132\u5B58 +FileChooser.openButtonText=\u78BA\u5B9A +FileChooser.saveDialogTitleText=\u5132\u5B58 +FileChooser.openDialogTitleText=\u958B\u555F +FileChooser.updateButtonText=\u66F4\u65B0 +FileChooser.helpButtonText=\u8AAA\u660E +FileChooser.pathLabelText=\u8F38\u5165\u8DEF\u5F91\u6216\u8CC7\u6599\u593E\u540D\u7A31: +FileChooser.filterLabelText=\u7BE9\u9078 +FileChooser.foldersLabelText=\u8CC7\u6599\u593E +FileChooser.filesLabelText=\u6A94\u6848 +FileChooser.enterFileNameLabelText=\u8F38\u5165\u6A94\u6848\u540D\u7A31: +FileChooser.enterFolderNameLabelText=\u8F38\u5165\u8CC7\u6599\u593E\u540D\u7A31: -FileChooser.cancelButtonToolTipText=\u4e2d\u65b7\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u5c0d\u8a71\u65b9\u584a\u3002 -FileChooser.saveButtonToolTipText=\u5132\u5b58\u9078\u53d6\u7684\u6a94\u6848\u3002 -FileChooser.openButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u6a94\u6848\u3002 -FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u9304\u6e05\u55ae\u3002 -FileChooser.helpButtonToolTipText=\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u8aaa\u660e\u3002 +FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6A94\u6848\u9078\u64C7\u5668\u5C0D\u8A71\u65B9\u584A\u3002 +FileChooser.saveButtonToolTipText=\u5132\u5B58\u9078\u53D6\u7684\u6A94\u6848\u3002 +FileChooser.openButtonToolTipText=\u958B\u555F\u9078\u53D6\u7684\u6A94\u6848\u3002 +FileChooser.updateButtonToolTipText=\u66F4\u65B0\u76EE\u9304\u6E05\u55AE\u3002 +FileChooser.helpButtonToolTipText=\u300C\u6A94\u6848\u9078\u64C7\u5668\u300D\u8AAA\u660E\u3002 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_de.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_de.properties index c08a39e5a1c..993b26445f3 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_de.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_de.properties @@ -21,10 +21,10 @@ FileChooser.lookInLabelText=Suchen in: FileChooser.saveInLabelText=Speichern in: FileChooser.fileNameLabelText=Dateiname: -FileChooser.folderNameLabelText=Folder name: +FileChooser.folderNameLabelText=Ordnername: FileChooser.filesOfTypeLabelText=Dateityp: -FileChooser.upFolderToolTipText=Eine Ebene h\u00f6her -FileChooser.upFolderAccessibleName=H\u00f6her +FileChooser.upFolderToolTipText=Eine Ebene h\u00F6her +FileChooser.upFolderAccessibleName=Nach oben FileChooser.homeFolderToolTipText=Home FileChooser.homeFolderAccessibleName=Home FileChooser.newFolderToolTipText=Neuen Ordner erstellen @@ -35,13 +35,13 @@ FileChooser.listViewButtonAccessibleName=Liste FileChooser.listViewActionLabelText=Liste FileChooser.detailsViewButtonToolTipText=Details FileChooser.detailsViewButtonAccessibleName=Details -FileChooser.viewMenuButtonToolTipText = View Menu -FileChooser.viewMenuButtonAccessibleName = View Menu +FileChooser.viewMenuButtonToolTipText = Ansichtsmen\u00FC +FileChooser.viewMenuButtonAccessibleName = Ansichtsmen\u00FC FileChooser.detailsViewActionLabelText=Details FileChooser.refreshActionLabelText=Aktualisieren FileChooser.viewMenuLabelText=Ansicht -FileChooser.fileNameHeaderText=Dateiname -FileChooser.fileSizeHeaderText=Gr\u00f6\u00dfe +FileChooser.fileNameHeaderText=Name +FileChooser.fileSizeHeaderText=Gr\u00F6\u00DFe FileChooser.fileTypeHeaderText=Typ -FileChooser.fileDateHeaderText=Ge\u00e4ndert -FileChooser.fileAttrHeaderText=Attribut +FileChooser.fileDateHeaderText=Ge\u00E4ndert +FileChooser.fileAttrHeaderText=Attribute diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_es.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_es.properties index 1e413749e46..adf964b0013 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_es.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_es.properties @@ -20,28 +20,28 @@ FileChooser.lookInLabelText=Buscar en: FileChooser.saveInLabelText=Guardar en: -FileChooser.fileNameLabelText=Nombre de archivo: -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=Archivos de tipo: -FileChooser.upFolderToolTipText=Subir un nivel +FileChooser.fileNameLabelText=Nombre de Archivo: +FileChooser.folderNameLabelText=Nombre de la Carpeta: +FileChooser.filesOfTypeLabelText=Archivos de Tipo: +FileChooser.upFolderToolTipText=Subir un Nivel FileChooser.upFolderAccessibleName=Arriba -FileChooser.homeFolderToolTipText=Principal -FileChooser.homeFolderAccessibleName=Principal -FileChooser.newFolderToolTipText=Crear carpeta nueva -FileChooser.newFolderAccessibleName=Carpeta nueva -FileChooser.newFolderActionLabelText=Carpeta nueva +FileChooser.homeFolderToolTipText=Inicio +FileChooser.homeFolderAccessibleName=Inicio +FileChooser.newFolderToolTipText=Crear Nueva Carpeta +FileChooser.newFolderAccessibleName=Nueva Carpeta +FileChooser.newFolderActionLabelText=Nueva Carpeta FileChooser.listViewButtonToolTipText=Lista FileChooser.listViewButtonAccessibleName=Lista FileChooser.listViewActionLabelText=Lista FileChooser.detailsViewButtonToolTipText=Detalles FileChooser.detailsViewButtonAccessibleName=Detalles -FileChooser.viewMenuButtonToolTipText = View Menu -FileChooser.viewMenuButtonAccessibleName = View Menu +FileChooser.viewMenuButtonToolTipText = Men\u00FA Ver +FileChooser.viewMenuButtonAccessibleName = Men\u00FA Ver FileChooser.detailsViewActionLabelText=Detalles -FileChooser.refreshActionLabelText=Renovar +FileChooser.refreshActionLabelText=Refrescar FileChooser.viewMenuLabelText=Ver FileChooser.fileNameHeaderText=Nombre -FileChooser.fileSizeHeaderText=Tama\u00f1o +FileChooser.fileSizeHeaderText=Tama\u00F1o FileChooser.fileTypeHeaderText=Tipo FileChooser.fileDateHeaderText=Modificado FileChooser.fileAttrHeaderText=Atributos diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties index 3fdc78cd06e..d4561daaadb 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties @@ -20,28 +20,28 @@ FileChooser.lookInLabelText=Rechercher dans : FileChooser.saveInLabelText=Enregistrer dans : -FileChooser.fileNameLabelText=Nom de fichier : -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=Fichiers du type : +FileChooser.fileNameLabelText=Nom du fichier : +FileChooser.folderNameLabelText=Nom du dossier : +FileChooser.filesOfTypeLabelText=Fichiers de type : FileChooser.upFolderToolTipText=Remonte d'un niveau. -FileChooser.upFolderAccessibleName=Vers le haut -FileChooser.homeFolderToolTipText=R\u00e9pertoire d'accueil -FileChooser.homeFolderAccessibleName=Accueil -FileChooser.newFolderToolTipText=Cr\u00e9e un nouveau dossier. +FileChooser.upFolderAccessibleName=Monter +FileChooser.homeFolderToolTipText=R\u00E9pertoire d'origine +FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine +FileChooser.newFolderToolTipText=Cr\u00E9e un dossier. FileChooser.newFolderAccessibleName=Nouveau dossier FileChooser.newFolderActionLabelText=Nouveau dossier FileChooser.listViewButtonToolTipText=Liste FileChooser.listViewButtonAccessibleName=Liste FileChooser.listViewActionLabelText=Liste -FileChooser.detailsViewButtonToolTipText=D\u00e9tails -FileChooser.detailsViewButtonAccessibleName=D\u00e9tails -FileChooser.viewMenuButtonToolTipText = View Menu -FileChooser.viewMenuButtonAccessibleName = View Menu -FileChooser.detailsViewActionLabelText=D\u00e9tails +FileChooser.detailsViewButtonToolTipText=D\u00E9tails +FileChooser.detailsViewButtonAccessibleName=D\u00E9tails +FileChooser.viewMenuButtonToolTipText = Menu Affichage +FileChooser.viewMenuButtonAccessibleName = Menu Affichage +FileChooser.detailsViewActionLabelText=D\u00E9tails FileChooser.refreshActionLabelText=Actualiser FileChooser.viewMenuLabelText=Affichage FileChooser.fileNameHeaderText=Nom FileChooser.fileSizeHeaderText=Taille FileChooser.fileTypeHeaderText=Type -FileChooser.fileDateHeaderText=Modifi\u00e9 +FileChooser.fileDateHeaderText=Modifi\u00E9 FileChooser.fileAttrHeaderText=Attributs diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_it.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_it.properties index 40777cc9792..4edf194a173 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_it.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_it.properties @@ -21,22 +21,22 @@ FileChooser.lookInLabelText=Cerca in: FileChooser.saveInLabelText=Salva in: FileChooser.fileNameLabelText=Nome file: -FileChooser.folderNameLabelText=Folder name: +FileChooser.folderNameLabelText=Nome della cartella: FileChooser.filesOfTypeLabelText=Tipo file: FileChooser.upFolderToolTipText=Cartella superiore FileChooser.upFolderAccessibleName=Superiore -FileChooser.homeFolderToolTipText=Principale -FileChooser.homeFolderAccessibleName=Principale +FileChooser.homeFolderToolTipText=Home +FileChooser.homeFolderAccessibleName=Home FileChooser.newFolderToolTipText=Crea nuova cartella FileChooser.newFolderAccessibleName=Nuova cartella FileChooser.newFolderActionLabelText=Nuova cartella -FileChooser.listViewButtonToolTipText=Elenco -FileChooser.listViewButtonAccessibleName=Elenco -FileChooser.listViewActionLabelText=Elenco +FileChooser.listViewButtonToolTipText=Lista +FileChooser.listViewButtonAccessibleName=Lista +FileChooser.listViewActionLabelText=Lista FileChooser.detailsViewButtonToolTipText=Dettagli FileChooser.detailsViewButtonAccessibleName=Dettagli -FileChooser.viewMenuButtonToolTipText = View Menu -FileChooser.viewMenuButtonAccessibleName = View Menu +FileChooser.viewMenuButtonToolTipText = Visualizza menu +FileChooser.viewMenuButtonAccessibleName = Visualizza menu FileChooser.detailsViewActionLabelText=Dettagli FileChooser.refreshActionLabelText=Aggiorna FileChooser.viewMenuLabelText=Visualizza diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ja.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ja.properties index 6613739e4cd..7c6c3053372 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ja.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ja.properties @@ -18,33 +18,30 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\u53c2\u7167: -FileChooser.saveInLabelText=\u4fdd\u5b58: -FileChooser.fileNameLabelText=\u30d5\u30a1\u30a4\u30eb\u540d: -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7: -FileChooser.upFolderToolTipText=1 \u30ec\u30d9\u30eb\u4e0a\u3078 -FileChooser.upFolderAccessibleName=\u4e0a\u3078 -FileChooser.homeFolderToolTipText=\u30db\u30fc\u30e0 -FileChooser.homeFolderAccessibleName=\u30db\u30fc\u30e0 -FileChooser.newFolderToolTipText=\u30d5\u30a9\u30eb\u30c0\u306e\u65b0\u898f\u4f5c\u6210 -FileChooser.newFolderAccessibleName=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 -FileChooser.newFolderActionLabelText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 -FileChooser.listViewButtonToolTipText=\u30ea\u30b9\u30c8 -FileChooser.listViewButtonAccessibleName=\u30ea\u30b9\u30c8 -FileChooser.listViewActionLabelText=\u30ea\u30b9\u30c8 -FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30 -FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30 -FileChooser.viewMenuButtonToolTipText = View Menu -FileChooser.viewMenuButtonAccessibleName = View Menu -FileChooser.detailsViewActionLabelText=\u8a73\u7d30 -FileChooser.refreshActionLabelText=\u66f4\u65b0 -FileChooser.viewMenuLabelText=\u8868\u793a -FileChooser.fileNameHeaderText=\u540d\u524d -FileChooser.fileSizeHeaderText=\u30b5\u30a4\u30ba -FileChooser.fileTypeHeaderText=\u30bf\u30a4\u30d7 -FileChooser.fileDateHeaderText=\u66f4\u65b0\u65e5 -FileChooser.fileAttrHeaderText=\u5c5e\u6027 -FileChooser.directoryOpenButtonText=\u958b\u304f(O) -FileChooser.openButtonText=\u958b\u304f(O) -FileChooser.saveButtonText=\u4fdd\u5b58(S) +FileChooser.lookInLabelText=\u53C2\u7167: +FileChooser.saveInLabelText=\u4FDD\u5B58: +FileChooser.fileNameLabelText=\u30D5\u30A1\u30A4\u30EB\u540D: +FileChooser.folderNameLabelText=\u30D5\u30A9\u30EB\u30C0\u540D: +FileChooser.filesOfTypeLabelText=\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30A4\u30D7: +FileChooser.upFolderToolTipText=1\u30EC\u30D9\u30EB\u4E0A\u3078 +FileChooser.upFolderAccessibleName=\u4E0A\u3078 +FileChooser.homeFolderToolTipText=\u30DB\u30FC\u30E0 +FileChooser.homeFolderAccessibleName=\u30DB\u30FC\u30E0 +FileChooser.newFolderToolTipText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210 +FileChooser.newFolderAccessibleName=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 +FileChooser.newFolderActionLabelText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 +FileChooser.listViewButtonToolTipText=\u30EA\u30B9\u30C8 +FileChooser.listViewButtonAccessibleName=\u30EA\u30B9\u30C8 +FileChooser.listViewActionLabelText=\u30EA\u30B9\u30C8 +FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30 +FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30 +FileChooser.viewMenuButtonToolTipText = \u8868\u793A\u30E1\u30CB\u30E5\u30FC +FileChooser.viewMenuButtonAccessibleName = \u8868\u793A\u30E1\u30CB\u30E5\u30FC +FileChooser.detailsViewActionLabelText=\u8A73\u7D30 +FileChooser.refreshActionLabelText=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5 +FileChooser.viewMenuLabelText=\u8868\u793A +FileChooser.fileNameHeaderText=\u540D\u524D +FileChooser.fileSizeHeaderText=\u30B5\u30A4\u30BA +FileChooser.fileTypeHeaderText=\u30BF\u30A4\u30D7 +FileChooser.fileDateHeaderText=\u4FEE\u6B63\u65E5 +FileChooser.fileAttrHeaderText=\u5C5E\u6027 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties index b53c21aaff1..53dedb4d672 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties @@ -18,33 +18,30 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\uac80\uc0c9 \uc704\uce58: -FileChooser.saveInLabelText=\uc800\uc7a5 \uc704\uce58: -FileChooser.fileNameLabelText=\ud30c\uc77c \uc774\ub984: -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\ud30c\uc77c \uc885\ub958: -FileChooser.upFolderToolTipText=\ud55c \ub2e8\uacc4 \uc704\ub85c -FileChooser.upFolderAccessibleName=\uc704 -FileChooser.homeFolderToolTipText=\ud648 -FileChooser.homeFolderAccessibleName=\ud648 -FileChooser.newFolderToolTipText=\uc0c8 \ud3f4\ub354 \uc791\uc131 -FileChooser.newFolderAccessibleName=\uc0c8 \ud3f4\ub354 -FileChooser.newFolderActionLabelText=\uc0c8 \ud3f4\ub354 -FileChooser.listViewButtonToolTipText=\ubaa9\ub85d -FileChooser.listViewButtonAccessibleName=\ubaa9\ub85d -FileChooser.listViewActionLabelText=\ubaa9\ub85d -FileChooser.detailsViewButtonToolTipText=\uc790\uc138\ud788 -FileChooser.detailsViewButtonAccessibleName=\uc790\uc138\ud788 -FileChooser.viewMenuButtonToolTipText = View Menu -FileChooser.viewMenuButtonAccessibleName = View Menu -FileChooser.detailsViewActionLabelText=\uc790\uc138\ud788 -FileChooser.refreshActionLabelText=\uac31\uc2e0 -FileChooser.viewMenuLabelText=\ubcf4\uae30 -FileChooser.fileNameHeaderText=\uc774\ub984 -FileChooser.fileSizeHeaderText=\ud06c\uae30 -FileChooser.fileTypeHeaderText=\uc885\ub958 -FileChooser.fileDateHeaderText=\uc218\uc815 -FileChooser.fileAttrHeaderText=\uc18d\uc131 -FileChooser.directoryOpenButtonText=\uc5f4\uae30(O) -FileChooser.openButtonText=\uc5f4\uae30(O) -FileChooser.saveButtonText=\uc800\uc7a5(S) +FileChooser.lookInLabelText=\uAC80\uC0C9 \uC704\uCE58: +FileChooser.saveInLabelText=\uC800\uC7A5 \uC704\uCE58: +FileChooser.fileNameLabelText=\uD30C\uC77C \uC774\uB984: +FileChooser.folderNameLabelText=\uD3F4\uB354 \uC774\uB984: +FileChooser.filesOfTypeLabelText=\uD30C\uC77C \uC720\uD615: +FileChooser.upFolderToolTipText=\uD55C \uB808\uBCA8 \uC704\uB85C +FileChooser.upFolderAccessibleName=\uC704\uB85C +FileChooser.homeFolderToolTipText=\uD648 +FileChooser.homeFolderAccessibleName=\uD648 +FileChooser.newFolderToolTipText=\uC0C8 \uD3F4\uB354 \uC0DD\uC131 +FileChooser.newFolderAccessibleName=\uC0C8 \uD3F4\uB354 +FileChooser.newFolderActionLabelText=\uC0C8 \uD3F4\uB354 +FileChooser.listViewButtonToolTipText=\uBAA9\uB85D +FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D +FileChooser.listViewActionLabelText=\uBAA9\uB85D +FileChooser.detailsViewButtonToolTipText=\uC138\uBD80 \uC815\uBCF4 +FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4 +FileChooser.viewMenuButtonToolTipText = \uBCF4\uAE30 \uBA54\uB274 +FileChooser.viewMenuButtonAccessibleName = \uBCF4\uAE30 \uBA54\uB274 +FileChooser.detailsViewActionLabelText=\uC138\uBD80 \uC815\uBCF4 +FileChooser.refreshActionLabelText=\uC0C8\uB85C \uACE0\uCE68 +FileChooser.viewMenuLabelText=\uBCF4\uAE30 +FileChooser.fileNameHeaderText=\uC774\uB984 +FileChooser.fileSizeHeaderText=\uD06C\uAE30 +FileChooser.fileTypeHeaderText=\uC720\uD615 +FileChooser.fileDateHeaderText=\uC218\uC815 \uB0A0\uC9DC +FileChooser.fileAttrHeaderText=\uC18D\uC131 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_pt_BR.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_pt_BR.properties index b7c7e14edec..526a0f9e5f1 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_pt_BR.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_pt_BR.properties @@ -20,20 +20,23 @@ FileChooser.lookInLabelText=Consultar em: FileChooser.saveInLabelText=Salvar em: -FileChooser.fileNameLabelText=Nome de arquivo: -FileChooser.filesOfTypeLabelText=Arquivos de tipo: -FileChooser.upFolderToolTipText=Um n\u00edvel acima +FileChooser.fileNameLabelText=Nome do arquivo: +FileChooser.folderNameLabelText=Nome da pasta: +FileChooser.filesOfTypeLabelText=Arquivos do tipo: +FileChooser.upFolderToolTipText=Um N\u00EDvel Acima FileChooser.upFolderAccessibleName=Acima -FileChooser.homeFolderToolTipText=In\u00edcio -FileChooser.homeFolderAccessibleName=In\u00edcio -FileChooser.newFolderToolTipText=Criar nova pasta -FileChooser.newFolderAccessibleName=Nova pasta -FileChooser.newFolderActionLabelText=Nova pasta +FileChooser.homeFolderToolTipText=In\u00EDcio +FileChooser.homeFolderAccessibleName=In\u00EDcio +FileChooser.newFolderToolTipText=Criar Nova Pasta +FileChooser.newFolderAccessibleName=Nova Pasta +FileChooser.newFolderActionLabelText=Nova Pasta FileChooser.listViewButtonToolTipText=Lista FileChooser.listViewButtonAccessibleName=Lista FileChooser.listViewActionLabelText=Lista FileChooser.detailsViewButtonToolTipText=Detalhes FileChooser.detailsViewButtonAccessibleName=Detalhes +FileChooser.viewMenuButtonToolTipText = Exibir Menu +FileChooser.viewMenuButtonAccessibleName = Exibir Menu FileChooser.detailsViewActionLabelText=Detalhes FileChooser.refreshActionLabelText=Atualizar FileChooser.viewMenuLabelText=Exibir diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties index 632e54e204a..fc8358df46d 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties @@ -21,9 +21,9 @@ FileChooser.lookInLabelText=Leta i: FileChooser.saveInLabelText=Spara i: FileChooser.fileNameLabelText=Filnamn: -FileChooser.folderNameLabelText=Folder name: +FileChooser.folderNameLabelText=Mapp: FileChooser.filesOfTypeLabelText=Filformat: -FileChooser.upFolderToolTipText=Upp en niv\u00e5 +FileChooser.upFolderToolTipText=Upp en niv\u00E5 FileChooser.upFolderAccessibleName=Upp FileChooser.homeFolderToolTipText=Hem FileChooser.homeFolderAccessibleName=Hem @@ -33,15 +33,15 @@ FileChooser.newFolderActionLabelText=Ny mapp FileChooser.listViewButtonToolTipText=Lista FileChooser.listViewButtonAccessibleName=Lista FileChooser.listViewActionLabelText=Lista -FileChooser.detailsViewButtonToolTipText=Detaljerad lista -FileChooser.detailsViewButtonAccessibleName=Detaljerad lista -FileChooser.viewMenuButtonToolTipText = View Menu -FileChooser.viewMenuButtonAccessibleName = View Menu -FileChooser.detailsViewActionLabelText=Detaljerad lista -FileChooser.refreshActionLabelText=Uppdatera +FileChooser.detailsViewButtonToolTipText=Detaljer +FileChooser.detailsViewButtonAccessibleName=Detaljer +FileChooser.viewMenuButtonToolTipText = Menyn Visa +FileChooser.viewMenuButtonAccessibleName = Menyn Visa +FileChooser.detailsViewActionLabelText=Detaljer +FileChooser.refreshActionLabelText=F\u00F6rnya FileChooser.viewMenuLabelText=Vy FileChooser.fileNameHeaderText=Namn FileChooser.fileSizeHeaderText=Storlek FileChooser.fileTypeHeaderText=Typ -FileChooser.fileDateHeaderText=\u00c4ndrad +FileChooser.fileDateHeaderText=\u00C4ndrad FileChooser.fileAttrHeaderText=Attribut diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_CN.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_CN.properties index b9d2a7ea9c8..ae6fe8033cb 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_CN.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_CN.properties @@ -18,33 +18,30 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\u67e5\u770b\uff1a -FileChooser.saveInLabelText=\u4fdd\u5b58\uff1a -FileChooser.fileNameLabelText=\u6587\u4ef6\u540d\uff1a -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\u6587\u4ef6\u7c7b\u578b\uff1a -FileChooser.upFolderToolTipText=\u5411\u4e0a\u4e00\u5c42 -FileChooser.upFolderAccessibleName=\u5411\u4e0a -FileChooser.homeFolderToolTipText=\u8d77\u59cb\u76ee\u5f55 -FileChooser.homeFolderAccessibleName=\u8d77\u59cb\u76ee\u5f55 -FileChooser.newFolderToolTipText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939 -FileChooser.newFolderAccessibleName=\u65b0\u5efa\u6587\u4ef6\u5939 -FileChooser.newFolderActionLabelText=\u65b0\u5efa\u6587\u4ef6\u5939 +FileChooser.lookInLabelText=\u67E5\u770B: +FileChooser.saveInLabelText=\u4FDD\u5B58: +FileChooser.fileNameLabelText=\u6587\u4EF6\u540D: +FileChooser.folderNameLabelText=\u6587\u4EF6\u5939\u540D: +FileChooser.filesOfTypeLabelText=\u6587\u4EF6\u7C7B\u578B: +FileChooser.upFolderToolTipText=\u5411\u4E0A\u4E00\u7EA7 +FileChooser.upFolderAccessibleName=\u5411\u4E0A +FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u5F55 +FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u5F55 +FileChooser.newFolderToolTipText=\u521B\u5EFA\u65B0\u6587\u4EF6\u5939 +FileChooser.newFolderAccessibleName=\u65B0\u5EFA\u6587\u4EF6\u5939 +FileChooser.newFolderActionLabelText=\u65B0\u5EFA\u6587\u4EF6\u5939 FileChooser.listViewButtonToolTipText=\u5217\u8868 FileChooser.listViewButtonAccessibleName=\u5217\u8868 FileChooser.listViewActionLabelText=\u5217\u8868 -FileChooser.detailsViewButtonToolTipText=\u8be6\u7ec6\u4fe1\u606f -FileChooser.detailsViewButtonAccessibleName=\u8be6\u7ec6\u4fe1\u606f -FileChooser.viewMenuButtonToolTipText = View Menu -FileChooser.viewMenuButtonAccessibleName = View Menu -FileChooser.detailsViewActionLabelText=\u8be6\u7ec6\u4fe1\u606f -FileChooser.refreshActionLabelText=\u5237\u65b0 -FileChooser.viewMenuLabelText=\u89c6\u56fe -FileChooser.fileNameHeaderText=\u540d\u79f0 -FileChooser.fileSizeHeaderText=\u5927\u5c0f -FileChooser.fileTypeHeaderText=\u7c7b\u578b -FileChooser.fileDateHeaderText=\u4fee\u8ba2\u7248 -FileChooser.fileAttrHeaderText=\u5c5e\u6027 -FileChooser.directoryOpenButtonText=\u6253\u5f00(O) -FileChooser.openButtonText=\u6253\u5f00(O) -FileChooser.saveButtonText=\u4fdd\u5b58(S) +FileChooser.detailsViewButtonToolTipText=\u8BE6\u7EC6\u8D44\u6599 +FileChooser.detailsViewButtonAccessibleName=\u8BE6\u7EC6\u8D44\u6599 +FileChooser.viewMenuButtonToolTipText = \u67E5\u770B\u83DC\u5355 +FileChooser.viewMenuButtonAccessibleName = \u67E5\u770B\u83DC\u5355 +FileChooser.detailsViewActionLabelText=\u8BE6\u7EC6\u8D44\u6599 +FileChooser.refreshActionLabelText=\u5237\u65B0 +FileChooser.viewMenuLabelText=\u89C6\u56FE +FileChooser.fileNameHeaderText=\u540D\u79F0 +FileChooser.fileSizeHeaderText=\u5927\u5C0F +FileChooser.fileTypeHeaderText=\u7C7B\u578B +FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F +FileChooser.fileAttrHeaderText=\u5C5E\u6027 diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_TW.properties b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_TW.properties index 03cbc52dd48..fe18bdc2fa2 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_TW.properties +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_TW.properties @@ -18,33 +18,30 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\u67e5\u770b\ufe55 -FileChooser.saveInLabelText=\u5132\u5b58\u65bc\uff1a -FileChooser.fileNameLabelText=\u6a94\u6848\u540d\u7a31\ufe55 -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\u6a94\u6848\u985e\u578b\ufe55 -FileChooser.upFolderToolTipText=\u5f80\u4e0a\u4e00\u5c64 -FileChooser.upFolderAccessibleName=\u5f80\u4e0a -FileChooser.homeFolderToolTipText=\u56de\u4e3b\u76ee\u9304 -FileChooser.homeFolderAccessibleName=\u4e3b\u76ee\u9304 -FileChooser.newFolderToolTipText=\u5efa\u7acb\u65b0\u8cc7\u6599\u593e -FileChooser.newFolderAccessibleName=\u65b0\u8cc7\u6599\u593e -FileChooser.newFolderActionLabelText=\u65b0\u8cc7\u6599\u593e -FileChooser.listViewButtonToolTipText=\u6a94\u6848\u6e05\u55ae -FileChooser.listViewButtonAccessibleName=\u6e05\u55ae -FileChooser.listViewActionLabelText=\u6e05\u55ae -FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30\u8cc7\u8a0a -FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30\u8cc7\u8a0a -FileChooser.viewMenuButtonToolTipText = View Menu -FileChooser.viewMenuButtonAccessibleName = View Menu -FileChooser.detailsViewActionLabelText=\u8a73\u7d30\u8cc7\u8a0a -FileChooser.refreshActionLabelText=\u66f4\u65b0 -FileChooser.viewMenuLabelText=\u6aa2\u8996 -FileChooser.fileNameHeaderText=\u540d\u7a31 -FileChooser.fileSizeHeaderText=\u5927\u5c0f -FileChooser.fileTypeHeaderText=\u985e\u578b -FileChooser.fileDateHeaderText=\u4fee\u6539 -FileChooser.fileAttrHeaderText=\u5c6c\u6027 -FileChooser.directoryOpenButtonText=\u958b\u555f(O) -FileChooser.openButtonText=\u958b\u555f(O) -FileChooser.saveButtonText=\u5132\u5b58(S) +FileChooser.lookInLabelText=\u67E5\u8A62: +FileChooser.saveInLabelText=\u5132\u5B58\u65BC: +FileChooser.fileNameLabelText=\u6A94\u6848\u540D\u7A31: +FileChooser.folderNameLabelText=\u8CC7\u6599\u593E\u540D\u7A31: +FileChooser.filesOfTypeLabelText=\u6A94\u6848\u985E\u578B: +FileChooser.upFolderToolTipText=\u5F80\u4E0A\u4E00\u5C64 +FileChooser.upFolderAccessibleName=\u5F80\u4E0A +FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u9304 +FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u9304 +FileChooser.newFolderToolTipText=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E +FileChooser.newFolderAccessibleName=\u65B0\u8CC7\u6599\u593E +FileChooser.newFolderActionLabelText=\u65B0\u8CC7\u6599\u593E +FileChooser.listViewButtonToolTipText=\u6E05\u55AE +FileChooser.listViewButtonAccessibleName=\u6E05\u55AE +FileChooser.listViewActionLabelText=\u6E05\u55AE +FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30\u8CC7\u8A0A +FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30\u8CC7\u8A0A +FileChooser.viewMenuButtonToolTipText = \u6AA2\u8996\u529F\u80FD\u8868 +FileChooser.viewMenuButtonAccessibleName = \u6AA2\u8996\u529F\u80FD\u8868 +FileChooser.detailsViewActionLabelText=\u8A73\u7D30\u8CC7\u8A0A +FileChooser.refreshActionLabelText=\u91CD\u65B0\u6574\u7406 +FileChooser.viewMenuLabelText=\u6AA2\u8996 +FileChooser.fileNameHeaderText=\u540D\u7A31 +FileChooser.fileSizeHeaderText=\u5927\u5C0F +FileChooser.fileTypeHeaderText=\u985E\u578B +FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F +FileChooser.fileAttrHeaderText=\u5C6C\u6027 diff --git a/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java b/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java index dec38eb752d..94067617ae1 100644 --- a/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java +++ b/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java @@ -656,14 +656,17 @@ public final class Connection implements Runnable { } nparent = notifyParent; } - } - if (nparent) { - LdapRequest ldr = pendingRequests; - while (ldr != null) { - ldr.notify(); - ldr = ldr.next; + if (nparent) { + LdapRequest ldr = pendingRequests; + while (ldr != null) { + + synchronized (ldr) { + ldr.notify(); + ldr = ldr.next; + } + } + parent.processConnectionClosure(); } - parent.processConnectionClosure(); } } diff --git a/jdk/src/share/classes/com/sun/jndi/toolkit/ctx/Continuation.java b/jdk/src/share/classes/com/sun/jndi/toolkit/ctx/Continuation.java index bd3dc18fc24..7ecd4d75aea 100644 --- a/jdk/src/share/classes/com/sun/jndi/toolkit/ctx/Continuation.java +++ b/jdk/src/share/classes/com/sun/jndi/toolkit/ctx/Continuation.java @@ -143,7 +143,7 @@ public class Continuation extends ResolveResult { e.setRemainingName(remainingName); e.setResolvedObj(resolvedObj); - if (starter == null) + if (starter == null || starter.isEmpty()) e.setResolvedName(null); else if (remainingName == null) e.setResolvedName(starter); diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties index ccf8de47aad..41e23d770e9 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties @@ -24,145 +24,147 @@ # # CacheRowSetImpl exceptions -cachedrowsetimpl.populate = Ung\u00fcltiges Objekt ResultSet zum Auff\u00fcllen der Methode -cachedrowsetimpl.invalidp = Ung\u00fcltiger Best\u00e4ndigkeits-Provider generiert -cachedrowsetimpl.nullhash = Instanz CachedRowSetImpl konnte nicht instanziiert werden. Hash-Tabelle mit Nullwert f\u00fcr Konstruktor angegeben -cachedrowsetimpl.invalidop = Ung\u00fcltiger Vorgang beim Zeileneinf\u00fcgen -cachedrowsetimpl.accfailed = acceptChanges fehlgeschlagen -cachedrowsetimpl.invalidcp = Ung\u00fcltige Cursorposition -cachedrowsetimpl.illegalop = Ung\u00fcltiger Vorgang bei nicht eingef\u00fcgter Zeile -cachedrowsetimpl.clonefail = Fehler bei Klon: {0} -cachedrowsetimpl.invalidcol = Ung\u00fcltiger Spaltenindex -cachedrowsetimpl.invalcolnm = Ung\u00fcltiger Spaltenname -cachedrowsetimpl.boolfail = getBoolen bei Wert ( {0} ) in Spalte {1} fehlgeschlagen -cachedrowsetimpl.bytefail = getByte bei Wert ( {0} ) in Spalte {1} fehlgeschlagen -cachedrowsetimpl.shortfail = getShort bei Wert ( {0} ) in Spalte {1} fehlgeschlagen -cachedrowsetimpl.intfail = getInt bei Wert ( {0} ) in Spalte {1} fehlgeschlagen -cachedrowsetimpl.longfail = getLong bei Wert ( {0} ) in Spalte {1} fehlgeschlagen -cachedrowsetimpl.floatfail = getFloat bei Wert ( {0} ) in Spalte {1} fehlgeschlagen -cachedrowsetimpl.doublefail = getDouble bei Wert ( {0} ) in Spalte {1} fehlgeschlagen -cachedrowsetimpl.dtypemismt = Keine Datentyp\u00fcbereinstimmung -cachedrowsetimpl.datefail = getDate bei Wert ( {0} ) in Spalte {1} fehlgeschlagen; keine Konvertierung m\u00f6glich -cachedrowsetimpl.timefail = getTime bei Wert ( {0} ) in Spalte {1} fehlgeschlagen; keine Konvertierung m\u00f6glich -cachedrowsetimpl.posupdate = Positionierte Aktualisierungen werden nicht unterst\u00fctzt -cachedrowsetimpl.unableins = Keine Instanziierung m\u00f6glich: {0} -cachedrowsetimpl.beforefirst = beforeFirst : Ung\u00fcltiger Cursorvorgang -cachedrowsetimpl.first = First : Ung\u00fcltiger Cursorvorgang -cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY -cachedrowsetimpl.absolute = absolute: Ung\u00fcltige Cursorposition -cachedrowsetimpl.relative = relative: Ung\u00fcltige Cursorposition -cachedrowsetimpl.asciistream = Lesen von ASCII-Strom fehlgeschlagen -cachedrowsetimpl.binstream = Lesen von Bin\u00e4rstrom fehlgeschlagen -cachedrowsetimpl.failedins = Fehler beim Zeileneinf\u00fcgen -cachedrowsetimpl.updateins = Aufrufen von updateRow beim Zeileneinf\u00fcgen +cachedrowsetimpl.populate = Ung\u00FCltiges ResultSet-Objekt zum Auff\u00FCllen der Methode angegeben +cachedrowsetimpl.invalidp = Ung\u00FCltiger Persistence-Provider generiert +cachedrowsetimpl.nullhash = CachedRowSetImpl-Instanz kann nicht instanziiert werden. Null-Hash-Tabelle f\u00FCr Constructor angegeben +cachedrowsetimpl.invalidop = Ung\u00FCltiger Vorgang beim Zeileneinf\u00FCgen +cachedrowsetimpl.accfailed = acceptChanges nicht erfolgreich +cachedrowsetimpl.invalidcp = Ung\u00FCltige Cursorposition +cachedrowsetimpl.illegalop = Ung\u00FCltiger Vorgang bei nicht eingef\u00FCgter Zeile +cachedrowsetimpl.clonefail = Clonen nicht erfolgreich: {0} +cachedrowsetimpl.invalidcol = Ung\u00FCltiger Spaltenindex +cachedrowsetimpl.invalcolnm = Ung\u00FCltiger Spaltenname +cachedrowsetimpl.boolfail = getBoolen bei Wert ( {0} ) in Spalte {1} nicht erfolgreich +cachedrowsetimpl.bytefail = getByte bei Wert ( {0} ) in Spalte {1} nicht erfolgreich +cachedrowsetimpl.shortfail = getShort bei Wert ( {0} ) in Spalte {1} nicht erfolgreich +cachedrowsetimpl.intfail = getInt bei Wert ( {0} ) in Spalte {1} nicht erfolgreich +cachedrowsetimpl.longfail = getLong bei Wert ( {0} ) in Spalte {1} nicht erfolgreich +cachedrowsetimpl.floatfail = getFloat bei Wert ( {0} ) in Spalte {1} nicht erfolgreich +cachedrowsetimpl.doublefail = getDouble bei Wert ( {0} ) in Spalte {1} nicht erfolgreich +cachedrowsetimpl.dtypemismt = Keine Datentyp\u00FCbereinstimmung +cachedrowsetimpl.datefail = getDate bei Wert ( {0} ) in Spalte {1} nicht erfolgreich. Keine Konvertierung m\u00F6glich +cachedrowsetimpl.timefail = getTime bei Wert ( {0} ) in Spalte {1} nicht erfolgreich. Keine Konvertierung m\u00F6glich +cachedrowsetimpl.posupdate = Positionierte Updates werden nicht unterst\u00FCtzt +cachedrowsetimpl.unableins = Keine Instanziierung m\u00F6glich: {0} +cachedrowsetimpl.beforefirst = beforeFirst: Ung\u00FCltiger Cursorvorgang +cachedrowsetimpl.first = First: Ung\u00FCltiger Cursorvorgang +cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY +cachedrowsetimpl.absolute = absolute: Ung\u00FCltige Cursorposition +cachedrowsetimpl.relative = relative: Ung\u00FCltige Cursorposition +cachedrowsetimpl.asciistream = Lesen von ASCII-Stream nicht erfolgreich +cachedrowsetimpl.binstream = Lesen von Bin\u00E4r-Stream nicht erfolgreich +cachedrowsetimpl.failedins = Fehler beim Zeileneinf\u00FCgen +cachedrowsetimpl.updateins = updateRow beim Zeileneinf\u00FCgen aufgerufen cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY cachedrowsetimpl.movetoins1 = moveToInsertRow: keine Metadaten -cachedrowsetimpl.movetoins2 = moveToInsertRow: ung\u00fcltige Spaltenanzahl -cachedrowsetimpl.tablename = Tabellenname darf nicht Null sein -cachedrowsetimpl.keycols = Ung\u00fcltige Schl\u00fcsselspalten -cachedrowsetimpl.opnotsupp = Datenbank unterst\u00fctzt Vorgang nicht -cachedrowsetimpl.matchcols = \u00dcbereinstimmende Spalten entsprechen nicht den definierten Spalten -cachedrowsetimpl.setmatchcols = \u00dcbereinstimmende Spalten m\u00fcssen vor dem Abrufen definiert werden -cachedrowsetimpl.matchcols1 = Wert f\u00fcr \u00fcbereinstimmende Spalten muss gr\u00f6\u00dfer als 0 sein -cachedrowsetimpl.matchcols2 = \u00dcbereinstimmende Spalten m\u00fcssen leer sein oder eine Nullzeichenfolge aufweisen -cachedrowsetimpl.unsetmatch = Spalten ohne definierten Wert entsprechen nicht Spalten mit definiertem Wert -cachedrowsetimpl.unsetmatch1 = Spaltenname als Argument f\u00fcr unsetMatchColumn verwenden -cachedrowsetimpl.unsetmatch2 = Spalten-ID als Argument f\u00fcr unsetMatchColumn verwenden -cachedrowsetimpl.numrows = Zeilenanzahl ist kleiner als Null oder kleiner als Abrufgr\u00f6\u00dfe +cachedrowsetimpl.movetoins2 = moveToInsertRow: ung\u00FCltige Spaltenanzahl +cachedrowsetimpl.tablename = Tabellenname darf nicht null sein +cachedrowsetimpl.keycols = Ung\u00FCltige Schl\u00FCsselspalten +cachedrowsetimpl.invalidcol = Ung\u00FCltiger Spaltenindex +cachedrowsetimpl.opnotsupp = Vorgang nicht von Datenbank unterst\u00FCtzt +cachedrowsetimpl.matchcols = \u00DCbereinstimmungsspalten entsprechen nicht den festgelegten Spalten +cachedrowsetimpl.setmatchcols = \u00DCbereinstimmungsspalten m\u00FCssen vor dem Abrufen festgelegt werden +cachedrowsetimpl.matchcols1 = Wert f\u00FCr \u00DCbereinstimmungsspalten muss gr\u00F6\u00DFer als 0 sein +cachedrowsetimpl.matchcols2 = \u00DCbereinstimmungsspalten m\u00FCssen leer sein oder eine Nullzeichenfolge aufweisen +cachedrowsetimpl.unsetmatch = Spalten, deren Wert aufgehoben wird, entsprechen nicht den festgelegten Spalten +cachedrowsetimpl.unsetmatch1 = Spaltenname als Argument f\u00FCr unsetMatchColumn verwenden +cachedrowsetimpl.unsetmatch2 = Spalten-ID als Argument f\u00FCr unsetMatchColumn verwenden +cachedrowsetimpl.numrows = Zeilenanzahl ist kleiner als null oder kleiner als Abrufgr\u00F6\u00DFe cachedrowsetimpl.startpos = Startposition darf keinen Negativwert aufweisen -cachedrowsetimpl.nextpage = Daten m\u00fcssen vor dem Abrufen ausgef\u00fcllt werden -cachedrowsetimpl.pagesize = Seitengr\u00f6\u00dfe darf nicht kleiner als Null sein -cachedrowsetimpl.pagesize1 = Seitengr\u00f6\u00dfe darf nicht gr\u00f6\u00dfer als maxRows sein -cachedrowsetimpl.fwdonly = ResultSet kann nur vorw\u00e4rts gerichtet sein -cachedrowsetimpl.type = Typ : {0} -cachedrowsetimpl.opnotysupp = Vorgang noch nicht unterst\u00fctzt -cachedrowsetimpl.featnotsupp = Funktion nicht unterst\u00fctzt +cachedrowsetimpl.nextpage = Daten m\u00FCssen vor dem Aufruf ausgef\u00FCllt werden +cachedrowsetimpl.pagesize = Seitengr\u00F6\u00DFe darf nicht kleiner als null sein +cachedrowsetimpl.pagesize1 = Seitengr\u00F6\u00DFe darf nicht gr\u00F6\u00DFer als maxRows sein +cachedrowsetimpl.fwdonly = ResultSet kann nur vorw\u00E4rts gerichtet sein +cachedrowsetimpl.type = Typ ist: {0} +cachedrowsetimpl.opnotysupp = Vorgang noch nicht unterst\u00FCtzt +cachedrowsetimpl.featnotsupp = Feature nicht unterst\u00FCtzt # WebRowSetImpl exceptions -webrowsetimpl.nullhash = Instanz WebRowSetImpl konnte nicht instanziiert werden. Hash-Tabelle mit Nullwert f\u00fcr Konstruktor angegeben -webrowsetimpl.invalidwr = Ung\u00fcltiger Schreiber -webrowsetimpl.invalidrd = Ung\u00fcltiger Leser +webrowsetimpl.nullhash = WebRowSetImpl-Instanz kann nicht instanziiert werden. Null-Hash-Tabelle f\u00FCr Constructor angegeben +webrowsetimpl.invalidwr = Ung\u00FCltiger Writer +webrowsetimpl.invalidrd = Ung\u00FCltiger Reader #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative: Ung\u00fcltiger Cursorvorgang -filteredrowsetimpl.absolute = absolute: Ung\u00fcltiger Cursorvorgang -filteredrowsetimpl.notallowed = Kein zul\u00e4ssiger Wert im Filter +filteredrowsetimpl.relative = relative: Ung\u00FCltiger Cursorvorgang +filteredrowsetimpl.absolute = absolute: Ung\u00FCltiger Cursorvorgang +filteredrowsetimpl.notallowed = Kein zul\u00E4ssiger Wert im Filter #JoinRowSetImpl exceptions joinrowsetimpl.notinstance = Keine Instanz von rowset -joinrowsetimpl.matchnotset = \u00dcbereinstimmende Spalte wurde nicht f\u00fcr Verkn\u00fcpfung definiert -joinrowsetimpl.numnotequal = Elementanzahl in rowset nicht gleich \u00fcbereinstimmende Spalte -joinrowsetimpl.notdefined = Kein definierter Verkn\u00fcpfungstyp -joinrowsetimpl.notsupported = Verkn\u00fcpfungstyp wird nicht unterst\u00fctzt -joinrowsetimpl.initerror = Initialisierungsfehler bei JoinRowSet +joinrowsetimpl.matchnotset = \u00DCbereinstimmungsspalte wurde nicht f\u00FCr Join festgelegt +joinrowsetimpl.numnotequal = Elementanzahl in rowset nicht gleich \u00DCbereinstimmungsspalte +joinrowsetimpl.notdefined = Kein definierter Join-Typ +joinrowsetimpl.notsupported = Join-Typ wird nicht unterst\u00FCtzt +joinrowsetimpl.initerror = JoinRowSet-Initialisierungsfehler joinrowsetimpl.genericerr = Generischer Anfangsfehler bei joinrowset -joinrowsetimpl.emptyrowset = Leeres rowset kann nicht zu diesem JoinRowSet hinzugef\u00fcgt werden +joinrowsetimpl.emptyrowset = Leeres rowset kann nicht zu diesem JoinRowSet hinzugef\u00FCgt werden #JdbcRowSetImpl exceptions -jdbcrowsetimpl.invalstate = Ung\u00fcltiger Status -jdbcrowsetimpl.connect = JdbcRowSet (verbinden), keine JNDI-Verbindung m\u00f6glich -jdbcrowsetimpl.paramtype = Parametertyp konnte nicht abgeleitet werden -jdbcrowsetimpl.matchcols = \u00dcbereinstimmende Spalten entsprechen nicht den definierten Spalten -jdbcrowsetimpl.setmatchcols = \u00dcbereinstimmende Spalten m\u00fcssen vor dem Abrufen definiert werden -jdbcrowsetimpl.matchcols1 = Wert f\u00fcr \u00fcbereinstimmende Spalten muss gr\u00f6\u00dfer als 0 sein -jdbcrowsetimpl.matchcols2 = \u00dcbereinstimmende Spalten k\u00f6nnen keine Null- oder leere Zeichenfolge aufweisen -jdbcrowsetimpl.unsetmatch = Spalten ohne definierten Wert entsprechen nicht Spalten mit definiertem Wert -jdbcrowsetimpl.usecolname = Spaltenname als Argument f\u00fcr unsetMatchColumn verwenden -jdbcrowsetimpl.usecolid = Spalten-ID als Argument f\u00fcr unsetMatchColumn verwenden +jdbcrowsetimpl.invalstate = Ung\u00FCltiger Status +jdbcrowsetimpl.connect = JdbcRowSet (verbinden), keine JNDI-Verbindung m\u00F6glich +jdbcrowsetimpl.paramtype = Parametertyp kann nicht abgeleitet werden +jdbcrowsetimpl.matchcols = \u00DCbereinstimmungsspalten entsprechen nicht den festgelegten Spalten +jdbcrowsetimpl.setmatchcols = \u00DCbereinstimmungsspalten m\u00FCssen vor dem Abrufen festgelegt werden +jdbcrowsetimpl.matchcols1 = Wert f\u00FCr \u00DCbereinstimmungsspalten muss gr\u00F6\u00DFer als 0 sein +jdbcrowsetimpl.matchcols2 = \u00DCbereinstimmungsspalten k\u00F6nnen keine Null- oder leere Zeichenfolge aufweisen +jdbcrowsetimpl.unsetmatch = Spalten, deren Wert aufgehoben wird, entsprechen nicht den festgelegten Spalten +jdbcrowsetimpl.usecolname = Spaltenname als Argument f\u00FCr unsetMatchColumn verwenden +jdbcrowsetimpl.usecolid = Spalten-ID als Argument f\u00FCr unsetMatchColumn verwenden jdbcrowsetimpl.resnotupd = ResultSet kann nicht aktualisiert werden -jdbcrowsetimpl.opnotysupp = Vorgang noch nicht unterst\u00fctzt -jdbcrowsetimpl.featnotsupp = Funktion nicht unterst\u00fctzt +jdbcrowsetimpl.opnotysupp = Vorgang noch nicht unterst\u00FCtzt +jdbcrowsetimpl.featnotsupp = Feature nicht unterst\u00FCtzt #CachedRowSetReader exceptions -crsreader.connect = (JNDI) Verbindung nicht m\u00f6glich -crsreader.paramtype = Parametertyp konnte nicht abgeleitet werden +crsreader.connect = (JNDI) Verbindung nicht m\u00F6glich +crsreader.paramtype = Parametertyp kann nicht abgeleitet werden crsreader.connecterr = Interner Fehler in RowSetReader: Keine Verbindung oder kein Befehl crsreader.datedetected = Datum festgestellt crsreader.caldetected = Kalender festgestellt #CachedRowSetWriter exceptions -crswriter.connect = Verbindung konnte nicht hergestellt werden -crswriter.tname = writeData kann Tabellennamen nicht feststellen -crswriter.params1 = Wert f\u00fcr params1: {0} -crswriter.params2 = Wert f\u00fcr params2: {0} -crswriter.conflictsno = Konflikt beim Synchronisieren +crswriter.connect = Verbindung kann nicht hergestellt werden +crswriter.tname = writeData kann Tabellennamen nicht bestimmen +crswriter.params1 = Wert f\u00FCr params1: {0} +crswriter.params2 = Wert f\u00FCr params2: {0} +crswriter.conflictsno = Konflikte beim Synchronisieren #InsertRow exceptions -insertrow.novalue = Es wurde kein Wert eingef\u00fcgt +insertrow.novalue = Es wurde kein Wert eingef\u00FCgt #SyncResolverImpl exceptions -syncrsimpl.indexval = Indexwert liegt au\u00dferhalb des Bereichs +syncrsimpl.indexval = Indexwert liegt au\u00DFerhalb des Bereichs syncrsimpl.noconflict = Kein Konflikt bei dieser Spalte -syncrsimpl.syncnotpos = Keine Synchronisation m\u00f6glich -syncrsimpl.valtores = Aufzul\u00f6sender Wert befindet sich entweder in der Datenbank oder in cachedrowset +syncrsimpl.syncnotpos = Keine Synchronisierung m\u00F6glich +syncrsimpl.valtores = Aufzul\u00F6sender Wert kann sich entweder in der Datenbank oder in cachedrowset befinden #WebRowSetXmlReader exception -wrsxmlreader.invalidcp = Ende von RowSet wurde erreicht. Ung\u00fcltige Cursorposition +wrsxmlreader.invalidcp = Ende von RowSet wurde erreicht. Ung\u00FCltige Cursorposition wrsxmlreader.readxml = readXML: {0} -wrsxmlreader.parseerr = ** Parsing-Fehler: {0}, Zeile: {1} , uri: {2} +wrsxmlreader.parseerr = ** Parsing-Fehler: {0}, Zeile: {1} , URI: {2} #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException: {0} wrsxmlwriter.sqlex = SQLException: {0} -wrsxmlwriter.failedwrite = Schreiben des Werts fehlgeschlagen -wsrxmlwriter.notproper = Kein zul\u00e4ssiger Typ +wrsxmlwriter.failedwrite = Schreiben des Wertes nicht erfolgreich +wsrxmlwriter.notproper = Kein zul\u00E4ssiger Typ #XmlReaderContentHandler exceptions -xmlrch.errmap = Fehler beim Definieren der Zuordnung: {0} -xmlrch.errmetadata = Fehler beim Definieren der Metadaten: {0} -xmlrch.errinsertval = Fehler beim Einf\u00fcgen der Werte: {0} +xmlrch.errmap = Fehler beim Festlegen der Zuordnung: {0} +xmlrch.errmetadata = Fehler beim Festlegen der Metadaten: {0} +xmlrch.errinsertval = Fehler beim Einf\u00FCgen der Werte: {0} xmlrch.errconstr = Fehler beim Erstellen der Zeile: {0} -xmlrch.errdel = Fehler beim L\u00f6schen der Zeile: {0} -xmlrch.errinsdel = Fehler beim Erstellen der Einf\u00fcge- oder L\u00f6schzeile: {0} -xmlrch.errupdate = Fehler beim Erstellen der Aktualisierungszeile: {0} +xmlrch.errdel = Fehler beim L\u00F6schen der Zeile: {0} +xmlrch.errinsert = Fehler beim Erstellen der Einf\u00FCgezeile: {0} +xmlrch.errinsdel = Fehler beim Erstellen der Einf\u00FCge- oder L\u00F6schzeile: {0} +xmlrch.errupdate = Fehler beim Erstellen der Updatezeile: {0} xmlrch.errupdrow = Fehler beim Aktualisieren der Zeile: {0} xmlrch.chars = Zeichen: -xmlrch.badvalue = Fehlerhafter Wert; Eigenschaft darf nicht Null sein. -xmlrch.badvalue1 = Fehlerhafter Wert; Metadaten d\u00fcrfen nicht Null sein. -xmlrch.warning = ** Warnung: {0}, Zeile: {1} , uri: {2} +xmlrch.badvalue = Ung\u00FCltiger Wert. Eigenschaft kann nicht auf null gesetzt werden +xmlrch.badvalue1 = Ung\u00FCltiger Wert. Metadaten k\u00F6nnen nicht auf null gesetzt werden +xmlrch.warning = ** Warnung: {0}, Zeile: {1} , URI: {2} #RIOptimisticProvider Exceptions -riop.locking = Sperren der Klassifizierung wird nicht unterst\u00fctzt +riop.locking = Sperren der Klassifizierung wird nicht unterst\u00FCtzt #RIXMLProvider exceptions -rixml.unsupp = Keine Unterst\u00fctzung f\u00fcr RIXMLProvider +rixml.unsupp = Keine Unterst\u00FCtzung bei RIXMLProvider diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties index d1cfca8ab23..683429d8d27 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties @@ -24,16 +24,16 @@ # # CacheRowSetImpl exceptions -cachedrowsetimpl.populate = Objeto ResultSet no v\u00e1lido para m\u00e9todo de relleno -cachedrowsetimpl.invalidp = El proveedor de persistencia generado no es v\u00e1lido -cachedrowsetimpl.nullhash = La instancia CachedRowSetImpl no se puede crear. Hashtable nula proporcionada al constructor -cachedrowsetimpl.invalidop = Operaci\u00f3n no v\u00e1lida al insertar fila +cachedrowsetimpl.populate = Se ha proporcionado un objeto ResultSet no v\u00E1lido para el m\u00E9todo de relleno +cachedrowsetimpl.invalidp = El proveedor de persistencia generado no es v\u00E1lido +cachedrowsetimpl.nullhash = La instancia CachedRowSetImpl no se puede crear. Se ha proporcionado una tabla hash nula al constructor +cachedrowsetimpl.invalidop = Operaci\u00F3n no v\u00E1lida al insertar fila cachedrowsetimpl.accfailed = Fallo de acceptChanges -cachedrowsetimpl.invalidcp = Posici\u00f3n de cursor no v\u00e1lida -cachedrowsetimpl.illegalop = Operaci\u00f3n no permitida en fila no insertada -cachedrowsetimpl.clonefail = Fallo en la clonaci\u00f3n: {0} -cachedrowsetimpl.invalidcol = \u00cdndice de columnas no v\u00e1lido -cachedrowsetimpl.invalcolnm = Nombre de columna no v\u00e1lido +cachedrowsetimpl.invalidcp = Posici\u00F3n de cursor no v\u00E1lida +cachedrowsetimpl.illegalop = Operaci\u00F3n no permitida en fila no insertada +cachedrowsetimpl.clonefail = Fallo en la clonaci\u00F3n: {0} +cachedrowsetimpl.invalidcol = \u00CDndice de columnas no v\u00E1lido +cachedrowsetimpl.invalcolnm = Nombre de columna no v\u00E1lido cachedrowsetimpl.boolfail = Fallo de getBoolen en valor ( {0} ) de columna {1} cachedrowsetimpl.bytefail = Fallo de getByte en valor ( {0} ) de columna {1} cachedrowsetimpl.shortfail = Fallo de getShort en valor ( {0} ) de columna {1} @@ -41,128 +41,130 @@ cachedrowsetimpl.intfail = Fallo de getInt en valor ( {0} ) de columna {1} cachedrowsetimpl.longfail = Fallo de getLong en valor ( {0} ) de columna {1} cachedrowsetimpl.floatfail = Fallo de getFloat en valor ( {0} ) de columna {1} cachedrowsetimpl.doublefail = Fallo de getDouble en valor ( {0} ) de columna {1} -cachedrowsetimpl.dtypemismt = Discordancia entre tipos de datos -cachedrowsetimpl.datefail = Fallo de getDate en valor ( {0} ) de columna {1} no es posible convertir -cachedrowsetimpl.timefail = Fallo de getTime en valor ( {0} ) de columna {1} no es posible convertir -cachedrowsetimpl.posupdate = Actualizaciones posicionadas incompatibles -cachedrowsetimpl.unableins = No se puede crear instancia: {0} -cachedrowsetimpl.beforefirst = beforeFirst: Operaci\u00f3n de cursor no v\u00e1lida -cachedrowsetimpl.first = First: Operaci\u00f3n de cursor no v\u00e1lida -cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY -cachedrowsetimpl.absolute = absolute: Posici\u00f3n de cursor no v\u00e1lida -cachedrowsetimpl.relative = relative: Posici\u00f3n de cursor no v\u00e1lida +cachedrowsetimpl.dtypemismt = Discordancia entre Tipos de Datos +cachedrowsetimpl.datefail = Fallo de getDate en valor ( {0} ) de columna {1}. No es posible convertir +cachedrowsetimpl.timefail = Fallo de getTime en valor ( {0} ) de columna {1}. No es posible convertir +cachedrowsetimpl.posupdate = Actualizaciones posicionadas no soportadas +cachedrowsetimpl.unableins = No se ha podido crear la instancia: {0} +cachedrowsetimpl.beforefirst = beforeFirst: Operaci\u00F3n de cursor no v\u00E1lida +cachedrowsetimpl.first = First: Operaci\u00F3n de cursor no v\u00E1lida +cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY +cachedrowsetimpl.absolute = absolute: Posici\u00F3n de cursor no v\u00E1lida +cachedrowsetimpl.relative = relative: Posici\u00F3n de cursor no v\u00E1lida cachedrowsetimpl.asciistream = fallo en lectura de flujo de caracteres ascii cachedrowsetimpl.binstream = fallo de lectura de flujo binario -cachedrowsetimpl.failedins = Fallo en inserci\u00f3n de fila +cachedrowsetimpl.failedins = Fallo en inserci\u00F3n de fila cachedrowsetimpl.updateins = llamada a updateRow mientras se insertaba fila -cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY +cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY cachedrowsetimpl.movetoins1 = moveToInsertRow: no hay metadatos -cachedrowsetimpl.movetoins2 = moveToInsertRow: n\u00famero de columnas no v\u00e1lido +cachedrowsetimpl.movetoins2 = moveToInsertRow: n\u00FAmero de columnas no v\u00E1lido cachedrowsetimpl.tablename = El nombre de la tabla no puede ser nulo -cachedrowsetimpl.keycols = Columnas clave no v\u00e1lidas -cachedrowsetimpl.opnotsupp = La base de datos no admite esta operaci\u00f3n -cachedrowsetimpl.matchcols = Las columnas emparejadas no concuerdan con las definidas -cachedrowsetimpl.setmatchcols = Configurar emparejamiento de columnas antes de obtenerlas -cachedrowsetimpl.matchcols1 = Las columnas emparejadas deben ser mayores que 0 -cachedrowsetimpl.matchcols2 = Las columnas emparejadas deben estar vac\u00edas o ser una cadena nula -cachedrowsetimpl.unsetmatch = Las columnas que se est\u00e1n desconfigurando no coinciden con las configuradas -cachedrowsetimpl.unsetmatch1 = Usar nombre de columna como argumento en unsetMatchColumn -cachedrowsetimpl.unsetmatch2 = Usar ID de columna como argumento en unsetMatchColumn -cachedrowsetimpl.numrows = El n\u00famero de filas es menor que cero o menor que el tama\u00f1o obtenido -cachedrowsetimpl.startpos = La posici\u00f3n de inicio no puede ser negativa -cachedrowsetimpl.nextpage = Rellenar datos antes de realizar llamada -cachedrowsetimpl.pagesize = El tama\u00f1o de p\u00e1gina no puede ser menor que cero -cachedrowsetimpl.pagesize1 = El tama\u00f1o de p\u00e1gina no puede ser mayor que maxRows -cachedrowsetimpl.fwdonly = ResultSet s\u00f3lo se reenv\u00eda +cachedrowsetimpl.keycols = Columnas clave no v\u00E1lidas +cachedrowsetimpl.invalidcol = \u00CDndice de columnas no v\u00E1lido +cachedrowsetimpl.opnotsupp = La base de datos no admite esta operaci\u00F3n +cachedrowsetimpl.matchcols = Las columnas coincidentes no concuerdan con las definidas +cachedrowsetimpl.setmatchcols = Defina las columnas coincidentes antes de obtenerlas +cachedrowsetimpl.matchcols1 = Las columnas coincidentes deben ser mayores que 0 +cachedrowsetimpl.matchcols2 = Las columnas coincidentes deben estar vac\u00EDas o ser una cadena nula +cachedrowsetimpl.unsetmatch = Las columnas cuya definici\u00F3n se est\u00E1 anulando no concuerdan con las definidas +cachedrowsetimpl.unsetmatch1 = Use el nombre de columna como argumento en unsetMatchColumn +cachedrowsetimpl.unsetmatch2 = Use el identificador de columna como argumento en unsetMatchColumn +cachedrowsetimpl.numrows = El n\u00FAmero de filas es menor que cero o menor que el tama\u00F1o recuperado +cachedrowsetimpl.startpos = La posici\u00F3n de inicio no puede ser negativa +cachedrowsetimpl.nextpage = Rellene los datos antes de realizar la llamada +cachedrowsetimpl.pagesize = El tama\u00F1o de p\u00E1gina no puede ser menor que cero +cachedrowsetimpl.pagesize1 = El tama\u00F1o de p\u00E1gina no puede ser mayor que maxRows +cachedrowsetimpl.fwdonly = ResultSet s\u00F3lo se reenv\u00EDa cachedrowsetimpl.type = El tipo es: {0} -cachedrowsetimpl.opnotysupp = Operaci\u00f3n no admitida todav\u00eda -cachedrowsetimpl.featnotsupp = Funci\u00f3n no admitida +cachedrowsetimpl.opnotysupp = Operaci\u00F3n no soportada todav\u00EDa +cachedrowsetimpl.featnotsupp = Funci\u00F3n no soportada # WebRowSetImpl exceptions -webrowsetimpl.nullhash = La instancia WebRowSetImpl no se puede crear. Hashtable nula proporcionada al constructor -webrowsetimpl.invalidwr = Escritor no v\u00e1lido -webrowsetimpl.invalidrd = Lector no v\u00e1lido +webrowsetimpl.nullhash = La instancia WebRowSetImpl no se puede crear. Se ha proporcionado una tabla hash nula al constructor +webrowsetimpl.invalidwr = Escritor no v\u00E1lido +webrowsetimpl.invalidrd = Lector no v\u00E1lido #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative: Operaci\u00f3n de cursor no v\u00e1lida -filteredrowsetimpl.absolute = absolute: Operaci\u00f3n de cursor no v\u00e1lida +filteredrowsetimpl.relative = relative: Operaci\u00F3n de cursor no v\u00E1lida +filteredrowsetimpl.absolute = absolute: Operaci\u00F3n de cursor no v\u00E1lida filteredrowsetimpl.notallowed = El filtro no admite este valor #JoinRowSetImpl exceptions joinrowsetimpl.notinstance = No es una instancia de rowset -joinrowsetimpl.matchnotset = Emparejamiento de columnas no configurado para unir -joinrowsetimpl.numnotequal = El n\u00famero de elementos de rowset y el de emparejamiento de columnas no es el mismo -joinrowsetimpl.notdefined = No es un tipo de uni\u00f3n definido -joinrowsetimpl.notsupported = Este tipo de uni\u00f3n no es compatible -joinrowsetimpl.initerror = Error de inicio de JoinRowSet -joinrowsetimpl.genericerr = Error de Genric joinrowset intial -joinrowsetimpl.emptyrowset = No se puede a\u00f1adir un rowset vac\u00edo a este JoinRowSet +joinrowsetimpl.matchnotset = Las columnas coincidentes no est\u00E1n definidas para la uni\u00F3n +joinrowsetimpl.numnotequal = El n\u00FAmero de elementos de rowset y el de columnas coincidentes no es el mismo +joinrowsetimpl.notdefined = No es un tipo de uni\u00F3n definido +joinrowsetimpl.notsupported = Este tipo de uni\u00F3n no est\u00E1 soportado +joinrowsetimpl.initerror = Error de inicializaci\u00F3n de JoinRowSet +joinrowsetimpl.genericerr = Error de inicializaci\u00F3n gen\u00E9rico de joinrowset +joinrowsetimpl.emptyrowset = No se puede agregar un juego de filas vac\u00EDo a este JoinRowSet #JdbcRowSetImpl exceptions -jdbcrowsetimpl.invalstate = Estado no v\u00e1lido -jdbcrowsetimpl.connect = JdbcRowSet (conectar) JNDI no se puede conectar -jdbcrowsetimpl.paramtype = No se puede deducir tipo de par\u00e1metro -jdbcrowsetimpl.matchcols = Las columnas emparejadas no concuerdan con las definidas -jdbcrowsetimpl.setmatchcols = Configurar emparejamiento de columnas antes de obtenerlas -jdbcrowsetimpl.matchcols1 = Las columnas emparejadas deben ser mayores que 0 -jdbcrowsetimpl.matchcols2 = Las columnas emparejadas no pueden estar vac\u00edas ni ser una cadena nula -jdbcrowsetimpl.unsetmatch = Las columnas que se est\u00e1n desconfigurando no son las mismas que las configuradas -jdbcrowsetimpl.usecolname = Usar nombre de columna como argumento en unsetMatchColumn -jdbcrowsetimpl.usecolid = Usar ID de columna como argumento en unsetMatchColumn +jdbcrowsetimpl.invalstate = Estado no v\u00E1lido +jdbcrowsetimpl.connect = JdbcRowSet (connect): JNDI no se puede conectar +jdbcrowsetimpl.paramtype = No se puede deducir el tipo de par\u00E1metro +jdbcrowsetimpl.matchcols = Las columnas coincidentes no concuerdan con las definidas +jdbcrowsetimpl.setmatchcols = Defina las columnas coincidentes antes de obtenerlas +jdbcrowsetimpl.matchcols1 = Las columnas coincidentes deben ser mayores que 0 +jdbcrowsetimpl.matchcols2 = Las columnas coincidentes no pueden estar vac\u00EDas ni ser una cadena nula +jdbcrowsetimpl.unsetmatch = Las columnas cuya definici\u00F3n se est\u00E1 anulando no concuerdan con las definidas +jdbcrowsetimpl.usecolname = Use el nombre de columna como argumento en unsetMatchColumn +jdbcrowsetimpl.usecolid = Use el identificador de columna como argumento en unsetMatchColumn jdbcrowsetimpl.resnotupd = ResultSet no se puede actualizar -jdbcrowsetimpl.opnotysupp = Operaci\u00f3n no admitida todav\u00eda -jdbcrowsetimpl.featnotsupp = Funci\u00f3n no admitida +jdbcrowsetimpl.opnotysupp = Operaci\u00F3n no soportada todav\u00EDa +jdbcrowsetimpl.featnotsupp = Funci\u00F3n no soportada #CachedRowSetReader exceptions -crsreader.connect = (JNDI) No se puede conectar -crsreader.paramtype = No se puede deducir tipo de par\u00e1metro -crsreader.connecterr = Error interno en RowSetReader: no hay conexi\u00f3n o comando -crsreader.datedetected = Fecha detectada -crsreader.caldetected = Calendario detectado +crsreader.connect = (JNDI) No se ha podido conectar +crsreader.paramtype = No se ha podido deducir el tipo de par\u00E1metro +crsreader.connecterr = Error interno en RowSetReader: no hay conexi\u00F3n o comando +crsreader.datedetected = Fecha Detectada +crsreader.caldetected = Calendario Detectado #CachedRowSetWriter exceptions -crswriter.connect = No se puede obtener una conexi\u00f3n +crswriter.connect = No se ha podido obtener una conexi\u00F3n crswriter.tname = writeData no puede determinar el nombre de tabla crswriter.params1 = Valor de params1: {0} crswriter.params2 = Valor de params2: {0} -crswriter.conflictsno = conflictos en la sincronizaci\u00f3n +crswriter.conflictsno = conflictos en la sincronizaci\u00F3n #InsertRow exceptions -insertrow.novalue = No se ha insertado ning\u00fan valor +insertrow.novalue = No se ha insertado ning\u00FAn valor #SyncResolverImpl exceptions -syncrsimpl.indexval = El valor de \u00edndice est\u00e1 fuera del intervalo -syncrsimpl.noconflict = Esta columna no est\u00e1 en conflicto +syncrsimpl.indexval = El valor de \u00EDndice est\u00E1 fuera de rango +syncrsimpl.noconflict = Esta columna no est\u00E1 en conflicto syncrsimpl.syncnotpos = No se puede sincronizar -syncrsimpl.valtores = El valor que se debe definir puede estar en la base de datos o en cachedrowset +syncrsimpl.valtores = El valor que se debe resolver puede estar en la base de datos o en cachedrowset #WebRowSetXmlReader exception -wrsxmlreader.invalidcp = Se ha llegado al final de RowSet. Posici\u00f3n de cursor no v\u00e1lida -wrsxmlreader.readxml = readXML: {0} -wrsxmlreader.parseerr = ** Error de an\u00e1lisis: {0} , l\u00ednea: {1} , uri: {2} +wrsxmlreader.invalidcp = Se ha llegado al final de RowSet. Posici\u00F3n de cursor no v\u00E1lida +wrsxmlreader.readxml = readXML : {0} +wrsxmlreader.parseerr = ** Error de an\u00E1lisis: {0} , l\u00EDnea: {1} , uri: {2} #WebRowSetXmlWriter exceptions -wrsxmlwriter.ioex = IOException: {0} -wrsxmlwriter.sqlex = SQLException: {0} -wrsxmlwriter.failedwrite = No se pudo escribir valor +wrsxmlwriter.ioex = IOException : {0} +wrsxmlwriter.sqlex = SQLException : {0} +wrsxmlwriter.failedwrite = Error al escribir el valor wsrxmlwriter.notproper = Tipo incorrecto #XmlReaderContentHandler exceptions -xmlrch.errmap = Error al configurar la asignaci\u00f3n: {0} -xmlrch.errmetadata = Error al configurar metadatos: {0} +xmlrch.errmap = Error al definir la asignaci\u00F3n: {0} +xmlrch.errmetadata = Error al definir metadatos: {0} xmlrch.errinsertval = Error al insertar los valores: {0} -xmlrch.errconstr = Error al construir fila: {0} -xmlrch.errdel = Error al borrar fila: {0} -xmlrch.errinsdel = Error al construir insertar o suprimir fila: {0} -xmlrch.errupdate = Error al construir actualizar fila: {0} +xmlrch.errconstr = Error al construir la fila: {0} +xmlrch.errdel = Error al suprimir la fila: {0} +xmlrch.errinsert = Error al construir la fila de inserci\u00F3n: {0} +xmlrch.errinsdel = Error al construir la fila de inserci\u00F3n o supresi\u00F3n: {0} +xmlrch.errupdate = Error al construir la fila de actualizaci\u00F3n: {0} xmlrch.errupdrow = Error al actualizar la fila: {0} xmlrch.chars = caracteres: xmlrch.badvalue = Valor incorrecto; la propiedad no puede ser nula xmlrch.badvalue1 = Valor incorrecto; los metadatos no pueden ser nulos -xmlrch.warning = ** Advertencia: {0} , l\u00ednea: {1} , uri: {2} +xmlrch.warning = ** Advertencia: {0} , l\u00EDnea: {1} , uri: {2} #RIOptimisticProvider Exceptions -riop.locking = No se permite bloquear la clasificaci\u00f3n +riop.locking = No se permite bloquear la clasificaci\u00F3n #RIXMLProvider exceptions -rixml.unsupp = No compatible con RIXMLProvider +rixml.unsupp = No soportado con RIXMLProvider diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties index 009a580e0a6..7793e88fe57 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties @@ -24,117 +24,118 @@ # # CacheRowSetImpl exceptions -cachedrowsetimpl.populate = L'objet ResultSet fourni en entr\u00e9e de la m\u00e9thode n'est pas valide -cachedrowsetimpl.invalidp = Le fournisseur de persistance g\u00e9n\u00e9r\u00e9 n'est pas valide -cachedrowsetimpl.nullhash = Impossible de cr\u00e9er une instance de CachedRowSetImpl. Table de hachage null fournie au constructeur -cachedrowsetimpl.invalidop = Op\u00e9ration non valide lors de l'insertion de ligne -cachedrowsetimpl.accfailed = \u00c9chec de acceptChanges +cachedrowsetimpl.populate = L'objet ResultSet fourni en entr\u00E9e de la m\u00E9thode n'est pas valide +cachedrowsetimpl.invalidp = Le fournisseur de persistance g\u00E9n\u00E9r\u00E9 n'est pas valide +cachedrowsetimpl.nullhash = Impossible de cr\u00E9er une instance de CachedRowSetImpl. Table de hachage NULL fournie au constructeur +cachedrowsetimpl.invalidop = Op\u00E9ration non valide lors de l'insertion de ligne +cachedrowsetimpl.accfailed = Echec de acceptChanges cachedrowsetimpl.invalidcp = Position du curseur non valide -cachedrowsetimpl.illegalop = Op\u00e9ration non autoris\u00e9e sur ligne non ins\u00e9r\u00e9e -cachedrowsetimpl.clonefail = \u00c9chec du clonage : {0} +cachedrowsetimpl.illegalop = Op\u00E9ration non admise sur une ligne non ins\u00E9r\u00E9e +cachedrowsetimpl.clonefail = Echec du clonage : {0} cachedrowsetimpl.invalidcol = Index de colonne non valide cachedrowsetimpl.invalcolnm = Nom de colonne non valide -cachedrowsetimpl.boolfail = \u00c9chec de getBoolen pour la valeur ({0}) de la colonne {1} -cachedrowsetimpl.bytefail = \u00c9chec de getByte pour la valeur ({0}) de la colonne {1} -cachedrowsetimpl.shortfail = \u00c9chec de getShort pour la valeur ({0}) de la colonne {1} -cachedrowsetimpl.intfail = \u00c9chec de getInt pour la valeur ({0}) de la colonne {1} -cachedrowsetimpl.longfail = \u00c9chec de getLong pour la valeur ({0}) de la colonne {1} -cachedrowsetimpl.floatfail = \u00c9chec de getFloat pour la valeur ({0}) de la colonne {1} -cachedrowsetimpl.doublefail = \u00c9chec de getDouble pour la valeur ({0}) de la colonne {1} -cachedrowsetimpl.dtypemismt = Le type de donn\u00e9es ne correspond pas -cachedrowsetimpl.datefail = \u00c9chec de getDate pour la valeur ({0}) de la colonne {1} - Aucune conversion possible -cachedrowsetimpl.timefail = \u00c9chec de getDate pour la valeur ({0}) de la colonne {1} - Aucune conversion possible -cachedrowsetimpl.posupdate = Mises \u00e0 jour choisies non prises en charge +cachedrowsetimpl.boolfail = Echec de getBoolen pour la valeur ({0}) de la colonne {1} +cachedrowsetimpl.bytefail = Echec de getByte pour la valeur ({0}) de la colonne {1} +cachedrowsetimpl.shortfail = Echec de getShort pour la valeur ({0}) de la colonne {1} +cachedrowsetimpl.intfail = Echec de getInt pour la valeur ({0}) de la colonne {1} +cachedrowsetimpl.longfail = Echec de getLong pour la valeur ({0}) de la colonne {1} +cachedrowsetimpl.floatfail = Echec de getFloat pour la valeur ({0}) de la colonne {1} +cachedrowsetimpl.doublefail = Echec de getDouble pour la valeur ({0}) de la colonne {1} +cachedrowsetimpl.dtypemismt = Le type de donn\u00E9es ne correspond pas +cachedrowsetimpl.datefail = Echec de getDate pour la valeur ({0}) de la colonne {1} - Aucune conversion possible +cachedrowsetimpl.timefail = Echec de getTime pour la valeur ({0}) de la colonne {1} - Aucune conversion possible +cachedrowsetimpl.posupdate = Mises \u00E0 jour choisies non prises en charge cachedrowsetimpl.unableins = Instanciation impossible : {0} -cachedrowsetimpl.beforefirst = beforeFirst : op\u00e9ration de curseur non valide -cachedrowsetimpl.first = First : op\u00e9ration de curseur non valide +cachedrowsetimpl.beforefirst = beforeFirst : op\u00E9ration de curseur non valide +cachedrowsetimpl.first = First : op\u00E9ration de curseur non valide cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY cachedrowsetimpl.absolute = absolute : position de curseur non valide cachedrowsetimpl.relative = relative : position de curseur non valide -cachedrowsetimpl.asciistream = \u00e9chec de la lecture pour le flux ascii -cachedrowsetimpl.binstream = \u00e9chec de la lecture pour le flux binaire -cachedrowsetimpl.failedins = \u00c9chec de l'insertion de ligne +cachedrowsetimpl.asciistream = \u00E9chec de la lecture pour le flux ASCII +cachedrowsetimpl.binstream = \u00E9chec de la lecture pour le flux binaire +cachedrowsetimpl.failedins = Echec de l'insertion de ligne cachedrowsetimpl.updateins = appel de updateRow lors de l'insertion de ligne cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY -cachedrowsetimpl.movetoins1 = moveToInsertRow : aucune m\u00e9tadonn\u00e9e -cachedrowsetimpl.movetoins2 = moveToInsertRow : Nombre de colonnes non valide -cachedrowsetimpl.tablename = Le nom du tableau ne peut pas \u00eatre null -cachedrowsetimpl.keycols = Colonnes de cl\u00e9 non valides -cachedrowsetimpl.opnotsupp = Op\u00e9ration non prise en charge par la base de donn\u00e9es -cachedrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les m\u00eames que les colonnes d\u00e9finies -cachedrowsetimpl.setmatchcols = D\u00e9finissez les colonnes correspondantes avant de les prendre -cachedrowsetimpl.matchcols1 = Les colonnes correspondantes doivent \u00eatre sup\u00e9rieures \u00e0 z\u00e9ro -cachedrowsetimpl.matchcols2 = Les colonnes correspondantes doivent \u00eatres vides ou ne contenir que des cha\u00eenes vides -cachedrowsetimpl.unsetmatch = Les colonnes d\u00e9finies et non d\u00e9finies sont diff\u00e9rentes -cachedrowsetimpl.unsetmatch1 = Utilisez le nom de la colonne en argument de unsetMatchColumn -cachedrowsetimpl.unsetmatch2 = Utilisez l'ID de la colonne en argument de unsetMatchColumn -cachedrowsetimpl.numrows = Le nombre de lignes est inf\u00e9rieur \u00e0 z\u00e9ro ou \u00e0 la taille d'extraction -cachedrowsetimpl.startpos = La position de d\u00e9part ne peut pas \u00eatre n\u00e9gative -cachedrowsetimpl.nextpage = Entrez les donn\u00e9es avant l'appel -cachedrowsetimpl.pagesize = La taille de la page ne peut pas \u00eatre n\u00e9gative -cachedrowsetimpl.pagesize1 = La taille de la page ne peut pas \u00eatre sup\u00e9rieure \u00e0 maxRows -cachedrowsetimpl.fwdonly = ResultSet est en avant seulement +cachedrowsetimpl.movetoins1 = moveToInsertRow : aucune m\u00E9tadonn\u00E9e +cachedrowsetimpl.movetoins2 = moveToInsertRow : nombre de colonnes non valide +cachedrowsetimpl.tablename = Le nom de la table ne peut pas \u00EAtre NULL +cachedrowsetimpl.keycols = Colonnes de cl\u00E9 non valides +cachedrowsetimpl.invalidcol = Index de colonne non valide +cachedrowsetimpl.opnotsupp = Op\u00E9ration non prise en charge par la base de donn\u00E9es +cachedrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les m\u00EAmes que les colonnes d\u00E9finies +cachedrowsetimpl.setmatchcols = D\u00E9finir les colonnes correspondantes avant de les prendre +cachedrowsetimpl.matchcols1 = Les colonnes correspondantes doivent \u00EAtre sup\u00E9rieures \u00E0 z\u00E9ro +cachedrowsetimpl.matchcols2 = Les colonnes correspondantes doivent \u00EAtres vides ou ne contenir que des cha\u00EEnes NULL +cachedrowsetimpl.unsetmatch = Les colonnes d\u00E9finies et non d\u00E9finies sont diff\u00E9rentes +cachedrowsetimpl.unsetmatch1 = Utiliser le nom de colonne comme argument pour unsetMatchColumn +cachedrowsetimpl.unsetmatch2 = Utiliser l'ID de colonne comme argument pour unsetMatchColumn +cachedrowsetimpl.numrows = Le nombre de lignes est inf\u00E9rieur \u00E0 z\u00E9ro ou \u00E0 la taille d'extraction +cachedrowsetimpl.startpos = La position de d\u00E9part ne peut pas \u00EAtre n\u00E9gative +cachedrowsetimpl.nextpage = Entrer les donn\u00E9es avant l'appel +cachedrowsetimpl.pagesize = La taille de la page ne peut pas \u00EAtre n\u00E9gative +cachedrowsetimpl.pagesize1 = La taille de la page ne peut pas \u00EAtre sup\u00E9rieure \u00E0 maxRows +cachedrowsetimpl.fwdonly = ResultSet va en avant seulement cachedrowsetimpl.type = Le type est : {0} -cachedrowsetimpl.opnotysupp = Op\u00e9ration non encore prise en charge -cachedrowsetimpl.featnotsupp = Fonction non prise en charge +cachedrowsetimpl.opnotysupp = Op\u00E9ration non encore prise en charge +cachedrowsetimpl.featnotsupp = Fonctionnalit\u00E9 non prise en charge # WebRowSetImpl exceptions -webrowsetimpl.nullhash = Impossible de cr\u00e9er une instance de WebRowSetImpl. Table de hachage null fournie au constructeur -webrowsetimpl.invalidwr = G\u00e9n\u00e9rateur non valide -webrowsetimpl.invalidrd = Lecteur non valide +webrowsetimpl.nullhash = Impossible de cr\u00E9er une instance de WebRowSetImpl. Table de hachage NULL fournie au constructeur +webrowsetimpl.invalidwr = Processus d'\u00E9criture non valide +webrowsetimpl.invalidrd = Processus de lecture non valide #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative : op\u00e9ration de curseur non valide -filteredrowsetimpl.absolute = absolute : op\u00e9ration de curseur non valide -filteredrowsetimpl.notallowed = Cette valeur n'est pas autoris\u00e9e via le filtre +filteredrowsetimpl.relative = relative : op\u00E9ration de curseur non valide +filteredrowsetimpl.absolute = absolute : op\u00E9ration de curseur non valide +filteredrowsetimpl.notallowed = Cette valeur n'est pas autoris\u00E9e via le filtre #JoinRowSetImpl exceptions joinrowsetimpl.notinstance = N'est pas une instance de RowSet -joinrowsetimpl.matchnotset = Les colonnes correspondantes ne sont pas group\u00e9es pour jointure -joinrowsetimpl.numnotequal = Le nombre d'\u00e9l\u00e9ments dans RowSet est diff\u00e9rent du nombre de colonnes correspondantes -joinrowsetimpl.notdefined = Ce n'est pas un type de jointure d\u00e9fini +joinrowsetimpl.matchnotset = Les colonnes correspondantes ne sont pas d\u00E9finies pour la jointure +joinrowsetimpl.numnotequal = Le nombre d'\u00E9l\u00E9ments dans RowSet est diff\u00E9rent du nombre de colonnes correspondantes +joinrowsetimpl.notdefined = Ce n'est pas un type de jointure d\u00E9fini joinrowsetimpl.notsupported = Ce type de jointure n'est pas pris en charge joinrowsetimpl.initerror = Erreur d'initialisation de JoinRowSet -joinrowsetimpl.genericerr = Erreur initiale g\u00e9n\u00e9rique de JoinRowSet -joinrowsetimpl.emptyrowset = Impossible d'ajouter un objet RowSet vide \u00e0 ce JoinRowSet +joinrowsetimpl.genericerr = Erreur initiale g\u00E9n\u00E9rique de JoinRowSet +joinrowsetimpl.emptyrowset = Impossible d'ajouter un objet RowSet vide \u00E0 ce JoinRowSet #JdbcRowSetImpl exceptions -jdbcrowsetimpl.invalstate = \u00c9tat non valide +jdbcrowsetimpl.invalstate = Etat non valide jdbcrowsetimpl.connect = Impossible de connecter JNDI JdbcRowSet (connexion) -jdbcrowsetimpl.paramtype = Impossible de d\u00e9duire le type de param\u00e8tre -jdbcrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les m\u00eames que les colonnes d\u00e9finies -jdbcrowsetimpl.setmatchcols = D\u00e9finissez les colonnes correspondantes avant de les prendre -jdbcrowsetimpl.matchcols1 = Le nombre de colonnes correspondantes doit \u00eatre sup\u00e9rieur \u00e0 z\u00e9ro -jdbcrowsetimpl.matchcols2 = Les colonnes correspondantes ne doivent pas \u00eatres vides ni contenir des cha\u00eenes vides -jdbcrowsetimpl.unsetmatch = Les colonnes non d\u00e9finies ne sont pas les m\u00eames que les colonnes d\u00e9finies -jdbcrowsetimpl.usecolname = Utilisez le nom de la colonne en argument de unsetMatchColumn -jdbcrowsetimpl.usecolid = Utilisez l'ID de la colonne en argument de unsetMatchColumn -jdbcrowsetimpl.resnotupd = La mise \u00e0 jour de ResultSet est interdite -jdbcrowsetimpl.opnotysupp = Op\u00e9ration non encore prise en charge -jdbcrowsetimpl.featnotsupp = Fonction non prise en charge +jdbcrowsetimpl.paramtype = Impossible de d\u00E9duire le type de param\u00E8tre +jdbcrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les m\u00EAmes que les colonnes d\u00E9finies +jdbcrowsetimpl.setmatchcols = D\u00E9finir les colonnes correspondantes avant de les prendre +jdbcrowsetimpl.matchcols1 = Les colonnes correspondantes doivent \u00EAtre sup\u00E9rieures \u00E0 z\u00E9ro +jdbcrowsetimpl.matchcols2 = Les colonnes correspondantes ne doivent pas \u00EAtres NULL ni contenir des cha\u00EEnes vides +jdbcrowsetimpl.unsetmatch = Les colonnes non d\u00E9finies ne sont pas les m\u00EAmes que les colonnes d\u00E9finies +jdbcrowsetimpl.usecolname = Utiliser le nom de colonne comme argument pour unsetMatchColumn +jdbcrowsetimpl.usecolid = Utiliser l'ID de colonne comme argument pour unsetMatchColumn +jdbcrowsetimpl.resnotupd = La mise \u00E0 jour de ResultSet est interdite +jdbcrowsetimpl.opnotysupp = Op\u00E9ration non encore prise en charge +jdbcrowsetimpl.featnotsupp = Fonctionnalit\u00E9 non prise en charge #CachedRowSetReader exceptions crsreader.connect = Impossible de connecter (JNDI) -crsreader.paramtype = Impossible de d\u00e9duire le type de param\u00e8tre -crsreader.connecterr = Erreur interne dans RowSetReader\u00a0: pas de connexion ni de commande -crsreader.datedetected = Une date a \u00e9t\u00e9 d\u00e9tect\u00e9e -crsreader.caldetected = Un calendrier a \u00e9t\u00e9 d\u00e9tect\u00e9 +crsreader.paramtype = Impossible de d\u00E9duire le type de param\u00E8tre +crsreader.connecterr = Erreur interne dans RowSetReader\u00A0: pas de connexion ni de commande +crsreader.datedetected = Une date a \u00E9t\u00E9 d\u00E9tect\u00E9e +crsreader.caldetected = Un calendrier a \u00E9t\u00E9 d\u00E9tect\u00E9 #CachedRowSetWriter exceptions crswriter.connect = Impossible d'obtenir la connexion -crswriter.tname = writeData ne peut pas d\u00e9terminer le nom du tableau +crswriter.tname = writeData ne peut pas d\u00E9terminer le nom de la table crswriter.params1 = Valeur de params1 : {0} crswriter.params2 = Valeur de params2 : {0} crswriter.conflictsno = conflits lors de la synchronisation #InsertRow exceptions -insertrow.novalue = Aucune valeur n'a \u00e9t\u00e9 ins\u00e9r\u00e9e +insertrow.novalue = Aucune valeur n'a \u00E9t\u00E9 ins\u00E9r\u00E9e #SyncResolverImpl exceptions syncrsimpl.indexval = Valeur d'index hors plage syncrsimpl.noconflict = Cette colonne n'est pas en conflit syncrsimpl.syncnotpos = La synchronisation est impossible -syncrsimpl.valtores = La valeur \u00e0 r\u00e9soudre peut \u00eatre soit dans la base de donn\u00e9es soit dans CachedrowSet +syncrsimpl.valtores = La valeur \u00E0 r\u00E9soudre peut \u00EAtre soit dans la base de donn\u00E9es, soit dans CachedrowSet #WebRowSetXmlReader exception wrsxmlreader.invalidcp = Fin de RowSet atteinte. Position de curseur non valide @@ -142,23 +143,24 @@ wrsxmlreader.readxml = readXML : {0} wrsxmlreader.parseerr = ** Erreur d''analyse : {0} , ligne : {1} , URI : {2} #WebRowSetXmlWriter exceptions -wrsxmlwriter.ioex = IOException : {0} -wrsxmlwriter.sqlex = SQLException : {0} -wrsxmlwriter.failedwrite = \u00c9chec d'\u00e9criture de la valeur +wrsxmlwriter.ioex = Exception d''E/S : {0} +wrsxmlwriter.sqlex = Exception SQL : {0} +wrsxmlwriter.failedwrite = Echec d'\u00E9criture de la valeur wsrxmlwriter.notproper = N'est pas un type correct #XmlReaderContentHandler exceptions -xmlrch.errmap = Erreur lors de la d\u00e9finition de Map : {0} -xmlrch.errmetadata = Erreur lors de la d\u00e9finition des m\u00e9tadonn\u00e9es : {0} -xmlrch.errinsertval = Erreur lors de l''insertion des valeurs\u00a0: {0} +xmlrch.errmap = Erreur lors de la d\u00E9finition du mappage : {0} +xmlrch.errmetadata = Erreur lors de la d\u00E9finition des m\u00E9tadonn\u00E9es : {0} +xmlrch.errinsertval = Erreur lors de l''insertion des valeurs\u00A0: {0} xmlrch.errconstr = Erreur lors de la construction de la ligne : {0} xmlrch.errdel = Erreur lors de la suppression de la ligne : {0} +xmlrch.errinsert = Erreur lors de la construction de la ligne \u00E0 ins\u00E9rer : {0} xmlrch.errinsdel = Erreur lors de la construction de la ligne insdel : {0} -xmlrch.errupdate = Erreur lors de la construction de la ligne \u00e0 mettre \u00e0 jour : {0} -xmlrch.errupdrow = Erreur lors de la mise \u00e0 jour de la ligne\u00a0: {0} -xmlrch.chars = caract\u00e8res : -xmlrch.badvalue = Valeur incorrecte ; null impossible pour cette propri\u00e9t\u00e9 -xmlrch.badvalue1 = Valeur incorrecte ; null impossible pour ces m\u00e9tadonn\u00e9es +xmlrch.errupdate = Erreur lors de la construction de la ligne \u00E0 mettre \u00E0 jour : {0} +xmlrch.errupdrow = Erreur lors de la mise \u00E0 jour de la ligne\u00A0: {0} +xmlrch.chars = caract\u00E8res : +xmlrch.badvalue = Valeur incorrecte ; cette propri\u00E9t\u00E9 ne peut pas \u00EAtre NULL +xmlrch.badvalue1 = Valeur incorrecte ; ces m\u00E9tadonn\u00E9es ne peuvent pas \u00EAtre NULL xmlrch.warning = ** Avertissement : {0} , ligne : {1} , URI : {2} #RIOptimisticProvider Exceptions diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties index 7501a76454b..916db678bae 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties @@ -25,13 +25,13 @@ # CacheRowSetImpl exceptions cachedrowsetimpl.populate = Oggetto ResultSet non valido fornito per l'inserimento dati nel metodo -cachedrowsetimpl.invalidp = Generato fornitore di persistenza non valido -cachedrowsetimpl.nullhash = Impossibile istanziare l'istanza CachedRowSetImpl. Tabella hash nulla fornita al costruttore +cachedrowsetimpl.invalidp = Generato provider di persistenza non valido +cachedrowsetimpl.nullhash = Impossibile creare istanza CachedRowSetImpl. Tabella hash nulla fornita al costruttore cachedrowsetimpl.invalidop = Operazione non valida nella riga di inserimento cachedrowsetimpl.accfailed = acceptChanges non riuscito cachedrowsetimpl.invalidcp = Posizione cursore non valida -cachedrowsetimpl.illegalop = Operazione non consentita nella riga non inserita -cachedrowsetimpl.clonefail = Clone non riuscito: {0} +cachedrowsetimpl.illegalop = Operazione non valida nella riga non inserita +cachedrowsetimpl.clonefail = Copia non riuscita: {0} cachedrowsetimpl.invalidcol = Indice di colonna non valido cachedrowsetimpl.invalcolnm = Nome di colonna non valido cachedrowsetimpl.boolfail = getBoolen non riuscito per il valore ( {0} ) nella colonna {1} @@ -41,11 +41,11 @@ cachedrowsetimpl.intfail = getInt non riuscito per il valore ( {0} ) nella colon cachedrowsetimpl.longfail = getLong non riuscito per il valore ( {0} ) nella colonna {1} cachedrowsetimpl.floatfail = getFloat non riuscito per il valore ( {0} ) nella colonna {1} cachedrowsetimpl.doublefail = getDouble non riuscito per il valore ( {0} ) nella colonna {1} -cachedrowsetimpl.dtypemismt = Mancata corrispondenza dei tipi di dati +cachedrowsetimpl.dtypemismt = Mancata corrispondenza tipo di dati cachedrowsetimpl.datefail = getDate non riuscito per il valore ( {0} ) nella colonna {1}. Nessuna conversione disponibile. cachedrowsetimpl.timefail = getTime non riuscito per il valore ( {0} ) nella colonna {1}. Nessuna conversione disponibile. cachedrowsetimpl.posupdate = Aggiornamenti posizionati non supportati -cachedrowsetimpl.unableins = Impossibile istanziare: {0} +cachedrowsetimpl.unableins = Impossibile creare istanza: {0} cachedrowsetimpl.beforefirst = beforeFirst: operazione cursore non valida cachedrowsetimpl.first = First: operazione cursore non valida cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY @@ -58,8 +58,9 @@ cachedrowsetimpl.updateins = updateRow chiamato nella riga di inserimento cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY cachedrowsetimpl.movetoins1 = moveToInsertRow: nessun metadato cachedrowsetimpl.movetoins2 = moveToInsertRow: numero di colonne non valido -cachedrowsetimpl.tablename = Il nome di tabella non pu\u00f2 essere nullo +cachedrowsetimpl.tablename = Il nome di tabella non pu\u00F2 essere nullo cachedrowsetimpl.keycols = Colonne chiave non valide +cachedrowsetimpl.invalidcol = Indice di colonna non valido cachedrowsetimpl.opnotsupp = Operazione non supportata dal database cachedrowsetimpl.matchcols = Le colonne di corrispondenza non coincidono con le colonne impostate cachedrowsetimpl.setmatchcols = Impostare le colonne di corrispondenza prima di recuperarle @@ -68,32 +69,32 @@ cachedrowsetimpl.matchcols2 = Le colonne di corrispondenza devono essere una str cachedrowsetimpl.unsetmatch = Le colonne rimosse non coincidono con le colonne impostate cachedrowsetimpl.unsetmatch1 = Utilizzare il nome di colonna come argomento per unsetMatchColumn cachedrowsetimpl.unsetmatch2 = Utilizzare l'ID di colonna come argomento per unsetMatchColumn -cachedrowsetimpl.numrows = Il numero di righe \u00e8 inferiore a zero o alla dimensione di recupero -cachedrowsetimpl.startpos = La posizione iniziale non pu\u00f2 essere negativa +cachedrowsetimpl.numrows = Il numero di righe \u00E8 inferiore a zero o alla dimensione di recupero +cachedrowsetimpl.startpos = La posizione iniziale non pu\u00F2 essere negativa cachedrowsetimpl.nextpage = Inserire i dati prima di chiamare -cachedrowsetimpl.pagesize = La dimensione della pagina non pu\u00f2 essere inferiore a zero -cachedrowsetimpl.pagesize1 = La dimensione della pagina non pu\u00f2 essere superiore a maxRows -cachedrowsetimpl.fwdonly = ResultSet \u00e8 a solo inoltro -cachedrowsetimpl.type = Il tipo \u00e8: {0} +cachedrowsetimpl.pagesize = La dimensione della pagina non pu\u00F2 essere inferiore a zero +cachedrowsetimpl.pagesize1 = La dimensione della pagina non pu\u00F2 essere superiore a maxRows +cachedrowsetimpl.fwdonly = ResultSet \u00E8 a solo inoltro +cachedrowsetimpl.type = Il tipo \u00E8: {0} cachedrowsetimpl.opnotysupp = Operazione attualmente non supportata -cachedrowsetimpl.featnotsupp = Funzionalit\u00e0 non supportata +cachedrowsetimpl.featnotsupp = Funzione non supportata # WebRowSetImpl exceptions -webrowsetimpl.nullhash = Impossibile istanziare l'istanza WebRowSetImpl. Tabella hash nulla fornita al costruttore -webrowsetimpl.invalidwr = Autore non valido -webrowsetimpl.invalidrd = Lettore non valido +webrowsetimpl.nullhash = Impossibile creare istanza WebRowSetImpl. Tabella hash nulla fornita al costruttore +webrowsetimpl.invalidwr = Processo di scrittura non valido +webrowsetimpl.invalidrd = Processo di lettura non valido #FilteredRowSetImpl exceptions filteredrowsetimpl.relative = relative: operazione cursore non valida filteredrowsetimpl.absolute = absolute: operazione cursore non valida -filteredrowsetimpl.notallowed = Questo valore non \u00e8 consentito nel filtro +filteredrowsetimpl.notallowed = Questo valore non \u00E8 consentito nel filtro #JoinRowSetImpl exceptions -joinrowsetimpl.notinstance = Non \u00e8 un'istanza di rowset +joinrowsetimpl.notinstance = Non \u00E8 un'istanza di rowset joinrowsetimpl.matchnotset = Colonna di corrispondenza non impostata per l'unione joinrowsetimpl.numnotequal = Numero di elementi in rowset diverso dalla colonna di corrispondenza -joinrowsetimpl.notdefined = Non \u00e8 un tipo di unione definito -joinrowsetimpl.notsupported = Questo tipo di unione non \u00e8 supportato +joinrowsetimpl.notdefined = Non \u00E8 un tipo di unione definito +joinrowsetimpl.notsupported = Questo tipo di unione non \u00E8 supportato joinrowsetimpl.initerror = Errore di inizializzazione di JoinRowSet joinrowsetimpl.genericerr = Errore iniziale di joinrowset generico joinrowsetimpl.emptyrowset = Impossibile aggiungere un set di righe vuoto al JoinRowSet corrente @@ -109,16 +110,16 @@ jdbcrowsetimpl.matchcols2 = Le colonne di corrispondenza non possono essere una jdbcrowsetimpl.unsetmatch = Le colonne rimosse non coincidono con le colonne impostate jdbcrowsetimpl.usecolname = Utilizzare il nome di colonna come argomento per unsetMatchColumn jdbcrowsetimpl.usecolid = Utilizzare l'ID di colonna come argomento per unsetMatchColumn -jdbcrowsetimpl.resnotupd = ResultSet non \u00e8 aggiornabile +jdbcrowsetimpl.resnotupd = ResultSet non \u00E8 aggiornabile jdbcrowsetimpl.opnotysupp = Operazione attualmente non supportata -jdbcrowsetimpl.featnotsupp = Funzionalit\u00e0 non supportata +jdbcrowsetimpl.featnotsupp = Funzione non supportata #CachedRowSetReader exceptions crsreader.connect = (JNDI) Impossibile stabilire una connessione crsreader.paramtype = Impossibile dedurre il tipo di parametro crsreader.connecterr = Errore interno in RowSetReader: nessuna connessione o comando -crsreader.datedetected = \u00c8 stata rilevata una data -crsreader.caldetected = \u00c8 stato rilevato un calendario +crsreader.datedetected = \u00C8 stata rilevata una data +crsreader.caldetected = \u00C8 stato rilevato un calendario #CachedRowSetWriter exceptions crswriter.connect = Impossibile stabilire una connessione @@ -128,13 +129,13 @@ crswriter.params2 = Valore dei parametri 2: {0} crswriter.conflictsno = Conflitti durante la sincronizzazione #InsertRow exceptions -insertrow.novalue = Non \u00e8 stato inserito alcun valore +insertrow.novalue = Non \u00E8 stato inserito alcun valore #SyncResolverImpl exceptions -syncrsimpl.indexval = Il valore di indice non rientra nell'intervallo -syncrsimpl.noconflict = Questa colonna non \u00e8 in conflitto +syncrsimpl.indexval = Valore indice non compreso nell'intervallo +syncrsimpl.noconflict = Questa colonna non \u00E8 in conflitto syncrsimpl.syncnotpos = Impossibile eseguire la sincronizzazione -syncrsimpl.valtores = Il valore da risolvere pu\u00f2 essere nel database o in cachedrowset +syncrsimpl.valtores = Il valore da risolvere pu\u00F2 essere nel database o in cachedrowset #WebRowSetXmlReader exception wrsxmlreader.invalidcp = Raggiunta la fine di RowSet. Posizione cursore non valida @@ -153,16 +154,17 @@ xmlrch.errmetadata = Errore durante l''impostazione dei metadati: {0} xmlrch.errinsertval = Errore durante l''inserimento dei valori: {0} xmlrch.errconstr = Errore durante la costruzione della riga: {0} xmlrch.errdel = Errore durante l''eliminazione della riga: {0} +xmlrch.errinsert = Errore durante la costruzione della riga di inserimento: {0} xmlrch.errinsdel = Errore durante la costruzione della riga insdel: {0} xmlrch.errupdate = Errore durante la costruzione della riga di aggiornamento: {0} xmlrch.errupdrow = Errore durante l''aggiornamento della riga: {0} xmlrch.chars = caratteri: -xmlrch.badvalue = valore non valido; propriet\u00e0 non annullabile +xmlrch.badvalue = valore non valido; propriet\u00E0 non annullabile xmlrch.badvalue1 = valore non valido; metadati non annullabili -xmlrch.warning = **Avviso: {0}, riga: {1}, URI: {2} +xmlrch.warning = **Avvertenza: {0}, riga: {1}, URI: {2} #RIOptimisticProvider Exceptions -riop.locking = La classificazione di blocco non \u00e8 supportata +riop.locking = La classificazione di blocco non \u00E8 supportata #RIXMLProvider exceptions rixml.unsupp = Non supportato con RIXMLProvider diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties index 883c96a6174..7580131926d 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties @@ -24,145 +24,147 @@ # # CacheRowSetImpl exceptions -cachedrowsetimpl.populate = populate \u30e1\u30bd\u30c3\u30c9\u306b\u7121\u52b9\u306a ResultSet \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u4f7f\u7528\u3055\u308c\u307e\u3057\u305f\u3002 -cachedrowsetimpl.invalidp = \u7121\u52b9\u306a\u6301\u7d9a\u6027\u30d7\u30ed\u30d0\u30a4\u30c0\u304c\u751f\u6210\u3055\u308c\u307e\u3057\u305f\u3002 -cachedrowsetimpl.nullhash = CachedRowSetImpl \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b null \u306e Hashtable \u304c\u4f7f\u7528\u3055\u308c\u307e\u3057\u305f\u3002 -cachedrowsetimpl.invalidop = \u633f\u5165\u884c\u3067\u306e\u7121\u52b9\u306a\u64cd\u4f5c -cachedrowsetimpl.accfailed = acceptChanges \u306e\u5931\u6557 -cachedrowsetimpl.invalidcp = \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u4f4d\u7f6e -cachedrowsetimpl.illegalop = \u633f\u5165\u3055\u308c\u306a\u304b\u3063\u305f\u884c\u306e\u4e0d\u6b63\u306a\u64cd\u4f5c -cachedrowsetimpl.clonefail = \u8907\u88fd\u306e\u5931\u6557 : {0} -cachedrowsetimpl.invalidcol = \u7121\u52b9\u306a\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 -cachedrowsetimpl.invalcolnm = \u7121\u52b9\u306a\u5217\u540d -cachedrowsetimpl.boolfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getBoolen \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -cachedrowsetimpl.bytefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getByte \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -cachedrowsetimpl.shortfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getShort \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -cachedrowsetimpl.intfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getInt \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -cachedrowsetimpl.longfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getLong \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -cachedrowsetimpl.floatfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getFloat \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -cachedrowsetimpl.doublefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getDouble \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -cachedrowsetimpl.dtypemismt = \u30c7\u30fc\u30bf\u578b\u306e\u30df\u30b9\u30de\u30c3\u30c1 -cachedrowsetimpl.datefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getDate \u304c\u5931\u6557\u3002\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002 -cachedrowsetimpl.timefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getTime \u304c\u5931\u6557\u3002\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002 -cachedrowsetimpl.posupdate = \u4f4d\u7f6e\u6c7a\u3081\u3055\u308c\u305f\u66f4\u65b0\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002 -cachedrowsetimpl.unableins = \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u306a\u3044 : {0} -cachedrowsetimpl.beforefirst = beforeFirst : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c -cachedrowsetimpl.first = First : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c -cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY -cachedrowsetimpl.absolute = absolute : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c -cachedrowsetimpl.relative = relative : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c -cachedrowsetimpl.asciistream = ascii \u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -cachedrowsetimpl.binstream = \u30d0\u30a4\u30ca\u30ea\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -cachedrowsetimpl.failedins = \u884c\u306e\u633f\u5165\u306b\u5931\u6557 -cachedrowsetimpl.updateins = \u633f\u5165\u884c\u306b\u3066 updateRow \u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3057\u305f\u3002 -cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY -cachedrowsetimpl.movetoins1 = moveToInsertRow : \u30e1\u30bf\u30c7\u30fc\u30bf\u306a\u3057 -cachedrowsetimpl.movetoins2 = moveToInsertRow : \u7121\u52b9\u306a\u5217\u6570 -cachedrowsetimpl.tablename = \u8868\u540d\u306b null \u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -cachedrowsetimpl.keycols = \u7121\u52b9\u306a\u30ad\u30fc\u5217 -cachedrowsetimpl.opnotsupp = \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044\u64cd\u4f5c -cachedrowsetimpl.matchcols = \u4e00\u81f4\u5217\u304c\u5217\u306e\u30bb\u30c3\u30c8\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -cachedrowsetimpl.setmatchcols = \u4e00\u81f4\u5217\u3092\u53d6\u5f97\u3059\u308b\u524d\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -cachedrowsetimpl.matchcols1 = \u4e00\u81f4\u5217\u306f 0 \u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -cachedrowsetimpl.matchcols2 = \u4e00\u81f4\u5217\u306f\u7a7a\u304b null \u6587\u5b57\u5217\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -cachedrowsetimpl.unsetmatch = \u8a2d\u5b9a\u89e3\u9664\u3055\u308c\u3066\u3044\u308b\u5217\u306f\u30bb\u30c3\u30c8\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -cachedrowsetimpl.unsetmatch1 = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217\u540d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -cachedrowsetimpl.unsetmatch2 = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217 ID \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -cachedrowsetimpl.numrows = \u884c\u6570\u304c\u30bc\u30ed\u307e\u305f\u306f\u30d5\u30a7\u30c3\u30c1\u30b5\u30a4\u30ba\u3088\u308a\u5c0f\u3055\u3044\u3067\u3059\u3002 -cachedrowsetimpl.startpos = \u958b\u59cb\u4f4d\u7f6e\u306f\u8ca0\u3067\u306f\u306a\u308a\u307e\u305b\u3093\u3002 -cachedrowsetimpl.nextpage = \u547c\u3073\u51fa\u3057\u524d\u306b\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -cachedrowsetimpl.pagesize = \u30da\u30fc\u30b8\u30b5\u30a4\u30ba\u306f\u30bc\u30ed\u3088\u308a\u5c0f\u3055\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002 -cachedrowsetimpl.pagesize1 = \u30da\u30fc\u30b8\u30b5\u30a4\u30ba\u306f maxRows \u3088\u308a\u5927\u304d\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002 -cachedrowsetimpl.fwdonly = ResultSet \u306f\u9806\u65b9\u5411\u306e\u307f\u3067\u3059\u3002 -cachedrowsetimpl.type = \u578b : {0} -cachedrowsetimpl.opnotysupp = \u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u64cd\u4f5c -cachedrowsetimpl.featnotsupp = \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u6a5f\u80fd +cachedrowsetimpl.populate = populate\u30E1\u30BD\u30C3\u30C9\u306B\u7121\u52B9\u306AResultSet\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F +cachedrowsetimpl.invalidp = \u7121\u52B9\u306A\u6C38\u7D9A\u6027\u30D7\u30ED\u30D0\u30A4\u30C0\u304C\u751F\u6210\u3055\u308C\u307E\u3057\u305F +cachedrowsetimpl.nullhash = CachedRowSetImpl\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3002\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306Bnull\u306EHashtable\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F +cachedrowsetimpl.invalidop = \u633F\u5165\u884C\u3067\u306E\u7121\u52B9\u306A\u64CD\u4F5C +cachedrowsetimpl.accfailed = acceptChanges\u306E\u5931\u6557 +cachedrowsetimpl.invalidcp = \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E +cachedrowsetimpl.illegalop = \u633F\u5165\u3055\u308C\u306A\u304B\u3063\u305F\u884C\u306E\u4E0D\u6B63\u306A\u64CD\u4F5C +cachedrowsetimpl.clonefail = \u30AF\u30ED\u30FC\u30F3\u306E\u5931\u6557: {0} +cachedrowsetimpl.invalidcol = \u7121\u52B9\u306A\u5217\u7D22\u5F15 +cachedrowsetimpl.invalcolnm = \u7121\u52B9\u306A\u5217\u540D +cachedrowsetimpl.boolfail = \u5217{1}\u306E\u5024({0})\u3067getBoolean\u304C\u5931\u6557\u3057\u307E\u3057\u305F +cachedrowsetimpl.bytefail = \u5217{1}\u306E\u5024({0})\u3067getByte\u304C\u5931\u6557\u3057\u307E\u3057\u305F +cachedrowsetimpl.shortfail = \u5217{1}\u306E\u5024({0})\u3067getShort\u304C\u5931\u6557\u3057\u307E\u3057\u305F +cachedrowsetimpl.intfail = \u5217{1}\u306E\u5024({0})\u3067getInt\u304C\u5931\u6557\u3057\u307E\u3057\u305F +cachedrowsetimpl.longfail = \u5217{1}\u306E\u5024({0})\u3067getLong\u304C\u5931\u6557\u3057\u307E\u3057\u305F +cachedrowsetimpl.floatfail = \u5217{1}\u306E\u5024({0})\u3067getFloat\u304C\u5931\u6557\u3057\u307E\u3057\u305F +cachedrowsetimpl.doublefail = \u5217{1}\u306E\u5024({0})\u3067getDouble\u304C\u5931\u6557\u3057\u307E\u3057\u305F +cachedrowsetimpl.dtypemismt = \u30C7\u30FC\u30BF\u578B\u306E\u4E0D\u4E00\u81F4 +cachedrowsetimpl.datefail = \u5217{1}\u306E\u5024({0})\u3067getDate\u304C\u5931\u6557\u3002\u5909\u63DB\u3067\u304D\u307E\u305B\u3093 +cachedrowsetimpl.timefail = \u5217{1}\u306E\u5024({0})\u3067getTime\u304C\u5931\u6557\u3002\u5909\u63DB\u3067\u304D\u307E\u305B\u3093 +cachedrowsetimpl.posupdate = \u4F4D\u7F6E\u6C7A\u3081\u3055\u308C\u305F\u66F4\u65B0\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093 +cachedrowsetimpl.unableins = \u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u306A\u3044: {0} +cachedrowsetimpl.beforefirst = beforeFirst: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u64CD\u4F5C +cachedrowsetimpl.first = First: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u64CD\u4F5C +cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY +cachedrowsetimpl.absolute = absolute: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E +cachedrowsetimpl.relative = relative: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E +cachedrowsetimpl.asciistream = ascii\u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u8AAD\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F +cachedrowsetimpl.binstream = \u30D0\u30A4\u30CA\u30EA\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u8AAD\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F +cachedrowsetimpl.failedins = \u884C\u306E\u633F\u5165\u306B\u5931\u6557 +cachedrowsetimpl.updateins = \u633F\u5165\u884C\u306B\u304A\u3044\u3066updateRow\u304C\u547C\u3073\u51FA\u3055\u308C\u307E\u3057\u305F +cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY +cachedrowsetimpl.movetoins1 = moveToInsertRow: \u30E1\u30BF\u30C7\u30FC\u30BF\u306A\u3057 +cachedrowsetimpl.movetoins2 = moveToInsertRow: \u7121\u52B9\u306A\u5217\u6570 +cachedrowsetimpl.tablename = \u8868\u540D\u306Bnull\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 +cachedrowsetimpl.keycols = \u7121\u52B9\u306A\u30AD\u30FC\u5217 +cachedrowsetimpl.invalidcol = \u7121\u52B9\u306A\u5217\u7D22\u5F15 +cachedrowsetimpl.opnotsupp = \u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u306A\u3044\u64CD\u4F5C +cachedrowsetimpl.matchcols = \u4E00\u81F4\u5217\u304C\u5217\u306E\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +cachedrowsetimpl.setmatchcols = \u4E00\u81F4\u5217\u3092\u53D6\u5F97\u3059\u308B\u524D\u306B\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044 +cachedrowsetimpl.matchcols1 = \u4E00\u81F4\u5217\u306F0\u3088\u308A\u5927\u304D\u3044\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +cachedrowsetimpl.matchcols2 = \u4E00\u81F4\u5217\u306F\u7A7A\u304Bnull\u6587\u5B57\u5217\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +cachedrowsetimpl.unsetmatch = \u8A2D\u5B9A\u89E3\u9664\u3055\u308C\u3066\u3044\u308B\u5217\u306F\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +cachedrowsetimpl.unsetmatch1 = unsetMatchColumn\u3078\u306E\u5F15\u6570\u3068\u3057\u3066\u5217\u540D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044 +cachedrowsetimpl.unsetmatch2 = unsetMatchColumn\u3078\u306E\u5F15\u6570\u3068\u3057\u3066\u5217ID\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044 +cachedrowsetimpl.numrows = \u884C\u6570\u304C\u30BC\u30ED\u307E\u305F\u306F\u30D5\u30A7\u30C3\u30C1\u30FB\u30B5\u30A4\u30BA\u3088\u308A\u5C0F\u3055\u3044\u3067\u3059 +cachedrowsetimpl.startpos = \u958B\u59CB\u4F4D\u7F6E\u3092\u8CA0\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +cachedrowsetimpl.nextpage = \u547C\u51FA\u3057\u524D\u306B\u30C7\u30FC\u30BF\u3092\u79FB\u5165\u3057\u307E\u3059 +cachedrowsetimpl.pagesize = \u30DA\u30FC\u30B8\u30FB\u30B5\u30A4\u30BA\u3092\u30BC\u30ED\u3088\u308A\u5C0F\u3055\u304F\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +cachedrowsetimpl.pagesize1 = \u30DA\u30FC\u30B8\u30FB\u30B5\u30A4\u30BA\u3092maxRows\u3088\u308A\u5927\u304D\u304F\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +cachedrowsetimpl.fwdonly = ResultSet\u306F\u9806\u65B9\u5411\u306E\u307F\u3067\u3059 +cachedrowsetimpl.type = \u30BF\u30A4\u30D7: {0} +cachedrowsetimpl.opnotysupp = \u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u64CD\u4F5C +cachedrowsetimpl.featnotsupp = \u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u6A5F\u80FD # WebRowSetImpl exceptions -webrowsetimpl.nullhash = WebRowSetImpl \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b null \u306e Hashtable \u304c\u4f7f\u7528\u3055\u308c\u307e\u3057\u305f\u3002 -webrowsetimpl.invalidwr = \u7121\u52b9\u306a\u30e9\u30a4\u30bf\u30fc -webrowsetimpl.invalidrd = \u7121\u52b9\u306a\u30ea\u30fc\u30c0\u30fc +webrowsetimpl.nullhash = WebRowSetImpl\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3002\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306Bnull\u306EHashtable\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F +webrowsetimpl.invalidwr = \u7121\u52B9\u306A\u30E9\u30A4\u30BF\u30FC +webrowsetimpl.invalidrd = \u7121\u52B9\u306A\u30EA\u30FC\u30C0\u30FC #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c -filteredrowsetimpl.absolute = absolute : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c -filteredrowsetimpl.notallowed = \u3053\u306e\u5024\u306f\u30d5\u30a3\u30eb\u30bf\u3067\u8a31\u5bb9\u3055\u308c\u307e\u305b\u3093\u3002 +filteredrowsetimpl.relative = relative: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u64CD\u4F5C +filteredrowsetimpl.absolute = absolute: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u64CD\u4F5C +filteredrowsetimpl.notallowed = \u3053\u306E\u5024\u306F\u30D5\u30A3\u30EB\u30BF\u3067\u8A31\u5BB9\u3055\u308C\u307E\u305B\u3093 #JoinRowSetImpl exceptions -joinrowsetimpl.notinstance = \u884c\u30bb\u30c3\u30c8\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -joinrowsetimpl.matchnotset = \u4e00\u81f4\u5217\u304c\u7d50\u5408\u7528\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -joinrowsetimpl.numnotequal = \u884c\u30bb\u30c3\u30c8\u306e\u8981\u7d20\u6570\u304c\u4e00\u81f4\u5217\u3068\u7b49\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002 -joinrowsetimpl.notdefined = \u5b9a\u7fa9\u3055\u308c\u305f\u7d50\u5408\u306e\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -joinrowsetimpl.notsupported = \u3053\u306e\u578b\u306e\u7d50\u5408\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -joinrowsetimpl.initerror = JoinRowSet \u521d\u671f\u5316\u30a8\u30e9\u30fc -joinrowsetimpl.genericerr = \u6c4e\u7528 joinrowset \u306e\u521d\u671f\u30a8\u30e9\u30fc -joinrowsetimpl.emptyrowset = \u3053\u306e JoinRowSet \u306b\u7a7a\u306e\u884c\u30bb\u30c3\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +joinrowsetimpl.notinstance = \u884C\u30BB\u30C3\u30C8\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +joinrowsetimpl.matchnotset = \u4E00\u81F4\u5217\u304C\u7D50\u5408\u7528\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +joinrowsetimpl.numnotequal = \u884C\u30BB\u30C3\u30C8\u306E\u8981\u7D20\u6570\u304C\u4E00\u81F4\u5217\u3068\u7B49\u3057\u304F\u3042\u308A\u307E\u305B\u3093 +joinrowsetimpl.notdefined = \u5B9A\u7FA9\u3055\u308C\u305F\u7D50\u5408\u306E\u30BF\u30A4\u30D7\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +joinrowsetimpl.notsupported = \u3053\u306E\u30BF\u30A4\u30D7\u306E\u7D50\u5408\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +joinrowsetimpl.initerror = JoinRowSet\u521D\u671F\u5316\u30A8\u30E9\u30FC +joinrowsetimpl.genericerr = \u6C4E\u7528joinrowset\u306E\u521D\u671F\u30A8\u30E9\u30FC +joinrowsetimpl.emptyrowset = \u3053\u306EJoinRowSet\u306B\u7A7A\u306E\u884C\u30BB\u30C3\u30C8\u3092\u8FFD\u52A0\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 #JdbcRowSetImpl exceptions -jdbcrowsetimpl.invalstate = \u7121\u52b9\u306a\u72b6\u614b -jdbcrowsetimpl.connect = JdbcRowSet (connect) JNDI \u304c\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002 -jdbcrowsetimpl.paramtype = \u30d1\u30e9\u30e1\u30fc\u30bf\u578b\u3092\u63a8\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002 -jdbcrowsetimpl.matchcols = \u4e00\u81f4\u5217\u304c\u5217\u306e\u30bb\u30c3\u30c8\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -jdbcrowsetimpl.setmatchcols = \u4e00\u81f4\u5217\u3092\u53d6\u5f97\u3059\u308b\u524d\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -jdbcrowsetimpl.matchcols1 = \u4e00\u81f4\u5217\u306f 0 \u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -jdbcrowsetimpl.matchcols2 = \u4e00\u81f4\u5217\u306f\u7a7a\u3084 null \u6587\u5b57\u5217\u3067\u306f\u306a\u308a\u307e\u305b\u3093\u3002 -jdbcrowsetimpl.unsetmatch = \u8a2d\u5b9a\u89e3\u9664\u3055\u308c\u3066\u3044\u308b\u5217\u306f\u30bb\u30c3\u30c8\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -jdbcrowsetimpl.usecolname = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217\u540d\u3092\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002 -jdbcrowsetimpl.usecolid = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217 ID \u3092\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002 -jdbcrowsetimpl.resnotupd = ResultSet \u306f\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3002 -jdbcrowsetimpl.opnotysupp = \u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u64cd\u4f5c -jdbcrowsetimpl.featnotsupp = \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u6a5f\u80fd +jdbcrowsetimpl.invalstate = \u7121\u52B9\u306A\u72B6\u614B +jdbcrowsetimpl.connect = JdbcRowSet(connect): JNDI\u304C\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093 +jdbcrowsetimpl.paramtype = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093 +jdbcrowsetimpl.matchcols = \u4E00\u81F4\u5217\u304C\u5217\u306E\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +jdbcrowsetimpl.setmatchcols = \u4E00\u81F4\u5217\u3092\u53D6\u5F97\u3059\u308B\u524D\u306B\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044 +jdbcrowsetimpl.matchcols1 = \u4E00\u81F4\u5217\u306F0\u3088\u308A\u5927\u304D\u3044\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +jdbcrowsetimpl.matchcols2 = \u4E00\u81F4\u5217\u3092\u7A7A\u307E\u305F\u306Fnull\u6587\u5B57\u5217\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +jdbcrowsetimpl.unsetmatch = \u8A2D\u5B9A\u89E3\u9664\u3055\u308C\u3066\u3044\u308B\u5217\u306F\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +jdbcrowsetimpl.usecolname = unsetMatchColumn\u3078\u306E\u5F15\u6570\u3068\u3057\u3066\u5217\u540D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044 +jdbcrowsetimpl.usecolid = unsetMatchColumn\u3078\u306E\u5F15\u6570\u3068\u3057\u3066\u5217ID\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044 +jdbcrowsetimpl.resnotupd = ResultSet\u306F\u66F4\u65B0\u3067\u304D\u307E\u305B\u3093 +jdbcrowsetimpl.opnotysupp = \u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u64CD\u4F5C +jdbcrowsetimpl.featnotsupp = \u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u6A5F\u80FD #CachedRowSetReader exceptions -crsreader.connect = (JNDI) \u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002 -crsreader.paramtype = \u30d1\u30e9\u30e1\u30fc\u30bf\u578b\u3092\u63a8\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002 -crsreader.connecterr = RowSetReader \u306e\u5185\u90e8\u30a8\u30e9\u30fc: \u63a5\u7d9a\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u306a\u3057 -crsreader.datedetected = \u65e5\u4ed8\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002 -crsreader.caldetected = \u30ab\u30ec\u30f3\u30c0\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002 +crsreader.connect = (JNDI)\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093 +crsreader.paramtype = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093 +crsreader.connecterr = RowSetReader\u306E\u5185\u90E8\u30A8\u30E9\u30FC: \u63A5\u7D9A\u307E\u305F\u306F\u30B3\u30DE\u30F3\u30C9\u306A\u3057 +crsreader.datedetected = \u65E5\u4ED8\u3092\u691C\u51FA\u3057\u307E\u3057\u305F +crsreader.caldetected = \u30AB\u30EC\u30F3\u30C0\u3092\u691C\u51FA\u3057\u307E\u3057\u305F #CachedRowSetWriter exceptions -crswriter.connect = \u63a5\u7d9a\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002 -crswriter.tname = writeData \u304c\u8868\u540d\u3092\u5224\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002 -crswriter.params1 = params1 \u306e\u5024 : {0} -crswriter.params2 = params2 \u306e\u5024 : {0} -crswriter.conflictsno = \u540c\u671f\u4e2d\u306b\u7af6\u5408\u304c\u767a\u751f\u3057\u307e\u3059\u3002 +crswriter.connect = \u63A5\u7D9A\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093 +crswriter.tname = writeData\u304C\u8868\u540D\u3092\u5224\u5225\u3067\u304D\u307E\u305B\u3093 +crswriter.params1 = params1\u306E\u5024: {0} +crswriter.params2 = params2\u306E\u5024: {0} +crswriter.conflictsno = \u540C\u671F\u4E2D\u306B\u7AF6\u5408\u304C\u767A\u751F\u3057\u307E\u3059 #InsertRow exceptions -insertrow.novalue = \u5024\u306f\u633f\u5165\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +insertrow.novalue = \u5024\u306F\u633F\u5165\u3055\u308C\u3066\u3044\u307E\u305B\u3093 #SyncResolverImpl exceptions -syncrsimpl.indexval = \u7bc4\u56f2\u5916\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5024 -syncrsimpl.noconflict = \u3053\u306e\u5217\u306f\u7af6\u5408\u3057\u3066\u3044\u307e\u305b\u3093\u3002 -syncrsimpl.syncnotpos = \u540c\u671f\u3067\u304d\u307e\u305b\u3093\u3002 -syncrsimpl.valtores = \u89e3\u6c7a\u3055\u308c\u308b\u5024\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b cachedrowset \u306b\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +syncrsimpl.indexval = \u7BC4\u56F2\u5916\u306E\u7D22\u5F15\u5024 +syncrsimpl.noconflict = \u3053\u306E\u5217\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u305B\u3093 +syncrsimpl.syncnotpos = \u540C\u671F\u3067\u304D\u307E\u305B\u3093 +syncrsimpl.valtores = \u89E3\u6C7A\u3055\u308C\u308B\u5024\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u307E\u305F\u306Fcachedrowset\u306B\u3042\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 #WebRowSetXmlReader exception -wrsxmlreader.invalidcp = RowSet \u306e\u6700\u5f8c\u306b\u5230\u9054\u3057\u307e\u3057\u305f\u3002\u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u4f4d\u7f6e -wrsxmlreader.readxml = readXML : {0} -wrsxmlreader.parseerr = ** \u89e3\u6790\u30a8\u30e9\u30fc : {0} , \u884c : {1} , URI : {2} +wrsxmlreader.invalidcp = RowSet\u306E\u6700\u5F8C\u306B\u5230\u9054\u3057\u307E\u3057\u305F\u3002\u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E +wrsxmlreader.readxml = readXML: {0} +wrsxmlreader.parseerr = **\u89E3\u6790\u30A8\u30E9\u30FC: {0}\u3001\u884C: {1}\u3001URI: {2} #WebRowSetXmlWriter exceptions -wrsxmlwriter.ioex = IOException : {0} -wrsxmlwriter.sqlex = SQLException : {0} -wrsxmlwriter.failedwrite = \u5024\u306e\u66f8\u304d\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -wsrxmlwriter.notproper = \u9069\u5207\u306a\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +wrsxmlwriter.ioex = IOException: {0} +wrsxmlwriter.sqlex = SQLException: {0} +wrsxmlwriter.failedwrite = \u5024\u306E\u66F8\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F +wsrxmlwriter.notproper = \u9069\u5207\u306A\u30BF\u30A4\u30D7\u3067\u306F\u3042\u308A\u307E\u305B\u3093 #XmlReaderContentHandler exceptions -xmlrch.errmap = Map \u8a2d\u5b9a\u30a8\u30e9\u30fc : {0} -xmlrch.errmetadata = \u30e1\u30bf\u30c7\u30fc\u30bf\u8a2d\u5b9a\u30a8\u30e9\u30fc : {0} -xmlrch.errinsertval = \u5024\u306e\u633f\u5165\u30a8\u30e9\u30fc : {0} -xmlrch.errconstr = \u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0} -xmlrch.errdel = \u884c\u306e\u524a\u9664\u30a8\u30e9\u30fc : {0} -xmlrch.errinsdel = insdel \u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0} -xmlrch.errupdate = \u66f4\u65b0\u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0} -xmlrch.errupdrow = \u884c\u306e\u66f4\u65b0\u30a8\u30e9\u30fc : {0} -xmlrch.chars = \u6587\u5b57 : -xmlrch.badvalue = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30d7\u30ed\u30d1\u30c6\u30a3 -xmlrch.badvalue1 = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30e1\u30bf\u30c7\u30fc\u30bf -xmlrch.warning = ** \u8b66\u544a : {0} , \u884c : {1} , URI : {2} +xmlrch.errmap = Map\u8A2D\u5B9A\u30A8\u30E9\u30FC: {0} +xmlrch.errmetadata = \u30E1\u30BF\u30C7\u30FC\u30BF\u8A2D\u5B9A\u30A8\u30E9\u30FC: {0} +xmlrch.errinsertval = \u5024\u306E\u633F\u5165\u30A8\u30E9\u30FC: {0} +xmlrch.errconstr = \u884C\u306E\u751F\u6210\u30A8\u30E9\u30FC: {0} +xmlrch.errdel = \u884C\u306E\u524A\u9664\u30A8\u30E9\u30FC: {0} +xmlrch.errinsert = \u633F\u5165\u884C\u306E\u751F\u6210\u30A8\u30E9\u30FC: {0} +xmlrch.errinsdel = insdel\u884C\u306E\u751F\u6210\u30A8\u30E9\u30FC: {0} +xmlrch.errupdate = \u66F4\u65B0\u884C\u306E\u751F\u6210\u30A8\u30E9\u30FC: {0} +xmlrch.errupdrow = \u884C\u306E\u66F4\u65B0\u30A8\u30E9\u30FC: {0} +xmlrch.chars = \u6587\u5B57: +xmlrch.badvalue = \u4E0D\u6B63\u306A\u5024: null\u306B\u3067\u304D\u306A\u3044\u30D7\u30ED\u30D1\u30C6\u30A3 +xmlrch.badvalue1 = \u4E0D\u6B63\u306A\u5024: null\u306B\u3067\u304D\u306A\u3044\u30E1\u30BF\u30C7\u30FC\u30BF +xmlrch.warning = **\u8B66\u544A: {0}\u3001\u884C: {1}\u3001URI: {2} #RIOptimisticProvider Exceptions -riop.locking = \u30ed\u30c3\u30af\u306e\u5206\u985e\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +riop.locking = \u30ED\u30C3\u30AF\u306E\u5206\u985E\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 #RIXMLProvider exceptions -rixml.unsupp = RIXMLProvider \u3067\u306f\u672a\u30b5\u30dd\u30fc\u30c8 +rixml.unsupp = RIXMLProvider\u3067\u306F\u672A\u30B5\u30DD\u30FC\u30C8 diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties index 7901d9f840a..a730004c263 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties @@ -24,145 +24,147 @@ # # CacheRowSetImpl exceptions -cachedrowsetimpl.populate = \uc798\ubabb\ub41c ResultSet \uac1d\uccb4\uac00 \uc81c\uacf5\ub418\uc5b4 \uba54\uc18c\ub4dc\ub97c \ucc44\uc6b8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.invalidp = \uc798\ubabb\ub41c \uc9c0\uc18d\uc131 \uacf5\uae09\uc790\uac00 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.nullhash = CachedRowSetImpl \uc778\uc2a4\ud134\uc2a4\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uad6c\uc131\uc790\uc5d0 \ub110 Hashtable\uc774 \uc81c\uacf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.invalidop = \ud589\uc744 \uc0bd\uc785\ud558\ub294 \ub3d9\uc548 \uc798\ubabb\ub41c \uc791\uc5c5\uc744 \uc218\ud589\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.accfailed = acceptChanges\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.invalidcp = \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4. -cachedrowsetimpl.illegalop = \uc0bd\uc785\ub41c \ud589\uc774 \uc544\ub2cc \ud589\uc5d0\uc11c \uc798\ubabb\ub41c \uc791\uc5c5\uc744 \uc218\ud589\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.clonefail = \ubcf5\uc81c \uc2e4\ud328: {0} -cachedrowsetimpl.invalidcol = \uc798\ubabb\ub41c \uc5f4 \uc0c9\uc778\uc785\ub2c8\ub2e4. -cachedrowsetimpl.invalcolnm = \uc798\ubabb\ub41c \uc5f4 \uc774\ub984\uc785\ub2c8\ub2e4. -cachedrowsetimpl.boolfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getBoolen\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.bytefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getByte\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.shortfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getShort\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.intfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getInt\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.longfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getLong\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.floatfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getFloat\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.doublefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getDouble\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.dtypemismt = \ub370\uc774\ud130 \uc720\ud615\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.datefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getDate\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.timefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getLong\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.posupdate = \uc704\uce58 \uc9c0\uc815 \uc5c5\ub370\uc774\ud2b8\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.unableins = \uc778\uc2a4\ud134\uc2a4\ud654 \ud560 \uc218 \uc5c6\uc74c: {0} -cachedrowsetimpl.beforefirst = beforeFirst: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4. -cachedrowsetimpl.first = \ucc98\uc74c: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4. -cachedrowsetimpl.last = \ub9c8\uc9c0\ub9c9: TYPE_FORWARD_ONLY -cachedrowsetimpl.absolute = \uc808\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4. -cachedrowsetimpl.relative = \uc0c1\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4. -cachedrowsetimpl.asciistream = Ascii \uc2a4\ud2b8\ub9bc\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.binstream = \uc774\uc9c4 \uc2a4\ud2b8\ub9bc\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.failedins = \ud589\uc744 \uc0bd\uc785\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.updateins = \ud589\uc744 \uc0bd\uc785\ud558\ub294 \ub3d9\uc548 updateRow\uac00 \ud638\ucd9c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +cachedrowsetimpl.populate = \uBD80\uC801\uD569\uD55C ResultSet \uAC1D\uCCB4\uAC00 \uC81C\uACF5\uB418\uC5B4 \uBA54\uC18C\uB4DC\uB97C \uCC44\uC6B8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.invalidp = \uBD80\uC801\uD569\uD55C \uC9C0\uC18D\uC131 \uC81C\uACF5\uC790\uAC00 \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.nullhash = CachedRowSetImpl \uC778\uC2A4\uD134\uC2A4\uB97C \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC0DD\uC131\uC790\uC5D0 \uB110 Hashtable\uC774 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.invalidop = \uD589\uC744 \uC0BD\uC785\uD558\uB294 \uC911 \uBD80\uC801\uD569\uD55C \uC791\uC5C5\uC774 \uC218\uD589\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.accfailed = acceptChanges\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.invalidcp = \uCEE4\uC11C \uC704\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +cachedrowsetimpl.illegalop = \uC0BD\uC785\uB41C \uD589\uC774 \uC544\uB2CC \uD589\uC5D0\uC11C \uC798\uBABB\uB41C \uC791\uC5C5\uC774 \uC218\uD589\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.clonefail = \uBCF5\uC81C \uC2E4\uD328: {0} +cachedrowsetimpl.invalidcol = \uC5F4 \uC778\uB371\uC2A4\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +cachedrowsetimpl.invalcolnm = \uC5F4 \uC774\uB984\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +cachedrowsetimpl.boolfail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getBoolen\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.bytefail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getByte\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.shortfail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getShort\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.intfail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getInt\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.longfail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getLong\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.floatfail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getFloat\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.doublefail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getDouble\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.dtypemismt = \uB370\uC774\uD130 \uC720\uD615\uC774 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.datefail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getDate\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uBCC0\uD658\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.timefail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getTime\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uBCC0\uD658\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.posupdate = \uC704\uCE58\uAC00 \uC9C0\uC815\uB41C \uAC31\uC2E0\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.unableins = \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC74C: {0} +cachedrowsetimpl.beforefirst = beforeFirst: \uCEE4\uC11C \uC791\uC5C5\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +cachedrowsetimpl.first = \uCC98\uC74C: \uCEE4\uC11C \uC791\uC5C5\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +cachedrowsetimpl.last = \uB9C8\uC9C0\uB9C9: TYPE_FORWARD_ONLY +cachedrowsetimpl.absolute = \uC808\uB300: \uCEE4\uC11C \uC704\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +cachedrowsetimpl.relative = \uC0C1\uB300: \uCEE4\uC11C \uC704\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +cachedrowsetimpl.asciistream = ASCII \uC2A4\uD2B8\uB9BC\uC5D0 \uB300\uD55C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.binstream = \uC774\uC9C4 \uC2A4\uD2B8\uB9BC\uC5D0\uC11C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.failedins = \uD589 \uC0BD\uC785\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.updateins = \uD589\uC744 \uC0BD\uC785\uD558\uB294 \uC911 updateRow\uAC00 \uD638\uCD9C\uB418\uC5C8\uC2B5\uB2C8\uB2E4. cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY -cachedrowsetimpl.movetoins1 = moveToInsertRow: \uba54\ud0c0 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.movetoins2 = moveToInsertRow: \uc798\ubabb\ub41c \uc5f4 \uac1c\uc218\uc785\ub2c8\ub2e4. -cachedrowsetimpl.tablename = \ud14c\uc774\ube14 \uc774\ub984\uc740 \ub110\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.keycols = \uc798\ubabb\ub41c \ud0a4 \uc5f4\uc785\ub2c8\ub2e4. -cachedrowsetimpl.opnotsupp = \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc791\uc5c5\uc785\ub2c8\ub2e4. -cachedrowsetimpl.matchcols = \uc77c\uce58 \uc5f4\uc774 \uc124\uc815\ub41c \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.setmatchcols = \uc77c\uce58 \uc5f4\uc744 \uc124\uc815\ud55c \ub2e4\uc74c\uc5d0 \uac00\uc838\uc624\uc2ed\uc2dc\uc624. -cachedrowsetimpl.matchcols1 = \uc77c\uce58 \uc5f4\uc774 0\uac1c \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. -cachedrowsetimpl.matchcols2 = \uc77c\uce58 \uc5f4\uc740 \ube44\uc5b4 \uc788\uac70\ub098 \ub110 \ubb38\uc790\uc5f4\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. -cachedrowsetimpl.unsetmatch = \uc124\uc815 \ud574\uc81c\ud560 \uc5f4\uc774 \uc124\uc815\ub41c \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.unsetmatch1 = \uc5f4 \uc774\ub984\uc744 unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. -cachedrowsetimpl.unsetmatch2 = \uc5f4 ID\ub97c unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. -cachedrowsetimpl.numrows = \ud589 \uac1c\uc218\uac00 0\ubcf4\ub2e4 \uc791\uac70\ub098 \ubc18\uc785 \ud06c\uae30\ubcf4\ub2e4 \uc791\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.startpos = \uc2dc\uc791 \uc704\uce58\ub294 \uc74c\uc218\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.nextpage = \ud638\ucd9c\ud558\uae30 \uc804\uc5d0 \ub370\uc774\ud130\ub97c \ucc44\uc6b0\uc2ed\uc2dc\uc624. -cachedrowsetimpl.pagesize = \ud398\uc774\uc9c0 \ud06c\uae30\ub294 0\ubcf4\ub2e4 \uc791\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.pagesize1 = \ud398\uc774\uc9c0 \ud06c\uae30\ub294 maxRows\ubcf4\ub2e4 \ud074 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.fwdonly = ResultSet\ub294 \uc804\ub2ec \uc804\uc6a9\uc785\ub2c8\ub2e4. -cachedrowsetimpl.type = \uc720\ud615: {0} -cachedrowsetimpl.opnotysupp = \uc791\uc5c5\uc774 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c -cachedrowsetimpl.featnotsupp = \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c +cachedrowsetimpl.movetoins1 = moveToInsertRow: \uBA54\uD0C0 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.movetoins2 = moveToInsertRow: \uC5F4 \uC218\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +cachedrowsetimpl.tablename = \uD14C\uC774\uBE14 \uC774\uB984\uC740 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.keycols = \uD0A4 \uC5F4\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +cachedrowsetimpl.invalidcol = \uC5F4 \uC778\uB371\uC2A4\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +cachedrowsetimpl.opnotsupp = \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0\uC11C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC791\uC5C5\uC785\uB2C8\uB2E4. +cachedrowsetimpl.matchcols = \uC77C\uCE58 \uC5F4\uC774 \uC124\uC815\uB41C \uC5F4\uACFC \uB3D9\uC77C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.setmatchcols = \uC77C\uCE58 \uC5F4\uC744 \uC124\uC815\uD55C \uD6C4 \uAC00\uC838\uC624\uC2ED\uC2DC\uC624. +cachedrowsetimpl.matchcols1 = \uC77C\uCE58 \uC5F4\uC740 0\uAC1C \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4. +cachedrowsetimpl.matchcols2 = \uC77C\uCE58 \uC5F4\uC740 \uBE44\uC5B4 \uC788\uAC70\uB098 \uB110 \uBB38\uC790\uC5F4\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4. +cachedrowsetimpl.unsetmatch = \uC124\uC815\uC744 \uD574\uC81C\uD558\uB824\uB294 \uC5F4\uC774 \uC124\uC815\uB41C \uC5F4\uACFC \uB2E4\uB985\uB2C8\uB2E4. +cachedrowsetimpl.unsetmatch1 = \uC5F4 \uC774\uB984\uC744 unsetMatchColumn\uC758 \uC778\uC218\uB85C \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624. +cachedrowsetimpl.unsetmatch2 = \uC5F4 ID\uB97C unsetMatchColumn\uC758 \uC778\uC218\uB85C \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624. +cachedrowsetimpl.numrows = \uD589 \uC218\uAC00 0\uBCF4\uB2E4 \uC791\uAC70\uB098 \uC778\uCD9C \uD06C\uAE30\uBCF4\uB2E4 \uC791\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.startpos = \uC2DC\uC791 \uC704\uCE58\uB294 \uC74C\uC218\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.nextpage = \uD638\uCD9C\uD558\uAE30 \uC804\uC5D0 \uB370\uC774\uD130\uB97C \uCC44\uC6B0\uC2ED\uC2DC\uC624. +cachedrowsetimpl.pagesize = \uD398\uC774\uC9C0 \uD06C\uAE30\uB294 0\uBCF4\uB2E4 \uC791\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.pagesize1 = \uD398\uC774\uC9C0 \uD06C\uAE30\uB294 maxRows\uBCF4\uB2E4 \uD074 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.fwdonly = ResultSet\uB294 \uC804\uB2EC \uC804\uC6A9\uC785\uB2C8\uB2E4. +cachedrowsetimpl.type = \uC720\uD615: {0} +cachedrowsetimpl.opnotysupp = \uC791\uC5C5\uC774 \uC544\uC9C1 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +cachedrowsetimpl.featnotsupp = \uAE30\uB2A5\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. # WebRowSetImpl exceptions -webrowsetimpl.nullhash = WebRowSetImpl \uc778\uc2a4\ud134\uc2a4\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uad6c\uc131\uc790\uc5d0 \ub110 Hashtable\uc774 \uc81c\uacf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -webrowsetimpl.invalidwr = \uc798\ubabb\ub41c \uae30\ub85d\uae30\uc785\ub2c8\ub2e4. -webrowsetimpl.invalidrd = \uc798\ubabb\ub41c \ud310\ub3c5\uae30\uc785\ub2c8\ub2e4. +webrowsetimpl.nullhash = WebRowSetImpl \uC778\uC2A4\uD134\uC2A4\uB97C \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC0DD\uC131\uC790\uC5D0 \uB110 Hashtable\uC774 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +webrowsetimpl.invalidwr = \uAE30\uB85D \uC7A5\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +webrowsetimpl.invalidrd = \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = \uc0c1\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4. -filteredrowsetimpl.absolute = \uc808\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4. -filteredrowsetimpl.notallowed = \uc774 \uac12\uc740 \ud544\ud130\ub97c \ud1b5\uacfc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +filteredrowsetimpl.relative = \uC0C1\uB300: \uCEE4\uC11C \uC791\uC5C5\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +filteredrowsetimpl.absolute = \uC808\uB300: \uCEE4\uC11C \uC791\uC5C5\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +filteredrowsetimpl.notallowed = \uC774 \uAC12\uC740 \uD544\uD130\uB97C \uD1B5\uACFC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. #JoinRowSetImpl exceptions -joinrowsetimpl.notinstance = Rowset\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2d9\ub2c8\ub2e4. -joinrowsetimpl.matchnotset = \uacb0\ud569\ud560 \uc77c\uce58 \uc5f4\uc744 \uc124\uc815\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. -joinrowsetimpl.numnotequal = Rowset\uc758 \uc694\uc18c \uc218\uac00 \uc77c\uce58 \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -joinrowsetimpl.notdefined = \uc815\uc758\ub41c \uacb0\ud569 \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. -joinrowsetimpl.notsupported = \uc774 \uacb0\ud569 \uc720\ud615\uc740 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -joinrowsetimpl.initerror = JoinRowSet \ucd08\uae30\ud654 \uc624\ub958 -joinrowsetimpl.genericerr = \uc77c\ubc18 joinrowset \ucd08\uae30 \uc624\ub958 -joinrowsetimpl.emptyrowset = \ube48 rowset\uc744 \uc774 JoinRowSet\uc5d0 \ucd94\uac00\ud560 \uc218 \uc5c6\uc74c +joinrowsetimpl.notinstance = Rowset\uC758 \uC778\uC2A4\uD134\uC2A4\uAC00 \uC544\uB2D9\uB2C8\uB2E4. +joinrowsetimpl.matchnotset = \uC870\uC778\uD560 \uC77C\uCE58 \uC5F4\uC774 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. +joinrowsetimpl.numnotequal = Rowset\uC758 \uC694\uC18C \uC218\uAC00 \uC77C\uCE58 \uC5F4\uACFC \uAC19\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +joinrowsetimpl.notdefined = \uC815\uC758\uB41C \uC870\uC778 \uC720\uD615\uC774 \uC544\uB2D9\uB2C8\uB2E4. +joinrowsetimpl.notsupported = \uC774 \uC870\uC778 \uC720\uD615\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +joinrowsetimpl.initerror = JoinRowSet \uCD08\uAE30\uD654 \uC624\uB958 +joinrowsetimpl.genericerr = \uC77C\uBC18 joinrowset \uCD08\uAE30 \uC624\uB958 +joinrowsetimpl.emptyrowset = \uBE48 rowset\uB97C \uC774 JoinRowSet\uC5D0 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. #JdbcRowSetImpl exceptions -jdbcrowsetimpl.invalstate = \uc798\ubabb\ub41c \uc0c1\ud0dc\uc785\ub2c8\ub2e4. -jdbcrowsetimpl.connect = JdbcRowSet(\uc5f0\uacb0) JNDI\uac00 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -jdbcrowsetimpl.paramtype = \ub9e4\uac1c \ubcc0\uc218 \uc720\ud615\uc744 \ucd94\ub860\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -jdbcrowsetimpl.matchcols = \uc77c\uce58 \uc5f4\uc774 \uc124\uc815\ub41c \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -jdbcrowsetimpl.setmatchcols = \uc77c\uce58 \uc5f4\uc744 \uc124\uc815\ud55c \ub2e4\uc74c\uc5d0 \uac00\uc838\uc624\uc2ed\uc2dc\uc624. -jdbcrowsetimpl.matchcols1 = \uc77c\uce58 \uc5f4\uc740 0\uac1c \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. -jdbcrowsetimpl.matchcols2 = \uc77c\uce58 \uc5f4\uc740 \ub110 \ub610\ub294 \ube48 \ubb38\uc790\uc5f4\uc77c \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4. -jdbcrowsetimpl.unsetmatch = \uc124\uc815 \ud574\uc81c\ud560 \uc5f4\uc774 \uc124\uc815\ub41c \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -jdbcrowsetimpl.usecolname = \uc5f4 \uc774\ub984\uc744 unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. -jdbcrowsetimpl.usecolid = \uc5f4 ID\ub97c unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. -jdbcrowsetimpl.resnotupd = ResultSet\uc740 \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -jdbcrowsetimpl.opnotysupp = \uc791\uc5c5\uc774 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c -jdbcrowsetimpl.featnotsupp = \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c +jdbcrowsetimpl.invalstate = \uC0C1\uD0DC\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +jdbcrowsetimpl.connect = JdbcRowSet(\uC811\uC18D) JNDI\uAC00 \uC811\uC18D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +jdbcrowsetimpl.paramtype = \uB9E4\uAC1C\uBCC0\uC218 \uC720\uD615\uC744 \uCD94\uB860\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +jdbcrowsetimpl.matchcols = \uC77C\uCE58 \uC5F4\uC774 \uC124\uC815\uB41C \uC5F4\uACFC \uB3D9\uC77C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +jdbcrowsetimpl.setmatchcols = \uC77C\uCE58 \uC5F4\uC744 \uC124\uC815\uD55C \uD6C4 \uAC00\uC838\uC624\uC2ED\uC2DC\uC624. +jdbcrowsetimpl.matchcols1 = \uC77C\uCE58 \uC5F4\uC740 0\uAC1C \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4. +jdbcrowsetimpl.matchcols2 = \uC77C\uCE58 \uC5F4\uC740 \uB110 \uB610\uB294 \uBE48 \uBB38\uC790\uC5F4\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +jdbcrowsetimpl.unsetmatch = \uC124\uC815\uC744 \uD574\uC81C\uD558\uB824\uB294 \uC5F4\uC774 \uC124\uC815\uB41C \uC5F4\uACFC \uB2E4\uB985\uB2C8\uB2E4. +jdbcrowsetimpl.usecolname = \uC5F4 \uC774\uB984\uC744 unsetMatchColumn\uC758 \uC778\uC218\uB85C \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624. +jdbcrowsetimpl.usecolid = \uC5F4 ID\uB97C unsetMatchColumn\uC758 \uC778\uC218\uB85C \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624. +jdbcrowsetimpl.resnotupd = ResultSet\uB97C \uAC31\uC2E0\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +jdbcrowsetimpl.opnotysupp = \uC791\uC5C5\uC774 \uC544\uC9C1 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +jdbcrowsetimpl.featnotsupp = \uAE30\uB2A5\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. #CachedRowSetReader exceptions -crsreader.connect = (JNDI) \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -crsreader.paramtype = \ub9e4\uac1c \ubcc0\uc218 \uc720\ud615\uc744 \ucd94\ub860\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -crsreader.connecterr = RowSetReader\uc758 \ub0b4\ubd80 \uc624\ub958: \uc5f0\uacb0 \ub610\ub294 \uba85\ub839\uc774 \uc5c6\uc74c -crsreader.datedetected = \ub0a0\uc9dc\uac00 \uac10\uc9c0\ub428 -crsreader.caldetected = \ub2ec\ub825\uc774 \uac10\uc9c0\ub428 +crsreader.connect = (JNDI) \uC811\uC18D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +crsreader.paramtype = \uB9E4\uAC1C\uBCC0\uC218 \uC720\uD615\uC744 \uCD94\uB860\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +crsreader.connecterr = RowSetReader\uC5D0 \uB0B4\uBD80 \uC624\uB958 \uBC1C\uC0DD: \uC811\uC18D \uB610\uB294 \uBA85\uB839\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. +crsreader.datedetected = \uB0A0\uC9DC\uB97C \uAC10\uC9C0\uD568 +crsreader.caldetected = \uB2EC\uB825\uC744 \uAC10\uC9C0\uD568 #CachedRowSetWriter exceptions -crswriter.connect = \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -crswriter.tname = writeData\uc5d0\uc11c \ud14c\uc774\ube14 \uc774\ub984\uc744 \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -crswriter.params1 = params1\uc758 \uac12: {0} -crswriter.params2 = params2\uc758 \uac12: {0} -crswriter.conflictsno = \ub3d9\uae30\ud654\ud558\ub294 \ub3d9\uc548 \ucda9\ub3cc\ud568 +crswriter.connect = \uC811\uC18D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +crswriter.tname = writeData\uC5D0\uC11C \uD14C\uC774\uBE14 \uC774\uB984\uC744 \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +crswriter.params1 = params1\uC758 \uAC12: {0} +crswriter.params2 = params2\uC758 \uAC12: {0} +crswriter.conflictsno = \uB3D9\uAE30\uD654\uD558\uB294 \uC911 \uCDA9\uB3CC\uD568 #InsertRow exceptions -insertrow.novalue = \uac12\uc774 \uc0bd\uc785\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. +insertrow.novalue = \uAC12\uC774 \uC0BD\uC785\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. #SyncResolverImpl exceptions -syncrsimpl.indexval = \uc0c9\uc778 \uac12\uc774 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4. -syncrsimpl.noconflict = \uc774 \uc5f4\uc740 \ucda9\ub3cc\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -syncrsimpl.syncnotpos = \ub3d9\uae30\ud654\ub97c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -syncrsimpl.valtores = \ud655\uc778\ud560 \uac12\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub098 cachedrowset\uc5d0 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +syncrsimpl.indexval = \uC778\uB371\uC2A4 \uAC12\uC774 \uBC94\uC704\uB97C \uBC97\uC5B4\uB0AC\uC2B5\uB2C8\uB2E4. +syncrsimpl.noconflict = \uC774 \uC5F4\uC740 \uCDA9\uB3CC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +syncrsimpl.syncnotpos = \uB3D9\uAE30\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +syncrsimpl.valtores = \uBD84\uC11D\uD560 \uAC12\uC774 \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uB610\uB294 cachedrowset\uC5D0 \uC788\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. #WebRowSetXmlReader exception -wrsxmlreader.invalidcp = RowSet\uc758 \ub05d\uc5d0 \ub3c4\ub2ec\ud588\uc2b5\ub2c8\ub2e4. \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4. +wrsxmlreader.invalidcp = RowSet\uC758 \uB05D\uC5D0 \uB3C4\uB2EC\uD588\uC2B5\uB2C8\uB2E4. \uCEE4\uC11C \uC704\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. wrsxmlreader.readxml = readXML: {0} -wrsxmlreader.parseerr = ** \uad6c\ubb38 \ubd84\uc11d \uc624\ub958 : {0} , \ud589 : {1} , uri : {2} +wrsxmlreader.parseerr = ** \uAD6C\uBB38 \uBD84\uC11D \uC624\uB958: {0}, \uD589: {1}, URI: {2} #WebRowSetXmlWriter exceptions -wrsxmlwriter.ioex = IOException: {0} -wrsxmlwriter.sqlex = SQLException: {0} -wrsxmlwriter.failedwrite = \uac12\uc744 \uc4f0\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. -wsrxmlwriter.notproper = \uc62c\ubc14\ub978 \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +wrsxmlwriter.ioex = IOException : {0} +wrsxmlwriter.sqlex = SQLException : {0} +wrsxmlwriter.failedwrite = \uAC12 \uC4F0\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +wsrxmlwriter.notproper = \uC801\uC808\uD55C \uC720\uD615\uC774 \uC544\uB2D9\uB2C8\uB2E4. #XmlReaderContentHandler exceptions -xmlrch.errmap = \ub9e4\ud551\uc744 \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} -xmlrch.errmetadata = \uba54\ud0c0\ub370\uc774\ud130\ub97c \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} -xmlrch.errinsertval = \ub2e4\uc74c \uac12\uc744 \uc0bd\uc785\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd : {0} -xmlrch.errconstr = \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} -xmlrch.errdel = \ud589\uc744 \uc81c\uac70\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} -xmlrch.errinsdel = insdel \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} -xmlrch.errupdate = update \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} -xmlrch.errupdrow = \ub2e4\uc74c \ud589\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd : {0} -xmlrch.chars = \ubb38\uc790: -xmlrch.badvalue = \uc798\ubabb\ub41c \uac12; \ub110\uc77c \uc218 \uc5c6\ub294 \ub4f1\ub85d \uc815\ubcf4 -xmlrch.badvalue1 = \uc798\ubabb\ub41c \uac12; \ub110\uc77c \uc218 \uc5c6\ub294 \uba54\ud0c0\ub370\uc774\ud130 -xmlrch.warning = ** \uacbd\uace0 : {0} , \ud589 : {1} , uri : {2} +xmlrch.errmap = \uB9F5\uC744 \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0} +xmlrch.errmetadata = \uBA54\uD0C0 \uB370\uC774\uD130\uB97C \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0} +xmlrch.errinsertval = \uAC12\uC744 \uC0BD\uC785\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0} +xmlrch.errconstr = \uD589\uC744 \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0} +xmlrch.errdel = \uD589\uC744 \uC0AD\uC81C\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0} +xmlrch.errinsert = insert \uD589\uC744 \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0} +xmlrch.errinsdel = insdel \uD589\uC744 \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0} +xmlrch.errupdate = update \uD589\uC744 \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0} +xmlrch.errupdrow = \uD589\uC744 \uAC31\uC2E0\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0} +xmlrch.chars = \uBB38\uC790: +xmlrch.badvalue = \uC798\uBABB\uB41C \uAC12: \uB110\uC77C \uC218 \uC5C6\uB294 \uC18D\uC131\uC785\uB2C8\uB2E4. +xmlrch.badvalue1 = \uC798\uBABB\uB41C \uAC12: \uB110\uC77C \uC218 \uC5C6\uB294 \uBA54\uD0C0 \uB370\uC774\uD130\uC785\uB2C8\uB2E4. +xmlrch.warning = ** \uACBD\uACE0: {0}, \uD589: {1}, URI: {2} #RIOptimisticProvider Exceptions -riop.locking = \ub4f1\uae09 \uc7a0\uae08\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +riop.locking = \uBD84\uB958 \uC7A0\uAE08\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. #RIXMLProvider exceptions -rixml.unsupp = RIXMLProvider\uc5d0\uc11c \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +rixml.unsupp = RIXMLProvider\uC5D0\uC11C \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_pt_BR.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_pt_BR.properties index 4abf3f54ddb..32f6c296add 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_pt_BR.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_pt_BR.properties @@ -24,147 +24,147 @@ # # CacheRowSetImpl exceptions -cachedrowsetimpl.populate = Objeto ResultSet inv\u00e1lido fornecido para preencher o m\u00e9todo -cachedrowsetimpl.invalidp = Fornecedor de persist\u00eancias inv\u00e1lido gerado -cachedrowsetimpl.nullhash = N\u00e3o \u00e9 poss\u00edvel instanciar a inst\u00e2ncia CachedRowSetImpl. Hashtable nulo fornecido ao construtor -cachedrowsetimpl.invalidop = Opera\u00e7\u00e3o inv\u00e1lida durante a inser\u00e7\u00e3o de linha -cachedrowsetimpl.accfailed = acceptChanges falho -cachedrowsetimpl.invalidcp = Posi\u00e7\u00e3o inv\u00e1lida do cursor -cachedrowsetimpl.illegalop = Opera\u00e7\u00e3o ilegal em linha n\u00e3o inserida -cachedrowsetimpl.clonefail = Clone falho: {0} -cachedrowsetimpl.invalidcol = \u00cdndice de coluna inv\u00e1lido -cachedrowsetimpl.invalcolnm = Nome de coluna inv\u00e1lido -cachedrowsetimpl.boolfail = getBoolen falhou no valor ( {0} ) na coluna {1} -cachedrowsetimpl.bytefail = getByte falhou no valor ( {0} ) na coluna {1} -cachedrowsetimpl.shortfail = getShort falhou no valor ( {0} ) na coluna {1} -cachedrowsetimpl.intfail = getInt falhou no valor ( {0} ) na coluna {1} -cachedrowsetimpl.longfail = getLong falhou no valor ( {0} ) na coluna {1} -cachedrowsetimpl.floatfail = getFloat falhou no valor ( {0} ) na coluna {1} -cachedrowsetimpl.doublefail = getDouble falhou no valor ( {0} ) na coluna {1} -cachedrowsetimpl.dtypemismt = Tipo de dados incompat\u00edvel -cachedrowsetimpl.datefail = getDate falhou no valor ( {0} ) na coluna {1} sem convers\u00e3o dispon\u00edvel -cachedrowsetimpl.timefail = getTime falhou no valor ( {0} ) na coluna {1} sem convers\u00e3o dispon\u00edvel -cachedrowsetimpl.posupdate = Atualiza\u00e7\u00f5es posicionadas n\u00e3o suportadas -cachedrowsetimpl.unableins = N\u00e3o \u00e9 poss\u00edvel instanciar: {0} -cachedrowsetimpl.beforefirst = beforeFirst : posi\u00e7\u00e3o inv\u00e1lida do cursor -cachedrowsetimpl.first = First : opera\u00e7\u00e3o inv\u00e1lida do cursor +cachedrowsetimpl.populate = Objeto ResultSet inv\u00E1lido fornecido para preencher o m\u00E9todo +cachedrowsetimpl.invalidp = Fornecedor de persist\u00EAncias inv\u00E1lido gerado +cachedrowsetimpl.nullhash = N\u00E3o \u00E9 poss\u00EDvel instanciar a inst\u00E2ncia CachedRowSetImpl. Hashtable Nulo fornecido ao construtor +cachedrowsetimpl.invalidop = Opera\u00E7\u00E3o inv\u00E1lida durante a inser\u00E7\u00E3o de linha +cachedrowsetimpl.accfailed = Falha em acceptChanges +cachedrowsetimpl.invalidcp = Posi\u00E7\u00E3o inv\u00E1lida do cursor +cachedrowsetimpl.illegalop = Opera\u00E7\u00E3o inv\u00E1lida em linha n\u00E3o inserida +cachedrowsetimpl.clonefail = Falha ao clonar: {0} +cachedrowsetimpl.invalidcol = \u00CDndice de coluna inv\u00E1lido +cachedrowsetimpl.invalcolnm = Nome de coluna inv\u00E1lido +cachedrowsetimpl.boolfail = Falha em getBoolen no valor ( {0} ) na coluna {1} +cachedrowsetimpl.bytefail = Falha em getByte no valor ( {0} ) na coluna {1} +cachedrowsetimpl.shortfail = Falha em getShort no valor ( {0} ) na coluna {1} +cachedrowsetimpl.intfail = Falha em getInt no valor ( {0} ) na coluna {1} +cachedrowsetimpl.longfail = Falha em getLong no valor ( {0} ) na coluna {1} +cachedrowsetimpl.floatfail = Falha em getFloat no valor ( {0} ) na coluna {1} +cachedrowsetimpl.doublefail = Falha em getDouble no valor ( {0} ) na coluna {1} +cachedrowsetimpl.dtypemismt = Tipo de Dados Incompat\u00EDvel +cachedrowsetimpl.datefail = Falha em getDate no valor ( {0} ) na coluna {1} sem convers\u00E3o dispon\u00EDvel +cachedrowsetimpl.timefail = Falha em getTime no valor ( {0} ) na coluna {1} sem convers\u00E3o dispon\u00EDvel +cachedrowsetimpl.posupdate = Atualiza\u00E7\u00F5es posicionadas n\u00E3o suportadas +cachedrowsetimpl.unableins = N\u00E3o \u00E9 poss\u00EDvel instanciar : {0} +cachedrowsetimpl.beforefirst = beforeFirst : Opera\u00E7\u00E3o do cursor inv\u00E1lida +cachedrowsetimpl.first = First : Opera\u00E7\u00E3o inv\u00E1lida do cursor cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY -cachedrowsetimpl.absolute = absolute : posi\u00e7\u00e3o inv\u00e1lida do cursor -cachedrowsetimpl.relative = relative : posi\u00e7\u00e3o inv\u00e1lida do cursor -cachedrowsetimpl.asciistream = leitura falha do fluxo ascii -cachedrowsetimpl.binstream = leitura falha em fluxo bin\u00e1rio -cachedrowsetimpl.failedins = Falha ao inserir linha -cachedrowsetimpl.updateins = updateRow chamado durante a inser\u00e7\u00e3o de linha +cachedrowsetimpl.absolute = absolute : Posi\u00E7\u00E3o inv\u00E1lida do cursor +cachedrowsetimpl.relative = relative : Posi\u00E7\u00E3o inv\u00E1lida do cursor +cachedrowsetimpl.asciistream = falha na leitura do fluxo ascii +cachedrowsetimpl.binstream = falha na leitura do fluxo bin\u00E1rio +cachedrowsetimpl.failedins = Falha ao inserir a linha +cachedrowsetimpl.updateins = updateRow chamado durante a inser\u00E7\u00E3o de linha cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY cachedrowsetimpl.movetoins1 = moveToInsertRow : sem metadados -cachedrowsetimpl.movetoins2 = moveToInsertRow : n\u00famero de colunas inv\u00e1lido -cachedrowsetimpl.tablename = O nome da tabela n\u00e3o pode ser nulo -cachedrowsetimpl.keycols = Colunas de chaves inv\u00e1lidas -cachedrowsetimpl.invalidcol = \u00cdndice de coluna inv\u00e1lido -cachedrowsetimpl.opnotsupp = Opera\u00e7\u00e3o n\u00e3o suportada pelo banco de dados -cachedrowsetimpl.matchcols = As colunas correspondentes n\u00e3o s\u00e3o iguais \u00e0s colunas definidas -cachedrowsetimpl.setmatchcols = Definir colunas correspondentes antes de obt\u00ea-las +cachedrowsetimpl.movetoins2 = moveToInsertRow : n\u00FAmero de colunas inv\u00E1lido +cachedrowsetimpl.tablename = O nome da tabela n\u00E3o pode ser nulo +cachedrowsetimpl.keycols = Colunas de chaves inv\u00E1lidas +cachedrowsetimpl.invalidcol = \u00CDndice de coluna inv\u00E1lido +cachedrowsetimpl.opnotsupp = Opera\u00E7\u00E3o n\u00E3o suportada pelo Banco de Dados +cachedrowsetimpl.matchcols = As colunas correspondentes n\u00E3o s\u00E3o iguais \u00E0s colunas definidas +cachedrowsetimpl.setmatchcols = Definir Colunas correspondentes antes de obt\u00EA-las cachedrowsetimpl.matchcols1 = As colunas correspondentes devem ser maior do que 0 -cachedrowsetimpl.matchcols2 = As colunas correspondentes devem ser sequ\u00eancias vazias ou nulas -cachedrowsetimpl.unsetmatch = As colunas n\u00e3o definidas n\u00e3o s\u00e3o iguais \u00e0s colunas definidas +cachedrowsetimpl.matchcols2 = As colunas correspondentes devem ser strings vazias ou nulas +cachedrowsetimpl.unsetmatch = As colunas n\u00E3o definidas n\u00E3o s\u00E3o iguais \u00E0s colunas definidas cachedrowsetimpl.unsetmatch1 = Usar o nome da coluna como argumento para unsetMatchColumn cachedrowsetimpl.unsetmatch2 = Usar o ID da coluna como argumento para unsetMatchColumn -cachedrowsetimpl.numrows = O n\u00famero de linhas \u00e9 menor do que zero ou menor do que o tamanho obtido -cachedrowsetimpl.startpos = A posi\u00e7\u00e3o de in\u00edcio n\u00e3o pode ser negativa +cachedrowsetimpl.numrows = O n\u00FAmero de linhas \u00E9 menor do que zero ou menor do que o tamanho obtido +cachedrowsetimpl.startpos = A posi\u00E7\u00E3o de in\u00EDcio n\u00E3o pode ser negativa cachedrowsetimpl.nextpage = Preencher dados antes de chamar -cachedrowsetimpl.pagesize = O tamanho da p\u00e1gina n\u00e3o pode ser menor do que zero -cachedrowsetimpl.pagesize1 = O tamanho da p\u00e1gina n\u00e3o pode ser maior do que maxRows -cachedrowsetimpl.fwdonly = ResultSet \u00e9 somente para frente -cachedrowsetimpl.type = O tipo \u00e9 : {0} -cachedrowsetimpl.opnotysupp = Opera\u00e7\u00e3o ainda n\u00e3o suportada -cachedrowsetimpl.featnotsupp = Recurso n\u00e3o suportado +cachedrowsetimpl.pagesize = O tamanho da p\u00E1gina n\u00E3o pode ser menor do que zero +cachedrowsetimpl.pagesize1 = O tamanho da p\u00E1gina n\u00E3o pode ser maior do que maxRows +cachedrowsetimpl.fwdonly = ResultSet \u00E9 somente para frente +cachedrowsetimpl.type = O tipo \u00E9 : {0} +cachedrowsetimpl.opnotysupp = Opera\u00E7\u00E3o ainda n\u00E3o suportada +cachedrowsetimpl.featnotsupp = Recurso n\u00E3o suportado # WebRowSetImpl exceptions -webrowsetimpl.nullhash = N\u00e3o \u00e9 poss\u00edvel instanciar a inst\u00e2ncia WebRowSetImpl. Hashtable nulo fornecido ao construtor -webrowsetimpl.invalidwr = Gravador inv\u00e1lido -webrowsetimpl.invalidrd = Leitor inv\u00e1lido +webrowsetimpl.nullhash = N\u00E3o \u00E9 poss\u00EDvel instanciar a inst\u00E2ncia WebRowSetImpl. Hashtable nulo fornecido ao construtor +webrowsetimpl.invalidwr = Gravador inv\u00E1lido +webrowsetimpl.invalidrd = Leitor inv\u00E1lido #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative : opera\u00e7\u00e3o inv\u00e1lida do cursor -filteredrowsetimpl.absolute = absolute : opera\u00e7\u00e3o inv\u00e1lida do cursor -filteredrowsetimpl.notallowed = Este valor n\u00e3o \u00e9 permitido no filtro +filteredrowsetimpl.relative = relative : Opera\u00E7\u00E3o inv\u00E1lida do cursor +filteredrowsetimpl.absolute = absolute : Opera\u00E7\u00E3o inv\u00E1lida do cursor +filteredrowsetimpl.notallowed = Este valor n\u00E3o \u00E9 permitido no filtro #JoinRowSetImpl exceptions -joinrowsetimpl.notinstance = N\u00e3o \u00e9 uma inst\u00e2ncia do conjunto de linhas -joinrowsetimpl.matchnotset = Coluna correspondente n\u00e3o definida para jun\u00e7\u00e3o -joinrowsetimpl.numnotequal = N\u00famero de elementos no conjunto de linhas diferente da coluna correspondente -joinrowsetimpl.notdefined = N\u00e3o \u00e9 um tipo definido de jun\u00e7\u00e3o -joinrowsetimpl.notsupported = Este tipo de jun\u00e7\u00e3o n\u00e3o \u00e9 suportada -joinrowsetimpl.initerror = Erro de inicializa\u00e7\u00e3o do JoinRowSet -joinrowsetimpl.genericerr = Erro inicial de joinrowset gen\u00e9rico -joinrowsetimpl.emptyrowset = O conjunto de linha vazio n\u00e3o pode ser adicionado a este JoinRowSet +joinrowsetimpl.notinstance = N\u00E3o \u00E9 uma inst\u00E2ncia do conjunto de linhas +joinrowsetimpl.matchnotset = Coluna Correspondente n\u00E3o definida para jun\u00E7\u00E3o +joinrowsetimpl.numnotequal = N\u00FAmero de elementos no conjunto de linhas diferente da coluna correspondente +joinrowsetimpl.notdefined = N\u00E3o \u00E9 um tipo definido de jun\u00E7\u00E3o +joinrowsetimpl.notsupported = Este tipo de jun\u00E7\u00E3o n\u00E3o \u00E9 suportada +joinrowsetimpl.initerror = Erro de inicializa\u00E7\u00E3o do JoinRowSet +joinrowsetimpl.genericerr = Erro inicial de joinrowset gen\u00E9rico +joinrowsetimpl.emptyrowset = O conjunto de linha vazio n\u00E3o pode ser adicionado a este JoinRowSet #JdbcRowSetImpl exceptions -jdbcrowsetimpl.invalstate = Estado inv\u00e1lido -jdbcrowsetimpl.connect = N\u00e3o \u00e9 poss\u00edvel conectar JdbcRowSet (connect) a JNDI -jdbcrowsetimpl.paramtype = N\u00e3o \u00e9 poss\u00edvel deduzir o tipo de par\u00e2metro -jdbcrowsetimpl.matchcols = As colunas correspondentes n\u00e3o s\u00e3o iguais \u00e0s colunas definidas -jdbcrowsetimpl.setmatchcols = Definir as colunas correspondentes antes de obt\u00ea-las +jdbcrowsetimpl.invalstate = Estado inv\u00E1lido +jdbcrowsetimpl.connect = N\u00E3o \u00E9 poss\u00EDvel conectar JdbcRowSet (connect) a JNDI +jdbcrowsetimpl.paramtype = N\u00E3o \u00E9 poss\u00EDvel deduzir o tipo de par\u00E2metro +jdbcrowsetimpl.matchcols = As Colunas Correspondentes n\u00E3o s\u00E3o iguais \u00E0s colunas definidas +jdbcrowsetimpl.setmatchcols = Definir as colunas correspondentes antes de obt\u00EA-las jdbcrowsetimpl.matchcols1 = As colunas correspondentes devem ser maior do que 0 -jdbcrowsetimpl.matchcols2 = As colunas correspondentes n\u00e3o podem ser sequ\u00eancias vazias ou nulas -jdbcrowsetimpl.unsetmatch = As colunas n\u00e3o definidas n\u00e3o s\u00e3o iguais \u00e0s colunas definidas +jdbcrowsetimpl.matchcols2 = As colunas correspondentes n\u00E3o podem ser strings vazias ou nulas +jdbcrowsetimpl.unsetmatch = As colunas n\u00E3o definidas n\u00E3o s\u00E3o iguais \u00E0s colunas definidas jdbcrowsetimpl.usecolname = Usar o nome da coluna como argumento para unsetMatchColumn jdbcrowsetimpl.usecolid = Usar o ID da coluna como argumento para unsetMatchColumn -jdbcrowsetimpl.resnotupd = ResultSet n\u00e3o \u00e9 atualiz\u00e1vel -jdbcrowsetimpl.opnotysupp = Opera\u00e7\u00e3o ainda n\u00e3o suportada -jdbcrowsetimpl.featnotsupp = Recurso n\u00e3o suportado +jdbcrowsetimpl.resnotupd = ResultSet n\u00E3o \u00E9 atualiz\u00E1vel +jdbcrowsetimpl.opnotysupp = Opera\u00E7\u00E3o ainda n\u00E3o suportada +jdbcrowsetimpl.featnotsupp = Recurso n\u00E3o suportado #CachedRowSetReader exceptions -crsreader.connect = (JNDI) N\u00e3o \u00e9 poss\u00edvel conectar -crsreader.paramtype = N\u00e3o \u00e9 poss\u00edvel deduzir o tipo de par\u00e2metro -crsreader.connecterr = Erro interno no RowSetReader: sem conex\u00e3o ou comando -crsreader.datedetected = Data detectada -crsreader.caldetected = Calend\u00e1rio detectado +crsreader.connect = (JNDI) N\u00E3o \u00E9 poss\u00EDvel conectar +crsreader.paramtype = N\u00E3o \u00E9 poss\u00EDvel deduzir o tipo de par\u00E2metro +crsreader.connecterr = Erro Interno no RowSetReader: sem conex\u00E3o ou comando +crsreader.datedetected = Data Detectada +crsreader.caldetected = Calend\u00E1rio Detectado #CachedRowSetWriter exceptions -crswriter.connect = N\u00e3o \u00e9 poss\u00edvel obter a conex\u00e3o -crswriter.tname = writeData n\u00e3o pode determinar o nome da tabela +crswriter.connect = N\u00E3o \u00E9 poss\u00EDvel obter a conex\u00E3o +crswriter.tname = writeData n\u00E3o pode determinar o nome da tabela crswriter.params1 = Valor de params1 : {0} crswriter.params2 = Valor de params2 : {0} -crswriter.conflictsno = conflitos durante a sincroniza\u00e7\u00e3o +crswriter.conflictsno = conflitos durante a sincroniza\u00E7\u00E3o #InsertRow exceptions insertrow.novalue = Nenhum valor foi inserido #SyncResolverImpl exceptions -syncrsimpl.indexval = Valor de \u00edndice fora do intervalo -syncrsimpl.noconflict = Est\u00e1 coluna n\u00e3o est\u00e1 em conflito -syncrsimpl.syncnotpos = A sincroniza\u00e7\u00e3o n\u00e3o \u00e9 poss\u00edvel -syncrsimpl.valtores = O valor a ser decidido pode estar no banco de dados ou no conjunto de linhas armazenado em cache +syncrsimpl.indexval = Valor de \u00EDndice fora da faixa +syncrsimpl.noconflict = Est\u00E1 coluna n\u00E3o est\u00E1 em conflito +syncrsimpl.syncnotpos = A sincroniza\u00E7\u00E3o n\u00E3o \u00E9 poss\u00EDvel +syncrsimpl.valtores = O valor a ser decidido pode estar no banco de dados ou no conjunto de linhas armazenado no cache #WebRowSetXmlReader exception -wrsxmlreader.invalidcp = Fim de RowSet atingido. Posi\u00e7\u00e3o inv\u00e1lida do cursor +wrsxmlreader.invalidcp = Fim de RowSet atingido. Posi\u00E7\u00E3o inv\u00E1lida do cursor wrsxmlreader.readxml = readXML : {0} -wrsxmlreader.parseerr = ** Analisando erro : {0} , linha : {1} , uri : {2} +wrsxmlreader.parseerr = ** Erro de Parse : {0} , linha : {1} , uri : {2} #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException : {0} wrsxmlwriter.sqlex = SQLException : {0} -wrsxmlwriter.failedwrite = Falha ao gravar valor -wsrxmlwriter.notproper = N\u00e3o \u00e9 um tipo adequado +wrsxmlwriter.failedwrite = Falha ao gravar o valor +wsrxmlwriter.notproper = N\u00E3o \u00E9 um tipo adequado #XmlReaderContentHandler exceptions -xmlrch.errmap = Erro ao definir mapa : {0} +xmlrch.errmap = Erro ao definir o Mapa : {0} xmlrch.errmetadata = Erro ao definir metadados : {0} xmlrch.errinsertval = Erro ao inserir valores : {0} -xmlrch.errconstr = Erro ao construir linha : {0} -xmlrch.errdel = Erro ao excluir linha : {0} -xmlrch.errinsert = Erro ao construir linha de inser\u00e7\u00e3o : {0} -xmlrch.errinsdel = Erro ao construir linha insdel : {0} -xmlrch.errupdate = Erro ao construir linha de atualiza\u00e7\u00e3o : {0} -xmlrch.errupdrow = Erro ao atualizar linha : {0} +xmlrch.errconstr = Erro ao construir a linha : {0} +xmlrch.errdel = Erro ao deletar a linha : {0} +xmlrch.errinsert = Erro ao construir a linha de inser\u00E7\u00E3o : {0} +xmlrch.errinsdel = Erro ao construir a linha insdel : {0} +xmlrch.errupdate = Erro ao construir a linha de atualiza\u00E7\u00E3o : {0} +xmlrch.errupdrow = Erro ao atualizar a linha : {0} xmlrch.chars = caracteres : -xmlrch.badvalue = Valor incorreto ; propriedade n\u00e3o anul\u00e1vel -xmlrch.badvalue1 = Valor incorreto ; metadado n\u00e3o anul\u00e1vel -xmlrch.warning = ** Aviso : {0} , linha : {1} , uri : {2} +xmlrch.badvalue = Valor incorreto ; propriedade n\u00E3o anul\u00E1vel +xmlrch.badvalue1 = Valor incorreto ; metadado n\u00E3o anul\u00E1vel +xmlrch.warning = ** Advert\u00EAncia : {0} , linha : {1} , uri : {2} #RIOptimisticProvider Exceptions -riop.locking = O bloqueio de classifica\u00e7\u00e3o n\u00e3o \u00e9 suportado +riop.locking = O bloqueio de classifica\u00E7\u00E3o n\u00E3o \u00E9 suportado #RIXMLProvider exceptions -rixml.unsupp = N\u00e3o suportado com RIXMLProvider +rixml.unsupp = N\u00E3o suportado com RIXMLProvider diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties index 429c438f440..089dc281caf 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties @@ -25,144 +25,146 @@ # CacheRowSetImpl exceptions cachedrowsetimpl.populate = Ifyllningsmetoden fick ett ogiltigt ResultSet-objekt -cachedrowsetimpl.invalidp = En ogiltig best\u00e4ndig leverant\u00f6r genererades -cachedrowsetimpl.nullhash = Det g\u00e5r inte att skapa instansen CachedRowSetImpl. Tom hashtabell skickades till konstrukt\u00f6r -cachedrowsetimpl.invalidop = En ogiltig \u00e5tg\u00e4rd utf\u00f6rdes i infogningsraden -cachedrowsetimpl.accfailed = acceptChanges misslyckades -cachedrowsetimpl.invalidcp = Mark\u00f6rpositionen \u00e4r ogiltig -cachedrowsetimpl.illegalop = En ogiltig \u00e5tg\u00e4rd utf\u00f6rdes p\u00e5 en icke infogad rad -cachedrowsetimpl.clonefail = Kloningen misslyckades: {0} -cachedrowsetimpl.invalidcol = Kolumnindexet \u00e4r ogiltigt -cachedrowsetimpl.invalcolnm = Kolumnnamnet \u00e4r ogiltigt -cachedrowsetimpl.boolfail = getBoolen misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1} -cachedrowsetimpl.bytefail = getByte misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1} -cachedrowsetimpl.shortfail = getShort misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1} -cachedrowsetimpl.intfail = getInt misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1} -cachedrowsetimpl.longfail = getLong misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1} -cachedrowsetimpl.floatfail = getFloat misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1} -cachedrowsetimpl.doublefail = getDouble misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1} +cachedrowsetimpl.invalidp = En ogiltig best\u00E4ndig leverant\u00F6r genererades +cachedrowsetimpl.nullhash = Kan inte instansiera CachedRowSetImpl. Null-hashtabell skickades till konstruktor +cachedrowsetimpl.invalidop = En ogiltig \u00E5tg\u00E4rd utf\u00F6rdes p\u00E5 infogad rad +cachedrowsetimpl.accfailed = acceptChanges utf\u00F6rdes inte +cachedrowsetimpl.invalidcp = Mark\u00F6rpositionen \u00E4r ogiltig +cachedrowsetimpl.illegalop = En otill\u00E5ten \u00E5tg\u00E4rd utf\u00F6rdes p\u00E5 en icke infogad rad +cachedrowsetimpl.clonefail = Kloningen utf\u00F6rdes inte: {0} +cachedrowsetimpl.invalidcol = Kolumnindexet \u00E4r ogiltigt +cachedrowsetimpl.invalcolnm = Kolumnnamnet \u00E4r ogiltigt +cachedrowsetimpl.boolfail = getBoolen utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1} +cachedrowsetimpl.bytefail = getByte utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1} +cachedrowsetimpl.shortfail = getShort utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1} +cachedrowsetimpl.intfail = getInt utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1} +cachedrowsetimpl.longfail = getLong utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1} +cachedrowsetimpl.floatfail = getFloat utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1} +cachedrowsetimpl.doublefail = getDouble utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1} cachedrowsetimpl.dtypemismt = Inkompatibel datatyp -cachedrowsetimpl.datefail = getDate misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}, ingen konvertering tillg\u00e4nglig -cachedrowsetimpl.timefail = getTime misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}, ingen konvertering tillg\u00e4nglig -cachedrowsetimpl.posupdate = Det finns inte st\u00f6d f\u00f6r positionerad uppdatering -cachedrowsetimpl.unableins = Det g\u00e5r inte att skapa {0} -cachedrowsetimpl.beforefirst = beforeFirst: Ogiltig mark\u00f6r\u00e5tg\u00e4rd -cachedrowsetimpl.first = First: Ogiltig mark\u00f6r\u00e5tg\u00e4rd +cachedrowsetimpl.datefail = getDate utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}, ingen konvertering tillg\u00E4nglig +cachedrowsetimpl.timefail = getTime utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}, ingen konvertering tillg\u00E4nglig +cachedrowsetimpl.posupdate = Det finns inte st\u00F6d f\u00F6r positionerad uppdatering +cachedrowsetimpl.unableins = Kan inte instansiera {0} +cachedrowsetimpl.beforefirst = beforeFirst: Ogiltig mark\u00F6r\u00E5tg\u00E4rd +cachedrowsetimpl.first = First: Ogiltig mark\u00F6r\u00E5tg\u00E4rd cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY -cachedrowsetimpl.absolute = absolute: Mark\u00f6rpositionen \u00e4r ogiltig -cachedrowsetimpl.relative = relative: Mark\u00f6rpositionen \u00e4r ogiltig -cachedrowsetimpl.asciistream = det gick inte att l\u00e4sa ASCII-str\u00f6mmen -cachedrowsetimpl.binstream = det gick inte l\u00e4sa den bin\u00e4ra str\u00f6mmen -cachedrowsetimpl.failedins = Fel vid infogningsrad -cachedrowsetimpl.updateins = updateRow anropade vid infogningsrad +cachedrowsetimpl.absolute = absolute: Mark\u00F6rpositionen \u00E4r ogiltig +cachedrowsetimpl.relative = relative: Mark\u00F6rpositionen \u00E4r ogiltig +cachedrowsetimpl.asciistream = kunde inte l\u00E4sa ASCII-str\u00F6mmen +cachedrowsetimpl.binstream = kunde inte l\u00E4sa den bin\u00E4ra str\u00F6mmen +cachedrowsetimpl.failedins = Kunde inte infoga rad +cachedrowsetimpl.updateins = updateRow anropades fr\u00E5n infogad rad cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY cachedrowsetimpl.movetoins1 = moveToInsertRow: inga metadata cachedrowsetimpl.movetoins2 = moveToInsertRow: ogiltigt antal kolumner -cachedrowsetimpl.tablename = Tabellnamnet kan inte vara tomt +cachedrowsetimpl.tablename = Tabellnamnet kan inte vara null cachedrowsetimpl.keycols = Ogiltiga nyckelkolumner -cachedrowsetimpl.opnotsupp = Databasen har inte st\u00f6d f\u00f6r denna \u00e5tg\u00e4rd -cachedrowsetimpl.matchcols = Matchningskolumnerna \u00e4r inte samma som de som st\u00e4llts in -cachedrowsetimpl.setmatchcols = St\u00e4ll in matchningskolumnerna innan du h\u00e4mtar dem -cachedrowsetimpl.matchcols1 = Matchningskolumnerna m\u00e5ste vara st\u00f6rre \u00e4n 0 -cachedrowsetimpl.matchcols2 = Matchningskolumnerna m\u00e5ste vara tomma eller en nollstr\u00e4ng -cachedrowsetimpl.unsetmatch = Kolumnerna som \u00e5terst\u00e4lls \u00e4r inte samma som de som st\u00e4llts in -cachedrowsetimpl.unsetmatch1 = Anv\u00e4nd kolumnnamn som argument f\u00f6r unsetMatchColumn -cachedrowsetimpl.unsetmatch2 = Anv\u00e4nd kolumnn-id som argument f\u00f6r unsetMatchColumn -cachedrowsetimpl.numrows = Antalet rader understiger noll eller \u00e4r mindre \u00e4n h\u00e4mtningsstorleken -cachedrowsetimpl.startpos = Startpositionen f\u00e5r inte vara negativ +cachedrowsetimpl.invalidcol = Kolumnindexet \u00E4r ogiltigt +cachedrowsetimpl.opnotsupp = Databasen har inte st\u00F6d f\u00F6r denna \u00E5tg\u00E4rd +cachedrowsetimpl.matchcols = Matchningskolumnerna \u00E4r inte samma som de som st\u00E4llts in +cachedrowsetimpl.setmatchcols = St\u00E4ll in matchningskolumnerna innan du h\u00E4mtar dem +cachedrowsetimpl.matchcols1 = Matchningskolumnerna m\u00E5ste vara st\u00F6rre \u00E4n 0 +cachedrowsetimpl.matchcols2 = Matchningskolumnerna m\u00E5ste vara tomma eller en null-str\u00E4ng +cachedrowsetimpl.unsetmatch = Kolumnerna som \u00E5terst\u00E4lls \u00E4r inte samma som de som st\u00E4llts in +cachedrowsetimpl.unsetmatch1 = Anv\u00E4nd kolumnnamn som argument f\u00F6r unsetMatchColumn +cachedrowsetimpl.unsetmatch2 = Anv\u00E4nd kolumn-id som argument f\u00F6r unsetMatchColumn +cachedrowsetimpl.numrows = Antalet rader understiger noll eller \u00E4r mindre \u00E4n h\u00E4mtningsstorleken +cachedrowsetimpl.startpos = Startpositionen f\u00E5r inte vara negativ cachedrowsetimpl.nextpage = Fyll i data innan anrop -cachedrowsetimpl.pagesize = Sidstorleken f\u00e5r inte understiga noll -cachedrowsetimpl.pagesize1 = Sidstorleken f\u00e5r inte \u00f6verstiga maxRows -cachedrowsetimpl.fwdonly = ResultSet kan endast g\u00e5 fram\u00e5t +cachedrowsetimpl.pagesize = Sidstorleken f\u00E5r inte understiga noll +cachedrowsetimpl.pagesize1 = Sidstorleken f\u00E5r inte \u00F6verstiga maxRows +cachedrowsetimpl.fwdonly = ResultSet kan endast g\u00E5 fram\u00E5t cachedrowsetimpl.type = Typ: {0} -cachedrowsetimpl.opnotysupp = Det finns \u00e4nnu inget st\u00f6d f\u00f6r denna \u00e5tg\u00e4rd -cachedrowsetimpl.featnotsupp = Det finns inget st\u00f6d f\u00f6r denna funktion +cachedrowsetimpl.opnotysupp = Det finns \u00E4nnu inget st\u00F6d f\u00F6r denna \u00E5tg\u00E4rd +cachedrowsetimpl.featnotsupp = Det finns inget st\u00F6d f\u00F6r denna funktion # WebRowSetImpl exceptions -webrowsetimpl.nullhash = Det g\u00e5r inte att skapa instansen WebRowSetImpl. Tom hashtabell skickades till konstrukt\u00f6r. -webrowsetimpl.invalidwr = Ogiltig f\u00f6rfattare -webrowsetimpl.invalidrd = Ogiltig l\u00e4sare +webrowsetimpl.nullhash = Kan inte instansiera WebRowSetImpl. Null-hashtabell skickades till konstruktor. +webrowsetimpl.invalidwr = Ogiltig f\u00F6rfattare +webrowsetimpl.invalidrd = Ogiltig l\u00E4sare #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative: Ogiltig mark\u00f6r\u00e5tg\u00e4rd -filteredrowsetimpl.absolute = absolute: Ogiltig mark\u00f6r\u00e5tg\u00e4rd -filteredrowsetimpl.notallowed = Detta v\u00e4rde kommer att filtreras bort +filteredrowsetimpl.relative = relative: Ogiltig mark\u00F6r\u00E5tg\u00E4rd +filteredrowsetimpl.absolute = absolute: Ogiltig mark\u00F6r\u00E5tg\u00E4rd +filteredrowsetimpl.notallowed = Detta v\u00E4rde kommer att filtreras bort #JoinRowSetImpl exceptions -joinrowsetimpl.notinstance = Detta \u00e4r inte en instans av rowset -joinrowsetimpl.matchnotset = Matchningskolumnen \u00e4r inte inst\u00e4lld p\u00e5 koppling -joinrowsetimpl.numnotequal = Antalet element i RowSet \u00e4r inte lika med matchningskolumnens -joinrowsetimpl.notdefined = Detta \u00e4r inte n\u00e5gon definierad kopplingstyp -joinrowsetimpl.notsupported = Det finns inget st\u00f6d f\u00f6r denna kopplingstyp -joinrowsetimpl.initerror = Initieringsfel f\u00f6r JoinRowSet -joinrowsetimpl.genericerr = Allm\u00e4nt initieringsfel f\u00f6r JoinRowSet -joinrowsetimpl.emptyrowset = Tomma radupps\u00e4ttningar kan inte l\u00e4ggas till i denna JoinRowSet +joinrowsetimpl.notinstance = Detta \u00E4r inte en instans av radupps\u00E4ttning +joinrowsetimpl.matchnotset = Matchningskolumnen \u00E4r inte inst\u00E4lld p\u00E5 koppling +joinrowsetimpl.numnotequal = Antal objekt i radupps\u00E4ttning st\u00E4mmer inte med matchningskolumnens +joinrowsetimpl.notdefined = Detta \u00E4r inte n\u00E5gon definierad kopplingstyp +joinrowsetimpl.notsupported = Det finns inget st\u00F6d f\u00F6r denna kopplingstyp +joinrowsetimpl.initerror = Initieringsfel f\u00F6r JoinRowSet +joinrowsetimpl.genericerr = Allm\u00E4nt initieringsfel f\u00F6r JoinRowSet +joinrowsetimpl.emptyrowset = Tomma radupps\u00E4ttningar kan inte l\u00E4ggas till i denna JoinRowSet #JdbcRowSetImpl exceptions jdbcrowsetimpl.invalstate = Ogiltig status jdbcrowsetimpl.connect = JdbcRowSet (anslut) JNDI kan inte anslutas -jdbcrowsetimpl.paramtype = Det g\u00e5r inte att fastst\u00e4lla parametertypen -jdbcrowsetimpl.matchcols = Matchningskolumnerna \u00e4r inte samma som de som st\u00e4llts in -jdbcrowsetimpl.setmatchcols = St\u00e4ll in matchningskolumnerna innan du h\u00e4mtar dem -jdbcrowsetimpl.matchcols1 = Matchningskolumnerna m\u00e5ste vara st\u00f6rre \u00e4n 0 -jdbcrowsetimpl.matchcols2 = Matchningskolumnerna kan inte vara en nollstr\u00e4ng eller tomma -jdbcrowsetimpl.unsetmatch = Kolumnerna som \u00e5terst\u00e4lls \u00e4r inte samma som de som st\u00e4llts in -jdbcrowsetimpl.usecolname = Anv\u00e4nd kolumnnamn som argument f\u00f6r unsetMatchColumn -jdbcrowsetimpl.usecolid = Anv\u00e4nd kolumnn-id som argument f\u00f6r unsetMatchColumn -jdbcrowsetimpl.resnotupd = ResultSet \u00e4r inte uppdateringsbart -jdbcrowsetimpl.opnotysupp = Det finns \u00e4nnu inget st\u00f6d f\u00f6r denna \u00e5tg\u00e4rd -jdbcrowsetimpl.featnotsupp = Det finns inget st\u00f6d f\u00f6r denna funktion +jdbcrowsetimpl.paramtype = Kan inte h\u00E4rleda parametertypen +jdbcrowsetimpl.matchcols = Matchningskolumnerna \u00E4r inte samma som de som st\u00E4llts in +jdbcrowsetimpl.setmatchcols = St\u00E4ll in matchningskolumnerna innan du h\u00E4mtar dem +jdbcrowsetimpl.matchcols1 = Matchningskolumnerna m\u00E5ste vara st\u00F6rre \u00E4n 0 +jdbcrowsetimpl.matchcols2 = Matchningskolumnerna kan inte vara en null-str\u00E4ng eller tomma +jdbcrowsetimpl.unsetmatch = Kolumnerna som \u00E5terst\u00E4lls \u00E4r inte samma som de som st\u00E4llts in +jdbcrowsetimpl.usecolname = Anv\u00E4nd kolumnnamn som argument f\u00F6r unsetMatchColumn +jdbcrowsetimpl.usecolid = Anv\u00E4nd kolumn-id som argument f\u00F6r unsetMatchColumn +jdbcrowsetimpl.resnotupd = ResultSet \u00E4r inte uppdateringsbart +jdbcrowsetimpl.opnotysupp = Det finns \u00E4nnu inget st\u00F6d f\u00F6r denna \u00E5tg\u00E4rd +jdbcrowsetimpl.featnotsupp = Det finns inget st\u00F6d f\u00F6r denna funktion #CachedRowSetReader exceptions crsreader.connect = (JNDI) kan inte anslutas -crsreader.paramtype = Det g\u00e5r inte att fastst\u00e4lla parametertypen +crsreader.paramtype = Kan inte h\u00E4rleda parametertypen crsreader.connecterr = Internt fel i RowSetReader: ingen anslutning eller inget kommando crsreader.datedetected = Ett datum har identifierats crsreader.caldetected = En kalender har identifierats #CachedRowSetWriter exceptions -crswriter.connect = Det g\u00e5r inte att uppr\u00e4tta n\u00e5gon anslutning -crswriter.tname = writeData kan inte fastst\u00e4lla tabellnamnet -crswriter.params1 = Parameterv\u00e4rde1: {0} -crswriter.params2 = Parameterv\u00e4rde2: {0} -crswriter.conflictsno = konflikter under synkronisering +crswriter.connect = Kan inte uppr\u00E4tta n\u00E5gon anslutning +crswriter.tname = writeData kan inte fastst\u00E4lla tabellnamnet +crswriter.params1 = Parameterv\u00E4rde1: {0} +crswriter.params2 = Parameterv\u00E4rde2: {0} +crswriter.conflictsno = orsakar konflikt vid synkronisering #InsertRow exceptions -insertrow.novalue = Inget v\u00e4rde har infogats +insertrow.novalue = Inget v\u00E4rde har infogats #SyncResolverImpl exceptions -syncrsimpl.indexval = Indexv\u00e4rdet ligger utanf\u00f6r intervallet -syncrsimpl.noconflict = Denna kolumn st\u00e5r inte i konflikt -syncrsimpl.syncnotpos = Synkronisering \u00e4r inte m\u00f6jlig -syncrsimpl.valtores = V\u00e4rdet som ska analyseras kan antingen finnas i databasen eller i cachedrowset +syncrsimpl.indexval = Indexv\u00E4rdet ligger utanf\u00F6r intervallet +syncrsimpl.noconflict = Kolumnen orsakar ingen konflikt +syncrsimpl.syncnotpos = Synkronisering \u00E4r inte m\u00F6jlig +syncrsimpl.valtores = V\u00E4rdet som ska fastst\u00E4llas kan antingen finnas i databasen eller i cachedrowset #WebRowSetXmlReader exception -wrsxmlreader.invalidcp = Slutet p\u00e5 RowSet har n\u00e5tts. Mark\u00f6rpositionen \u00e4r ogiltig. +wrsxmlreader.invalidcp = Slutet p\u00E5 RowSet har n\u00E5tts. Mark\u00F6rpositionen \u00E4r ogiltig. wrsxmlreader.readxml = readXML: {0} wrsxmlreader.parseerr = ** Tolkningsfel: {0}, rad: {1}, URI: {2} #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException: {0} wrsxmlwriter.sqlex = SQLException: {0} -wrsxmlwriter.failedwrite = Det gick inte att skriva v\u00e4rdet +wrsxmlwriter.failedwrite = Kunde inte skriva v\u00E4rdet wsrxmlwriter.notproper = Ingen riktig typ #XmlReaderContentHandler exceptions -xmlrch.errmap = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande bild: {0} -xmlrch.errmetadata = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande metadata: {0} -xmlrch.errinsertval = Ett fel uppstod n\u00e4r f\u00f6ljande v\u00e4rden skulle infogas: {0} -xmlrch.errconstr = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle skapas: {0} -xmlrch.errdel = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle raderas: {0} -xmlrch.errinsdel = Ett fel uppstod n\u00e4r raden insdel skulle skapas: {0} -xmlrch.errupdate = Ett fel uppstod n\u00e4r f\u00f6ljande uppdateringsrad skulle skapas: {0} -xmlrch.errupdrow = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle uppdateras: {0} +xmlrch.errmap = Fel uppstod vid inst\u00E4llning av mappning: {0} +xmlrch.errmetadata = Fel uppstod vid inst\u00E4llning av metadata: {0} +xmlrch.errinsertval = Fel uppstod vid infogning av v\u00E4rden: {0} +xmlrch.errconstr = Fel uppstod vid konstruktion av rad: {0} +xmlrch.errdel = Fel uppstod vid borttagning av rad: {0} +xmlrch.errinsert = Fel uppstod vid konstruktion av infogad rad: {0} +xmlrch.errinsdel = Fel uppstod vid konstruktion av insdel-rad: {0} +xmlrch.errupdate = Fel uppstod vid konstruktion av uppdateringsrad: {0} +xmlrch.errupdrow = Fel uppstod vid uppdatering av rad: {0} xmlrch.chars = tecken: -xmlrch.badvalue = Felaktigt v\u00e4rde; egenskapen kan inte ha ett tomt v\u00e4rde -xmlrch.badvalue1 = Felaktigt v\u00e4rde; metadatan kan inte ha ett tomt v\u00e4rde +xmlrch.badvalue = Felaktigt v\u00E4rde; egenskapen kan inte ha ett tomt v\u00E4rde +xmlrch.badvalue1 = Felaktigt v\u00E4rde; metadatan kan inte ha ett tomt v\u00E4rde xmlrch.warning = ** Varning! {0}, rad: {1}, URI: {2} #RIOptimisticProvider Exceptions -riop.locking = Det finns inte st\u00f6d f\u00f6r denna l\u00e5sningsklassifikation +riop.locking = Det finns inte st\u00F6d f\u00F6r denna l\u00E5sningsklassificering #RIXMLProvider exceptions -rixml.unsupp = RIXMLProvider har inte st\u00f6d f\u00f6r detta +rixml.unsupp = RIXMLProvider har inte st\u00F6d f\u00F6r detta diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties index b09b018312f..596d8ab7f44 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties @@ -24,145 +24,147 @@ # # CacheRowSetImpl exceptions -cachedrowsetimpl.populate = \u63d0\u4f9b\u7ed9\u586b\u5145\u65b9\u6cd5\u7684 ResultSet \u5bf9\u8c61\u65e0\u6548 -cachedrowsetimpl.invalidp = \u751f\u6210\u7684\u6301\u4e45\u6027\u63d0\u4f9b\u8005\u65e0\u6548 -cachedrowsetimpl.nullhash = \u65e0\u6cd5\u5b9e\u4f8b\u5316 CachedRowSetImpl \u5b9e\u4f8b\u3002\u63d0\u4f9b\u7ed9\u6784\u9020\u51fd\u6570\u7684 Hashtable \u4e3a Null -cachedrowsetimpl.invalidop = \u5bf9\u63d2\u5165\u884c\u6267\u884c\u7684\u64cd\u4f5c\u65e0\u6548 -cachedrowsetimpl.accfailed = acceptChanges \u5931\u8d25 -cachedrowsetimpl.invalidcp = \u5149\u6807\u4f4d\u7f6e\u65e0\u6548 -cachedrowsetimpl.illegalop = \u5bf9\u975e\u63d2\u5165\u884c\u6267\u884c\u7684\u64cd\u4f5c\u975e\u6cd5 -cachedrowsetimpl.clonefail = \u514b\u9686\u5931\u8d25: {0} -cachedrowsetimpl.invalidcol = \u5217\u7d22\u5f15\u65e0\u6548 -cachedrowsetimpl.invalcolnm = \u5217\u540d\u65e0\u6548 -cachedrowsetimpl.boolfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getBoolen \u5931\u8d25 -cachedrowsetimpl.bytefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getByte \u5931\u8d25 -cachedrowsetimpl.shortfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getShort \u5931\u8d25 -cachedrowsetimpl.intfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getInt \u5931\u8d25 -cachedrowsetimpl.longfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getLong \u5931\u8d25 -cachedrowsetimpl.floatfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getFloat \u5931\u8d25 -cachedrowsetimpl.doublefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getDouble \u5931\u8d25 -cachedrowsetimpl.dtypemismt = \u6570\u636e\u7c7b\u578b\u4e0d\u5339\u914d -cachedrowsetimpl.datefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getDate \u5931\u8d25\uff0c\u65e0\u53ef\u7528\u8f6c\u6362 -cachedrowsetimpl.timefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getTime \u5931\u8d25\uff0c\u65e0\u53ef\u7528\u8f6c\u6362 -cachedrowsetimpl.posupdate = \u4e0d\u652f\u6301\u5b9a\u4f4d\u66f4\u65b0 -cachedrowsetimpl.unableins = \u65e0\u6cd5\u5b9e\u4f8b\u5316: {0} -cachedrowsetimpl.beforefirst = beforeFirst: \u5149\u6807\u64cd\u4f5c\u65e0\u6548 -cachedrowsetimpl.first = First: \u5149\u6807\u64cd\u4f5c\u65e0\u6548 +cachedrowsetimpl.populate = \u63D0\u4F9B\u7ED9\u586B\u5145\u65B9\u6CD5\u7684 ResultSet \u5BF9\u8C61\u65E0\u6548 +cachedrowsetimpl.invalidp = \u751F\u6210\u7684\u6301\u4E45\u6027\u63D0\u4F9B\u65B9\u65E0\u6548 +cachedrowsetimpl.nullhash = \u65E0\u6CD5\u5B9E\u4F8B\u5316 CachedRowSetImpl \u5B9E\u4F8B\u3002\u63D0\u4F9B\u7ED9\u6784\u9020\u5668\u7684 Hashtable \u4E3A\u7A7A\u503C +cachedrowsetimpl.invalidop = \u5BF9\u63D2\u5165\u884C\u6267\u884C\u7684\u64CD\u4F5C\u65E0\u6548 +cachedrowsetimpl.accfailed = acceptChanges \u5931\u8D25 +cachedrowsetimpl.invalidcp = \u5149\u6807\u4F4D\u7F6E\u65E0\u6548 +cachedrowsetimpl.illegalop = \u5BF9\u975E\u63D2\u5165\u884C\u6267\u884C\u7684\u64CD\u4F5C\u975E\u6CD5 +cachedrowsetimpl.clonefail = \u514B\u9686\u5931\u8D25: {0} +cachedrowsetimpl.invalidcol = \u5217\u7D22\u5F15\u65E0\u6548 +cachedrowsetimpl.invalcolnm = \u5217\u540D\u65E0\u6548 +cachedrowsetimpl.boolfail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getBoolen \u5931\u8D25 +cachedrowsetimpl.bytefail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getByte \u5931\u8D25 +cachedrowsetimpl.shortfail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getShort \u5931\u8D25 +cachedrowsetimpl.intfail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getInt \u5931\u8D25 +cachedrowsetimpl.longfail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getLong \u5931\u8D25 +cachedrowsetimpl.floatfail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getFloat \u5931\u8D25 +cachedrowsetimpl.doublefail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getDouble \u5931\u8D25 +cachedrowsetimpl.dtypemismt = \u6570\u636E\u7C7B\u578B\u4E0D\u5339\u914D +cachedrowsetimpl.datefail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getDate \u5931\u8D25, \u65E0\u53EF\u7528\u8F6C\u6362 +cachedrowsetimpl.timefail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getTime \u5931\u8D25, \u65E0\u53EF\u7528\u8F6C\u6362 +cachedrowsetimpl.posupdate = \u4E0D\u652F\u6301\u5B9A\u4F4D\u66F4\u65B0 +cachedrowsetimpl.unableins = \u65E0\u6CD5\u5B9E\u4F8B\u5316: {0} +cachedrowsetimpl.beforefirst = beforeFirst: \u5149\u6807\u64CD\u4F5C\u65E0\u6548 +cachedrowsetimpl.first = First: \u5149\u6807\u64CD\u4F5C\u65E0\u6548 cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY -cachedrowsetimpl.absolute = absolute: \u5149\u6807\u4f4d\u7f6e\u65e0\u6548 -cachedrowsetimpl.relative = relative: \u5149\u6807\u4f4d\u7f6e\u65e0\u6548 -cachedrowsetimpl.asciistream = \u8bfb\u53d6 ASCII \u6d41\u5931\u8d25 -cachedrowsetimpl.binstream = \u8bfb\u53d6\u4e8c\u8fdb\u5236\u6d41\u5931\u8d25 -cachedrowsetimpl.failedins = \u5bf9\u63d2\u5165\u884c\u6267\u884c\u64cd\u4f5c\u5931\u8d25 -cachedrowsetimpl.updateins = \u4e3a\u63d2\u5165\u884c\u8c03\u7528 updateRow +cachedrowsetimpl.absolute = absolute: \u5149\u6807\u4F4D\u7F6E\u65E0\u6548 +cachedrowsetimpl.relative = relative: \u5149\u6807\u4F4D\u7F6E\u65E0\u6548 +cachedrowsetimpl.asciistream = \u672A\u80FD\u8BFB\u53D6 ASCII \u6D41 +cachedrowsetimpl.binstream = \u672A\u80FD\u8BFB\u53D6\u4E8C\u8FDB\u5236\u6D41 +cachedrowsetimpl.failedins = \u5BF9\u63D2\u5165\u884C\u6267\u884C\u64CD\u4F5C\u5931\u8D25 +cachedrowsetimpl.updateins = \u4E3A\u63D2\u5165\u884C\u8C03\u7528 updateRow cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY -cachedrowsetimpl.movetoins1 = moveToInsertRow: \u65e0\u5143\u6570\u636e -cachedrowsetimpl.movetoins2 = moveToInsertRow: \u5217\u6570\u65e0\u6548 -cachedrowsetimpl.tablename = \u8868\u540d\u4e0d\u80fd\u4e3a Null -cachedrowsetimpl.keycols = \u952e\u5217\u65e0\u6548 -cachedrowsetimpl.opnotsupp = \u64cd\u4f5c\u4e0d\u53d7\u6570\u636e\u5e93\u652f\u6301 -cachedrowsetimpl.matchcols = \u5339\u914d\u5217\u4e0e\u8bbe\u7f6e\u7684\u90a3\u4e9b\u5339\u914d\u5217\u4e0d\u540c -cachedrowsetimpl.setmatchcols = \u5728\u83b7\u53d6\u5339\u914d\u5217\u4e4b\u524d\u5148\u8bbe\u7f6e\u5339\u914d\u5217 -cachedrowsetimpl.matchcols1 = \u5339\u914d\u5217\u6570\u5e94\u5f53\u5927\u4e8e 0 -cachedrowsetimpl.matchcols2 = \u5339\u914d\u5217\u6570\u5e94\u5f53\u4e3a\u7a7a\u6216 Null \u5b57\u7b26\u4e32 -cachedrowsetimpl.unsetmatch = \u8981\u590d\u539f\u7684\u5217\u4e0e\u8bbe\u7f6e\u7684\u4e0d\u540c -cachedrowsetimpl.unsetmatch1 = \u4f7f\u7528\u5217\u540d\u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570 -cachedrowsetimpl.unsetmatch2 = \u4f7f\u7528\u5217 ID \u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570 -cachedrowsetimpl.numrows = \u884c\u6570\u5c0f\u4e8e\u96f6\u6216\u5c0f\u4e8e\u8981\u63d0\u53d6\u7684\u884c\u6570 -cachedrowsetimpl.startpos = \u8d77\u59cb\u4f4d\u7f6e\u4e0d\u80fd\u4e3a\u8d1f\u6570 -cachedrowsetimpl.nextpage = \u5728\u8c03\u7528\u4e4b\u524d\u5148\u586b\u5145\u6570\u636e -cachedrowsetimpl.pagesize = \u9875\u9762\u5927\u5c0f\u4e0d\u80fd\u5c0f\u4e8e\u96f6 -cachedrowsetimpl.pagesize1 = \u9875\u9762\u5927\u5c0f\u4e0d\u80fd\u5927\u4e8e maxRows -cachedrowsetimpl.fwdonly = ResultSet \u7684\u7c7b\u578b\u4e3a\u4ec5\u5411\u524d\u7c7b\u578b -cachedrowsetimpl.type = \u7c7b\u578b\u4e3a: {0} -cachedrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u6301\u7684\u64cd\u4f5c -cachedrowsetimpl.featnotsupp = \u5c1a\u4e0d\u652f\u6301\u7684\u529f\u80fd +cachedrowsetimpl.movetoins1 = moveToInsertRow: \u65E0\u5143\u6570\u636E +cachedrowsetimpl.movetoins2 = moveToInsertRow: \u5217\u6570\u65E0\u6548 +cachedrowsetimpl.tablename = \u8868\u540D\u4E0D\u80FD\u4E3A\u7A7A\u503C +cachedrowsetimpl.keycols = \u5173\u952E\u5B57\u5217\u65E0\u6548 +cachedrowsetimpl.invalidcol = \u5217\u7D22\u5F15\u65E0\u6548 +cachedrowsetimpl.opnotsupp = \u64CD\u4F5C\u4E0D\u53D7\u6570\u636E\u5E93\u652F\u6301 +cachedrowsetimpl.matchcols = \u5339\u914D\u5217\u4E0E\u8BBE\u7F6E\u7684\u90A3\u4E9B\u5339\u914D\u5217\u4E0D\u540C +cachedrowsetimpl.setmatchcols = \u5728\u83B7\u53D6\u5339\u914D\u5217\u4E4B\u524D\u5148\u8BBE\u7F6E\u5339\u914D\u5217 +cachedrowsetimpl.matchcols1 = \u5339\u914D\u5217\u6570\u5E94\u5F53\u5927\u4E8E 0 +cachedrowsetimpl.matchcols2 = \u5339\u914D\u5217\u6570\u5E94\u5F53\u4E3A\u7A7A\u6216\u7A7A\u503C\u5B57\u7B26\u4E32 +cachedrowsetimpl.unsetmatch = \u8981\u53D6\u6D88\u8BBE\u7F6E\u7684\u5217\u4E0E\u8BBE\u7F6E\u7684\u5217\u4E0D\u540C +cachedrowsetimpl.unsetmatch1 = \u4F7F\u7528\u5217\u540D\u4F5C\u4E3A unsetMatchColumn \u7684\u53C2\u6570 +cachedrowsetimpl.unsetmatch2 = \u4F7F\u7528\u5217 ID \u4F5C\u4E3A unsetMatchColumn \u7684\u53C2\u6570 +cachedrowsetimpl.numrows = \u884C\u6570\u5C0F\u4E8E\u96F6\u6216\u5C0F\u4E8E\u8981\u63D0\u53D6\u7684\u884C\u6570 +cachedrowsetimpl.startpos = \u8D77\u59CB\u4F4D\u7F6E\u4E0D\u80FD\u4E3A\u8D1F\u6570 +cachedrowsetimpl.nextpage = \u5728\u8C03\u7528\u4E4B\u524D\u5148\u586B\u5145\u6570\u636E +cachedrowsetimpl.pagesize = \u9875\u9762\u5927\u5C0F\u4E0D\u80FD\u5C0F\u4E8E\u96F6 +cachedrowsetimpl.pagesize1 = \u9875\u9762\u5927\u5C0F\u4E0D\u80FD\u5927\u4E8E maxRows +cachedrowsetimpl.fwdonly = ResultSet \u7684\u7C7B\u578B\u4E3A\u4EC5\u5411\u524D\u7C7B\u578B +cachedrowsetimpl.type = \u7C7B\u578B\u4E3A: {0} +cachedrowsetimpl.opnotysupp = \u5C1A\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C +cachedrowsetimpl.featnotsupp = \u5C1A\u4E0D\u652F\u6301\u8BE5\u529F\u80FD # WebRowSetImpl exceptions -webrowsetimpl.nullhash = \u65e0\u6cd5\u5b9e\u4f8b\u5316 WebRowSetImpl \u5b9e\u4f8b\u3002\u63d0\u4f9b\u7ed9\u6784\u9020\u51fd\u6570\u7684 Hashtable \u4e3a Null -webrowsetimpl.invalidwr = \u7f16\u5199\u5668\u65e0\u6548 -webrowsetimpl.invalidrd = \u8bfb\u53d6\u5668\u65e0\u6548 +webrowsetimpl.nullhash = \u65E0\u6CD5\u5B9E\u4F8B\u5316 WebRowSetImpl \u5B9E\u4F8B\u3002\u63D0\u4F9B\u7ED9\u6784\u9020\u5668\u7684 Hashtable \u4E3A\u7A7A\u503C +webrowsetimpl.invalidwr = \u5199\u8FDB\u7A0B\u65E0\u6548 +webrowsetimpl.invalidrd = \u8BFB\u8FDB\u7A0B\u65E0\u6548 #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative: \u5149\u6807\u64cd\u4f5c\u65e0\u6548 -filteredrowsetimpl.absolute = absolute: \u5149\u6807\u64cd\u4f5c\u65e0\u6548 -filteredrowsetimpl.notallowed = \u4e0d\u5141\u8bb8\u6b64\u503c\u901a\u8fc7\u8fc7\u6ee4\u5668 +filteredrowsetimpl.relative = relative: \u5149\u6807\u64CD\u4F5C\u65E0\u6548 +filteredrowsetimpl.absolute = absolute: \u5149\u6807\u64CD\u4F5C\u65E0\u6548 +filteredrowsetimpl.notallowed = \u4E0D\u5141\u8BB8\u6B64\u503C\u901A\u8FC7\u7B5B\u9009\u5668 #JoinRowSetImpl exceptions -joinrowsetimpl.notinstance = \u4e0d\u662f RowSet \u7684\u5b9e\u4f8b -joinrowsetimpl.matchnotset = \u672a\u8bbe\u7f6e\u5339\u914d\u5217\u4ee5\u8fdb\u884c\u8fde\u63a5 -joinrowsetimpl.numnotequal = RowSet \u4e2d\u7684\u5143\u7d20\u4e2a\u6570\u4e0d\u7b49\u4e8e\u5339\u914d\u5217\u6570 -joinrowsetimpl.notdefined = \u8fd9\u4e0d\u662f\u5b9a\u4e49\u7684\u8fde\u63a5\u7c7b\u578b -joinrowsetimpl.notsupported = \u4e0d\u652f\u6301\u6b64\u8fde\u63a5\u7c7b\u578b -joinrowsetimpl.initerror = JoinRowSet \u521d\u59cb\u5316\u9519\u8bef -joinrowsetimpl.genericerr = \u4e00\u822c JoinRowSet \u521d\u59cb\u5316\u9519\u8bef -joinrowsetimpl.emptyrowset = \u65e0\u6cd5\u5c06\u7a7a RowSet \u6dfb\u52a0\u5230\u6b64 JoinRowSet +joinrowsetimpl.notinstance = \u4E0D\u662F RowSet \u7684\u5B9E\u4F8B +joinrowsetimpl.matchnotset = \u672A\u8BBE\u7F6E\u5339\u914D\u5217\u4EE5\u8FDB\u884C\u8054\u63A5 +joinrowsetimpl.numnotequal = RowSet \u4E2D\u7684\u5143\u7D20\u4E2A\u6570\u4E0D\u7B49\u4E8E\u5339\u914D\u5217\u6570 +joinrowsetimpl.notdefined = \u8FD9\u4E0D\u662F\u5B9A\u4E49\u7684\u8054\u63A5\u7C7B\u578B +joinrowsetimpl.notsupported = \u4E0D\u652F\u6301\u6B64\u8054\u63A5\u7C7B\u578B +joinrowsetimpl.initerror = JoinRowSet \u521D\u59CB\u5316\u9519\u8BEF +joinrowsetimpl.genericerr = \u4E00\u822C JoinRowSet \u521D\u59CB\u5316\u9519\u8BEF +joinrowsetimpl.emptyrowset = \u65E0\u6CD5\u5C06\u7A7A RowSet \u6DFB\u52A0\u5230\u6B64 JoinRowSet #JdbcRowSetImpl exceptions -jdbcrowsetimpl.invalstate = \u72b6\u6001\u65e0\u6548 -jdbcrowsetimpl.connect = JdbcRowSet\uff08\u8fde\u63a5\uff09JNDI \u65e0\u6cd5\u8fde\u63a5 -jdbcrowsetimpl.paramtype = \u65e0\u6cd5\u63a8\u65ad\u53c2\u6570\u7c7b\u578b -jdbcrowsetimpl.matchcols = \u5339\u914d\u5217\u4e0e\u8bbe\u7f6e\u7684\u90a3\u4e9b\u5339\u914d\u5217\u4e0d\u540c -jdbcrowsetimpl.setmatchcols = \u5728\u83b7\u53d6\u5339\u914d\u5217\u4e4b\u524d\u5148\u8bbe\u7f6e\u5339\u914d\u5217 -jdbcrowsetimpl.matchcols1 = \u5339\u914d\u5217\u6570\u5e94\u5f53\u5927\u4e8e 0 -jdbcrowsetimpl.matchcols2 = \u5339\u914d\u5217\u4e0d\u80fd\u4e3a Null \u6216\u7a7a\u5b57\u7b26\u4e32 -jdbcrowsetimpl.unsetmatch = \u8981\u590d\u539f\u7684\u5217\u4e0e\u8bbe\u7f6e\u7684\u4e0d\u540c -jdbcrowsetimpl.usecolname = \u4f7f\u7528\u5217\u540d\u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570 -jdbcrowsetimpl.usecolid = \u4f7f\u7528\u5217 ID \u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570 -jdbcrowsetimpl.resnotupd = ResultSet \u4e0d\u53ef\u66f4\u65b0 -jdbcrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u6301\u7684\u64cd\u4f5c -jdbcrowsetimpl.featnotsupp = \u5c1a\u4e0d\u652f\u6301\u7684\u529f\u80fd +jdbcrowsetimpl.invalstate = \u72B6\u6001\u65E0\u6548 +jdbcrowsetimpl.connect = JdbcRowSet (\u8FDE\u63A5) JNDI \u65E0\u6CD5\u8FDE\u63A5 +jdbcrowsetimpl.paramtype = \u65E0\u6CD5\u63A8\u65AD\u53C2\u6570\u7C7B\u578B +jdbcrowsetimpl.matchcols = \u5339\u914D\u5217\u4E0E\u8BBE\u7F6E\u7684\u90A3\u4E9B\u5339\u914D\u5217\u4E0D\u540C +jdbcrowsetimpl.setmatchcols = \u5728\u83B7\u53D6\u5339\u914D\u5217\u4E4B\u524D\u5148\u8BBE\u7F6E\u5339\u914D\u5217 +jdbcrowsetimpl.matchcols1 = \u5339\u914D\u5217\u6570\u5E94\u5F53\u5927\u4E8E 0 +jdbcrowsetimpl.matchcols2 = \u5339\u914D\u5217\u4E0D\u80FD\u4E3A\u7A7A\u503C\u6216\u7A7A\u5B57\u7B26\u4E32 +jdbcrowsetimpl.unsetmatch = \u8981\u53D6\u6D88\u8BBE\u7F6E\u7684\u5217\u4E0E\u8BBE\u7F6E\u7684\u5217\u4E0D\u540C +jdbcrowsetimpl.usecolname = \u4F7F\u7528\u5217\u540D\u4F5C\u4E3A unsetMatchColumn \u7684\u53C2\u6570 +jdbcrowsetimpl.usecolid = \u4F7F\u7528\u5217 ID \u4F5C\u4E3A unsetMatchColumn \u7684\u53C2\u6570 +jdbcrowsetimpl.resnotupd = ResultSet \u4E0D\u53EF\u66F4\u65B0 +jdbcrowsetimpl.opnotysupp = \u5C1A\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C +jdbcrowsetimpl.featnotsupp = \u5C1A\u4E0D\u652F\u6301\u8BE5\u529F\u80FD #CachedRowSetReader exceptions -crsreader.connect = (JNDI) \u65e0\u6cd5\u8fde\u63a5 -crsreader.paramtype = \u65e0\u6cd5\u63a8\u65ad\u53c2\u6570\u7c7b\u578b -crsreader.connecterr = RowSetReader \u4e2d\u51fa\u73b0\u5185\u90e8\u9519\u8bef\uff1a\u65e0\u8fde\u63a5\u6216\u547d\u4ee4 -crsreader.datedetected = \u68c0\u6d4b\u5230\u65e5\u671f -crsreader.caldetected = \u68c0\u6d4b\u5230\u65e5\u5386 +crsreader.connect = (JNDI) \u65E0\u6CD5\u8FDE\u63A5 +crsreader.paramtype = \u65E0\u6CD5\u63A8\u65AD\u53C2\u6570\u7C7B\u578B +crsreader.connecterr = RowSetReader \u4E2D\u51FA\u73B0\u5185\u90E8\u9519\u8BEF: \u65E0\u8FDE\u63A5\u6216\u547D\u4EE4 +crsreader.datedetected = \u68C0\u6D4B\u5230\u65E5\u671F +crsreader.caldetected = \u68C0\u6D4B\u5230\u65E5\u5386 #CachedRowSetWriter exceptions -crswriter.connect = \u65e0\u6cd5\u8fdb\u884c\u8fde\u63a5 -crswriter.tname = writeData \u65e0\u6cd5\u786e\u5b9a\u8868\u540d -crswriter.params1 = params1 \u7684\u503c: {0} -crswriter.params2 = params2 \u7684\u503c: {0} -crswriter.conflictsno = \u540c\u6b65\u5316\u65f6\u53d1\u751f\u51b2\u7a81 +crswriter.connect = \u65E0\u6CD5\u83B7\u53D6\u8FDE\u63A5 +crswriter.tname = writeData \u65E0\u6CD5\u786E\u5B9A\u8868\u540D +crswriter.params1 = params1 \u7684\u503C: {0} +crswriter.params2 = params2 \u7684\u503C: {0} +crswriter.conflictsno = \u540C\u6B65\u65F6\u53D1\u751F\u51B2\u7A81 #InsertRow exceptions -insertrow.novalue = \u5c1a\u672a\u63d2\u5165\u4efb\u4f55\u503c +insertrow.novalue = \u5C1A\u672A\u63D2\u5165\u4EFB\u4F55\u503C #SyncResolverImpl exceptions -syncrsimpl.indexval = \u7d22\u5f15\u503c\u8d85\u51fa\u8303\u56f4 -syncrsimpl.noconflict = \u6b64\u5217\u4e0d\u51b2\u7a81 -syncrsimpl.syncnotpos = \u4e0d\u80fd\u540c\u6b65 -syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4ee5\u5728\u6570\u636e\u5e93\u4e2d\uff0c\u4e5f\u53ef\u4ee5\u5728 CachedRowSet \u4e2d +syncrsimpl.indexval = \u7D22\u5F15\u503C\u8D85\u51FA\u8303\u56F4 +syncrsimpl.noconflict = \u6B64\u5217\u4E0D\u51B2\u7A81 +syncrsimpl.syncnotpos = \u4E0D\u80FD\u540C\u6B65 +syncrsimpl.valtores = \u8981\u89E3\u6790\u7684\u503C\u53EF\u4EE5\u5728\u6570\u636E\u5E93\u4E2D, \u4E5F\u53EF\u4EE5\u5728 CachedRowSet \u4E2D #WebRowSetXmlReader exception -wrsxmlreader.invalidcp = \u5df2\u5230\u8fbe RowSet \u7684\u7ed3\u5c3e\u3002\u5149\u6807\u4f4d\u7f6e\u65e0\u6548 +wrsxmlreader.invalidcp = \u5DF2\u5230\u8FBE RowSet \u7684\u7ED3\u5C3E\u3002\u5149\u6807\u4F4D\u7F6E\u65E0\u6548 wrsxmlreader.readxml = readXML: {0} -wrsxmlreader.parseerr = ** \u8bed\u6cd5\u89e3\u6790\u9519\u8bef: {0}\uff0c\u884c: {1}\uff0cURI: {2} +wrsxmlreader.parseerr = ** \u8BED\u6CD5\u5206\u6790\u9519\u8BEF: {0}, \u884C: {1}, URI: {2} #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException: {0} wrsxmlwriter.sqlex = SQLException: {0} -wrsxmlwriter.failedwrite = \u65e0\u6cd5\u5199\u5165\u503c -wsrxmlwriter.notproper = \u7c7b\u578b\u4e0d\u6b63\u786e +wrsxmlwriter.failedwrite = \u65E0\u6CD5\u5199\u5165\u503C +wsrxmlwriter.notproper = \u7C7B\u578B\u4E0D\u6B63\u786E #XmlReaderContentHandler exceptions -xmlrch.errmap = \u8bbe\u7f6e\u6620\u5c04\u65f6\u51fa\u9519: {0} -xmlrch.errmetadata = \u8bbe\u7f6e\u5143\u6570\u636e\u65f6\u51fa\u9519: {0} -xmlrch.errinsertval = \u63d2\u5165\u503c\u65f6\u51fa\u9519: {0} -xmlrch.errconstr = \u6784\u9020\u884c\u65f6\u51fa\u9519: {0} -xmlrch.errdel = \u5220\u9664\u884c\u65f6\u51fa\u9519: {0} -xmlrch.errinsdel = \u6784\u9020 insdel \u884c\u65f6\u51fa\u9519: {0} -xmlrch.errupdate = \u6784\u9020\u66f4\u65b0\u884c\u65f6\u51fa\u9519: {0} -xmlrch.errupdrow = \u66f4\u65b0\u884c\u65f6\u51fa\u9519: {0} -xmlrch.chars = \u5b57\u7b26: -xmlrch.badvalue = \u503c\u9519\u8bef\uff1b\u5c5e\u6027\u4e0d\u53ef\u4e3a Null -xmlrch.badvalue1 = \u503c\u9519\u8bef\uff1b\u5143\u6570\u636e\u4e0d\u53ef\u4e3a Null -xmlrch.warning = ** \u8b66\u544a: {0}\uff0c\u884c: {1}\uff0cURI: {2} +xmlrch.errmap = \u8BBE\u7F6E\u6620\u5C04\u65F6\u51FA\u9519: {0} +xmlrch.errmetadata = \u8BBE\u7F6E\u5143\u6570\u636E\u65F6\u51FA\u9519: {0} +xmlrch.errinsertval = \u63D2\u5165\u503C\u65F6\u51FA\u9519: {0} +xmlrch.errconstr = \u6784\u9020\u884C\u65F6\u51FA\u9519: {0} +xmlrch.errdel = \u5220\u9664\u884C\u65F6\u51FA\u9519: {0} +xmlrch.errinsert = \u6784\u9020\u63D2\u5165\u884C\u65F6\u51FA\u9519: {0} +xmlrch.errinsdel = \u6784\u9020 insdel \u884C\u65F6\u51FA\u9519: {0} +xmlrch.errupdate = \u6784\u9020\u66F4\u65B0\u884C\u65F6\u51FA\u9519: {0} +xmlrch.errupdrow = \u66F4\u65B0\u884C\u65F6\u51FA\u9519: {0} +xmlrch.chars = \u5B57\u7B26: +xmlrch.badvalue = \u503C\u9519\u8BEF; \u5C5E\u6027\u4E0D\u53EF\u4E3A\u7A7A\u503C +xmlrch.badvalue1 = \u503C\u9519\u8BEF; \u5143\u6570\u636E\u4E0D\u53EF\u4E3A\u7A7A\u503C +xmlrch.warning = ** \u8B66\u544A: {0}, \u884C: {1}, URI: {2} #RIOptimisticProvider Exceptions -riop.locking = \u4e0d\u652f\u6301\u9501\u5b9a\u5206\u7c7b +riop.locking = \u4E0D\u652F\u6301\u9501\u5B9A\u5206\u7C7B #RIXMLProvider exceptions -rixml.unsupp = \u4e0d\u652f\u6301 RIXMLProvider +rixml.unsupp = \u4E0D\u652F\u6301 RIXMLProvider diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties index a52d73d4dbe..cb71246daa9 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties @@ -24,145 +24,147 @@ # # CacheRowSetImpl exceptions -cachedrowsetimpl.populate = \u70ba\u690d\u5165\u65b9\u6cd5\u63d0\u4f9b\u7684 ResultSet \u7269\u4ef6\u7121\u6548 -cachedrowsetimpl.invalidp = \u7522\u751f\u7684\u6301\u7e8c\u6027\u63d0\u4f9b\u8005\u7121\u6548 -cachedrowsetimpl.nullhash = \u7121\u6cd5\u5275\u8a2d CachedRowSetImpl \u5be6\u4f8b\u3002\u70ba\u5efa\u69cb\u5b50\u63d0\u4f9b\u7684 Hashtable \u70ba\u7a7a -cachedrowsetimpl.invalidop = \u5c0d\u63d2\u5165\u5217\u9032\u884c\u7684\u4f5c\u696d\u7121\u6548 +cachedrowsetimpl.populate = \u70BA\u690D\u5165\u65B9\u6CD5\u63D0\u4F9B\u7684 ResultSet \u7269\u4EF6\u7121\u6548 +cachedrowsetimpl.invalidp = \u7522\u751F\u7684\u6301\u7E8C\u6027\u63D0\u4F9B\u8005\u7121\u6548 +cachedrowsetimpl.nullhash = \u7121\u6CD5\u5EFA\u7ACB CachedRowSetImpl \u57F7\u884C\u8655\u7406\u3002\u70BA\u5EFA\u69CB\u5B50\u63D0\u4F9B\u7684 Hashtable \u70BA\u7A7A\u503C +cachedrowsetimpl.invalidop = \u63D2\u5165\u5217\u6642\u7684\u4F5C\u696D\u7121\u6548 cachedrowsetimpl.accfailed = acceptChanges \u5931\u6557 -cachedrowsetimpl.invalidcp = \u6e38\u6a19\u4f4d\u7f6e\u7121\u6548 -cachedrowsetimpl.illegalop = \u975e\u63d2\u5165\u5217\u4e0a\u5b58\u5728\u975e\u6cd5\u4f5c\u696d -cachedrowsetimpl.clonefail = \u8907\u88fd\u5931\u6557\uff1a{0} -cachedrowsetimpl.invalidcol = \u6b04\u7d22\u5f15\u7121\u6548 -cachedrowsetimpl.invalcolnm = \u6b04\u540d\u7121\u6548 -cachedrowsetimpl.boolfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getBoolen \u5931\u6557 -cachedrowsetimpl.bytefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getByte \u5931\u6557 -cachedrowsetimpl.shortfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getShort \u5931\u6557 -cachedrowsetimpl.intfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getInt \u5931\u6557 -cachedrowsetimpl.longfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getLong \u5931\u6557 -cachedrowsetimpl.floatfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getFloat \u5931\u6557 -cachedrowsetimpl.doublefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getDouble \u5931\u6557 -cachedrowsetimpl.dtypemismt = \u8cc7\u6599\u985e\u578b\u4e0d\u5339\u914d -cachedrowsetimpl.datefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getDate \u5931\u6557\uff0c\u672a\u9032\u884c\u8f49\u63db -cachedrowsetimpl.timefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getTime \u5931\u6557\uff0c\u672a\u9032\u884c\u8f49\u63db -cachedrowsetimpl.posupdate = \u4e0d\u652f\u63f4\u5b9a\u4f4d\u7684\u66f4\u65b0 -cachedrowsetimpl.unableins = \u7121\u6cd5\u5275\u8a2d\uff1a{0} -cachedrowsetimpl.beforefirst = beforeFirst\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548 -cachedrowsetimpl.first = First\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548 -cachedrowsetimpl.last = last\uff1aTYPE_FORWARD_ONLY -cachedrowsetimpl.absolute = absolute\uff1a\u6e38\u6a19\u4f4d\u7f6e\u7121\u6548 -cachedrowsetimpl.relative = relative\uff1a\u6e38\u6a19\u4f4d\u7f6e\u7121\u6548 -cachedrowsetimpl.asciistream = \u5c0d ascii \u4e32\u6d41\u57f7\u884c read \u5931\u6557 -cachedrowsetimpl.binstream = \u5c0d\u4e8c\u9032\u4f4d\u4e32\u6d41\u57f7\u884c read \u5931\u6557 -cachedrowsetimpl.failedins = \u5728\u63d2\u5165\u5217\u4e0a\u5931\u6557 -cachedrowsetimpl.updateins = \u5c0d\u63d2\u5165\u5217\u547c\u53eb updateRow -cachedrowsetimpl.movetoins = moveToInsertRow\uff1aCONCUR_READ_ONLY -cachedrowsetimpl.movetoins1 = moveToInsertRow\uff1a\u6c92\u6709\u5143\u8cc7\u6599 -cachedrowsetimpl.movetoins2 = moveToInsertRow\uff1a\u6b04\u6578\u7121\u6548 -cachedrowsetimpl.tablename = \u8868\u540d\u7a31\u4e0d\u80fd\u70ba\u7a7a -cachedrowsetimpl.keycols = \u95dc\u9375\u6b04\u7121\u6548 -cachedrowsetimpl.opnotsupp = \u8cc7\u6599\u5eab\u4e0d\u652f\u63f4\u4f5c\u696d -cachedrowsetimpl.matchcols = \u5339\u914d\u6b04\u548c\u8a2d\u5b9a\u7684\u6b04\u4e0d\u540c -cachedrowsetimpl.setmatchcols = \u5728\u53d6\u5f97\u5339\u914d\u6b04\u4e4b\u524d\u8a2d\u5b9a\u5b83\u5011 -cachedrowsetimpl.matchcols1 = \u5339\u914d\u6b04\u61c9\u5927\u65bc 0 -cachedrowsetimpl.matchcols2 = \u5339\u914d\u6b04\u61c9\u70ba\u7a7a\u767d\u5b57\u4e32\u6216\u7a7a\u5b57\u4e32 -cachedrowsetimpl.unsetmatch = \u672a\u8a2d\u5b9a\u7684\u6b04\u548c\u8a2d\u5b9a\u7684\u6b04\u4e0d\u540c -cachedrowsetimpl.unsetmatch1 = \u4f7f\u7528\u6b04\u540d\u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578 -cachedrowsetimpl.unsetmatch2 = \u4f7f\u7528\u6b04 ID \u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578 -cachedrowsetimpl.numrows = \u5217\u6578\u5c0f\u65bc\u96f6\u6216\u5c0f\u65bc\u64f7\u53d6\u5927\u5c0f -cachedrowsetimpl.startpos = \u8d77\u59cb\u4f4d\u7f6e\u4e0d\u80fd\u70ba\u8ca0 -cachedrowsetimpl.nextpage = \u5728\u547c\u53eb\u4e4b\u524d\u690d\u5165\u8cc7\u6599 -cachedrowsetimpl.pagesize = \u9801\u9762\u5927\u5c0f\u4e0d\u80fd\u5c0f\u65bc\u96f6 -cachedrowsetimpl.pagesize1 = \u9801\u9762\u5927\u5c0f\u4e0d\u80fd\u5927\u65bc maxRows -cachedrowsetimpl.fwdonly = ResultSet \u53ea\u80fd\u5411\u524d\u9032\u884c -cachedrowsetimpl.type = \u985e\u578b\u662f\uff1a{0} -cachedrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u63f4\u8a72\u4f5c\u696d -cachedrowsetimpl.featnotsupp = \u4e0d\u652f\u63f4\u8a72\u529f\u80fd +cachedrowsetimpl.invalidcp = \u6E38\u6A19\u4F4D\u7F6E\u7121\u6548 +cachedrowsetimpl.illegalop = \u975E\u63D2\u5165\u5217\u4E0A\u5B58\u5728\u7121\u6548\u4F5C\u696D +cachedrowsetimpl.clonefail = \u8907\u88FD\u5931\u6557: {0} +cachedrowsetimpl.invalidcol = \u6B04\u7D22\u5F15\u7121\u6548 +cachedrowsetimpl.invalcolnm = \u6B04\u540D\u7121\u6548 +cachedrowsetimpl.boolfail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getBoolen \u5931\u6557 +cachedrowsetimpl.bytefail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getByte \u5931\u6557 +cachedrowsetimpl.shortfail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getShort \u5931\u6557 +cachedrowsetimpl.intfail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getInt \u5931\u6557 +cachedrowsetimpl.longfail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getLong \u5931\u6557 +cachedrowsetimpl.floatfail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getFloat \u5931\u6557 +cachedrowsetimpl.doublefail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getDouble \u5931\u6557 +cachedrowsetimpl.dtypemismt = \u8CC7\u6599\u985E\u578B\u4E0D\u76F8\u7B26 +cachedrowsetimpl.datefail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getDate \u5931\u6557\uFF0C\u672A\u9032\u884C\u8F49\u63DB +cachedrowsetimpl.timefail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getTime \u5931\u6557\uFF0C\u672A\u9032\u884C\u8F49\u63DB +cachedrowsetimpl.posupdate = \u4E0D\u652F\u63F4\u5B9A\u4F4D\u7684\u66F4\u65B0 +cachedrowsetimpl.unableins = \u7121\u6CD5\u5EFA\u7ACB: {0} +cachedrowsetimpl.beforefirst = beforeFirst: \u6E38\u6A19\u4F5C\u696D\u7121\u6548 +cachedrowsetimpl.first = First: \u6E38\u6A19\u4F5C\u696D\u7121\u6548 +cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY +cachedrowsetimpl.absolute = absolute: \u6E38\u6A19\u4F4D\u7F6E\u7121\u6548 +cachedrowsetimpl.relative = relative: \u6E38\u6A19\u4F4D\u7F6E\u7121\u6548 +cachedrowsetimpl.asciistream = \u8B80\u53D6 ascii \u4E32\u6D41\u5931\u6557 +cachedrowsetimpl.binstream = \u8B80\u53D6\u4E8C\u9032\u4F4D\u4E32\u6D41\u5931\u6557 +cachedrowsetimpl.failedins = \u63D2\u5165\u5217\u5931\u6557 +cachedrowsetimpl.updateins = \u63D2\u5165\u5217\u6642\u547C\u53EB updateRow +cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY +cachedrowsetimpl.movetoins1 = moveToInsertRow: \u6C92\u6709\u63CF\u8FF0\u8CC7\u6599 +cachedrowsetimpl.movetoins2 = moveToInsertRow: \u6B04\u6578\u7121\u6548 +cachedrowsetimpl.tablename = \u8868\u683C\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A\u503C +cachedrowsetimpl.keycols = \u95DC\u9375\u6B04\u7121\u6548 +cachedrowsetimpl.invalidcol = \u6B04\u7D22\u5F15\u7121\u6548 +cachedrowsetimpl.opnotsupp = \u8CC7\u6599\u5EAB\u4E0D\u652F\u63F4\u4F5C\u696D +cachedrowsetimpl.matchcols = \u5339\u914D\u6B04\u548C\u8A2D\u5B9A\u7684\u6B04\u4E0D\u540C +cachedrowsetimpl.setmatchcols = \u5728\u53D6\u5F97\u5339\u914D\u6B04\u4E4B\u524D\u8A2D\u5B9A\u5B83\u5011 +cachedrowsetimpl.matchcols1 = \u5339\u914D\u6B04\u61C9\u5927\u65BC 0 +cachedrowsetimpl.matchcols2 = \u5339\u914D\u6B04\u61C9\u70BA\u7A7A\u767D\u5B57\u4E32\u6216\u7A7A\u503C\u5B57\u4E32 +cachedrowsetimpl.unsetmatch = \u53D6\u6D88\u8A2D\u5B9A\u7684\u6B04\u548C\u8A2D\u5B9A\u7684\u6B04\u4E0D\u540C +cachedrowsetimpl.unsetmatch1 = \u4F7F\u7528\u6B04\u540D\u505A\u70BA unsetMatchColumn \u7684\u5F15\u6578 +cachedrowsetimpl.unsetmatch2 = \u4F7F\u7528\u6B04 ID \u505A\u70BA unsetMatchColumn \u7684\u5F15\u6578 +cachedrowsetimpl.numrows = \u5217\u6578\u5C0F\u65BC\u96F6\u6216\u5C0F\u65BC\u64F7\u53D6\u5927\u5C0F +cachedrowsetimpl.startpos = \u8D77\u59CB\u4F4D\u7F6E\u4E0D\u80FD\u70BA\u8CA0\u6578 +cachedrowsetimpl.nextpage = \u5728\u547C\u53EB\u4E4B\u524D\u690D\u5165\u8CC7\u6599 +cachedrowsetimpl.pagesize = \u9801\u9762\u5927\u5C0F\u4E0D\u80FD\u5C0F\u65BC\u96F6 +cachedrowsetimpl.pagesize1 = \u9801\u9762\u5927\u5C0F\u4E0D\u80FD\u5927\u65BC maxRows +cachedrowsetimpl.fwdonly = ResultSet \u53EA\u80FD\u5411\u524D\u9032\u884C +cachedrowsetimpl.type = \u985E\u578B\u662F: {0} +cachedrowsetimpl.opnotysupp = \u5C1A\u4E0D\u652F\u63F4\u8A72\u4F5C\u696D +cachedrowsetimpl.featnotsupp = \u4E0D\u652F\u63F4\u8A72\u529F\u80FD # WebRowSetImpl exceptions -webrowsetimpl.nullhash = \u7121\u6cd5\u5275\u8a2d WebRowSetImpl \u5be6\u4f8b\u3002\u70ba\u5efa\u69cb\u5b50\u63d0\u4f9b\u7684 Hashtable \u70ba\u7a7a -webrowsetimpl.invalidwr = \u5beb\u5165\u5668\u7121\u6548 -webrowsetimpl.invalidrd = \u8b80\u53d6\u5668\u7121\u6548 +webrowsetimpl.nullhash = \u7121\u6CD5\u5EFA\u7ACB WebRowSetImpl \u57F7\u884C\u8655\u7406\u3002\u70BA\u5EFA\u69CB\u5B50\u63D0\u4F9B\u7684 Hashtable \u70BA\u7A7A\u503C +webrowsetimpl.invalidwr = \u5BEB\u5165\u5668\u7121\u6548 +webrowsetimpl.invalidrd = \u8B80\u53D6\u5668\u7121\u6548 #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548 -filteredrowsetimpl.absolute = absolute\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548 -filteredrowsetimpl.notallowed = \u4e0d\u5141\u8a31\u6b64\u503c\u901a\u904e\u904e\u6ffe\u5668 +filteredrowsetimpl.relative = relative: \u6E38\u6A19\u4F5C\u696D\u7121\u6548 +filteredrowsetimpl.absolute = absolute: \u6E38\u6A19\u4F5C\u696D\u7121\u6548 +filteredrowsetimpl.notallowed = \u4E0D\u5141\u8A31\u6B64\u503C\u901A\u904E\u7BE9\u9078 #JoinRowSetImpl exceptions -joinrowsetimpl.notinstance = \u4e0d\u662f rowset \u7684\u5be6\u4f8b -joinrowsetimpl.matchnotset = \u672a\u8a2d\u5b9a\u7528\u65bc\u9023\u7d50\u7684\u5339\u914d\u6b04 -joinrowsetimpl.numnotequal = rowset \u4e2d\u7684\u5143\u7d20\u6578\u4e0d\u7b49\u65bc\u5339\u914d\u6b04 -joinrowsetimpl.notdefined = \u9019\u4e0d\u662f\u9023\u7d50\u7684\u5df2\u5b9a\u7fa9\u985e\u578b -joinrowsetimpl.notsupported = \u4e0d\u652f\u63f4\u6b64\u985e\u9023\u7d50 -joinrowsetimpl.initerror = JoinRowSet \u521d\u59cb\u5316\u932f\u8aa4 -joinrowsetimpl.genericerr = \u5e38\u898f\u7684 joinrowset \u521d\u59cb\u5316\u932f\u8aa4 -joinrowsetimpl.emptyrowset = \u7121\u6cd5\u5c07\u7a7a rowset \u65b0\u589e\u81f3\u6b64 JoinRowSet +joinrowsetimpl.notinstance = \u4E0D\u662F rowset \u7684\u57F7\u884C\u8655\u7406 +joinrowsetimpl.matchnotset = \u672A\u8A2D\u5B9A\u7528\u65BC\u9023\u7D50\u7684\u5339\u914D\u6B04 +joinrowsetimpl.numnotequal = rowset \u4E2D\u7684\u5143\u7D20\u6578\u4E0D\u7B49\u65BC\u5339\u914D\u6B04 +joinrowsetimpl.notdefined = \u9019\u4E0D\u662F\u9023\u7D50\u7684\u5DF2\u5B9A\u7FA9\u985E\u578B +joinrowsetimpl.notsupported = \u4E0D\u652F\u63F4\u6B64\u985E\u9023\u7D50 +joinrowsetimpl.initerror = JoinRowSet \u521D\u59CB\u5316\u932F\u8AA4 +joinrowsetimpl.genericerr = \u4E00\u822C\u7684 joinrowset \u521D\u59CB\u5316\u932F\u8AA4 +joinrowsetimpl.emptyrowset = \u7121\u6CD5\u5C07\u7A7A rowset \u65B0\u589E\u81F3\u6B64 JoinRowSet #JdbcRowSetImpl exceptions -jdbcrowsetimpl.invalstate = \u72c0\u614b\u7121\u6548 -jdbcrowsetimpl.connect = JdbcRowSet (\u9023\u7dda) JNDI \u7121\u6cd5\u9023\u7dda -jdbcrowsetimpl.paramtype = \u7121\u6cd5\u63a8\u65b7\u53c3\u6578\u985e\u578b -jdbcrowsetimpl.matchcols = \u5339\u914d\u6b04\u548c\u8a2d\u5b9a\u7684\u6b04\u4e0d\u540c -jdbcrowsetimpl.setmatchcols = \u5728\u53d6\u5f97\u5339\u914d\u6b04\u4e4b\u524d\u8a2d\u5b9a\u5b83\u5011 -jdbcrowsetimpl.matchcols1 = \u5339\u914d\u6b04\u61c9\u5927\u65bc 0 -jdbcrowsetimpl.matchcols2 = \u5339\u914d\u6b04\u4e0d\u80fd\u70ba\u7a7a\u5b57\u4e32\u6216\u7a7a\u767d\u5b57\u4e32 -jdbcrowsetimpl.unsetmatch = \u672a\u8a2d\u5b9a\u7684\u6b04\u548c\u8a2d\u5b9a\u7684\u6b04\u4e0d\u540c -jdbcrowsetimpl.usecolname = \u4f7f\u7528\u6b04\u540d\u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578 -jdbcrowsetimpl.usecolid = \u4f7f\u7528\u6b04 ID \u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578 -jdbcrowsetimpl.resnotupd = ResultSet \u4e0d\u53ef\u66f4\u65b0 -jdbcrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u63f4\u8a72\u4f5c\u696d -jdbcrowsetimpl.featnotsupp = \u4e0d\u652f\u63f4\u8a72\u529f\u80fd +jdbcrowsetimpl.invalstate = \u72C0\u614B\u7121\u6548 +jdbcrowsetimpl.connect = JdbcRowSet (\u9023\u7DDA) JNDI \u7121\u6CD5\u9023\u7DDA +jdbcrowsetimpl.paramtype = \u7121\u6CD5\u63A8\u65B7\u53C3\u6578\u985E\u578B +jdbcrowsetimpl.matchcols = \u5339\u914D\u6B04\u548C\u8A2D\u5B9A\u7684\u6B04\u4E0D\u540C +jdbcrowsetimpl.setmatchcols = \u8981\u5148\u8A2D\u5B9A\u5339\u914D\u6B04\uFF0C\u624D\u80FD\u53D6\u5F97\u5B83\u5011 +jdbcrowsetimpl.matchcols1 = \u5339\u914D\u6B04\u61C9\u5927\u65BC 0 +jdbcrowsetimpl.matchcols2 = \u5339\u914D\u6B04\u4E0D\u80FD\u70BA\u7A7A\u767D\u5B57\u4E32\u6216\u7A7A\u503C\u5B57\u4E32 +jdbcrowsetimpl.unsetmatch = \u53D6\u6D88\u8A2D\u5B9A\u7684\u6B04\u548C\u8A2D\u5B9A\u7684\u6B04\u4E0D\u540C +jdbcrowsetimpl.usecolname = \u4F7F\u7528\u6B04\u540D\u505A\u70BA unsetMatchColumn \u7684\u5F15\u6578 +jdbcrowsetimpl.usecolid = \u4F7F\u7528\u6B04 ID \u505A\u70BA unsetMatchColumn \u7684\u5F15\u6578 +jdbcrowsetimpl.resnotupd = ResultSet \u4E0D\u53EF\u66F4\u65B0 +jdbcrowsetimpl.opnotysupp = \u5C1A\u4E0D\u652F\u63F4\u8A72\u4F5C\u696D +jdbcrowsetimpl.featnotsupp = \u4E0D\u652F\u63F4\u8A72\u529F\u80FD #CachedRowSetReader exceptions -crsreader.connect = (JNDI) \u7121\u6cd5\u9023\u7dda -crsreader.paramtype = \u7121\u6cd5\u63a8\u65b7\u53c3\u6578\u985e\u578b -crsreader.connecterr = RowSetReader \u4e2d\u51fa\u73fe\u5167\u90e8\u932f\u8aa4\ufe30\u7121\u9023\u7dda\u6216\u6307\u4ee4 -crsreader.datedetected = \u5075\u6e2c\u5230\u65e5\u671f -crsreader.caldetected = \u5075\u6e2c\u5230\u884c\u4e8b\u66c6 +crsreader.connect = (JNDI) \u7121\u6CD5\u9023\u7DDA +crsreader.paramtype = \u7121\u6CD5\u63A8\u65B7\u53C3\u6578\u985E\u578B +crsreader.connecterr = RowSetReader \u4E2D\u51FA\u73FE\u5167\u90E8\u932F\u8AA4: \u7121\u9023\u7DDA\u6216\u547D\u4EE4 +crsreader.datedetected = \u5075\u6E2C\u5230\u65E5\u671F +crsreader.caldetected = \u5075\u6E2C\u5230\u884C\u4E8B\u66C6 #CachedRowSetWriter exceptions -crswriter.connect = \u7121\u6cd5\u5efa\u7acb\u9023\u7dda -crswriter.tname = writeData \u4e0d\u80fd\u6c7a\u5b9a\u8868\u540d\u7a31 -crswriter.params1 = params1 \u7684\u503c\uff1a{0} -crswriter.params2 = params2 \u7684\u503c\uff1a{0} -crswriter.conflictsno = \u540c\u6b65\u5316\u6642\u767c\u751f\u885d\u7a81 +crswriter.connect = \u7121\u6CD5\u53D6\u5F97\u9023\u7DDA +crswriter.tname = writeData \u4E0D\u80FD\u6C7A\u5B9A\u8868\u683C\u540D\u7A31 +crswriter.params1 = params1 \u7684\u503C: {0} +crswriter.params2 = params2 \u7684\u503C: {0} +crswriter.conflictsno = \u540C\u6B65\u5316\u6642\u767C\u751F\u885D\u7A81 #InsertRow exceptions -insertrow.novalue = \u5c1a\u672a\u63d2\u5165\u503c +insertrow.novalue = \u5C1A\u672A\u63D2\u5165\u503C #SyncResolverImpl exceptions -syncrsimpl.indexval = \u7d22\u5f15\u503c\u8d85\u51fa\u7bc4\u570d -syncrsimpl.noconflict = \u6b64\u6b04\u4e0d\u885d\u7a81 -syncrsimpl.syncnotpos = \u4e0d\u53ef\u80fd\u540c\u6b65\u5316 -syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4f4d\u65bc\u8cc7\u6599\u5eab\u6216 cachedrowset \u4e2d +syncrsimpl.indexval = \u7D22\u5F15\u503C\u8D85\u51FA\u7BC4\u570D +syncrsimpl.noconflict = \u6B64\u6B04\u4E0D\u885D\u7A81 +syncrsimpl.syncnotpos = \u4E0D\u53EF\u80FD\u540C\u6B65\u5316 +syncrsimpl.valtores = \u8981\u89E3\u6790\u7684\u503C\u53EF\u4F4D\u65BC\u8CC7\u6599\u5EAB\u6216 cachedrowset \u4E2D #WebRowSetXmlReader exception -wrsxmlreader.invalidcp = \u5df2\u5230\u9054 RowSet \u672b\u5c3e\u3002\u6e38\u6a19\u4f4d\u7f6e\u7121\u6548 -wrsxmlreader.readxml = readXML\uff1a{0} -wrsxmlreader.parseerr = ** \u5256\u6790\u932f\u8aa4: {0}\uff0c\u884c: {1}\uff0curi: {2} +wrsxmlreader.invalidcp = \u5DF2\u5230\u9054 RowSet \u7D50\u5C3E\u3002\u6E38\u6A19\u4F4D\u7F6E\u7121\u6548 +wrsxmlreader.readxml = readXML: {0} +wrsxmlreader.parseerr = ** \u5256\u6790\u932F\u8AA4: {0}\uFF0C\u884C: {1}\uFF0Curi: {2} #WebRowSetXmlWriter exceptions -wrsxmlwriter.ioex = IOException\uff1a{0} -wrsxmlwriter.sqlex = SQLException\uff1a{0} -wrsxmlwriter.failedwrite = \u5beb\u5165\u503c\u5931\u6557 -wsrxmlwriter.notproper = \u4e0d\u662f\u6b63\u78ba\u985e\u578b +wrsxmlwriter.ioex = IOException : {0} +wrsxmlwriter.sqlex = SQLException : {0} +wrsxmlwriter.failedwrite = \u5BEB\u5165\u503C\u5931\u6557 +wsrxmlwriter.notproper = \u4E0D\u662F\u6B63\u78BA\u985E\u578B #XmlReaderContentHandler exceptions -xmlrch.errmap = \u8a2d\u5b9a\u5c0d\u6620\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} -xmlrch.errmetadata = \u8a2d\u5b9a\u5143\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} -xmlrch.errinsertval = \u63d2\u5165\u503c\u6642\u767c\u751f\u932f\u8aa4: {0} -xmlrch.errconstr = \u5efa\u69cb\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} -xmlrch.errdel = \u522a\u9664\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} -xmlrch.errinsdel = \u5efa\u69cb insdel \u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} -xmlrch.errupdate = \u5efa\u69cb\u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} -xmlrch.errupdrow = \u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4: {0} -xmlrch.chars = \u5b57\u5143\uff1a -xmlrch.badvalue = \u932f\u8aa4\u7684\u503c\uff1b\u7279\u6027\u4e0d\u80fd\u70ba\u7a7a -xmlrch.badvalue1 = \u932f\u8aa4\u7684\u503c\uff1b\u5143\u8cc7\u6599\u4e0d\u80fd\u70ba\u7a7a -xmlrch.warning = ** \u8b66\u544a: {0}\uff0c\u884c: {1}\uff0curi: {2} +xmlrch.errmap = \u8A2D\u5B9A\u5C0D\u6620\u6642\u767C\u751F\u932F\u8AA4: {0} +xmlrch.errmetadata = \u8A2D\u5B9A\u63CF\u8FF0\u8CC7\u6599\u6642\u767C\u751F\u932F\u8AA4: {0} +xmlrch.errinsertval = \u63D2\u5165\u503C\u6642\u767C\u751F\u932F\u8AA4: {0} +xmlrch.errconstr = \u5EFA\u69CB\u5217\u6642\u767C\u751F\u932F\u8AA4: {0} +xmlrch.errdel = \u522A\u9664\u5217\u6642\u767C\u751F\u932F\u8AA4: {0} +xmlrch.errinsert = \u5EFA\u69CB\u63D2\u5165\u5217\u6642\u767C\u751F\u932F\u8AA4 : {0} +xmlrch.errinsdel = \u5EFA\u69CB insdel \u5217\u6642\u767C\u751F\u932F\u8AA4: {0} +xmlrch.errupdate = \u5EFA\u69CB\u66F4\u65B0\u5217\u6642\u767C\u751F\u932F\u8AA4: {0} +xmlrch.errupdrow = \u66F4\u65B0\u5217\u6642\u767C\u751F\u932F\u8AA4: {0} +xmlrch.chars = \u5B57\u5143: +xmlrch.badvalue = \u932F\u8AA4\u7684\u503C; \u5C6C\u6027\u4E0D\u80FD\u70BA\u7A7A\u503C +xmlrch.badvalue1 = \u932F\u8AA4\u7684\u503C; \u63CF\u8FF0\u8CC7\u6599\u4E0D\u80FD\u70BA\u7A7A\u503C +xmlrch.warning = ** \u8B66\u544A: {0}\uFF0C\u884C: {1}\uFF0Curi: {2} #RIOptimisticProvider Exceptions -riop.locking = \u4e0d\u652f\u63f4\u9396\u5b9a\u5206\u985e +riop.locking = \u4E0D\u652F\u63F4\u9396\u5B9A\u5206\u985E #RIXMLProvider exceptions -rixml.unsupp = RIXMLProvider \u4e0d\u652f\u63f4 +rixml.unsupp = RIXMLProvider \u4E0D\u652F\u63F4 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties index bab2c4296a6..a6975e8b63e 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties @@ -50,25 +50,25 @@ FileChooser.directoryDescriptionText=Verzeichnis FileChooser.newFolderErrorText=Fehler beim Erstellen eines neuen Ordners FileChooser.newFolderErrorSeparator= : FileChooser.newFolderParentDoesntExistTitleText=Ordner kann nicht erstellt werden -FileChooser.newFolderParentDoesntExistText=Der Ordner kann nicht erstellt werden.\n\nDas System kann den angegebenen Pfad nicht finden. -FileChooser.renameErrorTitleText=Fehler beim Umbenennen der Datei oder des Ordners +FileChooser.newFolderParentDoesntExistText=Ordner kann nicht erstellt werden.\n\nSystem kann den angegebenen Pfad nicht finden. +FileChooser.renameErrorTitleText=Fehler beim Umbenennen von Datei oder Ordner FileChooser.renameErrorText={0} kann nicht umbenannt werden -FileChooser.renameErrorFileExistsText={0} kann nicht umbenannt werden: Es ist bereits eine Datei mit diesem Namen vorhanden. Geben Sie einen anderen Dateinamen an. +FileChooser.renameErrorFileExistsText={0} kann nicht umbenannt werden: Es ist bereits eine Datei mit dem angegebenen Namen vorhanden. Geben Sie einen anderen Dateinamen an. FileChooser.acceptAllFileFilterText=Alle Dateien FileChooser.cancelButtonText=Abbrechen -FileChooser.cancelButtonMnemonic=65 +FileChooser.cancelButtonMnemonic=67 FileChooser.saveButtonText=Speichern FileChooser.saveButtonMnemonic=83 -FileChooser.openButtonText=\u00d6ffnen -FileChooser.openButtonMnemonic=70 +FileChooser.openButtonText=\u00D6ffnen +FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Speichern -FileChooser.openDialogTitleText=\u00d6ffnen +FileChooser.openDialogTitleText=\u00D6ffnen FileChooser.updateButtonText=Aktualisieren -FileChooser.updateButtonMnemonic=75 +FileChooser.updateButtonMnemonic=85 FileChooser.helpButtonText=Hilfe FileChooser.helpButtonMnemonic=72 -FileChooser.directoryOpenButtonText=\u00d6ffnen -FileChooser.directoryOpenButtonMnemonic=69 +FileChooser.directoryOpenButtonText=\u00D6ffnen +FileChooser.directoryOpenButtonMnemonic=79 # File Size Units FileChooser.fileSizeKiloBytes={0} KB @@ -78,28 +78,28 @@ FileChooser.fileSizeGigaBytes={0} GB # These strings are platform dependent not look and feel dependent. FileChooser.win32.newFolder=Neuer Ordner FileChooser.win32.newFolder.subsequent=Neuer Ordner ({0}) -FileChooser.other.newFolder=Neuer Ordner -FileChooser.other.newFolder.subsequent=Neuer Ordner.{0} +FileChooser.other.newFolder=NewFolder +FileChooser.other.newFolder.subsequent=NewFolder.{0} ## file chooser tooltips ### -FileChooser.cancelButtonToolTipText=Dialogfeld f\u00fcr Dateiauswahl abbrechen -FileChooser.saveButtonToolTipText=Ausgew\u00e4hlte Datei speichern -FileChooser.openButtonToolTipText=Ausgew\u00e4hlte Datei \u00f6ffnen +FileChooser.cancelButtonToolTipText=Dialogfeld f\u00FCr Dateiauswahl schlie\u00DFen +FileChooser.saveButtonToolTipText=Ausgew\u00E4hlte Datei speichern +FileChooser.openButtonToolTipText=Ausgew\u00E4hlte Datei \u00F6ffnen FileChooser.updateButtonToolTipText=Verzeichnisliste aktualisieren -FileChooser.helpButtonToolTipText=Hilfe f\u00fcr Dateiauswahl -FileChooser.directoryOpenButtonToolTipText=Markiertes Verzeichnis \u00f6ffnen +FileChooser.helpButtonToolTipText=FileChooser-Hilfe +FileChooser.directoryOpenButtonToolTipText=Ausgew\u00E4hltes Verzeichnis \u00F6ffnen ############ COLOR CHOOSER STRINGS ############# ColorChooser.previewText=Vorschau ColorChooser.okText=OK ColorChooser.cancelText=Abbrechen -ColorChooser.resetText=Zur\u00fccksetzen +ColorChooser.resetText=Zur\u00FCcksetzen # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic -ColorChooser.resetMnemonic=90 +ColorChooser.resetMnemonic=82 ColorChooser.sampleText=Beispieltext Beispieltext ColorChooser.swatchesNameText=Muster -ColorChooser.swatchesMnemonic=77 +ColorChooser.swatchesMnemonic=83 ColorChooser.swatchesRecentText=Aktuell: # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX # constant, and an index into the text to render the mnemonic as. The @@ -108,20 +108,20 @@ ColorChooser.swatchesRecentText=Aktuell: ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 ColorChooser.hsvHueText=Farbton -ColorChooser.hsvSaturationText=S\u00e4ttigung +ColorChooser.hsvSaturationText=S\u00E4ttigung ColorChooser.hsvValueText=Wert ColorChooser.hsvTransparencyText=Transparenz ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 ColorChooser.hslHueText=Farbton -ColorChooser.hslSaturationText=S\u00e4ttigung +ColorChooser.hslSaturationText=S\u00E4ttigung ColorChooser.hslLightnessText=Helligkeit ColorChooser.hslTransparencyText=Transparenz ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=Rot -ColorChooser.rgbRedMnemonic=82 -ColorChooser.rgbGreenText=Gr\u00fcn +ColorChooser.rgbRedMnemonic=68 +ColorChooser.rgbGreenText=Gr\u00FCn ColorChooser.rgbGreenMnemonic=78 ColorChooser.rgbBlueText=Blau ColorChooser.rgbBlueMnemonic=66 @@ -130,7 +130,7 @@ ColorChooser.rgbHexCodeText=Farbcode ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=Cyan +ColorChooser.cmykCyanText=Zyan ColorChooser.cmykMagentaText=Magenta ColorChooser.cmykYellowText=Gelb ColorChooser.cmykBlackText=Schwarz @@ -141,26 +141,26 @@ ColorChooser.cmykAlphaText=Alpha # We only define mnemonics for YES/NO, but for completeness you can # define mnemonics for any of the buttons. OptionPane.yesButtonText=Ja -OptionPane.yesButtonMnemonic=74 +OptionPane.yesButtonMnemonic=89 OptionPane.noButtonText=Nein OptionPane.noButtonMnemonic=78 OptionPane.okButtonText=OK -OptionPane.okButtonMnemonic=79 +OptionPane.okButtonMnemonic=0 OptionPane.cancelButtonText=Abbrechen -OptionPane.cancelButtonMnemonic=65 -OptionPane.titleText=W\u00e4hlen Sie eine Option aus +OptionPane.cancelButtonMnemonic=0 +OptionPane.titleText=Option ausw\u00E4hlen # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. OptionPane.inputDialogTitle=Eingabe # Title for the dialog for the showMessageDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. -OptionPane.messageDialogTitle=Nachricht +OptionPane.messageDialogTitle=Meldung ############ Printing Dialog Strings ############ PrintingDialog.titleProgressText=Drucken PrintingDialog.titleAbortingText=Drucken (Abbruch) -PrintingDialog.contentInitialText=Druckvorgang l\u00e4uft... +PrintingDialog.contentInitialText=Druckvorgang l\u00E4uft... # The following string will be formatted by a MessageFormat # and {0} will be replaced by page number being printed @@ -169,57 +169,57 @@ PrintingDialog.contentProgressText=Seite {0} wurde gedruckt... PrintingDialog.contentAbortingText=Druckvorgang wird abgebrochen... PrintingDialog.abortButtonText=Abbrechen -PrintingDialog.abortButtonMnemonic=66 -PrintingDialog.abortButtonDisplayedMnemonicIndex=1 +PrintingDialog.abortButtonMnemonic=65 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 PrintingDialog.abortButtonToolTipText=Druckvorgang abbrechen ############ Internal Frame Strings ############ InternalFrame.iconButtonToolTip=Minimieren InternalFrame.maxButtonToolTip=Maximieren InternalFrame.restoreButtonToolTip=Wiederherstellen -InternalFrame.closeButtonToolTip=Schlie\u00dfen +InternalFrame.closeButtonToolTip=Schlie\u00DFen ############ Internal Frame Title Pane Strings ############ InternalFrameTitlePane.restoreButtonText=Wiederherstellen InternalFrameTitlePane.moveButtonText=Verschieben -InternalFrameTitlePane.sizeButtonText=Gr\u00f6\u00dfe +InternalFrameTitlePane.sizeButtonText=Gr\u00F6\u00DFe InternalFrameTitlePane.minimizeButtonText=Minimieren InternalFrameTitlePane.maximizeButtonText=Maximieren -InternalFrameTitlePane.closeButtonText=Schlie\u00dfen +InternalFrameTitlePane.closeButtonText=Schlie\u00DFen ############ Text strings ############# # Used for html forms -FormView.submitButtonText=Abfrage senden -FormView.resetButtonText=Zur\u00fccksetzen +FormView.submitButtonText=Abfrage weiterleiten +FormView.resetButtonText=Zur\u00FCcksetzen FormView.browseFileButtonText=Durchsuchen... ############ Abstract Document Strings ############ -AbstractDocument.styleChangeText=Formatvorlagen\u00e4nderung -AbstractDocument.additionText=Hinzuf\u00fcgen -AbstractDocument.deletionText=L\u00f6schen -AbstractDocument.undoText=R\u00fcckg\u00e4ngig +AbstractDocument.styleChangeText=Formatvorlagen\u00E4nderung +AbstractDocument.additionText=Hinzuf\u00FCgen +AbstractDocument.deletionText=L\u00F6schen +AbstractDocument.undoText=R\u00FCckg\u00E4ngig AbstractDocument.redoText=Wiederherstellen ############ Abstract Button Strings ############ AbstractButton.clickText=Klicken ############ Abstract Undoable Edit Strings ############ -AbstractUndoableEdit.undoText=R\u00fcckg\u00e4ngig +AbstractUndoableEdit.undoText=R\u00FCckg\u00E4ngig AbstractUndoableEdit.redoText=Wiederherstellen ############ Combo Box Strings ############ -ComboBox.togglePopupText=Popup umschalten +ComboBox.togglePopupText=togglePopup ############ Progress Monitor Strings ############ ProgressMonitor.progressText=Fortschritt... ############ Split Pane Strings ############ -SplitPane.leftButtonText=linke Taste -SplitPane.rightButtonText=rechte Taste +SplitPane.leftButtonText=linke Schaltfl\u00E4che +SplitPane.rightButtonText=rechte Schaltfl\u00E4che # Used for Isindex -IsindexView.prompt=Dieser Index kann durchsucht werden. Geben Sie ein Schlagwort ein: +IsindexView.prompt=Dieser Index kann durchsucht werden. Geben Sie Schl\u00FCsselw\u00F6rter f\u00FCr die Suche ein: ############ InternalFrameTitlePane Strings ############ InternalFrameTitlePane.iconifyButtonAccessibleName=Als Symbol darstellen InternalFrameTitlePane.maximizeButtonAccessibleName=Maximieren -InternalFrameTitlePane.closeButtonAccessibleName=Schlie\u00dfen +InternalFrameTitlePane.closeButtonAccessibleName=Schlie\u00DFen diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties index abc99fadb07..1b96eab4096 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties @@ -45,30 +45,30 @@ # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.fileDescriptionText=Archivo gen\u00e9rico +FileChooser.fileDescriptionText=Archivo Gen\u00E9rico FileChooser.directoryDescriptionText=Directorio FileChooser.newFolderErrorText=Error al crear una nueva carpeta FileChooser.newFolderErrorSeparator= : FileChooser.newFolderParentDoesntExistTitleText=No se ha podido crear la carpeta -FileChooser.newFolderParentDoesntExistText=No se ha podido crear la carpeta.\n\nEl sistema no puede encontrar la ruta especificada. -FileChooser.renameErrorTitleText=Error al cambiar de nombre el archivo o la carpeta -FileChooser.renameErrorText=No se puede cambiar de nombre {0} -FileChooser.renameErrorFileExistsText=No se puede cambiar de nombre {0}: Ya existe un archivo con el nombre que ha especificado. Especifique otro nombre de archivo. -FileChooser.acceptAllFileFilterText=Todos los archivos +FileChooser.newFolderParentDoesntExistText=No se ha podido crear la carpeta.\n\nEl sistema no puede encontrar la ruta de acceso especificada. +FileChooser.renameErrorTitleText=Error al cambiar el nombre del archivo o carpeta +FileChooser.renameErrorText=No se puede cambiar el nombre de {0} +FileChooser.renameErrorFileExistsText=No se puede cambiar el nombre de {0}: ya existe un archivo con el nombre especificado. Especifique otro nombre de archivo. +FileChooser.acceptAllFileFilterText=Todos los Archivos FileChooser.cancelButtonText=Cancelar FileChooser.cancelButtonMnemonic=67 FileChooser.saveButtonText=Guardar -FileChooser.saveButtonMnemonic=71 +FileChooser.saveButtonMnemonic=83 FileChooser.openButtonText=Abrir -FileChooser.openButtonMnemonic=65 +FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Guardar FileChooser.openDialogTitleText=Abrir FileChooser.updateButtonText=Actualizar -FileChooser.updateButtonMnemonic=84 +FileChooser.updateButtonMnemonic=85 FileChooser.helpButtonText=Ayuda -FileChooser.helpButtonMnemonic=89 +FileChooser.helpButtonMnemonic=72 FileChooser.directoryOpenButtonText=Abrir -FileChooser.directoryOpenButtonMnemonic=82 +FileChooser.directoryOpenButtonMnemonic=79 # File Size Units FileChooser.fileSizeKiloBytes={0} KB @@ -76,30 +76,30 @@ FileChooser.fileSizeMegaBytes={0} MB FileChooser.fileSizeGigaBytes={0} GB # These strings are platform dependent not look and feel dependent. -FileChooser.win32.newFolder=Carpeta nueva -FileChooser.win32.newFolder.subsequent=Carpeta nueva ({0}) -FileChooser.other.newFolder=Carpeta nueva -FileChooser.other.newFolder.subsequent=Carpeta nueva.{0} +FileChooser.win32.newFolder=Nueva Carpeta +FileChooser.win32.newFolder.subsequent=Nueva Carpeta ({0}) +FileChooser.other.newFolder=Nueva Carpeta +FileChooser.other.newFolder.subsequent=Nueva Carpeta.{0} ## file chooser tooltips ### -FileChooser.cancelButtonToolTipText=Cuadro de di\u00e1logo para cancelar elector de archivo +FileChooser.cancelButtonToolTipText=Cuadro de di\u00E1logo para abortar el selector de archivos FileChooser.saveButtonToolTipText=Guardar archivo seleccionado FileChooser.openButtonToolTipText=Abrir archivo seleccionado FileChooser.updateButtonToolTipText=Actualizar lista de directorios -FileChooser.helpButtonToolTipText=Ayuda elector de archivos +FileChooser.helpButtonToolTipText=Ayuda del Selector de Archivos FileChooser.directoryOpenButtonToolTipText=Abrir directorio seleccionado ############ COLOR CHOOSER STRINGS ############# -ColorChooser.previewText=Vista previa +ColorChooser.previewText=Presentaci\u00F3n Preliminar ColorChooser.okText=Aceptar ColorChooser.cancelText=Cancelar ColorChooser.resetText=Restablecer # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic ColorChooser.resetMnemonic=82 -ColorChooser.sampleText=Texto de ejemplo Texto de ejemplo +ColorChooser.sampleText=Texto de Ejemplo Texto de Ejemplo ColorChooser.swatchesNameText=Muestras -ColorChooser.swatchesMnemonic=77 +ColorChooser.swatchesMnemonic=83 ColorChooser.swatchesRecentText=Reciente: # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX # constant, and an index into the text to render the mnemonic as. The @@ -107,26 +107,26 @@ ColorChooser.swatchesRecentText=Reciente: # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Matriz -ColorChooser.hsvSaturationText=Saturaci\u00f3n +ColorChooser.hsvHueText=Matiz +ColorChooser.hsvSaturationText=Saturaci\u00F3n ColorChooser.hsvValueText=Valor ColorChooser.hsvTransparencyText=Transparencia ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Matriz -ColorChooser.hslSaturationText=Saturaci\u00f3n -ColorChooser.hslLightnessText=Brillo +ColorChooser.hslHueText=Matiz +ColorChooser.hslSaturationText=Saturaci\u00F3n +ColorChooser.hslLightnessText=Iluminaci\u00F3n ColorChooser.hslTransparencyText=Transparencia ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=Rojo -ColorChooser.rgbRedMnemonic=74 +ColorChooser.rgbRedMnemonic=68 ColorChooser.rgbGreenText=Verde -ColorChooser.rgbGreenMnemonic=86 +ColorChooser.rgbGreenMnemonic=78 ColorChooser.rgbBlueText=Azul -ColorChooser.rgbBlueMnemonic=76 -ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=C\u00f3digo de color +ColorChooser.rgbBlueMnemonic=66 +ColorChooser.rgbAlphaText=Alfa +ColorChooser.rgbHexCodeText=C\u00F3digo de Color ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 @@ -134,21 +134,21 @@ ColorChooser.cmykCyanText=Cian ColorChooser.cmykMagentaText=Magenta ColorChooser.cmykYellowText=Amarillo ColorChooser.cmykBlackText=Negro -ColorChooser.cmykAlphaText=Alpha +ColorChooser.cmykAlphaText=Alfa ############ OPTION PANE STRINGS ############# # Mnemonic keys correspond to KeyEvent.VK_XXX constant # We only define mnemonics for YES/NO, but for completeness you can # define mnemonics for any of the buttons. -OptionPane.yesButtonText=S\u00ed -OptionPane.yesButtonMnemonic=83 +OptionPane.yesButtonText=S\u00ED +OptionPane.yesButtonMnemonic=89 OptionPane.noButtonText=No OptionPane.noButtonMnemonic=78 OptionPane.okButtonText=Aceptar OptionPane.okButtonMnemonic=0 OptionPane.cancelButtonText=Cancelar OptionPane.cancelButtonMnemonic=0 -OptionPane.titleText=Seleccionar una opci\u00f3n +OptionPane.titleText=Seleccionar una Opci\u00F3n # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. OptionPane.inputDialogTitle=Entrada @@ -157,21 +157,21 @@ OptionPane.inputDialogTitle=Entrada OptionPane.messageDialogTitle=Mensaje ############ Printing Dialog Strings ############ -PrintingDialog.titleProgressText=Impresi\u00f3n -PrintingDialog.titleAbortingText=Impresi\u00f3n (cancelaci\u00f3n) +PrintingDialog.titleProgressText=Impresi\u00F3n +PrintingDialog.titleAbortingText=Impresi\u00F3n (Abortando) -PrintingDialog.contentInitialText=Impresi\u00f3n en curso... +PrintingDialog.contentInitialText=Impresi\u00F3n en curso... # The following string will be formatted by a MessageFormat # and {0} will be replaced by page number being printed -PrintingDialog.contentProgressText=P\u00e1gina impresa {0}... +PrintingDialog.contentProgressText=P\u00E1gina impresa {0}... -PrintingDialog.contentAbortingText=Cancelando la impresi\u00f3n... +PrintingDialog.contentAbortingText=Abortando la impresi\u00F3n... -PrintingDialog.abortButtonText=Cancelar -PrintingDialog.abortButtonMnemonic=67 +PrintingDialog.abortButtonText=Abortar +PrintingDialog.abortButtonMnemonic=65 PrintingDialog.abortButtonDisplayedMnemonicIndex=0 -PrintingDialog.abortButtonToolTipText=Cancelar la impresi\u00f3n +PrintingDialog.abortButtonToolTipText=Abortar Impresi\u00F3n ############ Internal Frame Strings ############ InternalFrame.iconButtonToolTip=Minimizar @@ -182,21 +182,21 @@ InternalFrame.closeButtonToolTip=Cerrar ############ Internal Frame Title Pane Strings ############ InternalFrameTitlePane.restoreButtonText=Restaurar InternalFrameTitlePane.moveButtonText=Mover -InternalFrameTitlePane.sizeButtonText=Tama\u00f1o +InternalFrameTitlePane.sizeButtonText=Tama\u00F1o InternalFrameTitlePane.minimizeButtonText=Minimizar InternalFrameTitlePane.maximizeButtonText=Maximizar InternalFrameTitlePane.closeButtonText=Cerrar ############ Text strings ############# # Used for html forms -FormView.submitButtonText=Enviar consulta +FormView.submitButtonText=Enviar Consulta FormView.resetButtonText=Restablecer FormView.browseFileButtonText=Examinar... ############ Abstract Document Strings ############ AbstractDocument.styleChangeText=cambio de estilo -AbstractDocument.additionText=adici\u00f3n -AbstractDocument.deletionText=supresi\u00f3n +AbstractDocument.additionText=agregaci\u00F3n +AbstractDocument.deletionText=supresi\u00F3n AbstractDocument.undoText=Deshacer AbstractDocument.redoText=Rehacer @@ -214,12 +214,12 @@ ComboBox.togglePopupText=togglePopup ProgressMonitor.progressText=Progreso... ############ Split Pane Strings ############ -SplitPane.leftButtonText=bot\u00f3n izquierdo -SplitPane.rightButtonText=bot\u00f3n derecho +SplitPane.leftButtonText=bot\u00F3n izquierdo +SplitPane.rightButtonText=bot\u00F3n derecho # Used for Isindex -IsindexView.prompt=En este \u00edndice se pueden efectuar b\u00fasquedas. Escriba las palabras clave de b\u00fasqueda: +IsindexView.prompt=En este \u00EDndice se pueden efectuar b\u00FAsquedas. Escriba las palabras clave de b\u00FAsqueda: ############ InternalFrameTitlePane Strings ############ -InternalFrameTitlePane.iconifyButtonAccessibleName=Convertir en icono +InternalFrameTitlePane.iconifyButtonAccessibleName=Convertir en Icono InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar InternalFrameTitlePane.closeButtonAccessibleName=Cerrar diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties index e2085390876..3f8dc5b7bf0 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties @@ -45,90 +45,90 @@ # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.fileDescriptionText=Fichier g\u00e9n\u00e9rique -FileChooser.directoryDescriptionText=R\u00e9pertoire -FileChooser.newFolderErrorText=Erreur lors de la cr\u00e9ation du nouveau dossier +FileChooser.fileDescriptionText=Fichier g\u00E9n\u00E9rique +FileChooser.directoryDescriptionText=R\u00E9pertoire +FileChooser.newFolderErrorText=Erreur lors de la cr\u00E9ation du dossier FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Impossible de cr\u00e9er le dossier -FileChooser.newFolderParentDoesntExistText=Impossible de cr\u00e9er le dossier.\n\nLe syst\u00e8me ne trouve pas le chemin sp\u00e9cifi\u00e9. -FileChooser.renameErrorTitleText=Erreur lors de la modification du nom du fichier ou du dossier +FileChooser.newFolderParentDoesntExistTitleText=Impossible de cr\u00E9er le dossier +FileChooser.newFolderParentDoesntExistText=Impossible de cr\u00E9er le dossier.\n\nLe syst\u00E8me ne parvient pas \u00E0 trouver le chemin indiqu\u00E9. +FileChooser.renameErrorTitleText=Erreur lors du changement de nom du fichier ou du dossier FileChooser.renameErrorText=Impossible de renommer {0} -FileChooser.renameErrorFileExistsText=Impossible de renommer {0}\u00a0: un fichier portant ce nom existe d\u00e9j\u00e0. Choisissez un nom diff\u00e9rent. +FileChooser.renameErrorFileExistsText=Impossible de renommer {0} : il existe d\u00E9j\u00E0 un fichier portant le nom indiqu\u00E9. Indiquez-en un autre. FileChooser.acceptAllFileFilterText=Tous les fichiers FileChooser.cancelButtonText=Annuler -FileChooser.cancelButtonMnemonic=65 +FileChooser.cancelButtonMnemonic=67 FileChooser.saveButtonText=Enregistrer -FileChooser.saveButtonMnemonic=69 +FileChooser.saveButtonMnemonic=83 FileChooser.openButtonText=Ouvrir FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Enregistrer FileChooser.openDialogTitleText=Ouvrir -FileChooser.updateButtonText=Mise \u00e0 jour -FileChooser.updateButtonMnemonic=77 +FileChooser.updateButtonText=Mettre \u00E0 jour +FileChooser.updateButtonMnemonic=85 FileChooser.helpButtonText=Aide -FileChooser.helpButtonMnemonic=68 +FileChooser.helpButtonMnemonic=72 FileChooser.directoryOpenButtonText=Ouvrir FileChooser.directoryOpenButtonMnemonic=79 # File Size Units -FileChooser.fileSizeKiloBytes={0} Ko -FileChooser.fileSizeMegaBytes={0} Mo -FileChooser.fileSizeGigaBytes={0} Go +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB # These strings are platform dependent not look and feel dependent. FileChooser.win32.newFolder=Nouveau dossier FileChooser.win32.newFolder.subsequent=Nouveau dossier ({0}) -FileChooser.other.newFolder=Nouveau dossier -FileChooser.other.newFolder.subsequent=Nouveau dossier.{0} +FileChooser.other.newFolder=NewFolder +FileChooser.other.newFolder.subsequent=NewFolder.{0} ## file chooser tooltips ### -FileChooser.cancelButtonToolTipText=Ferme la bo\u00eete de dialogue du s\u00e9lecteur de fichiers -FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00e9lectionn\u00e9 -FileChooser.openButtonToolTipText=Ouvre le fichier s\u00e9lectionn\u00e9 -FileChooser.updateButtonToolTipText=Met \u00e0 jour la liste des r\u00e9pertoires -FileChooser.helpButtonToolTipText=Aide sur le s\u00e9lecteur de fichiers -FileChooser.directoryOpenButtonToolTipText=Ouvrir le r\u00e9pertoire s\u00e9lectionn\u00e9 +FileChooser.cancelButtonToolTipText=Ferme la bo\u00EEte de dialogue du s\u00E9lecteur de fichiers +FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00E9lectionn\u00E9 +FileChooser.openButtonToolTipText=Ouvre le fichier s\u00E9lectionn\u00E9 +FileChooser.updateButtonToolTipText=Met \u00E0 jour la liste des r\u00E9pertoires +FileChooser.helpButtonToolTipText=Aide du s\u00E9lecteur de fichiers +FileChooser.directoryOpenButtonToolTipText=Ouvre le r\u00E9pertoire s\u00E9lectionn\u00E9 ############ COLOR CHOOSER STRINGS ############# -ColorChooser.previewText=Aper\u00e7u +ColorChooser.previewText=Aper\u00E7u ColorChooser.okText=OK ColorChooser.cancelText=Annuler -ColorChooser.resetText=Restaurer +ColorChooser.resetText=R\u00E9initialiser # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic ColorChooser.resetMnemonic=82 ColorChooser.sampleText=Echantillon de texte Echantillon de texte ColorChooser.swatchesNameText=Echantillons -ColorChooser.swatchesMnemonic=69 +ColorChooser.swatchesMnemonic=83 ColorChooser.swatchesRecentText=Dernier : # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. -ColorChooser.hsvNameText=HSV +ColorChooser.hsvNameText=TSV ColorChooser.hsvMnemonic=72 ColorChooser.hsvHueText=Teinte ColorChooser.hsvSaturationText=Saturation ColorChooser.hsvValueText=Valeur ColorChooser.hsvTransparencyText=Transparence -ColorChooser.hslNameText=HSL +ColorChooser.hslNameText=TSL ColorChooser.hslMnemonic=76 ColorChooser.hslHueText=Teinte ColorChooser.hslSaturationText=Saturation -ColorChooser.hslLightnessText=Clart\u00e9 +ColorChooser.hslLightnessText=Lumi\u00E8re ColorChooser.hslTransparencyText=Transparence ColorChooser.rgbNameText=RVB -ColorChooser.rgbMnemonic=86 +ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=Rouge -ColorChooser.rgbRedMnemonic=71 +ColorChooser.rgbRedMnemonic=68 ColorChooser.rgbGreenText=Vert -ColorChooser.rgbGreenMnemonic=84 +ColorChooser.rgbGreenMnemonic=78 ColorChooser.rgbBlueText=Bleu ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alpha ColorChooser.rgbHexCodeText=Code couleur ColorChooser.rgbHexCodeMnemonic=67 -ColorChooser.cmykNameText=CMYK +ColorChooser.cmykNameText=CMJN ColorChooser.cmykMnemonic=77 ColorChooser.cmykCyanText=Cyan ColorChooser.cmykMagentaText=Magenta @@ -141,30 +141,30 @@ ColorChooser.cmykAlphaText=Alpha # We only define mnemonics for YES/NO, but for completeness you can # define mnemonics for any of the buttons. OptionPane.yesButtonText=Oui -OptionPane.yesButtonMnemonic=79 +OptionPane.yesButtonMnemonic=89 OptionPane.noButtonText=Non OptionPane.noButtonMnemonic=78 OptionPane.okButtonText=OK OptionPane.okButtonMnemonic=0 OptionPane.cancelButtonText=Annuler OptionPane.cancelButtonMnemonic=0 -OptionPane.titleText=S\u00e9lectionnez une option +OptionPane.titleText=S\u00E9lectionner une option # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. -OptionPane.inputDialogTitle=Entr\u00e9e +OptionPane.inputDialogTitle=Entr\u00E9e # Title for the dialog for the showMessageDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. OptionPane.messageDialogTitle=Message ############ Printing Dialog Strings ############ PrintingDialog.titleProgressText=Impression -PrintingDialog.titleAbortingText=Impression (Abandon) +PrintingDialog.titleAbortingText=Impression (abandon) PrintingDialog.contentInitialText=Impression en cours... # The following string will be formatted by a MessageFormat # and {0} will be replaced by page number being printed -PrintingDialog.contentProgressText=Page imprim\u00e9e {0}... +PrintingDialog.contentProgressText=Page {0} imprim\u00E9e... PrintingDialog.contentAbortingText=Abandon de l'impression... @@ -174,38 +174,38 @@ PrintingDialog.abortButtonDisplayedMnemonicIndex=0 PrintingDialog.abortButtonToolTipText=Abandonner l'impression ############ Internal Frame Strings ############ -InternalFrame.iconButtonToolTip=R\u00e9duire +InternalFrame.iconButtonToolTip=R\u00E9duire InternalFrame.maxButtonToolTip=Agrandir InternalFrame.restoreButtonToolTip=Restaurer InternalFrame.closeButtonToolTip=Fermer ############ Internal Frame Title Pane Strings ############ InternalFrameTitlePane.restoreButtonText=Restaurer -InternalFrameTitlePane.moveButtonText=D\u00e9placer +InternalFrameTitlePane.moveButtonText=D\u00E9placer InternalFrameTitlePane.sizeButtonText=Taille -InternalFrameTitlePane.minimizeButtonText=R\u00e9duire +InternalFrameTitlePane.minimizeButtonText=R\u00E9duire InternalFrameTitlePane.maximizeButtonText=Agrandir InternalFrameTitlePane.closeButtonText=Fermer ############ Text strings ############# # Used for html forms -FormView.submitButtonText=Soumettre la requ\u00eate -FormView.resetButtonText=Restaurer +FormView.submitButtonText=Soumettre la requ\u00EAte +FormView.resetButtonText=R\u00E9initialiser FormView.browseFileButtonText=Parcourir... ############ Abstract Document Strings ############ AbstractDocument.styleChangeText=modification de style AbstractDocument.additionText=ajout AbstractDocument.deletionText=suppression -AbstractDocument.undoText=D\u00e9faire -AbstractDocument.redoText=Refaire +AbstractDocument.undoText=Annuler +AbstractDocument.redoText=R\u00E9tablir ############ Abstract Button Strings ############ -AbstractButton.clickText=cliquez sur +AbstractButton.clickText=cliquer ############ Abstract Undoable Edit Strings ############ -AbstractUndoableEdit.undoText=D\u00e9faire -AbstractUndoableEdit.redoText=Refaire +AbstractUndoableEdit.undoText=Annuler +AbstractUndoableEdit.redoText=R\u00E9tablir ############ Combo Box Strings ############ ComboBox.togglePopupText=togglePopup @@ -217,9 +217,9 @@ ProgressMonitor.progressText=Progression... SplitPane.leftButtonText=bouton gauche SplitPane.rightButtonText=bouton droit # Used for Isindex -IsindexView.prompt=Ceci est un index de recherche. Tapez des mots-cl\u00e9s pour la recherche : +IsindexView.prompt=Ceci est un index de recherche. Tapez des mots-cl\u00E9s pour la recherche : ############ InternalFrameTitlePane Strings ############ -InternalFrameTitlePane.iconifyButtonAccessibleName=R\u00e9duire +InternalFrameTitlePane.iconifyButtonAccessibleName=R\u00E9duire InternalFrameTitlePane.maximizeButtonAccessibleName=Agrandir InternalFrameTitlePane.closeButtonAccessibleName=Fermer diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties index 92b4e643974..da914cbcffe 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties @@ -50,25 +50,25 @@ FileChooser.directoryDescriptionText=Directory FileChooser.newFolderErrorText=Errore durante la creazione della nuova cartella FileChooser.newFolderErrorSeparator= : FileChooser.newFolderParentDoesntExistTitleText=Impossibile creare la cartella -FileChooser.newFolderParentDoesntExistText=Impossibile creare la cartella.\n\nPercorso specificato non trovato nel sistema. -FileChooser.renameErrorTitleText=Errore di ridenominazione del file o della cartella +FileChooser.newFolderParentDoesntExistText=Impossibile creare la cartella.\n\nIl sistema non \u00E8 in grado di trovare il percorso specificato. +FileChooser.renameErrorTitleText=Errore durante la ridenominazione del file o della cartella FileChooser.renameErrorText=Impossibile rinominare {0} -FileChooser.renameErrorFileExistsText=Impossibile rinominare {0}: esiste gi\u00e0 un file con il nome specificato. Specificare un nome file alternativo. +FileChooser.renameErrorFileExistsText=Impossibile rinominare {0}: esiste gi\u00E0 un file con il nome specificato. Specificare un altro nome. FileChooser.acceptAllFileFilterText=Tutti i file FileChooser.cancelButtonText=Annulla -FileChooser.cancelButtonMnemonic=65 +FileChooser.cancelButtonMnemonic=67 FileChooser.saveButtonText=Salva FileChooser.saveButtonMnemonic=83 FileChooser.openButtonText=Apri -FileChooser.openButtonMnemonic=80 +FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Salva FileChooser.openDialogTitleText=Apri FileChooser.updateButtonText=Aggiorna -FileChooser.updateButtonMnemonic=71 +FileChooser.updateButtonMnemonic=85 FileChooser.helpButtonText=? -FileChooser.helpButtonMnemonic=63 +FileChooser.helpButtonMnemonic=72 FileChooser.directoryOpenButtonText=Apri -FileChooser.directoryOpenButtonMnemonic=82 +FileChooser.directoryOpenButtonMnemonic=79 # File Size Units FileChooser.fileSizeKiloBytes={0} KB @@ -78,28 +78,28 @@ FileChooser.fileSizeGigaBytes={0} GB # These strings are platform dependent not look and feel dependent. FileChooser.win32.newFolder=Nuova cartella FileChooser.win32.newFolder.subsequent=Nuova cartella ({0}) -FileChooser.other.newFolder=Nuova cartella -FileChooser.other.newFolder.subsequent=Nuova cartella.{0} +FileChooser.other.newFolder=NewFolder +FileChooser.other.newFolder.subsequent=NewFolder.{0} ## file chooser tooltips ### -FileChooser.cancelButtonToolTipText=Finestra di dialogo Interrompi selezione file -FileChooser.saveButtonToolTipText=Salva file selezionato -FileChooser.openButtonToolTipText=Apri file selezionato -FileChooser.updateButtonToolTipText=Aggiorna elenco directory -FileChooser.helpButtonToolTipText=Guida di Selezione file -FileChooser.directoryOpenButtonToolTipText=Apri directory selezionata +FileChooser.cancelButtonToolTipText=Chiude la finestra di dialogo di selezione file +FileChooser.saveButtonToolTipText=Salva il file selezionato +FileChooser.openButtonToolTipText=Apre il file selezionato +FileChooser.updateButtonToolTipText=Aggiorna la lista directory +FileChooser.helpButtonToolTipText=Guida FileChooser +FileChooser.directoryOpenButtonToolTipText=Apre la directory selezionata ############ COLOR CHOOSER STRINGS ############# ColorChooser.previewText=Anteprima ColorChooser.okText=OK ColorChooser.cancelText=Annulla -ColorChooser.resetText=Ripristina +ColorChooser.resetText=Reimposta # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic ColorChooser.resetMnemonic=82 ColorChooser.sampleText=Testo di prova Testo di prova ColorChooser.swatchesNameText=Colori campione -ColorChooser.swatchesMnemonic=67 +ColorChooser.swatchesMnemonic=83 ColorChooser.swatchesRecentText=Recenti: # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX # constant, and an index into the text to render the mnemonic as. The @@ -107,26 +107,26 @@ ColorChooser.swatchesRecentText=Recenti: # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Tonalit\u00e0 +ColorChooser.hsvHueText=Tonalit\u00E0 ColorChooser.hsvSaturationText=Saturazione ColorChooser.hsvValueText=Valore ColorChooser.hsvTransparencyText=Trasparenza ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Tonalit\u00e0 +ColorChooser.hslHueText=Tonalit\u00E0 ColorChooser.hslSaturationText=Saturazione -ColorChooser.hslLightnessText=Luminosit\u00e0 +ColorChooser.hslLightnessText=Luminosit\u00E0 ColorChooser.hslTransparencyText=Trasparenza ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=Rosso -ColorChooser.rgbRedMnemonic=79 +ColorChooser.rgbRedMnemonic=68 ColorChooser.rgbGreenText=Verde -ColorChooser.rgbGreenMnemonic=69 +ColorChooser.rgbGreenMnemonic=78 ColorChooser.rgbBlueText=Blu ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alfa -ColorChooser.rgbHexCodeText=Codice colore +ColorChooser.rgbHexCodeText=Codice colori ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 @@ -140,14 +140,14 @@ ColorChooser.cmykAlphaText=Alfa # Mnemonic keys correspond to KeyEvent.VK_XXX constant # We only define mnemonics for YES/NO, but for completeness you can # define mnemonics for any of the buttons. -OptionPane.yesButtonText=S\u00ec -OptionPane.yesButtonMnemonic=83 +OptionPane.yesButtonText=S\u00EC +OptionPane.yesButtonMnemonic=89 OptionPane.noButtonText=No OptionPane.noButtonMnemonic=78 OptionPane.okButtonText=OK -OptionPane.okButtonMnemonic=79 +OptionPane.okButtonMnemonic=0 OptionPane.cancelButtonText=Annulla -OptionPane.cancelButtonMnemonic=65 +OptionPane.cancelButtonMnemonic=0 OptionPane.titleText=Selezionare una opzione # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. @@ -169,7 +169,7 @@ PrintingDialog.contentProgressText=Pagina stampata {0}... PrintingDialog.contentAbortingText=Interruzione della stampa... PrintingDialog.abortButtonText=Interrompi -PrintingDialog.abortButtonMnemonic=73 +PrintingDialog.abortButtonMnemonic=65 PrintingDialog.abortButtonDisplayedMnemonicIndex=0 PrintingDialog.abortButtonToolTipText=Interrompi la stampa @@ -189,12 +189,12 @@ InternalFrameTitlePane.closeButtonText=Chiudi ############ Text strings ############# # Used for html forms -FormView.submitButtonText=Invia query -FormView.resetButtonText=Ripristina +FormView.submitButtonText=Sottometti query +FormView.resetButtonText=Reimposta FormView.browseFileButtonText=Sfoglia... ############ Abstract Document Strings ############ -AbstractDocument.styleChangeText=cambiamento di stile +AbstractDocument.styleChangeText=modifica di stile AbstractDocument.additionText=aggiunta AbstractDocument.deletionText=eliminazione AbstractDocument.undoText=Annulla @@ -217,7 +217,7 @@ ProgressMonitor.progressText=Avanzamento... SplitPane.leftButtonText=tasto sinistro SplitPane.rightButtonText=tasto destro # Used for Isindex -IsindexView.prompt=Questo \u00e8 un indice di ricerca. Immettere le parole chiave: +IsindexView.prompt=Questo \u00E8 un indice di ricerca. Immettere le parole chiave: ############ InternalFrameTitlePane Strings ############ InternalFrameTitlePane.iconifyButtonAccessibleName=Riduci a icona diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties index eda6e94917d..bcd333953d9 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties @@ -45,181 +45,181 @@ # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.fileDescriptionText=\u6c4e\u7528\u30d5\u30a1\u30a4\u30eb -FileChooser.directoryDescriptionText=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea -FileChooser.newFolderErrorText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0\u306e\u4f5c\u6210\u306b\u5931\u6557 +FileChooser.fileDescriptionText=\u6C4E\u7528\u30D5\u30A1\u30A4\u30EB +FileChooser.directoryDescriptionText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +FileChooser.newFolderErrorText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210\u30A8\u30E9\u30FC FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093 -FileChooser.newFolderParentDoesntExistText=\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002\n\n\u6307\u5b9a\u3055\u308c\u305f\u30d1\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -FileChooser.renameErrorTitleText=\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30d5\u30a9\u30eb\u30c0\u306e\u540d\u524d\u5909\u66f4\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -FileChooser.renameErrorText={0} \u306e\u540d\u524d\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002 -FileChooser.renameErrorFileExistsText={0} \u306e\u540d\u524d\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093: \u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb -FileChooser.cancelButtonText=\u53d6\u6d88\u3057 +FileChooser.newFolderParentDoesntExistTitleText=\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +FileChooser.newFolderParentDoesntExistText=\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\n\n\u6307\u5B9A\u3057\u305F\u30D1\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +FileChooser.renameErrorTitleText=\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30D5\u30A9\u30EB\u30C0\u306E\u540D\u524D\u5909\u66F4\u30A8\u30E9\u30FC +FileChooser.renameErrorText={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093 +FileChooser.renameErrorFileExistsText={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093: \u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB +FileChooser.cancelButtonText=\u53D6\u6D88 FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\u4fdd\u5b58 +FileChooser.saveButtonText=\u4FDD\u5B58 FileChooser.saveButtonMnemonic=83 -FileChooser.openButtonText=\u958b\u304f +FileChooser.openButtonText=\u958B\u304F FileChooser.openButtonMnemonic=79 -FileChooser.saveDialogTitleText=\u4fdd\u5b58 -FileChooser.openDialogTitleText=\u958b\u304f -FileChooser.updateButtonText=\u66f4\u65b0(U) +FileChooser.saveDialogTitleText=\u4FDD\u5B58 +FileChooser.openDialogTitleText=\u958B\u304F +FileChooser.updateButtonText=\u66F4\u65B0 FileChooser.updateButtonMnemonic=85 -FileChooser.helpButtonText=\u30d8\u30eb\u30d7(H) +FileChooser.helpButtonText=\u30D8\u30EB\u30D7 FileChooser.helpButtonMnemonic=72 -FileChooser.directoryOpenButtonText=\u958b\u304f +FileChooser.directoryOpenButtonText=\u958B\u304F FileChooser.directoryOpenButtonMnemonic=79 # File Size Units -FileChooser.fileSizeKiloBytes={0} K \u30d0\u30a4\u30c8 -FileChooser.fileSizeMegaBytes={0} M \u30d0\u30a4\u30c8 -FileChooser.fileSizeGigaBytes={0} G \u30d0\u30a4\u30c8 +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB # These strings are platform dependent not look and feel dependent. -FileChooser.win32.newFolder=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 -FileChooser.win32.newFolder.subsequent=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 ({0}) -FileChooser.other.newFolder=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 -FileChooser.other.newFolder.subsequent=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0.{0} +FileChooser.win32.newFolder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 +FileChooser.win32.newFolder.subsequent=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0({0}) +FileChooser.other.newFolder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 +FileChooser.other.newFolder.subsequent=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0.{0} ## file chooser tooltips ### -FileChooser.cancelButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u7d42\u4e86 -FileChooser.saveButtonToolTipText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58 -FileChooser.openButtonToolTipText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f -FileChooser.updateButtonToolTipText=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4e00\u89a7\u3092\u66f4\u65b0 -FileChooser.helpButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u30d8\u30eb\u30d7 -FileChooser.directoryOpenButtonToolTipText=\u9078\u629e\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u958b\u304f +FileChooser.cancelButtonToolTipText=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u7D42\u4E86\u3057\u307E\u3059 +FileChooser.saveButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3057\u307E\u3059 +FileChooser.openButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304D\u307E\u3059 +FileChooser.updateButtonToolTipText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30EA\u30B9\u30C8\u3092\u66F4\u65B0\u3057\u307E\u3059 +FileChooser.helpButtonToolTipText=FileChooser\u306E\u30D8\u30EB\u30D7\u3067\u3059 +FileChooser.directoryOpenButtonToolTipText=\u9078\u629E\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u958B\u304D\u307E\u3059 ############ COLOR CHOOSER STRINGS ############# -ColorChooser.previewText=\u30d7\u30ec\u30d3\u30e5\u30fc -ColorChooser.okText=\u4e86\u89e3 -ColorChooser.cancelText=\u53d6\u6d88\u3057 -ColorChooser.resetText=\u30ea\u30bb\u30c3\u30c8(R) +ColorChooser.previewText=\u30D7\u30EC\u30D3\u30E5\u30FC +ColorChooser.okText=OK +ColorChooser.cancelText=\u53D6\u6D88 +ColorChooser.resetText=\u30EA\u30BB\u30C3\u30C8 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic ColorChooser.resetMnemonic=82 -ColorChooser.sampleText=\u30b5\u30f3\u30d7\u30eb\u30c6\u30ad\u30b9\u30c8 \u30b5\u30f3\u30d7\u30eb\u30c6\u30ad\u30b9\u30c8 -ColorChooser.swatchesNameText=\u30b5\u30f3\u30d7\u30eb(S) +ColorChooser.sampleText=\u30B5\u30F3\u30D7\u30EB\u30FB\u30C6\u30AD\u30B9\u30C8 \u30B5\u30F3\u30D7\u30EB\u30FB\u30C6\u30AD\u30B9\u30C8 +ColorChooser.swatchesNameText=\u30B5\u30F3\u30D7\u30EB ColorChooser.swatchesMnemonic=83 -ColorChooser.swatchesRecentText=\u6700\u65b0: +ColorChooser.swatchesRecentText=\u6700\u65B0: # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=\u8272\u5408\u3044 -ColorChooser.hsvSaturationText=\u5f69\u5ea6 +ColorChooser.hsvHueText=\u8272\u76F8 +ColorChooser.hsvSaturationText=\u5F69\u5EA6 ColorChooser.hsvValueText=\u5024 -ColorChooser.hsvTransparencyText=\u900f\u660e\u5ea6 +ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6 ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=\u8272\u5408\u3044 -ColorChooser.hslSaturationText=\u5f69\u5ea6 -ColorChooser.hslLightnessText=\u660e\u5ea6 -ColorChooser.hslTransparencyText=\u900f\u660e\u5ea6 +ColorChooser.hslHueText=\u8272\u76F8 +ColorChooser.hslSaturationText=\u5F69\u5EA6 +ColorChooser.hslLightnessText=\u660E\u5EA6 +ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6 ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 -ColorChooser.rgbRedText=\u8d64(D) +ColorChooser.rgbRedText=\u8D64 ColorChooser.rgbRedMnemonic=68 -ColorChooser.rgbGreenText=\u7dd1(N) +ColorChooser.rgbGreenText=\u7DD1 ColorChooser.rgbGreenMnemonic=78 -ColorChooser.rgbBlueText=\u9752(B) +ColorChooser.rgbBlueText=\u9752 ColorChooser.rgbBlueMnemonic=66 -ColorChooser.rgbAlphaText=\u30a2\u30eb\u30d5\u30a1 -ColorChooser.rgbHexCodeText=\u8272\u30b3\u30fc\u30c9 +ColorChooser.rgbAlphaText=\u30A2\u30EB\u30D5\u30A1 +ColorChooser.rgbHexCodeText=\u8272\u30B3\u30FC\u30C9 ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=\u30b7\u30a2\u30f3 -ColorChooser.cmykMagentaText=\u30de\u30bc\u30f3\u30c0 -ColorChooser.cmykYellowText=\u9ec4 -ColorChooser.cmykBlackText=\u9ed2 -ColorChooser.cmykAlphaText=\u30a2\u30eb\u30d5\u30a1 +ColorChooser.cmykCyanText=\u30B7\u30A2\u30F3 +ColorChooser.cmykMagentaText=\u30DE\u30BC\u30F3\u30BF +ColorChooser.cmykYellowText=\u9EC4 +ColorChooser.cmykBlackText=\u9ED2 +ColorChooser.cmykAlphaText=\u30A2\u30EB\u30D5\u30A1 ############ OPTION PANE STRINGS ############# # Mnemonic keys correspond to KeyEvent.VK_XXX constant # We only define mnemonics for YES/NO, but for completeness you can # define mnemonics for any of the buttons. -OptionPane.yesButtonText=\u306f\u3044(Y) +OptionPane.yesButtonText=\u306F\u3044 OptionPane.yesButtonMnemonic=89 -OptionPane.noButtonText=\u3044\u3044\u3048(N) +OptionPane.noButtonText=\u3044\u3044\u3048 OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=\u4e86\u89e3 +OptionPane.okButtonText=OK OptionPane.okButtonMnemonic=0 -OptionPane.cancelButtonText=\u53d6\u6d88\u3057 +OptionPane.cancelButtonText=\u53D6\u6D88 OptionPane.cancelButtonMnemonic=0 -OptionPane.titleText=\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u9078\u629e +OptionPane.titleText=\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u9078\u629E # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. -OptionPane.inputDialogTitle=\u5165\u529b +OptionPane.inputDialogTitle=\u5165\u529B # Title for the dialog for the showMessageDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. -OptionPane.messageDialogTitle=\u30e1\u30c3\u30bb\u30fc\u30b8 +OptionPane.messageDialogTitle=\u30E1\u30C3\u30BB\u30FC\u30B8 ############ Printing Dialog Strings ############ -PrintingDialog.titleProgressText=\u5370\u5237\u3057\u3066\u3044\u307e\u3059 -PrintingDialog.titleAbortingText=\u5370\u5237\u3092\u4e2d\u6b62\u3057\u3066\u3044\u307e\u3059 +PrintingDialog.titleProgressText=\u5370\u5237\u3057\u3066\u3044\u307E\u3059 +PrintingDialog.titleAbortingText=\u5370\u5237\u3092\u4E2D\u6B62\u3057\u3066\u3044\u307E\u3059 -PrintingDialog.contentInitialText=\u5370\u5237\u4e2d... +PrintingDialog.contentInitialText=\u5370\u5237\u4E2D... # The following string will be formatted by a MessageFormat # and {0} will be replaced by page number being printed -PrintingDialog.contentProgressText=\u30da\u30fc\u30b8 {0} \u3092\u5370\u5237\u3057\u307e\u3057\u305f... +PrintingDialog.contentProgressText=\u30DA\u30FC\u30B8{0}\u3092\u5370\u5237\u3057\u307E\u3057\u305F... -PrintingDialog.contentAbortingText=\u5370\u5237\u3092\u4e2d\u6b62\u3057\u3066\u3044\u307e\u3059... +PrintingDialog.contentAbortingText=\u5370\u5237\u3092\u4E2D\u6B62\u3057\u3066\u3044\u307E\u3059... -PrintingDialog.abortButtonText=\u4e2d\u6b62(A) +PrintingDialog.abortButtonText=\u4E2D\u6B62 PrintingDialog.abortButtonMnemonic=65 PrintingDialog.abortButtonDisplayedMnemonicIndex=0 -PrintingDialog.abortButtonToolTipText=\u5370\u5237\u306e\u4e2d\u6b62 +PrintingDialog.abortButtonToolTipText=\u5370\u5237\u306E\u4E2D\u6B62 ############ Internal Frame Strings ############ -InternalFrame.iconButtonToolTip=\u30a2\u30a4\u30b3\u30f3\u5316 -InternalFrame.maxButtonToolTip=\u6700\u5927\u8868\u793a -InternalFrame.restoreButtonToolTip=\u5fa9\u5143 -InternalFrame.closeButtonToolTip=\u9589\u3058\u308b +InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316 +InternalFrame.maxButtonToolTip=\u6700\u5927\u5316 +InternalFrame.restoreButtonToolTip=\u5FA9\u5143 +InternalFrame.closeButtonToolTip=\u9589\u3058\u308B ############ Internal Frame Title Pane Strings ############ -InternalFrameTitlePane.restoreButtonText=\u5fa9\u5143 -InternalFrameTitlePane.moveButtonText=\u79fb\u52d5 -InternalFrameTitlePane.sizeButtonText=\u30b5\u30a4\u30ba -InternalFrameTitlePane.minimizeButtonText=\u6700\u5c0f\u5316 +InternalFrameTitlePane.restoreButtonText=\u5FA9\u5143 +InternalFrameTitlePane.moveButtonText=\u79FB\u52D5 +InternalFrameTitlePane.sizeButtonText=\u30B5\u30A4\u30BA +InternalFrameTitlePane.minimizeButtonText=\u6700\u5C0F\u5316 InternalFrameTitlePane.maximizeButtonText=\u6700\u5927\u5316 -InternalFrameTitlePane.closeButtonText=\u9589\u3058\u308b +InternalFrameTitlePane.closeButtonText=\u9589\u3058\u308B ############ Text strings ############# # Used for html forms -FormView.submitButtonText=\u554f\u3044\u5408\u308f\u305b\u306e\u5b9f\u884c -FormView.resetButtonText=\u30ea\u30bb\u30c3\u30c8 -FormView.browseFileButtonText=\u53c2\u7167... +FormView.submitButtonText=\u554F\u5408\u305B\u306E\u5B9F\u884C +FormView.resetButtonText=\u30EA\u30BB\u30C3\u30C8 +FormView.browseFileButtonText=\u53C2\u7167... ############ Abstract Document Strings ############ -AbstractDocument.styleChangeText=\u30b9\u30bf\u30a4\u30eb\u5909\u66f4 -AbstractDocument.additionText=\u8ffd\u52a0 -AbstractDocument.deletionText=\u524a\u9664 -AbstractDocument.undoText=\u5143\u306b\u623b\u3059 -AbstractDocument.redoText=\u518d\u5b9f\u884c +AbstractDocument.styleChangeText=\u30B9\u30BF\u30A4\u30EB\u5909\u66F4 +AbstractDocument.additionText=\u8FFD\u52A0 +AbstractDocument.deletionText=\u524A\u9664 +AbstractDocument.undoText=\u5143\u306B\u623B\u3059 +AbstractDocument.redoText=\u3084\u308A\u76F4\u3057 ############ Abstract Button Strings ############ -AbstractButton.clickText=\u30af\u30ea\u30c3\u30af +AbstractButton.clickText=\u30AF\u30EA\u30C3\u30AF ############ Abstract Undoable Edit Strings ############ -AbstractUndoableEdit.undoText=\u5143\u306b\u623b\u3059 -AbstractUndoableEdit.redoText=\u518d\u5b9f\u884c +AbstractUndoableEdit.undoText=\u5143\u306B\u623B\u3059 +AbstractUndoableEdit.redoText=\u3084\u308A\u76F4\u3057 ############ Combo Box Strings ############ -ComboBox.togglePopupText=\u30c8\u30b0\u30eb\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7 +ComboBox.togglePopupText=\u30C8\u30B0\u30EB\u30FB\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7 ############ Progress Monitor Strings ############ -ProgressMonitor.progressText=\u9032\u884c\u4e2d... +ProgressMonitor.progressText=\u9032\u884C\u4E2D... ############ Split Pane Strings ############ -SplitPane.leftButtonText=\u5de6\u30dc\u30bf\u30f3 -SplitPane.rightButtonText=\u53f3\u30dc\u30bf\u30f3 +SplitPane.leftButtonText=\u5DE6\u30DC\u30BF\u30F3 +SplitPane.rightButtonText=\u53F3\u30DC\u30BF\u30F3 # Used for Isindex -IsindexView.prompt=\u691c\u7d22\u7528\u306e\u7d22\u5f15\u3067\u3059\u3002\u691c\u7d22\u3059\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044: +IsindexView.prompt=\u691C\u7D22\u7528\u306E\u7D22\u5F15\u3067\u3059\u3002\u691C\u7D22\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: ############ InternalFrameTitlePane Strings ############ -InternalFrameTitlePane.iconifyButtonAccessibleName=\u6700\u5c0f\u5316 +InternalFrameTitlePane.iconifyButtonAccessibleName=\u30A2\u30A4\u30B3\u30F3\u5316 InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316 -InternalFrameTitlePane.closeButtonAccessibleName=\u9589\u3058\u308b +InternalFrameTitlePane.closeButtonAccessibleName=\u9589\u3058\u308B diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties index 7df1dbc402d..a377f13d0b9 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties @@ -45,181 +45,181 @@ # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.fileDescriptionText=\uc77c\ubc18 \ud30c\uc77c -FileChooser.directoryDescriptionText=\ub514\ub809\ud1a0\ub9ac -FileChooser.newFolderErrorText=\uc0c8 \ud3f4\ub354 \uc791\uc131 \uc624\ub958 +FileChooser.fileDescriptionText=\uC77C\uBC18 \uD30C\uC77C +FileChooser.directoryDescriptionText=\uB514\uB809\uD1A0\uB9AC +FileChooser.newFolderErrorText=\uC0C8 \uD3F4\uB354\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=\ud3f4\ub354\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -FileChooser.newFolderParentDoesntExistText=\ud3f4\ub354\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n\n\uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc9c0\uc815\ud55c \uacbd\ub85c\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -FileChooser.renameErrorTitleText=\ud30c\uc77c \ub610\ub294 \ud3f4\ub354 \uc774\ub984 \ubc14\uafb8\uae30 \uc624\ub958 -FileChooser.renameErrorText={0}\uc758 \uc774\ub984\uc744 \ubc14\uafc0 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -FileChooser.renameErrorFileExistsText={0}\uc758 \uc774\ub984\uc744 \ubc14\uafc0 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c0\uc815\ud55c \uc774\ub984\uc758 \ud30c\uc77c\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \ud30c\uc77c \uc774\ub984\uc744 \uc9c0\uc815\ud558\uc2ed\uc2dc\uc624. -FileChooser.acceptAllFileFilterText=\ubaa8\ub4e0 \ud30c\uc77c -FileChooser.cancelButtonText=\ucde8\uc18c +FileChooser.newFolderParentDoesntExistTitleText=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C +FileChooser.newFolderParentDoesntExistText=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\n\uC2DC\uC2A4\uD15C\uC5D0\uC11C \uC9C0\uC815\uB41C \uACBD\uB85C\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +FileChooser.renameErrorTitleText=\uD30C\uC77C \uB610\uB294 \uD3F4\uB354 \uC774\uB984 \uBC14\uAFB8\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD +FileChooser.renameErrorText={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +FileChooser.renameErrorFileExistsText={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC74C: \uC9C0\uC815\uD55C \uC774\uB984\uC744 \uC0AC\uC6A9\uD558\uB294 \uD30C\uC77C\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. \uB2E4\uB978 \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD558\uC2ED\uC2DC\uC624. +FileChooser.acceptAllFileFilterText=\uBAA8\uB4E0 \uD30C\uC77C +FileChooser.cancelButtonText=\uCDE8\uC18C FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\uc800\uc7a5 +FileChooser.saveButtonText=\uC800\uC7A5 FileChooser.saveButtonMnemonic=83 -FileChooser.openButtonText=\uc5f4\uae30 +FileChooser.openButtonText=\uC5F4\uAE30 FileChooser.openButtonMnemonic=79 -FileChooser.saveDialogTitleText=\uc800\uc7a5 -FileChooser.openDialogTitleText=\uc5f4\uae30 -FileChooser.updateButtonText=\uc5c5\ub370\uc774\ud2b8(U) +FileChooser.saveDialogTitleText=\uC800\uC7A5 +FileChooser.openDialogTitleText=\uC5F4\uAE30 +FileChooser.updateButtonText=\uAC31\uC2E0 FileChooser.updateButtonMnemonic=85 -FileChooser.helpButtonText=\ub3c4\uc6c0\ub9d0(H) +FileChooser.helpButtonText=\uB3C4\uC6C0\uB9D0 FileChooser.helpButtonMnemonic=72 -FileChooser.directoryOpenButtonText=\uc5f4\uae30 +FileChooser.directoryOpenButtonText=\uC5F4\uAE30 FileChooser.directoryOpenButtonMnemonic=79 # File Size Units -FileChooser.fileSizeKiloBytes={0}KB -FileChooser.fileSizeMegaBytes={0}MB -FileChooser.fileSizeGigaBytes={0}GB +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB # These strings are platform dependent not look and feel dependent. -FileChooser.win32.newFolder=\uc0c8 \ud3f4\ub354 -FileChooser.win32.newFolder.subsequent=\uc0c8 \ud3f4\ub354 ({0}) -FileChooser.other.newFolder=\uc0c8 \ud3f4\ub354 -FileChooser.other.newFolder.subsequent=\uc0c8 \ud3f4\ub354.{0} +FileChooser.win32.newFolder=\uC0C8 \uD3F4\uB354 +FileChooser.win32.newFolder.subsequent=\uC0C8 \uD3F4\uB354({0}) +FileChooser.other.newFolder=NewFolder +FileChooser.other.newFolder.subsequent=NewFolder.{0} ## file chooser tooltips ### -FileChooser.cancelButtonToolTipText=\ud30c\uc77c \uc120\ud0dd \ub300\ud654 \uc0c1\uc790 \uc911\uc9c0 -FileChooser.saveButtonToolTipText=\uc120\ud0dd\ub41c \ud30c\uc77c \uc800\uc7a5 -FileChooser.openButtonToolTipText=\uc120\ud0dd\ub41c \ud30c\uc77c \uc5f4\uae30 -FileChooser.updateButtonToolTipText=\ub514\ub809\ud1a0\ub9ac \ubaa9\ub85d \uc5c5\ub370\uc774\ud2b8 -FileChooser.helpButtonToolTipText=FileChooser \ub3c4\uc6c0\ub9d0 -FileChooser.directoryOpenButtonToolTipText=\uc120\ud0dd\ub41c \ub514\ub809\ud1a0\ub9ac \uc5f4\uae30 +FileChooser.cancelButtonToolTipText=\uD30C\uC77C \uC120\uD0DD\uAE30 \uB300\uD654\uC0C1\uC790 \uC911\uB2E8 +FileChooser.saveButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C \uC800\uC7A5 +FileChooser.openButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C \uC5F4\uAE30 +FileChooser.updateButtonToolTipText=\uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D \uAC31\uC2E0 +FileChooser.helpButtonToolTipText=FileChooser \uB3C4\uC6C0\uB9D0 +FileChooser.directoryOpenButtonToolTipText=\uC120\uD0DD\uB41C \uB514\uB809\uD1A0\uB9AC \uC5F4\uAE30 ############ COLOR CHOOSER STRINGS ############# -ColorChooser.previewText=\ubbf8\ub9ac\ubcf4\uae30 -ColorChooser.okText=\ud655\uc778 -ColorChooser.cancelText=\ucde8\uc18c -ColorChooser.resetText=\uc7ac\uc124\uc815(R) +ColorChooser.previewText=\uBBF8\uB9AC\uBCF4\uAE30 +ColorChooser.okText=\uD655\uC778 +ColorChooser.cancelText=\uCDE8\uC18C +ColorChooser.resetText=\uC7AC\uC124\uC815 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic ColorChooser.resetMnemonic=82 -ColorChooser.sampleText=\uc0d8\ud50c \ud14d\uc2a4\ud2b8 \uc0d8\ud50c \ud14d\uc2a4\ud2b8 -ColorChooser.swatchesNameText=\uacac\ubcf8(S) +ColorChooser.sampleText=\uC0D8\uD50C \uD14D\uC2A4\uD2B8 \uC0D8\uD50C \uD14D\uC2A4\uD2B8 +ColorChooser.swatchesNameText=\uACAC\uBCF8 ColorChooser.swatchesMnemonic=83 -ColorChooser.swatchesRecentText=\ucd5c\uadfc \ubaa9\ub85d: +ColorChooser.swatchesRecentText=\uCD5C\uADFC \uBAA9\uB85D: # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=\uc0c9\uc0c1 -ColorChooser.hsvSaturationText=\ucc44\ub3c4 -ColorChooser.hsvValueText=\uac12 -ColorChooser.hsvTransparencyText=\ud22c\uba85\ub3c4 +ColorChooser.hsvHueText=\uC0C9\uC870 +ColorChooser.hsvSaturationText=\uCC44\uB3C4 +ColorChooser.hsvValueText=\uAC12 +ColorChooser.hsvTransparencyText=\uD22C\uBA85 ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=\uc0c9\uc0c1 -ColorChooser.hslSaturationText=\ucc44\ub3c4 -ColorChooser.hslLightnessText=\ubc1d\uae30 -ColorChooser.hslTransparencyText=\ud22c\uba85\ub3c4 +ColorChooser.hslHueText=\uC0C9\uC870 +ColorChooser.hslSaturationText=\uCC44\uB3C4 +ColorChooser.hslLightnessText=\uBC1D\uAE30 +ColorChooser.hslTransparencyText=\uD22C\uBA85 ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 -ColorChooser.rgbRedText=\ube68\uac04\uc0c9(D) +ColorChooser.rgbRedText=\uBE68\uAC04\uC0C9 ColorChooser.rgbRedMnemonic=68 -ColorChooser.rgbGreenText=\ub179\uc0c9(N) +ColorChooser.rgbGreenText=\uB179\uC0C9 ColorChooser.rgbGreenMnemonic=78 -ColorChooser.rgbBlueText=\ud30c\ub780\uc0c9(B) +ColorChooser.rgbBlueText=\uD30C\uB780\uC0C9 ColorChooser.rgbBlueMnemonic=66 -ColorChooser.rgbAlphaText=\uc54c\ud30c -ColorChooser.rgbHexCodeText=\uceec\ub7ec \ucf54\ub4dc +ColorChooser.rgbAlphaText=\uC54C\uD30C +ColorChooser.rgbHexCodeText=\uC0C9\uC0C1 \uCF54\uB4DC ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=\uccad\ub85d\uc0c9 -ColorChooser.cmykMagentaText=\uc790\ud64d\uc0c9 -ColorChooser.cmykYellowText=\ub178\ub780\uc0c9 -ColorChooser.cmykBlackText=\ud751\uc0c9 -ColorChooser.cmykAlphaText=\uc54c\ud30c +ColorChooser.cmykCyanText=\uCCAD\uB85D\uC0C9 +ColorChooser.cmykMagentaText=\uC9C4\uD64D\uC0C9 +ColorChooser.cmykYellowText=\uB178\uB780\uC0C9 +ColorChooser.cmykBlackText=\uAC80\uC815\uC0C9 +ColorChooser.cmykAlphaText=\uC54C\uD30C ############ OPTION PANE STRINGS ############# # Mnemonic keys correspond to KeyEvent.VK_XXX constant # We only define mnemonics for YES/NO, but for completeness you can # define mnemonics for any of the buttons. -OptionPane.yesButtonText=\uc608(Y) +OptionPane.yesButtonText=\uC608 OptionPane.yesButtonMnemonic=89 -OptionPane.noButtonText=\uc544\ub2c8\uc624(N) +OptionPane.noButtonText=\uC544\uB2C8\uC624 OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=\ud655\uc778 +OptionPane.okButtonText=\uD655\uC778 OptionPane.okButtonMnemonic=0 -OptionPane.cancelButtonText=\ucde8\uc18c +OptionPane.cancelButtonText=\uCDE8\uC18C OptionPane.cancelButtonMnemonic=0 -OptionPane.titleText=\uc635\uc158 \uc120\ud0dd +OptionPane.titleText=\uC635\uC158 \uC120\uD0DD # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. -OptionPane.inputDialogTitle=\uc785\ub825 +OptionPane.inputDialogTitle=\uC785\uB825 # Title for the dialog for the showMessageDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. -OptionPane.messageDialogTitle=\uba54\uc2dc\uc9c0 +OptionPane.messageDialogTitle=\uBA54\uC2DC\uC9C0 ############ Printing Dialog Strings ############ -PrintingDialog.titleProgressText=\uc778\uc1c4 -PrintingDialog.titleAbortingText=\uc778\uc1c4 (\uc911\uc9c0) +PrintingDialog.titleProgressText=\uC778\uC1C4 +PrintingDialog.titleAbortingText=\uC778\uC1C4(\uC911\uB2E8 \uC911) -PrintingDialog.contentInitialText=\uc778\uc1c4 \uc9c4\ud589 \uc911... +PrintingDialog.contentInitialText=\uC778\uC1C4 \uC9C4\uD589 \uC911... # The following string will be formatted by a MessageFormat # and {0} will be replaced by page number being printed -PrintingDialog.contentProgressText=\uc778\uc1c4\ub41c \ud398\uc774\uc9c0 {0}... +PrintingDialog.contentProgressText=\uC778\uC1C4\uB41C \uD398\uC774\uC9C0 {0}... -PrintingDialog.contentAbortingText=\uc778\uc1c4 \uc911\uc9c0... +PrintingDialog.contentAbortingText=\uC778\uC1C4 \uC911\uB2E8 \uC911... -PrintingDialog.abortButtonText=\uc911\uc9c0(A) +PrintingDialog.abortButtonText=\uC911\uB2E8 PrintingDialog.abortButtonMnemonic=65 PrintingDialog.abortButtonDisplayedMnemonicIndex=0 -PrintingDialog.abortButtonToolTipText=\uc778\uc1c4 \uc911\uc9c0 +PrintingDialog.abortButtonToolTipText=\uC778\uC1C4 \uC911\uB2E8 ############ Internal Frame Strings ############ -InternalFrame.iconButtonToolTip=\ucd5c\uc18c\ud654 -InternalFrame.maxButtonToolTip=\ucd5c\ub300\ud654 -InternalFrame.restoreButtonToolTip=\ubcf5\uc6d0 -InternalFrame.closeButtonToolTip=\ub2eb\uae30 +InternalFrame.iconButtonToolTip=\uCD5C\uC18C\uD654 +InternalFrame.maxButtonToolTip=\uCD5C\uB300\uD654 +InternalFrame.restoreButtonToolTip=\uBCF5\uC6D0 +InternalFrame.closeButtonToolTip=\uB2EB\uAE30 ############ Internal Frame Title Pane Strings ############ -InternalFrameTitlePane.restoreButtonText=\ubcf5\uc6d0 -InternalFrameTitlePane.moveButtonText=\uc774\ub3d9 -InternalFrameTitlePane.sizeButtonText=\ud06c\uae30 -InternalFrameTitlePane.minimizeButtonText=\ucd5c\uc18c\ud654 -InternalFrameTitlePane.maximizeButtonText=\ucd5c\ub300\ud654 -InternalFrameTitlePane.closeButtonText=\ub2eb\uae30 +InternalFrameTitlePane.restoreButtonText=\uBCF5\uC6D0 +InternalFrameTitlePane.moveButtonText=\uC774\uB3D9 +InternalFrameTitlePane.sizeButtonText=\uD06C\uAE30 +InternalFrameTitlePane.minimizeButtonText=\uCD5C\uC18C\uD654 +InternalFrameTitlePane.maximizeButtonText=\uCD5C\uB300\uD654 +InternalFrameTitlePane.closeButtonText=\uB2EB\uAE30 ############ Text strings ############# # Used for html forms -FormView.submitButtonText=\uc9c8\uc758 \uc81c\ucd9c -FormView.resetButtonText=\uc7ac\uc124\uc815 -FormView.browseFileButtonText=\ucc3e\uc544\ubcf4\uae30... +FormView.submitButtonText=\uC9C8\uC758 \uC81C\uCD9C +FormView.resetButtonText=\uC7AC\uC124\uC815 +FormView.browseFileButtonText=\uCC3E\uC544\uBCF4\uAE30... ############ Abstract Document Strings ############ -AbstractDocument.styleChangeText=\uc2a4\ud0c0\uc77c \ubcc0\uacbd -AbstractDocument.additionText=\ucd94\uac00 -AbstractDocument.deletionText=\uc0ad\uc81c -AbstractDocument.undoText=\uc2e4\ud589 \ucde8\uc18c -AbstractDocument.redoText=\uc7ac\uc2e4\ud589 +AbstractDocument.styleChangeText=\uC2A4\uD0C0\uC77C \uBCC0\uACBD +AbstractDocument.additionText=\uCD94\uAC00 +AbstractDocument.deletionText=\uC0AD\uC81C +AbstractDocument.undoText=\uC2E4\uD589 \uCDE8\uC18C +AbstractDocument.redoText=\uC7AC\uC2E4\uD589 ############ Abstract Button Strings ############ -AbstractButton.clickText=\ub204\ub974\uae30 +AbstractButton.clickText=\uB204\uB974\uAE30 ############ Abstract Undoable Edit Strings ############ -AbstractUndoableEdit.undoText=\uc2e4\ud589 \ucde8\uc18c -AbstractUndoableEdit.redoText=\uc7ac\uc2e4\ud589 +AbstractUndoableEdit.undoText=\uC2E4\uD589 \uCDE8\uC18C +AbstractUndoableEdit.redoText=\uC7AC\uC2E4\uD589 ############ Combo Box Strings ############ -ComboBox.togglePopupText=\ud1a0\uae00\ud31d\uc5c5 +ComboBox.togglePopupText=togglePopup ############ Progress Monitor Strings ############ -ProgressMonitor.progressText=\uc9c4\ud589... +ProgressMonitor.progressText=\uC9C4\uD589... ############ Split Pane Strings ############ -SplitPane.leftButtonText=\uc67c\ucabd \ubc84\ud2bc -SplitPane.rightButtonText=\uc624\ub978\ucabd \ubc84\ud2bc +SplitPane.leftButtonText=\uC67C\uCABD \uB2E8\uCD94 +SplitPane.rightButtonText=\uC624\uB978\uCABD \uB2E8\uCD94 # Used for Isindex -IsindexView.prompt=\ub2e4\uc74c\uc740 \uac80\uc0c9 \uac00\ub2a5\ud55c \uc778\ub371\uc2a4\uc785\ub2c8\ub2e4. \uac80\uc0c9 \ud0a4\uc6cc\ub4dc\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624: +IsindexView.prompt=\uB2E4\uC74C\uC740 \uAC80\uC0C9 \uAC00\uB2A5\uD55C \uC778\uB371\uC2A4\uC785\uB2C8\uB2E4. \uAC80\uC0C9 \uD0A4\uC6CC\uB4DC \uC785\uB825: ############ InternalFrameTitlePane Strings ############ -InternalFrameTitlePane.iconifyButtonAccessibleName=\uc544\uc774\ucf58\ud654 -InternalFrameTitlePane.maximizeButtonAccessibleName=\ucd5c\ub300\ud654 -InternalFrameTitlePane.closeButtonAccessibleName=\ub2eb\uae30 +InternalFrameTitlePane.iconifyButtonAccessibleName=\uC544\uC774\uCF58\uD654 +InternalFrameTitlePane.maximizeButtonAccessibleName=\uCD5C\uB300\uD654 +InternalFrameTitlePane.closeButtonAccessibleName=\uB2EB\uAE30 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties index 26a70452c0a..c03c8d523f3 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties @@ -45,11 +45,16 @@ # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.fileDescriptionText=Arquivo gen\u00e9rico -FileChooser.directoryDescriptionText=Diret\u00f3rio +FileChooser.fileDescriptionText=Arquivo Gen\u00E9rico +FileChooser.directoryDescriptionText=Diret\u00F3rio FileChooser.newFolderErrorText=Erro ao criar nova pasta FileChooser.newFolderErrorSeparator= : -FileChooser.acceptAllFileFilterText=Todos os arquivos +FileChooser.newFolderParentDoesntExistTitleText=N\u00E3o \u00E9 poss\u00EDvel criar a pasta +FileChooser.newFolderParentDoesntExistText=N\u00E3o \u00E9 poss\u00EDvel criar a pasta.\n\nO sistema n\u00E3o pode localizar o caminho especificado. +FileChooser.renameErrorTitleText=Erro ao Renomear o Arquivo ou a Pasta +FileChooser.renameErrorText=N\u00E3o \u00E9 poss\u00EDvel renomear {0} +FileChooser.renameErrorFileExistsText=N\u00E3o \u00E9 poss\u00EDvel renomear {0}: Um arquivo com o nome especificado j\u00E1 existe. Especifique outro nome de arquivo. +FileChooser.acceptAllFileFilterText=Todos os Arquivos FileChooser.cancelButtonText=Cancelar FileChooser.cancelButtonMnemonic=67 FileChooser.saveButtonText=Salvar @@ -71,19 +76,19 @@ FileChooser.fileSizeMegaBytes={0} MB FileChooser.fileSizeGigaBytes={0} GB # These strings are platform dependent not look and feel dependent. -FileChooser.win32.newFolder=Nova pasta -FileChooser.win32.newFolder.subsequent=Nova pasta ({0}) +FileChooser.win32.newFolder=Nova Pasta +FileChooser.win32.newFolder.subsequent=Nova Pasta ({0}) FileChooser.other.newFolder=NewFolder FileChooser.other.newFolder.subsequent=NewFolder.{0} ## file chooser tooltips ### -FileChooser.cancelButtonToolTipText=Anular caixa de di\u00e1logo do seletor de arquivos +FileChooser.cancelButtonToolTipText=Abortar caixa de di\u00E1logo do seletor de arquivos FileChooser.saveButtonToolTipText=Salvar arquivo selecionado FileChooser.openButtonToolTipText=Abrir arquivo selecionado -FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00f3rios +FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00F3rios FileChooser.helpButtonToolTipText=Ajuda do FileChooser -FileChooser.directoryOpenButtonToolTipText=Abrir diret\u00f3rio selecionado +FileChooser.directoryOpenButtonToolTipText=Abrir diret\u00F3rio selecionado ############ COLOR CHOOSER STRINGS ############# ColorChooser.previewText=Visualizar @@ -92,33 +97,44 @@ ColorChooser.cancelText=Cancelar ColorChooser.resetText=Redefinir # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic ColorChooser.resetMnemonic=82 -ColorChooser.sampleText=Texto de amostra Texto de amostra +ColorChooser.sampleText=Texto de Amostra Texto de Amostra ColorChooser.swatchesNameText=Amostras ColorChooser.swatchesMnemonic=83 -ColorChooser.swatchesDisplayedMnemonicIndex=0 ColorChooser.swatchesRecentText=Recente: -ColorChooser.hsbNameText=HSB # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. -ColorChooser.hsbMnemonic=72 -ColorChooser.hsbDisplayedMnemonicIndex=0 -ColorChooser.hsbHueText=H -ColorChooser.hsbSaturationText=S -ColorChooser.hsbBrightnessText=B -ColorChooser.hsbRedText=R -ColorChooser.hsbGreenText=G -ColorChooser.hsbBlueText=B +ColorChooser.hsvNameText=HSV +ColorChooser.hsvMnemonic=72 +ColorChooser.hsvHueText=Matiz +ColorChooser.hsvSaturationText=Satura\u00E7\u00E3o +ColorChooser.hsvValueText=Valor +ColorChooser.hsvTransparencyText=Transpar\u00EAncia +ColorChooser.hslNameText=HSL +ColorChooser.hslMnemonic=76 +ColorChooser.hslHueText=Matiz +ColorChooser.hslSaturationText=Satura\u00E7\u00E3o +ColorChooser.hslLightnessText=Clareza +ColorChooser.hslTransparencyText=Transpar\u00EAncia ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 -ColorChooser.rgbDisplayedMnemonicIndex=1 ColorChooser.rgbRedText=Vermelho ColorChooser.rgbRedMnemonic=68 ColorChooser.rgbGreenText=Verde ColorChooser.rgbGreenMnemonic=78 ColorChooser.rgbBlueText=Azul ColorChooser.rgbBlueMnemonic=66 +ColorChooser.rgbAlphaText=Alfa +ColorChooser.rgbHexCodeText=C\u00F3digo da Cor +ColorChooser.rgbHexCodeMnemonic=67 +ColorChooser.cmykNameText=CMYK +ColorChooser.cmykMnemonic=77 +ColorChooser.cmykCyanText=Ciano +ColorChooser.cmykMagentaText=Magenta +ColorChooser.cmykYellowText=Amarelo +ColorChooser.cmykBlackText=Preto +ColorChooser.cmykAlphaText=Alfa ############ OPTION PANE STRINGS ############# # Mnemonic keys correspond to KeyEvent.VK_XXX constant @@ -126,13 +142,13 @@ ColorChooser.rgbBlueMnemonic=66 # define mnemonics for any of the buttons. OptionPane.yesButtonText=Sim OptionPane.yesButtonMnemonic=89 -OptionPane.noButtonText=N\u00e3o +OptionPane.noButtonText=N\u00E3o OptionPane.noButtonMnemonic=78 OptionPane.okButtonText=OK OptionPane.okButtonMnemonic=0 OptionPane.cancelButtonText=Cancelar OptionPane.cancelButtonMnemonic=0 -OptionPane.titleText=Selecionar uma op\u00e7\u00e3o +OptionPane.titleText=Selecionar uma Op\u00E7\u00E3o # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. OptionPane.inputDialogTitle=Entrada @@ -141,21 +157,21 @@ OptionPane.inputDialogTitle=Entrada OptionPane.messageDialogTitle=Mensagem ############ Printing Dialog Strings ############ -PrintingDialog.titleProgressText=Impress\u00e3o -PrintingDialog.titleAbortingText=Impress\u00e3o (Anulando) +PrintingDialog.titleProgressText=Impress\u00E3o +PrintingDialog.titleAbortingText=Impress\u00E3o (Abortando) -PrintingDialog.contentInitialText=Impress\u00e3o em andamento... +PrintingDialog.contentInitialText=Impress\u00E3o em andamento... # The following string will be formatted by a MessageFormat # and {0} will be replaced by page number being printed -PrintingDialog.contentProgressText=P\u00e1gina imprimida {0}... +PrintingDialog.contentProgressText=P\u00E1gina impressa {0}... -PrintingDialog.contentAbortingText=Anulando impress\u00e3o... +PrintingDialog.contentAbortingText=Abortando impress\u00E3o... -PrintingDialog.abortButtonText=Anular +PrintingDialog.abortButtonText=Abortar PrintingDialog.abortButtonMnemonic=65 PrintingDialog.abortButtonDisplayedMnemonicIndex=0 -PrintingDialog.abortButtonToolTipText=Anular impress\u00e3o +PrintingDialog.abortButtonToolTipText=Abortar Impress\u00E3o ############ Internal Frame Strings ############ InternalFrame.iconButtonToolTip=Minimizar @@ -173,14 +189,14 @@ InternalFrameTitlePane.closeButtonText=Fechar ############ Text strings ############# # Used for html forms -FormView.submitButtonText=Enviar consulta +FormView.submitButtonText=Submeter Consulta FormView.resetButtonText=Redefinir -FormView.browseFileButtonText=Explorar... +FormView.browseFileButtonText=Procurar... ############ Abstract Document Strings ############ -AbstractDocument.styleChangeText=altera\u00e7\u00e3o de estilo -AbstractDocument.additionText=adi\u00e7\u00e3o -AbstractDocument.deletionText=exclus\u00e3o +AbstractDocument.styleChangeText=altera\u00E7\u00E3o de estilo +AbstractDocument.additionText=adi\u00E7\u00E3o +AbstractDocument.deletionText=dele\u00E7\u00E3o AbstractDocument.undoText=Desfazer AbstractDocument.redoText=Refazer @@ -198,12 +214,12 @@ ComboBox.togglePopupText=togglePopup ProgressMonitor.progressText=Progresso... ############ Split Pane Strings ############ -SplitPane.leftButtonText=bot\u00e3o esquerdo -SplitPane.rightButtonText=bot\u00e3o direito +SplitPane.leftButtonText=bot\u00E3o esquerdo +SplitPane.rightButtonText=bot\u00E3o direito # Used for Isindex -IsindexView.prompt=Trata-se de um \u00edndice pesquis\u00e1vel. Insira as palavras-chave de pesquisa: +IsindexView.prompt=Trata-se de um \u00EDndice pesquis\u00E1vel. Informe as palavras-chave de pesquisa: ############ InternalFrameTitlePane Strings ############ -InternalFrameTitlePane.iconifyButtonAccessibleName=Iconificar +InternalFrameTitlePane.iconifyButtonAccessibleName=Iconify InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar InternalFrameTitlePane.closeButtonAccessibleName=Fechar diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties index 01e9b9bc5f8..94cc0e4165b 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties @@ -47,28 +47,28 @@ ############ FILE CHOOSER STRINGS ############# FileChooser.fileDescriptionText=Generisk fil FileChooser.directoryDescriptionText=Katalog -FileChooser.newFolderErrorText=Fel d\u00e5 ny mapp skapades +FileChooser.newFolderErrorText=Fel uppstod n\u00E4r ny mapp skapades FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Det gick inte att skapa mappen -FileChooser.newFolderParentDoesntExistText=Det gick inte att skapa mappen.\n\nSystemet hittade inte den angivna s\u00f6kv\u00e4gen. -FileChooser.renameErrorTitleText=Det gick inte att byta namn p\u00e5 filen eller mappen -FileChooser.renameErrorText=Det gick inte byta namn p\u00e5 {0} -FileChooser.renameErrorFileExistsText=Det gick inte byta namn p\u00e5 {0}: Det finns redan en fil med det namnet. Ge den ett annat namn. +FileChooser.newFolderParentDoesntExistTitleText=Kan inte skapa mappen +FileChooser.newFolderParentDoesntExistText=Kan inte skapa mappen.\n\nSystemet kan inte hitta angiven s\u00F6kv\u00E4g. +FileChooser.renameErrorTitleText=Ett fel intr\u00E4ffade vid f\u00F6rs\u00F6k att \u00E4ndra namn p\u00E5 fil eller mapp +FileChooser.renameErrorText=Kan inte namn\u00E4ndra {0} +FileChooser.renameErrorFileExistsText=Kan inte namn\u00E4ndra {0}: En fil med angivet namn finns redan. Ange ett annat filnamn. FileChooser.acceptAllFileFilterText=Alla filer FileChooser.cancelButtonText=Avbryt -FileChooser.cancelButtonMnemonic=65 +FileChooser.cancelButtonMnemonic=67 FileChooser.saveButtonText=Spara FileChooser.saveButtonMnemonic=83 -FileChooser.openButtonText=\u00d6ppna -FileChooser.openButtonMnemonic=78 +FileChooser.openButtonText=\u00D6ppna +FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Spara -FileChooser.openDialogTitleText=\u00d6ppna +FileChooser.openDialogTitleText=\u00D6ppna FileChooser.updateButtonText=Uppdatera FileChooser.updateButtonMnemonic=85 -FileChooser.helpButtonText=Hj\u00e4lp +FileChooser.helpButtonText=Hj\u00E4lp FileChooser.helpButtonMnemonic=72 -FileChooser.directoryOpenButtonText=\u00d6ppna -FileChooser.directoryOpenButtonMnemonic=80 +FileChooser.directoryOpenButtonText=\u00D6ppna +FileChooser.directoryOpenButtonMnemonic=79 # File Size Units FileChooser.fileSizeKiloBytes={0} KB @@ -84,53 +84,53 @@ FileChooser.other.newFolder.subsequent=Ny mapp.{0} ## file chooser tooltips ### FileChooser.cancelButtonToolTipText=Avbryt filvalsdialogruta -FileChooser.saveButtonToolTipText=Spara markerad fil -FileChooser.openButtonToolTipText=\u00d6ppna markerad fil +FileChooser.saveButtonToolTipText=Spara vald fil +FileChooser.openButtonToolTipText=\u00D6ppna vald fil FileChooser.updateButtonToolTipText=Uppdatera kataloglistan -FileChooser.helpButtonToolTipText=Hj\u00e4lp - Filv\u00e4ljare -FileChooser.directoryOpenButtonToolTipText=\u00d6ppnar den markerade katalogen +FileChooser.helpButtonToolTipText=Hj\u00E4lp - Filv\u00E4ljare +FileChooser.directoryOpenButtonToolTipText=\u00D6ppna vald katalog ############ COLOR CHOOSER STRINGS ############# ColorChooser.previewText=Granska ColorChooser.okText=OK ColorChooser.cancelText=Avbryt -ColorChooser.resetText=\u00c5terst\u00e4ll +ColorChooser.resetText=\u00C5terst\u00E4ll # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic -ColorChooser.resetMnemonic=84 +ColorChooser.resetMnemonic=82 ColorChooser.sampleText=Exempeltext Exempeltext ColorChooser.swatchesNameText=Prov -ColorChooser.swatchesMnemonic=80 -ColorChooser.swatchesRecentText=Tidigare: +ColorChooser.swatchesMnemonic=83 +ColorChooser.swatchesRecentText=Senaste: # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. -ColorChooser.hsvNameText=NMI +ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 ColorChooser.hsvHueText=Nyans -ColorChooser.hsvSaturationText=M\u00e4ttnad -ColorChooser.hsvValueText=V\u00e4rde -ColorChooser.hsvTransparencyText=Genomskinlighet +ColorChooser.hsvSaturationText=M\u00E4ttnad +ColorChooser.hsvValueText=V\u00E4rde +ColorChooser.hsvTransparencyText=Transparens ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 ColorChooser.hslHueText=Nyans -ColorChooser.hslSaturationText=M\u00e4ttnad +ColorChooser.hslSaturationText=M\u00E4ttnad ColorChooser.hslLightnessText=Ljusstyrka -ColorChooser.hslTransparencyText=Genomskinlighet +ColorChooser.hslTransparencyText=Transparens ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 -ColorChooser.rgbRedText=R\u00f6d -ColorChooser.rgbRedMnemonic=82 -ColorChooser.rgbGreenText=Gr\u00f6n -ColorChooser.rgbGreenMnemonic=71 -ColorChooser.rgbBlueText=Bl\u00e5 +ColorChooser.rgbRedText=R\u00F6d +ColorChooser.rgbRedMnemonic=68 +ColorChooser.rgbGreenText=Gr\u00F6n +ColorChooser.rgbGreenMnemonic=78 +ColorChooser.rgbBlueText=Bl\u00E5 ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alfa -ColorChooser.rgbHexCodeText=F\u00e4rgkod +ColorChooser.rgbHexCodeText=F\u00E4rgkod ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=Cyanbl\u00e5 +ColorChooser.cmykCyanText=Cyan ColorChooser.cmykMagentaText=Magenta ColorChooser.cmykYellowText=Gul ColorChooser.cmykBlackText=Svart @@ -141,14 +141,14 @@ ColorChooser.cmykAlphaText=Alfa # We only define mnemonics for YES/NO, but for completeness you can # define mnemonics for any of the buttons. OptionPane.yesButtonText=Ja -OptionPane.yesButtonMnemonic=74 +OptionPane.yesButtonMnemonic=89 OptionPane.noButtonText=Nej OptionPane.noButtonMnemonic=78 OptionPane.okButtonText=OK OptionPane.okButtonMnemonic=0 OptionPane.cancelButtonText=Avbryt OptionPane.cancelButtonMnemonic=0 -OptionPane.titleText=V\u00e4lj ett alternativ +OptionPane.titleText=V\u00E4lj ett alternativ # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. OptionPane.inputDialogTitle=Indata @@ -160,7 +160,7 @@ OptionPane.messageDialogTitle=Meddelande PrintingDialog.titleProgressText=Skriver ut PrintingDialog.titleAbortingText=Skriver ut (avbryter) -PrintingDialog.contentInitialText=Utskrift p\u00e5g\u00e5r... +PrintingDialog.contentInitialText=Utskrift p\u00E5g\u00E5r... # The following string will be formatted by a MessageFormat # and {0} will be replaced by page number being printed @@ -176,50 +176,50 @@ PrintingDialog.abortButtonToolTipText=Avbryt utskrift ############ Internal Frame Strings ############ InternalFrame.iconButtonToolTip=Minimera InternalFrame.maxButtonToolTip=Maximera -InternalFrame.restoreButtonToolTip=\u00c5terst\u00e4ll -InternalFrame.closeButtonToolTip=St\u00e4ng +InternalFrame.restoreButtonToolTip=\u00C5terst\u00E4ll +InternalFrame.closeButtonToolTip=St\u00E4ng ############ Internal Frame Title Pane Strings ############ -InternalFrameTitlePane.restoreButtonText=\u00c5terst\u00e4ll +InternalFrameTitlePane.restoreButtonText=\u00C5terst\u00E4ll InternalFrameTitlePane.moveButtonText=Flytta InternalFrameTitlePane.sizeButtonText=Storlek InternalFrameTitlePane.minimizeButtonText=Minimera InternalFrameTitlePane.maximizeButtonText=Maximera -InternalFrameTitlePane.closeButtonText=St\u00e4ng +InternalFrameTitlePane.closeButtonText=St\u00E4ng ############ Text strings ############# # Used for html forms -FormView.submitButtonText=Skicka fr\u00e5ga -FormView.resetButtonText=\u00c5terst\u00e4ll -FormView.browseFileButtonText=Bl\u00e4ddra... +FormView.submitButtonText=Skicka fr\u00E5ga +FormView.resetButtonText=\u00C5terst\u00E4ll +FormView.browseFileButtonText=Bl\u00E4ddra... ############ Abstract Document Strings ############ -AbstractDocument.styleChangeText=snittbyte -AbstractDocument.additionText=till\u00e4gg -AbstractDocument.deletionText=radering -AbstractDocument.undoText=\u00c5ngra -AbstractDocument.redoText=G\u00f6r om +AbstractDocument.styleChangeText=format\u00E4ndring +AbstractDocument.additionText=till\u00E4gg +AbstractDocument.deletionText=borttagning +AbstractDocument.undoText=\u00C5ngra +AbstractDocument.redoText=G\u00F6r om ############ Abstract Button Strings ############ AbstractButton.clickText=klicka ############ Abstract Undoable Edit Strings ############ -AbstractUndoableEdit.undoText=\u00c5ngra -AbstractUndoableEdit.redoText=G\u00f6r om +AbstractUndoableEdit.undoText=\u00C5ngra +AbstractUndoableEdit.redoText=G\u00F6r om ############ Combo Box Strings ############ -ComboBox.togglePopupText=v\u00e4xlaPopup +ComboBox.togglePopupText=v\u00E4xlaPopup ############ Progress Monitor Strings ############ -ProgressMonitor.progressText=Status... +ProgressMonitor.progressText=P\u00E5g\u00E5r... ############ Split Pane Strings ############ -SplitPane.leftButtonText=v\u00e4nster knapp -SplitPane.rightButtonText=h\u00f6ger knapp +SplitPane.leftButtonText=v\u00E4nster knapp +SplitPane.rightButtonText=h\u00F6ger knapp # Used for Isindex -IsindexView.prompt=Detta \u00e4r ett s\u00f6kbart index. Ange nyckelord f\u00f6r s\u00f6kningen: +IsindexView.prompt=Detta \u00E4r ett s\u00F6kbart index. Ange s\u00F6kord: ############ InternalFrameTitlePane Strings ############ InternalFrameTitlePane.iconifyButtonAccessibleName=Minimera InternalFrameTitlePane.maximizeButtonAccessibleName=Maximera -InternalFrameTitlePane.closeButtonAccessibleName=St\u00e4ng +InternalFrameTitlePane.closeButtonAccessibleName=St\u00E4ng diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties index b31c33d2cbd..ea84c7e2f7d 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties @@ -45,29 +45,29 @@ # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.fileDescriptionText=\u666e\u901a\u7684\u6587\u4ef6 -FileChooser.directoryDescriptionText=\u76ee\u5f55 -FileChooser.newFolderErrorText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939\u65f6\u53d1\u751f\u9519\u8bef +FileChooser.fileDescriptionText=\u666E\u901A\u7684\u6587\u4EF6 +FileChooser.directoryDescriptionText=\u76EE\u5F55 +FileChooser.newFolderErrorText=\u521B\u5EFA\u65B0\u7684\u6587\u4EF6\u5939\u65F6\u51FA\u9519 FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6\u5939 -FileChooser.newFolderParentDoesntExistText=\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6\u5939\u3002\n\n\u7cfb\u7edf\u65e0\u6cd5\u627e\u5230\u6307\u5b9a\u7684\u8def\u5f84\u3002 -FileChooser.renameErrorTitleText=\u91cd\u547d\u540d\u6587\u4ef6\u6216\u6587\u4ef6\u5939\u65f6\u51fa\u9519 -FileChooser.renameErrorText=\u65e0\u6cd5\u91cd\u547d\u540d {0} -FileChooser.renameErrorFileExistsText=\u65e0\u6cd5\u91cd\u547d\u540d {0}\uff1a\u5df2\u5b58\u5728\u5177\u6709\u6307\u5b9a\u540d\u79f0\u7684\u6587\u4ef6\u3002\u8bf7\u6307\u5b9a\u53e6\u4e00\u6587\u4ef6\u540d\u3002 -FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4ef6 -FileChooser.cancelButtonText=\u53d6\u6d88 +FileChooser.newFolderParentDoesntExistTitleText=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939 +FileChooser.newFolderParentDoesntExistText=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939\u3002\n\n\u7CFB\u7EDF\u627E\u4E0D\u5230\u6307\u5B9A\u7684\u8DEF\u5F84\u3002 +FileChooser.renameErrorTitleText=\u91CD\u547D\u540D\u6587\u4EF6\u6216\u6587\u4EF6\u5939\u65F6\u51FA\u9519 +FileChooser.renameErrorText=\u65E0\u6CD5\u91CD\u547D\u540D{0} +FileChooser.renameErrorFileExistsText=\u65E0\u6CD5\u91CD\u547D\u540D{0}: \u5DF2\u5B58\u5728\u5177\u6709\u6240\u6307\u5B9A\u540D\u79F0\u7684\u6587\u4EF6\u3002\u8BF7\u6307\u5B9A\u5176\u4ED6\u6587\u4EF6\u540D\u3002 +FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4EF6 +FileChooser.cancelButtonText=\u53D6\u6D88 FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\u4fdd\u5b58 +FileChooser.saveButtonText=\u4FDD\u5B58 FileChooser.saveButtonMnemonic=83 -FileChooser.openButtonText=\u6253\u5f00 +FileChooser.openButtonText=\u6253\u5F00 FileChooser.openButtonMnemonic=79 -FileChooser.saveDialogTitleText=\u4fdd\u5b58 -FileChooser.openDialogTitleText=\u6253\u5f00 -FileChooser.updateButtonText=\u66f4\u65b0(U) +FileChooser.saveDialogTitleText=\u4FDD\u5B58 +FileChooser.openDialogTitleText=\u6253\u5F00 +FileChooser.updateButtonText=\u66F4\u65B0 FileChooser.updateButtonMnemonic=85 -FileChooser.helpButtonText=\u5e2e\u52a9(H) +FileChooser.helpButtonText=\u5E2E\u52A9 FileChooser.helpButtonMnemonic=72 -FileChooser.directoryOpenButtonText=\u6253\u5f00 +FileChooser.directoryOpenButtonText=\u6253\u5F00 FileChooser.directoryOpenButtonMnemonic=79 # File Size Units @@ -76,150 +76,150 @@ FileChooser.fileSizeMegaBytes={0} MB FileChooser.fileSizeGigaBytes={0} GB # These strings are platform dependent not look and feel dependent. -FileChooser.win32.newFolder=\u65b0\u5efa\u6587\u4ef6\u5939 -FileChooser.win32.newFolder.subsequent=\u65b0\u5efa\u6587\u4ef6\u5939 ({0}) -FileChooser.other.newFolder=\u65b0\u5efa\u6587\u4ef6\u5939 -FileChooser.other.newFolder.subsequent=\u65b0\u5efa\u6587\u4ef6\u5939.{0} +FileChooser.win32.newFolder=\u65B0\u5EFA\u6587\u4EF6\u5939 +FileChooser.win32.newFolder.subsequent=\u65B0\u5EFA\u6587\u4EF6\u5939 ({0}) +FileChooser.other.newFolder=NewFolder +FileChooser.other.newFolder.subsequent=NewFolder.{0} ## file chooser tooltips ### -FileChooser.cancelButtonToolTipText=\u4e2d\u6b62\u6587\u4ef6\u9009\u62e9\u5668\u5bf9\u8bdd\u6846 -FileChooser.saveButtonToolTipText=\u4fdd\u5b58\u9009\u62e9\u7684\u6587\u4ef6 -FileChooser.openButtonToolTipText=\u6253\u5f00\u9009\u62e9\u7684\u6587\u4ef6 -FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u5f55\u5217\u8868 -FileChooser.helpButtonToolTipText=\u6587\u4ef6\u9009\u62e9\u5668\u5e2e\u52a9 -FileChooser.directoryOpenButtonToolTipText=\u6253\u5f00\u9009\u62e9\u7684\u76ee\u5f55 +FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6587\u4EF6\u9009\u62E9\u5668\u5BF9\u8BDD\u6846 +FileChooser.saveButtonToolTipText=\u4FDD\u5B58\u6240\u9009\u6587\u4EF6 +FileChooser.openButtonToolTipText=\u6253\u5F00\u6240\u9009\u6587\u4EF6 +FileChooser.updateButtonToolTipText=\u66F4\u65B0\u76EE\u5F55\u5217\u8868 +FileChooser.helpButtonToolTipText=FileChooser \u5E2E\u52A9 +FileChooser.directoryOpenButtonToolTipText=\u6253\u5F00\u9009\u62E9\u7684\u76EE\u5F55 ############ COLOR CHOOSER STRINGS ############# -ColorChooser.previewText=\u9884\u89c8 -ColorChooser.okText=\u786e\u5b9a -ColorChooser.cancelText=\u53d6\u6d88 -ColorChooser.resetText=\u91cd\u8bbe(R) +ColorChooser.previewText=\u9884\u89C8 +ColorChooser.okText=\u786E\u5B9A +ColorChooser.cancelText=\u53D6\u6D88 +ColorChooser.resetText=\u91CD\u8BBE # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic ColorChooser.resetMnemonic=82 -ColorChooser.sampleText=\u6837\u54c1\u6587\u672c \u6837\u54c1\u6587\u672c -ColorChooser.swatchesNameText=\u6837\u54c1(S) +ColorChooser.sampleText=\u793A\u4F8B\u6587\u672C \u793A\u4F8B\u6587\u672C +ColorChooser.swatchesNameText=\u793A\u4F8B ColorChooser.swatchesMnemonic=83 -ColorChooser.swatchesRecentText=\u6700\u8fd1: +ColorChooser.swatchesRecentText=\u6700\u8FD1: # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=\u8272\u8c03 -ColorChooser.hsvSaturationText=\u9971\u548c -ColorChooser.hsvValueText=\u503c -ColorChooser.hsvTransparencyText=\u900f\u660e +ColorChooser.hsvHueText=\u8272\u8C03 +ColorChooser.hsvSaturationText=\u9971\u548C\u5EA6 +ColorChooser.hsvValueText=\u503C +ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6 ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=\u8272\u8c03 -ColorChooser.hslSaturationText=\u9971\u548c -ColorChooser.hslLightnessText=\u4eae\u5ea6 -ColorChooser.hslTransparencyText=\u900f\u660e +ColorChooser.hslHueText=\u8272\u8C03 +ColorChooser.hslSaturationText=\u9971\u548C\u5EA6 +ColorChooser.hslLightnessText=\u4EAE\u5EA6 +ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6 ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 -ColorChooser.rgbRedText=\u7ea2 +ColorChooser.rgbRedText=\u7EA2 ColorChooser.rgbRedMnemonic=68 -ColorChooser.rgbGreenText=\u7eff +ColorChooser.rgbGreenText=\u7EFF ColorChooser.rgbGreenMnemonic=78 -ColorChooser.rgbBlueText=\u84dd +ColorChooser.rgbBlueText=\u84DD ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=\u989c\u8272\u4ee3\u7801 +ColorChooser.rgbHexCodeText=\u989C\u8272\u4EE3\u7801 ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 ColorChooser.cmykCyanText=\u9752\u8272 -ColorChooser.cmykMagentaText=\u54c1\u7ea2\u8272 -ColorChooser.cmykYellowText=\u9ec4\u8272 -ColorChooser.cmykBlackText=\u9ed1\u8272 +ColorChooser.cmykMagentaText=\u7D2B\u7EA2\u8272 +ColorChooser.cmykYellowText=\u9EC4\u8272 +ColorChooser.cmykBlackText=\u9ED1\u8272 ColorChooser.cmykAlphaText=Alpha ############ OPTION PANE STRINGS ############# # Mnemonic keys correspond to KeyEvent.VK_XXX constant # We only define mnemonics for YES/NO, but for completeness you can # define mnemonics for any of the buttons. -OptionPane.yesButtonText=\u662f(Y) +OptionPane.yesButtonText=\u662F OptionPane.yesButtonMnemonic=89 -OptionPane.noButtonText=\u5426(N) +OptionPane.noButtonText=\u5426 OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=\u786e\u5b9a +OptionPane.okButtonText=\u786E\u5B9A OptionPane.okButtonMnemonic=0 -OptionPane.cancelButtonText=\u53d6\u6d88 +OptionPane.cancelButtonText=\u53D6\u6D88 OptionPane.cancelButtonMnemonic=0 -OptionPane.titleText=\u9009\u62e9\u4e00\u4e2a\u9009\u9879 +OptionPane.titleText=\u9009\u62E9\u4E00\u4E2A\u9009\u9879 # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. -OptionPane.inputDialogTitle=\u8f93\u5165 +OptionPane.inputDialogTitle=\u8F93\u5165 # Title for the dialog for the showMessageDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. -OptionPane.messageDialogTitle=\u6d88\u606f +OptionPane.messageDialogTitle=\u6D88\u606F ############ Printing Dialog Strings ############ PrintingDialog.titleProgressText=\u6253\u5370 -PrintingDialog.titleAbortingText=\u6253\u5370 (\u6b63\u5728\u7ec8\u6b62) +PrintingDialog.titleAbortingText=\u6253\u5370 (\u6B63\u5728\u4E2D\u6B62) -PrintingDialog.contentInitialText=\u6b63\u5728\u8fdb\u884c\u6253\u5370... +PrintingDialog.contentInitialText=\u6B63\u5728\u8FDB\u884C\u6253\u5370... # The following string will be formatted by a MessageFormat # and {0} will be replaced by page number being printed -PrintingDialog.contentProgressText=\u5df2\u6253\u5370\u9875 {0}... +PrintingDialog.contentProgressText=\u5DF2\u6253\u5370\u9875 {0}... -PrintingDialog.contentAbortingText=\u6b63\u5728\u7ec8\u6b62\u6253\u5370... +PrintingDialog.contentAbortingText=\u6B63\u5728\u4E2D\u6B62\u6253\u5370... -PrintingDialog.abortButtonText=\u7ec8\u6b62(A) +PrintingDialog.abortButtonText=\u4E2D\u6B62 PrintingDialog.abortButtonMnemonic=65 -PrintingDialog.abortButtonDisplayedMnemonicIndex=3 -PrintingDialog.abortButtonToolTipText=\u7ec8\u6b62\u6253\u5370 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 +PrintingDialog.abortButtonToolTipText=\u4E2D\u6B62\u6253\u5370 ############ Internal Frame Strings ############ -InternalFrame.iconButtonToolTip=\u6700\u5c0f\u5316 +InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316 InternalFrame.maxButtonToolTip=\u6700\u5927\u5316 -InternalFrame.restoreButtonToolTip=\u6062\u590d -InternalFrame.closeButtonToolTip=\u5173\u95ed +InternalFrame.restoreButtonToolTip=\u8FD8\u539F +InternalFrame.closeButtonToolTip=\u5173\u95ED ############ Internal Frame Title Pane Strings ############ -InternalFrameTitlePane.restoreButtonText=\u6062\u590d -InternalFrameTitlePane.moveButtonText=\u79fb\u52a8 -InternalFrameTitlePane.sizeButtonText=\u5927\u5c0f -InternalFrameTitlePane.minimizeButtonText=\u6700\u5c0f\u5316 +InternalFrameTitlePane.restoreButtonText=\u8FD8\u539F +InternalFrameTitlePane.moveButtonText=\u79FB\u52A8 +InternalFrameTitlePane.sizeButtonText=\u5927\u5C0F +InternalFrameTitlePane.minimizeButtonText=\u6700\u5C0F\u5316 InternalFrameTitlePane.maximizeButtonText=\u6700\u5927\u5316 -InternalFrameTitlePane.closeButtonText=\u5173\u95ed +InternalFrameTitlePane.closeButtonText=\u5173\u95ED ############ Text strings ############# # Used for html forms -FormView.submitButtonText=\u63d0\u4ea4\u67e5\u8be2 -FormView.resetButtonText=\u91cd\u8bbe -FormView.browseFileButtonText=\u6d4f\u89c8... +FormView.submitButtonText=\u63D0\u4EA4\u67E5\u8BE2 +FormView.resetButtonText=\u91CD\u8BBE +FormView.browseFileButtonText=\u6D4F\u89C8... ############ Abstract Document Strings ############ -AbstractDocument.styleChangeText=\u98ce\u683c\u53d8\u5316 -AbstractDocument.additionText=\u589e\u52a0 +AbstractDocument.styleChangeText=\u6837\u5F0F\u66F4\u6539 +AbstractDocument.additionText=\u6DFB\u52A0 AbstractDocument.deletionText=\u5220\u9664 -AbstractDocument.undoText=\u64a4\u6d88 -AbstractDocument.redoText=\u91cd\u505a +AbstractDocument.undoText=\u64A4\u6D88 +AbstractDocument.redoText=\u91CD\u505A ############ Abstract Button Strings ############ -AbstractButton.clickText=\u5355\u51fb +AbstractButton.clickText=\u5355\u51FB ############ Abstract Undoable Edit Strings ############ -AbstractUndoableEdit.undoText=\u64a4\u6d88 -AbstractUndoableEdit.redoText=\u91cd\u505a +AbstractUndoableEdit.undoText=\u64A4\u6D88 +AbstractUndoableEdit.redoText=\u91CD\u505A ############ Combo Box Strings ############ -ComboBox.togglePopupText=\u5207\u6362\u952e\u5f39\u51fa +ComboBox.togglePopupText=togglePopup ############ Progress Monitor Strings ############ -ProgressMonitor.progressText=\u8fdb\u5ea6... +ProgressMonitor.progressText=\u8FDB\u5EA6... ############ Split Pane Strings ############ -SplitPane.leftButtonText=\u5de6\u952e -SplitPane.rightButtonText=\u53f3\u952e +SplitPane.leftButtonText=\u5DE6\u952E +SplitPane.rightButtonText=\u53F3\u952E # Used for Isindex -IsindexView.prompt=\u8fd9\u662f\u53ef\u641c\u7d22\u7d22\u5f15\u3002\u8bf7\u952e\u5165\u5173\u952e\u8bcd\uff1a +IsindexView.prompt=\u8FD9\u662F\u53EF\u641C\u7D22\u7D22\u5F15\u3002\u8BF7\u8F93\u5165\u641C\u7D22\u5173\u952E\u5B57: ############ InternalFrameTitlePane Strings ############ -InternalFrameTitlePane.iconifyButtonAccessibleName=\u56fe\u6807\u5316 +InternalFrameTitlePane.iconifyButtonAccessibleName=\u56FE\u6807\u5316 InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316 -InternalFrameTitlePane.closeButtonAccessibleName=\u5173\u95ed +InternalFrameTitlePane.closeButtonAccessibleName=\u5173\u95ED diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties index 68b14ad1f78..d0647586b98 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties @@ -45,29 +45,29 @@ # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.fileDescriptionText=\u4e00\u822c\u6a94\u6848 -FileChooser.directoryDescriptionText=\u76ee\u9304 -FileChooser.newFolderErrorText=\u5efa\u7acb\u65b0\u6a94\u6848\u593e\u6642\u767c\u751f\u932f\u8aa4 +FileChooser.fileDescriptionText=\u4E00\u822C\u6A94\u6848 +FileChooser.directoryDescriptionText=\u76EE\u9304 +FileChooser.newFolderErrorText=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4 FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=\u7121\u6cd5\u5efa\u7acb\u8cc7\u6599\u593e -FileChooser.newFolderParentDoesntExistText=\u7121\u6cd5\u5efa\u7acb\u8cc7\u6599\u593e\u3002\n\n\u7cfb\u7d71\u627e\u4e0d\u5230\u6240\u6307\u5b9a\u7684\u8def\u5f91\u3002 -FileChooser.renameErrorTitleText=\u91cd\u65b0\u547d\u540d\u6a94\u6848\u6216\u8cc7\u6599\u593e\u6642\u767c\u751f\u932f\u8aa4 -FileChooser.renameErrorText=\u7121\u6cd5\u91cd\u65b0\u547d\u540d {0} -FileChooser.renameErrorFileExistsText=\u7121\u6cd5\u91cd\u65b0\u547d\u540d {0}\uff1a\u60a8\u6307\u5b9a\u4e4b\u540d\u7a31\u7684\u6a94\u6848\u5df2\u5b58\u5728\u3002\u6307\u5b9a\u4e0d\u540c\u7684\u6a94\u6848\u540d\u7a31\u3002 -FileChooser.acceptAllFileFilterText=\u6240\u6709\u6a94\u6848 -FileChooser.cancelButtonText=\u53d6\u6d88 +FileChooser.newFolderParentDoesntExistTitleText=\u7121\u6CD5\u5EFA\u7ACB\u8CC7\u6599\u593E +FileChooser.newFolderParentDoesntExistText=\u7121\u6CD5\u5EFA\u7ACB\u8CC7\u6599\u593E\u3002\n\n\u7CFB\u7D71\u627E\u4E0D\u5230\u6307\u5B9A\u7684\u8DEF\u5F91\u3002 +FileChooser.renameErrorTitleText=\u91CD\u65B0\u547D\u540D\u6A94\u6848\u6216\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4\u3002 +FileChooser.renameErrorText=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0} +FileChooser.renameErrorFileExistsText=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0}: \u5DF2\u7D93\u5B58\u5728\u60A8\u6240\u6307\u5B9A\u540D\u7A31\u7684\u6A94\u6848\u3002\u8ACB\u6307\u5B9A\u4E0D\u540C\u7684\u540D\u7A31\u3002 +FileChooser.acceptAllFileFilterText=\u6240\u6709\u6A94\u6848 +FileChooser.cancelButtonText=\u53D6\u6D88 FileChooser.cancelButtonMnemonic=67 -FileChooser.saveButtonText=\u5132\u5b58 +FileChooser.saveButtonText=\u5132\u5B58 FileChooser.saveButtonMnemonic=83 -FileChooser.openButtonText=\u958b\u555f +FileChooser.openButtonText=\u958B\u555F FileChooser.openButtonMnemonic=79 -FileChooser.saveDialogTitleText=\u5132\u5b58 -FileChooser.openDialogTitleText=\u958b\u555f -FileChooser.updateButtonText=\u66f4\u65b0(U) +FileChooser.saveDialogTitleText=\u5132\u5B58 +FileChooser.openDialogTitleText=\u958B\u555F +FileChooser.updateButtonText=\u66F4\u65B0 FileChooser.updateButtonMnemonic=85 -FileChooser.helpButtonText=\u8aaa\u660e(H) +FileChooser.helpButtonText=\u8AAA\u660E FileChooser.helpButtonMnemonic=72 -FileChooser.directoryOpenButtonText=\u958b\u555f +FileChooser.directoryOpenButtonText=\u958B\u555F FileChooser.directoryOpenButtonMnemonic=79 # File Size Units @@ -76,150 +76,150 @@ FileChooser.fileSizeMegaBytes={0} MB FileChooser.fileSizeGigaBytes={0} GB # These strings are platform dependent not look and feel dependent. -FileChooser.win32.newFolder=\u65b0\u8cc7\u6599\u593e -FileChooser.win32.newFolder.subsequent=\u65b0\u8cc7\u6599\u593e ({0}) -FileChooser.other.newFolder=\u65b0\u8cc7\u6599\u593e -FileChooser.other.newFolder.subsequent=\u65b0\u8cc7\u6599\u593e.{0} +FileChooser.win32.newFolder=\u65B0\u8CC7\u6599\u593E +FileChooser.win32.newFolder.subsequent=\u65B0\u8CC7\u6599\u593E ({0}) +FileChooser.other.newFolder=\u65B0\u8CC7\u6599\u593E +FileChooser.other.newFolder.subsequent=\u65B0\u8CC7\u6599\u593E.{0} ## file chooser tooltips ### -FileChooser.cancelButtonToolTipText=\u4e2d\u65b7\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u5c0d\u8a71\u65b9\u584a -FileChooser.saveButtonToolTipText=\u5132\u5b58\u9078\u53d6\u7684\u6a94\u6848 -FileChooser.openButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u6a94\u6848 -FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u9304\u6e05\u55ae -FileChooser.helpButtonToolTipText=\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u8aaa\u660e -FileChooser.directoryOpenButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u76ee\u9304 +FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6A94\u6848\u9078\u64C7\u5668\u5C0D\u8A71\u65B9\u584A +FileChooser.saveButtonToolTipText=\u5132\u5B58\u9078\u53D6\u7684\u6A94\u6848 +FileChooser.openButtonToolTipText=\u958B\u555F\u9078\u53D6\u7684\u6A94\u6848 +FileChooser.updateButtonToolTipText=\u66F4\u65B0\u76EE\u9304\u6E05\u55AE +FileChooser.helpButtonToolTipText=\u300C\u6A94\u6848\u9078\u64C7\u5668\u300D\u8AAA\u660E +FileChooser.directoryOpenButtonToolTipText=\u958B\u555F\u9078\u53D6\u7684\u76EE\u9304 ############ COLOR CHOOSER STRINGS ############# -ColorChooser.previewText=\u9810\u89bd -ColorChooser.okText=\u78ba\u5b9a -ColorChooser.cancelText=\u53d6\u6d88 -ColorChooser.resetText=\u91cd\u8a2d(R) +ColorChooser.previewText=\u9810\u89BD +ColorChooser.okText=\u78BA\u5B9A +ColorChooser.cancelText=\u53D6\u6D88 +ColorChooser.resetText=\u91CD\u8A2D # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic ColorChooser.resetMnemonic=82 -ColorChooser.sampleText=\u7bc4\u4f8b\u6587\u5b57 \u7bc4\u4f8b\u6587\u5b57 -ColorChooser.swatchesNameText=\u8abf\u8272\u677f(S) +ColorChooser.sampleText=\u7BC4\u4F8B\u6587\u5B57 \u7BC4\u4F8B\u6587\u5B57 +ColorChooser.swatchesNameText=\u8ABF\u8272\u677F ColorChooser.swatchesMnemonic=83 -ColorChooser.swatchesRecentText=\u6700\u65b0\u9078\u64c7: +ColorChooser.swatchesRecentText=\u6700\u65B0\u9078\u64C7: # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=\u8272\u8abf -ColorChooser.hsvSaturationText=\u98fd\u548c\u5ea6 -ColorChooser.hsvValueText=\u503c -ColorChooser.hsvTransparencyText=\u900f\u660e\u5ea6 +ColorChooser.hsvHueText=\u8272\u8ABF +ColorChooser.hsvSaturationText=\u5F69\u5EA6 +ColorChooser.hsvValueText=\u6578\u503C +ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6 ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=\u8272\u8abf -ColorChooser.hslSaturationText=\u98fd\u548c\u5ea6 -ColorChooser.hslLightnessText=\u4eae\u5ea6 -ColorChooser.hslTransparencyText=\u900f\u660e\u5ea6 +ColorChooser.hslHueText=\u8272\u8ABF +ColorChooser.hslSaturationText=\u5F69\u5EA6 +ColorChooser.hslLightnessText=\u4EAE\u5EA6 +ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6 ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 -ColorChooser.rgbRedText=\u7d05\u8272(D) +ColorChooser.rgbRedText=\u7D05\u8272 ColorChooser.rgbRedMnemonic=68 -ColorChooser.rgbGreenText=\u7da0\u8272(N) +ColorChooser.rgbGreenText=\u7DA0\u8272 ColorChooser.rgbGreenMnemonic=78 -ColorChooser.rgbBlueText=\u85cd\u8272(B) +ColorChooser.rgbBlueText=\u85CD\u8272 ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=\u8272\u78bc +ColorChooser.rgbHexCodeText=\u984F\u8272\u4EE3\u78BC ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=\u85cd\u7da0\u8272 -ColorChooser.cmykMagentaText=\u7d2b\u7d05\u8272 -ColorChooser.cmykYellowText=\u9ec3\u8272 -ColorChooser.cmykBlackText=\u9ed1\u8272 +ColorChooser.cmykCyanText=\u85CD\u7DA0\u8272 +ColorChooser.cmykMagentaText=\u7D2B\u7D05\u8272 +ColorChooser.cmykYellowText=\u9EC3\u8272 +ColorChooser.cmykBlackText=\u9ED1\u8272 ColorChooser.cmykAlphaText=Alpha ############ OPTION PANE STRINGS ############# # Mnemonic keys correspond to KeyEvent.VK_XXX constant # We only define mnemonics for YES/NO, but for completeness you can # define mnemonics for any of the buttons. -OptionPane.yesButtonText=\u662f(Y) +OptionPane.yesButtonText=\u662F OptionPane.yesButtonMnemonic=89 -OptionPane.noButtonText=\u5426(N) +OptionPane.noButtonText=\u5426 OptionPane.noButtonMnemonic=78 -OptionPane.okButtonText=\u78ba\u5b9a +OptionPane.okButtonText=\u78BA\u5B9A OptionPane.okButtonMnemonic=0 -OptionPane.cancelButtonText=\u53d6\u6d88 +OptionPane.cancelButtonText=\u53D6\u6D88 OptionPane.cancelButtonMnemonic=0 -OptionPane.titleText=\u9078\u53d6\u4e00\u500b\u9078\u9805 +OptionPane.titleText=\u9078\u53D6\u4E00\u500B\u9078\u9805 # Title for the dialog for the showInputDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. -OptionPane.inputDialogTitle=\u8f38\u5165 +OptionPane.inputDialogTitle=\u8F38\u5165 # Title for the dialog for the showMessageDialog methods. Only used if # the developer uses one of the variants that doesn't take a title. -OptionPane.messageDialogTitle=\u8a0a\u606f +OptionPane.messageDialogTitle=\u8A0A\u606F ############ Printing Dialog Strings ############ PrintingDialog.titleProgressText=\u5217\u5370 -PrintingDialog.titleAbortingText=\u5217\u5370 (\u4e2d\u65b7) +PrintingDialog.titleAbortingText=\u5217\u5370 (\u4E2D\u6B62) -PrintingDialog.contentInitialText=\u6b63\u5728\u5217\u5370... +PrintingDialog.contentInitialText=\u6B63\u5728\u5217\u5370... # The following string will be formatted by a MessageFormat # and {0} will be replaced by page number being printed -PrintingDialog.contentProgressText=\u5df2\u5217\u5370\u7684\u9801\u9762 {0}... +PrintingDialog.contentProgressText=\u5DF2\u5217\u5370\u7684\u9801\u9762 {0}... -PrintingDialog.contentAbortingText=\u6b63\u5728\u4e2d\u65b7\u5217\u5370... +PrintingDialog.contentAbortingText=\u6B63\u5728\u4E2D\u6B62\u5217\u5370... -PrintingDialog.abortButtonText=\u4e2d\u65b7(A) +PrintingDialog.abortButtonText=\u4E2D\u6B62 PrintingDialog.abortButtonMnemonic=65 PrintingDialog.abortButtonDisplayedMnemonicIndex=0 -PrintingDialog.abortButtonToolTipText=\u4e2d\u65b7\u5217\u5370 +PrintingDialog.abortButtonToolTipText=\u4E2D\u6B62\u5217\u5370 ############ Internal Frame Strings ############ -InternalFrame.iconButtonToolTip=\u6700\u5c0f\u5316 +InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316 InternalFrame.maxButtonToolTip=\u6700\u5927\u5316 -InternalFrame.restoreButtonToolTip=\u5fa9\u539f -InternalFrame.closeButtonToolTip=\u95dc\u9589 +InternalFrame.restoreButtonToolTip=\u5FA9\u539F +InternalFrame.closeButtonToolTip=\u95DC\u9589 ############ Internal Frame Title Pane Strings ############ -InternalFrameTitlePane.restoreButtonText=\u5fa9\u539f -InternalFrameTitlePane.moveButtonText=\u79fb\u52d5 -InternalFrameTitlePane.sizeButtonText=\u5927\u5c0f -InternalFrameTitlePane.minimizeButtonText=\u6700\u5c0f\u5316 +InternalFrameTitlePane.restoreButtonText=\u5FA9\u539F +InternalFrameTitlePane.moveButtonText=\u79FB\u52D5 +InternalFrameTitlePane.sizeButtonText=\u5927\u5C0F +InternalFrameTitlePane.minimizeButtonText=\u6700\u5C0F\u5316 InternalFrameTitlePane.maximizeButtonText=\u6700\u5927\u5316 -InternalFrameTitlePane.closeButtonText=\u95dc\u9589 +InternalFrameTitlePane.closeButtonText=\u95DC\u9589 ############ Text strings ############# # Used for html forms -FormView.submitButtonText=\u63d0\u51fa\u67e5\u8a62 -FormView.resetButtonText=\u91cd\u8a2d -FormView.browseFileButtonText=\u700f\u89bd... +FormView.submitButtonText=\u9001\u51FA\u67E5\u8A62 +FormView.resetButtonText=\u91CD\u8A2D +FormView.browseFileButtonText=\u700F\u89BD... ############ Abstract Document Strings ############ -AbstractDocument.styleChangeText=\u6a23\u5f0f\u8b8a\u66f4 -AbstractDocument.additionText=\u9644\u52a0 -AbstractDocument.deletionText=\u522a\u9664 -AbstractDocument.undoText=\u9084\u539f -AbstractDocument.redoText=\u91cd\u505a +AbstractDocument.styleChangeText=\u6A23\u5F0F\u8B8A\u66F4 +AbstractDocument.additionText=\u9644\u52A0 +AbstractDocument.deletionText=\u522A\u9664 +AbstractDocument.undoText=\u9084\u539F +AbstractDocument.redoText=\u91CD\u505A ############ Abstract Button Strings ############ -AbstractButton.clickText=\u6309\u4e00\u4e0b +AbstractButton.clickText=\u6309\u4E00\u4E0B ############ Abstract Undoable Edit Strings ############ -AbstractUndoableEdit.undoText=\u9084\u539f -AbstractUndoableEdit.redoText=\u91cd\u505a +AbstractUndoableEdit.undoText=\u9084\u539F +AbstractUndoableEdit.redoText=\u91CD\u505A ############ Combo Box Strings ############ -ComboBox.togglePopupText=\u5207\u63db\u5373\u73fe +ComboBox.togglePopupText=\u5207\u63DB\u5373\u73FE\u5F0F\u8996\u7A97 ############ Progress Monitor Strings ############ -ProgressMonitor.progressText=\u9032\u5ea6... +ProgressMonitor.progressText=\u9032\u5EA6... ############ Split Pane Strings ############ -SplitPane.leftButtonText=\u5de6\u6309\u9215 -SplitPane.rightButtonText=\u53f3\u6309\u9215 +SplitPane.leftButtonText=\u5DE6\u6309\u9215 +SplitPane.rightButtonText=\u53F3\u6309\u9215 # Used for Isindex -IsindexView.prompt=\u9019\u662f\u4e00\u500b\u53ef\u641c\u5c0b\u7684\u7d22\u5f15\u3002\u8f38\u5165\u641c\u5c0b\u95dc\u9375\u5b57\uff1a +IsindexView.prompt=\u9019\u662F\u4E00\u500B\u53EF\u641C\u5C0B\u7684\u7D22\u5F15\u3002\u8F38\u5165\u641C\u5C0B\u95DC\u9375\u5B57: ############ InternalFrameTitlePane Strings ############ -InternalFrameTitlePane.iconifyButtonAccessibleName=\u5716\u793a\u5316 +InternalFrameTitlePane.iconifyButtonAccessibleName=\u5716\u793A\u5316 InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316 -InternalFrameTitlePane.closeButtonAccessibleName=\u95dc\u9589 +InternalFrameTitlePane.closeButtonAccessibleName=\u95DC\u9589 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties index 1262ee30ff4..1b3214fc72d 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties @@ -21,10 +21,10 @@ FileChooser.lookInLabelText=Suchen in: FileChooser.saveInLabelText=Speichern in: FileChooser.fileNameLabelText=Dateiname: -FileChooser.folderNameLabelText=Folder name: +FileChooser.folderNameLabelText=Ordnername: FileChooser.filesOfTypeLabelText=Dateityp: -FileChooser.upFolderToolTipText=Eine Ebene h\u00f6her -FileChooser.upFolderAccessibleName=H\u00f6her +FileChooser.upFolderToolTipText=Eine Ebene h\u00F6her +FileChooser.upFolderAccessibleName=Nach oben FileChooser.homeFolderToolTipText=Home FileChooser.homeFolderAccessibleName=Home FileChooser.newFolderToolTipText=Neuen Ordner erstellen @@ -38,19 +38,19 @@ FileChooser.detailsViewButtonAccessibleName=Details FileChooser.detailsViewActionLabelText=Details FileChooser.refreshActionLabelText=Aktualisieren FileChooser.viewMenuLabelText=Ansicht -FileChooser.fileNameHeaderText=Dateiname -FileChooser.fileSizeHeaderText=Gr\u00f6\u00dfe +FileChooser.fileNameHeaderText=Name +FileChooser.fileSizeHeaderText=Gr\u00F6\u00DFe FileChooser.fileTypeHeaderText=Typ -FileChooser.fileDateHeaderText=Ge\u00e4ndert -FileChooser.fileAttrHeaderText=Attribut +FileChooser.fileDateHeaderText=Ge\u00E4ndert +FileChooser.fileAttrHeaderText=Attribute ############ Used by MetalTitlePane if rendering window decorations############ # All mnemonics are KeyEvent.VK_XXX as integers MetalTitlePane.restoreTitle=Wiederherstellen -MetalTitlePane.restoreMnemonic=87 +MetalTitlePane.restoreMnemonic=82 MetalTitlePane.iconifyTitle=Minimieren -MetalTitlePane.iconifyMnemonic=77 +MetalTitlePane.iconifyMnemonic=69 MetalTitlePane.maximizeTitle=Maximieren MetalTitlePane.maximizeMnemonic=88 -MetalTitlePane.closeTitle=Schlie\u00dfen -MetalTitlePane.closeMnemonic=83 +MetalTitlePane.closeTitle=Schlie\u00DFen +MetalTitlePane.closeMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties index 29f9a51d566..09afa0a86e7 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties @@ -20,26 +20,26 @@ FileChooser.lookInLabelText=Buscar en: FileChooser.saveInLabelText=Guardar en: -FileChooser.fileNameLabelText=Nombre de archivo: -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=Archivos de tipo: -FileChooser.upFolderToolTipText=Subir un nivel +FileChooser.fileNameLabelText=Nombre de Archivo: +FileChooser.folderNameLabelText=Nombre de la Carpeta: +FileChooser.filesOfTypeLabelText=Archivos de Tipo: +FileChooser.upFolderToolTipText=Subir un Nivel FileChooser.upFolderAccessibleName=Arriba -FileChooser.homeFolderToolTipText=Principal -FileChooser.homeFolderAccessibleName=Principal -FileChooser.newFolderToolTipText=Crear carpeta nueva -FileChooser.newFolderAccessibleName=Carpeta nueva -FileChooser.newFolderActionLabelText=Carpeta nueva +FileChooser.homeFolderToolTipText=Inicio +FileChooser.homeFolderAccessibleName=Inicio +FileChooser.newFolderToolTipText=Crear Nueva Carpeta +FileChooser.newFolderAccessibleName=Nueva Carpeta +FileChooser.newFolderActionLabelText=Nueva Carpeta FileChooser.listViewButtonToolTipText=Lista FileChooser.listViewButtonAccessibleName=Lista FileChooser.listViewActionLabelText=Lista FileChooser.detailsViewButtonToolTipText=Detalles FileChooser.detailsViewButtonAccessibleName=Detalles FileChooser.detailsViewActionLabelText=Detalles -FileChooser.refreshActionLabelText=Renovar +FileChooser.refreshActionLabelText=Refrescar FileChooser.viewMenuLabelText=Ver FileChooser.fileNameHeaderText=Nombre -FileChooser.fileSizeHeaderText=Tama\u00f1o +FileChooser.fileSizeHeaderText=Tama\u00F1o FileChooser.fileTypeHeaderText=Tipo FileChooser.fileDateHeaderText=Modificado FileChooser.fileAttrHeaderText=Atributos @@ -49,7 +49,7 @@ FileChooser.fileAttrHeaderText=Atributos MetalTitlePane.restoreTitle=Restaurar MetalTitlePane.restoreMnemonic=82 MetalTitlePane.iconifyTitle=Minimizar -MetalTitlePane.iconifyMnemonic=77 +MetalTitlePane.iconifyMnemonic=69 MetalTitlePane.maximizeTitle=Maximizar MetalTitlePane.maximizeMnemonic=88 MetalTitlePane.closeTitle=Cerrar diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties index 8f7a7c5d2a7..6c158902326 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties @@ -20,37 +20,37 @@ FileChooser.lookInLabelText=Rechercher dans : FileChooser.saveInLabelText=Enregistrer dans : -FileChooser.fileNameLabelText=Nom de fichier : -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=Fichiers du type : +FileChooser.fileNameLabelText=Nom du fichier : +FileChooser.folderNameLabelText=Nom du dossier : +FileChooser.filesOfTypeLabelText=Fichiers de type : FileChooser.upFolderToolTipText=Remonte d'un niveau. -FileChooser.upFolderAccessibleName=Vers le haut -FileChooser.homeFolderToolTipText=R\u00e9pertoire d'accueil -FileChooser.homeFolderAccessibleName=Accueil -FileChooser.newFolderToolTipText=Cr\u00e9e un nouveau dossier. +FileChooser.upFolderAccessibleName=Monter +FileChooser.homeFolderToolTipText=R\u00E9pertoire d'origine +FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine +FileChooser.newFolderToolTipText=Cr\u00E9e un dossier. FileChooser.newFolderAccessibleName=Nouveau dossier FileChooser.newFolderActionLabelText=Nouveau dossier FileChooser.listViewButtonToolTipText=Liste FileChooser.listViewButtonAccessibleName=Liste FileChooser.listViewActionLabelText=Liste -FileChooser.detailsViewButtonToolTipText=D\u00e9tails -FileChooser.detailsViewButtonAccessibleName=D\u00e9tails -FileChooser.detailsViewActionLabelText=D\u00e9tails +FileChooser.detailsViewButtonToolTipText=D\u00E9tails +FileChooser.detailsViewButtonAccessibleName=D\u00E9tails +FileChooser.detailsViewActionLabelText=D\u00E9tails FileChooser.refreshActionLabelText=Actualiser FileChooser.viewMenuLabelText=Affichage FileChooser.fileNameHeaderText=Nom FileChooser.fileSizeHeaderText=Taille FileChooser.fileTypeHeaderText=Type -FileChooser.fileDateHeaderText=Modifi\u00e9 +FileChooser.fileDateHeaderText=Modifi\u00E9 FileChooser.fileAttrHeaderText=Attributs ############ Used by MetalTitlePane if rendering window decorations############ # All mnemonics are KeyEvent.VK_XXX as integers MetalTitlePane.restoreTitle=Restaurer MetalTitlePane.restoreMnemonic=82 -MetalTitlePane.iconifyTitle=R\u00e9duire -MetalTitlePane.iconifyMnemonic=68 +MetalTitlePane.iconifyTitle=R\u00E9duire +MetalTitlePane.iconifyMnemonic=69 MetalTitlePane.maximizeTitle=Agrandir -MetalTitlePane.maximizeMnemonic=65 +MetalTitlePane.maximizeMnemonic=88 MetalTitlePane.closeTitle=Fermer -MetalTitlePane.closeMnemonic=70 +MetalTitlePane.closeMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties index 2b3b1c0f95b..1a5deb02e37 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties @@ -21,18 +21,18 @@ FileChooser.lookInLabelText=Cerca in: FileChooser.saveInLabelText=Salva in: FileChooser.fileNameLabelText=Nome file: -FileChooser.folderNameLabelText=Folder name: +FileChooser.folderNameLabelText=Nome della cartella: FileChooser.filesOfTypeLabelText=Tipo file: FileChooser.upFolderToolTipText=Cartella superiore FileChooser.upFolderAccessibleName=Superiore -FileChooser.homeFolderToolTipText=Principale -FileChooser.homeFolderAccessibleName=Principale +FileChooser.homeFolderToolTipText=Home +FileChooser.homeFolderAccessibleName=Home FileChooser.newFolderToolTipText=Crea nuova cartella FileChooser.newFolderAccessibleName=Nuova cartella FileChooser.newFolderActionLabelText=Nuova cartella -FileChooser.listViewButtonToolTipText=Elenco -FileChooser.listViewButtonAccessibleName=Elenco -FileChooser.listViewActionLabelText=Elenco +FileChooser.listViewButtonToolTipText=Lista +FileChooser.listViewButtonAccessibleName=Lista +FileChooser.listViewActionLabelText=Lista FileChooser.detailsViewButtonToolTipText=Dettagli FileChooser.detailsViewButtonAccessibleName=Dettagli FileChooser.detailsViewActionLabelText=Dettagli @@ -49,8 +49,8 @@ FileChooser.fileAttrHeaderText=Attributi MetalTitlePane.restoreTitle=Ripristina MetalTitlePane.restoreMnemonic=82 MetalTitlePane.iconifyTitle=Riduci a icona -MetalTitlePane.iconifyMnemonic=68 +MetalTitlePane.iconifyMnemonic=69 MetalTitlePane.maximizeTitle=Ingrandisci -MetalTitlePane.maximizeMnemonic=73 +MetalTitlePane.maximizeMnemonic=88 MetalTitlePane.closeTitle=Chiudi MetalTitlePane.closeMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties index 94a1ad236bc..f5a4bc9cca3 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties @@ -18,39 +18,39 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\u53c2\u7167: -FileChooser.saveInLabelText=\u4fdd\u5b58: -FileChooser.fileNameLabelText=\u30d5\u30a1\u30a4\u30eb\u540d: -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7: -FileChooser.upFolderToolTipText=1 \u30ec\u30d9\u30eb\u4e0a\u3078 -FileChooser.upFolderAccessibleName=\u4e0a\u3078 -FileChooser.homeFolderToolTipText=\u30db\u30fc\u30e0 -FileChooser.homeFolderAccessibleName=\u30db\u30fc\u30e0 -FileChooser.newFolderToolTipText=\u30d5\u30a9\u30eb\u30c0\u306e\u65b0\u898f\u4f5c\u6210 -FileChooser.newFolderAccessibleName=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 -FileChooser.newFolderActionLabelText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 -FileChooser.listViewButtonToolTipText=\u30ea\u30b9\u30c8 -FileChooser.listViewButtonAccessibleName=\u30ea\u30b9\u30c8 -FileChooser.listViewActionLabelText=\u30ea\u30b9\u30c8 -FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30 -FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30 -FileChooser.detailsViewActionLabelText=\u8a73\u7d30 -FileChooser.refreshActionLabelText=\u66f4\u65b0 -FileChooser.viewMenuLabelText=\u8868\u793a -FileChooser.fileNameHeaderText=\u540d\u524d -FileChooser.fileSizeHeaderText=\u30b5\u30a4\u30ba -FileChooser.fileTypeHeaderText=\u578b -FileChooser.fileDateHeaderText=\u4fee\u6b63\u65e5 -FileChooser.fileAttrHeaderText=\u5c5e\u6027 +FileChooser.lookInLabelText=\u53C2\u7167: +FileChooser.saveInLabelText=\u4FDD\u5B58: +FileChooser.fileNameLabelText=\u30D5\u30A1\u30A4\u30EB\u540D: +FileChooser.folderNameLabelText=\u30D5\u30A9\u30EB\u30C0\u540D: +FileChooser.filesOfTypeLabelText=\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30A4\u30D7: +FileChooser.upFolderToolTipText=1\u30EC\u30D9\u30EB\u4E0A\u3078 +FileChooser.upFolderAccessibleName=\u4E0A\u3078 +FileChooser.homeFolderToolTipText=\u30DB\u30FC\u30E0 +FileChooser.homeFolderAccessibleName=\u30DB\u30FC\u30E0 +FileChooser.newFolderToolTipText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210 +FileChooser.newFolderAccessibleName=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 +FileChooser.newFolderActionLabelText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 +FileChooser.listViewButtonToolTipText=\u30EA\u30B9\u30C8 +FileChooser.listViewButtonAccessibleName=\u30EA\u30B9\u30C8 +FileChooser.listViewActionLabelText=\u30EA\u30B9\u30C8 +FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30 +FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30 +FileChooser.detailsViewActionLabelText=\u8A73\u7D30 +FileChooser.refreshActionLabelText=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5 +FileChooser.viewMenuLabelText=\u8868\u793A +FileChooser.fileNameHeaderText=\u540D\u524D +FileChooser.fileSizeHeaderText=\u30B5\u30A4\u30BA +FileChooser.fileTypeHeaderText=\u30BF\u30A4\u30D7 +FileChooser.fileDateHeaderText=\u4FEE\u6B63\u65E5 +FileChooser.fileAttrHeaderText=\u5C5E\u6027 ############ Used by MetalTitlePane if rendering window decorations############ # All mnemonics are KeyEvent.VK_XXX as integers -MetalTitlePane.restoreTitle=\u5fa9\u5143(R) +MetalTitlePane.restoreTitle=\u5FA9\u5143 MetalTitlePane.restoreMnemonic=82 -MetalTitlePane.iconifyTitle=\u6700\u5c0f\u5316(E) +MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316 MetalTitlePane.iconifyMnemonic=69 -MetalTitlePane.maximizeTitle=\u6700\u5927\u5316(X) +MetalTitlePane.maximizeTitle=\u6700\u5927\u5316 MetalTitlePane.maximizeMnemonic=88 -MetalTitlePane.closeTitle=\u9589\u3058\u308b(C) +MetalTitlePane.closeTitle=\u9589\u3058\u308B MetalTitlePane.closeMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties index 1bb569128f9..fae574fcc5a 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties @@ -18,39 +18,39 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\uac80\uc0c9 \uc704\uce58: -FileChooser.saveInLabelText=\uc800\uc7a5 \uc704\uce58 -FileChooser.fileNameLabelText=\ud30c\uc77c \uc774\ub984: -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\ud30c\uc77c \uc885\ub958: -FileChooser.upFolderToolTipText=\ud55c \ub2e8\uacc4 \uc704\ub85c -FileChooser.upFolderAccessibleName=\uc704 -FileChooser.homeFolderToolTipText=\ud648 -FileChooser.homeFolderAccessibleName=\ud648 -FileChooser.newFolderToolTipText=\uc0c8 \ud3f4\ub354 \uc791\uc131 -FileChooser.newFolderAccessibleName=\uc0c8 \ud3f4\ub354 -FileChooser.newFolderActionLabelText=\uc0c8 \ud3f4\ub354 -FileChooser.listViewButtonToolTipText=\ubaa9\ub85d -FileChooser.listViewButtonAccessibleName=\ubaa9\ub85d -FileChooser.listViewActionLabelText=\ubaa9\ub85d -FileChooser.detailsViewButtonToolTipText=\uc790\uc138\ud788 -FileChooser.detailsViewButtonAccessibleName=\uc790\uc138\ud788 -FileChooser.detailsViewActionLabelText=\uc790\uc138\ud788 -FileChooser.refreshActionLabelText=\uac31\uc2e0 -FileChooser.viewMenuLabelText=\ubcf4\uae30 -FileChooser.fileNameHeaderText=\uc774\ub984 -FileChooser.fileSizeHeaderText=\ud06c\uae30 -FileChooser.fileTypeHeaderText=\uc885\ub958 -FileChooser.fileDateHeaderText=\uc218\uc815 -FileChooser.fileAttrHeaderText=\uc18d\uc131 +FileChooser.lookInLabelText=\uAC80\uC0C9 \uC704\uCE58: +FileChooser.saveInLabelText=\uC800\uC7A5 \uC704\uCE58: +FileChooser.fileNameLabelText=\uD30C\uC77C \uC774\uB984: +FileChooser.folderNameLabelText=\uD3F4\uB354 \uC774\uB984: +FileChooser.filesOfTypeLabelText=\uD30C\uC77C \uC720\uD615: +FileChooser.upFolderToolTipText=\uD55C \uB808\uBCA8 \uC704\uB85C +FileChooser.upFolderAccessibleName=\uC704\uB85C +FileChooser.homeFolderToolTipText=\uD648 +FileChooser.homeFolderAccessibleName=\uD648 +FileChooser.newFolderToolTipText=\uC0C8 \uD3F4\uB354 \uC0DD\uC131 +FileChooser.newFolderAccessibleName=\uC0C8 \uD3F4\uB354 +FileChooser.newFolderActionLabelText=\uC0C8 \uD3F4\uB354 +FileChooser.listViewButtonToolTipText=\uBAA9\uB85D +FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D +FileChooser.listViewActionLabelText=\uBAA9\uB85D +FileChooser.detailsViewButtonToolTipText=\uC138\uBD80 \uC815\uBCF4 +FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4 +FileChooser.detailsViewActionLabelText=\uC138\uBD80 \uC815\uBCF4 +FileChooser.refreshActionLabelText=\uC0C8\uB85C \uACE0\uCE68 +FileChooser.viewMenuLabelText=\uBCF4\uAE30 +FileChooser.fileNameHeaderText=\uC774\uB984 +FileChooser.fileSizeHeaderText=\uD06C\uAE30 +FileChooser.fileTypeHeaderText=\uC720\uD615 +FileChooser.fileDateHeaderText=\uC218\uC815 \uB0A0\uC9DC +FileChooser.fileAttrHeaderText=\uC18D\uC131 ############ Used by MetalTitlePane if rendering window decorations############ # All mnemonics are KeyEvent.VK_XXX as integers -MetalTitlePane.restoreTitle=\ubcf5\uc6d0(R) +MetalTitlePane.restoreTitle=\uBCF5\uC6D0 MetalTitlePane.restoreMnemonic=82 -MetalTitlePane.iconifyTitle=\ucd5c\uc18c\ud654(E) +MetalTitlePane.iconifyTitle=\uCD5C\uC18C\uD654 MetalTitlePane.iconifyMnemonic=69 -MetalTitlePane.maximizeTitle=\ucd5c\ub300\ud654(X) +MetalTitlePane.maximizeTitle=\uCD5C\uB300\uD654 MetalTitlePane.maximizeMnemonic=88 -MetalTitlePane.closeTitle=\ub2eb\uae30(C) +MetalTitlePane.closeTitle=\uB2EB\uAE30 MetalTitlePane.closeMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties index 6a397b35545..7f7cd1c8f44 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties @@ -18,17 +18,18 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=Consultar em: -FileChooser.saveInLabelText=Salvar em: -FileChooser.fileNameLabelText=Nome de arquivo: -FileChooser.filesOfTypeLabelText=Arquivos de tipo: -FileChooser.upFolderToolTipText=Um n\u00edvel acima +FileChooser.lookInLabelText=Consultar Em: +FileChooser.saveInLabelText=Salvar Em: +FileChooser.fileNameLabelText=Nome do Arquivo: +FileChooser.folderNameLabelText=Nome da pasta: +FileChooser.filesOfTypeLabelText=Arquivos do Tipo: +FileChooser.upFolderToolTipText=Um N\u00EDvel Acima FileChooser.upFolderAccessibleName=Acima -FileChooser.homeFolderToolTipText=In\u00edcio -FileChooser.homeFolderAccessibleName=In\u00edcio -FileChooser.newFolderToolTipText=Criar nova pasta -FileChooser.newFolderAccessibleName=Nova pasta -FileChooser.newFolderActionLabelText=Nova pasta +FileChooser.homeFolderToolTipText=In\u00EDcio +FileChooser.homeFolderAccessibleName=In\u00EDcio +FileChooser.newFolderToolTipText=Criar Nova Pasta +FileChooser.newFolderAccessibleName=Nova Pasta +FileChooser.newFolderActionLabelText=Nova Pasta FileChooser.listViewButtonToolTipText=Lista FileChooser.listViewButtonAccessibleName=Lista FileChooser.listViewActionLabelText=Lista diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties index 03085c022e8..75176928601 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties @@ -18,12 +18,12 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=S\u00f6k i: +FileChooser.lookInLabelText=Leta i: FileChooser.saveInLabelText=Spara i: FileChooser.fileNameLabelText=Filnamn: -FileChooser.folderNameLabelText=Folder name: +FileChooser.folderNameLabelText=Mapp: FileChooser.filesOfTypeLabelText=Filformat: -FileChooser.upFolderToolTipText=Upp en niv\u00e5 +FileChooser.upFolderToolTipText=Upp en niv\u00E5 FileChooser.upFolderAccessibleName=Upp FileChooser.homeFolderToolTipText=Hem FileChooser.homeFolderAccessibleName=Hem @@ -33,24 +33,24 @@ FileChooser.newFolderActionLabelText=Ny mapp FileChooser.listViewButtonToolTipText=Lista FileChooser.listViewButtonAccessibleName=Lista FileChooser.listViewActionLabelText=Lista -FileChooser.detailsViewButtonToolTipText=Detaljerad lista -FileChooser.detailsViewButtonAccessibleName=Detaljerad lista -FileChooser.detailsViewActionLabelText=Detaljerad lista -FileChooser.refreshActionLabelText=Uppdatera +FileChooser.detailsViewButtonToolTipText=Detaljer +FileChooser.detailsViewButtonAccessibleName=Detaljer +FileChooser.detailsViewActionLabelText=Detaljer +FileChooser.refreshActionLabelText=F\u00F6rnya FileChooser.viewMenuLabelText=Vy FileChooser.fileNameHeaderText=Namn FileChooser.fileSizeHeaderText=Storlek FileChooser.fileTypeHeaderText=Typ -FileChooser.fileDateHeaderText=\u00c4ndrad +FileChooser.fileDateHeaderText=\u00C4ndrad FileChooser.fileAttrHeaderText=Attribut ############ Used by MetalTitlePane if rendering window decorations############ # All mnemonics are KeyEvent.VK_XXX as integers -MetalTitlePane.restoreTitle=\u00c5terst\u00e4ll -MetalTitlePane.restoreMnemonic=84 +MetalTitlePane.restoreTitle=\u00C5terst\u00E4ll +MetalTitlePane.restoreMnemonic=82 MetalTitlePane.iconifyTitle=Minimera -MetalTitlePane.iconifyMnemonic=77 +MetalTitlePane.iconifyMnemonic=69 MetalTitlePane.maximizeTitle=Maximera MetalTitlePane.maximizeMnemonic=88 -MetalTitlePane.closeTitle=St\u00e4ng -MetalTitlePane.closeMnemonic=83 +MetalTitlePane.closeTitle=St\u00E4ng +MetalTitlePane.closeMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties index 9e2b454a7ec..7292eebe8c2 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties @@ -18,39 +18,39 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\u67e5\u770b\uff1a -FileChooser.saveInLabelText=\u4fdd\u5b58\uff1a -FileChooser.fileNameLabelText=\u6587\u4ef6\u540d\uff1a -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\u6587\u4ef6\u7c7b\u578b\uff1a -FileChooser.upFolderToolTipText=\u5411\u4e0a\u4e00\u5c42 -FileChooser.upFolderAccessibleName=\u5411\u4e0a -FileChooser.homeFolderToolTipText=\u8d77\u59cb\u76ee\u5f55 -FileChooser.homeFolderAccessibleName=\u8d77\u59cb\u76ee\u5f55 -FileChooser.newFolderToolTipText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939 -FileChooser.newFolderAccessibleName=\u65b0\u5efa\u6587\u4ef6\u5939 -FileChooser.newFolderActionLabelText=\u65b0\u5efa\u6587\u4ef6\u5939 +FileChooser.lookInLabelText=\u67E5\u770B: +FileChooser.saveInLabelText=\u4FDD\u5B58: +FileChooser.fileNameLabelText=\u6587\u4EF6\u540D: +FileChooser.folderNameLabelText=\u6587\u4EF6\u5939\u540D: +FileChooser.filesOfTypeLabelText=\u6587\u4EF6\u7C7B\u578B: +FileChooser.upFolderToolTipText=\u5411\u4E0A\u4E00\u7EA7 +FileChooser.upFolderAccessibleName=\u5411\u4E0A +FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u5F55 +FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u5F55 +FileChooser.newFolderToolTipText=\u521B\u5EFA\u65B0\u6587\u4EF6\u5939 +FileChooser.newFolderAccessibleName=\u65B0\u5EFA\u6587\u4EF6\u5939 +FileChooser.newFolderActionLabelText=\u65B0\u5EFA\u6587\u4EF6\u5939 FileChooser.listViewButtonToolTipText=\u5217\u8868 FileChooser.listViewButtonAccessibleName=\u5217\u8868 FileChooser.listViewActionLabelText=\u5217\u8868 -FileChooser.detailsViewButtonToolTipText=\u8be6\u7ec6\u4fe1\u606f -FileChooser.detailsViewButtonAccessibleName=\u8be6\u7ec6\u4fe1\u606f -FileChooser.detailsViewActionLabelText=\u8be6\u7ec6\u4fe1\u606f -FileChooser.refreshActionLabelText=\u5237\u65b0 -FileChooser.viewMenuLabelText=\u89c6\u56fe -FileChooser.fileNameHeaderText=\u540d\u79f0 -FileChooser.fileSizeHeaderText=\u5927\u5c0f -FileChooser.fileTypeHeaderText=\u7c7b\u578b -FileChooser.fileDateHeaderText=\u4fee\u6b63\u7248 -FileChooser.fileAttrHeaderText=\u5c5e\u6027 +FileChooser.detailsViewButtonToolTipText=\u8BE6\u7EC6\u8D44\u6599 +FileChooser.detailsViewButtonAccessibleName=\u8BE6\u7EC6\u8D44\u6599 +FileChooser.detailsViewActionLabelText=\u8BE6\u7EC6\u8D44\u6599 +FileChooser.refreshActionLabelText=\u5237\u65B0 +FileChooser.viewMenuLabelText=\u89C6\u56FE +FileChooser.fileNameHeaderText=\u540D\u79F0 +FileChooser.fileSizeHeaderText=\u5927\u5C0F +FileChooser.fileTypeHeaderText=\u7C7B\u578B +FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F +FileChooser.fileAttrHeaderText=\u5C5E\u6027 ############ Used by MetalTitlePane if rendering window decorations############ # All mnemonics are KeyEvent.VK_XXX as integers -MetalTitlePane.restoreTitle=\u6062\u590d (R) +MetalTitlePane.restoreTitle=\u8FD8\u539F MetalTitlePane.restoreMnemonic=82 -MetalTitlePane.iconifyTitle=\u6700\u5c0f\u5316 (E) +MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316 MetalTitlePane.iconifyMnemonic=69 -MetalTitlePane.maximizeTitle=\u6700\u5927\u5316 (X) +MetalTitlePane.maximizeTitle=\u6700\u5927\u5316 MetalTitlePane.maximizeMnemonic=88 -MetalTitlePane.closeTitle=\u5173\u95ed (C) +MetalTitlePane.closeTitle=\u5173\u95ED MetalTitlePane.closeMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties index 3bc9d125fb2..c62c888cadf 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties @@ -18,39 +18,39 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\u67e5\u770b\ufe55 -FileChooser.saveInLabelText=\u5132\u5b58\u65bc\uff1a -FileChooser.fileNameLabelText=\u6a94\u6848\u540d\u7a31\ufe55 -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\u6a94\u6848\u985e\u578b\ufe55 -FileChooser.upFolderToolTipText=\u5f80\u4e0a\u4e00\u5c64 -FileChooser.upFolderAccessibleName=\u5f80\u4e0a -FileChooser.homeFolderToolTipText=\u4e3b\u76ee\u9304 -FileChooser.homeFolderAccessibleName=\u4e3b\u76ee\u9304 -FileChooser.newFolderToolTipText=\u5efa\u7acb\u65b0\u8cc7\u6599\u593e -FileChooser.newFolderAccessibleName=\u65b0\u8cc7\u6599\u593e -FileChooser.newFolderActionLabelText=\u65b0\u8cc7\u6599\u593e -FileChooser.listViewButtonToolTipText=\u6e05\u55ae -FileChooser.listViewButtonAccessibleName=\u6e05\u55ae -FileChooser.listViewActionLabelText=\u6e05\u55ae -FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30\u8cc7\u8a0a -FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30\u8cc7\u8a0a -FileChooser.detailsViewActionLabelText=\u8a73\u7d30\u8cc7\u8a0a -FileChooser.refreshActionLabelText=\u66f4\u65b0 -FileChooser.viewMenuLabelText=\u6aa2\u8996 -FileChooser.fileNameHeaderText=\u540d\u7a31 -FileChooser.fileSizeHeaderText=\u5927\u5c0f -FileChooser.fileTypeHeaderText=\u985e\u578b -FileChooser.fileDateHeaderText=\u5df2\u4fee\u6539 -FileChooser.fileAttrHeaderText=\u5c6c\u6027 +FileChooser.lookInLabelText=\u67E5\u8A62: +FileChooser.saveInLabelText=\u5132\u5B58\u65BC: +FileChooser.fileNameLabelText=\u6A94\u6848\u540D\u7A31: +FileChooser.folderNameLabelText=\u8CC7\u6599\u593E\u540D\u7A31: +FileChooser.filesOfTypeLabelText=\u6A94\u6848\u985E\u578B: +FileChooser.upFolderToolTipText=\u5F80\u4E0A\u4E00\u5C64 +FileChooser.upFolderAccessibleName=\u5F80\u4E0A +FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u9304 +FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u9304 +FileChooser.newFolderToolTipText=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E +FileChooser.newFolderAccessibleName=\u65B0\u8CC7\u6599\u593E +FileChooser.newFolderActionLabelText=\u65B0\u8CC7\u6599\u593E +FileChooser.listViewButtonToolTipText=\u6E05\u55AE +FileChooser.listViewButtonAccessibleName=\u6E05\u55AE +FileChooser.listViewActionLabelText=\u6E05\u55AE +FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30\u8CC7\u8A0A +FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30\u8CC7\u8A0A +FileChooser.detailsViewActionLabelText=\u8A73\u7D30\u8CC7\u8A0A +FileChooser.refreshActionLabelText=\u91CD\u65B0\u6574\u7406 +FileChooser.viewMenuLabelText=\u6AA2\u8996 +FileChooser.fileNameHeaderText=\u540D\u7A31 +FileChooser.fileSizeHeaderText=\u5927\u5C0F +FileChooser.fileTypeHeaderText=\u985E\u578B +FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F +FileChooser.fileAttrHeaderText=\u5C6C\u6027 ############ Used by MetalTitlePane if rendering window decorations############ # All mnemonics are KeyEvent.VK_XXX as integers -MetalTitlePane.restoreTitle=\u5fa9\u539f(R) +MetalTitlePane.restoreTitle=\u5FA9\u539F MetalTitlePane.restoreMnemonic=82 -MetalTitlePane.iconifyTitle=\u6700\u5c0f\u5316(E) +MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316 MetalTitlePane.iconifyMnemonic=69 -MetalTitlePane.maximizeTitle=\u6700\u5927\u5316(X) +MetalTitlePane.maximizeTitle=\u6700\u5927\u5316 MetalTitlePane.maximizeMnemonic=88 -MetalTitlePane.closeTitle=\u95dc\u9589(C) +MetalTitlePane.closeTitle=\u95DC\u9589 MetalTitlePane.closeMnemonic=67 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_de.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_de.properties index 67192ebc71d..990f34464c2 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_de.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_de.properties @@ -10,6 +10,9 @@ # This may change in future versions of Swing as we improve localization # support. # +# Refer to the note in basic.properties for a description as to what +# the mnemonics correspond to and how to calculate them. +# # @author Steve Wilson @@ -18,20 +21,25 @@ FileChooser.lookInLabelText=Suchen in: FileChooser.saveInLabelText=Speichern in: FileChooser.fileNameLabelText=Dateiname: -FileChooser.folderNameLabelText=Folder name: +FileChooser.folderNameLabelText=Ordnername: FileChooser.filesOfTypeLabelText=Dateityp: -FileChooser.upFolderToolTipText=Eine Ebene h\u00f6her -FileChooser.upFolderAccessibleName=H\u00f6her +FileChooser.upFolderToolTipText=Eine Ebene h\u00F6her +FileChooser.upFolderAccessibleName=Nach oben FileChooser.homeFolderToolTipText=Home FileChooser.homeFolderAccessibleName=Home FileChooser.newFolderToolTipText=Neuen Ordner erstellen FileChooser.newFolderAccessibleName=Neuer Ordner +FileChooser.newFolderActionLabelText=Neuer Ordner FileChooser.listViewButtonToolTipText=Liste FileChooser.listViewButtonAccessibleName=Liste +FileChooser.listViewActionLabelText=Liste FileChooser.detailsViewButtonToolTipText=Details FileChooser.detailsViewButtonAccessibleName=Details -FileChooser.fileNameHeaderText=Dateiname -FileChooser.fileSizeHeaderText=Gr\u00f6\u00dfe +FileChooser.detailsViewActionLabelText=Details +FileChooser.refreshActionLabelText=Aktualisieren +FileChooser.viewMenuLabelText=Ansicht +FileChooser.fileNameHeaderText=Name +FileChooser.fileSizeHeaderText=Gr\u00F6\u00DFe FileChooser.fileTypeHeaderText=Typ -FileChooser.fileDateHeaderText=Ge\u00e4ndert -FileChooser.fileAttrHeaderText=Attribut +FileChooser.fileDateHeaderText=Ge\u00E4ndert +FileChooser.fileAttrHeaderText=Attribute diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_es.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_es.properties index 6645bb24d3b..03d21660371 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_es.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_es.properties @@ -10,6 +10,9 @@ # This may change in future versions of Swing as we improve localization # support. # +# Refer to the note in basic.properties for a description as to what +# the mnemonics correspond to and how to calculate them. +# # @author Steve Wilson @@ -17,21 +20,26 @@ FileChooser.lookInLabelText=Buscar en: FileChooser.saveInLabelText=Guardar en: -FileChooser.fileNameLabelText=Nombre de archivo: -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=Archivos de tipo: -FileChooser.upFolderToolTipText=Subir un nivel +FileChooser.fileNameLabelText=Nombre de Archivo: +FileChooser.folderNameLabelText=Nombre de la Carpeta: +FileChooser.filesOfTypeLabelText=Archivos de Tipo: +FileChooser.upFolderToolTipText=Subir un Nivel FileChooser.upFolderAccessibleName=Arriba -FileChooser.homeFolderToolTipText=Principal -FileChooser.homeFolderAccessibleName=Principal -FileChooser.newFolderToolTipText=Crear carpeta nueva -FileChooser.newFolderAccessibleName=Carpeta nueva +FileChooser.homeFolderToolTipText=Inicio +FileChooser.homeFolderAccessibleName=Inicio +FileChooser.newFolderToolTipText=Crear Nueva Carpeta +FileChooser.newFolderAccessibleName=Nueva Carpeta +FileChooser.newFolderActionLabelText=Nueva Carpeta FileChooser.listViewButtonToolTipText=Lista FileChooser.listViewButtonAccessibleName=Lista +FileChooser.listViewActionLabelText=Lista FileChooser.detailsViewButtonToolTipText=Detalles FileChooser.detailsViewButtonAccessibleName=Detalles +FileChooser.detailsViewActionLabelText=Detalles +FileChooser.refreshActionLabelText=Refrescar +FileChooser.viewMenuLabelText=Ver FileChooser.fileNameHeaderText=Nombre -FileChooser.fileSizeHeaderText=Tama\u00f1o +FileChooser.fileSizeHeaderText=Tama\u00F1o FileChooser.fileTypeHeaderText=Tipo FileChooser.fileDateHeaderText=Modificado FileChooser.fileAttrHeaderText=Atributos diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_fr.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_fr.properties index 24afdce6063..273351d689d 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_fr.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_fr.properties @@ -10,6 +10,9 @@ # This may change in future versions of Swing as we improve localization # support. # +# Refer to the note in basic.properties for a description as to what +# the mnemonics correspond to and how to calculate them. +# # @author Steve Wilson @@ -17,21 +20,26 @@ FileChooser.lookInLabelText=Rechercher dans : FileChooser.saveInLabelText=Enregistrer dans : -FileChooser.fileNameLabelText=Nom de fichier : -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=Fichiers du type : +FileChooser.fileNameLabelText=Nom du fichier : +FileChooser.folderNameLabelText=Nom du dossier : +FileChooser.filesOfTypeLabelText=Fichiers de type : FileChooser.upFolderToolTipText=Remonte d'un niveau. -FileChooser.upFolderAccessibleName=Vers le haut -FileChooser.homeFolderToolTipText= R\u00e9pertoire d'accueil -FileChooser.homeFolderAccessibleName=Accueil -FileChooser.newFolderToolTipText=Cr\u00e9e un nouveau dossier. +FileChooser.upFolderAccessibleName=Monter +FileChooser.homeFolderToolTipText=R\u00E9pertoire d'origine +FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine +FileChooser.newFolderToolTipText=Cr\u00E9e un dossier. FileChooser.newFolderAccessibleName=Nouveau dossier +FileChooser.newFolderActionLabelText=Nouveau dossier FileChooser.listViewButtonToolTipText=Liste FileChooser.listViewButtonAccessibleName=Liste -FileChooser.detailsViewButtonToolTipText=D\u00e9tails -FileChooser.detailsViewButtonAccessibleName=D\u00e9tails +FileChooser.listViewActionLabelText=Liste +FileChooser.detailsViewButtonToolTipText=D\u00E9tails +FileChooser.detailsViewButtonAccessibleName=D\u00E9tails +FileChooser.detailsViewActionLabelText=D\u00E9tails +FileChooser.refreshActionLabelText=Actualiser +FileChooser.viewMenuLabelText=Affichage FileChooser.fileNameHeaderText=Nom FileChooser.fileSizeHeaderText=Taille FileChooser.fileTypeHeaderText=Type -FileChooser.fileDateHeaderText=Modifi\u00e9 +FileChooser.fileDateHeaderText=Modifi\u00E9 FileChooser.fileAttrHeaderText=Attributs diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_it.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_it.properties index c1eecd62742..da2e2c7bac8 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_it.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_it.properties @@ -10,6 +10,9 @@ # This may change in future versions of Swing as we improve localization # support. # +# Refer to the note in basic.properties for a description as to what +# the mnemonics correspond to and how to calculate them. +# # @author Steve Wilson @@ -18,21 +21,25 @@ FileChooser.lookInLabelText=Cerca in: FileChooser.saveInLabelText=Salva in: FileChooser.fileNameLabelText=Nome file: -FileChooser.folderNameLabelText=Folder name: +FileChooser.folderNameLabelText=Nome della cartella: FileChooser.filesOfTypeLabelText=Tipo file: FileChooser.upFolderToolTipText=Cartella superiore FileChooser.upFolderAccessibleName=Superiore -FileChooser.homeFolderToolTipText=Principale -FileChooser.homeFolderAccessibleName=Principale +FileChooser.homeFolderToolTipText=Home +FileChooser.homeFolderAccessibleName=Home FileChooser.newFolderToolTipText=Crea nuova cartella FileChooser.newFolderAccessibleName=Nuova cartella -FileChooser.listViewButtonToolTipText=Elenco -FileChooser.listViewButtonAccessibleName=Elenco +FileChooser.newFolderActionLabelText=Nuova cartella +FileChooser.listViewButtonToolTipText=Lista +FileChooser.listViewButtonAccessibleName=Lista +FileChooser.listViewActionLabelText=Lista FileChooser.detailsViewButtonToolTipText=Dettagli FileChooser.detailsViewButtonAccessibleName=Dettagli +FileChooser.detailsViewActionLabelText=Dettagli +FileChooser.refreshActionLabelText=Aggiorna +FileChooser.viewMenuLabelText=Visualizza FileChooser.fileNameHeaderText=Nome FileChooser.fileSizeHeaderText=Dimensioni FileChooser.fileTypeHeaderText=Tipo FileChooser.fileDateHeaderText=Modificato FileChooser.fileAttrHeaderText=Attributi - diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ja.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ja.properties index d8c68ddb7e1..382fcf8b9e6 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ja.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ja.properties @@ -18,28 +18,28 @@ ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\u53c2\u7167: -FileChooser.saveInLabelText=\u4fdd\u5b58: -FileChooser.fileNameLabelText=\u30d5\u30a1\u30a4\u30eb\u540d: -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7: -FileChooser.upFolderToolTipText=1 \u30ec\u30d9\u30eb\u4e0a\u3078 -FileChooser.upFolderAccessibleName=\u4e0a\u3078 -FileChooser.homeFolderToolTipText=\u30db\u30fc\u30e0 -FileChooser.homeFolderAccessibleName=\u30db\u30fc\u30e0 -FileChooser.newFolderToolTipText=\u30d5\u30a9\u30eb\u30c0\u306e\u65b0\u898f\u4f5c\u6210 -FileChooser.newFolderAccessibleName=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 -FileChooser.newFolderActionLabelText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 -FileChooser.listViewButtonToolTipText=\u30ea\u30b9\u30c8 -FileChooser.listViewButtonAccessibleName=\u30ea\u30b9\u30c8 -FileChooser.listViewActionLabelText=\u30ea\u30b9\u30c8 -FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30 -FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30 -FileChooser.detailsViewActionLabelText=\u8a73\u7d30 -FileChooser.refreshActionLabelText=\u66f4\u65b0 -FileChooser.viewMenuLabelText=\u8868\u793a -FileChooser.fileNameHeaderText=\u540d\u524d -FileChooser.fileSizeHeaderText=\u30b5\u30a4\u30ba -FileChooser.fileTypeHeaderText=\u578b -FileChooser.fileDateHeaderText=\u4fee\u6b63\u65e5 -FileChooser.fileAttrHeaderText=\u5c5e\u6027 +FileChooser.lookInLabelText=\u53C2\u7167: +FileChooser.saveInLabelText=\u4FDD\u5B58: +FileChooser.fileNameLabelText=\u30D5\u30A1\u30A4\u30EB\u540D: +FileChooser.folderNameLabelText=\u30D5\u30A9\u30EB\u30C0\u540D: +FileChooser.filesOfTypeLabelText=\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30A4\u30D7: +FileChooser.upFolderToolTipText=1\u30EC\u30D9\u30EB\u4E0A\u3078 +FileChooser.upFolderAccessibleName=\u4E0A\u3078 +FileChooser.homeFolderToolTipText=\u30DB\u30FC\u30E0 +FileChooser.homeFolderAccessibleName=\u30DB\u30FC\u30E0 +FileChooser.newFolderToolTipText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210 +FileChooser.newFolderAccessibleName=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 +FileChooser.newFolderActionLabelText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 +FileChooser.listViewButtonToolTipText=\u30EA\u30B9\u30C8 +FileChooser.listViewButtonAccessibleName=\u30EA\u30B9\u30C8 +FileChooser.listViewActionLabelText=\u30EA\u30B9\u30C8 +FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30 +FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30 +FileChooser.detailsViewActionLabelText=\u8A73\u7D30 +FileChooser.refreshActionLabelText=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5 +FileChooser.viewMenuLabelText=\u8868\u793A +FileChooser.fileNameHeaderText=\u540D\u524D +FileChooser.fileSizeHeaderText=\u30B5\u30A4\u30BA +FileChooser.fileTypeHeaderText=\u30BF\u30A4\u30D7 +FileChooser.fileDateHeaderText=\u4FEE\u6B63\u65E5 +FileChooser.fileAttrHeaderText=\u5C5E\u6027 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ko.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ko.properties index e3b817e9e0b..adc9b1d5990 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ko.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ko.properties @@ -10,34 +10,36 @@ # This may change in future versions of Swing as we improve localization # support. # +# Refer to the note in basic.properties for a description as to what +# the mnemonics correspond to and how to calculate them. +# # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\uac80\uc0c9 \uc704\uce58: -FileChooser.saveInLabelText=\uc800\uc7a5 \uc704\uce58 -FileChooser.fileNameLabelText=\ud30c\uc77c \uc774\ub984: -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\ud30c\uc77c \uc885\ub958: -FileChooser.upFolderToolTipText=\ud55c \ub2e8\uacc4 \uc704\ub85c -FileChooser.upFolderAccessibleName=\uc704 -FileChooser.homeFolderToolTipText=\ud648 -FileChooser.homeFolderAccessibleName=\ud648 -FileChooser.newFolderToolTipText=\uc0c8 \ud3f4\ub354 \uc791\uc131 -FileChooser.newFolderAccessibleName=\uc0c8 \ud3f4\ub354 -FileChooser.newFolderActionLabelText=\uc0c8 \ud3f4\ub354 -FileChooser.listViewButtonToolTipText=\ubaa9\ub85d -FileChooser.listViewButtonAccessibleName=\ubaa9\ub85d -FileChooser.listViewActionLabelText=\ubaa9\ub85d -FileChooser.detailsViewButtonToolTipText=\uc790\uc138\ud788 -FileChooser.detailsViewButtonAccessibleName=\uc790\uc138\ud788 -FileChooser.detailsViewActionLabelText=\uc790\uc138\ud788 -FileChooser.refreshActionLabelText=\uac31\uc2e0 -FileChooser.viewMenuLabelText=\ubcf4\uae30 -FileChooser.fileNameHeaderText=\uc774\ub984 -FileChooser.fileSizeHeaderText=\ud06c\uae30 -FileChooser.fileTypeHeaderText=\uc885\ub958 -FileChooser.fileDateHeaderText=\uc218\uc815 -FileChooser.fileAttrHeaderText=\uc18d\uc131 - +FileChooser.lookInLabelText=\uAC80\uC0C9 \uC704\uCE58: +FileChooser.saveInLabelText=\uC800\uC7A5 \uC704\uCE58: +FileChooser.fileNameLabelText=\uD30C\uC77C \uC774\uB984: +FileChooser.folderNameLabelText=\uD3F4\uB354 \uC774\uB984: +FileChooser.filesOfTypeLabelText=\uD30C\uC77C \uC720\uD615: +FileChooser.upFolderToolTipText=\uD55C \uB808\uBCA8 \uC704\uB85C +FileChooser.upFolderAccessibleName=\uC704\uB85C +FileChooser.homeFolderToolTipText=\uD648 +FileChooser.homeFolderAccessibleName=\uD648 +FileChooser.newFolderToolTipText=\uC0C8 \uD3F4\uB354 \uC0DD\uC131 +FileChooser.newFolderAccessibleName=\uC0C8 \uD3F4\uB354 +FileChooser.newFolderActionLabelText=\uC0C8 \uD3F4\uB354 +FileChooser.listViewButtonToolTipText=\uBAA9\uB85D +FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D +FileChooser.listViewActionLabelText=\uBAA9\uB85D +FileChooser.detailsViewButtonToolTipText=\uC138\uBD80 \uC815\uBCF4 +FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4 +FileChooser.detailsViewActionLabelText=\uC138\uBD80 \uC815\uBCF4 +FileChooser.refreshActionLabelText=\uC0C8\uB85C \uACE0\uCE68 +FileChooser.viewMenuLabelText=\uBCF4\uAE30 +FileChooser.fileNameHeaderText=\uC774\uB984 +FileChooser.fileSizeHeaderText=\uD06C\uAE30 +FileChooser.fileTypeHeaderText=\uC720\uD615 +FileChooser.fileDateHeaderText=\uC218\uC815 \uB0A0\uC9DC +FileChooser.fileAttrHeaderText=\uC18D\uC131 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_pt_BR.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_pt_BR.properties index 395bd612741..b14a61f5b5d 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_pt_BR.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_pt_BR.properties @@ -10,22 +10,26 @@ # This may change in future versions of Swing as we improve localization # support. # +# Refer to the note in basic.properties for a description as to what +# the mnemonics correspond to and how to calculate them. +# # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=Consultar em: -FileChooser.saveInLabelText=Salvar em: -FileChooser.fileNameLabelText=Nome de arquivo: -FileChooser.filesOfTypeLabelText=Arquivos de tipo: -FileChooser.upFolderToolTipText=Um n\u00edvel acima +FileChooser.lookInLabelText=Consultar Em: +FileChooser.saveInLabelText=Salvar Em: +FileChooser.fileNameLabelText=Nome do Arquivo: +FileChooser.folderNameLabelText=Nome da pasta: +FileChooser.filesOfTypeLabelText=Arquivos do Tipo: +FileChooser.upFolderToolTipText=Um N\u00EDvel Acima FileChooser.upFolderAccessibleName=Acima -FileChooser.homeFolderToolTipText=In\u00edcio -FileChooser.homeFolderAccessibleName=In\u00edcio -FileChooser.newFolderToolTipText=Criar nova pasta -FileChooser.newFolderAccessibleName=Nova pasta -FileChooser.newFolderActionLabelText=Nova pasta +FileChooser.homeFolderToolTipText=In\u00EDcio +FileChooser.homeFolderAccessibleName=In\u00EDcio +FileChooser.newFolderToolTipText=Criar Nova Pasta +FileChooser.newFolderAccessibleName=Nova Pasta +FileChooser.newFolderActionLabelText=Nova Pasta FileChooser.listViewButtonToolTipText=Lista FileChooser.listViewButtonAccessibleName=Lista FileChooser.listViewActionLabelText=Lista diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_sv.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_sv.properties index eadf8335e96..9167b72f17b 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_sv.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_sv.properties @@ -10,28 +10,36 @@ # This may change in future versions of Swing as we improve localization # support. # +# Refer to the note in basic.properties for a description as to what +# the mnemonics correspond to and how to calculate them. +# # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=S\u00f6k i: +FileChooser.lookInLabelText=Leta i: FileChooser.saveInLabelText=Spara i: FileChooser.fileNameLabelText=Filnamn: -FileChooser.folderNameLabelText=Folder name: +FileChooser.folderNameLabelText=Mapp: FileChooser.filesOfTypeLabelText=Filformat: -FileChooser.upFolderToolTipText=Upp en niv\u00e5 +FileChooser.upFolderToolTipText=Upp en niv\u00E5 FileChooser.upFolderAccessibleName=Upp FileChooser.homeFolderToolTipText=Hem FileChooser.homeFolderAccessibleName=Hem FileChooser.newFolderToolTipText=Skapa ny mapp FileChooser.newFolderAccessibleName=Ny mapp +FileChooser.newFolderActionLabelText=Ny mapp FileChooser.listViewButtonToolTipText=Lista FileChooser.listViewButtonAccessibleName=Lista -FileChooser.detailsViewButtonToolTipText=Detaljerad lista -FileChooser.detailsViewButtonAccessibleName=Detaljerad lista +FileChooser.listViewActionLabelText=Lista +FileChooser.detailsViewButtonToolTipText=Detaljer +FileChooser.detailsViewButtonAccessibleName=Detaljer +FileChooser.detailsViewActionLabelText=Detaljer +FileChooser.refreshActionLabelText=F\u00F6rnya +FileChooser.viewMenuLabelText=Vy FileChooser.fileNameHeaderText=Namn FileChooser.fileSizeHeaderText=Storlek FileChooser.fileTypeHeaderText=Typ -FileChooser.fileDateHeaderText=\u00c4ndrad +FileChooser.fileDateHeaderText=\u00C4ndrad FileChooser.fileAttrHeaderText=Attribut diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_CN.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_CN.properties index 2ca34e130ae..547fd155f8c 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_CN.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_CN.properties @@ -10,28 +10,36 @@ # This may change in future versions of Swing as we improve localization # support. # +# Refer to the note in basic.properties for a description as to what +# the mnemonics correspond to and how to calculate them. +# # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\u67e5\u770b\uff1a -FileChooser.saveInLabelText=\u4fdd\u5b58\uff1a -FileChooser.fileNameLabelText=\u6587\u4ef6\u540d\uff1a -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\u6587\u4ef6\u7c7b\u578b\uff1a -FileChooser.upFolderToolTipText=\u5411\u4e0a\u4e00\u5c42 -FileChooser.upFolderAccessibleName=\u5411\u4e0a -FileChooser.homeFolderToolTipText=\u8d77\u59cb\u76ee\u5f55 -FileChooser.homeFolderAccessibleName=\u8d77\u59cb\u76ee\u5f55 -FileChooser.newFolderToolTipText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939 -FileChooser.newFolderAccessibleName=\u65b0\u5efa\u6587\u4ef6\u5939 +FileChooser.lookInLabelText=\u67E5\u770B: +FileChooser.saveInLabelText=\u4FDD\u5B58: +FileChooser.fileNameLabelText=\u6587\u4EF6\u540D: +FileChooser.folderNameLabelText=\u6587\u4EF6\u5939\u540D: +FileChooser.filesOfTypeLabelText=\u6587\u4EF6\u7C7B\u578B: +FileChooser.upFolderToolTipText=\u5411\u4E0A\u4E00\u7EA7 +FileChooser.upFolderAccessibleName=\u5411\u4E0A +FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u5F55 +FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u5F55 +FileChooser.newFolderToolTipText=\u521B\u5EFA\u65B0\u6587\u4EF6\u5939 +FileChooser.newFolderAccessibleName=\u65B0\u5EFA\u6587\u4EF6\u5939 +FileChooser.newFolderActionLabelText=\u65B0\u5EFA\u6587\u4EF6\u5939 FileChooser.listViewButtonToolTipText=\u5217\u8868 FileChooser.listViewButtonAccessibleName=\u5217\u8868 -FileChooser.detailsViewButtonToolTipText=\u8be6\u7ec6\u4fe1\u606f -FileChooser.detailsViewButtonAccessibleName=\u8be6\u7ec6\u4fe1\u606f -FileChooser.fileNameHeaderText=\u540d\u79f0 -FileChooser.fileSizeHeaderText=\u5927\u5c0f -FileChooser.fileTypeHeaderText=\u7c7b\u578b -FileChooser.fileDateHeaderText=\u4fee\u6b63\u7248 -FileChooser.fileAttrHeaderText=\u5c5e\u6027 +FileChooser.listViewActionLabelText=\u5217\u8868 +FileChooser.detailsViewButtonToolTipText=\u8BE6\u7EC6\u8D44\u6599 +FileChooser.detailsViewButtonAccessibleName=\u8BE6\u7EC6\u8D44\u6599 +FileChooser.detailsViewActionLabelText=\u8BE6\u7EC6\u8D44\u6599 +FileChooser.refreshActionLabelText=\u5237\u65B0 +FileChooser.viewMenuLabelText=\u89C6\u56FE +FileChooser.fileNameHeaderText=\u540D\u79F0 +FileChooser.fileSizeHeaderText=\u5927\u5C0F +FileChooser.fileTypeHeaderText=\u7C7B\u578B +FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F +FileChooser.fileAttrHeaderText=\u5C5E\u6027 diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_TW.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_TW.properties index 42493313a9c..1144f6173dd 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_TW.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_TW.properties @@ -10,28 +10,36 @@ # This may change in future versions of Swing as we improve localization # support. # +# Refer to the note in basic.properties for a description as to what +# the mnemonics correspond to and how to calculate them. +# # @author Steve Wilson ############ FILE CHOOSER STRINGS ############# -FileChooser.lookInLabelText=\u67e5\u770b\ufe55 -FileChooser.saveInLabelText=\u5132\u5b58\u65bc\uff1a -FileChooser.fileNameLabelText=\u6a94\u6848\u540d\u7a31\ufe55 -FileChooser.folderNameLabelText=Folder name: -FileChooser.filesOfTypeLabelText=\u6a94\u6848\u985e\u578b\ufe55 -FileChooser.upFolderToolTipText=\u5f80\u4e0a\u4e00\u5c64 -FileChooser.upFolderAccessibleName=\u5f80\u4e0a -FileChooser.homeFolderToolTipText=\u4e3b\u76ee\u9304 -FileChooser.homeFolderAccessibleName=\u4e3b\u76ee\u9304 -FileChooser.newFolderToolTipText=\u5efa\u7acb\u65b0\u8cc7\u6599\u593e -FileChooser.newFolderAccessibleName=\u65b0\u8cc7\u6599\u593e -FileChooser.listViewButtonToolTipText=\u6e05\u55ae -FileChooser.listViewButtonAccessibleName=\u6e05\u55ae -FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30\u8cc7\u8a0a -FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30\u8cc7\u8a0a -FileChooser.fileNameHeaderText=\u540d\u7a31 -FileChooser.fileSizeHeaderText=\u5927\u5c0f -FileChooser.fileTypeHeaderText=\u985e\u578b -FileChooser.fileDateHeaderText=\u5df2\u4fee\u6539 -FileChooser.fileAttrHeaderText=\u5c6c\u6027 +FileChooser.lookInLabelText=\u67E5\u8A62: +FileChooser.saveInLabelText=\u5132\u5B58\u65BC: +FileChooser.fileNameLabelText=\u6A94\u6848\u540D\u7A31: +FileChooser.folderNameLabelText=\u8CC7\u6599\u593E\u540D\u7A31: +FileChooser.filesOfTypeLabelText=\u6A94\u6848\u985E\u578B: +FileChooser.upFolderToolTipText=\u5F80\u4E0A\u4E00\u5C64 +FileChooser.upFolderAccessibleName=\u5F80\u4E0A +FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u9304 +FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u9304 +FileChooser.newFolderToolTipText=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E +FileChooser.newFolderAccessibleName=\u65B0\u8CC7\u6599\u593E +FileChooser.newFolderActionLabelText=\u65B0\u8CC7\u6599\u593E +FileChooser.listViewButtonToolTipText=\u6E05\u55AE +FileChooser.listViewButtonAccessibleName=\u6E05\u55AE +FileChooser.listViewActionLabelText=\u6E05\u55AE +FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30\u8CC7\u8A0A +FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30\u8CC7\u8A0A +FileChooser.detailsViewActionLabelText=\u8A73\u7D30\u8CC7\u8A0A +FileChooser.refreshActionLabelText=\u91CD\u65B0\u6574\u7406 +FileChooser.viewMenuLabelText=\u6AA2\u8996 +FileChooser.fileNameHeaderText=\u540D\u7A31 +FileChooser.fileSizeHeaderText=\u5927\u5C0F +FileChooser.fileTypeHeaderText=\u985E\u578B +FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F +FileChooser.fileAttrHeaderText=\u5C6C\u6027 diff --git a/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_ja.java b/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_ja.java index 6e61b51a217..14b3073f689 100644 --- a/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_ja.java +++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_ja.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2010, 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 @@ -45,403 +45,282 @@ public class TTYResources_ja extends java.util.ListResourceBundle { * @return the contents of this ResourceBundle. */ public Object[][] getContents() { - return new Object[][] { + Object[][] temp = new Object[][] { // NOTE: The value strings in this file containing "{0}" are // processed by the java.text.MessageFormat class. Any // single quotes appearing in these strings need to be // doubled up. // // LOCALIZE THIS - {"** classes list **", "** \u30af\u30e9\u30b9\u30ea\u30b9\u30c8 **\n{0}"}, - {"** fields list **", "** \u30d5\u30a3\u30fc\u30eb\u30c9\u30ea\u30b9\u30c8 **\n{0}"}, - {"** methods list **", "** \u30e1\u30bd\u30c3\u30c9\u30ea\u30b9\u30c8 **\n{0}"}, - {"*** Reading commands from", "*** {0} \u304b\u3089\u30b3\u30de\u30f3\u30c9\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059"}, - {"All threads resumed.", "\u3059\u3079\u3066\u306e\u30b9\u30ec\u30c3\u30c9\u304c\u518d\u958b\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"All threads suspended.", "\u3059\u3079\u3066\u306e\u30b9\u30ec\u30c3\u30c9\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"Argument is not defined for connector:", "\u30b3\u30cd\u30af\u30bf {1} \u3067\u5f15\u6570 {0} \u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"Arguments match no method", "\u5f15\u6570\u3068\u4e00\u81f4\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u304c\u3042\u308a\u307e\u305b\u3093"}, - {"Array:", "\u914d\u5217: {0}"}, - {"Array element is not a method", "\u914d\u5217\u8981\u7d20\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"}, - {"Array index must be a integer type", "\u914d\u5217\u306e\u6dfb\u3048\u5b57\u306f\u6574\u6570\u578b\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"}, - {"base directory:", "\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea: {0}"}, - {"bootclasspath:", "\u30d6\u30fc\u30c8\u30af\u30e9\u30b9\u30d1\u30b9: {0}"}, - {"Breakpoint hit:", "\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u306e\u30d2\u30c3\u30c8: "}, - {"breakpoint", "\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8 {0}"}, - {"Breakpoints set:", "\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u306e\u30bb\u30c3\u30c8:"}, - {"Breakpoints can be located only in classes.", "\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u306f\u3001\u30af\u30e9\u30b9\u306b\u306e\u307f\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002{0} \u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u307e\u305f\u306f\u914d\u5217\u3067\u3059\u3002"}, - {"Can only trace", "'methods'\u3001'method exit' \u307e\u305f\u306f 'method exits' \u306e\u307f\u3092\u30c8\u30ec\u30fc\u30b9\u3067\u304d\u307e\u3059"}, - {"cannot redefine existing connection", "{0} \u306f\u3001\u65e2\u5b58\u306e\u63a5\u7d9a\u3092\u518d\u5b9a\u7fa9\u3067\u304d\u307e\u305b\u3093"}, - {"Cannot assign to a method invocation", "\u30e1\u30bd\u30c3\u30c9\u547c\u3073\u51fa\u3057\u306b\u306f\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u305b\u3093"}, - {"Cannot specify command line with connector:", "\u30b3\u30cd\u30af\u30bf\uff5b0} \u3067\u306f\u30b3\u30de\u30f3\u30c9\u884c\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"}, - {"Cannot specify target vm arguments with connector:", "\u30b3\u30cd\u30af\u30bf {0}\u3067\u306f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u5f15\u6570\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"}, - {"Class containing field must be specified.", "\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u542b\u3080\u30af\u30e9\u30b9\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}, - {"Class:", "\u30af\u30e9\u30b9: {0}"}, - {"Classic VM no longer supported.", "Classic VM \u306f\u3082\u3046\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"classpath:", "\u30af\u30e9\u30b9\u30d1\u30b9: {0}"}, + {"** classes list **", "** \u30AF\u30E9\u30B9\u30FB\u30EA\u30B9\u30C8 **\n{0}"}, + {"** fields list **", "** \u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u30EA\u30B9\u30C8 **\n{0}"}, + {"** methods list **", "** \u30E1\u30BD\u30C3\u30C9\u30FB\u30EA\u30B9\u30C8 **\n{0}"}, + {"*** Reading commands from", "*** {0}\u304B\u3089\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u8AAD\u53D6\u308A"}, + {"All threads resumed.", "\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u518D\u958B\u3055\u308C\u307E\u3057\u305F\u3002"}, + {"All threads suspended.", "\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u4E2D\u65AD\u3055\u308C\u307E\u3057\u305F\u3002"}, + {"Argument is not defined for connector:", "\u5F15\u6570{0}\u306F\u30B3\u30CD\u30AF\u30BF\u306B\u5BFE\u3057\u3066\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093: {1}"}, + {"Arguments match no method", "\u5F15\u6570\u304C\u9069\u5408\u3059\u308B\u30E1\u30BD\u30C3\u30C9\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"Array:", "\u914D\u5217: {0}"}, + {"Array element is not a method", "\u914D\u5217\u8981\u7D20\u306F\u30E1\u30BD\u30C3\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"Array index must be a integer type", "\u914D\u5217\u306E\u6DFB\u3048\u5B57\u306F\u6574\u6570\u578B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"base directory:", "\u30D9\u30FC\u30B9\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA: {0}"}, + {"bootclasspath:", "\u30D6\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9: {0}"}, + {"Breakpoint hit:", "\u30D2\u30C3\u30C8\u3057\u305F\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8: "}, + {"breakpoint", "\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8{0}"}, + {"Breakpoints set:", "\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8:"}, + {"Breakpoints can be located only in classes.", "\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u306F\u30AF\u30E9\u30B9\u5185\u306B\u306E\u307F\u914D\u7F6E\u3067\u304D\u307E\u3059\u3002{0}\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u307E\u305F\u306F\u914D\u5217\u3067\u3059\u3002"}, + {"Can only trace", "'methods'\u3001'method exit'\u307E\u305F\u306F'method exits'\u306E\u307F\u30C8\u30EC\u30FC\u30B9\u3067\u304D\u307E\u3059"}, + {"cannot redefine existing connection", "{0}\u306F\u65E2\u5B58\u306E\u63A5\u7D9A\u3092\u518D\u5B9A\u7FA9\u3067\u304D\u307E\u305B\u3093"}, + {"Cannot assign to a method invocation", "\u30E1\u30BD\u30C3\u30C9\u547C\u51FA\u3057\u306B\u5272\u5F53\u3066\u3067\u304D\u307E\u305B\u3093"}, + {"Cannot specify command line with connector:", "\u30B3\u30CD\u30AF\u30BF\u3067\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093: {0}"}, + {"Cannot specify target vm arguments with connector:", "\u30B3\u30CD\u30AF\u30BF\u3067\u30BF\u30FC\u30B2\u30C3\u30C8VM\u5F15\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093: {0}"}, + {"Class containing field must be specified.", "\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u542B\u3080\u30AF\u30E9\u30B9\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"}, + {"Class:", "\u30AF\u30E9\u30B9: {0}"}, + {"Classic VM no longer supported.", "Classic VM\u306F\u73FE\u5728\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"classpath:", "\u30AF\u30E9\u30B9\u30D1\u30B9: {0}"}, {"colon mark", ":"}, {"colon space", ": "}, - {"Command is not supported on the target VM", "\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u3067\u306f\u3001\u30b3\u30de\u30f3\u30c9 ''{0}'' \u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"Command is not supported on a read-only VM connection", "\u8aad\u307f\u53d6\u308a\u5c02\u7528 VM \u63a5\u7d9a\u3067\u306f\u3001\u30b3\u30de\u30f3\u30c9 ''{0}'' \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"Command not valid until the VM is started with the run command", "\u30b3\u30de\u30f3\u30c9 ''{0}'' \u306f\u3001''run'' \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3063\u3066 VM \u3092\u8d77\u52d5\u3059\u308b\u307e\u3067\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"}, - {"Condition must be boolean", "\u6761\u4ef6\u306f boolean \u578b\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"}, - {"Connector and Transport name", " \u30b3\u30cd\u30af\u30bf: {0} \u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8: {1}"}, - {"Connector argument nodefault", " \u5f15\u6570: {0} (\u30c7\u30d5\u30a9\u30eb\u30c8\u306a\u3057)"}, - {"Connector argument default", " \u5f15\u6570: {0} \u30c7\u30d5\u30a9\u30eb\u30c8\u5024: {1}"}, - {"Connector description", " \u8aac\u660e: {0}"}, - {"Connector required argument nodefault", " \u5fc5\u9808\u5f15\u6570: {0} (\u30c7\u30d5\u30a9\u30eb\u30c8\u306a\u3057)"}, - {"Connector required argument default", " \u5fc5\u9808\u5f15\u6570: {0} \u30c7\u30d5\u30a9\u30eb\u30c8\u5024: {1}"}, - {"Connectors available", "\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30cd\u30af\u30bf:"}, - {"Constant is not a method", "\u5b9a\u6570\u306f\u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"}, - {"Could not open:", "{0} \u3092\u958b\u3051\u307e\u305b\u3093"}, - {"Current method is native", "\u73fe\u884c\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u30cd\u30a4\u30c6\u30a3\u30d6\u3067\u3059"}, - {"Current thread died. Execution continuing...", "\u73fe\u5728\u306e\u30b9\u30ec\u30c3\u30c9 {0} \u304c\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f\u3002\u51e6\u7406\u3092\u7d9a\u884c\u3057\u3066\u3044\u307e\u3059..."}, - {"Current thread isnt suspended.", "\u73fe\u5728\u306e\u30b9\u30ec\u30c3\u30c9\u306f\u505c\u6b62\u3057\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"Current thread not set.", "\u73fe\u5728\u306e\u30b9\u30ec\u30c3\u30c9\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"dbgtrace flag value must be an integer:", "dbgtrace \u30d5\u30e9\u30b0\u5024\u306f\u3001\u6574\u6570\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: {0}"}, - {"Deferring.", "{0} \u3092\u4fdd\u7559\u3057\u3066\u3044\u307e\u3059\u3002\n\u30af\u30e9\u30b9\u304c\u30ed\u30fc\u30c9\u3055\u308c\u305f\u5f8c\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002"}, - {"End of stack.", "\u30b9\u30bf\u30c3\u30af\u306e\u7d42\u308f\u308a\u3002"}, - {"Error popping frame", "\u30d5\u30ec\u30fc\u30e0\u306e\u30dd\u30c3\u30d7\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f - {0}"}, - {"Error reading file", "''{0}'' \u306e \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f - {1}"}, - {"Error redefining class to file", "{0} \u306e {1} \u3078\u306e\u518d\u5b9a\u7fa9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f - {2}"}, - {"exceptionSpec all", "all {0}"}, - {"exceptionSpec caught", "caught {0}"}, - {"exceptionSpec uncaught", "uncaught {0}"}, - {"Exception in expression:", "\u5f0f\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}"}, - {"Exception occurred caught", "\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} ({1}\u3067\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u307e\u3057\u305f)"}, - {"Exception occurred uncaught", "\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} (\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u3066\u3044\u307e\u305b\u3093)"}, - {"Exceptions caught:", "\u4ee5\u4e0b\u306e\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u6642\u306b\u505c\u6b62\u3057\u307e\u3059:"}, + {"Command is not supported on the target VM", "\u30B3\u30DE\u30F3\u30C9''{0}''\u306F\u30BF\u30FC\u30B2\u30C3\u30C8VM\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"Command is not supported on a read-only VM connection", "\u30B3\u30DE\u30F3\u30C9''{0}''\u306F\u8AAD\u53D6\u308A\u5C02\u7528VM\u63A5\u7D9A\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"Command not valid until the VM is started with the run command", "\u30B3\u30DE\u30F3\u30C9''{0}''\u306F\u3001VM\u304C''run''\u30B3\u30DE\u30F3\u30C9\u3067\u958B\u59CB\u3055\u308C\u308B\u307E\u3067\u7121\u52B9\u3067\u3059"}, + {"Condition must be boolean", "\u6761\u4EF6\u306Fboolean\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"Connector and Transport name", " \u30B3\u30CD\u30AF\u30BF: {0} \u30C8\u30E9\u30F3\u30B9\u30DD\u30FC\u30C8: {1}"}, + {"Connector argument nodefault", " \u5F15\u6570: {0} (\u30C7\u30D5\u30A9\u30EB\u30C8\u306A\u3057)"}, + {"Connector argument default", " \u5F15\u6570: {0} \u30C7\u30D5\u30A9\u30EB\u30C8\u5024: {1}"}, + {"Connector description", " \u8AAC\u660E: {0}"}, + {"Connector required argument nodefault", " \u5FC5\u9808\u5F15\u6570: {0} (\u30C7\u30D5\u30A9\u30EB\u30C8\u306A\u3057)"}, + {"Connector required argument default", " \u5FC5\u9808\u5F15\u6570: {0} \u30C7\u30D5\u30A9\u30EB\u30C8\u5024: {1}"}, + {"Connectors available", "\u5229\u7528\u53EF\u80FD\u306A\u30B3\u30CD\u30AF\u30BF:"}, + {"Constant is not a method", "\u5B9A\u6570\u306F\u30E1\u30BD\u30C3\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"Could not open:", "\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F: {0}"}, + {"Current method is native", "\u73FE\u5728\u306E\u30E1\u30BD\u30C3\u30C9\u306Fnative\u3067\u3059"}, + {"Current thread died. Execution continuing...", "\u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9{0}\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F\u3002\u5B9F\u884C\u304C\u7D9A\u884C\u4E2D..."}, + {"Current thread isnt suspended.", "\u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"Current thread not set.", "\u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"dbgtrace flag value must be an integer:", "dbgtrace\u30D5\u30E9\u30B0\u5024\u306F\u6574\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}"}, + {"Deferring.", "\u9045\u5EF6\u3057\u305F{0}\u3002\n\u30AF\u30E9\u30B9\u304C\u30ED\u30FC\u30C9\u3055\u308C\u305F\u5F8C\u306B\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002"}, + {"End of stack.", "\u30B9\u30BF\u30C3\u30AF\u306E\u7D42\u308F\u308A\u3002"}, + {"Error popping frame", "\u30D5\u30EC\u30FC\u30E0\u306E\u30DD\u30C3\u30D7\u4E2D\u306E\u30A8\u30E9\u30FC - {0}"}, + {"Error reading file", "''{0}''\u306E\u8AAD\u53D6\u308A\u30A8\u30E9\u30FC - {1}"}, + {"Error redefining class to file", "{0}\u3092{1}\u306B\u518D\u5B9A\u7FA9\u4E2D\u306E\u30A8\u30E9\u30FC - {2}"}, + {"exceptionSpec all", "\u3059\u3079\u3066\u306E{0}"}, + {"exceptionSpec caught", "\u6355\u6349\u3057\u305F{0}"}, + {"exceptionSpec uncaught", "\u6355\u6349\u3055\u308C\u306A\u3044{0}"}, + {"Exception in expression:", "\u5F0F\u306E\u4F8B\u5916: {0}"}, + {"Exception occurred caught", "\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0} (\u6355\u6349\u3055\u308C\u308B\u5834\u6240: {1})"}, + {"Exception occurred uncaught", "\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0} (\u6355\u6349\u3055\u308C\u306A\u3044)"}, + {"Exceptions caught:", "\u6B21\u306E\u4F8B\u5916\u304C\u767A\u751F\u3057\u305F\u3068\u304D\u306B\u30D6\u30EC\u30FC\u30AF:"}, {"expr is null", "{0} = null"}, {"expr is value", "{0} = {1}"}, - {"expr is value ", " {0} = {1} <\u53ce\u96c6\u3055\u308c\u307e\u3057\u305f>"}, - {"Expression cannot be void", "\u5f0f\u3092 void \u578b\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093"}, - {"Expression must evaluate to an object", "\u5f0f\u3067\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8a55\u4fa1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"}, - {"extends:", "\u62e1\u5f35: {0}"}, - {"Failed reading output", "\u5b50 java \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306e\u51fa\u529b\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"}, - {"Fatal error", "\u81f4\u547d\u7684\u30a8\u30e9\u30fc:"}, - {"Field access encountered before after", "{1} \u306e\u30d5\u30a3\u30fc\u30eb\u30c9 ({0}) \u306f {2} \u306b\u306a\u308a\u307e\u3059: "}, - {"Field access encountered", "\u30d5\u30a3\u30fc\u30eb\u30c9 ({0}) \u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f: "}, - {"Field to unwatch not specified", "\u76e3\u8996\u3057\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"Field to watch not specified", "\u76e3\u8996\u3059\u308b\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"GC Disabled for", "{0} \u3067\u306f GC \u304c\u7121\u52b9\u3067\u3059:"}, - {"GC Enabled for", "{0} \u3067\u306f GC \u304c\u6709\u52b9\u3067\u3059:"}, + {"expr is value ", " {0} = {1} "}, + {"Expression cannot be void", "\u5F0F\u306Fvoid\u578B\u306B\u3067\u304D\u307E\u305B\u3093"}, + {"Expression must evaluate to an object", "\u5F0F\u306F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3068\u3057\u3066\u8A55\u4FA1\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"extends:", "\u62E1\u5F35\u3057\u307E\u3059: {0}"}, + {"Failed reading output", "\u5B50\u306Ejava\u30A4\u30F3\u30BF\u30FC\u30D7\u30EA\u30BF\u306E\u51FA\u529B\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"}, + {"Fatal error", "\u81F4\u547D\u7684\u30A8\u30E9\u30FC:"}, + {"Field access encountered before after", "\u30D5\u30A3\u30FC\u30EB\u30C9({0})\u306F{1}\u3067\u3001{2}\u306B\u306A\u308A\u307E\u3059: "}, + {"Field access encountered", "\u30D5\u30A3\u30FC\u30EB\u30C9({0})\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F: "}, + {"Field to unwatch not specified", "\u76E3\u8996\u3057\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"Field to watch not specified", "\u76E3\u8996\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"GC Disabled for", "{0}\u306EGC\u304C\u7121\u52B9\u3067\u3059:"}, + {"GC Enabled for", "{0}\u306EGC\u304C\u6709\u52B9\u3067\u3059:"}, {"grouping begin character", "{"}, {"grouping end character", "}"}, - {"Illegal Argument Exception", "\u4e0d\u6b63\u306a\u5f15\u6570\u4f8b\u5916\u3067\u3059"}, - {"Illegal connector argument", "\u4e0d\u6b63\u306a\u30b3\u30cd\u30af\u30bf\u5f15\u6570: {0}"}, - {"implementor:", "\u5b9f\u88c5\u8005: {0}"}, - {"implements:", "\u5b9f\u88c5\u3057\u307e\u3059: {0}"}, - {"Initializing progname", "{0} \u306e\u521d\u671f\u5316\u4e2d\u3067\u3059..."}, - {"Input stream closed.", "\u5165\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002"}, - {"Interface:", "\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9: {0}"}, - {"Internal debugger error.", "\u5185\u90e8\u30c7\u30d0\u30c3\u30ac\u30a8\u30e9\u30fc"}, - {"Internal error: null ThreadInfo created", "\u5185\u90e8\u30a8\u30e9\u30fc: null ThreadInfo \u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f"}, - {"Internal error; unable to set", "\u5185\u90e8\u30a8\u30e9\u30fc; {0} \u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093"}, - {"Internal exception during operation:", "\u51e6\u7406\u4e2d\u306b\u5185\u90e8\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f:\n {0}"}, - {"Internal exception:", "\u5185\u90e8\u4f8b\u5916:"}, - {"Invalid argument type name", "\u5f15\u6570\u306e\u578b\u540d\u304c\u7121\u52b9\u3067\u3059"}, - {"Invalid assignment syntax", "\u4ee3\u5165\u69cb\u6587\u304c\u7121\u52b9\u3067\u3059"}, - {"Invalid command syntax", "\u30b3\u30de\u30f3\u30c9\u69cb\u6587\u304c\u7121\u52b9\u3067\u3059"}, - {"Invalid connect type", "\u63a5\u7d9a\u306e\u7a2e\u985e\u304c\u7121\u52b9\u3067\u3059"}, - {"Invalid consecutive invocations", "\u9023\u7d9a\u547c\u3073\u51fa\u3057\u304c\u7121\u52b9\u3067\u3059"}, - {"Invalid exception object", "\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u7121\u52b9\u3067\u3059"}, - {"Invalid method specification:", "\u7121\u52b9\u306a\u30e1\u30bd\u30c3\u30c9\u3092\u6307\u5b9a\u3057\u307e\u3057\u305f: {0}"}, - {"Invalid option on class command", "\u30af\u30e9\u30b9\u30b3\u30de\u30f3\u30c9\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u7121\u52b9\u3067\u3059"}, - {"invalid option", "\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u7121\u52b9\u3067\u3059: {0}"}, - {"Invalid thread status.", "\u30b9\u30ec\u30c3\u30c9\u30b9\u30c6\u30fc\u30bf\u30b9\u304c\u7121\u52b9\u3067\u3059\u3002"}, - {"Invalid transport name:", "\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u540d\u304c\u7121\u52b9\u3067\u3059: {0}"}, - {"I/O exception occurred:", "\u5165\u51fa\u529b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}"}, - {"is an ambiguous method name in", "\"{0}\" \u306f\u3001\"{1}\" \u3067\u306f\u3042\u3044\u307e\u3044\u306a\u30e1\u30bd\u30c3\u30c9\u540d\u3067\u3059"}, - {"is an invalid line number for", "{0,number,integer} \u306f\u3001{1} \u306e\u7121\u52b9\u306a\u884c\u756a\u53f7\u3067\u3059"}, - {"is not a valid class name", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a\u30af\u30e9\u30b9\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"is not a valid field name", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a\u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"is not a valid id or class name", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a ID \u307e\u305f\u306f\u30af\u30e9\u30b9\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"is not a valid line number or method name for", "\"{0}\" \u306f\u3001\u30af\u30e9\u30b9 \"{1}\" \u306e\u6709\u52b9\u306a\u884c\u756a\u53f7\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093"}, - {"is not a valid method name", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a\u30e1\u30bd\u30c3\u30c9\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"is not a valid thread id", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a\u30b9\u30ec\u30c3\u30c9 ID \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"is not a valid threadgroup name", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a\u30b9\u30ec\u30c3\u30c9\u30b0\u30eb\u30fc\u30d7\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, + {"Illegal Argument Exception", "\u4E0D\u6B63\u306A\u5F15\u6570\u306E\u4F8B\u5916\u3067\u3059"}, + {"Illegal connector argument", "\u4E0D\u6B63\u306A\u30B3\u30CD\u30AF\u30BF\u5F15\u6570\u3067\u3059: {0}"}, + {"implementor:", "\u30A4\u30F3\u30D7\u30EA\u30E1\u30F3\u30BF: {0}"}, + {"implements:", "\u5B9F\u88C5\u3057\u307E\u3059: {0}"}, + {"Initializing progname", "{0}\u306E\u521D\u671F\u5316\u4E2D..."}, + {"Input stream closed.", "\u5165\u529B\u30B9\u30C8\u30EA\u30FC\u30E0\u304C\u9589\u3058\u3089\u308C\u307E\u3057\u305F\u3002"}, + {"Interface:", "\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9: {0}"}, + {"Internal debugger error.", "\u30C7\u30D0\u30C3\u30AC\u306E\u5185\u90E8\u30A8\u30E9\u30FC\u3067\u3059\u3002"}, + {"Internal error: null ThreadInfo created", "\u5185\u90E8\u30A8\u30E9\u30FC: null\u306EThreadInfo\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F"}, + {"Internal error; unable to set", "\u5185\u90E8\u30A8\u30E9\u30FC\u3002{0}\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093"}, + {"Internal exception during operation:", "\u64CD\u4F5C\u4E2D\u306E\u5185\u90E8\u4F8B\u5916:\n {0}"}, + {"Internal exception:", "\u5185\u90E8\u4F8B\u5916:"}, + {"Invalid argument type name", "\u5F15\u6570\u578B\u306E\u540D\u524D\u304C\u7121\u52B9\u3067\u3059"}, + {"Invalid assignment syntax", "\u5272\u5F53\u3066\u69CB\u6587\u304C\u7121\u52B9\u3067\u3059"}, + {"Invalid command syntax", "\u30B3\u30DE\u30F3\u30C9\u69CB\u6587\u304C\u7121\u52B9\u3067\u3059"}, + {"Invalid connect type", "\u63A5\u7D9A\u578B\u304C\u7121\u52B9\u3067\u3059"}, + {"Invalid consecutive invocations", "\u9023\u7D9A\u547C\u51FA\u3057\u304C\u7121\u52B9\u3067\u3059"}, + {"Invalid exception object", "\u4F8B\u5916\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u7121\u52B9\u3067\u3059"}, + {"Invalid method specification:", "\u7121\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u6307\u5B9A: {0}"}, + {"Invalid option on class command", "class\u30B3\u30DE\u30F3\u30C9\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u7121\u52B9\u3067\u3059"}, + {"invalid option", "\u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"}, + {"Invalid thread status.", "\u30B9\u30EC\u30C3\u30C9\u72B6\u614B\u304C\u7121\u52B9\u3067\u3059\u3002"}, + {"Invalid transport name:", "\u30C8\u30E9\u30F3\u30B9\u30DD\u30FC\u30C8\u540D\u304C\u7121\u52B9\u3067\u3059: {0}"}, + {"I/O exception occurred:", "\u5165\u51FA\u529B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}"}, + {"is an ambiguous method name in", "\"{0}\"\u306F\"{1}\"\u306E\u3042\u3044\u307E\u3044\u306A\u30E1\u30BD\u30C3\u30C9\u540D\u3067\u3059"}, + {"is an invalid line number for", "{0,number,integer}\u306F{1}\u306E\u7121\u52B9\u306A\u884C\u756A\u53F7\u3067\u3059"}, + {"is not a valid class name", "\"{0}\"\u306F\u4E0D\u6B63\u306A\u30AF\u30E9\u30B9\u540D\u3067\u3059\u3002"}, + {"is not a valid field name", "\"{0}\"\u306F\u4E0D\u6B63\u306A\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u3067\u3059\u3002"}, + {"is not a valid id or class name", "\"{0}\"\u306F\u4E0D\u6B63\u306AID\u307E\u305F\u306F\u30AF\u30E9\u30B9\u540D\u3067\u3059\u3002"}, + {"is not a valid line number or method name for", "\"{0}\"\u306F\u30AF\u30E9\u30B9\"{1}\"\u306E\u4E0D\u6B63\u306A\u884C\u756A\u53F7\u307E\u305F\u306F\u30E1\u30BD\u30C3\u30C9\u540D\u3067\u3059"}, + {"is not a valid method name", "\"{0}\"\u306F\u4E0D\u6B63\u306A\u30E1\u30BD\u30C3\u30C9\u540D\u3067\u3059\u3002"}, + {"is not a valid thread id", "\"{0}\"\u306F\u4E0D\u6B63\u306A\u30B9\u30EC\u30C3\u30C9ID\u3067\u3059\u3002"}, + {"is not a valid threadgroup name", "\"{0}\"\u306F\u4E0D\u6B63\u306A\u30B9\u30EC\u30C3\u30C9\u30FB\u30B0\u30EB\u30FC\u30D7\u540D\u3067\u3059\u3002"}, {"jdb prompt with no current thread", "> "}, {"jdb prompt thread name and current stack frame", "{0}[{1,number,integer}] "}, - {"killed", "{0} \u304c\u7d42\u4e86\u3057\u307e\u3057\u305f"}, - {"killing thread:", "\u6b21\u306e\u30b9\u30ec\u30c3\u30c9\u3092\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059: {0}"}, - {"Line number information not available for", "\u30bd\u30fc\u30b9\u306e\u884c\u756a\u53f7\u306f\u3001\u3053\u3053\u3067\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002"}, + {"killed", "{0}\u304C\u5F37\u5236\u7D42\u4E86\u3055\u308C\u307E\u3057\u305F"}, + {"killing thread:", "\u5F37\u5236\u7D42\u4E86\u3059\u308B\u30B9\u30EC\u30C3\u30C9: {0}"}, + {"Line number information not available for", "\u30BD\u30FC\u30B9\u884C\u756A\u53F7\u306F\u3053\u306E\u5834\u6240\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002"}, {"line number", ":{0,number,integer}"}, {"list field typename and name", "{0} {1}\n"}, - {"list field typename and name inherited", "{0} {1} ({2} \u304b\u3089\u7d99\u627f)\n"}, - {"list field typename and name hidden", "{0} {1} (\u975e\u8868\u793a)\n"}, - {"Listening at address:", "\u30a2\u30c9\u30ec\u30b9\u3067\u5f85\u6a5f: {0}"}, - {"Local variable information not available.", "\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u60c5\u5831\u304c\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002-g \u3092\u4f7f\u3063\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3001\u5909\u6570\u60c5\u5831\u3092\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044"}, - {"Local variables:", "\u30ed\u30fc\u30ab\u30eb\u5909\u6570:"}, - {"", "<\u4f4d\u7f6e\u9078\u629e\u4e0d\u53ef>"}, - {"location", "\"\u30b9\u30ec\u30c3\u30c9={0}\", {1}"}, - {"locationString", "{0}.{1}(), line={2,number,integer} bci={3,number,integer}"}, - {"Main class and arguments must be specified", "\u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u3068\u5f15\u6570\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"}, - {"Method arguments:", "\u30e1\u30bd\u30c3\u30c9\u5f15\u6570:"}, - {"Method entered:", "\u30e1\u30bd\u30c3\u30c9\u958b\u59cb: "}, - {"Method exited:", "\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86"}, - {"Method exitedValue:", "\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86: \u623b\u308a\u5024 = {0}, "}, - {"Method is overloaded; specify arguments", "\u30e1\u30bd\u30c3\u30c9 {0} \u304c\u30aa\u30fc\u30d0\u30fc\u30ed\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059\u3002\u5f15\u6570\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"}, - {"minus version", "\u3053\u308c\u306f {0} \u30d0\u30fc\u30b8\u30e7\u30f3 {1,number,integer}.{2,number,integer} (J2SE \u30d0\u30fc\u30b8\u30e7\u30f3 {3}) \u3067\u3059"}, - {"Monitor information for thread", "\u30b9\u30ec\u30c3\u30c9 {0} \u306e\u30e2\u30cb\u30bf\u60c5\u5831:"}, - {"Monitor information for expr", "{0} ({1}) \u306e\u30e2\u30cb\u30bf\u60c5\u5831:"}, - {"More than one class named", "\u8907\u6570\u306e\u30af\u30e9\u30b9\u306b\u6b21\u306e\u540d\u524d\u304c\u4ed8\u3044\u3066\u3044\u307e\u3059: ''{0}''"}, - {"native method", "\u30cd\u30a4\u30c6\u30a3\u30d6 \u30e1\u30bd\u30c3\u30c9"}, - {"nested:", "\u5165\u308c\u5b50: {0}"}, - {"No attach address specified.", "\u63a5\u7d9a\u5148\u306e\u30a2\u30c9\u30ec\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No breakpoints set.", "\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No class named", "''{0}'' \u3068\u3044\u3046\u540d\u524d\u306e\u30af\u30e9\u30b9\u304c\u3042\u308a\u307e\u305b\u3093"}, - {"No class specified.", "\u30af\u30e9\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No classpath specified.", "\u30af\u30e9\u30b9\u30d1\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No code at line", "{1} \u306e\u884c {0,number,integer} \u306b\u30b3\u30fc\u30c9\u304c\u3042\u308a\u307e\u305b\u3093"}, - {"No connect specification.", "\u63a5\u7d9a\u4ed5\u69d8\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"No connector named:", "\u6b21\u306e\u540d\u524d\u306e\u30b3\u30cd\u30af\u30bf\u304c\u3042\u308a\u307e\u305b\u3093: {0}"}, - {"No current thread", "\u73fe\u884c\u30b9\u30ec\u30c3\u30c9\u304c\u3042\u308a\u307e\u305b\u3093"}, - {"No default thread specified:", "\u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30ec\u30c3\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u6700\u521d\u306b \"thread\" \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"No exception object specified.", "\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No exceptions caught.", "\u4f8b\u5916\u306f\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No expression specified.", "\u5f0f\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No field in", "{1} \u306b\u30d5\u30a3\u30fc\u30eb\u30c9 {0} \u304c\u3042\u308a\u307e\u305b\u3093"}, - {"No frames on the current call stack", "\u73fe\u884c\u306e\u547c\u3073\u51fa\u3057\u30b9\u30bf\u30c3\u30af\u306b\u306f\u30d5\u30ec\u30fc\u30e0\u304c\u3042\u308a\u307e\u305b\u3093"}, - {"No linenumber information for", "{0} \u306e\u884c\u756a\u53f7\u60c5\u5831\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30c7\u30d0\u30c3\u30b0\u6a5f\u80fd\u3092\u30aa\u30f3\u306b\u3057\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"No local variables", "\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u304c\u3042\u308a\u307e\u305b\u3093"}, - {"No method in", "{1} \u306b\u30e1\u30bd\u30c3\u30c9 {0} \u304c\u3042\u308a\u307e\u305b\u3093"}, - {"No method specified.", "\u30e1\u30bd\u30c3\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No monitor numbered:", "\u6b21\u306e\u756a\u53f7\u306e\u30e2\u30cb\u30bf\u304c\u3042\u308a\u307e\u305b\u3093: {0}"}, - {"No monitors owned", " \u6240\u6709\u3059\u308b\u30e2\u30cb\u30bf\u304c\u3042\u308a\u307e\u305b\u3093"}, - {"No object specified.", "\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No objects specified.", "\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No save index specified.", "\u4fdd\u5b58\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No saved values", "\u4fdd\u5b58\u3055\u308c\u305f\u5024\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"No source information available for:", "{0} \u306e\u30bd\u30fc\u30b9\u60c5\u5831\u304c\u5229\u7528\u3067\u304d\u307e\u305b\u3093"}, - {"No sourcedebugextension specified", "SourceDebugExtension \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No sourcepath specified.", "sourcepath \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No thread specified.", "\u30b9\u30ec\u30c3\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No VM connected", "VM \u304c\u63a5\u7d9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"No waiters", " \u5f85\u6a5f\u8005\u306f\u3044\u307e\u305b\u3093"}, - {"not a class", "{0} \u306f\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"}, - {"Not a monitor number:", "\u30e2\u30cb\u30bf\u756a\u53f7\u3067\u306f\u3042\u308a\u307e\u305b\u3093: ''{0}''"}, - {"not found (try the full name)", "{0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 (\u30d5\u30eb\u30cd\u30fc\u30e0\u3092\u5165\u308c\u3066\u304f\u3060\u3055\u3044)"}, - {"Not found:", "\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"}, - {"not found", "{0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093"}, - {"Not owned", " \u6240\u6709\u3057\u3066\u3044\u307e\u305b\u3093"}, - {"Not waiting for a monitor", " \u30e2\u30cb\u30bf\u3092\u5f85\u6a5f\u3057\u3066\u3044\u307e\u305b\u3093"}, - {"Nothing suspended.", "\u4f55\u3082\u4e2d\u65ad\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, + {"list field typename and name inherited", "{0} {1} ({2}\u304B\u3089\u7D99\u627F)\n"}, + {"list field typename and name hidden", "{0} {1} (\u975E\u8868\u793A)\n"}, + {"Listening at address:", "\u6B21\u306E\u30A2\u30C9\u30EC\u30B9\u3067\u30EA\u30B9\u30CB\u30F3\u30B0: {0}"}, + {"Local variable information not available.", "\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u60C5\u5831\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u5909\u6570\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\u306B\u306F-g\u3092\u6307\u5B9A\u3057\u3066\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Local variables:", "\u30ED\u30FC\u30AB\u30EB\u5909\u6570:"}, + {"", ""}, + {"location", "\"\u30B9\u30EC\u30C3\u30C9={0}\", {1}"}, + {"locationString", "{0}.{1}()\u3001\u884C={2,number,integer} bci={3,number,integer}"}, + {"Main class and arguments must be specified", "\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3068\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"Method arguments:", "\u30E1\u30BD\u30C3\u30C9\u5F15\u6570:"}, + {"Method entered:", "\u5165\u529B\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9: "}, + {"Method exited:", "\u7D42\u4E86\u3057\u305F\u30E1\u30BD\u30C3\u30C9"}, + {"Method exitedValue:", "\u30E1\u30BD\u30C3\u30C9\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F: \u623B\u308A\u5024= {0}, "}, + {"Method is overloaded; specify arguments", "\u30E1\u30BD\u30C3\u30C9{0}\u304C\u30AA\u30FC\u30D0\u30FC\u30ED\u30FC\u30C9\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5F15\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"minus version", "\u3053\u308C\u306F{0}\u30D0\u30FC\u30B8\u30E7\u30F3{1,number,integer}.{2,number,integer} (Java SE\u30D0\u30FC\u30B8\u30E7\u30F3{3})\u3067\u3059"}, + {"Monitor information for thread", "\u30B9\u30EC\u30C3\u30C9{0}\u306E\u60C5\u5831\u306E\u30E2\u30CB\u30BF\u30FC:"}, + {"Monitor information for expr", "{0} ({1})\u306E\u60C5\u5831\u306E\u30E2\u30CB\u30BF\u30FC:"}, + {"More than one class named", "\u540D\u524D''{0}''\u306E\u30AF\u30E9\u30B9\u304C\u8907\u6570\u3042\u308A\u307E\u3059"}, + {"native method", "native\u30E1\u30BD\u30C3\u30C9"}, + {"nested:", "\u5165\u308C\u5B50\u306B\u306A\u3063\u3066\u3044\u307E\u3059: {0}"}, + {"No attach address specified.", "\u63A5\u7D9A\u30A2\u30C9\u30EC\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No breakpoints set.", "\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No class named", "\u540D\u524D''{0}''\u306E\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"No class specified.", "\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No classpath specified.", "\u30AF\u30E9\u30B9\u30D1\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No code at line", "{1}\u306E\u884C{0,number,integer}\u306B\u30B3\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"No connect specification.", "\u63A5\u7D9A\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No connector named:", "\u540D\u524D{0}\u306E\u30B3\u30CD\u30AF\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"No current thread", "\u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"No default thread specified:", "\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u6700\u521D\u306B\"thread\"\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"No exception object specified.", "\u4F8B\u5916\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No exceptions caught.", "\u4F8B\u5916\u304C\u6355\u6349\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002"}, + {"No expression specified.", "\u5F0F\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No field in", "{1}\u306B\u30D5\u30A3\u30FC\u30EB\u30C9{0}\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"No frames on the current call stack", "\u73FE\u5728\u306E\u30B3\u30FC\u30EB\u30FB\u30B9\u30BF\u30C3\u30AF\u306B\u30D5\u30EC\u30FC\u30E0\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"No linenumber information for", "{0}\u306E\u884C\u756A\u53F7\u60C5\u5831\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C7\u30D0\u30C3\u30B0\u3092\u30AA\u30F3\u306B\u3057\u3066\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"No local variables", "\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"No method in", "{1}\u306B\u30E1\u30BD\u30C3\u30C9{0}\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"No method specified.", "\u30E1\u30BD\u30C3\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No monitor numbered:", "\u756A\u53F7\u4ED8\u3051\u3055\u308C\u3066\u3044\u308B\u30E2\u30CB\u30BF\u30FC\u304C\u3042\u308A\u307E\u305B\u3093: {0}"}, + {"No monitors owned", " \u6240\u6709\u3055\u308C\u3066\u3044\u308B\u30E2\u30CB\u30BF\u30FC\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"No object specified.", "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No objects specified.", "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No save index specified.", "\u4FDD\u5B58\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No saved values", "\u4FDD\u5B58\u3055\u308C\u305F\u5024\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"No source information available for:", "{0}\u306E\u30BD\u30FC\u30B9\u60C5\u5831\u304C\u5229\u7528\u3067\u304D\u307E\u305B\u3093"}, + {"No sourcedebugextension specified", "SourceDebugExtension\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"No sourcepath specified.", "\u30BD\u30FC\u30B9\u30FB\u30D1\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No thread specified.", "\u30B9\u30EC\u30C3\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"No VM connected", "VM\u304C\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"No waiters", " \u5F85\u6A5F\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"not a class", "{0}\u306F\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"Not a monitor number:", "\u30E2\u30CB\u30BF\u30FC\u756A\u53F7\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ''{0}''"}, + {"not found (try the full name)", "{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093(\u30D5\u30EB\u30CD\u30FC\u30E0\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044)"}, + {"Not found:", "\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}"}, + {"not found", "{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"}, + {"Not owned", " \u6240\u6709\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"Not waiting for a monitor", " \u30E2\u30CB\u30BF\u30FC\u3092\u5F85\u6A5F\u3057\u3066\u3044\u307E\u305B\u3093"}, + {"Nothing suspended.", "\u4F55\u3082\u4E2D\u65AD\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, {"object description and hex id", "({0}){1}"}, - {"Operation is not supported on the target VM", "\u3053\u306e\u64cd\u4f5c\u306f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"operation not yet supported", "\u3053\u306e\u64cd\u4f5c\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"Owned by:", " \u6240\u6709\u8005: {0}\u3001\u30a8\u30f3\u30c8\u30ea\u30ab\u30a6\u30f3\u30c8: {1,number,integer}"}, - {"Owned monitor:", " \u6240\u6709\u30e2\u30cb\u30bf: {0}"}, - {"Parse exception:", "\u69cb\u6587\u89e3\u6790\u4f8b\u5916: {0}"}, - {"printbreakpointcommandusage", "\u4f7f\u7528\u6cd5: {0} : \u307e\u305f\u306f\n {1} .[(argument_type,...)]"}, - {"Removed:", "\u524a\u9664\u6e08\u307f: {0}"}, - {"Requested stack frame is no longer active:", "\u8981\u6c42\u3055\u308c\u305f\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u306f\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0,number,integer}"}, - {"run command is valid only with launched VMs", "'run ' \u30b3\u30de\u30f3\u30c9\u306f\u3001VM \u306e\u8d77\u52d5\u6642\u306b\u306e\u307f\u6709\u52b9\u3067\u3059\u3002"}, - {"run", "{0} \u3092\u5b9f\u884c\u3057\u307e\u3059"}, - {"saved", "{0} \u3092\u4fdd\u5b58\u3057\u307e\u3057\u305f"}, - {"Set deferred", "\u4fdd\u7559\u3057\u305f {0} \u3092\u8a2d\u5b9a\u3057\u307e\u3057\u305f"}, - {"Set", "{0} \u3092\u8a2d\u5b9a\u3057\u307e\u3057\u305f"}, - {"Source file not found:", "\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"}, + {"Operation is not supported on the target VM", "\u64CD\u4F5C\u306F\u30BF\u30FC\u30B2\u30C3\u30C8VM\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"operation not yet supported", "\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u64CD\u4F5C"}, + {"Owned by:", " \u6240\u6709\u8005: {0}\u3001\u30A8\u30F3\u30C8\u30EA\u6570: {1,number,integer}"}, + {"Owned monitor:", " \u6240\u6709\u3055\u308C\u3066\u3044\u308B\u30E2\u30CB\u30BF\u30FC: {0}"}, + {"Parse exception:", "\u4F8B\u5916\u306E\u89E3\u6790: {0}"}, + {"printbreakpointcommandusage", "\u4F7F\u7528\u65B9\u6CD5: {0} :\u307E\u305F\u306F\n {1} .[(argument_type,...)]"}, + {"Removed:", "{0}\u306F\u524A\u9664\u3055\u308C\u307E\u3057\u305F"}, + {"Requested stack frame is no longer active:", "\u30EA\u30AF\u30A8\u30B9\u30C8\u3055\u308C\u305F\u30B9\u30BF\u30C3\u30AF\u30FB\u30D5\u30EC\u30FC\u30E0\u306F\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3042\u308A\u307E\u305B\u3093: {0,number,integer}"}, + {"run command is valid only with launched VMs", "'run '\u30B3\u30DE\u30F3\u30C9\u306F\u8D77\u52D5\u6E08\u306EVM\u3067\u306E\u307F\u6709\u52B9\u3067\u3059"}, + {"run", "{0}\u306E\u5B9F\u884C"}, + {"saved", "{0}\u304C\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F"}, + {"Set deferred", "\u9045\u5EF6\u3057\u305F{0}\u306E\u8A2D\u5B9A"}, + {"Set", "{0}\u306E\u8A2D\u5B9A"}, + {"Source file not found:", "\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}"}, {"source line number and line", "{0,number,integer} {1}"}, {"source line number current line and line", "{0,number,integer} => {1}"}, {"sourcedebugextension", "SourceDebugExtension -- {0}"}, - {"Specify class and method", "\u30af\u30e9\u30b9\u304a\u3088\u3073\u30e1\u30bd\u30c3\u30c9\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"}, - {"Specify classes to redefine", "\u518d\u5b9a\u7fa9\u3059\u308b\u30af\u30e9\u30b9\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"}, - {"Specify file name for class", "\u30af\u30e9\u30b9 {0} \u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"}, + {"Specify class and method", "\u30AF\u30E9\u30B9\u3068\u30E1\u30BD\u30C3\u30C9\u306E\u6307\u5B9A"}, + {"Specify classes to redefine", "\u518D\u5B9A\u7FA9\u3059\u308B\u30AF\u30E9\u30B9\u306E\u6307\u5B9A"}, + {"Specify file name for class", "\u30AF\u30E9\u30B9{0}\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u6307\u5B9A"}, {"stack frame dump with pc", " [{0,number,integer}] {1}.{2} ({3})\u3001pc = {4}"}, {"stack frame dump", " [{0,number,integer}] {1}.{2} ({3})"}, - {"Step completed:", "\u30b9\u30c6\u30c3\u30d7\u5b8c\u4e86: "}, - {"Stopping due to deferred breakpoint errors.", "\u4fdd\u7559\u3057\u305f\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u306e\u30a8\u30e9\u30fc\u304c\u539f\u56e0\u3067\u505c\u6b62\u3057\u307e\u3057\u305f\u3002\n"}, - {"subclass:", "\u30b5\u30d6\u30af\u30e9\u30b9: {0}"}, - {"subinterface:", "\u30b5\u30d6\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9: {0}"}, + {"Step completed:", "\u30B9\u30C6\u30C3\u30D7\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F: "}, + {"Stopping due to deferred breakpoint errors.", "\u9045\u5EF6\u3057\u305F\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u30FB\u30A8\u30E9\u30FC\u304C\u539F\u56E0\u3067\u505C\u6B62\u3057\u3066\u3044\u307E\u3059\u3002\n"}, + {"subclass:", "\u30B5\u30D6\u30AF\u30E9\u30B9: {0}"}, + {"subinterface:", "\u30B5\u30D6\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9: {0}"}, {"tab", "\t{0}"}, - {"Target VM failed to initialize.", "\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u306e\u521d\u671f\u5316\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"}, - {"The application exited", "\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u7d42\u4e86\u3057\u307e\u3057\u305f"}, - {"The application has been disconnected", "\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u5207\u65ad\u3055\u308c\u3066\u3044\u307e\u3059"}, - {"The gc command is no longer necessary.", "'gc' \u30b3\u30de\u30f3\u30c9\u306f\u73fe\u5728\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002\n" + - "\u901a\u5e38\u3069\u304a\u308a\u3001\u3059\u3079\u3066\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002'enablegc' \u304a\u3088\u3073 'disablegc'\n" + - "\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3054\u3068\u306b\u5236\u5fa1\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"The load command is no longer supported.", "'load' \u30b3\u30de\u30f3\u30c9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"The memory command is no longer supported.", "'memory' \u30b3\u30de\u30f3\u30c9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"The VM does not use paths", "VM \u3067\u306f\u30d1\u30b9\u3092\u4f7f\u7528\u3057\u307e\u305b\u3093"}, - {"Thread is not running (no stack).", "\u30b9\u30ec\u30c3\u30c9\u306f\u5b9f\u884c\u3055\u308c\u3066\u3044\u307e\u305b\u3093 (\u30b9\u30bf\u30c3\u30af\u306a\u3057)\u3002"}, - {"Thread number not specified.", "\u30b9\u30ec\u30c3\u30c9\u756a\u53f7\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, + {"Target VM failed to initialize.", "\u30BF\u30FC\u30B2\u30C3\u30C8VM\u304C\u521D\u671F\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"}, + {"The application exited", "\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F"}, + {"The application has been disconnected", "\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u304C\u5207\u65AD\u3055\u308C\u307E\u3057\u305F"}, + {"The gc command is no longer necessary.", "'gc'\u30B3\u30DE\u30F3\u30C9\u306F\u4E0D\u8981\u306B\u306A\u308A\u307E\u3057\u305F\u3002\n\u3059\u3079\u3066\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u901A\u5E38\u3069\u304A\u308A\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3055\u308C\u307E\u3059\u3002\u500B\u3005\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\n\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u5236\u5FA1\u3059\u308B\u306B\u306F'enablegc'\u304A\u3088\u3073'disablegc'\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"The load command is no longer supported.", "'load'\u30B3\u30DE\u30F3\u30C9\u306F\u73FE\u5728\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"The memory command is no longer supported.", "'memory'\u30B3\u30DE\u30F3\u30C9\u306F\u73FE\u5728\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"The VM does not use paths", "VM\u306F\u30D1\u30B9\u3092\u4F7F\u7528\u3057\u307E\u305B\u3093"}, + {"Thread is not running (no stack).", "\u30B9\u30EC\u30C3\u30C9\u306F\u5B9F\u884C\u4E2D\u3067\u306F\u3042\u308A\u307E\u305B\u3093(\u30B9\u30BF\u30C3\u30AF\u306A\u3057)\u3002"}, + {"Thread number not specified.", "\u30B9\u30EC\u30C3\u30C9\u756A\u53F7\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, {"Thread:", "{0}:"}, - {"Thread Group:", "\u30b0\u30eb\u30fc\u30d7 {0}:"}, - {"Thread description name unknownStatus BP", " {0} {1} \u4e0d\u660e (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"}, - {"Thread description name unknownStatus", " {0} {1} \u4e0d\u660e"}, - {"Thread description name zombieStatus BP", " {0} {1} \u30be\u30f3\u30d3 (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"}, - {"Thread description name zombieStatus", " {0} {1} \u30be\u30f3\u30d3"}, - {"Thread description name runningStatus BP", " {0} {1} \u5b9f\u884c\u4e2d (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"}, - {"Thread description name runningStatus", " {0} {1} \u5b9f\u884c\u4e2d"}, - {"Thread description name sleepingStatus BP", " {0} {1} \u4f11\u6b62\u4e2d (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"}, - {"Thread description name sleepingStatus", " {0} {1} \u4f11\u6b62\u4e2d"}, - {"Thread description name waitingStatus BP", " {0} {1} \u30e2\u30cb\u30bf\u3067\u5f85\u6a5f\u4e2d (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"}, - {"Thread description name waitingStatus", " {0} {1} \u30e2\u30cb\u30bf\u3067\u5f85\u6a5f\u4e2d"}, - {"Thread description name condWaitstatus BP", " {0} {1} \u72b6\u6cc1\u5f85\u6a5f\u4e2d (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"}, - {"Thread description name condWaitstatus", " {0} {1} \u72b6\u6cc1\u5f85\u6a5f\u4e2d"}, - {"Thread has been resumed", "\u30b9\u30ec\u30c3\u30c9\u304c\u518d\u958b\u3055\u308c\u307e\u3057\u305f"}, - {"Thread not suspended", "\u30b9\u30ec\u30c3\u30c9\u306f\u4e2d\u65ad\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"thread group number description name", "{0,number,integer}\u3002 {1} {2}"}, - {"Threadgroup name not specified.", "Threadgroup \u540d\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"Threads must be suspended", "\u30b9\u30ec\u30c3\u30c9\u3092\u4e2d\u65ad\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"}, - {"trace method exit in effect for", "{0} \u306b\u5bfe\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86\u306e\u30c8\u30ec\u30fc\u30b9\u6709\u52b9"}, - {"trace method exits in effect", "\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86\u306e\u30c8\u30ec\u30fc\u30b9\u6709\u52b9"}, - {"trace methods in effect", "\u30e1\u30bd\u30c3\u30c9\u306e\u30c8\u30ec\u30fc\u30b9\u6709\u52b9"}, - {"trace go method exit in effect for", "{0} \u306b\u5bfe\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86\u306e\u30c8\u30ec\u30fc\u30b9 (go \u30aa\u30d7\u30b7\u30e7\u30f3\u4ed8\u304d) \u6709\u52b9"}, - {"trace go method exits in effect", "\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86\u306e\u30c8\u30ec\u30fc\u30b9 (go \u30aa\u30d7\u30b7\u30e7\u30f3\u4ed8\u304d) \u6709\u52b9"}, - {"trace go methods in effect", "\u30e1\u30bd\u30c3\u30c9\u306e\u30c8\u30ec\u30fc\u30b9 (go \u30aa\u30d7\u30b7\u30e7\u30f3\u4ed8\u304d) \u6709\u52b9"}, - {"trace not in effect", "\u30c8\u30ec\u30fc\u30b9\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"}, - {"Unable to attach to target VM.", "\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093"}, - {"Unable to display process output:", "\u30d7\u30ed\u30bb\u30b9\u51fa\u529b\u3092\u8868\u793a\u3067\u304d\u307e\u305b\u3093: {0}"}, - {"Unable to launch target VM.", "\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093"}, - {"Unable to set deferred", "\u4fdd\u7559\u3057\u305f {0} \u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093: {1}"}, - {"Unable to set main class and arguments", "\u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u304a\u3088\u3073\u5f15\u6570\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093"}, - {"Unable to set", "{0} \u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093: {1}"}, - {"Unexpected event type", "\u4e88\u671f\u3057\u306a\u3044\u7a2e\u985e\u306e\u30a4\u30d9\u30f3\u30c8: {0}"}, - {"unknown", "\u4e0d\u660e"}, - {"Unmonitoring", "{0} \u306f\u76e3\u8996\u3057\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"Unrecognized command. Try help...", "\u8a8d\u8b58\u3067\u304d\u306a\u3044\u30b3\u30de\u30f3\u30c9: ''{0}''\u3002\u30d8\u30eb\u30d7\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044..."}, - {"Usage: catch exception", "\u4f7f\u7528\u6cd5: catch [uncaught|caught|all] |"}, - {"Usage: ignore exception", "\u4f7f\u7528\u6cd5: ignore [uncaught|caught|all] |"}, - {"Usage: down [n frames]", "\u4f7f\u7528\u6cd5: down [\u30d5\u30ec\u30fc\u30e0\u6570 n]"}, - {"Usage: kill ", "\u4f7f\u7528\u6cd5: kill "}, - {"Usage: read ", "\u4f7f\u7528\u6cd5: read "}, - {"Usage: unmonitor ", "\u4f7f\u7528\u6cd5: unmonitor "}, - {"Usage: up [n frames]", "\u4f7f\u7528\u6cd5: up [\u30d5\u30ec\u30fc\u30e0\u6570 n]"}, - {"Use java minus X to see", "'java -X' \u3092\u4f7f\u7528\u3057\u3066\u3001\u4f7f\u7528\u53ef\u80fd\u306a\u6a19\u6e96\u4ee5\u5916\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Use stop at to set a breakpoint at a line number", "'stop at' \u3092\u4f7f\u7528\u3057\u3066\u3001\u884c\u756a\u53f7\u306b\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"VM already running. use cont to continue after events.", "VM \u306f\u65e2\u306b\u5b9f\u884c\u4e2d\u3067\u3059\u3002'cont' \u3092\u4f7f\u7528\u3057\u3066\u30a4\u30d9\u30f3\u30c8\u306e\u5f8c\u3082\u7d9a\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"VM Started:", "VM \u304c\u8d77\u52d5\u3057\u307e\u3057\u305f: "}, - {"vmstartexception", "VM \u8d77\u52d5\u4f8b\u5916: {0}"}, - {"Waiting for monitor:", " \u30e2\u30cb\u30bf\u5f85\u6a5f\u4e2d: {0}"}, - {"Waiting thread:", " \u30b9\u30ec\u30c3\u30c9\u5f85\u6a5f\u4e2d: {0}"}, - {"watch accesses of", "{0}.{1} \u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u76e3\u8996\u3057\u307e\u3059\u3002"}, - {"watch modification of", "{0}.{1} \u3078\u306e\u5909\u66f4\u3092\u76e3\u8996\u3057\u307e\u3059\u3002"}, + {"Thread Group:", "\u30B0\u30EB\u30FC\u30D7{0}:"}, + {"Thread description name unknownStatus BP", " {0} {1}\u306F\u4E0D\u660E\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8)"}, + {"Thread description name unknownStatus", " {0} {1}\u306F\u4E0D\u660E\u3067\u3059"}, + {"Thread description name zombieStatus BP", " {0} {1}\u306F\u30BE\u30F3\u30D3\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u5730\u70B9)"}, + {"Thread description name zombieStatus", " {0} {1}\u306F\u30BE\u30F3\u30D3\u3067\u3059"}, + {"Thread description name runningStatus BP", " {0} {1}\u306F\u5B9F\u884C\u4E2D\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8)"}, + {"Thread description name runningStatus", " {0} {1}\u306F\u5B9F\u884C\u4E2D\u3067\u3059"}, + {"Thread description name sleepingStatus BP", " {0} {1}\u306F\u30B9\u30EA\u30FC\u30D7\u4E2D\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8)"}, + {"Thread description name sleepingStatus", " {0} {1}\u306F\u30B9\u30EA\u30FC\u30D7\u4E2D\u3067\u3059"}, + {"Thread description name waitingStatus BP", " {0} {1}\u306F\u30E2\u30CB\u30BF\u30FC\u5185\u3067\u5F85\u6A5F\u4E2D\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8)"}, + {"Thread description name waitingStatus", " {0} {1}\u306F\u30E2\u30CB\u30BF\u30FC\u5185\u3067\u5F85\u6A5F\u4E2D\u3067\u3059"}, + {"Thread description name condWaitstatus BP", " {0} {1}\u306F\u6761\u4EF6\u3092\u5F85\u6A5F\u4E2D\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8)"}, + {"Thread description name condWaitstatus", " {0} {1}\u306F\u6761\u4EF6\u3092\u5F85\u6A5F\u4E2D\u3067\u3059"}, + {"Thread has been resumed", "\u30B9\u30EC\u30C3\u30C9\u304C\u518D\u958B\u3057\u307E\u3057\u305F"}, + {"Thread not suspended", "\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3057\u3066\u3044\u307E\u305B\u3093"}, + {"thread group number description name", "{0,number,integer}. {1} {2}"}, + {"Threadgroup name not specified.", "\u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u540D\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"Threads must be suspended", "\u30B9\u30EC\u30C3\u30C9\u3092\u4E2D\u65AD\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"trace method exit in effect for", "{0}\u306B\u5BFE\u3057\u3066\u6709\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9"}, + {"trace method exits in effect", "\u6709\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9"}, + {"trace methods in effect", "\u30E1\u30BD\u30C3\u30C9\u306E\u30C8\u30EC\u30FC\u30B9\u306E\u6709\u52B9\u5316"}, + {"trace go method exit in effect for", "{0}\u306B\u6709\u52B9\u306Ago\u30E1\u30BD\u30C3\u30C9\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9"}, + {"trace go method exits in effect", "\u6709\u52B9\u306Ago\u30E1\u30BD\u30C3\u30C9\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9"}, + {"trace go methods in effect", "go\u30E1\u30BD\u30C3\u30C9\u306E\u30C8\u30EC\u30FC\u30B9\u306E\u6709\u52B9\u5316"}, + {"trace not in effect", "\u30C8\u30EC\u30FC\u30B9\u306E\u7121\u52B9\u5316"}, + {"Unable to attach to target VM.", "\u30BF\u30FC\u30B2\u30C3\u30C8VM\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3002"}, + {"Unable to display process output:", "\u30D7\u30ED\u30BB\u30B9\u51FA\u529B\u3092\u8868\u793A\u3067\u304D\u307E\u305B\u3093: {0}"}, + {"Unable to launch target VM.", "\u30BF\u30FC\u30B2\u30C3\u30C8VM\u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093\u3002"}, + {"Unable to set deferred", "\u9045\u5EF6\u3057\u305F{0}\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093: {1}"}, + {"Unable to set main class and arguments", "\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3068\u5F15\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"}, + {"Unable to set", "{0}\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093: {1}"}, + {"Unexpected event type", "\u4E88\u671F\u3057\u306A\u3044\u30A4\u30D9\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7: {0}"}, + {"unknown", "\u4E0D\u660E"}, + {"Unmonitoring", "{0}\u306E\u30E2\u30CB\u30BF\u30EA\u30F3\u30B0\u89E3\u9664 "}, + {"Unrecognized command. Try help...", "''{0}''\u306F\u8A8D\u8B58\u3055\u308C\u306A\u3044\u30B3\u30DE\u30F3\u30C9\u3067\u3059\u3002help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044..."}, + {"Usage: catch exception", "\u4F7F\u7528\u65B9\u6CD5: catch [uncaught|caught|all] |"}, + {"Usage: ignore exception", "\u4F7F\u7528\u65B9\u6CD5: ignore [uncaught|caught|all] |"}, + {"Usage: down [n frames]", "\u4F7F\u7528\u65B9\u6CD5: down [n frames]"}, + {"Usage: kill ", "\u4F7F\u7528\u65B9\u6CD5: kill "}, + {"Usage: read ", "\u4F7F\u7528\u65B9\u6CD5: read "}, + {"Usage: unmonitor ", "\u4F7F\u7528\u65B9\u6CD5: unmonitor "}, + {"Usage: up [n frames]", "\u4F7F\u7528\u65B9\u6CD5: up [n frames]"}, + {"Use java minus X to see", "\u4F7F\u7528\u53EF\u80FD\u306A\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A\u3059\u308B\u306B\u306F'java -X'\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Use stop at to set a breakpoint at a line number", "\u884C\u756A\u53F7\u306B\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u8A2D\u5B9A\u3059\u308B\u306B\u306F'stop at'\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"VM already running. use cont to continue after events.", "VM\u306F\u3059\u3067\u306B\u5B9F\u884C\u4E2D\u3067\u3059\u3002\u30A4\u30D9\u30F3\u30C8\u5F8C\u306B\u7D9A\u884C\u3059\u308B\u306B\u306F'cont'\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"VM Started:", "VM\u304C\u958B\u59CB\u3055\u308C\u307E\u3057\u305F: "}, + {"vmstartexception", "VM\u304C\u4F8B\u5916\u3092\u958B\u59CB\u3057\u307E\u3057\u305F: {0}"}, + {"Waiting for monitor:", " \u30E2\u30CB\u30BF\u30FC\u306E\u5F85\u6A5F\u4E2D: {0}"}, + {"Waiting thread:", " \u30B9\u30EC\u30C3\u30C9\u3092\u5F85\u6A5F\u4E2D: {0}"}, + {"watch accesses of", "{0}.{1}\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u76E3\u8996"}, + {"watch modification of", "{0}.{1}\u306E\u5909\u66F4\u306E\u76E3\u8996"}, {"zz help text", - "** command list **\n" + - "connectors -- \u3053\u306e VM \u5185\u3067\u4f7f\u7528\u53ef\u80fd\u306a\u30b3\u30cd\u30af\u30bf\u3068\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u3092\u30ea\u30b9\u30c8\u8868\u793a\u3057\u307e\u3059\n" + - "\n" + - "run [class [args]] -- \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u306e\u5b9f\u884c\u3092\u958b\u59cb\u3057\u307e\u3059\u3002\n" + - "\n" + - "threads [threadgroup] -- \u30b9\u30ec\u30c3\u30c9\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" + - "thread -- \u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30ec\u30c3\u30c9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\n" + - "suspend [thread id(s)] -- \u30b9\u30ec\u30c3\u30c9\u3092\u4e2d\u65ad\u3057\u307e\u3059 (\u30c7\u30d5\u30a9\u30eb\u30c8: \u3059\u3079\u3066)\n" + - "resume [thread id(s)] -- \u30b9\u30ec\u30c3\u30c9\u3092\u518d\u958b\u3057\u307e\u3059 (\u30c7\u30d5\u30a9\u30eb\u30c8: \u3059\u3079\u3066)\n" + - "where [ | all] -- \u30b9\u30ec\u30c3\u30c9\u306e\u30b9\u30bf\u30c3\u30af\u3092\u30c0\u30f3\u30d7\u3057\u307e\u3059\n" + - "wherei [ | all] -- \u30b9\u30ec\u30c3\u30c9\u306e\u30b9\u30bf\u30c3\u30af\u3092 PC \u60c5\u5831\u3068\u3044\u3063\u3057\u3087\u306b\u30c0\u30f3\u30d7\u3057\u307e\u3059\n" + - "up [n frames] -- \u30b9\u30ec\u30c3\u30c9\u306e\u30b9\u30bf\u30c3\u30af\u3092\u4e0a\u3078\u79fb\u52d5\u3057\u307e\u3059\n" + - "down [n frames] -- \u30b9\u30ec\u30c3\u30c9\u306e\u30b9\u30bf\u30c3\u30af\u3092\u4e0b\u3078\u79fb\u52d5\u3057\u307e\u3059\n" + - "kill -- \u6307\u5b9a\u3055\u308c\u305f\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u30b9\u30ec\u30c3\u30c9\u3092\u7d42\u4e86\u3057\u307e\u3059\n" + - "interrupt -- \u30b9\u30ec\u30c3\u30c9\u306b\u5272\u308a\u8fbc\u307f\u307e\u3059\n" + - "\n" + - "print -- \u5f0f\u306e\u5024\u3092\u51fa\u529b\u3057\u307e\u3059\n" + - "dump -- \u3059\u3079\u3066\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u60c5\u5831\u3092\u51fa\u529b\u3057\u307e\u3059\n" + - "eval -- \u5f0f\u3092\u8a55\u4fa1\u3057\u307e\u3059 (print \u3068\u540c\u3058)\n" + - "set = -- \u30d5\u30a3\u30fc\u30eb\u30c9/\u5909\u6570/\u914d\u5217\u8981\u7d20\u306b\u65b0\u3057\u3044\u5024\u3092\u5272\u308a\u5f53\u3066\u307e\u3059\n" + - "locals -- \u73fe\u884c\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u306e\u3059\u3079\u3066\u306e\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u3092\u51fa\u529b\u3057\u307e\u3059\n" + - "\n" + - "classes -- \u73fe\u6642\u70b9\u3067\u65e2\u77e5\u306e\u30af\u30e9\u30b9\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" + - "class -- \u540d\u524d\u4ed8\u304d\u30af\u30e9\u30b9\u306e\u8a73\u7d30\u3092\u8868\u793a\u3057\u307e\u3059\n" + - "methods -- \u30af\u30e9\u30b9\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" + - "fields -- \u30af\u30e9\u30b9\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" + - "\n" + - "threadgroups -- \u30b9\u30ec\u30c3\u30c9\u30b0\u30eb\u30fc\u30d7\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" + - "threadgroup -- \u73fe\u5728\u306e\u30b9\u30ec\u30c3\u30c9\u30b0\u30eb\u30fc\u30d7\u3092\u8a2d\u5b9a\u3057\u307e\u3059\n" + - "\n" + - "stop in .[(argument_type,...)]\n" + - " -- \u30e1\u30bd\u30c3\u30c9\u306b\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\n" + - "stop at : -- \u884c\u306b\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\n" + - "clear .[(argument_type,...)]\n" + - " -- \u30e1\u30bd\u30c3\u30c9\u306e\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u89e3\u9664\u3057\u307e\u3059\n" + - "clear : -- \u884c\u306e\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u89e3\u9664\u3057\u307e\u3059\n" + - "clear -- \u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" + - "catch [uncaught|caught|all] |\n" + - " -- \u6307\u5b9a\u3055\u308c\u305f\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u3089\u505c\u6b62\u3057\u307e\u3059\n" + - "ignore [uncaught|caught|all] |\n" + - " -- \u6307\u5b9a\u3055\u308c\u305f\u4f8b\u5916\u306e 'catch' \u3092\u53d6\u308a\u6d88\u3057\u307e\u3059\n" + - "watch [access|all] .\n" + - " -- \u30d5\u30a3\u30fc\u30eb\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9/\u4fee\u6b63\u3092\u76e3\u8996\u3057\u307e\u3059\n" + - "unwatch [access|all] .\n" + - " -- \u30d5\u30a3\u30fc\u30eb\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9/\u4fee\u6b63\u306e\u76e3\u8996\u3092\u4e2d\u6b62\u3057\u307e\u3059\n" + - "trace methods [thread] -- \u30e1\u30bd\u30c3\u30c9\u306e\u958b\u59cb/\u7d42\u4e86\u3092\u8ffd\u8de1\u3057\u307e\u3059\n" + - "untrace methods [thread] -- \u30e1\u30bd\u30c3\u30c9\u306e\u958b\u59cb/\u7d42\u4e86\u306e\u8ffd\u8de1\u3092\u4e2d\u6b62\u3057\u307e\u3059\n" + - "step -- \u73fe\u5728\u306e\u884c\u3092\u5b9f\u884c\u3057\u307e\u3059\n" + - "step up -- \u73fe\u5728\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u547c\u3073\u51fa\u3057\u5074\u306b\u623b\u308b\u307e\u3067\u5b9f\u884c\u3057\u307e\u3059\n" + - "stepi -- \u73fe\u5728\u306e\u547d\u4ee4\u3092\u5b9f\u884c\u3057\u307e\u3059\n" + - "next -- 1 \u884c\u30b9\u30c6\u30c3\u30d7\u5b9f\u884c\u3057\u307e\u3059 (\u547c\u3073\u51fa\u3057\u3092\u30b9\u30c6\u30c3\u30d7\u30aa\u30fc\u30d0\u30fc\u3057\u307e\u3059)\n" + - "cont -- \u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u304b\u3089\u7d99\u7d9a\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\n" + - "\n" + - "list [line number|method] -- \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u51fa\u529b\u3057\u307e\u3059\n" + - "use (or sourcepath) [source file path]\n" + - " -- \u30bd\u30fc\u30b9\u30d1\u30b9\u3092\u8868\u793a\u307e\u305f\u306f\u5909\u66f4\u3057\u307e\u3059\n" + - "exclude [, ... | \"none\"]\n" + - " -- \u6307\u5b9a\u3057\u305f\u30af\u30e9\u30b9\u306e\u30b9\u30c6\u30c3\u30d7\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u30a4\u30d9\u30f3\u30c8\u3092\u5831\u544a\u3057\u307e\u305b\u3093\n" + - "classpath -- \u30bf\u30fc\u30b2\u30c3\u30c8 VM \u306e\u30af\u30e9\u30b9\u30d1\u30b9\u60c5\u5831\u3092\u51fa\u529b\u3057\u307e\u3059\n" + - "\n" + - "monitor -- \u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u505c\u6b62\u6642\u306b\u6bce\u56de\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\n" + - "monitor -- \u30e2\u30cb\u30bf\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" + - "unmonitor -- \u30e2\u30cb\u30bf\u3092\u524a\u9664\u3057\u307e\u3059\n" + - "read -- \u30b3\u30de\u30f3\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u3001\u5b9f\u884c\u3057\u307e\u3059\n" + - "\n" + - "lock -- \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ed\u30c3\u30af\u60c5\u5831\u3092\u51fa\u529b\u3057\u307e\u3059\n" + - "threadlocks [thread id] -- \u30b9\u30ec\u30c3\u30c9\u306e\u30ed\u30c3\u30af\u60c5\u5831\u3092\u51fa\u529b\u3057\u307e\u3059\n" + - "\n" + - "pop -- \u73fe\u5728\u306e\u30d5\u30ec\u30fc\u30e0\u3092\u542b\u3080\u3059\u3079\u3066\u306e\u30b9\u30bf\u30c3\u30af\u3092\u30dd\u30c3\u30d7\u3057\u307e\u3059\n" + - "reenter -- \u30dd\u30c3\u30d7\u3068\u540c\u3058\u3067\u3059\u304c\u3001\u73fe\u5728\u306e\u30d5\u30ec\u30fc\u30e0\u304c\u518d\u5165\u529b\u3055\u308c\u307e\u3059\n" + - "redefine \n" + - " -- \u30af\u30e9\u30b9\u306e\u30b3\u30fc\u30c9\u3092\u518d\u5b9a\u7fa9\u3057\u307e\u3059\n" + - "\n" + - "disablegc -- \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u6291\u6b62\u3057\u307e\u3059\n" + - "enablegc -- \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u8a31\u53ef\u3057\u307e\u3059\n" + - "\n" + - "!! -- \u6700\u5f8c\u306e\u30b3\u30de\u30f3\u30c9\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\n" + - " -- \u30b3\u30de\u30f3\u30c9\u3092 n \u56de\u7e70\u308a\u8fd4\u3057\u307e\u3059\n" + - "help (or ?) -- \u30b3\u30de\u30f3\u30c9\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" + - "version -- \u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u3092\u51fa\u529b\u3057\u307e\u3059\n" + - "exit (or quit) -- \u30c7\u30d0\u30c3\u30ac\u3092\u7d42\u4e86\u3057\u307e\u3059\n" + - "\n" + - ": \u30d1\u30c3\u30b1\u30fc\u30b8\u4fee\u98fe\u5b50\u3092\u542b\u3080\u5b8c\u5168\u306a\u30af\u30e9\u30b9\u540d\n" + - ": \u5148\u982d\u304b\u672b\u5c3e\u306b\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 ('*') \u306e\u4ed8\u3044\u305f\u30af\u30e9\u30b9\u540d\n" + - ": 'threads' \u30b3\u30de\u30f3\u30c9\u3067\u5831\u544a\u3055\u308c\u308b\u30b9\u30ec\u30c3\u30c9\u756a\u53f7\n" + - ": Java(tm) \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u5f0f\n" + - "\u3082\u3063\u3068\u3082\u4e00\u822c\u7684\u306a\u69cb\u6587\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002\n" + - "\n" + - "user.home \u307e\u305f\u306f user.dir \u4e0b\u306e \"jdb.ini\" \u304b \".jdbrc\" \u306e\n" + - "\u3044\u305a\u308c\u304b\u306b\u8d77\u52d5\u30b3\u30de\u30f3\u30c9\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}, + "** \u30B3\u30DE\u30F3\u30C9\u30FB\u30EA\u30B9\u30C8 **\nconnectors -- \u3053\u306EVM\u5185\u306E\u4F7F\u7528\u53EF\u80FD\u306A\u30B3\u30CD\u30AF\u30BF\u3068\u30C8\u30E9\u30F3\u30B9\u30DD\u30FC\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\nrun [class [args]] -- \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u306E\u5B9F\u884C\u3092\u958B\u59CB\u3057\u307E\u3059\n\nthreads [threadgroup] -- \u30B9\u30EC\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nthread -- \u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B9\u30EC\u30C3\u30C9\u3092\u8A2D\u5B9A\u3057\u307E\u3059\nsuspend [thread id(s)] -- \u30B9\u30EC\u30C3\u30C9\u3092\u4E2D\u65AD\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8: \u3059\u3079\u3066)\nresume [thread id(s)] -- \u30B9\u30EC\u30C3\u30C9\u3092\u518D\u958B\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8: \u3059\u3079\u3066)\nwhere [ | all] -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u30C0\u30F3\u30D7\u3057\u307E\u3059\nwherei [ | all]-- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092pc\u60C5\u5831\u3068\u3068\u3082\u306B\u30C0\u30F3\u30D7\u3057\u307E\u3059\nup [n frames] -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u4E0A\u306B\u79FB\u52D5\u3057\u307E\u3059\ndown [n frames] -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u4E0B\u306B\u79FB\u52D5\u3057\u307E\u3059\nkill -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u30B9\u30EC\u30C3\u30C9\u3092\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3059\ninterrupt -- \u30B9\u30EC\u30C3\u30C9\u3092\u4E2D\u65AD\u3057\u307E\u3059\n\nprint -- \u5F0F\u306E\u5024\u3092\u51FA\u529B\u3057\u307E\u3059\ndump -- \u3059\u3079\u3066\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\neval -- \u5F0F\u3092\u8A55\u4FA1\u3057\u307E\u3059(print\u3068\u540C\u3058)\nset = -- \u65B0\u3057\u3044\u5024\u3092\u30D5\u30A3\u30FC\u30EB\u30C9/\u5909\u6570/\u914D\u5217\u8981\u7D20\u306B\u4EE3\u5165\u3057\u307E\u3059\nlocals -- \u73FE\u5728\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30D5\u30EC\u30FC\u30E0\u5185\u306E\u3059\u3079\u3066\u306E\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092\u51FA\u529B\u3057\u307E\u3059\n\nclasses -- \u73FE\u5728\u65E2\u77E5\u306E\u30AF\u30E9\u30B9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nclass -- \u6307\u5B9A\u3057\u305F\u30AF\u30E9\u30B9\u306E\u8A73\u7D30\u3092\u8868\u793A\u3057\u307E\u3059\nmethods -- \u30AF\u30E9\u30B9\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nfields -- \u30AF\u30E9\u30B9\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\nthreadgroups -- \u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nthreadgroup -- \u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u3092\u8A2D\u5B9A\u3057\u307E\u3059\n\nstop in .[(argument_type,...)]\n -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30E1\u30BD\u30C3\u30C9\u5185\u306B\u8A2D\u5B9A\u3057\u307E\u3059\nstop at : -- \u884C\u306B\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\nclear .[(argument_type,...)]\n -- \u30E1\u30BD\u30C3\u30C9\u5185\u306E\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30AF\u30EA\u30A2\u3057\u307E\u3059\nclear : -- \u884C\u306E\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30AF\u30EA\u30A2\u3057\u307E\u3059\nclear -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\ncatch [uncaught|caught|all] |\n -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u304C\u767A\u751F\u3057\u305F\u3068\u304D\u306B\u30D6\u30EC\u30FC\u30AF\u3057\u307E\u3059\nignore [uncaught|caught|all] |\n -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u306E'catch'\u3092\u53D6\u308A\u6D88\u3057\u307E\u3059\nwatch [access|all] .\n -- \u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u307E\u305F\u306F\u5909\u66F4\u3092\u76E3\u8996\u3057\u307E\u3059\nunwatch [access|all] .\n -- \u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u307E\u305F\u306F\u5909\u66F4\u306E\u76E3\u8996\u3092\u4E2D\u6B62\u3057\u307E\u3059\ntrace [go] methods [thread]\n -- \u30E1\u30BD\u30C3\u30C9\u306E\u5165\u308A\u53E3\u3068\u51FA\u53E3\u3092\u30C8\u30EC\u30FC\u30B9\u3057\u307E\u3059\u3002\n -- 'go'\u304C\u6307\u5B9A\u3055\u308C\u308B\u307E\u3067\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3057\u307E\u3059\ntrace [go] method exit | exits [thread]\n -- \u73FE\u5728\u306E\u30E1\u30BD\u30C3\u30C9\u306E\u51FA\u53E3\u307E\u305F\u306F\u3059\u3079\u3066\u306E\u30E1\u30BD\u30C3\u30C9\u306E\u51FA\u53E3\u3092\u30C8\u30EC\u30FC\u30B9\u3057\u307E\u3059\n -- 'go'\u304C\u6307\u5B9A\u3055\u308C\u308B\u307E\u3067\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3057\u307E\u3059\nuntrace [methods] -- \u30E1\u30BD\u30C3\u30C9\u306E\u958B\u59CB\u307E\u305F\u306F\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9\u3092\u505C\u6B62\u3057\u307E\u3059\nstep -- \u73FE\u5728\u306E\u884C\u3092\u5B9F\u884C\u3057\u307E\u3059\nstep up -- \u73FE\u5728\u306E\u30E1\u30BD\u30C3\u30C9\u304C\u30E1\u30BD\u30C3\u30C9\u306E\u547C\u51FA\u3057\u5143\u306B\u623B\u308B\u307E\u3067\u5B9F\u884C\u3057\u307E\u3059\nstepi -- \u73FE\u5728\u306E\u547D\u4EE4\u3092\u5B9F\u884C\u3057\u307E\u3059\nnext -- 1\u884C\u3092\u30B9\u30C6\u30C3\u30D7\u5B9F\u884C\u3057\u307E\u3059(\u547C\u51FA\u3057\u3092\u30B9\u30C6\u30C3\u30D7\u30AA\u30FC\u30D0\u30FC)\ncont -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u304B\u3089\u5B9F\u884C\u3092\u7D9A\u884C\u3057\u307E\u3059\n\nlist [line number|method] -- \u30BD\u30FC\u30B9\u30FB\u30B3\u30FC\u30C9\u3092\u51FA\u529B\u3057\u307E\u3059\nuse (or sourcepath) [source file path]\n -- \u30BD\u30FC\u30B9\u30FB\u30D1\u30B9\u3092\u8868\u793A\u307E\u305F\u306F\u5909\u66F4\u3057\u307E\u3059\nexclude [, ... | \"none\"]\n -- \u6307\u5B9A\u3057\u305F\u30AF\u30E9\u30B9\u306E\u30B9\u30C6\u30C3\u30D7\u3084\u30E1\u30BD\u30C3\u30C9\u30FB\u30A4\u30D9\u30F3\u30C8\u3092\u5831\u544A\u3057\u307E\u305B\u3093\nclasspath -- \u30BF\u30FC\u30B2\u30C3\u30C8VM\u304B\u3089\u30AF\u30E9\u30B9\u30D1\u30B9\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\n\nmonitor -- \u30D7\u30ED\u30B0\u30E9\u30E0\u304C\u505C\u6B62\u3059\u308B\u305F\u3073\u306B\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u307E\u3059\nmonitor -- \u30E2\u30CB\u30BF\u30FC\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nunmonitor -- \u30E2\u30CB\u30BF\u30FC\u3092\u524A\u9664\u3057\u307E\u3059\nread -- \u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u3063\u3066\u5B9F\u884C\u3057\u307E\u3059\n\nlock -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30ED\u30C3\u30AF\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\nthreadlocks [thread id] -- \u30B9\u30EC\u30C3\u30C9\u306E\u30ED\u30C3\u30AF\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\n\npop -- \u73FE\u5728\u306E\u30D5\u30EC\u30FC\u30E0\u307E\u3067\u306E\u3059\u3079\u3066\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u30DD\u30C3\u30D7\u3057\u307E\u3059\nreenter -- pop\u3068\u540C\u3058\u3067\u3059\u304C\u3001\u73FE\u5728\u306E\u30D5\u30EC\u30FC\u30E0\u304C\u518D\u5165\u529B\u3055\u308C\u307E\u3059\nredefine \n -- \u30AF\u30E9\u30B9\u306E\u30B3\u30FC\u30C9\u3092\u518D\u5B9A\u7FA9\u3057\u307E\u3059\n\ndisablegc -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u6291\u5236\u3057\u307E\u3059\nenablegc -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u8A31\u53EF\u3057\u307E\u3059\n\n!! -- \u6700\u5F8C\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u7E70\u308A\u8FD4\u3057\u307E\u3059\n -- \u30B3\u30DE\u30F3\u30C9\u3092n\u56DE\u7E70\u308A\u8FD4\u3057\u307E\u3059\n# -- \u7834\u68C4\u3057\u307E\u3059(\u64CD\u4F5C\u306A\u3057)\nhelp (\u307E\u305F\u306F?) -- \u30B3\u30DE\u30F3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nversion -- \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\nexit (\u307E\u305F\u306Fquit) -- \u30C7\u30D0\u30C3\u30AC\u3092\u7D42\u4E86\u3057\u307E\u3059\n\n: \u30D1\u30C3\u30B1\u30FC\u30B8\u4FEE\u98FE\u5B50\u3092\u542B\u3080\u5B8C\u5168\u30AF\u30E9\u30B9\u540D\n: \u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306E\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9('*')\u3092\u542B\u3080\u30AF\u30E9\u30B9\u540D\n: 'threads'\u30B3\u30DE\u30F3\u30C9\u3067\u5831\u544A\u3055\u308C\u308B\u30B9\u30EC\u30C3\u30C9\u756A\u53F7\n: Java(TM)\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\u306E\u5F0F\u3002\n\u307B\u3068\u3093\u3069\u306E\u4E00\u822C\u7684\u306A\u69CB\u6587\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n\n\u8D77\u52D5\u30B3\u30DE\u30F3\u30C9\u306F\u3001\"jdb.ini\"\u307E\u305F\u306F\".jdbrc\"\u306B\u914D\u7F6E\u3067\u304D\u307E\u3059\n(user.home\u307E\u305F\u306Fuser.dir\u5185)"}, {"zz usage text", - "\u4f7f\u7528\u6cd5: {0} \n" + -"\n" + - "\u3053\u3053\u3067 options \u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002\n" + - " -help \u3053\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\u3057\u3066\u7d42\u4e86\u3057\u307e\u3059\n" + - " -sourcepath <\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f \"{1}\" \u3067\u533a\u5207\u308a\u307e\u3059>\n" + - " \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u3059\n" + - " -attach
\n" + - " \u6a19\u6e96\u7684\u306a\u30b3\u30cd\u30af\u30bf\u3092\u4f7f\u3063\u3066\u3001\u6307\u5b9a\u3057\u305f\u30a2\u30c9\u30ec\u30b9\u3067\u5b9f\u884c\u4e2d\u306e VM \u306b\u63a5\u7d9a\u3057\u307e\u3059\n" + - " -listen
\n" + - " \u6a19\u6e96\u7684\u306a\u30b3\u30cd\u30af\u30bf\u3092\u4f7f\u3063\u3066\u3001\u6307\u5b9a\u3057\u305f\u30a2\u30c9\u30ec\u30b9\u3067\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u5b9f\u884c\u4e2d\u306e VM \u3092\u5f85\u6a5f\u3057\u307e\u3059\n" + - " -listenany\n" + - " \u6a19\u6e96\u7684\u306a\u30b3\u30cd\u30af\u30bf\u3092\u4f7f\u3063\u3066\u3001\u4f7f\u7528\u53ef\u80fd\u306a\u4efb\u610f\u306e\u30a2\u30c9\u30ec\u30b9\u3067\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u5b9f\u884c\u4e2d\u306e VM \u3092\u5f85\u6a5f\u3057\u307e\u3059\n" + - " -launch\n" + - " ''run'' \u30b3\u30de\u30f3\u30c9\u3092\u5f85\u305f\u305a\u306b VM \u3092\u305f\u3060\u3061\u306b\u8d77\u52d5\u3057\u307e\u3059\n" + - " -listconnectors \u3053\u306e VM \u5185\u3067\u4f7f\u7528\u53ef\u80fd\u306a\u30b3\u30cd\u30af\u30bf\u3092\u30ea\u30b9\u30c8\u8868\u793a\u3057\u307e\u3059\n" + - " -connect :=,...\n" + - " \u540d\u524d\u4ed8\u304d\u30b3\u30cd\u30af\u30bf\u3068\u4e00\u89a7\u8868\u793a\u3055\u308c\u305f\u5f15\u6570\u5024\u3092\u4f7f\u7528\u3057\u3066\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u306b\u63a5\u7d9a\u3057\u307e\u3059\n" + - " -dbgtrace [flags] {0} \u3092\u30c7\u30d0\u30c3\u30b0\u3059\u308b\u305f\u3081\u306e\u51fa\u529b\u60c5\u5831\n" + - " -tclient Hotspot(tm) Performance Engine (\u30af\u30e9\u30a4\u30a2\u30f3\u30c8) \u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u307e\u3059\n" + - " -tserver Hotspot(tm) Performance Engine (\u30b5\u30fc\u30d0) \u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u307e\u3059\n" + - "\n" + - "\u30c7\u30d0\u30c3\u30b0\u30d7\u30ed\u30bb\u30b9\u306b\u8ee2\u9001\u3055\u308c\u305f\u30aa\u30d7\u30b7\u30e7\u30f3:\n" + - " -v -verbose[:class|gc|jni]\n" + - " \u5197\u9577\u30e2\u30fc\u30c9\u3092\u30aa\u30f3\u306b\u3057\u307e\u3059\u3002\n" + - " -D= \u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\n" + - " -classpath <\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f \"{1}\" \u3067\u533a\u5207\u308a\u307e\u3059>\n" + - " \u30af\u30e9\u30b9\u306e\u691c\u7d22\u5148\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\u3002\n" + - " -X
\n \u6A19\u6E96\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u6307\u5B9A\u3055\u308C\u305F\u30A2\u30C9\u30EC\u30B9\u3067\u5B9F\u884C\u4E2D\u306EVM\u306B\u63A5\u7D9A\u3059\u308B\n -listen
\n \u6A19\u6E96\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u6307\u5B9A\u3055\u308C\u305F\u30A2\u30C9\u30EC\u30B9\u3067\u5B9F\u884C\u4E2D\u306EVM\u306E\u63A5\u7D9A\u3092\u5F85\u6A5F\u3059\u308B\n -listenany\n \u6A19\u6E96\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u4F7F\u7528\u53EF\u80FD\u306A\u4EFB\u610F\u306E\u30A2\u30C9\u30EC\u30B9\u3067\u5B9F\u884C\u4E2D\u306EVM\u306E\u63A5\u7D9A\u3092\u5F85\u6A5F\u3059\u308B\n -launch\n ''run''\u30B3\u30DE\u30F3\u30C9\u3092\u5F85\u6A5F\u305B\u305A\u306BVM\u3092\u5373\u6642\u306B\u8D77\u52D5\u3059\u308B\n -listconnectors \u3053\u306EVM\u3067\u4F7F\u7528\u53EF\u80FD\u306A\u30B3\u30CD\u30AF\u30BF\u3092\u30EA\u30B9\u30C8\u3059\u308B\n -connect :=,...\n \u6307\u5B9A\u3055\u308C\u305F\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u30EA\u30B9\u30C8\u3055\u308C\u305F\u5F15\u6570\u5024\u3067\u30BF\u30FC\u30B2\u30C3\u30C8VM\u306B\u63A5\u7D9A\u3059\u308B\n -dbgtrace [flags] {0}\u306E\u30C7\u30D0\u30C3\u30B0\u306E\u60C5\u5831\u3092\u51FA\u529B\u3059\u308B\n -tclient \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092HotSpot(TM) Client Compiler\u3067\u5B9F\u884C\u3059\u308B\n -tserver \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092HotSpot(TM) Server Compiler\u3067\u5B9F\u884C\u3059\u308B\n\n\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u30C7\u30D0\u30C3\u30B0\u3059\u308B\u30D7\u30ED\u30BB\u30B9\u306B\u8EE2\u9001\u3055\u308C\u307E\u3059:\n -v -verbose[:class|gc|jni]\n \u8A73\u7D30\u30E2\u30FC\u30C9\u3092\u30AA\u30F3\u306B\u3059\u308B\n -D= \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A2D\u5B9A\u3059\u308B\n -classpath \n \u30AF\u30E9\u30B9\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u30EA\u30B9\u30C8\u3059\u308B\n -X
\n \u4F7F\u7528\u6807\u51C6\u8FDE\u63A5\u5668\u9644\u52A0\u5230\u6307\u5B9A\u5730\u5740\u5904\u6B63\u5728\u8FD0\u884C\u7684 VM\n -listen
\n \u7B49\u5F85\u6B63\u5728\u8FD0\u884C\u7684 VM \u4F7F\u7528\u6807\u51C6\u8FDE\u63A5\u5668\u5728\u6307\u5B9A\u5730\u5740\u5904\u8FDE\u63A5\n -listenany\n \u7B49\u5F85\u6B63\u5728\u8FD0\u884C\u7684 VM \u4F7F\u7528\u6807\u51C6\u8FDE\u63A5\u5668\u5728\u4EFB\u4F55\u53EF\u7528\u5730\u5740\u5904\u8FDE\u63A5\n -launch\n \u7ACB\u5373\u542F\u52A8 VM \u800C\u4E0D\u662F\u7B49\u5F85 ''run'' \u547D\u4EE4\n -listconnectors \u5217\u51FA\u6B64 VM \u4E2D\u7684\u53EF\u7528\u8FDE\u63A5\u5668\n -connect :=,...\n \u4F7F\u7528\u6240\u5217\u53C2\u6570\u503C\u901A\u8FC7\u6307\u5B9A\u7684\u8FDE\u63A5\u5668\u8FDE\u63A5\u5230\u76EE\u6807 VM\n -dbgtrace [flags] \u8F93\u51FA\u4FE1\u606F\u4F9B\u8C03\u8BD5{0}\n -tclient \u5728 HotSpot(TM) \u5BA2\u6237\u673A\u7F16\u8BD1\u5668\u4E2D\u8FD0\u884C\u5E94\u7528\u7A0B\u5E8F\n -tserver \u5728 HotSpot(TM) \u670D\u52A1\u5668\u7F16\u8BD1\u5668\u4E2D\u8FD0\u884C\u5E94\u7528\u7A0B\u5E8F\n\n\u8F6C\u53D1\u5230\u88AB\u8C03\u8BD5\u8FDB\u7A0B\u7684\u9009\u9879:\n -v -verbose[:class|gc|jni]\n \u542F\u7528\u8BE6\u7EC6\u6A21\u5F0F\n -D= \u8BBE\u7F6E\u7CFB\u7EDF\u5C5E\u6027\n -classpath <\u7531 \"{1}\" \u5206\u9694\u7684\u76EE\u5F55>\n \u5217\u51FA\u8981\u5728\u5176\u4E2D\u67E5\u627E\u7C7B\u7684\u76EE\u5F55\n -X
read link permission. Allows the target of a * symbolic link - * to be read by invoking the {@link java.nio.file.Path#readSymbolicLink + * to be read by invoking the {@link java.nio.file.Files#readSymbolicLink * readSymbolicLink } method. * *

diff --git a/jdk/src/share/classes/java/io/PrintStream.java b/jdk/src/share/classes/java/io/PrintStream.java index 9ed3ff6f910..f29b5407abf 100644 --- a/jdk/src/share/classes/java/io/PrintStream.java +++ b/jdk/src/share/classes/java/io/PrintStream.java @@ -70,11 +70,11 @@ public class PrintStream extends FilterOutputStream private OutputStreamWriter charOut; /** - * nonNull is explicitly declared here so as not to create an extra - * dependency on java.util.Objects.nonNull. PrintStream is loaded + * requireNonNull is explicitly declared here so as not to create an extra + * dependency on java.util.Objects.requireNonNull. PrintStream is loaded * early during system initialization. */ - private static T nonNull(T obj, String message) { + private static T requireNonNull(T obj, String message) { if (obj == null) throw new NullPointerException(message); return obj; @@ -88,7 +88,7 @@ public class PrintStream extends FilterOutputStream private static Charset toCharset(String csn) throws UnsupportedEncodingException { - nonNull(csn, "charsetName"); + requireNonNull(csn, "charsetName"); try { return Charset.forName(csn); } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) { @@ -148,7 +148,7 @@ public class PrintStream extends FilterOutputStream * @see java.io.PrintWriter#PrintWriter(java.io.OutputStream, boolean) */ public PrintStream(OutputStream out, boolean autoFlush) { - this(autoFlush, nonNull(out, "Null output stream")); + this(autoFlush, requireNonNull(out, "Null output stream")); } /** @@ -173,7 +173,7 @@ public class PrintStream extends FilterOutputStream throws UnsupportedEncodingException { this(autoFlush, - nonNull(out, "Null output stream"), + requireNonNull(out, "Null output stream"), toCharset(encoding)); } diff --git a/jdk/src/share/classes/java/io/PrintWriter.java b/jdk/src/share/classes/java/io/PrintWriter.java index 16044567065..0e9ea8f5688 100644 --- a/jdk/src/share/classes/java/io/PrintWriter.java +++ b/jdk/src/share/classes/java/io/PrintWriter.java @@ -82,7 +82,7 @@ public class PrintWriter extends Writer { private static Charset toCharset(String csn) throws UnsupportedEncodingException { - Objects.nonNull(csn, "charsetName"); + Objects.requireNonNull(csn, "charsetName"); try { return Charset.forName(csn); } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) { diff --git a/jdk/src/share/classes/java/io/SerialCallbackContext.java b/jdk/src/share/classes/java/io/SerialCallbackContext.java index 90d022e53ea..f62bdbf9a3e 100644 --- a/jdk/src/share/classes/java/io/SerialCallbackContext.java +++ b/jdk/src/share/classes/java/io/SerialCallbackContext.java @@ -54,5 +54,3 @@ thread = null; } } - - diff --git a/jdk/src/share/classes/java/lang/StackTraceElement.java b/jdk/src/share/classes/java/lang/StackTraceElement.java index b95587d7185..3bd8ed433c0 100644 --- a/jdk/src/share/classes/java/lang/StackTraceElement.java +++ b/jdk/src/share/classes/java/lang/StackTraceElement.java @@ -68,8 +68,8 @@ public final class StackTraceElement implements java.io.Serializable { */ public StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber) { - this.declaringClass = Objects.nonNull(declaringClass, "Declaring class is null"); - this.methodName = Objects.nonNull(methodName, "Method name is null"); + this.declaringClass = Objects.requireNonNull(declaringClass, "Declaring class is null"); + this.methodName = Objects.requireNonNull(methodName, "Method name is null"); this.fileName = fileName; this.lineNumber = lineNumber; } diff --git a/jdk/src/share/classes/java/lang/SuppressWarnings.java b/jdk/src/share/classes/java/lang/SuppressWarnings.java index 6989c4023dd..babb060396a 100644 --- a/jdk/src/share/classes/java/lang/SuppressWarnings.java +++ b/jdk/src/share/classes/java/lang/SuppressWarnings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2011, 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 @@ -44,7 +44,7 @@ import static java.lang.annotation.ElementType.*; * @since 1.5 * @author Josh Bloch */ -@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, TYPE_PARAMETER}) +@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) @Retention(RetentionPolicy.SOURCE) public @interface SuppressWarnings { /** diff --git a/jdk/src/share/classes/java/lang/Thread.java b/jdk/src/share/classes/java/lang/Thread.java index 3e258e6cdf0..d35e082b844 100644 --- a/jdk/src/share/classes/java/lang/Thread.java +++ b/jdk/src/share/classes/java/lang/Thread.java @@ -690,7 +690,7 @@ class Thread implements Runnable { /* Notify the group that this thread is about to be started * so that it can be added to the group's list of threads * and the group's unstarted count can be decremented. */ - group.threadStarting(this); + group.add(this); boolean started = false; try { diff --git a/jdk/src/share/classes/java/lang/ThreadGroup.java b/jdk/src/share/classes/java/lang/ThreadGroup.java index 945dfe20175..e27f17550a0 100644 --- a/jdk/src/share/classes/java/lang/ThreadGroup.java +++ b/jdk/src/share/classes/java/lang/ThreadGroup.java @@ -867,21 +867,6 @@ class ThreadGroup implements Thread.UncaughtExceptionHandler { } } - /** - * Notifies the group that the thread {@code t} is about to be - * started and adds the thread to this thread group. - * - * The thread is now a fully fledged member of the group, even though - * it hasn't been started yet. It will prevent the group from being - * destroyed so the unstarted Threads count is decremented. - */ - void threadStarting(Thread t) { - synchronized (this) { - add(t); - nUnstartedThreads--; - } - } - /** * Adds the specified thread to this thread group. * @@ -910,6 +895,12 @@ class ThreadGroup implements Thread.UncaughtExceptionHandler { // This is done last so it doesn't matter in case the // thread is killed nthreads++; + + // The thread is now a fully fledged member of the group, even + // though it may, or may not, have been started yet. It will prevent + // the group from being destroyed so the unstarted Threads count is + // decremented. + nUnstartedThreads--; } } diff --git a/jdk/src/share/classes/java/lang/annotation/ElementType.java b/jdk/src/share/classes/java/lang/annotation/ElementType.java index 3ca2c7a4372..917054991dd 100644 --- a/jdk/src/share/classes/java/lang/annotation/ElementType.java +++ b/jdk/src/share/classes/java/lang/annotation/ElementType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -40,12 +40,6 @@ public enum ElementType { /** Class, interface (including annotation type), or enum declaration */ TYPE, - /** Uses of a type */ - TYPE_USE, - - /** type parameters */ - TYPE_PARAMETER, - /** Field declaration (includes enum constants) */ FIELD, diff --git a/jdk/src/share/classes/java/math/BigDecimal.java b/jdk/src/share/classes/java/math/BigDecimal.java index 578c2c1159c..0d695f3bda5 100644 --- a/jdk/src/share/classes/java/math/BigDecimal.java +++ b/jdk/src/share/classes/java/math/BigDecimal.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, 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 @@ -121,8 +121,8 @@ import static java.math.BigInteger.LONG_MASK; * scale for each operation is listed in the table below. * * - * + * * * * @@ -661,25 +661,25 @@ public class BigDecimal extends Number implements Comparable { *
{@code .} FractionPart *
IntegerPart *

- *

IntegerPart: - *
Digits + *
IntegerPart: + *
Digits *

- *

FractionPart: - *
Digits + *
FractionPart: + *
Digits *

- *

Exponent: - *
ExponentIndicator SignedInteger + *
Exponent: + *
ExponentIndicator SignedInteger *

*

ExponentIndicator: *
{@code e} *
{@code E} *

- *

SignedInteger: - *
Signopt Digits + *
SignedInteger: + *
Signopt Digits *

- *

Digits: - *
Digit - *
Digits Digit + *
Digits: + *
Digit + *
Digits Digit *

*

Digit: *
any character for which {@link Character#isDigit} diff --git a/jdk/src/share/classes/java/math/RoundingMode.java b/jdk/src/share/classes/java/math/RoundingMode.java index 91c25a73510..69994a4c316 100644 --- a/jdk/src/share/classes/java/math/RoundingMode.java +++ b/jdk/src/share/classes/java/math/RoundingMode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -53,7 +53,7 @@ package java.math; * *

*

Preferred Scales for Results of Arithmetic Operations - *

Preferred Scales for Results of Arithmetic Operations + *
OperationPreferred Scale of Result
Addmax(addend.scale(), augend.scale())
Subtractmax(minuend.scale(), subtrahend.scale())
- * + * * * diff --git a/jdk/src/share/classes/java/nio/channels/FileChannel.java b/jdk/src/share/classes/java/nio/channels/FileChannel.java index 8dff4bfc316..80961dd3f8e 100644 --- a/jdk/src/share/classes/java/nio/channels/FileChannel.java +++ b/jdk/src/share/classes/java/nio/channels/FileChannel.java @@ -248,7 +248,7 @@ public abstract class FileChannel * FileSystemProvider#newFileChannel newFileChannel} method on the * provider that created the {@code Path}. * - * @param file + * @param path * The path of the file to open or create * @param options * Options specifying how the file is opened @@ -261,7 +261,7 @@ public abstract class FileChannel * @throws IllegalArgumentException * If the set contains an invalid combination of options * @throws UnsupportedOperationException - * If the {@code file} is associated with a provider that does not + * If the {@code path} is associated with a provider that does not * support creating file channels, or an unsupported open option is * specified, or the array contains an attribute that cannot be set * atomically when creating the file @@ -278,13 +278,13 @@ public abstract class FileChannel * * @since 1.7 */ - public static FileChannel open(Path file, + public static FileChannel open(Path path, Set options, FileAttribute... attrs) throws IOException { - FileSystemProvider provider = file.getFileSystem().provider(); - return provider.newFileChannel(file, options, attrs); + FileSystemProvider provider = path.getFileSystem().provider(); + return provider.newFileChannel(path, options, attrs); } private static final FileAttribute[] NO_ATTRIBUTES = new FileAttribute[0]; @@ -295,10 +295,12 @@ public abstract class FileChannel *

An invocation of this method behaves in exactly the same way as the * invocation *

-     *     fc.{@link #open(Path,Set,FileAttribute[]) open}(file, options, new FileAttribute<?>[0]);
+     *     fc.{@link #open(Path,Set,FileAttribute[]) open}(file, opts, new FileAttribute<?>[0]);
      * 
+ * where {@code opts} is a set of the options specified in the {@code + * options} array. * - * @param file + * @param path * The path of the file to open or create * @param options * Options specifying how the file is opened @@ -308,7 +310,7 @@ public abstract class FileChannel * @throws IllegalArgumentException * If the set contains an invalid combination of options * @throws UnsupportedOperationException - * If the {@code file} is associated with a provider that does not + * If the {@code path} is associated with a provider that does not * support creating file channels, or an unsupported open option is * specified * @throws IOException @@ -324,12 +326,12 @@ public abstract class FileChannel * * @since 1.7 */ - public static FileChannel open(Path file, OpenOption... options) + public static FileChannel open(Path path, OpenOption... options) throws IOException { Set set = new HashSet(options.length); Collections.addAll(set, options); - return open(file, set, NO_ATTRIBUTES); + return open(path, set, NO_ATTRIBUTES); } // -- Channel operations -- diff --git a/jdk/src/share/classes/java/nio/channels/SeekableByteChannel.java b/jdk/src/share/classes/java/nio/channels/SeekableByteChannel.java index 4e75723b261..c2378546370 100644 --- a/jdk/src/share/classes/java/nio/channels/SeekableByteChannel.java +++ b/jdk/src/share/classes/java/nio/channels/SeekableByteChannel.java @@ -47,7 +47,7 @@ import java.io.IOException; * so that method invocations on the implementation class can be chained. * * @since 1.7 - * @see java.nio.file.Path#newByteChannel + * @see java.nio.file.Files#newByteChannel */ public interface SeekableByteChannel diff --git a/jdk/src/share/classes/java/nio/file/AccessMode.java b/jdk/src/share/classes/java/nio/file/AccessMode.java index c040bec01c8..43b06c25a64 100644 --- a/jdk/src/share/classes/java/nio/file/AccessMode.java +++ b/jdk/src/share/classes/java/nio/file/AccessMode.java @@ -29,8 +29,6 @@ package java.nio.file; * Defines access modes used to test the accessibility of a file. * * @since 1.7 - * - * @see Path#checkAccess */ public enum AccessMode { diff --git a/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java b/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java new file mode 100644 index 00000000000..70ca6ee50ad --- /dev/null +++ b/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2011, 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. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * 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. + */ + +package java.nio.file; + +import java.nio.file.attribute.*; +import java.io.InputStream; +import java.io.IOException; + +/** + * Helper class to support copying or moving files when the source and target + * are associated with different providers. + */ + +class CopyMoveHelper { + private CopyMoveHelper() { } + + /** + * Parses the arguments for a file copy operation. + */ + private static class CopyOptions { + boolean replaceExisting = false; + boolean copyAttributes = false; + boolean followLinks = true; + + private CopyOptions() { } + + static CopyOptions parse(CopyOption... options) { + CopyOptions result = new CopyOptions(); + for (CopyOption option: options) { + if (option == StandardCopyOption.REPLACE_EXISTING) { + result.replaceExisting = true; + continue; + } + if (option == LinkOption.NOFOLLOW_LINKS) { + result.followLinks = false; + continue; + } + if (option == StandardCopyOption.COPY_ATTRIBUTES) { + result.copyAttributes = true; + continue; + } + if (option == null) + throw new NullPointerException(); + throw new UnsupportedOperationException("'" + option + + "' is not a recognized copy option"); + } + return result; + } + } + + /** + * Converts the given array of options for moving a file to options suitable + * for copying the file when a move is implemented as copy + delete. + */ + private static CopyOption[] convertMoveToCopyOptions(CopyOption... options) + throws AtomicMoveNotSupportedException + { + int len = options.length; + CopyOption[] newOptions = new CopyOption[len+2]; + for (int i=0; i Objects of this type may be used with the {@link Path#copyTo copyTo} and - * {@link Path#moveTo moveTo} methods to configure how a file is copied or moved. + *

Objects of this type may be used with the {@link + * Files#copy(Path,Path,CopyOption[]) Files.copy(Path,Path,CopyOption...)}, + * {@link Files#copy(java.io.InputStream,Path,CopyOption[]) + * Files.copy(InputStream,Path,CopyOption...)} and {@link Files#move + * Files.move(Path,Path,CopyOption...)} methods to configure how a file is + * copied or moved. * *

The {@link StandardCopyOption} enumeration type defines the * standard options. diff --git a/jdk/src/share/classes/java/nio/file/DirectoryIteratorException.java b/jdk/src/share/classes/java/nio/file/DirectoryIteratorException.java index 729c84a77cd..a74369c5a22 100644 --- a/jdk/src/share/classes/java/nio/file/DirectoryIteratorException.java +++ b/jdk/src/share/classes/java/nio/file/DirectoryIteratorException.java @@ -56,7 +56,7 @@ public final class DirectoryIteratorException * if the cause is {@code null} */ public DirectoryIteratorException(IOException cause) { - super(Objects.nonNull(cause)); + super(Objects.requireNonNull(cause)); } /** diff --git a/jdk/src/share/classes/java/nio/file/DirectoryStream.java b/jdk/src/share/classes/java/nio/file/DirectoryStream.java index 5601c9d99a8..d34f8dbd450 100644 --- a/jdk/src/share/classes/java/nio/file/DirectoryStream.java +++ b/jdk/src/share/classes/java/nio/file/DirectoryStream.java @@ -54,7 +54,7 @@ import java.io.IOException; * construct to ensure that the stream is closed: *

  *   Path dir = ...
- *   try (DirectoryStream<Path> stream = dir.newDirectoryStream()) {
+ *   try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
  *       for (Path entry: stream) {
  *           ...
  *       }
@@ -97,8 +97,8 @@ import java.io.IOException;
  * both the for-each and try-with-resources constructs.
  * 
  *   List<Path> listSourceFiles(Path dir) throws IOException {
- *       List<Path> result = new ArrayList<Path>();
- *       try (DirectoryStream<Path> stream = dir.newDirectoryStream("*.{c,h,cpp,hpp,java}")) {
+ *       List<Path> result = new ArrayList<>();
+ *       try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.{c,h,cpp,hpp,java}")) {
  *           for (Path entry: stream) {
  *               result.add(entry);
  *           }
@@ -113,7 +113,7 @@ import java.io.IOException;
  *
  * @since 1.7
  *
- * @see Path#newDirectoryStream
+ * @see Files#newDirectoryStream(Path)
  */
 
 public interface DirectoryStream
@@ -122,9 +122,9 @@ public interface DirectoryStream
     /**
      * An interface that is implemented by objects that decide if a directory
      * entry should be accepted or filtered. A {@code Filter} is passed as the
-     * parameter to the {@link Path#newDirectoryStream(DirectoryStream.Filter)
-     * newDirectoryStream} method when opening a directory to iterate over the
-     * entries in the directory.
+     * parameter to the {@link Files#newDirectoryStream(Path,DirectoryStream.Filter)}
+     * method when opening a directory to iterate over the entries in the
+     * directory.
      *
      * @param        the type of the directory entry
      *
diff --git a/jdk/src/share/classes/java/nio/file/FileRef.java b/jdk/src/share/classes/java/nio/file/FileRef.java
deleted file mode 100644
index fea3b7c3dfe..00000000000
--- a/jdk/src/share/classes/java/nio/file/FileRef.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright (c) 2007, 2009, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-package java.nio.file;
-
-import java.nio.file.attribute.*;
-import java.util.Map;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.IOException;
-
-/**
- * A reference to a file.
- *
- * 

A {@code FileRef} is an object that locates a file and defines methods to - * open the file for reading or writing. It also provides access to associated - * metadata or file attributes. - * - * @since 1.7 - * @see java.nio.file.attribute.Attributes - * @see java.io.File#toPath - */ - -public interface FileRef { - - /** - * Opens the file referenced by this object, returning an input stream to - * read from the file. The stream will not be buffered, and is not required - * to support the {@link InputStream#mark mark} or {@link InputStream#reset - * reset} methods. The stream will be safe for access by multiple concurrent - * threads. Reading commences at the beginning of the file. - * - *

The {@code options} parameter determines how the file is opened. - * If no options are present then it is equivalent to opening the file with - * the {@link StandardOpenOption#READ READ} option. In addition to the {@code - * READ} option, an implementation may also support additional implementation - * specific options. - * - * @return an input stream to read bytes from the file - * - * @throws IllegalArgumentException - * if an invalid combination of options is specified - * @throws UnsupportedOperationException - * if an unsupported option is specified - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * method is invoked to check read access to the file. - */ - InputStream newInputStream(OpenOption... options) throws IOException; - - /** - * Opens or creates the file located by this object for writing, returning - * an output stream to write bytes to the file. - * - *

The {@code options} parameter determines how the file is opened. - * If no options are present then this method creates a new file for writing - * or truncates an existing file. In addition to the {@link StandardOpenOption - * standard} options, an implementation may also support additional - * implementation specific options. - * - *

The resulting stream will not be buffered. The stream will be safe - * for access by multiple concurrent threads. - * - * @param options - * options specifying how the file is opened - * - * @return a new output stream - * - * @throws IllegalArgumentException - * if {@code options} contains an invalid combination of options - * @throws UnsupportedOperationException - * if an unsupported option is specified - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkWrite(String) checkWrite} - * method is invoked to check write access to the file. - */ - OutputStream newOutputStream(OpenOption... options) throws IOException; - - /** - * Returns a file attribute view of a given type. - * - *

A file attribute view provides a read-only or updatable view of a - * set of file attributes. This method is intended to be used where the file - * attribute view defines type-safe methods to read or update the file - * attributes. The {@code type} parameter is the type of the attribute view - * required and the method returns an instance of that type if supported. - * The {@link BasicFileAttributeView} type supports access to the basic - * attributes of a file. Invoking this method to select a file attribute - * view of that type will always return an instance of that class. - * - *

The {@code options} array may be used to indicate how symbolic links - * are handled by the resulting file attribute view for the case that the - * file is a symbolic link. By default, symbolic links are followed. If the - * option {@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} is present then - * symbolic links are not followed. This option is ignored by implementations - * that do not support symbolic links. - * - * @param type - * the {@code Class} object corresponding to the file attribute view - * @param options - * options indicating how symbolic links are handled - * - * @return a file attribute view of the specified type, or {@code null} if - * the attribute view type is not available - * - * @throws UnsupportedOperationException - * If options contains an unsupported option. This exception is - * specified to allow the {@code LinkOption} enum be extended - * in future releases. - * - * @see Attributes#readBasicFileAttributes - */ - V getFileAttributeView(Class type, - LinkOption... options); - - /** - * Sets the value of a file attribute. - * - *

The {@code attribute} parameter identifies the attribute to be set - * and takes the form: - *

- * [view-name:]attribute-name - *
- * where square brackets [...] delineate an optional component and the - * character {@code ':'} stands for itself. - * - *

view-name is the {@link FileAttributeView#name name} of a {@link - * FileAttributeView} that identifies a set of file attributes. If not - * specified then it defaults to {@code "basic"}, the name of the file - * attribute view that identifies the basic set of file attributes common to - * many file systems. attribute-name is the name of the attribute - * within the set. - * - *

Usage Example: - * Suppose we want to set the DOS "hidden" attribute: - *

-     *    file.setAttribute("dos:hidden", true);
-     * 
- * - * @param attribute - * the attribute to set - * @param value - * the attribute value - * @param options - * options indicating how symbolic links are handled - * - * @throws UnsupportedOperationException - * if the attribute view is not available or it does not support - * updating the attribute - * @throws IllegalArgumentException - * if the attribute value is of the correct type but has an - * inappropriate value - * @throws ClassCastException - * If the attribute value is not of the expected type or is a - * collection containing elements that are not of the expected - * type - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, its {@link SecurityManager#checkWrite(String) checkWrite} - * method denies write access to the file. If this method is invoked - * to set security sensitive attributes then the security manager - * may be invoked to check for additional permissions. - */ - void setAttribute(String attribute, Object value, LinkOption... options) - throws IOException; - - /** - * Reads the value of a file attribute. - * - *

The {@code attribute} parameter identifies the attribute to be read - * and takes the form: - *

- * [view-name:]attribute-name - *
- * where square brackets [...] delineate an optional component and the - * character {@code ':'} stands for itself. - * - *

view-name is the {@link FileAttributeView#name name} of a {@link - * FileAttributeView} that identifies a set of file attributes. If not - * specified then it defaults to {@code "basic"}, the name of the file - * attribute view that identifies the basic set of file attributes common to - * many file systems. attribute-name is the name of the attribute. - * - *

The {@code options} array may be used to indicate how symbolic links - * are handled for the case that the file is a symbolic link. By default, - * symbolic links are followed and the file attribute of the final target - * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS - * NOFOLLOW_LINKS} is present then symbolic links are not followed and so - * the method returns the file attribute of the symbolic link. - * - *

Usage Example: - * Suppose we require the user ID of the file owner on a system that - * supports a "{@code unix}" view: - *

-     *    int uid = (Integer)file.getAttribute("unix:uid");
-     * 
- * - * @param attribute - * the attribute to read - * @param options - * options indicating how symbolic links are handled - * @return the attribute value or {@code null} if the attribute view - * is not available or it does not support reading the attribute - * - * reading the attribute - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, its {@link SecurityManager#checkRead(String) checkRead} - * method denies read access to the file. If this method is invoked - * to read security sensitive attributes then the security manager - * may be invoked to check for additional permissions. - */ - Object getAttribute(String attribute, LinkOption... options) throws IOException; - - /** - * Reads a set of file attributes as a bulk operation. - * - *

The {@code attributes} parameter identifies the attributes to be read - * and takes the form: - *

- * [view-name:]attribute-list - *
- * where square brackets [...] delineate an optional component and the - * character {@code ':'} stands for itself. - * - *

view-name is the {@link FileAttributeView#name name} of a {@link - * FileAttributeView} that identifies a set of file attributes. If not - * specified then it defaults to {@code "basic"}, the name of the file - * attribute view that identifies the basic set of file attributes common to - * many file systems. - * - *

The attribute-list component is a comma separated list of - * zero or more names of attributes to read. If the list contains the value - * {@code "*"} then all attributes are read. Attributes that are not supported - * are ignored and will not be present in the returned map. It is - * implementation specific if all attributes are read as an atomic operation - * with respect to other file system operations. - * - *

The following examples demonstrate possible values for the {@code - * attributes} parameter: - * - *

- *

Summary of Rounding Operations Under Different Rounding Modes

Summary of Rounding Operations Under Different Rounding Modes
Result of rounding input to one digit with the given * rounding mode
- * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
{@code "*"} Read all {@link BasicFileAttributes basic-file-attributes}.
{@code "size,lastModifiedTime,lastAccessTime"} Reads the file size, last modified time, and last access time - * attributes.
{@code "posix:*"} Read all {@link PosixFileAttributes POSIX-file-attributes}..
{@code "posix:permissions,owner,size"} Reads the POSX file permissions, owner, and file size.
- *

- * - *

The {@code options} array may be used to indicate how symbolic links - * are handled for the case that the file is a symbolic link. By default, - * symbolic links are followed and the file attribute of the final target - * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS - * NOFOLLOW_LINKS} is present then symbolic links are not followed and so - * the method returns the file attribute of the symbolic link. - * - * @param attributes - * The attributes to read - * @param options - * Options indicating how symbolic links are handled - * - * @return A map of the attributes returned; may be empty. The map's keys - * are the attribute names, its values are the attribute values - * - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, its {@link SecurityManager#checkRead(String) checkRead} - * method denies read access to the file. If this method is invoked - * to read security sensitive attributes then the security manager - * may be invoke to check for additional permissions. - */ - Map readAttributes(String attributes, LinkOption... options) - throws IOException; -} diff --git a/jdk/src/share/classes/java/nio/file/FileStore.java b/jdk/src/share/classes/java/nio/file/FileStore.java index 4a79cccdff5..4284a8ad5e9 100644 --- a/jdk/src/share/classes/java/nio/file/FileStore.java +++ b/jdk/src/share/classes/java/nio/file/FileStore.java @@ -32,16 +32,13 @@ import java.io.IOException; * Storage for files. A {@code FileStore} represents a storage pool, device, * partition, volume, concrete file system or other implementation specific means * of file storage. The {@code FileStore} for where a file is stored is obtained - * by invoking the {@link Path#getFileStore getFileStore} method, or all file + * by invoking the {@link Files#getFileStore getFileStore} method, or all file * stores can be enumerated by invoking the {@link FileSystem#getFileStores * getFileStores} method. * *

In addition to the methods defined by this class, a file store may support * one or more {@link FileStoreAttributeView FileStoreAttributeView} classes * that provide a read-only or updatable view of a set of file store attributes. - * File stores associated with the default provider support the {@link - * FileStoreSpaceAttributeView} to read the space related attributes of the - * file store. * * @since 1.7 */ @@ -86,6 +83,51 @@ public abstract class FileStore { */ public abstract boolean isReadOnly(); + /** + * Returns the size, in bytes, of the file store. + * + * @return the size of the file store, in bytes + * + * @throws IOException + * if an I/O error occurs + */ + public abstract long getTotalSpace() throws IOException; + + /** + * Returns the number of bytes available to this Java virtual machine on the + * file store. + * + *

The returned number of available bytes is a hint, but not a + * guarantee, that it is possible to use most or any of these bytes. The + * number of usable bytes is most likely to be accurate immediately + * after the space attributes are obtained. It is likely to be made inaccurate + * by any external I/O operations including those made on the system outside + * of this Java virtual machine. + * + * @return the number of bytes available + * + * @throws IOException + * if an I/O error occurs + */ + public abstract long getUsableSpace() throws IOException; + + /** + * Returns the number of unallocated bytes in the file store. + * + *

The returned number of unallocated bytes is a hint, but not a + * guarantee, that it is possible to use most or any of these bytes. The + * number of unallocated bytes is most likely to be accurate immediately + * after the space attributes are obtained. It is likely to be + * made inaccurate by any external I/O operations including those made on + * the system outside of this virtual machine. + * + * @return the number of unallocated bytes + * + * @throws IOException + * if an I/O error occurs + */ + public abstract long getUnallocatedSpace() throws IOException; + /** * Tells whether or not this file store supports the file attributes * identified by the given file attribute view. @@ -131,12 +173,6 @@ public abstract class FileStore { * The {@code type} parameter is the type of the attribute view required and * the method returns an instance of that type if supported. * - *

For {@code FileStore} objects created by the default provider, then - * the file stores support the {@link FileStoreSpaceAttributeView} that - * provides access to space attributes. In that case invoking this method - * with a parameter value of {@code FileStoreSpaceAttributeView.class} will - * always return an instance of that class. - * * @param type * the {@code Class} object corresponding to the attribute view * @@ -160,10 +196,6 @@ public abstract class FileStore { * a {@link FileStore AttributeView} that identifies a set of file attributes. * attribute-name is the name of the attribute. * - *

For {@code FileStore} objects created by the default provider, then - * the file stores support the {@link FileStoreSpaceAttributeView} that - * provides access to space attributes. - * *

Usage Example: * Suppose we want to know if ZFS compression is enabled (assuming the "zfs" * view is supported): diff --git a/jdk/src/share/classes/java/nio/file/FileSystem.java b/jdk/src/share/classes/java/nio/file/FileSystem.java index 8c7637a3947..15b6ca2cd0f 100644 --- a/jdk/src/share/classes/java/nio/file/FileSystem.java +++ b/jdk/src/share/classes/java/nio/file/FileSystem.java @@ -38,8 +38,8 @@ import java.io.IOException; *

The default file system, obtained by invoking the {@link FileSystems#getDefault * FileSystems.getDefault} method, provides access to the file system that is * accessible to the Java virtual machine. The {@link FileSystems} class defines - * methods to create file systems that provide access to other types of file - * systems. + * methods to create file systems that provide access to other types of (custom) + * file systems. * *

A file system is the factory for several types of objects: * @@ -214,10 +214,9 @@ public abstract class FileSystem * Suppose we want to print the space usage for all file stores: *

      *     for (FileStore store: FileSystems.getDefault().getFileStores()) {
-     *         FileStoreSpaceAttributes attrs = Attributes.readFileStoreSpaceAttributes(store);
-     *         long total = attrs.totalSpace() / 1024;
-     *         long used = (attrs.totalSpace() - attrs.unallocatedSpace()) / 1024;
-     *         long avail = attrs.usableSpace() / 1024;
+     *         long total = store.getTotalSpace() / 1024;
+     *         long used = (store.getTotalSpace() - store.getUnallocatedSpace()) / 1024;
+     *         long avail = store.getUsableSpace() / 1024;
      *         System.out.format("%-20s %12d %12d %12d%n", store, total, used, avail);
      *     }
      * 
@@ -244,7 +243,20 @@ public abstract class FileSystem public abstract Set supportedFileAttributeViews(); /** - * Converts a path string to a {@code Path}. + * Converts a path string, or a sequence of strings that when joined form + * a path string, to a {@code Path}. If {@code more} does not specify any + * elements then the value of the {@code first} parameter is the path string + * to convert. If {@code more} specifies one or more elements then each + * non-empty string, including {@code first}, is considered to be a sequence + * of name elements (see {@link Path}) and is joined to form a path string. + * The details as to how the Strings are joined is provider specific but + * typically they will be joined using the {@link #getSeparator + * name-separator} as the separator. For example, if the name separator is + * "{@code /}" and {@code getPath("/foo","bar","gus")} is invoked, then the + * path string {@code "/foo/bar/gus"} is converted to a {@code Path}. + * A {@code Path} representing an empty path is returned if {@code first} + * is the empty string and {@code more} does not contain any non-empty + * strings. * *

The parsing and conversion to a path object is inherently * implementation dependent. In the simplest case, the path string is rejected, @@ -270,18 +282,17 @@ public abstract class FileSystem * index} value indicating the first position in the {@code path} parameter * that caused the path string to be rejected. * - *

Invoking this method with an empty path string throws - * {@code InvalidPathException}. + * @param first + * the path string or initial part of the path string + * @param more + * additional strings to be joined to form the path string * - * @param path - * The path string - * - * @return A {@code Path} object + * @return the resulting {@code Path} * * @throws InvalidPathException * If the path string cannot be converted */ - public abstract Path getPath(String path); + public abstract Path getPath(String first, String... more); /** * Returns a {@code PathMatcher} that performs match operations on the @@ -290,9 +301,9 @@ public abstract class FileSystem * * The {@code syntaxAndPattern} parameter identifies the syntax and the * pattern and takes the form: - *

+ *
      * syntax:pattern
-     * 
+ *
* where {@code ':'} stands for itself. * *

A {@code FileSystem} implementation supports the "{@code glob}" and @@ -409,7 +420,7 @@ public abstract class FileSystem * @throws UnsupportedOperationException * If the pattern syntax is not known to the implementation * - * @see Path#newDirectoryStream(String) + * @see Files#newDirectoryStream(Path,String) */ public abstract PathMatcher getPathMatcher(String syntaxAndPattern); @@ -421,10 +432,8 @@ public abstract class FileSystem *

Usage Example: * Suppose we want to make "joe" the owner of a file: *

-     *     Path file = ...
-     *     UserPrincipal joe = file.getFileSystem().getUserPrincipalLookupService()
-     *         .lookupPrincipalByName("joe");
-     *     Attributes.setOwner(file, joe);
+     *     UserPrincipalLookupService lookupService = FileSystems.getDefault().getUserPrincipalLookupService();
+     *     Files.setOwner(path, lookupService.lookupPrincipalByName("joe"));
      * 
* * @throws UnsupportedOperationException diff --git a/jdk/src/share/classes/java/nio/file/FileSystems.java b/jdk/src/share/classes/java/nio/file/FileSystems.java index 3fc348b09f4..3d7ab7a20f1 100644 --- a/jdk/src/share/classes/java/nio/file/FileSystems.java +++ b/jdk/src/share/classes/java/nio/file/FileSystems.java @@ -164,8 +164,8 @@ public final class FileSystems { * to the first provider instance. The third provider class is instantiated * by invoking it with a reference to the second instance, and so on. The * last provider to be instantiated becomes the default provider; its {@code - * getFileSystem} method is invoked with the URI {@code "file:///"} to create - * the default file system. + * getFileSystem} method is invoked with the URI {@code "file:///"} to + * get a reference to the default file system. * *

Subsequent invocations of this method return the file system that was * returned by the first invocation. @@ -238,7 +238,7 @@ public final class FileSystems { * Suppose there is a provider identified by the scheme {@code "memory"} * installed: *

-     *   Map<String,String> env = new HashMap<String,String>();
+     *   Map<String,String> env = new HashMap<>();
      *   env.put("capacity", "16G");
      *   env.put("blockSize", "4k");
      *   FileSystem fs = FileSystems.newFileSystem(URI.create("memory:///?name=logfs"), env);
@@ -343,33 +343,25 @@ public final class FileSystems {
      *
      * 

This method makes use of specialized providers that create pseudo file * systems where the contents of one or more files is treated as a file - * system. The {@code file} parameter is a reference to an existing file - * and the {@code env} parameter is a map of provider specific properties to - * configure the file system. + * system. * *

This method iterates over the {@link FileSystemProvider#installedProviders() * installed} providers. It invokes, in turn, each provider's {@link - * FileSystemProvider#newFileSystem(FileRef,Map) newFileSystem(FileRef,Map)} method. - * If a provider returns a file system then the iteration terminates - * and the file system is returned. If none of the installed providers return - * a {@code FileSystem} then an attempt is made to locate the provider using - * the given class loader. If a provider returns a file system then the lookup - * terminates and the file system is returned. + * FileSystemProvider#newFileSystem(Path,Map) newFileSystem(Path,Map)} method + * with an empty map. If a provider returns a file system then the iteration + * terminates and the file system is returned. If none of the installed + * providers return a {@code FileSystem} then an attempt is made to locate + * the provider using the given class loader. If a provider returns a file + * system then the lookup terminates and the file system is returned. * - * @param file - * a reference to a file - * @param env - * a map of provider specific properties to configure the file system; - * may be empty + * @param path + * the path to the file * @param loader * the class loader to locate the provider or {@code null} to only * attempt to locate an installed provider * * @return a new file system * - * @throws IllegalArgumentException - * if the {@code env} parameter does not contain properties required - * by the provider, or a property value is invalid * @throws ProviderNotFoundException * if a provider supporting this file type cannot be located * @throws ServiceConfigurationError @@ -380,18 +372,18 @@ public final class FileSystems { * if a security manager is installed and it denies an unspecified * permission */ - public static FileSystem newFileSystem(FileRef file, - Map env, + public static FileSystem newFileSystem(Path path, ClassLoader loader) throws IOException { - if (file == null) + if (path == null) throw new NullPointerException(); + Map env = Collections.emptyMap(); // check installed providers for (FileSystemProvider provider: FileSystemProvider.installedProviders()) { try { - return provider.newFileSystem(file, env); + return provider.newFileSystem(path, env); } catch (UnsupportedOperationException uoe) { } } @@ -402,7 +394,7 @@ public final class FileSystems { .load(FileSystemProvider.class, loader); for (FileSystemProvider provider: sl) { try { - return provider.newFileSystem(file, env); + return provider.newFileSystem(path, env); } catch (UnsupportedOperationException uoe) { } } diff --git a/jdk/src/share/classes/java/nio/file/FileTreeWalker.java b/jdk/src/share/classes/java/nio/file/FileTreeWalker.java index b3f422e6ac0..4c0896f70c1 100644 --- a/jdk/src/share/classes/java/nio/file/FileTreeWalker.java +++ b/jdk/src/share/classes/java/nio/file/FileTreeWalker.java @@ -69,7 +69,7 @@ class FileTreeWalker { FileVisitResult result = walk(start, 0, new ArrayList()); - Objects.nonNull(result, "FileVisitor returned null"); + Objects.requireNonNull(result, "FileVisitor returned null"); } /** @@ -102,12 +102,13 @@ class FileTreeWalker { if (attrs == null) { try { try { - attrs = Attributes.readBasicFileAttributes(file, linkOptions); + attrs = Files.readAttributes(file, BasicFileAttributes.class, linkOptions); } catch (IOException x1) { if (followLinks) { try { - attrs = Attributes - .readBasicFileAttributes(file, LinkOption.NOFOLLOW_LINKS); + attrs = Files.readAttributes(file, + BasicFileAttributes.class, + LinkOption.NOFOLLOW_LINKS); } catch (IOException x2) { exc = x2; } @@ -151,7 +152,7 @@ class FileTreeWalker { } else { boolean isSameFile = false; try { - isSameFile = file.isSameFile(ancestor.file()); + isSameFile = Files.isSameFile(file, ancestor.file()); } catch (IOException x) { // ignore } catch (SecurityException x) { @@ -175,7 +176,7 @@ class FileTreeWalker { // open the directory try { - stream = file.newDirectoryStream(); + stream = Files.newDirectoryStream(file); } catch (IOException x) { return visitor.visitFileFailed(file, x); } catch (SecurityException x) { @@ -212,7 +213,11 @@ class FileTreeWalker { } finally { try { stream.close(); - } catch (IOException x) { } + } catch (IOException e) { + // IOException will be notified to postVisitDirectory + if (ioe == null) + ioe = e; + } } // invoke postVisitDirectory last diff --git a/jdk/src/share/classes/java/nio/file/FileVisitor.java b/jdk/src/share/classes/java/nio/file/FileVisitor.java index bd6bac15d59..3c507a8d443 100644 --- a/jdk/src/share/classes/java/nio/file/FileVisitor.java +++ b/jdk/src/share/classes/java/nio/file/FileVisitor.java @@ -30,8 +30,8 @@ import java.io.IOException; /** * A visitor of files. An implementation of this interface is provided to the - * {@link Files#walkFileTree walkFileTree} utility method to visit each file - * in a tree. + * {@link Files#walkFileTree Files.walkFileTree} methods to visit each file in + * a file tree. * *

Usage Examples: * Suppose we want to delete a file tree. In that case, each directory should @@ -43,19 +43,20 @@ import java.io.IOException; * public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) * throws IOException * { - * file.delete(); + * Files.delete(file); * return FileVisitResult.CONTINUE; * } * @Override * public FileVisitResult postVisitDirectory(Path dir, IOException e) * throws IOException * { - * if (e != null) { + * if (e == null) { + * Files.delete(dir); + * return FileVisitResult.CONTINUE; + * } else { * // directory iteration failed * throw e; * } - * dir.delete(); - * return FileVisitResult.CONTINUE; * } * }); *

@@ -72,10 +73,12 @@ import java.io.IOException; * public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) * throws IOException * { + * Path targetdir = target.resolve(source.relativize(dir)); * try { - * dir.copyTo(target.resolve(source.relativize(dir))); + * Files.copy(dir, targetdir); * } catch (FileAlreadyExistsException e) { - * // ignore + * if (!Files.isDirectory(targetdir)) + * throw e; * } * return CONTINUE; * } @@ -83,7 +86,7 @@ import java.io.IOException; * public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) * throws IOException * { - * file.copyTo(target.resolve(source.relativize(file))); + * Files.copy(file, target.resolve(source.relativize(file))); * return CONTINUE; * } * }); diff --git a/jdk/src/share/classes/java/nio/file/Files.java b/jdk/src/share/classes/java/nio/file/Files.java index a0f00855b74..357529ac9cf 100644 --- a/jdk/src/share/classes/java/nio/file/Files.java +++ b/jdk/src/share/classes/java/nio/file/Files.java @@ -25,16 +25,32 @@ package java.nio.file; -import java.nio.file.spi.FileTypeDetector; import java.nio.file.attribute.*; +import java.nio.file.spi.FileSystemProvider; +import java.nio.file.spi.FileTypeDetector; +import java.nio.channels.SeekableByteChannel; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Reader; +import java.io.Writer; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; import java.io.IOException; import java.util.*; import java.security.AccessController; import java.security.PrivilegedAction; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; /** - * This class consists exclusively of static methods that operate on files or - * directories. + * This class consists exclusively of static methods that operate on files, + * directories, or other types of files. + * + *

In most cases, the methods defined here will delegate to the associated + * file system provider to perform the file operations. * * @since 1.7 */ @@ -42,8 +58,1422 @@ import java.security.PrivilegedAction; public final class Files { private Files() { } + /** + * Returns the {@code FileSystemProvider} to delegate to. + */ + private static FileSystemProvider provider(Path path) { + return path.getFileSystem().provider(); + } + + // -- File contents -- + + /** + * Opens a file, returning an input stream to read from the file. The stream + * will not be buffered, and is not required to support the {@link + * InputStream#mark mark} or {@link InputStream#reset reset} methods. The + * stream will be safe for access by multiple concurrent threads. Reading + * commences at the beginning of the file. Whether the returned stream is + * asynchronously closeable and/or interruptible is highly + * file system provider specific and therefore not specified. + * + *

The {@code options} parameter determines how the file is opened. + * If no options are present then it is equivalent to opening the file with + * the {@link StandardOpenOption#READ READ} option. In addition to the {@code + * READ} option, an implementation may also support additional implementation + * specific options. + * + * @param path + * the path to the file to open + * @param options + * options specifying how the file is opened + * + * @return a new input stream + * + * @throws IllegalArgumentException + * if an invalid combination of options is specified + * @throws UnsupportedOperationException + * if an unsupported option is specified + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file. + */ + public static InputStream newInputStream(Path path, OpenOption... options) + throws IOException + { + return provider(path).newInputStream(path, options); + } + + /** + * Opens or creates a file, returning an output stream that may be used to + * write bytes to the file. The resulting stream will not be buffered. The + * stream will be safe for access by multiple concurrent threads. Whether + * the returned stream is asynchronously closeable and/or + * interruptible is highly file system provider specific and + * therefore not specified. + * + *

This method opens or creates a file in exactly the manner specified + * by the {@link #newByteChannel(Path,Set,FileAttribute[]) newByteChannel} + * method with the exception that the {@link StandardOpenOption#READ READ} + * option may not be present in the array of options. If no options are + * present then this method works as if the {@link StandardOpenOption#CREATE + * CREATE}, {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING}, + * and {@link StandardOpenOption#WRITE WRITE} options are present. In other + * words, it opens the file for writing, creating the file if it doesn't + * exist, or initially truncating an existing {@link #isRegularFile + * regular-file} to a size of {@code 0} if it exists. + * + *

Usage Examples: + *

+     *     Path path = ...
+     *
+     *     // replace an existing file or create the file if it doesn't initially exist
+     *     OutputStream out = Files.newOutputStream(path);
+     *
+     *     // append to an existing file, fail if the file does not exist
+     *     out = Files.newOutputStream(path, APPEND);
+     *
+     *     // append to an existing file, create file if it doesn't initially exist
+     *     out = Files.newOutputStream(CREATE, APPEND);
+     *
+     *     // always create new file, failing if it already exists
+     *     out = Files.newOutputStream(CREATE_NEW);
+     * 
+ * + * @param path + * the path to the file to open or create + * @param options + * options specifying how the file is opened + * + * @return a new output stream + * + * @throws IllegalArgumentException + * if {@code options} contains an invalid combination of options + * @throws UnsupportedOperationException + * if an unsupported option is specified + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to the file. The {@link + * SecurityManager#checkDelete(String) checkDelete} method is + * invoked to check delete access if the file is opened with the + * {@code DELETE_ON_CLOSE} option. + */ + public static OutputStream newOutputStream(Path path, OpenOption... options) + throws IOException + { + return provider(path).newOutputStream(path, options); + } + + /** + * Opens or creates a file, returning a seekable byte channel to access the + * file. + * + *

The {@code options} parameter determines how the file is opened. + * The {@link StandardOpenOption#READ READ} and {@link + * StandardOpenOption#WRITE WRITE} options determine if the file should be + * opened for reading and/or writing. If neither option (or the {@link + * StandardOpenOption#APPEND APPEND} option) is present then the file is + * opened for reading. By default reading or writing commence at the + * beginning of the file. + * + *

In the addition to {@code READ} and {@code WRITE}, the following + * options may be present: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Option Description
{@link StandardOpenOption#APPEND APPEND} If this option is present then the file is opened for writing and + * each invocation of the channel's {@code write} method first advances + * the position to the end of the file and then writes the requested + * data. Whether the advancement of the position and the writing of the + * data are done in a single atomic operation is system-dependent and + * therefore unspecified. This option may not be used in conjunction + * with the {@code READ} or {@code TRUNCATE_EXISTING} options.
{@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} If this option is present then the existing file is truncated to + * a size of 0 bytes. This option is ignored when the file is opened only + * for reading.
{@link StandardOpenOption#CREATE_NEW CREATE_NEW} If this option is present then a new file is created, failing if + * the file already exists or is a symbolic link. When creating a file the + * check for the existence of the file and the creation of the file if it + * does not exist is atomic with respect to other file system operations. + * This option is ignored when the file is opened only for reading.
{@link StandardOpenOption#CREATE CREATE} If this option is present then an existing file is opened if it + * exists, otherwise a new file is created. This option is ignored if the + * {@code CREATE_NEW} option is also present or the file is opened only + * for reading.
{@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} When this option is present then the implementation makes a + * best effort attempt to delete the file when closed by the + * {@link SeekableByteChannel#close close} method. If the {@code close} + * method is not invoked then a best effort attempt is made to + * delete the file when the Java virtual machine terminates.
{@link StandardOpenOption#SPARSE SPARSE} When creating a new file this option is a hint that the + * new file will be sparse. This option is ignored when not creating + * a new file.
{@link StandardOpenOption#SYNC SYNC} Requires that every update to the file's content or metadata be + * written synchronously to the underlying storage device. (see Synchronized I/O file + * integrity).
{@link StandardOpenOption#DSYNC DSYNC} Requires that every update to the file's content be written + * synchronously to the underlying storage device. (see Synchronized I/O file + * integrity).
+ * + *

An implementation may also support additional implementation specific + * options. + * + *

The {@code attrs} parameter is optional {@link FileAttribute + * file-attributes} to set atomically when a new file is created. + * + *

In the case of the default provider, the returned seekable byte channel + * is a {@link java.nio.channels.FileChannel}. + * + *

Usage Examples: + *

+     *     Path path = ...
+     *
+     *     // open file for reading
+     *     ReadableByteChannel rbc = Files.newByteChannel(path, EnumSet.of(READ)));
+     *
+     *     // open file for writing to the end of an existing file, creating
+     *     // the file if it doesn't already exist
+     *     WritableByteChannel wbc = Files.newByteChannel(path, EnumSet.of(CREATE,APPEND));
+     *
+     *     // create file with initial permissions, opening it for both reading and writing
+     *     {@code FileAttribute<> perms = ...}
+     *     SeekableByteChannel sbc = Files.newByteChannel(path, EnumSet.of(CREATE_NEW,READ,WRITE), perms);
+     * 
+ * + * @param path + * the path to the file to open or create + * @param options + * options specifying how the file is opened + * @param attrs + * an optional list of file attributes to set atomically when + * creating the file + * + * @return a new seekable byte channel + * + * @throws IllegalArgumentException + * if the set contains an invalid combination of options + * @throws UnsupportedOperationException + * if an unsupported open option is specified or the array contains + * attributes that cannot be set atomically when creating the file + * @throws FileAlreadyExistsException + * if a file of that name already exists and the {@link + * StandardOpenOption#CREATE_NEW CREATE_NEW} option is specified + * (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the path if the file is + * opened for reading. The {@link SecurityManager#checkWrite(String) + * checkWrite} method is invoked to check write access to the path + * if the file is opened for writing. The {@link + * SecurityManager#checkDelete(String) checkDelete} method is + * invoked to check delete access if the file is opened with the + * {@code DELETE_ON_CLOSE} option. + * + * @see java.nio.channels.FileChannel#open(Path,Set,FileAttribute[]) + */ + public static SeekableByteChannel newByteChannel(Path path, + Set options, + FileAttribute... attrs) + throws IOException + { + return provider(path).newByteChannel(path, options, attrs); + } + + /** + * Opens or creates a file, returning a seekable byte channel to access the + * file. + * + *

This method opens or creates a file in exactly the manner specified + * by the {@link #newByteChannel(Path,Set,FileAttribute[]) newByteChannel} + * method. + * + * @param path + * the path to the file to open or create + * @param options + * options specifying how the file is opened + * + * @return a new seekable byte channel + * + * @throws IllegalArgumentException + * if the set contains an invalid combination of options + * @throws UnsupportedOperationException + * if an unsupported open option is specified + * @throws FileAlreadyExistsException + * if a file of that name already exists and the {@link + * StandardOpenOption#CREATE_NEW CREATE_NEW} option is specified + * (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the path if the file is + * opened for reading. The {@link SecurityManager#checkWrite(String) + * checkWrite} method is invoked to check write access to the path + * if the file is opened for writing. The {@link + * SecurityManager#checkDelete(String) checkDelete} method is + * invoked to check delete access if the file is opened with the + * {@code DELETE_ON_CLOSE} option. + * + * @see java.nio.channels.FileChannel#open(Path,OpenOption[]) + */ + public static SeekableByteChannel newByteChannel(Path path, OpenOption... options) + throws IOException + { + Set set = new HashSet(options.length); + Collections.addAll(set, options); + return newByteChannel(path, set); + } + + // -- Directories -- + + /** + * Opens a directory, returning a {@link DirectoryStream} to iterate over + * all entries in the directory. The elements returned by the directory + * stream's {@link DirectoryStream#iterator iterator} are of type {@code + * Path}, each one representing an entry in the directory. The {@code Path} + * objects are obtained as if by {@link Path#resolve(Path) resolving} the + * name of the directory entry against {@code dir}. + * + *

When not using the try-with-resources construct, then directory + * stream's {@code close} method should be invoked after iteration is + * completed so as to free any resources held for the open directory. + * + *

When an implementation supports operations on entries in the + * directory that execute in a race-free manner then the returned directory + * stream is a {@link SecureDirectoryStream}. + * + * @param dir + * the path to the directory + * + * @return a new and open {@code DirectoryStream} object + * + * @throws NotDirectoryException + * if the file could not otherwise be opened because it is not + * a directory (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the directory. + */ + public static DirectoryStream newDirectoryStream(Path dir) + throws IOException + { + return provider(dir).newDirectoryStream(dir, new DirectoryStream.Filter() { + @Override + public boolean accept(Path entry) { + return true; + } + }); + } + + /** + * Opens a directory, returning a {@link DirectoryStream} to iterate over + * the entries in the directory. The elements returned by the directory + * stream's {@link DirectoryStream#iterator iterator} are of type {@code + * Path}, each one representing an entry in the directory. The {@code Path} + * objects are obtained as if by {@link Path#resolve(Path) resolving} the + * name of the directory entry against {@code dir}. The entries returned by + * the iterator are filtered by matching the {@code String} representation + * of their file names against the given globbing pattern. + * + *

For example, suppose we want to iterate over the files ending with + * ".java" in a directory: + *

+     *     Path dir = ...
+     *     try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.java")) {
+     *         :
+     *     }
+     * 
+ * + *

The globbing pattern is specified by the {@link + * FileSystem#getPathMatcher getPathMatcher} method. + * + *

When not using the try-with-resources construct, then directory + * stream's {@code close} method should be invoked after iteration is + * completed so as to free any resources held for the open directory. + * + *

When an implementation supports operations on entries in the + * directory that execute in a race-free manner then the returned directory + * stream is a {@link SecureDirectoryStream}. + * + * @param dir + * the path to the directory + * @param glob + * the glob pattern + * + * @return a new and open {@code DirectoryStream} object + * + * @throws java.util.regex.PatternSyntaxException + * if the pattern is invalid + * @throws NotDirectoryException + * if the file could not otherwise be opened because it is not + * a directory (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the directory. + */ + public static DirectoryStream newDirectoryStream(Path dir, String glob) + throws IOException + { + // avoid creating a matcher if all entries are required. + if (glob.equals("*")) + return newDirectoryStream(dir); + + // create a matcher and return a filter that uses it. + FileSystem fs = dir.getFileSystem(); + final PathMatcher matcher = fs.getPathMatcher("glob:" + glob); + DirectoryStream.Filter filter = new DirectoryStream.Filter() { + @Override + public boolean accept(Path entry) { + return matcher.matches(entry.getFileName()); + } + }; + return fs.provider().newDirectoryStream(dir, filter); + } + + /** + * Opens a directory, returning a {@link DirectoryStream} to iterate over + * the entries in the directory. The elements returned by the directory + * stream's {@link DirectoryStream#iterator iterator} are of type {@code + * Path}, each one representing an entry in the directory. The {@code Path} + * objects are obtained as if by {@link Path#resolve(Path) resolving} the + * name of the directory entry against {@code dir}. The entries returned by + * the iterator are filtered by the given {@link DirectoryStream.Filter + * filter}. + * + *

When not using the try-with-resources construct, then directory + * stream's {@code close} method should be invoked after iteration is + * completed so as to free any resources held for the open directory. + * + *

Where the filter terminates due to an uncaught error or runtime + * exception then it is propagated to the {@link Iterator#hasNext() + * hasNext} or {@link Iterator#next() next} method. Where an {@code + * IOException} is thrown, it results in the {@code hasNext} or {@code + * next} method throwing a {@link DirectoryIteratorException} with the + * {@code IOException} as the cause. + * + *

When an implementation supports operations on entries in the + * directory that execute in a race-free manner then the returned directory + * stream is a {@link SecureDirectoryStream}. + * + *

Usage Example: + * Suppose we want to iterate over the files in a directory that are + * larger than 8K. + *

+     *     DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
+     *         public boolean accept(Path file) throws IOException {
+     *             return (Files.size(file) > 8192L);
+     *         }
+     *     };
+     *     Path dir = ...
+     *     try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
+     *         :
+     *     }
+     * 
+ * + * @param dir + * the path to the directory + * @param filter + * the directory stream filter + * + * @return a new and open {@code DirectoryStream} object + * + * @throws NotDirectoryException + * if the file could not otherwise be opened because it is not + * a directory (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the directory. + */ + public static DirectoryStream newDirectoryStream(Path dir, + DirectoryStream.Filter filter) + throws IOException + { + return provider(dir).newDirectoryStream(dir, filter); + } + + // -- Creation and deletion -- + + /** + * Creates a new and empty file, failing if the file already exists. The + * check for the existence of the file and the creation of the new file if + * it does not exist are a single operation that is atomic with respect to + * all other filesystem activities that might affect the directory. + * + *

The {@code attrs} parameter is optional {@link FileAttribute + * file-attributes} to set atomically when creating the file. Each attribute + * is identified by its {@link FileAttribute#name name}. If more than one + * attribute of the same name is included in the array then all but the last + * occurrence is ignored. + * + * @param path + * the path to the file to create + * @param attrs + * an optional list of file attributes to set atomically when + * creating the file + * + * @return the file + * + * @throws UnsupportedOperationException + * if the array contains an attribute that cannot be set atomically + * when creating the file + * @throws FileAlreadyExistsException + * if a file of that name already exists + * (optional specific exception) + * @throws IOException + * if an I/O error occurs or the parent directory does not exist + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to the new file. + */ + public static Path createFile(Path path, FileAttribute... attrs) + throws IOException + { + EnumSet options = + EnumSet.of(StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); + newByteChannel(path, options, attrs).close(); + return path; + } + + /** + * Creates a new directory. The check for the existence of the file and the + * creation of the directory if it does not exist are a single operation + * that is atomic with respect to all other filesystem activities that might + * affect the directory. The {@link #createDirectories createDirectories} + * method should be used where it is required to create all nonexistent + * parent directories first. + * + *

The {@code attrs} parameter is optional {@link FileAttribute + * file-attributes} to set atomically when creating the directory. Each + * attribute is identified by its {@link FileAttribute#name name}. If more + * than one attribute of the same name is included in the array then all but + * the last occurrence is ignored. + * + * @param dir + * the directory to create + * @param attrs + * an optional list of file attributes to set atomically when + * creating the directory + * + * @return the directory + * + * @throws UnsupportedOperationException + * if the array contains an attribute that cannot be set atomically + * when creating the directory + * @throws FileAlreadyExistsException + * if a directory could not otherwise be created because a file of + * that name already exists (optional specific exception) + * @throws IOException + * if an I/O error occurs or the parent directory does not exist + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to the new directory. + */ + public static Path createDirectory(Path dir, FileAttribute... attrs) + throws IOException + { + provider(dir).createDirectory(dir, attrs); + return dir; + } + + /** + * Creates a directory by creating all nonexistent parent directories first. + * Unlike the {@link #createDirectory createDirectory} method, an exception + * is not thrown if the directory could not be created because it already + * exists. + * + *

The {@code attrs} parameter is optional {@link FileAttribute + * file-attributes} to set atomically when creating the nonexistent + * directories. Each file attribute is identified by its {@link + * FileAttribute#name name}. If more than one attribute of the same name is + * included in the array then all but the last occurrence is ignored. + * + *

If this method fails, then it may do so after creating some, but not + * all, of the parent directories. + * + * @param dir + * the directory to create + * + * @param attrs + * an optional list of file attributes to set atomically when + * creating the directory + * + * @return the directory + * + * @throws UnsupportedOperationException + * if the array contains an attribute that cannot be set atomically + * when creating the directory + * @throws FileAlreadyExistsException + * if {@code dir} exists but is not a directory (optional specific + * exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * in the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked prior to attempting to create a directory and + * its {@link SecurityManager#checkRead(String) checkRead} is + * invoked for each parent directory that is checked. If {@code + * dir} is not an absolute path then its {@link Path#toAbsolutePath + * toAbsolutePath} may need to be invoked to get its absolute path. + * This may invoke the security manager's {@link + * SecurityManager#checkPropertyAccess(String) checkPropertyAccess} + * method to check access to the system property {@code user.dir} + */ + public static Path createDirectories(Path dir, FileAttribute... attrs) + throws IOException + { + // attempt to create the directory + try { + createAndCheckIsDirectory(dir, attrs); + return dir; + } catch (FileAlreadyExistsException x) { + // file exists and is not a directory + throw x; + } catch (IOException x) { + // parent may not exist or other reason + } + SecurityException se = null; + try { + dir = dir.toAbsolutePath(); + } catch (SecurityException x) { + // don't have permission to get absolute path + se = x; + } + // find a decendent that exists + Path parent = dir.getParent(); + while (parent != null) { + try { + provider(parent).checkAccess(parent); + break; + } catch (NoSuchFileException x) { + // does not exist + } + parent = parent.getParent(); + } + if (parent == null) { + // unable to find existing parent + if (se != null) + throw se; + throw new IOException("Root directory does not exist"); + } + + // create directories + Path child = parent; + for (Path name: parent.relativize(dir)) { + child = child.resolve(name); + createAndCheckIsDirectory(child, attrs); + } + return dir; + } + + /** + * Used by createDirectories to attempt to create a directory. A no-op + * if the directory already exists. + */ + private static void createAndCheckIsDirectory(Path dir, + FileAttribute... attrs) + throws IOException + { + try { + createDirectory(dir, attrs); + } catch (FileAlreadyExistsException x) { + if (!isDirectory(dir, LinkOption.NOFOLLOW_LINKS)) + throw x; + } + } + + /** + * Creates a new empty file in the specified directory, using the given + * prefix and suffix strings to generate its name. The resulting + * {@code Path} is associated with the same {@code FileSystem} as the given + * directory. + * + *

The details as to how the name of the file is constructed is + * implementation dependent and therefore not specified. Where possible + * the {@code prefix} and {@code suffix} are used to construct candidate + * names in the same manner as the {@link + * java.io.File#createTempFile(String,String,File)} method. + * + *

As with the {@code File.createTempFile} methods, this method is only + * part of a temporary-file facility. Where used as a work files, + * the resulting file may be opened using the {@link + * StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} option so that the + * file is deleted when the appropriate {@code close} method is invoked. + * Alternatively, a {@link Runtime#addShutdownHook shutdown-hook}, or the + * {@link java.io.File#deleteOnExit} mechanism may be used to delete the + * file automatically. + * + *

The {@code attrs} parameter is optional {@link FileAttribute + * file-attributes} to set atomically when creating the file. Each attribute + * is identified by its {@link FileAttribute#name name}. If more than one + * attribute of the same name is included in the array then all but the last + * occurrence is ignored. When no file attributes are specified, then the + * resulting file may have more restrictive access permissions to files + * created by the {@link java.io.File#createTempFile(String,String,File)} + * method. + * + * @param dir + * the path to directory in which to create the file + * @param prefix + * the prefix string to be used in generating the file's name; + * may be {@code null} + * @param suffix + * the suffix string to be used in generating the file's name; + * may be {@code null}, in which case "{@code .tmp}" is used + * @param attrs + * an optional list of file attributes to set atomically when + * creating the file + * + * @return the path to the newly created file that did not exist before + * this method was invoked + * + * @throws IllegalArgumentException + * if the prefix or suffix parameters cannot be used to generate + * a candidate file name + * @throws UnsupportedOperationException + * if the array contains an attribute that cannot be set atomically + * when creating the directory + * @throws IOException + * if an I/O error occurs or {@code dir} does not exist + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to the file. + */ + public static Path createTempFile(Path dir, + String prefix, + String suffix, + FileAttribute... attrs) + throws IOException + { + return TempFileHelper.createTempFile(dir, prefix, suffix, attrs); + } + + /** + * Creates an empty file in the default temporary-file directory, using + * the given prefix and suffix to generate its name. The resulting {@code + * Path} is associated with the default {@code FileSystem}. + * + *

This method works in exactly the manner specified by the + * {@link #createTempFile(Path,String,String,FileAttribute[])} method for + * the case that the {@code dir} parameter is the temporary-file directory. + * + * @param prefix + * the prefix string to be used in generating the file's name; + * may be {@code null} + * @param suffix + * the suffix string to be used in generating the file's name; + * may be {@code null}, in which case "{@code .tmp}" is used + * @param attrs + * an optional list of file attributes to set atomically when + * creating the file + * + * @return the path to the newly created file that did not exist before + * this method was invoked + * + * @throws IllegalArgumentException + * if the prefix or suffix parameters cannot be used to generate + * a candidate file name + * @throws UnsupportedOperationException + * if the array contains an attribute that cannot be set atomically + * when creating the directory + * @throws IOException + * if an I/O error occurs or the temporary-file directory does not + * exist + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to the file. + */ + public static Path createTempFile(String prefix, + String suffix, + FileAttribute... attrs) + throws IOException + { + return TempFileHelper.createTempFile(null, prefix, suffix, attrs); + } + + /** + * Creates a new directory in the specified directory, using the given + * prefix to generate its name. The resulting {@code Path} is associated + * with the same {@code FileSystem} as the given directory. + * + *

The details as to how the name of the directory is constructed is + * implementation dependent and therefore not specified. Where possible + * the {@code prefix} is used to construct candidate names. + * + *

As with the {@code createTempFile} methods, this method is only + * part of a temporary-file facility. A {@link Runtime#addShutdownHook + * shutdown-hook}, or the {@link java.io.File#deleteOnExit} mechanism may be + * used to delete the directory automatically. + * + *

The {@code attrs} parameter is optional {@link FileAttribute + * file-attributes} to set atomically when creating the directory. Each + * attribute is identified by its {@link FileAttribute#name name}. If more + * than one attribute of the same name is included in the array then all but + * the last occurrence is ignored. + * + * @param dir + * the path to directory in which to create the directory + * @param prefix + * the prefix string to be used in generating the directory's name; + * may be {@code null} + * @param attrs + * an optional list of file attributes to set atomically when + * creating the directory + * + * @return the path to the newly created directory that did not exist before + * this method was invoked + * + * @throws IllegalArgumentException + * if the prefix cannot be used to generate a candidate directory name + * @throws UnsupportedOperationException + * if the array contains an attribute that cannot be set atomically + * when creating the directory + * @throws IOException + * if an I/O error occurs or {@code dir} does not exist + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access when creating the + * directory. + */ + public static Path createTempDirectory(Path dir, + String prefix, + FileAttribute... attrs) + throws IOException + { + return TempFileHelper.createTempDirectory(dir, prefix, attrs); + } + + /** + * Creates a new directory in the default temporary-file directory, using + * the given prefix and suffix to generate its name. The resulting {@code + * Path} is associated with the default {@code FileSystem}. + * + *

This method works in exactly the manner specified by {@link + * #createTempDirectory(Path,String,FileAttribute[])} method for the case + * that the {@code dir} parameter is the temporary-file directory. + * + * @param prefix + * the prefix string to be used in generating the directory's name; + * may be {@code null} + * @param attrs + * an optional list of file attributes to set atomically when + * creating the directory + * + * @return the path to the newly created directory that did not exist before + * this method was invoked + * + * @throws IllegalArgumentException + * if the prefix cannot be used to generate a candidate directory name + * @throws UnsupportedOperationException + * if the array contains an attribute that cannot be set atomically + * when creating the directory + * @throws IOException + * if an I/O error occurs or the temporary-file directory does not + * exist + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access when creating the + * directory. + */ + public static Path createTempDirectory(String prefix, + FileAttribute... attrs) + throws IOException + { + return TempFileHelper.createTempDirectory(null, prefix, attrs); + } + + /** + * Creates a symbolic link to a target (optional operation). + * + *

The {@code target} parameter is the target of the link. It may be an + * {@link Path#isAbsolute absolute} or relative path and may not exist. When + * the target is a relative path then file system operations on the resulting + * link are relative to the path of the link. + * + *

The {@code attrs} parameter is optional {@link FileAttribute + * attributes} to set atomically when creating the link. Each attribute is + * identified by its {@link FileAttribute#name name}. If more than one attribute + * of the same name is included in the array then all but the last occurrence + * is ignored. + * + *

Where symbolic links are supported, but the underlying {@link FileStore} + * does not support symbolic links, then this may fail with an {@link + * IOException}. Additionally, some operating systems may require that the + * Java virtual machine be started with implementation specific privileges to + * create symbolic links, in which case this method may throw {@code IOException}. + * + * @param link + * the path of the symbolic link to create + * @param target + * the target of the symbolic link + * @param attrs + * the array of attributes to set atomically when creating the + * symbolic link + * + * @return the path to the symbolic link + * + * @throws UnsupportedOperationException + * if the implementation does not support symbolic links or the + * array contains an attribute that cannot be set atomically when + * creating the symbolic link + * @throws FileAlreadyExistsException + * if a file with the name already exists (optional specific + * exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager + * is installed, it denies {@link LinkPermission}("symbolic") + * or its {@link SecurityManager#checkWrite(String) checkWrite} + * method denies write access to the path of the symbolic link. + */ + public static Path createSymbolicLink(Path link, Path target, + FileAttribute... attrs) + throws IOException + { + provider(link).createSymbolicLink(link, target, attrs); + return link; + } + + /** + * Creates a new link (directory entry) for an existing file (optional + * operation). + * + *

The {@code link} parameter locates the directory entry to create. + * The {@code existing} parameter is the path to an existing file. This + * method creates a new directory entry for the file so that it can be + * accessed using {@code link} as the path. On some file systems this is + * known as creating a "hard link". Whether the file attributes are + * maintained for the file or for each directory entry is file system + * specific and therefore not specified. Typically, a file system requires + * that all links (directory entries) for a file be on the same file system. + * Furthermore, on some platforms, the Java virtual machine may require to + * be started with implementation specific privileges to create hard links + * or to create links to directories. + * + * @param link + * the link (directory entry) to create + * @param existing + * a path to an existing file + * + * @return the path to the link (directory entry) + * + * @throws UnsupportedOperationException + * if the implementation does not support adding an existing file + * to a directory + * @throws FileAlreadyExistsException + * if the entry could not otherwise be created because a file of + * that name already exists (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager + * is installed, it denies {@link LinkPermission}("hard") + * or its {@link SecurityManager#checkWrite(String) checkWrite} + * method denies write access to either the link or the + * existing file. + */ + public static Path createLink(Path link, Path existing) throws IOException { + provider(link).createLink(link, existing); + return link; + } + + /** + * Deletes a file. + * + *

An implementation may require to examine the file to determine if the + * file is a directory. Consequently this method may not be atomic with respect + * to other file system operations. If the file is a symbolic link then the + * symbolic link itself, not the final target of the link, is deleted. + * + *

If the file is a directory then the directory must be empty. In some + * implementations a directory has entries for special files or links that + * are created when the directory is created. In such implementations a + * directory is considered empty when only the special entries exist. + * This method can be used with the {@link #walkFileTree walkFileTree} + * method to delete a directory and all entries in the directory, or an + * entire file-tree where required. + * + *

On some operating systems it may not be possible to remove a file when + * it is open and in use by this Java virtual machine or other programs. + * + * @param path + * the path to the file to delete + * + * @throws NoSuchFileException + * if the file does not exist (optional specific exception) + * @throws DirectoryNotEmptyException + * if the file is a directory and could not otherwise be deleted + * because the directory is not empty (optional specific + * exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkDelete(String)} method + * is invoked to check delete access to the file + */ + public static void delete(Path path) throws IOException { + provider(path).delete(path); + } + + /** + * Deletes a file if it exists. + * + *

As with the {@link #delete(Path) delete(Path)} method, an + * implementation may need to examine the file to determine if the file is a + * directory. Consequently this method may not be atomic with respect to + * other file system operations. If the file is a symbolic link, then the + * symbolic link itself, not the final target of the link, is deleted. + * + *

If the file is a directory then the directory must be empty. In some + * implementations a directory has entries for special files or links that + * are created when the directory is created. In such implementations a + * directory is considered empty when only the special entries exist. + * + *

On some operating systems it may not be possible to remove a file when + * it is open and in use by this Java virtual machine or other programs. + * + * @param path + * the path to the file to delete + * + * @return {@code true} if the file was deleted by this method; {@code + * false} if the file could not be deleted because it did not + * exist + * + * @throws DirectoryNotEmptyException + * if the file is a directory and could not otherwise be deleted + * because the directory is not empty (optional specific + * exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkDelete(String)} method + * is invoked to check delete access to the file. + */ + public static boolean deleteIfExists(Path path) throws IOException { + return provider(path).deleteIfExists(path); + } + + // -- Copying and moving files -- + + /** + * Copy a file to a target file. + * + *

This method copies a file to the target file with the {@code + * options} parameter specifying how the copy is performed. By default, the + * copy fails if the target file already exists or is a symbolic link, + * except if the source and target are the {@link #isSameFile same} file, in + * which case the method completes without copying the file. File attributes + * are not required to be copied to the target file. If symbolic links are + * supported, and the file is a symbolic link, then the final target of the + * link is copied. If the file is a directory then it creates an empty + * directory in the target location (entries in the directory are not + * copied). This method can be used with the {@link #walkFileTree + * walkFileTree} method to copy a directory and all entries in the directory, + * or an entire file-tree where required. + * + *

The {@code options} parameter may include any of the following: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Option Description
{@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} If the target file exists, then the target file is replaced if it + * is not a non-empty directory. If the target file exists and is a + * symbolic link, then the symbolic link itself, not the target of + * the link, is replaced.
{@link StandardCopyOption#COPY_ATTRIBUTES COPY_ATTRIBUTES} Attempts to copy the file attributes associated with this file to + * the target file. The exact file attributes that are copied is platform + * and file system dependent and therefore unspecified. Minimally, the + * {@link BasicFileAttributes#lastModifiedTime last-modified-time} is + * copied to the target file if supported by both the source and target + * file store. Copying of file timestamps may result in precision + * loss.
{@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} Symbolic links are not followed. If the file is a symbolic link, + * then the symbolic link itself, not the target of the link, is copied. + * It is implementation specific if file attributes can be copied to the + * new link. In other words, the {@code COPY_ATTRIBUTES} option may be + * ignored when copying a symbolic link.
+ * + *

An implementation of this interface may support additional + * implementation specific options. + * + *

Copying a file is not an atomic operation. If an {@link IOException} + * is thrown then it possible that the target file is incomplete or some of + * its file attributes have not been copied from the source file. When the + * {@code REPLACE_EXISTING} option is specified and the target file exists, + * then the target file is replaced. The check for the existence of the file + * and the creation of the new file may not be atomic with respect to other + * file system activities. + * + *

Usage Example: + * Suppose we want to copy a file into a directory, giving it the same file + * name as the source file: + *

+     *     Path source = ...
+     *     Path newdir = ...
+     *     Files.copy(source, newdir.resolve(source.getFileName());
+     * 
+ * + * @param source + * the path to the file to copy + * @param target + * the path to the target file (may be associated with a different + * provider to the source path) + * @param options + * options specifying how the copy should be done + * + * @return the path to the target file + * + * @throws UnsupportedOperationException + * if the array contains a copy option that is not supported + * @throws FileAlreadyExistsException + * if the target file exists but cannot be replaced because the + * {@code REPLACE_EXISTING} option is not specified (optional + * specific exception) + * @throws DirectoryNotEmptyException + * the {@code REPLACE_EXISTING} option is specified but the file + * cannot be replaced because it is a non-empty directory + * (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the source file, the + * {@link SecurityManager#checkWrite(String) checkWrite} is invoked + * to check write access to the target file. If a symbolic link is + * copied the security manager is invoked to check {@link + * LinkPermission}{@code ("symbolic")}. + */ + public static Path copy(Path source, Path target, CopyOption... options) + throws IOException + { + FileSystemProvider provider = provider(source); + if (provider(target) == provider) { + // same provider + provider.copy(source, target, options); + } else { + // different providers + CopyMoveHelper.copyToForeignTarget(source, target, options); + } + return target; + } + + /** + * Move or rename a file to a target file. + * + *

By default, this method attempts to move the file to the target + * file, failing if the target file exists except if the source and + * target are the {@link #isSameFile same} file, in which case this method + * has no effect. If the file is a symbolic link then the symbolic link + * itself, not the target of the link, is moved. This method may be + * invoked to move an empty directory. In some implementations a directory + * has entries for special files or links that are created when the + * directory is created. In such implementations a directory is considered + * empty when only the special entries exist. When invoked to move a + * directory that is not empty then the directory is moved if it does not + * require moving the entries in the directory. For example, renaming a + * directory on the same {@link FileStore} will usually not require moving + * the entries in the directory. When moving a directory requires that its + * entries be moved then this method fails (by throwing an {@code + * IOException}). To move a file tree may involve copying rather + * than moving directories and this can be done using the {@link + * #copy copy} method in conjunction with the {@link + * #walkFileTree Files.walkFileTree} utility method. + * + *

The {@code options} parameter may include any of the following: + * + * + * + * + * + * + * + * + * + * + *
Option Description
{@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} If the target file exists, then the target file is replaced if it + * is not a non-empty directory. If the target file exists and is a + * symbolic link, then the symbolic link itself, not the target of + * the link, is replaced.
{@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} The move is performed as an atomic file system operation and all + * other options are ignored. If the target file exists then it is + * implementation specific if the existing file is replaced or this method + * fails by throwing an {@link IOException}. If the move cannot be + * performed as an atomic file system operation then {@link + * AtomicMoveNotSupportedException} is thrown. This can arise, for + * example, when the target location is on a different {@code FileStore} + * and would require that the file be copied, or target location is + * associated with a different provider to this object.
+ * + *

An implementation of this interface may support additional + * implementation specific options. + * + *

Where the move requires that the file be copied then the {@link + * BasicFileAttributes#lastModifiedTime last-modified-time} is copied to the + * new file. An implementation may also attempt to copy other file + * attributes but is not required to fail if the file attributes cannot be + * copied. When the move is performed as a non-atomic operation, and a {@code + * IOException} is thrown, then the state of the files is not defined. The + * original file and the target file may both exist, the target file may be + * incomplete or some of its file attributes may not been copied from the + * original file. + * + *

Usage Examples: + * Suppose we want to rename a file to "newname", keeping the file in the + * same directory: + *

+     *     Path source = ...
+     *     Files.move(source, source.resolveSibling("newname"));
+     * 
+ * Alternatively, suppose we want to move a file to new directory, keeping + * the same file name, and replacing any existing file of that name in the + * directory: + *
+     *     Path source = ...
+     *     Path newdir = ...
+     *     Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
+     * 
+ * + * @param source + * the path to the file to move + * @param target + * the path to the target file (may be associated with a different + * provider to the source path) + * @param options + * options specifying how the move should be done + * + * @return the path to the target file + * + * @throws UnsupportedOperationException + * if the array contains a copy option that is not supported + * @throws FileAlreadyExistsException + * if the target file exists but cannot be replaced because the + * {@code REPLACE_EXISTING} option is not specified (optional + * specific exception) + * @throws DirectoryNotEmptyException + * the {@code REPLACE_EXISTING} option is specified but the file + * cannot be replaced because it is a non-empty directory + * (optional specific exception) + * @throws AtomicMoveNotSupportedException + * if the options array contains the {@code ATOMIC_MOVE} option but + * the file cannot be moved as an atomic file system operation. + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to both the source and + * target file. + */ + public static Path move(Path source, Path target, CopyOption... options) + throws IOException + { + FileSystemProvider provider = provider(source); + if (provider(target) == provider) { + // same provider + provider.move(source, target, options); + } else { + // different providers + CopyMoveHelper.moveToForeignTarget(source, target, options); + } + return target; + } + + // -- Miscellenous -- + + /** + * Reads the target of a symbolic link (optional operation). + * + *

If the file system supports symbolic + * links then this method is used to read the target of the link, failing + * if the file is not a symbolic link. The target of the link need not exist. + * The returned {@code Path} object will be associated with the same file + * system as {@code link}. + * + * @param link + * the path to the symbolic link + * + * @return a {@code Path} object representing the target of the link + * + * @throws UnsupportedOperationException + * if the implementation does not support symbolic links + * @throws NotLinkException + * if the target could otherwise not be read because the file + * is not a symbolic link (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager + * is installed, it checks that {@code FilePermission} has been + * granted with the "{@code readlink}" action to read the link. + */ + public static Path readSymbolicLink(Path link) throws IOException { + return provider(link).readSymbolicLink(link); + } + + /** + * Returns the {@link FileStore} representing the file store where a file + * is located. + * + *

Once a reference to the {@code FileStore} is obtained it is + * implementation specific if operations on the returned {@code FileStore}, + * or {@link FileStoreAttributeView} objects obtained from it, continue + * to depend on the existence of the file. In particular the behavior is not + * defined for the case that the file is deleted or moved to a different + * file store. + * + * @param path + * the path to the file + * + * @return the file store where the file is stored + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file, and in + * addition it checks {@link RuntimePermission} + * ("getFileStoreAttributes") + */ + public static FileStore getFileStore(Path path) throws IOException { + return provider(path).getFileStore(path); + } + + /** + * Tests if two paths locate the same file. + * + *

If both {@code Path} objects are {@link Path#equals(Object) equal} + * then this method returns {@code true} without checking if the file exists. + * If the two {@code Path} objects are associated with different providers + * then this method returns {@code false}. Otherwise, this method checks if + * both {@code Path} objects locate the same file, and depending on the + * implementation, may require to open or access both files. + * + *

If the file system and files remain static, then this method implements + * an equivalence relation for non-null {@code Paths}. + *

+ * + * @param path + * one path to the file + * @param path2 + * the other path + * + * @return {@code true} if, and only if, the two paths locate the same file + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to both files. + * + * @see java.nio.file.attribute.BasicFileAttributes#fileKey + */ + public static boolean isSameFile(Path path, Path path2) throws IOException { + return provider(path).isSameFile(path, path2); + } + + /** + * Tells whether or not a file is considered hidden. The exact + * definition of hidden is platform or provider dependent. On UNIX for + * example a file is considered to be hidden if its name begins with a + * period character ('.'). On Windows a file is considered hidden if it + * isn't a directory and the DOS {@link DosFileAttributes#isHidden hidden} + * attribute is set. + * + *

Depending on the implementation this method may require to access + * the file system to determine if the file is considered hidden. + * + * @param path + * the path to the file to test + * + * @return {@code true} if the file is considered hidden + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file. + */ + public static boolean isHidden(Path path) throws IOException { + return provider(path).isHidden(path); + } + // lazy loading of default and installed file type detectors - private static class DefaultFileTypeDetectorHolder { + private static class FileTypeDetectors{ static final FileTypeDetector defaultFileTypeDetector = sun.nio.fs.DefaultFileTypeDetector.create(); static final List installeDetectors = @@ -54,7 +1484,7 @@ public final class Files { return AccessController .doPrivileged(new PrivilegedAction>() { @Override public List run() { - List list = new ArrayList(); + List list = new ArrayList<>(); ServiceLoader loader = ServiceLoader .load(FileTypeDetector.class, ClassLoader.getSystemClassLoader()); for (FileTypeDetector detector: loader) { @@ -100,33 +1530,948 @@ public final class Files { * Message Bodies. The string is guaranteed to be parsable according * to the grammar in the RFC. * - * @param file - * The file reference + * @param path + * the path to the file to probe * * @return The content type of the file, or {@code null} if the content * type cannot be determined * * @throws IOException - * If an I/O error occurs + * if an I/O error occurs * @throws SecurityException * If a security manager is installed and it denies an unspecified * permission required by a file type detector implementation. */ - public static String probeContentType(FileRef file) + public static String probeContentType(Path path) throws IOException { // try installed file type detectors - for (FileTypeDetector detector: DefaultFileTypeDetectorHolder.installeDetectors) { - String result = detector.probeContentType(file); + for (FileTypeDetector detector: FileTypeDetectors.installeDetectors) { + String result = detector.probeContentType(path); if (result != null) return result; } // fallback to default - return DefaultFileTypeDetectorHolder.defaultFileTypeDetector - .probeContentType(file); + return FileTypeDetectors.defaultFileTypeDetector.probeContentType(path); } + // -- File Attributes -- + + /** + * Returns a file attribute view of a given type. + * + *

A file attribute view provides a read-only or updatable view of a + * set of file attributes. This method is intended to be used where the file + * attribute view defines type-safe methods to read or update the file + * attributes. The {@code type} parameter is the type of the attribute view + * required and the method returns an instance of that type if supported. + * The {@link BasicFileAttributeView} type supports access to the basic + * attributes of a file. Invoking this method to select a file attribute + * view of that type will always return an instance of that class. + * + *

The {@code options} array may be used to indicate how symbolic links + * are handled by the resulting file attribute view for the case that the + * file is a symbolic link. By default, symbolic links are followed. If the + * option {@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} is present then + * symbolic links are not followed. This option is ignored by implementations + * that do not support symbolic links. + * + *

Usage Example: + * Suppose we want read or set a file's ACL, if supported: + *

+     *     Path path = ...
+     *     AclFileAttributeView view = Files.getFileAttributeView(path, AclFileAttributeView.class);
+     *     if (view != null) {
+     *         List<AclEntry> acl = view.getAcl();
+     *         :
+     *     }
+     * 
+ * + * + * @param path + * the path to the file + * @param type + * the {@code Class} object corresponding to the file attribute view + * @param options + * options indicating how symbolic links are handled + * + * @return a file attribute view of the specified type, or {@code null} if + * the attribute view type is not available + */ + public static V getFileAttributeView(Path path, + Class type, + LinkOption... options) + { + return provider(path).getFileAttributeView(path, type, options); + } + + /** + * Reads a file's attributes as a bulk operation. + * + *

The {@code type} parameter is the type of the attributes required + * and this method returns an instance of that type if supported. All + * implementations support a basic set of file attributes and so invoking + * this method with a {@code type} parameter of {@code + * BasicFileAttributes.class} will not throw {@code + * UnsupportedOperationException}. + * + *

The {@code options} array may be used to indicate how symbolic links + * are handled for the case that the file is a symbolic link. By default, + * symbolic links are followed and the file attribute of the final target + * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS + * NOFOLLOW_LINKS} is present then symbolic links are not followed. + * + *

It is implementation specific if all file attributes are read as an + * atomic operation with respect to other file system operations. + * + *

Usage Example: + * Suppose we want to read a file's attributes in bulk: + *

+     *    Path path = ...
+     *    BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
+     * 
+ * Alternatively, suppose we want to read file's POSIX attributes without + * following symbolic links: + *
+     *    PosixFileAttributes attrs = Files.readAttributes(path, PosixFileAttributes.class, NOFOLLOW_LINKS);
+     * 
+ * + * @param path + * the path to the file + * @param type + * the {@code Class} of the file attributes required + * to read + * @param options + * options indicating how symbolic links are handled + * + * @return the file attributes + * + * @throws UnsupportedOperationException + * if an attributes of the given type are not supported + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, a security manager is + * installed, its {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file. If this + * method is invoked to read security sensitive attributes then the + * security manager may be invoke to check for additional permissions. + */ + public static A readAttributes(Path path, + Class type, + LinkOption... options) + throws IOException + { + return provider(path).readAttributes(path, type, options); + } + + /** + * Sets the value of a file attribute. + * + *

The {@code attribute} parameter identifies the attribute to be set + * and takes the form: + *

+ * [view-name:]attribute-name + *
+ * where square brackets [...] delineate an optional component and the + * character {@code ':'} stands for itself. + * + *

view-name is the {@link FileAttributeView#name name} of a {@link + * FileAttributeView} that identifies a set of file attributes. If not + * specified then it defaults to {@code "basic"}, the name of the file + * attribute view that identifies the basic set of file attributes common to + * many file systems. attribute-name is the name of the attribute + * within the set. + * + *

The {@code options} array may be used to indicate how symbolic links + * are handled for the case that the file is a symbolic link. By default, + * symbolic links are followed and the file attribute of the final target + * of the link is set. If the option {@link LinkOption#NOFOLLOW_LINKS + * NOFOLLOW_LINKS} is present then symbolic links are not followed. + * + *

Usage Example: + * Suppose we want to set the DOS "hidden" attribute: + *

+     *    Path path = ...
+     *    Files.setAttribute(path, "dos:hidden", true);
+     * 
+ * + * @param path + * the path to the file + * @param attribute + * the attribute to set + * @param value + * the attribute value + * @param options + * options indicating how symbolic links are handled + * + * @return the {@code path} parameter + * + * @throws UnsupportedOperationException + * if the attribute view is not available or it does not support + * updating the attribute + * @throws IllegalArgumentException + * if the attribute value is of the correct type but has an + * inappropriate value + * @throws ClassCastException + * if the attribute value is not of the expected type or is a + * collection containing elements that are not of the expected + * type + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, its {@link SecurityManager#checkWrite(String) checkWrite} + * method denies write access to the file. If this method is invoked + * to set security sensitive attributes then the security manager + * may be invoked to check for additional permissions. + */ + public static Path setAttribute(Path path, String attribute, Object value, + LinkOption... options) + throws IOException + { + provider(path).setAttribute(path, attribute, value, options); + return path; + } + + /** + * Reads the value of a file attribute. + * + *

The {@code attribute} parameter identifies the attribute to be read + * and takes the form: + *

+ * [view-name:]attribute-name + *
+ * where square brackets [...] delineate an optional component and the + * character {@code ':'} stands for itself. + * + *

view-name is the {@link FileAttributeView#name name} of a {@link + * FileAttributeView} that identifies a set of file attributes. If not + * specified then it defaults to {@code "basic"}, the name of the file + * attribute view that identifies the basic set of file attributes common to + * many file systems. attribute-name is the name of the attribute. + * + *

The {@code options} array may be used to indicate how symbolic links + * are handled for the case that the file is a symbolic link. By default, + * symbolic links are followed and the file attribute of the final target + * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS + * NOFOLLOW_LINKS} is present then symbolic links are not followed. + * + *

Usage Example: + * Suppose we require the user ID of the file owner on a system that + * supports a "{@code unix}" view: + *

+     *    Path path = ...
+     *    int uid = (Integer)Files.getAttribute(path, "unix:uid");
+     * 
+ * + * @param path + * the path to the file + * @param attribute + * the attribute to read + * @param options + * options indicating how symbolic links are handled + * + * @return the attribute value or {@code null} if the attribute view + * is not available or it does not support reading the attribute + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, its {@link SecurityManager#checkRead(String) checkRead} + * method denies read access to the file. If this method is invoked + * to read security sensitive attributes then the security manager + * may be invoked to check for additional permissions. + */ + public static Object getAttribute(Path path, String attribute, + LinkOption... options) + throws IOException + { + // only one attribute should be read + if (attribute.indexOf('*') >= 0 || attribute.indexOf(',') >= 0) + return null; + Map map = readAttributes(path, attribute, options); + String name; + int pos = attribute.indexOf(':'); + if (pos == -1) { + name = attribute; + } else { + name = (pos == attribute.length()) ? "" : attribute.substring(pos+1); + } + return map.get(name); + } + + /** + * Reads a set of file attributes as a bulk operation. + * + *

The {@code attributes} parameter identifies the attributes to be read + * and takes the form: + *

+ * [view-name:]attribute-list + *
+ * where square brackets [...] delineate an optional component and the + * character {@code ':'} stands for itself. + * + *

view-name is the {@link FileAttributeView#name name} of a {@link + * FileAttributeView} that identifies a set of file attributes. If not + * specified then it defaults to {@code "basic"}, the name of the file + * attribute view that identifies the basic set of file attributes common to + * many file systems. + * + *

The attribute-list component is a comma separated list of + * zero or more names of attributes to read. If the list contains the value + * {@code "*"} then all attributes are read. Attributes that are not supported + * are ignored and will not be present in the returned map. It is + * implementation specific if all attributes are read as an atomic operation + * with respect to other file system operations. + * + *

The following examples demonstrate possible values for the {@code + * attributes} parameter: + * + *

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
{@code "*"} Read all {@link BasicFileAttributes basic-file-attributes}.
{@code "size,lastModifiedTime,lastAccessTime"} Reads the file size, last modified time, and last access time + * attributes.
{@code "posix:*"} Read all {@link PosixFileAttributes POSIX-file-attributes}.
{@code "posix:permissions,owner,size"} Reads the POSX file permissions, owner, and file size.
+ *
+ * + *

The {@code options} array may be used to indicate how symbolic links + * are handled for the case that the file is a symbolic link. By default, + * symbolic links are followed and the file attribute of the final target + * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS + * NOFOLLOW_LINKS} is present then symbolic links are not followed. + * + * @param path + * the path to the file + * @param attributes + * the attributes to read + * @param options + * options indicating how symbolic links are handled + * + * @return a map of the attributes returned; may be empty. The map's keys + * are the attribute names, its values are the attribute values + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, its {@link SecurityManager#checkRead(String) checkRead} + * method denies read access to the file. If this method is invoked + * to read security sensitive attributes then the security manager + * may be invoke to check for additional permissions. + */ + public static Map readAttributes(Path path, String attributes, + LinkOption... options) + throws IOException + { + return provider(path).readAttributes(path, attributes, options); + } + + /** + * Returns a file's POSIX file permissions. + * + *

The {@code path} parameter is associated with a {@code FileSystem} + * that supports the {@link PosixFileAttributeView}. This attribute view + * provides access to file attributes commonly associated with files on file + * systems used by operating systems that implement the Portable Operating + * System Interface (POSIX) family of standards. + * + *

The {@code options} array may be used to indicate how symbolic links + * are handled for the case that the file is a symbolic link. By default, + * symbolic links are followed and the file attribute of the final target + * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS + * NOFOLLOW_LINKS} is present then symbolic links are not followed. + * + * @param path + * the path to the file + * @param options + * options indicating how symbolic links are handled + * + * @return the file permissions + * + * @throws UnsupportedOperationException + * if the associated file system does not support the {@code + * PosixFileAttributeView} + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, a security manager is + * installed, and it denies {@link RuntimePermission}("accessUserInformation") + * or its {@link SecurityManager#checkRead(String) checkRead} method + * denies read access to the file. + */ + public static Set getPosixFilePermissions(Path path, + LinkOption... options) + throws IOException + { + return readAttributes(path, PosixFileAttributes.class, options).permissions(); + } + + /** + * Sets a file's POSIX permissions. + * + *

The {@code path} parameter is associated with a {@code FileSystem} + * that supports the {@link PosixFileAttributeView}. This attribute view + * provides access to file attributes commonly associated with files on file + * systems used by operating systems that implement the Portable Operating + * System Interface (POSIX) family of standards. + * + * @param path + * A file reference that locates the file + * @param perms + * The new set of permissions + * + * @throws UnsupportedOperationException + * if the associated file system does not support the {@code + * PosixFileAttributeView} + * @throws ClassCastException + * if the sets contains elements that are not of type {@code + * PosixFilePermission} + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, it denies {@link RuntimePermission}("accessUserInformation") + * or its {@link SecurityManager#checkWrite(String) checkWrite} + * method denies write access to the file. + */ + public static Path setPosixFilePermissions(Path path, + Set perms) + throws IOException + { + PosixFileAttributeView view = + getFileAttributeView(path, PosixFileAttributeView.class); + if (view == null) + throw new UnsupportedOperationException(); + view.setPermissions(perms); + return path; + } + + /** + * Returns the owner of a file. + * + *

The {@code path} parameter is associated with a file system that + * supports {@link FileOwnerAttributeView}. This file attribute view provides + * access to a file attribute that is the owner of the file. + * + * @param path + * A file reference that locates the file + * @param options + * options indicating how symbolic links are handled + * + * @return A user principal representing the owner of the file + * + * @throws UnsupportedOperationException + * if the associated file system does not support the {@code + * FileOwnerAttributeView} + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, it denies {@link RuntimePermission}("accessUserInformation") + * or its {@link SecurityManager#checkRead(String) checkRead} method + * denies read access to the file. + */ + public static UserPrincipal getOwner(Path path, LinkOption... options) throws IOException { + FileOwnerAttributeView view = + getFileAttributeView(path, FileOwnerAttributeView.class, options); + if (view == null) + throw new UnsupportedOperationException(); + return view.getOwner(); + } + + /** + * Updates the file owner. + * + *

The {@code path} parameter is associated with a file system that + * supports {@link FileOwnerAttributeView}. This file attribute view provides + * access to a file attribute that is the owner of the file. + * + *

Usage Example: + * Suppose we want to make "joe" the owner of a file: + *

+     *     Path path = ...
+     *     UserPrincipalLookupService lookupService =
+     *         provider(path).getUserPrincipalLookupService();
+     *     UserPrincipal joe = lookupService.lookupPrincipalByName("joe");
+     *     Files.setOwner(path, joe);
+     * 
+ * + * @param path + * A file reference that locates the file + * @param owner + * The new file owner + * + * @throws UnsupportedOperationException + * if the associated file system does not support the {@code + * FileOwnerAttributeView} + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, it denies {@link RuntimePermission}("accessUserInformation") + * or its {@link SecurityManager#checkWrite(String) checkWrite} + * method denies write access to the file. + * + * @see FileSystem#getUserPrincipalLookupService + * @see java.nio.file.attribute.UserPrincipalLookupService + */ + public static Path setOwner(Path path, UserPrincipal owner) + throws IOException + { + FileOwnerAttributeView view = + getFileAttributeView(path, FileOwnerAttributeView.class); + if (view == null) + throw new UnsupportedOperationException(); + view.setOwner(owner); + return path; + } + + /** + * Tests whether a file is a symbolic link. + * + *

Where is it required to distinguish an I/O exception from the case + * that the file is not a symbolic link then the file attributes can be + * read with the {@link #readAttributes(Path,Class,LinkOption[]) + * readAttributes} method and the file type tested with the {@link + * BasicFileAttributes#isSymbolicLink} method. + * + * @return {@code true} if the file is a symbolic link; {@code false} if + * the file does not exist, is not a symbolic link, or it cannot + * be determined if the file is symbolic link or not. + * + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, its {@link SecurityManager#checkRead(String) checkRead} + * method denies read access to the file. + */ + public static boolean isSymbolicLink(Path path) { + try { + return readAttributes(path, + BasicFileAttributes.class, + LinkOption.NOFOLLOW_LINKS).isSymbolicLink(); + } catch (IOException ioe) { + return false; + } + } + + /** + * Tests whether a file is a directory. + * + *

The {@code options} array may be used to indicate how symbolic links + * are handled for the case that the file is a symbolic link. By default, + * symbolic links are followed and the file attribute of the final target + * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS + * NOFOLLOW_LINKS} is present then symbolic links are not followed. + * + *

Where is it required to distinguish an I/O exception from the case + * that the file is not a directory then the file attributes can be + * read with the {@link #readAttributes(Path,Class,LinkOption[]) + * readAttributes} method and the file type tested with the {@link + * BasicFileAttributes#isDirectory} method. + * + * @param path + * the path to the file to test + * @param options + * options indicating how symbolic links are handled + * + * @return {@code true} if the file is a directory; {@code false} if + * the file does not exist, is not a directory, or it cannot + * be determined if the file is directory or not. + * + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, its {@link SecurityManager#checkRead(String) checkRead} + * method denies read access to the file. + */ + public static boolean isDirectory(Path path, LinkOption... options) { + try { + return readAttributes(path, BasicFileAttributes.class, options).isDirectory(); + } catch (IOException ioe) { + return false; + } + } + + /** + * Tests whether a file is a regular file with opaque content. + * + *

The {@code options} array may be used to indicate how symbolic links + * are handled for the case that the file is a symbolic link. By default, + * symbolic links are followed and the file attribute of the final target + * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS + * NOFOLLOW_LINKS} is present then symbolic links are not followed. + * + *

Where is it required to distinguish an I/O exception from the case + * that the file is not a regular file then the file attributes can be + * read with the {@link #readAttributes(Path,Class,LinkOption[]) + * readAttributes} method and the file type tested with the {@link + * BasicFileAttributes#isRegularFile} method. + * + * @param path + * the path to the file + * @param options + * options indicating how symbolic links are handled + * + * @return {@code true} if the file is a regular file; {@code false} if + * the file does not exist, is not a direcregular filetory, or it + * cannot be determined if the file is regular file or not. + * + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, its {@link SecurityManager#checkRead(String) checkRead} + * method denies read access to the file. + */ + public static boolean isRegularFile(Path path, LinkOption... options) { + try { + return readAttributes(path, BasicFileAttributes.class, options).isRegularFile(); + } catch (IOException ioe) { + return false; + } + } + + /** + * Returns a file's last modified time. + * + *

The {@code options} array may be used to indicate how symbolic links + * are handled for the case that the file is a symbolic link. By default, + * symbolic links are followed and the file attribute of the final target + * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS + * NOFOLLOW_LINKS} is present then symbolic links are not followed. + * + * @param path + * the path to the file + * @param options + * options indicating how symbolic links are handled + * + * @return a {@code FileTime} representing the time the file was last + * modified, or an implementation specific default when a time + * stamp to indicate the time of last modification is not supported + * by the file system + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, its {@link SecurityManager#checkRead(String) checkRead} + * method denies read access to the file. + * + * @see BasicFileAttributes#lastModifiedTime + */ + public static FileTime getLastModifiedTime(Path path, LinkOption... options) + throws IOException + { + return readAttributes(path, BasicFileAttributes.class, options).lastModifiedTime(); + } + + /** + * Updates a file's last modified time attribute. The file time is converted + * to the epoch and precision supported by the file system. Converting from + * finer to coarser granularities result in precision loss. The behavior of + * this method when attempting to set the last modified time when it is not + * supported by the file system or is outside the range supported by the + * underlying file store is not defined. It may or not fail by throwing an + * {@code IOException}. + * + *

Usage Example: + * Suppose we want to set the last modified time to the current time: + *

+     *    Path path = ...
+     *    FileTime now = FileTime.fromMillis(System.currentTimeMillis());
+     *    Files.setLastModifiedTime(path, now);
+     * 
+ * + * @param path + * the path to the file + * @param time + * the new last modified time + * + * @return the file + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, the security manager's {@link + * SecurityManager#checkWrite(String) checkWrite} method is invoked + * to check write access to file + * + * @see BasicFileAttributeView#setTimes + */ + public static Path setLastModifiedTime(Path path, FileTime time) + throws IOException + { + getFileAttributeView(path, BasicFileAttributeView.class) + .setTimes(time, null, null); + return path; + } + + /** + * Returns the size of a file (in bytes). The size may differ from the + * actual size on the file system due to compression, support for sparse + * files, or other reasons. The size of files that are not {@link + * #isRegularFile regular} files is implementation specific and + * therefore unspecified. + * + * @param path + * the path to the file + * + * @return the file size, in bytes + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, its {@link SecurityManager#checkRead(String) checkRead} + * method denies read access to the file. + * + * @see BasicFileAttributes#size + */ + public static long size(Path path) throws IOException { + return readAttributes(path, BasicFileAttributes.class).size(); + } + + // -- Accessibility -- + + /** + * Returns {@code false} if NOFOLLOW_LINKS is present. + */ + private static boolean followLinks(LinkOption... options) { + boolean followLinks = true; + for (LinkOption opt: options) { + if (opt == LinkOption.NOFOLLOW_LINKS) { + followLinks = false; + continue; + } + if (opt == null) + throw new NullPointerException(); + throw new AssertionError("Should not get here"); + } + return followLinks; + } + + /** + * Tests whether a file exists. + * + *

The {@code options} parameter may be used to indicate how symbolic links + * are handled for the case that the file is a symbolic link. By default, + * symbolic links are followed. If the option {@link LinkOption#NOFOLLOW_LINKS + * NOFOLLOW_LINKS} is present then symbolic links are not followed. + * + *

Note that the result of this method is immediately outdated. If this + * method indicates the file exists then there is no guarantee that a + * subsequence access will succeed. Care should be taken when using this + * method in security sensitive applications. + * + * @param path + * the path to the file to test + * @param options + * options indicating how symbolic links are handled + * . + * @return {@code true} if the file exists; {@code false} if the file does + * not exist or its existence cannot be determined. + * + * @throws SecurityException + * In the case of the default provider, the {@link + * SecurityManager#checkRead(String)} is invoked to check + * read access to the file. + * + * @see #notExists + */ + public static boolean exists(Path path, LinkOption... options) { + try { + if (followLinks(options)) { + provider(path).checkAccess(path); + } else { + // attempt to read attributes without following links + readAttributes(path, BasicFileAttributes.class, + LinkOption.NOFOLLOW_LINKS); + } + // file exists + return true; + } catch (IOException x) { + // does not exist or unable to determine if file exists + return false; + } + + } + + /** + * Tests whether the file located by this path does not exist. This method + * is intended for cases where it is required to take action when it can be + * confirmed that a file does not exist. + * + *

The {@code options} parameter may be used to indicate how symbolic links + * are handled for the case that the file is a symbolic link. By default, + * symbolic links are followed. If the option {@link LinkOption#NOFOLLOW_LINKS + * NOFOLLOW_LINKS} is present then symbolic links are not followed. + * + *

Note that this method is not the complement of the {@link #exists + * exists} method. Where it is not possible to determine if a file exists + * or not then both methods return {@code false}. As with the {@code exists} + * method, the result of this method is immediately outdated. If this + * method indicates the file does exist then there is no guarantee that a + * subsequence attempt to create the file will succeed. Care should be taken + * when using this method in security sensitive applications. + * + * @param path + * the path to the file to test + * @param options + * options indicating how symbolic links are handled + * + * @return {@code true} if the file does not exist; {@code false} if the + * file exists or its existence cannot be determined + * + * @throws SecurityException + * In the case of the default provider, the {@link + * SecurityManager#checkRead(String)} is invoked to check + * read access to the file. + */ + public static boolean notExists(Path path, LinkOption... options) { + try { + if (followLinks(options)) { + provider(path).checkAccess(path); + } else { + // attempt to read attributes without following links + readAttributes(path, BasicFileAttributes.class, + LinkOption.NOFOLLOW_LINKS); + } + // file exists + return false; + } catch (NoSuchFileException x) { + // file confirmed not to exist + return true; + } catch (IOException x) { + return false; + } + } + + /** + * Used by isReadbale, isWritable, isExecutable to test access to a file. + */ + private static boolean isAccessible(Path path, AccessMode... modes) { + try { + provider(path).checkAccess(path, modes); + return true; + } catch (IOException x) { + return false; + } + } + + /** + * Tests whether a file is readable. This method checks that a file exists + * and that this Java virtual machine has appropriate privileges that would + * allow it open the file for reading. Depending on the implementation, this + * method may require to read file permissions, access control lists, or + * other file attributes in order to check the effective access to the file. + * Consequently, this method may not be atomic with respect to other file + * system operations. + * + *

Note that the result of this method is immediately outdated, there is + * no guarantee that a subsequent attempt to open the file for reading will + * succeed (or even that it will access the same file). Care should be taken + * when using this method in security sensitive applications. + * + * @param path + * the path to the file to check + * + * @return {@code true} if the file exists and is readable; {@code false} + * if the file does not exist, read access would be denied because + * the Java virtual machine has insufficient privileges, or access + * cannot be determined + * + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * is invoked to check read access to the file. + */ + public static boolean isReadable(Path path) { + return isAccessible(path, AccessMode.READ); + } + + /** + * Tests whether a file is writable. This method checks that a file exists + * and that this Java virtual machine has appropriate privileges that would + * allow it open the file for writing. Depending on the implementation, this + * method may require to read file permissions, access control lists, or + * other file attributes in order to check the effective access to the file. + * Consequently, this method may not be atomic with respect to other file + * system operations. + * + *

Note that result of this method is immediately outdated, there is no + * guarantee that a subsequent attempt to open the file for writing will + * succeed (or even that it will access the same file). Care should be taken + * when using this method in security sensitive applications. + * + * @param path + * the path to the file to check + * + * @return {@code true} if the file exists and is writable; {@code false} + * if the file does not exist, write access would be denied because + * the Java virtual machine has insufficient privileges, or access + * cannot be determined + * + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * is invoked to check write access to the file. + */ + public static boolean isWritable(Path path) { + return isAccessible(path, AccessMode.WRITE); + } + + /** + * Tests whether a file is executable. This method checks that a file exists + * and that this Java virtual machine has appropriate privileges to {@link + * Runtime#exec execute} the file. The semantics may differ when checking + * access to a directory. For example, on UNIX systems, checking for + * execute access checks that the Java virtual machine has permission to + * search the directory in order to access file or subdirectories. + * + *

Depending on the implementation, this method may require to read file + * permissions, access control lists, or other file attributes in order to + * check the effective access to the file. Consequently, this method may not + * be atomic with respect to other file system operations. + * + *

Note that the result of this method is immediately outdated, there is + * no guarantee that a subsequent attempt to execute the file will succeed + * (or even that it will access the same file). Care should be taken when + * using this method in security sensitive applications. + * + * @param path + * the path to the file to check + * + * @return {@code true} if the file exists and is executable; {@code false} + * if the file does not exist, execute access would be denied because + * the Java virtual machine has insufficient privileges, or access + * cannot be determined + * + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkExec(String) + * checkExec} is invoked to check execute access to the file. + */ + public static boolean isExecutable(Path path) { + return isAccessible(path, AccessMode.EXECUTE); + } + + // -- Recursive operations -- + /** * Walks a file tree. * @@ -139,7 +2484,7 @@ public final class Files { * an uncaught error, or runtime exception, then the traversal is terminated * and the error or exception is propagated to the caller of this method. * - *

For each file encountered this method attempts to gets its {@link + *

For each file encountered this method attempts to read its {@link * java.nio.file.attribute.BasicFileAttributes}. If the file is not a * directory then the {@link FileVisitor#visitFile visitFile} method is * invoked with the file attributes. If the file attributes cannot be read, @@ -174,7 +2519,7 @@ public final class Files { * arises when there is an entry in a directory that is an ancestor of the * directory. Cycle detection is done by recording the {@link * java.nio.file.attribute.BasicFileAttributes#fileKey file-key} of directories, - * or if file keys are not available, by invoking the {@link Path#isSameFile + * or if file keys are not available, by invoking the {@link #isSameFile * isSameFile} method to test if a directory is the same file as an * ancestor. When a cycle is detected it is treated as an I/O error, and the * {@link FileVisitor#visitFileFailed visitFileFailed} method is invoked with @@ -197,25 +2542,27 @@ public final class Files { * that file (or directory). * * @param start - * The starting file + * the starting file * @param options - * Options to configure the traversal + * options to configure the traversal * @param maxDepth - * The maximum number of directory levels to visit + * the maximum number of directory levels to visit * @param visitor - * The file visitor to invoke for each file + * the file visitor to invoke for each file + * + * @return the starting file * * @throws IllegalArgumentException - * If the {@code maxDepth} parameter is negative + * if the {@code maxDepth} parameter is negative * @throws SecurityException * If the security manager denies access to the starting file. * In the case of the default provider, the {@link * SecurityManager#checkRead(String) checkRead} method is invoked * to check read access to the directory. * @throws IOException - * If an I/O error is thrown by a visitor method + * if an I/O error is thrown by a visitor method */ - public static void walkFileTree(Path start, + public static Path walkFileTree(Path start, Set options, int maxDepth, FileVisitor visitor) @@ -224,6 +2571,7 @@ public final class Files { if (maxDepth < 0) throw new IllegalArgumentException("'maxDepth' is negative"); new FileTreeWalker(options, visitor, maxDepth).walk(start); + return start; } /** @@ -234,11 +2582,15 @@ public final class Files { *

      * walkFileTree(start, EnumSet.noneOf(FileVisitOption.class), Integer.MAX_VALUE, visitor)
      * 
+ * In other words, it does not follow symbolic links, and visits all levels + * of the file level. * * @param start - * The starting file + * the starting file * @param visitor - * The file visitor to invoke for each file + * the file visitor to invoke for each file + * + * @return the starting file * * @throws SecurityException * If the security manager denies access to the starting file. @@ -246,118 +2598,511 @@ public final class Files { * SecurityManager#checkRead(String) checkRead} method is invoked * to check read access to the directory. * @throws IOException - * If an I/O error is thrown by a visitor method + * if an I/O error is thrown by a visitor method */ - public static void walkFileTree(Path start, FileVisitor visitor) + public static Path walkFileTree(Path start, FileVisitor visitor) throws IOException { - walkFileTree(start, - EnumSet.noneOf(FileVisitOption.class), - Integer.MAX_VALUE, - visitor); + return walkFileTree(start, + EnumSet.noneOf(FileVisitOption.class), + Integer.MAX_VALUE, + visitor); + } + + + // -- Utility methods for simple usages -- + + // buffer size used for reading and writing + private static final int BUFFER_SIZE = 8192; + + /** + * Opens a file for reading, returning a {@code BufferedReader} that may be + * used to read text from the file in an efficient manner. Bytes from the + * file are decoded into characters using the specified charset. Reading + * commences at the beginning of the file. + * + *

The {@code Reader} methods that read from the file throw {@code + * IOException} if a malformed or unmappable byte sequence is read. + * + * @param path + * the path to the file + * @param cs + * the charset to use for decoding + * + * @return a new buffered reader, with default buffer size, to read text + * from the file + * + * @throws IOException + * if an I/O error occurs opening the file + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file. + * + * @see #readAllLines + */ + public static BufferedReader newBufferedReader(Path path, Charset cs) + throws IOException + { + CharsetDecoder decoder = cs.newDecoder(); + Reader reader = new InputStreamReader(newInputStream(path), decoder); + return new BufferedReader(reader); } /** - * Creates a directory by creating all nonexistent parent directories first. + * Opens or creates a file for writing, returning a {@code BufferedWriter} + * that may be used to write text to the file in an efficient manner. + * The {@code options} parameter specifies how the the file is created or + * opened. If no options are present then this method works as if the {@link + * StandardOpenOption#CREATE CREATE}, {@link + * StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING}, and {@link + * StandardOpenOption#WRITE WRITE} options are present. In other words, it + * opens the file for writing, creating the file if it doesn't exist, or + * initially truncating an existing {@link #isRegularFile regular-file} to + * a size of {@code 0} if it exists. * - *

The {@code attrs} parameter is an optional array of {@link FileAttribute - * file-attributes} to set atomically when creating the nonexistent - * directories. Each file attribute is identified by its {@link - * FileAttribute#name name}. If more than one attribute of the same name is - * included in the array then all but the last occurrence is ignored. + *

The {@code Writer} methods to write text throw {@code IOException} + * if the text cannot be encoded using the specified charset. * - *

If this method fails, then it may do so after creating some, but not - * all, of the parent directories. + * @param path + * the path to the file + * @param cs + * the charset to use for encoding + * @param options + * options specifying how the file is opened * - * @param dir - * the directory to create + * @return a new buffered writer, with default buffer size, to write text + * to the file * - * @param attrs - * an optional list of file attributes to set atomically when - * creating the directory - * - * @throws UnsupportedOperationException - * if the array contains an attribute that cannot be set atomically - * when creating the directory - * @throws FileAlreadyExistsException - * if {@code dir} exists but is not a directory (optional specific - * exception) * @throws IOException - * if an I/O error occurs + * if an I/O error occurs opening or creating the file + * @throws UnsupportedOperationException + * if an unsupported option is specified * @throws SecurityException - * in the case of the default provider, and a security manager is + * In the case of the default provider, and a security manager is * installed, the {@link SecurityManager#checkWrite(String) checkWrite} - * method is invoked prior to attempting to create a directory and - * its {@link SecurityManager#checkRead(String) checkRead} is - * invoked for each parent directory that is checked. If {@code - * dir} is not an absolute path then its {@link Path#toAbsolutePath - * toAbsolutePath} may need to be invoked to get its absolute path. - * This may invoke the security manager's {@link - * SecurityManager#checkPropertyAccess(String) checkPropertyAccess} - * method to check access to the system property {@code user.dir} + * method is invoked to check write access to the file. * + * @see #write(Path,Iterable,Charset,OpenOption[]) */ - public static void createDirectories(Path dir, FileAttribute... attrs) + public static BufferedWriter newBufferedWriter(Path path, Charset cs, + OpenOption... options) throws IOException { - // attempt to create the directory - try { - createAndCheckIsDirectory(dir, attrs); - return; - } catch (FileAlreadyExistsException x) { - // file exists and is not a directory - throw x; - } catch (IOException x) { - // parent may not exist or other reason + CharsetEncoder encoder = cs.newEncoder(); + Writer writer = new OutputStreamWriter(newOutputStream(path, options), encoder); + return new BufferedWriter(writer); + } + + /** + * Reads all bytes from an input stream and writes them to an output stream. + */ + private static long copy(InputStream source, OutputStream sink) + throws IOException + { + long nread = 0L; + byte[] buf = new byte[BUFFER_SIZE]; + int n; + while ((n = source.read(buf)) > 0) { + sink.write(buf, 0, n); + nread += n; + } + return nread; + } + + /** + * Copies all bytes from an input stream to a file. On return, the input + * stream will be at end of stream. + * + *

By default, the copy fails if the target file already exists or is a + * symbolic link. If the {@link StandardCopyOption#REPLACE_EXISTING + * REPLACE_EXISTING} option is specified, and the target file already exists, + * then it is replaced if it is not a non-empty directory. If the target + * file exists and is a symbolic link, then the symbolic link is replaced. + * In this release, the {@code REPLACE_EXISTING} option is the only option + * required to be supported by this method. Additional options may be + * supported in future releases. + * + *

If an I/O error occurs reading from the input stream or writing to + * the file, then it may do so after the target file has been created and + * after some bytes have been read or written. Consequently the input + * stream may not be at end of stream and may be in an inconsistent state. + * It is strongly recommended that the input stream be promptly closed if an + * I/O error occurs. + * + *

This method may block indefinitely reading from the input stream (or + * writing to the file). The behavior for the case that the input stream is + * asynchronously closed or the thread interrupted during the copy is + * highly input stream and file system provider specific and therefore not + * specified. + * + *

Usage example: Suppose we want to capture a web page and save + * it to a file: + *

+     *     Path path = ...
+     *     URI u = URI.create("http://java.sun.com/");
+     *     try (InputStream in = u.toURL().openStream()) {
+     *         Files.copy(in, path);
+     *     }
+     * 
+ * + * @param in + * the input stream to read from + * @param target + * the path to the file + * @param options + * options specifying how the copy should be done + * + * @return the number of bytes read or written + * + * @throws IOException + * if an I/O error occurs when reading or writing + * @throws FileAlreadyExistsException + * if the target file exists but cannot be replaced because the + * {@code REPLACE_EXISTING} option is not specified (optional + * specific exception) + * @throws DirectoryNotEmptyException + * the {@code REPLACE_EXISTING} option is specified but the file + * cannot be replaced because it is a non-empty directory + * (optional specific exception) * + * @throws UnsupportedOperationException + * if {@code options} contains a copy option that is not supported + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to the file. Where the + * {@code REPLACE_EXISTING} option is specified, the security + * manager's {@link SecurityManager#checkDelete(String) checkDelete} + * method is invoked to check that an existing file can be deleted. + */ + public static long copy(InputStream in, Path target, CopyOption... options) + throws IOException + { + // ensure not null before opening file + Objects.requireNonNull(in); + + // check for REPLACE_EXISTING + boolean replaceExisting = false; + for (CopyOption opt: options) { + if (opt == StandardCopyOption.REPLACE_EXISTING) { + replaceExisting = true; + } else { + if (opt == null) { + throw new NullPointerException("options contains 'null'"); + } else { + throw new UnsupportedOperationException(opt + " not supported"); + } + } } - // find existing parent (may require absolute path) + // attempt to delete an existing file SecurityException se = null; - try { - dir = dir.toAbsolutePath(); - } catch (SecurityException x) { - // don't have permission to get absolute path - se = x; - } - Path parent = dir.getParent(); - while (parent != null) { + if (replaceExisting) { try { - parent.checkAccess(); - break; - } catch (NoSuchFileException x) { - // does not exist + deleteIfExists(target); + } catch (SecurityException x) { + se = x; } - parent = parent.getParent(); } - if (parent == null) { - // unable to find existing parent + + // attempt to create target file. If it fails with + // FileAlreadyExistsException then it may be because the security + // manager prevented us from deleting the file, in which case we just + // throw the SecurityException. + OutputStream ostream; + try { + ostream = newOutputStream(target, StandardOpenOption.CREATE_NEW, + StandardOpenOption.WRITE); + } catch (FileAlreadyExistsException x) { if (se != null) throw se; - throw new IOException("Root directory does not exist"); + // someone else won the race and created the file + throw x; } - // create directories - Path child = parent; - for (Path name: parent.relativize(dir)) { - child = child.resolve(name); - createAndCheckIsDirectory(child, attrs); + // do the copy + try (OutputStream out = ostream) { + return copy(in, out); } } /** - * Attempts to create a directory. Does nothing if the directory already - * exists. + * Copies all bytes from a file to an output stream. + * + *

If an I/O error occurs reading from the file or writing to the output + * stream, then it may do so after some bytes have been read or written. + * Consequently the output stream may be in an inconsistent state. It is + * strongly recommended that the output stream be promptly closed if an I/O + * error occurs. + * + *

This method may block indefinitely writing to the output stream (or + * reading from the file). The behavior for the case that the output stream + * is asynchronously closed or the thread interrupted during the copy + * is highly output stream and file system provider specific and therefore + * not specified. + * + *

Note that if the given output stream is {@link java.io.Flushable} + * then its {@link java.io.Flushable#flush flush} method may need to invoked + * after this method completes so as to flush any buffered output. + * + * @param source + * the path to the file + * @param out + * the output stream to write to + * + * @return the number of bytes read or written + * + * @throws IOException + * if an I/O error occurs when reading or writing + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file. */ - private static void createAndCheckIsDirectory(Path dir, FileAttribute... attrs) - throws IOException - { - try { - dir.createDirectory(attrs); - } catch (FileAlreadyExistsException x) { - boolean isDirectory = Attributes - .readBasicFileAttributes(dir, LinkOption.NOFOLLOW_LINKS).isDirectory(); - if (!isDirectory) - throw x; + public static long copy(Path source, OutputStream out) throws IOException { + // ensure not null before opening file + Objects.requireNonNull(out); + + try (InputStream in = newInputStream(source)) { + return copy(in, out); } } + + /** + * Read all the bytes from an input stream. The {@code initialSize} + * parameter indicates the initial size of the byte[] to allocate. + */ + private static byte[] read(InputStream source, int initialSize) + throws IOException + { + int capacity = initialSize; + byte[] buf = new byte[capacity]; + int nread = 0; + int rem = buf.length; + int n; + // read to EOF which may read more or less than initialSize (eg: file + // is truncated while we are reading) + while ((n = source.read(buf, nread, rem)) > 0) { + nread += n; + rem -= n; + assert rem >= 0; + if (rem == 0) { + // need larger buffer + int newCapacity = capacity << 1; + if (newCapacity < 0) { + if (capacity == Integer.MAX_VALUE) + throw new OutOfMemoryError("Required array size too large"); + newCapacity = Integer.MAX_VALUE; + } + rem = newCapacity - capacity; + buf = Arrays.copyOf(buf, newCapacity); + capacity = newCapacity; + } + } + return (capacity == nread) ? buf : Arrays.copyOf(buf, nread); + } + + /** + * Read all the bytes from a file. The method ensures that the file is + * closed when all bytes have been read or an I/O error, or other runtime + * exception, is thrown. + * + *

Note that this method is intended for simple cases where it is + * convenient to read all bytes into a byte array. It is not intended for + * reading in large files. + * + * @param path + * the path to the file + * + * @return a byte array containing the bytes read from the file + * + * @throws IOException + * if an I/O error occurs reading from the stream + * @throws OutOfMemoryError + * if an array of the required size cannot be allocated, for + * example the file is larger that {@code 2GB} + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file. + */ + public static byte[] readAllBytes(Path path) throws IOException { + long size = size(path); + if (size > (long)Integer.MAX_VALUE) + throw new OutOfMemoryError("Required array size too large"); + + try (InputStream in = newInputStream(path)) { + return read(in, (int)size); + } + } + + /** + * Read all lines from a file. This method ensures that the file is + * closed when all bytes have been read or an I/O error, or other runtime + * exception, is thrown. Bytes from the file are decoded into characters + * using the specified charset. + * + *

This method recognizes the following as line terminators: + *

    + *
  • \u000D followed by \u000A, + * CARRIAGE RETURN followed by LINE FEED
  • + *
  • \u000A, LINE FEED
  • + *
  • \u000D, CARRIAGE RETURN
  • + *
+ *

Additional Unicode line terminators may be recognized in future + * releases. + * + *

Note that this method is intended for simple cases where it is + * convenient to read all lines in a single operation. It is not intended + * for reading in large files. + * + * @param path + * the path to the file + * @param cs + * the charset to use for decoding + * + * @return the lines from the file as a {@code List}; whether the {@code + * List} is modifiable or not is implementation dependent and + * therefore not specified + * + * @throws IOException + * if an I/O error occurs reading from the file or a malformed or + * unmappable byte sequence is read + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file. + * + * @see #newBufferedReader + */ + public static List readAllLines(Path path, Charset cs) + throws IOException + { + try (BufferedReader reader = newBufferedReader(path, cs)) { + List result = new ArrayList<>(); + for (;;) { + String line = reader.readLine(); + if (line == null) + break; + result.add(line); + } + return result; + } + } + + /** + * Writes bytes to a file. The {@code options} parameter specifies how the + * the file is created or opened. If no options are present then this method + * works as if the {@link StandardOpenOption#CREATE CREATE}, {@link + * StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING}, and {@link + * StandardOpenOption#WRITE WRITE} options are present. In other words, it + * opens the file for writing, creating the file if it doesn't exist, or + * initially truncating an existing {@link #isRegularFile regular-file} to + * a size of {@code 0}. All bytes in the byte array are written to the file. + * The method ensures that the file is closed when all bytes have been + * written (or an I/O error or other runtime exception is thrown). If an I/O + * error occurs then it may do so after the file has created or truncated, + * or after some bytes have been written to the file. + * + *

Usage example: By default the method creates a new file or + * overrides an existing file. Suppose you instead want to append bytes + * to an existing file: + *

+     *     Path path = ...
+     *     byte[] bytes = ...
+     *     Files.write(path, bytes, StandardOpenOption.APPEND);
+     * 
+ * + * @param path + * the path to the file + * @param bytes + * the byte array with the bytes to write + * @param options + * options specifying how the file is opened + * + * @return the path + * + * @throws IOException + * if an I/O error occurs writing to or creating the file + * @throws UnsupportedOperationException + * if an unsupported option is specified + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to the file. + */ + public static Path write(Path path, byte[] bytes, OpenOption... options) + throws IOException + { + // ensure bytes is not null before opening file + Objects.requireNonNull(bytes); + + try (OutputStream out = Files.newOutputStream(path, options)) { + int len = bytes.length; + int rem = len; + while (rem > 0) { + int n = Math.min(rem, BUFFER_SIZE); + out.write(bytes, (len-rem), n); + rem -= n; + } + } + return path; + } + + /** + * Write lines of text to a file. Each line is a char sequence and is + * written to the file in sequence with each line terminated by the + * platform's line separator, as defined by the system property {@code + * line.separator}. Characters are encoded into bytes using the specified + * charset. + * + *

The {@code options} parameter specifies how the the file is created + * or opened. If no options are present then this method works as if the + * {@link StandardOpenOption#CREATE CREATE}, {@link + * StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING}, and {@link + * StandardOpenOption#WRITE WRITE} options are present. In other words, it + * opens the file for writing, creating the file if it doesn't exist, or + * initially truncating an existing {@link #isRegularFile regular-file} to + * a size of {@code 0}. The method ensures that the file is closed when all + * lines have been written (or an I/O error or other runtime exception is + * thrown). If an I/O error occurs then it may do so after the file has + * created or truncated, or after some bytes have been written to the file. + * + * @param path + * the path to the file + * @param lines + * an object to iterate over the char sequences + * @param cs + * the charset to use for encoding + * @param options + * options specifying how the file is opened + * + * @return the path + * + * @throws IOException + * if an I/O error occurs writing to or creating the file, or the + * text cannot be encoded using the specified charset + * @throws UnsupportedOperationException + * if an unsupported option is specified + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to the file. + */ + public static Path write(Path path, Iterable lines, + Charset cs, OpenOption... options) + throws IOException + { + // ensure lines is not null before opening file + Objects.requireNonNull(lines); + CharsetEncoder encoder = cs.newEncoder(); + OutputStream out = newOutputStream(path, options); + try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, encoder))) { + for (CharSequence line: lines) { + writer.append(line); + writer.newLine(); + } + } + return path; + } } diff --git a/jdk/src/share/classes/java/nio/file/LinkOption.java b/jdk/src/share/classes/java/nio/file/LinkOption.java index 7c8d97d4c3f..13a42ef7143 100644 --- a/jdk/src/share/classes/java/nio/file/LinkOption.java +++ b/jdk/src/share/classes/java/nio/file/LinkOption.java @@ -35,8 +35,8 @@ public enum LinkOption implements OpenOption, CopyOption { /** * Do not follow symbolic links. * - * @see FileRef#getFileAttributeView(Class,LinkOption[]) - * @see Path#copyTo + * @see Files#getFileAttributeView(Path,Class,LinkOption[]) + * @see Files#copy * @see SecureDirectoryStream#newByteChannel */ NOFOLLOW_LINKS; diff --git a/jdk/src/share/classes/java/nio/file/LinkPermission.java b/jdk/src/share/classes/java/nio/file/LinkPermission.java index 25d799f8c74..161d1b9d7af 100644 --- a/jdk/src/share/classes/java/nio/file/LinkPermission.java +++ b/jdk/src/share/classes/java/nio/file/LinkPermission.java @@ -59,8 +59,8 @@ import java.security.BasicPermission; * * @since 1.7 * - * @see Path#createLink - * @see Path#createSymbolicLink + * @see Files#createLink + * @see Files#createSymbolicLink */ public final class LinkPermission extends BasicPermission { static final long serialVersionUID = -1441492453772213220L; diff --git a/jdk/src/share/classes/java/nio/file/OpenOption.java b/jdk/src/share/classes/java/nio/file/OpenOption.java index aae5e27911d..522d5ddc4f0 100644 --- a/jdk/src/share/classes/java/nio/file/OpenOption.java +++ b/jdk/src/share/classes/java/nio/file/OpenOption.java @@ -29,8 +29,8 @@ package java.nio.file; * An object that configures how to open or create a file. * *

Objects of this type are used by methods such as {@link - * Path#newOutputStream(OpenOption[]) newOutputStream}, {@link - * Path#newByteChannel newByteChannel}, {@link + * Files#newOutputStream(Path,OpenOption[]) newOutputStream}, {@link + * Files#newByteChannel newByteChannel}, {@link * java.nio.channels.FileChannel#open FileChannel.open}, and {@link * java.nio.channels.AsynchronousFileChannel#open AsynchronousFileChannel.open} * when opening or creating a file. diff --git a/jdk/src/share/classes/java/nio/file/Path.java b/jdk/src/share/classes/java/nio/file/Path.java index b41e03f91be..85436b01d9a 100644 --- a/jdk/src/share/classes/java/nio/file/Path.java +++ b/jdk/src/share/classes/java/nio/file/Path.java @@ -25,147 +25,95 @@ package java.nio.file; -import java.nio.file.attribute.*; -import java.nio.channels.SeekableByteChannel; +import java.io.File; import java.io.IOException; -import java.io.OutputStream; import java.net.URI; import java.util.Iterator; -import java.util.Set; /** - * A file reference that locates a file using a system dependent path. The file - * is not required to exist. + * An object that may be used to locate a file in a file system. It will + * typically represent a system dependent file path. * - *

On many platforms a path is the means to locate and access files - * in a file system. A path is hierarchical and composed of a sequence of - * directory and file name elements separated by a special separator or - * delimiter. - * - *

Path operations

- * - *

A system dependent path represented by this class is conceptually a - * sequence of name elements and optionally a root component. The name - * that is farthest from the root of the directory hierarchy is the - * name of a file or directory. The other elements are directory names. The root - * component typically identifies a file system hierarchy. A {@code Path} can - * represent a root, a root and a sequence of names, or simply one or more name - * elements. It defines the {@link #getName() getName}, {@link #getParent - * getParent}, {@link #getRoot getRoot}, and {@link #subpath subpath} methods - * to access the components or a subsequence of its name elements. + *

A {@code Path} represents a path that is hierarchical and composed of a + * sequence of directory and file name elements separated by a special separator + * or delimiter. A root component, that identifies a file system + * hierarchy, may also be present. The name element that is farthest + * from the root of the directory hierarchy is the name of a file or directory. + * The other name elements are directory names. A {@code Path} can represent a + * root, a root and a sequence of names, or simply one or more name elements. + * A {@code Path} is considered to be an empty path if it consists + * solely of one name element that is empty. Accessing a file using an + * empty path is equivalent to accessing the default directory of the + * file system. {@code Path} defines the {@link #getFileName() getFileName}, + * {@link #getParent getParent}, {@link #getRoot getRoot}, and {@link #subpath + * subpath} methods to access the path components or a subsequence of its name + * elements. * *

In addition to accessing the components of a path, a {@code Path} also - * defines {@link #resolve(Path) resolve} and {@link #relativize relativize} - * operations. Paths can also be {@link #compareTo compared}, and tested - * against each other using using the {@link #startsWith startsWith} and {@link - * #endsWith endWith} methods. + * defines the {@link #resolve(Path) resolve} and {@link #resolveSibling(Path) + * resolveSibling} methods to combine paths. The {@link #relativize relativize} + * method that can be used to construct a relative path between two paths. + * Paths can be {@link #compareTo compared}, and tested against each other using + * the {@link #startsWith startsWith} and {@link #endsWith endWith} methods. * - *

File operations

+ *

This interface extends {@link Watchable} interface so that a directory + * located by a path can be {@link #register registered} with a {@link + * WatchService} and entries in the directory watched.

* - *

A {@code Path} is either absolute or relative. An - * absolute path is complete in that does not need to be combined with another - * path in order to locate a file. All operations on relative paths are first - * resolved against a file system's default directory as if by invoking the - * {@link #toAbsolutePath toAbsolutePath} method. + *

WARNING: This interface is only intended to be implemented by + * those developing custom file system implementations. Methods may be added to + * this interface in future releases.

* - *

In addition to the operations defined by the {@link FileRef} interface, - * this class defines the following operations: - * - *

    - *
  • The {@link #newByteChannel newByteChannel} method - * may be used to open a file and obtain a byte channel for reading or - * writing.

  • - *
  • Files may be {@link #createFile(FileAttribute[]) created}, or - * directories may be {@link #createDirectory(FileAttribute[]) created}. - *

  • - *
  • The {@link #delete delete} method may be used to delete a file. - *

  • - *
  • The {@link #checkAccess checkAccess} method may be used to check - * the existence or accessibility of a file.

  • - *
  • The {@link #isSameFile isSameFile} method may be used to test if - * two file references locate the same file.

  • - *
  • The {@link #getFileStore getFileStore} method may be used to - * obtain the {@link FileStore} representing the storage where a file is - * located.

  • - *
  • Directories can be {@link #newDirectoryStream opened} so as to - * iterate over the entries in the directory.

  • - *
  • Files can be {@link #copyTo(Path,CopyOption[]) copied} or - * {@link #moveTo(Path,CopyOption[]) moved}.

  • - *
  • Symbolic links may be {@link #createSymbolicLink created}, or the - * target of a symbolic link may be {@link #readSymbolicLink read}.

  • - *
  • The {@link #toRealPath real} path of an existing file may be - * obtained.

  • - *
- * - *

This class implements {@link Watchable} interface so that a directory - * located by a path can be {@link #register registered} with a {@link WatchService}. - * and entries in the directory watched. - * - *

File attributes

- * - * In addition to the {@link #setAttribute setAttribute} and {@link #getAttribute - * getAttribute} methods, the
{@code - * java.nio.file.attribute} package provides type-safe and efficient access - * to file attributes or meta-data associated with files. The {@link - * Attributes Attributes} class defines methods that operate on or return file - * attributes. For example, the file type, size, timestamps, and other - * basic meta-data are obtained, in bulk, by invoking the {@link - * Attributes#readBasicFileAttributes Attributes.readBasicFileAttributes} method: + *

Accessing Files

+ *

Paths may be used with the {@link Files} class to operate on files, + * directories, and other types of files. For example, suppose we want a {@link + * java.io.BufferedReader} to read text from a file "{@code access.log}". The + * file is located in a directory "{@code logs}" relative to the current working + * directory and is UTF-8 encoded. *

- *     Path file = ...
- *     BasicFileAttributes attrs = Attributes.readBasicFileAttributes(file);
+ *     Path path = FileSystems.getDefault().getPath("logs", "access.log");
+ *     BufferReader reader = Files.newBufferedReader(path, Charset.forName("UTF-8"));
  * 
* *

Interoperability

- * - *

Paths created by file systems associated with the default {@link + *

Paths associated with the default {@link * java.nio.file.spi.FileSystemProvider provider} are generally interoperable * with the {@link java.io.File java.io.File} class. Paths created by other * providers are unlikely to be interoperable with the abstract path names - * represented by {@code java.io.File}. The {@link java.io.File#toPath - * File.toPath} method may be used to obtain a {@code Path} from the abstract - * path name represented by a {@code java.io.File java.io.File} object. The - * resulting {@code Path} can be used to operate on the same file as the {@code - * java.io.File} object. - * - *

Path objects created by file systems associated with the default - * provider are interoperable with objects created by other file systems created - * by the same provider. Path objects created by file systems associated with - * other providers may not be interoperable with other file systems created by - * the same provider. The reasons for this are provider specific. + * represented by {@code java.io.File}. The {@link java.io.File#toPath toPath} + * method may be used to obtain a {@code Path} from the abstract path name + * represented by a {@code java.io.File} object. The resulting {@code Path} can + * be used to operate on the same file as the {@code java.io.File} object. In + * addition, the {@link #toFile toFile} method is useful to construct a {@code + * File} from the {@code String} representation of a {@code Path}. * *

Concurrency

- * - *

Instances of this class are immutable and safe for use by multiple concurrent - * threads. + *

Implementations of this interface are immutable and safe for use by + * multiple concurrent threads. * * @since 1.7 + * @see Paths */ -public abstract class Path - implements FileRef, Comparable, Iterable, Watchable +public interface Path + extends Comparable, Iterable, Watchable { - /** - * Initializes a new instance of this class. - */ - protected Path() { } - /** * Returns the file system that created this object. * * @return the file system that created this object */ - public abstract FileSystem getFileSystem(); + FileSystem getFileSystem(); /** * Tells whether or not this path is absolute. * - *

An absolute path is complete in that it doesn't need to be - * combined with other path information in order to locate a file. + *

An absolute path is complete in that it doesn't need to be combined + * with other path information in order to locate a file. * * @return {@code true} if, and only if, this path is absolute */ - public abstract boolean isAbsolute(); + boolean isAbsolute(); /** * Returns the root component of this path as a {@code Path} object, @@ -174,17 +122,17 @@ public abstract class Path * @return a path representing the root component of this path, * or {@code null} */ - public abstract Path getRoot(); + Path getRoot(); /** - * Returns the name of the file or directory denoted by this path. The - * file name is the farthest element from the root in the directory - * hierarchy. + * Returns the name of the file or directory denoted by this path as a + * {@code Path} object. The file name is the farthest element from + * the root in the directory hierarchy. * * @return a path representing the name of the file or directory, or * {@code null} if this path has zero elements */ - public abstract Path getName(); + Path getFileName(); /** * Returns the parent path, or {@code null} if this path does not @@ -209,7 +157,7 @@ public abstract class Path * * @return a path representing the path's parent */ - public abstract Path getParent(); + Path getParent(); /** * Returns the number of name elements in the path. @@ -217,10 +165,10 @@ public abstract class Path * @return the number of elements in the path, or {@code 0} if this path * only represents a root component */ - public abstract int getNameCount(); + int getNameCount(); - /** - * Returns a name element of this path. + /** + * Returns a name element of this path as a {@code Path} object. * *

The {@code index} parameter is the index of the name element to return. * The element that is closest to the root in the directory hierarchy @@ -237,7 +185,7 @@ public abstract class Path * equal to the number of elements, or this path has zero name * elements */ - public abstract Path getName(int index); + Path getName(int index); /** * Returns a relative {@code Path} that is a subsequence of the name @@ -264,7 +212,7 @@ public abstract class Path * the number of elements. If {@code endIndex} is less than or * equal to {@code beginIndex}, or larger than the number of elements. */ - public abstract Path subpath(int beginIndex, int endIndex); + Path subpath(int beginIndex, int endIndex); /** * Tests if this path starts with the given path. @@ -286,7 +234,25 @@ public abstract class Path * @return {@code true} if this path starts with the given path; otherwise * {@code false} */ - public abstract boolean startsWith(Path other); + boolean startsWith(Path other); + + /** + * Tests if this path starts with a {@code Path}, constructed by converting + * the given path string, in exactly the manner specified by the {@link + * #startsWith(Path) startsWith(Path)} method. On UNIX for example, the path + * "{@code foo/bar}" starts with "{@code foo}" and "{@code foo/bar}". It + * does not start with "{@code f}" or "{@code fo}". + * + * @param other + * the given path string + * + * @return {@code true} if this path starts with the given path; otherwise + * {@code false} + * + * @throws InvalidPathException + * If the path string cannot be converted to a Path. + */ + boolean startsWith(String other); /** * Tests if this path ends with the given path. @@ -310,7 +276,25 @@ public abstract class Path * @return {@code true} if this path ends with the given path; otherwise * {@code false} */ - public abstract boolean endsWith(Path other); + boolean endsWith(Path other); + + /** + * Tests if this path ends with a {@code Path}, constructed by converting + * the given path string, in exactly the manner specified by the {@link + * #endsWith(Path) endsWith(Path)} method. On UNIX for example, the path + * "{@code foo/bar}" ends with "{@code foo/bar}" and "{@code bar}". It does + * not end with "{@code r}" or "{@code /bar}". + * + * @param other + * the given path string + * + * @return {@code true} if this path starts with the given path; otherwise + * {@code false} + * + * @throws InvalidPathException + * If the path string cannot be converted to a Path. + */ + boolean endsWith(String other); /** * Returns a path that is this path with redundant name elements eliminated. @@ -330,14 +314,14 @@ public abstract class Path * path may result in the path that locates a different file than the original * path. This can arise when the preceding name is a symbolic link. * - * @return the resulting path, or this path if it does not contain - * redundant name elements, or {@code null} if this path does not - * have a root component and all name elements are redundant + * @return the resulting path or this path if it does not contain + * redundant name elements; an empty path is returned if this path + * does have a root component and all name elements are redundant * * @see #getParent * @see #toRealPath */ - public abstract Path normalize(); + Path normalize(); // -- resolution and relativization -- @@ -346,28 +330,31 @@ public abstract class Path * *

If the {@code other} parameter is an {@link #isAbsolute() absolute} * path then this method trivially returns {@code other}. If {@code other} - * is {@code null} then this path is returned. Otherwise this method - * considers this path to be a directory and resolves the given path - * against this path. In the simplest case, the given path does not have - * a {@link #getRoot root} component, in which case this method joins - * the given path to this path and returns a resulting path that {@link - * #endsWith ends} with the given path. Where the given path has a root - * component then resolution is highly implementation dependent and therefore - * unspecified. + * is an empty path then this method trivially returns this path. + * Otherwise this method considers this path to be a directory and resolves + * the given path against this path. In the simplest case, the given path + * does not have a {@link #getRoot root} component, in which case this method + * joins the given path to this path and returns a resulting path + * that {@link #endsWith ends} with the given path. Where the given path has + * a root component then resolution is highly implementation dependent and + * therefore unspecified. * * @param other - * the path to resolve against this path; can be {@code null} + * the path to resolve against this path * * @return the resulting path * * @see #relativize */ - public abstract Path resolve(Path other); + Path resolve(Path other); /** * Converts a given path string to a {@code Path} and resolves it against * this {@code Path} in exactly the manner specified by the {@link - * #resolve(Path) resolve} method. + * #resolve(Path) resolve} method. For example, suppose that the name + * separator is "{@code /}" and a path represents "{@code foo/bar}", then + * invoking this method with the path string "{@code gus}" will result in + * the {@code Path} "{@code foo/bar/gus}". * * @param other * the path string to resolve against this path @@ -375,11 +362,49 @@ public abstract class Path * @return the resulting path * * @throws InvalidPathException - * If the path string cannot be converted to a Path. + * if the path string cannot be converted to a Path. * * @see FileSystem#getPath */ - public abstract Path resolve(String other); + Path resolve(String other); + + /** + * Resolves the given path against this path's {@link #getParent parent} + * path. This is useful where a file name needs to be replaced with + * another file name. For example, suppose that the name separator is + * "{@code /}" and a path represents "{@code dir1/dir2/foo}", then invoking + * this method with the {@code Path} "{@code bar}" will result in the {@code + * Path} "{@code dir1/dir2/bar}". If this path does not have a parent path, + * or {@code other} is {@link #isAbsolute() absolute}, then this method + * returns {@code other}. If {@code other} is an empty path then this method + * returns this path's parent, or where this path doesn't have a parent, the + * empty path. + * + * @param other + * the path to resolve against this path's parent + * + * @return the resulting path + * + * @see #resolve(Path) + */ + Path resolveSibling(Path other); + + /** + * Converts a given path string to a {@code Path} and resolves it against + * this path's {@link #getParent parent} path in exactly the manner + * specified by the {@link #resolveSibling(Path) resolveSibling} method. + * + * @param other + * the path string to resolve against this path's parent + * + * @return the resulting path + * + * @throws InvalidPathException + * if the path string cannot be converted to a Path. + * + * @see FileSystem#getPath + */ + Path resolveSibling(String other); /** * Constructs a relative path between this path and a given path. @@ -395,17 +420,17 @@ public abstract class Path * constructed if only one of the paths have a root component. Where both * paths have a root component then it is implementation dependent if a * relative path can be constructed. If this path and the given path are - * {@link #equals equal} then {@code null} is returned. + * {@link #equals equal} then an empty path is returned. * - *

For any two paths p and q, where q does not have - * a root component, + *

For any two {@link #normalize normalized} paths p and + * q, where q does not have a root component, *

* p.relativize(p.resolve(q)).equals(q) *
* *

When symbolic links are supported, then whether the resulting path, * when resolved against this path, yields a path that can be used to locate - * the {@link #isSameFile same} file as {@code other} is implementation + * the {@link Files#isSameFile same} file as {@code other} is implementation * dependent. For example, if this path is {@code "/a/b"} and the given * path is {@code "/a/x"} then the resulting relative path may be {@code * "../x"}. If {@code "b"} is a symbolic link then is implementation @@ -414,185 +439,14 @@ public abstract class Path * @param other * the path to relativize against this path * - * @return the resulting relative path, or {@code null} if both paths are + * @return the resulting relative path, or an empty path if both paths are * equal * * @throws IllegalArgumentException * if {@code other} is not a {@code Path} that can be relativized * against this path */ - public abstract Path relativize(Path other); - - // -- file operations -- - - /** - * Deletes the file located by this path. - * - *

An implementation may require to examine the file to determine if the - * file is a directory. Consequently this method may not be atomic with respect - * to other file system operations. If the file is a symbolic link then the - * symbolic link itself, not the final target of the link, is deleted. - * - *

If the file is a directory then the directory must be empty. In some - * implementations a directory has entries for special files or links that - * are created when the directory is created. In such implementations a - * directory is considered empty when only the special entries exist. - * - *

On some operating systems it may not be possible to remove a file when - * it is open and in use by this Java virtual machine or other programs. - * - * @throws NoSuchFileException - * if the file does not exist (optional specific exception) - * @throws DirectoryNotEmptyException - * if the file is a directory and could not otherwise be deleted - * because the directory is not empty (optional specific - * exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkDelete(String)} method - * is invoked to check delete access to the file - */ - public abstract void delete() throws IOException; - - /** - * Deletes the file located by this path, if it exists. - * - *

As with the {@link #delete delete()} method, an implementation may - * need to examine the file to determine if the file is a directory. - * Consequently this method may not be atomic with respect to other file - * system operations. If the file is a symbolic link, then the symbolic - * link itself, not the final target of the link, is deleted. - * - *

If the file is a directory then the directory must be empty. In some - * implementations a directory has entries for special files or links that - * are created when the directory is created. In such implementations a - * directory is considered empty when only the special entries exist. - * - *

On some operating systems it may not be possible to remove a file when - * it is open and in use by this Java virtual machine or other programs. - * - * @throws DirectoryNotEmptyException - * if the file is a directory and could not otherwise be deleted - * because the directory is not empty (optional specific - * exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkDelete(String)} method - * is invoked to check delete access to the file. - */ - public abstract void deleteIfExists() throws IOException; - - /** - * Creates a symbolic link to a target (optional operation). - * - *

The {@code target} parameter is the target of the link. It may be an - * {@link Path#isAbsolute absolute} or relative path and may not exist. When - * the target is a relative path then file system operations on the resulting - * link are relative to the path of the link. - * - *

The {@code attrs} parameter is an optional array of {@link FileAttribute - * attributes} to set atomically when creating the link. Each attribute is - * identified by its {@link FileAttribute#name name}. If more than one attribute - * of the same name is included in the array then all but the last occurrence - * is ignored. - * - *

Where symbolic links are supported, but the underlying {@link FileStore} - * does not support symbolic links, then this may fail with an {@link - * IOException}. Additionally, some operating systems may require that the - * Java virtual machine be started with implementation specific privileges to - * create symbolic links, in which case this method may throw {@code IOException}. - * - * @param target - * the target of the symbolic link - * @param attrs - * the array of attributes to set atomically when creating the - * symbolic link - * - * @return this path - * - * @throws UnsupportedOperationException - * if the implementation does not support symbolic links or the - * array contains an attribute that cannot be set atomically when - * creating the symbolic link - * @throws FileAlreadyExistsException - * if a file with the name already exists (optional specific - * exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager - * is installed, it denies {@link LinkPermission}("symbolic") - * or its {@link SecurityManager#checkWrite(String) checkWrite} - * method denies write access to the path of the symbolic link. - */ - public abstract Path createSymbolicLink(Path target, FileAttribute... attrs) - throws IOException; - - /** - * Creates a new link (directory entry) for an existing file (optional - * operation). - * - *

This path locates the directory entry to create. The {@code existing} - * parameter is the path to an existing file. This method creates a new - * directory entry for the file so that it can be accessed using this path. - * On some file systems this is known as creating a "hard link". Whether the - * file attributes are maintained for the file or for each directory entry - * is file system specific and therefore not specified. Typically, a file - * system requires that all links (directory entries) for a file be on the - * same file system. Furthermore, on some platforms, the Java virtual machine - * may require to be started with implementation specific privileges to - * create hard links or to create links to directories. - * - * @param existing - * a reference to an existing file - * - * @return this path - * - * @throws UnsupportedOperationException - * if the implementation does not support adding an existing file - * to a directory - * @throws FileAlreadyExistsException - * if the entry could not otherwise be created because a file of - * that name already exists (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager - * is installed, it denies {@link LinkPermission}("hard") - * or its {@link SecurityManager#checkWrite(String) checkWrite} - * method denies write access to both this path and the path of the - * existing file. - */ - public abstract Path createLink(Path existing) throws IOException; - - /** - * Reads the target of a symbolic link (optional operation). - * - *

If the file system supports symbolic - * links then this method is used to read the target of the link, failing - * if the file is not a symbolic link. The target of the link need not exist. - * The returned {@code Path} object will be associated with the same file - * system as this {@code Path}. - * - * @return a {@code Path} object representing the target of the link - * - * @throws UnsupportedOperationException - * if the implementation does not support symbolic links - * @throws NotLinkException - * if the target could otherwise not be read because the file - * is not a symbolic link (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager - * is installed, it checks that {@code FilePermission} has been - * granted with the "{@code readlink}" action to read the link. - */ - public abstract Path readSymbolicLink() throws IOException; + Path relativize(Path other); /** * Returns a URI to represent this path. @@ -647,7 +501,7 @@ public abstract class Path * is installed, the {@link #toAbsolutePath toAbsolutePath} method * throws a security exception. */ - public abstract URI toUri(); + URI toUri(); /** * Returns a {@code Path} object representing the absolute path of this @@ -670,14 +524,14 @@ public abstract class Path * checkPropertyAccess} method is invoked to check access to the * system property {@code user.dir} */ - public abstract Path toAbsolutePath(); + Path toAbsolutePath(); /** * Returns the real path of an existing file. * *

The precise definition of this method is implementation dependent but * in general it derives from this path, an {@link #isAbsolute absolute} - * path that locates the {@link #isSameFile same} file as this path, but + * path that locates the {@link Files#isSameFile same} file as this path, but * with name elements that represent the actual name of the directories * and the file. For example, where filename comparisons on a file system * are case insensitive then the name elements represent the names in their @@ -713,756 +567,25 @@ public abstract class Path * checkPropertyAccess} method is invoked to check access to the * system property {@code user.dir} */ - public abstract Path toRealPath(boolean resolveLinks) throws IOException; + Path toRealPath(boolean resolveLinks) throws IOException; /** - * Copy the file located by this path to a target location. + * Returns a {@link File} object representing this path. Where this {@code + * Path} is associated with the default provider, then this method is + * equivalent to returning a {@code File} object constructed with the + * {@code String} representation of this path. * - *

This method copies the file located by this {@code Path} to the - * target location with the {@code options} parameter specifying how the - * copy is performed. By default, the copy fails if the target file already - * exists, except if the source and target are the {@link #isSameFile same} - * file, in which case this method has no effect. File attributes are not - * required to be copied to the target file. If symbolic links are supported, - * and the file is a symbolic link, then the final target of the link is copied. - * If the file is a directory then it creates an empty directory in the target - * location (entries in the directory are not copied). This method can be - * used with the {@link Files#walkFileTree Files.walkFileTree} utility - * method to copy a directory and all entries in the directory, or an entire - * file-tree where required. + *

If this path was created by invoking the {@code File} {@link + * File#toPath toPath} method then there is no guarantee that the {@code + * File} object returned by this method is {@link #equals equal} to the + * original {@code File}. * - *

The {@code options} parameter is an array of options and may contain - * any of the following: - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
Option Description
{@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} If the target file exists, then the target file is replaced if it - * is not a non-empty directory. If the target file exists and is a - * symbolic link, then the symbolic link itself, not the target of - * the link, is replaced.
{@link StandardCopyOption#COPY_ATTRIBUTES COPY_ATTRIBUTES} Attempts to copy the file attributes associated with this file to - * the target file. The exact file attributes that are copied is platform - * and file system dependent and therefore unspecified. Minimally, the - * {@link BasicFileAttributes#lastModifiedTime last-modified-time} is - * copied to the target file if supported by both the source and target - * file store. Copying of file timestamps may result in precision - * loss.
{@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} Symbolic links are not followed. If the file, located by this path, - * is a symbolic link, then the symbolic link itself, not the target of - * the link, is copied. It is implementation specific if file attributes - * can be copied to the new link. In other words, the {@code - * COPY_ATTRIBUTES} option may be ignored when copying a symbolic link.
- * - *

An implementation of this interface may support additional - * implementation specific options. - * - *

Copying a file is not an atomic operation. If an {@link IOException} - * is thrown then it possible that the target file is incomplete or some of - * its file attributes have not been copied from the source file. When the - * {@code REPLACE_EXISTING} option is specified and the target file exists, - * then the target file is replaced. The check for the existence of the file - * and the creation of the new file may not be atomic with respect to other - * file system activities. - * - * @param target - * the target location - * @param options - * options specifying how the copy should be done - * - * @return the target + * @return a {@code File} object representing this path * * @throws UnsupportedOperationException - * if the array contains a copy option that is not supported - * @throws FileAlreadyExistsException - * if the target file exists and cannot be replaced because the - * {@code REPLACE_EXISTING} option is not specified, or the target - * file is a non-empty directory (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * method is invoked to check read access to the source file, the - * {@link SecurityManager#checkWrite(String) checkWrite} is invoked - * to check write access to the target file. If a symbolic link is - * copied the security manager is invoked to check {@link - * LinkPermission}{@code ("symbolic")}. + * if this {@code Path} is not associated with the default provider */ - public abstract Path copyTo(Path target, CopyOption... options) - throws IOException; - - /** - * Move or rename the file located by this path to a target location. - * - *

By default, this method attempts to move the file to the target - * location, failing if the target file exists except if the source and - * target are the {@link #isSameFile same} file, in which case this method - * has no effect. If the file is a symbolic link then the symbolic link - * itself, not the target of the link, is moved. This method may be - * invoked to move an empty directory. In some implementations a directory - * has entries for special files or links that are created when the - * directory is created. In such implementations a directory is considered - * empty when only the special entries exist. When invoked to move a - * directory that is not empty then the directory is moved if it does not - * require moving the entries in the directory. For example, renaming a - * directory on the same {@link FileStore} will usually not require moving - * the entries in the directory. When moving a directory requires that its - * entries be moved then this method fails (by throwing an {@code - * IOException}). To move a file tree may involve copying rather - * than moving directories and this can be done using the {@link - * #copyTo copyTo} method in conjunction with the {@link - * Files#walkFileTree Files.walkFileTree} utility method. - * - *

The {@code options} parameter is an array of options and may contain - * any of the following: - * - * - * - * - * - * - * - * - * - * - *
Option Description
{@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} If the target file exists, then the target file is replaced if it - * is not a non-empty directory. If the target file exists and is a - * symbolic link, then the symbolic link itself, not the target of - * the link, is replaced.
{@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} The move is performed as an atomic file system operation and all - * other options are ignored. If the target file exists then it is - * implementation specific if the existing file is replaced or this method - * fails by throwing an {@link IOException}. If the move cannot be - * performed as an atomic file system operation then {@link - * AtomicMoveNotSupportedException} is thrown. This can arise, for - * example, when the target location is on a different {@code FileStore} - * and would require that the file be copied, or target location is - * associated with a different provider to this object.
- * - *

An implementation of this interface may support additional - * implementation specific options. - * - *

Where the move requires that the file be copied then the {@link - * BasicFileAttributes#lastModifiedTime last-modified-time} is copied to the - * new file. An implementation may also attempt to copy other file - * attributes but is not required to fail if the file attributes cannot be - * copied. When the move is performed as a non-atomic operation, and a {@code - * IOException} is thrown, then the state of the files is not defined. The - * original file and the target file may both exist, the target file may be - * incomplete or some of its file attributes may not been copied from the - * original file. - * - * @param target - * the target location - * @param options - * options specifying how the move should be done - * - * @return the target - * - * @throws UnsupportedOperationException - * if the array contains a copy option that is not supported - * @throws FileAlreadyExistsException - * if the target file exists and cannot be replaced because the - * {@code REPLACE_EXISTING} option is not specified, or the target - * file is a non-empty directory - * @throws AtomicMoveNotSupportedException - * if the options array contains the {@code ATOMIC_MOVE} option but - * the file cannot be moved as an atomic file system operation. - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkWrite(String) checkWrite} - * method is invoked to check write access to both the source and - * target file. - */ - public abstract Path moveTo(Path target, CopyOption... options) - throws IOException; - - /** - * Opens the directory referenced by this object, returning a {@code - * DirectoryStream} to iterate over all entries in the directory. The - * elements returned by the directory stream's {@link DirectoryStream#iterator - * iterator} are of type {@code Path}, each one representing an entry in the - * directory. The {@code Path} objects are obtained as if by {@link - * #resolve(Path) resolving} the name of the directory entry against this - * path. - * - *

The directory stream's {@code close} method should be invoked after - * iteration is completed so as to free any resources held for the open - * directory. - * - *

When an implementation supports operations on entries in the - * directory that execute in a race-free manner then the returned directory - * stream is a {@link SecureDirectoryStream}. - * - * @return a new and open {@code DirectoryStream} object - * - * @throws NotDirectoryException - * if the file could not otherwise be opened because it is not - * a directory (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * method is invoked to check read access to the directory. - */ - public abstract DirectoryStream newDirectoryStream() - throws IOException; - - /** - * Opens the directory referenced by this object, returning a {@code - * DirectoryStream} to iterate over the entries in the directory. The - * elements returned by the directory stream's {@link DirectoryStream#iterator - * iterator} are of type {@code Path}, each one representing an entry in the - * directory. The {@code Path} objects are obtained as if by {@link - * #resolve(Path) resolving} the name of the directory entry against this - * path. The entries returned by the iterator are filtered by matching the - * {@code String} representation of their file names against the given - * globbing pattern. - * - *

For example, suppose we want to iterate over the files ending with - * ".java" in a directory: - *

-     *     Path dir = ...
-     *     DirectoryStream<Path> stream = dir.newDirectoryStream("*.java");
-     * 
- * - *

The globbing pattern is specified by the {@link - * FileSystem#getPathMatcher getPathMatcher} method. - * - *

The directory stream's {@code close} method should be invoked after - * iteration is completed so as to free any resources held for the open - * directory. - * - *

When an implementation supports operations on entries in the - * directory that execute in a race-free manner then the returned directory - * stream is a {@link SecureDirectoryStream}. - * - * @param glob - * the glob pattern - * - * @return a new and open {@code DirectoryStream} object - * - * @throws java.util.regex.PatternSyntaxException - * if the pattern is invalid - * @throws NotDirectoryException - * if the file could not otherwise be opened because it is not - * a directory (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * method is invoked to check read access to the directory. - */ - public abstract DirectoryStream newDirectoryStream(String glob) - throws IOException; - - /** - * Opens the directory referenced by this object, returning a {@code - * DirectoryStream} to iterate over the entries in the directory. The - * elements returned by the directory stream's {@link DirectoryStream#iterator - * iterator} are of type {@code Path}, each one representing an entry in the - * directory. The {@code Path} objects are obtained as if by {@link - * #resolve(Path) resolving} the name of the directory entry against this - * path. The entries returned by the iterator are filtered by the given - * {@link DirectoryStream.Filter filter}. - * - *

The directory stream's {@code close} method should be invoked after - * iteration is completed so as to free any resources held for the open - * directory. - * - *

Where the filter terminates due to an uncaught error or runtime - * exception then it is propagated to the {@link Iterator#hasNext() - * hasNext} or {@link Iterator#next() next} method. Where an {@code - * IOException} is thrown, it results in the {@code hasNext} or {@code - * next} method throwing a {@link DirectoryIteratorException} with the - * {@code IOException} as the cause. - * - *

When an implementation supports operations on entries in the - * directory that execute in a race-free manner then the returned directory - * stream is a {@link SecureDirectoryStream}. - * - *

Usage Example: - * Suppose we want to iterate over the files in a directory that are - * larger than 8K. - *

-     *     DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
-     *         public boolean accept(Path file) throws IOException {
-     *             long size = Attributes.readBasicFileAttributes(file).size();
-     *             return (size > 8192L);
-     *         }
-     *     };
-     *     Path dir = ...
-     *     DirectoryStream<Path> stream = dir.newDirectoryStream(filter);
-     * 
- * @param filter - * the directory stream filter - * - * @return a new and open {@code DirectoryStream} object - * - * @throws NotDirectoryException - * if the file could not otherwise be opened because it is not - * a directory (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * method is invoked to check read access to the directory. - */ - public abstract DirectoryStream newDirectoryStream(DirectoryStream.Filter filter) - throws IOException; - - /** - * Creates a new and empty file, failing if the file already exists. - * - *

This {@code Path} locates the file to create. The check for the - * existence of the file and the creation of the new file if it does not - * exist are a single operation that is atomic with respect to all other - * filesystem activities that might affect the directory. - * - *

The {@code attrs} parameter is an optional array of {@link FileAttribute - * file-attributes} to set atomically when creating the file. Each attribute - * is identified by its {@link FileAttribute#name name}. If more than one - * attribute of the same name is included in the array then all but the last - * occurrence is ignored. - * - * @param attrs - * an optional list of file attributes to set atomically when - * creating the file - * - * @return this path - * - * @throws UnsupportedOperationException - * if the array contains an attribute that cannot be set atomically - * when creating the file - * @throws FileAlreadyExistsException - * if a file of that name already exists - * (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkWrite(String) checkWrite} - * method is invoked to check write access to the new file. - */ - public abstract Path createFile(FileAttribute... attrs) throws IOException; - - /** - * Creates a new directory. - * - *

This {@code Path} locates the directory to create. The check for the - * existence of the file and the creation of the directory if it does not - * exist are a single operation that is atomic with respect to all other - * filesystem activities that might affect the directory. - * - *

The {@code attrs} parameter is an optional array of {@link FileAttribute - * file-attributes} to set atomically when creating the directory. Each - * file attribute is identified by its {@link FileAttribute#name name}. If - * more than one attribute of the same name is included in the array then all - * but the last occurrence is ignored. - * - * @param attrs - * an optional list of file attributes to set atomically when - * creating the directory - * - * @return this path - * - * @throws UnsupportedOperationException - * if the array contains an attribute that cannot be set atomically - * when creating the directory - * @throws FileAlreadyExistsException - * if a directory could not otherwise be created because a file of - * that name already exists (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkWrite(String) checkWrite} - * method is invoked to check write access to the new directory. - * - * @see Files#createDirectories - */ - public abstract Path createDirectory(FileAttribute... attrs) - throws IOException; - - /** - * Opens or creates a file, returning a seekable byte channel to access the - * file. - * - *

The {@code options} parameter determines how the file is opened. - * The {@link StandardOpenOption#READ READ} and {@link StandardOpenOption#WRITE WRITE} - * options determine if the file should be opened for reading and/or writing. - * If neither option (or the {@link StandardOpenOption#APPEND APPEND} - * option) is contained in the array then the file is opened for reading. - * By default reading or writing commences at the beginning of the file. - * - *

In the addition to {@code READ} and {@code WRITE}, the following - * options may be present: - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
Option Description
{@link StandardOpenOption#APPEND APPEND} If this option is present then the file is opened for writing and - * each invocation of the channel's {@code write} method first advances - * the position to the end of the file and then writes the requested - * data. Whether the advancement of the position and the writing of the - * data are done in a single atomic operation is system-dependent and - * therefore unspecified. This option may not be used in conjunction - * with the {@code READ} or {@code TRUNCATE_EXISTING} options.
{@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} If this option is present then the existing file is truncated to - * a size of 0 bytes. This option is ignored when the file is opened only - * for reading.
{@link StandardOpenOption#CREATE_NEW CREATE_NEW} If this option is present then a new file is created, failing if - * the file already exists or is a symbolic link. When creating a file the - * check for the existence of the file and the creation of the file if it - * does not exist is atomic with respect to other file system operations. - * This option is ignored when the file is opened only for reading.
{@link StandardOpenOption#CREATE CREATE} If this option is present then an existing file is opened if it - * exists, otherwise a new file is created. This option is ignored if the - * {@code CREATE_NEW} option is also present or the file is opened only - * for reading.
{@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} When this option is present then the implementation makes a - * best effort attempt to delete the file when closed by the - * {@link SeekableByteChannel#close close} method. If the {@code close} - * method is not invoked then a best effort attempt is made to - * delete the file when the Java virtual machine terminates.
{@link StandardOpenOption#SPARSE SPARSE} When creating a new file this option is a hint that the - * new file will be sparse. This option is ignored when not creating - * a new file.
{@link StandardOpenOption#SYNC SYNC} Requires that every update to the file's content or metadata be - * written synchronously to the underlying storage device. (see Synchronized I/O file - * integrity).
{@link StandardOpenOption#DSYNC DSYNC} Requires that every update to the file's content be written - * synchronously to the underlying storage device. (see Synchronized I/O file - * integrity).
- * - *

An implementation may also support additional implementation specific - * options. - * - *

The {@code attrs} parameter is an optional array of file {@link - * FileAttribute file-attributes} to set atomically when a new file is created. - * - *

In the case of the default provider, the returned seekable byte channel - * is a {@link java.nio.channels.FileChannel}. - * - *

Usage Examples: - *

-     *     Path file = ...
-     *
-     *     // open file for reading
-     *     ReadableByteChannel rbc = file.newByteChannel(EnumSet.of(READ)));
-     *
-     *     // open file for writing to the end of an existing file, creating
-     *     // the file if it doesn't already exist
-     *     WritableByteChannel wbc = file.newByteChannel(EnumSet.of(CREATE,APPEND));
-     *
-     *     // create file with initial permissions, opening it for both reading and writing
-     *     FileAttribute<Set<PosixFilePermission>> perms = ...
-     *     SeekableByteChannel sbc = file.newByteChannel(EnumSet.of(CREATE_NEW,READ,WRITE), perms);
-     * 
- * - * @param options - * Options specifying how the file is opened - * @param attrs - * An optional list of file attributes to set atomically when - * creating the file - * - * @return a new seekable byte channel - * - * @throws IllegalArgumentException - * if the set contains an invalid combination of options - * @throws UnsupportedOperationException - * if an unsupported open option is specified or the array contains - * attributes that cannot be set atomically when creating the file - * @throws FileAlreadyExistsException - * if a file of that name already exists and the {@link - * StandardOpenOption#CREATE_NEW CREATE_NEW} option is specified - * (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * method is invoked to check read access to the path if the file is - * opened for reading. The {@link SecurityManager#checkWrite(String) - * checkWrite} method is invoked to check write access to the path - * if the file is opened for writing. - */ - public abstract SeekableByteChannel newByteChannel(Set options, - FileAttribute... attrs) - throws IOException; - - /** - * Opens or creates a file, returning a seekable byte channel to access the - * file. - * - *

This method opens or creates a file in exactly the manner specified - * by the {@link Path#newByteChannel(Set,FileAttribute[]) newByteChannel} - * method. - * - * @param options - * options specifying how the file is opened - * - * @return a new seekable byte channel - * - * @throws IllegalArgumentException - * if the set contains an invalid combination of options - * @throws UnsupportedOperationException - * if an unsupported open option is specified - * @throws FileAlreadyExistsException - * if a file of that name already exists and the {@link - * StandardOpenOption#CREATE_NEW CREATE_NEW} option is specified - * (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * method is invoked to check read access to the path if the file is - * opened for reading. The {@link SecurityManager#checkWrite(String) - * checkWrite} method is invoked to check write access to the path - * if the file is opened for writing. - */ - public abstract SeekableByteChannel newByteChannel(OpenOption... options) - throws IOException; - - /** - * Opens or creates the file located by this object for writing, returning - * an output stream to write bytes to the file. - * - *

This method opens or creates a file in exactly the manner specified - * by the {@link Path#newByteChannel(Set,FileAttribute[]) newByteChannel} - * method except that the {@link StandardOpenOption#READ READ} option may not - * be present in the array of open options. - * - * @param options - * options specifying how the file is opened - * - * @return a new output stream - * - * @throws IllegalArgumentException {@inheritDoc} - * @throws UnsupportedOperationException {@inheritDoc} - * @throws IOException {@inheritDoc} - * @throws SecurityException {@inheritDoc} - */ - @Override - public abstract OutputStream newOutputStream(OpenOption... options) - throws IOException; - - /** - * Tells whether or not the file located by this object is considered - * hidden. The exact definition of hidden is platform or provider - * dependent. On UNIX for example a file is considered to be hidden if its - * name begins with a period character ('.'). On Windows a file is - * considered hidden if it isn't a directory and the DOS {@link - * DosFileAttributes#isHidden hidden} attribute is set. - * - *

Depending on the implementation this method may require to access - * the file system to determine if the file is considered hidden. - * - * @return {@code true} if the file is considered hidden - * - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * method is invoked to check read access to the file. - */ - public abstract boolean isHidden() throws IOException; - - /** - * Checks the existence and optionally the accessibility of the file - * located by this path. - * - *

This method checks the existence of a file and that this Java virtual - * machine has appropriate privileges that would allow it access the file - * according to all of access modes specified in the {@code modes} parameter - * as follows: - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
Value Description
{@link AccessMode#READ READ} Checks that the file exists and that the Java virtual machine has - * permission to read the file.
{@link AccessMode#WRITE WRITE} Checks that the file exists and that the Java virtual machine has - * permission to write to the file,
{@link AccessMode#EXECUTE EXECUTE} Checks that the file exists and that the Java virtual machine has - * permission to {@link Runtime#exec execute} the file. The semantics - * may differ when checking access to a directory. For example, on UNIX - * systems, checking for {@code EXECUTE} access checks that the Java - * virtual machine has permission to search the directory in order to - * access file or subdirectories.
- * - *

If the {@code modes} parameter is of length zero, then the existence - * of the file is checked. - * - *

This method follows symbolic links if the file referenced by this - * object is a symbolic link. Depending on the implementation, this method - * may require to read file permissions, access control lists, or other - * file attributes in order to check the effective access to the file. To - * determine the effective access to a file may require access to several - * attributes and so in some implementations this method may not be atomic - * with respect to other file system operations. Furthermore, as the result - * of this method is immediately outdated, there is no guarantee that a - * subsequence access will succeed (or even that it will access the same - * file). Care should be taken when using this method in security sensitive - * applications. - * - * @param modes - * The access modes to check; may have zero elements - * - * @throws UnsupportedOperationException - * an implementation is required to support checking for - * {@code READ}, {@code WRITE}, and {@code EXECUTE} access. This - * exception is specified to allow for the {@code Access} enum to - * be extended in future releases. - * @throws NoSuchFileException - * if a file does not exist (optional specific exception) - * @throws AccessDeniedException - * the requested access would be denied or the access cannot be - * determined because the Java virtual machine has insufficient - * privileges or other reasons. (optional specific exception) - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * is invoked when checking read access to the file or only the - * existence of the file, the {@link SecurityManager#checkWrite(String) - * checkWrite} is invoked when checking write access to the file, - * and {@link SecurityManager#checkExec(String) checkExec} is invoked - * when checking execute access. - */ - public abstract void checkAccess(AccessMode... modes) throws IOException; - - /** - * Tests whether the file located by this path exists. - * - *

This convenience method is intended for cases where it is required to - * take action when it can be confirmed that a file exists. This method simply - * invokes the {@link #checkAccess checkAccess} method to check if the file - * exists. If the {@code checkAccess} method succeeds then this method returns - * {@code true}, otherwise if an {@code IOException} is thrown (because the - * file doesn't exist or cannot be accessed by this Java virtual machine) - * then {@code false} is returned. - * - *

Note that the result of this method is immediately outdated. If this - * method indicates the file exists then there is no guarantee that a - * subsequence access will succeed. Care should be taken when using this - * method in security sensitive applications. - * - * @return {@code true} if the file exists; {@code false} if the file does - * not exist or its existence cannot be determined. - * - * @throws SecurityException - * In the case of the default provider, the {@link - * SecurityManager#checkRead(String)} is invoked to check - * read access to the file. - * - * @see #notExists - */ - public abstract boolean exists(); - - /** - * Tests whether the file located by this path does not exist. - * - *

This convenience method is intended for cases where it is required to - * take action when it can be confirmed that a file does not exist. This - * method invokes the {@link #checkAccess checkAccess} method to check if the - * file exists. If the file does not exist then {@code true} is returned, - * otherwise the file exists or cannot be accessed by this Java virtual - * machine and {@code false} is returned. - * - *

Note that this method is not the complement of the {@link #exists - * exists} method. Where it is not possible to determine if a file exists - * or not then both methods return {@code false}. As with the {@code exists} - * method, the result of this method is immediately outdated. If this - * method indicates the file does exist then there is no guarantee that a - * subsequence attempt to create the file will succeed. Care should be taken - * when using this method in security sensitive applications. - * - * @return {@code true} if the file does not exist; {@code false} if the - * file exists or its existence cannot be determined. - * - * @throws SecurityException - * In the case of the default provider, the {@link - * SecurityManager#checkRead(String)} is invoked to check - * read access to the file. - */ - public abstract boolean notExists(); - - /** - * Returns the {@link FileStore} representing the file store where an - * existing file, located by this path, is stored. - * - *

Once a reference to the {@code FileStore} is obtained it is - * implementation specific if operations on the returned {@code FileStore}, - * or {@link FileStoreAttributeView} objects obtained from it, continue - * to depend on the existence of the file. In particular the behavior is not - * defined for the case that the file is deleted or moved to a different - * file store. - * - * @return the file store where the file is stored - * - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * method is invoked to check read access to the file, and in - * addition it checks {@link RuntimePermission} - * ("getFileStoreAttributes") - */ - public abstract FileStore getFileStore() throws IOException; + File toFile(); // -- watchable -- @@ -1471,8 +594,8 @@ public abstract class Path * *

In this release, this path locates a directory that exists. The * directory is registered with the watch service so that entries in the - * directory can be watched. The {@code events} parameter is an array of - * events to register and may contain the following events: + * directory can be watched. The {@code events} parameter is the events to + * register and may contain the following events: *

    *
  • {@link StandardWatchEventKind#ENTRY_CREATE ENTRY_CREATE} - * entry created or moved into the directory
  • @@ -1489,10 +612,10 @@ public abstract class Path *

    The set of events may include additional implementation specific * event that are not defined by the enum {@link StandardWatchEventKind} * - *

    The {@code modifiers} parameter is an array of modifiers - * that qualify how the directory is registered. This release does not - * define any standard modifiers. The array may contain - * implementation specific modifiers. + *

    The {@code modifiers} parameter specifies modifiers that + * qualify how the directory is registered. This release does not define any + * standard modifiers. It may contain implementation specific + * modifiers. * *

    Where a file is registered with a watch service by means of a symbolic * link then it is implementation specific if the watch continues to depend @@ -1525,9 +648,9 @@ public abstract class Path * method is invoked to check read access to the file. */ @Override - public abstract WatchKey register(WatchService watcher, - WatchEvent.Kind[] events, - WatchEvent.Modifier... modifiers) + WatchKey register(WatchService watcher, + WatchEvent.Kind[] events, + WatchEvent.Modifier... modifiers) throws IOException; /** @@ -1573,8 +696,8 @@ public abstract class Path * method is invoked to check read access to the file. */ @Override - public abstract WatchKey register(WatchService watcher, - WatchEvent.Kind... events) + WatchKey register(WatchService watcher, + WatchEvent.Kind... events) throws IOException; // -- Iterable -- @@ -1591,7 +714,7 @@ public abstract class Path * @return an iterator over the name elements of this path. */ @Override - public abstract Iterator iterator(); + Iterator iterator(); // -- compareTo/equals/hashCode -- @@ -1609,50 +732,7 @@ public abstract class Path * lexicographically greater than the argument */ @Override - public abstract int compareTo(Path other); - - /** - * Tests if the file referenced by this object is the same file referenced - * by another object. - * - *

    If this {@code Path} and the given {@code Path} are {@link - * #equals(Object) equal} then this method returns {@code true} without checking - * if the file exists. If the {@code Path} and the given {@code Path} - * are associated with different providers, or the given {@code Path} is - * {@code null} then this method returns {@code false}. Otherwise, this method - * checks if both {@code Paths} locate the same file, and depending on the - * implementation, may require to open or access both files. - * - *

    If the file system and files remain static, then this method implements - * an equivalence relation for non-null {@code Paths}. - *

      - *
    • It is reflexive: for a non-null {@code Path} {@code f}, - * {@code f.isSameFile(f)} should return {@code true}. - *
    • It is symmetric: for two non-null {@code Path} - * {@code f} and {@code g}, {@code f.isSameFile(g)} will equal - * {@code g.isSameFile(f)}. - *
    • It is transitive: for three {@code Paths} - * {@code f}, {@code g}, and {@code h}, if {@code f.isSameFile(g)} returns - * {@code true} and {@code g.isSameFile(h)} returns {@code true}, then - * {@code f.isSameFile(h)} will return return {@code true}. - *
    - * - * @param other - * the other file reference - * - * @return {@code true} if, and only if, this object and the given object - * locate the same file - * - * @throws IOException - * if an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, the {@link SecurityManager#checkRead(String) checkRead} - * method is invoked to check read access to both files. - * - * @see java.nio.file.attribute.BasicFileAttributes#fileKey - */ - public abstract boolean isSameFile(Path other) throws IOException; + int compareTo(Path other); /** * Tests this path for equality with the given object. @@ -1663,7 +743,9 @@ public abstract class Path *

    Whether or not two path are equal depends on the file system * implementation. In some cases the paths are compared without regard * to case, and others are case sensitive. This method does not access the - * file system and the file is not required to exist. + * file system and the file is not required to exist. Where required, the + * {@link Files#isSameFile isSameFile} method may be used to check if two + * paths locate the same file. * *

    This method satisfies the general contract of the {@link * java.lang.Object#equals(Object) Object.equals} method.

    @@ -1674,8 +756,7 @@ public abstract class Path * @return {@code true} if, and only if, the given object is a {@code Path} * that is identical to this {@code Path} */ - @Override - public abstract boolean equals(Object other); + boolean equals(Object other); /** * Computes a hash code for this path. @@ -1686,8 +767,7 @@ public abstract class Path * * @return the hash-code value for this path */ - @Override - public abstract int hashCode(); + int hashCode(); /** * Returns the string representation of this path. @@ -1701,6 +781,5 @@ public abstract class Path * * @return the string representation of this path */ - @Override - public abstract String toString(); + String toString(); } diff --git a/jdk/src/share/classes/java/nio/file/PathMatcher.java b/jdk/src/share/classes/java/nio/file/PathMatcher.java index 39af77d6b06..952f18f17f9 100644 --- a/jdk/src/share/classes/java/nio/file/PathMatcher.java +++ b/jdk/src/share/classes/java/nio/file/PathMatcher.java @@ -32,7 +32,7 @@ package java.nio.file; * @since 1.7 * * @see FileSystem#getPathMatcher - * @see Path#newDirectoryStream(String) + * @see Files#newDirectoryStream(Path,String) */ public interface PathMatcher { diff --git a/jdk/src/share/classes/java/nio/file/Paths.java b/jdk/src/share/classes/java/nio/file/Paths.java index be51761c486..d0906d4443f 100644 --- a/jdk/src/share/classes/java/nio/file/Paths.java +++ b/jdk/src/share/classes/java/nio/file/Paths.java @@ -39,14 +39,27 @@ public final class Paths { private Paths() { } /** - * Constructs a {@code Path} by converting the given path string. + * Converts a path string, or a sequence of strings that when joined form + * a path string, to a {@code Path}. If {@code more} does not specify any + * elements then the value of the {@code first} parameter is the path string + * to convert. If {@code more} specifies one or more elements then each + * non-empty string, including {@code first}, is considered to be a sequence + * of name elements (see {@link Path}) and is joined to form a path string. + * The details as to how the Strings are joined is provider specific but + * typically they will be joined using the {@link FileSystem#getSeparator + * name-separator} as the separator. For example, if the name separator is + * "{@code /}" and {@code getPath("/foo","bar","gus")} is invoked, then the + * path string {@code "/foo/bar/gus"} is converted to a {@code Path}. + * A {@code Path} representing an empty path is returned if {@code first} + * is the empty string and {@code more} does not contain any non-empty + * strings. * *

    The {@code Path} is obtained by invoking the {@link FileSystem#getPath * getPath} method of the {@link FileSystems#getDefault default} {@link * FileSystem}. * - *

    Note that while this method is very convenient, using it will - * imply an assumed reference to the default FileSystem and limit the + *

    Note that while this method is very convenient, using it will imply + * an assumed reference to the default {@code FileSystem} and limit the * utility of the calling code. Hence it should not be used in library code * intended for flexible reuse. A more flexible alternative is to use an * existing {@code Path} instance as an anchor, such as: @@ -55,8 +68,10 @@ public final class Paths { * Path path = dir.resolve("file"); * * - * @param path - * the path string to convert + * @param first + * the path string or initial part of the path string + * @param more + * additional strings to be joined to form the path string * * @return the resulting {@code Path} * @@ -65,8 +80,8 @@ public final class Paths { * * @see FileSystem#getPath */ - public static Path get(String path) { - return FileSystems.getDefault().getPath(path); + public static Path get(String first, String... more) { + return FileSystems.getDefault().getPath(first, more); } /** diff --git a/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java b/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java index 319237bfe96..fa26e513fd9 100644 --- a/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java +++ b/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java @@ -43,7 +43,7 @@ import java.io.IOException; * *

    A {@code SecureDirectoryStream} requires corresponding support from the * underlying operating system. Where an implementation supports this features - * then the {@code DirectoryStream} returned by the {@link Path#newDirectoryStream + * then the {@code DirectoryStream} returned by the {@link Files#newDirectoryStream * newDirectoryStream} method will be a {@code SecureDirectoryStream} and must * be cast to that type in order to invoke the methods defined by this interface. * @@ -56,20 +56,15 @@ import java.io.IOException; * @since 1.7 */ -public abstract class SecureDirectoryStream - implements DirectoryStream +public interface SecureDirectoryStream + extends DirectoryStream { - /** - * Initialize a new instance of this class. - */ - protected SecureDirectoryStream() { } - /** * Opens the directory identified by the given path, returning a {@code * SecureDirectoryStream} to iterate over the entries in the directory. * *

    This method works in exactly the manner specified by the {@link - * Path#newDirectoryStream() newDirectoryStream} method for the case that + * Files#newDirectoryStream(Path) newDirectoryStream} method for the case that * the {@code path} parameter is an {@link Path#isAbsolute absolute} path. * When the parameter is a relative path then the directory to open is * relative to this open directory. The {@link @@ -99,8 +94,7 @@ public abstract class SecureDirectoryStream * installed, the {@link SecurityManager#checkRead(String) checkRead} * method is invoked to check read access to the directory. */ - public abstract SecureDirectoryStream newDirectoryStream(T path, - LinkOption... options) + SecureDirectoryStream newDirectoryStream(T path, LinkOption... options) throws IOException; /** @@ -108,11 +102,11 @@ public abstract class SecureDirectoryStream * channel to access the file. * *

    This method works in exactly the manner specified by the {@link - * Path#newByteChannel Path.newByteChannel} method for the + * Files#newByteChannel Files.newByteChannel} method for the * case that the {@code path} parameter is an {@link Path#isAbsolute absolute} * path. When the parameter is a relative path then the file to open or * create is relative to this open directory. In addition to the options - * defined by the {@code Path.newByteChannel} method, the {@link + * defined by the {@code Files.newByteChannel} method, the {@link * LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} option may be used to * ensure that this method fails if the file is a symbolic link. * @@ -149,15 +143,15 @@ public abstract class SecureDirectoryStream * checkWrite} method is invoked to check write access to the path * if the file is opened for writing. */ - public abstract SeekableByteChannel newByteChannel(T path, - Set options, - FileAttribute... attrs) + SeekableByteChannel newByteChannel(T path, + Set options, + FileAttribute... attrs) throws IOException; /** * Deletes a file. * - *

    Unlike the {@link Path#delete delete()} method, this method does + *

    Unlike the {@link Files#delete delete()} method, this method does * not first examine the file to determine if the file is a directory. * Whether a directory is deleted by this method is system dependent and * therefore not specified. If the file is a symbolic link, then the link @@ -179,12 +173,12 @@ public abstract class SecureDirectoryStream * installed, the {@link SecurityManager#checkDelete(String) checkDelete} * method is invoked to check delete access to the file */ - public abstract void deleteFile(T path) throws IOException; + void deleteFile(T path) throws IOException; /** * Deletes a directory. * - *

    Unlike the {@link Path#delete delete()} method, this method + *

    Unlike the {@link Files#delete delete()} method, this method * does not first examine the file to determine if the file is a directory. * Whether non-directories are deleted by this method is system dependent and * therefore not specified. When the parameter is a relative path then the @@ -207,12 +201,12 @@ public abstract class SecureDirectoryStream * installed, the {@link SecurityManager#checkDelete(String) checkDelete} * method is invoked to check delete access to the directory */ - public abstract void deleteDirectory(T path) throws IOException; + void deleteDirectory(T path) throws IOException; /** * Move a file from this directory to another directory. * - *

    This method works in a similar manner to {@link Path#moveTo moveTo} + *

    This method works in a similar manner to {@link Files#move move} * method when the {@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} option * is specified. That is, this method moves a file as an atomic file system * operation. If the {@code srcpath} parameter is an {@link Path#isAbsolute @@ -247,7 +241,7 @@ public abstract class SecureDirectoryStream * method is invoked to check write access to both the source and * target file. */ - public abstract void move(T srcpath, SecureDirectoryStream targetdir, T targetpath) + void move(T srcpath, SecureDirectoryStream targetdir, T targetpath) throws IOException; /** @@ -273,7 +267,7 @@ public abstract class SecureDirectoryStream * this directory stream, or {@code null} if the attribute view * type is not available */ - public abstract V getFileAttributeView(Class type); + V getFileAttributeView(Class type); /** * Returns a new file attribute view to access the file attributes of a file @@ -306,7 +300,7 @@ public abstract class SecureDirectoryStream * type is not available * */ - public abstract V getFileAttributeView(T path, - Class type, - LinkOption... options); + V getFileAttributeView(T path, + Class type, + LinkOption... options); } diff --git a/jdk/src/share/classes/java/nio/file/SimpleFileVisitor.java b/jdk/src/share/classes/java/nio/file/SimpleFileVisitor.java index 5b0a4602b4e..8bedbd4c9b3 100644 --- a/jdk/src/share/classes/java/nio/file/SimpleFileVisitor.java +++ b/jdk/src/share/classes/java/nio/file/SimpleFileVisitor.java @@ -57,8 +57,8 @@ public class SimpleFileVisitor implements FileVisitor { public FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs) throws IOException { - Objects.nonNull(dir); - Objects.nonNull(attrs); + Objects.requireNonNull(dir); + Objects.requireNonNull(attrs); return FileVisitResult.CONTINUE; } @@ -72,8 +72,8 @@ public class SimpleFileVisitor implements FileVisitor { public FileVisitResult visitFile(T file, BasicFileAttributes attrs) throws IOException { - Objects.nonNull(file); - Objects.nonNull(attrs); + Objects.requireNonNull(file); + Objects.requireNonNull(attrs); return FileVisitResult.CONTINUE; } @@ -87,7 +87,7 @@ public class SimpleFileVisitor implements FileVisitor { public FileVisitResult visitFileFailed(T file, IOException exc) throws IOException { - Objects.nonNull(file); + Objects.requireNonNull(file); throw exc; } @@ -104,7 +104,7 @@ public class SimpleFileVisitor implements FileVisitor { public FileVisitResult postVisitDirectory(T dir, IOException exc) throws IOException { - Objects.nonNull(dir); + Objects.requireNonNull(dir); if (exc != null) throw exc; return FileVisitResult.CONTINUE; diff --git a/jdk/src/share/classes/java/io/TempFileHelper.java b/jdk/src/share/classes/java/nio/file/TempFileHelper.java similarity index 56% rename from jdk/src/share/classes/java/io/TempFileHelper.java rename to jdk/src/share/classes/java/nio/file/TempFileHelper.java index 19852f32d1a..377730b4455 100644 --- a/jdk/src/share/classes/java/io/TempFileHelper.java +++ b/jdk/src/share/classes/java/nio/file/TempFileHelper.java @@ -23,54 +23,82 @@ * questions. */ -package java.io; +package java.nio.file; -import java.nio.file.FileSystems; -import java.nio.file.InvalidPathException; -import java.nio.file.FileAlreadyExistsException; +import java.util.Set; +import java.util.EnumSet; +import java.security.SecureRandom; +import static java.security.AccessController.*; +import java.io.IOException; import java.nio.file.attribute.FileAttribute; import java.nio.file.attribute.PosixFilePermission; import java.nio.file.attribute.PosixFilePermissions; import static java.nio.file.attribute.PosixFilePermission.*; -import java.util.Set; -import java.util.EnumSet; +import sun.security.action.GetPropertyAction; + /** - * Helper class to support creation of temporary files and directory with + * Helper class to support creation of temporary files and directories with * initial attributes. */ class TempFileHelper { private TempFileHelper() { } + // temporary directory location + private static final Path tmpdir = + Paths.get(doPrivileged(new GetPropertyAction("java.io.tmpdir"))); + + private static final boolean isPosix = + FileSystems.getDefault().supportedFileAttributeViews().contains("posix"); + + // file name generation, same as java.io.File for now + private static final SecureRandom random = new SecureRandom(); + private static Path generatePath(String prefix, String suffix, Path dir) { + long n = random.nextLong(); + n = (n == Long.MIN_VALUE) ? 0 : Math.abs(n); + Path name = dir.getFileSystem().getPath(prefix + Long.toString(n) + suffix); + // the generated name should be a simple file name + if (name.getParent() != null) + throw new IllegalArgumentException("Invalid prefix or suffix"); + return dir.resolve(name); + } + // default file and directory permissions (lazily initialized) - private static class PermissionsHolder { - static final boolean hasPosixPermissions = FileSystems.getDefault() - .supportedFileAttributeViews().contains("posix"); + private static class PosixPermissions { static final FileAttribute> filePermissions = PosixFilePermissions.asFileAttribute(EnumSet.of(OWNER_READ, OWNER_WRITE)); - static final FileAttribute> directoryPermissions = + static final FileAttribute> dirPermissions = PosixFilePermissions.asFileAttribute(EnumSet .of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE)); } /** - * Creates a file or directory in the temporary directory. + * Creates a file or directory in in the given given directory (or in the + * temporary directory if dir is {@code null}). */ - private static File create(String prefix, + private static Path create(Path dir, + String prefix, String suffix, - FileAttribute[] attrs, - boolean isDirectory) + boolean createDirectory, + FileAttribute[] attrs) throws IOException { + if (prefix == null) + prefix = ""; + if (suffix == null) + suffix = (createDirectory) ? "" : ".tmp"; + if (dir == null) + dir = tmpdir; + // in POSIX environments use default file and directory permissions // if initial permissions not given by caller. - if (PermissionsHolder.hasPosixPermissions) { + if (isPosix && (dir.getFileSystem() == FileSystems.getDefault())) { if (attrs.length == 0) { // no attributes so use default permissions attrs = new FileAttribute[1]; - attrs[0] = (isDirectory) ? PermissionsHolder.directoryPermissions : - PermissionsHolder.filePermissions; + attrs[0] = (createDirectory) ? PosixPermissions.dirPermissions : + PosixPermissions.filePermissions; } else { // check if posix permissions given; if not use default boolean hasPermissions = false; @@ -84,9 +112,9 @@ class TempFileHelper { FileAttribute[] copy = new FileAttribute[attrs.length+1]; System.arraycopy(attrs, 0, copy, 0, attrs.length); attrs = copy; - attrs[attrs.length-1] = (isDirectory) ? - PermissionsHolder.directoryPermissions : - PermissionsHolder.filePermissions; + attrs[attrs.length-1] = (createDirectory) ? + PosixPermissions.dirPermissions : + PosixPermissions.filePermissions; } } } @@ -94,24 +122,25 @@ class TempFileHelper { // loop generating random names until file or directory can be created SecurityManager sm = System.getSecurityManager(); for (;;) { - File tmpdir = File.TempDirectory.location(); - File f = File.TempDirectory.generateFile(prefix, suffix, tmpdir); + Path f; try { - if (isDirectory) { - f.toPath().createDirectory(attrs); - } else { - f.toPath().createFile(attrs); - } - return f; + f = generatePath(prefix, suffix, dir); } catch (InvalidPathException e) { // don't reveal temporary directory location if (sm != null) throw new IllegalArgumentException("Invalid prefix or suffix"); throw e; + } + try { + if (createDirectory) { + return Files.createDirectory(f, attrs); + } else { + return Files.createFile(f, attrs); + } } catch (SecurityException e) { // don't reveal temporary directory location - if (sm != null) - throw new SecurityException("Unable to create temporary file"); + if (dir == tmpdir && sm != null) + throw new SecurityException("Unable to create temporary file or directory"); throw e; } catch (FileAlreadyExistsException e) { // ignore @@ -120,20 +149,27 @@ class TempFileHelper { } /** - * Creates a file in the temporary directory. + * Creates a temporary file in the given directory, or in in the + * temporary directory if dir is {@code null}. */ - static File createFile(String prefix, String suffix, FileAttribute[] attrs) + static Path createTempFile(Path dir, + String prefix, + String suffix, + FileAttribute[] attrs) throws IOException { - return create(prefix, suffix, attrs, false); + return create(dir, prefix, suffix, false, attrs); } /** - * Creates a directory in the temporary directory. + * Creates a temporary directory in the given directory, or in in the + * temporary directory if dir is {@code null}. */ - static File createDirectory(String prefix, FileAttribute[] attrs) + static Path createTempDirectory(Path dir, + String prefix, + FileAttribute[] attrs) throws IOException { - return create(prefix, "", attrs, true); + return create(dir, prefix, null, true, attrs); } } diff --git a/jdk/src/share/classes/java/nio/file/WatchEvent.java b/jdk/src/share/classes/java/nio/file/WatchEvent.java index 68c93a117a4..2753fb2c3ac 100644 --- a/jdk/src/share/classes/java/nio/file/WatchEvent.java +++ b/jdk/src/share/classes/java/nio/file/WatchEvent.java @@ -44,7 +44,7 @@ package java.nio.file; * @since 1.7 */ -public abstract class WatchEvent { +public interface WatchEvent { /** * An event kind, for the purposes of identification. @@ -64,11 +64,6 @@ public abstract class WatchEvent { Class type(); } - /** - * Initializes a new instance of this class. - */ - protected WatchEvent() { } - /** * An event modifier that qualifies how a {@link Watchable} is registered * with a {@link WatchService}. @@ -90,7 +85,7 @@ public abstract class WatchEvent { * * @return the event kind */ - public abstract Kind kind(); + Kind kind(); /** * Returns the event count. If the event count is greater than {@code 1} @@ -98,7 +93,7 @@ public abstract class WatchEvent { * * @return the event count */ - public abstract int count(); + int count(); /** * Returns the context for the event. @@ -112,5 +107,5 @@ public abstract class WatchEvent { * * @return the event context; may be {@code null} */ - public abstract T context(); + T context(); } diff --git a/jdk/src/share/classes/java/nio/file/WatchKey.java b/jdk/src/share/classes/java/nio/file/WatchKey.java index 72997866b20..23897dba454 100644 --- a/jdk/src/share/classes/java/nio/file/WatchKey.java +++ b/jdk/src/share/classes/java/nio/file/WatchKey.java @@ -81,11 +81,7 @@ import java.util.List; * @since 1.7 */ -public abstract class WatchKey { - /** - * Initializes a new instance of this class. - */ - protected WatchKey() { } +public interface WatchKey { /** * Tells whether or not this watch key is valid. @@ -95,7 +91,7 @@ public abstract class WatchKey { * * @return {@code true} if, and only if, this watch key is valid */ - public abstract boolean isValid(); + boolean isValid(); /** * Retrieves and removes all pending events for this watch key, returning @@ -105,7 +101,7 @@ public abstract class WatchKey { * * @return the list of the events retrieved; may be empty */ - public abstract List> pollEvents(); + List> pollEvents(); /** * Resets this watch key. @@ -121,7 +117,7 @@ public abstract class WatchKey { * {@code false} if the watch key could not be reset because it is * no longer {@link #isValid valid} */ - public abstract boolean reset(); + boolean reset(); /** * Cancels the registration with the watch service. Upon return the watch key @@ -134,5 +130,21 @@ public abstract class WatchKey { *

    If this watch key has already been cancelled then invoking this * method has no effect. Once cancelled, a watch key remains forever invalid. */ - public abstract void cancel(); + void cancel(); + + /** + * Returns the object for which this watch key was created. This method will + * continue to return the object even after the key is cancelled. + * + *

    As the {@code WatchService} is intended to map directly on to the + * native file event notification facility (where available) then many of + * details on how registered objects are watched is highly implementation + * specific. When watching a directory for changes for example, and the + * directory is moved or renamed in the file system, there is no guarantee + * that the watch key will be cancelled and so the object returned by this + * method may no longer be a valid path to the directory. + * + * @return the object for which this watch key was created + */ + //T watchable(); } diff --git a/jdk/src/share/classes/java/nio/file/WatchService.java b/jdk/src/share/classes/java/nio/file/WatchService.java index 048472b6cdb..255e03fe518 100644 --- a/jdk/src/share/classes/java/nio/file/WatchService.java +++ b/jdk/src/share/classes/java/nio/file/WatchService.java @@ -103,13 +103,9 @@ import java.util.concurrent.TimeUnit; * @see FileSystem#newWatchService */ -public abstract class WatchService - implements Closeable +public interface WatchService + extends Closeable { - /** - * Initializes a new instance of this class. - */ - protected WatchService() { } /** * Closes this watch service. @@ -129,7 +125,7 @@ public abstract class WatchService * if an I/O error occurs */ @Override - public abstract void close() throws IOException; + void close() throws IOException; /** * Retrieves and removes the next watch key, or {@code null} if none are @@ -140,7 +136,7 @@ public abstract class WatchService * @throws ClosedWatchServiceException * if this watch service is closed */ - public abstract WatchKey poll(); + WatchKey poll(); /** * Retrieves and removes the next watch key, waiting if necessary up to the @@ -160,7 +156,7 @@ public abstract class WatchService * @throws InterruptedException * if interrupted while waiting */ - public abstract WatchKey poll(long timeout, TimeUnit unit) + WatchKey poll(long timeout, TimeUnit unit) throws InterruptedException; /** @@ -174,5 +170,5 @@ public abstract class WatchService * @throws InterruptedException * if interrupted while waiting */ - public abstract WatchKey take() throws InterruptedException; + WatchKey take() throws InterruptedException; } diff --git a/jdk/src/share/classes/java/nio/file/attribute/AclEntry.java b/jdk/src/share/classes/java/nio/file/attribute/AclEntry.java index b49944c1894..a0ea1fd16d5 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/AclEntry.java +++ b/jdk/src/share/classes/java/nio/file/attribute/AclEntry.java @@ -176,7 +176,7 @@ public final class AclEntry { */ public Builder setPermissions(Set perms) { // copy and check for erroneous elements - perms = new HashSet(perms); + perms = EnumSet.copyOf(perms); checkSet(perms, AclEntryPermission.class); this.perms = perms; return this; @@ -190,8 +190,7 @@ public final class AclEntry { * @return this builder */ public Builder setPermissions(AclEntryPermission... perms) { - Set set = - new HashSet(perms.length); + Set set = EnumSet.noneOf(AclEntryPermission.class); // copy and check for null elements for (AclEntryPermission p: perms) { if (p == null) @@ -214,7 +213,7 @@ public final class AclEntry { */ public Builder setFlags(Set flags) { // copy and check for erroneous elements - flags = new HashSet(flags); + flags = EnumSet.copyOf(flags); checkSet(flags, AclEntryFlag.class); this.flags = flags; return this; @@ -228,7 +227,7 @@ public final class AclEntry { * @return this builder */ public Builder setFlags(AclEntryFlag... flags) { - Set set = new HashSet(flags.length); + Set set = EnumSet.noneOf(AclEntryFlag.class); // copy and check for null elements for (AclEntryFlag f: flags) { if (f == null) diff --git a/jdk/src/share/classes/java/nio/file/attribute/AclFileAttributeView.java b/jdk/src/share/classes/java/nio/file/attribute/AclFileAttributeView.java index 13673116623..d4a8ba8b27e 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/AclFileAttributeView.java +++ b/jdk/src/share/classes/java/nio/file/attribute/AclFileAttributeView.java @@ -65,7 +65,7 @@ import java.io.IOException; * UserPrincipalLookupService} may be used to obtain a {@link UserPrincipal} * to represent these special identities by invoking the {@link * UserPrincipalLookupService#lookupPrincipalByName lookupPrincipalByName} - * method. + * method.

    * *

    Usage Example: * Suppose we wish to add an entry to an existing ACL to grant "joe" access: @@ -75,7 +75,7 @@ import java.io.IOException; * .lookupPrincipalByName("joe"); * * // get view - * AclFileAttributeView view = file.getFileAttributeView(AclFileAttributeView.class); + * AclFileAttributeView view = Files.getFileAttributeView(file, AclFileAttributeView.class); * * // create ACE to give "joe" read access * AclEntry entry = AclEntry.newBuilder() @@ -110,11 +110,11 @@ import java.io.IOException; * * * - *

    The {@link FileRef#getAttribute getAttribute} method may be used to read + *

    The {@link Files#getAttribute getAttribute} method may be used to read * the ACL or owner attributes as if by invoking the {@link #getAcl getAcl} or * {@link #getOwner getOwner} methods. * - *

    The {@link FileRef#setAttribute setAttribute} method may be used to + *

    The {@link Files#setAttribute setAttribute} method may be used to * update the ACL or owner attributes as if by invoking the {@link #setAcl setAcl} * or {@link #setOwner setOwner} methods. * @@ -122,8 +122,8 @@ import java.io.IOException; * *

    Implementations supporting this attribute view may also support setting * the initial ACL when creating a file or directory. The initial ACL - * may be provided to methods such as {@link Path#createFile createFile} or {@link - * Path#createDirectory createDirectory} as an {@link FileAttribute} with {@link + * may be provided to methods such as {@link Files#createFile createFile} or {@link + * Files#createDirectory createDirectory} as an {@link FileAttribute} with {@link * FileAttribute#name name} {@code "acl:acl"} and a {@link FileAttribute#value * value} that is the list of {@code AclEntry} objects. * @@ -135,8 +135,6 @@ import java.io.IOException; * translation. * * @since 1.7 - * @see Attributes#getAcl - * @see Attributes#setAcl */ public interface AclFileAttributeView diff --git a/jdk/src/share/classes/java/nio/file/attribute/Attributes.java b/jdk/src/share/classes/java/nio/file/attribute/Attributes.java deleted file mode 100644 index 32dbec38ee6..00000000000 --- a/jdk/src/share/classes/java/nio/file/attribute/Attributes.java +++ /dev/null @@ -1,460 +0,0 @@ -/* - * Copyright (c) 2007, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package java.nio.file.attribute; - -import java.nio.file.*; -import java.io.IOException; -import java.util.*; - -/** - * This class consists exclusively of static methods that operate on or return - * the attributes of files or file stores. These methods provide for convenient - * use of the {@link AttributeView attribute-views} defined in this package. - * - * @since 1.7 - */ - -public final class Attributes { - private Attributes() { } - - /** - * Reads the basic file attributes of a file. - * - *

    The {@code options} array may be used to indicate how symbolic links - * are handled for the case that the file is a symbolic link. By default, - * symbolic links are followed and the file attributes of the final target - * of the link are read. If the option {@link LinkOption#NOFOLLOW_LINKS - * NOFOLLOW_LINKS} is present then symbolic links are not followed and so - * the method returns the file attributes of the symbolic link itself. - * This option should be used where there is a need to determine if a - * file is a symbolic link: - *

    -     *    boolean isSymbolicLink = Attributes.readBasicFileAttributes(file, NOFOLLOW_LINKS).isSymbolicLink();
    -     * 
    - * - *

    It is implementation specific if all file attributes are read as an - * atomic operation with respect to other file system operations. - * - * @param file - * A file reference that locates the file - * @param options - * Options indicating how symbolic links are handled - * - * @return The basic file attributes - * - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, the security manager's {@link - * SecurityManager#checkRead(String) checkRead} method is invoked - * to check read access to file - * - * @see BasicFileAttributeView#readAttributes - */ - public static BasicFileAttributes readBasicFileAttributes(FileRef file, - LinkOption... options) - throws IOException - { - return file.getFileAttributeView(BasicFileAttributeView.class, options) - .readAttributes(); - } - - /** - * Reads the POSIX file attributes of a file. - * - *

    The {@code file} parameter locates a file that supports the {@link - * PosixFileAttributeView}. This file attribute view provides access to a - * subset of the file attributes commonly associated with files on file - * systems used by operating systems that implement the Portable Operating - * System Interface (POSIX) family of standards. It is implementation - * specific if all file attributes are read as an atomic operation with - * respect to other file system operations. - * - *

    The {@code options} array may be used to indicate how symbolic links - * are handled for the case that the file is a symbolic link. By default, - * symbolic links are followed and the file attributes of the final target - * of the link are read. If the option {@link LinkOption#NOFOLLOW_LINKS - * NOFOLLOW_LINKS} is present then symbolic links are not followed and so - * the method returns the file attributes of the symbolic link itself. - * - * @param file - * A file reference that locates the file - * @param options - * Options indicating how symbolic links are handled - * - * @return The POSIX file attributes - * - * @throws UnsupportedOperationException - * If the {@code PosixFileAttributeView} is not available - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, it denies {@link RuntimePermission}("accessUserInformation") - * or its {@link SecurityManager#checkRead(String) checkRead} method - * denies read access to the file. - * - * @see PosixFileAttributeView#readAttributes - */ - public static PosixFileAttributes readPosixFileAttributes(FileRef file, - LinkOption... options) - throws IOException - { - PosixFileAttributeView view = - file.getFileAttributeView(PosixFileAttributeView.class, options); - if (view == null) - throw new UnsupportedOperationException(); - return view.readAttributes(); - } - - /** - * Reads the DOS file attributes of a file. - * - *

    The {@code file} parameter locates a file that supports the {@link - * DosFileAttributeView}. This file attribute view provides access to - * legacy "DOS" attributes supported by the file systems such as File - * Allocation Table (FAT), commonly used in consumer devices. It is - * implementation specific if all file attributes are read as an atomic - * operation with respect to other file system operations. - * - *

    The {@code options} array may be used to indicate how symbolic links - * are handled for the case that the file is a symbolic link. By default, - * symbolic links are followed and the file attributes of the final target - * of the link are read. If the option {@link LinkOption#NOFOLLOW_LINKS - * NOFOLLOW_LINKS} is present then symbolic links are not followed and so - * the method returns the file attributes of the symbolic link itself. - * - * @param file - * A file reference that locates the file - * @param options - * Options indicating how symbolic links are handled - * - * @return The DOS file attributes - * - * @throws UnsupportedOperationException - * If the {@code DosFileAttributeView} is not available - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, the security manager's {@link - * SecurityManager#checkRead(String) checkRead} method is invoked - * to check read access to file - * - * @see DosFileAttributeView#readAttributes - */ - public static DosFileAttributes readDosFileAttributes(FileRef file, - LinkOption... options) - throws IOException - { - DosFileAttributeView view = - file.getFileAttributeView(DosFileAttributeView.class, options); - if (view == null) - throw new UnsupportedOperationException(); - return view.readAttributes(); - } - - /** - * Returns the owner of a file. - * - *

    The {@code file} parameter locates a file that supports the {@link - * FileOwnerAttributeView}. This file attribute view provides access to - * a file attribute that is the owner of the file. - * - * @param file - * A file reference that locates the file - * - * @return A user principal representing the owner of the file - * - * @throws UnsupportedOperationException - * If the {@code FileOwnerAttributeView} is not available - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, it denies {@link RuntimePermission}("accessUserInformation") - * or its {@link SecurityManager#checkRead(String) checkRead} method - * denies read access to the file. - * - * @see FileOwnerAttributeView#getOwner - */ - public static UserPrincipal getOwner(FileRef file) throws IOException { - FileOwnerAttributeView view = - file.getFileAttributeView(FileOwnerAttributeView.class); - if (view == null) - throw new UnsupportedOperationException(); - return view.getOwner(); - } - - /** - * Updates the file owner. - * - *

    The {@code file} parameter locates a file that supports the {@link - * FileOwnerAttributeView}. This file attribute view provides access to - * a file attribute that is the owner of the file. - * - * @param file - * A file reference that locates the file - * @param owner - * The new file owner - * - * @throws UnsupportedOperationException - * If the {@code FileOwnerAttributeView} is not available - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, it denies {@link RuntimePermission}("accessUserInformation") - * or its {@link SecurityManager#checkWrite(String) checkWrite} - * method denies write access to the file. - * - * @see FileOwnerAttributeView#setOwner - */ - public static void setOwner(FileRef file, UserPrincipal owner) - throws IOException - { - FileOwnerAttributeView view = - file.getFileAttributeView(FileOwnerAttributeView.class); - if (view == null) - throw new UnsupportedOperationException(); - view.setOwner(owner); - } - - /** - * Reads a file's Access Control List (ACL). - * - *

    The {@code file} parameter locates a file that supports the {@link - * AclFileAttributeView}. This file attribute view provides access to ACLs - * based on the ACL model specified in - * RFC 3530. - * - * @param file - * A file reference that locates the file - * - * @return An ordered list of {@link AclEntry entries} representing the - * ACL. The returned list is modifiable. - * - * @throws UnsupportedOperationException - * If the {@code AclAttributeView} is not available - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, it denies {@link RuntimePermission}("accessUserInformation") - * or its {@link SecurityManager#checkRead(String) checkRead} method - * denies read access to the file. - * - * @see AclFileAttributeView#getAcl - */ - public static List getAcl(FileRef file) throws IOException { - AclFileAttributeView view = - file.getFileAttributeView(AclFileAttributeView.class); - if (view == null) - throw new UnsupportedOperationException(); - return view.getAcl(); - } - - /** - * Updates a file's Access Control List (ACL). - * - *

    The {@code file} parameter locates a file that supports the {@link - * AclFileAttributeView}. This file attribute view provides access to ACLs - * based on the ACL model specified in - * RFC 3530. - * - * @param file - * A file reference that locates the file - * @param acl - * The new file ACL - * - * @throws UnsupportedOperationException - * If the {@code AclFileAttributeView} is not available - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, it denies {@link RuntimePermission}("accessUserInformation") - * or its {@link SecurityManager#checkWrite(String) checkWrite} - * method denies write access to the file. - * - * @see AclFileAttributeView#setAcl - */ - public static void setAcl(FileRef file, List acl) - throws IOException - { - AclFileAttributeView view = - file.getFileAttributeView(AclFileAttributeView.class); - if (view == null) - throw new UnsupportedOperationException(); - view.setAcl(acl); - } - - /** - * Updates a file's last modified time attribute. The file time is converted - * to the epoch and precision supported by the file system. Converting from - * finer to coarser granularities result in precision loss. The behavior of - * this method when attempting to set a timestamp to a value that is outside - * the range supported by the underlying file store is not defined. It may - * or not fail by throwing an {@code IOException}. - * - *

    If the file system does not support a last modified time attribute - * then this method has no effect. - * - *

    Usage Example: - * Suppose we want to set the last modified time to the current time: - *

    -     *    FileTime now = FileTime.fromMillis(System.currentTimeMillis());
    -     *    Attributes.setLastModifiedTime(file, now);
    -     * 
    - * - * @param file - * A file reference that locates the file - * @param lastModifiedTime - * The new last modified time - * - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, the security manager's {@link - * SecurityManager#checkWrite(String) checkWrite} method is invoked - * to check write access to file - * - * @see BasicFileAttributeView#setTimes - */ - public static void setLastModifiedTime(FileRef file, - FileTime lastModifiedTime) - throws IOException - { - if (lastModifiedTime == null) - throw new NullPointerException("'lastModifiedTime' is null"); - file.getFileAttributeView(BasicFileAttributeView.class) - .setTimes(lastModifiedTime, null, null); - } - - /** - * Updates a file's last access time attribute. The file time is converted - * to the epoch and precision supported by the file system. Converting from - * finer to coarser granularities result in precision loss. The behavior of - * this method when attempting to set a timestamp to a value that is outside - * the range supported by the underlying file store is not defined. It may - * or not fail by throwing an {@code IOException}. - * - *

    If the file system does not support a last access time attribute then - * this method has no effect. - * - * @param file - * A file reference that locates the file - * @param lastAccessTime - * The new last access time - * - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, the security manager's {@link - * SecurityManager#checkWrite(String) checkWrite} method is invoked - * to check write access to file - * - * @see BasicFileAttributeView#setTimes - */ - public static void setLastAccessTime(FileRef file, - FileTime lastAccessTime) - throws IOException - { - if (lastAccessTime == null) - throw new NullPointerException("'lastAccessTime' is null"); - file.getFileAttributeView(BasicFileAttributeView.class) - .setTimes(null, lastAccessTime, null); - } - - /** - * Sets a file's POSIX permissions. - * - *

    The {@code file} parameter is a reference to an existing file. It - * supports the {@link PosixFileAttributeView} that provides access to file - * attributes commonly associated with files on file systems used by - * operating systems that implement the Portable Operating System Interface - * (POSIX) family of standards. - * - * @param file - * A file reference that locates the file - * @param perms - * The new set of permissions - * - * @throws UnsupportedOperationException - * If {@code PosixFileAttributeView} is not available - * @throws ClassCastException - * If the sets contains elements that are not of type {@code - * PosixFilePermission} - * @throws IOException - * If an I/O error occurs - * @throws SecurityException - * In the case of the default provider, and a security manager is - * installed, it denies {@link RuntimePermission}("accessUserInformation") - * or its {@link SecurityManager#checkWrite(String) checkWrite} - * method denies write access to the file. - * - * @see PosixFileAttributeView#setPermissions - */ - public static void setPosixFilePermissions(FileRef file, - Set perms) - throws IOException - { - PosixFileAttributeView view = - file.getFileAttributeView(PosixFileAttributeView.class); - if (view == null) - throw new UnsupportedOperationException(); - view.setPermissions(perms); - } - - /** - * Reads the space attributes of a file store. - * - *

    The {@code store} parameter is a file store that supports the - * {@link FileStoreSpaceAttributeView} providing access to the space related - * attributes of the file store. It is implementation specific if all attributes - * are read as an atomic operation with respect to other file system operations. - * - * @param store - * The file store - * - * @return The file store space attributes - * - * @throws UnsupportedOperationException - * If the file store space attribute view is not supported - * @throws IOException - * If an I/O error occurs - * - * @see FileStoreSpaceAttributeView#readAttributes() - */ - public static FileStoreSpaceAttributes readFileStoreSpaceAttributes(FileStore store) - throws IOException - { - FileStoreSpaceAttributeView view = - store.getFileStoreAttributeView(FileStoreSpaceAttributeView.class); - if (view == null) - throw new UnsupportedOperationException(); - return view.readAttributes(); - } -} diff --git a/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributeView.java b/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributeView.java index e2534812e99..4c50f82e952 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributeView.java +++ b/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributeView.java @@ -85,16 +85,15 @@ import java.io.IOException; * * * - *

    The {@link java.nio.file.FileRef#getAttribute getAttribute} method may be + *

    The {@link java.nio.file.Files#getAttribute getAttribute} method may be * used to read any of these attributes as if by invoking the {@link * #readAttributes() readAttributes()} method. * - *

    The {@link java.nio.file.FileRef#setAttribute setAttribute} method may be + *

    The {@link java.nio.file.Files#setAttribute setAttribute} method may be * used to update the file's last modified time, last access time or create time * attributes as if by invoking the {@link #setTimes setTimes} method. * * @since 1.7 - * @see Attributes */ public interface BasicFileAttributeView @@ -131,9 +130,10 @@ public interface BasicFileAttributeView *

    This method updates the file's timestamp attributes. The values are * converted to the epoch and precision supported by the file system. * Converting from finer to coarser granularities result in precision loss. - * The behavior of this method when attempting to set a timestamp to a value - * that is outside the range supported by the underlying file store is not - * defined. It may or not fail by throwing an {@code IOException}. + * The behavior of this method when attempting to set a timestamp that is + * not supported or to a value that is outside the range supported by the + * underlying file store is not defined. It may or not fail by throwing an + * {@code IOException}. * *

    If any of the {@code lastModifiedTime}, {@code lastAccessTime}, * or {@code createTime} parameters has the value {@code null} then the @@ -146,6 +146,14 @@ public interface BasicFileAttributeView * lastAccessTime} and {@code createTime} parameters are {@code null} then * this method has no effect. * + *

    Usage Example: + * Suppose we want to change a file's creation time. + *

    +     *    Path path = ...
    +     *    FileTime time = ...
    +     *    Files.getFileAttributeView(path, BasicFileAttributeView.class).setTimes(null, null, time);
    +     * 
    + * * @param lastModifiedTime * the new last modified time, or {@code null} to not change the * value @@ -160,6 +168,8 @@ public interface BasicFileAttributeView * In the case of the default provider, a security manager is * installed, its {@link SecurityManager#checkWrite(String) checkWrite} * method is invoked to check write access to the file + * + * @see java.nio.file.Files#setLastModifiedTime */ void setTimes(FileTime lastModifiedTime, FileTime lastAccessTime, diff --git a/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributes.java b/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributes.java index 31e076b9286..aa5d2f56156 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributes.java +++ b/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributes.java @@ -34,8 +34,8 @@ package java.nio.file.attribute; * *

    Usage Example: *

    - *    FileRef file = ...
    - *    BasicFileAttributes attrs = Attributes.readBasicFileAttributes(file);
    + *    Path file = ...
    + *    BasicFileAttributes attrs = Files.readAttributes(file, BasicFileAttributes.class);
      * 
    * * @since 1.7 @@ -48,25 +48,40 @@ public interface BasicFileAttributes { /** * Returns the time of last modification. * + *

    If the file system implementation does not support a time stamp + * to indicate the time of last modification then this method returns an + * implementation specific default value, typically a {@code FileTime} + * representing the epoch (1970-01-01T00:00:00Z). + * * @return a {@code FileTime} representing the time the file was last - * modified or {@code null} if the attribute is not supported. + * modified */ FileTime lastModifiedTime(); /** - * Returns the time of last access if supported. + * Returns the time of last access. * - * @return a {@code FileTime} representing the time of last access or - * {@code null} if the attribute is not supported. + *

    If the file system implementation does not support a time stamp + * to indicate the time of last access then this method returns + * an implementation specific default value, typically the {@link + * #lastModifiedTime() last-modified-time} or a {@code FileTime} + * representing the epoch (1970-01-01T00:00:00Z). + * + * @return a {@code FileTime} representing the time of last access */ FileTime lastAccessTime(); /** - * Returns the creation time if supported. The creation time is the time - * that the file was created. + * Returns the creation time. The creation time is the time that the file + * was created. * - * @return a {@code FileTime} representing the time the file was created - * or {@code null} if the attribute is not supported. + *

    If the file system implementation does not support a time stamp + * to indicate the time when the file was created then this method returns + * an implementation specific default value, typically the {@link + * #lastModifiedTime() last-modified-time} or a {@code FileTime} + * representing the epoch (1970-01-01T00:00:00Z). + * + * @return a {@code FileTime} representing the time the file was created */ FileTime creationTime(); @@ -120,7 +135,7 @@ public interface BasicFileAttributes { * *

    File keys returned by this method can be compared for equality and are * suitable for use in collections. If the file system and files remain static, - * and two files are the {@link java.nio.file.Path#isSameFile same} with + * and two files are the {@link java.nio.file.Files#isSameFile same} with * non-{@code null} file keys, then their file keys are equal. * * @see java.nio.file.Files#walkFileTree diff --git a/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributeView.java b/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributeView.java index def09013e78..7a21bae5fec 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributeView.java +++ b/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributeView.java @@ -65,12 +65,12 @@ import java.io.IOException; * * * - *

    The {@link java.nio.file.FileRef#getAttribute getAttribute} method may + *

    The {@link java.nio.file.Files#getAttribute getAttribute} method may * be used to read any of these attributes, or any of the attributes defined by * {@link BasicFileAttributeView} as if by invoking the {@link #readAttributes * readAttributes()} method. * - *

    The {@link java.nio.file.FileRef#setAttribute setAttribute} method may + *

    The {@link java.nio.file.Files#setAttribute setAttribute} method may * be used to update the file's last modified time, last access time or create * time attributes as defined by {@link BasicFileAttributeView}. It may also be * used to update the DOS attributes as if by invoking the {@link #setReadOnly diff --git a/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributes.java b/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributes.java index d8d22174e84..d095d213358 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributes.java +++ b/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributes.java @@ -29,13 +29,13 @@ package java.nio.file.attribute; * File attributes associated with a file in a file system that supports * legacy "DOS" attributes. * - *

    The DOS attributes of a file are retrieved using a {@link - * DosFileAttributeView} by invoking its {@link DosFileAttributeView#readAttributes - * readAttributes} method. + *

    Usage Example: + *

    + *    Path file = ...
    + *    DosFileAttributes attrs = Files.readAttributes(file, DosFileAttributes.class);
    + * 
    * * @since 1.7 - * - * @see Attributes#readDosFileAttributes */ public interface DosFileAttributes diff --git a/jdk/src/share/classes/java/nio/file/attribute/FileAttribute.java b/jdk/src/share/classes/java/nio/file/attribute/FileAttribute.java index d8c32fd7bbe..cd11d43dde8 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/FileAttribute.java +++ b/jdk/src/share/classes/java/nio/file/attribute/FileAttribute.java @@ -28,8 +28,8 @@ package java.nio.file.attribute; /** * An object that encapsulates the value of a file attribute that can be set * atomically when creating a new file or directory by invoking the {@link - * java.nio.file.Path#createFile createFile} or {@link - * java.nio.file.Path#createDirectory createDirectory} methods. + * java.nio.file.Files#createFile createFile} or {@link + * java.nio.file.Files#createDirectory createDirectory} methods. * * @param The type of the file attribute value * diff --git a/jdk/src/share/classes/java/nio/file/attribute/FileAttributeView.java b/jdk/src/share/classes/java/nio/file/attribute/FileAttributeView.java index c9d7327494e..ee90ba07dba 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/FileAttributeView.java +++ b/jdk/src/share/classes/java/nio/file/attribute/FileAttributeView.java @@ -33,7 +33,7 @@ package java.nio.file.attribute; * * @since 1.7 * - * @see java.nio.file.FileRef#getFileAttributeView(Class,java.nio.file.LinkOption[]) + * @see java.nio.file.Files#getFileAttributeView(Path,Class,java.nio.file.LinkOption[]) */ public interface FileAttributeView diff --git a/jdk/src/share/classes/java/nio/file/attribute/FileOwnerAttributeView.java b/jdk/src/share/classes/java/nio/file/attribute/FileOwnerAttributeView.java index 8bf3a0932eb..09bc7ca02d6 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/FileOwnerAttributeView.java +++ b/jdk/src/share/classes/java/nio/file/attribute/FileOwnerAttributeView.java @@ -37,8 +37,8 @@ import java.io.IOException; *

    The {@link #getOwner getOwner} or {@link #setOwner setOwner} methods may * be used to read or update the owner of the file. * - *

    The {@link java.nio.file.FileRef#getAttribute getAttribute} and - * {@link java.nio.file.FileRef#setAttribute setAttribute} methods may also be + *

    The {@link java.nio.file.Files#getAttribute getAttribute} and + * {@link java.nio.file.Files#setAttribute setAttribute} methods may also be * used to read or update the owner. In that case, the owner attribute is * identified by the name {@code "owner"}, and the value of the attribute is * a {@link UserPrincipal}. diff --git a/jdk/src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java b/jdk/src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java deleted file mode 100644 index dca8d4f010c..00000000000 --- a/jdk/src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2007, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package java.nio.file.attribute; - -import java.io.IOException; - -/** - * A file store attribute view that supports reading of space attributes. - * - *

    Where dynamic access to file attributes is required, the attributes - * supported by this attribute view have the following names and types: - *

    - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
    Name Type
    "totalSpace" {@link Long}
    "usableSpace" {@link Long}
    "unallocatedSpace" {@link Long}
    - *
    - *

    The {@link java.nio.file.FileStore#getAttribute getAttribute} method may - * be used to read any of these attributes. - * - * @since 1.7 - */ - -public interface FileStoreSpaceAttributeView - extends FileStoreAttributeView -{ - /** - * Returns the name of the attribute view. Attribute views of this type - * have the name {@code "space"}. - */ - @Override - String name(); - - /** - * Reads the disk space attributes as a bulk operation. - * - *

    It is file system specific if all attributes are read as an - * atomic operation with respect to other file system operations. - * - * @return The disk space attributes - * - * @throws IOException - * If an I/O error occurs - */ - FileStoreSpaceAttributes readAttributes() throws IOException; -} diff --git a/jdk/src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java b/jdk/src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java deleted file mode 100644 index ff2bfb66f61..00000000000 --- a/jdk/src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2007, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package java.nio.file.attribute; - -/** - * Space related attributes of a file store. - * - * @since 1.7 - * - * @see Attributes#readFileStoreSpaceAttributes - */ - -public interface FileStoreSpaceAttributes { - /** - * Returns the size, in bytes, of the file store. - */ - long totalSpace(); - - /** - * Returns the number of bytes available to this Java virtual machine on the - * file store. - * - *

    The returned number of available bytes is a hint, but not a - * guarantee, that it is possible to use most or any of these bytes. The - * number of usable bytes is most likely to be accurate immediately - * after the space attributes are obtained. It is likely to be made inaccurate - * by any external I/O operations including those made on the system outside - * of this Java virtual machine. - */ - long usableSpace(); - - /** - * Returns the number of unallocated bytes in the file store. - * - *

    The returned number of unallocated bytes is a hint, but not a - * guarantee, that it is possible to use most or any of these bytes. The - * number of unallocated bytes is most likely to be accurate immediately - * after the space attributes are obtained. It is likely to be - * made inaccurate by any external I/O operations including those made on - * the system outside of this virtual machine. - */ - long unallocatedSpace(); -} diff --git a/jdk/src/share/classes/java/nio/file/attribute/FileTime.java b/jdk/src/share/classes/java/nio/file/attribute/FileTime.java index 1b3d2ff2f84..6cac437cdce 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/FileTime.java +++ b/jdk/src/share/classes/java/nio/file/attribute/FileTime.java @@ -35,20 +35,53 @@ import java.util.concurrent.TimeUnit; /** * Represents the value of a file's time stamp attribute. For example, it may - * represent the time that the file was last modified, accessed, or created. + * represent the time that the file was last + * {@link BasicFileAttributes#lastModifiedTime() modified}, + * {@link BasicFileAttributes#lastAccessTime() accessed}, + * or {@link BasicFileAttributes#creationTime() created}. * *

    Instances of this class are immutable. * * @since 1.7 - * @see BasicFileAttributes - * @see Attributes#setLastModifiedTime + * @see java.nio.file.Files#setLastModifiedTime + * @see java.nio.file.Files#getLastModifiedTime */ -public final class FileTime implements Comparable { +public final class FileTime + implements Comparable +{ + /** + * The value since the epoch; can be negative. + */ private final long value; - private final TimeUnit unit; - private String valueAsString; // created lazily + /** + * The unit of granularity to interpret the value. + */ + private final TimeUnit unit; + + /** + * The value return by toString (created lazily) + */ + private String valueAsString; + + /** + * The value in days and excess nanos (created lazily) + */ + private DaysAndNanos daysAndNanos; + + /** + * Returns a DaysAndNanos object representing the value. + */ + private DaysAndNanos asDaysAndNanos() { + if (daysAndNanos == null) + daysAndNanos = new DaysAndNanos(value, unit); + return daysAndNanos; + } + + /** + * Initializes a new instance of this class. + */ private FileTime(long value, TimeUnit unit) { if (unit == null) throw new NullPointerException(); @@ -143,9 +176,8 @@ public final class FileTime implements Comparable { */ @Override public int hashCode() { - // hash value for fixed granularity to satisfy contract with equals - long ms = toMillis(); - return (int)(ms ^ (ms >>> 32)); + // hashcode of days/nanos representation to satisfy contract with equals + return asDaysAndNanos().hashCode(); } /** @@ -162,46 +194,12 @@ public final class FileTime implements Comparable { @Override public int compareTo(FileTime other) { // same granularity - if (unit == other.unit) + if (unit == other.unit) { return (value < other.value) ? -1 : (value == other.value ? 0 : 1); - - // compare in days - long thisValueInDays = unit.toDays(value); - long otherValueInDays = other.unit.toDays(other.value); - if (thisValueInDays != otherValueInDays) - return (thisValueInDays < otherValueInDays) ? -1 : 1; - - // compare remainder in nanoseconds - long thisRemainder = remainderInNanos(thisValueInDays); - long otherRemainder = other.remainderInNanos(otherValueInDays); - return (thisRemainder < otherRemainder) ? -1 : - (thisRemainder == otherRemainder) ? 0 : 1; - } - - private long remainderInNanos(long days) { - // constants for conversion - final long C0 = 1L; - final long C1 = C0 * 24L; - final long C2 = C1 * 60L; - final long C3 = C2 * 60L; - final long C4 = C3 * 1000L; - final long C5 = C4 * 1000L; - final long C6 = C5 * 1000L; - - long scale; - switch (unit) { - case DAYS : scale = C0; break; - case HOURS : scale = C1; break; - case MINUTES : scale = C2; break; - case SECONDS : scale = C3; break; - case MILLISECONDS : scale = C4; break; - case MICROSECONDS : scale = C5; break; - case NANOSECONDS : scale = C6; break; - default: - throw new AssertionError("Unit not handled"); + } else { + // compare using days/nanos representation when unit differs + return asDaysAndNanos().compareTo(other.asDaysAndNanos()); } - long rem = value - (days * scale); - return unit.toNanos(rem); } /** @@ -239,26 +237,12 @@ public final class FileTime implements Comparable { // nothing to do when seconds/minutes/hours/days String fractionAsString = ""; if (unit.compareTo(TimeUnit.SECONDS) < 0) { - // constants for conversion - final long C0 = 1L; - final long C1 = C0 * 1000L; - final long C2 = C1 * 1000L; - final long C3 = C2 * 1000L; - - long scale; - int width; - switch (unit) { - case MILLISECONDS : scale = C1; width = 3; break; - case MICROSECONDS : scale = C2; width = 6; break; - case NANOSECONDS : scale = C3; width = 9; break; - default: - throw new AssertionError("Unit not handled"); - } - long fraction = value % scale; + long fraction = asDaysAndNanos().fractionOfSecondInNanos(); if (fraction != 0L) { // fraction must be positive if (fraction < 0L) { - fraction += scale; + final long MAX_FRACTION_PLUS_1 = 1000L * 1000L * 1000L; + fraction += MAX_FRACTION_PLUS_1; if (ms != Long.MIN_VALUE) ms--; } @@ -266,7 +250,7 @@ public final class FileTime implements Comparable { // stripping any trailing zeros String s = Long.toString(fraction); int len = s.length(); - width -= len; + int width = 9 - len; StringBuilder sb = new StringBuilder("."); while (width-- > 0) { sb.append('0'); @@ -302,4 +286,76 @@ public final class FileTime implements Comparable { } return v; } + + /** + * Represents a FileTime's value as two longs: the number of days since + * the epoch, and the excess (in nanoseconds). This is used for comparing + * values with different units of granularity. + */ + private static class DaysAndNanos implements Comparable { + // constants for conversion + private static final long C0 = 1L; + private static final long C1 = C0 * 24L; + private static final long C2 = C1 * 60L; + private static final long C3 = C2 * 60L; + private static final long C4 = C3 * 1000L; + private static final long C5 = C4 * 1000L; + private static final long C6 = C5 * 1000L; + + /** + * The value (in days) since the epoch; can be negative. + */ + private final long days; + + /** + * The excess (in nanoseconds); can be negative if days <= 0. + */ + private final long excessNanos; + + /** + * Initializes a new instance of this class. + */ + DaysAndNanos(long value, TimeUnit unit) { + long scale; + switch (unit) { + case DAYS : scale = C0; break; + case HOURS : scale = C1; break; + case MINUTES : scale = C2; break; + case SECONDS : scale = C3; break; + case MILLISECONDS : scale = C4; break; + case MICROSECONDS : scale = C5; break; + case NANOSECONDS : scale = C6; break; + default : throw new AssertionError("Unit not handled"); + } + this.days = unit.toDays(value); + this.excessNanos = unit.toNanos(value - (this.days * scale)); + } + + /** + * Returns the fraction of a second, in nanoseconds. + */ + long fractionOfSecondInNanos() { + return excessNanos % (1000L * 1000L * 1000L); + } + + @Override + public boolean equals(Object obj) { + return (obj instanceof DaysAndNanos) ? + compareTo((DaysAndNanos)obj) == 0 : false; + } + + @Override + public int hashCode() { + return (int)(days ^ (days >>> 32) ^ + excessNanos ^ (excessNanos >>> 32)); + } + + @Override + public int compareTo(DaysAndNanos other) { + if (this.days != other.days) + return (this.days < other.days) ? -1 : 1; + return (this.excessNanos < other.excessNanos) ? -1 : + (this.excessNanos == other.excessNanos) ? 0 : 1; + } + } } diff --git a/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributeView.java b/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributeView.java index 2ec2008d382..9f1a668a8c6 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributeView.java +++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributeView.java @@ -60,8 +60,8 @@ import java.io.IOException; *

    Usage Example: * Suppose we need to print out the owner and access permissions of a file: *

    - *     FileRef file = ...
    - *     PosixFileAttributes attrs = file.getFileAttributeView(PosixFileAttributeView.class)
    + *     Path file = ...
    + *     PosixFileAttributes attrs = Files.getFileAttributeView(file, PosixFileAttributeView.class)
      *         .readAttributes();
      *     System.out.format("%s %s%n",
      *         attrs.owner().getName(),
    @@ -90,12 +90,12 @@ import java.io.IOException;
      * 
      * 
      *
    - * 

    The {@link FileRef#getAttribute getAttribute} method may be used to read + *

    The {@link Files#getAttribute getAttribute} method may be used to read * any of these attributes, or any of the attributes defined by {@link * BasicFileAttributeView} as if by invoking the {@link #readAttributes * readAttributes()} method. * - *

    The {@link FileRef#setAttribute setAttribute} method may be used to update + *

    The {@link Files#setAttribute setAttribute} method may be used to update * the file's last modified time, last access time or create time attributes as * defined by {@link BasicFileAttributeView}. It may also be used to update * the permissions, owner, or group-owner as if by invoking the {@link @@ -105,8 +105,8 @@ import java.io.IOException; *

    Setting Initial Permissions

    *

    Implementations supporting this attribute view may also support setting * the initial permissions when creating a file or directory. The - * initial permissions are provided to the {@link Path#createFile createFile} - * or {@link Path#createDirectory createDirectory} methods as a {@link + * initial permissions are provided to the {@link Files#createFile createFile} + * or {@link Files#createDirectory createDirectory} methods as a {@link * FileAttribute} with {@link FileAttribute#name name} {@code "posix:permissions"} * and a {@link FileAttribute#value value} that is the set of permissions. The * following example uses the {@link PosixFilePermissions#asFileAttribute @@ -117,7 +117,7 @@ import java.io.IOException; * Path path = ... * Set<PosixFilePermission> perms = * EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ); - * path.createFile(PosixFilePermissions.asFileAttribute(perms)); + * Files.createFile(path, PosixFilePermissions.asFileAttribute(perms)); *

    * *

    When the access permissions are set at file creation time then the actual @@ -128,13 +128,11 @@ import java.io.IOException; * the access permissions, and the underlying file system supports access * permissions, then it is required that the value of the actual access * permissions will be equal or less than the value of the attribute - * provided to the {@link java.nio.file.Path#createFile createFile} or - * {@link java.nio.file.Path#createDirectory createDirectory} methods. In - * other words, the file may be more secure than requested. + * provided to the {@link Files#createFile createFile} or {@link + * Files#createDirectory createDirectory} methods. In other words, the file may + * be more secure than requested. * * @since 1.7 - * - * @see Attributes#readPosixFileAttributes */ public interface PosixFileAttributeView diff --git a/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributes.java b/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributes.java index 6dfd650c327..361d4c2cc6e 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributes.java +++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributes.java @@ -37,8 +37,6 @@ import java.util.Set; * PosixFileAttributeView#readAttributes readAttributes} method. * * @since 1.7 - * - * @see Attributes#readPosixFileAttributes */ public interface PosixFileAttributes diff --git a/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermission.java b/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermission.java index 3c5f33f86c7..52419b7b0aa 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermission.java +++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermission.java @@ -25,14 +25,12 @@ package java.nio.file.attribute; -import java.util.*; - /** * Defines the bits for use with the {@link PosixFileAttributes#permissions() * permissions} attribute. * - *

    The {@link PosixFileAttributes} class defines method methods for - * manipulating {@link Set sets} of permissions. + *

    The {@link PosixFilePermissions} class defines methods for manipulating + * set of permissions. * * @since 1.7 */ diff --git a/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermissions.java b/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermissions.java index b3903957ef3..7499fa9498f 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermissions.java +++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermissions.java @@ -126,7 +126,7 @@ public final class PosixFilePermissions { public static Set fromString(String perms) { if (perms.length() != 9) throw new IllegalArgumentException("Invalid mode"); - Set result = new HashSet(); + Set result = EnumSet.noneOf(PosixFilePermission.class); if (isR(perms.charAt(0))) result.add(OWNER_READ); if (isW(perms.charAt(1))) result.add(OWNER_WRITE); if (isX(perms.charAt(2))) result.add(OWNER_EXECUTE); @@ -141,8 +141,8 @@ public final class PosixFilePermissions { /** * Creates a {@link FileAttribute}, encapsulating a copy of the given file - * permissions, suitable for passing to the {@link java.nio.file.Path#createFile - * createFile} or {@link java.nio.file.Path#createDirectory createDirectory} + * permissions, suitable for passing to the {@link java.nio.file.Files#createFile + * createFile} or {@link java.nio.file.Files#createDirectory createDirectory} * methods. * * @param perms diff --git a/jdk/src/share/classes/java/nio/file/attribute/UserDefinedFileAttributeView.java b/jdk/src/share/classes/java/nio/file/attribute/UserDefinedFileAttributeView.java index 04493e39369..41aaf2f107d 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/UserDefinedFileAttributeView.java +++ b/jdk/src/share/classes/java/nio/file/attribute/UserDefinedFileAttributeView.java @@ -59,9 +59,9 @@ import java.io.IOException; * attributes. * *

    Where dynamic access to file attributes is required, the {@link - * java.nio.file.FileRef#getAttribute getAttribute} method may be used to read + * java.nio.file.Files#getAttribute getAttribute} method may be used to read * the attribute value. The attribute value is returned as a byte array (byte[]). - * The {@link java.nio.file.FileRef#setAttribute setAttribute} method may be used + * The {@link java.nio.file.Files#setAttribute setAttribute} method may be used * to write the value of a user-defined attribute from a buffer (as if by * invoking the {@link #write write} method), or byte array (byte[]). * @@ -132,8 +132,8 @@ public interface UserDefinedFileAttributeView * Suppose we want to read a file's MIME type that is stored as a user-defined * attribute with the name "{@code user.mimetype}". *

    -     *    UserDefinedFileAttributeView view = file
    -     *        .getFileAttributeView(UserDefinedFileAttributeView.class);
    +     *    UserDefinedFileAttributeView view =
    +     *        Files.getFileAttributeView(path, UserDefinedFileAttributeView.class);
          *    String name = "user.mimetype";
          *    ByteBuffer buf = ByteBuffer.allocate(view.size(name));
          *    view.read(name, buf);
    @@ -189,8 +189,8 @@ public interface UserDefinedFileAttributeView
          * 

    Usage Example: * Suppose we want to write a file's MIME type as a user-defined attribute: *

    -     *    UserDefinedFileAttributeView view = file
    -     *        .getFileAttributeView(UserDefinedFileAttributeView.class);
    +     *    UserDefinedFileAttributeView view =
    +     *        FIles.getFileAttributeView(path, UserDefinedFileAttributeView.class);
          *    view.write("user.mimetype", Charset.defaultCharset().encode("text/html"));
          * 
    * diff --git a/jdk/src/share/classes/java/nio/file/attribute/package-info.java b/jdk/src/share/classes/java/nio/file/attribute/package-info.java index a82881176df..0f06fded673 100644 --- a/jdk/src/share/classes/java/nio/file/attribute/package-info.java +++ b/jdk/src/share/classes/java/nio/file/attribute/package-info.java @@ -46,8 +46,6 @@ * Can read or update user-defined file attributes *   {@link java.nio.file.attribute.FileStoreAttributeView} * Can read or update file system attributes - *     {@link java.nio.file.attribute.FileStoreSpaceAttributeView}   - * Can read file system space usage related attributes * * *

    An attribute view provides a read-only or updatable view of the non-opaque @@ -55,7 +53,7 @@ * The {@link java.nio.file.attribute.FileAttributeView} interface is * extended by several other interfaces that that views to specific sets of file * attributes. {@code FileAttributeViews} are selected by invoking the {@link - * java.nio.file.FileRef#getFileAttributeView} method with a + * java.nio.file.Files#getFileAttributeView} method with a * type-token to identify the required view. Views can also be identified * by name. The {@link java.nio.file.attribute.FileStoreAttributeView} interface * provides access to file store attributes. A {@code FileStoreAttributeView} of @@ -83,13 +81,6 @@ * on the model defined by * RFC 3530: Network File System (NFS) version 4 Protocol. * - *

    The {@link java.nio.file.attribute.FileStoreSpaceAttributeView} class - * defines methods to read file system space usage related attributes of a file system. - * - *

    The {@link java.nio.file.attribute.Attributes} utility class defines - * static methods to access file or file system attribute using the above - * attribute views. - * *

    In addition to attribute views, this package also defines classes and * interfaces that are used when accessing attributes: * diff --git a/jdk/src/share/classes/java/nio/file/package-info.java b/jdk/src/share/classes/java/nio/file/package-info.java index d5fa4d6bbd7..5a687774aef 100644 --- a/jdk/src/share/classes/java/nio/file/package-info.java +++ b/jdk/src/share/classes/java/nio/file/package-info.java @@ -31,7 +31,7 @@ * systems. The API to access file and file system attributes is defined in the * {@link java.nio.file.attribute} package. The {@link java.nio.file.spi} * package is used by service provider implementors wishing to extend the - * platform default provider, or to construct other provider implementations. + * platform default provider, or to construct other provider implementations.

    * *

    Symbolic Links

    * Many operating systems and file systems support for symbolic links. @@ -43,7 +43,7 @@ * target of the link. This package includes support for symbolic links where * implementations provide these semantics. File systems may support other types * that are semantically close but support for these other types of links is - * not included in this package. + * not included in this package.

    * *

    Interoperability

    * The {@link java.io.File} class defines the {@link java.io.File#toPath @@ -52,7 +52,7 @@ * {@code Path} can be used to operate on the same file as the {@code File} * object. The {@code Path} specification provides further information * on the interoperability between {@code Path} - * and {@code java.io.File} objects. + * and {@code java.io.File} objects.

    * *

    Visibility

    * The view of the files and file system provided by classes in this package are @@ -63,7 +63,7 @@ * network-filesystem protocols. This is true regardless of the language in which * these other programs are written, and whether they are running on the same machine * or on some other machine. The exact nature of any such inconsistencies are - * system-dependent and are therefore unspecified. + * system-dependent and are therefore unspecified.

    * *

    Synchronized I/O File Integrity

    * The {@link java.nio.file.StandardOpenOption#SYNC SYNC} and {@link @@ -80,14 +80,14 @@ * crash. If the file does not reside on a local device then no such guarantee * is made. Whether this guarantee is possible with other {@link * java.nio.file.spi.FileSystemProvider provider} implementations is provider - * specific. + * specific.

    * *

    General Exceptions

    * Unless otherwise noted, passing a {@code null} argument to a constructor * or method of any class or interface in this package will cause a {@link * java.lang.NullPointerException NullPointerException} to be thrown. Additionally, * invoking a method with a collection containing a {@code null} element will - * cause a {@code NullPointerException}, unless otherwise specified. + * cause a {@code NullPointerException}, unless otherwise specified.

    * *

    Unless otherwise noted, methods that attempt to access the file system * will throw {@link java.nio.file.ClosedFileSystemException} when invoked on @@ -95,12 +95,13 @@ * {@link java.nio.file.FileSystem#close closed}. Additionally, any methods * that attempt write access to a file system will throw {@link * java.nio.file.ReadOnlyFileSystemException} when invoked on an object associated - * with a {@link java.nio.file.FileSystem} that only provides read-only access. + * with a {@link java.nio.file.FileSystem} that only provides read-only + * access.

    * *

    Unless otherwise noted, invoking a method of any class or interface in * this package created by one {@link java.nio.file.spi.FileSystemProvider * provider} with a parameter that is an object created by another provider, - * will throw {@link java.nio.file.ProviderMismatchException}. + * will throw {@link java.nio.file.ProviderMismatchException}.

    * *

    Optional Specific Exceptions

    * Most of the methods defined by classes in this package that access the diff --git a/jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java b/jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java index a267ad11bba..ad285bd6ddb 100644 --- a/jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java +++ b/jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java @@ -26,17 +26,21 @@ package java.nio.file.spi; import java.nio.file.*; -import java.nio.file.attribute.FileAttribute; +import java.nio.file.attribute.*; import java.nio.channels.*; import java.net.URI; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.IOException; import java.util.*; import java.util.concurrent.ExecutorService; import java.security.AccessController; import java.security.PrivilegedAction; -import java.io.IOException; /** - * Service-provider class for file systems. + * Service-provider class for file systems. The methods defined by the {@link + * java.nio.file.Files} class will typically delegate to an instance of this + * class. * *

    A file system provider is a concrete implementation of this class that * implements the abstract methods defined by this class. A provider is @@ -64,13 +68,6 @@ import java.io.IOException; * the {@code newFileSystem} method is invoked. In the case of the default * provider, the {@code FileSystem} is created when the provider is initialized. * - *

    In addition to file systems, a provider is also a factory for {@link - * FileChannel} and {@link AsynchronousFileChannel} channels. The {@link - * #newFileChannel newFileChannel} and {@link #newAsynchronousFileChannel - * AsynchronousFileChannel} methods are defined to open or create files, returning - * a channel to access the file. These methods are invoked by static factory - * methods defined in the {@link java.nio.channels} package. - * *

    All of the methods in this class are safe for use by multiple concurrent * threads. * @@ -202,9 +199,10 @@ public abstract class FileSystemProvider { * *

    This method throws {@link FileSystemAlreadyExistsException} if the * file system already exists because it was previously created by an - * invocation of this method. Once a file system is {@link FileSystem#close - * closed} it is provider-dependent if the provider allows a new file system - * to be created with the same URI as a file system it previously created. + * invocation of this method. Once a file system is {@link + * java.nio.file.FileSystem#close closed} it is provider-dependent if the + * provider allows a new file system to be created with the same URI as a + * file system it previously created. * * @param uri * URI reference @@ -234,20 +232,21 @@ public abstract class FileSystemProvider { * *

    This method returns a reference to a {@code FileSystem} that was * created by invoking the {@link #newFileSystem(URI,Map) newFileSystem(URI,Map)} - * method. File systems created the {@link #newFileSystem(FileRef,Map) - * newFileSystem(FileRef,Map)} method are not returned by this method. + * method. File systems created the {@link #newFileSystem(Path,Map) + * newFileSystem(Path,Map)} method are not returned by this method. * The file system is identified by its {@code URI}. Its exact form * is highly provider dependent. In the case of the default provider the URI's * path component is {@code "/"} and the authority, query and fragment components * are undefined (Undefined components are represented by {@code null}). * - *

    Once a file system created by this provider is {@link FileSystem#close - * closed} it is provider-dependent if this method returns a reference to - * the closed file system or throws {@link FileSystemNotFoundException}. - * If the provider allows a new file system to be created with the same URI - * as a file system it previously created then this method throws the - * exception if invoked after the file system is closed (and before a new - * instance is created by the {@link #newFileSystem newFileSystem} method). + *

    Once a file system created by this provider is {@link + * java.nio.file.FileSystem#close closed} it is provider-dependent if this + * method returns a reference to the closed file system or throws {@link + * FileSystemNotFoundException}. If the provider allows a new file system to + * be created with the same URI as a file system it previously created then + * this method throws the exception if invoked after the file system is + * closed (and before a new instance is created by the {@link #newFileSystem + * newFileSystem} method). * *

    If a security manager is installed then a provider implementation * may require to check a permission before returning a reference to an @@ -306,17 +305,16 @@ public abstract class FileSystemProvider { * *

    This method is intended for specialized providers of pseudo file * systems where the contents of one or more files is treated as a file - * system. The {@code file} parameter is a reference to an existing file - * and the {@code env} parameter is a map of provider specific properties to - * configure the file system. + * system. The {@code env} parameter is a map of provider specific properties + * to configure the file system. * *

    If this provider does not support the creation of such file systems * or if the provider does not recognize the file type of the given file then * it throws {@code UnsupportedOperationException}. The default implementation * of this method throws {@code UnsupportedOperationException}. * - * @param file - * The file + * @param path + * The path to the file * @param env * A map of provider specific properties to configure the file system; * may be empty @@ -336,32 +334,121 @@ public abstract class FileSystemProvider { * If a security manager is installed and it denies an unspecified * permission. */ - public FileSystem newFileSystem(FileRef file, Map env) + public FileSystem newFileSystem(Path path, Map env) throws IOException { throw new UnsupportedOperationException(); } /** - * Opens or creates a file for reading and/or writing, returning a file - * channel to access the file. + * Opens a file, returning an input stream to read from the file. This + * method works in exactly the manner specified by the {@link + * Files#newInputStream} method. * - *

    This method is invoked by the {@link FileChannel#open(Path,Set,FileAttribute[]) - * FileChannel.open} method to open a file channel. A provider that does not - * support all the features required to construct a file channel throws - * {@code UnsupportedOperationException}. The default provider is required - * to support the creation of file channels. When not overridden, the - * default implementation throws {@code UnsupportedOperationException}. + *

    The default implementation of this method opens a channel to the file + * as if by invoking the {@link #newByteChannel} method and constructs a + * stream that reads bytes from the channel. This method should be overridden + * where appropriate. * * @param path - * The path of the file to open or create + * the path to the file to open * @param options - * Options specifying how the file is opened + * options specifying how the file is opened + * + * @return a new input stream + * + * @throws IllegalArgumentException + * if an invalid combination of options is specified + * @throws UnsupportedOperationException + * if an unsupported option is specified + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file. + */ + public InputStream newInputStream(Path path, OpenOption... options) + throws IOException + { + if (options.length > 0) { + for (OpenOption opt: options) { + if (opt != StandardOpenOption.READ) + throw new UnsupportedOperationException("'" + opt + "' not allowed"); + } + } + return Channels.newInputStream(Files.newByteChannel(path)); + } + + /** + * Opens or creates a file, returning an output stream that may be used to + * write bytes to the file. This method works in exactly the manner + * specified by the {@link Files#newOutputStream} method. + * + *

    The default implementation of this method opens a channel to the file + * as if by invoking the {@link #newByteChannel} method and constructs a + * stream that writes bytes to the channel. This method should be overridden + * where appropriate. + * + * @param path + * the path to the file to open or create + * @param options + * options specifying how the file is opened + * + * @return a new output stream + * + * @throws IllegalArgumentException + * if {@code options} contains an invalid combination of options + * @throws UnsupportedOperationException + * if an unsupported option is specified + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to the file. The {@link + * SecurityManager#checkDelete(String) checkDelete} method is + * invoked to check delete access if the file is opened with the + * {@code DELETE_ON_CLOSE} option. + */ + public OutputStream newOutputStream(Path path, OpenOption... options) + throws IOException + { + int len = options.length; + Set opts = new HashSet(len + 3); + if (len == 0) { + opts.add(StandardOpenOption.CREATE); + opts.add(StandardOpenOption.TRUNCATE_EXISTING); + } else { + for (OpenOption opt: options) { + if (opt == StandardOpenOption.READ) + throw new IllegalArgumentException("READ not allowed"); + opts.add(opt); + } + } + opts.add(StandardOpenOption.WRITE); + return Channels.newOutputStream(newByteChannel(path, opts)); + } + + /** + * Opens or creates a file for reading and/or writing, returning a file + * channel to access the file. This method works in exactly the manner + * specified by the {@link FileChannel#open(Path,Set,FileAttribute[]) + * FileChannel.open} method. A provider that does not support all the + * features required to construct a file channel throws {@code + * UnsupportedOperationException}. The default provider is required to + * support the creation of file channels. When not overridden, the default + * implementation throws {@code UnsupportedOperationException}. + * + * @param path + * the path of the file to open or create + * @param options + * options specifying how the file is opened * @param attrs - * An optional list of file attributes to set atomically when + * an optional list of file attributes to set atomically when * creating the file * - * @return A new file channel + * @return a new file channel * * @throws IllegalArgumentException * If the set contains an invalid combination of options @@ -387,11 +474,10 @@ public abstract class FileSystemProvider { /** * Opens or creates a file for reading and/or writing, returning an - * asynchronous file channel to access the file. - * - *

    This method is invoked by the {@link + * asynchronous file channel to access the file. This method works in + * exactly the manner specified by the {@link * AsynchronousFileChannel#open(Path,Set,ExecutorService,FileAttribute[]) - * AsynchronousFileChannel.open} method to open an asynchronous file channel. + * AsynchronousFileChannel.open} method. * A provider that does not support all the features required to construct * an asynchronous file channel throws {@code UnsupportedOperationException}. * The default provider is required to support the creation of asynchronous @@ -399,17 +485,17 @@ public abstract class FileSystemProvider { * method throws {@code UnsupportedOperationException}. * * @param path - * The path of the file to open or create + * the path of the file to open or create * @param options - * Options specifying how the file is opened + * options specifying how the file is opened * @param executor - * The thread pool or {@code null} to associate the channel with + * the thread pool or {@code null} to associate the channel with * the default thread pool * @param attrs - * An optional list of file attributes to set atomically when + * an optional list of file attributes to set atomically when * creating the file * - * @return A new asynchronous file channel + * @return a new asynchronous file channel * * @throws IllegalArgumentException * If the set contains an invalid combination of options @@ -434,4 +520,569 @@ public abstract class FileSystemProvider { { throw new UnsupportedOperationException(); } + + /** + * Opens or creates a file, returning a seekable byte channel to access the + * file. This method works in exactly the manner specified by the {@link + * Files#newByteChannel(Path,Set,FileAttribute[])} method. + * + * @param path + * the path to the file to open or create + * @param options + * options specifying how the file is opened + * @param attrs + * an optional list of file attributes to set atomically when + * creating the file + * + * @return a new seekable byte channel + * + * @throws IllegalArgumentException + * if the set contains an invalid combination of options + * @throws UnsupportedOperationException + * if an unsupported open option is specified or the array contains + * attributes that cannot be set atomically when creating the file + * @throws FileAlreadyExistsException + * if a file of that name already exists and the {@link + * StandardOpenOption#CREATE_NEW CREATE_NEW} option is specified + * (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the path if the file is + * opened for reading. The {@link SecurityManager#checkWrite(String) + * checkWrite} method is invoked to check write access to the path + * if the file is opened for writing. The {@link + * SecurityManager#checkDelete(String) checkDelete} method is + * invoked to check delete access if the file is opened with the + * {@code DELETE_ON_CLOSE} option. + */ + public abstract SeekableByteChannel newByteChannel(Path path, + Set options, FileAttribute... attrs) throws IOException; + + /** + * Opens a directory, returning a {@code DirectoryStream} to iterate over + * the entries in the directory. This method works in exactly the manner + * specified by the {@link + * Files#newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter)} + * method. + * + * @param dir + * the path to the directory + * @param filter + * the directory stream filter + * + * @return a new and open {@code DirectoryStream} object + * + * @throws NotDirectoryException + * if the file could not otherwise be opened because it is not + * a directory (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the directory. + */ + public abstract DirectoryStream newDirectoryStream(Path dir, + DirectoryStream.Filter filter) throws IOException; + + /** + * Creates a new directory. This method works in exactly the manner + * specified by the {@link Files#createDirectory} method. + * + * @param dir + * the directory to create + * @param attrs + * an optional list of file attributes to set atomically when + * creating the directory + * + * @throws UnsupportedOperationException + * if the array contains an attribute that cannot be set atomically + * when creating the directory + * @throws FileAlreadyExistsException + * if a directory could not otherwise be created because a file of + * that name already exists (optional specific exception) + * @throws IOException + * if an I/O error occurs or the parent directory does not exist + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to the new directory. + */ + public abstract void createDirectory(Path dir, FileAttribute... attrs) + throws IOException; + + /** + * Creates a symbolic link to a target. This method works in exactly the + * manner specified by the {@link Files#createSymbolicLink} method. + * + *

    The default implementation of this method throws {@code + * UnsupportedOperationException}. + * + * @param link + * the path of the symbolic link to create + * @param target + * the target of the symbolic link + * @param attrs + * the array of attributes to set atomically when creating the + * symbolic link + * + * @throws UnsupportedOperationException + * if the implementation does not support symbolic links or the + * array contains an attribute that cannot be set atomically when + * creating the symbolic link + * @throws FileAlreadyExistsException + * if a file with the name already exists (optional specific + * exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager + * is installed, it denies {@link LinkPermission}("symbolic") + * or its {@link SecurityManager#checkWrite(String) checkWrite} + * method denies write access to the path of the symbolic link. + */ + public void createSymbolicLink(Path link, Path target, FileAttribute... attrs) + throws IOException + { + throw new UnsupportedOperationException(); + } + + /** + * Creates a new link (directory entry) for an existing file. This method + * works in exactly the manner specified by the {@link Files#createLink} + * method. + * + *

    The default implementation of this method throws {@code + * UnsupportedOperationException}. + * + * @param link + * the link (directory entry) to create + * @param existing + * a path to an existing file + * + * @throws UnsupportedOperationException + * if the implementation does not support adding an existing file + * to a directory + * @throws FileAlreadyExistsException + * if the entry could not otherwise be created because a file of + * that name already exists (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager + * is installed, it denies {@link LinkPermission}("hard") + * or its {@link SecurityManager#checkWrite(String) checkWrite} + * method denies write access to either the link or the + * existing file. + */ + public void createLink(Path link, Path existing) throws IOException { + throw new UnsupportedOperationException(); + } + + /** + * Deletes a file. This method works in exactly the manner specified by the + * {@link Files#delete} method. + * + * @param path + * the path to the file to delete + * + * @throws NoSuchFileException + * if the file does not exist (optional specific exception) + * @throws DirectoryNotEmptyException + * if the file is a directory and could not otherwise be deleted + * because the directory is not empty (optional specific + * exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkDelete(String)} method + * is invoked to check delete access to the file + */ + public abstract void delete(Path path) throws IOException; + + /** + * Deletes a file if it exists. This method works in exactly the manner + * specified by the {@link Files#deleteIfExists} method. + * + *

    The default implementation of this method simply invokes {@link + * #delete} ignoring the {@code NoSuchFileException} when the file does not + * exist. It may be overridden where appropriate. + * + * @param path + * the path to the file to delete + * + * @return {@code true} if the file was deleted by this method; {@code + * false} if the file could not be deleted because it did not + * exist + * + * @throws DirectoryNotEmptyException + * if the file is a directory and could not otherwise be deleted + * because the directory is not empty (optional specific + * exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkDelete(String)} method + * is invoked to check delete access to the file + */ + public boolean deleteIfExists(Path path) throws IOException { + try { + delete(path); + return true; + } catch (NoSuchFileException ignore) { + return false; + } + } + + /** + * Reads the target of a symbolic link. This method works in exactly the + * manner specified by the {@link Files#readSymbolicLink} method. + * + *

    The default implementation of this method throws {@code + * UnsupportedOperationException}. + * + * @param link + * the path to the symbolic link + * + * @throws UnsupportedOperationException + * if the implementation does not support symbolic links + * @throws NotLinkException + * if the target could otherwise not be read because the file + * is not a symbolic link (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager + * is installed, it checks that {@code FilePermission} has been + * granted with the "{@code readlink}" action to read the link. + */ + public Path readSymbolicLink(Path link) throws IOException { + throw new UnsupportedOperationException(); + } + + /** + * Copy a file to a target file. This method works in exactly the manner + * specified by the {@link Files#copy(Path,Path,CopyOption[])} method + * except that both the source and target paths must be associated with + * this provider. + * + * @param source + * the path to the file to copy + * @param target + * the path to the target file + * @param options + * options specifying how the copy should be done + * + * @throws UnsupportedOperationException + * if the array contains a copy option that is not supported + * @throws FileAlreadyExistsException + * if the target file exists but cannot be replaced because the + * {@code REPLACE_EXISTING} option is not specified (optional + * specific exception) + * @throws DirectoryNotEmptyException + * the {@code REPLACE_EXISTING} option is specified but the file + * cannot be replaced because it is a non-empty directory + * (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the source file, the + * {@link SecurityManager#checkWrite(String) checkWrite} is invoked + * to check write access to the target file. If a symbolic link is + * copied the security manager is invoked to check {@link + * LinkPermission}{@code ("symbolic")}. + */ + public abstract void copy(Path source, Path target, CopyOption... options) + throws IOException; + + /** + * Move or rename a file to a target file. This method works in exactly the + * manner specified by the {@link Files#move} method except that both the + * source and target paths must be associated with this provider. + * + * @param source + * the path to the file to move + * @param target + * the path to the target file + * @param options + * options specifying how the move should be done + * + * @throws UnsupportedOperationException + * if the array contains a copy option that is not supported + * @throws FileAlreadyExistsException + * if the target file exists but cannot be replaced because the + * {@code REPLACE_EXISTING} option is not specified (optional + * specific exception) + * @throws DirectoryNotEmptyException + * the {@code REPLACE_EXISTING} option is specified but the file + * cannot be replaced because it is a non-empty directory + * (optional specific exception) + * @throws AtomicMoveNotSupportedException + * if the options array contains the {@code ATOMIC_MOVE} option but + * the file cannot be moved as an atomic file system operation. + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkWrite(String) checkWrite} + * method is invoked to check write access to both the source and + * target file. + */ + public abstract void move(Path source, Path target, CopyOption... options) + throws IOException; + + /** + * Tests if two paths locate the same file. This method works in exactly the + * manner specified by the {@link Files#isSameFile} method. + * + * @param path + * one path to the file + * @param path2 + * the other path + * + * @return {@code true} if, and only if, the two paths locate the same file + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to both files. + */ + public abstract boolean isSameFile(Path path, Path path2) + throws IOException; + + /** + * Tells whether or not a file is considered hidden. This method + * works in exactly the manner specified by the {@link Files#isHidden} + * method. + * + *

    This method is invoked by the {@link Files#isHidden isHidden} method. + * + * @param path + * the path to the file to test + * + * @return {@code true} if the file is considered hidden + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file. + */ + public abstract boolean isHidden(Path path) throws IOException; + + /** + * Returns the {@link FileStore} representing the file store where a file + * is located. This method works in exactly the manner specified by the + * {@link Files#getFileStore} method. + * + * @param path + * the path to the file + * + * @return the file store where the file is stored + * + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file, and in + * addition it checks {@link RuntimePermission} + * ("getFileStoreAttributes") + */ + public abstract FileStore getFileStore(Path path) throws IOException; + + /** + * Checks the existence, and optionally the accessibility, of a file. + * + *

    This method may be used by the {@link Files#isReadable isReadable}, + * {@link Files#isWritable isWritable} and {@link Files#isExecutable + * isExecutable} methods to check the accessibility of a file. + * + *

    This method checks the existence of a file and that this Java virtual + * machine has appropriate privileges that would allow it access the file + * according to all of access modes specified in the {@code modes} parameter + * as follows: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    Value Description
    {@link AccessMode#READ READ} Checks that the file exists and that the Java virtual machine has + * permission to read the file.
    {@link AccessMode#WRITE WRITE} Checks that the file exists and that the Java virtual machine has + * permission to write to the file,
    {@link AccessMode#EXECUTE EXECUTE} Checks that the file exists and that the Java virtual machine has + * permission to {@link Runtime#exec execute} the file. The semantics + * may differ when checking access to a directory. For example, on UNIX + * systems, checking for {@code EXECUTE} access checks that the Java + * virtual machine has permission to search the directory in order to + * access file or subdirectories.
    + * + *

    If the {@code modes} parameter is of length zero, then the existence + * of the file is checked. + * + *

    This method follows symbolic links if the file referenced by this + * object is a symbolic link. Depending on the implementation, this method + * may require to read file permissions, access control lists, or other + * file attributes in order to check the effective access to the file. To + * determine the effective access to a file may require access to several + * attributes and so in some implementations this method may not be atomic + * with respect to other file system operations. + * + * @param path + * the path to the file to check + * @param modes + * The access modes to check; may have zero elements + * + * @throws UnsupportedOperationException + * an implementation is required to support checking for + * {@code READ}, {@code WRITE}, and {@code EXECUTE} access. This + * exception is specified to allow for the {@code Access} enum to + * be extended in future releases. + * @throws NoSuchFileException + * if a file does not exist (optional specific exception) + * @throws AccessDeniedException + * the requested access would be denied or the access cannot be + * determined because the Java virtual machine has insufficient + * privileges or other reasons. (optional specific exception) + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, the {@link SecurityManager#checkRead(String) checkRead} + * is invoked when checking read access to the file or only the + * existence of the file, the {@link SecurityManager#checkWrite(String) + * checkWrite} is invoked when checking write access to the file, + * and {@link SecurityManager#checkExec(String) checkExec} is invoked + * when checking execute access. + */ + public abstract void checkAccess(Path path, AccessMode... modes) + throws IOException; + + /** + * Returns a file attribute view of a given type. This method works in + * exactly the manner specified by the {@link Files#getFileAttributeView} + * method. + * + * @param path + * the path to the file + * @param type + * the {@code Class} object corresponding to the file attribute view + * @param options + * options indicating how symbolic links are handled + * + * @return a file attribute view of the specified type, or {@code null} if + * the attribute view type is not available + */ + public abstract V + getFileAttributeView(Path path, Class type, LinkOption... options); + + /** + * Reads a file's attributes as a bulk operation. This method works in + * exactly the manner specified by the {@link + * Files#readAttributes(Path,Class,LinkOption[])} method. + * + * @param path + * the path to the file + * @param type + * the {@code Class} of the file attributes required + * to read + * @param options + * options indicating how symbolic links are handled + * + * @return the file attributes + * + * @throws UnsupportedOperationException + * if an attributes of the given type are not supported + * @throws IOException + * if an I/O error occurs + * @throws SecurityException + * In the case of the default provider, a security manager is + * installed, its {@link SecurityManager#checkRead(String) checkRead} + * method is invoked to check read access to the file + */ + public abstract A + readAttributes(Path path, Class type, LinkOption... options) throws IOException; + + /** + * Reads a set of file attributes as a bulk operation. This method works in + * exactly the manner specified by the {@link + * Files#readAttributes(Path,String,LinkOption[])} method. + * + * @param path + * the path to the file + * @param attributes + * the attributes to read + * @param options + * options indicating how symbolic links are handled + * + * @return a map of the attributes returned; may be empty. The map's keys + * are the attribute names, its values are the attribute values + * + * @throws IOException + * If an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, its {@link SecurityManager#checkRead(String) checkRead} + * method denies read access to the file. If this method is invoked + * to read security sensitive attributes then the security manager + * may be invoke to check for additional permissions. + */ + public abstract Map readAttributes(Path path, String attributes, + LinkOption... options) + throws IOException; + + /** + * Sets the value of a file attribute. This method works in exactly the + * manner specified by the {@link Files#setAttribute} method. + * + * @param path + * the path to the file + * @param attribute + * the attribute to set + * @param value + * the attribute value + * @param options + * options indicating how symbolic links are handled + * + * @throws UnsupportedOperationException + * if the attribute view is not available or it does not support + * updating the attribute + * @throws IllegalArgumentException + * if the attribute value is of the correct type but has an + * inappropriate value + * @throws ClassCastException + * If the attribute value is not of the expected type or is a + * collection containing elements that are not of the expected + * type + * @throws IOException + * If an I/O error occurs + * @throws SecurityException + * In the case of the default provider, and a security manager is + * installed, its {@link SecurityManager#checkWrite(String) checkWrite} + * method denies write access to the file. If this method is invoked + * to set security sensitive attributes then the security manager + * may be invoked to check for additional permissions. + */ + public abstract void setAttribute(Path path, String attribute, + Object value, LinkOption... options) + throws IOException; } diff --git a/jdk/src/share/classes/java/nio/file/spi/FileTypeDetector.java b/jdk/src/share/classes/java/nio/file/spi/FileTypeDetector.java index 21c130188fb..fd062804d6a 100644 --- a/jdk/src/share/classes/java/nio/file/spi/FileTypeDetector.java +++ b/jdk/src/share/classes/java/nio/file/spi/FileTypeDetector.java @@ -25,7 +25,7 @@ package java.nio.file.spi; -import java.nio.file.FileRef; +import java.nio.file.Path; import java.io.IOException; /** @@ -42,7 +42,7 @@ import java.io.IOException; * href="../attribute/package-summary.html"> attribute or the bytes in a * file may be examined to guess its file type. * - * @see java.nio.file.Files#probeContentType(FileRef) + * @see java.nio.file.Files#probeContentType(Path) * * @since 1.7 */ @@ -83,8 +83,8 @@ public abstract class FileTypeDetector { * Message Bodies. The string must be parsable according to the * grammar in the RFC 2045. * - * @param file - * The file to probe + * @param path + * the path to the file to probe * * @return The content type or {@code null} if the file type is not * recognized @@ -101,6 +101,6 @@ public abstract class FileTypeDetector { * * @see java.nio.file.Files#probeContentType */ - public abstract String probeContentType(FileRef file) + public abstract String probeContentType(Path path) throws IOException; } diff --git a/jdk/src/share/classes/java/security/AlgorithmParameterGenerator.java b/jdk/src/share/classes/java/security/AlgorithmParameterGenerator.java index 95268601653..f5ece273052 100644 --- a/jdk/src/share/classes/java/security/AlgorithmParameterGenerator.java +++ b/jdk/src/share/classes/java/security/AlgorithmParameterGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2010, 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 @@ -66,6 +66,20 @@ import java.security.spec.AlgorithmParameterSpec; * default modulus prime size of 1024 bits for the generation of DSA * parameters. * + *

    Every implementation of the Java platform is required to support the + * following standard AlgorithmParameterGenerator algorithms and + * keysizes in parentheses: + *

      + *
    • DiffieHellman (1024)
    • + *
    • DSA (1024)
    • + *
    + * These algorithms are described in the + * AlgorithmParameterGenerator section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other algorithms are supported. + * * @author Jan Luehe * * @@ -126,9 +140,9 @@ public class AlgorithmParameterGenerator { * * @param algorithm the name of the algorithm this * parameter generator is associated with. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the AlgorithmParameterGenerator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @return the new AlgorithmParameterGenerator object. @@ -168,9 +182,9 @@ public class AlgorithmParameterGenerator { * * @param algorithm the name of the algorithm this * parameter generator is associated with. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the AlgorithmParameterGenerator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the string name of the Provider. @@ -214,9 +228,9 @@ public class AlgorithmParameterGenerator { * * @param algorithm the string name of the algorithm this * parameter generator is associated with. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the AlgorithmParameterGenerator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the Provider object. diff --git a/jdk/src/share/classes/java/security/AlgorithmParameters.java b/jdk/src/share/classes/java/security/AlgorithmParameters.java index 7dee113a215..a17e8487b72 100644 --- a/jdk/src/share/classes/java/security/AlgorithmParameters.java +++ b/jdk/src/share/classes/java/security/AlgorithmParameters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2010, 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 @@ -46,6 +46,22 @@ import java.security.spec.InvalidParameterSpecException; * getParameterSpec, and a byte encoding of the parameters is * obtained via a call to getEncoded. * + *

    Every implementation of the Java platform is required to support the + * following standard AlgorithmParameters algorithms: + *

      + *
    • AES
    • + *
    • DES
    • + *
    • DESede
    • + *
    • DiffieHellman
    • + *
    • DSA
    • + *
    + * These algorithms are described in the + * AlgorithmParameters section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other algorithms are supported. + * * @author Jan Luehe * * @@ -111,9 +127,9 @@ public class AlgorithmParameters { * parameter encoding. * * @param algorithm the name of the algorithm requested. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the AlgorithmParameters section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @return the new parameter object. @@ -153,9 +169,9 @@ public class AlgorithmParameters { * parameter encoding. * * @param algorithm the name of the algorithm requested. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the AlgorithmParameters section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the name of the provider. @@ -200,9 +216,9 @@ public class AlgorithmParameters { * parameter encoding. * * @param algorithm the name of the algorithm requested. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the AlgorithmParameters section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the name of the provider. diff --git a/jdk/src/share/classes/java/security/KeyFactory.java b/jdk/src/share/classes/java/security/KeyFactory.java index f47f88b07ee..edc9724daf2 100644 --- a/jdk/src/share/classes/java/security/KeyFactory.java +++ b/jdk/src/share/classes/java/security/KeyFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2010, 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 @@ -67,8 +67,21 @@ import sun.security.jca.GetInstance.Instance; * sig.verify(signature); *
    * - * @author Jan Luehe + *

    Every implementation of the Java platform is required to support the + * following standard KeyFactory algorithms: + *

      + *
    • DiffieHellman
    • + *
    • DSA
    • + *
    • RSA
    • + *
    + * These algorithms are described in the + * KeyFactory section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other algorithms are supported. * + * @author Jan Luehe * * @see Key * @see PublicKey @@ -141,9 +154,9 @@ public class KeyFactory { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the name of the requested key algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyFactory section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @return the new KeyFactory object. @@ -172,9 +185,9 @@ public class KeyFactory { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the name of the requested key algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyFactory section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the name of the provider. @@ -211,9 +224,9 @@ public class KeyFactory { * does not have to be registered in the provider list. * * @param algorithm the name of the requested key algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyFactory section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the provider. diff --git a/jdk/src/share/classes/java/security/KeyPairGenerator.java b/jdk/src/share/classes/java/security/KeyPairGenerator.java index 37f922af6ed..66e7e2ce7f9 100644 --- a/jdk/src/share/classes/java/security/KeyPairGenerator.java +++ b/jdk/src/share/classes/java/security/KeyPairGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2010, 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 @@ -105,8 +105,22 @@ import sun.security.jca.GetInstance.Instance; * the superclass are intended for cryptographic service providers who wish to * supply their own implementations of key pair generators. * - * @author Benjamin Renaud + *

    Every implementation of the Java platform is required to support the + * following standard KeyPairGenerator algorithms and keysizes in + * parentheses: + *

      + *
    • DiffieHellman (1024)
    • + *
    • DSA (1024)
    • + *
    • RSA (1024, 2048)
    • + *
    + * These algorithms are described in the + * KeyPairGenerator section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other algorithms are supported. * + * @author Benjamin Renaud * * @see java.security.spec.AlgorithmParameterSpec */ @@ -122,9 +136,9 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi { * Creates a KeyPairGenerator object for the specified algorithm. * * @param algorithm the standard string name of the algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyPairGenerator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. */ protected KeyPairGenerator(String algorithm) { @@ -133,9 +147,9 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi { /** * Returns the standard name of the algorithm for this key pair generator. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyPairGenerator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @return the standard string name of the algorithm. @@ -171,9 +185,9 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the standard string name of the algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyPairGenerator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @return the new KeyPairGenerator object. @@ -227,9 +241,9 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the standard string name of the algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyPairGenerator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the string name of the provider. @@ -266,9 +280,9 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi { * does not have to be registered in the provider list. * * @param algorithm the standard string name of the algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyPairGenerator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the provider. diff --git a/jdk/src/share/classes/java/security/KeyStore.java b/jdk/src/share/classes/java/security/KeyStore.java index c1e2e4649e7..743f3593f31 100644 --- a/jdk/src/share/classes/java/security/KeyStore.java +++ b/jdk/src/share/classes/java/security/KeyStore.java @@ -164,8 +164,19 @@ import javax.security.auth.callback.*; * different passwords or other protection parameters * may also be used. * - * @author Jan Luehe + *

    Every implementation of the Java platform is required to support + * the following standard KeyStore type: + *

      + *
    • PKCS12
    • + *
    + * This type is described in the + * KeyStore section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other types are supported. * + * @author Jan Luehe * * @see java.security.PrivateKey * @see javax.crypto.SecretKey @@ -582,9 +593,9 @@ public class KeyStore { * the {@link Security#getProviders() Security.getProviders()} method. * * @param type the type of keystore. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyStore section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard keystore types. * * @return a keystore object of the specified type. @@ -620,9 +631,9 @@ public class KeyStore { * the {@link Security#getProviders() Security.getProviders()} method. * * @param type the type of keystore. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyStore section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard keystore types. * * @param provider the name of the provider. @@ -663,9 +674,9 @@ public class KeyStore { * does not have to be registered in the provider list. * * @param type the type of keystore. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the KeyStore section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard keystore types. * * @param provider the provider. diff --git a/jdk/src/share/classes/java/security/MessageDigest.java b/jdk/src/share/classes/java/security/MessageDigest.java index 5173ed97836..ce920fffbc0 100644 --- a/jdk/src/share/classes/java/security/MessageDigest.java +++ b/jdk/src/share/classes/java/security/MessageDigest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -37,7 +37,7 @@ import java.nio.ByteBuffer; /** * This MessageDigest class provides applications the functionality of a - * message digest algorithm, such as MD5 or SHA. + * message digest algorithm, such as SHA-1 or SHA-256. * Message digests are secure one-way hash functions that take arbitrary-sized * data and output a fixed-length hash value. * @@ -81,8 +81,21 @@ import java.nio.ByteBuffer; * the superclass are intended for cryptographic service providers who wish to * supply their own implementations of message digest algorithms. * - * @author Benjamin Renaud + *

    Every implementation of the Java platform is required to support + * the following standard MessageDigest algorithms: + *

      + *
    • MD5
    • + *
    • SHA-1
    • + *
    • SHA-256
    • + *
    + * These algorithms are described in the + * MessageDigest section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other algorithms are supported. * + * @author Benjamin Renaud * * @see DigestInputStream * @see DigestOutputStream @@ -104,9 +117,9 @@ public abstract class MessageDigest extends MessageDigestSpi { * Creates a message digest with the specified algorithm name. * * @param algorithm the standard name of the digest algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the MessageDigest section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. */ protected MessageDigest(String algorithm) { @@ -127,9 +140,9 @@ public abstract class MessageDigest extends MessageDigestSpi { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the name of the algorithm requested. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the MessageDigest section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @return a Message Digest object that implements the specified algorithm. @@ -173,9 +186,9 @@ public abstract class MessageDigest extends MessageDigestSpi { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the name of the algorithm requested. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the MessageDigest section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the name of the provider. @@ -222,9 +235,9 @@ public abstract class MessageDigest extends MessageDigestSpi { * does not have to be registered in the provider list. * * @param algorithm the name of the algorithm requested. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the MessageDigest section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the provider. @@ -439,9 +452,9 @@ public abstract class MessageDigest extends MessageDigestSpi { * Returns a string that identifies the algorithm, independent of * implementation details. The name should be a standard * Java Security name (such as "SHA", "MD5", and so on). - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the MessageDigest section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @return the name of the algorithm diff --git a/jdk/src/share/classes/java/security/Policy.java b/jdk/src/share/classes/java/security/Policy.java index 8ae6d6c0eaf..b92d0625261 100644 --- a/jdk/src/share/classes/java/security/Policy.java +++ b/jdk/src/share/classes/java/security/Policy.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2010, 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 @@ -67,9 +67,6 @@ import sun.security.util.SecurityConstants; * implementation. In addition, an instance of a Policy object can be * constructed by invoking one of the getInstance factory methods * with a standard type. The default policy type is "JavaPolicy". - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference - * for a list of standard Policy types. * *

    Once a Policy instance has been installed (either by default, or by * calling setPolicy), @@ -133,7 +130,7 @@ public abstract class Policy { * This method first calls * SecurityManager.checkPermission with a * SecurityPermission("getPolicy") permission - * to ensure it's ok to get the Policy object.. + * to ensure it's ok to get the Policy object. * * @return the installed Policy. * @@ -340,9 +337,10 @@ public abstract class Policy { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * - * @param type the specified Policy type. See Appendix A in the - * - * Java Cryptography Architecture API Specification & Reference + * @param type the specified Policy type. See the Policy section in the + * + * Java Cryptography Architecture Standard Algorithm Name Documentation * for a list of standard Policy types. * * @param params parameters for the Policy, which may be null. @@ -393,9 +391,10 @@ public abstract class Policy { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * - * @param type the specified Policy type. See Appendix A in the - * - * Java Cryptography Architecture API Specification & Reference + * @param type the specified Policy type. See the Policy section in the + * + * Java Cryptography Architecture Standard Algorithm Name Documentation * for a list of standard Policy types. * * @param params parameters for the Policy, which may be null. @@ -456,9 +455,10 @@ public abstract class Policy { * object is returned. Note that the specified Provider object * does not have to be registered in the provider list. * - * @param type the specified Policy type. See Appendix A in the - * - * Java Cryptography Architecture API Specification & Reference + * @param type the specified Policy type. See the Policy section in the + * + * Java Cryptography Architecture Standard Algorithm Name Documentation * for a list of standard Policy types. * * @param params parameters for the Policy, which may be null. diff --git a/jdk/src/share/classes/java/security/SecureRandom.java b/jdk/src/share/classes/java/security/SecureRandom.java index 4243a778940..e51b6098558 100644 --- a/jdk/src/share/classes/java/security/SecureRandom.java +++ b/jdk/src/share/classes/java/security/SecureRandom.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -133,9 +133,9 @@ public class SecureRandom extends java.util.Random { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * - *

    See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + *

    See the SecureRandom section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard RNG algorithm names. * *

    The returned SecureRandom object has not been seeded. To seed the @@ -171,9 +171,9 @@ public class SecureRandom extends java.util.Random { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * - *

    See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + *

    See the SecureRandom section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard RNG algorithm names. * * @param seed the seed. @@ -256,9 +256,9 @@ public class SecureRandom extends java.util.Random { * previously called. * * @param algorithm the name of the RNG algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the SecureRandom section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard RNG algorithm names. * * @return the new SecureRandom object. @@ -299,9 +299,9 @@ public class SecureRandom extends java.util.Random { * previously called. * * @param algorithm the name of the RNG algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the SecureRandom section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard RNG algorithm names. * * @param provider the name of the provider. @@ -347,9 +347,9 @@ public class SecureRandom extends java.util.Random { * previously called. * * @param algorithm the name of the RNG algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the SecureRandom section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard RNG algorithm names. * * @param provider the provider. diff --git a/jdk/src/share/classes/java/security/Security.java b/jdk/src/share/classes/java/security/Security.java index 55816d9aefd..156e60b5ea0 100644 --- a/jdk/src/share/classes/java/security/Security.java +++ b/jdk/src/share/classes/java/security/Security.java @@ -277,10 +277,11 @@ public final class Security { /** * Gets a specified property for an algorithm. The algorithm name - * should be a standard name. See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * should be a standard name. See the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. + * * One possible use is by specialized algorithm parsers, which may map * classes to algorithms which they understand (much like Key parsers * do). @@ -513,9 +514,9 @@ public final class Security { * *

* - *

See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + *

See the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard cryptographic service names, standard * algorithm names and standard attribute names. * @@ -581,9 +582,9 @@ public final class Security { * constraint expressed by the specified attribute name/value pair. * * - *

See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + *

See the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard cryptographic service names, standard * algorithm names and standard attribute names. * diff --git a/jdk/src/share/classes/java/security/Signature.java b/jdk/src/share/classes/java/security/Signature.java index d303193a6f5..8e321f8946e 100644 --- a/jdk/src/share/classes/java/security/Signature.java +++ b/jdk/src/share/classes/java/security/Signature.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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,7 +47,7 @@ import sun.security.jca.*; import sun.security.jca.GetInstance.Instance; /** - * This Signature class is used to provide applications the functionality + * The Signature class is used to provide applications the functionality * of a digital signature algorithm. Digital signatures are used for * authentication and integrity assurance of digital data. * @@ -98,6 +98,20 @@ import sun.security.jca.GetInstance.Instance; * the superclass are intended for cryptographic service providers who wish to * supply their own implementations of digital signature algorithms. * + *

Every implementation of the Java platform is required to support the + * following standard Signature algorithms: + *

    + *
  • SHA1withDSA
  • + *
  • SHA1withRSA
  • + *
  • SHA256withRSA
  • + *
+ * These algorithms are described in the + * Signature section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other algorithms are supported. + * * @author Benjamin Renaud * */ @@ -144,9 +158,9 @@ public abstract class Signature extends SignatureSpi { * Creates a Signature object for the specified algorithm. * * @param algorithm the standard string name of the algorithm. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the Signature section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. */ protected Signature(String algorithm) { @@ -184,9 +198,9 @@ public abstract class Signature extends SignatureSpi { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the standard name of the algorithm requested. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the Signature section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @return the new Signature object. @@ -303,9 +317,9 @@ public abstract class Signature extends SignatureSpi { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the name of the algorithm requested. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the Signature section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the name of the provider. @@ -353,9 +367,9 @@ public abstract class Signature extends SignatureSpi { * does not have to be registered in the provider list. * * @param algorithm the name of the algorithm requested. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the Signature section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard algorithm names. * * @param provider the provider. diff --git a/jdk/src/share/classes/java/security/cert/CertPath.java b/jdk/src/share/classes/java/security/cert/CertPath.java index 67e294dfd64..786360aa20f 100644 --- a/jdk/src/share/classes/java/security/cert/CertPath.java +++ b/jdk/src/share/classes/java/security/cert/CertPath.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -83,6 +83,19 @@ import java.util.List; * may not follow these conventions. PKIX CertPathValidators will * detect any departure from these conventions that cause the certification * path to be invalid and throw a CertPathValidatorException. + * + *

Every implementation of the Java platform is required to support the + * following standard CertPath encodings: + *

    + *
  • PKCS7
  • + *
  • PkiPath
  • + *
+ * These encodings are described in the + * CertPath Encodings section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other encodings are supported. *

* Concurrent Access *

diff --git a/jdk/src/share/classes/java/security/cert/CertPathBuilder.java b/jdk/src/share/classes/java/security/cert/CertPathBuilder.java index 76210ff0984..99035c36af9 100644 --- a/jdk/src/share/classes/java/security/cert/CertPathBuilder.java +++ b/jdk/src/share/classes/java/security/cert/CertPathBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -52,6 +52,19 @@ import sun.security.jca.GetInstance.Instance; * result (including the CertPath that was built) is returned * in an object that implements the CertPathBuilderResult * interface. + * + *

Every implementation of the Java platform is required to support the + * following standard CertPathBuilder algorithm: + *

    + *
  • PKIX
  • + *
+ * This algorithm is described in the + * CertPathBuilder section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other algorithms are supported. + * *

* Concurrent Access *

@@ -118,10 +131,10 @@ public class CertPathBuilder { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the name of the requested CertPathBuilder - * algorithm. See Appendix A in the - * Java Certification Path API Programmer's Guide - * for information about standard algorithm names. + * algorithm. See the CertPathBuilder section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation + * for information about standard algorithm names. * * @return a CertPathBuilder object that implements the * specified algorithm. @@ -153,10 +166,10 @@ public class CertPathBuilder { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the name of the requested CertPathBuilder - * algorithm. See Appendix A in the - * Java Certification Path API Programmer's Guide - * for information about standard algorithm names. + * algorithm. See the CertPathBuilder section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation + * for information about standard algorithm names. * * @param provider the name of the provider. * @@ -193,10 +206,10 @@ public class CertPathBuilder { * does not have to be registered in the provider list. * * @param algorithm the name of the requested CertPathBuilder - * algorithm. See Appendix A in the - * Java Certification Path API Programmer's Guide - * for information about standard algorithm names. + * algorithm. See the CertPathBuilder section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation + * for information about standard algorithm names. * * @param provider the provider. * diff --git a/jdk/src/share/classes/java/security/cert/CertPathValidator.java b/jdk/src/share/classes/java/security/cert/CertPathValidator.java index e7b95602923..22cbb59b85d 100644 --- a/jdk/src/share/classes/java/security/cert/CertPathValidator.java +++ b/jdk/src/share/classes/java/security/cert/CertPathValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -53,6 +53,19 @@ import sun.security.jca.GetInstance.Instance; * and an algorithm-specific set of parameters. If successful, the result is * returned in an object that implements the * CertPathValidatorResult interface. + * + *

Every implementation of the Java platform is required to support the + * following standard CertPathValidator algorithm: + *

    + *
  • PKIX
  • + *
+ * This algorithm is described in the + * CertPathValidator section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other algorithms are supported. + * *

* Concurrent Access *

@@ -118,10 +131,10 @@ public class CertPathValidator { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the name of the requested CertPathValidator - * algorithm. See Appendix A in the - * Java Certification Path API Programmer's Guide - * for information about standard algorithm names. + * algorithm. See the CertPathValidator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation + * for information about standard algorithm names. * * @return a CertPathValidator object that implements the * specified algorithm. @@ -153,10 +166,10 @@ public class CertPathValidator { * the {@link Security#getProviders() Security.getProviders()} method. * * @param algorithm the name of the requested CertPathValidator - * algorithm. See Appendix A in the - * Java Certification Path API Programmer's Guide - * for information about standard algorithm names. + * algorithm. See the CertPathValidator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation + * for information about standard algorithm names. * * @param provider the name of the provider. * @@ -193,12 +206,11 @@ public class CertPathValidator { * object is returned. Note that the specified Provider object * does not have to be registered in the provider list. * - * @param algorithm the name of the requested - * CertPathValidator algorithm. - * See Appendix A in the - * Java Certification Path API Programmer's Guide - * for information about standard algorithm names. + * @param algorithm the name of the requested CertPathValidator + * algorithm. See the CertPathValidator section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation + * for information about standard algorithm names. * * @param provider the provider. * diff --git a/jdk/src/share/classes/java/security/cert/CertPathValidatorException.java b/jdk/src/share/classes/java/security/cert/CertPathValidatorException.java index b58b202cb5f..9eedb620d9a 100644 --- a/jdk/src/share/classes/java/security/cert/CertPathValidatorException.java +++ b/jdk/src/share/classes/java/security/cert/CertPathValidatorException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, 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 @@ -286,6 +286,11 @@ public class CertPathValidatorException extends GeneralSecurityException { /** * The signature is invalid. */ - INVALID_SIGNATURE + INVALID_SIGNATURE, + + /** + * The public key or the signature algorithm has been constrained. + */ + ALGORITHM_CONSTRAINED } } diff --git a/jdk/src/share/classes/java/security/cert/CertStore.java b/jdk/src/share/classes/java/security/cert/CertStore.java index 0d8de632ba9..325b715ed77 100644 --- a/jdk/src/share/classes/java/security/cert/CertStore.java +++ b/jdk/src/share/classes/java/security/cert/CertStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -58,10 +58,20 @@ import sun.security.jca.GetInstance.Instance; * vast repository of untrusted certificates and CRLs. For example, an LDAP * implementation of CertStore provides access to certificates * and CRLs stored in one or more directories using the LDAP protocol and the - * schema as defined in the RFC service attribute. See Appendix A in the - * - * Java Certification Path API Programmer's Guide for more information about - * standard CertStore types. + * schema as defined in the RFC service attribute. + * + *

Every implementation of the Java platform is required to support the + * following standard CertStore type: + *

    + *
  • Collection
  • + *
+ * This type is described in the + * CertStore section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other types are supported. + * *

* Concurrent Access *

@@ -192,10 +202,10 @@ public class CertStore { * cloned. * * @param type the name of the requested CertStore type. - * See Appendix A in the - * Java Certification Path API Programmer's Guide - * for information about standard types. + * See the CertStore section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation + * for information about standard types. * * @param params the initialization parameters (may be null). * @@ -252,10 +262,10 @@ public class CertStore { * cloned. * * @param type the requested CertStore type. - * See Appendix A in the - * Java Certification Path API Programmer's Guide - * for information about standard types. + * See the CertStore section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation + * for information about standard types. * * @param params the initialization parameters (may be null). * @@ -310,10 +320,10 @@ public class CertStore { * cloned. * * @param type the requested CertStore type. - * See Appendix A in the - * Java Certification Path API Programmer's Guide - * for information about standard types. + * See the CertStore section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation + * for information about standard types. * * @param params the initialization parameters (may be null). * diff --git a/jdk/src/share/classes/java/security/cert/Certificate.java b/jdk/src/share/classes/java/security/cert/Certificate.java index be350f326bd..efe37ac7e34 100644 --- a/jdk/src/share/classes/java/security/cert/Certificate.java +++ b/jdk/src/share/classes/java/security/cert/Certificate.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2010, 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 @@ -69,9 +69,9 @@ public abstract class Certificate implements java.io.Serializable { * Creates a certificate of the specified type. * * @param type the standard name of the certificate type. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the CertificateFactory section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard certificate types. */ protected Certificate(String type) { diff --git a/jdk/src/share/classes/java/security/cert/CertificateFactory.java b/jdk/src/share/classes/java/security/cert/CertificateFactory.java index 6b2528b0a44..4cd81f43d81 100644 --- a/jdk/src/share/classes/java/security/cert/CertificateFactory.java +++ b/jdk/src/share/classes/java/security/cert/CertificateFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2010, 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 @@ -91,11 +91,29 @@ import sun.security.jca.GetInstance.Instance; * } * * + *

Every implementation of the Java platform is required to support the + * following standard CertificateFactory type: + *

    + *
  • X.509
  • + *
+ * and the following standard CertPath encodings: + *
    + *
  • PKCS7
  • + *
  • PkiPath
  • + *
+ * The type and encodings are described in the + * CertificateFactory section and the + * CertPath Encodings section of the + * Java Cryptography Architecture Standard Algorithm Name Documentation. + * Consult the release documentation for your implementation to see if any + * other types or encodings are supported. + * * @author Hemma Prafullchandra * @author Jan Luehe * @author Sean Mullan * - * * @see Certificate * @see X509Certificate * @see CertPath @@ -146,9 +164,9 @@ public class CertificateFactory { * the {@link Security#getProviders() Security.getProviders()} method. * * @param type the name of the requested certificate type. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the CertificateFactory section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard certificate types. * * @return a certificate factory object for the specified type. @@ -184,9 +202,9 @@ public class CertificateFactory { * the {@link Security#getProviders() Security.getProviders()} method. * * @param type the certificate type. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the CertificateFactory section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard certificate types. * * @param provider the name of the provider. @@ -228,11 +246,10 @@ public class CertificateFactory { * does not have to be registered in the provider list. * * @param type the certificate type. - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference + * See the CertificateFactory section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard certificate types. - * @param provider the provider. * * @return a certificate factory object for the specified type. @@ -325,10 +342,10 @@ public class CertificateFactory { /** * Returns an iteration of the CertPath encodings supported * by this certificate factory, with the default encoding first. See - * Appendix A in the - * - * Java Certification Path API Programmer's Guide for information about - * standard encoding names and their formats. + * the CertPath Encodings section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation + * for information about standard encoding names and their formats. *

* Attempts to modify the returned Iterator via its * remove method result in an @@ -364,9 +381,10 @@ public class CertificateFactory { /** * Generates a CertPath object and initializes it with * the data read from the InputStream inStream. The data - * is assumed to be in the specified encoding. See Appendix A in the - * - * Java Certification Path API Programmer's Guide + * is assumed to be in the specified encoding. See + * the CertPath Encodings section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard encoding names and their formats. * * @param inStream an InputStream containing the data diff --git a/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java b/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java index a9dbae734fa..b7a3c55f8ab 100644 --- a/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java +++ b/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2010, 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 @@ -182,9 +182,9 @@ public abstract class CertificateFactorySpi { /** * Returns an iteration of the CertPath encodings supported * by this certificate factory, with the default encoding first. See - * Appendix A in the - * - * Java Certification Path API Programmer's Guide + * the CertPath Encodings section in the + * Java Cryptography Architecture Standard Algorithm Name Documentation * for information about standard encoding names. *

* Attempts to modify the returned Iterator via its diff --git a/jdk/src/share/classes/java/security/cert/package.html b/jdk/src/share/classes/java/security/cert/package.html index 55109aaf3d4..0851accc6c5 100644 --- a/jdk/src/share/classes/java/security/cert/package.html +++ b/jdk/src/share/classes/java/security/cert/package.html @@ -1,5 +1,5 @@ -@since JDK1.4 +@since 1.4 diff --git a/jdk/src/share/classes/javax/swing/BorderFactory.java b/jdk/src/share/classes/javax/swing/BorderFactory.java index 8da7dd9579a..19b392ac198 100644 --- a/jdk/src/share/classes/javax/swing/BorderFactory.java +++ b/jdk/src/share/classes/javax/swing/BorderFactory.java @@ -159,9 +159,6 @@ public class BorderFactory * Creates a beveled border of the specified type, using * the specified colors for the inner and outer highlight * and shadow areas. - *

- * Note: The shadow inner and outer colors are - * switched for a lowered bevel border. * * @param type an integer specifying either * BevelBorder.LOWERED or diff --git a/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java b/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java index 781fb4c0e3a..4a7f87085c2 100644 --- a/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java +++ b/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java @@ -209,7 +209,7 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager { synchronized(BufferStrategyPaintManager.this) { while (showing) { try { - wait(); + BufferStrategyPaintManager.this.wait(); } catch (InterruptedException ie) { } } diff --git a/jdk/src/share/classes/javax/swing/JComponent.java b/jdk/src/share/classes/javax/swing/JComponent.java index 9ef57bacadd..7bed584dca6 100644 --- a/jdk/src/share/classes/javax/swing/JComponent.java +++ b/jdk/src/share/classes/javax/swing/JComponent.java @@ -4911,7 +4911,7 @@ public abstract class JComponent extends Container implements Serializable, * painting to originate from this Component, or one of its ancestors. *

* Calling {@link JComponent#repaint} on a Swing component will be delegated to - * the first ancestor which {@code isPaintingOrigin()} returns {@true}, + * the first ancestor which {@code isPaintingOrigin()} returns {@code true}, * if there are any. *

* {@code JComponent} subclasses that need to be repainted when any of their diff --git a/jdk/src/share/classes/javax/swing/SwingWorker.java b/jdk/src/share/classes/javax/swing/SwingWorker.java index 48f2d56bd2b..413f81f9376 100644 --- a/jdk/src/share/classes/javax/swing/SwingWorker.java +++ b/jdk/src/share/classes/javax/swing/SwingWorker.java @@ -404,6 +404,7 @@ public abstract class SwingWorker implements RunnableFuture { * @see #process * */ + @SafeVarargs protected final void publish(V... chunks) { synchronized (this) { if (doProcess == null) { diff --git a/jdk/src/share/classes/javax/swing/ToolTipManager.java b/jdk/src/share/classes/javax/swing/ToolTipManager.java index 4088ac3c2d5..b985254f6fa 100644 --- a/jdk/src/share/classes/javax/swing/ToolTipManager.java +++ b/jdk/src/share/classes/javax/swing/ToolTipManager.java @@ -75,6 +75,9 @@ public class ToolTipManager extends MouseAdapter implements MouseMotionListener private MouseMotionListener moveBeforeEnterListener = null; private KeyListener accessibilityKeyListener = null; + private KeyStroke postTip; + private KeyStroke hideTip; + // PENDING(ges) protected boolean lightWeightPopupEnabled = true; protected boolean heavyWeightPopupEnabled = false; @@ -89,6 +92,9 @@ public class ToolTipManager extends MouseAdapter implements MouseMotionListener moveBeforeEnterListener = new MoveBeforeEnterListener(); accessibilityKeyListener = new AccessibilityKeyListener(); + + postTip = KeyStroke.getKeyStroke(KeyEvent.VK_F1, InputEvent.CTRL_MASK); + hideTip = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); } /** @@ -805,13 +811,13 @@ public class ToolTipManager extends MouseAdapter implements MouseMotionListener public void keyPressed(KeyEvent e) { if (!e.isConsumed()) { JComponent source = (JComponent) e.getComponent(); - if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { + KeyStroke keyStrokeForEvent = KeyStroke.getKeyStrokeForEvent(e); + if (hideTip.equals(keyStrokeForEvent)) { if (tipWindow != null) { hide(source); e.consume(); } - } else if (e.getKeyCode() == KeyEvent.VK_F1 - && e.getModifiers() == Event.CTRL_MASK) { + } else if (postTip.equals(keyStrokeForEvent)) { // Shown tooltip will be hidden ToolTipManager.this.show(source); e.consume(); diff --git a/jdk/src/share/classes/javax/swing/border/BevelBorder.java b/jdk/src/share/classes/javax/swing/border/BevelBorder.java index 564d316c43b..bd041aece0c 100644 --- a/jdk/src/share/classes/javax/swing/border/BevelBorder.java +++ b/jdk/src/share/classes/javax/swing/border/BevelBorder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2010, 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 @@ -26,7 +26,6 @@ package javax.swing.border; import java.awt.Graphics; import java.awt.Insets; -import java.awt.Rectangle; import java.awt.Color; import java.awt.Component; import java.beans.ConstructorProperties; @@ -82,9 +81,6 @@ public class BevelBorder extends AbstractBorder /** * Creates a bevel border with the specified type, highlight and * shadow colors. - *

- * Note: The shadow inner and outer colors are - * switched for a lowered bevel border. * * @param bevelType the type of bevel for the border * @param highlightOuterColor the color to use for the bevel outer highlight diff --git a/jdk/src/share/classes/javax/swing/border/StrokeBorder.java b/jdk/src/share/classes/javax/swing/border/StrokeBorder.java index b2538bae2dc..34e81f024b3 100644 --- a/jdk/src/share/classes/javax/swing/border/StrokeBorder.java +++ b/jdk/src/share/classes/javax/swing/border/StrokeBorder.java @@ -88,6 +88,10 @@ public class StrokeBorder extends AbstractBorder { /** * Paints the border for the specified component * with the specified position and size. + * If the border was not specified with a {@link Paint} object, + * the component's foreground color will be used to render the border. + * If the component's foreground color is not available, + * the default color of the {@link Graphics} object will be used. * * @param c the component for which this border is being painted * @param g the paint graphics @@ -96,7 +100,7 @@ public class StrokeBorder extends AbstractBorder { * @param width the width of the painted border * @param height the height of the painted border * - * @throws NullPointerException if the specified {@code c} or {@code g} are {@code null} + * @throws NullPointerException if the specified {@code g} is {@code null} */ @Override public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { @@ -106,7 +110,7 @@ public class StrokeBorder extends AbstractBorder { if (g instanceof Graphics2D) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(this.stroke); - g2d.setPaint(this.paint != null ? this.paint : c.getForeground()); + g2d.setPaint(this.paint != null ? this.paint : c == null ? null : c.getForeground()); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.draw(new Rectangle2D.Float(x + size / 2, y + size / 2, width - size, height - size)); @@ -118,13 +122,17 @@ public class StrokeBorder extends AbstractBorder { /** * Reinitializes the {@code insets} parameter * with this border's current insets. - * All insets are equal to the line width of the stroke. + * Every inset is the smallest (closest to negative infinity) integer value + * that is greater than or equal to the line width of the stroke + * that is used to paint the border. * * @param c the component for which this border insets value applies * @param insets the {@code Insets} object to be reinitialized * @return the reinitialized {@code insets} parameter * * @throws NullPointerException if the specified {@code insets} is {@code null} + * + * @see Math#ceil */ @Override public Insets getBorderInsets(Component c, Insets insets) { diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java index 08e8c6fa718..d55e4490cd0 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java @@ -1721,6 +1721,7 @@ public class BasicComboBoxUI extends ComboBoxUI { editor.setFont( comboBox.getFont() ); } isMinimumSizeDirty = true; + isDisplaySizeDirty = true; comboBox.validate(); } else if ( propertyName == JComponent.TOOL_TIP_TEXT_KEY ) { diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java index bf97bff882c..e4e82b1bf10 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java @@ -342,12 +342,10 @@ public class BasicSplitPaneUI extends SplitPaneUI setOrientation(splitPane.getOrientation()); - // This plus 2 here is to provide backwards consistancy. Previously, - // the old size did not include the 2 pixel border around the divider, - // it now does. - Integer dividerSize = (Integer)UIManager.get("SplitPane.dividerSize"); - if (divider == null) dividerSize = 10; - LookAndFeel.installProperty(splitPane, "dividerSize", dividerSize); + // note: don't rename this temp variable to dividerSize + // since it will conflict with "this.dividerSize" field + Integer temp = (Integer)UIManager.get("SplitPane.dividerSize"); + LookAndFeel.installProperty(splitPane, "dividerSize", temp == null? 10: temp); divider.setDividerSize(splitPane.getDividerSize()); dividerSize = divider.getDividerSize(); diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java index eb7b2959151..aaade50df3d 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java @@ -92,7 +92,7 @@ public class SynthTextPaneUI extends SynthEditorPaneUI { * * * @param c the editor component - * @see BasicTextUI#installUI + * @see javax.swing.plaf.basic.BasicTextUI#installUI * @see ComponentUI#installUI */ @Override diff --git a/jdk/src/share/classes/javax/swing/text/JTextComponent.java b/jdk/src/share/classes/javax/swing/text/JTextComponent.java index eccf8a5ee7c..c38c7c9a77d 100644 --- a/jdk/src/share/classes/javax/swing/text/JTextComponent.java +++ b/jdk/src/share/classes/javax/swing/text/JTextComponent.java @@ -4822,6 +4822,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * @return {@code true} if the composed text exists and is saved, * {@code false} otherwise * @see #restoreComposedText + * @since 1.7 */ protected boolean saveComposedText(int pos) { if (composedTextExists()) { @@ -4845,6 +4846,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * should be invoked only if {@code saveComposedText} returns {@code true}. * * @see #saveComposedText + * @since 1.7 */ protected void restoreComposedText() { Document doc = getDocument(); diff --git a/jdk/src/share/classes/javax/swing/text/Keymap.java b/jdk/src/share/classes/javax/swing/text/Keymap.java index 082d7707e44..cf503b0f335 100644 --- a/jdk/src/share/classes/javax/swing/text/Keymap.java +++ b/jdk/src/share/classes/javax/swing/text/Keymap.java @@ -137,6 +137,8 @@ public interface Keymap { /** * Sets the parent keymap, which will be used to * resolve key-bindings. + * The behavior is unspecified if a {@code Keymap} has itself + * as one of its resolve parents. * * @param parent the parent keymap */ diff --git a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_de.java b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_de.java index 2bbcbd933ba..56502f25454 100644 --- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_de.java +++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_de.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -29,173 +29,175 @@ import java.util.ListResourceBundle; public class MsgAppletViewer_de extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"textframe.button.dismiss", "Ignorieren"}, - {"appletviewer.tool.title", "Applet-Ansicht: {0}"}, + Object[][] temp = new Object[][] { + {"textframe.button.dismiss", "Verwerfen"}, + {"appletviewer.tool.title", "Applet Viewer: {0}"}, {"appletviewer.menu.applet", "Applet"}, {"appletviewer.menuitem.restart", "Neu starten"}, {"appletviewer.menuitem.reload", "Neu laden"}, - {"appletviewer.menuitem.stop", "Abbrechen"}, + {"appletviewer.menuitem.stop", "Stoppen"}, {"appletviewer.menuitem.save", "Speichern..."}, - {"appletviewer.menuitem.start", "Starten"}, - {"appletviewer.menuitem.clone", "Klonen..."}, - {"appletviewer.menuitem.tag", "Markieren..."}, - {"appletviewer.menuitem.info", "Info..."}, + {"appletviewer.menuitem.start", "Starten..."}, + {"appletviewer.menuitem.clone", "Clonen..."}, + {"appletviewer.menuitem.tag", "Tag..."}, + {"appletviewer.menuitem.info", "Informationen..."}, {"appletviewer.menuitem.edit", "Bearbeiten"}, {"appletviewer.menuitem.encoding", "Zeichencodierung"}, {"appletviewer.menuitem.print", "Drucken..."}, {"appletviewer.menuitem.props", "Eigenschaften..."}, - {"appletviewer.menuitem.close", "Schlie\u00dfen"}, + {"appletviewer.menuitem.close", "Schlie\u00DFen"}, {"appletviewer.menuitem.quit", "Beenden"}, - {"appletviewer.label.hello", "Willkommen..."}, - {"appletviewer.status.start", "Starte Applet..."}, + {"appletviewer.label.hello", "Hallo..."}, + {"appletviewer.status.start", "Applet wird gestartet..."}, {"appletviewer.appletsave.filedialogtitle","Applet in Datei serialisieren"}, - {"appletviewer.appletsave.err1", "Serialisiere {0} zu {1}"}, - {"appletviewer.appletsave.err2", "In appletSave: {0}"}, - {"appletviewer.applettag", "Angezeigte Marke"}, - {"appletviewer.applettag.textframe", "Applet-HTML-Marke"}, - {"appletviewer.appletinfo.applet", "-- Keine Applet-Info --"}, - {"appletviewer.appletinfo.param", "-- Keine Parameter-Info --"}, - {"appletviewer.appletinfo.textframe", "Applet-Info"}, - {"appletviewer.appletprint.fail", "Drucken fehlgeschlagen"}, - {"appletviewer.appletprint.finish", "Drucken beendet"}, - {"appletviewer.appletprint.cancel", "Drucken abgebrochen"}, + {"appletviewer.appletsave.err1", "{0} in {1} serialisieren"}, + {"appletviewer.appletsave.err2", "in appletSave: {0}"}, + {"appletviewer.applettag", "Angezeigtes Tag"}, + {"appletviewer.applettag.textframe", "Applet-HTML-Tag"}, + {"appletviewer.appletinfo.applet", "-- keine Applet-Informationen --"}, + {"appletviewer.appletinfo.param", "-- keine Parameterinformationen --"}, + {"appletviewer.appletinfo.textframe", "Applet-Informationen"}, + {"appletviewer.appletprint.fail", "Druck nicht erfolgreich."}, + {"appletviewer.appletprint.finish", "Druck abgeschlossen."}, + {"appletviewer.appletprint.cancel", "Druck abgebrochen."}, {"appletviewer.appletencoding", "Zeichencodierung: {0}"}, - {"appletviewer.parse.warning.requiresname", "Warnung: -Marke erfordert Namensattribut."}, - {"appletviewer.parse.warning.paramoutside", "Warnung: -Marke au\u00dferhalb ... ."}, - {"appletviewer.parse.warning.applet.requirescode", "Warnung: -Marke erfordert Code-Attribut."}, - {"appletviewer.parse.warning.applet.requiresheight", "Warnung: -Marke erfordert H\u00f6henattribut."}, - {"appletviewer.parse.warning.applet.requireswidth", "Warnung: -Marke erfordert Breitenattribut."}, - {"appletviewer.parse.warning.object.requirescode", "Warnung: -Marke erfordert Code-Attribut."}, - {"appletviewer.parse.warning.object.requiresheight", "Warnung: -Marke erfordert H\u00f6henattribut."}, - {"appletviewer.parse.warning.object.requireswidth", "Warnung: -Marke erfordert Breitenattribut."}, - {"appletviewer.parse.warning.embed.requirescode", "Warnung: -Marke erfordert Code-Attribut."}, - {"appletviewer.parse.warning.embed.requiresheight", "Warnung: -Marke erfordert H\u00f6henattribut."}, - {"appletviewer.parse.warning.embed.requireswidth", "Warnung: -Marke erfordert Breitenattribut."}, - {"appletviewer.parse.warning.appnotLongersupported", "Warnung: -Marke wird nicht mehr unterst\u00fctzt, verwenden Sie statt dessen :"}, - {"appletviewer.usage", "Syntax: appletviewer url(s)\n\nwobei zu den geh\u00f6ren:\n -debug Starten des Applet-Viewers im Java-Debugger\n -encoding Angabe der von HTML-Dateien verwendeten Zeichencodierung\n -J \u00dcbergeben des Arguments an den Java-Interpreter\n\nDie Option -J ist keine Standardoption und kann \u00c4nderungen unterliegen."}, - {"appletviewer.main.err.unsupportedopt", "Nicht unterst\u00fctzte Option: {0}"}, - {"appletviewer.main.err.unrecognizedarg", "Nicht erkanntes Argument: {0}"}, - {"appletviewer.main.err.dupoption", "Doppelte Verwendung der Option: {0}"}, + {"appletviewer.parse.warning.requiresname", "Warnung: F\u00FCr -Tag ist ein \"name\"-Attribut erforderlich."}, + {"appletviewer.parse.warning.paramoutside", "Warnung: -Tag au\u00DFerhalb von ... ."}, + {"appletviewer.parse.warning.applet.requirescode", "Warnung: F\u00FCr -Tag ist ein \"code\"-Attribut erforderlich."}, + {"appletviewer.parse.warning.applet.requiresheight", "Warnung: F\u00FCr -Tag ist ein \"height\"-Attribut erforderlich."}, + {"appletviewer.parse.warning.applet.requireswidth", "Warnung: F\u00FCr -Tag ist ein \"width\"-Attribut erforderlich."}, + {"appletviewer.parse.warning.object.requirescode", "Warnung: F\u00FCr -Tag ist ein \"code\"-Attribut erforderlich."}, + {"appletviewer.parse.warning.object.requiresheight", "Warnung: F\u00FCr -Tag ist ein \"height\"-Attribut erforderlich."}, + {"appletviewer.parse.warning.object.requireswidth", "Warnung: F\u00FCr -Tag ist ein \"width\"-Attribut erforderlich."}, + {"appletviewer.parse.warning.embed.requirescode", "Warnung: F\u00FCr -Tag ist ein \"code\"-Attribut erforderlich."}, + {"appletviewer.parse.warning.embed.requiresheight", "Warnung: F\u00FCr -Tag ist ein \"height\"-Attribut erforderlich."}, + {"appletviewer.parse.warning.embed.requireswidth", "Warnung: F\u00FCr -Tag ist ein \"width\"-Attribut erforderlich."}, + {"appletviewer.parse.warning.appnotLongersupported", "Warnung: -Tag wird nicht mehr unterst\u00FCtzt. Verwenden Sie stattdessen :"}, + {"appletviewer.usage", "Verwendung: appletviewer url(s)\n\nwobei die Folgendes umfassen:\n -debug Applet Viewer im Java-Debugger starten\n -encoding Zeichencodierung f\u00FCr HTML-Dateien angeben\n -J Argument an den Java-Interpreter \u00FCbergeben\n\nDie Option \"-J\" ist nicht standardm\u00E4\u00DFig und kann ohne vorherige Ank\u00FCndigung ge\u00E4ndert werden."}, + {"appletviewer.main.err.unsupportedopt", "Nicht unterst\u00FCtzte Option: {0}"}, + {"appletviewer.main.err.unrecognizedarg", "Unbekanntes Argument: {0}"}, + {"appletviewer.main.err.dupoption", "Doppelte Verwendung von Option: {0}"}, {"appletviewer.main.err.inputfile", "Keine Eingabedateien angegeben."}, - {"appletviewer.main.err.badurl", "Fehlerhafte URL: {0} ( {1} )"}, - {"appletviewer.main.err.io", "E/A-Ausnahme beim Lesen: {0}"}, + {"appletviewer.main.err.badurl", "Ung\u00FCltige URL: {0} ( {1} )"}, + {"appletviewer.main.err.io", "I/O-Ausnahme beim Lesen von: {0}"}, {"appletviewer.main.err.readablefile", "Stellen Sie sicher, dass {0} eine lesbare Datei ist."}, {"appletviewer.main.err.correcturl", "Ist {0} die richtige URL?"}, - {"appletviewer.main.prop.store", "Benutzerspezifische Eigenschaften f\u00fcr AppletViewer"}, + {"appletviewer.main.prop.store", "Benutzerspezifische Eigenschaften f\u00FCr AppletViewer"}, {"appletviewer.main.err.prop.cantread", "Benutzereigenschaftendatei kann nicht gelesen werden: {0}"}, {"appletviewer.main.err.prop.cantsave", "Benutzereigenschaftendatei kann nicht gespeichert werden: {0}"}, {"appletviewer.main.warn.nosecmgr", "Warnung: Sicherheit wird deaktiviert."}, - {"appletviewer.main.debug.cantfinddebug", "Der Debugger wurde nicht gefunden!"}, - {"appletviewer.main.debug.cantfindmain", "Hauptmethode wurde nicht im Debugger gefunden!"}, - {"appletviewer.main.debug.exceptionindebug", "Ausnahme im Debugger!"}, - {"appletviewer.main.debug.cantaccess", "Zugriff auf den Debugger nicht m\u00f6glich!"}, - {"appletviewer.main.nosecmgr", "Warnung: SecurityManager nicht installiert!"}, - {"appletviewer.main.warning", "Warnung: Es wurden keine Applets gestartet. Stellen Sie sicher, dass die Eingabe eine -Marke enth\u00e4lt."}, - {"appletviewer.main.warn.prop.overwrite", "Warnung: Auf Anforderung des Benutzers wird die Systemeigenschaft vor\u00fcbergehend \u00fcberschrieben: Schl\u00fcssel: {0} alter Wert: {1} neuer Wert: {2}"}, + {"appletviewer.main.debug.cantfinddebug", "Debugger kann nicht gefunden werden."}, + {"appletviewer.main.debug.cantfindmain", "Hauptmethode im Debugger kann nicht gefunden werden."}, + {"appletviewer.main.debug.exceptionindebug", "Ausnahme im Debugger."}, + {"appletviewer.main.debug.cantaccess", "Zugriff auf Debugger nicht m\u00F6glich."}, + {"appletviewer.main.nosecmgr", "Warnung: SecurityManager nicht installiert."}, + {"appletviewer.main.warning", "Warnung: Es wurden keine Applets gestartet. Stellen Sie sicher, dass die Eingabe ein -Tag enth\u00E4lt."}, + {"appletviewer.main.warn.prop.overwrite", "Warnung: Systemeigenschaft wird tempor\u00E4r aufgrund von Benutzeranforderung \u00FCberschrieben: Schl\u00FCssel: {0} Alter Wert: {1} Neuer Wert: {2}"}, {"appletviewer.main.warn.cantreadprops", "Warnung: AppletViewer-Eigenschaftendatei kann nicht gelesen werden: {0} Standardwerte werden verwendet."}, - {"appletioexception.loadclass.throw.interrupted", "Laden von Klassen unterbrochen: {0}"}, + {"appletioexception.loadclass.throw.interrupted", "Laden der Klasse unterbrochen: {0}"}, {"appletioexception.loadclass.throw.notloaded", "Klasse nicht geladen: {0}"}, - {"appletclassloader.loadcode.verbose", "\u00d6ffne Stream zu {0}, um {1} abzurufen."}, - {"appletclassloader.filenotfound", "Datei beim Suchen nach {0} nicht gefunden"}, - {"appletclassloader.fileformat", "Dateiformatausnahme beim Laden: {0}"}, - {"appletclassloader.fileioexception", "E/A-Ausnahme beim Laden: {0}"}, - {"appletclassloader.fileexception", "{0} Ausnahme beim Laden: {1}"}, - {"appletclassloader.filedeath", "{0} gel\u00f6scht beim Laden: {1}"}, - {"appletclassloader.fileerror", "{0} Fehler beim Laden: {1}"}, - {"appletclassloader.findclass.verbose.findclass", "{0} sucht Klasse {1}"}, - {"appletclassloader.findclass.verbose.openstream", "\u00d6ffne Stream zu {0}, um {1} abzurufen."}, - {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource f\u00fcr Name: {0}"}, + {"appletclassloader.loadcode.verbose", "\u00D6ffnen von Stream zu: {0}, um {1} abzurufen"}, + {"appletclassloader.filenotfound", "Datei nicht gefunden beim Suchen nach: {0}"}, + {"appletclassloader.fileformat", "Dateiformatausnahme beim Laden von: {0}"}, + {"appletclassloader.fileioexception", "I/O-Ausnahme beim Laden von: {0}"}, + {"appletclassloader.fileexception", "{0}-Ausnahme beim Laden von: {1}"}, + {"appletclassloader.filedeath", "{0} abgebrochen beim Laden von: {1}"}, + {"appletclassloader.fileerror", "{0}-Fehler beim Laden von: {1}"}, + {"appletclassloader.findclass.verbose.findclass", "{0} Klasse {1} suchen"}, + {"appletclassloader.findclass.verbose.openstream", "\u00D6ffnen von Stream zu: {0}, um {1} abzurufen"}, + {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource f\u00FCr Name: {0}"}, {"appletclassloader.getresource.verbose.found", "Ressource {0} als Systemressource gefunden"}, {"appletclassloader.getresourceasstream.verbose", "Ressource {0} als Systemressource gefunden"}, - {"appletpanel.runloader.err", "Entweder Objekt oder Code-Parameter!"}, + {"appletpanel.runloader.err", "Objekt oder Codeparameter."}, {"appletpanel.runloader.exception", "Ausnahme beim Deserialisieren von {0}"}, - {"appletpanel.destroyed", "Applet vernichtet"}, - {"appletpanel.loaded", "Applet geladen"}, - {"appletpanel.started", "Applet gestartet"}, - {"appletpanel.inited", "Applet initialisiert"}, - {"appletpanel.stopped", "Applet gestoppt"}, - {"appletpanel.disposed", "Applet abgelegt"}, - {"appletpanel.nocode", "APPLET-Marke ohne CODE-Parameter"}, - {"appletpanel.notfound", "Laden: Klasse {0} nicht gefunden"}, - {"appletpanel.nocreate", "Laden: Instanz von {0} kann nicht erstellt werden."}, - {"appletpanel.noconstruct", "Laden: {0} ist nicht \u00f6ffentlich oder hat keinen \u00f6ffentlichen Autor."}, - {"appletpanel.death", "gel\u00f6scht"}, - {"appletpanel.exception", "Ausnahme: {0}"}, - {"appletpanel.exception2", "Ausnahme: {0}: {1}"}, - {"appletpanel.error", "Fehler: {0}"}, - {"appletpanel.error2", "Fehler: {0}: {1}"}, - {"appletpanel.notloaded", "Initialisierung: Applet nicht geladen"}, - {"appletpanel.notinited", "Start: Applet nicht initialisiert"}, - {"appletpanel.notstarted", "Stopp: Applet nicht gestartet"}, - {"appletpanel.notstopped", "Vernichten: Applet nicht gestoppt"}, - {"appletpanel.notdestroyed", "Ablegen: Applet nicht vernichtet"}, - {"appletpanel.notdisposed", "Laden: Applet nicht abgelegt"}, - {"appletpanel.bail", "Unterbrochen: breche ab."}, - {"appletpanel.filenotfound", "Datei beim Suchen nach {0} nicht gefunden"}, + {"appletpanel.destroyed", "Applet endg\u00FCltig gel\u00F6scht."}, + {"appletpanel.loaded", "Applet geladen."}, + {"appletpanel.started", "Applet gestartet."}, + {"appletpanel.inited", "Applet initialisiert."}, + {"appletpanel.stopped", "Applet gestoppt."}, + {"appletpanel.disposed", "Applet verworfen."}, + {"appletpanel.nocode", "Bei APPLET-Tag fehlt CODE-Parameter."}, + {"appletpanel.notfound", "Laden: Klasse {0} nicht gefunden."}, + {"appletpanel.nocreate", "Laden: {0} kann nicht instanziiert werden."}, + {"appletpanel.noconstruct", "Laden: {0} ist nicht \"public\" oder hat keinen \"public\"-Constructor."}, + {"appletpanel.death", "abgebrochen"}, + {"appletpanel.exception", "Ausnahme: {0}."}, + {"appletpanel.exception2", "Ausnahme: {0}: {1}."}, + {"appletpanel.error", "Fehler: {0}."}, + {"appletpanel.error2", "Fehler: {0}: {1}."}, + {"appletpanel.notloaded", "Init.: Applet nicht geladen."}, + {"appletpanel.notinited", "Starten: Applet nicht initialisiert."}, + {"appletpanel.notstarted", "Stoppen: Applet nicht gestartet."}, + {"appletpanel.notstopped", "Endg\u00FCltig l\u00F6schen: Applet nicht gestoppt."}, + {"appletpanel.notdestroyed", "Verwerfen: Applet nicht endg\u00FCltig gel\u00F6scht."}, + {"appletpanel.notdisposed", "Laden: Applet nicht verworfen."}, + {"appletpanel.bail", "Unterbrochen: Zur\u00FCckziehen."}, + {"appletpanel.filenotfound", "Datei nicht gefunden beim Suchen nach: {0}"}, {"appletpanel.fileformat", "Dateiformatausnahme beim Laden von: {0}"}, - {"appletpanel.fileioexception", "E/A-Ausnahme beim Laden von: {0}"}, - {"appletpanel.fileexception", "{0} Ausnahme beim Laden von: {1}"}, - {"appletpanel.filedeath", "{0} gel\u00f6scht beim Laden von: {1}"}, - {"appletpanel.fileerror", "{0} Fehler beim Laden von: {1}"}, - {"appletpanel.badattribute.exception", "HTML-Parsing: fehlerhafter Wert bei Attribut f\u00fcr Breite/H\u00f6he"}, - {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream erfordert Nicht-Null-Lader."}, + {"appletpanel.fileioexception", "I/O-Ausnahme beim Laden von: {0}"}, + {"appletpanel.fileexception", "{0}-Ausnahme beim Laden von: {1}"}, + {"appletpanel.filedeath", "{0} abgebrochen beim Laden von: {1}"}, + {"appletpanel.fileerror", "{0}-Fehler beim Laden von: {1}"}, + {"appletpanel.badattribute.exception", "HTML-Parsing: Falscher Wert f\u00FCr \"width/height\"-Attribut"}, + {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream erfordert Loader ungleich null"}, {"appletprops.title", "AppletViewer-Eigenschaften"}, - {"appletprops.label.http.server", "Http-Proxy-Server:"}, - {"appletprops.label.http.proxy", "Http-Proxy-Port:"}, + {"appletprops.label.http.server", "HTTP-Proxyserver:"}, + {"appletprops.label.http.proxy", "HTTP-Proxyport:"}, {"appletprops.label.network", "Netzwerkzugriff:"}, - {"appletprops.choice.network.item.none", "Keiner"}, + {"appletprops.choice.network.item.none", "Keine"}, {"appletprops.choice.network.item.applethost", "Applet-Host"}, - {"appletprops.choice.network.item.unrestricted", "Unbeschr\u00e4nkt"}, + {"appletprops.choice.network.item.unrestricted", "Uneingeschr\u00E4nkt"}, {"appletprops.label.class", "Klassenzugriff:"}, - {"appletprops.choice.class.item.restricted", "Beschr\u00e4nkt"}, - {"appletprops.choice.class.item.unrestricted", "Unbeschr\u00e4nkt"}, - {"appletprops.label.unsignedapplet", "Unsignierte Applets zulassen:"}, + {"appletprops.choice.class.item.restricted", "Eingeschr\u00E4nkt"}, + {"appletprops.choice.class.item.unrestricted", "Uneingeschr\u00E4nkt"}, + {"appletprops.label.unsignedapplet", "Nicht signierte Applets zulassen:"}, {"appletprops.choice.unsignedapplet.no", "Nein"}, {"appletprops.choice.unsignedapplet.yes", "Ja"}, {"appletprops.button.apply", "Anwenden"}, {"appletprops.button.cancel", "Abbrechen"}, - {"appletprops.button.reset", "Zur\u00fccksetzen"}, - {"appletprops.apply.exception", "Konnte Eigenschaften nicht speichern: {0}"}, + {"appletprops.button.reset", "Zur\u00FCcksetzen"}, + {"appletprops.apply.exception", "Eigenschaften konnten nicht gespeichert werden: {0}"}, /* 4066432 */ - {"appletprops.title.invalidproxy", "Ung\u00fcltiger Eintrag"}, - {"appletprops.label.invalidproxy", "Proxy-Anschluss muss eine positive ganze Zahl sein."}, + {"appletprops.title.invalidproxy", "Ung\u00FCltiger Eintrag"}, + {"appletprops.label.invalidproxy", "Proxyport muss ein positiver Ganzzahlwert sein."}, {"appletprops.button.ok", "OK"}, /* end 4066432 */ - {"appletprops.prop.store", "Benutzerspezifische Eigenschaften f\u00fcr AppletViewer"}, - {"appletsecurityexception.checkcreateclassloader", "Sicherheitsausnahme: classloader"}, + {"appletprops.prop.store", "Benutzerspezifische Eigenschaften f\u00FCr AppletViewer"}, + {"appletsecurityexception.checkcreateclassloader", "Sicherheitsausnahme: Class Loader"}, {"appletsecurityexception.checkaccess.thread", "Sicherheitsausnahme: Thread"}, - {"appletsecurityexception.checkaccess.threadgroup", "Sicherheitsausnahme: Thread-Gruppe: {0}"}, - {"appletsecurityexception.checkexit", "Sicherheitsausnahme: beenden: {0}"}, - {"appletsecurityexception.checkexec", "Sicherheitsausnahme: ausf\u00fchren: {0}"}, - {"appletsecurityexception.checklink", "Sicherheitsausnahme: verkn\u00fcpfen: {0}"}, + {"appletsecurityexception.checkaccess.threadgroup", "Sicherheitsausnahme: Threadgruppe: {0}"}, + {"appletsecurityexception.checkexit", "Sicherheitsausnahme: Beenden: {0}"}, + {"appletsecurityexception.checkexec", "Sicherheitsausnahme: Ausf\u00FChrung: {0}"}, + {"appletsecurityexception.checklink", "Sicherheitsausnahme: Link: {0}"}, {"appletsecurityexception.checkpropsaccess", "Sicherheitsausnahme: Eigenschaften"}, - {"appletsecurityexception.checkpropsaccess.key", "Sicherheitsausnahme: Eigenschaftenzugriff {0}"}, + {"appletsecurityexception.checkpropsaccess.key", "Sicherheitsausnahme: Eigenschaftszugriff {0}"}, {"appletsecurityexception.checkread.exception1", "Sicherheitsausnahme: {0}, {1}"}, - {"appletsecurityexception.checkread.exception2", "Sicherheitsausnahme: Datei.lesen: {0}"}, - {"appletsecurityexception.checkread", "Sicherheitsausnahme: Datei.lesen: {0} == {1}"}, + {"appletsecurityexception.checkread.exception2", "Sicherheitsausnahme: file.read: {0}"}, + {"appletsecurityexception.checkread", "Sicherheitsausnahme: file.read: {0} == {1}"}, {"appletsecurityexception.checkwrite.exception", "Sicherheitsausnahme: {0}, {1}"}, - {"appletsecurityexception.checkwrite", "Sicherheitsausnahme: Datei.schreiben: {0} == {1}"}, - {"appletsecurityexception.checkread.fd", "Sicherheitsausnahme: fd.lesen"}, - {"appletsecurityexception.checkwrite.fd", "Sicherheitsausnahme: fd.schreiben"}, - {"appletsecurityexception.checklisten", "Sicherheitsausnahme: Socket.empfangen: {0}"}, - {"appletsecurityexception.checkaccept", "Sicherheitsausnahme: Socket.best\u00e4tigen: {0}:{1}"}, - {"appletsecurityexception.checkconnect.networknone", "Sicherheitsausnahme: Socket.verbinden: {0}->{1}"}, - {"appletsecurityexception.checkconnect.networkhost1", "Sicherheitsausnahme: Konnte von {1} aus keine Verbindung mit {0} herstellen."}, - {"appletsecurityexception.checkconnect.networkhost2", "Sicherheitsausnahme: Konnte IP f\u00fcr Host {0} oder {1} nicht aufl\u00f6sen."}, - {"appletsecurityexception.checkconnect.networkhost3", "Sicherheitsausnahme: Konnte IP f\u00fcr Host {0} nicht aufl\u00f6sen. Siehe Eigenschaft trustProxy."}, - {"appletsecurityexception.checkconnect", "Sicherheitsausnahme: verbinden: {0}->{1}"}, - {"appletsecurityexception.checkpackageaccess", "Sicherheitsausnahme: Kann nicht auf Package zugreifen: {0}"}, - {"appletsecurityexception.checkpackagedefinition", "Sicherheitsausnahme: Kann Package nicht definieren: {0}"}, - {"appletsecurityexception.cannotsetfactory", "Sicherheitsausnahme: Kann Werkseinstellungen nicht setzen"}, - {"appletsecurityexception.checkmemberaccess", "Sicherheitsausnahme: Mitgliedszugriff pr\u00fcfen"}, + {"appletsecurityexception.checkwrite", "Sicherheitsausnahme: file.write: {0} == {1}"}, + {"appletsecurityexception.checkread.fd", "Sicherheitsausnahme: fd.read"}, + {"appletsecurityexception.checkwrite.fd", "Sicherheitsausnahme: fd.write"}, + {"appletsecurityexception.checklisten", "Sicherheitsausnahme: socket.listen: {0}"}, + {"appletsecurityexception.checkaccept", "Sicherheitsausnahme: socket.accept: {0}:{1}"}, + {"appletsecurityexception.checkconnect.networknone", "Sicherheitsausnahme: socket.connect: {0}->{1}"}, + {"appletsecurityexception.checkconnect.networkhost1", "Sicherheitsausnahme: Verbindung mit {0} mit Ursprung aus {1} konnte nicht hergestellt werden."}, + {"appletsecurityexception.checkconnect.networkhost2", "Sicherheitsausnahme: IP f\u00FCr Host {0} oder f\u00FCr {1} konnte nicht aufgel\u00F6st werden. "}, + {"appletsecurityexception.checkconnect.networkhost3", "Sicherheitsausnahme: IP f\u00FCr Host {0} konnte nicht aufgel\u00F6st werden. Siehe trustProxy-Eigenschaft."}, + {"appletsecurityexception.checkconnect", "Sicherheitsausnahme: Verbinden: {0}->{1}"}, + {"appletsecurityexception.checkpackageaccess", "Sicherheitsausnahme: Zugriff auf Package nicht m\u00F6glich: {0}"}, + {"appletsecurityexception.checkpackagedefinition", "Sicherheitsausnahme: Package kann nicht definiert werden: {0}"}, + {"appletsecurityexception.cannotsetfactory", "Sicherheitsausnahme: Factory kann nicht festgelegt werden"}, + {"appletsecurityexception.checkmemberaccess", "Sicherheitsausnahme: Mitgliedszugriff pr\u00FCfen"}, {"appletsecurityexception.checkgetprintjob", "Sicherheitsausnahme: getPrintJob"}, {"appletsecurityexception.checksystemclipboardaccess", "Sicherheitsausnahme: getSystemClipboard"}, {"appletsecurityexception.checkawteventqueueaccess", "Sicherheitsausnahme: getEventQueue"}, - {"appletsecurityexception.checksecurityaccess", "Sicherheitsausnahme: Sicherheitsoperation: {0}"}, - {"appletsecurityexception.getsecuritycontext.unknown", "Unbekannter Klassenladertyp. Konnte nicht auf getContext pr\u00fcfen."}, - {"appletsecurityexception.checkread.unknown", "Unbekannter Klassenladertyp. Konnte \u00dcberpr\u00fcfen des Lesevorgangs {0} nicht pr\u00fcfen."}, - {"appletsecurityexception.checkconnect.unknown", "Unbekannter Klassenladertyp. Konnte \u00dcberpr\u00fcfen der Verbindung nicht pr\u00fcfen."}, + {"appletsecurityexception.checksecurityaccess", "Sicherheitsausnahme: Sicherheitsvorgang: {0}"}, + {"appletsecurityexception.getsecuritycontext.unknown", "Unbekannter Class Loader-Typ. Pr\u00FCfen auf getContext nicht m\u00F6glich"}, + {"appletsecurityexception.checkread.unknown", "Unbekannter Class Loader-Typ. Pr\u00FCfen auf checkRead {0} nicht m\u00F6glich"}, + {"appletsecurityexception.checkconnect.unknown", "Unbekannter Class Loader-Typ. Pr\u00FCfen auf checkConnect nicht m\u00F6glich"}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_es.java b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_es.java index c04e170dc32..61d52d2700b 100644 --- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_es.java +++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_es.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -29,173 +29,175 @@ import java.util.ListResourceBundle; public class MsgAppletViewer_es extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"textframe.button.dismiss", "Rechazar"}, - {"appletviewer.tool.title", "AppletViewer: {0}"}, - {"appletviewer.menu.applet", "Subprograma"}, + Object[][] temp = new Object[][] { + {"textframe.button.dismiss", "Descartar"}, + {"appletviewer.tool.title", "Visor de Applet: {0}"}, + {"appletviewer.menu.applet", "Applet"}, {"appletviewer.menuitem.restart", "Reiniciar"}, - {"appletviewer.menuitem.reload", "Volver a cargar"}, + {"appletviewer.menuitem.reload", "Volver a Cargar"}, {"appletviewer.menuitem.stop", "Parar"}, {"appletviewer.menuitem.save", "Guardar..."}, {"appletviewer.menuitem.start", "Iniciar"}, {"appletviewer.menuitem.clone", "Clonar..."}, {"appletviewer.menuitem.tag", "Etiqueta..."}, - {"appletviewer.menuitem.info", "Informaci\u00f3n..."}, + {"appletviewer.menuitem.info", "Informaci\u00F3n..."}, {"appletviewer.menuitem.edit", "Editar"}, - {"appletviewer.menuitem.encoding", "Codificaci\u00f3n de caracteres"}, + {"appletviewer.menuitem.encoding", "Codificaci\u00F3n de Caracteres"}, {"appletviewer.menuitem.print", "Imprimir..."}, {"appletviewer.menuitem.props", "Propiedades..."}, {"appletviewer.menuitem.close", "Cerrar"}, {"appletviewer.menuitem.quit", "Salir"}, {"appletviewer.label.hello", "Hola..."}, - {"appletviewer.status.start", "iniciando subprograma..."}, - {"appletviewer.appletsave.filedialogtitle","Serializar subprograma en archivo"}, - {"appletviewer.appletsave.err1", "serializando {0} como {1}"}, + {"appletviewer.status.start", "iniciando applet..."}, + {"appletviewer.appletsave.filedialogtitle","Serializar Applet en Archivo"}, + {"appletviewer.appletsave.err1", "serializando {0} en {1}"}, {"appletviewer.appletsave.err2", "en appletSave: {0}"}, - {"appletviewer.applettag", "Etiqueta mostrada"}, - {"appletviewer.applettag.textframe", "Etiqueta HTML de subprograma"}, - {"appletviewer.appletinfo.applet", "-- sin informaci\u00f3n de subprograma --"}, - {"appletviewer.appletinfo.param", "-- sin informaci\u00f3n de par\u00e1metro --"}, - {"appletviewer.appletinfo.textframe", "Informaci\u00f3n de subprograma"}, - {"appletviewer.appletprint.fail", "Fallo en la impresi\u00f3n."}, - {"appletviewer.appletprint.finish", "Impresi\u00f3n finalizada."}, - {"appletviewer.appletprint.cancel", "Impresi\u00f3n cancelada."}, - {"appletviewer.appletencoding", "Codificaci\u00f3n de caracteres: {0}"}, - {"appletviewer.parse.warning.requiresname", "Advertencia: la etiqueta requiere el atributo del nombre."}, - {"appletviewer.parse.warning.paramoutside", "Advertencia: la etiqueta est\u00e1 fuera de ... ."}, - {"appletviewer.parse.warning.applet.requirescode", "Advertencia: requiere el atributo de c\u00f3digo."}, - {"appletviewer.parse.warning.applet.requiresheight", "Advertencia: requiere el atributo de altura."}, - {"appletviewer.parse.warning.applet.requireswidth", "Advertencia: requiere el atributo de anchura."}, - {"appletviewer.parse.warning.object.requirescode", "Advertencia: requiere el atributo de c\u00f3digo."}, - {"appletviewer.parse.warning.object.requiresheight", "Advertencia: requiere el atributo de altura."}, - {"appletviewer.parse.warning.object.requireswidth", "Advertencia: requiere el atributo de anchura."}, - {"appletviewer.parse.warning.embed.requirescode", "Advertencia: requiere el atributo de c\u00f3digo."}, - {"appletviewer.parse.warning.embed.requiresheight", "Advertencia: requiere el atributo de altura."}, - {"appletviewer.parse.warning.embed.requireswidth", "Advertencia: requiere el atributo de anchura."}, - {"appletviewer.parse.warning.appnotLongersupported", "Advertencia: la etiqueta ya no est\u00e1 soportada; utilice en su lugar:"}, - {"appletviewer.usage", "Sintaxis: appletviewer url(s)\n\ndonde incluye:\n -debug Iniciar el AppletViewer en el depurador de Java\n -encoding Especificar la codificaci\u00f3n de caracteres utilizada por los archivos HTML\n -J Pasar argumento al int\u00e9rprete de Java\n\nLa opci\u00f3n -J no es est\u00e1ndar, y puede modificarse sin previo aviso."}, - {"appletviewer.main.err.unsupportedopt", "Opci\u00f3n no admitida: {0}"}, + {"appletviewer.applettag", "Etiqueta Mostrada"}, + {"appletviewer.applettag.textframe", "Etiqueta HTML de Applet"}, + {"appletviewer.appletinfo.applet", "-- ninguna informaci\u00F3n de applet --"}, + {"appletviewer.appletinfo.param", "-- ninguna informaci\u00F3n de par\u00E1metros --"}, + {"appletviewer.appletinfo.textframe", "Informaci\u00F3n del Applet"}, + {"appletviewer.appletprint.fail", "Fallo de impresi\u00F3n."}, + {"appletviewer.appletprint.finish", "Impresi\u00F3n terminada."}, + {"appletviewer.appletprint.cancel", "Impresi\u00F3n cancelada."}, + {"appletviewer.appletencoding", "Codificaci\u00F3n de Caracteres: {0}"}, + {"appletviewer.parse.warning.requiresname", "Advertencia: la etiqueta requiere un atributo name."}, + {"appletviewer.parse.warning.paramoutside", "Advertencia: la etiqueta est\u00E1 fuera de ... ."}, + {"appletviewer.parse.warning.applet.requirescode", "Advertencia: la etiqueta requiere el atributo code."}, + {"appletviewer.parse.warning.applet.requiresheight", "Advertencia: la etiqueta requiere el atributo height."}, + {"appletviewer.parse.warning.applet.requireswidth", "Advertencia: la etiqueta requiere el atributo width."}, + {"appletviewer.parse.warning.object.requirescode", "Advertencia: la etiqueta requiere el atributo code."}, + {"appletviewer.parse.warning.object.requiresheight", "Advertencia: la etiqueta requiere el atributo height."}, + {"appletviewer.parse.warning.object.requireswidth", "Advertencia: la etiqueta requiere el atributo width."}, + {"appletviewer.parse.warning.embed.requirescode", "Advertencia: la etiqueta requiere el atributo code."}, + {"appletviewer.parse.warning.embed.requiresheight", "Advertencia: la etiqueta requiere el atributo height."}, + {"appletviewer.parse.warning.embed.requireswidth", "Advertencia: la etiqueta requiere el atributo width."}, + {"appletviewer.parse.warning.appnotLongersupported", "Advertencia: la etiqueta ya no est\u00E1 soportada, utilice en su lugar:"}, + {"appletviewer.usage", "Sintaxis: appletviewer url(s)\n\ndonde incluye:\n -debug Iniciar el visor de applet en el depurador Java\n -encoding Especificar la codificaci\u00F3n de caracteres utilizada por los archivos HTML\n -J Transferir argumento al int\u00E9rprete de Java\n\nLa opci\u00F3n -J es no est\u00E1ndar y est\u00E1 sujeta a cambios sin previo aviso."}, + {"appletviewer.main.err.unsupportedopt", "Opci\u00F3n no soportada: {0}"}, {"appletviewer.main.err.unrecognizedarg", "Argumento no reconocido: {0}"}, - {"appletviewer.main.err.dupoption", "Uso duplicado de la opci\u00f3n: {0}"}, - {"appletviewer.main.err.inputfile", "No se ha especificado ning\u00fan archivo de entrada."}, - {"appletviewer.main.err.badurl", "URL err\u00f3neo: {0} ( {1} )"}, - {"appletviewer.main.err.io", "Excepci\u00f3n de E/S durante la lectura: {0}"}, - {"appletviewer.main.err.readablefile", "Aseg\u00farese de que {0} es un archivo y que puede leerse."}, - {"appletviewer.main.err.correcturl", "\u00bfEs {0} el URL correcto?"}, - {"appletviewer.main.prop.store", "Propiedades del AppletViewer espec\u00edficos del usuario"}, + {"appletviewer.main.err.dupoption", "Uso duplicado de la opci\u00F3n: {0}"}, + {"appletviewer.main.err.inputfile", "No se ha especificado ning\u00FAn archivo de entrada."}, + {"appletviewer.main.err.badurl", "URL Err\u00F3nea: {0} ( {1} )"}, + {"appletviewer.main.err.io", "Excepci\u00F3n de E/S durante la lectura: {0}"}, + {"appletviewer.main.err.readablefile", "Aseg\u00FArese de que {0} es un archivo y que se puede leer."}, + {"appletviewer.main.err.correcturl", "\u00BFEs {0} la URL correcta?"}, + {"appletviewer.main.prop.store", "Propiedades Espec\u00EDficas del Usuario para AppletViewer"}, {"appletviewer.main.err.prop.cantread", "No se puede leer el archivo de propiedades del usuario: {0}"}, {"appletviewer.main.err.prop.cantsave", "No se puede guardar el archivo de propiedades del usuario: {0}"}, - {"appletviewer.main.warn.nosecmgr", "Advertencia: inhabilitando seguridad."}, - {"appletviewer.main.debug.cantfinddebug", "No se puede encontrar el depurador."}, - {"appletviewer.main.debug.cantfindmain", "No se puede encontrar el m\u00e9todo principal en el depurador."}, - {"appletviewer.main.debug.exceptionindebug", "Excepci\u00f3n en el depurador."}, + {"appletviewer.main.warn.nosecmgr", "Advertencia: desactivando seguridad."}, + {"appletviewer.main.debug.cantfinddebug", "No se ha encontrado el depurador."}, + {"appletviewer.main.debug.cantfindmain", "No se ha encontrado el m\u00E9todo principal en el depurador."}, + {"appletviewer.main.debug.exceptionindebug", "Excepci\u00F3n en el depurador."}, {"appletviewer.main.debug.cantaccess", "No se puede acceder al depurador."}, - {"appletviewer.main.nosecmgr", "Advertencia: SecurityManager no est\u00e1 instalado."}, - {"appletviewer.main.warning", "Advertencia: No se ha iniciado ning\u00fan subprograma. Aseg\u00farese de que la entrada contiene una etiqueta ."}, - {"appletviewer.main.warn.prop.overwrite", "Advertencia: Sobrescribiendo temporalmente propiedad del sistema por solicitud del usuario: clave: {0} valor antiguo: {1} valor nuevo: {2}"}, - {"appletviewer.main.warn.cantreadprops", "Advertencia: No se puede leer el archivo de propiedades del AppletViewer: {0} Utilizando valores predeterminados."}, + {"appletviewer.main.nosecmgr", "Advertencia: no se ha instalado SecurityManager."}, + {"appletviewer.main.warning", "Advertencia: no se ha iniciado ning\u00FAn applet. Aseg\u00FArese de que la entrada contiene una etiqueta ."}, + {"appletviewer.main.warn.prop.overwrite", "Advertencia: se sobrescribir\u00E1 temporalmente la propiedad del sistema cuando lo solicite el usuario: clave: {0} valor anterior: {1} nuevo valor: {2}"}, + {"appletviewer.main.warn.cantreadprops", "Advertencia: no se puede leer el archivo de propiedades de AppletViewer: {0}. Utilizando valores por defecto."}, {"appletioexception.loadclass.throw.interrupted", "carga de clase interrumpida: {0}"}, {"appletioexception.loadclass.throw.notloaded", "clase no cargada: {0}"}, - {"appletclassloader.loadcode.verbose", "Abriendo cadena de flujo: {0} para obtener {1}"}, - {"appletclassloader.filenotfound", "Archivo no encontrado al buscar: {0}"}, - {"appletclassloader.fileformat", "Excepci\u00f3n de formato de archivo al cargar: {0}"}, - {"appletclassloader.fileioexception", "Excepci\u00f3n de E/S al cargar: {0}"}, - {"appletclassloader.fileexception", "Excepci\u00f3n de {0} al cargar: {1}"}, - {"appletclassloader.filedeath", "{0} eliminado al cargar: {1}"}, + {"appletclassloader.loadcode.verbose", "Abriendo flujo a: {0} para obtener {1}"}, + {"appletclassloader.filenotfound", "No se ha encontrado el archivo al buscar: {0}"}, + {"appletclassloader.fileformat", "Excepci\u00F3n de formato de archivo al cargar: {0}"}, + {"appletclassloader.fileioexception", "Excepci\u00F3n de E/S al cargar: {0}"}, + {"appletclassloader.fileexception", "Excepci\u00F3n de {0} al cargar: {1}"}, + {"appletclassloader.filedeath", "{0} interrumpido al cargar: {1}"}, {"appletclassloader.fileerror", "error de {0} al cargar: {1}"}, - {"appletclassloader.findclass.verbose.findclass", "{0} buscar clase {1}"}, - {"appletclassloader.findclass.verbose.openstream", "Abriendo cadena de flujo: {0} para obtener {1}"}, - {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource para el nombre: {0}"}, - {"appletclassloader.getresource.verbose.found", "Recurso encontrado: {0} como recurso del sistema"}, - {"appletclassloader.getresourceasstream.verbose", "Recurso encontrado: {0} como recurso del sistema"}, - {"appletpanel.runloader.err", "Par\u00e1metro de objeto o c\u00f3digo"}, - {"appletpanel.runloader.exception", "excepci\u00f3n al cancelar serializaci\u00f3n de {0}"}, - {"appletpanel.destroyed", "subprograma destruido."}, - {"appletpanel.loaded", "Subprograma cargado."}, - {"appletpanel.started", "Subprograma iniciado."}, - {"appletpanel.inited", "Subprograma inicializado."}, - {"appletpanel.stopped", "Subprograma parado."}, - {"appletpanel.disposed", "Subprograma desechado."}, - {"appletpanel.nocode", "La etiqueta APPLET carece del par\u00e1metro CODE."}, + {"appletclassloader.findclass.verbose.findclass", "{0} encontrar la clase {1}"}, + {"appletclassloader.findclass.verbose.openstream", "Abriendo flujo a: {0} para obtener {1}"}, + {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource para nombre: {0}"}, + {"appletclassloader.getresource.verbose.found", "Recurso encontrado: {0} como un recurso de sistema"}, + {"appletclassloader.getresourceasstream.verbose", "Recurso encontrado: {0} como un recurso de sistema"}, + {"appletpanel.runloader.err", "Par\u00E1metro de c\u00F3digo u objeto."}, + {"appletpanel.runloader.exception", "excepci\u00F3n al deserializar {0}"}, + {"appletpanel.destroyed", "Applet destruido."}, + {"appletpanel.loaded", "Applet cargado."}, + {"appletpanel.started", "Applet iniciado."}, + {"appletpanel.inited", "Applet inicializado."}, + {"appletpanel.stopped", "Applet parado."}, + {"appletpanel.disposed", "Applet desechado."}, + {"appletpanel.nocode", "Falta el par\u00E1metro CODE en la etiqueta APPLET."}, {"appletpanel.notfound", "cargar: clase {0} no encontrada."}, - {"appletpanel.nocreate", "cargar: no se puede crear un caso de {0}."}, - {"appletpanel.noconstruct", "cargar: {0} no es p\u00fablico o no tiene ning\u00fan constructor p\u00fablico."}, - {"appletpanel.death", "eliminado"}, - {"appletpanel.exception", "excepci\u00f3n: {0}."}, - {"appletpanel.exception2", "excepci\u00f3n: {0}: {1}."}, + {"appletpanel.nocreate", "cargar: {0} no se puede instanciar."}, + {"appletpanel.noconstruct", "cargar: {0} no es p\u00FAblico o no tiene un constructor p\u00FAblico."}, + {"appletpanel.death", "interrumpido"}, + {"appletpanel.exception", "excepci\u00F3n: {0}."}, + {"appletpanel.exception2", "excepci\u00F3n: {0}: {1}."}, {"appletpanel.error", "error: {0}."}, {"appletpanel.error2", "error: {0}: {1}."}, - {"appletpanel.notloaded", "Inicializar: subprograma no cargado."}, - {"appletpanel.notinited", "Iniciar: subprograma no inicializado."}, - {"appletpanel.notstarted", "Parar: subprograma no iniciado."}, - {"appletpanel.notstopped", "Destruir: subprograma no parado."}, - {"appletpanel.notdestroyed", "Desechar: subprograma no destruido."}, - {"appletpanel.notdisposed", "Cargar: subprograma no desechado."}, - {"appletpanel.bail", "Interrupci\u00f3n: efectuando salida."}, - {"appletpanel.filenotfound", "Archivo no encontrado al buscar: {0}"}, - {"appletpanel.fileformat", "Excepci\u00f3n de formato de archivo al cargar: {0}"}, - {"appletpanel.fileioexception", "Excepci\u00f3n de E/S al cargar: {0}"}, - {"appletpanel.fileexception", "Excepci\u00f3n de {0} al cargar: {1}"}, - {"appletpanel.filedeath", "{0} eliminado al cargar: {1}"}, - {"appletpanel.fileerror", "Error de {0} al cargar: {1}"}, - {"appletpanel.badattribute.exception", "An\u00e1lisis de HTML: valor incorrecto para el atributo ancho/alto"}, - {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream requiere un cargador que no sea nulo (non-null)"}, + {"appletpanel.notloaded", "Iniciaci\u00F3n: applet no cargado."}, + {"appletpanel.notinited", "Iniciar: applet no inicializado."}, + {"appletpanel.notstarted", "Parar: applet no iniciado."}, + {"appletpanel.notstopped", "Destruir: applet no parado."}, + {"appletpanel.notdestroyed", "Desechar: applet no destruido."}, + {"appletpanel.notdisposed", "Cargar: applet no desechado."}, + {"appletpanel.bail", "Interrumpido: rescatando."}, + {"appletpanel.filenotfound", "No se ha encontrado el archivo al buscar: {0}"}, + {"appletpanel.fileformat", "Excepci\u00F3n de formato de archivo al cargar: {0}"}, + {"appletpanel.fileioexception", "Excepci\u00F3n de E/S al cargar: {0}"}, + {"appletpanel.fileexception", "Excepci\u00F3n de {0} al cargar: {1}"}, + {"appletpanel.filedeath", "{0} interrumpido al cargar: {1}"}, + {"appletpanel.fileerror", "error de {0} al cargar: {1}"}, + {"appletpanel.badattribute.exception", "An\u00E1lisis HTML: valor incorrecto para el atributo width/height."}, + {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream requiere un cargador no nulo"}, {"appletprops.title", "Propiedades de AppletViewer"}, - {"appletprops.label.http.server", "Servidor proxy Http:"}, - {"appletprops.label.http.proxy", "Puerto proxy Http:"}, - {"appletprops.label.network", "Acceso a la red:"}, + {"appletprops.label.http.server", "Servidor Proxy HTTP:"}, + {"appletprops.label.http.proxy", "Puerto Proxy HTTP:"}, + {"appletprops.label.network", "Acceso de Red:"}, {"appletprops.choice.network.item.none", "Ninguno"}, - {"appletprops.choice.network.item.applethost", "Sistema de subprogramas"}, - {"appletprops.choice.network.item.unrestricted", "Sin restricciones"}, - {"appletprops.label.class", "Acceso a clase:"}, + {"appletprops.choice.network.item.applethost", "Host del Applet"}, + {"appletprops.choice.network.item.unrestricted", "No Restringido"}, + {"appletprops.label.class", "Acceso de Clase:"}, {"appletprops.choice.class.item.restricted", "Restringido"}, - {"appletprops.choice.class.item.unrestricted", "Sin restricciones"}, - {"appletprops.label.unsignedapplet", "Permitir subprogramas sin firmar:"}, + {"appletprops.choice.class.item.unrestricted", "No Restringido"}, + {"appletprops.label.unsignedapplet", "Permitir Applets no Firmados:"}, {"appletprops.choice.unsignedapplet.no", "No"}, - {"appletprops.choice.unsignedapplet.yes", "S\u00ed"}, + {"appletprops.choice.unsignedapplet.yes", "S\u00ED"}, {"appletprops.button.apply", "Aplicar"}, {"appletprops.button.cancel", "Cancelar"}, {"appletprops.button.reset", "Restablecer"}, - {"appletprops.apply.exception", "Fallo al guardar propiedades: {0}"}, + {"appletprops.apply.exception", "Fallo al guardar las propiedades: {0}"}, /* 4066432 */ - {"appletprops.title.invalidproxy", "Entrada no v\u00e1lida"}, - {"appletprops.label.invalidproxy", "El puerto del delegado debe ser un entero positivo"}, + {"appletprops.title.invalidproxy", "Entrada no V\u00E1lida"}, + {"appletprops.label.invalidproxy", "El puerto proxy debe ser un valor entero positivo."}, {"appletprops.button.ok", "Aceptar"}, /* end 4066432 */ - {"appletprops.prop.store", "Propiedades del AppletViewer espec\u00edficos del usuario"}, - {"appletsecurityexception.checkcreateclassloader", "Excepci\u00f3n de seguridad: classloader"}, - {"appletsecurityexception.checkaccess.thread", "Excepci\u00f3n de seguridad: thread"}, - {"appletsecurityexception.checkaccess.threadgroup", "Excepci\u00f3n de seguridad: threadgroup: {0}"}, - {"appletsecurityexception.checkexit", "Excepci\u00f3n de seguridad: exit: {0}"}, - {"appletsecurityexception.checkexec", "Excepci\u00f3n de seguridad: exec: {0}"}, - {"appletsecurityexception.checklink", "Excepci\u00f3n de seguridad: link: {0}"}, - {"appletsecurityexception.checkpropsaccess", "Excepci\u00f3n de seguridad: properties"}, - {"appletsecurityexception.checkpropsaccess.key", "Excepci\u00f3n de seguridad: properties access {0}"}, - {"appletsecurityexception.checkread.exception1", "Excepci\u00f3n de seguridad: {0}, {1}"}, - {"appletsecurityexception.checkread.exception2", "Excepci\u00f3n de seguridad: file.read: {0}"}, - {"appletsecurityexception.checkread", "Excepci\u00f3n de seguridad: file.read: {0} == {1}"}, - {"appletsecurityexception.checkwrite.exception", "Excepci\u00f3n de seguridad: {0}, {1}"}, - {"appletsecurityexception.checkwrite", "Excepci\u00f3n de seguridad: file.write: {0} == {1}"}, - {"appletsecurityexception.checkread.fd", "Excepci\u00f3n de seguridad: fd.read"}, - {"appletsecurityexception.checkwrite.fd", "Excepci\u00f3n de seguridad: fd.write"}, - {"appletsecurityexception.checklisten", "Excepci\u00f3n de seguridad: socket.listen: {0}"}, - {"appletsecurityexception.checkaccept", "Excepci\u00f3n de seguridad: socket.accept: {0}:{1}"}, - {"appletsecurityexception.checkconnect.networknone", "Excepci\u00f3n de seguridad: socket.connect: {0}->{1}"}, - {"appletsecurityexception.checkconnect.networkhost1", "Excepci\u00f3n de seguridad: No se puede conectar a {0} con un origen de {1}."}, - {"appletsecurityexception.checkconnect.networkhost2", "Excepci\u00f3n de seguridad: No se puede resolver IP para el sistema {0} o para {1}. "}, - {"appletsecurityexception.checkconnect.networkhost3", "Excepci\u00f3n de seguridad: No se puede resolver IP para el sistema {0}. V\u00e9ase la propiedad trustProxy."}, - {"appletsecurityexception.checkconnect", "Excepci\u00f3n de seguridad: connect: {0}->{1}"}, - {"appletsecurityexception.checkpackageaccess", "Excepci\u00f3n de seguridad: no se puede acceder al paquete: {0}"}, - {"appletsecurityexception.checkpackagedefinition", "Excepci\u00f3n de seguridad: no se puede definir el paquete: {0}"}, - {"appletsecurityexception.cannotsetfactory", "Excepci\u00f3n de seguridad: no se puede definir factory"}, - {"appletsecurityexception.checkmemberaccess", "Excepci\u00f3n de seguridad: compruebe el acceso del miembro"}, - {"appletsecurityexception.checkgetprintjob", "Excepci\u00f3n de seguridad: getPrintJob"}, - {"appletsecurityexception.checksystemclipboardaccess", "Excepci\u00f3n de seguridad: getSystemClipboard"}, - {"appletsecurityexception.checkawteventqueueaccess", "Excepci\u00f3n de seguridad: getEventQueue"}, - {"appletsecurityexception.checksecurityaccess", "Excepci\u00f3n de seguridad: operaci\u00f3n de seguridad: {0}"}, - {"appletsecurityexception.getsecuritycontext.unknown", "Tipo de cargador de clase desconocido. No es posible comprobar getContext"}, - {"appletsecurityexception.checkread.unknown", "Tipo de cargador de clase desconocido. No es posible comprobar la verificaci\u00f3n de lectura {0}"}, - {"appletsecurityexception.checkconnect.unknown", "Tipo de cargador de clase desconocido. No es posible comprobar la verificaci\u00f3n de conexi\u00f3n"}, + {"appletprops.prop.store", "Propiedades espec\u00EDficas del usuario para AppletViewer"}, + {"appletsecurityexception.checkcreateclassloader", "Excepci\u00F3n de Seguridad: classloader"}, + {"appletsecurityexception.checkaccess.thread", "Excepci\u00F3n de Seguridad: thread"}, + {"appletsecurityexception.checkaccess.threadgroup", "Excepci\u00F3n de Seguridad: threadgroup: {0}"}, + {"appletsecurityexception.checkexit", "Excepci\u00F3n de Seguridad: salir: {0}"}, + {"appletsecurityexception.checkexec", "Excepci\u00F3n de Seguridad: ejecutar: {0}"}, + {"appletsecurityexception.checklink", "Excepci\u00F3n de Seguridad: enlace: {0}"}, + {"appletsecurityexception.checkpropsaccess", "Excepci\u00F3n de Seguridad: propiedades"}, + {"appletsecurityexception.checkpropsaccess.key", "Excepci\u00F3n de Seguridad: acceso a propiedades {0}"}, + {"appletsecurityexception.checkread.exception1", "Excepci\u00F3n de Seguridad: {0}, {1}"}, + {"appletsecurityexception.checkread.exception2", "Excepci\u00F3n de Seguridad: file.read: {0}"}, + {"appletsecurityexception.checkread", "Excepci\u00F3n de Seguridad: file.read: {0} == {1}"}, + {"appletsecurityexception.checkwrite.exception", "Excepci\u00F3n de Seguridad: {0}, {1}"}, + {"appletsecurityexception.checkwrite", "Excepci\u00F3n de Seguridad: file.write: {0} == {1}"}, + {"appletsecurityexception.checkread.fd", "Excepci\u00F3n de Seguridad: fd.read"}, + {"appletsecurityexception.checkwrite.fd", "Excepci\u00F3n de Seguridad: fd.write"}, + {"appletsecurityexception.checklisten", "Excepci\u00F3n de Seguridad: socket.listen: {0}"}, + {"appletsecurityexception.checkaccept", "Excepci\u00F3n de Seguridad: socket.accept: {0}:{1}"}, + {"appletsecurityexception.checkconnect.networknone", "Excepci\u00F3n de Seguridad: socket.connect: {0}->{1}"}, + {"appletsecurityexception.checkconnect.networkhost1", "Excepci\u00F3n de Seguridad: no se puede conectar a {0} con origen de {1}."}, + {"appletsecurityexception.checkconnect.networkhost2", "Excepci\u00F3n de Seguridad: no se puede resolver la IP para el host {0} o para {1}. "}, + {"appletsecurityexception.checkconnect.networkhost3", "Excepci\u00F3n de Seguridad: no se puede resolver la IP para el host {0}. Consulte la propiedad trustProxy."}, + {"appletsecurityexception.checkconnect", "Excepci\u00F3n de Seguridad: conexi\u00F3n: {0}->{1}"}, + {"appletsecurityexception.checkpackageaccess", "Excepci\u00F3n de Seguridad: no se puede acceder al paquete: {0}"}, + {"appletsecurityexception.checkpackagedefinition", "Excepci\u00F3n de Seguridad: no se puede definir el paquete: {0}"}, + {"appletsecurityexception.cannotsetfactory", "Excepci\u00F3n de Seguridad: no se puede definir el valor de f\u00E1brica"}, + {"appletsecurityexception.checkmemberaccess", "Excepci\u00F3n de Seguridad: comprobar el acceso de miembro"}, + {"appletsecurityexception.checkgetprintjob", "Excepci\u00F3n de Seguridad: getPrintJob"}, + {"appletsecurityexception.checksystemclipboardaccess", "Excepci\u00F3n de Seguridad: getSystemClipboard"}, + {"appletsecurityexception.checkawteventqueueaccess", "Excepci\u00F3n de Seguridad: getEventQueue"}, + {"appletsecurityexception.checksecurityaccess", "Excepci\u00F3n de Seguridad: operaci\u00F3n de seguridad: {0}"}, + {"appletsecurityexception.getsecuritycontext.unknown", "tipo de cargador de clase desconocido. no se puede comprobar para getContext"}, + {"appletsecurityexception.checkread.unknown", "tipo de cargador de clase desconocido. no se puede comprobar para lectura de comprobaci\u00F3n {0}"}, + {"appletsecurityexception.checkconnect.unknown", "tipo de cargador de clase desconocido. no se puede comprobar para conexi\u00F3n de comprobaci\u00F3n"}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_fr.java b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_fr.java index 333c79fcb0d..9de2badbf60 100644 --- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_fr.java +++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_fr.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -29,173 +29,175 @@ import java.util.ListResourceBundle; public class MsgAppletViewer_fr extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"textframe.button.dismiss", "Annuler"}, - {"appletviewer.tool.title", "AppletViewer : {0}"}, + Object[][] temp = new Object[][] { + {"textframe.button.dismiss", "Abandonner"}, + {"appletviewer.tool.title", "Visualiseur d''applets : {0}"}, {"appletviewer.menu.applet", "Applet"}, - {"appletviewer.menuitem.restart", "Red\u00e9marrer"}, + {"appletviewer.menuitem.restart", "Red\u00E9marrer"}, {"appletviewer.menuitem.reload", "Recharger"}, - {"appletviewer.menuitem.stop", "Arr\u00eater"}, + {"appletviewer.menuitem.stop", "Arr\u00EAter"}, {"appletviewer.menuitem.save", "Enregistrer..."}, - {"appletviewer.menuitem.start", "D\u00e9marrer"}, - {"appletviewer.menuitem.clone", "Dupliquer..."}, - {"appletviewer.menuitem.tag", "Marquer..."}, + {"appletviewer.menuitem.start", "D\u00E9marrer"}, + {"appletviewer.menuitem.clone", "Cloner..."}, + {"appletviewer.menuitem.tag", "Baliser..."}, {"appletviewer.menuitem.info", "Informations..."}, - {"appletviewer.menuitem.edit", "Editer"}, - {"appletviewer.menuitem.encoding", "Codage des caract\u00e8res"}, + {"appletviewer.menuitem.edit", "Modifier"}, + {"appletviewer.menuitem.encoding", "Encodage de caract\u00E8res"}, {"appletviewer.menuitem.print", "Imprimer..."}, - {"appletviewer.menuitem.props", "Propri\u00e9t\u00e9s..."}, + {"appletviewer.menuitem.props", "Propri\u00E9t\u00E9s..."}, {"appletviewer.menuitem.close", "Fermer"}, {"appletviewer.menuitem.quit", "Quitter"}, {"appletviewer.label.hello", "Bonjour..."}, - {"appletviewer.status.start", "d\u00e9marrage de l'applet"}, - {"appletviewer.appletsave.filedialogtitle","S\u00e9rialiser un applet en fichier"}, - {"appletviewer.appletsave.err1", "num\u00e9rotation d''un {0} vers {1}"}, + {"appletviewer.status.start", "d\u00E9marrage de l'applet..."}, + {"appletviewer.appletsave.filedialogtitle","S\u00E9rialiser l'applet dans le fichier"}, + {"appletviewer.appletsave.err1", "S\u00E9rialisation de {0} vers {1}"}, {"appletviewer.appletsave.err2", "dans appletSave : {0}"}, - {"appletviewer.applettag", "Etiquette affich\u00e9e"}, - {"appletviewer.applettag.textframe", "Etiquette HTML applet"}, - {"appletviewer.appletinfo.applet", "-- aucune information applet --"}, - {"appletviewer.appletinfo.param", "-- aucune information de param\u00e8tre --"}, - {"appletviewer.appletinfo.textframe", "Information applet"}, + {"appletviewer.applettag", "Balise affich\u00E9e"}, + {"appletviewer.applettag.textframe", "Balise HTML d'applet"}, + {"appletviewer.appletinfo.applet", "-- aucune information d'applet --"}, + {"appletviewer.appletinfo.param", "-- aucune information de param\u00E8tre --"}, + {"appletviewer.appletinfo.textframe", "Informations d'applet"}, {"appletviewer.appletprint.fail", "Echec de l'impression."}, - {"appletviewer.appletprint.finish", "Impression achev\u00e9e."}, - {"appletviewer.appletprint.cancel", "Impression annul\u00e9e."}, - {"appletviewer.appletencoding", "Codage de caract\u00e8re : {0}"}, - {"appletviewer.parse.warning.requiresname", "Avertissement : l'\u00e9tiquette n\u00e9cessite un attribut name."}, - {"appletviewer.parse.warning.paramoutside", "Avertissement : \u00e9tiquette en dehors de ... ."}, - {"appletviewer.parse.warning.applet.requirescode", "Avertissement : l'\u00e9tiquette exige un attribut de code."}, - {"appletviewer.parse.warning.applet.requiresheight", "Avertissement : l'\u00e9tiquette exige un attribut de hauteur."}, - {"appletviewer.parse.warning.applet.requireswidth", "Avertissement : l'\u00e9tiquette exige un attribut de largeur."}, - {"appletviewer.parse.warning.object.requirescode", "Avertissement : l'\u00e9tiquette exige un attribut de code."}, - {"appletviewer.parse.warning.object.requiresheight", "Avertissement : l'\u00e9tiquette exige un attribut de hauteur."}, - {"appletviewer.parse.warning.object.requireswidth", "Avertissement : l'\u00e9tiquette exige un attribut de largeur."}, - {"appletviewer.parse.warning.embed.requirescode", "Avertissement : l'\u00e9tiquette exige un attribut de code."}, - {"appletviewer.parse.warning.embed.requiresheight", "Avertissement : l'\u00e9tiquette exige un attribut de hauteur."}, - {"appletviewer.parse.warning.embed.requireswidth", "Avertissement : l'\u00e9tiquette exige un attribut de largeur."}, - {"appletviewer.parse.warning.appnotLongersupported", "Avertissement : l'\u00e9tiquette n'est plus prise en charge ; utilisez \u00e0 la place :"}, - {"appletviewer.usage", "Syntaxe : appletviewer url(s)\n\nO\u00f9 les sont :\n -debug Lancer le visualiseur d'applet dans le d\u00e9bogueur Java\n -encoding Sp\u00e9cifier le codage de caract\u00e8res utilis\u00e9 par les fichiers HTML\n -J Transmettre l'argument \u00e0 l'interpr\u00e9teur Java\n\nL'option -J n'est pas standard et peut \u00eatre modifi\u00e9e sans pr\u00e9avis."}, + {"appletviewer.appletprint.finish", "Impression termin\u00E9e."}, + {"appletviewer.appletprint.cancel", "Impression annul\u00E9e."}, + {"appletviewer.appletencoding", "Encodage de caract\u00E8res : {0}"}, + {"appletviewer.parse.warning.requiresname", "Avertissement : la balise requiert un attribut de nom."}, + {"appletviewer.parse.warning.paramoutside", "Avertissement : la balise est en dehors des balises ... ."}, + {"appletviewer.parse.warning.applet.requirescode", "Avertissement : la balise requiert un attribut de code."}, + {"appletviewer.parse.warning.applet.requiresheight", "Avertissement : la balise requiert un attribut de hauteur."}, + {"appletviewer.parse.warning.applet.requireswidth", "Avertissement : la balise requiert un attribut de largeur."}, + {"appletviewer.parse.warning.object.requirescode", "Avertissement : la balise requiert un attribut de code."}, + {"appletviewer.parse.warning.object.requiresheight", "Avertissement : la balise requiert un attribut de hauteur."}, + {"appletviewer.parse.warning.object.requireswidth", "Avertissement : la balise requiert un attribut de largeur."}, + {"appletviewer.parse.warning.embed.requirescode", "Avertissement : la balise requiert un attribut de code."}, + {"appletviewer.parse.warning.embed.requiresheight", "Avertissement : la balise requiert un attribut de hauteur."}, + {"appletviewer.parse.warning.embed.requireswidth", "Avertissement : la balise requiert un attribut de largeur."}, + {"appletviewer.parse.warning.appnotLongersupported", "Avertissement : la balise n'est plus prise en charge, utilisez \u00E0 la place :"}, + {"appletviewer.usage", "Syntaxe : appletviewer url(s)\n\no\u00F9 inclut :\n -debug D\u00E9marrer le visualiseur d'applets dans le d\u00E9bogueur Java\n -encoding Indiquer l'encodage de caract\u00E8res utilis\u00E9 par les fichiers HTML\n -J Transmettre l'argument \u00E0 l'interpr\u00E9teur Java\n\nL'option -J n'est pas standard et elle peut \u00EAtre modifi\u00E9e sans pr\u00E9avis."}, {"appletviewer.main.err.unsupportedopt", "Option non prise en charge : {0}"}, - {"appletviewer.main.err.unrecognizedarg", "Argument inconnu : {0}"}, - {"appletviewer.main.err.dupoption", "Option en double : {0}"}, - {"appletviewer.main.err.inputfile", "Aucun fichier d'entr\u00e9e n'a \u00e9t\u00e9 sp\u00e9cifi\u00e9."}, - {"appletviewer.main.err.badurl", "URL incorrect : {0} ( {1} )"}, - {"appletviewer.main.err.io", "Exception d''E/S pendant la lecture de {0}"}, - {"appletviewer.main.err.readablefile", "{0} doit \u00eatre un fichier accessible en lecture."}, - {"appletviewer.main.err.correcturl", "{0} est-il l''URL correct ?"}, - {"appletviewer.main.prop.store", "Propri\u00e9t\u00e9s AppletViewer propres \u00e0 l'utilisateur"}, - {"appletviewer.main.err.prop.cantread", "Echec de lecture du fichier de propri\u00e9t\u00e9s des utilisateurs : {0}"}, - {"appletviewer.main.err.prop.cantsave", "Echec de sauvegarde du fichier de propri\u00e9t\u00e9s des utilisateurs : {0}"}, - {"appletviewer.main.warn.nosecmgr", "Avertissement : d\u00e9sactivation de la s\u00e9curit\u00e9."}, - {"appletviewer.main.debug.cantfinddebug", "D\u00e9bogueur introuvable !"}, - {"appletviewer.main.debug.cantfindmain", "M\u00e9thode principale introuvable dans le d\u00e9bogueur !"}, - {"appletviewer.main.debug.exceptionindebug", "Exception dans le d\u00e9bogueur !"}, - {"appletviewer.main.debug.cantaccess", "D\u00e9bogueur inaccessible !"}, - {"appletviewer.main.nosecmgr", "Avertissement : SecurityManager n'est pas install\u00e9 !"}, - {"appletviewer.main.warning", "Avertissement : aucun applet n'a \u00e9t\u00e9 d\u00e9marr\u00e9. Assurez-vous que l'entr\u00e9e contient une \u00e9tiquette ."}, - {"appletviewer.main.warn.prop.overwrite", "Avertissement : remplacement temporaire de propri\u00e9t\u00e9 de syst\u00e8me \u00e0 la demande de l''utilisateur : cl\u00e9 : {0} ancienne valeur : {1} nouvelle valeur : {2}"}, - {"appletviewer.main.warn.cantreadprops", "Avertissement : \u00e9chec de lecture du fichier de propri\u00e9t\u00e9s AppletViewer : {0} Utilisation des valeurs par d\u00e9faut."}, + {"appletviewer.main.err.unrecognizedarg", "Argument non reconnu : {0}"}, + {"appletviewer.main.err.dupoption", "Utilisation en double de l''option : {0}"}, + {"appletviewer.main.err.inputfile", "Aucun fichier d'entr\u00E9e indiqu\u00E9."}, + {"appletviewer.main.err.badurl", "URL incorrecte : {0} ({1})"}, + {"appletviewer.main.err.io", "Exception d''E/S lors de la lecture : {0}"}, + {"appletviewer.main.err.readablefile", "Assurez-vous que {0} est un fichier accessible en lecture."}, + {"appletviewer.main.err.correcturl", "L''\u00E9l\u00E9ment {0} est-il l''URL correcte ?"}, + {"appletviewer.main.prop.store", "Propri\u00E9t\u00E9s utilisateur pour AppletViewer"}, + {"appletviewer.main.err.prop.cantread", "Impossible de lire le fichier de propri\u00E9t\u00E9s utilisateur : {0}"}, + {"appletviewer.main.err.prop.cantsave", "Impossible d''enregistrer le fichier de propri\u00E9t\u00E9s utilisateur : {0}"}, + {"appletviewer.main.warn.nosecmgr", "Avertissement : d\u00E9sactivation de la s\u00E9curit\u00E9."}, + {"appletviewer.main.debug.cantfinddebug", "D\u00E9bogueur introuvable."}, + {"appletviewer.main.debug.cantfindmain", "La m\u00E9thode principale est introuvable dans le d\u00E9bogueur."}, + {"appletviewer.main.debug.exceptionindebug", "Exception d\u00E9tect\u00E9e dans le d\u00E9bogueur."}, + {"appletviewer.main.debug.cantaccess", "Impossible d'acc\u00E9der au d\u00E9bogueur."}, + {"appletviewer.main.nosecmgr", "Avertissement : SecurityManager n'est pas install\u00E9."}, + {"appletviewer.main.warning", "Avertissement : aucune applet n'a \u00E9t\u00E9 d\u00E9marr\u00E9e. Assurez-vous que l'entr\u00E9e contient une balise ."}, + {"appletviewer.main.warn.prop.overwrite", "Avertissement : remplacement temporaire de la propri\u00E9t\u00E9 syst\u00E8me \u00E0 la demande de l''utilisateur - Cl\u00E9 : {0}, ancienne valeur : {1}, nouvelle valeur : {2}"}, + {"appletviewer.main.warn.cantreadprops", "Avertissement : impossible de lire le fichier de propri\u00E9t\u00E9s d''AppletViewer : {0} Utilisation des valeurs par d\u00E9faut."}, {"appletioexception.loadclass.throw.interrupted", "chargement de classe interrompu : {0}"}, - {"appletioexception.loadclass.throw.notloaded", "classe non charg\u00e9e : {0}"}, - {"appletclassloader.loadcode.verbose", "Ouverture d''un flux vers {0} pour obtenir {1}"}, - {"appletclassloader.filenotfound", "Fichier introuvable pendant la recherche de {0}"}, - {"appletclassloader.fileformat", "Exception de format de fichier pendant le chargement de {0}"}, - {"appletclassloader.fileioexception", "Exception d''E/S pendant le chargement de {0}"}, - {"appletclassloader.fileexception", "exception {0} pendant le chargement de : {1}"}, - {"appletclassloader.filedeath", "{0} \u00e9limin\u00e9 pendant le chargement de {1}"}, - {"appletclassloader.fileerror", "erreur {0} pendant le chargement de {1}"}, - {"appletclassloader.findclass.verbose.findclass", "{0} rechercher la classe {1}"}, - {"appletclassloader.findclass.verbose.openstream", "Ouverture d''un flux vers {0} pour obtenir {1}"}, - {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource pour le nom {0}"}, - {"appletclassloader.getresource.verbose.found", "Ressource {0} trouv\u00e9e en tant que ressource syst\u00e8me"}, - {"appletclassloader.getresourceasstream.verbose", "Ressource {0} trouv\u00e9e en tant que ressource syst\u00e8me"}, - {"appletpanel.runloader.err", "Param\u00e8tre d'objet ou de code !"}, - {"appletpanel.runloader.exception", "exception pendant la d\u00e9num\u00e9rotation de {0}"}, - {"appletpanel.destroyed", "Applet d\u00e9truit."}, - {"appletpanel.loaded", "Applet charg\u00e9."}, - {"appletpanel.started", "Applet d\u00e9marr\u00e9."}, - {"appletpanel.inited", "Applet initialis\u00e9."}, - {"appletpanel.stopped", "Applet arr\u00eat\u00e9."}, - {"appletpanel.disposed", "Applet jet\u00e9."}, - {"appletpanel.nocode", "Param\u00e8tre CODE manquant dans une \u00e9tiquette APPLET."}, - {"appletpanel.notfound", "charger : classe {0} introuvable."}, - {"appletpanel.nocreate", "charger : {0} ne peut pas \u00eatre instanci\u00e9."}, - {"appletpanel.noconstruct", "charger : {0} n''est pas public ou n''a pas de concepteur public."}, - {"appletpanel.death", "\u00e9limin\u00e9"}, + {"appletioexception.loadclass.throw.notloaded", "classe non charg\u00E9e : {0}"}, + {"appletclassloader.loadcode.verbose", "Ouverture du flux de donn\u00E9es dans {0} pour obtenir {1}"}, + {"appletclassloader.filenotfound", "Fichier introuvable lors de la recherche de {0}"}, + {"appletclassloader.fileformat", "Exception de format de fichier d\u00E9tect\u00E9e lors du chargement de : {0}"}, + {"appletclassloader.fileioexception", "Exception d''E/S lors du chargement de : {0}"}, + {"appletclassloader.fileexception", "Exception {0} lors du chargement de : {1}"}, + {"appletclassloader.filedeath", "Fermeture de {0} lors du chargement de : {1}"}, + {"appletclassloader.fileerror", "Erreur {0} lors du chargement de : {1}"}, + {"appletclassloader.findclass.verbose.findclass", "{0} : recherche de la classe {1}"}, + {"appletclassloader.findclass.verbose.openstream", "Ouverture du flux de donn\u00E9es dans {0} pour obtenir {1}"}, + {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource pour le nom : {0}"}, + {"appletclassloader.getresource.verbose.found", "Ressource {0} trouv\u00E9e en tant que ressource syst\u00E8me"}, + {"appletclassloader.getresourceasstream.verbose", "Ressource {0} trouv\u00E9e en tant que ressource syst\u00E8me"}, + {"appletpanel.runloader.err", "Param\u00E8tre d'objet ou de code."}, + {"appletpanel.runloader.exception", "exception lors de la d\u00E9s\u00E9rialisation de {0}"}, + {"appletpanel.destroyed", "Applet d\u00E9truite."}, + {"appletpanel.loaded", "Applet charg\u00E9e."}, + {"appletpanel.started", "Applet d\u00E9marr\u00E9e."}, + {"appletpanel.inited", "Applet initialis\u00E9e."}, + {"appletpanel.stopped", "Applet arr\u00EAt\u00E9e."}, + {"appletpanel.disposed", "Applet \u00E9limin\u00E9e."}, + {"appletpanel.nocode", "Param\u00E8tre CODE manquant dans la balise APPLET."}, + {"appletpanel.notfound", "Charger : la classe {0} est introuvable."}, + {"appletpanel.nocreate", "Charger : impossible d''instantier {0}."}, + {"appletpanel.noconstruct", "Charger : l''\u00E9l\u00E9ment {0} n''est pas public ou ne poss\u00E8de aucun constructeur public."}, + {"appletpanel.death", "arr\u00EAt\u00E9"}, {"appletpanel.exception", "exception : {0}."}, {"appletpanel.exception2", "exception : {0} : {1}."}, {"appletpanel.error", "erreur : {0}."}, {"appletpanel.error2", "erreur : {0} : {1}."}, - {"appletpanel.notloaded", "Initialiser : applet non charg\u00e9."}, - {"appletpanel.notinited", "D\u00e9marrer : applet non initialis\u00e9."}, - {"appletpanel.notstarted", "Arr\u00eater : applet non d\u00e9marr\u00e9."}, - {"appletpanel.notstopped", "D\u00e9truire : applet non arr\u00eat\u00e9."}, - {"appletpanel.notdestroyed", "Jeter : applet non d\u00e9truit."}, - {"appletpanel.notdisposed", "Charger : applet non jet\u00e9."}, - {"appletpanel.bail", "Interrompu : fin de bail."}, - {"appletpanel.filenotfound", "Fichier introuvable pendant la recherche de {0}"}, - {"appletpanel.fileformat", "Exception de format de fichier pendant le chargement de {0}"}, - {"appletpanel.fileioexception", "Exception d''E/S pendant le chargement de {0}"}, - {"appletpanel.fileexception", "exception {0} pendant le chargement de : {1}"}, - {"appletpanel.filedeath", "{0} \u00e9limin\u00e9 pendant le chargement de {1}"}, - {"appletpanel.fileerror", "erreur {0} pendant le chargement de {1}"}, - {"appletpanel.badattribute.exception", "Analyse HTML\u00a0: valeur incorrecte pour l'attribut de largeur/hauteur"}, - {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream n\u00e9cessite un chargeur 'non null'"}, - {"appletprops.title", "Propri\u00e9t\u00e9s de AppletViewer"}, - {"appletprops.label.http.server", "Serveur proxy http :"}, - {"appletprops.label.http.proxy", "Port proxy http :"}, - {"appletprops.label.network", "Acc\u00e8s r\u00e9seau :"}, + {"appletpanel.notloaded", "Initialiser : applet non charg\u00E9e."}, + {"appletpanel.notinited", "D\u00E9marrer : applet non initialis\u00E9e."}, + {"appletpanel.notstarted", "Arr\u00EAter : applet non d\u00E9marr\u00E9e."}, + {"appletpanel.notstopped", "D\u00E9truire : applet non arr\u00EAt\u00E9e."}, + {"appletpanel.notdestroyed", "Eliminer : applet non d\u00E9truite."}, + {"appletpanel.notdisposed", "Charger : applet non \u00E9limin\u00E9e."}, + {"appletpanel.bail", "Interrompu : r\u00E9solution."}, + {"appletpanel.filenotfound", "Fichier introuvable lors de la recherche de {0}"}, + {"appletpanel.fileformat", "Exception de format de fichier d\u00E9tect\u00E9e lors du chargement de : {0}"}, + {"appletpanel.fileioexception", "Exception d''E/S lors du chargement de : {0}"}, + {"appletpanel.fileexception", "Exception {0} lors du chargement de : {1}"}, + {"appletpanel.filedeath", "Fermeture de {0} lors du chargement de : {1}"}, + {"appletpanel.fileerror", "Erreur {0} lors du chargement de : {1}"}, + {"appletpanel.badattribute.exception", "Analyse HTML : valeur incorrecte pour l'attribut de largeur/hauteur"}, + {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream requiert un chargeur non NULL"}, + {"appletprops.title", "Propri\u00E9t\u00E9s d'AppletViewer"}, + {"appletprops.label.http.server", "Serveur proxy HTTP :"}, + {"appletprops.label.http.proxy", "Port proxy HTTP :"}, + {"appletprops.label.network", "Acc\u00E8s au r\u00E9seau :"}, {"appletprops.choice.network.item.none", "Aucun"}, - {"appletprops.choice.network.item.applethost", "H\u00f4te applet"}, - {"appletprops.choice.network.item.unrestricted", "Illimit\u00e9"}, - {"appletprops.label.class", "Acc\u00e8s \u00e0 la classe :"}, - {"appletprops.choice.class.item.restricted", "Limit\u00e9"}, - {"appletprops.choice.class.item.unrestricted", "Illimit\u00e9"}, - {"appletprops.label.unsignedapplet", "Autoriser les applets non sign\u00e9s"}, + {"appletprops.choice.network.item.applethost", "H\u00F4te de l'applet"}, + {"appletprops.choice.network.item.unrestricted", "Sans restriction"}, + {"appletprops.label.class", "Acc\u00E8s \u00E0 la classe :"}, + {"appletprops.choice.class.item.restricted", "Avec restriction"}, + {"appletprops.choice.class.item.unrestricted", "Sans restriction"}, + {"appletprops.label.unsignedapplet", "Autoriser les applets non sign\u00E9es :"}, {"appletprops.choice.unsignedapplet.no", "Non"}, {"appletprops.choice.unsignedapplet.yes", "Oui"}, {"appletprops.button.apply", "Appliquer"}, {"appletprops.button.cancel", "Annuler"}, - {"appletprops.button.reset", "Restaurer"}, - {"appletprops.apply.exception", "Echec de l''enregistrement des propri\u00e9t\u00e9s : {0}"}, + {"appletprops.button.reset", "R\u00E9initialiser"}, + {"appletprops.apply.exception", "Echec de l''enregistrement des propri\u00E9t\u00E9s : {0}"}, /* 4066432 */ - {"appletprops.title.invalidproxy", "Entr\u00e9e non valide"}, - {"appletprops.label.invalidproxy", "Le num\u00e9ro de port du proxy doit \u00eatre un entier positif."}, + {"appletprops.title.invalidproxy", "Entr\u00E9e non valide"}, + {"appletprops.label.invalidproxy", "Le port proxy doit \u00EAtre un entier positif."}, {"appletprops.button.ok", "OK"}, /* end 4066432 */ - {"appletprops.prop.store", "Propri\u00e9t\u00e9s AppletViewer propres \u00e0 l'utilisateur"}, - {"appletsecurityexception.checkcreateclassloader", "Exception de s\u00e9curit\u00e9 : chargeur de classes"}, - {"appletsecurityexception.checkaccess.thread", "Exception de s\u00e9curit\u00e9 : unit\u00e9 d'ex\u00e9cution"}, - {"appletsecurityexception.checkaccess.threadgroup", "Exception de s\u00e9curit\u00e9 : groupe d''unit\u00e9s d''ex\u00e9cution : {0}"}, - {"appletsecurityexception.checkexit", "Exception de s\u00e9curit\u00e9 : exit : {0}"}, - {"appletsecurityexception.checkexec", "Exception de s\u00e9curit\u00e9 : exec : {0}"}, - {"appletsecurityexception.checklink", "Exception de s\u00e9curit\u00e9 : link : {0}"}, - {"appletsecurityexception.checkpropsaccess", "Exception de s\u00e9curit\u00e9 : propri\u00e9t\u00e9s"}, - {"appletsecurityexception.checkpropsaccess.key", "Exception de s\u00e9curit\u00e9 : acc\u00e8s aux propri\u00e9t\u00e9s {0}"}, - {"appletsecurityexception.checkread.exception1", "Exception de s\u00e9curit\u00e9 : {0}, {1}"}, - {"appletsecurityexception.checkread.exception2", "Exception de s\u00e9curit\u00e9 : file.read : {0}"}, - {"appletsecurityexception.checkread", "Exception de s\u00e9curit\u00e9 : file.read : {0} == {1}"}, - {"appletsecurityexception.checkwrite.exception", "Exception de s\u00e9curit\u00e9 : {0}, {1}"}, - {"appletsecurityexception.checkwrite", "Exception de s\u00e9curit\u00e9 : file.write : {0} == {1}"}, - {"appletsecurityexception.checkread.fd", "Exception de s\u00e9curit\u00e9 : fd.read"}, - {"appletsecurityexception.checkwrite.fd", "Exception de s\u00e9curit\u00e9 : fd.write"}, - {"appletsecurityexception.checklisten", "Exception de s\u00e9curit\u00e9 : socket.listen : {0}"}, - {"appletsecurityexception.checkaccept", "Exception de s\u00e9curit\u00e9 : socket.accept : {0}:{1}"}, - {"appletsecurityexception.checkconnect.networknone", "Exception de s\u00e9curit\u00e9 : socket.connect : {0}->{1}"}, - {"appletsecurityexception.checkconnect.networkhost1", "Exception de s\u00e9curit\u00e9 : \u00e9chec de la connexion \u00e0 {0} avec une origine de {1}."}, - {"appletsecurityexception.checkconnect.networkhost2", "Exception de s\u00e9curit\u00e9 : impossible de r\u00e9soudre l''adresse IP pour l''h\u00f4te {0} ou pour {1}. "}, - {"appletsecurityexception.checkconnect.networkhost3", "Exception de s\u00e9curit\u00e9 : impossible de r\u00e9soudre l''adresse IP pour l''h\u00f4te {0}. Voir la propri\u00e9t\u00e9 trustProxy."}, - {"appletsecurityexception.checkconnect", "Exception de s\u00e9curit\u00e9 : connect : {0}->{1}"}, - {"appletsecurityexception.checkpackageaccess", "Exception de s\u00e9curit\u00e9 : impossible d''acc\u00e9der au module : {0}"}, - {"appletsecurityexception.checkpackagedefinition", "Exception de s\u00e9curit\u00e9 : impossible de d\u00e9finir le module : {0}"}, - {"appletsecurityexception.cannotsetfactory", "Exception de s\u00e9curit\u00e9 : impossible de d\u00e9finir les param\u00e8tres d'usine"}, - {"appletsecurityexception.checkmemberaccess", "Exception de s\u00e9curit\u00e9 : v\u00e9rifier l'acc\u00e8s des membres"}, - {"appletsecurityexception.checkgetprintjob", "Exception de s\u00e9curit\u00e9 : getPrintJob"}, - {"appletsecurityexception.checksystemclipboardaccess", "Exception de s\u00e9curit\u00e9 : getSystemClipboard"}, - {"appletsecurityexception.checkawteventqueueaccess", "Exception de s\u00e9curit\u00e9 : getEventQueue"}, - {"appletsecurityexception.checksecurityaccess", "Exception de s\u00e9curit\u00e9 : op\u00e9ration de s\u00e9curit\u00e9 : {0}"}, - {"appletsecurityexception.getsecuritycontext.unknown", "type de chargeur de classe inconnu ; impossible de v\u00e9rifier getContext"}, - {"appletsecurityexception.checkread.unknown", "type de chargeur de classe inconnu ; impossible de v\u00e9rifier la lecture de contr\u00f4le {0}"}, - {"appletsecurityexception.checkconnect.unknown", "type de chargeur de classe inconnu ; impossible de v\u00e9rifier la connexion de contr\u00f4le {0}"}, + {"appletprops.prop.store", "Propri\u00E9t\u00E9s utilisateur pour AppletViewer"}, + {"appletsecurityexception.checkcreateclassloader", "Exception de s\u00E9curit\u00E9 : chargeur de classe"}, + {"appletsecurityexception.checkaccess.thread", "Exception de s\u00E9curit\u00E9 : thread"}, + {"appletsecurityexception.checkaccess.threadgroup", "Exception de s\u00E9curit\u00E9 : groupe de threads : {0}"}, + {"appletsecurityexception.checkexit", "Exception de s\u00E9curit\u00E9 : sortie : {0}"}, + {"appletsecurityexception.checkexec", "Exception de s\u00E9curit\u00E9 : ex\u00E9cution : {0}"}, + {"appletsecurityexception.checklink", "Exception de s\u00E9curit\u00E9 : lien : {0}"}, + {"appletsecurityexception.checkpropsaccess", "Exception de s\u00E9curit\u00E9 : propri\u00E9t\u00E9s"}, + {"appletsecurityexception.checkpropsaccess.key", "Exception de s\u00E9curit\u00E9 : acc\u00E8s aux propri\u00E9t\u00E9s {0}"}, + {"appletsecurityexception.checkread.exception1", "Exception de s\u00E9curit\u00E9 : {0}, {1}"}, + {"appletsecurityexception.checkread.exception2", "Exception de s\u00E9curit\u00E9 : file.read : {0}"}, + {"appletsecurityexception.checkread", "Exception de s\u00E9curit\u00E9 : file.read : {0} == {1}"}, + {"appletsecurityexception.checkwrite.exception", "Exception de s\u00E9curit\u00E9 : {0}, {1}"}, + {"appletsecurityexception.checkwrite", "Exception de s\u00E9curit\u00E9 : file.write : {0} == {1}"}, + {"appletsecurityexception.checkread.fd", "Exception de s\u00E9curit\u00E9 : fd.read"}, + {"appletsecurityexception.checkwrite.fd", "Exception de s\u00E9curit\u00E9 : fd.write"}, + {"appletsecurityexception.checklisten", "Exception de s\u00E9curit\u00E9 : socket.listen : {0}"}, + {"appletsecurityexception.checkaccept", "Exception de s\u00E9curit\u00E9 : socket.accept : {0} : {1}"}, + {"appletsecurityexception.checkconnect.networknone", "Exception de s\u00E9curit\u00E9 : socket.connect : {0} -> {1}"}, + {"appletsecurityexception.checkconnect.networkhost1", "Exception de s\u00E9curit\u00E9 : impossible de se connecter \u00E0 {0} dont l''origine est {1}."}, + {"appletsecurityexception.checkconnect.networkhost2", "Exception de s\u00E9curit\u00E9 : impossible de r\u00E9soudre l''adresse IP pour l''h\u00F4te {0} ou pour {1}. "}, + {"appletsecurityexception.checkconnect.networkhost3", "Exception de s\u00E9curit\u00E9 : impossible de r\u00E9soudre l''adresse IP pour l''h\u00F4te {0}. Voir la propri\u00E9t\u00E9 trustProxy."}, + {"appletsecurityexception.checkconnect", "Exception de s\u00E9curit\u00E9 : connexion : {0} -> {1}"}, + {"appletsecurityexception.checkpackageaccess", "Exception de s\u00E9curit\u00E9 : impossible d''acc\u00E9der au package : {0}"}, + {"appletsecurityexception.checkpackagedefinition", "Exception de s\u00E9curit\u00E9 : impossible de d\u00E9finir le package : {0}"}, + {"appletsecurityexception.cannotsetfactory", "Exception de s\u00E9curit\u00E9 : impossible de d\u00E9finir la fabrique"}, + {"appletsecurityexception.checkmemberaccess", "Exception de s\u00E9curit\u00E9 : v\u00E9rifier l'acc\u00E8s des membres"}, + {"appletsecurityexception.checkgetprintjob", "Exception de s\u00E9curit\u00E9 : getPrintJob"}, + {"appletsecurityexception.checksystemclipboardaccess", "Exception de s\u00E9curit\u00E9 : getSystemClipboard"}, + {"appletsecurityexception.checkawteventqueueaccess", "Exception de s\u00E9curit\u00E9 : getEventQueue"}, + {"appletsecurityexception.checksecurityaccess", "Exception de s\u00E9curit\u00E9 : op\u00E9ration de s\u00E9curit\u00E9 : {0}"}, + {"appletsecurityexception.getsecuritycontext.unknown", "type de chargeur de classe inconnu, impossible de rechercher getContext"}, + {"appletsecurityexception.checkread.unknown", "type de chargeur de classe inconnu, impossible de rechercher la v\u00E9rification de lecture {0}"}, + {"appletsecurityexception.checkconnect.unknown", "type de chargeur de classe inconnu, impossible de rechercher la v\u00E9rification de connexion"}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_it.java b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_it.java index c57fedb21d4..5f3bd073da4 100644 --- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_it.java +++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_it.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -29,173 +29,175 @@ import java.util.ListResourceBundle; public class MsgAppletViewer_it extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"textframe.button.dismiss", "Annulla"}, + Object[][] temp = new Object[][] { + {"textframe.button.dismiss", "Chiudi"}, {"appletviewer.tool.title", "Visualizzatore applet: {0}"}, {"appletviewer.menu.applet", "Applet"}, {"appletviewer.menuitem.restart", "Riavvia"}, {"appletviewer.menuitem.reload", "Ricarica"}, {"appletviewer.menuitem.stop", "Arresta"}, {"appletviewer.menuitem.save", "Salva..."}, - {"appletviewer.menuitem.start", "Avvio"}, - {"appletviewer.menuitem.clone", "Clona..."}, + {"appletviewer.menuitem.start", "Avvia"}, + {"appletviewer.menuitem.clone", "Copia..."}, {"appletviewer.menuitem.tag", "Tag..."}, {"appletviewer.menuitem.info", "Informazioni..."}, {"appletviewer.menuitem.edit", "Modifica"}, {"appletviewer.menuitem.encoding", "Codifica caratteri"}, {"appletviewer.menuitem.print", "Stampa..."}, - {"appletviewer.menuitem.props", "Propriet\u00e0..."}, + {"appletviewer.menuitem.props", "Propriet\u00E0..."}, {"appletviewer.menuitem.close", "Chiudi"}, {"appletviewer.menuitem.quit", "Esci"}, - {"appletviewer.label.hello", "Ciao..."}, - {"appletviewer.status.start", "avvio dell'applet in corso..."}, + {"appletviewer.label.hello", "Benvenuti..."}, + {"appletviewer.status.start", "avvio applet in corso..."}, {"appletviewer.appletsave.filedialogtitle","Serializza applet in file"}, {"appletviewer.appletsave.err1", "serializzazione di {0} in {1}"}, {"appletviewer.appletsave.err2", "in appletSave: {0}"}, - {"appletviewer.applettag", "Mostra tag"}, - {"appletviewer.applettag.textframe", "Tag HTML dell'applet"}, + {"appletviewer.applettag", "Tag visualizzata"}, + {"appletviewer.applettag.textframe", "Applet tag HTML"}, {"appletviewer.appletinfo.applet", "-- nessuna informazione sull'applet --"}, {"appletviewer.appletinfo.param", "-- nessuna informazione sul parametro --"}, - {"appletviewer.appletinfo.textframe", "Informazioni sull'applet"}, + {"appletviewer.appletinfo.textframe", "Informazioni applet"}, {"appletviewer.appletprint.fail", "Stampa non riuscita."}, - {"appletviewer.appletprint.finish", "Operazione di stampa completata."}, + {"appletviewer.appletprint.finish", "Stampa completata."}, {"appletviewer.appletprint.cancel", "Stampa annullata."}, {"appletviewer.appletencoding", "Codifica caratteri: {0}"}, - {"appletviewer.parse.warning.requiresname", "Avviso: il tag richiede un attributo per il nome."}, - {"appletviewer.parse.warning.paramoutside", "Avviso: il tag non \u00e8 racchiuso tra ... ."}, - {"appletviewer.parse.warning.applet.requirescode", "Avviso: il tag richiede un attributo di codice"}, - {"appletviewer.parse.warning.applet.requiresheight", "Avviso: il tag richiede un attributo di altezza"}, - {"appletviewer.parse.warning.applet.requireswidth", "Avviso: il tag richiede un attributo di larghezza"}, - {"appletviewer.parse.warning.object.requirescode", "Avviso: il tag richiede un attributo di codice"}, - {"appletviewer.parse.warning.object.requiresheight", "Avviso: il tag richiede un attributo di altezza"}, - {"appletviewer.parse.warning.object.requireswidth", "Avviso: il tag richiede un attributo di larghezza"}, - {"appletviewer.parse.warning.embed.requirescode", "Avviso: il tag richiede un attributo di codice"}, - {"appletviewer.parse.warning.embed.requiresheight", "Avviso: il tag richiede un attributo di altezza"}, - {"appletviewer.parse.warning.embed.requireswidth", "Avviso: il tag richiede un attributo di larghezza"}, - {"appletviewer.parse.warning.appnotLongersupported", "Avviso: il tag non \u00e8 pi\u00f9 supportato, usare al suo posto:"}, - {"appletviewer.usage", "Utilizzo: appletviewer url\n\ndove includono i valori:\n -debug Avvia l'applet viewer nel debugger Java\n -encoding Specifica la codifica dei caratteri utilizzata dai file HTML\n -J Passa l'argomento all'interprete java\n\nL'opzione -J \u00e8 non standard ed \u00e8 soggetta a cambiamenti senza preavviso."}, + {"appletviewer.parse.warning.requiresname", "Avvertenza: la tag richiede un attributo name."}, + {"appletviewer.parse.warning.paramoutside", "Avvertenza: la tag non rientra in ... ."}, + {"appletviewer.parse.warning.applet.requirescode", "Avvertenza: la tag richiede un attributo code."}, + {"appletviewer.parse.warning.applet.requiresheight", "Avvertenza: la tag richiede un attributo height."}, + {"appletviewer.parse.warning.applet.requireswidth", "Avvertenza: la tag richiede un attributo width."}, + {"appletviewer.parse.warning.object.requirescode", "Avvertenza: la tag richiede un attributo code."}, + {"appletviewer.parse.warning.object.requiresheight", "Avvertenza: la tag richiede un attributo height."}, + {"appletviewer.parse.warning.object.requireswidth", "Avvertenza: la tag richiede un attributo width."}, + {"appletviewer.parse.warning.embed.requirescode", "Avvertenza: la tag richiede un attributo code."}, + {"appletviewer.parse.warning.embed.requiresheight", "Avvertenza: la tag richiede un attributo height."}, + {"appletviewer.parse.warning.embed.requireswidth", "Avvertenza: la tag richiede un attributo width."}, + {"appletviewer.parse.warning.appnotLongersupported", "Avvertenza: la tag non \u00E8 pi\u00F9 supportata. Utilizzare :"}, + {"appletviewer.usage", "Uso: appletviewer url(s)\n\ndove includono:\n -debug Avvia il visualizzatore applet nel debugger Java\n -encoding Specifica la codifica dei caratteri utilizzata dai file HTML\n -J Passa l'argomento all'interpreter Java\n\nL'opzione -J non \u00E8 standard ed \u00E8 soggetta a modifica senza preavviso."}, {"appletviewer.main.err.unsupportedopt", "Opzione non supportata: {0}"}, - {"appletviewer.main.err.unrecognizedarg", "Argomento non riconosciuto {0}"}, - {"appletviewer.main.err.dupoption", "Uso duplice dell''opzione: {0}"}, + {"appletviewer.main.err.unrecognizedarg", "Argomento non riconosciuto: {0}"}, + {"appletviewer.main.err.dupoption", "Uso duplicato dell''opzione: {0}"}, {"appletviewer.main.err.inputfile", "Nessun file di input specificato."}, - {"appletviewer.main.err.badurl", "URL errato: {0} ( {1} )"}, - {"appletviewer.main.err.io", "Eccezione di I/O durante la lettura: {0}"}, - {"appletviewer.main.err.readablefile", "Verificare che {0} sia un file leggibile."}, - {"appletviewer.main.err.correcturl", "Verificare che {0} sia l''URL corretto"}, - {"appletviewer.main.prop.store", "Propriet\u00e0 specifiche dell'utente per AppletViewer"}, - {"appletviewer.main.err.prop.cantread", "Impossibile leggere il file di propriet\u00e0 dell''utente: {0}"}, - {"appletviewer.main.err.prop.cantsave", "Impossibile salvare il file di propriet\u00e0 dell''utente: {0}"}, - {"appletviewer.main.warn.nosecmgr", "Avviso: Disabilitazione sicurezza in corso."}, - {"appletviewer.main.debug.cantfinddebug", "Impossibile trovare il debugger!"}, - {"appletviewer.main.debug.cantfindmain", "Impossibile trovare il metodo principale del debugger"}, - {"appletviewer.main.debug.exceptionindebug", "Eccezione nel debugger"}, - {"appletviewer.main.debug.cantaccess", "Impossibile accedere al debugger"}, - {"appletviewer.main.nosecmgr", "Avviso: SecurityManager non installato!"}, - {"appletviewer.main.warning", "Avviso: nessun applet avviato. Verificare che i dati inseriti contengano un tag ."}, - {"appletviewer.main.warn.prop.overwrite", "Avviso: si sta temporaneamente sovrascrivendo le propriet\u00e0 del sistema come richiesto dell''utente: tasto: {0} valore precedente: {1} nuovo valore: {2}"}, - {"appletviewer.main.warn.cantreadprops", "Avviso: Impossibile leggere il file di propriet\u00e0 di AppletViewer: {0} verranno utilizzati i valori di default."}, + {"appletviewer.main.err.badurl", "URL non valido: {0} ( {1} )"}, + {"appletviewer.main.err.io", "Eccezione I/O durante la lettura di {0}"}, + {"appletviewer.main.err.readablefile", "Assicurarsi che {0} sia un file e che sia leggibile."}, + {"appletviewer.main.err.correcturl", "{0} \u00E8 l''URL corretto?"}, + {"appletviewer.main.prop.store", "Propriet\u00E0 specifiche dell'utente per AppletViewer"}, + {"appletviewer.main.err.prop.cantread", "Impossibile leggere il file delle propriet\u00E0 utente: {0}"}, + {"appletviewer.main.err.prop.cantsave", "Impossibile salvare il file delle propriet\u00E0 utente: {0}"}, + {"appletviewer.main.warn.nosecmgr", "Avvertenza: la sicurezza verr\u00E0 disabilitata."}, + {"appletviewer.main.debug.cantfinddebug", "Impossibile trovare il debugger."}, + {"appletviewer.main.debug.cantfindmain", "Impossibile trovare il metodo principale nel debugger."}, + {"appletviewer.main.debug.exceptionindebug", "Eccezione nel debugger."}, + {"appletviewer.main.debug.cantaccess", "Impossibile accedere al debugger."}, + {"appletviewer.main.nosecmgr", "Avvertenza: SecurityManager non installato."}, + {"appletviewer.main.warning", "Avvertenza: nessuna applet avviata. Assicurarsi che l'input contenga una tag ."}, + {"appletviewer.main.warn.prop.overwrite", "Avvertenza: la propriet\u00E0 di sistema verr\u00E0 sovrascritta temporaneamente su richiesta dell''utente. Chiave {0}, valore precedente {1}, nuovo valore {2}."}, + {"appletviewer.main.warn.cantreadprops", "Avvertenza: impossibile leggere il file delle propriet\u00E0 AppletViewer {0}. Verranno utilizzate le impostazioni predefinite."}, {"appletioexception.loadclass.throw.interrupted", "caricamento della classe interrotto: {0}"}, {"appletioexception.loadclass.throw.notloaded", "classe non caricata: {0}"}, - {"appletclassloader.loadcode.verbose", "Apertura del flusso su: {0} per ottenere {1}"}, - {"appletclassloader.filenotfound", "File non trovato durante la ricerca di: {0}"}, - {"appletclassloader.fileformat", "Eccezione del formato di file durante il caricamento: {0}"}, - {"appletclassloader.fileioexception", "Eccezione di I/O durante il caricamento: {0}"}, - {"appletclassloader.fileexception", "Eccezione di {0} durante il caricamento: {1}"}, - {"appletclassloader.filedeath", "{0} terminato durante il caricamento di: {1}"}, - {"appletclassloader.fileerror", "Errore di {0} durante il caricamento: {1}"}, - {"appletclassloader.findclass.verbose.findclass", "{0} individuazione classe {1}"}, - {"appletclassloader.findclass.verbose.openstream", "Apertura del flusso su: {0} per ottenere {1}"}, + {"appletclassloader.loadcode.verbose", "Apertura del flusso per {0} per recuperare {1}"}, + {"appletclassloader.filenotfound", "File non trovato durante la ricerca di {0}"}, + {"appletclassloader.fileformat", "Eccezione di formato file durante il caricamento di {0}"}, + {"appletclassloader.fileioexception", "Eccezione I/O durante il caricamento di {0}"}, + {"appletclassloader.fileexception", "Eccezione {0} durante il caricamento di {1}"}, + {"appletclassloader.filedeath", "{0} terminato durante il caricamento di {1}"}, + {"appletclassloader.fileerror", "Errore {0} durante il caricamento di {1}"}, + {"appletclassloader.findclass.verbose.findclass", "{0} trova classe {1}"}, + {"appletclassloader.findclass.verbose.openstream", "Apertura del flusso per {0} per recuperare {1}"}, {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource per il nome: {0}"}, - {"appletclassloader.getresource.verbose.found", "Risorsa {0} individuata come risorsa di sistema"}, - {"appletclassloader.getresourceasstream.verbose", "Risorsa {0} individuata come risorsa di sistema"}, - {"appletpanel.runloader.err", "Specificare un parametro per l'oggetto o per il codice"}, - {"appletpanel.runloader.exception", "eccezione durante la deserializzazione {0}"}, - {"appletpanel.destroyed", "Applet distrutto."}, - {"appletpanel.loaded", "Applet caricato."}, - {"appletpanel.started", "Applet avviato."}, - {"appletpanel.inited", "Applet inizializzato."}, - {"appletpanel.stopped", "Applet interrotto."}, - {"appletpanel.disposed", "Applet eliminato."}, - {"appletpanel.nocode", "Tag APPLET mancante dal parametro CODE."}, + {"appletclassloader.getresource.verbose.found", "\u00C8 stata trovata la risorsa {0} come risorsa di sistema"}, + {"appletclassloader.getresourceasstream.verbose", "\u00C8 stata trovata la risorsa {0} come risorsa di sistema"}, + {"appletpanel.runloader.err", "Parametro di oggetto o di codice."}, + {"appletpanel.runloader.exception", "eccezione durante la deserializzazione di {0}"}, + {"appletpanel.destroyed", "Applet rimossa."}, + {"appletpanel.loaded", "Applet caricata."}, + {"appletpanel.started", "Applet avviata."}, + {"appletpanel.inited", "Applet inizializzata."}, + {"appletpanel.stopped", "Applet arrestata."}, + {"appletpanel.disposed", "Applet eliminata."}, + {"appletpanel.nocode", "Nella tag APPLET manca il parametro CODE."}, {"appletpanel.notfound", "caricamento: classe {0} non trovata."}, - {"appletpanel.nocreate", "caricamento: impossibile definire istanze per {0}."}, - {"appletpanel.noconstruct", "caricamento: {0} non \u00e8 pubblico o non \u00e8 associato a un costruttore pubblico."}, + {"appletpanel.nocreate", "caricamento: impossibile creare un''istanza di {0}."}, + {"appletpanel.noconstruct", "caricamento: {0} non \u00E8 pubblico o non ha un costruttore pubblico."}, {"appletpanel.death", "terminato"}, - {"appletpanel.exception", "eccezione: {0}."}, + {"appletpanel.exception", "eccezione: {0}"}, {"appletpanel.exception2", "eccezione: {0}: {1}."}, {"appletpanel.error", "errore: {0}."}, {"appletpanel.error2", "errore: {0}: {1}."}, - {"appletpanel.notloaded", "Inizializzazione: applet non caricato."}, - {"appletpanel.notinited", "Avvio: applet non inizializzato."}, - {"appletpanel.notstarted", "Arresto: applet non avviato."}, - {"appletpanel.notstopped", "Distruzione: applet non arrestato."}, - {"appletpanel.notdestroyed", "Eliminazione: applet non distrutto."}, - {"appletpanel.notdisposed", "Caricamento: applet non eliminato."}, - {"appletpanel.bail", "Interruzione: uscita in corso."}, - {"appletpanel.filenotfound", "File non trovato durante la ricerca di: {0}"}, - {"appletpanel.fileformat", "Eccezione del formato di file durante il caricamento: {0}"}, - {"appletpanel.fileioexception", "Eccezione di I/O durante il caricamento: {0}"}, - {"appletpanel.fileexception", "Eccezione di {0} durante il caricamento: {1}"}, - {"appletpanel.filedeath", "{0} terminato durante il caricamento di: {1}"}, - {"appletpanel.fileerror", "Errore di {0} durante il caricamento: {1}"}, - {"appletpanel.badattribute.exception", "Analisi HTML: valore specificato per l'attributo larghezza/altezza non corretto"}, - {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream richiede una funzione di caricamento non nulla"}, - {"appletprops.title", "Propriet\u00e0 di AppletViewer"}, - {"appletprops.label.http.server", "Server proxy Http:"}, - {"appletprops.label.http.proxy", "Porta proxy Http:"}, + {"appletpanel.notloaded", "Inizializzazione: applet non caricata."}, + {"appletpanel.notinited", "Avvio: applet non inizializzata."}, + {"appletpanel.notstarted", "Arresto: applet non avviata."}, + {"appletpanel.notstopped", "Rimozione: applet non arrestata."}, + {"appletpanel.notdestroyed", "Eliminazione: applet non rimossa."}, + {"appletpanel.notdisposed", "Caricamento: applet non eliminata."}, + {"appletpanel.bail", "Interrotto: chiusura."}, + {"appletpanel.filenotfound", "File non trovato durante la ricerca di {0}"}, + {"appletpanel.fileformat", "Eccezione di formato file durante il caricamento di {0}"}, + {"appletpanel.fileioexception", "Eccezione I/O durante il caricamento di {0}"}, + {"appletpanel.fileexception", "Eccezione {0} durante il caricamento di {1}"}, + {"appletpanel.filedeath", "{0} terminato durante il caricamento di {1}"}, + {"appletpanel.fileerror", "Errore {0} durante il caricamento di {1}"}, + {"appletpanel.badattribute.exception", "Analisi HTML: valore errato per l'attributo width/height"}, + {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream richiede un loader non nullo"}, + {"appletprops.title", "Propriet\u00E0 AppletViewer"}, + {"appletprops.label.http.server", "Server proxy http:"}, + {"appletprops.label.http.proxy", "Porta proxy http:"}, {"appletprops.label.network", "Accesso alla rete:"}, {"appletprops.choice.network.item.none", "Nessuno"}, {"appletprops.choice.network.item.applethost", "Host applet"}, - {"appletprops.choice.network.item.unrestricted", "Illimitato"}, - {"appletprops.label.class", "Accesso alle classi:"}, + {"appletprops.choice.network.item.unrestricted", "Non limitato"}, + {"appletprops.label.class", "Accesso alla classe:"}, {"appletprops.choice.class.item.restricted", "Limitato"}, - {"appletprops.choice.class.item.unrestricted", "Illimitato"}, - {"appletprops.label.unsignedapplet", "Consenti applet non firmati:"}, + {"appletprops.choice.class.item.unrestricted", "Non limitato"}, + {"appletprops.label.unsignedapplet", "Consenti applet senza firma:"}, {"appletprops.choice.unsignedapplet.no", "No"}, - {"appletprops.choice.unsignedapplet.yes", "S\u00ec"}, + {"appletprops.choice.unsignedapplet.yes", "S\u00EC"}, {"appletprops.button.apply", "Applica"}, {"appletprops.button.cancel", "Annulla"}, {"appletprops.button.reset", "Reimposta"}, - {"appletprops.apply.exception", "Salvataggio delle propriet\u00e0 non riuscito: {0}"}, + {"appletprops.apply.exception", "Salvataggio delle propriet\u00E0 non riuscito: {0}"}, /* 4066432 */ {"appletprops.title.invalidproxy", "Voce non valida"}, - {"appletprops.label.invalidproxy", "La porta Proxy deve essere un valore intero positivo"}, + {"appletprops.label.invalidproxy", "La porta del proxy deve essere un valore intero positivo."}, {"appletprops.button.ok", "OK"}, /* end 4066432 */ - {"appletprops.prop.store", "Propriet\u00e0 specifiche dell'utente per AppletViewer"}, - {"appletsecurityexception.checkcreateclassloader", "Eccezione di protezione: classloader"}, - {"appletsecurityexception.checkaccess.thread", "Eccezione di protezione: thread"}, - {"appletsecurityexception.checkaccess.threadgroup", "Eccezione di protezione: threadgroup: {0}"}, - {"appletsecurityexception.checkexit", "Eccezione di protezione: exit: {0}"}, - {"appletsecurityexception.checkexec", "Eccezione di protezione: exec: {0}"}, - {"appletsecurityexception.checklink", "Eccezione di protezione: link: {0}"}, - {"appletsecurityexception.checkpropsaccess", "Eccezione di protezione: properties"}, - {"appletsecurityexception.checkpropsaccess.key", "Eccezione di protezione: properties access {0}"}, - {"appletsecurityexception.checkread.exception1", "Eccezione di protezione: {0}, {1}"}, - {"appletsecurityexception.checkread.exception2", "Eccezione di protezione: file.read: {0}"}, - {"appletsecurityexception.checkread", "Eccezione di protezione: file.read: {0} == {1}"}, - {"appletsecurityexception.checkwrite.exception", "Eccezione di protezione: {0}, {1}"}, - {"appletsecurityexception.checkwrite", "Eccezione di protezione: file.write: {0} == {1}"}, - {"appletsecurityexception.checkread.fd", "Eccezione di protezione: fd.read"}, - {"appletsecurityexception.checkwrite.fd", "Eccezione di protezione: fd.write"}, - {"appletsecurityexception.checklisten", "Eccezione di protezione: socket.listen: {0}"}, - {"appletsecurityexception.checkaccept", "Eccezione di protezione: socket.accept: {0}:{1}"}, - {"appletsecurityexception.checkconnect.networknone", "Eccezione di protezione: socket.connect: {0}->{1}"}, - {"appletsecurityexception.checkconnect.networkhost1", "Eccezione di protezione: impossibile connettersi a {0} con origine {1}."}, - {"appletsecurityexception.checkconnect.networkhost2", "Eccezione di protezione: impossibile risolvere l''indirizzo IP per l''host {0} o per {1}. "}, - {"appletsecurityexception.checkconnect.networkhost3", "Eccezione di protezione: impossibile risolvere l''indirizzo IP per l''host {0}. Vedere la propriet\u00e0 trustProxy."}, - {"appletsecurityexception.checkconnect", "Eccezione di protezione: connessione: {0}->{1}"}, - {"appletsecurityexception.checkpackageaccess", "Eccezione di protezione: impossibile accedere al package: {0}"}, - {"appletsecurityexception.checkpackagedefinition", "Eccezione di protezione: impossibile definire il package: {0}"}, - {"appletsecurityexception.cannotsetfactory", "Eccezione di protezione: impossibile impostare i valori predefiniti"}, - {"appletsecurityexception.checkmemberaccess", "Eccezione di protezione: controllare l'accesso del membro"}, - {"appletsecurityexception.checkgetprintjob", "Eccezione di protezione: getPrintJob"}, - {"appletsecurityexception.checksystemclipboardaccess", "Eccezione di protezione: getSystemClipboard"}, - {"appletsecurityexception.checkawteventqueueaccess", "Eccezione di protezione: getEventQueue"}, - {"appletsecurityexception.checksecurityaccess", "Eccezione di protezione: operazione di protezione: {0}"}, - {"appletsecurityexception.getsecuritycontext.unknown", "tipo di funzione di caricamento della classe sconosciuto, impossibile verificare la presenza di getContext"}, - {"appletsecurityexception.checkread.unknown", "tipo di funzione di caricamento della classe sconosciuto, impossibile verificare la lettura di {0}"}, - {"appletsecurityexception.checkconnect.unknown", "tipo di funzione di caricamento della classe sconosciuto, impossibile verificare la connessione"}, + {"appletprops.prop.store", "Propriet\u00E0 specifiche dell'utente per AppletViewer"}, + {"appletsecurityexception.checkcreateclassloader", "Eccezione di sicurezza: classloader"}, + {"appletsecurityexception.checkaccess.thread", "Eccezione di sicurezza: thread"}, + {"appletsecurityexception.checkaccess.threadgroup", "Eccezione di sicurezza: threadgroup: {0}"}, + {"appletsecurityexception.checkexit", "Eccezione di sicurezza: exit: {0}"}, + {"appletsecurityexception.checkexec", "Eccezione di sicurezza: exec: {0}"}, + {"appletsecurityexception.checklink", "Eccezione di sicurezza: link: {0}"}, + {"appletsecurityexception.checkpropsaccess", "Eccezione di sicurezza: properties"}, + {"appletsecurityexception.checkpropsaccess.key", "Eccezione di sicurezza: properties access {0}"}, + {"appletsecurityexception.checkread.exception1", "Eccezione di sicurezza: {0}, {1}"}, + {"appletsecurityexception.checkread.exception2", "Eccezione di sicurezza: file.read: {0}"}, + {"appletsecurityexception.checkread", "Eccezione di sicurezza: file.read: {0} == {1}"}, + {"appletsecurityexception.checkwrite.exception", "Eccezione di sicurezza: {0}, {1}"}, + {"appletsecurityexception.checkwrite", "Eccezione di sicurezza: file.write: {0} == {1}"}, + {"appletsecurityexception.checkread.fd", "Eccezione di sicurezza: fd.read"}, + {"appletsecurityexception.checkwrite.fd", "Eccezione di sicurezza: fd.write"}, + {"appletsecurityexception.checklisten", "Eccezione di sicurezza: socket.listen: {0}"}, + {"appletsecurityexception.checkaccept", "Eccezione di sicurezza: socket.accept: {0}:{1}"}, + {"appletsecurityexception.checkconnect.networknone", "Eccezione di sicurezza: socket.connect: {0}->{1}"}, + {"appletsecurityexception.checkconnect.networkhost1", "Eccezione di sicurezza: impossibile connettersi a {0} con origine da {1}."}, + {"appletsecurityexception.checkconnect.networkhost2", "Eccezione di sicurezza: impossibile risolvere l''IP per l''host {0} o per {1}. "}, + {"appletsecurityexception.checkconnect.networkhost3", "Eccezione di sicurezza: impossibile non risolvere l''IP per l''host {0}. Vedere la propriet\u00E0 trustProxy."}, + {"appletsecurityexception.checkconnect", "Eccezione di sicurezza: connect: {0}->{1}"}, + {"appletsecurityexception.checkpackageaccess", "Eccezione di sicurezza: impossibile accedere al package {0}"}, + {"appletsecurityexception.checkpackagedefinition", "Eccezione di sicurezza: impossibile definire il package {0}"}, + {"appletsecurityexception.cannotsetfactory", "Eccezione di sicurezza: impossibile impostare il factory"}, + {"appletsecurityexception.checkmemberaccess", "Eccezione di sicurezza: controllare l'accesso dei membri"}, + {"appletsecurityexception.checkgetprintjob", "Eccezione di sicurezza: getPrintJob"}, + {"appletsecurityexception.checksystemclipboardaccess", "Eccezione di sicurezza: getSystemClipboard"}, + {"appletsecurityexception.checkawteventqueueaccess", "Eccezione di sicurezza: getEventQueue"}, + {"appletsecurityexception.checksecurityaccess", "Eccezione di sicurezza: operazione di sicurezza {0}"}, + {"appletsecurityexception.getsecuritycontext.unknown", "tipo di loader della classe sconosciuto. Impossibile verificare la presenza di getContext."}, + {"appletsecurityexception.checkread.unknown", "tipo di loader della classe sconosciuto. Impossibile verificare la presenza della lettura di controllo {0}."}, + {"appletsecurityexception.checkconnect.unknown", "tipo di loader della classe sconosciuto. Impossibile verificare la presenza della connessione di controllo."}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ja.java b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ja.java index ca7440ebfe5..610eb04f9fc 100644 --- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ja.java +++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ja.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -29,173 +29,175 @@ import java.util.ListResourceBundle; public class MsgAppletViewer_ja extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"textframe.button.dismiss", "\u9589\u3058\u308b"}, - {"appletviewer.tool.title", "\u30a2\u30d7\u30ec\u30c3\u30c8\u30d3\u30e5\u30fc\u30a2: {0}"}, - {"appletviewer.menu.applet", "\u30a2\u30d7\u30ec\u30c3\u30c8"}, - {"appletviewer.menuitem.restart", "\u518d\u8d77\u52d5"}, - {"appletviewer.menuitem.reload", "\u518d\u8aad\u8fbc\u307f"}, - {"appletviewer.menuitem.stop", "\u4e2d\u6b62"}, - {"appletviewer.menuitem.save", "\u4fdd\u5b58..."}, - {"appletviewer.menuitem.start", "\u958b\u59cb"}, - {"appletviewer.menuitem.clone", "\u8907\u88fd..."}, - {"appletviewer.menuitem.tag", "\u30bf\u30b0..."}, - {"appletviewer.menuitem.info", "\u60c5\u5831..."}, - {"appletviewer.menuitem.edit", "\u7de8\u96c6"}, - {"appletviewer.menuitem.encoding", "\u6587\u5b57\u30b3\u30fc\u30c9"}, + Object[][] temp = new Object[][] { + {"textframe.button.dismiss", "\u53D6\u6D88"}, + {"appletviewer.tool.title", "\u30A2\u30D7\u30EC\u30C3\u30C8\u30FB\u30D3\u30E5\u30FC\u30A2: {0}"}, + {"appletviewer.menu.applet", "\u30A2\u30D7\u30EC\u30C3\u30C8"}, + {"appletviewer.menuitem.restart", "\u518D\u8D77\u52D5"}, + {"appletviewer.menuitem.reload", "\u518D\u30ED\u30FC\u30C9"}, + {"appletviewer.menuitem.stop", "\u505C\u6B62"}, + {"appletviewer.menuitem.save", "\u4FDD\u5B58..."}, + {"appletviewer.menuitem.start", "\u958B\u59CB"}, + {"appletviewer.menuitem.clone", "\u30AF\u30ED\u30FC\u30F3\u306E\u4F5C\u6210..."}, + {"appletviewer.menuitem.tag", "\u30BF\u30B0..."}, + {"appletviewer.menuitem.info", "\u60C5\u5831..."}, + {"appletviewer.menuitem.edit", "\u7DE8\u96C6"}, + {"appletviewer.menuitem.encoding", "\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0"}, {"appletviewer.menuitem.print", "\u5370\u5237..."}, - {"appletviewer.menuitem.props", "\u30d7\u30ed\u30d1\u30c6\u30a3..."}, - {"appletviewer.menuitem.close", "\u9589\u3058\u308b"}, - {"appletviewer.menuitem.quit", "\u7d42\u4e86"}, + {"appletviewer.menuitem.props", "\u30D7\u30ED\u30D1\u30C6\u30A3..."}, + {"appletviewer.menuitem.close", "\u9589\u3058\u308B"}, + {"appletviewer.menuitem.quit", "\u7D42\u4E86"}, {"appletviewer.label.hello", "Hello..."}, - {"appletviewer.status.start", "\u30a2\u30d7\u30ec\u30c3\u30c8\u3092\u958b\u59cb\u3057\u307e\u3059\u3002"}, - {"appletviewer.appletsave.filedialogtitle","\u30a2\u30d7\u30ec\u30c3\u30c8\u3092\u76f4\u5217\u5316\u3057\u3066\u4fdd\u5b58"}, - {"appletviewer.appletsave.err1", "{0} \u3092 {1} \u306b\u76f4\u5217\u5316\u3057\u3066\u66f8\u304d\u8fbc\u307f\u307e\u3059\u3002"}, - {"appletviewer.appletsave.err2", "\u30a2\u30d7\u30ec\u30c3\u30c8\u4fdd\u5b58: {0}"}, - {"appletviewer.applettag", "\u30bf\u30b0\u8868\u793a"}, - {"appletviewer.applettag.textframe", "\u30a2\u30d7\u30ec\u30c3\u30c8\u306e HTML \u30bf\u30b0"}, - {"appletviewer.appletinfo.applet", "-- \u30a2\u30d7\u30ec\u30c3\u30c8\u60c5\u5831\u306a\u3057 --"}, - {"appletviewer.appletinfo.param", "-- \u30d1\u30e9\u30e1\u30fc\u30bf\u60c5\u5831\u306a\u3057 --"}, - {"appletviewer.appletinfo.textframe", "\u30a2\u30d7\u30ec\u30c3\u30c8\u60c5\u5831"}, - {"appletviewer.appletprint.fail", "\u5370\u5237\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"}, - {"appletviewer.appletprint.finish", "\u5370\u5237\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002"}, - {"appletviewer.appletprint.cancel", "\u5370\u5237\u306f\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"appletviewer.appletencoding", "\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0: {0}"}, - {"appletviewer.parse.warning.requiresname", "\u8b66\u544a: \u30bf\u30b0\u306b name \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.parse.warning.paramoutside", "\u8b66\u544a: \u30bf\u30b0\u304c ... \u306e\u5916\u306b\u3042\u308a\u307e\u3059\u3002"}, - {"appletviewer.parse.warning.applet.requirescode", "\u8b66\u544a: \u30bf\u30b0\u306b code \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.parse.warning.applet.requiresheight", "\u8b66\u544a: \u30bf\u30b0\u306b height \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.parse.warning.applet.requireswidth", "\u8b66\u544a: \u30bf\u30b0\u306b width \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.parse.warning.object.requirescode", "\u8b66\u544a: \u30bf\u30b0\u306b code \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.parse.warning.object.requiresheight", "\u8b66\u544a: \u30bf\u30b0\u306b height \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.parse.warning.object.requireswidth", "\u8b66\u544a: \u30bf\u30b0\u306b width \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.parse.warning.embed.requirescode", "\u8b66\u544a: \u30bf\u30b0\u306b code \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.parse.warning.embed.requiresheight", "\u8b66\u544a: \u30bf\u30b0\u306b height \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.parse.warning.embed.requireswidth", "\u8b66\u544a: \u30bf\u30b0\u306b width \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.parse.warning.appnotLongersupported", "\u8b66\u544a: \u30bf\u30b0\u306f\u73fe\u5728\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"appletviewer.usage", "\u4f7f\u3044\u65b9: appletviewer url(s)\n\n \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n -debug Java \u30c7\u30d0\u30c3\u30ac\u3067\u30a2\u30d7\u30ec\u30c3\u30c8\u30d3\u30e5\u30fc\u30a2\u3092\u8d77\u52d5\u3059\u308b\n -encoding HTML \u30d5\u30a1\u30a4\u30eb\u3067\u4f7f\u7528\u3055\u308c\u308b\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6307\u5b9a\u3059\u308b\n -J java \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306b\u5f15\u6570\u3092\u6e21\u3059\n\n-J \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u6a19\u6e96\u3067\u306f\u306a\u304f\u3001\u4e88\u544a\u306a\u3057\u306b\u5909\u66f4\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002"}, - {"appletviewer.main.err.unsupportedopt", "\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30aa\u30d7\u30b7\u30e7\u30f3: {0}"}, - {"appletviewer.main.err.unrecognizedarg", "\u8a8d\u8b58\u3055\u308c\u306a\u3044\u5f15\u6570: {0}"}, - {"appletviewer.main.err.dupoption", "\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u91cd\u8907\u3057\u3066\u4f7f\u7528: {0}"}, - {"appletviewer.main.err.inputfile", "\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"appletviewer.main.err.badurl", "\u4e0d\u6b63\u306a URL: {0} ( {1} )"}, - {"appletviewer.main.err.io", "{0} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u5165\u51fa\u529b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletviewer.main.err.readablefile", " {0} \u304c\u30d5\u30a1\u30a4\u30eb\u3067\u304b\u3064\u8aad\u307f\u8fbc\u307f\u53ef\u80fd\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"appletviewer.main.err.correcturl", " {0} \u306f\u6b63\u3057\u3044 URL \u3067\u3059\u304b?"}, - {"appletviewer.main.prop.store", "AppletViewer \u306e\u30e6\u30fc\u30b6\u56fa\u6709\u30d7\u30ed\u30d1\u30c6\u30a3"}, - {"appletviewer.main.err.prop.cantread", "\u30e6\u30fc\u30b6\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u305b\u3093: {0}"}, - {"appletviewer.main.err.prop.cantsave", "\u30e6\u30fc\u30b6\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093: {0}"}, - {"appletviewer.main.warn.nosecmgr", "\u8b66\u544a: \u30c7\u30d0\u30c3\u30ac\u3067\u306e\u73fe\u5728\u306e\u5236\u9650\u306b\u3088\u308a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059\u3002"}, - {"appletviewer.main.debug.cantfinddebug", "\u30c7\u30d0\u30c3\u30ac\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.main.debug.cantfindmain", "\u30c7\u30d0\u30c3\u30ac\u3067 main \u30e1\u30bd\u30c3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"}, - {"appletviewer.main.debug.exceptionindebug", "\u30c7\u30d0\u30c3\u30ac\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletviewer.main.debug.cantaccess", "\u30c7\u30d0\u30c3\u30ac\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"appletviewer.main.nosecmgr", "\u8b66\u544a: SecurityManager \u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"appletviewer.main.warning", "\u8b66\u544a: \u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u8d77\u52d5\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u5165\u529b\u306b \u30bf\u30b0\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"appletviewer.main.warn.prop.overwrite", "\u8b66\u544a: \u30e6\u30fc\u30b6\u306e\u8981\u6c42\u306b\u3088\u308a\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4e00\u6642\u7684\u306b\u4e0a\u66f8\u304d\u3057\u3066\u3044\u307e\u3059: \u30ad\u30fc: {0} \u53e4\u3044\u5024: {1} \u65b0\u3057\u3044\u5024: {2}"}, - {"appletviewer.main.warn.cantreadprops", "\u8b66\u544a: AppletViewer \u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u305b\u3093: {0} \u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002"}, - {"appletioexception.loadclass.throw.interrupted", "\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f: {0}"}, - {"appletioexception.loadclass.throw.notloaded", "\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u305b\u3093: {0}"}, - {"appletclassloader.loadcode.verbose", "{1} \u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30b9\u30c8\u30ea\u30fc\u30e0 {0} \u3092\u30aa\u30fc\u30d7\u30f3\u3067\u304d\u307e\u305b\u3093"}, - {"appletclassloader.filenotfound", "\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"}, - {"appletclassloader.fileformat", "{0} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletclassloader.fileioexception", "{0} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u5165\u51fa\u529b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletclassloader.fileexception", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u306e\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletclassloader.filedeath", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u304c\u5f37\u5236\u7d42\u4e86\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"appletclassloader.fileerror", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletclassloader.findclass.verbose.findclass", "\u30af\u30e9\u30b9 {1} \u3092\u898b\u3064\u3051\u308b {0}}"}, - {"appletclassloader.findclass.verbose.openstream", "{1} \u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30b9\u30c8\u30ea\u30fc\u30e0 {0} \u3092\u30aa\u30fc\u30d7\u30f3\u3067\u304d\u307e\u305b\u3093"}, - {"appletclassloader.getresource.verbose.forname", "\u540d\u524d\u7528\u306e AppletClassLoader.getResource: {0}"}, - {"appletclassloader.getresource.verbose.found", "\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f: \u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u3068\u3057\u3066\u306e {0}"}, - {"appletclassloader.getresourceasstream.verbose", "\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f: \u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u3068\u3057\u3066\u306e {0}"}, - {"appletpanel.runloader.err", "object \u304b code \u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u3069\u3061\u3089\u304b\u304c\u5fc5\u8981\u3067\u3059\uff01"}, - {"appletpanel.runloader.exception", "{0} \u3092\u518d\u69cb\u6210\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletpanel.destroyed", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u6301\u3064\u30ea\u30bd\u30fc\u30b9\u3092\u89e3\u653e\u3057\u307e\u3057\u305f\u3002"}, - {"appletpanel.loaded", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3057\u305f\u3002"}, - {"appletpanel.started", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u958b\u59cb\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"appletpanel.inited", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u521d\u671f\u5316\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"appletpanel.stopped", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002"}, - {"appletpanel.disposed", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u7834\u68c4\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"appletpanel.nocode", "APLLET \u30bf\u30b0\u306b CODE \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"appletpanel.notfound", "load: \u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"}, - {"appletpanel.nocreate", "load: {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"appletpanel.noconstruct", "load: {0} \u306f public \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3042\u308b\u3044\u306f public \u306a\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u6301\u3063\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"appletpanel.death", "\u5f37\u5236\u7d42\u4e86\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"appletpanel.exception", "\u4f8b\u5916: {0}."}, - {"appletpanel.exception2", "\u4f8b\u5916: {0}: {1}."}, - {"appletpanel.error", "\u30a8\u30e9\u30fc: {0}."}, - {"appletpanel.error2", "\u30a8\u30e9\u30fc: {0}: {1}."}, - {"appletpanel.notloaded", "Init: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u8aad\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"appletpanel.notinited", "Start: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"appletpanel.notstarted", "Stop: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u958b\u59cb\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"appletpanel.notstopped", "Destroy: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u505c\u6b62\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"appletpanel.notdestroyed", "Dispose: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u7834\u68c4\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"appletpanel.notdisposed", "Load: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u7834\u68c4\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"appletpanel.bail", "\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"appletpanel.filenotfound", "\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"}, - {"appletpanel.fileformat", "{0} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletpanel.fileioexception", "{0} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u5165\u51fa\u529b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletpanel.fileexception", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u306e\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletpanel.filedeath", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u304c\u5f37\u5236\u7d42\u4e86\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"appletpanel.fileerror", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}, - {"appletpanel.badattribute.exception", "HTML \u69cb\u6587\u89e3\u6790: width/height \u5c5e\u6027\u306e\u5024\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093"}, - {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream \u306b\u306f null \u3067\u306a\u3044\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u304c\u5fc5\u8981\u3067\u3059\u3002"}, - {"appletprops.title", "\u30a2\u30d7\u30ec\u30c3\u30c8\u30d3\u30e5\u30fc\u30a2\u306e\u30d7\u30ed\u30d1\u30c6\u30a3"}, - {"appletprops.label.http.server", "Http \u30d7\u30ed\u30ad\u30b7\u30b5\u30fc\u30d0:"}, - {"appletprops.label.http.proxy", "Http \u30d7\u30ed\u30ad\u30b7\u306e\u30dd\u30fc\u30c8:"}, - {"appletprops.label.network", "\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a2\u30af\u30bb\u30b9:"}, - {"appletprops.choice.network.item.none", "\u306a\u3057"}, - {"appletprops.choice.network.item.applethost", "\u30a2\u30d7\u30ec\u30c3\u30c8\u30db\u30b9\u30c8\u306e\u307f"}, - {"appletprops.choice.network.item.unrestricted", "\u5236\u9650\u306a\u3057"}, - {"appletprops.label.class", "\u30af\u30e9\u30b9\u30a2\u30af\u30bb\u30b9:"}, - {"appletprops.choice.class.item.restricted", "\u5236\u9650\u3042\u308a"}, - {"appletprops.choice.class.item.unrestricted", "\u5236\u9650\u306a\u3057"}, - {"appletprops.label.unsignedapplet", "\u7f72\u540d\u306e\u306a\u3044\u30a2\u30d7\u30ec\u30c3\u30c8\u3092\u8a31\u53ef\u3057\u307e\u3059\u304b:"}, + {"appletviewer.status.start", "\u30A2\u30D7\u30EC\u30C3\u30C8\u3092\u958B\u59CB\u3057\u3066\u3044\u307E\u3059..."}, + {"appletviewer.appletsave.filedialogtitle","\u30A2\u30D7\u30EC\u30C3\u30C8\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u30B7\u30EA\u30A2\u30E9\u30A4\u30BA"}, + {"appletviewer.appletsave.err1", "{0}\u3092{1}\u306B\u30B7\u30EA\u30A2\u30E9\u30A4\u30BA"}, + {"appletviewer.appletsave.err2", "appletSave\u5185: {0}"}, + {"appletviewer.applettag", "\u30BF\u30B0\u306E\u8868\u793A"}, + {"appletviewer.applettag.textframe", "\u30A2\u30D7\u30EC\u30C3\u30C8HTML\u30BF\u30B0"}, + {"appletviewer.appletinfo.applet", "-- \u30A2\u30D7\u30EC\u30C3\u30C8\u60C5\u5831\u306A\u3057 --"}, + {"appletviewer.appletinfo.param", "-- \u30D1\u30E9\u30E1\u30FC\u30BF\u60C5\u5831\u306A\u3057 --"}, + {"appletviewer.appletinfo.textframe", "\u30A2\u30D7\u30EC\u30C3\u30C8\u60C5\u5831"}, + {"appletviewer.appletprint.fail", "\u5370\u5237\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"}, + {"appletviewer.appletprint.finish", "\u5370\u5237\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\u3002"}, + {"appletviewer.appletprint.cancel", "\u5370\u5237\u304C\u4E2D\u6B62\u3055\u308C\u307E\u3057\u305F\u3002"}, + {"appletviewer.appletencoding", "\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0: {0}"}, + {"appletviewer.parse.warning.requiresname", "\u8B66\u544A: \u30BF\u30B0\u306Bname\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.paramoutside", "\u8B66\u544A: \u30BF\u30B0\u304C ... \u306E\u5916\u5074\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.applet.requirescode", "\u8B66\u544A: \u30BF\u30B0\u306Bcode\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.applet.requiresheight", "\u8B66\u544A: \u30BF\u30B0\u306Bheight\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.applet.requireswidth", "\u8B66\u544A: \u30BF\u30B0\u306Bwidth\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.object.requirescode", "\u8B66\u544A: \u30BF\u30B0\u306Bcode\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.object.requiresheight", "\u8B66\u544A: \u30BF\u30B0\u306Bheight\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.object.requireswidth", "\u8B66\u544A: \u30BF\u30B0\u306Bwidth\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.embed.requirescode", "\u8B66\u544A: \u30BF\u30B0\u306Bcode\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.embed.requiresheight", "\u8B66\u544A: \u30BF\u30B0\u306Bheight\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.embed.requireswidth", "\u8B66\u544A: \u30BF\u30B0\u306Bwidth\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"appletviewer.parse.warning.appnotLongersupported", "\u8B66\u544A: \u30BF\u30B0\u306F\u73FE\u5728\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u304B\u308F\u308A\u306B\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"appletviewer.usage", "\u4F7F\u7528\u65B9\u6CD5: appletviewer url(s)\n\n\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059:\n -debug Java\u30C7\u30D0\u30C3\u30AC\u3067\u30A2\u30D7\u30EC\u30C3\u30C8\u30FB\u30D3\u30E5\u30FC\u30A2\u3092\u958B\u59CB\u3059\u308B\n -encoding HTML\u30D5\u30A1\u30A4\u30EB\u306B\u3088\u3063\u3066\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3059\u308B\n -J \u5F15\u6570\u3092Java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u6E21\u3059\n\n-J\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u3001\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002"}, + {"appletviewer.main.err.unsupportedopt", "\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"}, + {"appletviewer.main.err.unrecognizedarg", "\u8A8D\u8B58\u3055\u308C\u306A\u3044\u5F15\u6570: {0}"}, + {"appletviewer.main.err.dupoption", "\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4F7F\u7528\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}"}, + {"appletviewer.main.err.inputfile", "\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"appletviewer.main.err.badurl", "\u4E0D\u6B63\u306AURL: {0} ( {1} )"}, + {"appletviewer.main.err.io", "\u8AAD\u8FBC\u307F\u4E2D\u306E\u5165\u51FA\u529B\u4F8B\u5916\u3067\u3059: {0}"}, + {"appletviewer.main.err.readablefile", "{0}\u304C\u30D5\u30A1\u30A4\u30EB\u3067\u3042\u308A\u3001\u8AAD\u8FBC\u307F\u53EF\u80FD\u3067\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"appletviewer.main.err.correcturl", "{0}\u306F\u6B63\u3057\u3044URL\u3067\u3059\u304B\u3002"}, + {"appletviewer.main.prop.store", "AppletViewer\u7528\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F\u30D7\u30ED\u30D1\u30C6\u30A3"}, + {"appletviewer.main.err.prop.cantread", "\u30E6\u30FC\u30B6\u30FC\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093: {0}"}, + {"appletviewer.main.err.prop.cantsave", "\u30E6\u30FC\u30B6\u30FC\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093: {0}"}, + {"appletviewer.main.warn.nosecmgr", "\u8B66\u544A: \u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3092\u7121\u52B9\u5316\u3057\u307E\u3059\u3002"}, + {"appletviewer.main.debug.cantfinddebug", "\u30C7\u30D0\u30C3\u30AC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002"}, + {"appletviewer.main.debug.cantfindmain", "\u30C7\u30D0\u30C3\u30AC\u306E\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002"}, + {"appletviewer.main.debug.exceptionindebug", "\u30C7\u30D0\u30C3\u30AC\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002"}, + {"appletviewer.main.debug.cantaccess", "\u30C7\u30D0\u30C3\u30AC\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002"}, + {"appletviewer.main.nosecmgr", "\u8B66\u544A: SecurityManager\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"appletviewer.main.warning", "\u8B66\u544A: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u958B\u59CB\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5165\u529B\u306B\u30BF\u30B0\u304C\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"appletviewer.main.warn.prop.overwrite", "\u8B66\u544A: \u30E6\u30FC\u30B6\u30FC\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u3067\u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u4E00\u6642\u7684\u306B\u4E0A\u66F8\u304D\u3057\u307E\u3059: \u30AD\u30FC: {0} \u53E4\u3044\u5024: {1} \u65B0\u3057\u3044\u5024: {2}"}, + {"appletviewer.main.warn.cantreadprops", "\u8B66\u544A: AppletViewer\u30D7\u30ED\u30D1\u30C6\u30A3\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002"}, + {"appletioexception.loadclass.throw.interrupted", "\u30AF\u30E9\u30B9\u306E\u30ED\u30FC\u30C9\u304C\u4E2D\u65AD\u3057\u307E\u3057\u305F: {0}"}, + {"appletioexception.loadclass.throw.notloaded", "\u30AF\u30E9\u30B9\u304C\u30ED\u30FC\u30C9\u3055\u308C\u307E\u305B\u3093: {0}"}, + {"appletclassloader.loadcode.verbose", "{1}\u3092\u53D6\u5F97\u3059\u308B\u305F\u3081\u306E{0}\u3078\u306E\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u958B\u304D\u307E\u3059"}, + {"appletclassloader.filenotfound", "{0}\u306E\u691C\u7D22\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"}, + {"appletclassloader.fileformat", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u30FB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"}, + {"appletclassloader.fileioexception", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u5165\u51FA\u529B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"}, + {"appletclassloader.fileexception", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"}, + {"appletclassloader.filedeath", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u304C\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3057\u305F"}, + {"appletclassloader.fileerror", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F"}, + {"appletclassloader.findclass.verbose.findclass", "{0}\u306F\u30AF\u30E9\u30B9{1}\u3092\u691C\u51FA\u3057\u307E\u3057\u305F"}, + {"appletclassloader.findclass.verbose.openstream", "{1}\u3092\u53D6\u5F97\u3059\u308B\u305F\u3081\u306E{0}\u3078\u306E\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u958B\u304D\u307E\u3059"}, + {"appletclassloader.getresource.verbose.forname", "\u540D\u524D{0}\u306EAppletClassLoader.getResource\u3067\u3059"}, + {"appletclassloader.getresource.verbose.found", "\u30EA\u30BD\u30FC\u30B9{0}\u304C\u30B7\u30B9\u30C6\u30E0\u30FB\u30EA\u30BD\u30FC\u30B9\u3068\u3057\u3066\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"}, + {"appletclassloader.getresourceasstream.verbose", "\u30EA\u30BD\u30FC\u30B9{0}\u304C\u30B7\u30B9\u30C6\u30E0\u30FB\u30EA\u30BD\u30FC\u30B9\u3068\u3057\u3066\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"}, + {"appletpanel.runloader.err", "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u307E\u305F\u306F\u30B3\u30FC\u30C9\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF\u306E\u3044\u305A\u308C\u304B\u3067\u3059\u3002"}, + {"appletpanel.runloader.exception", "{0}\u306E\u30C7\u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u4E2D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"}, + {"appletpanel.destroyed", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u7834\u68C4\u3055\u308C\u307E\u3057\u305F\u3002"}, + {"appletpanel.loaded", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u30ED\u30FC\u30C9\u3055\u308C\u307E\u3057\u305F\u3002"}, + {"appletpanel.started", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u958B\u59CB\u3055\u308C\u307E\u3057\u305F\u3002"}, + {"appletpanel.inited", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u521D\u671F\u5316\u3055\u308C\u307E\u3057\u305F\u3002"}, + {"appletpanel.stopped", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u505C\u6B62\u3055\u308C\u307E\u3057\u305F\u3002"}, + {"appletpanel.disposed", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u7834\u68C4\u3055\u308C\u307E\u3057\u305F\u3002"}, + {"appletpanel.nocode", "APPLET\u30BF\u30B0\u306BCODE\u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093\u3002"}, + {"appletpanel.notfound", "\u30ED\u30FC\u30C9: \u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002"}, + {"appletpanel.nocreate", "\u30ED\u30FC\u30C9: {0}\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3002"}, + {"appletpanel.noconstruct", "\u30ED\u30FC\u30C9: {0}\u306Fpublic\u3067\u306A\u3044\u304B\u3001public\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u6301\u3063\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"appletpanel.death", "\u5F37\u5236\u7D42\u4E86\u3055\u308C\u307E\u3057\u305F"}, + {"appletpanel.exception", "\u4F8B\u5916: {0}\u3002"}, + {"appletpanel.exception2", "\u4F8B\u5916: {0}: {1}\u3002"}, + {"appletpanel.error", "\u30A8\u30E9\u30FC: {0}\u3002"}, + {"appletpanel.error2", "\u30A8\u30E9\u30FC: {0}: {1}\u3002"}, + {"appletpanel.notloaded", "\u521D\u671F\u5316: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u30ED\u30FC\u30C9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"appletpanel.notinited", "\u958B\u59CB: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"appletpanel.notstarted", "\u505C\u6B62: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u958B\u59CB\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"appletpanel.notstopped", "\u7834\u68C4: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u505C\u6B62\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"appletpanel.notdestroyed", "\u7834\u68C4: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u7834\u68C4\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"appletpanel.notdisposed", "\u30ED\u30FC\u30C9: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u7834\u68C4\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, + {"appletpanel.bail", "\u4E2D\u65AD\u6E08: \u7D42\u4E86\u3057\u3066\u3044\u307E\u3059\u3002"}, + {"appletpanel.filenotfound", "{0}\u306E\u691C\u7D22\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"}, + {"appletpanel.fileformat", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u30FB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"}, + {"appletpanel.fileioexception", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u5165\u51FA\u529B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"}, + {"appletpanel.fileexception", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"}, + {"appletpanel.filedeath", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u304C\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3057\u305F"}, + {"appletpanel.fileerror", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F"}, + {"appletpanel.badattribute.exception", "HTML\u89E3\u6790: width\u307E\u305F\u306Fheight\u5C5E\u6027\u306E\u5024\u304C\u4E0D\u6B63\u3067\u3059"}, + {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream\u306F\u975Enull\u306E\u30ED\u30FC\u30C0\u30FC\u304C\u5FC5\u8981\u3067\u3059"}, + {"appletprops.title", "AppletViewer\u30D7\u30ED\u30D1\u30C6\u30A3"}, + {"appletprops.label.http.server", "Http\u30D7\u30ED\u30AD\u30B7\u30FB\u30B5\u30FC\u30D0\u30FC:"}, + {"appletprops.label.http.proxy", "Http\u30D7\u30ED\u30AD\u30B7\u30FB\u30DD\u30FC\u30C8:"}, + {"appletprops.label.network", "\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30FB\u30A2\u30AF\u30BB\u30B9:"}, + {"appletprops.choice.network.item.none", "\u306A\u3057"}, + {"appletprops.choice.network.item.applethost", "\u30A2\u30D7\u30EC\u30C3\u30C8\u30FB\u30DB\u30B9\u30C8"}, + {"appletprops.choice.network.item.unrestricted", "\u5236\u9650\u306A\u3057"}, + {"appletprops.label.class", "\u30AF\u30E9\u30B9\u30FB\u30A2\u30AF\u30BB\u30B9:"}, + {"appletprops.choice.class.item.restricted", "\u5236\u9650\u4ED8\u304D"}, + {"appletprops.choice.class.item.unrestricted", "\u5236\u9650\u306A\u3057"}, + {"appletprops.label.unsignedapplet", "\u7F72\u540D\u3055\u308C\u3066\u3044\u306A\u3044\u30A2\u30D7\u30EC\u30C3\u30C8\u3092\u8A31\u53EF:"}, {"appletprops.choice.unsignedapplet.no", "\u3044\u3044\u3048"}, - {"appletprops.choice.unsignedapplet.yes", "\u306f\u3044"}, + {"appletprops.choice.unsignedapplet.yes", "\u306F\u3044"}, {"appletprops.button.apply", "\u9069\u7528"}, - {"appletprops.button.cancel", "\u53d6\u6d88\u3057"}, - {"appletprops.button.reset", "\u30ea\u30bb\u30c3\u30c8"}, - {"appletprops.apply.exception", "\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}"}, + {"appletprops.button.cancel", "\u53D6\u6D88"}, + {"appletprops.button.reset", "\u30EA\u30BB\u30C3\u30C8"}, + {"appletprops.apply.exception", "\u30D7\u30ED\u30D1\u30C6\u30A3{0}\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F"}, /* 4066432 */ - {"appletprops.title.invalidproxy", "\u7121\u52b9\u306a\u5165\u529b"}, - {"appletprops.label.invalidproxy", "\u30d7\u30ed\u30ad\u30b7\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u306f\u6b63\u306e\u6574\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"}, - {"appletprops.button.ok", "\u4e86\u89e3"}, + {"appletprops.title.invalidproxy", "\u30A8\u30F3\u30C8\u30EA\u304C\u7121\u52B9\u3067\u3059"}, + {"appletprops.label.invalidproxy", "\u30D7\u30ED\u30AD\u30B7\u30FB\u30DD\u30FC\u30C8\u306F\u6B63\u306E\u6574\u6570\u5024\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"}, + {"appletprops.button.ok", "OK"}, /* end 4066432 */ - {"appletprops.prop.store", "AppletViewer \u306e\u30e6\u30fc\u30b6\u56fa\u6709\u30d7\u30ed\u30d1\u30c6\u30a3"}, - {"appletsecurityexception.checkcreateclassloader", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: classloader"}, - {"appletsecurityexception.checkaccess.thread", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: thread"}, - {"appletsecurityexception.checkaccess.threadgroup", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: threadgroup: {0}"}, - {"appletsecurityexception.checkexit", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: exit: {0}"}, - {"appletsecurityexception.checkexec", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: exec: {0}"}, - {"appletsecurityexception.checklink", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: link: {0}"}, - {"appletsecurityexception.checkpropsaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: properties"}, - {"appletsecurityexception.checkpropsaccess.key", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: properties access {0}"}, - {"appletsecurityexception.checkread.exception1", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}, {1}"}, - {"appletsecurityexception.checkread.exception2", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: file.read: {0}"}, - {"appletsecurityexception.checkread", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: file.read: {0} == {1}"}, - {"appletsecurityexception.checkwrite.exception", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}, {1}"}, - {"appletsecurityexception.checkwrite", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: file.write: {0} == {1}"}, - {"appletsecurityexception.checkread.fd", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: fd.read"}, - {"appletsecurityexception.checkwrite.fd", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: fd.write"}, - {"appletsecurityexception.checklisten", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: socket.listen: {0}"}, - {"appletsecurityexception.checkaccept", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: socket.accept: {0}:{1}"}, - {"appletsecurityexception.checkconnect.networknone", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: socket.connect: {0}->{1}"}, - {"appletsecurityexception.checkconnect.networkhost1", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {1} \u306e\u5143\u306b\u306a\u308b {0} \u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"appletsecurityexception.checkconnect.networkhost2", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30db\u30b9\u30c8 {0} \u307e\u305f\u306f {1} \u306e IP \u3092\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"appletsecurityexception.checkconnect.networkhost3", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30db\u30b9\u30c8 {0} \u306e IP \u3092\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093\u3002 trustProxy \u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8abf\u3079\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"appletsecurityexception.checkconnect", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: connect: {0}->{1}"}, - {"appletsecurityexception.checkpackageaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"appletsecurityexception.checkpackagedefinition", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u3092\u5b9a\u7fa9\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"appletsecurityexception.cannotsetfactory", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30d5\u30a1\u30af\u30c8\u30ea\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"appletsecurityexception.checkmemberaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30e1\u30f3\u30d0\u30a2\u30af\u30bb\u30b9\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"appletsecurityexception.checkgetprintjob", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: getPrintJob"}, - {"appletsecurityexception.checksystemclipboardaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: getSystemClipboard"}, - {"appletsecurityexception.checkawteventqueueaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: getEventQueue"}, - {"appletsecurityexception.checksecurityaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: security operation: {0}"}, - {"appletsecurityexception.getsecuritycontext.unknown", "\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u30bf\u30a4\u30d7\u304c\u4e0d\u660e\u3067\u3059\u3002getContext \u306e\u30c1\u30a7\u30c3\u30af\u304c\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"appletsecurityexception.checkread.unknown", "\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u30bf\u30a4\u30d7\u304c\u4e0d\u660e\u3067\u3059\u3002{0} \u306e\u8aad\u307f\u8fbc\u307f\u30c1\u30a7\u30c3\u30af\u304c\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"appletsecurityexception.checkconnect.unknown", "\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u30bf\u30a4\u30d7\u304c\u4e0d\u660e\u3067\u3059\u3002\u63a5\u7d9a\u30c1\u30a7\u30c3\u30af\u304c\u3067\u304d\u307e\u305b\u3093\u3002"}, + {"appletprops.prop.store", "AppletViewer\u7528\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F\u30D7\u30ED\u30D1\u30C6\u30A3"}, + {"appletsecurityexception.checkcreateclassloader", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30AF\u30E9\u30B9\u30ED\u30FC\u30C0\u30FC"}, + {"appletsecurityexception.checkaccess.thread", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30B9\u30EC\u30C3\u30C9"}, + {"appletsecurityexception.checkaccess.threadgroup", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7: {0}"}, + {"appletsecurityexception.checkexit", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u7D42\u4E86: {0}"}, + {"appletsecurityexception.checkexec", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u5B9F\u884C: {0}"}, + {"appletsecurityexception.checklink", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30EA\u30F3\u30AF: {0}"}, + {"appletsecurityexception.checkpropsaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30D7\u30ED\u30D1\u30C6\u30A3"}, + {"appletsecurityexception.checkpropsaccess.key", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30D7\u30ED\u30D1\u30C6\u30A3\u30FB\u30A2\u30AF\u30BB\u30B9{0}"}, + {"appletsecurityexception.checkread.exception1", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: {0}, {1}"}, + {"appletsecurityexception.checkread.exception2", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: file.read: {0}"}, + {"appletsecurityexception.checkread", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: file.read: {0} == {1}"}, + {"appletsecurityexception.checkwrite.exception", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: {0}, {1}"}, + {"appletsecurityexception.checkwrite", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: file.write: {0} == {1}"}, + {"appletsecurityexception.checkread.fd", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: fd.read"}, + {"appletsecurityexception.checkwrite.fd", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: fd.write"}, + {"appletsecurityexception.checklisten", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: socket.listen: {0}"}, + {"appletsecurityexception.checkaccept", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: socket.accept: {0}:{1}"}, + {"appletsecurityexception.checkconnect.networknone", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: socket.connect: {0}->{1}"}, + {"appletsecurityexception.checkconnect.networkhost1", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: {1}\u306E\u8D77\u70B9\u3092\u4F7F\u7528\u3057\u3066{0}\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002"}, + {"appletsecurityexception.checkconnect.networkhost2", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30DB\u30B9\u30C8{0}\u307E\u305F\u306F{1}\u306EIP\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 "}, + {"appletsecurityexception.checkconnect.networkhost3", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30DB\u30B9\u30C8{0}\u306EIP\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002trustProxy\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"appletsecurityexception.checkconnect", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u63A5\u7D9A: {0}->{1}"}, + {"appletsecurityexception.checkpackageaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093: {0}"}, + {"appletsecurityexception.checkpackagedefinition", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u5B9A\u7FA9\u3067\u304D\u307E\u305B\u3093: {0}"}, + {"appletsecurityexception.cannotsetfactory", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30D5\u30A1\u30AF\u30C8\u30EA\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093"}, + {"appletsecurityexception.checkmemberaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30E1\u30F3\u30D0\u30FC\u30FB\u30A2\u30AF\u30BB\u30B9\u306E\u78BA\u8A8D"}, + {"appletsecurityexception.checkgetprintjob", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: getPrintJob"}, + {"appletsecurityexception.checksystemclipboardaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: getSystemClipboard"}, + {"appletsecurityexception.checkawteventqueueaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: getEventQueue"}, + {"appletsecurityexception.checksecurityaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u64CD\u4F5C: {0}"}, + {"appletsecurityexception.getsecuritycontext.unknown", "\u4E0D\u660E\u306A\u30AF\u30E9\u30B9\u30ED\u30FC\u30C0\u30FC\u30FB\u30BF\u30A4\u30D7\u3067\u3059\u3002getContext\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093"}, + {"appletsecurityexception.checkread.unknown", "\u4E0D\u660E\u306A\u30AF\u30E9\u30B9\u30ED\u30FC\u30C0\u30FC\u30FB\u30BF\u30A4\u30D7\u3067\u3059\u3002{0}\u306E\u8AAD\u53D6\u308A\u30C1\u30A7\u30C3\u30AF\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093"}, + {"appletsecurityexception.checkconnect.unknown", "\u4E0D\u660E\u306A\u30AF\u30E9\u30B9\u30ED\u30FC\u30C0\u30FC\u30FB\u30BF\u30A4\u30D7\u3067\u3059\u3002\u63A5\u7D9A\u30C1\u30A7\u30C3\u30AF\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093"}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ko.java b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ko.java index d95eb989782..3d4bb4c4271 100644 --- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ko.java +++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ko.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -29,173 +29,175 @@ import java.util.ListResourceBundle; public class MsgAppletViewer_ko extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"textframe.button.dismiss", "\ub2eb\uae30"}, - {"appletviewer.tool.title", "\uc560\ud50c\ub9bf \ubdf0\uc5b4: {0}"}, - {"appletviewer.menu.applet", "\uc560\ud50c\ub9bf "}, - {"appletviewer.menuitem.restart", "\uc7ac\uc2dc\uc791"}, - {"appletviewer.menuitem.reload", "\uc7ac\ub85c\ub4dc"}, - {"appletviewer.menuitem.stop", "\uba48\ucda4"}, - {"appletviewer.menuitem.save", "\uc800\uc7a5..."}, - {"appletviewer.menuitem.start", "\uc2dc\uc791"}, - {"appletviewer.menuitem.clone", "\ubcf5\uc81c..."}, - {"appletviewer.menuitem.tag", "\ud0dc\uadf8..."}, - {"appletviewer.menuitem.info", "\uc815\ubcf4..."}, - {"appletviewer.menuitem.edit", "\ud3b8\uc9d1"}, - {"appletviewer.menuitem.encoding", "\ubb38\uc790 \uc778\ucf54\ub529"}, - {"appletviewer.menuitem.print", "\uc778\uc1c4..."}, - {"appletviewer.menuitem.props", "\ub4f1\ub85d \uc815\ubcf4..."}, - {"appletviewer.menuitem.close", "\ub2eb\uae30"}, - {"appletviewer.menuitem.quit", "\uc885\ub8cc"}, - {"appletviewer.label.hello", "\ud658\uc601\ud569\ub2c8\ub2e4..."}, - {"appletviewer.status.start", "\uc560\ud50c\ub9bf \uc2dc\uc791 \uc911..."}, - {"appletviewer.appletsave.filedialogtitle","\uc560\ud50c\ub9bf \uc77c\ub828 \ubc88\ud638\ub97c \ud30c\uc77c\uc5d0 \uc800\uc7a5"}, - {"appletviewer.appletsave.err1", "{0}\uc5d0\uc11c {1}\uae4c\uc9c0 \uc77c\ub828 \ubc88\ud638\ub97c \uc9c0\uc815\ud558\ub294 \uc911"}, - {"appletviewer.appletsave.err2", "appletSave \uc5d0\uc11c {0} \ubc1c\uc0dd"}, - {"appletviewer.applettag", "\ud0dc\uadf8 \ud45c\uc2dc"}, - {"appletviewer.applettag.textframe", "\uc560\ud50c\ub9bf HTML \ud0dc\uadf8"}, - {"appletviewer.appletinfo.applet", "-- \uc560\ud50c\ub9bf \uc815\ubcf4 \uc5c6\uc74c --"}, - {"appletviewer.appletinfo.param", "-- \ub9e4\uac1c\ubcc0\uc218 \uc815\ubcf4 \uc5c6\uc74c --"}, - {"appletviewer.appletinfo.textframe", "\uc560\ud50c\ub9bf \uc815\ubcf4"}, - {"appletviewer.appletprint.fail", "\uc778\uc1c4 \uc624\ub958 \ubc1c\uc0dd"}, - {"appletviewer.appletprint.finish", "\uc778\uc1c4 \uc644\ub8cc"}, - {"appletviewer.appletprint.cancel", "\uc778\uc1c4 \ucde8\uc18c"}, - {"appletviewer.appletencoding", "\ubb38\uc790 \uc778\ucf54\ub529: {0}"}, - {"appletviewer.parse.warning.requiresname", "\uacbd\uace0: \uc774\ub984 \uc18d\uc131\uc5d0 \ud0dc\uadf8\uac00 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.paramoutside", "\uacbd\uace0: ... \uc678\ubd80\uc5d0 \ud0dc\uadf8\uac00 \uc788\uc2b5\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.applet.requirescode", "\uacbd\uace0: \ud0dc\uadf8\uc5d0 \ucf54\ub4dc \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.applet.requiresheight", "\uacbd\uace0: \ud0dc\uadf8\uc5d0 \ub192\uc774 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.applet.requireswidth", "\uacbd\uace0: \ud0dc\uadf8\uc5d0 \ub108\ube44 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.object.requirescode", "\uacbd\uace0: \ud0dc\uadf8\uc5d0 \ucf54\ub4dc \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.object.requiresheight", "\uacbd\uace0: \ud0dc\uadf8\uc5d0 \ub192\uc774 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.object.requireswidth", "\uacbd\uace0: \ud0dc\uadf8\uc5d0 \ub108\ube44 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.embed.requirescode", "\uacbd\uace0: \ud0dc\uadf8\uc5d0 \ucf54\ub4dc \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.embed.requiresheight", "\uacbd\uace0: \ud0dc\uadf8\uc5d0 \ub192\uc774 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.embed.requireswidth", "\uacbd\uace0: \ud0dc\uadf8\uc5d0 \ub108\ube44 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletviewer.parse.warning.appnotLongersupported", "\uacbd\uace0: \ud0dc\uadf8\ub97c \ub354 \uc774\uc0c1 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub300\uc548\uc73c\ub85c \uc744 \uc0ac\uc6a9\ud558\uac8c \ub418\ub294 \ub300\uc0c1:"}, - {"appletviewer.usage", "\uc0ac\uc6a9\ubc95: appletviewer url(s)\n\nwhere \ub2e4\uc74c\uc744 \ud3ec\ud568:\n -debug Java \ub514\ubc84\uac70\uc5d0\uc11c applet viewer \uc2dc\uc791\n -encoding HTML \ud30c\uc77c\uc744 \ud1b5\ud574 \ubb38\uc790 \uc778\ucf54\ub529 \uc9c0\uc815\n -J Java \uc778\ud130\ud504\ub9ac\ud130\uc5d0 \uc778\uc790 \uc804\ub2ec\n\n -J \uc635\uc158\uc740 \ud45c\uc900\uc774 \uc544\ub2c8\uba70 \uc54c\ub9bc \uc5c6\uc774 \ubcc0\uacbd\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4."}, - {"appletviewer.main.err.unsupportedopt", "\uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc635\uc158: {0}"}, - {"appletviewer.main.err.unrecognizedarg", "\uc54c \uc218 \uc5c6\ub294 \uc778\uc790: {0}"}, - {"appletviewer.main.err.dupoption", "\uc635\uc158 \uc911\ubcf5 \uc0ac\uc6a9: {0}"}, - {"appletviewer.main.err.inputfile", "\uc9c0\uc815\ub41c \uc785\ub825 \ud30c\uc77c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"appletviewer.main.err.badurl", "\uc798\ubabb\ub41c URL: {0} ( {1} )"}, - {"appletviewer.main.err.io", "\uc77d\ub294 \uc911\uc5d0 I/O \uc608\uc678 \uc624\ub958: {0}"}, - {"appletviewer.main.err.readablefile", "{0}\uc774(\uac00) \uc77d\uc744 \uc218 \uc788\ub294 \ud30c\uc77c\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624."}, - {"appletviewer.main.err.correcturl", "{0}\uc774(\uac00) \uc62c\ubc14\ub978 URL\uc785\ub2c8\uae4c?"}, - {"appletviewer.main.prop.store", "AppletViewer\uc5d0 \ub300\ud55c \ud2b9\uc815 \uc0ac\uc6a9\uc790 \ub4f1\ub85d \uc815\ubcf4"}, - {"appletviewer.main.err.prop.cantread", "\uc0ac\uc6a9\uc790 \ub4f1\ub85d \uc815\ubcf4 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}"}, - {"appletviewer.main.err.prop.cantsave", "\uc0ac\uc6a9\uc790 \ub4f1\ub85d \uc815\ubcf4 \ud30c\uc77c\uc744 \uc800\uc7a5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}"}, - {"appletviewer.main.warn.nosecmgr", "\uacbd\uace0: \ubcf4\uc548 \uc0ac\uc6a9 \ubd88\uac00"}, - {"appletviewer.main.debug.cantfinddebug", "\ub514\ubc84\uac70\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"}, - {"appletviewer.main.debug.cantfindmain", "\ub514\ubc84\uac70\uc5d0\uc11c \ud575\uc2ec \uba54\uc18c\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"}, - {"appletviewer.main.debug.exceptionindebug", "\ub514\ubc84\uac70\uc5d0\uc11c \uc608\uc678!"}, - {"appletviewer.main.debug.cantaccess", "\ub514\ubc84\uac70\ub97c \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"}, - {"appletviewer.main.nosecmgr", "\uacbd\uace0: SecurityManager\uac00 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"}, - {"appletviewer.main.warning", "\uacbd\uace0: \uc560\ud50c\ub9bf\uc744 \uc2dc\uc791\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \ud0dc\uadf8\uac00 \uc785\ub825\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624."}, - {"appletviewer.main.warn.prop.overwrite", "\uacbd\uace0: \uc0ac\uc6a9\uc790\uc758 \uc694\uad6c\uc5d0 \uc77c\uc2dc\uc801\uc73c\ub85c \uc2dc\uc2a4\ud15c \uc18d\uc131\uc744 \uacb9\uccd0\uc501\ub2c8\ub2e4: \ud0a4: {0} \uc774\uc804 \uac12: {1} \uc0c8\ub85c\uc6b4 \uac12: {2}"}, - {"appletviewer.main.warn.cantreadprops", "\uacbd\uace0: AppletViewer \ub4f1\ub85d \uc815\ubcf4 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}\uc774(\uac00) \uae30\ubcf8\uac12\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4."}, - {"appletioexception.loadclass.throw.interrupted", "\ud074\ub798\uc2a4 \ub85c\ub4dc \uc911\ub2e8: {0}"}, - {"appletioexception.loadclass.throw.notloaded", "\ud074\ub798\uc2a4 \ub85c\ub4dc \uc2e4\ud328: {0}"}, - {"appletclassloader.loadcode.verbose", "{1}\uc744(\ub97c) \uac00\uc838\uc624\uae30 \uc704\ud574 stream\uc744 \uc5ec\ub294 \uc911: {0}"}, - {"appletclassloader.filenotfound", "\ucc3e\uace0 \uc788\ub294 \ud30c\uc77c\uc774 \uc5c6\uc74c: {0}"}, - {"appletclassloader.fileformat", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 \ud30c\uc77c \ud615\uc2dd \uc608\uc678 \uc624\ub958: {0}"}, - {"appletclassloader.fileioexception", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 I/O \uc608\uc678 \uc624\ub958: {0}"}, - {"appletclassloader.fileexception", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc608\uc678 \uc624\ub958: {1}"}, - {"appletclassloader.filedeath", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc0ad\uc81c: {1}"}, - {"appletclassloader.fileerror", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc624\ub958: {1}"}, - {"appletclassloader.findclass.verbose.findclass", "{0}\uc5d0\uc11c {1} \ud074\ub798\uc2a4\ub97c \ucc3e\uc2b5\ub2c8\ub2e4."}, - {"appletclassloader.findclass.verbose.openstream", "{1}\uc744(\ub97c) \uac00\uc838\uc624\uae30 \uc704\ud574 stream\uc744 \uc5ec\ub294 \uc911: {0}"}, - {"appletclassloader.getresource.verbose.forname", "{0} \uc774\ub984\uc5d0 \ub300\ud55c AppletClassLoader.getResource"}, - {"appletclassloader.getresource.verbose.found", "\uc2dc\uc2a4\ud15c \uc790\uc6d0\uc778 {0} \uc790\uc6d0\uc744 \ucc3e\uc558\uc2b5\ub2c8\ub2e4."}, - {"appletclassloader.getresourceasstream.verbose", "\uc2dc\uc2a4\ud15c \uc790\uc6d0\uc778 {0} \uc790\uc6d0\uc744 \ucc3e\uc558\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.runloader.err", "\uac1c\uccb4 \ub610\ub294 \ucf54\ub4dc \ub9e4\uac1c\ubcc0\uc218\uc785\ub2c8\ub2e4!"}, - {"appletpanel.runloader.exception", "{0}\uc758 \uc77c\ub828 \ubc88\ud638\ub97c \ud574\uc81c\ud558\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.destroyed", "\uc560\ud50c\ub9bf\uc744 \uc0ad\uc81c\ud558\uc600\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.loaded", "\uc560\ud50c\ub9bf\uc744 \ub85c\ub4dc\ud558\uc600\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.started", "\uc560\ud50c\ub9bf\uc744 \uc2dc\uc791\ud558\uc600\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.inited", "\uc560\ud50c\ub9bf\uc744 \ucd08\uae30\ud654\ud558\uc600\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.stopped", "\uc560\ud50c\ub9bf\uc744 \uba48\ucd94\uc5c8\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.disposed", "\uc560\ud50c\ub9bf\uc744 \ubc30\uc5f4\ud558\uc600\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.nocode", "\uc560\ud50c\ub9bf \ud0dc\uadf8\uc5d0\uc11c CODE \ub9e4\uac1c\ubcc0\uc218\ub97c \ube60\ub728\ub838\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.notfound", "load: class {0}\uc774(\uac00) \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.nocreate", "load: {0}\uc744(\ub97c) \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.noconstruct", "load: {0}\uc774(\uac00) public\uc774 \uc544\ub2c8\uac70\ub098 public \uc0dd\uc131\uc790\ub97c \uac00\uc9c0\uace0 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.death", "\uc0ad\uc81c"}, - {"appletpanel.exception", "\uc608\uc678 \uc624\ub958: {0}."}, - {"appletpanel.exception2", "{0} \uc608\uc678 \uc624\ub958: {1}."}, - {"appletpanel.error", "\uc624\ub958: {0}."}, - {"appletpanel.error2", "{0} \uc624\ub958: {1}."}, - {"appletpanel.notloaded", "Init: \uc560\ud50c\ub9bf\uc744 \ub85c\ub4dc\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.notinited", "Start: \uc560\ud50c\ub9bf\uc744 \ucd08\uae30\ud654\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.notstarted", "Stop: \uc560\ud50c\ub9bf\uc744 \uc2dc\uc791\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.notstopped", "Destroy: \uc560\ud50c\ub9bf\uc744 \uba48\ucd94\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.notdestroyed", "Dispose: \uc560\ud50c\ub9bf\uc744 \uc9c0\uc6b0\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.notdisposed", "Load: \uc560\ud50c\ub9bf\uc744 \ubc30\uc5f4\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"appletpanel.bail", "Interrupted: \uc560\ud50c\ub9bf\uc744 \uae34\uae09 \ubcf5\uad6c\ud558\ub294 \uc911\uc785\ub2c8\ub2e4."}, - {"appletpanel.filenotfound", "\ucc3e\uace0 \uc788\ub294 \ud30c\uc77c\uc774 \uc5c6\uc74c: {0}"}, - {"appletpanel.fileformat", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 \ud30c\uc77c \ud615\uc2dd \uc608\uc678 \uc624\ub958: {0}"}, - {"appletpanel.fileioexception", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 I/O \uc608\uc678 \uc624\ub958: {0}"}, - {"appletpanel.fileexception", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc608\uc678 \uc624\ub958: {1}"}, - {"appletpanel.filedeath", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc0ad\uc81c: {1}"}, - {"appletpanel.fileerror", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc624\ub958: {1}"}, - {"appletpanel.badattribute.exception", "HTML \uad6c\ubb38 \ubd84\uc11d: \uc798\ubabb\ub41c width/height \uc18d\uc131 \uac12"}, - {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream\uc5d0\ub294 \ub110\uc774 \uc544\ub2cc \ub85c\ub354\uac00 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"appletprops.title", "AppletViewer \ub4f1\ub85d \uc815\ubcf4"}, - {"appletprops.label.http.server", "Http \ud504\ub85d\uc2dc \uc11c\ubc84:"}, - {"appletprops.label.http.proxy", "Http \ud504\ub85d\uc2dc \ud3ec\ud2b8:"}, - {"appletprops.label.network", "\ub124\ud2b8\uc6cc\ud06c \uc561\uc138\uc2a4:"}, - {"appletprops.choice.network.item.none", "\uc5c6\uc74c"}, - {"appletprops.choice.network.item.applethost", "\uc560\ud50c\ub9bf \ud638\uc2a4\ud2b8"}, - {"appletprops.choice.network.item.unrestricted", "\ubb34\uc81c\ud55c"}, - {"appletprops.label.class", "\ud074\ub798\uc2a4 \uc561\uc138\uc2a4"}, - {"appletprops.choice.class.item.restricted", "\uc81c\ud55c"}, - {"appletprops.choice.class.item.unrestricted", "\ubb34\uc81c\ud55c"}, - {"appletprops.label.unsignedapplet", "\uc11c\uba85\ub418\uc9c0 \uc54a\uc740 \uc560\ud50c\ub9bf \ud5c8\uc6a9:"}, - {"appletprops.choice.unsignedapplet.no", "\uc544\ub2c8\uc624"}, - {"appletprops.choice.unsignedapplet.yes", "\uc608"}, - {"appletprops.button.apply", "\uc801\uc6a9"}, - {"appletprops.button.cancel", "\ucde8\uc18c"}, - {"appletprops.button.reset", "\uc7ac\uc124\uc815"}, - {"appletprops.apply.exception", "{0} \ub4f1\ub85d \uc815\ubcf4\ub97c \uc800\uc7a5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, + Object[][] temp = new Object[][] { + {"textframe.button.dismiss", "\uD574\uC81C"}, + {"appletviewer.tool.title", "\uC560\uD50C\uB9BF \uBDF0\uC5B4: {0}"}, + {"appletviewer.menu.applet", "\uC560\uD50C\uB9BF"}, + {"appletviewer.menuitem.restart", "\uC7AC\uC2DC\uC791"}, + {"appletviewer.menuitem.reload", "\uC7AC\uB85C\uB4DC"}, + {"appletviewer.menuitem.stop", "\uC815\uC9C0"}, + {"appletviewer.menuitem.save", "\uC800\uC7A5..."}, + {"appletviewer.menuitem.start", "\uC2DC\uC791"}, + {"appletviewer.menuitem.clone", "\uBCF5\uC81C..."}, + {"appletviewer.menuitem.tag", "\uD0DC\uADF8 \uC9C0\uC815..."}, + {"appletviewer.menuitem.info", "\uC815\uBCF4..."}, + {"appletviewer.menuitem.edit", "\uD3B8\uC9D1"}, + {"appletviewer.menuitem.encoding", "\uBB38\uC790 \uC778\uCF54\uB529"}, + {"appletviewer.menuitem.print", "\uC778\uC1C4..."}, + {"appletviewer.menuitem.props", "\uC18D\uC131..."}, + {"appletviewer.menuitem.close", "\uB2EB\uAE30"}, + {"appletviewer.menuitem.quit", "\uC885\uB8CC"}, + {"appletviewer.label.hello", "\uC2DC\uC791..."}, + {"appletviewer.status.start", "\uC560\uD50C\uB9BF\uC744 \uC2DC\uC791\uD558\uB294 \uC911..."}, + {"appletviewer.appletsave.filedialogtitle","\uD30C\uC77C\uB85C \uC560\uD50C\uB9BF \uC9C1\uB82C\uD654"}, + {"appletviewer.appletsave.err1", "{0}\uC744(\uB97C) {1}(\uC73C)\uB85C \uC9C1\uB82C\uD654\uD558\uB294 \uC911"}, + {"appletviewer.appletsave.err2", "appletSave\uC5D0 \uC624\uB958 \uBC1C\uC0DD: {0}"}, + {"appletviewer.applettag", "\uD0DC\uADF8\uAC00 \uD45C\uC2DC\uB428"}, + {"appletviewer.applettag.textframe", "\uC560\uD50C\uB9BF HTML \uD0DC\uADF8"}, + {"appletviewer.appletinfo.applet", "-- \uC560\uD50C\uB9BF \uC815\uBCF4 \uC5C6\uC74C --"}, + {"appletviewer.appletinfo.param", "-- \uB9E4\uAC1C\uBCC0\uC218 \uC815\uBCF4 \uC5C6\uC74C --"}, + {"appletviewer.appletinfo.textframe", "\uC560\uD50C\uB9BF \uC815\uBCF4"}, + {"appletviewer.appletprint.fail", "\uC778\uC1C4\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."}, + {"appletviewer.appletprint.finish", "\uC778\uC1C4\uB97C \uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4."}, + {"appletviewer.appletprint.cancel", "\uC778\uC1C4\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"appletviewer.appletencoding", "\uBB38\uC790 \uC778\uCF54\uB529: {0}"}, + {"appletviewer.parse.warning.requiresname", "\uACBD\uACE0: \uD0DC\uADF8\uC5D0\uB294 name \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.paramoutside", "\uACBD\uACE0: \uD0DC\uADF8\uAC00 ... \uBC16\uC5D0 \uC788\uC2B5\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.applet.requirescode", "\uACBD\uACE0: \uD0DC\uADF8\uC5D0\uB294 code \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.applet.requiresheight", "\uACBD\uACE0: \uD0DC\uADF8\uC5D0\uB294 height \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.applet.requireswidth", "\uACBD\uACE0: \uD0DC\uADF8\uC5D0\uB294 width \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.object.requirescode", "\uACBD\uACE0: \uD0DC\uADF8\uC5D0\uB294 code \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.object.requiresheight", "\uACBD\uACE0: \uD0DC\uADF8\uC5D0\uB294 height \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.object.requireswidth", "\uACBD\uACE0: \uD0DC\uADF8\uC5D0\uB294 width \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.embed.requirescode", "\uACBD\uACE0: \uD0DC\uADF8\uC5D0\uB294 code \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.embed.requiresheight", "\uACBD\uACE0: \uD0DC\uADF8\uC5D0\uB294 height \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.embed.requireswidth", "\uACBD\uACE0: \uD0DC\uADF8\uC5D0\uB294 width \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletviewer.parse.warning.appnotLongersupported", "\uACBD\uACE0: \uD0DC\uADF8\uB294 \uB354 \uC774\uC0C1 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 \uC744 \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624."}, + {"appletviewer.usage", "\uC0AC\uC6A9\uBC95: appletviewer url(s)\n\n\uC5EC\uAE30\uC11C \uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n -debug Java \uB514\uBC84\uAC70\uC5D0\uC11C \uC560\uD50C\uB9BF \uBDF0\uC5B4\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4.\n -encoding HTML \uD30C\uC77C\uC5D0 \uC0AC\uC6A9\uB420 \uBB38\uC790 \uC778\uCF54\uB529\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n -J Java \uC778\uD130\uD504\uB9AC\uD130\uB85C \uC778\uC218\uB97C \uC804\uB2EC\uD569\uB2C8\uB2E4.\n\n-J \uC635\uC158\uC740 \uD45C\uC900\uC774 \uC544\uB2C8\uBA70 \uC608\uACE0 \uC5C6\uC774 \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4."}, + {"appletviewer.main.err.unsupportedopt", "\uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uC635\uC158: {0}"}, + {"appletviewer.main.err.unrecognizedarg", "\uC54C \uC218 \uC5C6\uB294 \uC778\uC218: {0}"}, + {"appletviewer.main.err.dupoption", "\uC911\uBCF5\uB41C \uC635\uC158 \uC0AC\uC6A9: {0}"}, + {"appletviewer.main.err.inputfile", "\uC9C0\uC815\uB41C \uC785\uB825 \uD30C\uC77C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"appletviewer.main.err.badurl", "\uC798\uBABB\uB41C URL: {0}({1})"}, + {"appletviewer.main.err.io", "\uC77D\uB294 \uC911 I/O \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"}, + {"appletviewer.main.err.readablefile", "{0}\uC774(\uAC00) \uD30C\uC77C\uC774\uBA70 \uC77D\uAE30 \uAC00\uB2A5\uD55C \uC0C1\uD0DC\uC778\uC9C0 \uD655\uC778\uD558\uC2ED\uC2DC\uC624."}, + {"appletviewer.main.err.correcturl", "{0}\uC774(\uAC00) \uC62C\uBC14\uB978 URL\uC785\uB2C8\uAE4C?"}, + {"appletviewer.main.prop.store", "\uC0AC\uC6A9\uC790 \uAD00\uB828 AppletViewer \uC18D\uC131"}, + {"appletviewer.main.err.prop.cantread", "\uC0AC\uC6A9\uC790 \uC18D\uC131 \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC74C: {0}"}, + {"appletviewer.main.err.prop.cantsave", "\uC0AC\uC6A9\uC790 \uC18D\uC131 \uD30C\uC77C\uC744 \uC800\uC7A5\uD560 \uC218 \uC5C6\uC74C: {0}"}, + {"appletviewer.main.warn.nosecmgr", "\uACBD\uACE0: \uBCF4\uC548\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD558\uB294 \uC911\uC785\uB2C8\uB2E4."}, + {"appletviewer.main.debug.cantfinddebug", "\uB514\uBC84\uAC70\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!"}, + {"appletviewer.main.debug.cantfindmain", "\uB514\uBC84\uAC70\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!"}, + {"appletviewer.main.debug.exceptionindebug", "\uB514\uBC84\uAC70\uC5D0 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4!"}, + {"appletviewer.main.debug.cantaccess", "\uB514\uBC84\uAC70\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!"}, + {"appletviewer.main.nosecmgr", "\uACBD\uACE0: SecurityManager\uAC00 \uC124\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4!"}, + {"appletviewer.main.warning", "\uACBD\uACE0: \uC2DC\uC791\uB41C \uC560\uD50C\uB9BF\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uD0DC\uADF8\uAC00 \uC785\uB825\uB418\uC5C8\uB294\uC9C0 \uD655\uC778\uD558\uC2ED\uC2DC\uC624."}, + {"appletviewer.main.warn.prop.overwrite", "\uACBD\uACE0: \uC0AC\uC6A9\uC790\uC758 \uC694\uCCAD\uC5D0 \uB530\uB77C \uC77C\uC2DC\uC801\uC73C\uB85C \uC2DC\uC2A4\uD15C \uC18D\uC131\uC744 \uACB9\uCCD0 \uC4F0\uB294 \uC911: \uD0A4: {0}, \uC774\uC804 \uAC12: {1}, \uC0C8 \uAC12: {2}"}, + {"appletviewer.main.warn.cantreadprops", "\uACBD\uACE0: AppletViewer \uC18D\uC131 \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC74C: {0}. \uAE30\uBCF8\uAC12\uC744 \uC0AC\uC6A9\uD558\uB294 \uC911\uC785\uB2C8\uB2E4."}, + {"appletioexception.loadclass.throw.interrupted", "\uD074\uB798\uC2A4 \uB85C\uB4DC\uAC00 \uC911\uB2E8\uB428: {0}"}, + {"appletioexception.loadclass.throw.notloaded", "\uD074\uB798\uC2A4\uAC00 \uB85C\uB4DC\uB418\uC9C0 \uC54A\uC74C: {0}"}, + {"appletclassloader.loadcode.verbose", "{1}\uC744(\uB97C) \uAC00\uC838\uC624\uAE30 \uC704\uD574 {0}\uC5D0 \uB300\uD55C \uC2A4\uD2B8\uB9BC\uC744 \uC5EC\uB294 \uC911"}, + {"appletclassloader.filenotfound", "{0}\uC744(\uB97C) \uAC80\uC0C9\uD558\uB294 \uC911 \uD30C\uC77C\uC744 \uCC3E\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4."}, + {"appletclassloader.fileformat", "\uB85C\uB4DC \uC911 \uD30C\uC77C \uD615\uC2DD \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"}, + {"appletclassloader.fileioexception", "\uB85C\uB4DC \uC911 I/O \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"}, + {"appletclassloader.fileexception", "\uB85C\uB4DC \uC911 {0} \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {1}"}, + {"appletclassloader.filedeath", "\uB85C\uB4DC \uC911 {0}\uC774(\uAC00) \uC885\uB8CC\uB428: {1}"}, + {"appletclassloader.fileerror", "\uB85C\uB4DC \uC911 {0} \uC624\uB958 \uBC1C\uC0DD: {1}"}, + {"appletclassloader.findclass.verbose.findclass", "{0}\uC774(\uAC00) {1} \uD074\uB798\uC2A4\uB97C \uCC3E\uC2B5\uB2C8\uB2E4."}, + {"appletclassloader.findclass.verbose.openstream", "{1}\uC744(\uB97C) \uAC00\uC838\uC624\uAE30 \uC704\uD574 {0}\uC5D0 \uB300\uD55C \uC2A4\uD2B8\uB9BC\uC744 \uC5EC\uB294 \uC911"}, + {"appletclassloader.getresource.verbose.forname", "\uC774\uB984\uC5D0 \uB300\uD55C AppletClassLoader.getResource: {0}"}, + {"appletclassloader.getresource.verbose.found", "\uC2DC\uC2A4\uD15C \uB9AC\uC18C\uC2A4\uB85C {0} \uB9AC\uC18C\uC2A4\uB97C \uCC3E\uC558\uC2B5\uB2C8\uB2E4."}, + {"appletclassloader.getresourceasstream.verbose", "\uC2DC\uC2A4\uD15C \uB9AC\uC18C\uC2A4\uB85C {0} \uB9AC\uC18C\uC2A4\uB97C \uCC3E\uC558\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.runloader.err", "\uAC1D\uCCB4 \uB610\uB294 \uCF54\uB4DC \uB9E4\uAC1C\uBCC0\uC218\uC785\uB2C8\uB2E4!"}, + {"appletpanel.runloader.exception", "{0}\uC758 \uC9C1\uB82C\uD654\uB97C \uD574\uC81C\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.destroyed", "\uC560\uD50C\uB9BF\uC774 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.loaded", "\uC560\uD50C\uB9BF\uC774 \uB85C\uB4DC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.started", "\uC560\uD50C\uB9BF\uC774 \uC2DC\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.inited", "\uC560\uD50C\uB9BF\uC774 \uCD08\uAE30\uD654\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.stopped", "\uC560\uD50C\uB9BF\uC774 \uC815\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.disposed", "\uC560\uD50C\uB9BF\uC774 \uBC30\uCE58\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.nocode", "APPLET \uD0DC\uADF8\uC5D0 CODE \uB9E4\uAC1C\uBCC0\uC218\uAC00 \uB204\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.notfound", "\uB85C\uB4DC: {0} \uD074\uB798\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.nocreate", "\uB85C\uB4DC: {0}\uC744(\uB97C) \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.noconstruct", "\uB85C\uB4DC: {0}\uC740(\uB294) \uACF5\uC6A9\uC774 \uC544\uB2C8\uAC70\uB098 \uACF5\uC6A9 \uC0DD\uC131\uC790\uB97C \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.death", "\uC885\uB8CC\uB428"}, + {"appletpanel.exception", "\uC608\uC678 \uC0AC\uD56D: {0}."}, + {"appletpanel.exception2", "\uC608\uC678 \uC0AC\uD56D: {0}: {1}."}, + {"appletpanel.error", "\uC624\uB958: {0}."}, + {"appletpanel.error2", "\uC624\uB958: {0}: {1}."}, + {"appletpanel.notloaded", "\uCD08\uAE30\uD654: \uC560\uD50C\uB9BF\uC774 \uB85C\uB4DC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.notinited", "\uC2DC\uC791: \uC560\uD50C\uB9BF\uC774 \uCD08\uAE30\uD654\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.notstarted", "\uC815\uC9C0: \uC560\uD50C\uB9BF\uC774 \uC2DC\uC791\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.notstopped", "\uC0AD\uC81C: \uC560\uD50C\uB9BF\uC774 \uC815\uC9C0\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.notdestroyed", "\uBC30\uCE58: \uC560\uD50C\uB9BF\uC774 \uC0AD\uC81C\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.notdisposed", "\uB85C\uB4DC: \uC560\uD50C\uB9BF\uC774 \uBC30\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.bail", "\uC911\uB2E8\uB428: \uC911\uB2E8\uD558\uB294 \uC911\uC785\uB2C8\uB2E4."}, + {"appletpanel.filenotfound", "{0}\uC744(\uB97C) \uAC80\uC0C9\uD558\uB294 \uC911 \uD30C\uC77C\uC744 \uCC3E\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4."}, + {"appletpanel.fileformat", "\uB85C\uB4DC \uC911 \uD30C\uC77C \uD615\uC2DD \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"}, + {"appletpanel.fileioexception", "\uB85C\uB4DC \uC911 I/O \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"}, + {"appletpanel.fileexception", "\uB85C\uB4DC \uC911 {0} \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {1}"}, + {"appletpanel.filedeath", "\uB85C\uB4DC \uC911 {0}\uC774(\uAC00) \uC885\uB8CC\uB428: {1}"}, + {"appletpanel.fileerror", "\uB85C\uB4DC \uC911 {0} \uC624\uB958 \uBC1C\uC0DD: {1}"}, + {"appletpanel.badattribute.exception", "HTML \uAD6C\uBB38 \uBD84\uC11D \uC911: width/height \uC18D\uC131\uC5D0 \uB300\uD55C \uAC12\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."}, + {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream\uC5D0 \uB110\uC774 \uC544\uB2CC \uB85C\uB354\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"appletprops.title", "AppletViewer \uC18D\uC131"}, + {"appletprops.label.http.server", "HTTP \uD504\uB85D\uC2DC \uC11C\uBC84:"}, + {"appletprops.label.http.proxy", "HTTP \uD504\uB85D\uC2DC \uD3EC\uD2B8:"}, + {"appletprops.label.network", "\uB124\uD2B8\uC6CC\uD06C \uC561\uC138\uC2A4:"}, + {"appletprops.choice.network.item.none", "\uC5C6\uC74C"}, + {"appletprops.choice.network.item.applethost", "\uC560\uD50C\uB9BF \uD638\uC2A4\uD2B8"}, + {"appletprops.choice.network.item.unrestricted", "\uC81C\uD55C\uB418\uC9C0 \uC54A\uC74C"}, + {"appletprops.label.class", "\uD074\uB798\uC2A4 \uC561\uC138\uC2A4:"}, + {"appletprops.choice.class.item.restricted", "\uC81C\uD55C\uB428"}, + {"appletprops.choice.class.item.unrestricted", "\uC81C\uD55C\uB418\uC9C0 \uC54A\uC74C"}, + {"appletprops.label.unsignedapplet", "\uC11C\uBA85\uB418\uC9C0 \uC54A\uC740 \uC560\uD50C\uB9BF \uD5C8\uC6A9:"}, + {"appletprops.choice.unsignedapplet.no", "\uC544\uB2C8\uC624"}, + {"appletprops.choice.unsignedapplet.yes", "\uC608"}, + {"appletprops.button.apply", "\uC801\uC6A9"}, + {"appletprops.button.cancel", "\uCDE8\uC18C"}, + {"appletprops.button.reset", "\uC7AC\uC124\uC815"}, + {"appletprops.apply.exception", "\uC18D\uC131 \uC800\uC7A5 \uC2E4\uD328: {0}"}, /* 4066432 */ - {"appletprops.title.invalidproxy", "\uc798\ubabb\ub41c \uc785\ub825"}, - {"appletprops.label.invalidproxy", "\ud504\ub85d\uc2dc \ud3ec\ud2b8\ub294 \uc591\uc758 \uc815\uc218\uac12\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."}, - {"appletprops.button.ok", "\ud655\uc778"}, + {"appletprops.title.invalidproxy", "\uBD80\uC801\uD569\uD55C \uD56D\uBAA9"}, + {"appletprops.label.invalidproxy", "\uD504\uB85D\uC2DC \uD3EC\uD2B8\uB294 \uC591\uC758 \uC815\uC218 \uAC12\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."}, + {"appletprops.button.ok", "\uD655\uC778"}, /* end 4066432 */ - {"appletprops.prop.store", "AppletViewer\uc5d0 \ub300\ud55c \ud2b9\uc815 \uc0ac\uc6a9\uc790 \ub4f1\ub85d \uc815\ubcf4"}, - {"appletsecurityexception.checkcreateclassloader", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: classloader"}, - {"appletsecurityexception.checkaccess.thread", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: thread"}, - {"appletsecurityexception.checkaccess.threadgroup", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: threadgroup: {0}"}, - {"appletsecurityexception.checkexit", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: exit: {0}"}, - {"appletsecurityexception.checkexec", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: exec: {0}"}, - {"appletsecurityexception.checklink", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: link: {0}"}, - {"appletsecurityexception.checkpropsaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: properties"}, - {"appletsecurityexception.checkpropsaccess.key", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: properties access {0}"}, - {"appletsecurityexception.checkread.exception1", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0}, {1}"}, - {"appletsecurityexception.checkread.exception2", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: file.read: {0}"}, - {"appletsecurityexception.checkread", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: file.read: {0} == {1}"}, - {"appletsecurityexception.checkwrite.exception", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0}, {1}"}, - {"appletsecurityexception.checkwrite", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: file.write: {0} == {1}"}, - {"appletsecurityexception.checkread.fd", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: fd.read"}, - {"appletsecurityexception.checkwrite.fd", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: fd.write"}, - {"appletsecurityexception.checklisten", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: socket.listen: {0}"}, - {"appletsecurityexception.checkaccept", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: socket.accept: {0}:{1}"}, - {"appletsecurityexception.checkconnect.networknone", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: socket.connect: {0}->{1}"}, - {"appletsecurityexception.checkconnect.networkhost1", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {1}\uc744(\ub97c) \uae30\uc810\uc73c\ub85c \ud558\uc5ec {0}\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"appletsecurityexception.checkconnect.networkhost2", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0} \ub610\ub294 {1} \ud638\uc2a4\ud2b8\uc758 IP \uc8fc\uc18c\ub97c \ud574\ub3c5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. "}, - {"appletsecurityexception.checkconnect.networkhost3", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0} \ud638\uc2a4\ud2b8\uc758 IP \uc8fc\uc18c\ub97c \ud574\ub3c5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. trustProxy \ub4f1\ub85d \uc815\ubcf4\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624."}, - {"appletsecurityexception.checkconnect", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: connect: {0}->{1}"}, - {"appletsecurityexception.checkpackageaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0} \ud328\ud0a4\uc9c0\ub97c \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"appletsecurityexception.checkpackagedefinition", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0} \ud328\ud0a4\uc9c0\ub97c \uc815\uc758\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"appletsecurityexception.cannotsetfactory", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: factory\ub97c \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"appletsecurityexception.checkmemberaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: \ud56d\ubaa9 \uc561\uc138\uc2a4\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624."}, - {"appletsecurityexception.checkgetprintjob", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: getPrintJob"}, - {"appletsecurityexception.checksystemclipboardaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: getSystemClipboard"}, - {"appletsecurityexception.checkawteventqueueaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: getEventQueue"}, - {"appletsecurityexception.checksecurityaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: security operation: {0}"}, - {"appletsecurityexception.getsecuritycontext.unknown", "\uc54c \uc218 \uc5c6\ub294 \ud074\ub798\uc2a4\ub85c\ub354 \uc720\ud615\uc774\ubbc0\ub85c GetContext\ub97c \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"appletsecurityexception.checkread.unknown", "\uc54c \uc218 \uc5c6\ub294 \ud074\ub798\uc2a4\ub85c\ub354 \uc720\ud615\uc774\ubbc0\ub85c {0}\uc744 \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"appletsecurityexception.checkconnect.unknown", "\uc54c \uc218 \uc5c6\ub294 \ud074\ub798\uc2a4\ub85c\ub354 \uc720\ud615\uc774\ubbc0\ub85c checking connect\ub97c \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, + {"appletprops.prop.store", "\uC0AC\uC6A9\uC790 \uAD00\uB828 AppletViewer \uC18D\uC131"}, + {"appletsecurityexception.checkcreateclassloader", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD074\uB798\uC2A4 \uB85C\uB354"}, + {"appletsecurityexception.checkaccess.thread", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC2A4\uB808\uB4DC"}, + {"appletsecurityexception.checkaccess.threadgroup", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC2A4\uB808\uB4DC \uADF8\uB8F9: {0}"}, + {"appletsecurityexception.checkexit", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC885\uB8CC: {0}"}, + {"appletsecurityexception.checkexec", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC2E4\uD589: {0}"}, + {"appletsecurityexception.checklink", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uB9C1\uD06C: {0}"}, + {"appletsecurityexception.checkpropsaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC18D\uC131"}, + {"appletsecurityexception.checkpropsaccess.key", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC18D\uC131 \uC561\uC138\uC2A4 {0}"}, + {"appletsecurityexception.checkread.exception1", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0}, {1}"}, + {"appletsecurityexception.checkread.exception2", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: file.read: {0}"}, + {"appletsecurityexception.checkread", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: file.read: {0} == {1}"}, + {"appletsecurityexception.checkwrite.exception", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0}, {1}"}, + {"appletsecurityexception.checkwrite", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: file.write: {0} == {1}"}, + {"appletsecurityexception.checkread.fd", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: fd.read"}, + {"appletsecurityexception.checkwrite.fd", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: fd.write"}, + {"appletsecurityexception.checklisten", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: socket.listen: {0}"}, + {"appletsecurityexception.checkaccept", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: socket.accept: {0}:{1}"}, + {"appletsecurityexception.checkconnect.networknone", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: socket.connect: {0}->{1}"}, + {"appletsecurityexception.checkconnect.networkhost1", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {1}\uC5D0\uC11C {0}\uC5D0 \uC811\uC18D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"appletsecurityexception.checkconnect.networkhost2", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0} \uD638\uC2A4\uD2B8 \uB610\uB294 {1}\uC5D0 \uB300\uD55C IP\uB97C \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. "}, + {"appletsecurityexception.checkconnect.networkhost3", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0} \uD638\uC2A4\uD2B8\uC5D0 \uB300\uD55C IP\uB97C \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. trustProxy \uC18D\uC131\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624."}, + {"appletsecurityexception.checkconnect", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC811\uC18D: {0}->{1}"}, + {"appletsecurityexception.checkpackageaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD328\uD0A4\uC9C0\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC74C: {0}"}, + {"appletsecurityexception.checkpackagedefinition", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD328\uD0A4\uC9C0\uB97C \uC815\uC758\uD560 \uC218 \uC5C6\uC74C: {0}"}, + {"appletsecurityexception.cannotsetfactory", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD329\uD1A0\uB9AC\uB97C \uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"appletsecurityexception.checkmemberaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uBA64\uBC84 \uC561\uC138\uC2A4\uB97C \uD655\uC778\uD558\uC2ED\uC2DC\uC624."}, + {"appletsecurityexception.checkgetprintjob", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: getPrintJob"}, + {"appletsecurityexception.checksystemclipboardaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: getSystemClipboard"}, + {"appletsecurityexception.checkawteventqueueaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: getEventQueue"}, + {"appletsecurityexception.checksecurityaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uBCF4\uC548 \uC791\uC5C5: {0}"}, + {"appletsecurityexception.getsecuritycontext.unknown", "\uC54C \uC218 \uC5C6\uB294 \uD074\uB798\uC2A4 \uB85C\uB354 \uC720\uD615\uC785\uB2C8\uB2E4. getContext\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"appletsecurityexception.checkread.unknown", "\uC54C \uC218 \uC5C6\uB294 \uD074\uB798\uC2A4 \uB85C\uB354 \uC720\uD615\uC785\uB2C8\uB2E4. {0} \uC77D\uAE30\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"appletsecurityexception.checkconnect.unknown", "\uC54C \uC218 \uC5C6\uB294 \uD074\uB798\uC2A4 \uB85C\uB354 \uC720\uD615\uC785\uB2C8\uB2E4. \uC811\uC18D\uC744 \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_pt_BR.java b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_pt_BR.java index 46846d65c53..17cac24be96 100644 --- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_pt_BR.java +++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_pt_BR.java @@ -29,173 +29,175 @@ import java.util.ListResourceBundle; public class MsgAppletViewer_pt_BR extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { + Object[][] temp = new Object[][] { {"textframe.button.dismiss", "Rejeitar"}, - {"appletviewer.tool.title", "Visualizador de applet: {0}"}, + {"appletviewer.tool.title", "Visualizador do Applet: {0}"}, {"appletviewer.menu.applet", "Applet"}, {"appletviewer.menuitem.restart", "Reiniciar"}, {"appletviewer.menuitem.reload", "Recarregar"}, - {"appletviewer.menuitem.stop", "Parar"}, - {"appletviewer.menuitem.save", "Salvar..."}, + {"appletviewer.menuitem.stop", "Interromper"}, + {"appletviewer.menuitem.save", "Salvar"}, {"appletviewer.menuitem.start", "Iniciar"}, {"appletviewer.menuitem.clone", "Clonar..."}, - {"appletviewer.menuitem.tag", "Marca..."}, - {"appletviewer.menuitem.info", "Info..."}, + {"appletviewer.menuitem.tag", "Tag..."}, + {"appletviewer.menuitem.info", "Informa\u00E7\u00F5es..."}, {"appletviewer.menuitem.edit", "Editar"}, - {"appletviewer.menuitem.encoding", "Codifica\u00e7\u00e3o de caracteres"}, + {"appletviewer.menuitem.encoding", "Codifica\u00E7\u00E3o do Caractere"}, {"appletviewer.menuitem.print", "Imprimir..."}, {"appletviewer.menuitem.props", "Propriedades..."}, {"appletviewer.menuitem.close", "Fechar"}, {"appletviewer.menuitem.quit", "Sair"}, - {"appletviewer.label.hello", "Ol\u00e1..."}, - {"appletviewer.status.start", "iniciando applet..."}, - {"appletviewer.appletsave.filedialogtitle","Serializar applet no arquivo"}, + {"appletviewer.label.hello", "Ol\u00E1..."}, + {"appletviewer.status.start", "iniciando o applet..."}, + {"appletviewer.appletsave.filedialogtitle","Serializar Applet no Arquivo"}, {"appletviewer.appletsave.err1", "serializando um {0} para {1}"}, - {"appletviewer.appletsave.err2", "em appletSave: {0}"}, - {"appletviewer.applettag", "Marca exibida"}, - {"appletviewer.applettag.textframe", "Marca HTML do applet"}, - {"appletviewer.appletinfo.applet", "-- sem informa\u00e7\u00f5es do applet --"}, - {"appletviewer.appletinfo.param", "-- sem informa\u00e7\u00f5es do par\u00e2metro --"}, - {"appletviewer.appletinfo.textframe", "Informa\u00e7\u00f5es do applet"}, - {"appletviewer.appletprint.fail", "Falha na impress\u00e3o."}, - {"appletviewer.appletprint.finish", "Impress\u00e3o finalizada."}, - {"appletviewer.appletprint.cancel", "Impress\u00e3o cancelada."}, - {"appletviewer.appletencoding", "Codifica\u00e7\u00e3o de caracteres: {0}"}, - {"appletviewer.parse.warning.requiresname", "Aviso: a marca requer nome do atributo."}, - {"appletviewer.parse.warning.paramoutside", "Aviso: marca fora de ... ."}, - {"appletviewer.parse.warning.applet.requirescode", "Aviso: marca requer c\u00f3digo de atributo."}, - {"appletviewer.parse.warning.applet.requiresheight", "Aviso: marca requer atributo de altura."}, - {"appletviewer.parse.warning.applet.requireswidth", "Aviso: marca requer atributo de largura."}, - {"appletviewer.parse.warning.object.requirescode", "Aviso: marca requer c\u00f3digo de atributo."}, - {"appletviewer.parse.warning.object.requiresheight", "Aviso: marca requer atributo de altura."}, - {"appletviewer.parse.warning.object.requireswidth", "Aviso: marca requer atributo de largura."}, - {"appletviewer.parse.warning.embed.requirescode", "Aviso: marca requer c\u00f3digo de atributo."}, - {"appletviewer.parse.warning.embed.requiresheight", "Aviso: marca requer atributo de altura."}, - {"appletviewer.parse.warning.embed.requireswidth", "Aviso: marca requer atributo de largura."}, - {"appletviewer.parse.warning.appnotLongersupported", "Aviso: marca n\u00e3o mais suportada, usar em seu lugar:"}, - {"appletviewer.usage", "Uso: url(s) de do visualizador de applets\n\nem que inclui:\n -debug inicia o visualizador de applet no depurador Java\n -encoding especifica a codifica\u00e7\u00e3o de caracteres usada pelos arquivos HTML\n -J passa o argumento para o int\u00e9rprete de java\n\nA op\u00e7\u00e3o -J n\u00e3o \u00e9 padr\u00e3o e est\u00e1 sujeita a altera\u00e7\u00f5es sem aviso."}, - {"appletviewer.main.err.unsupportedopt", "Op\u00e7\u00e3o n\u00e3o suportada: {0}"}, - {"appletviewer.main.err.unrecognizedarg", "Argumento n\u00e3o reconhecido: {0}"}, - {"appletviewer.main.err.dupoption", "Uso duplicado da op\u00e7\u00e3o: {0}"}, - {"appletviewer.main.err.inputfile", "Nenhum arquivo de entrada especificado."}, - {"appletviewer.main.err.badurl", "URL incorreto: {0} ( {1} )"}, - {"appletviewer.main.err.io", "Exce\u00e7\u00e3o de E/S durante a leitura: {0}"}, - {"appletviewer.main.err.readablefile", "Certifique-se de que {0} seja um arquivo e seja leg\u00edvel."}, - {"appletviewer.main.err.correcturl", "{0} \u00e9 o URL correto?"}, - {"appletviewer.main.prop.store", "Propriedades espec\u00edficas do usu\u00e1rio para AppletViewer"}, - {"appletviewer.main.err.prop.cantread", "N\u00e3o \u00e9 poss\u00edvel ler o arquivo de propriedades do usu\u00e1rio: {0}"}, - {"appletviewer.main.err.prop.cantsave", "N\u00e3o \u00e9 poss\u00edvel salvar o arquivo de propriedades do usu\u00e1rio: {0}"}, - {"appletviewer.main.warn.nosecmgr", "Aviso: desabilitando a seguran\u00e7a."}, - {"appletviewer.main.debug.cantfinddebug", "N\u00e3o \u00e9 poss\u00edvel localizar o depurador!"}, - {"appletviewer.main.debug.cantfindmain", "N\u00e3o \u00e9 poss\u00edvel localizar o m\u00e9todo principal no depurador!"}, - {"appletviewer.main.debug.exceptionindebug", "Exce\u00e7\u00e3o no depurador!"}, - {"appletviewer.main.debug.cantaccess", "N\u00e3o \u00e9 poss\u00edvel acessar o depurador!"}, - {"appletviewer.main.nosecmgr", "Aviso: SecurityManager n\u00e3o instalado!"}, - {"appletviewer.main.warning", "Aviso: nenhum applet foi iniciado. Certifique-se de que a entrada contenha uma marca ."}, - {"appletviewer.main.warn.prop.overwrite", "Aviso: substituindo temporariamente a propriedade do sistema em solicita\u00e7\u00e3o do usu\u00e1rio: chave: {0} valor antigo: {1} valor novo: {2}"}, - {"appletviewer.main.warn.cantreadprops", "Aviso: n\u00e3o \u00e9 poss\u00edvel ler o arquivo de propriedades do AppletViewer: {0} usando padr\u00f5es."}, - {"appletioexception.loadclass.throw.interrupted", "carregamento de classe interrompido: {0}"}, - {"appletioexception.loadclass.throw.notloaded", "classe n\u00e3o carregada: {0}"}, - {"appletclassloader.loadcode.verbose", "Abrindo fluxo para: {0} para obter {1}"}, - {"appletclassloader.filenotfound", "Arquivo n\u00e3o encontrado ao procurar por: {0}"}, - {"appletclassloader.fileformat", "Exce\u00e7\u00e3o de formato de arquivo ao carregar: {0}"}, - {"appletclassloader.fileioexception", "Exce\u00e7\u00e3o de E/S ao carregar: {0}"}, - {"appletclassloader.fileexception", "Exce\u00e7\u00e3o {0} ao carregar: {0}"}, + {"appletviewer.appletsave.err2", "no appletSave: {0}"}, + {"appletviewer.applettag", "Tag mostrada"}, + {"appletviewer.applettag.textframe", "Tag HTML do Applet"}, + {"appletviewer.appletinfo.applet", "-- nenhuma informa\u00E7\u00E3o do applet --"}, + {"appletviewer.appletinfo.param", "-- sem informa\u00E7\u00E3o de par\u00E2metro --"}, + {"appletviewer.appletinfo.textframe", "Informa\u00E7\u00F5es do Applet"}, + {"appletviewer.appletprint.fail", "Falha na impress\u00E3o."}, + {"appletviewer.appletprint.finish", "Impress\u00E3o finalizada."}, + {"appletviewer.appletprint.cancel", "Impress\u00E3o cancelada."}, + {"appletviewer.appletencoding", "Codifica\u00E7\u00E3o de Caractere: {0}"}, + {"appletviewer.parse.warning.requiresname", "Advert\u00EAncia: a tag requer um atributo de nome."}, + {"appletviewer.parse.warning.paramoutside", "Advert\u00EAncia: a tag externa ... ."}, + {"appletviewer.parse.warning.applet.requirescode", "Advert\u00EAncia: a tag requer um atributo de c\u00F3digo."}, + {"appletviewer.parse.warning.applet.requiresheight", "Advert\u00EAncia: a tag requer um atributo de altura."}, + {"appletviewer.parse.warning.applet.requireswidth", "Advert\u00EAncia: a tag requer um atributo de largura."}, + {"appletviewer.parse.warning.object.requirescode", "Advert\u00EAncia: a tag requer um atributo de c\u00F3digo."}, + {"appletviewer.parse.warning.object.requiresheight", "Advert\u00EAncia: a tag requer um atributo de altura."}, + {"appletviewer.parse.warning.object.requireswidth", "Advert\u00EAncia: a tag requer um atributo de largura."}, + {"appletviewer.parse.warning.embed.requirescode", "Advert\u00EAncia: a tag requer um atributo de c\u00F3digo."}, + {"appletviewer.parse.warning.embed.requiresheight", "Advert\u00EAncia: a tag requer um atributo de altura."}, + {"appletviewer.parse.warning.embed.requireswidth", "Advert\u00EAncia: a tag requer um atributo de largura."}, + {"appletviewer.parse.warning.appnotLongersupported", "Advert\u00EAncia: a tag n\u00E3o \u00E9 mais suportada; use :"}, + {"appletviewer.usage", "Uso: appletviewer url(s)\n\nem que as incluem:\n -debug Inicia o visualizador do applet no depurador Java\n -encoding Especifica a codifica\u00E7\u00E3o de caractere usada pelos arquivos HTML\n -J Informa o argumento ao intepretador java\n\nA op\u00E7\u00E3o -J n\u00E3o \u00E9 padr\u00E3o e est\u00E1 sujeita \u00E0 altera\u00E7\u00E3o sem notifica\u00E7\u00E3o."}, + {"appletviewer.main.err.unsupportedopt", "Op\u00E7\u00E3o n\u00E3o suportada: {0}"}, + {"appletviewer.main.err.unrecognizedarg", "Argumento n\u00E3o reconhecido: {0}"}, + {"appletviewer.main.err.dupoption", "Uso duplicado da op\u00E7\u00E3o: {0}"}, + {"appletviewer.main.err.inputfile", "Nenhum arquivo de entrada especificado."}, + {"appletviewer.main.err.badurl", "URL Inv\u00E1lido: {0} ( {1} )"}, + {"appletviewer.main.err.io", "Exce\u00E7\u00E3o de E/S ao ler: {0}"}, + {"appletviewer.main.err.readablefile", "Certifique-se de que {0} seja um arquivo e seja leg\u00EDvel."}, + {"appletviewer.main.err.correcturl", "O URL {0} est\u00E1 correto?"}, + {"appletviewer.main.prop.store", "Propriedades espec\u00EDficas do usu\u00E1rio do AppletViewer"}, + {"appletviewer.main.err.prop.cantread", "N\u00E3o \u00E9 poss\u00EDvel ler o arquivo de propriedades do usu\u00E1rio: {0}"}, + {"appletviewer.main.err.prop.cantsave", "N\u00E3o \u00E9 poss\u00EDvel salvar o arquivo de propriedades do usu\u00E1rio: {0}"}, + {"appletviewer.main.warn.nosecmgr", "Advert\u00EAncia: desativando a seguran\u00E7a."}, + {"appletviewer.main.debug.cantfinddebug", "N\u00E3o \u00E9 poss\u00EDvel localizar o depurador!"}, + {"appletviewer.main.debug.cantfindmain", "N\u00E3o \u00E9 poss\u00EDvel localizar o m\u00E9todo principal no depurador!"}, + {"appletviewer.main.debug.exceptionindebug", "Exce\u00E7\u00E3o no depurador!"}, + {"appletviewer.main.debug.cantaccess", "N\u00E3o \u00E9 poss\u00EDvel acessar o depurador!"}, + {"appletviewer.main.nosecmgr", "Advert\u00EAncia: SecurityManager n\u00E3o instalado!"}, + {"appletviewer.main.warning", "Advert\u00EAncia: Nenhum applet iniciado. Certifique-se de que a entrada contenha uma tag ."}, + {"appletviewer.main.warn.prop.overwrite", "Advert\u00EAncia: Substituindo a propriedade do sistema temporariamente a pedido do usu\u00E1rio: chave: {0} valor antigo: {1} valor novo: {2}"}, + {"appletviewer.main.warn.cantreadprops", "Advert\u00EAncia: N\u00E3o \u00E9 poss\u00EDvel ler o arquivo de propriedades AppletViewer: {0} Usando defaults."}, + {"appletioexception.loadclass.throw.interrupted", "carregamento de classe interrompido: {0}"}, + {"appletioexception.loadclass.throw.notloaded", "classe n\u00E3o carregada: {0}"}, + {"appletclassloader.loadcode.verbose", "Fluxo de abertura para: {0} para obter {1}"}, + {"appletclassloader.filenotfound", "Arquivo n\u00E3o encontrado ao procurar: {0}"}, + {"appletclassloader.fileformat", "Exce\u00E7\u00E3o de formato do arquivo ao carregar: {0}"}, + {"appletclassloader.fileioexception", "Exce\u00E7\u00E3o de E/S ao carregar: {0}"}, + {"appletclassloader.fileexception", "exce\u00E7\u00E3o de {0} ao carregar: {1}"}, {"appletclassloader.filedeath", "{0} eliminado ao carregar: {1}"}, - {"appletclassloader.fileerror", "Erro {0} ao carregar: {1}"}, - {"appletclassloader.findclass.verbose.findclass", "{0} encontra classe {1}"}, - {"appletclassloader.findclass.verbose.openstream", "Abrindo fluxo para: {0} para obter {1}"}, + {"appletclassloader.fileerror", "erro de {0} ao carregar: {1}"}, + {"appletclassloader.findclass.verbose.findclass", "{0} localizar classe {1}"}, + {"appletclassloader.findclass.verbose.openstream", "Fluxo de abertura para: {0} para obter {1}"}, {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource do nome: {0}"}, {"appletclassloader.getresource.verbose.found", "Recurso encontrado: {0} como um recurso do sistema"}, {"appletclassloader.getresourceasstream.verbose", "Recurso encontrado: {0} como um recurso do sistema"}, - {"appletpanel.runloader.err", "Par\u00e2metro de c\u00f3digo ou objeto!"}, - {"appletpanel.runloader.exception", "exce\u00e7\u00e3o ao desserializar {0}"}, - {"appletpanel.destroyed", "Applet destru\u00eddo."}, + {"appletpanel.runloader.err", "Par\u00E2metro de c\u00F3digo ou objeto!"}, + {"appletpanel.runloader.exception", "exce\u00E7\u00E3o ao desserializar {0}"}, + {"appletpanel.destroyed", "Applet destru\u00EDdo."}, {"appletpanel.loaded", "Applet carregado."}, {"appletpanel.started", "Applet iniciado."}, {"appletpanel.inited", "Applet inicializado."}, {"appletpanel.stopped", "Applet interrompido."}, {"appletpanel.disposed", "Applet descartado."}, - {"appletpanel.nocode", "Marca APPLET ausente no par\u00e2metro CODE."}, - {"appletpanel.notfound", "carregar: classe {0} n\u00e3o encontrada."}, - {"appletpanel.nocreate", "carregar: {0} n\u00e3o pode ser instanciado."}, - {"appletpanel.noconstruct", "carregar: {0} n\u00e3o \u00e9 p\u00fablico ou n\u00e3o possui um construtor p\u00fablico."}, + {"appletpanel.nocode", "A tag APPLET n\u00E3o encontrou o par\u00E2metro CODE."}, + {"appletpanel.notfound", "carga: classe {0} n\u00E3o encontrada."}, + {"appletpanel.nocreate", "carga: {0} n\u00E3o pode ser instanciada."}, + {"appletpanel.noconstruct", "carga: {0} n\u00E3o \u00E9 p\u00FAblica ou n\u00E3o tem construtor p\u00FAblico."}, {"appletpanel.death", "eliminado"}, - {"appletpanel.exception", "exce\u00e7\u00e3o: {0}."}, - {"appletpanel.exception2", "exce\u00e7\u00e3o: {0}: {1}."}, + {"appletpanel.exception", "exce\u00E7\u00E3o: {0}."}, + {"appletpanel.exception2", "exce\u00E7\u00E3o: {0}: {1}."}, {"appletpanel.error", "erro: {0}."}, {"appletpanel.error2", "erro: {0}: {1}."}, - {"appletpanel.notloaded", "Inicializar: applet n\u00e3o carregado."}, - {"appletpanel.notinited", "Iniciar: applet n\u00e3o inicializado."}, - {"appletpanel.notstarted", "Parar: applet n\u00e3o iniciado."}, - {"appletpanel.notstopped", "Destruir: applet n\u00e3o interrompido."}, - {"appletpanel.notdestroyed", "Descartar: applet n\u00e3o destru\u00eddo."}, - {"appletpanel.notdisposed", "Carregar: applet n\u00e3o descartado."}, - {"appletpanel.bail", "Interrompido: salvando."}, - {"appletpanel.filenotfound", "Arquivo n\u00e3o encontrado ao procurar por: {0}"}, - {"appletpanel.fileformat", "Exce\u00e7\u00e3o de formato de arquivo ao carregar: {0}"}, - {"appletpanel.fileioexception", "Exce\u00e7\u00e3o de E/S ao carregar: {0}"}, - {"appletpanel.fileexception", "Exce\u00e7\u00e3o {0} ao carregar: {0}"}, + {"appletpanel.notloaded", "Inic: applet n\u00E3o carregado."}, + {"appletpanel.notinited", "Iniciar: applet n\u00E3o inicializado."}, + {"appletpanel.notstarted", "Interromper: applet n\u00E3o inicializado."}, + {"appletpanel.notstopped", "Destruir: applet n\u00E3o interrompido."}, + {"appletpanel.notdestroyed", "Descartar: applet n\u00E3o destru\u00EDdo."}, + {"appletpanel.notdisposed", "Carregar: applet n\u00E3o descartado."}, + {"appletpanel.bail", "Interrompido: esvaziando."}, + {"appletpanel.filenotfound", "Arquivo n\u00E3o encontrado ao procurar: {0}"}, + {"appletpanel.fileformat", "Exce\u00E7\u00E3o de formato do arquivo ao carregar: {0}"}, + {"appletpanel.fileioexception", "Exce\u00E7\u00E3o de E/S ao carregar: {0}"}, + {"appletpanel.fileexception", "exce\u00E7\u00E3o de {0} ao carregar: {1}"}, {"appletpanel.filedeath", "{0} eliminado ao carregar: {1}"}, - {"appletpanel.fileerror", "Erro {0} ao carregar: {1}"}, - {"appletpanel.badattribute.exception", "An\u00e1lise de HTML: valor incorreto do atributo de largura/altura"}, - {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream requer carregador n\u00e3o nulo"}, + {"appletpanel.fileerror", "erro de {0} ao carregar: {1}"}, + {"appletpanel.badattribute.exception", "Parse de HTML: valor incorreto do atributo de largura/altura"}, + {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream requer um carregador n\u00E3o nulo"}, {"appletprops.title", "Propriedades do AppletViewer"}, - {"appletprops.label.http.server", "Servidor proxy de http:"}, - {"appletprops.label.http.proxy", "Porta do proxy de http:"}, - {"appletprops.label.network", "Acesso \u00e0 rede:"}, + {"appletprops.label.http.server", "Servidor proxy Http:"}, + {"appletprops.label.http.proxy", "Porta proxy Http:"}, + {"appletprops.label.network", "Acesso de rede:"}, {"appletprops.choice.network.item.none", "Nenhum"}, - {"appletprops.choice.network.item.applethost", "Host do applet"}, - {"appletprops.choice.network.item.unrestricted", "N\u00e3o registrado"}, - {"appletprops.label.class", "Acesso \u00e0 classe:"}, + {"appletprops.choice.network.item.applethost", "Host do Applet"}, + {"appletprops.choice.network.item.unrestricted", "Irrestrito"}, + {"appletprops.label.class", "Acesso \u00E0 classe:"}, {"appletprops.choice.class.item.restricted", "Restrito"}, - {"appletprops.choice.class.item.unrestricted", "N\u00e3o registrado"}, - {"appletprops.label.unsignedapplet", "Permitir applets n\u00e3o assinados:"}, - {"appletprops.choice.unsignedapplet.no", "N\u00e3o"}, + {"appletprops.choice.class.item.unrestricted", "Irrestrito"}, + {"appletprops.label.unsignedapplet", "Permitir applets n\u00E3o assinados:"}, + {"appletprops.choice.unsignedapplet.no", "N\u00E3o"}, {"appletprops.choice.unsignedapplet.yes", "Sim"}, {"appletprops.button.apply", "Aplicar"}, {"appletprops.button.cancel", "Cancelar"}, {"appletprops.button.reset", "Redefinir"}, - {"appletprops.apply.exception", "Falha ao salvar propriedades: {0}"}, + {"appletprops.apply.exception", "Falha ao salvar as propriedades: {0}"}, /* 4066432 */ - {"appletprops.title.invalidproxy", "Entrada inv\u00e1lida"}, - {"appletprops.label.invalidproxy", "A porta do proxy deve ser um valor inteiro positivo."}, - {"appletprops.button.ok", "OK"}, - /* end 4066432 */ - {"appletprops.prop.store", "Propriedades espec\u00edficas do usu\u00e1rio para AppletViewer"}, - {"appletsecurityexception.checkcreateclassloader", "Exce\u00e7\u00e3o de seguran\u00e7a: classloader"}, - {"appletsecurityexception.checkaccess.thread", "Exce\u00e7\u00e3o de seguran\u00e7a: thread"}, - {"appletsecurityexception.checkaccess.threadgroup", "Exce\u00e7\u00e3o de seguran\u00e7a: threadgroup: {0}"}, - {"appletsecurityexception.checkexit", "Exce\u00e7\u00e3o de seguran\u00e7a: exit: {0}"}, - {"appletsecurityexception.checkexec", "Exce\u00e7\u00e3o de seguran\u00e7a: exec: {0}"}, - {"appletsecurityexception.checklink", "Exce\u00e7\u00e3o de seguran\u00e7a: link: {0}"}, - {"appletsecurityexception.checkpropsaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: properties"}, - {"appletsecurityexception.checkpropsaccess.key", "Exce\u00e7\u00e3o de seguran\u00e7a: properties access {0}"}, - {"appletsecurityexception.checkread.exception1", "Exce\u00e7\u00e3o de seguran\u00e7a: {0}, {1}"}, - {"appletsecurityexception.checkread.exception2", "Exce\u00e7\u00e3o de seguran\u00e7a: file.read: {0}"}, - {"appletsecurityexception.checkread", "Exce\u00e7\u00e3o de seguran\u00e7a: file.read: {0} == {1}"}, - {"appletsecurityexception.checkwrite.exception", "Exce\u00e7\u00e3o de seguran\u00e7a: {0}, {1}"}, - {"appletsecurityexception.checkwrite", "Exce\u00e7\u00e3o de seguran\u00e7a: file.write: {0} == {1}"}, - {"appletsecurityexception.checkread.fd", "Exce\u00e7\u00e3o de seguran\u00e7a: fd.read"}, - {"appletsecurityexception.checkwrite.fd", "Exce\u00e7\u00e3o de seguran\u00e7a: fd.write"}, - {"appletsecurityexception.checklisten", "Exce\u00e7\u00e3o de seguran\u00e7a: socket.listen: {0}"}, - {"appletsecurityexception.checkaccept", "Exce\u00e7\u00e3o de seguran\u00e7a: socket.accept: {0} == {1}"}, - {"appletsecurityexception.checkconnect.networknone", "Exce\u00e7\u00e3o de seguran\u00e7a: socket.connect: {0} == {1}"}, - {"appletsecurityexception.checkconnect.networkhost1", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o foi poss\u00edvel conectar a {0} com a origem de {1}."}, - {"appletsecurityexception.checkconnect.networkhost2", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o foi poss\u00edvel resolver o IP para o host {0} ou para {1}. "}, - {"appletsecurityexception.checkconnect.networkhost3", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o foi poss\u00edvel resolver o IP para o host {0}. Consulte a propriedade trustProxy."}, - {"appletsecurityexception.checkconnect", "Exce\u00e7\u00e3o de seguran\u00e7a: connect: {0}->{1}"}, - {"appletsecurityexception.checkpackageaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o \u00e9 poss\u00edvel acessar o pacote: {0}"}, - {"appletsecurityexception.checkpackagedefinition", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o \u00e9 poss\u00edvel definir o pacote: {0}"}, - {"appletsecurityexception.cannotsetfactory", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o \u00e9 poss\u00edvel definir a f\u00e1brica"}, - {"appletsecurityexception.checkmemberaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: verificar acesso de membro"}, - {"appletsecurityexception.checkgetprintjob", "Exce\u00e7\u00e3o de seguran\u00e7a: getPrintJob"}, - {"appletsecurityexception.checksystemclipboardaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: getSystemClipboard"}, - {"appletsecurityexception.checkawteventqueueaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: getEventQueue"}, - {"appletsecurityexception.checksecurityaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: opera\u00e7\u00e3o de seguran\u00e7a: {0}"}, - {"appletsecurityexception.getsecuritycontext.unknown", "tipo desconhecido de carregador de classe. n\u00e3o \u00e9 poss\u00edvel verificar para getContext"}, - {"appletsecurityexception.checkread.unknown", "tipo desconhecido de carregador de classe. n\u00e3o \u00e9 poss\u00edvel verificar para verifica\u00e7\u00e3o de leitura {0}"}, - {"appletsecurityexception.checkconnect.unknown", "tipo desconhecido de carregador de classe. n\u00e3o \u00e9 poss\u00edvel verificar para verifica\u00e7\u00e3o de conex\u00e3o"}, + {"appletprops.title.invalidproxy", "Entrada Inv\u00E1lida"}, + {"appletprops.label.invalidproxy", "A Porta Proxy deve ser um valor inteiro positivo."}, + {"appletprops.button.ok", "OK"}, + /* end 4066432 */ + {"appletprops.prop.store", "Propriedades espec\u00EDficas do usu\u00E1rio do AppletViewer"}, + {"appletsecurityexception.checkcreateclassloader", "Exce\u00E7\u00E3o de Seguran\u00E7a: carregador de classes"}, + {"appletsecurityexception.checkaccess.thread", "Exce\u00E7\u00E3o de Seguran\u00E7a: thread"}, + {"appletsecurityexception.checkaccess.threadgroup", "Exce\u00E7\u00E3o de Seguran\u00E7a: grupo de threads: {0}"}, + {"appletsecurityexception.checkexit", "Exce\u00E7\u00E3o de Seguran\u00E7a: sa\u00EDda: {0}"}, + {"appletsecurityexception.checkexec", "Exce\u00E7\u00E3o de Seguran\u00E7a: exec.: {0}"}, + {"appletsecurityexception.checklink", "Exce\u00E7\u00E3o de Seguran\u00E7a: link: {0}"}, + {"appletsecurityexception.checkpropsaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: propriedades"}, + {"appletsecurityexception.checkpropsaccess.key", "Exce\u00E7\u00E3o de Seguran\u00E7a: acesso \u00E0s propriedades {0}"}, + {"appletsecurityexception.checkread.exception1", "Exce\u00E7\u00E3o de Seguran\u00E7a: {0}, {1}"}, + {"appletsecurityexception.checkread.exception2", "Exce\u00E7\u00E3o de Seguran\u00E7a: file.read: {0}"}, + {"appletsecurityexception.checkread", "Exce\u00E7\u00E3o de Seguran\u00E7a: file.read: {0} == {1}"}, + {"appletsecurityexception.checkwrite.exception", "Exce\u00E7\u00E3o de Seguran\u00E7a: {0}, {1}"}, + {"appletsecurityexception.checkwrite", "Exce\u00E7\u00E3o de Seguran\u00E7a: file.write: {0} == {1}"}, + {"appletsecurityexception.checkread.fd", "Exce\u00E7\u00E3o de Seguran\u00E7a: fd.read"}, + {"appletsecurityexception.checkwrite.fd", "Exce\u00E7\u00E3o de Seguran\u00E7a: fd.write"}, + {"appletsecurityexception.checklisten", "Exce\u00E7\u00E3o de Seguran\u00E7a: socket.listen: {0}"}, + {"appletsecurityexception.checkaccept", "Exce\u00E7\u00E3o de Seguran\u00E7a: socket.accept: {0}:{1}"}, + {"appletsecurityexception.checkconnect.networknone", "Exce\u00E7\u00E3o de Seguran\u00E7a: socket.connect: {0}->{1}"}, + {"appletsecurityexception.checkconnect.networkhost1", "Exce\u00E7\u00E3o de Seguran\u00E7a: N\u00E3o foi poss\u00EDvel estabelecer conex\u00E3o com {0} com a origem de {1}."}, + {"appletsecurityexception.checkconnect.networkhost2", "Exce\u00E7\u00E3o de Seguran\u00E7a: N\u00E3o foi poss\u00EDvel resolver o IP para o host {0} ou para {1}. "}, + {"appletsecurityexception.checkconnect.networkhost3", "Exce\u00E7\u00E3o de Seguran\u00E7a: N\u00E3o foi poss\u00EDvel resolver o IP para o host {0}. Consulte a propriedade trustProxy."}, + {"appletsecurityexception.checkconnect", "Exce\u00E7\u00E3o de Seguran\u00E7a: conectar: {0}->{1}"}, + {"appletsecurityexception.checkpackageaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: n\u00E3o \u00E9 poss\u00EDvel acessar o pacote: {0}"}, + {"appletsecurityexception.checkpackagedefinition", "Exce\u00E7\u00E3o de Seguran\u00E7a: n\u00E3o \u00E9 poss\u00EDvel definir o pacote: {0}"}, + {"appletsecurityexception.cannotsetfactory", "Exce\u00E7\u00E3o de Seguran\u00E7a: n\u00E3o \u00E9 poss\u00EDvel definir o factory"}, + {"appletsecurityexception.checkmemberaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: verificar acesso do membro"}, + {"appletsecurityexception.checkgetprintjob", "Exce\u00E7\u00E3o de Seguran\u00E7a: getPrintJob"}, + {"appletsecurityexception.checksystemclipboardaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: getSystemClipboard"}, + {"appletsecurityexception.checkawteventqueueaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: getEventQueue"}, + {"appletsecurityexception.checksecurityaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: opera\u00E7\u00E3o de seguran\u00E7a: {0}"}, + {"appletsecurityexception.getsecuritycontext.unknown", "tipo de carregador de classe desconhecido. n\u00E3o \u00E9 poss\u00EDvel verificar getContext"}, + {"appletsecurityexception.checkread.unknown", "tipo de carregador de classe desconhecido. n\u00E3o \u00E9 poss\u00EDvel verificar a leitura {0}"}, + {"appletsecurityexception.checkconnect.unknown", "tipo de carregador de classe desconhecido. n\u00E3o \u00E9 poss\u00EDvel verificar a conex\u00E3o"}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java index d42c9e23419..526f52e3843 100644 --- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java +++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -29,173 +29,175 @@ import java.util.ListResourceBundle; public class MsgAppletViewer_sv extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"textframe.button.dismiss", "St\u00e4ng"}, + Object[][] temp = new Object[][] { + {"textframe.button.dismiss", "St\u00E4ng"}, {"appletviewer.tool.title", "Applet Viewer: {0}"}, {"appletviewer.menu.applet", "Applet"}, {"appletviewer.menuitem.restart", "Starta om"}, - {"appletviewer.menuitem.reload", "L\u00e4s in igen"}, - {"appletviewer.menuitem.stop", "Stoppa"}, - {"appletviewer.menuitem.save", "Spara ..."}, + {"appletviewer.menuitem.reload", "Ladda om"}, + {"appletviewer.menuitem.stop", "Stopp"}, + {"appletviewer.menuitem.save", "Spara..."}, {"appletviewer.menuitem.start", "Starta"}, - {"appletviewer.menuitem.clone", "Klona ..."}, - {"appletviewer.menuitem.tag", "Tagga ..."}, - {"appletviewer.menuitem.info", "Info ..."}, + {"appletviewer.menuitem.clone", "Klona..."}, + {"appletviewer.menuitem.tag", "Tagg..."}, + {"appletviewer.menuitem.info", "Information..."}, {"appletviewer.menuitem.edit", "Redigera"}, {"appletviewer.menuitem.encoding", "Teckenkodning"}, - {"appletviewer.menuitem.print", "Skriv ut ..."}, - {"appletviewer.menuitem.props", "Egenskaper ..."}, - {"appletviewer.menuitem.close", "St\u00e4ng"}, + {"appletviewer.menuitem.print", "Skriv ut..."}, + {"appletviewer.menuitem.props", "Egenskaper..."}, + {"appletviewer.menuitem.close", "St\u00E4ng"}, {"appletviewer.menuitem.quit", "Avsluta"}, - {"appletviewer.label.hello", "Hall\u00e5 ..."}, - {"appletviewer.status.start", "startar applet ..."}, - {"appletviewer.appletsave.filedialogtitle","Ordna appletar seriellt i filen"}, - {"appletviewer.appletsave.err1", "serialiserar en {0} till {1}"}, + {"appletviewer.label.hello", "Hej..."}, + {"appletviewer.status.start", "startar applet..."}, + {"appletviewer.appletsave.filedialogtitle","Serialisera applet till fil"}, + {"appletviewer.appletsave.err1", "serialiserar {0} till {1}"}, {"appletviewer.appletsave.err2", "i appletSave: {0}"}, - {"appletviewer.applettag", "Visad tagg"}, - {"appletviewer.applettag.textframe", "HTML-tagg f\u00f6r applet"}, - {"appletviewer.appletinfo.applet", "-- ingen applet-info --"}, - {"appletviewer.appletinfo.param", "-- ingen parameterinfo --"}, - {"appletviewer.appletinfo.textframe", "Applet-info"}, - {"appletviewer.appletprint.fail", "Utskrift misslyckades."}, - {"appletviewer.appletprint.finish", "Utskriften \u00e4r klar."}, - {"appletviewer.appletprint.cancel", "Utskriften avbr\u00f6ts."}, + {"appletviewer.applettag", "Tagg visas"}, + {"appletviewer.applettag.textframe", "HTML-tagg f\u00F6r applet"}, + {"appletviewer.appletinfo.applet", "-- ingen appletinformation --"}, + {"appletviewer.appletinfo.param", "-- ingen parameterinformation --"}, + {"appletviewer.appletinfo.textframe", "Appletinformation"}, + {"appletviewer.appletprint.fail", "Kunde inte skriva ut."}, + {"appletviewer.appletprint.finish", "Utskriften klar."}, + {"appletviewer.appletprint.cancel", "Utskriften avbruten."}, {"appletviewer.appletencoding", "Teckenkodning: {0}"}, - {"appletviewer.parse.warning.requiresname", "Varning: Taggen kr\u00e4ver ett namnattribut."}, - {"appletviewer.parse.warning.paramoutside", "Varning: Taggen utanf\u00f6r ... ."}, - {"appletviewer.parse.warning.applet.requirescode", "Varning: Taggen kr\u00e4ver kodattribut."}, - {"appletviewer.parse.warning.applet.requiresheight", "Varning: Taggen kr\u00e4ver h\u00f6jdattribut."}, - {"appletviewer.parse.warning.applet.requireswidth", "Varning: Taggen kr\u00e4ver breddattribut."}, - {"appletviewer.parse.warning.object.requirescode", "Varning: Taggen kr\u00e4ver kodattribut."}, - {"appletviewer.parse.warning.object.requiresheight", "Varning: Taggen kr\u00e4ver h\u00f6jdattribut."}, - {"appletviewer.parse.warning.object.requireswidth", "Varning: koden kr\u00e4ver breddattribut."}, - {"appletviewer.parse.warning.embed.requirescode", "Varning: koden kr\u00e4ver programkodattribut."}, - {"appletviewer.parse.warning.embed.requiresheight", "Varning: koden kr\u00e4ver h\u00f6jdattribut."}, - {"appletviewer.parse.warning.embed.requireswidth", "Varning: koden kr\u00e4ver breddattribut."}, - {"appletviewer.parse.warning.appnotLongersupported", "Varning: Taggen st\u00f6ds inte l\u00e4ngre, anv\u00e4nd ist\u00e4llet:"}, - {"appletviewer.usage", "Syntax: appletviewer url(s)\n\nd\u00e4r omfattar:\n -debug Starta applet-granskaren i Java-fels\u00f6karen\n -encoding Ange teckenkodningen som anv\u00e4nds av HTML-filer\n -J Skicka argumentet till Java-tolken\n\nAlternativet -J \u00e4r inte ett standardalternativ och kan \u00e4ndras utan f\u00f6reg\u00e5ende meddelande."}, - {"appletviewer.main.err.unsupportedopt", "Alternativet st\u00f6ds inte: {0}"}, - {"appletviewer.main.err.unrecognizedarg", "Ok\u00e4nt argument: {0}"}, - {"appletviewer.main.err.dupoption", "Alternativet \u00e4r duplicerat: {0}"}, - {"appletviewer.main.err.inputfile", "Inga indatafiler har angetts."}, + {"appletviewer.parse.warning.requiresname", "Varning: -taggen kr\u00E4ver ett namnattribut."}, + {"appletviewer.parse.warning.paramoutside", "Varning: -taggen finns utanf\u00F6r ... ."}, + {"appletviewer.parse.warning.applet.requirescode", "Varning: -taggen kr\u00E4ver ett kodattribut."}, + {"appletviewer.parse.warning.applet.requiresheight", "Varning: -taggen kr\u00E4ver ett h\u00F6jdattribut."}, + {"appletviewer.parse.warning.applet.requireswidth", "Varning: -taggen kr\u00E4ver ett breddattribut."}, + {"appletviewer.parse.warning.object.requirescode", "Varning: -taggen kr\u00E4ver ett kodattribut."}, + {"appletviewer.parse.warning.object.requiresheight", "Varning: -taggen kr\u00E4ver ett h\u00F6jdattribut."}, + {"appletviewer.parse.warning.object.requireswidth", "Varning: -taggen kr\u00E4ver ett breddattribut."}, + {"appletviewer.parse.warning.embed.requirescode", "Varning: -taggen kr\u00E4ver ett kodattribut."}, + {"appletviewer.parse.warning.embed.requiresheight", "Varning: -taggen kr\u00E4ver ett h\u00F6jdattribut."}, + {"appletviewer.parse.warning.embed.requireswidth", "Varning: -taggen kr\u00E4ver ett breddattribut."}, + {"appletviewer.parse.warning.appnotLongersupported", "Varning: -taggen st\u00F6ds inte l\u00E4ngre, anv\u00E4nd ist\u00E4llet:"}, + {"appletviewer.usage", "Syntax: URL:er f\u00F6r appletviewer-.\n\nF\u00F6ljande finns:\n -debug Startar appletvisning i Java-fels\u00F6kningen\n -encoding Anger teckenkodning som anv\u00E4nds i HTML-filer\n -J \u00D6verf\u00F6r argument till Java-tolkningen\n\nAlternativet -J \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande."}, + {"appletviewer.main.err.unsupportedopt", "Alternativ som inte st\u00F6ds: {0}"}, + {"appletviewer.main.err.unrecognizedarg", "Ok\u00E4nt argument: {0}"}, + {"appletviewer.main.err.dupoption", "Duplicerat alternativ: {0}"}, + {"appletviewer.main.err.inputfile", "Inga angivna indatafiler."}, {"appletviewer.main.err.badurl", "Felaktig URL: {0} ( {1} )"}, - {"appletviewer.main.err.io", "I/O-undantag vid l\u00e4sning: {0}"}, - {"appletviewer.main.err.readablefile", "Kontrollera att {0} \u00e4r en l\u00e4sbar fil."}, - {"appletviewer.main.err.correcturl", "\u00c4r {0} r\u00e4tt URL?"}, - {"appletviewer.main.prop.store", "Anv\u00e4ndarspecifika egenskaper f\u00f6r AppletViewer"}, - {"appletviewer.main.err.prop.cantread", "Det g\u00e5r inte att l\u00e4sa filen med anv\u00e4ndaregenskaper: {0}"}, - {"appletviewer.main.err.prop.cantsave", "Det g\u00e5r inte att spara filen med anv\u00e4ndaregenskaper: {0}"}, - {"appletviewer.main.warn.nosecmgr", "Varning: avaktiverar s\u00e4kerheten."}, - {"appletviewer.main.debug.cantfinddebug", "Det g\u00e5r inte att hitta fels\u00f6karen!"}, - {"appletviewer.main.debug.cantfindmain", "Det g\u00e5r inte att hitta huvudmetod i fels\u00f6karen!"}, - {"appletviewer.main.debug.exceptionindebug", "Undantagsavbrott i fels\u00f6karen!"}, - {"appletviewer.main.debug.cantaccess", "Det g\u00e5r inte att h\u00e4mta fels\u00f6karen!"}, + {"appletviewer.main.err.io", "I/O-undantag vid l\u00E4sning: {0}"}, + {"appletviewer.main.err.readablefile", "Kontrollera att {0} \u00E4r en fil som \u00E4r l\u00E4sbar."}, + {"appletviewer.main.err.correcturl", "\u00C4r {0} den korrekta URL:en?"}, + {"appletviewer.main.prop.store", "Anv\u00E4ndarspecifika egenskaper f\u00F6r AppletViewer"}, + {"appletviewer.main.err.prop.cantread", "Kan inte l\u00E4sa egenskapsfilen: {0}"}, + {"appletviewer.main.err.prop.cantsave", "Kan inte spara egenskapsfilen: {0}"}, + {"appletviewer.main.warn.nosecmgr", "Varning: s\u00E4kerheten inaktiveras."}, + {"appletviewer.main.debug.cantfinddebug", "Hittar inte fels\u00F6kningsprogrammet!"}, + {"appletviewer.main.debug.cantfindmain", "Hittar inte huvudmetoden i fels\u00F6kningsprogrammet!"}, + {"appletviewer.main.debug.exceptionindebug", "Undantag i fels\u00F6kningsprogrammet!"}, + {"appletviewer.main.debug.cantaccess", "Det finns ingen \u00E5tkomst till fels\u00F6kningsprogrammet!"}, {"appletviewer.main.nosecmgr", "Varning: SecurityManager har inte installerats!"}, - {"appletviewer.main.warning", "Varning: Inga appletar startades. Kontrollera att indata inneh\u00e5ller en -tagg."}, - {"appletviewer.main.warn.prop.overwrite", "Varning: Skriver tillf\u00e4lligt \u00f6ver systemegenskap p\u00e5 anv\u00e4ndarens beg\u00e4ran: nyckel: {0} gammalt v\u00e4rde: {1} nytt v\u00e4rde: {2}"}, - {"appletviewer.main.warn.cantreadprops", "Varning: Det g\u00e5r inte att l\u00e4sa egenskapsfilen till AppletViewer: {0} Anv\u00e4nder standardv\u00e4rden."}, - {"appletioexception.loadclass.throw.interrupted", "klassinl\u00e4sning avbr\u00f6ts: {0}"}, - {"appletioexception.loadclass.throw.notloaded", "klassen har inte l\u00e4sts in: {0}"}, - {"appletclassloader.loadcode.verbose", "\u00d6ppnar str\u00f6m till: {0} f\u00f6r att f\u00e5 {1}"}, - {"appletclassloader.filenotfound", "Fil saknas vid s\u00f6kning efter: {0}"}, - {"appletclassloader.fileformat", "Filformatundantag vid inl\u00e4sning: {0}"}, - {"appletclassloader.fileioexception", "I/O-undantag vid inl\u00e4sning: {0}"}, - {"appletclassloader.fileexception", "{0}-undantag vid inl\u00e4sning: {1}"}, - {"appletclassloader.filedeath", "{0} avslutades vid inl\u00e4sning: {1}"}, - {"appletclassloader.fileerror", "{0} fel vid inl\u00e4sning: {1}"}, - {"appletclassloader.findclass.verbose.findclass", "{0} s\u00f6k klass {1}"}, - {"appletclassloader.findclass.verbose.openstream", "\u00d6ppnar str\u00f6m till: {0} f\u00f6r att f\u00e5 {1}"}, - {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource f\u00f6r namnet {0}"}, - {"appletclassloader.getresource.verbose.found", "Hittade resursen {0} som en systemresurs"}, - {"appletclassloader.getresourceasstream.verbose", "Hittade resursen {0} som en systemresurs"}, + {"appletviewer.main.warning", "Varning: Inga appletar har startats. Kontrollera att indata inneh\u00E5ller -tagg."}, + {"appletviewer.main.warn.prop.overwrite", "Varning: Skriver tillf\u00E4lligt \u00F6ver systemegenskap enligt beg\u00E4ran fr\u00E5n anv\u00E4ndare: nyckel: {0} gammalt v\u00E4rde: {1} nytt v\u00E4rde: {2}"}, + {"appletviewer.main.warn.cantreadprops", "Varning: Kan inte l\u00E4sa egenskapsfil f\u00F6r AppletViewer: {0} Standardv\u00E4rden anv\u00E4nds."}, + {"appletioexception.loadclass.throw.interrupted", "klassinl\u00E4sning avbr\u00F6ts: {0}"}, + {"appletioexception.loadclass.throw.notloaded", "klass inte inl\u00E4st: {0}"}, + {"appletclassloader.loadcode.verbose", "\u00D6ppnar str\u00F6m till: {0} f\u00F6r h\u00E4mtning av {1}"}, + {"appletclassloader.filenotfound", "Hittade inte fil vid s\u00F6kning efter: {0}"}, + {"appletclassloader.fileformat", "Undantag av filformat vid l\u00E4sning av: {0}"}, + {"appletclassloader.fileioexception", "I/O-undantag vid l\u00E4sning: {0}"}, + {"appletclassloader.fileexception", "{0} undantag vid l\u00E4sning: {1}"}, + {"appletclassloader.filedeath", "{0} avslutad vid l\u00E4sning: {1}"}, + {"appletclassloader.fileerror", "{0} fel vid l\u00E4sning: {1}"}, + {"appletclassloader.findclass.verbose.findclass", "{0} hittar klass {1}"}, + {"appletclassloader.findclass.verbose.openstream", "\u00D6ppnar str\u00F6m till: {0} f\u00F6r h\u00E4mtning av {1}"}, + {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource f\u00F6r namnet: {0}"}, + {"appletclassloader.getresource.verbose.found", "Hittade resursen: {0} som systemresurs"}, + {"appletclassloader.getresourceasstream.verbose", "Hittade resursen: {0} som systemresurs"}, {"appletpanel.runloader.err", "Antingen objekt- eller kodparameter!"}, {"appletpanel.runloader.exception", "undantag vid avserialisering {0}"}, - {"appletpanel.destroyed", "Appleten f\u00f6rst\u00f6rd."}, - {"appletpanel.loaded", "Appleten \u00e4r inl\u00e4st."}, - {"appletpanel.started", "Appleten har startat."}, - {"appletpanel.inited", "Appleten har initierats."}, - {"appletpanel.stopped", "Appleten har stoppats."}, - {"appletpanel.disposed", "Appleten har sl\u00e4ngts."}, - {"appletpanel.nocode", "Taggen APPLET saknar parametern CODE."}, - {"appletpanel.notfound", "inl\u00e4sning: klassen {0} finns inte."}, - {"appletpanel.nocreate", "inl\u00e4sning: kan inte skapa instans av {0}."}, - {"appletpanel.noconstruct", "inl\u00e4sning: {0} \u00e4r inte allm\u00e4n eller har ingen allm\u00e4n konstruktor."}, + {"appletpanel.destroyed", "Applet raderad."}, + {"appletpanel.loaded", "Applet laddad."}, + {"appletpanel.started", "Applet startad."}, + {"appletpanel.inited", "Applet initierad."}, + {"appletpanel.stopped", "Applet stoppad."}, + {"appletpanel.disposed", "Applet kasserad."}, + {"appletpanel.nocode", "APPLET-tagg saknar CODE-parameter."}, + {"appletpanel.notfound", "load: hittade inte klassen {0}."}, + {"appletpanel.nocreate", "load: {0} kan inte instansieras."}, + {"appletpanel.noconstruct", "load: {0} \u00E4r inte allm\u00E4n eller saknar allm\u00E4n konstruktor."}, {"appletpanel.death", "avslutad"}, {"appletpanel.exception", "undantag: {0}."}, {"appletpanel.exception2", "undantag: {0}: {1}."}, {"appletpanel.error", "fel: {0}."}, - {"appletpanel.error2", "fel: {0}: {1}."}, - {"appletpanel.notloaded", "Init: appleten har inte l\u00e4sts in."}, - {"appletpanel.notinited", "Start: appleten har inte initierats."}, - {"appletpanel.notstarted", "Stopp: appleten har inte startats."}, - {"appletpanel.notstopped", "Destruktion: appleten har inte stoppats."}, - {"appletpanel.notdestroyed", "Sl\u00e4ng: appleten har inte f\u00f6rst\u00f6rts."}, - {"appletpanel.notdisposed", "Inl\u00e4sning: appletten har inte sl\u00e4ngts."}, - {"appletpanel.bail", "Avbruten: avaktiverar."}, - {"appletpanel.filenotfound", "Fil saknas vid s\u00f6kning efter: {0}"}, - {"appletpanel.fileformat", "Filformatundantag vid inl\u00e4sning: {0}"}, - {"appletpanel.fileioexception", "I/O-undantag vid inl\u00e4sning: {0}"}, - {"appletpanel.fileexception", "{0}-undantag vid inl\u00e4sning: {1}"}, - {"appletpanel.filedeath", "{0} avslutades vid inl\u00e4sning: {1}"}, - {"appletpanel.fileerror", "{0} fel vid inl\u00e4sning: {1}"}, - {"appletpanel.badattribute.exception", "Html-tolkning: felaktigt v\u00e4rde f\u00f6r h\u00f6jd-breddattribut"}, - {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream kr\u00e4ver inl\u00e4sare som inte \u00e4r tom"}, - {"appletprops.title", "Egenskaper f\u00f6r AppletViewer"}, - {"appletprops.label.http.server", "Proxy-server f\u00f6r HTTP:"}, - {"appletprops.label.http.proxy", "HTTP-proxyns port:"}, - {"appletprops.label.network", "N\u00e4tverks\u00e5tkomst:"}, - {"appletprops.choice.network.item.none", "Inget"}, - {"appletprops.choice.network.item.applethost", "Applet-v\u00e4rd"}, - {"appletprops.choice.network.item.unrestricted", "Obegr\u00e4nsad"}, - {"appletprops.label.class", "Klass\u00e5tkomst:"}, - {"appletprops.choice.class.item.restricted", "Begr\u00e4nsad"}, - {"appletprops.choice.class.item.unrestricted", "Obegr\u00e4nsad"}, - {"appletprops.label.unsignedapplet", "Till\u00e5t osignerade appletar:"}, + {"appletpanel.error2", "fel {0}: {1}."}, + {"appletpanel.notloaded", "Initiera: applet \u00E4r inte inl\u00E4st."}, + {"appletpanel.notinited", "Starta: applet \u00E4r inte initierad."}, + {"appletpanel.notstarted", "Stoppa: applet har inte startats."}, + {"appletpanel.notstopped", "Radera: applet har inte stoppats."}, + {"appletpanel.notdestroyed", "Kassera: applet har inte raderats."}, + {"appletpanel.notdisposed", "Ladda: applet har inte kasserats."}, + {"appletpanel.bail", "Avbruten."}, + {"appletpanel.filenotfound", "Hittade inte fil vid s\u00F6kning efter: {0}"}, + {"appletpanel.fileformat", "Undantag av filformat vid l\u00E4sning av: {0}"}, + {"appletpanel.fileioexception", "I/O-undantag vid l\u00E4sning: {0}"}, + {"appletpanel.fileexception", "{0} undantag vid l\u00E4sning: {1}"}, + {"appletpanel.filedeath", "{0} avslutad vid l\u00E4sning: {1}"}, + {"appletpanel.fileerror", "{0} fel vid l\u00E4sning: {1}"}, + {"appletpanel.badattribute.exception", "HTML-tolkning: felaktigt v\u00E4rde f\u00F6r bredd-/h\u00F6jdattribut"}, + {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream kr\u00E4ver laddare med icke-null"}, + {"appletprops.title", "AppletViewer-egenskaper"}, + {"appletprops.label.http.server", "HTTP-proxyserver:"}, + {"appletprops.label.http.proxy", "HTTP-proxyport:"}, + {"appletprops.label.network", "N\u00E4tverks\u00E5tkomst:"}, + {"appletprops.choice.network.item.none", "Ingen"}, + {"appletprops.choice.network.item.applethost", "Appletv\u00E4rd"}, + {"appletprops.choice.network.item.unrestricted", "Obegr\u00E4nsad"}, + {"appletprops.label.class", "Klass\u00E5tkomst:"}, + {"appletprops.choice.class.item.restricted", "Begr\u00E4nsad"}, + {"appletprops.choice.class.item.unrestricted", "Obegr\u00E4nsad"}, + {"appletprops.label.unsignedapplet", "Till\u00E5t osignerade appletar:"}, {"appletprops.choice.unsignedapplet.no", "Nej"}, {"appletprops.choice.unsignedapplet.yes", "Ja"}, - {"appletprops.button.apply", "Utf\u00f6r"}, + {"appletprops.button.apply", "Till\u00E4mpa"}, {"appletprops.button.cancel", "Avbryt"}, - {"appletprops.button.reset", "\u00c5terst\u00e4ll"}, - {"appletprops.apply.exception", "Kunde inte spara egenskaperna: {0}"}, + {"appletprops.button.reset", "\u00C5terst\u00E4ll"}, + {"appletprops.apply.exception", "Kunde inte spara egenskaper: {0}"}, /* 4066432 */ - {"appletprops.title.invalidproxy", "Ogiltig inmatning"}, - {"appletprops.label.invalidproxy", "Proxyporten m\u00e5ste anges som ett positivt heltal"}, + {"appletprops.title.invalidproxy", "Ogiltig post"}, + {"appletprops.label.invalidproxy", "Proxyport m\u00E5ste vara ett positivt heltal."}, {"appletprops.button.ok", "OK"}, /* end 4066432 */ - {"appletprops.prop.store", "Anv\u00e4ndarspecifika egenskaper f\u00f6r AppletViewer"}, - {"appletsecurityexception.checkcreateclassloader", "S\u00e4kerhetsundantag: klassinl\u00e4sare"}, - {"appletsecurityexception.checkaccess.thread", "S\u00e4kerhetsundantag: tr\u00e5d"}, - {"appletsecurityexception.checkaccess.threadgroup", "S\u00e4kerhetsundantag: tr\u00e5dgruppen {0}"}, - {"appletsecurityexception.checkexit", "S\u00e4kerhetsundantag: exit-punkten {0}"}, - {"appletsecurityexception.checkexec", "S\u00e4kerhetsundantag: programfilen {0}"}, - {"appletsecurityexception.checklink", "S\u00e4kerhetsundantag: l\u00e4nken {0}"}, - {"appletsecurityexception.checkpropsaccess", "S\u00e4kerhetsundantag: egenskaperna"}, - {"appletsecurityexception.checkpropsaccess.key", "S\u00e4kerhetsundantag: egenskaps\u00e5tkomsten {0}"}, - {"appletsecurityexception.checkread.exception1", "S\u00e4kerhetsundantag: {0}, {1}"}, - {"appletsecurityexception.checkread.exception2", "S\u00e4kerhetsundantag: file.read: {0}"}, - {"appletsecurityexception.checkread", "S\u00e4kerhetsundantag: file.read: {0} == {1}"}, - {"appletsecurityexception.checkwrite.exception", "S\u00e4kerhetsundantag: {0}, {1}"}, - {"appletsecurityexception.checkwrite", "S\u00e4kerhetsundantag: file.write: {0} == {1}"}, - {"appletsecurityexception.checkread.fd", "S\u00e4kerhetsundantag: fd.read"}, - {"appletsecurityexception.checkwrite.fd", "S\u00e4kerhetsundantag: fd.write"}, - {"appletsecurityexception.checklisten", "S\u00e4kerhetsundantag: socket.listen: {0}"}, - {"appletsecurityexception.checkaccept", "S\u00e4kerhetsundantag: socket.accept: {0}:{1}"}, - {"appletsecurityexception.checkconnect.networknone", "S\u00e4kerhetsundantag: socket.connect: {0}->{1}"}, - {"appletsecurityexception.checkconnect.networkhost1", "S\u00e4kerhetsundantag: Kan inte koppla upp till {0} som kommer fr\u00e5n {1}."}, - {"appletsecurityexception.checkconnect.networkhost2", "S\u00e4kerhetsundantag: Kan inte \u00f6vers\u00e4tta adressen f\u00f6r v\u00e4rdsystemet {0} eller for {1}. "}, - {"appletsecurityexception.checkconnect.networkhost3", "S\u00e4kerhetsundantag: Kan inte \u00f6vers\u00e4tta adressen f\u00f6r v\u00e4rdsystemet {0}. Kontrollera egenskapen trustProxy."}, - {"appletsecurityexception.checkconnect", "S\u00e4kerhetsundantag: uppkoppling: {0}->{1}"}, - {"appletsecurityexception.checkpackageaccess", "S\u00e4kerhetsundantag: f\u00e5r inte \u00e5tkomst till paketet: {0}"}, - {"appletsecurityexception.checkpackagedefinition", "S\u00e4kerhetsundantag: kan inte definiera paketet: {0}"}, - {"appletsecurityexception.cannotsetfactory", "S\u00e4kerhetsundantag: kan inte st\u00e4lla in factory"}, - {"appletsecurityexception.checkmemberaccess", "S\u00e4kerhetsundantag: kontrollera medlems\u00e5tkomst"}, - {"appletsecurityexception.checkgetprintjob", "S\u00e4kerhetsundantag: getPrintJob"}, - {"appletsecurityexception.checksystemclipboardaccess", "S\u00e4kerhetsundantag: getSystemClipboard"}, - {"appletsecurityexception.checkawteventqueueaccess", "S\u00e4kerhetsundantag: getEventQueue"}, - {"appletsecurityexception.checksecurityaccess", "S\u00e4kerhetsundantag: s\u00e4kerhetsbearbetning: {0}"}, - {"appletsecurityexception.getsecuritycontext.unknown", "Ok\u00e4nd typ av klassinl\u00e4sare. Kan inte leta efter getContext"}, - {"appletsecurityexception.checkread.unknown", "Ok\u00e4nd typ av klassinl\u00e4sare. Kan inte leta efter checking read {0}"}, - {"appletsecurityexception.checkconnect.unknown", "Ok\u00e4nd typ av klassinl\u00e4sare. Kan inte leta efter checking connect"}, + {"appletprops.prop.store", "Anv\u00E4ndarspecifika egenskaper f\u00F6r AppletViewer"}, + {"appletsecurityexception.checkcreateclassloader", "S\u00E4kerhetsundantag: klassladdare"}, + {"appletsecurityexception.checkaccess.thread", "S\u00E4kerhetsundantag: tr\u00E5d"}, + {"appletsecurityexception.checkaccess.threadgroup", "S\u00E4kerhetsundantag: tr\u00E5dgrupp: {0}"}, + {"appletsecurityexception.checkexit", "S\u00E4kerhetsundantag: utg\u00E5ng: {0}"}, + {"appletsecurityexception.checkexec", "S\u00E4kerhetsundantag: exec: {0}"}, + {"appletsecurityexception.checklink", "S\u00E4kerhetsundantag: l\u00E4nk: {0}"}, + {"appletsecurityexception.checkpropsaccess", "S\u00E4kerhetsundantag: egenskaper"}, + {"appletsecurityexception.checkpropsaccess.key", "S\u00E4kerhetsundantag: egenskaps\u00E5tkomst {0}"}, + {"appletsecurityexception.checkread.exception1", "S\u00E4kerhetsundantag: {0}, {1}"}, + {"appletsecurityexception.checkread.exception2", "S\u00E4kerhetsundantag: file.read: {0}"}, + {"appletsecurityexception.checkread", "S\u00E4kerhetsundantag: file.read: {0} == {1}"}, + {"appletsecurityexception.checkwrite.exception", "S\u00E4kerhetsundantag: {0}, {1}"}, + {"appletsecurityexception.checkwrite", "S\u00E4kerhetsundantag: file.write: {0} == {1}"}, + {"appletsecurityexception.checkread.fd", "S\u00E4kerhetsundantag: fd.read"}, + {"appletsecurityexception.checkwrite.fd", "S\u00E4kerhetsundantag: fd.write"}, + {"appletsecurityexception.checklisten", "S\u00E4kerhetsundantag: socket.listen: {0}"}, + {"appletsecurityexception.checkaccept", "S\u00E4kerhetsundantag: socket.accept: {0}:{1}"}, + {"appletsecurityexception.checkconnect.networknone", "S\u00E4kerhetsundantag: socket.connect: {0}->{1}"}, + {"appletsecurityexception.checkconnect.networkhost1", "S\u00E4kerhetsundantag: Kunde inte ansluta till {0} med ursprung fr\u00E5n {1}."}, + {"appletsecurityexception.checkconnect.networkhost2", "S\u00E4kerhetsundantag: Kunde inte matcha IP f\u00F6r v\u00E4rd {0} eller f\u00F6r {1}. "}, + {"appletsecurityexception.checkconnect.networkhost3", "S\u00E4kerhetsundantag: Kunde inte matcha IP f\u00F6r v\u00E4rd {0}. Se egenskapen trustProxy."}, + {"appletsecurityexception.checkconnect", "S\u00E4kerhetsundantag: connect: {0}->{1}"}, + {"appletsecurityexception.checkpackageaccess", "S\u00E4kerhetsundantag: ingen \u00E5tkomst till paket: {0}"}, + {"appletsecurityexception.checkpackagedefinition", "S\u00E4kerhetsundantag: kan inte definiera paket: {0}"}, + {"appletsecurityexception.cannotsetfactory", "S\u00E4kerhetsundantag: kan inte ange fabrik"}, + {"appletsecurityexception.checkmemberaccess", "S\u00E4kerhetsundantag: kontrollera medlems\u00E5tkomst"}, + {"appletsecurityexception.checkgetprintjob", "S\u00E4kerhetsundantag: getPrintJob"}, + {"appletsecurityexception.checksystemclipboardaccess", "S\u00E4kerhetsundantag: getSystemClipboard"}, + {"appletsecurityexception.checkawteventqueueaccess", "S\u00E4kerhetsundantag: getEventQueue"}, + {"appletsecurityexception.checksecurityaccess", "S\u00E4kerhetsundantag: s\u00E4kerhets\u00E5tg\u00E4rd: {0}"}, + {"appletsecurityexception.getsecuritycontext.unknown", "ok\u00E4nd typ av klassladdare. kan inte kontrollera getContext"}, + {"appletsecurityexception.checkread.unknown", "ok\u00E4nd typ av klassladdare. kan inte kontrollera kontroll\u00E4sning {0}"}, + {"appletsecurityexception.checkconnect.unknown", "ok\u00E4nd typ av klassladdare. kan inte kontrollera kontrollanslutning"}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_CN.java b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_CN.java index ae1043d6590..35516185578 100644 --- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_CN.java +++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_CN.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -29,173 +29,175 @@ import java.util.ListResourceBundle; public class MsgAppletViewer_zh_CN extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"textframe.button.dismiss", "\u5173\u95ed"}, - {"appletviewer.tool.title", "\u5c0f\u7a0b\u5e8f\u67e5\u770b\u5668\uff1a{0}"}, - {"appletviewer.menu.applet", "\u5c0f\u7a0b\u5e8f"}, - {"appletviewer.menuitem.restart", "\u91cd\u65b0\u542f\u52a8"}, - {"appletviewer.menuitem.reload", "\u91cd\u65b0\u8f7d\u5165"}, - {"appletviewer.menuitem.stop", "\u505c\u6b62"}, - {"appletviewer.menuitem.save", "\u4fdd\u5b58..."}, - {"appletviewer.menuitem.start", "\u542f\u52a8"}, - {"appletviewer.menuitem.clone", "\u590d\u5236..."}, - {"appletviewer.menuitem.tag", "\u6807\u8bb0..."}, - {"appletviewer.menuitem.info", "\u4fe1\u606f..."}, - {"appletviewer.menuitem.edit", "\u7f16\u8f91"}, - {"appletviewer.menuitem.encoding", "\u5b57\u7b26\u7f16\u7801"}, + Object[][] temp = new Object[][] { + {"textframe.button.dismiss", "\u5173\u95ED"}, + {"appletviewer.tool.title", "\u5C0F\u5E94\u7528\u7A0B\u5E8F\u67E5\u770B\u5668: {0}"}, + {"appletviewer.menu.applet", "\u5C0F\u5E94\u7528\u7A0B\u5E8F"}, + {"appletviewer.menuitem.restart", "\u91CD\u65B0\u542F\u52A8"}, + {"appletviewer.menuitem.reload", "\u91CD\u65B0\u52A0\u8F7D"}, + {"appletviewer.menuitem.stop", "\u505C\u6B62"}, + {"appletviewer.menuitem.save", "\u4FDD\u5B58..."}, + {"appletviewer.menuitem.start", "\u542F\u52A8"}, + {"appletviewer.menuitem.clone", "\u514B\u9686..."}, + {"appletviewer.menuitem.tag", "\u6807\u8BB0..."}, + {"appletviewer.menuitem.info", "\u4FE1\u606F..."}, + {"appletviewer.menuitem.edit", "\u7F16\u8F91"}, + {"appletviewer.menuitem.encoding", "\u5B57\u7B26\u7F16\u7801"}, {"appletviewer.menuitem.print", "\u6253\u5370..."}, - {"appletviewer.menuitem.props", "\u5c5e\u6027..."}, - {"appletviewer.menuitem.close", "\u5173\u95ed"}, - {"appletviewer.menuitem.quit", "\u9000\u51fa"}, - {"appletviewer.label.hello", "Hello..."}, - {"appletviewer.status.start", "\u6b63\u5728\u542f\u52a8\u5c0f\u7a0b\u5e8f..."}, - {"appletviewer.appletsave.filedialogtitle","\u5c06\u5c0f\u7a0b\u5e8f\u5e8f\u5217\u5316\u4e3a\u6587\u4ef6"}, - {"appletviewer.appletsave.err1", "\u5c06 {0} \u5e8f\u5217\u5316\u4e3a {1}"}, - {"appletviewer.appletsave.err2", "\u5728 appletSave \u4e2d\uff1a{0}"}, - {"appletviewer.applettag", "\u663e\u793a\u7684\u6807\u8bb0"}, - {"appletviewer.applettag.textframe", "\u5c0f\u7a0b\u5e8f HTML \u6807\u8bb0"}, - {"appletviewer.appletinfo.applet", "-- \u6ca1\u6709\u4efb\u4f55\u5c0f\u7a0b\u5e8f\u4fe1\u606f --"}, - {"appletviewer.appletinfo.param", "-- \u6ca1\u6709\u4efb\u4f55\u53c2\u6570\u4fe1\u606f --"}, - {"appletviewer.appletinfo.textframe", "\u5c0f\u7a0b\u5e8f\u4fe1\u606f"}, - {"appletviewer.appletprint.fail", "\u6253\u5370\u5931\u8d25\u3002"}, - {"appletviewer.appletprint.finish", "\u5df2\u5b8c\u6210\u6253\u5370\u3002"}, - {"appletviewer.appletprint.cancel", "\u6253\u5370\u88ab\u53d6\u6d88\u3002"}, - {"appletviewer.appletencoding", "\u5b57\u7b26\u7f16\u7801\uff1a {0}"}, - {"appletviewer.parse.warning.requiresname", "\u8b66\u544a\uff1a \u6807\u8bb0\u9700\u8981\u540d\u79f0\u5c5e\u6027\u3002"}, - {"appletviewer.parse.warning.paramoutside", "\u8b66\u544a\uff1a \u6807\u8bb0\u5728 ... \u5916\u90e8\u3002"}, - {"appletviewer.parse.warning.applet.requirescode", "\u8b66\u544a\uff1a \u6807\u8bb0\u9700\u8981\u4ee3\u7801\u5c5e\u6027\u3002"}, - {"appletviewer.parse.warning.applet.requiresheight", "\u8b66\u544a\uff1a \u6807\u8bb0\u9700\u8981\u9ad8\u5ea6\u5c5e\u6027\u3002"}, - {"appletviewer.parse.warning.applet.requireswidth", "\u8b66\u544a\uff1a \u6807\u8bb0\u9700\u8981\u5bbd\u5ea6\u5c5e\u6027\u3002"}, - {"appletviewer.parse.warning.object.requirescode", "\u8b66\u544a\uff1a \u6807\u8bb0\u9700\u8981\u4ee3\u7801\u5c5e\u6027\u3002"}, - {"appletviewer.parse.warning.object.requiresheight", "\u8b66\u544a\uff1a \u6807\u8bb0\u9700\u8981\u9ad8\u5ea6\u5c5e\u6027\u3002"}, - {"appletviewer.parse.warning.object.requireswidth", "\u8b66\u544a\uff1a \u6807\u8bb0\u9700\u8981\u5bbd\u5ea6\u5c5e\u6027\u3002"}, - {"appletviewer.parse.warning.embed.requirescode", "\u8b66\u544a\uff1a \u6807\u8bb0\u9700\u8981\u4ee3\u7801\u5c5e\u6027\u3002"}, - {"appletviewer.parse.warning.embed.requiresheight", "\u8b66\u544a\uff1a \u6807\u8bb0\u9700\u8981\u9ad8\u5ea6\u5c5e\u6027\u3002"}, - {"appletviewer.parse.warning.embed.requireswidth", "\u8b66\u544a\uff1a \u6807\u8bb0\u9700\u8981\u5bbd\u5ea6\u5c5e\u6027\u3002"}, - {"appletviewer.parse.warning.appnotLongersupported", "\u8b66\u544a\uff1a \u4e0d\u518d\u652f\u6301 \u6807\u8bb0\uff0c\u8bf7\u4f7f\u7528 \uff1a"}, - {"appletviewer.usage", "\u7528\u6cd5\uff1aappletviewer url(s)\n\n\u5176\u4e2d\uff0c \u5305\u62ec\uff1a\n -debug \u5728 Java \u8c03\u8bd5\u5668\u4e2d\u542f\u52a8 applet \u5c0f\u7a0b\u5e8f\u67e5\u770b\u5668\n -encoding \u6307\u5b9a\u7531 HTML \u6587\u4ef6\u4f7f\u7528\u7684\u5b57\u7b26\u7f16\u7801\n -J \u5411 Java \u89e3\u91ca\u5668\u4f20\u9012\u53c2\u6570\n\n-J \u9009\u9879\u4e0d\u662f\u6807\u51c6\u9009\u9879\uff0c\u5982\u6709\u66f4\u6539\uff0c\u4e0d\u53e6\u884c\u901a\u77e5\u3002"}, - {"appletviewer.main.err.unsupportedopt", "\u4e0d\u652f\u6301\u7684\u9009\u9879\uff1a{0}"}, - {"appletviewer.main.err.unrecognizedarg", "\u4e0d\u53ef\u8bc6\u522b\u7684\u53c2\u6570\uff1a{0}"}, - {"appletviewer.main.err.dupoption", "\u91cd\u590d\u4f7f\u7528\u7684\u9009\u9879\uff1a{0}"}, - {"appletviewer.main.err.inputfile", "\u6ca1\u6709\u6307\u5b9a\u8f93\u5165\u6587\u4ef6\u3002"}, - {"appletviewer.main.err.badurl", "URL \u9519\u8bef\uff1a{0} ( {1} )"}, - {"appletviewer.main.err.io", "\u8fdb\u884c\u8bfb\u53d6\u65f6\u51fa\u73b0 I/O \u5f02\u5e38\uff1a {0}"}, - {"appletviewer.main.err.readablefile", "\u786e\u4fdd {0} \u662f\u4e00\u4e2a\u6587\u4ef6\uff0c\u5e76\u4e14\u662f\u53ef\u8bfb\u7684\u3002"}, - {"appletviewer.main.err.correcturl", "{0} \u662f\u5426\u662f\u6b63\u786e\u7684 URL\uff1f"}, - {"appletviewer.main.prop.store", "\u7528\u6237\u6307\u5b9a\u7684 AppletViewer \u5c5e\u6027"}, - {"appletviewer.main.err.prop.cantread", "\u4e0d\u80fd\u8bfb\u53d6\u7528\u6237\u5c5e\u6027\u6587\u4ef6\uff1a{0}"}, - {"appletviewer.main.err.prop.cantsave", "\u4e0d\u80fd\u4fdd\u5b58\u7528\u6237\u5c5e\u6027\u6587\u4ef6\uff1a{0}"}, - {"appletviewer.main.warn.nosecmgr", "\u8b66\u544a\uff1a \u7981\u7528\u5b89\u5168\u63a7\u5236"}, - {"appletviewer.main.debug.cantfinddebug", "\u6ca1\u6709\u627e\u5230\u8c03\u8bd5\u5668\uff01"}, - {"appletviewer.main.debug.cantfindmain", "\u5728\u8c03\u8bd5\u5668\u4e2d\u6ca1\u6709\u627e\u5230\u4e3b\u51fd\u6570\uff01"}, - {"appletviewer.main.debug.exceptionindebug", "\u5728\u8c03\u8bd5\u5668\u4e2d\u53d1\u751f\u5f02\u5e38\uff01"}, - {"appletviewer.main.debug.cantaccess", "\u4e0d\u80fd\u8bbf\u95ee\u8c03\u8bd5\u5668\uff01"}, - {"appletviewer.main.nosecmgr", "\u8b66\u544a\uff1a\u6ca1\u6709\u5b89\u88c5 SecurityManager\uff01"}, - {"appletviewer.main.warning", "\u8b66\u544a\uff1a\u6ca1\u6709\u542f\u52a8\u4efb\u4f55\u5c0f\u7a0b\u5e8f\u3002\u8bf7\u786e\u4fdd\u8f93\u5165\u4e2d\u5305\u542b \u6807\u8bb0\u3002"}, - {"appletviewer.main.warn.prop.overwrite", "\u8b66\u544a\uff1a\u5e94\u7528\u6237\u8bf7\u6c42\u4e34\u65f6\u8986\u76d6\u7cfb\u7edf\u5c5e\u6027\uff1a\u5173\u952e\u5b57\uff1a{0} \u65e7\u503c\uff1a{1} \u65b0\u503c\uff1a{2}"}, - {"appletviewer.main.warn.cantreadprops", "\u8b66\u544a\uff1a\u4e0d\u80fd\u8bfb\u53d6 AppletViewer \u7684\u5c5e\u6027\u6587\u4ef6\uff1a {0} \u4f7f\u7528\u9ed8\u8ba4\u503c\u3002"}, - {"appletioexception.loadclass.throw.interrupted", "\u7c7b\u8f7d\u5165\u88ab\u4e2d\u65ad\uff1a{0}"}, - {"appletioexception.loadclass.throw.notloaded", "\u672a\u8f7d\u5165\u7c7b\uff1a{0}"}, - {"appletclassloader.loadcode.verbose", "\u6b63\u5728\u6253\u5f00\u6d41\u5230\uff1a {0} \u4ee5\u83b7\u53d6 {1}"}, - {"appletclassloader.filenotfound", "\u67e5\u627e\u65f6\u627e\u4e0d\u5230\u6587\u4ef6\uff1a{0}"}, - {"appletclassloader.fileformat", "\u8f7d\u5165\u65f6\u5f15\u53d1\u6587\u4ef6\u683c\u5f0f\u5f02\u5e38\uff1a{0}"}, - {"appletclassloader.fileioexception", "\u8f7d\u5165\u65f6\u5f15\u53d1\u51fa\u73b0 I/O \u5f02\u5e38\uff1a{0}"}, - {"appletclassloader.fileexception", "\u8f7d\u5165\u65f6\u5f15\u53d1 {0} \u5f02\u5e38\uff1a{1}"}, - {"appletclassloader.filedeath", "\u8f7d\u5165\u65f6 {0} \u88ab\u53d6\u6d88\uff1a{1}"}, - {"appletclassloader.fileerror", "\u8f7d\u5165\u65f6 {0} \u51fa\u9519\uff1a{1}"}, - {"appletclassloader.findclass.verbose.findclass", "{0} \u67e5\u627e\u7c7b {1}"}, - {"appletclassloader.findclass.verbose.openstream", "\u6b63\u5728\u6253\u5f00\u6d41\u5230\uff1a {0} \u4ee5\u83b7\u53d6 {1}"}, - {"appletclassloader.getresource.verbose.forname", "\u7528\u4e8e\u540d\u79f0\u7684 AppletClassLoader.getResource\uff1a {0} "}, - {"appletclassloader.getresource.verbose.found", "\u5df2\u627e\u5230\u7684\u8d44\u6e90\uff1a{0} \u4f5c\u4e3a\u7cfb\u7edf\u8d44\u6e90"}, - {"appletclassloader.getresourceasstream.verbose", "\u5df2\u627e\u5230\u7684\u8d44\u6e90\uff1a{0} \u4f5c\u4e3a\u7cfb\u7edf\u8d44\u6e90"}, - {"appletpanel.runloader.err", "\u5bf9\u8c61\u6216\u4ee3\u7801\u53c2\u6570\uff01"}, - {"appletpanel.runloader.exception", "\u5e76\u884c\u5316 {0} \u65f6\u5f15\u53d1\u5f02\u5e38"}, - {"appletpanel.destroyed", "\u5c0f\u7a0b\u5e8f\u5df2\u9500\u6bc1\u3002"}, - {"appletpanel.loaded", "\u5c0f\u7a0b\u5e8f\u5df2\u8f7d\u5165\u3002"}, - {"appletpanel.started", "\u5c0f\u7a0b\u5e8f\u5df2\u542f\u52a8\u3002"}, - {"appletpanel.inited", "\u5c0f\u7a0b\u5e8f\u5df2\u521d\u59cb\u5316\u3002"}, - {"appletpanel.stopped", "\u5c0f\u7a0b\u5e8f\u5df2\u505c\u6b62\u3002"}, - {"appletpanel.disposed", "\u5c0f\u7a0b\u5e8f\u5df2\u64a4\u6d88\u3002"}, - {"appletpanel.nocode", "APPLET \u6807\u8bb0\u4e22\u5931 CODE \u53c2\u6570\u3002"}, - {"appletpanel.notfound", "\u8f7d\u5165\uff1a\u627e\u4e0d\u5230\u7c7b {0}\u3002"}, - {"appletpanel.nocreate", "\u8f7d\u5165\uff1a\u65e0\u6cd5\u5b9e\u4f8b\u5316 {0}\u3002"}, - {"appletpanel.noconstruct", "\u8f7d\u5165\uff1a{0} \u4e0d\u662f public \u5bf9\u8c61\u6216\u6ca1\u6709\u516c\u5171\u6784\u9020\u51fd\u6570\u3002"}, - {"appletpanel.death", "\u5df2\u7ec8\u6b62"}, - {"appletpanel.exception", "\u5f02\u5e38\uff1a {0}\u3002"}, - {"appletpanel.exception2", "\u5f02\u5e38\uff1a{0}: {1}\u3002"}, - {"appletpanel.error", "\u9519\u8bef\uff1a{0}\u3002"}, - {"appletpanel.error2", "\u9519\u8bef\uff1a{0}: {1}\u3002"}, - {"appletpanel.notloaded", "\u521d\u59cb\u5316\uff1a \u672a\u8f7d\u5165\u5c0f\u7a0b\u5e8f\u3002"}, - {"appletpanel.notinited", "\u542f\u52a8\uff1a \u672a\u521d\u59cb\u5316\u5c0f\u7a0b\u5e8f\u3002"}, - {"appletpanel.notstarted", "\u505c\u6b62\uff1a \u672a\u542f\u52a8\u5c0f\u7a0b\u5e8f\u3002"}, - {"appletpanel.notstopped", "\u9500\u6bc1\uff1a \u672a\u505c\u6b62\u5c0f\u7a0b\u5e8f\u3002"}, - {"appletpanel.notdestroyed", "\u64a4\u6d88\uff1a \u672a\u9500\u6bc1\u5c0f\u7a0b\u5e8f\u3002"}, - {"appletpanel.notdisposed", "\u8f7d\u5165\uff1a \u672a\u64a4\u6d88\u5c0f\u7a0b\u5e8f\u3002"}, - {"appletpanel.bail", "\u5df2\u4e2d\u65ad\uff1a\u6b63\u5728\u8df3\u51fa\u3002"}, - {"appletpanel.filenotfound", "\u67e5\u627e\u65f6\u627e\u4e0d\u5230\u6587\u4ef6\uff1a {0}"}, - {"appletpanel.fileformat", "\u8f7d\u5165\u65f6\u53d1\u751f\u6587\u4ef6\u683c\u5f0f\u5f02\u5e38\uff1a {0}"}, - {"appletpanel.fileioexception", "\u8f7d\u5165\u65f6\u53d1\u751f I/O \u5f02\u5e38\uff1a {0}"}, - {"appletpanel.fileexception", "\u8f7d\u5165 {1} \u65f6\u53d1\u751f {0} \u5f02\u5e38"}, - {"appletpanel.filedeath", "\u8f7d\u5165 {1} \u65f6\u7ec8\u6b62 {0}"}, - {"appletpanel.fileerror", "\u8f7d\u5165 {1} \u65f6 {0} \u51fa\u9519"}, - {"appletpanel.badattribute.exception", "HTML \u89e3\u6790: \u5bbd\u5ea6/\u9ad8\u5ea6\u5c5e\u6027\u503c\u4e0d\u6b63\u786e"}, - {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream \u9700\u8981\u975e\u7a7a\u8f7d\u5165\u7a0b\u5e8f"}, - {"appletprops.title", "AppletViewer \u5c5e\u6027"}, - {"appletprops.label.http.server", "Http \u4ee3\u7406\u670d\u52a1\u5668\uff1a"}, - {"appletprops.label.http.proxy", "Http \u4ee3\u7406\u670d\u52a1\u5668\u7aef\u53e3\uff1a"}, - {"appletprops.label.network", "\u7f51\u7edc\u8bbf\u95ee\uff1a"}, - {"appletprops.choice.network.item.none", "\u65e0"}, - {"appletprops.choice.network.item.applethost", "\u5c0f\u7a0b\u5e8f\u4e3b\u673a"}, - {"appletprops.choice.network.item.unrestricted", "\u65e0\u9650\u5236"}, - {"appletprops.label.class", "\u7c7b\u8bbf\u95ee\uff1a"}, - {"appletprops.choice.class.item.restricted", "\u6709\u9650\u5236"}, - {"appletprops.choice.class.item.unrestricted", "\u65e0\u9650\u5236"}, - {"appletprops.label.unsignedapplet", "\u5141\u8bb8\u4f7f\u7528\u65e0\u7b7e\u540d\u7684\u5c0f\u7a0b\u5e8f\uff1a"}, + {"appletviewer.menuitem.props", "\u5C5E\u6027..."}, + {"appletviewer.menuitem.close", "\u5173\u95ED"}, + {"appletviewer.menuitem.quit", "\u9000\u51FA"}, + {"appletviewer.label.hello", "\u60A8\u597D..."}, + {"appletviewer.status.start", "\u6B63\u5728\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F..."}, + {"appletviewer.appletsave.filedialogtitle","\u5C06\u5C0F\u5E94\u7528\u7A0B\u5E8F\u5E8F\u5217\u5316\u4E3A\u6587\u4EF6"}, + {"appletviewer.appletsave.err1", "\u5C06{0}\u5E8F\u5217\u5316\u4E3A{1}"}, + {"appletviewer.appletsave.err2", "\u5728 appletSave \u4E2D: {0}"}, + {"appletviewer.applettag", "\u663E\u793A\u7684\u6807\u8BB0"}, + {"appletviewer.applettag.textframe", "\u5C0F\u5E94\u7528\u7A0B\u5E8F HTML \u6807\u8BB0"}, + {"appletviewer.appletinfo.applet", "-- \u6CA1\u6709\u5C0F\u5E94\u7528\u7A0B\u5E8F\u4FE1\u606F --"}, + {"appletviewer.appletinfo.param", "-- \u6CA1\u6709\u53C2\u6570\u4FE1\u606F --"}, + {"appletviewer.appletinfo.textframe", "\u5C0F\u5E94\u7528\u7A0B\u5E8F\u4FE1\u606F"}, + {"appletviewer.appletprint.fail", "\u6253\u5370\u5931\u8D25\u3002"}, + {"appletviewer.appletprint.finish", "\u5DF2\u5B8C\u6210\u6253\u5370\u3002"}, + {"appletviewer.appletprint.cancel", "\u6253\u5370\u5DF2\u53D6\u6D88\u3002"}, + {"appletviewer.appletencoding", "\u5B57\u7B26\u7F16\u7801: {0}"}, + {"appletviewer.parse.warning.requiresname", "\u8B66\u544A: \u6807\u8BB0\u9700\u8981\u540D\u79F0\u5C5E\u6027\u3002"}, + {"appletviewer.parse.warning.paramoutside", "\u8B66\u544A: \u6807\u8BB0\u5728 ... \u5916\u90E8\u3002"}, + {"appletviewer.parse.warning.applet.requirescode", "\u8B66\u544A: \u6807\u8BB0\u9700\u8981\u4EE3\u7801\u5C5E\u6027\u3002"}, + {"appletviewer.parse.warning.applet.requiresheight", "\u8B66\u544A: \u6807\u8BB0\u9700\u8981\u9AD8\u5EA6\u5C5E\u6027\u3002"}, + {"appletviewer.parse.warning.applet.requireswidth", "\u8B66\u544A: \u6807\u8BB0\u9700\u8981\u5BBD\u5EA6\u5C5E\u6027\u3002"}, + {"appletviewer.parse.warning.object.requirescode", "\u8B66\u544A: \u6807\u8BB0\u9700\u8981\u4EE3\u7801\u5C5E\u6027\u3002"}, + {"appletviewer.parse.warning.object.requiresheight", "\u8B66\u544A: \u6807\u8BB0\u9700\u8981\u9AD8\u5EA6\u5C5E\u6027\u3002"}, + {"appletviewer.parse.warning.object.requireswidth", "\u8B66\u544A: \u6807\u8BB0\u9700\u8981\u5BBD\u5EA6\u5C5E\u6027\u3002"}, + {"appletviewer.parse.warning.embed.requirescode", "\u8B66\u544A: \u6807\u8BB0\u9700\u8981\u4EE3\u7801\u5C5E\u6027\u3002"}, + {"appletviewer.parse.warning.embed.requiresheight", "\u8B66\u544A: \u6807\u8BB0\u9700\u8981\u9AD8\u5EA6\u5C5E\u6027\u3002"}, + {"appletviewer.parse.warning.embed.requireswidth", "\u8B66\u544A: \u6807\u8BB0\u9700\u8981\u5BBD\u5EA6\u5C5E\u6027\u3002"}, + {"appletviewer.parse.warning.appnotLongersupported", "\u8B66\u544A: \u4E0D\u518D\u652F\u6301 \u6807\u8BB0, \u8BF7\u6539\u7528 :"}, + {"appletviewer.usage", "\u7528\u6CD5: appletviewer url\n\n\u5176\u4E2D, \u5305\u62EC:\n -debug \u5728 Java \u8C03\u8BD5\u5668\u4E2D\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F\u67E5\u770B\u5668\n -encoding \u6307\u5B9A HTML \u6587\u4EF6\u4F7F\u7528\u7684\u5B57\u7B26\u7F16\u7801\n -J \u5C06\u53C2\u6570\u4F20\u9012\u5230 java \u89E3\u91CA\u5668\n\n-J \u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002"}, + {"appletviewer.main.err.unsupportedopt", "\u4E0D\u652F\u6301\u7684\u9009\u9879: {0}"}, + {"appletviewer.main.err.unrecognizedarg", "\u65E0\u6CD5\u8BC6\u522B\u7684\u53C2\u6570: {0}"}, + {"appletviewer.main.err.dupoption", "\u91CD\u590D\u4F7F\u7528\u9009\u9879: {0}"}, + {"appletviewer.main.err.inputfile", "\u672A\u6307\u5B9A\u8F93\u5165\u6587\u4EF6\u3002"}, + {"appletviewer.main.err.badurl", "\u9519\u8BEF URL: {0} ({1})"}, + {"appletviewer.main.err.io", "\u8BFB\u53D6{0}\u65F6\u51FA\u73B0 I/O \u5F02\u5E38\u9519\u8BEF"}, + {"appletviewer.main.err.readablefile", "\u786E\u4FDD{0}\u662F\u6587\u4EF6\u4E14\u53EF\u8BFB\u3002"}, + {"appletviewer.main.err.correcturl", "{0} \u662F\u5426\u662F\u6B63\u786E\u7684 URL?"}, + {"appletviewer.main.prop.store", "AppletViewer \u7684\u7528\u6237\u7279\u5B9A\u5C5E\u6027"}, + {"appletviewer.main.err.prop.cantread", "\u65E0\u6CD5\u8BFB\u53D6\u7528\u6237\u5C5E\u6027\u6587\u4EF6: {0}"}, + {"appletviewer.main.err.prop.cantsave", "\u65E0\u6CD5\u4FDD\u5B58\u7528\u6237\u5C5E\u6027\u6587\u4EF6: {0}"}, + {"appletviewer.main.warn.nosecmgr", "\u8B66\u544A: \u7981\u7528\u5B89\u5168\u3002"}, + {"appletviewer.main.debug.cantfinddebug", "\u627E\u4E0D\u5230\u8C03\u8BD5\u5668!"}, + {"appletviewer.main.debug.cantfindmain", "\u5728\u8C03\u8BD5\u5668\u4E2D\u627E\u4E0D\u5230\u4E3B\u8981\u65B9\u6CD5!"}, + {"appletviewer.main.debug.exceptionindebug", "\u8C03\u8BD5\u5668\u4E2D\u5B58\u5728\u5F02\u5E38\u9519\u8BEF!"}, + {"appletviewer.main.debug.cantaccess", "\u65E0\u6CD5\u8BBF\u95EE\u8C03\u8BD5\u5668!"}, + {"appletviewer.main.nosecmgr", "\u8B66\u544A: \u672A\u5B89\u88C5 SecurityManager!"}, + {"appletviewer.main.warning", "\u8B66\u544A: \u672A\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002\u786E\u4FDD\u8F93\u5165\u5305\u542B \u6807\u8BB0\u3002"}, + {"appletviewer.main.warn.prop.overwrite", "\u8B66\u544A: \u6839\u636E\u7528\u6237\u8BF7\u6C42\u4E34\u65F6\u8986\u76D6\u7CFB\u7EDF\u5C5E\u6027: \u5173\u952E\u5B57: {0}, \u65E7\u503C: {1}, \u65B0\u503C: {2}"}, + {"appletviewer.main.warn.cantreadprops", "\u8B66\u544A: \u65E0\u6CD5\u8BFB\u53D6 AppletViewer \u5C5E\u6027\u6587\u4EF6: {0}\u3002\u8BF7\u4F7F\u7528\u9ED8\u8BA4\u503C\u3002"}, + {"appletioexception.loadclass.throw.interrupted", "\u7C7B\u52A0\u8F7D\u4E2D\u65AD: {0}"}, + {"appletioexception.loadclass.throw.notloaded", "\u672A\u52A0\u8F7D\u7C7B: {0}"}, + {"appletclassloader.loadcode.verbose", "\u6253\u5F00\u5230{0}\u7684\u6D41\u4EE5\u83B7\u53D6{1}"}, + {"appletclassloader.filenotfound", "\u67E5\u627E\u65F6\u627E\u4E0D\u5230\u6587\u4EF6: {0}"}, + {"appletclassloader.fileformat", "\u52A0\u8F7D\u65F6\u51FA\u73B0\u6587\u4EF6\u683C\u5F0F\u5F02\u5E38\u9519\u8BEF: {0}"}, + {"appletclassloader.fileioexception", "\u52A0\u8F7D\u65F6\u51FA\u73B0 I/O \u5F02\u5E38\u9519\u8BEF: {0}"}, + {"appletclassloader.fileexception", "\u52A0\u8F7D\u65F6\u51FA\u73B0{0}\u5F02\u5E38\u9519\u8BEF: {1}"}, + {"appletclassloader.filedeath", "\u52A0\u8F7D\u65F6\u5DF2\u7EC8\u6B62{0}: {1}"}, + {"appletclassloader.fileerror", "\u52A0\u8F7D\u65F6\u51FA\u73B0{0}\u9519\u8BEF: {1}"}, + {"appletclassloader.findclass.verbose.findclass", "{0}\u627E\u5230\u7C7B{1}"}, + {"appletclassloader.findclass.verbose.openstream", "\u6253\u5F00\u5230{0}\u7684\u6D41\u4EE5\u83B7\u53D6{1}"}, + {"appletclassloader.getresource.verbose.forname", "\u540D\u79F0\u7684 AppletClassLoader.getResource: {0}"}, + {"appletclassloader.getresource.verbose.found", "\u5DF2\u627E\u5230\u4F5C\u4E3A\u7CFB\u7EDF\u8D44\u6E90\u7684\u8D44\u6E90{0}"}, + {"appletclassloader.getresourceasstream.verbose", "\u5DF2\u627E\u5230\u4F5C\u4E3A\u7CFB\u7EDF\u8D44\u6E90\u7684\u8D44\u6E90{0}"}, + {"appletpanel.runloader.err", "\u5BF9\u8C61\u6216\u4EE3\u7801\u53C2\u6570!"}, + {"appletpanel.runloader.exception", "\u53CD\u5E8F\u5217\u5316{0}\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF"}, + {"appletpanel.destroyed", "\u5DF2\u9500\u6BC1\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.loaded", "\u5DF2\u52A0\u8F7D\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.started", "\u5DF2\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.inited", "\u5DF2\u521D\u59CB\u5316\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.stopped", "\u5DF2\u505C\u6B62\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.disposed", "\u5DF2\u5904\u7406\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.nocode", "APPLET \u6807\u8BB0\u7F3A\u5C11 CODE \u53C2\u6570\u3002"}, + {"appletpanel.notfound", "\u52A0\u8F7D: \u627E\u4E0D\u5230\u7C7B{0}\u3002"}, + {"appletpanel.nocreate", "\u52A0\u8F7D: \u65E0\u6CD5\u5B9E\u4F8B\u5316{0}\u3002"}, + {"appletpanel.noconstruct", "\u52A0\u8F7D: {0}\u4E0D\u662F\u516C\u5171\u7684, \u6216\u8005\u6CA1\u6709\u516C\u5171\u6784\u9020\u5668\u3002"}, + {"appletpanel.death", "\u5DF2\u7EC8\u6B62"}, + {"appletpanel.exception", "\u5F02\u5E38\u9519\u8BEF: {0}\u3002"}, + {"appletpanel.exception2", "\u5F02\u5E38\u9519\u8BEF: {0}: {1}\u3002"}, + {"appletpanel.error", "\u9519\u8BEF: {0}\u3002"}, + {"appletpanel.error2", "\u9519\u8BEF: {0}: {1}\u3002"}, + {"appletpanel.notloaded", "\u521D\u59CB\u5316: \u672A\u52A0\u8F7D\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.notinited", "\u542F\u52A8: \u672A\u521D\u59CB\u5316\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.notstarted", "\u505C\u6B62: \u672A\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.notstopped", "\u9500\u6BC1: \u672A\u505C\u6B62\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.notdestroyed", "\u5904\u7406: \u672A\u9500\u6BC1\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.notdisposed", "\u52A0\u8F7D: \u672A\u5904\u7406\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"}, + {"appletpanel.bail", "\u5DF2\u4E2D\u65AD: \u79BB\u5F00\u3002"}, + {"appletpanel.filenotfound", "\u67E5\u627E\u65F6\u627E\u4E0D\u5230\u6587\u4EF6: {0}"}, + {"appletpanel.fileformat", "\u52A0\u8F7D\u65F6\u51FA\u73B0\u6587\u4EF6\u683C\u5F0F\u5F02\u5E38\u9519\u8BEF: {0}"}, + {"appletpanel.fileioexception", "\u52A0\u8F7D\u65F6\u51FA\u73B0 I/O \u5F02\u5E38\u9519\u8BEF: {0}"}, + {"appletpanel.fileexception", "\u52A0\u8F7D\u65F6\u51FA\u73B0{0}\u5F02\u5E38\u9519\u8BEF: {1}"}, + {"appletpanel.filedeath", "\u52A0\u8F7D\u65F6\u5DF2\u7EC8\u6B62{0}: {1}"}, + {"appletpanel.fileerror", "\u52A0\u8F7D\u65F6\u51FA\u73B0{0}\u9519\u8BEF: {1}"}, + {"appletpanel.badattribute.exception", "HTML \u8BED\u6CD5\u5206\u6790: \u5BBD\u5EA6/\u9AD8\u5EA6\u5C5E\u6027\u7684\u503C\u4E0D\u6B63\u786E"}, + {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream \u9700\u8981\u975E\u7A7A\u52A0\u8F7D\u5668"}, + {"appletprops.title", "AppletViewer \u5C5E\u6027"}, + {"appletprops.label.http.server", "Http \u4EE3\u7406\u670D\u52A1\u5668:"}, + {"appletprops.label.http.proxy", "Http \u4EE3\u7406\u7AEF\u53E3:"}, + {"appletprops.label.network", "\u7F51\u7EDC\u8BBF\u95EE\u6743\u9650:"}, + {"appletprops.choice.network.item.none", "\u65E0"}, + {"appletprops.choice.network.item.applethost", "\u5C0F\u5E94\u7528\u7A0B\u5E8F\u4E3B\u673A"}, + {"appletprops.choice.network.item.unrestricted", "\u4E0D\u53D7\u9650\u5236"}, + {"appletprops.label.class", "\u7C7B\u8BBF\u95EE\u6743\u9650:"}, + {"appletprops.choice.class.item.restricted", "\u53D7\u9650\u5236"}, + {"appletprops.choice.class.item.unrestricted", "\u4E0D\u53D7\u9650\u5236"}, + {"appletprops.label.unsignedapplet", "\u5141\u8BB8\u672A\u7B7E\u540D\u5C0F\u5E94\u7528\u7A0B\u5E8F:"}, {"appletprops.choice.unsignedapplet.no", "\u5426"}, - {"appletprops.choice.unsignedapplet.yes", "\u662f"}, - {"appletprops.button.apply", "\u5e94\u7528"}, - {"appletprops.button.cancel", "\u53d6\u6d88"}, - {"appletprops.button.reset", "\u91cd\u8bbe"}, - {"appletprops.apply.exception", "\u4fdd\u5b58\u5c5e\u6027\u65f6\u5931\u8d25\uff1a {0}"}, + {"appletprops.choice.unsignedapplet.yes", "\u662F"}, + {"appletprops.button.apply", "\u5E94\u7528"}, + {"appletprops.button.cancel", "\u53D6\u6D88"}, + {"appletprops.button.reset", "\u91CD\u8BBE"}, + {"appletprops.apply.exception", "\u65E0\u6CD5\u4FDD\u5B58\u5C5E\u6027: {0}"}, /* 4066432 */ - {"appletprops.title.invalidproxy", "\u65e0\u6548\u7684\u9879\u76ee"}, - {"appletprops.label.invalidproxy", "\u4ee3\u7406\u670d\u52a1\u5668\u7684\u7aef\u53e3\u53f7\u5fc5\u987b\u662f\u4e00\u4e2a\u6b63\u6574\u6570\u503c\u3002"}, - {"appletprops.button.ok", "\u786e\u5b9a"}, + {"appletprops.title.invalidproxy", "\u6761\u76EE\u65E0\u6548"}, + {"appletprops.label.invalidproxy", "\u4EE3\u7406\u7AEF\u53E3\u5FC5\u987B\u662F\u4E00\u4E2A\u6B63\u6574\u6570\u503C\u3002"}, + {"appletprops.button.ok", "\u786E\u5B9A"}, /* end 4066432 */ - {"appletprops.prop.store", "AppletViewer \u7684\u7528\u6237\u7279\u6709\u5c5e\u6027"}, - {"appletsecurityexception.checkcreateclassloader", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u7c7b\u8f7d\u5165\u7a0b\u5e8f"}, - {"appletsecurityexception.checkaccess.thread", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u7ebf\u7a0b "}, - {"appletsecurityexception.checkaccess.threadgroup", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a \u7ebf\u7a0b\u7ec4\uff1a {0}"}, - {"appletsecurityexception.checkexit", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u9000\u51fa\uff1a {0}"}, - {"appletsecurityexception.checkexec", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u6267\u884c\uff1a {0}"}, - {"appletsecurityexception.checklink", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u8fde\u63a5\uff1a {0}"}, - {"appletsecurityexception.checkpropsaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u5c5e\u6027"}, - {"appletsecurityexception.checkpropsaccess.key", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u5c5e\u6027\u8bbf\u95ee {0}"}, - {"appletsecurityexception.checkread.exception1", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a{0}, {1}"}, - {"appletsecurityexception.checkread.exception2", "\u5b89\u5168\u6027\u5f02\u5e38\uff1afile.read: {0}"}, - {"appletsecurityexception.checkread", "\u5b89\u5168\u6027\u5f02\u5e38\uff1afile.read: {0} == {1}"}, - {"appletsecurityexception.checkwrite.exception", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a{0}, {1}"}, - {"appletsecurityexception.checkwrite", "\u5b89\u5168\u6027\u5f02\u5e38\uff1afile.write: {0} == {1}"}, - {"appletsecurityexception.checkread.fd", "\u5b89\u5168\u6027\u5f02\u5e38\uff1afd.read"}, - {"appletsecurityexception.checkwrite.fd", "\u5b89\u5168\u6027\u5f02\u5e38\uff1afd.write"}, - {"appletsecurityexception.checklisten", "\u5b89\u5168\u6027\u5f02\u5e38\uff1asocket.listen: {0}"}, - {"appletsecurityexception.checkaccept", "\u5b89\u5168\u6027\u5f02\u5e38\uff1asocket.accept: {0}:{1}"}, - {"appletsecurityexception.checkconnect.networknone", "\u5b89\u5168\u6027\u5f02\u5e38\uff1asocket.connect: {0}->{1}"}, - {"appletsecurityexception.checkconnect.networkhost1", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u7528\u6765\u81ea {1} \u7684\u6e90\u8fde\u63a5\u5230 {0}\u3002"}, - {"appletsecurityexception.checkconnect.networkhost2", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u89e3\u6790\u4e3b\u673a {0} \u6216 {1} \u7684 IP\u3002"}, - {"appletsecurityexception.checkconnect.networkhost3", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u89e3\u6790\u4e3b\u673a {0} \u7684 IP\u3002\u8bf7\u53c2\u89c1\u5c5e\u6027 trustProxy\u3002"}, - {"appletsecurityexception.checkconnect", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a \u8fde\u63a5: {0}->{1}"}, - {"appletsecurityexception.checkpackageaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u8bbf\u95ee\u7a0b\u5e8f\u5305\uff1a{0}"}, - {"appletsecurityexception.checkpackagedefinition", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u5b9a\u4e49\u7a0b\u5e8f\u5305\uff1a{0}"}, - {"appletsecurityexception.cannotsetfactory", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u8bbe\u7f6e\u5de5\u5382"}, - {"appletsecurityexception.checkmemberaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u68c0\u67e5\u6210\u5458\u8bbf\u95ee"}, - {"appletsecurityexception.checkgetprintjob", "\u5b89\u5168\u6027\u5f02\u5e38\uff1agetPrintJob"}, - {"appletsecurityexception.checksystemclipboardaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1agetSystemClipboard"}, - {"appletsecurityexception.checkawteventqueueaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1agetEventQueue"}, - {"appletsecurityexception.checksecurityaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u5b89\u5168\u64cd\u4f5c {0}"}, - {"appletsecurityexception.getsecuritycontext.unknown", "\u672a\u77e5\u7684\u7c7b\u8f7d\u5165\u7a0b\u5e8f\u7c7b\u578b\u3002\u65e0\u6cd5\u68c0\u67e5 getContext"}, - {"appletsecurityexception.checkread.unknown", "\u672a\u77e5\u7684\u7c7b\u8f7d\u5165\u7a0b\u5e8f\u7c7b\u578b\u3002\u65e0\u6cd5\u68c0\u67e5\u7531\u68c0\u67e5\u8bfb {0} \u751f\u6210\u7684\u7ed3\u679c"}, - {"appletsecurityexception.checkconnect.unknown", "\u672a\u77e5\u7684\u7c7b\u8f7d\u5165\u7a0b\u5e8f\u7c7b\u578b\u3002\u65e0\u6cd5\u68c0\u67e5\u7531\u68c0\u67e5\u8fde\u63a5\u751f\u6210\u7684\u7ed3\u679c"}, + {"appletprops.prop.store", "AppletViewer \u7684\u7528\u6237\u7279\u5B9A\u5C5E\u6027"}, + {"appletsecurityexception.checkcreateclassloader", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u7C7B\u52A0\u8F7D\u5668"}, + {"appletsecurityexception.checkaccess.thread", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u7EBF\u7A0B"}, + {"appletsecurityexception.checkaccess.threadgroup", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u7EBF\u7A0B\u7EC4: {0}"}, + {"appletsecurityexception.checkexit", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u9000\u51FA: {0}"}, + {"appletsecurityexception.checkexec", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u6267\u884C: {0}"}, + {"appletsecurityexception.checklink", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u94FE\u63A5: {0}"}, + {"appletsecurityexception.checkpropsaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u5C5E\u6027"}, + {"appletsecurityexception.checkpropsaccess.key", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u5C5E\u6027\u8BBF\u95EE{0}"}, + {"appletsecurityexception.checkread.exception1", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: {0}, {1}"}, + {"appletsecurityexception.checkread.exception2", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: file.read: {0}"}, + {"appletsecurityexception.checkread", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: file.read: {0} == {1}"}, + {"appletsecurityexception.checkwrite.exception", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: {0}, {1}"}, + {"appletsecurityexception.checkwrite", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: file.write: {0} == {1}"}, + {"appletsecurityexception.checkread.fd", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: fd.read"}, + {"appletsecurityexception.checkwrite.fd", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: fd.write"}, + {"appletsecurityexception.checklisten", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: socket.listen: {0}"}, + {"appletsecurityexception.checkaccept", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: socket.accept: {0}:{1}"}, + {"appletsecurityexception.checkconnect.networknone", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: socket.connect: {0}->{1}"}, + {"appletsecurityexception.checkconnect.networkhost1", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u8FDE\u63A5\u5230\u6E90\u81EA{1}\u7684{0}\u3002"}, + {"appletsecurityexception.checkconnect.networkhost2", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u89E3\u6790\u4E3B\u673A{0}\u6216{1}\u7684 IP\u3002"}, + {"appletsecurityexception.checkconnect.networkhost3", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u89E3\u6790\u4E3B\u673A{0}\u7684 IP\u3002\u8BF7\u53C2\u9605 trustProxy \u5C5E\u6027\u3002"}, + {"appletsecurityexception.checkconnect", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u8FDE\u63A5: {0}->{1}"}, + {"appletsecurityexception.checkpackageaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u8BBF\u95EE\u7A0B\u5E8F\u5305: {0}"}, + {"appletsecurityexception.checkpackagedefinition", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u5B9A\u4E49\u7A0B\u5E8F\u5305: {0}"}, + {"appletsecurityexception.cannotsetfactory", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u8BBE\u7F6E\u5DE5\u5382"}, + {"appletsecurityexception.checkmemberaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u68C0\u67E5\u6210\u5458\u8BBF\u95EE\u6743\u9650"}, + {"appletsecurityexception.checkgetprintjob", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: getPrintJob"}, + {"appletsecurityexception.checksystemclipboardaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: getSystemClipboard"}, + {"appletsecurityexception.checkawteventqueueaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: getEventQueue"}, + {"appletsecurityexception.checksecurityaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u5B89\u5168\u64CD\u4F5C: {0}"}, + {"appletsecurityexception.getsecuritycontext.unknown", "\u7C7B\u52A0\u8F7D\u5668\u7C7B\u578B\u672A\u77E5\u3002\u65E0\u6CD5\u68C0\u67E5 getContext"}, + {"appletsecurityexception.checkread.unknown", "\u7C7B\u52A0\u8F7D\u5668\u7C7B\u578B\u672A\u77E5\u3002\u65E0\u6CD5\u4E3A\u68C0\u67E5\u8BFB\u53D6\u6743\u9650{0}\u800C\u8FDB\u884C\u68C0\u67E5"}, + {"appletsecurityexception.checkconnect.unknown", "\u7C7B\u52A0\u8F7D\u5668\u7C7B\u578B\u672A\u77E5\u3002\u65E0\u6CD5\u4E3A\u68C0\u67E5\u8FDE\u63A5\u800C\u8FDB\u884C\u68C0\u67E5"}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java index 5c9f2968d8e..fa0cb377b3e 100644 --- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java +++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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 @@ -29,173 +29,175 @@ import java.util.ListResourceBundle; public class MsgAppletViewer_zh_TW extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"textframe.button.dismiss", "\u95dc\u9589"}, - {"appletviewer.tool.title", "Applet \u6aa2\u8996\u5668\uff1a{0}"}, + Object[][] temp = new Object[][] { + {"textframe.button.dismiss", "\u95DC\u9589"}, + {"appletviewer.tool.title", "Applet \u6AA2\u8996\u5668: {0}"}, {"appletviewer.menu.applet", "Applet"}, - {"appletviewer.menuitem.restart", "\u91cd\u65b0\u555f\u52d5"}, - {"appletviewer.menuitem.reload", "\u91cd\u65b0\u8f09\u5165"}, - {"appletviewer.menuitem.stop", "\u505c\u6b62"}, - {"appletviewer.menuitem.save", "\u5132\u5b58..."}, - {"appletviewer.menuitem.start", "\u555f\u52d5"}, - {"appletviewer.menuitem.clone", "\u8907\u88fd..."}, - {"appletviewer.menuitem.tag", "\u6a19\u7c64..."}, - {"appletviewer.menuitem.info", "\u8cc7\u8a0a..."}, - {"appletviewer.menuitem.edit", "\u7de8\u8f2f"}, - {"appletviewer.menuitem.encoding", "\u5b57\u5143\u7de8\u78bc"}, + {"appletviewer.menuitem.restart", "\u91CD\u65B0\u555F\u52D5"}, + {"appletviewer.menuitem.reload", "\u91CD\u65B0\u8F09\u5165"}, + {"appletviewer.menuitem.stop", "\u505C\u6B62"}, + {"appletviewer.menuitem.save", "\u5132\u5B58..."}, + {"appletviewer.menuitem.start", "\u555F\u52D5"}, + {"appletviewer.menuitem.clone", "\u8907\u88FD..."}, + {"appletviewer.menuitem.tag", "\u6A19\u8A18..."}, + {"appletviewer.menuitem.info", "\u8CC7\u8A0A..."}, + {"appletviewer.menuitem.edit", "\u7DE8\u8F2F"}, + {"appletviewer.menuitem.encoding", "\u5B57\u5143\u7DE8\u78BC"}, {"appletviewer.menuitem.print", "\u5217\u5370..."}, - {"appletviewer.menuitem.props", "\u5c6c\u6027..."}, - {"appletviewer.menuitem.close", "\u95dc\u9589"}, - {"appletviewer.menuitem.quit", "\u7d50\u675f"}, - {"appletviewer.label.hello", "Hello..."}, - {"appletviewer.status.start", "\u555f\u52d5 applet..."}, - {"appletviewer.appletsave.filedialogtitle","\u5c07 Applet \u4e32\u5217\u5316\u81f3\u6a94\u6848\u4e2d"}, - {"appletviewer.appletsave.err1", "\u5c07 {0} \u4e32\u5217\u5316\u70ba {1}"}, - {"appletviewer.appletsave.err2", "\u5728 appletSave\uff1a{0} \u4e2d"}, - {"appletviewer.applettag", "\u986f\u793a\u7684\u6a19\u7c64"}, - {"appletviewer.applettag.textframe", "Applet HTML \u6a19\u7c64"}, - {"appletviewer.appletinfo.applet", "-- \u6c92\u6709 applet \u8cc7\u8a0a --"}, - {"appletviewer.appletinfo.param", "-- \u6c92\u6709\u53c3\u6578\u8cc7\u8a0a --"}, - {"appletviewer.appletinfo.textframe", "Applet \u8cc7\u8a0a"}, + {"appletviewer.menuitem.props", "\u5C6C\u6027..."}, + {"appletviewer.menuitem.close", "\u95DC\u9589"}, + {"appletviewer.menuitem.quit", "\u7D50\u675F"}, + {"appletviewer.label.hello", "\u60A8\u597D..."}, + {"appletviewer.status.start", "\u6B63\u5728\u555F\u52D5 Applet..."}, + {"appletviewer.appletsave.filedialogtitle","\u5C07 Applet \u5E8F\u5217\u5316\u70BA\u6A94\u6848"}, + {"appletviewer.appletsave.err1", "\u5C07 {0} \u5E8F\u5217\u5316\u70BA {1}"}, + {"appletviewer.appletsave.err2", "\u5728 appletSave \u4E2D: {0}"}, + {"appletviewer.applettag", "\u986F\u793A\u7684\u6A19\u8A18"}, + {"appletviewer.applettag.textframe", "Applet HTML \u6A19\u8A18"}, + {"appletviewer.appletinfo.applet", "-- \u7121 Applet \u8CC7\u8A0A --"}, + {"appletviewer.appletinfo.param", "-- \u7121\u53C3\u6578\u8CC7\u8A0A --"}, + {"appletviewer.appletinfo.textframe", "Applet \u8CC7\u8A0A"}, {"appletviewer.appletprint.fail", "\u5217\u5370\u5931\u6557\u3002"}, - {"appletviewer.appletprint.finish", "\u7d50\u675f\u5217\u5370\u3002"}, - {"appletviewer.appletprint.cancel", "\u53d6\u6d88\u5217\u5370\u3002"}, - {"appletviewer.appletencoding", "\u5b57\u5143\u7de8\u78bc\uff1a{0}"}, - {"appletviewer.parse.warning.requiresname", "\u8b66\u544a\uff1a \u6a19\u7c64\u9700\u8981\u540d\u7a31\u5c6c\u6027\u3002"}, - {"appletviewer.parse.warning.paramoutside", "\u8b66\u544a\uff1a \u6a19\u7c64\u5728 ... \u4e4b\u5916\u3002"}, - {"appletviewer.parse.warning.applet.requirescode", "\u8b66\u544a\uff1a \u6a19\u7c64\u9700\u8981\u7a0b\u5f0f\u78bc\u5c6c\u6027"}, - {"appletviewer.parse.warning.applet.requiresheight", "\u8b66\u544a\uff1a \u6a19\u7c64\u9700\u8981\u9ad8\u5ea6\u5c6c\u6027\u3002"}, - {"appletviewer.parse.warning.applet.requireswidth", "\u8b66\u544a\uff1a \u6a19\u7c64\u9700\u8981\u5bec\u5ea6\u5c6c\u6027\u3002"}, - {"appletviewer.parse.warning.object.requirescode", "\u8b66\u544a\uff1a \u6a19\u7c64\u9700\u8981\u7a0b\u5f0f\u78bc\u5c6c\u6027\u3002"}, - {"appletviewer.parse.warning.object.requiresheight", "\u8b66\u544a\uff1a \u6a19\u7c64\u9700\u8981\u9ad8\u5ea6\u5c6c\u6027\u3002"}, - {"appletviewer.parse.warning.object.requireswidth", "\u8b66\u544a\uff1a \u6a19\u7c64\u9700\u8981\u5bec\u5ea6\u5c6c\u6027\u3002"}, - {"appletviewer.parse.warning.embed.requirescode", "\u8b66\u544a\uff1a \u6a19\u7c64\u9700\u8981\u7a0b\u5f0f\u78bc\u5c6c\u6027\u3002"}, - {"appletviewer.parse.warning.embed.requiresheight", "\u8b66\u544a\uff1a \u6a19\u7c64\u9700\u8981\u9ad8\u5ea6\u5c6c\u6027\u3002"}, - {"appletviewer.parse.warning.embed.requireswidth", "\u8b66\u544a\uff1a \u6a19\u7c64\u9700\u8981\u5bec\u5ea6\u5c6c\u6027"}, - {"appletviewer.parse.warning.appnotLongersupported", "\u8b66\u544a\uff1a\u4e0d\u518d\u652f\u63f4 \u6a19\u7c64\uff0c\u8acb\u6539\u7528 \u3002"}, - {"appletviewer.usage", "\u4f7f\u7528\uff1aappletviewer url(s)\n\n\u5176\u4e2d \u5305\u542b:\n -debug \u5728 JAVA \u9664\u932f\u4e2d\u555f\u52d5 applet \u6aa2\u8996\u5668\n -encoding \u6307\u5b9a HTML \u6a94\u6848\u6240\u4f7f\u7528\u7684\u5b57\u5143\u7de8\u78bc\u65b9\u5f0f\n -J \u5c07\u5f15\u6578\u50b3\u81f3 JAVA \u76f4\u8b6f\u7a0b\u5f0f\n\n -J \u9078\u9805\u4e26\u975e\u6a19\u6e96\u7684\uff0c\u800c\u4e14\u53d7\u6539\u8b8a\u63a7\u5236\u6642\u4e0d\u53e6\u884c\u901a\u77e5\u3002"}, - {"appletviewer.main.err.unsupportedopt", "\u4e0d\u652f\u63f4\u7684\u9078\u9805\uff1a{0}"}, - {"appletviewer.main.err.unrecognizedarg", "\u7121\u6cd5\u8fa8\u8b58\u7684\u5f15\u6578\uff1a{0}"}, - {"appletviewer.main.err.dupoption", "\u91cd\u8907\u4f7f\u7528\u9078\u9805\uff1a{0}"}, - {"appletviewer.main.err.inputfile", "\u672a\u6307\u5b9a\u8f38\u5165\u6a94\u6848\u3002"}, - {"appletviewer.main.err.badurl", "\u932f\u8aa4\u7684 URL: {0} ( {1} )"}, - {"appletviewer.main.err.io", "\u5728\u8b80\u53d6\u6642\u767c\u751f I/O \u7570\u5e38\uff1a{0}"}, - {"appletviewer.main.err.readablefile", "\u8acb\u78ba\u5b9a {0} \u662f\u4e00\u500b\u6a94\u6848\u800c\u4e14\u53ef\u8b80\u53d6\u3002"}, - {"appletviewer.main.err.correcturl", " {0} \u662f\u6b63\u78ba\u7684 URL \u55ce?"}, - {"appletviewer.main.prop.store", "\u7d66 AppletViewer \u7684\u4f7f\u7528\u8005\u6307\u5b9a\u5c6c\u6027"}, - {"appletviewer.main.err.prop.cantread", "\u7121\u6cd5\u8b80\u53d6\u4f7f\u7528\u8005\u5c6c\u6027\u6a94\u6848\uff1a{0}"}, - {"appletviewer.main.err.prop.cantsave", "\u7121\u6cd5\u5132\u5b58\u4f7f\u7528\u8005\u5c6c\u6027\u6a94\u6848\uff1a{0}"}, - {"appletviewer.main.warn.nosecmgr", "\u8b66\u544a\uff1a\u505c\u7528\u5b89\u5168\u6027\u529f\u80fd\u3002"}, - {"appletviewer.main.debug.cantfinddebug", "\u627e\u4e0d\u5230\u9664\u932f\u7a0b\u5f0f!"}, - {"appletviewer.main.debug.cantfindmain", "\u5728\u9664\u932f\u7a0b\u5f0f\u4e2d\u627e\u4e0d\u5230\u4e3b\u65b9\u6cd5!"}, - {"appletviewer.main.debug.exceptionindebug", "\u9664\u932f\u7a0b\u5f0f\u767c\u751f\u7570\u5e38"}, - {"appletviewer.main.debug.cantaccess", "\u7121\u6cd5\u5b58\u53d6\u9664\u932f\u7a0b\u5f0f!"}, - {"appletviewer.main.nosecmgr", "\u8b66\u544a\uff1a\u672a\u5b89\u88dd SecurityManager"}, - {"appletviewer.main.warning", "\u8b66\u544a\uff1a\u672a\u555f\u52d5 applet\u3002\u8acb\u78ba\u5b9a\u6240\u8f38\u5165\u7684\u5305\u542b \u6a19\u7c64\u3002"}, - {"appletviewer.main.warn.prop.overwrite", "\u8b66\u544a\uff1a\u5728\u4f7f\u7528\u8005\u8981\u6c42\u4e0b\u66ab\u6642\u8986\u5beb\u7cfb\u7d71\u5c6c\u6027: key: {0} \u820a\u503c\uff1a{1} \u65b0\u503c\uff1a{2}"}, - {"appletviewer.main.warn.cantreadprops", "\u8b66\u544a\uff1a\u7121\u6cd5\u8b80\u53d6 AppletViewer \u5c6c\u6027\u6a94\uff1a{0} \u4f7f\u7528\u9810\u8a2d\u503c\u3002"}, - {"appletioexception.loadclass.throw.interrupted", "\u985e\u5225\u8f09\u5165\u4e2d\u65b7\uff1a{0}"}, - {"appletioexception.loadclass.throw.notloaded", "\u985e\u5225\u672a\u88ab\u8f09\u5165\uff1a{0}"}, - {"appletclassloader.loadcode.verbose", "\u958b\u555f\u4e32\u6d41\u81f3\uff1a{0} \u4ee5\u7372\u5f97\uff1a{1}"}, - {"appletclassloader.filenotfound", "\u5728\u5c0b\u627e\uff1a{0} \u6642\u672a\u627e\u5230\u6a94\u6848"}, - {"appletclassloader.fileformat", "\u5728\u8f09\u5165\uff1a{0} \u6642\u767c\u751f\u6a94\u6848\u683c\u5f0f\u7570\u5e38"}, - {"appletclassloader.fileioexception", "\u5728\u8f09\u5165\uff1a{0} \u6642\u767c\u751f I/O \u7570\u5e38"}, - {"appletclassloader.fileexception", "\u5728\u8f09\u5165\uff1a{1} \u6642\u767c\u751f {0} \u7570\u5e38"}, - {"appletclassloader.filedeath", "\u5728\u8f09\u5165 {1} \u6642 {0} \u88ab\u522a\u9664"}, - {"appletclassloader.fileerror", "\u5728\u8f09\u5165 {1} \u6642\u767c\u751f {0} \u932f\u8aa4"}, - {"appletclassloader.findclass.verbose.findclass", "{0} \u767c\u73fe\u985e\u5225 {1}"}, - {"appletclassloader.findclass.verbose.openstream", "\u958b\u555f\u8cc7\u6599\u6d41\u81f3\uff1a{0} \u4ee5\u7372\u5f97 {1}"}, - {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource \u540d\u7a31\uff1a{0}"}, - {"appletclassloader.getresource.verbose.found", "\u767c\u73fe\u8cc7\u6e90\uff1a {0} \u662f\u7cfb\u7d71\u8cc7\u6e90"}, - {"appletclassloader.getresourceasstream.verbose", "\u88ab\u767c\u73fe\u7684\u8cc7\u6e90\uff1a{0} \u662f\u7cfb\u7d71\u8cc7\u6e90"}, - {"appletpanel.runloader.err", "\u7269\u4ef6\u6216\u662f\u7a0b\u5f0f\u78bc\u53c3\u6578!"}, - {"appletpanel.runloader.exception", "\u53cd\u4e32\u5217\u5316 {0} \u6642\u767c\u751f\u7570\u5e38"}, - {"appletpanel.destroyed", "Applet \u5df2\u92b7\u6bc0"}, - {"appletpanel.loaded", "Applet \u5df2\u8f09\u5165\u3002"}, - {"appletpanel.started", "Applet \u5df2\u555f\u52d5\u3002"}, - {"appletpanel.inited", "Applet \u5df2\u521d\u59cb\u5316\u3002"}, - {"appletpanel.stopped", "Applet \u5df2\u505c\u6b62\u3002"}, - {"appletpanel.disposed", "Applet \u5df2\u68c4\u7f6e\u3002"}, - {"appletpanel.nocode", "APPLET \u6a19\u7c64\u907a\u6f0f CODE \u53c3\u6578\u3002"}, - {"appletpanel.notfound", "\u8f09\u5165\ufe30\u627e\u4e0d\u5230\u985e\u5225 {0}\u3002"}, - {"appletpanel.nocreate", "\u8f09\u5165\ufe30\u7121\u6cd5\u5275\u8a2d {0}\u3002"}, - {"appletpanel.noconstruct", "\u8f09\u5165\ufe30{0} \u4e0d\u662f\u516c\u7528\u6216\u6c92\u6709\u516c\u7528\u5efa\u69cb\u5143\u3002"}, - {"appletpanel.death", "\u5df2\u522a\u9664"}, - {"appletpanel.exception", "\u7570\u5e38\ufe30{0}\u3002"}, - {"appletpanel.exception2", "\u7570\u5e38\ufe30{0}\ufe30{1}\u3002"}, - {"appletpanel.error", "\u932f\u8aa4\ufe30{0}\u3002"}, - {"appletpanel.error2", "\u932f\u8aa4\ufe30{0}\ufe30{1}\u3002"}, - {"appletpanel.notloaded", "\u521d\u59cb\u5316\ufe30\u6c92\u6709\u8f09\u5165 applet\u3002"}, - {"appletpanel.notinited", "\u555f\u52d5\ufe30\u6c92\u6709\u521d\u59cb\u5316 applet\u3002"}, - {"appletpanel.notstarted", "\u505c\u6b62\ufe30\u6c92\u6709\u555f\u52d5 applet\u3002"}, - {"appletpanel.notstopped", "\u92b7\u6bc0\ufe30\u6c92\u6709\u505c\u6b62 applet\u3002"}, - {"appletpanel.notdestroyed", "\u68c4\u7f6e\ufe30\u6c92\u6709\u92b7\u6bc0 applet\u3002"}, - {"appletpanel.notdisposed", "\u8f09\u5165\ufe30\u6c92\u6709\u68c4\u7f6e applet\u3002"}, - {"appletpanel.bail", "\u4e2d\u65b7\ufe30\u91cb\u51fa\u3002"}, - {"appletpanel.filenotfound", "\u5c0b\u627e\ufe30{0} \u6642\u627e\u4e0d\u5230\u6a94\u6848"}, - {"appletpanel.fileformat", "\u8f09\u5165\ufe30{0} \u6642\u767c\u751f\u6a94\u6848\u683c\u5f0f\u7570\u5e38"}, - {"appletpanel.fileioexception", "\u8f09\u5165\ufe30{0} \u6642\u767c\u751f I/O \u7570\u5e38"}, - {"appletpanel.fileexception", "\u8f09\u5165\ufe30{1} \u6642\u767c\u751f {0} \u7570\u5e38"}, - {"appletpanel.filedeath", "\u8f09\u5165\ufe30{1} \u6642\u522a\u9664\u4e86 {0}"}, - {"appletpanel.fileerror", "\u8f09\u5165\ufe30{1} \u6642\u767c\u751f {0} \u932f\u8aa4"}, - {"appletpanel.badattribute.exception", "HTML \u5256\u6790\uff1a\u5bec\u5ea6/\u9ad8\u5ea6\u5c6c\u6027\u503c\u4e0d\u6b63\u78ba"}, - {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream \u9700\u8981\u975e\u7a7a\u7684\u8f09\u5165\u5668"}, - {"appletprops.title", "AppletViewer \u5c6c\u6027"}, - {"appletprops.label.http.server", "Http \u4ee3\u7406\u4f3a\u670d\u5668\ufe30"}, - {"appletprops.label.http.proxy", "Http \u4ee3\u7406\u9023\u63a5\u57e0\ufe30"}, - {"appletprops.label.network", "\u7db2\u8def\u5b58\u53d6\ufe30"}, + {"appletviewer.appletprint.finish", "\u5B8C\u6210\u5217\u5370\u3002"}, + {"appletviewer.appletprint.cancel", "\u5217\u5370\u53D6\u6D88\u3002"}, + {"appletviewer.appletencoding", "\u5B57\u5143\u7DE8\u78BC: {0}"}, + {"appletviewer.parse.warning.requiresname", "\u8B66\u544A: <\u53C3\u6578\u540D\u7A31=... \u503C=...> \u6A19\u8A18\u9700\u8981\u540D\u7A31\u5C6C\u6027\u3002"}, + {"appletviewer.parse.warning.paramoutside", "\u8B66\u544A: \u6A19\u8A18\u5728 ... \u4E4B\u5916\u3002"}, + {"appletviewer.parse.warning.applet.requirescode", "\u8B66\u544A: \u6A19\u8A18\u9700\u8981\u4EE3\u78BC\u5C6C\u6027\u3002"}, + {"appletviewer.parse.warning.applet.requiresheight", "\u8B66\u544A: \u6A19\u8A18\u9700\u8981\u9AD8\u5EA6\u5C6C\u6027\u3002"}, + {"appletviewer.parse.warning.applet.requireswidth", "\u8B66\u544A: \u6A19\u8A18\u9700\u8981\u5BEC\u5EA6\u5C6C\u6027\u3002"}, + {"appletviewer.parse.warning.object.requirescode", "\u8B66\u544A: \u6A19\u8A18\u9700\u8981\u4EE3\u78BC\u5C6C\u6027\u3002"}, + {"appletviewer.parse.warning.object.requiresheight", "\u8B66\u544A: \u6A19\u8A18\u9700\u8981\u9AD8\u5EA6\u5C6C\u6027\u3002"}, + {"appletviewer.parse.warning.object.requireswidth", "\u8B66\u544A: \u6A19\u8A18\u9700\u8981\u5BEC\u5EA6\u5C6C\u6027\u3002"}, + {"appletviewer.parse.warning.embed.requirescode", "\u8B66\u544A: \u6A19\u8A18\u9700\u8981\u4EE3\u78BC\u5C6C\u6027\u3002"}, + {"appletviewer.parse.warning.embed.requiresheight", "\u8B66\u544A: \u6A19\u8A18\u9700\u8981\u9AD8\u5EA6\u5C6C\u6027\u3002"}, + {"appletviewer.parse.warning.embed.requireswidth", "\u8B66\u544A: \u6A19\u8A18\u9700\u8981\u5BEC\u5EA6\u5C6C\u6027\u3002"}, + {"appletviewer.parse.warning.appnotLongersupported", "\u8B66\u544A: \u4E0D\u518D\u652F\u63F4 \u6A19\u8A18\uFF0C\u8ACB\u6539\u7528 :"}, + {"appletviewer.usage", "\u7528\u6CD5: appletviewer <\u9078\u9805> url(s)\n\n\u5176\u4E2D\u7684 <\u9078\u9805> \u5305\u62EC:\n -debug \u5728 Java \u9664\u932F\u7A0B\u5F0F\u4E2D\u555F\u52D5 Applet \u6AA2\u8996\u5668\n -encoding <\u7DE8\u78BC> \u6307\u5B9A HTML \u6A94\u6848\u4F7F\u7528\u7684\u5B57\u5143\u7DE8\u78BC\n -J<\u57F7\u884C\u968E\u6BB5\u65D7\u6A19> \u5C07\u5F15\u6578\u50B3\u9001\u81F3 java \u89E3\u8B6F\u5668\n\n -J \u9078\u9805\u4E0D\u662F\u6A19\u6E96\u9078\u9805\uFF0C\u82E5\u6709\u8B8A\u66F4\u4E0D\u53E6\u884C\u901A\u77E5\u3002"}, + {"appletviewer.main.err.unsupportedopt", "\u4E0D\u652F\u63F4\u7684\u9078\u9805: {0}"}, + {"appletviewer.main.err.unrecognizedarg", "\u7121\u6CD5\u8FA8\u8B58\u7684\u5F15\u6578: {0}"}, + {"appletviewer.main.err.dupoption", "\u91CD\u8907\u4F7F\u7528\u9078\u9805: {0}"}, + {"appletviewer.main.err.inputfile", "\u672A\u6307\u5B9A\u8F38\u5165\u6A94\u6848\u3002"}, + {"appletviewer.main.err.badurl", "\u932F\u8AA4\u7684 URL: {0} ( {1} )"}, + {"appletviewer.main.err.io", "\u8B80\u53D6\u6642\u767C\u751F I/O \u7570\u5E38\u72C0\u6CC1: {0}"}, + {"appletviewer.main.err.readablefile", "\u78BA\u8A8D {0} \u70BA\u6A94\u6848\u4E14\u53EF\u8B80\u53D6\u3002"}, + {"appletviewer.main.err.correcturl", "{0} \u662F\u5426\u70BA\u6B63\u78BA\u7684 URL\uFF1F"}, + {"appletviewer.main.prop.store", "AppletViewer \u7684\u4F7F\u7528\u8005\u7279\u5B9A\u5C6C\u6027"}, + {"appletviewer.main.err.prop.cantread", "\u7121\u6CD5\u8B80\u53D6\u4F7F\u7528\u8005\u5C6C\u6027\u6A94\u6848: {0}"}, + {"appletviewer.main.err.prop.cantsave", "\u7121\u6CD5\u5132\u5B58\u4F7F\u7528\u8005\u5C6C\u6027\u6A94\u6848: {0}"}, + {"appletviewer.main.warn.nosecmgr", "\u8B66\u544A: \u505C\u7528\u5B89\u5168\u529F\u80FD\u3002"}, + {"appletviewer.main.debug.cantfinddebug", "\u627E\u4E0D\u5230\u9664\u932F\u7A0B\u5F0F\uFF01"}, + {"appletviewer.main.debug.cantfindmain", "\u5728\u9664\u932F\u7A0B\u5F0F\u4E2D\u627E\u4E0D\u5230\u4E3B\u8981\u65B9\u6CD5\uFF01"}, + {"appletviewer.main.debug.exceptionindebug", "\u9664\u932F\u7A0B\u5F0F\u767C\u751F\u7570\u5E38\u72C0\u6CC1\uFF01"}, + {"appletviewer.main.debug.cantaccess", "\u7121\u6CD5\u5B58\u53D6\u9664\u932F\u7A0B\u5F0F\uFF01"}, + {"appletviewer.main.nosecmgr", "\u8B66\u544A: \u672A\u5B89\u88DD SecurityManager\uFF01"}, + {"appletviewer.main.warning", "\u8B66\u544A: \u672A\u555F\u52D5 Applet\u3002\u8ACB\u78BA\u8A8D\u8F38\u5165\u5305\u542B \u6A19\u8A18\u3002"}, + {"appletviewer.main.warn.prop.overwrite", "\u8B66\u544A: \u4F9D\u7167\u4F7F\u7528\u8005\u8981\u6C42\uFF0C\u66AB\u6642\u8986\u5BEB\u7CFB\u7D71\u5C6C\u6027: \u7D22\u5F15\u9375: {0} \u820A\u503C: {1} \u65B0\u503C: {2}"}, + {"appletviewer.main.warn.cantreadprops", "\u8B66\u544A: \u7121\u6CD5\u8B80\u53D6 AppletViewer \u5C6C\u6027\u6A94\u6848: {0} \u4F7F\u7528\u9810\u8A2D\u503C\u3002"}, + {"appletioexception.loadclass.throw.interrupted", "\u985E\u5225\u8F09\u5165\u4E2D\u65B7: {0}"}, + {"appletioexception.loadclass.throw.notloaded", "\u672A\u8F09\u5165\u985E\u5225: {0}"}, + {"appletclassloader.loadcode.verbose", "\u958B\u555F {0} \u7684\u4E32\u6D41\u4EE5\u53D6\u5F97 {1}"}, + {"appletclassloader.filenotfound", "\u5C0B\u627E {0} \u6642\u627E\u4E0D\u5230\u6A94\u6848"}, + {"appletclassloader.fileformat", "\u8F09\u5165\u6642\u767C\u751F\u6A94\u6848\u683C\u5F0F\u7570\u5E38\u72C0\u6CC1: {0}"}, + {"appletclassloader.fileioexception", "\u8F09\u5165\u6642\u767C\u751F I/O \u7570\u5E38\u72C0\u6CC1: {0}"}, + {"appletclassloader.fileexception", "\u8F09\u5165\u6642\u767C\u751F {0} \u7570\u5E38\u72C0\u6CC1: {1}"}, + {"appletclassloader.filedeath", "\u8F09\u5165\u6642\u522A\u9664 {0}: {1}"}, + {"appletclassloader.fileerror", "\u8F09\u5165\u6642\u767C\u751F {0} \u932F\u8AA4: {1}"}, + {"appletclassloader.findclass.verbose.findclass", "{0} \u5C0B\u627E\u985E\u5225 {1}"}, + {"appletclassloader.findclass.verbose.openstream", "\u958B\u555F {0} \u7684\u4E32\u6D41\u4EE5\u53D6\u5F97 {1}"}, + {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource \u7684\u540D\u7A31: {0}"}, + {"appletclassloader.getresource.verbose.found", "\u627E\u5230\u8CC7\u6E90: {0} \u4F5C\u70BA\u7CFB\u7D71\u8CC7\u6E90"}, + {"appletclassloader.getresourceasstream.verbose", "\u627E\u5230\u8CC7\u6E90: {0} \u4F5C\u70BA\u7CFB\u7D71\u8CC7\u6E90"}, + {"appletpanel.runloader.err", "\u7269\u4EF6\u6216\u4EE3\u78BC\u53C3\u6578\uFF01"}, + {"appletpanel.runloader.exception", "\u9084\u539F\u5E8F\u5217\u5316 {0} \u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1"}, + {"appletpanel.destroyed", "\u5DF2\u640D\u6BC0 Applet\u3002"}, + {"appletpanel.loaded", "\u5DF2\u8F09\u5165 Applet\u3002"}, + {"appletpanel.started", "\u5DF2\u555F\u7528 Applet\u3002"}, + {"appletpanel.inited", "\u5DF2\u8D77\u59CB Applet\u3002"}, + {"appletpanel.stopped", "\u5DF2\u505C\u6B62 Applet\u3002"}, + {"appletpanel.disposed", "\u5DF2\u8655\u7F6E Applet\u3002"}, + {"appletpanel.nocode", "APPLET \u6A19\u8A18\u907A\u6F0F CODE \u53C3\u6578\u3002"}, + {"appletpanel.notfound", "\u8F09\u5165: \u627E\u4E0D\u5230\u985E\u5225 {0}\u3002"}, + {"appletpanel.nocreate", "\u8F09\u5165: \u7121\u6CD5\u5EFA\u7ACB {0}\u3002"}, + {"appletpanel.noconstruct", "\u8F09\u5165: {0} \u975E\u516C\u7528\u6216\u6C92\u6709\u516C\u7528\u5EFA\u69CB\u5B50\u3002"}, + {"appletpanel.death", "\u5DF2\u522A\u9664"}, + {"appletpanel.exception", "\u7570\u5E38\u72C0\u6CC1: {0}\u3002"}, + {"appletpanel.exception2", "\u7570\u5E38\u72C0\u6CC1: {0}: {1}\u3002"}, + {"appletpanel.error", "\u932F\u8AA4: {0}\u3002"}, + {"appletpanel.error2", "\u932F\u8AA4: {0}: {1}\u3002"}, + {"appletpanel.notloaded", "\u8D77\u59CB: \u672A\u8F09\u5165 Applet\u3002"}, + {"appletpanel.notinited", "\u555F\u52D5: \u672A\u8D77\u59CB Applet\u3002"}, + {"appletpanel.notstarted", "\u505C\u6B62: \u672A\u555F\u52D5 Applet\u3002"}, + {"appletpanel.notstopped", "\u640D\u6BC0: \u672A\u505C\u6B62 Applet\u3002"}, + {"appletpanel.notdestroyed", "\u8655\u7F6E: \u672A\u640D\u6BC0 Applet\u3002"}, + {"appletpanel.notdisposed", "\u8F09\u5165: \u672A\u8655\u7F6E Applet\u3002"}, + {"appletpanel.bail", "\u5DF2\u4E2D\u65B7: \u6B63\u5728\u7D50\u675F\u3002"}, + {"appletpanel.filenotfound", "\u5C0B\u627E {0} \u6642\u627E\u4E0D\u5230\u6A94\u6848"}, + {"appletpanel.fileformat", "\u8F09\u5165\u6642\u767C\u751F\u6A94\u6848\u683C\u5F0F\u7570\u5E38\u72C0\u6CC1: {0}"}, + {"appletpanel.fileioexception", "\u8F09\u5165\u6642\u767C\u751F I/O \u7570\u5E38\u72C0\u6CC1: {0}"}, + {"appletpanel.fileexception", "\u8F09\u5165\u6642\u767C\u751F {0} \u7570\u5E38\u72C0\u6CC1: {1}"}, + {"appletpanel.filedeath", "\u8F09\u5165\u6642\u522A\u9664 {0}: {1}"}, + {"appletpanel.fileerror", "\u8F09\u5165\u6642\u767C\u751F {0} \u932F\u8AA4: {1}"}, + {"appletpanel.badattribute.exception", "HTML \u5256\u6790: \u5BEC\u5EA6/\u9AD8\u5EA6\u5C6C\u6027\u7684\u503C\u4E0D\u6B63\u78BA"}, + {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream \u9700\u8981\u975E\u7A7A\u503C\u8F09\u5165\u5668"}, + {"appletprops.title", "AppletViewer \u5C6C\u6027"}, + {"appletprops.label.http.server", "Http \u4EE3\u7406\u4E3B\u6A5F\u4F3A\u670D\u5668:"}, + {"appletprops.label.http.proxy", "Http \u4EE3\u7406\u4E3B\u6A5F\u9023\u63A5\u57E0:"}, + {"appletprops.label.network", "\u7DB2\u8DEF\u5B58\u53D6:"}, {"appletprops.choice.network.item.none", "\u7121"}, - {"appletprops.choice.network.item.applethost", "Applet \u4e3b\u6a5f"}, - {"appletprops.choice.network.item.unrestricted", "\u7121\u9650\u5236\u7684"}, - {"appletprops.label.class", "\u985e\u5225\u5b58\u53d6\ufe30"}, - {"appletprops.choice.class.item.restricted", "\u53d7\u9650\u5236\u7684"}, - {"appletprops.choice.class.item.unrestricted", "\u7121\u9650\u5236\u7684"}, - {"appletprops.label.unsignedapplet", "\u5141\u8a31\u7121\u7c3d\u540d\u7684 applet\ufe30"}, + {"appletprops.choice.network.item.applethost", "Applet \u4E3B\u6A5F"}, + {"appletprops.choice.network.item.unrestricted", "\u4E0D\u53D7\u9650\u5236"}, + {"appletprops.label.class", "\u985E\u5225\u5B58\u53D6:"}, + {"appletprops.choice.class.item.restricted", "\u53D7\u9650\u5236"}, + {"appletprops.choice.class.item.unrestricted", "\u4E0D\u53D7\u9650\u5236"}, + {"appletprops.label.unsignedapplet", "\u5141\u8A31\u672A\u7C3D\u7F72\u7684 Applet:"}, {"appletprops.choice.unsignedapplet.no", "\u5426"}, - {"appletprops.choice.unsignedapplet.yes", "\u662f"}, + {"appletprops.choice.unsignedapplet.yes", "\u662F"}, {"appletprops.button.apply", "\u5957\u7528"}, - {"appletprops.button.cancel", "\u53d6\u6d88"}, - {"appletprops.button.reset", "\u91cd\u8a2d"}, - {"appletprops.apply.exception", "\u7121\u6cd5\u5132\u5b58\u5c6c\u6027\ufe30{0}"}, + {"appletprops.button.cancel", "\u53D6\u6D88"}, + {"appletprops.button.reset", "\u91CD\u8A2D"}, + {"appletprops.apply.exception", "\u7121\u6CD5\u5132\u5B58\u5C6C\u6027: {0}"}, /* 4066432 */ - {"appletprops.title.invalidproxy", "\u8f38\u5165\u9805\u76ee\u7121\u6548"}, - {"appletprops.label.invalidproxy", "\u4ee3\u7406\u9023\u63a5\u57e0\u5fc5\u9808\u662f\u6b63\u6574\u6578\u503c\u3002"}, - {"appletprops.button.ok", "\u78ba\u5b9a"}, + {"appletprops.title.invalidproxy", "\u7121\u6548\u7684\u9805\u76EE"}, + {"appletprops.label.invalidproxy", "\u4EE3\u7406\u4E3B\u6A5F\u9023\u63A5\u57E0\u5FC5\u9808\u662F\u6B63\u6574\u6578\u503C\u3002"}, + {"appletprops.button.ok", "\u78BA\u5B9A"}, /* end 4066432 */ - {"appletprops.prop.store", "\u7528\u65bc AppletViewer \u7684\u4f7f\u7528\u8005\u6307\u5b9a\u5c6c\u6027"}, - {"appletsecurityexception.checkcreateclassloader", "\u5b89\u5168\u6027\u7570\u5e38\uff1a\u985e\u5225\u8f09\u5165\u5668"}, - {"appletsecurityexception.checkaccess.thread", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u57f7\u884c\u7dd2"}, - {"appletsecurityexception.checkaccess.threadgroup", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u57f7\u884c\u7dd2\u7fa4\u7d44\ufe30{0}"}, - {"appletsecurityexception.checkexit", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u7d50\u675f\ufe30{0}"}, - {"appletsecurityexception.checkexec", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u57f7\u884c\ufe30{0}"}, - {"appletsecurityexception.checklink", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u9023\u7d50\ufe30{0}"}, - {"appletsecurityexception.checkpropsaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u5c6c\u6027"}, - {"appletsecurityexception.checkpropsaccess.key", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u5c6c\u6027\u5b58\u53d6 {0}"}, - {"appletsecurityexception.checkread.exception1", "\u5b89\u5168\u6027\u7570\u5e38\ufe30{0}, {1}"}, - {"appletsecurityexception.checkread.exception2", "\u5b89\u5168\u6027\u7570\u5e38\ufe30file.read: {0}"}, - {"appletsecurityexception.checkread", "file.write: {0} == {1}"}, - {"appletsecurityexception.checkwrite.exception", "\u5b89\u5168\u6027\u7570\u5e38\ufe30{0}, {1}"}, - {"appletsecurityexception.checkwrite", "\u5b89\u5168\u6027\u7570\u5e38\ufe30{0} == {1}"}, - {"appletsecurityexception.checkread.fd", "\u5b89\u5168\u6027\u7570\u5e38\ufe30 fd.read"}, - {"appletsecurityexception.checkwrite.fd", "\u5b89\u5168\u6027\u7570\u5e38\ufe30 fd.write"}, - {"appletsecurityexception.checklisten", "\u5b89\u5168\u6027\u7570\u5e38\ufe30 socket.listen: {0}"}, - {"appletsecurityexception.checkaccept", "\u5b89\u5168\u6027\u7570\u5e38\ufe30 socket.accept: {0}:{1}"}, - {"appletsecurityexception.checkconnect.networknone", "\u5b89\u5168\u6027\u7570\u5e38\ufe30{0}->{1}"}, - {"appletsecurityexception.checkconnect.networkhost1", "\u5b89\u5168\u6027\u7570\u5e38\ufe30 \u7121\u6cd5\u5f9e {1} \u9023\u63a5\u5230\u539f\u59cb\u7684 {0}\u3002"}, - {"appletsecurityexception.checkconnect.networkhost2", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u7121\u6cd5\u89e3\u8b6f\u4e3b\u6a5f {0} \u6216 {1} \u7684 IP\u3002"}, - {"appletsecurityexception.checkconnect.networkhost3", "\u5168\u6027\u7570\u5e38\ufe30\u7121\u6cd5\u89e3\u8b6f\u4e3b\u6a5f {0} \u7684 IP\u3002\u8acb\u53c3\u95b1 trustProxy \u5c6c\u6027\u3002"}, - {"appletsecurityexception.checkconnect", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u9023\u63a5\ufe30{0}->{1}"}, - {"appletsecurityexception.checkpackageaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u7121\u6cd5\u5b58\u53d6\u5957\u88dd\u8edf\u9ad4\ufe30{0}"}, - {"appletsecurityexception.checkpackagedefinition", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u7121\u6cd5\u5b9a\u7fa9\u5957\u88dd\u8edf\u9ad4\ufe30{0}"}, - {"appletsecurityexception.cannotsetfactory", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u7121\u6cd5\u8a2d\u5b9a factory"}, - {"appletsecurityexception.checkmemberaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u6aa2\u67e5\u6210\u54e1\u5b58\u53d6\u6b0a\u9650"}, - {"appletsecurityexception.checkgetprintjob", "\u5b89\u5168\u6027\u7570\u5e38\ufe30getPrintJob"}, - {"appletsecurityexception.checksystemclipboardaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30getSystemClipboard"}, - {"appletsecurityexception.checkawteventqueueaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30getEventQueue"}, - {"appletsecurityexception.checksecurityaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u5b89\u5168\u6027\u64cd\u4f5c\ufe30{0}"}, - {"appletsecurityexception.getsecuritycontext.unknown", "\u672a\u77e5\u7684\u985e\u5225\u8f09\u5165\u5668\u985e\u578b\u3002\u7121\u6cd5\u6aa2\u67e5 getContext"}, - {"appletsecurityexception.checkread.unknown", "\u672a\u77e5\u7684\u985e\u5225\u8f09\u5165\u5668\u985e\u578b\u3002\u7121\u6cd5\u67e5\u770b\u6aa2\u67e5\u8b80\u53d6 {0}"}, - {"appletsecurityexception.checkconnect.unknown", "\u672a\u77e5\u7684\u985e\u5225\u8f09\u5165\u5668\u985e\u578b\u3002\u7121\u6cd5\u67e5\u770b\u6aa2\u67e5\u9023\u63a5"}, + {"appletprops.prop.store", "AppletViewer \u7684\u4F7F\u7528\u8005\u7279\u5B9A\u5C6C\u6027"}, + {"appletsecurityexception.checkcreateclassloader", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: classloader"}, + {"appletsecurityexception.checkaccess.thread", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: thread"}, + {"appletsecurityexception.checkaccess.threadgroup", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: threadgroup: {0}"}, + {"appletsecurityexception.checkexit", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: exit: {0}"}, + {"appletsecurityexception.checkexec", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: exec: {0}"}, + {"appletsecurityexception.checklink", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: link: {0}"}, + {"appletsecurityexception.checkpropsaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u5C6C\u6027"}, + {"appletsecurityexception.checkpropsaccess.key", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u5C6C\u6027\u5B58\u53D6 {0}"}, + {"appletsecurityexception.checkread.exception1", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: {0}\uFF0C{1}"}, + {"appletsecurityexception.checkread.exception2", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: file.read: {0}"}, + {"appletsecurityexception.checkread", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: file.read: {0} == {1}"}, + {"appletsecurityexception.checkwrite.exception", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: {0}\uFF0C{1}"}, + {"appletsecurityexception.checkwrite", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: file.write: {0} == {1}"}, + {"appletsecurityexception.checkread.fd", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: fd.read"}, + {"appletsecurityexception.checkwrite.fd", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: fd.write"}, + {"appletsecurityexception.checklisten", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: socket.listen: {0}"}, + {"appletsecurityexception.checkaccept", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: socket.accept: {0}:{1}"}, + {"appletsecurityexception.checkconnect.networknone", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: socket.connect: {0}->{1}"}, + {"appletsecurityexception.checkconnect.networkhost1", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u5F9E\u4F86\u6E90 {1} \u9023\u7DDA\u81F3 {0}\u3002"}, + {"appletsecurityexception.checkconnect.networkhost2", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u89E3\u6790\u4E3B\u6A5F {0} \u6216 {1} \u7684 IP\u3002"}, + {"appletsecurityexception.checkconnect.networkhost3", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u89E3\u6790\u4E3B\u6A5F {0} \u7684 IP\u3002\u8ACB\u53C3\u95B1 trustProxy \u5C6C\u6027\u3002"}, + {"appletsecurityexception.checkconnect", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: connect: {0}->{1}"}, + {"appletsecurityexception.checkpackageaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u5B58\u53D6\u5957\u88DD\u7A0B\u5F0F: {0}"}, + {"appletsecurityexception.checkpackagedefinition", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u5B9A\u7FA9\u5957\u88DD\u7A0B\u5F0F: {0}"}, + {"appletsecurityexception.cannotsetfactory", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u8A2D\u5B9A\u8655\u7406\u7AD9"}, + {"appletsecurityexception.checkmemberaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u6AA2\u67E5\u6210\u54E1\u5B58\u53D6"}, + {"appletsecurityexception.checkgetprintjob", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: getPrintJob"}, + {"appletsecurityexception.checksystemclipboardaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: getSystemClipboard"}, + {"appletsecurityexception.checkawteventqueueaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: getEventQueue"}, + {"appletsecurityexception.checksecurityaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u5B89\u5168\u4F5C\u696D: {0}"}, + {"appletsecurityexception.getsecuritycontext.unknown", "\u4E0D\u660E\u7684\u985E\u5225\u8F09\u5165\u5668\u985E\u578B\u3002\u7121\u6CD5\u6AA2\u67E5 getContext"}, + {"appletsecurityexception.checkread.unknown", "\u4E0D\u660E\u7684\u985E\u5225\u8F09\u5165\u5668\u985E\u578B\u3002\u7121\u6CD5\u6AA2\u67E5 read {0}"}, + {"appletsecurityexception.checkconnect.unknown", "\u4E0D\u660E\u7684\u985E\u5225\u8F09\u5165\u5668\u985E\u578B\u3002\u7121\u6CD5\u6AA2\u67E5\u9023\u7DDA"}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/awt/resources/awt_de.properties b/jdk/src/share/classes/sun/awt/resources/awt_de.properties index 59ff379fcb0..93ef0a14681 100644 --- a/jdk/src/share/classes/sun/awt/resources/awt_de.properties +++ b/jdk/src/share/classes/sun/awt/resources/awt_de.properties @@ -12,12 +12,12 @@ AWT.altGraph=Alt Gr # Key names AWT.enter=Eingabe -AWT.backSpace=R\u00fccktaste +AWT.backSpace=R\u00FCcktaste AWT.tab=Tabulator AWT.cancel=Abbrechen -AWT.clear=L\u00f6schen +AWT.clear=L\u00F6schen AWT.pause=Pause -AWT.capsLock=Umschalttaste Gro\u00df-/Kleinschreibung +AWT.capsLock=Feststelltaste AWT.escape=ESC AWT.space=Leertaste AWT.pgup=Bild auf @@ -28,25 +28,25 @@ AWT.left=Links AWT.up=Oben AWT.right=Rechts AWT.down=Unten -AWT.begin=Begin -AWT.comma=Comma -AWT.period=Period -AWT.slash=Slash -AWT.semicolon=Semicolon -AWT.equals=Equals -AWT.openBracket=Open Bracket -AWT.backSlash=Back Slash -AWT.closeBracket=Close Bracket -AWT.multiply=Tastenblock * -AWT.add=Tastenblock + -AWT.separator=Tastenblock , -AWT.separater=Tastenblock , -AWT.subtract=Tastenblock - -AWT.decimal=Tastenblock . -AWT.divide=Tastenblock / +AWT.begin=Anfang +AWT.comma=Komma +AWT.period=Punkt +AWT.slash=Schr\u00E4gstrich +AWT.semicolon=Semikolon +AWT.equals=Entspricht +AWT.openBracket=\u00D6ffnende Klammer +AWT.backSlash=Umgekehrter Schr\u00E4gstrich +AWT.closeBracket=Schlie\u00DFende Klammer +AWT.multiply=NumPad * +AWT.add=NumPad + +AWT.separator=NumPad , +AWT.separater=NumPad , +AWT.subtract=NumPad - +AWT.decimal=NumPad . +AWT.divide=NumPad / AWT.delete=Entf AWT.numLock=Num -AWT.scrollLock=Rollsperre +AWT.scrollLock=Rollen AWT.f1=F1 AWT.f2=F2 AWT.f3=F3 @@ -75,9 +75,9 @@ AWT.printScreen=Druck AWT.insert=Einfg AWT.help=Hilfe AWT.windows=Windows -AWT.context=Context Menu -AWT.backQuote=Schlie\u00dfendes Anf\u00fchrungszeichen -AWT.quote=Einfaches Anf\u00fchrungszeichen +AWT.context=Kontextmen\u00FC +AWT.backQuote=Schlie\u00DFendes Anf\u00FChrungszeichen +AWT.quote=Anf\u00FChrungszeichen AWT.deadGrave=Gravis (Dead) AWT.deadAcute=Akut (Dead) AWT.deadCircumflex=Zirkumflex (Dead) @@ -94,11 +94,11 @@ AWT.deadOgonek=Ogonek (Dead) AWT.deadIota=Iota (Dead) AWT.deadVoicedSound=Stimmhaft (Dead) AWT.deadSemivoicedSound=Halbstimmhaft (Dead) -AWT.ampersand=Kaufm\u00e4nnisches Und -AWT.asterisk=Stern -AWT.quoteDbl=Doppelte Anf\u00fchrungszeichen +AWT.ampersand=Et-Zeichen +AWT.asterisk=Sternchen +AWT.quoteDbl=Doppelte Anf\u00FChrungszeichen AWT.Less=Kleiner als -AWT.greater=Gr\u00f6\u00dfer als +AWT.greater=Gr\u00F6\u00DFer als AWT.braceLeft=Linke geschweifte Klammer AWT.braceRight=Rechte geschweifte Klammer AWT.at=Klammeraffe @@ -117,8 +117,8 @@ AWT.underscore=Unterstrich AWT.final=Abschluss AWT.convert=Konvertieren AWT.noconvert=Nicht konvertieren -AWT.accept=Annehmen -AWT.modechange=Modus\u00e4nderung +AWT.accept=Akzeptieren +AWT.modechange=Modus\u00E4nderung AWT.kana=Kana AWT.kanji=Kanji AWT.alphanumeric=Alphanumerisch @@ -129,26 +129,26 @@ AWT.halfWidth=Halbe Breite AWT.romanCharacters=Lateinische Zeichen AWT.allCandidates=Alle Kandidaten AWT.previousCandidate=Vorheriger Kandidat -AWT.codeInput=Code-Eingabe +AWT.codeInput=Codeeingabe AWT.japaneseKatakana=Japanisch (Katakana) AWT.japaneseHiragana=Japanisch (Hiragana) AWT.japaneseRoman=Japanisch (Latein) AWT.kanaLock=Kana Lock AWT.inputMethodOnOff=Eingabemethode ein/aus AWT.again=Wiederholen -AWT.undo=R\u00fcckg\u00e4ngig +AWT.undo=R\u00FCckg\u00E4ngig AWT.copy=Kopieren -AWT.paste=Einf\u00fcgen +AWT.paste=Einf\u00FCgen AWT.cut=Ausschneiden AWT.find=Suchen AWT.props=Eigenschaften -AWT.stop=Stop +AWT.stop=Stopp AWT.compose=Verfassen # Numeric Keypad AWT.numpad=NumPad -AWT.unknown=Unknown -AWT.undefined=Undefined +AWT.unknown=Unbekannt +AWT.undefined=Undefiniert # Predefined cursor names AWT.DefaultCursor=Standardcursor @@ -166,12 +166,12 @@ AWT.EResizeCursor=Skaliercursor nach rechts AWT.HandCursor=Handcursor AWT.MoveCursor=Verschiebecursor AWT.DefaultDragCursor=Standardcursor beim Ziehen -AWT.DefaultNoDropCursor=Standardcursor beim Nichtziehen +AWT.DefaultNoDropCursor=Standardcursor NoDrag AWT.DefaultDropCursor=Standardcursor beim Ablegen # Input method related strings AWT.CompositionWindowTitle=Eingabefenster -AWT.InputMethodSelectionMenu=Eingabemethode ausw\u00e4hlen +AWT.InputMethodSelectionMenu=Eingabemethode ausw\u00E4hlen AWT.HostInputMethodDisplayName=Systemeingabemethoden AWT.InputMethodLanguage.ja=Japanisch AWT.InputMethodLanguage.ko=Koreanisch @@ -188,5 +188,5 @@ java.awt.im.style=On-the-Spot java.awt.def.delay=30 # Warnings -AWT.InconsistentDLLsWarning=Textbasierte Operationen arbeiten m\u00f6glicherweise nicht richtig, weil auf Ihrem System ein inkonsistenter Satz von Dynamic Linking Libraries (DLLs) installiert ist. Weitere Informationen zu diesem Problem sowie eine Empfehlung zu deren Umgehung finden Sie in den Java(TM) 2 SDK, Standard Edition Release Notes unter java.sun.com. +AWT.InconsistentDLLsWarning=Textbasierte Vorg\u00E4nge funktionieren m\u00F6glicherweise nicht richtig, weil inkonsistente Dynamic Linking Librarys (DLLs) auf dem System installiert sind. Weitere Informationen zu diesem Problem sowie eine Empfehlung zu der Umgehung finden Sie in den Java(TM) 2 SDK, Standard Edition Release Notes unter java.sun.com. diff --git a/jdk/src/share/classes/sun/awt/resources/awt_es.properties b/jdk/src/share/classes/sun/awt/resources/awt_es.properties index f5480378489..bb58b2d7215 100644 --- a/jdk/src/share/classes/sun/awt/resources/awt_es.properties +++ b/jdk/src/share/classes/sun/awt/resources/awt_es.properties @@ -4,49 +4,49 @@ # # Modifier names -AWT.shift=May\u00fasculas +AWT.shift=May\u00FAsculas AWT.control=Ctrl AWT.alt=Alt AWT.meta=Meta AWT.altGraph=Alt Gr # Key names -AWT.enter=Introduzca +AWT.enter=Intro AWT.backSpace=Retroceso AWT.tab=Tabulador AWT.cancel=Cancelar AWT.clear=Borrar AWT.pause=Pausa -AWT.capsLock=Bloqueo de may\u00fasculas +AWT.capsLock=Bloqueo de May\u00FAsculas AWT.escape=Escape AWT.space=Espacio -AWT.pgup=ReP\u00e1g -AWT.pgdn=AvP\u00e1g +AWT.pgup=ReP\u00E1g +AWT.pgdn=AvP\u00E1g AWT.end=Fin AWT.home=Inicio AWT.left=Izquierda AWT.up=Arriba AWT.right=Derecha AWT.down=Abajo -AWT.begin=Begin -AWT.comma=Comma -AWT.period=Period -AWT.slash=Slash -AWT.semicolon=Semicolon -AWT.equals=Equals -AWT.openBracket=Open Bracket -AWT.backSlash=Back Slash -AWT.closeBracket=Close Bracket -AWT.multiply=* de teclado num\u00e9rico -AWT.add=+ de teclado num\u00e9rico -AWT.separator=, de teclado num\u00e9rico -AWT.separater=, de teclado num\u00e9rico # for backwards compatibility only -AWT.subtract=- de teclado num\u00e9rico -AWT.decimal=. de teclado num\u00e9rico -AWT.divide=/ de teclado num\u00e9rico +AWT.begin=Inicio +AWT.comma=Coma +AWT.period=Punto +AWT.slash=Barra +AWT.semicolon=Punto y coma +AWT.equals=Igual +AWT.openBracket=Par\u00E9ntesis de Apertura +AWT.backSlash=Barra Invertida +AWT.closeBracket=Par\u00E9ntesis de Cierre +AWT.multiply=* de Teclado Num\u00E9rico +AWT.add=+ de Teclado Num\u00E9rico +AWT.separator=, de Teclado Num\u00E9rico +AWT.separater=, de Teclado Num\u00E9rico +AWT.subtract=- de Teclado Num\u00E9rico +AWT.decimal=. de Teclado Num\u00E9rico +AWT.divide=/ de Teclado Num\u00E9rico AWT.delete=Suprimir -AWT.numLock=Bloqueo num\u00e9rico -AWT.scrollLock=Bloqueo de desplazamiento +AWT.numLock=Bloqueo Num\u00E9rico +AWT.scrollLock=Bloqueo de Desplazamiento AWT.f1=F1 AWT.f2=F2 AWT.f3=F3 @@ -71,70 +71,70 @@ AWT.f21=F21 AWT.f22=F22 AWT.f23=F23 AWT.f24=F24 -AWT.printScreen=Imprimir pantalla +AWT.printScreen=Imprimir Pantalla AWT.insert=Insertar AWT.help=Ayuda AWT.windows=Windows -AWT.context=Context Menu -AWT.backQuote=Abrir comilla -AWT.quote=Cerrar comilla -AWT.deadGrave=Acento grave muerto -AWT.deadAcute=Acento agudio muerto -AWT.deadCircumflex=Circunflejo muerto -AWT.deadTilde=Tilde muerto -AWT.deadMacron=Macron muerto -AWT.deadBreve=Breve muerto -AWT.deadAboveDot=Punto superior muerto -AWT.deadDiaeresis=Di\u00e9resis muerta -AWT.deadAboveRing=C\u00edrculo superior muerto -AWT.deadDoubleAcute=Acento agudo doble muerto -AWT.deadCaron=Caron muerto -AWT.deadCedilla=Cedilla muerta -AWT.deadOgonek=Ogonek muerto -AWT.deadIota=Iota muerta -AWT.deadVoicedSound=Sonido sonoro muerto -AWT.deadSemivoicedSound=Sonido semisonoro muerto -AWT.ampersand=S\u00edmbolo & +AWT.context=Men\u00FA Contextual +AWT.backQuote=Comilla Invertida +AWT.quote=Comilla +AWT.deadGrave=Acento Grave (Tecla Muerta) +AWT.deadAcute=Acento Agudo Muerto +AWT.deadCircumflex=Circunflejo (Tecla Muerta) +AWT.deadTilde=Tilde (Tecla Muerta) +AWT.deadMacron=Macr\u00F3n (Tecla Muerta) +AWT.deadBreve=Acento Breve (Tecla Muerta) +AWT.deadAboveDot=Punto Superior (Tecla Muerta) +AWT.deadDiaeresis=Di\u00E9resis (Tecla Muerta) +AWT.deadAboveRing=C\u00EDrculo Superior (Tecla Muerta) +AWT.deadDoubleAcute=Acento Agudo Doble (Tecla Muerta) +AWT.deadCaron=Acento Articircunflejo (Tecla Muerta) +AWT.deadCedilla=Cedilla (Tecla Muerta) +AWT.deadOgonek=Esp\u00EDritu \u00C1spero (Tecla Muerta) +AWT.deadIota=Iota (Tecla Muerta) +AWT.deadVoicedSound=Sonido Sonoro (Tecla Muerta) +AWT.deadSemivoicedSound=Sonido Semisonoro (Tecla Muerta) +AWT.ampersand=Ampersand AWT.asterisk=Asterisco -AWT.quoteDbl=Dobles comillas +AWT.quoteDbl=Dobles Comillas AWT.Less=Menor que AWT.greater=Mayor que -AWT.braceLeft=Abrir llave -AWT.braceRight=Cerrar llave +AWT.braceLeft=Llave de Apertura +AWT.braceRight=Llave de Cierre AWT.at=Arroba AWT.colon=Dos puntos AWT.circumflex=Circunflejo -AWT.dollar=D\u00f3lar +AWT.dollar=D\u00F3lar AWT.euro=Euro -AWT.exclamationMark=Signo de exclamaci\u00f3n izquierdo -AWT.invertedExclamationMark=Signo de exclamaci\u00f3n derecho -AWT.leftParenthesis=Par\u00e9ntesis izquierdo -AWT.numberSign=Signo de n\u00famero -AWT.plus=M\u00e1s +AWT.exclamationMark=Signo de Exclamaci\u00F3n de Cierre +AWT.invertedExclamationMark=Signo de Exclamaci\u00F3n de Apertura +AWT.leftParenthesis=Par\u00E9ntesis Izquierdo +AWT.numberSign=Signo de N\u00FAmero +AWT.plus=M\u00E1s AWT.minus=Menos -AWT.rightParenthesis=Par\u00e9ntesis derecho +AWT.rightParenthesis=Par\u00E9ntesis Derecho AWT.underscore=Subrayado AWT.final=Final AWT.convert=Convertir AWT.noconvert=No Convertir AWT.accept=Aceptar -AWT.modechange=Cambio de modo +AWT.modechange=Cambio de Modo AWT.kana=Kana AWT.kanji=Kanji -AWT.alphanumeric=Alfanum\u00e9rico +AWT.alphanumeric=Alfanum\u00E9rico AWT.katakana=Katakana AWT.hiragana=Hiragana -AWT.fullWidth=Anchura completa -AWT.halfWidth=Media anchura -AWT.romanCharacters=Caracteres romanos -AWT.allCandidates=Todos los candidatos -AWT.previousCandidate=Candidato anterior -AWT.codeInput=Entrada de c\u00f3digo -AWT.japaneseKatakana=Caracteres katakana japoneses -AWT.japaneseHiragana=Caracteres hiragana japoneses -AWT.japaneseRoman=Caracteres romanos japoneses -AWT.kanaLock=Bloquear kana -AWT.inputMethodOnOff=Activar/desactivar m\u00e9todo de entrada +AWT.fullWidth=Anchura Completa +AWT.halfWidth=Media Anchura +AWT.romanCharacters=Caracteres Romanos +AWT.allCandidates=Todos los Candidatos +AWT.previousCandidate=Candidato Anterior +AWT.codeInput=Entrada de C\u00F3digo +AWT.japaneseKatakana=Caracteres Katakana Japoneses +AWT.japaneseHiragana=Caracteres Hiragana Japoneses +AWT.japaneseRoman=Caracteres Romanos Japoneses +AWT.kanaLock=Bloqueo Kana +AWT.inputMethodOnOff=Activar/Desactivar M\u00E9todo de Entrada AWT.again=Repetir AWT.undo=Deshacer AWT.copy=Copiar @@ -146,48 +146,47 @@ AWT.stop=Parar AWT.compose=Componer # Numeric Keypad -AWT.numpad=NumPad -AWT.unknown=Unknown -AWT.undefined=Undefined +AWT.numpad=Teclado Num\u00E9rico +AWT.unknown=Desconocido +AWT.undefined=No Definido # Predefined cursor names -AWT.DefaultCursor=Cursor predeterminado -AWT.CrosshairCursor=Cursor de punto de mira -AWT.TextCursor=Cursor de texto -AWT.WaitCursor=Cursor de espera -AWT.SWResizeCursor=Cursor de cambio de tama\u00f1o suroeste -AWT.SEResizeCursor=Cursor de cambio de tama\u00f1o sudeste -AWT.NWResizeCursor=Cursor de cambio de tama\u00f1o noroeste -AWT.NEResizeCursor=Cursor de cambio de tama\u00f1o nordeste -AWT.NResizeCursor=Cursor de cambio de tama\u00f1o norte -AWT.SResizeCursor=Cursor de cambio de tama\u00f1o sur -AWT.WResizeCursor=Cursor de cambio de tama\u00f1o oeste -AWT.EResizeCursor=Cursor de cambio de tama\u00f1o este -AWT.HandCursor=Cursor de mano -AWT.MoveCursor=Cursor de movimiento -AWT.DefaultDragCursor=Cursor de arrastrar predeterminado -AWT.DefaultNoDropCursor=Cursor de no arrastrar predeterminado -AWT.DefaultDropCursor=Cursor de soltar predeterminado +AWT.DefaultCursor=Cursor Por defecto +AWT.CrosshairCursor=Cursor de Punto de Mira +AWT.TextCursor=Cursor de Texto +AWT.WaitCursor=Cursor de Espera +AWT.SWResizeCursor=Cursor de Cambio de Tama\u00F1o Suroeste +AWT.SEResizeCursor=Cursor de Cambio de Tama\u00F1o Sudeste +AWT.NWResizeCursor=Cursor de Cambio de Tama\u00F1o Noroeste +AWT.NEResizeCursor=Cursor de Cambio de Tama\u00F1o Nordeste +AWT.NResizeCursor=Cursor de Cambio de Tama\u00F1o Norte +AWT.SResizeCursor=Cursor de Cambio de Tama\u00F1o Sur +AWT.WResizeCursor=Cursor de Cambio de Tama\u00F1o Oeste +AWT.EResizeCursor=Cursor de Cambio de Tama\u00F1o este +AWT.HandCursor=Cursor de Mano +AWT.MoveCursor=Cursor de Movimiento +AWT.DefaultDragCursor=Cursor de Arrastrar Por defecto +AWT.DefaultNoDropCursor=Cursor de No Arrastrar Por Defecto +AWT.DefaultDropCursor=Cursor de Soltar Por Defecto # Input method related strings -AWT.CompositionWindowTitle=Ventana de entrada -AWT.InputMethodSelectionMenu=Seleccionar m\u00e9todo de entrada -AWT.HostInputMethodDisplayName=M\u00e9todos de entrada del sistema -AWT.InputMethodLanguage.ja=Japon\u00e9s +AWT.CompositionWindowTitle=Ventana de Entrada +AWT.InputMethodSelectionMenu=Seleccionar M\u00E9todo de Entrada +AWT.HostInputMethodDisplayName=M\u00E9todos de Entrada del Sistema +AWT.InputMethodLanguage.ja=Japon\u00E9s AWT.InputMethodLanguage.ko=Coreano AWT.InputMethodLanguage.zh=Chino -AWT.InputMethodLanguage.zh_CN=Chino simplificado -AWT.InputMethodLanguage.zh_TW=Chino tradicional +AWT.InputMethodLanguage.zh_CN=Chino Simplificado +AWT.InputMethodLanguage.zh_TW=Chino Tradicional AWT.InputMethodCreationFailed=No se ha podido crear {0}. Motivo: {1} # Property to select between on-the-spot and below-the-spot # composition with input methods. Valid values: # "on-the-spot", "below-the-spot". # May be overridden from command line. -java.awt.im.style=en-el-acto +java.awt.im.style=en el lugar java.awt.def.delay=30 # Warnings -AWT.InconsistentDLLsWarning=Puede que las operaciones textuales no funcionen correctamente debido a un conjunto incompatible de librer\u00edas de enlace \ - +AWT.InconsistentDLLsWarning=Puede que las operaciones textuales no funcionen correctamente debido a un juego incoherente de bibliotecas de enlaces din\u00E1micos (DLL) instaladas en su sistema. Para obtener m\u00E1s informaci\u00F3n acerca de este problema y de la soluci\u00F3n alternativa sugerida, consulte Java(TM) 2 SDK, Standard Edition Release Notes en java.sun.com. diff --git a/jdk/src/share/classes/sun/awt/resources/awt_fr.properties b/jdk/src/share/classes/sun/awt/resources/awt_fr.properties index b58e58dadbe..519f00051ac 100644 --- a/jdk/src/share/classes/sun/awt/resources/awt_fr.properties +++ b/jdk/src/share/classes/sun/awt/resources/awt_fr.properties @@ -7,20 +7,20 @@ AWT.shift=Maj AWT.control=Ctrl AWT.alt=Alt -AWT.meta=M\u00e9ta -AWT.altGraph=Alt graphe +AWT.meta=M\u00E9ta +AWT.altGraph=Alt graphique # Key names -AWT.enter=Entr\u00e9e -AWT.backSpace=Retour arri\u00e8re +AWT.enter=Entr\u00E9e +AWT.backSpace=Retour arri\u00E8re AWT.tab=Tab AWT.cancel=Annuler AWT.clear=Effacer AWT.pause=Pause AWT.capsLock=Verrouillage des majuscules -AWT.escape=Esc +AWT.escape=Echap AWT.space=Espace -AWT.pgup=Page pr\u00e9c\u00e9dente +AWT.pgup=Page pr\u00E9c\u00E9dente AWT.pgdn=Page suivante AWT.end=Fin AWT.home=Origine @@ -28,25 +28,25 @@ AWT.left=Gauche AWT.up=Haut AWT.right=Droite AWT.down=Bas -AWT.begin=Begin -AWT.comma=Comma -AWT.period=Period -AWT.slash=Slash -AWT.semicolon=Semicolon -AWT.equals=Equals -AWT.openBracket=Open Bracket -AWT.backSlash=Back Slash -AWT.closeBracket=Close Bracket -AWT.multiply=Pav\u00e9 num\u00e9rique * -AWT.add=Pav\u00e9 num\u00e9rique + -AWT.separator=Pav\u00e9 num\u00e9rique , -AWT.separater=Pav\u00e9 num\u00e9rique , # for backwards compatibility only -AWT.subtract=Pav\u00e9 num\u00e9rique - -AWT.decimal=Pav\u00e9 num\u00e9rique . -AWT.divide=Pav\u00e9 num\u00e9rique / +AWT.begin=D\u00E9but +AWT.comma=Virgule +AWT.period=Point +AWT.slash=Barre oblique +AWT.semicolon=Point-virgule +AWT.equals=Egal +AWT.openBracket=Crochet ouvrant +AWT.backSlash=Barre oblique inverse +AWT.closeBracket=Crochet fermant +AWT.multiply=Pav\u00E9 num\u00E9rique * +AWT.add=Pav\u00E9 num\u00E9rique + +AWT.separator=Pav\u00E9 num\u00E9rique , +AWT.separater=Pav\u00E9 num\u00E9rique , +AWT.subtract=Pav\u00E9 num\u00E9rique - +AWT.decimal=Pav\u00E9 num\u00E9rique . +AWT.divide=Pav\u00E9 num\u00E9rique / AWT.delete=Supprimer -AWT.numLock=Verrouillage du pav\u00e9 num\u00e9rique -AWT.scrollLock=Verrouillage du d\u00e9filement +AWT.numLock=Verrouillage du pav\u00E9 num\u00E9rique +AWT.scrollLock=Verrouillage du d\u00E9filement AWT.f1=F1 AWT.f2=F2 AWT.f3=F3 @@ -71,34 +71,34 @@ AWT.f21=F21 AWT.f22=F22 AWT.f23=F23 AWT.f24=F24 -AWT.printScreen=Impression d''\u00e9cran -AWT.insert=Ins\u00e9rer +AWT.printScreen=Impression d'\u00E9cran +AWT.insert=Ins\u00E9rer AWT.help=Aide AWT.windows=Windows -AWT.context=Context Menu -AWT.backQuote=Guillemet ouvrant -AWT.quote=Guillemet fermant +AWT.context=Menu contextuel +AWT.backQuote=Apostrophe invers\u00E9e +AWT.quote=Apostrophe AWT.deadGrave=Accent grave AWT.deadAcute=Accent aigu AWT.deadCircumflex=Accent circonflexe AWT.deadTilde=Tilde AWT.deadMacron=Macron AWT.deadBreve=Demi-cercle -AWT.deadAboveDot=Point en haut -AWT.deadDiaeresis=Tr\u00e9ma -AWT.deadAboveRing=Anneau en haut -AWT.deadDoubleAcute=Double accent pointu +AWT.deadAboveDot=Point en chef +AWT.deadDiaeresis=Tr\u00E9ma +AWT.deadAboveRing=Anneau en chef +AWT.deadDoubleAcute=Double accent aigu AWT.deadCaron=Caron -AWT.deadCedilla=C\u00e9dille +AWT.deadCedilla=C\u00E9dille AWT.deadOgonek=Ogonek AWT.deadIota=Iota -AWT.deadVoicedSound=Son vois\u00e9 -AWT.deadSemivoicedSound=Son semi-vois\u00e9 -AWT.ampersand=Perlu\u00e8te -AWT.asterisk=Ast\u00e9risque +AWT.deadVoicedSound=Son vois\u00E9 +AWT.deadSemivoicedSound=Son semi-vois\u00E9 +AWT.ampersand=Esperluette +AWT.asterisk=Ast\u00E9risque AWT.quoteDbl=Guillemets -AWT.Less=Inf\u00e9rieur \u00e0 -AWT.greater=Sup\u00e9rieur \u00e0 +AWT.Less=Inf\u00E9rieur \u00E0 +AWT.greater=Sup\u00E9rieur \u00E0 AWT.braceLeft=Accolade ouvrante AWT.braceRight=Accolade fermante AWT.at=A commercial @@ -106,14 +106,14 @@ AWT.colon=Deux-points AWT.circumflex=Circonflexe AWT.dollar=Dollar AWT.euro=Euro -AWT.exclamationMark=Point d''exclamation -AWT.invertedExclamationMark=Point d''exclamation invers\u00e9 -AWT.leftParenthesis=Parenth\u00e8se ouvrante -AWT.numberSign=Signe Num\u00e9ro +AWT.exclamationMark=Point d'exclamation +AWT.invertedExclamationMark=Point d'exclamation invers\u00E9 +AWT.leftParenthesis=Parenth\u00E8se ouvrante +AWT.numberSign=Di\u00E8se AWT.plus=Plus AWT.minus=Moins -AWT.rightParenthesis=Parenth\u00e8se fermante -AWT.underscore=Tiret de soulignement +AWT.rightParenthesis=Parenth\u00E8se fermante +AWT.underscore=Trait de soulignement AWT.final=Final AWT.convert=Convertir AWT.noconvert=Ne pas convertir @@ -121,64 +121,64 @@ AWT.accept=Accepter AWT.modechange=Changement de mode AWT.kana=Kana AWT.kanji=Kanji -AWT.alphanumeric=Alphanum\u00e9rique +AWT.alphanumeric=Alphanum\u00E9rique AWT.katakana=Katakana AWT.hiragana=Hiragana AWT.fullWidth=Pleine largeur AWT.halfWidth=Demi-largeur -AWT.romanCharacters=Caract\u00e8res romains +AWT.romanCharacters=Caract\u00E8res romains AWT.allCandidates=Tous les candidats -AWT.previousCandidate=Candidat pr\u00e9c\u00e9dent -AWT.codeInput=Entr\u00e9e de code +AWT.previousCandidate=Candidat pr\u00E9c\u00E9dent +AWT.codeInput=Entr\u00E9e de code AWT.japaneseKatakana=Japonais Katakana AWT.japaneseHiragana=Japonais Hiragana AWT.japaneseRoman=Japonais romain AWT.kanaLock=Verrouiller Kana -AWT.inputMethodOnOff=Activation/d\u00e9sactivation de la m\u00e9thode d''entr\u00e9e -AWT.again=R\u00e9p\u00e9ter +AWT.inputMethodOnOff=Activation/d\u00E9sactivation de la m\u00E9thode d'entr\u00E9e +AWT.again=R\u00E9p\u00E9ter AWT.undo=Annuler AWT.copy=Copier AWT.paste=Coller AWT.cut=Couper AWT.find=Rechercher AWT.props=Props -AWT.stop=Arr\u00eater +AWT.stop=Arr\u00EAter AWT.compose=Composer # Numeric Keypad -AWT.numpad=NumPad -AWT.unknown=Unknown -AWT.undefined=Undefined +AWT.numpad=Pav\u00E9 num\u00E9rique +AWT.unknown=Inconnu +AWT.undefined=Non d\u00E9fini # Predefined cursor names -AWT.DefaultCursor=Pointeur par d\u00e9faut -AWT.CrosshairCursor=Pointeur r\u00e9ticulaire +AWT.DefaultCursor=Curseur par d\u00E9faut +AWT.CrosshairCursor=Curseur r\u00E9ticulaire AWT.TextCursor=Curseur de texte -AWT.WaitCursor=Pointeur d''attente -AWT.SWResizeCursor=Pointeur de redimensionnement sud-ouest -AWT.SEResizeCursor=Pointeur de redimensionnement sud-est -AWT.NWResizeCursor=Pointeur de redimensionnement nord-ouest -AWT.NEResizeCursor=Pointeur de redimensionnement nord-est -AWT.NResizeCursor=Pointeur de redimensionnement nord -AWT.SResizeCursor=Pointeur de redimensionnement sud -AWT.WResizeCursor=Pointeur de redimensionnement ouest -AWT.EResizeCursor=Pointeur de redimensionnement est -AWT.HandCursor=Pointeur en forme de main -AWT.MoveCursor=Pointeur de d\u00e9placement -AWT.DefaultDragCursor=Pointeur de d\u00e9placement par d\u00e9faut -AWT.DefaultNoDropCursor=Pointeur non d\u00e9pla\u00e7ant par d\u00e9faut -AWT.DefaultDropCursor=Pointeur de pose par d\u00e9faut +AWT.WaitCursor=Curseur d'attente +AWT.SWResizeCursor=Curseur de redimensionnement sud-ouest +AWT.SEResizeCursor=Curseur de redimensionnement sud-est +AWT.NWResizeCursor=Curseur de redimensionnement nord-ouest +AWT.NEResizeCursor=Curseur de redimensionnement nord-est +AWT.NResizeCursor=Curseur de redimensionnement nord +AWT.SResizeCursor=Curseur de redimensionnement sud +AWT.WResizeCursor=Curseur de redimensionnement ouest +AWT.EResizeCursor=Curseur de redimensionnement est +AWT.HandCursor=Curseur en forme de main +AWT.MoveCursor=Curseur de d\u00E9placement +AWT.DefaultDragCursor=Curseur de d\u00E9placement par d\u00E9faut +AWT.DefaultNoDropCursor=Curseur non d\u00E9pla\u00E7ant par d\u00E9faut +AWT.DefaultDropCursor=Curseur de pose par d\u00E9faut # Input method related strings -AWT.CompositionWindowTitle=Fen\u00eatre d''entr\u00e9e -AWT.InputMethodSelectionMenu=S\u00e9lectionner la m\u00e9thode d''entr\u00e9e -AWT.HostInputMethodDisplayName=M\u00e9thodes syst\u00e8me d''entr\u00e9e +AWT.CompositionWindowTitle=Fen\u00EAtre d'entr\u00E9e +AWT.InputMethodSelectionMenu=S\u00E9lectionner la m\u00E9thode d'entr\u00E9e +AWT.HostInputMethodDisplayName=M\u00E9thodes d'entr\u00E9e syst\u00E8me AWT.InputMethodLanguage.ja=Japonais -AWT.InputMethodLanguage.ko=Cor\u00e9en +AWT.InputMethodLanguage.ko=Cor\u00E9en AWT.InputMethodLanguage.zh=Chinois -AWT.InputMethodLanguage.zh_CN=Chinois simplifi\u00e9 +AWT.InputMethodLanguage.zh_CN=Chinois simplifi\u00E9 AWT.InputMethodLanguage.zh_TW=Chinois traditionnel -AWT.InputMethodCreationFailed=Impossible de cr\u00e9er {0}. Raison\u00a0: {1} +AWT.InputMethodCreationFailed=Impossible de cr\u00E9er {0}. Raison\u00A0: {1} # Property to select between on-the-spot and below-the-spot # composition with input methods. Valid values: @@ -188,5 +188,5 @@ java.awt.im.style=sur place java.awt.def.delay=30 # Warnings -AWT.InconsistentDLLsWarning=Text based operations may not work correctly due to an inconsistent set of dynamic linking libraries (DLLs) installed on your system. For more information on this problem and a suggested workaround please see the Java(TM) 2 SDK, Standard Edition Release Notes on java.sun.com. +AWT.InconsistentDLLsWarning=Il se peut que les op\u00E9rations li\u00E9es au texte ne fonctionnent pas correctement lorsqu'un ensemble incoh\u00E9rent de DLL est install\u00E9 sur le syst\u00E8me. Vous trouverez plus de d\u00E9tails sur ce probl\u00E8me et sur sa solution dans le document Java(TM) 2 SDK, Standard Edition Release Notes sur java.sun.com. diff --git a/jdk/src/share/classes/sun/awt/resources/awt_it.properties b/jdk/src/share/classes/sun/awt/resources/awt_it.properties index 01504f03144..edb5093ae1f 100644 --- a/jdk/src/share/classes/sun/awt/resources/awt_it.properties +++ b/jdk/src/share/classes/sun/awt/resources/awt_it.properties @@ -16,34 +16,34 @@ AWT.backSpace=Backspace AWT.tab=Tabulazione AWT.cancel=Annulla AWT.clear=Cancella -AWT.pause=Pausa +AWT.pause=Sospendi AWT.capsLock=Bloc Maiusc AWT.escape=Esc AWT.space=Barra spaziatrice AWT.pgup=Pg Su -AWT.pgdn=Pg Gi\u00f9 +AWT.pgdn=Pg Gi\u00F9 AWT.end=Fine AWT.home=Home AWT.left=Sinistra AWT.up=Su AWT.right=Destra -AWT.down=Gi\u00f9 -AWT.begin=Begin -AWT.comma=Comma -AWT.period=Period -AWT.slash=Slash -AWT.semicolon=Semicolon -AWT.equals=Equals -AWT.openBracket=Open Bracket -AWT.backSlash=Back Slash -AWT.closeBracket=Close Bracket -AWT.multiply=TastNum * -AWT.add=TastNum + -AWT.separator=TastNum , -AWT.separater=TastNum , -AWT.subtract=TastNum - -AWT.decimal=TastNum . -AWT.divide=TastNum / +AWT.down=Gi\u00F9 +AWT.begin=Inizio +AWT.comma=Virgola +AWT.period=Punto +AWT.slash=Barra +AWT.semicolon=Punto e virgola +AWT.equals=Uguale +AWT.openBracket=Parentesi quadra aperta +AWT.backSlash=Barra rovesciata +AWT.closeBracket=Parentesi quadra chiusa +AWT.multiply=NumPad * +AWT.add=NumPad + +AWT.separator=NumPad , +AWT.separater=NumPad , +AWT.subtract=NumPad - +AWT.decimal=NumPad . +AWT.divide=NumPad / AWT.delete=Elimina AWT.numLock=Bloc Num AWT.scrollLock=Bloc Scorr @@ -75,9 +75,9 @@ AWT.printScreen=Stamp AWT.insert=Ins AWT.help=? AWT.windows=Windows -AWT.context=Context Menu -AWT.backQuote=Virgolette invertite -AWT.quote=Virgolette +AWT.context=Menu di scelta rapida +AWT.backQuote=Apice invertito +AWT.quote=Apice AWT.deadGrave=Grave non attivo AWT.deadAcute=Acuto non attivo AWT.deadCircumflex=Circonflesso non attivo @@ -96,7 +96,7 @@ AWT.deadVoicedSound=Suono vocalizzato non attivo AWT.deadSemivoicedSound=Suono semivocalizzato non attivo AWT.ampersand=E commerciale AWT.asterisk=Asterisco -AWT.quoteDbl=Virgolette doppie +AWT.quoteDbl=Virgolette AWT.Less=Minore AWT.greater=Maggiore AWT.braceLeft=Parentesi graffa aperta @@ -110,15 +110,15 @@ AWT.exclamationMark=Punto esclamativo AWT.invertedExclamationMark=Punto esclamativo invertito AWT.leftParenthesis=Parentesi aperta AWT.numberSign=Cancelletto -AWT.plus=Pi\u00f9 +AWT.plus=Pi\u00F9 AWT.minus=Meno AWT.rightParenthesis=Parentesi chiusa AWT.underscore=Sottolineatura AWT.final=Finale AWT.convert=Converti AWT.noconvert=Non convertire -AWT.accept=Accetta -AWT.modechange=Cambia modalit\u00e0 +AWT.accept=Accetto +AWT.modechange=Modifica modalit\u00E0 AWT.kana=Kana AWT.kanji=Kanji AWT.alphanumeric=Alfanumerico @@ -141,14 +141,14 @@ AWT.copy=Copia AWT.paste=Incolla AWT.cut=Taglia AWT.find=Trova -AWT.props=Props -AWT.stop=Interrompi caricamento pagina +AWT.props=Propriet\u00E0 +AWT.stop=Arresta AWT.compose=Componi # Numeric Keypad AWT.numpad=NumPad -AWT.unknown=Unknown -AWT.undefined=Undefined +AWT.unknown=Sconosciuto +AWT.undefined=Non definito # Predefined cursor names AWT.DefaultCursor=Cursore predefinito @@ -188,5 +188,5 @@ java.awt.im.style=immediato java.awt.def.delay=30 # Warnings -AWT.InconsistentDLLsWarning=Le operazioni sul testo possono non funzionarecorrettamente, a causa di una serie non coerente di DLL installate sul sistema.Per ulteriori informazioni su questo problema e per la soluzione suggerita,vedere le note di rilascio di Java(TM) 2 SDK, Standard Edition su java.sun.com. +AWT.InconsistentDLLsWarning=Le operazioni sul testo possono non funzionare correttamente, a causa di una serie non coerente di DLL installate sul sistema. Per ulteriori informazioni su questo problema e per la soluzione suggerita, vedere le note di rilascio di Java(TM) 2 SDK, Standard Edition su java.sun.com. diff --git a/jdk/src/share/classes/sun/awt/resources/awt_ja.properties b/jdk/src/share/classes/sun/awt/resources/awt_ja.properties index 785915c9651..7c0e7021bbf 100644 --- a/jdk/src/share/classes/sun/awt/resources/awt_ja.properties +++ b/jdk/src/share/classes/sun/awt/resources/awt_ja.properties @@ -7,36 +7,36 @@ AWT.shift=Shift AWT.control=Ctrl AWT.alt=Alt -AWT.meta=Meta -AWT.altGraph=Alt Graph +AWT.meta=\u30E1\u30BF +AWT.altGraph=Alt\u30B0\u30E9\u30D5 # Key names AWT.enter=Enter AWT.backSpace=Backspace AWT.tab=Tab -AWT.cancel=Cancel -AWT.clear=Clear -AWT.pause=Pause +AWT.cancel=\u53D6\u6D88 +AWT.clear=\u30AF\u30EA\u30A2 +AWT.pause=\u4E00\u6642\u505C\u6B62 AWT.capsLock=Caps Lock -AWT.escape=Escape -AWT.space=Space +AWT.escape=Esc +AWT.space=\u30B9\u30DA\u30FC\u30B9 AWT.pgup=Page Up AWT.pgdn=Page Down AWT.end=End AWT.home=Home -AWT.left=Left -AWT.up=Up -AWT.right=Right -AWT.down=Down -AWT.begin=Begin -AWT.comma=Comma -AWT.period=Period -AWT.slash=Slash -AWT.semicolon=Semicolon -AWT.equals=Equals -AWT.openBracket=Open Bracket -AWT.backSlash=Back Slash -AWT.closeBracket=Close Bracket +AWT.left=\u5DE6 +AWT.up=\u4E0A +AWT.right=\u53F3 +AWT.down=\u4E0B +AWT.begin=\u958B\u59CB +AWT.comma=\u30AB\u30F3\u30DE +AWT.period=\u30D4\u30EA\u30AA\u30C9 +AWT.slash=\u30B9\u30E9\u30C3\u30B7\u30E5 +AWT.semicolon=\u30BB\u30DF\u30B3\u30ED\u30F3 +AWT.equals=\u7B49\u53F7 +AWT.openBracket=\u5DE6\u5927\u30AB\u30C3\u30B3 +AWT.backSlash=\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5 +AWT.closeBracket=\u53F3\u5927\u30AB\u30C3\u30B3 AWT.multiply=NumPad * AWT.add=NumPad + AWT.separator=NumPad , @@ -73,11 +73,11 @@ AWT.f23=F23 AWT.f24=F24 AWT.printScreen=Print Screen AWT.insert=Insert -AWT.help=Help +AWT.help=\u30D8\u30EB\u30D7 AWT.windows=Windows -AWT.context=Context Menu -AWT.backQuote=Back Quote -AWT.quote=Quote +AWT.context=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30E1\u30CB\u30E5\u30FC +AWT.backQuote=\u9006\u5F15\u7528\u7B26 +AWT.quote=\u5F15\u7528\u7B26 AWT.deadGrave=Dead Grave AWT.deadAcute=Dead Acute AWT.deadCircumflex=Dead Circumflex @@ -94,99 +94,99 @@ AWT.deadOgonek=Dead Ogonek AWT.deadIota=Dead Iota AWT.deadVoicedSound=Dead Voiced Sound AWT.deadSemivoicedSound=Dead Semivoiced Sound -AWT.ampersand=Ampersand -AWT.asterisk=Asterisk -AWT.quoteDbl=Double Quote -AWT.Less=Less -AWT.greater=Greater -AWT.braceLeft=Left Brace -AWT.braceRight=Right Brace -AWT.at=At -AWT.colon=Colon -AWT.circumflex=Circumflex -AWT.dollar=Dollar -AWT.euro=Euro -AWT.exclamationMark=Exclamation Mark -AWT.invertedExclamationMark=Inverted Exclamation Mark -AWT.leftParenthesis=Left Parenthesis -AWT.numberSign=Number Sign -AWT.plus=Plus -AWT.minus=Minus -AWT.rightParenthesis=Right Parenthesis -AWT.underscore=Underscore -AWT.final=Final -AWT.convert=\u5909\u63db -AWT.noconvert=\u7121\u5909\u63db -AWT.accept=\u78ba\u5b9a -AWT.modechange=\u65e5\u672c\u8a9e On-Off -AWT.kana=\u304b\u306a -AWT.kanji=\u6f22\u5b57 -AWT.alphanumeric=\u82f1\u6570 -AWT.katakana=\u30ab\u30bf\u30ab\u30ca -AWT.hiragana=\u3072\u3089\u304c\u306a -AWT.fullWidth=\u5168\u89d2 -AWT.halfWidth=\u534a\u89d2 -AWT.romanCharacters=\u30ed\u30fc\u30de\u5b57 -AWT.allCandidates=\u5168\u5019\u88dc -AWT.previousCandidate=\u524d\u5019\u88dc -AWT.codeInput=\u30b3\u30fc\u30c9\u5165\u529b -AWT.japaneseKatakana=Japanese Katakana -AWT.japaneseHiragana=Japanese Hiragana -AWT.japaneseRoman=Japanese Roman -AWT.kanaLock=\u30ab\u30ca\u30ed\u30c3\u30af -AWT.inputMethodOnOff=\u5165\u529b\u30e1\u30bd\u30c3\u30c9 On-Off -AWT.again=Again -AWT.undo=Undo -AWT.copy=Copy -AWT.paste=Paste -AWT.cut=Cut -AWT.find=Find -AWT.props=Props -AWT.stop=Stop -AWT.compose=Compose +AWT.ampersand=\u30A2\u30F3\u30D1\u30B5\u30F3\u30C9 +AWT.asterisk=\u30A2\u30B9\u30BF\u30EA\u30B9\u30AF +AWT.quoteDbl=\u4E8C\u91CD\u5F15\u7528\u7B26 +AWT.Less=\u3088\u308A\u5C0F\u3055\u3044 +AWT.greater=\u3088\u308A\u5927\u304D\u3044 +AWT.braceLeft=\u5DE6\u4E2D\u30AB\u30C3\u30B3 +AWT.braceRight=\u53F3\u4E2D\u30AB\u30C3\u30B3 +AWT.at=\u30A2\u30C3\u30C8 +AWT.colon=\u30B3\u30ED\u30F3 +AWT.circumflex=\u66F2\u6298\u30A2\u30AF\u30BB\u30F3\u30C8\u8A18\u53F7 +AWT.dollar=\u30C9\u30EB +AWT.euro=\u30E6\u30FC\u30ED +AWT.exclamationMark=\u611F\u5606\u7B26 +AWT.invertedExclamationMark=\u9006\u611F\u5606\u7B26 +AWT.leftParenthesis=\u5DE6\u4E38\u30AB\u30C3\u30B3 +AWT.numberSign=\u756A\u53F7\u8A18\u53F7 +AWT.plus=\u30D7\u30E9\u30B9 +AWT.minus=\u30DE\u30A4\u30CA\u30B9 +AWT.rightParenthesis=\u53F3\u4E38\u30AB\u30C3\u30B3 +AWT.underscore=\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2 +AWT.final=\u6700\u7D42 +AWT.convert=\u5909\u63DB +AWT.noconvert=\u7121\u5909\u63DB +AWT.accept=\u78BA\u5B9A +AWT.modechange=\u30E2\u30FC\u30C9\u5909\u66F4 +AWT.kana=\u304B\u306A +AWT.kanji=\u6F22\u5B57 +AWT.alphanumeric=\u82F1\u6570\u5B57 +AWT.katakana=\u30AB\u30BF\u30AB\u30CA +AWT.hiragana=\u3072\u3089\u304C\u306A +AWT.fullWidth=\u5168\u89D2 +AWT.halfWidth=\u534A\u89D2 +AWT.romanCharacters=\u30ED\u30FC\u30DE\u5B57 +AWT.allCandidates=\u5168\u5019\u88DC +AWT.previousCandidate=\u524D\u5019\u88DC +AWT.codeInput=\u30B3\u30FC\u30C9\u5165\u529B +AWT.japaneseKatakana=\u65E5\u672C\u8A9E\u306E\u30AB\u30BF\u30AB\u30CA +AWT.japaneseHiragana=\u65E5\u672C\u8A9E\u306E\u3072\u3089\u304C\u306A +AWT.japaneseRoman=\u65E5\u672C\u8A9E\u306E\u30ED\u30FC\u30DE\u5B57 +AWT.kanaLock=\u30AB\u30CA\u30FB\u30ED\u30C3\u30AF +AWT.inputMethodOnOff=\u5165\u529B\u30E1\u30BD\u30C3\u30C9On-Off +AWT.again=\u518D\u5EA6 +AWT.undo=\u5143\u306B\u623B\u3059 +AWT.copy=\u30B3\u30D4\u30FC +AWT.paste=\u8CBC\u4ED8\u3051 +AWT.cut=\u5207\u53D6\u308A +AWT.find=\u691C\u7D22 +AWT.props=\u30D7\u30ED\u30D1\u30C6\u30A3 +AWT.stop=\u505C\u6B62 +AWT.compose=\u4F5C\u6210 # Numeric Keypad AWT.numpad=NumPad -AWT.unknown=Unknown -AWT.undefined=Undefined +AWT.unknown=\u4E0D\u660E +AWT.undefined=\u672A\u5B9A\u7FA9 # Predefined cursor names -AWT.DefaultCursor=Default Cursor -AWT.CrosshairCursor=Crosshair Cursor -AWT.TextCursor=Text Cursor -AWT.WaitCursor=Wait Cursor -AWT.SWResizeCursor=Southwest Resize Cursor -AWT.SEResizeCursor=Southeast Resize Cursor -AWT.NWResizeCursor=Northwest Resize Cursor -AWT.NEResizeCursor=Northeast Resize Cursor -AWT.NResizeCursor=North Resize Cursor -AWT.SResizeCursor=South Resize Cursor -AWT.WResizeCursor=West Resize Cursor -AWT.EResizeCursor=East Resize Cursor -AWT.HandCursor=Hand Cursor -AWT.MoveCursor=Move Cursor -AWT.DefaultDragCursor=Default Drag Cursor -AWT.DefaultNoDropCursor=Default NoDrag Cursor -AWT.DefaultDropCursor=Default Drop Cursor +AWT.DefaultCursor=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AB\u30FC\u30BD\u30EB +AWT.CrosshairCursor=\u5341\u5B57\u30AB\u30FC\u30BD\u30EB +AWT.TextCursor=\u30C6\u30AD\u30B9\u30C8\u30FB\u30AB\u30FC\u30BD\u30EB +AWT.WaitCursor=\u5F85\u6A5F\u30AB\u30FC\u30BD\u30EB +AWT.SWResizeCursor=\u5357\u897F\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB +AWT.SEResizeCursor=\u5357\u6771\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB +AWT.NWResizeCursor=\u5317\u897F\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB +AWT.NEResizeCursor=\u5317\u6771\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB +AWT.NResizeCursor=\u5317\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB +AWT.SResizeCursor=\u5357\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB +AWT.WResizeCursor=\u897F\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB +AWT.EResizeCursor=\u6771\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB +AWT.HandCursor=\u6307\u578B\u30AB\u30FC\u30BD\u30EB +AWT.MoveCursor=\u79FB\u52D5\u30AB\u30FC\u30BD\u30EB +AWT.DefaultDragCursor=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C9\u30E9\u30C3\u30B0\u30FB\u30AB\u30FC\u30BD\u30EB +AWT.DefaultNoDropCursor=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C9\u30E9\u30C3\u30B0\u7981\u6B62\u30AB\u30FC\u30BD\u30EB +AWT.DefaultDropCursor=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C9\u30ED\u30C3\u30D7\u30FB\u30AB\u30FC\u30BD\u30EB # Input method related strings -AWT.CompositionWindowTitle=\u5165\u529b\u30a6\u30a3\u30f3\u30c9\u30a6 -AWT.InputMethodSelectionMenu=\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u306e\u5207\u66ff\u3048 -AWT.HostInputMethodDisplayName=\u30b7\u30b9\u30c6\u30e0\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9 -AWT.InputMethodLanguage.ja=\u65e5\u672c\u8a9e -AWT.InputMethodLanguage.ko=\u97d3\u56fd\u8a9e -AWT.InputMethodLanguage.zh=\u4e2d\u56fd\u8a9e -AWT.InputMethodLanguage.zh_CN=\u4e2d\u56fd\u8a9e\uff08\u7c21\u4f53\u5b57\uff09 -AWT.InputMethodLanguage.zh_TW=\u4e2d\u56fd\u8a9e\uff08\u7e41\u4f53\u5b57\uff09 -AWT.InputMethodCreationFailed={0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 \u7406\u7531: {1} +AWT.CompositionWindowTitle=\u5165\u529B\u30A6\u30A3\u30F3\u30C9\u30A6 +AWT.InputMethodSelectionMenu=\u5165\u529B\u30E1\u30BD\u30C3\u30C9\u306E\u9078\u629E +AWT.HostInputMethodDisplayName=\u30B7\u30B9\u30C6\u30E0\u5165\u529B\u30E1\u30BD\u30C3\u30C9 +AWT.InputMethodLanguage.ja=\u65E5\u672C\u8A9E +AWT.InputMethodLanguage.ko=\u97D3\u56FD\u8A9E +AWT.InputMethodLanguage.zh=\u4E2D\u56FD\u8A9E +AWT.InputMethodLanguage.zh_CN=\u4E2D\u56FD\u8A9E(\u7C21\u4F53\u5B57) +AWT.InputMethodLanguage.zh_TW=\u4E2D\u56FD\u8A9E(\u7E41\u4F53\u5B57) +AWT.InputMethodCreationFailed={0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u7406\u7531: {1} # Property to select between on-the-spot and below-the-spot # composition with input methods. Valid values: # "on-the-spot", "below-the-spot". # May be overridden from command line. -java.awt.im.style=on-the-spot +java.awt.im.style=\u5373\u5EA7 java.awt.def.delay=30 # Warnings -AWT.InconsistentDLLsWarning=\u30b7\u30b9\u30c6\u30e0\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u4e00\u9023\u306e\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30ea\u30f3\u30af\u30e9\u30a4\u30d6\u30e9\u30ea (DLL) \u306b\u77db\u76fe\u304c\u3042\u308b\u305f\u3081\u3001\u30c6\u30ad\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u64cd\u4f5c\u304c\u6b63\u3057\u304f\u52d5\u4f5c\u3057\u307e\u305b\u3093\u3002\u3053\u306e\u554f\u984c\u306e\u8a73\u7d30\u3068\u56de\u907f\u7b56\u306f\u3001java.sun.com \u4e0a\u306b\u3042\u308b Java(TM) 2 SDK, Standard Edition \u306e\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +AWT.InconsistentDLLsWarning=\u30B7\u30B9\u30C6\u30E0\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u308B\u4E00\u9023\u306E\u30C0\u30A4\u30CA\u30DF\u30C3\u30AF\u30FB\u30EA\u30F3\u30AF\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA(DLL)\u306B\u77DB\u76FE\u304C\u3042\u308B\u305F\u3081\u3001\u30C6\u30AD\u30B9\u30C8\u30FB\u30D9\u30FC\u30B9\u306E\u64CD\u4F5C\u304C\u6B63\u3057\u304F\u52D5\u4F5C\u3057\u307E\u305B\u3093\u3002\u3053\u306E\u554F\u984C\u306E\u8A73\u7D30\u3068\u56DE\u907F\u7B56\u306F\u3001java.sun.com\u4E0A\u306B\u3042\u308BJava(TM) 2 SDK, Standard Edition\u306E\u30EA\u30EA\u30FC\u30B9\u30FB\u30CE\u30FC\u30C8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002 diff --git a/jdk/src/share/classes/sun/awt/resources/awt_ko.properties b/jdk/src/share/classes/sun/awt/resources/awt_ko.properties index a27d0c0a087..d1448cefe0a 100644 --- a/jdk/src/share/classes/sun/awt/resources/awt_ko.properties +++ b/jdk/src/share/classes/sun/awt/resources/awt_ko.properties @@ -115,70 +115,70 @@ AWT.minus=Minus AWT.rightParenthesis=Right Parenthesis AWT.underscore=Underscore AWT.final=Final -AWT.convert=\ubcc0\ud658 -AWT.noconvert=\ubcc0\ud658 \uc548\ud568 -AWT.accept=\uc801\uc6a9 -AWT.modechange=\ubaa8\ub4dc \ubcc0\uacbd -AWT.kana=\uac00\ub098 -AWT.kanji=\uac04\uc9c0 -AWT.alphanumeric=\uc601\uc22b\uc790 -AWT.katakana=\uac00\ud0c0\uce74\ub098 -AWT.hiragana=\ud788\ub77c\uac00\ub098 +AWT.convert=\uBCC0\uD658 +AWT.noconvert=\uBCC0\uD658 \uC548\uD568 +AWT.accept=\uB3D9\uC758 +AWT.modechange=\uBAA8\uB4DC \uBCC0\uACBD +AWT.kana=\uAC00\uB098 +AWT.kanji=\uAC04\uC9C0 +AWT.alphanumeric=\uC601\uC22B\uC790 +AWT.katakana=\uAC00\uD0C0\uCE74\uB098 +AWT.hiragana=\uD788\uB77C\uAC00\uB098 AWT.fullWidth=Full-Width AWT.halfWidth=Half-Width -AWT.romanCharacters=\ub85c\ub9c8 \ubb38\uc790 -AWT.allCandidates=\ubaa8\ub4e0 \ud6c4\ubcf4 -AWT.previousCandidate=\uc774\uc804 \ud6c4\ubcf4 -AWT.codeInput=\ucf54\ub4dc \uc785\ub825 -AWT.japaneseKatakana=\uc77c\ubcf8\uc5b4 \uac00\ud0c0\uce74\ub098 -AWT.japaneseHiragana=\uc77c\ubcf8\uc5b4 \ud788\ub77c\uac00\ub098 -AWT.japaneseRoman=\uc77c\ubcf8\uc5b4 \ub85c\ub9c8 \ubb38\uc790 -AWT.kanaLock=\uac00\ub098 \uc7a0\uae08 -AWT.inputMethodOnOff=\uc785\ub825 \uba54\uc18c\ub4dc \ucf2c/\ub054 -AWT.again=\ub2e4\uc2dc -AWT.undo=\uc2e4\ud589 \ucde8\uc18c -AWT.copy=\ubcf5\uc0ac -AWT.paste=\ubd99\uc5ec\ub123\uae30 -AWT.cut=\uc798\ub77c\ub0b4\uae30 -AWT.find=\ucc3e\uae30 +AWT.romanCharacters=\uB85C\uB9C8 \uBB38\uC790 +AWT.allCandidates=\uBAA8\uB4E0 \uD6C4\uBCF4 +AWT.previousCandidate=\uC774\uC804 \uD6C4\uBCF4 +AWT.codeInput=\uCF54\uB4DC \uC785\uB825 +AWT.japaneseKatakana=\uC77C\uBCF8\uC5B4 \uAC00\uD0C0\uCE74\uB098 +AWT.japaneseHiragana=\uC77C\uBCF8\uC5B4 \uD788\uB77C\uAC00\uB098 +AWT.japaneseRoman=\uC77C\uBCF8\uC5B4 \uB85C\uB9C8 \uBB38\uC790 +AWT.kanaLock=\uAC00\uB098 \uC7A0\uAE08 +AWT.inputMethodOnOff=\uC785\uB825 \uBC29\uBC95 \uC124\uC815/\uD574\uC81C +AWT.again=\uB2E4\uC2DC +AWT.undo=\uC2E4\uD589 \uCDE8\uC18C +AWT.copy=\uBCF5\uC0AC +AWT.paste=\uBD99\uC5EC\uB123\uAE30 +AWT.cut=\uC798\uB77C\uB0B4\uAE30 +AWT.find=\uCC3E\uAE30 AWT.props=Props -AWT.stop=\uc815\uc9c0 -AWT.compose=\uad6c\uc131 +AWT.stop=\uC815\uC9C0 +AWT.compose=\uAD6C\uC131 # Numeric Keypad AWT.numpad=NumPad -AWT.unknown=Unknown -AWT.undefined=Undefined +AWT.unknown=\uC54C \uC218 \uC5C6\uC74C +AWT.undefined=\uC815\uC758\uB418\uC9C0 \uC54A\uC74C # Predefined cursor names -AWT.DefaultCursor=\uae30\ubcf8 \ucee4\uc11c -AWT.CrosshairCursor=\uc2ed\uc790 \ucee4\uc11c -AWT.TextCursor=\ud14d\uc2a4\ud2b8 \ucee4\uc11c -AWT.WaitCursor=\ub300\uae30 \ucee4\uc11c -AWT.SWResizeCursor=\ub0a8\uc11c \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c -AWT.SEResizeCursor=\ub0a8\ub3d9 \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c -AWT.NWResizeCursor=\ubd81\uc11c \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c -AWT.NEResizeCursor=\ubd81\ub3d9 \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c -AWT.NResizeCursor=\ubd81\ucabd \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c -AWT.SResizeCursor=\ub0a8\ucabd \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c -AWT.WResizeCursor=\uc11c\ucabd \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c -AWT.EResizeCursor=\ub3d9\ucabd \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c -AWT.HandCursor=\uc190 \ucee4\uc11c -AWT.MoveCursor=\uc774\ub3d9 \ucee4\uc11c -AWT.DefaultDragCursor=\uae30\ubcf8 \ub04c\uae30 \ucee4\uc11c -AWT.DefaultNoDropCursor=\uae30\ubcf8 \ub04c\uc9c0 \uc54a\uc74c \ucee4\uc11c -AWT.DefaultDropCursor=\uae30\ubcf8 \ub193\uae30 \ucee4\uc11c +AWT.DefaultCursor=\uAE30\uBCF8 \uCEE4\uC11C +AWT.CrosshairCursor=\uC2ED\uC790 \uCEE4\uC11C +AWT.TextCursor=\uD14D\uC2A4\uD2B8 \uCEE4\uC11C +AWT.WaitCursor=\uB300\uAE30 \uCEE4\uC11C +AWT.SWResizeCursor=\uB0A8\uC11C \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C +AWT.SEResizeCursor=\uB0A8\uB3D9 \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C +AWT.NWResizeCursor=\uBD81\uC11C \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C +AWT.NEResizeCursor=\uBD81\uB3D9 \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C +AWT.NResizeCursor=\uBD81\uCABD \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C +AWT.SResizeCursor=\uB0A8\uCABD \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C +AWT.WResizeCursor=\uC11C\uCABD \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C +AWT.EResizeCursor=\uB3D9\uCABD \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C +AWT.HandCursor=\uC190 \uCEE4\uC11C +AWT.MoveCursor=\uC774\uB3D9 \uCEE4\uC11C +AWT.DefaultDragCursor=\uAE30\uBCF8 \uB04C\uAE30 \uCEE4\uC11C +AWT.DefaultNoDropCursor=\uAE30\uBCF8 NoDrag \uCEE4\uC11C +AWT.DefaultDropCursor=\uAE30\uBCF8 \uB193\uAE30 \uCEE4\uC11C # Input method related strings -AWT.CompositionWindowTitle=\uc785\ub825 \ucc3d -AWT.InputMethodSelectionMenu=\uc785\ub825 \ubc29\ubc95 \uc120\ud0dd -AWT.HostInputMethodDisplayName=\uc2dc\uc2a4\ud15c \uc785\ub825 \ubc29\ubc95 -AWT.InputMethodLanguage.ja=\uc77c\ubcf8\uc5b4 -AWT.InputMethodLanguage.ko=\ud55c\uad6d\uc5b4 -AWT.InputMethodLanguage.zh=\uc911\uad6d\uc5b4 -AWT.InputMethodLanguage.zh_CN=\uc911\uad6d\uc5b4 \uac04\uccb4 -AWT.InputMethodLanguage.zh_TW=\uc911\uad6d\uc5b4 \ubc88\uccb4 -AWT.InputMethodCreationFailed={0}\uc744(\ub97c) \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774\uc720: {1} +AWT.CompositionWindowTitle=\uC785\uB825 \uCC3D +AWT.InputMethodSelectionMenu=\uC785\uB825 \uBC29\uBC95 \uC120\uD0DD +AWT.HostInputMethodDisplayName=\uC2DC\uC2A4\uD15C \uC785\uB825 \uBC29\uBC95 +AWT.InputMethodLanguage.ja=\uC77C\uBCF8\uC5B4 +AWT.InputMethodLanguage.ko=\uD55C\uAD6D\uC5B4 +AWT.InputMethodLanguage.zh=\uC911\uAD6D\uC5B4 +AWT.InputMethodLanguage.zh_CN=\uC911\uAD6D\uC5B4 \uAC04\uCCB4 +AWT.InputMethodLanguage.zh_TW=\uC911\uAD6D\uC5B4 \uBC88\uCCB4 +AWT.InputMethodCreationFailed={0}\uC744(\uB97C) \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC6D0\uC778: {1} # Property to select between on-the-spot and below-the-spot # composition with input methods. Valid values: @@ -188,5 +188,5 @@ java.awt.im.style=on-the-spot java.awt.def.delay=30 # Warnings -AWT.InconsistentDLLsWarning=\uc2dc\uc2a4\ud15c\uc5d0 \uc124\uce58\ub41c DLL(dynamic linking libraries) \uc138\ud2b8\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc791\uc5c5\uc5d0 \uae30\ucd08\ud55c \ud14d\uc2a4\ud2b8\uac00 \uc62c\ubc14\ub974\uac8c \uc791\ub3d9\ud558\uc9c0 \uc54a\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ubb38\uc81c\uc5d0 \ub300\ud55c \ub354 \uc790\uc138\ud55c \uc815\ubcf4\uc640 \uc81c\uc548\ub41c \ud574\uacb0 \ubc29\ubc95\uc740 java.sun.com\uc758 Java(TM) 2 SDK, Standard Edition Release Notes\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. +AWT.InconsistentDLLsWarning=\uC2DC\uC2A4\uD15C\uC5D0 \uC124\uCE58\uB41C DLL(Dynamic Linking Libraries) \uC9D1\uD569\uC774 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC544 \uD14D\uC2A4\uD2B8 \uAE30\uBC18 \uC791\uC5C5\uC774 \uC81C\uB300\uB85C \uC791\uB3D9\uD558\uC9C0 \uC54A\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uC774 \uBB38\uC81C\uC5D0 \uB300\uD55C \uC790\uC138\uD55C \uB0B4\uC6A9\uACFC \uD574\uACB0 \uBC29\uBC95 \uC81C\uC548 \uC0AC\uD56D\uC740 java.sun.com\uC758 Java(TM) 2 SDK, Standard Edition Release Notes\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624. diff --git a/jdk/src/share/classes/sun/awt/resources/awt_pt_BR.properties b/jdk/src/share/classes/sun/awt/resources/awt_pt_BR.properties index f7808b2ed2b..a3b38cad058 100644 --- a/jdk/src/share/classes/sun/awt/resources/awt_pt_BR.properties +++ b/jdk/src/share/classes/sun/awt/resources/awt_pt_BR.properties @@ -1,3 +1,4 @@ + # # AWT-specific properties # @@ -12,38 +13,38 @@ AWT.altGraph=Alt Graph # Key names AWT.enter=Enter AWT.backSpace=Backspace -AWT.tab=Tab +AWT.tab=Guia AWT.cancel=Cancelar AWT.clear=Limpar AWT.pause=Pausar AWT.capsLock=Caps Lock AWT.escape=Escape -AWT.space=Barra de espa\u00e7o -AWT.pgup=P\u00e1gina acima -AWT.pgdn=P\u00e1gina abaixo +AWT.space=Espa\u00E7o +AWT.pgup=P\u00E1gina Acima +AWT.pgdn=P\u00E1gina Abaixo AWT.end=Fim -AWT.home=In\u00edcio +AWT.home=In\u00EDcio AWT.left=Esquerda AWT.up=Acima AWT.right=Direita AWT.down=Abaixo -AWT.begin=Come\u00e7ar -AWT.comma=V\u00edrgula -AWT.period=Ponto final +AWT.begin=Come\u00E7ar +AWT.comma=V\u00EDrgula +AWT.period=Ponto Final AWT.slash=Barra -AWT.semicolon=Ponto-e-v\u00edrgula +AWT.semicolon=Ponto-e-V\u00EDrgula AWT.equals=Igual -AWT.openBracket=Abrir par\u00eantese -AWT.backSlash=Barra invertida -AWT.closeBracket=Fechar par\u00eantese -AWT.multiply=Teclado num\u00e9rico * -AWT.add=Teclado num\u00e9rico + -AWT.separator=Teclado num\u00e9rico , -AWT.separater=Teclado num\u00e9rico , -AWT.subtract=Teclado num\u00e9rico - -AWT.decimal=Teclado num\u00e9rico . -AWT.divide=Teclado num\u00e9rico / -AWT.delete=Excluir +AWT.openBracket=Par\u00EAntese de Abertura +AWT.backSlash=Barra Invertida +AWT.closeBracket=Par\u00EAntese de Fechamento +AWT.multiply=Teclado Num\u00E9rico * +AWT.add=Teclado Num\u00E9rico + +AWT.separator=Teclado Num\u00E9rico , +AWT.separater=Teclado Num\u00E9rico , +AWT.subtract=Teclado Num\u00E9rico - +AWT.decimal=Teclado Num\u00E9rico . +AWT.divide=Teclado Num\u00E9rico / +AWT.delete=Delete AWT.numLock=Num Lock AWT.scrollLock=Scroll Lock AWT.f1=F1 @@ -70,114 +71,114 @@ AWT.f21=F21 AWT.f22=F22 AWT.f23=F23 AWT.f24=F24 -AWT.printScreen=Imprimir tela -AWT.insert=Inserir +AWT.printScreen=Print Screen +AWT.insert=Insert AWT.help=Ajuda -AWT.windows=Windows -AWT.context=Menu de contexto +AWT.windows=Janelas +AWT.context=Menu de Contexto AWT.backQuote=Crase AWT.quote=Aspas -AWT.deadGrave=Acento grave -AWT.deadAcute=Acento agudo -AWT.deadCircumflex=Acento circunflexo +AWT.deadGrave=Acento Grave +AWT.deadAcute=Acento Agudo +AWT.deadCircumflex=Acento Circunflexo AWT.deadTilde=Til -AWT.deadMacron=M\u00e1cron +AWT.deadMacron=M\u00E1cron AWT.deadBreve=Braquia -AWT.deadAboveDot=Ponto em cima +AWT.deadAboveDot=Ponto em Cima AWT.deadDiaeresis=Trema -AWT.deadAboveRing=S\u00edmbolo do grau -AWT.deadDoubleAcute=Acento agudo duplo -AWT.deadCaron=Acento circunflexo invertido +AWT.deadAboveRing=S\u00EDmbolo de Grau +AWT.deadDoubleAcute=Acento Agudo Duplo +AWT.deadCaron=Acento Circunflexo Invertido AWT.deadCedilla=Cedilha -AWT.deadOgonek=Ogonek -AWT.deadIota=Iota -AWT.deadVoicedSound=Som sonoro -AWT.deadSemivoicedSound=Som surdo -AWT.ampersand=E comercial +AWT.deadOgonek=Gancho Polon\u00EAs +AWT.deadIota=Lota +AWT.deadVoicedSound=Sonoro (Som) +AWT.deadSemivoicedSound=Surdo (Som) +AWT.ampersand=E Comercial AWT.asterisk=Asterisco -AWT.quoteDbl=Aspas duplas +AWT.quoteDbl=Aspas Duplas AWT.Less=Menos AWT.greater=Maior -AWT.braceLeft=Chave esquerda -AWT.braceRight=Chave direta +AWT.braceLeft=Chave Esquerda +AWT.braceRight=Chave Direta AWT.at=Arroba -AWT.colon=V\u00edrgula +AWT.colon=V\u00EDrgula AWT.circumflex=Circunflexo -AWT.dollar=D\u00f3lar +AWT.dollar=D\u00F3lar AWT.euro=Euro -AWT.exclamationMark=Ponto de exclama\u00e7\u00e3o -AWT.invertedExclamationMark=Ponto de exclama\u00e7\u00e3o invertido -AWT.leftParenthesis=Par\u00eantese esquerdo -AWT.numberSign=Sinal num\u00e9rico +AWT.exclamationMark=Ponto de Exclama\u00E7\u00E3o +AWT.invertedExclamationMark=Ponto de Exclama\u00E7\u00E3o Invertido +AWT.leftParenthesis=Par\u00EAntese Esquerdo +AWT.numberSign=Sinal Num\u00E9rico AWT.plus=Mais AWT.minus=Menos -AWT.rightParenthesis=Par\u00eantese direito +AWT.rightParenthesis=Par\u00EAntese Direito AWT.underscore=Sublinhado AWT.final=Final AWT.convert=Converter -AWT.noconvert=N\u00e3o converter +AWT.noconvert=N\u00E3o Converter AWT.accept=Aceitar -AWT.modechange=Altera\u00e7\u00e3o de modo +AWT.modechange=Altera\u00E7\u00E3o de Modo AWT.kana=Kana AWT.kanji=Kanji -AWT.alphanumeric=Alfanum\u00e9rico +AWT.alphanumeric=Alfanum\u00E9rico AWT.katakana=Katakana AWT.hiragana=Hiragana -AWT.fullWidth=Largura total -AWT.halfWidth=Meia largura -AWT.romanCharacters=Caracteres romanos -AWT.allCandidates=Todos os candidatos -AWT.previousCandidate=Candidato anterior -AWT.codeInput=Entrada de c\u00f3digo -AWT.japaneseKatakana=Katakana japon\u00eas -AWT.japaneseHiragana=Hiragana japon\u00eas -AWT.japaneseRoman=Romano japon\u00eas +AWT.fullWidth=Largura Total +AWT.halfWidth=Meia Largura +AWT.romanCharacters=Caracteres Romanos +AWT.allCandidates=Todos os Candidatos +AWT.previousCandidate=Candidato Anterior +AWT.codeInput=Entrada de C\u00F3digo +AWT.japaneseKatakana=Katakana Japon\u00EAs +AWT.japaneseHiragana=Hiragana Japon\u00EAs +AWT.japaneseRoman=Romano Japon\u00EAs AWT.kanaLock=Kana Lock -AWT.inputMethodOnOff=M\u00e9todo de entrada ativado/desativado +AWT.inputMethodOnOff=M\u00E9todo de Entrada Ativado/Desativado AWT.again=Novamente AWT.undo=Desfazer AWT.copy=Copiar AWT.paste=Colar AWT.cut=Recortar AWT.find=Localizar -AWT.props=Props -AWT.stop=Parar +AWT.props=Sustentar +AWT.stop=Interromper AWT.compose=Compor # Numeric Keypad -AWT.numpad=Teclado num\u00e9rico +AWT.numpad=Teclado Num\u00E9rico AWT.unknown=Desconhecido AWT.undefined=Indefinido # Predefined cursor names -AWT.DefaultCursor=Cursor padr\u00e3o -AWT.CrosshairCursor=Cursor em forma de cruz -AWT.TextCursor=Cursor de texto -AWT.WaitCursor=Cursor em forma de ampulheta -AWT.SWResizeCursor=Cursor de seta que aponta para sudoeste -AWT.SEResizeCursor=Cursor de seta que aponta para sudeste -AWT.NWResizeCursor=Cursor de seta que aponta para noroeste -AWT.NEResizeCursor=Cursor de seta que aponta para nordeste -AWT.NResizeCursor=Cursor de seta que aponta para cima -AWT.SResizeCursor=Cursor de seta que aponta para baixo -AWT.WResizeCursor=Cursor de seta que aponta \u00e0 esquerda -AWT.EResizeCursor=Cursor de seta que aponta \u00e0 direita -AWT.HandCursor=Cursor em forma de m\u00e3o -AWT.MoveCursor=Cursor de movimento -AWT.DefaultDragCursor=Cursor padr\u00e3o de arrastar -AWT.DefaultNoDropCursor=Cursor padr\u00e3o sem arrasto -AWT.DefaultDropCursor=Cursor padr\u00e3o de soltar +AWT.DefaultCursor=Cursor Default +AWT.CrosshairCursor=Cursor em Forma de Cruz +AWT.TextCursor=Cursor de Texto +AWT.WaitCursor=Cursor em Forma de Ampulheta +AWT.SWResizeCursor=Cursor de Seta Que Aponta para Sudoeste +AWT.SEResizeCursor=Cursor de Seta Que Aponta para Sudeste +AWT.NWResizeCursor=Cursor de Seta Que Aponta para Noroeste +AWT.NEResizeCursor=Cursor de Seta Que Aponta para Nordeste +AWT.NResizeCursor=Cursor de Seta Que Aponta para Cima +AWT.SResizeCursor=Cursor de Seta Que Aponta para Baixo +AWT.WResizeCursor=Cursor de Seta Que Aponta \u00E0 Esquerda +AWT.EResizeCursor=Cursor de Seta Que Aponta \u00E0 Direita +AWT.HandCursor=Cursor em Forma de M\u00E3o +AWT.MoveCursor=Cursor de Movimento +AWT.DefaultDragCursor=Cursor Default de Arrastar +AWT.DefaultNoDropCursor=Cursor Default sem Arrastar +AWT.DefaultDropCursor=Cursor Default de Soltar # Input method related strings -AWT.CompositionWindowTitle=Janela de entrada -AWT.InputMethodSelectionMenu=Selecionar m\u00e9todo de entrada -AWT.HostInputMethodDisplayName=M\u00e9todos de entrada do sistema -AWT.InputMethodLanguage.ja=Japon\u00eas +AWT.CompositionWindowTitle=Janela de Entrada +AWT.InputMethodSelectionMenu=Selecionar M\u00E9todo de Entrada +AWT.HostInputMethodDisplayName=M\u00E9todos de Entrada do Sistema +AWT.InputMethodLanguage.ja=Japon\u00EAs AWT.InputMethodLanguage.ko=Coreano -AWT.InputMethodLanguage.zh=Chin\u00eas -AWT.InputMethodLanguage.zh_CN=Chin\u00eas simplificado -AWT.InputMethodLanguage.zh_TW=Chin\u00eas tradicional -AWT.InputMethodCreationFailed=N\u00e3o foi poss\u00edvel criar {0}. Raz\u00e3o: {1} +AWT.InputMethodLanguage.zh=Chin\u00EAs +AWT.InputMethodLanguage.zh_CN=Chin\u00EAs Simplificado +AWT.InputMethodLanguage.zh_TW=Chin\u00EAs Tradicional +AWT.InputMethodCreationFailed=N\u00E3o foi poss\u00EDvel criar {0}. Motivo: {1} # Property to select between on-the-spot and below-the-spot # composition with input methods. Valid values: @@ -187,5 +188,5 @@ java.awt.im.style=no momento java.awt.def.delay=30 # Warnings -AWT.InconsistentDLLsWarning=As opera\u00e7\u00f5es baseadas em texto podem n\u00e3o funcionar corretamente devido a um conjunto incoerente de bibliotecas de vincula\u00e7\u00e3o din\u00e2mica (DLLs) instalado no seu sistema. Para obter mais informa\u00e7\u00f5es sobre este problema e uma solu\u00e7\u00e3o recomendada, consulte as Notas de vers\u00e3o do Java(TM) 2 SDK, Standard Edition em java.sun.com. +AWT.InconsistentDLLsWarning=Pode ser que as opera\u00E7\u00F5es baseadas em texto n\u00E3o funcionem corretamente devido a um conjunto incoerente de bibliotecas de vincula\u00E7\u00E3o din\u00E2mica (DLLs) instalado no seu sistema. Para obter mais informa\u00E7\u00F5es sobre este problema e uma solu\u00E7\u00E3o recomendada, consulte as Notas de Vers\u00E3o do Java(TM) 2 SDK, Standard Edition, em java.sun.com. diff --git a/jdk/src/share/classes/sun/awt/resources/awt_sv.properties b/jdk/src/share/classes/sun/awt/resources/awt_sv.properties index 61f04b3ad4f..c5f015c10c0 100644 --- a/jdk/src/share/classes/sun/awt/resources/awt_sv.properties +++ b/jdk/src/share/classes/sun/awt/resources/awt_sv.properties @@ -15,7 +15,7 @@ AWT.enter=Enter AWT.backSpace=Backsteg AWT.tab=Tabb AWT.cancel=Avbryt -AWT.clear=Ta bort +AWT.clear=Rensa AWT.pause=Paus AWT.capsLock=Caps Lock AWT.escape=Esc @@ -23,20 +23,20 @@ AWT.space=Mellanslag AWT.pgup=Page Up AWT.pgdn=Page Down AWT.end=End -AWT.home=Home -AWT.left=V\u00e4nsterpil -AWT.up=Upp\u00e5tpil -AWT.right=H\u00f6gerpil -AWT.down=Ned\u00e5tpil +AWT.home=Hem +AWT.left=V\u00E4nsterpil +AWT.up=Upp +AWT.right=H\u00F6gerpil +AWT.down=Nedpil AWT.begin=Begin -AWT.comma=Comma -AWT.period=Period -AWT.slash=Slash -AWT.semicolon=Semicolon -AWT.equals=Equals -AWT.openBracket=Open Bracket -AWT.backSlash=Back Slash -AWT.closeBracket=Close Bracket +AWT.comma=Kommatecken +AWT.period=Punkt +AWT.slash=Snedstreck +AWT.semicolon=Semikolon +AWT.equals=Lika med +AWT.openBracket=Parentes +AWT.backSlash=Omv\u00E4nt snedstreck +AWT.closeBracket=Hakparentes AWT.multiply=NUM * AWT.add=NUM + AWT.separator=NUM , @@ -44,7 +44,7 @@ AWT.separater=NUM , AWT.subtract=NUM - AWT.decimal=NUM . AWT.divide=NUM / -AWT.delete=Delete +AWT.delete=Ta bort AWT.numLock=Num Lock AWT.scrollLock=Scroll Lock AWT.f1=F1 @@ -73,10 +73,10 @@ AWT.f23=F23 AWT.f24=F24 AWT.printScreen=Print Screen AWT.insert=Insert -AWT.help=Hj\u00e4lp +AWT.help=Hj\u00E4lp AWT.windows=Windows -AWT.context=Context Menu -AWT.backQuote=V\u00e4nster citattecken +AWT.context=Snabbmeny +AWT.backQuote=V\u00E4nster citattecken AWT.quote=Citattecken AWT.deadGrave=Dead Grave AWT.deadAcute=Dead Acute @@ -98,9 +98,9 @@ AWT.ampersand=Et-tecken AWT.asterisk=Asterisk AWT.quoteDbl=Dubbelt citattecken AWT.Less=Mindre -AWT.greater=St\u00f6rre -AWT.braceLeft=Klammerparentes -AWT.braceRight=H\u00f6ger klammerparentes +AWT.greater=St\u00F6rre +AWT.braceLeft=V\u00E4nster klammerparentes +AWT.braceRight=H\u00F6ger klammerparentes AWT.at=Vid AWT.colon=Kolon AWT.circumflex=Cirkumflex @@ -108,85 +108,85 @@ AWT.dollar=Dollar AWT.euro=Euro AWT.exclamationMark=Utropstecken AWT.invertedExclamationMark=Inverterat utropstecken -AWT.leftParenthesis=V\u00e4nsterparentes +AWT.leftParenthesis=V\u00E4nsterparentes AWT.numberSign=Nummertecken AWT.plus=Plus AWT.minus=Minus -AWT.rightParenthesis=H\u00f6gerparentes -AWT.underscore=Understrykning +AWT.rightParenthesis=H\u00F6gerparentes +AWT.underscore=Understreck AWT.final=Slutgiltig AWT.convert=Konvertera AWT.noconvert=Ingen konvertering AWT.accept=Acceptera -AWT.modechange=\u00c4ndring av l\u00e4ge +AWT.modechange=\u00C4ndring av l\u00E4ge AWT.kana=Kana AWT.kanji=Kanji AWT.alphanumeric=Alfanumerisk AWT.katakana=Katakana AWT.hiragana=Hiragana -AWT.fullWidth=Maximal bredd +AWT.fullWidth=Full bredd AWT.halfWidth=Halv bredd -AWT.romanCharacters=Raka tecken +AWT.romanCharacters=Latinska tecken AWT.allCandidates=Alla kandidater -AWT.previousCandidate=F\u00f6reg\u00e5ende kandidat +AWT.previousCandidate=F\u00F6reg\u00E5ende kandidat AWT.codeInput=Kodindata AWT.japaneseKatakana=Japansk Katakana AWT.japaneseHiragana=Japansk Hiragana -AWT.japaneseRoman=Japansk rak -AWT.kanaLock=Kana-l\u00e5s -AWT.inputMethodOnOff=Indatametod p\u00e5/av +AWT.japaneseRoman=Japanska-latinska +AWT.kanaLock=Kana-l\u00E5s +AWT.inputMethodOnOff=Indatametod p\u00E5/av AWT.again=Upprepa -AWT.undo=\u00c5ngra +AWT.undo=\u00C5ngra AWT.copy=Kopiera AWT.paste=Klistra in AWT.cut=Klipp ut -AWT.find=S\u00f6k +AWT.find=S\u00F6k AWT.props=Egenskaper AWT.stop=Stopp AWT.compose=Skriv # Numeric Keypad AWT.numpad=NumPad -AWT.unknown=Unknown -AWT.undefined=Undefined +AWT.unknown=Ok\u00E4nd +AWT.undefined=Odefinierad # Predefined cursor names -AWT.DefaultCursor=Standardmark\u00f6r -AWT.CrosshairCursor=H\u00e5rkorsmark\u00f6r -AWT.TextCursor=Textmark\u00f6r -AWT.WaitCursor=V\u00e4ntemark\u00f6r -AWT.SWResizeCursor=Southwest Resize Cursor -AWT.SEResizeCursor=Southeast Resize Cursor -AWT.NWResizeCursor=Northwest Resize Cursor -AWT.NEResizeCursor=Northeast Resize Cursor -AWT.NResizeCursor=North Resize Cursor -AWT.SResizeCursor=South Resize Cursor -AWT.WResizeCursor=West Resize Cursor -AWT.EResizeCursor=East Resize Cursor -AWT.HandCursor=Handmark\u00f6r -AWT.MoveCursor=Flyttningsmark\u00f6r -AWT.DefaultDragCursor=Standarddragmark\u00f6r -AWT.DefaultNoDropCursor=Standardmark\u00f6r (ej drag) -AWT.DefaultDropCursor=Standardsl\u00e4ppmark\u00f6r +AWT.DefaultCursor=Standardmark\u00F6r +AWT.CrosshairCursor=H\u00E5rkorsmark\u00F6r +AWT.TextCursor=Textmark\u00F6r +AWT.WaitCursor=V\u00E4ntemark\u00F6r +AWT.SWResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (sydv\u00E4st) +AWT.SEResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (sydost) +AWT.NWResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (nordv\u00E4st) +AWT.NEResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (nordost) +AWT.NResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (nord) +AWT.SResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (syd) +AWT.WResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (v\u00E4st) +AWT.EResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (\u00F6st) +AWT.HandCursor=Handmark\u00F6r +AWT.MoveCursor=Flyttmark\u00F6r +AWT.DefaultDragCursor=Standarddragmark\u00F6r +AWT.DefaultNoDropCursor=Standardmark\u00F6r (ej drag) +AWT.DefaultDropCursor=Standardsl\u00E4ppmark\u00F6r # Input method related strings -AWT.CompositionWindowTitle=Inmatningsf\u00f6nster -AWT.InputMethodSelectionMenu=V\u00e4lj indatametod -AWT.HostInputMethodDisplayName=Systemindatametoder -AWT.InputMethodLanguage.ja=japanska -AWT.InputMethodLanguage.ko=koreanska -AWT.InputMethodLanguage.zh=kinesiska -AWT.InputMethodLanguage.zh_CN=f\u00f6renklad kinesiska -AWT.InputMethodLanguage.zh_TW=traditionell kinesiska +AWT.CompositionWindowTitle=Inmatningsf\u00F6nster +AWT.InputMethodSelectionMenu=V\u00E4lj inmatningsmetod +AWT.HostInputMethodDisplayName=Systeminmatningsmetoder +AWT.InputMethodLanguage.ja=Japanska +AWT.InputMethodLanguage.ko=Koreanska +AWT.InputMethodLanguage.zh=Kinesiska +AWT.InputMethodLanguage.zh_CN=F\u00F6renklad kinesiska +AWT.InputMethodLanguage.zh_TW=Traditionell kinesiska AWT.InputMethodCreationFailed=Kan inte skapa {0}. Orsak: {1} # Property to select between on-the-spot and below-the-spot # composition with input methods. Valid values: # "on-the-spot", "below-the-spot". # May be overridden from command line. -java.awt.im.style=p\u00e5 st\u00e4llet +java.awt.im.style=p\u00E5 st\u00E4llet java.awt.def.delay=30 # Warnings -AWT.InconsistentDLLsWarning=Det \u00e4r m\u00f6jligt att textbaserade operationer inte fungerar korrekt p\u00e5 grund av inkonsekvent m\u00e4ngd av dynamiskt l\u00e4nkade bibliotek (DLL) som \u00e4r installerade p\u00e5 ditt system. F\u00f6r mer information om detta problem och en ett f\u00f6reslaget s\u00e4tt att arbeta runt det se Java(TM) 2 SDK, Standard Edition Release Notes p\u00e5 java.sun.com. +AWT.InconsistentDLLsWarning=Textbaserade \u00E5tg\u00E4rder kanske inte fungerar korrekt p\u00E5 grund av en inkonsekvent upps\u00E4ttning dynamiskt l\u00E4nkade bibliotek (DLL) som \u00E4r installerade i systemet. F\u00F6r mer information om detta problem och en tillf\u00E4llig l\u00F6sning, se Java(TM) 2 SDK, Standard Edition Release Notes p\u00E5 java.sun.com. diff --git a/jdk/src/share/classes/sun/awt/resources/awt_zh_CN.properties b/jdk/src/share/classes/sun/awt/resources/awt_zh_CN.properties index f153467f5b3..feec527621a 100644 --- a/jdk/src/share/classes/sun/awt/resources/awt_zh_CN.properties +++ b/jdk/src/share/classes/sun/awt/resources/awt_zh_CN.properties @@ -18,25 +18,25 @@ AWT.cancel=Cancel AWT.clear=Clear AWT.pause=Pause AWT.capsLock=Caps Lock -AWT.escape=Escape -AWT.space=Space +AWT.escape=Esc +AWT.space=\u7A7A\u683C AWT.pgup=Page Up AWT.pgdn=Page Down AWT.end=End AWT.home=Home -AWT.left=Left -AWT.up=Up -AWT.right=Right -AWT.down=Down -AWT.begin=Begin -AWT.comma=Comma -AWT.period=Period -AWT.slash=Slash -AWT.semicolon=Semicolon -AWT.equals=Equals -AWT.openBracket=Open Bracket -AWT.backSlash=Back Slash -AWT.closeBracket=Close Bracket +AWT.left=\u5411\u5DE6\u7BAD\u5934 +AWT.up=\u5411\u4E0A\u7BAD\u5934 +AWT.right=\u5411\u53F3\u7BAD\u5934 +AWT.down=\u5411\u4E0B\u7BAD\u5934 +AWT.begin=\u5F00\u59CB +AWT.comma=\u9017\u53F7 +AWT.period=\u53E5\u70B9 +AWT.slash=\u659C\u6760 +AWT.semicolon=\u5206\u53F7 +AWT.equals=\u7B49\u53F7 +AWT.openBracket=\u5DE6\u65B9\u62EC\u53F7 +AWT.backSlash=\u53CD\u659C\u6760 +AWT.closeBracket=\u53F3\u65B9\u62EC\u53F7 AWT.multiply=NumPad * AWT.add=NumPad + AWT.separator=NumPad , @@ -73,120 +73,120 @@ AWT.f23=F23 AWT.f24=F24 AWT.printScreen=Print Screen AWT.insert=Insert -AWT.help=Help +AWT.help=\u5E2E\u52A9 AWT.windows=Windows -AWT.context=Context Menu -AWT.backQuote=Back Quote -AWT.quote=Quote -AWT.deadGrave=Dead Grave -AWT.deadAcute=Dead Acute -AWT.deadCircumflex=Dead Circumflex -AWT.deadTilde=Dead Tilde -AWT.deadMacron=Dead Macron -AWT.deadBreve=Dead Breve -AWT.deadAboveDot=Dead Above Dot -AWT.deadDiaeresis=Dead Diaeresis -AWT.deadAboveRing=Dead Above Ring -AWT.deadDoubleAcute=Dead Double Acute -AWT.deadCaron=Dead Caron -AWT.deadCedilla=Dead Cedilla -AWT.deadOgonek=Dead Ogonek -AWT.deadIota=Dead Iota -AWT.deadVoicedSound=Dead Voiced Sound -AWT.deadSemivoicedSound=Dead Semivoiced Sound -AWT.ampersand=Ampersand -AWT.asterisk=Asterisk -AWT.quoteDbl=Double Quote -AWT.Less=Less -AWT.greater=Greater -AWT.braceLeft=Left Brace -AWT.braceRight=Right Brace -AWT.at=At -AWT.colon=Colon -AWT.circumflex=Circumflex -AWT.dollar=Dollar -AWT.euro=Euro -AWT.exclamationMark=Exclamation Mark -AWT.invertedExclamationMark=Inverted Exclamation Mark -AWT.leftParenthesis=Left Parenthesis -AWT.numberSign=Number Sign -AWT.plus=Plus -AWT.minus=Minus -AWT.rightParenthesis=Right Parenthesis -AWT.underscore=Underscore -AWT.final=Final -AWT.convert=Convert -AWT.noconvert=No Convert -AWT.accept=Accept -AWT.modechange=Mode Change -AWT.kana=Kana -AWT.kanji=Kanji -AWT.alphanumeric=Alphanumeric -AWT.katakana=Katakana -AWT.hiragana=Hiragana -AWT.fullWidth=Full-Width -AWT.halfWidth=Half-Width -AWT.romanCharacters=Roman Characters -AWT.allCandidates=All Candidates -AWT.previousCandidate=Previous Candidate -AWT.codeInput=Code Input -AWT.japaneseKatakana=Japanese Katakana -AWT.japaneseHiragana=Japanese Hiragana -AWT.japaneseRoman=Japanese Roman +AWT.context=\u4E0A\u4E0B\u6587\u83DC\u5355 +AWT.backQuote=\u540E\u5F15\u53F7 +AWT.quote=\u5F15\u53F7 +AWT.deadGrave=\u6291\u97F3\u7B26\u53F7 +AWT.deadAcute=\u5E26\u5C16\u97F3\u7B26\u53F7 +AWT.deadCircumflex=\u5E26\u6291\u626C\u7B26\u53F7 +AWT.deadTilde=\u816D\u5316\u7B26\u53F7 +AWT.deadMacron=\u957F\u97F3\u7B26\u53F7 +AWT.deadBreve=\u77ED\u97F3\u7B26\u53F7 +AWT.deadAboveDot=\u4E0A\u6807\u70B9 +AWT.deadDiaeresis=\u5206\u97F3\u7B26\u53F7 +AWT.deadAboveRing=\u4E0A\u6807\u5706\u5708 +AWT.deadDoubleAcute=\u53CC\u5C16\u97F3\u7B26\u53F7 +AWT.deadCaron=\u5012\u7F6E\u97F3\u8C03\u7B26\u53F7 +AWT.deadCedilla=\u53D8\u97F3\u7B26\u53F7 +AWT.deadOgonek=\u53CD\u5C3E\u5F62\u7B26 +AWT.deadIota=\u963F\u5C14\u5854\u7B26\u53F7 +AWT.deadVoicedSound=\u6D4A\u97F3\u7B26\u53F7 +AWT.deadSemivoicedSound=\u534A\u6D4A\u97F3\u7B26\u53F7 +AWT.ampersand=& \u7B26\u53F7 +AWT.asterisk=\u661F\u53F7 +AWT.quoteDbl=\u53CC\u5F15\u53F7 +AWT.Less=\u5C0F\u4E8E\u53F7 +AWT.greater=\u5927\u4E8E\u53F7 +AWT.braceLeft=\u5DE6\u82B1\u62EC\u53F7 +AWT.braceRight=\u53F3\u82B1\u62EC\u53F7 +AWT.at=@ \u7B26\u53F7 +AWT.colon=\u5192\u53F7 +AWT.circumflex=\u6291\u626C\u7B26\u53F7 +AWT.dollar=\u7F8E\u5143 +AWT.euro=\u6B27\u5143 +AWT.exclamationMark=\u611F\u53F9\u53F7 +AWT.invertedExclamationMark=\u5012\u7F6E\u611F\u53F9\u53F7 +AWT.leftParenthesis=\u5DE6\u62EC\u53F7 +AWT.numberSign=\u4E95\u53F7 +AWT.plus=\u52A0\u53F7 +AWT.minus=\u51CF\u53F7 +AWT.rightParenthesis=\u53F3\u62EC\u53F7 +AWT.underscore=\u4E0B\u5212\u7EBF +AWT.final=\u6700\u7EC8 +AWT.convert=\u8F6C\u6362 +AWT.noconvert=\u4E0D\u8F6C\u6362 +AWT.accept=\u63A5\u53D7 +AWT.modechange=\u6A21\u5F0F\u66F4\u6539 +AWT.kana=\u5047\u540D +AWT.kanji=\u65E5\u672C\u6C49\u5B57 +AWT.alphanumeric=\u5B57\u6BCD\u6570\u5B57 +AWT.katakana=\u7247\u5047\u540D +AWT.hiragana=\u5E73\u5047\u540D +AWT.fullWidth=\u5168\u89D2 +AWT.halfWidth=\u534A\u89D2 +AWT.romanCharacters=\u7F57\u9A6C\u5B57\u7B26 +AWT.allCandidates=\u6240\u6709\u5019\u9009\u9879 +AWT.previousCandidate=\u4E0A\u4E00\u4E2A\u5019\u9009\u9879 +AWT.codeInput=\u4EE3\u7801\u8F93\u5165 +AWT.japaneseKatakana=\u65E5\u8BED\u7247\u5047\u540D +AWT.japaneseHiragana=\u65E5\u8BED\u5E73\u5047\u540D +AWT.japaneseRoman=\u65E5\u8BED\u7F57\u9A6C\u5B57\u7B26 AWT.kanaLock=Kana Lock -AWT.inputMethodOnOff=Input Method On/Off -AWT.again=Again -AWT.undo=Undo -AWT.copy=Copy -AWT.paste=Paste -AWT.cut=Cut -AWT.find=Find -AWT.props=Props -AWT.stop=Stop -AWT.compose=Compose +AWT.inputMethodOnOff=\u6253\u5F00/\u5173\u95ED\u8F93\u5165\u65B9\u6CD5 +AWT.again=\u91CD\u65B0 +AWT.undo=\u64A4\u6D88 +AWT.copy=\u590D\u5236 +AWT.paste=\u7C98\u8D34 +AWT.cut=\u526A\u5207 +AWT.find=\u67E5\u627E +AWT.props=\u5C0F\u9053\u5177 +AWT.stop=\u505C\u6B62 +AWT.compose=\u7F16\u5199 # Numeric Keypad AWT.numpad=NumPad -AWT.unknown=Unknown -AWT.undefined=Undefined +AWT.unknown=\u672A\u77E5 +AWT.undefined=\u672A\u5B9A\u4E49 # Predefined cursor names -AWT.DefaultCursor=Default Cursor -AWT.CrosshairCursor=Crosshair Cursor -AWT.TextCursor=Text Cursor -AWT.WaitCursor=Wait Cursor -AWT.SWResizeCursor=Southwest Resize Cursor -AWT.SEResizeCursor=Southeast Resize Cursor -AWT.NWResizeCursor=Northwest Resize Cursor -AWT.NEResizeCursor=Northeast Resize Cursor -AWT.NResizeCursor=North Resize Cursor -AWT.SResizeCursor=South Resize Cursor -AWT.WResizeCursor=West Resize Cursor -AWT.EResizeCursor=East Resize Cursor -AWT.HandCursor=Hand Cursor -AWT.MoveCursor=Move Cursor -AWT.DefaultDragCursor=Default Drag Cursor -AWT.DefaultNoDropCursor=Default NoDrag Cursor -AWT.DefaultDropCursor=Default Drop Cursor +AWT.DefaultCursor=\u9ED8\u8BA4\u5149\u6807 +AWT.CrosshairCursor=\u5341\u5B57\u5149\u6807 +AWT.TextCursor=\u6587\u672C\u5149\u6807 +AWT.WaitCursor=\u6C99\u6F0F\u5149\u6807 +AWT.SWResizeCursor=\u201C\u5411\u897F\u5357\u65B9\u5411\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807 +AWT.SEResizeCursor=\u201C\u5411\u4E1C\u5357\u65B9\u5411\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807 +AWT.NWResizeCursor=\u201C\u5411\u897F\u5317\u65B9\u5411\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807 +AWT.NEResizeCursor=\u201C\u5411\u4E1C\u5317\u65B9\u5411\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807 +AWT.NResizeCursor=\u201C\u5411\u5317\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807 +AWT.SResizeCursor=\u201C\u5411\u5357\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807 +AWT.WResizeCursor=\u201C\u5411\u897F\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807 +AWT.EResizeCursor=\u201C\u5411\u4E1C\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807 +AWT.HandCursor=\u624B\u578B\u5149\u6807 +AWT.MoveCursor=\u79FB\u52A8\u5149\u6807 +AWT.DefaultDragCursor=\u9ED8\u8BA4\u62D6\u52A8\u5149\u6807 +AWT.DefaultNoDropCursor=\u9ED8\u8BA4\u65E0\u62D6\u52A8\u5149\u6807 +AWT.DefaultDropCursor=\u9ED8\u8BA4\u653E\u7F6E\u5149\u6807 # Input method related strings -AWT.CompositionWindowTitle=\u8f93\u5165\u7a97\u53e3 -AWT.InputMethodSelectionMenu=\u9009\u62e9\u8f93\u5165\u7a97\u53e3 -AWT.HostInputMethodDisplayName=\u7cfb\u7edf\u8f93\u5165\u6cd5 -AWT.InputMethodLanguage.ja=\u65e5\u6587 -AWT.InputMethodLanguage.ko=\u97e9\u6587 -AWT.InputMethodLanguage.zh=\u4e2d\u6587 -AWT.InputMethodLanguage.zh_CN=\u7b80\u4f53\u4e2d\u6587 -AWT.InputMethodLanguage.zh_TW=\u7e41\u4f53\u4e2d\u6587 -AWT.InputMethodCreationFailed=\u4e0d\u80fd\u521b\u5efa {0}\u3002\u539f\u56e0\uff1a{1} +AWT.CompositionWindowTitle=\u8F93\u5165\u7A97\u53E3 +AWT.InputMethodSelectionMenu=\u9009\u62E9\u8F93\u5165\u7A97\u53E3 +AWT.HostInputMethodDisplayName=\u7CFB\u7EDF\u8F93\u5165\u6CD5 +AWT.InputMethodLanguage.ja=\u65E5\u6587 +AWT.InputMethodLanguage.ko=\u97E9\u6587 +AWT.InputMethodLanguage.zh=\u4E2D\u6587 +AWT.InputMethodLanguage.zh_CN=\u7B80\u4F53\u4E2D\u6587 +AWT.InputMethodLanguage.zh_TW=\u7E41\u4F53\u4E2D\u6587 +AWT.InputMethodCreationFailed=\u65E0\u6CD5\u521B\u5EFA{0}\u3002\u539F\u56E0: {1} # Property to select between on-the-spot and below-the-spot # composition with input methods. Valid values: # "on-the-spot", "below-the-spot". # May be overridden from command line. -java.awt.im.style=below-the-spot +java.awt.im.style=on-the-spot java.awt.def.delay=30 # Warnings -AWT.InconsistentDLLsWarning=\u57fa\u4e8e\u6587\u672c\u7684\u64cd\u4f5c\u53ef\u80fd\u4e0d\u80fd\u6b63\u5e38\u8fd0\u884c \u56e0\u4e3a\u7cfb\u7edf\u4e0a\u5b89\u88c5\u4e86\u4e00\u5957\u4e0d\u4e00\u81f4\u7684\u52a8\u6001\u94fe\u63a5\u5e93 (DLLs) \u3002 \u6709\u5173\u6b64\u95ee\u9898\u7684\u66f4\u591a\u4fe1\u606f\u548c\u5efa\u8bae\u7684\u89e3\u51b3\u65b9\u6848 \u8bf7\u53c2\u89c1 java.sun.com \u7f51\u7ad9\u4e0a\u7684 Java(TM) 2 SDK, Standard Edition \u53d1\u884c\u8bf4\u660e\u3002 +AWT.InconsistentDLLsWarning=\u57FA\u4E8E\u6587\u672C\u7684\u64CD\u4F5C\u53EF\u80FD\u4E0D\u80FD\u6B63\u5E38\u8FD0\u884C, \u56E0\u4E3A\u7CFB\u7EDF\u4E0A\u5B89\u88C5\u4E86\u4E00\u5957\u4E0D\u4E00\u81F4\u7684\u52A8\u6001\u94FE\u63A5\u5E93 (DLL)\u3002\u6709\u5173\u6B64\u95EE\u9898\u7684\u8BE6\u7EC6\u4FE1\u606F\u548C\u5EFA\u8BAE\u7684\u89E3\u51B3\u65B9\u6848, \u8BF7\u53C2\u9605 java.sun.com \u7F51\u7AD9\u4E0A\u7684 Java(TM) 2 SDK, \u6807\u51C6\u7248\u53D1\u884C\u8BF4\u660E\u3002 diff --git a/jdk/src/share/classes/sun/awt/resources/awt_zh_TW.properties b/jdk/src/share/classes/sun/awt/resources/awt_zh_TW.properties index 536d53b8a61..d8279b99216 100644 --- a/jdk/src/share/classes/sun/awt/resources/awt_zh_TW.properties +++ b/jdk/src/share/classes/sun/awt/resources/awt_zh_TW.properties @@ -170,15 +170,15 @@ AWT.DefaultNoDropCursor=Default NoDrag Cursor AWT.DefaultDropCursor=Default Drop Cursor # Input method related strings -AWT.CompositionWindowTitle=\u8f38\u5165\u8996\u7a97 -AWT.InputMethodSelectionMenu=\u9078\u64c7\u8f38\u5165\u6cd5 -AWT.HostInputMethodDisplayName=\u7cfb\u7d71\u8f38\u5165\u6cd5 -AWT.InputMethodLanguage.ja=\u65e5\u6587 -AWT.InputMethodLanguage.ko=\u97d3\u6587 -AWT.InputMethodLanguage.zh=\u4e2d\u6587 -AWT.InputMethodLanguage.zh_CN=\u7c21\u9ad4\u4e2d\u6587 -AWT.InputMethodLanguage.zh_TW=\u7e41\u9ad4\u4e2d\u6587 -AWT.InputMethodCreationFailed=\u7121\u6cd5\u5efa\u7acb {0}\u3002\u539f\u56e0\uff1a {1} +AWT.CompositionWindowTitle=\u8F38\u5165\u8996\u7A97 +AWT.InputMethodSelectionMenu=\u9078\u64C7\u8F38\u5165\u6CD5 +AWT.HostInputMethodDisplayName=\u7CFB\u7D71\u8F38\u5165\u6CD5 +AWT.InputMethodLanguage.ja=\u65E5\u6587 +AWT.InputMethodLanguage.ko=\u97D3\u6587 +AWT.InputMethodLanguage.zh=\u4E2D\u6587 +AWT.InputMethodLanguage.zh_CN=\u7C21\u9AD4\u4E2D\u6587 +AWT.InputMethodLanguage.zh_TW=\u7E41\u9AD4\u4E2D\u6587 +AWT.InputMethodCreationFailed=\u7121\u6CD5\u5EFA\u7ACB {0}\u3002\u539F\u56E0: {1} # Property to select between on-the-spot and below-the-spot # composition with input methods. Valid values: @@ -188,5 +188,5 @@ java.awt.im.style=on-the-spot java.awt.def.delay=30 # Warnings -AWT.InconsistentDLLsWarning=\u4ee5\u6587\u5b57\u70ba\u57fa\u790e\u7684\u4f5c\u696d\u53ef\u80fd\u7121\u6cd5\u6b63\u78ba\u904b\u4f5c \u56e0\u70ba\u60a8\u7cfb\u7d71\u4e0a\u6709\u4e00\u7d44\u52d5\u614b\u9023\u7d50\u7a0b\u5f0f\u5eab (DLL)\u4e0d\u4e00\u81f4\u3002\u82e5\u8981\u53d6\u5f97\u6709\u95dc\u6b64\u554f\u984c\u53ca\u5efa\u8b70\u89e3\u6c7a\u65b9\u6cd5\u7684\u5176\u4ed6\u8cc7\u8a0a\uff0c\u8acb\u53c3\u95b1 java.sun.com \u7db2\u7ad9\u4e0a\u7684 Java(TM) 2 SDK, Standard Edition Release Notes +AWT.InconsistentDLLsWarning=\u4EE5\u6587\u5B57\u70BA\u57FA\u790E\u7684\u4F5C\u696D\u53EF\u80FD\u7121\u6CD5\u6B63\u78BA\u904B\u4F5C\uFF0C\u56E0\u70BA\u60A8\u7CFB\u7D71\u4E0A\u6709\u4E00\u7D44\u52D5\u614B\u9023\u7D50\u7A0B\u5F0F\u5EAB (DLL) \u4E0D\u4E00\u81F4\u3002\u82E5\u8981\u53D6\u5F97\u6709\u95DC\u6B64\u554F\u984C\u53CA\u5EFA\u8B70\u89E3\u6C7A\u65B9\u6CD5\u7684\u5176\u4ED6\u8CC7\u8A0A\uFF0C\u8ACB\u53C3\u95B1 java.sun.com \u7DB2\u7AD9\u4E0A\u7684 Java(TM) 2 SDK, Standard Edition Release Notes diff --git a/jdk/src/share/classes/sun/jkernel/BackgroundDownloader.java b/jdk/src/share/classes/sun/jkernel/BackgroundDownloader.java deleted file mode 100644 index eb8d16da88d..00000000000 --- a/jdk/src/share/classes/sun/jkernel/BackgroundDownloader.java +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ -package sun.jkernel; - -import java.io.*; - -/** - * Invoked by DownloadManager to begin (in a new JRE) the process of downloading - * all remaining JRE components in the background. A mutex is used to ensure - * that only one BackgroundDownloader can be active at a time. - * - */ -public class BackgroundDownloader { - public static final String BACKGROUND_DOWNLOAD_PROPERTY = "kernel.background.download"; - // relative to the bundle directory - public static final String PID_PATH = "tmp" + File.separator + "background.pid"; - - // Time to wait before beginning to download components. Gives the JRE - // which spawned this one a chance to get its downloads going. - private static final int WAIT_TIME = 10000; - - private static Mutex backgroundMutex; - - static synchronized Mutex getBackgroundMutex() { - if (backgroundMutex == null) - backgroundMutex = Mutex.create(DownloadManager.MUTEX_PREFIX + "background"); - return backgroundMutex; - } - - private static void doBackgroundDownloads() { - if (DownloadManager.isJREComplete()) - return; - if (getBackgroundMutex().acquire(0)) { // give up and exit immediately if we can't acquire mutex - try { - writePid(); - Thread.sleep(WAIT_TIME); - DownloadManager.doBackgroundDownloads(false); - DownloadManager.performCompletionIfNeeded(); - } - catch (InterruptedException e) { - } - finally { - getBackgroundMutex().release(); - } - } - else { - System.err.println("Unable to acquire background download mutex."); - System.exit(1); - } - } - - - /** - * Writes the current process ID to a file, so that the uninstaller can - * find and kill this process if needed. - */ - private static void writePid() { - try { - File pid = new File(DownloadManager.getBundlePath(), PID_PATH); - pid.getParentFile().mkdirs(); - PrintStream out = new PrintStream(new FileOutputStream(pid)); - pid.deleteOnExit(); - out.println(DownloadManager.getCurrentProcessId()); - out.close(); - } - catch (IOException e) { - e.printStackTrace(); - System.exit(1); - } - } - - - /** - * Reads from an InputStream until exhausted, writing all data to the - * specified OutputStream. - */ - private static void send(InputStream in, OutputStream out) - throws IOException { - int c; - byte[] buffer = new byte[2048]; - while ((c = in.read(buffer)) > 0) - out.write(buffer, 0, c); - } - - /* - * Returns the value of the BACKGROUND_DOWNLOAD_PROPERTY. - * Checks if system property has been set first - * then checks if registry key to disable background download - * has been set. - */ - public static boolean getBackgroundDownloadProperty(){ - /* - * Check registry key value - */ - boolean bgDownloadEnabled = getBackgroundDownloadKey(); - - /* - * Check system property - it should override the registry - * key value. - */ - if (System.getProperty(BACKGROUND_DOWNLOAD_PROPERTY) != null){ - bgDownloadEnabled = Boolean.valueOf( - System.getProperty(BACKGROUND_DOWNLOAD_PROPERTY)); - } - return bgDownloadEnabled; - - } - - // This method is to retrieve the value of registry key - // that disables background download. - static native boolean getBackgroundDownloadKey(); - - - static void startBackgroundDownloads() { - if (!getBackgroundDownloadProperty()){ - // If getBackgroundDownloadProperty() returns false - // we're doing the downloads from this VM; we don't want to - // spawn another one - return; - } - - // if System.err isn't initialized yet, it means the charsets aren't - // available yet and we're going to run into trouble down below. Wait - // until it's ready. - while (System.err == null) { - try { - Thread.sleep(1000); - } - catch (InterruptedException e) { - return; - } - } - - try { - String args = "-D" + BACKGROUND_DOWNLOAD_PROPERTY + "=false -Xmx256m"; - String backgroundDownloadURL = DownloadManager.getBaseDownloadURL(); - - // only set KERNEL_DOWNLOAD_URL_PROPERTY if we override - // the default download url - if (backgroundDownloadURL != null && - backgroundDownloadURL.equals( - DownloadManager.DEFAULT_DOWNLOAD_URL) == false) { - args += " -D" + DownloadManager.KERNEL_DOWNLOAD_URL_PROPERTY + - "=" + backgroundDownloadURL; - }; - args += " sun.jkernel.BackgroundDownloader"; - final Process jvm = Runtime.getRuntime().exec("\"" + new File(System.getProperty("java.home"), "bin" + - File.separator + "java.exe") + "\" " + args); - Thread outputReader = new Thread("kernelOutputReader") { - public void run() { - try { - InputStream in = jvm.getInputStream(); - send(in, new PrintStream(new ByteArrayOutputStream())); - } - catch (IOException e) { - e.printStackTrace(); - } - } - }; - outputReader.setDaemon(true); - outputReader.start(); - - Thread errorReader = new Thread("kernelErrorReader") { - public void run() { - try { - InputStream in = jvm.getErrorStream(); - send(in, new PrintStream(new ByteArrayOutputStream())); - } - catch (IOException e) { - e.printStackTrace(); - } - } - }; - errorReader.setDaemon(true); - errorReader.start(); - } - catch (Exception e) { - e.printStackTrace(); - // TODO: error handling - } - } - - - public static void main(String[] arg) { - doBackgroundDownloads(); - } -} diff --git a/jdk/src/share/classes/sun/jkernel/Bundle.java b/jdk/src/share/classes/sun/jkernel/Bundle.java deleted file mode 100644 index b8a587251dc..00000000000 --- a/jdk/src/share/classes/sun/jkernel/Bundle.java +++ /dev/null @@ -1,922 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ -package sun.jkernel; - -import java.io.*; -import java.net.HttpRetryException; -import java.util.*; -import java.util.concurrent.*; -import java.util.jar.*; -import java.util.zip.GZIPInputStream; - -/** - * Represents a bundle which may or may not currently be installed. - * - *@author Ethan Nicholas - */ -public class Bundle { - static { - if (!DownloadManager.jkernelLibLoaded) { - // This code can be invoked directly by the deploy build. - System.loadLibrary("jkernel"); - } - } - /** - * Compress file sourcePath with "extra" algorithm (e.g. 7-Zip LZMA) - * if available, put the uncompressed data into file destPath and - * return true. If not available return false and do nothing with destPath. - * - * @param srcPath path to existing uncompressed file - * @param destPath path for the compressed file to be created - * @returns true if extra algorithm used, false if not - * @throws IOException if the extra compression code should be available - * but cannot be located or linked to, the destination file already - * exists or cannot be opened for writing, or the compression fails - */ - public static native boolean extraCompress(String srcPath, - String destPath) throws IOException; - - /** - * Decompress file sourcePath with "extra" algorithm (e.g. 7-Zip LZMA) - * if available, put the uncompressed data into file destPath and - * return true. If not available return false and do nothing with - * destPath. - * @param srcPath path to existing compressed file - * @param destPath path to uncompressed file to be created - * @returns true if extra algorithm used, false if not - * @throws IOException if the extra uncompression code should be available - * but cannot be located or linked to, the destination file already - * exists or cannot be opened for writing, or the uncompression fails - */ - public static native boolean extraUncompress(String srcPath, - String destPath) throws IOException; - - private static final String BUNDLE_JAR_ENTRY_NAME = "classes.jar"; - - /** The bundle is not present. */ - protected static final int NOT_DOWNLOADED = 0; - - /** - * The bundle is in the download queue but has not finished downloading. - */ - protected static final int QUEUED = 1; - - /** The bundle has finished downloading but is not installed. */ - protected static final int DOWNLOADED = 2; - - /** The bundle is fully installed and functional. */ - protected static final int INSTALLED = 3; - - /** Thread pool used to manage dependency downloads. */ - private static ExecutorService threadPool; - - /** Size of thread pool. */ - static final int THREADS; - - static { - String downloads = System.getProperty( - DownloadManager.KERNEL_SIMULTANEOUS_DOWNLOADS_PROPERTY); - if (downloads != null) - THREADS = Integer.parseInt(downloads.trim()); - else - THREADS = 1; - } - - /** Mutex used to safely access receipts file. */ - private static Mutex receiptsMutex; - - /** Maps bundle names to known bundle instances. */ - private static Map bundles = - new HashMap(); - - /** Contains the names of currently-installed bundles. */ - static Set receipts = new HashSet(); - - private static int bytesDownloaded; - - /** Path where bundle receipts are written. */ - private static File receiptPath = new File(DownloadManager.getBundlePath(), - "receipts"); - - /** The size of the receipts file the last time we saw it. */ - private static int receiptsSize; - - /** The bundle name, e.g. "java_awt". */ - private String name; - - /** The path to which we are saving the downloaded bundle file. */ - private File localPath; - - /** - * The path of the extracted JAR file containing the bundle's classes. - */ - private File jarPath; - - // for vista IE7 protected mode - private File lowJarPath; - private File lowJavaPath = null; - - /** The current state (DOWNLOADED, INSTALLED, etc.). */ - protected int state; - - /** - * True if we should delete the downloaded bundle after installing it. - */ - protected boolean deleteOnInstall = true; - - private static Mutex getReceiptsMutex() { - if (receiptsMutex == null) - receiptsMutex = Mutex.create(DownloadManager.MUTEX_PREFIX + - "receipts"); - return receiptsMutex; - } - - - /** - * Reads the receipts file in order to seed the list of currently - * installed bundles. - */ - static synchronized void loadReceipts() { - getReceiptsMutex().acquire(); - try { - if (receiptPath.exists()) { - int size = (int) receiptPath.length(); - if (size != receiptsSize) { // ensure that it has actually - // been modified - DataInputStream in = null; - try { - receipts.clear(); - for (String bundleName : DownloadManager.getBundleNames()) { - if ("true".equals(DownloadManager.getBundleProperty(bundleName, - DownloadManager.INSTALL_PROPERTY))) - receipts.add(bundleName); - } - if (receiptPath.exists()) { - in = new DataInputStream(new BufferedInputStream( - new FileInputStream(receiptPath))); - String line; - while ((line = in.readLine()) != null) { - receipts.add(line.trim()); - } - } - receiptsSize = size; - } - catch (IOException e) { - DownloadManager.log(e); - // safe to continue, as the worst that happens is - // we re-download existing bundles - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException ioe) { - DownloadManager.log(ioe); - } - } - } - } - } - } - finally { - getReceiptsMutex().release(); - } - } - - - /** Returns the bundle corresponding to the specified name. */ - public static synchronized Bundle getBundle(String bundleId) - throws IOException { - Bundle result =(Bundle) bundles.get(bundleId); - if (result == null && (bundleId.equals("merged") || - Arrays.asList(DownloadManager.getBundleNames()).contains(bundleId))) { - result = new Bundle(); - result.name = bundleId; - - if (DownloadManager.isWindowsVista()) { - result.localPath = - new File(DownloadManager.getLocalLowTempBundlePath(), - bundleId + ".zip"); - result.lowJavaPath = new File( - DownloadManager.getLocalLowKernelJava() + bundleId); - } else { - result.localPath = new File(DownloadManager.getBundlePath(), - bundleId + ".zip"); - } - - String jarPath = DownloadManager.getBundleProperty(bundleId, - DownloadManager.JAR_PATH_PROPERTY); - if (jarPath != null) { - if (DownloadManager.isWindowsVista()) { - result.lowJarPath = new File( - DownloadManager.getLocalLowKernelJava() + bundleId, - jarPath); - } - result.jarPath = new File(DownloadManager.JAVA_HOME, - jarPath); - - } else { - - if (DownloadManager.isWindowsVista()) { - result.lowJarPath = new File( - DownloadManager.getLocalLowKernelJava() + bundleId + - "\\lib\\bundles", - bundleId + ".jar"); - } - - result.jarPath = new File(DownloadManager.getBundlePath(), - bundleId + ".jar"); - - } - - bundles.put(bundleId, result); - } - return result; - } - - - /** - * Returns the name of this bundle. The name is typically defined by - * the bundles.xml file. - */ - public String getName() { - return name; - } - - - /** - * Sets the name of this bundle. - */ - public void setName(String name) { - this.name = name; - } - - - /** - * Returns the path to the bundle file on the local filesystem. The file - * will only exist if the bundle has already been downloaded; otherwise - * it will be created when download() is called. - */ - public File getLocalPath() { - return localPath; - } - - - /** - * Sets the location of the bundle file on the local filesystem. If the - * file already exists, the bundle will be considered downloaded; - * otherwise the file will be created when download() is called. - */ - public void setLocalPath(File localPath) { - this.localPath = localPath; - } - - - /** - * Returns the path to the extracted JAR file containing this bundle's - * classes. This file should only exist after the bundle has been - * installed. - */ - public File getJarPath() { - return jarPath; - } - - - /** - * Sets the path to the extracted JAR file containing this bundle's - * classes. This file will be created as part of installing the bundle. - */ - public void setJarPath(File jarPath) { - this.jarPath = jarPath; - } - - - /** - * Returns the size of the bundle download in bytes. - */ - public int getSize() { - return Integer.valueOf(DownloadManager.getBundleProperty(getName(), - DownloadManager.SIZE_PROPERTY)); - } - - - /** - * Returns true if the bundle file (getLocalPath()) should be deleted - * when the bundle is successfully installed. Defaults to true. - */ - public boolean getDeleteOnInstall() { - return deleteOnInstall; - } - - - /** - * Sets whether the bundle file (getLocalPath()) should be deleted - * when the bundle is successfully installed. Defaults to true. - */ - public void setDeleteOnInstall(boolean deleteOnInstall) { - this.deleteOnInstall = deleteOnInstall; - } - - - /** Sets the current state of this bundle to match reality. */ - protected void updateState() { - synchronized(Bundle.class) { - loadReceipts(); - if (receipts.contains(name) || - "true".equals(DownloadManager.getBundleProperty(name, - DownloadManager.INSTALL_PROPERTY))) - state = Bundle.INSTALLED; - else if (localPath.exists()) - state = Bundle.DOWNLOADED; - } - } - - - private String getURL(boolean showUI) throws IOException { - Properties urls = DownloadManager.getBundleURLs(showUI); - String result = urls.getProperty(name + ".zip"); - if (result == null) { - result = urls.getProperty(name); - if (result == null) { - DownloadManager.log("Unable to determine bundle URL for " + this); - DownloadManager.log("Bundle URLs: " + urls); - DownloadManager.sendErrorPing(DownloadManager.ERROR_NO_SUCH_BUNDLE); - - throw new NullPointerException("Unable to determine URL " + - "for bundle: " + this); - } - } - return result; - } - - - /** - * Downloads the bundle. This method blocks until the download is - * complete. - * - *@param showProgress true to display a progress dialog - */ - private void download(boolean showProgress) { - if (DownloadManager.isJREComplete()) - return; - Mutex mutex = Mutex.create(DownloadManager.MUTEX_PREFIX + name + - ".download"); - mutex.acquire(); - try { - long start = System.currentTimeMillis(); - - boolean retry; - - do { - retry = false; - updateState(); - if (state == DOWNLOADED || state == INSTALLED) { - return; - } - File tmp = null; - try { - tmp = new File(localPath + ".tmp"); - - // tmp.deleteOnExit(); - - if (DownloadManager.getBaseDownloadURL().equals( - DownloadManager.RESOURCE_URL)) { - // RESOURCE_URL is used during build process, to - // avoid actual network traffic. This is called in - // the SplitJRE DownloadTest to determine which - // classes are needed to support downloads, but we - // bypass the actual HTTP download to simplify the - // build process (it's all native code, so from - // DownloadTest's standpoint it doesn't matter if we - // really call it or not). - String path = "/" + name + ".zip"; - InputStream in = - getClass().getResourceAsStream(path); - if (in == null) - throw new IOException("could not locate " + - "resource: " + path); - FileOutputStream out = new FileOutputStream(tmp); - DownloadManager.send(in, out); - in.close(); - out.close(); - } - else { - try { - String bundleURL = getURL(showProgress); - DownloadManager.log("Downloading from: " + - bundleURL); - DownloadManager.downloadFromURL(bundleURL, tmp, - name.replace('_', '.'), showProgress); - } - catch (HttpRetryException e) { - // Akamai returned a 403, get new URL - DownloadManager.flushBundleURLs(); - String bundleURL = getURL(showProgress); - DownloadManager.log("Retrying at new " + - "URL: " + bundleURL); - DownloadManager.downloadFromURL(bundleURL, tmp, - name.replace('_', '.'), - showProgress); - // we intentionally don't do a 403 retry - // again, to avoid infinite retries - } - } - if (!tmp.exists() || tmp.length() == 0) { - if (showProgress) { - // since showProgress = true, native code should - // have offered to retry. Since we ended up here, - // we conclude that download failed & user opted to - // cancel. Set complete to true to stop bugging - // him in the future (if one bundle fails, the - // rest are virtually certain to). - DownloadManager.complete = true; - } - DownloadManager.fatalError(DownloadManager.ERROR_UNSPECIFIED); - } - - /** - * Bundle security - * - * Check for corruption/spoofing - */ - - - /* Create a bundle check from the tmp file */ - BundleCheck gottenCheck = BundleCheck.getInstance(tmp); - - /* Get the check expected for the Bundle */ - BundleCheck expectedCheck = BundleCheck.getInstance(name); - - // Do they match? - - if (expectedCheck.equals(gottenCheck)) { - - // Security check OK, uncompress the bundle file - // into the local path - - long uncompressedLength = tmp.length(); - localPath.delete(); - - File uncompressedPath = new File(tmp.getPath() + - ".jar0"); - if (! extraUncompress(tmp.getPath(), - uncompressedPath.getPath())) { - // Extra uncompression not available, fall - // back to alternative if it is enabled. - if (DownloadManager.debug) { - DownloadManager.log("Uncompressing with GZIP"); - } - GZIPInputStream in = new GZIPInputStream( new - BufferedInputStream(new FileInputStream(tmp), - DownloadManager.BUFFER_SIZE)); - BufferedOutputStream out = new BufferedOutputStream( - new FileOutputStream(uncompressedPath), - DownloadManager.BUFFER_SIZE); - DownloadManager.send(in,out); - in.close(); - out.close(); - if (! uncompressedPath.renameTo(localPath)) { - throw new IOException("unable to rename " + - uncompressedPath + " to " + localPath); - } - } else { - if (DownloadManager.debug) { - DownloadManager.log("Uncompressing with LZMA"); - } - if (! uncompressedPath.renameTo(localPath)) { - throw new IOException("unable to rename " + - uncompressedPath + " to " + localPath); - } - } - state = DOWNLOADED; - bytesDownloaded += uncompressedLength; - long time = (System.currentTimeMillis() - - start); - DownloadManager.log("Downloaded " + name + - " in " + time + "ms. Downloaded " + - bytesDownloaded + " bytes this session."); - - // Normal completion - } else { - - // Security check not OK: remove the temp file - // and consult the user - - tmp.delete(); - - DownloadManager.log( - "DownloadManager: Security check failed for " + - "bundle " + name); - - // only show dialog if we are not in silent mode - if (showProgress) { - retry = DownloadManager.askUserToRetryDownloadOrQuit( - DownloadManager.ERROR_UNSPECIFIED); - } - - if (!retry) { - // User wants to give up - throw new RuntimeException( - "Failed bundle security check and user " + - "canceled"); - } - } - } - catch (IOException e) { - // Look for "out of space" using File.getUsableSpace() - // here when downloadFromURL starts throwing IOException - // (or preferably a distinct exception for this case). - DownloadManager.log(e); - } - } while (retry); - } finally { - mutex.release(); - } - } - - - /** - * Calls {@link #queueDownload()} on all of this bundle's dependencies. - */ - void queueDependencies(boolean showProgress) { - try { - String dependencies = - DownloadManager.getBundleProperty(name, - DownloadManager.DEPENDENCIES_PROPERTY); - if (dependencies != null) { - StringTokenizer st = new StringTokenizer(dependencies, - " ,"); - while (st.hasMoreTokens()) { - Bundle b = getBundle(st.nextToken()); - if (b != null && !b.isInstalled()) { - if (DownloadManager.debug) { - DownloadManager.log("Queueing " + b.name + - " as a dependency of " + name + "..."); - } - b.install(showProgress, true, false); - } - } - } - } catch (IOException e) { - // shouldn't happen - DownloadManager.log(e); - } - } - - - static synchronized ExecutorService getThreadPool() { - if (threadPool == null) { - threadPool = Executors.newFixedThreadPool(THREADS, - new ThreadFactory () { - public Thread newThread(Runnable r) { - Thread result = new Thread(r); - result.setDaemon(true); - return result; - } - } - ); - } - return threadPool; - } - - - private void unpackBundle() throws IOException { - File useJarPath = null; - if (DownloadManager.isWindowsVista()) { - useJarPath = lowJarPath; - File jarDir = useJarPath.getParentFile(); - if (jarDir != null) { - jarDir.mkdirs(); - } - } else { - useJarPath = jarPath; - } - - DownloadManager.log("Unpacking " + this + " to " + useJarPath); - - InputStream rawStream = new FileInputStream(localPath); - JarInputStream in = new JarInputStream(rawStream) { - public void close() throws IOException { - // prevent any sub-processes here from actually closing the - // input stream; we'll use rawsStream.close() when we're - // done with it - } - }; - - try { - File jarTmp = null; - JarEntry entry; - while ((entry = in.getNextJarEntry()) != null) { - String entryName = entry.getName(); - if (entryName.equals("classes.pack")) { - File packTmp = new File(useJarPath + ".pack"); - packTmp.getParentFile().mkdirs(); - DownloadManager.log("Writing temporary .pack file " + packTmp); - OutputStream tmpOut = new FileOutputStream(packTmp); - try { - DownloadManager.send(in, tmpOut); - } finally { - tmpOut.close(); - } - // we unpack to a temporary file and then, towards the end - // of this method, use a (hopefully atomic) rename to put it - // into its final location; this should avoid the problem of - // partially-completed downloads. Doing the rename last - // allows us to check for the presence of the JAR file to - // see whether the bundle has in fact been downloaded. - jarTmp = new File(useJarPath + ".tmp"); - DownloadManager.log("Writing temporary .jar file " + jarTmp); - unpack(packTmp, jarTmp); - packTmp.delete(); - } else if (!entryName.startsWith("META-INF")) { - File dest; - if (DownloadManager.isWindowsVista()) { - dest = new File(lowJavaPath, - entryName.replace('/', File.separatorChar)); - } else { - dest = new File(DownloadManager.JAVA_HOME, - entryName.replace('/', File.separatorChar)); - } - if (entryName.equals(BUNDLE_JAR_ENTRY_NAME)) - dest = useJarPath; - File destTmp = new File(dest + ".tmp"); - boolean exists = dest.exists(); - if (!exists) { - DownloadManager.log(dest + ".mkdirs()"); - dest.getParentFile().mkdirs(); - } - try { - DownloadManager.log("Using temporary file " + destTmp); - FileOutputStream out = - new FileOutputStream(destTmp); - try { - byte[] buffer = new byte[2048]; - int c; - while ((c = in.read(buffer)) > 0) - out.write(buffer, 0, c); - } finally { - out.close(); - } - if (exists) - dest.delete(); - DownloadManager.log("Renaming from " + destTmp + " to " + dest); - if (!destTmp.renameTo(dest)) { - throw new IOException("unable to rename " + - destTmp + " to " + dest); - } - - } catch (IOException e) { - if (!exists) - throw e; - // otherwise the file already existed and the fact - // that we failed to re-write it probably just - // means that it was in use - } - } - } - - // rename the temporary jar into its final location - if (jarTmp != null) { - if (useJarPath.exists()) - jarTmp.delete(); - else if (!jarTmp.renameTo(useJarPath)) { - throw new IOException("unable to rename " + jarTmp + - " to " + useJarPath); - } - } - if (DownloadManager.isWindowsVista()) { - // move bundle to real location - DownloadManager.log("Using broker to move " + name); - if (!DownloadManager.moveDirWithBroker( - DownloadManager.getKernelJREDir() + name)) { - throw new IOException("unable to create " + name); - } - DownloadManager.log("Broker finished " + name); - } - DownloadManager.log("Finished unpacking " + this); - } finally { - rawStream.close(); - } - if (deleteOnInstall) { - localPath.delete(); - } - - } - - - public static void unpack(File pack, File jar) throws IOException { - Process p = Runtime.getRuntime().exec(DownloadManager.JAVA_HOME + File.separator + - "bin" + File.separator + "unpack200 -Hoff \"" + pack + "\" \"" + jar + "\""); - try { - p.waitFor(); - } - catch (InterruptedException e) { - } - } - - - /** - * Unpacks and installs the bundle. The bundle's classes are not - * immediately added to the boot class path; this happens when the VM - * attempts to load a class and calls getBootClassPathEntryForClass(). - */ - public void install() throws IOException { - install(true, false, true); - } - - - /** - * Unpacks and installs the bundle, optionally hiding the progress - * indicator. The bundle's classes are not immediately added to the - * boot class path; this happens when the VM attempts to load a class - * and calls getBootClassPathEntryForClass(). - * - *@param showProgress true to display a progress dialog - *@param downloadOnly true to download but not install - *@param block true to wait until the operation is complete before returning - */ - public synchronized void install(final boolean showProgress, - final boolean downloadOnly, boolean block) throws IOException { - if (DownloadManager.isJREComplete()) - return; - if (state == NOT_DOWNLOADED || state == QUEUED) { - // we allow an already-queued bundle to be placed into the queue - // again, to handle the case where the bundle is queued with - // downloadOnly true and then we try to queue it again with - // downloadOnly false -- the second queue entry will actually - // install it. - if (state != QUEUED) { - DownloadManager.addToTotalDownloadSize(getSize()); - state = QUEUED; - } - if (getThreadPool().isShutdown()) { - if (state == NOT_DOWNLOADED || state == QUEUED) - doInstall(showProgress, downloadOnly); - } - else { - Future task = getThreadPool().submit(new Runnable() { - public void run() { - try { - if (state == NOT_DOWNLOADED || state == QUEUED || - (!downloadOnly && state == DOWNLOADED)) { - doInstall(showProgress, downloadOnly); - } - } - catch (IOException e) { - // ignore - } - } - }); - queueDependencies(showProgress); - if (block) { - try { - task.get(); - } - catch (Exception e) { - throw new Error(e); - } - } - } - } - else if (state == DOWNLOADED && !downloadOnly) - doInstall(showProgress, false); - } - - - private void doInstall(boolean showProgress, boolean downloadOnly) - throws IOException { - Mutex mutex = Mutex.create(DownloadManager.MUTEX_PREFIX + name + - ".install"); - DownloadManager.bundleInstallStart(); - try { - mutex.acquire(); - updateState(); - if (state == NOT_DOWNLOADED || state == QUEUED) { - download(showProgress); - } - - if (state == DOWNLOADED && downloadOnly) { - return; - } - - if (state == INSTALLED) { - return; - } - if (state != DOWNLOADED) { - DownloadManager.fatalError(DownloadManager.ERROR_UNSPECIFIED); - } - - DownloadManager.log("Calling unpackBundle for " + this); - unpackBundle(); - DownloadManager.log("Writing receipt for " + this); - writeReceipt(); - updateState(); - DownloadManager.log("Finished installing " + this + ", state=" + state); - } finally { - if (lowJavaPath != null) { - lowJavaPath.delete(); - } - mutex.release(); - DownloadManager.bundleInstallComplete(); - } - } - - - synchronized void setState(int state) { - this.state = state; - } - - - /** Returns true if this bundle has been installed. */ - public boolean isInstalled() { - synchronized (Bundle.class) { - updateState(); - return state == INSTALLED; - } - } - - - /** - * Adds an entry to the receipts file indicating that this bundle has - * been successfully downloaded. - */ - private void writeReceipt() { - getReceiptsMutex().acquire(); - File useReceiptPath = null; - try { - - try { - - receipts.add(name); - - if (DownloadManager.isWindowsVista()) { - // write out receipts to locallow - useReceiptPath = new File( - DownloadManager.getLocalLowTempBundlePath(), - "receipts"); - - if (receiptPath.exists()) { - // copy original file to locallow location - DownloadManager.copyReceiptFile(receiptPath, - useReceiptPath); - } - - // update receipt in locallow path - // only append if original receipt path exists - FileOutputStream out = new FileOutputStream(useReceiptPath, - receiptPath.exists()); - out.write((name + System.getProperty("line.separator")).getBytes("utf-8")); - out.close(); - - // use broker to move back to real path - if (!DownloadManager.moveFileWithBroker( - DownloadManager.getKernelJREDir() - + "-bundles" + File.separator + "receipts")) { - throw new IOException("failed to write receipts"); - } - } else { - useReceiptPath = receiptPath; - FileOutputStream out = new FileOutputStream(useReceiptPath, - true); - out.write((name + System.getProperty("line.separator")).getBytes("utf-8")); - out.close(); - } - - - } catch (IOException e) { - DownloadManager.log(e); - // safe to continue, as the worst that happens is we - // re-download existing bundles - } - } - finally { - getReceiptsMutex().release(); - } - } - - - public String toString() { - return "Bundle[" + name + "]"; - } -} diff --git a/jdk/src/share/classes/sun/jkernel/BundleCheck.java b/jdk/src/share/classes/sun/jkernel/BundleCheck.java deleted file mode 100644 index 4e99b30bac3..00000000000 --- a/jdk/src/share/classes/sun/jkernel/BundleCheck.java +++ /dev/null @@ -1,330 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -/* - * - * The Java Kernel Bundle security check. - * - * This class is responsible for detail of creating, storing, dispensing, and - * updating bundle security checks and security checks for all the files - * extracted from a bundle. Security checks are cryptographic - * hashcodes that make it impractical to counterfeit a file. The security - * check algorithm is defined by peer class StandaloneMessageDigest. The - * cryptographic - * hashcodes are held in instances of this class as byte arrays and externally - * as hexidecimal string values for Bundle name Property keys. The properties - * are a resource in the Java Kernel core JRE rt.jar and accessed after a - * real or simulated bundle download by peer classes DownloadManager and - * Bundle. Build-time deployment class SplitJRE uses this class to create file - * security checks directly and via a special execution of DownloadManager. - * The main method of this class can be used to create a - * new set of security codes and updated properties for a given JRE path - * and set of bundle names (CWD assume to contain bundle files as .zip). - * - * This is a Sun internal class defined by the Sun implementation and - * intended for JRE/JDK release deployment. - * - * @see sun.jkernel.DownloadManager - * @see sun.jkernel.Bundle - * @see sun.jkernel.StandaloneSHA - * @see sun.jkernel.ByteArrayToFromHexDigits - * See also deploy/src/kernel/share/classes/sun/kernel/SplitJRE.java - */ - -package sun.jkernel; - -import java.io.File; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Properties; - - -public class BundleCheck { - - /* File buffer size */ - - private static final int DIGEST_STREAM_BUFFER_SIZE = 2048; - - /* The bundle filename suffix */ - - private static final String BUNDLE_SUFFIX = ".zip"; - - /* Mutable static state. */ - - /* Properties (Bundle name/check hex String pairs) for a set of Bundles. - Guarded by this class' object. */ - - private static volatile Properties properties; - - /* Mutable instance state. */ - - /** - * The bytes of the check value. Guarded by the bundle Mutex (in - * sun.jkernel.DownloadManager) or the fact that sun.kernel.SplitJRE - * and/or DownloadManager with "-download all" runs a single thread. - */ - - private byte[] checkBytes; - - /* Prevent instantiation by default constructor */ - - private BundleCheck(){} - - /** - * Store the bundle check values as properties to the path specified. - * Only invoked by SplitJRE. - */ - - public static void storeProperties(String fullPath) { - - try { - File f = new File(fullPath); - f.getParentFile().mkdirs(); - OutputStream out = new FileOutputStream(f); - properties.store(out, null); - out.close(); - } catch (Exception e) { - throw new RuntimeException( - "BundleCheck: storing properties threw: " + e); - } - } - - /** - * Fetch the check value properties as a DownloadManager resource. - */ - - private static void loadProperties() { - properties = new Properties(); - try { - InputStream in = new BufferedInputStream( - DownloadManager.class.getResourceAsStream( - DownloadManager.CHECK_VALUES_FILE)); - if (in == null) - throw new RuntimeException("BundleCheck: unable to locate " + - DownloadManager.CHECK_VALUES_FILE + " as resource"); - properties.load(in); - in.close(); - } catch (Exception e) { - throw new RuntimeException("BundleCheck: loadProperties threw " + - e); - } - } - - /* Get the check value Properties object */ - - private synchronized static Properties getProperties() { - if (properties == null) { - // If this fails it means addProperty has been used inappropriately - loadProperties(); - } - return properties; - } - - /* Reset the properties with an empty Properties object */ - - public static void resetProperties() { - properties = null; - } - - /* The BundleCheck expressed as a String */ - - public String toString() { - return ByteArrayToFromHexDigits.bytesToHexString(checkBytes); - } - - /* Add the given BundleCheck as a property to bundleCheckvalueProperties */ - - private void addProperty(String name) { - // When first called by SplitJRE just start with empty object - // rather than allowing a load to happen, as it does at install time. - if (properties == null) { - properties = new Properties(); - } - getProperties().put(name, toString()); - } - - /* private ctor for creating/initializing a BundleCheck */ - - private BundleCheck(byte[] checkBytes) { - this.checkBytes = checkBytes; - } - - /* private ctor for creating a BundleCheck with a given name and known - Property value. */ - - private BundleCheck(String name) { - String hexString = getProperties().getProperty(name); - if (hexString == null) { - throw new RuntimeException( - "BundleCheck: no check property for bundle: " + name); - } - this.checkBytes = ByteArrayToFromHexDigits.hexStringToBytes(hexString); - } - - /* Make a BundleCheck from the contents of the given file or a Bundle - name. Save the new object's value as a property if saveProperty is - true. Behavior is only defined for name or file being null, but not - both, and for saveProperty to be true only when both name and file - are not null. - Any IO or other exception implies an unexpected and fatal internal - error and results in a RuntimeException. */ - - private static BundleCheck getInstance(String name, - File file, boolean saveProperty) { - if (file == null ) { - return new BundleCheck(name); - - } else { - StandaloneMessageDigest checkDigest = null; - try { - FileInputStream checkFileStream = new FileInputStream(file); - checkDigest = StandaloneMessageDigest.getInstance("SHA-1"); - - // Compute a check code across all of the file bytes. - // NOTE that every time a bundle is created, even from - // the "same bits", it may be different wrt to the security - // code because of slight variations build to build. For - // example, the JVM build normally contains an - // auto-incrementing build number, built archives might have - // timestamps, etc. - - int readCount; - byte[] messageStreamBuff = - new byte[DIGEST_STREAM_BUFFER_SIZE]; - do { - readCount = checkFileStream.read(messageStreamBuff); - if (readCount > 0) { - checkDigest.update(messageStreamBuff,0,readCount); - } - } while (readCount != -1); - checkFileStream.close(); - - } catch (Exception e) { - throw new RuntimeException( - "BundleCheck.addProperty() caught: " + e); - } - BundleCheck bc = new BundleCheck(checkDigest.digest()); - if (saveProperty) { - bc.addProperty(name); - } - return bc; - } - } - - /* Create a BundleCheck from the given file */ - - public static BundleCheck getInstance(File file) { - return getInstance(null, file, false); - } - - /* Create a BundleCheck from the given bundle name */ - - static BundleCheck getInstance(String name) { - return getInstance(name, null, false); - } - - /* Create a BundleCheck from the given bundle name and file and - use it to make and save a security check Property value. */ - - public static void addProperty(String name, File file) { - getInstance(name, file, true); - } - - /* Create a bundlecheck from the given bundle name and file and - add a Property value for it. */ - - static void add(String name, File file) { - getInstance(name, file, true).addProperty(name); - } - - /* Compare two BundkCheck instances for equal check values */ - - boolean equals(BundleCheck b) { - if ((checkBytes == null) || (b.checkBytes == null)) { - return false; - } - if (checkBytes.length != b.checkBytes.length) { - return false; - } - for (int i = 0; i < checkBytes.length; i++) { - if (checkBytes[i] != b.checkBytes[i]) { - if (DownloadManager.debug) { - System.out.println( - "BundleCheck.equals mismatch between this: " + - toString() + " and param: " + b.toString()); - } - return false; - } - } - return true; - } - - /* After SplitJRE is used to restructure the JRE into a "core JRE" and - a set of Java Kernel "bundles", if extra compression is available - the bundles are extracted and rearchived with zero compression by - deploy build make steps. The newly compressed bundle names are then - passed to this main with the path of the kernel core JRE to have new - bundle security check values computed and the corresponding properties - updated in rt.jar. If extra compression isn't available then this main is - never used and the default jar/zip bundle compression and security - codes created by SplitJRE are left in place and ready to use. */ - - public static void main(String[] args) { - if (args.length < 2) { - System.err.println("Usage: java BundleCheck " + - " ... "); - return; - } - - // Make a security check code for each bundle file - for (int arg = 1; arg < args.length; arg++) { - BundleCheck.addProperty(args[arg], - new File(args[arg] + BUNDLE_SUFFIX)); - } - - // Store the new check code properties below the current directory - BundleCheck.storeProperties(DownloadManager.CHECK_VALUES_DIR); - - // Now swap the new properties file into the core rt.jar - try { - int status = Runtime.getRuntime().exec( - "jar uf " + args[0] + "\\lib\\rt.jar " + - DownloadManager.CHECK_VALUES_DIR).waitFor(); - if (status != 0) { - System.err.println( - "BundleCheck: exec of jar uf gave nonzero status"); - return; - } - } catch (Exception e) { - System.err.println("BundleCheck: exec of jar uf threw: " + e); - return; - } - } // main -} diff --git a/jdk/src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java b/jdk/src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java deleted file mode 100644 index f1583345311..00000000000 --- a/jdk/src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package sun.jkernel; - -/** - * TODO: The JRE and deploy build code (SplitJRE) can be made a bit smarter - * then cryto hashcode byte arrays can be used directly, eliminating the need - * for this class altogether. So just leave this alone until it can be removed. - * TODO: Change "Digits" to "String" for uniformity and more intuitive names. - * A lightweight class to provide convert between hex digits and - * byte[]. - *

- * TODO: Try to get this built without the -source 1.3 -target -1.3 options, - * which prevent use of java.text.Format, assuming this wouldn't bloat the - * JK rt.jar. Also, there still might be equivalent code hiding in the JDK - * already, but preliminary searches havn't found it. - */ - -public final class ByteArrayToFromHexDigits { - - private static final char [] chars = new char[] - {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F'}; - - private static final boolean debug = false; - - /** - * Converts the byte[] b into a String of - * hex digits representing the integer values of all the bytes. - * - * @param b byte array to be converted - * @return String representing b in hexadecimal - * @throws IllegalArgumentException if b is null or zero length - */ - public static String bytesToHexString(byte[] b) { - if (debug ) { - System.out.print("I: "); - for(int i=0;i> 4) & 0xf]); - buff.insert(i*2+1,chars[b[i] & 0xf]); - } - if (debug ) { - System.out.println("O: " + buff.toString()); - } - return buff.toString(); - } - - // Convert one hex character to a 4 bit byte value - - private static byte hexCharToByte(char c) throws IllegalArgumentException { - if ((c < '0') || - ( ((c < 'A') && (c > 'F')) && ((c < 'a') && (c > 'f'))) ) { - - throw new IllegalArgumentException("not a hex digit"); - } - - if (c > '9') { - if (c > 'F') { - return (byte) ((c - 'a' + 10) & 0xf); - } else { - return (byte) ((c - 'A' + 10) & 0xf); - } - } else { - return (byte) ((c - '0') & 0xf); - } - - } - - /** - * Converts the String d assumed to contain a sequence - * of hexadecimal digit characters into a byte[]. - * - * @param d String to be converted - * @return byte array representing the hex string - * @throws IllegalArgumentException if d is odd length, - * contains a character outside the ranges of 0-9, a-f, and A-F, - * or is zero length or null - */ - - public static byte[] hexStringToBytes(String d) throws IllegalArgumentException { - if (d == null) { - throw new IllegalArgumentException( - "parameter cannot be null"); - } - - if (d.length() == 0) { - throw new IllegalArgumentException( - "parameter cannot be zero length"); - } - - if ((d.length() & 1) != 0) { - throw new IllegalArgumentException( - "odd length string"); - } - - byte[] b = new byte[d.length() / 2]; - - // TODO Might be code in the JK initial bundle to do this better (i.e. - // method that tests for a hex char?) - - for (int i=0;iFilterOutputStream, - * and accumulates a check value as bytes are written to - * it. The check value is available by method getCheckValue. - *

- * Operations on the public out field of this class should be - * avoided to prevent an invalid check code being generated. - * - * TODO: The javadoc HTML hasn't been generated and eyeballed for yet. - * TODO: There is a javadoc trick to cause the parent class javadoc to be - * automagically used: try to take advantage of this. - * TODO: Add javadoc links instead of API where it would be useful. - * TODO: Go visit the Docs style guide again and get the periods right and - * consistent for all sun.* classes. - * @author Pete Soper - * @see java.lang.FilterOutputStream - * @see getCheckValue - */ - -public class DigestOutputStream extends FilterOutputStream { - private static final String DEFAULT_ALGORITHM = "SHA-1"; - - private final boolean debug = false; - - private StandaloneMessageDigest smd = null; - - private void initDigest(String algorithm) throws NoSuchAlgorithmException { - smd = StandaloneMessageDigest.getInstance(algorithm); - } - - // The underlying stream. - - protected volatile OutputStream out; - - /** - * Creates a DigestOutputStream with stream s - * to be checked with using algorithm. - *

- * If algorithm is not supported then - * NoSuchAlgorithm is thrown. - *

- * See {linkplain sun.security.provider.StandaloneMessageDigest} for an - * implementation-specific list of supported algorithms. - * - * @throws NoSuchAlgorithm if algorithm is not supported - * @see sun.security.provider.StandaloneMessageDigest - */ - - /** - * Creates an output stream filter built on top of - * underlying output stream out for checking with - * algorithm algorithm. - *

- * If algorithm is not supported then - * NoSuchAlgorithm is thrown. - *

- * See {linkplain sun.security.provider.StandaloneMessageDigest} for an - * implementation-specific list of supported algorithms. - * - * @param out the underlying output stream to be assigned to - * the field this.out for later use, or - * null if this instance is to be - * created without an underlying stream. - * @param algorithm the check algorithm to use. - * @throws NoSuchAlgorithm if algorithm is not supported - * @see sun.security.provider.StandaloneMessageDigest - * @see DigestInputStream(InputStream, String) - */ - - public DigestOutputStream(OutputStream out, String algorithm) throws NoSuchAlgorithmException { - super(out); - initDigest(algorithm); - this.out = out; - } - - /** - * Creates an output stream filter built on top of - * underlying output stream out for the default checking - * algorithm. - *

- * This implemention provides "SHA-1" as the default checking algorithm. - * - * @param out the underlying output stream to be assigned to - * the field this.out for later use, or - * null if this instance is to be - * created without an underlying stream. - * @see DigestInputStream(InputStream) - */ - - public DigestOutputStream(OutputStream out) { - super(out); - try { - initDigest(DEFAULT_ALGORITHM); - } catch (NoSuchAlgorithmException e) { - // Impossible to get here, but stranger things have happened... - throw new RuntimeException("DigestOutputStream() unknown algorithm"); - } - // superstition from a test failure this.out = out; - } - - /** - * Writes a byte specified by v to this stream - * and updates the check information. - * - * - * @param v the byte to be written. - * @throws IOException if an I/O error occurs. - */ - public void write(int v) throws IOException { - super.write(v); - // TODO Could create this array once - byte[] b = new byte[] {(byte) (v & 0xff)}; - smd.update(b,0,1); - } - - /** - * Writes the bytes in array data - * to this stream and updates the check information. - * - * @param data the data. - * @throws IOException if an I/O error occurs. - * @throws NullPointerException if data is null - */ - public void write(byte[] data) throws IOException { - write(data,0,data.length); - } - - /** - * Writes a sub array as a sequence of bytes to this output stream and - * updates the check information. - * @param data the data to be written - * @param ofs the start offset in the data - * @param len the number of bytes that are written - * @throws IOException If an I/O error has occurred. - * @throws NullPointerException if data is null - * @throws IndexOutOfBoundsException If ofs is negative, - * len is negative, or len is greater than - * b.length - ofs - */ - public void write(byte[] data, int ofs, int len) throws IOException { - if (debug) { - System.out.print("DigestOutputStream.write: "); - for (int i=ofs; i<(len - ofs); i++) { - System.out.format("%02X",data[i]); - } - System.out.println(); - } - if (data == null) { - throw new NullPointerException("null array in DigestOutputStream.write"); - } else if (ofs < 0 || len < 0 || len > data.length - ofs) { - throw new IndexOutOfBoundsException(); - } - //super.write(data,ofs,len); - // WATCH OUT: FilterOutputStream does a byte at a time write(byte) - // TODO: Will this work all the time, or is there another caveat - // to publish - out.write(data,ofs,len); - if (debug) { - System.out.println("DigestOutputStream.write before"); - } - smd.update(data,ofs,len); - if (debug) { - System.out.println("DigestOutputStream.write after"); - } - } - - /** - * Closes this file output stream and releases any system resources - * associated with this stream and makes the check value for the stream - * available via getCheckValue. This file output stream may - * no longer be used for writing bytes. - * - * @throws IOException if an I/O error occurs. - * @see getCheckValue - */ - public void close() throws IOException { - super.close(); - } - - /** - * Return the check value computed for the stream and reset the state of - * check value generation. - * - * @return the check value bytes - */ - public byte[] getCheckValue() { - byte[] b = smd.digest(); - if (debug) { - System.out.print("DigestOutputStream.getCheckValue: "); - for (int i=0; i0 means the current thread is downloading or - // installing a bundle. - static ThreadLocal downloading = new ThreadLocal() { - protected Integer initialValue() { - return 0; - } - }; - - private static File[] additionalBootStrapPaths = { }; - - private static String[] bundleNames; - private static String[] criticalBundleNames; - - private static String downloadURL; - - private static boolean visitorIdDetermined; - private static String visitorId; - - /** - * File and path where the Check value properties are gotten from - */ - public static String CHECK_VALUES_FILE = "check_value.properties"; - static String CHECK_VALUES_DIR = "sun/jkernel/"; - static String CHECK_VALUES_PATH = CHECK_VALUES_DIR + CHECK_VALUES_FILE; - - /** - * The contents of the bundle.properties file, which contains various - * information about individual bundles. - */ - private static Map> bundleProperties; - - - /** - * The contents of the resource_map file, which maps resources - * to their respective bundles. - */ - private static Map resourceMap; - - - /** - * The contents of the file_map file, which maps files - * to their respective bundles. - */ - private static Map fileMap; - - private static boolean extDirDetermined; - private static boolean extDirIncluded; - - static { - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - if (debug) - println("DownloadManager startup"); - - // this mutex is global and will apply to all different - // version of java kernel installed on the local machine - MUTEX_PREFIX = "jkernel"; - boolean downloadEnabled = !"false".equals( - System.getProperty(KERNEL_DOWNLOAD_ENABLED_PROPERTY)); - complete = !getBundlePath().exists() || - !downloadEnabled; - - // only load jkernel.dll if we are not "complete". - // DownloadManager will be loaded during build time, before - // jkernel.dll is built. We only need to load jkernel.dll - // when DownloadManager needs to download something, which is - // not necessary during build time - if (!complete) { - loadJKernelLibrary(); - log("Log opened"); - - if (isWindowsVista()) { - getLocalLowTempBundlePath().mkdirs(); - } - - new Thread() { - public void run() { - startBackgroundDownloads(); - } - }.start(); - - try { - String dummyPath; - if (isWindowsVista()) { - dummyPath = USER_HOME + - "\\appdata\\locallow\\dummy.kernel"; - } else { - dummyPath = USER_HOME + "\\dummy.kernel"; - } - - File f = new File(dummyPath); - FileOutputStream out = new FileOutputStream(f, true); - out.close(); - f.deleteOnExit(); - - } catch (IOException e) { - log(e); - } - // end of warm up code - - new Thread("BundleDownloader") { - public void run() { - downloadRequestedBundles(); - } - }.start(); - } - return null; - } - }); - } - - - static synchronized void loadJKernelLibrary() { - if (!jkernelLibLoaded) { - try { - System.loadLibrary("jkernel"); - jkernelLibLoaded = true; - debug = getDebugProperty(); - } catch (Exception e) { - throw new Error(e); - } - } - } - - static String appendTransactionId(String url) { - StringBuilder result = new StringBuilder(url); - String visitorId = DownloadManager.getVisitorId(); - if (visitorId != null) { - if (url.indexOf("?") == -1) - result.append('?'); - else - result.append('&'); - result.append("transactionId="); - result.append(DownloadManager.getVisitorId()); - } - return result.toString(); - } - - - /** - * Returns the URL for the directory from which bundles should be - * downloaded. - */ - static synchronized String getBaseDownloadURL() { - if (downloadURL == null) { - log("Determining download URL..."); - loadJKernelLibrary(); - - /* - * First check if system property has been set - system - * property should take over registry key setting. - */ - downloadURL = System.getProperty( - DownloadManager.KERNEL_DOWNLOAD_URL_PROPERTY); - log("System property kernel.download.url = " + downloadURL); - - /* - * Now check if registry key has been set - */ - if (downloadURL == null){ - downloadURL = getUrlFromRegistry(); - log("getUrlFromRegistry = " + downloadURL); - } - - /* - * Use default download url - */ - if (downloadURL == null) - downloadURL = DEFAULT_DOWNLOAD_URL; - log("Final download URL: " + downloadURL); - } - return downloadURL; - } - - - /** - * Loads a file representing a node tree. The format is described in - * SplitJRE.writeTreeMap(). The node paths (such as - * core/java/lang/Object.class) are interpreted with the root node as the - * value and the remaining nodes as - * the key, so the mapping for this entry would be java/lang/Object.class = - * core. - */ - static Map readTreeMap(InputStream rawIn) - throws IOException { - // "token level" refers to the 0-31 byte that occurs prior to every - // token in the stream, and would be e.g. <0> core <1> java <2> lang - // <3> Object.class <3> String.class, which gives us two mappings: - // java/lang/Object.class = core, and java/lang/String.class = core. - // See the format description in SplitJRE.writeTreeMap for more details. - Map result = new HashMap(); - InputStream in = new BufferedInputStream(rawIn); - // holds the current token sequence, - // e.g. {"core", "java", "lang", "Object.class"} - List tokens = new ArrayList(); - StringBuilder currentToken = new StringBuilder(); - for (;;) { - int c = in.read(); - if (c == -1) // eof - break; - if (c < 32) { // new token level - if (tokens.size() > 0) { - // replace the null at the end of the list with the token - // we just finished reading - tokens.set(tokens.size() - 1, currentToken.toString()); - } - - currentToken.setLength(0); - - if (c > tokens.size()) { - // can't increase by more than one token level at a step - throw new InternalError("current token level is " + - (tokens.size() - 1) + " but encountered token " + - "level " + c); - } - else if (c == tokens.size()) { - // token level increased by 1; this means we are still - // adding tokens for the current mapping -- e.g. we have - // read "core", "java", "lang" and are just about to read - // "Object.class" - // add a placeholder for the new token - tokens.add(null); - } - else { - // we just stayed at the same level or backed up one or more - // token levels; this means that the current sequence is - // complete and needs to be added to the result map - StringBuilder key = new StringBuilder(); - // combine all tokens except the first into a single string - for (int i = 1; i < tokens.size(); i++) { - if (i > 1) - key.append('/'); - key.append(tokens.get(i)); - } - // map the combined string to the first token, e.g. - // java/lang/Object.class = core - result.put(key.toString(), tokens.get(0)); - // strip off tokens until we get back to the current token - // level - while (c < tokens.size()) - tokens.remove(c); - // placeholder for upcoming token - tokens.add(null); - } - } - else if (c < 254) // character - currentToken.append((char) c); - else if (c == 255) - currentToken.append(".class"); - else { // out-of-band value - throw new InternalError("internal error processing " + - "resource_map (can't-happen error)"); - } - } - if (tokens.size() > 0) // add token we just finished reading - tokens.set(tokens.size() - 1, currentToken.toString()); - StringBuilder key = new StringBuilder(); - // add the last entry to the map - for (int i = 1; i < tokens.size(); i++) { - if (i > 1) - key.append('/'); - key.append(tokens.get(i)); - } - if (!tokens.isEmpty()) - result.put(key.toString(), tokens.get(0)); - in.close(); - return Collections.unmodifiableMap(result); - } - - - /** - * Returns the contents of the resource_map file, which maps - * resources names to their respective bundles. - */ - public static Map getResourceMap() throws IOException { - if (resourceMap == null) { - InputStream in = DownloadManager.class.getResourceAsStream("resource_map"); - if (in != null) { - in = new BufferedInputStream(in); - try { - resourceMap = readTreeMap(in); - in.close(); - } - catch (IOException e) { - // turns out we can be returned a broken stream instead of - // just null - resourceMap = new HashMap(); - complete = true; - log("Can't find resource_map, forcing complete to true"); - } - in.close(); - } - else { - resourceMap = new HashMap(); - complete = true; - log("Can't find resource_map, forcing complete to true"); - } - - for (int i = 1; ; i++) { // run through the numbered custom bundles - String name = CUSTOM_PREFIX + i; - File customPath = new File(getBundlePath(), name + ".jar"); - if (customPath.exists()) { - JarFile custom = new JarFile(customPath); - Enumeration entries = custom.entries(); - while (entries.hasMoreElements()) { - JarEntry entry = (JarEntry) entries.nextElement(); - if (!entry.isDirectory()) - resourceMap.put(entry.getName(), name); - } - } - else - break; - } - } - return resourceMap; - } - - - /** - * Returns the contents of the file_map file, which maps - * file names to their respective bundles. - */ - public static Map getFileMap() throws IOException { - if (fileMap == null) { - InputStream in = DownloadManager.class.getResourceAsStream("file_map"); - if (in != null) { - in = new BufferedInputStream(in); - try { - fileMap = readTreeMap(in); - in.close(); - } - catch (IOException e) { - // turns out we can be returned a broken stream instead of - // just null - fileMap = new HashMap(); - complete = true; - log("Can't find file_map, forcing complete to true"); - } - in.close(); - } - else { - fileMap = new HashMap(); - complete = true; - log("Can't find file_map, forcing complete to true"); - } - } - return fileMap; - } - - - /** - * Returns the contents of the bundle.properties file, which maps - * bundle names to a pipe-separated list of their properties. Properties - * include: - * jarpath - By default, the JAR files (unpacked from classes.pack in the - * bundle) are stored under lib/bundles. The jarpath property - * overrides this default setting, causing the JAR to be unpacked - * at the specified location. This is used to preserve the - * identity of JRE JAR files such as lib/deploy.jar. - * size - The size of the download in bytes. - */ - private static synchronized Map> getBundleProperties() - throws IOException { - if (bundleProperties == null) { - InputStream in = DownloadManager.class.getResourceAsStream("bundle.properties"); - if (in == null) { - complete = true; - log("Can't find bundle.properties, forcing complete to true"); - return null; - } - in = new BufferedInputStream(in); - Properties tmp = new Properties(); - tmp.load(in); - bundleProperties = new HashMap>(); - for (Map.Entry e : tmp.entrySet()) { - String key = (String) e.getKey(); - String[] properties = ((String) e.getValue()).split("\\|"); - Map map = new HashMap(); - for (String entry : properties) { - int equals = entry.indexOf("="); - if (equals == -1) - throw new InternalError("error parsing bundle.properties: " + - entry); - map.put(entry.substring(0, equals).trim(), - entry.substring(equals + 1).trim()); - } - bundleProperties.put(key, map); - } - in.close(); - } - return bundleProperties; - } - - - /** - * Returns a single bundle property value loaded from the bundle.properties - * file. - */ - static String getBundleProperty(String bundleName, String property) { - try { - Map> props = getBundleProperties(); - Map/**/ map = props != null ? props.get(bundleName) : null; - return map != null ? (String) map.get(property) : null; - } - catch (IOException e) { - throw new RuntimeException(e); - } - } - - - /** Returns an array of all supported bundle names. */ - static String[] getBundleNames() throws IOException { - if (bundleNames == null) { - Set result = new HashSet(); - Map resourceMap = getResourceMap(); - if (resourceMap != null) - result.addAll(resourceMap.values()); - Map fileMap = getFileMap(); - if (fileMap != null) - result.addAll(fileMap.values()); - bundleNames = result.toArray(new String[result.size()]); - } - return bundleNames; - } - - - /** - * Returns an array of all "critical" (must be downloaded prior to - * completion) bundle names. - */ - private static String[] getCriticalBundleNames() throws IOException { - if (criticalBundleNames == null) { - Set result = new HashSet(); - Map fileMap = getFileMap(); - if (fileMap != null) - result.addAll(fileMap.values()); - criticalBundleNames = result.toArray(new String[result.size()]); - } - return criticalBundleNames; - } - - - public static void send(InputStream in, OutputStream out) - throws IOException { - byte[] buffer = new byte[BUFFER_SIZE]; - int c; - while ((c = in.read(buffer)) > 0) - out.write(buffer, 0, c); - } - - - /** - * Determine whether all bundles have been downloaded, and if so create - * the merged jars that will eventually replace rt.jar and resoures.jar. - * IMPORTANT: this method should only be called from the background - * download process. - */ - static void performCompletionIfNeeded() { - if (debug) - log("DownloadManager.performCompletionIfNeeded: checking (" + - complete + ", " + System.getProperty(KERNEL_NOMERGE_PROPERTY) - + ")"); - if (complete || - "true".equals(System.getProperty(KERNEL_NOMERGE_PROPERTY))) - return; - Bundle.loadReceipts(); - try { - if (debug) { - List critical = new ArrayList(Arrays.asList(getCriticalBundleNames())); - critical.removeAll(Bundle.receipts); - log("DownloadManager.performCompletionIfNeeded: still need " + - critical.size() + " bundles (" + critical + ")"); - } - if (Bundle.receipts.containsAll(Arrays.asList(getCriticalBundleNames()))) { - log("DownloadManager.performCompletionIfNeeded: running"); - // all done! - new Thread("JarMerger") { - public void run() { - createMergedJars(); - } - }.start(); - } - } - catch (IOException e) { - throw new RuntimeException(e); - } - } - - - /** - * Returns the bundle corresponding to a given resource path (e.g. - * "java/lang/Object.class"). If the resource does not appear in a bundle, - * null is returned. - */ - public static Bundle getBundleForResource(String resource) - throws IOException { - String bundleName = getResourceMap().get(resource); - return bundleName != null ? Bundle.getBundle(bundleName) : null; - } - - - /** - * Returns the bundle corresponding to a given JRE file path (e.g. - * "bin/awt.dll"). If the file does not appear in a bundle, null is - * returned. - */ - private static Bundle getBundleForFile(String file) throws IOException { - String bundleName = getFileMap().get(file); - return bundleName != null ? Bundle.getBundle(bundleName) : null; - } - - - /** - * Returns the path to the lib/bundles directory. - */ - static File getBundlePath() { - return new File(JAVA_HOME, "lib" + File.separatorChar + "bundles"); - } - - private static String getAppDataLocalLow() { - return USER_HOME + "\\appdata\\locallow\\"; - } - - public static String getKernelJREDir() { - return "kerneljre" + JAVA_VERSION; - } - - static File getLocalLowTempBundlePath() { - return new File(getLocalLowKernelJava() + "-bundles"); - } - - static String getLocalLowKernelJava() { - return getAppDataLocalLow() + getKernelJREDir(); - } - - // To be revisited: - // How DownloadManager maintains its bootstrap class path. - // sun.misc.Launcher.getBootstrapClassPath() returns - // DownloadManager.getBootstrapClassPath() instead. - // - // So should no longer need to lock the Launcher.class. - // In addition, additionalBootStrapPaths is not really needed - // if it obtains the initial bootclasspath during DownloadManager's - // initialization. - private static void addEntryToBootClassPath(File path) { - // Must acquire these locks in this order - synchronized(Launcher.class) { - synchronized(DownloadManager.class) { - File[] newBootStrapPaths = new File[ - additionalBootStrapPaths.length + 1]; - System.arraycopy(additionalBootStrapPaths, 0, newBootStrapPaths, - 0, additionalBootStrapPaths.length); - newBootStrapPaths[newBootStrapPaths.length - 1] = path; - additionalBootStrapPaths = newBootStrapPaths; - if (bootstrapClassPath != null) - bootstrapClassPath.addURL(getFileURL(path)); - } - } - } - - /** - * Returns the kernel's bootstrap class path which includes the additional - * JARs downloaded - */ - private static URLClassPath bootstrapClassPath = null; - private synchronized static - URLClassPath getBootClassPath(URLClassPath bcp, - URLStreamHandlerFactory factory) - { - if (bootstrapClassPath == null) { - bootstrapClassPath = new URLClassPath(bcp.getURLs(), factory); - for (File path : additionalBootStrapPaths) { - bootstrapClassPath.addURL(getFileURL(path)); - } - } - return bootstrapClassPath; - } - - private static URL getFileURL(File file) { - try { - file = file.getCanonicalFile(); - } catch (IOException e) {} - - try { - return ParseUtil.fileToEncodedURL(file); - } catch (MalformedURLException e) { - // Should never happen since we specify the protocol... - throw new InternalError(); - } - } - - /** - * Scan through java.ext.dirs to see if the lib/ext directory is included. - * If not, we shouldn't be "finding" lib/ext jars for download. - */ - private static synchronized boolean extDirIsIncluded() { - if (!extDirDetermined) { - extDirDetermined = true; - String raw = System.getProperty("java.ext.dirs"); - String ext = JAVA_HOME + File.separator + "lib" + File.separator + "ext"; - int index = 0; - while (index < raw.length()) { - int newIndex = raw.indexOf(File.pathSeparator, index); - if (newIndex == -1) - newIndex = raw.length(); - String path = raw.substring(index, newIndex); - if (path.equals(ext)) { - extDirIncluded = true; - break; - } - index = newIndex + 1; - } - } - return extDirIncluded; - } - - - private static String doGetBootClassPathEntryForResource( - String resourceName) { - boolean retry = false; - do { - Bundle bundle = null; - try { - bundle = getBundleForResource(resourceName); - if (bundle != null) { - File path = bundle.getJarPath(); - boolean isExt = path.getParentFile().getName().equals("ext"); - if (isExt && !extDirIsIncluded()) // this is a lib/ext jar, but - return null; // lib/ext isn't in the path - if (getBundleProperty(bundle.getName(), JAR_PATH_PROPERTY) == null) { - // if the bundle doesn't have its own JAR path, that means it's - // going to be merged into rt.jar. If we already have the - // merged rt.jar, we can simply point to that. - Bundle merged = Bundle.getBundle("merged"); - if (merged != null && merged.isInstalled()) { - File jar; - if (resourceName.endsWith(".class")) - jar = merged.getJarPath(); - else - jar = new File(merged.getJarPath().getPath().replaceAll("merged-rt.jar", - "merged-resources.jar")); - addEntryToBootClassPath(jar); - return jar.getPath(); - } - } - if (!bundle.isInstalled()) { - bundle.queueDependencies(true); - log("On-demand downloading " + - bundle.getName() + " for resource " + - resourceName + "..."); - bundle.install(); - log(bundle + " install finished."); - } - log("Double-checking " + bundle + " state..."); - if (!bundle.isInstalled()) { - throw new IllegalStateException("Expected state of " + - bundle + " to be INSTALLED"); - } - if (isExt) { - // don't add lib/ext entries to the boot class path, add - // them to the extension classloader instead - Launcher.addURLToExtClassLoader(path.toURL()); - return null; - } - - if ("javaws".equals(bundle.getName())) { - Launcher.addURLToAppClassLoader(path.toURL()); - log("Returning null for javaws"); - return null; - } - - if ("core".equals(bundle.getName())) - return null; - - // else add to boot class path - addEntryToBootClassPath(path); - - return path.getPath(); - } - return null; // not one of the JRE's classes - } - catch (Throwable e) { - retry = handleException(e); - log("Error downloading bundle for " + - resourceName + ":"); - log(e); - if (e instanceof IOException) { - // bundle did not get installed correctly, remove incomplete - // bundle files - if (bundle != null) { - if (bundle.getJarPath() != null) { - File packTmp = new File(bundle.getJarPath() + ".pack"); - packTmp.delete(); - bundle.getJarPath().delete(); - } - if (bundle.getLocalPath() != null) { - bundle.getLocalPath().delete(); - } - bundle.setState(Bundle.NOT_DOWNLOADED); - } - } - } - } while (retry); - sendErrorPing(ERROR_RETRY_CANCELLED); // bundle failed to install, user cancelled - - return null; // failed, user chose not to retry - } - - static synchronized void sendErrorPing(int code) { - try { - File bundlePath; - if (isWindowsVista()) { - bundlePath = getLocalLowTempBundlePath(); - } else { - bundlePath = getBundlePath(); - } - File tmp = new File(bundlePath, "tmp"); - File errors = new File(tmp, "errors"); - String errorString = String.valueOf(code); - if (errors.exists()) { - BufferedReader in = new BufferedReader(new FileReader(errors)); - String line = in.readLine(); - while (line != null) { - if (line.equals(errorString)) - return; // we have already pinged this error - line = in.readLine(); - } - } - tmp.mkdirs(); - Writer out = new FileWriter(errors, true); - out.write(errorString + System.getProperty("line.separator")); - out.close(); - postDownloadError(code); - } - catch (IOException e) { - e.printStackTrace(); - } - } - - - - /** - * Displays an error dialog and prompts the user to retry or cancel. - * Returns true if the user chose to retry, false if he chose to cancel. - */ - static boolean handleException(Throwable e) { - if (e instanceof IOException) { - // I don't know of a better method to determine the root cause of - // the exception, unfortunately... - int code = ERROR_UNSPECIFIED; - if (e.getMessage().indexOf("not enough space") != -1) - code = ERROR_DISK_FULL; - return askUserToRetryDownloadOrQuit(code); - } - else - return false; - } - - - static synchronized void flushBundleURLs() { - bundleURLs = null; - } - - - static synchronized Properties getBundleURLs(boolean showUI) - throws IOException { - if (bundleURLs == null) { - log("Entering DownloadManager.getBundleURLs"); - String base = getBaseDownloadURL(); - String url = appendTransactionId(base); - // use PID instead of createTempFile or other random filename so as - // to avoid dependencies on the random number generator libraries - File bundlePath = null; - // write temp file to locallow directory on vista - if (isWindowsVista()) { - bundlePath = getLocalLowTempBundlePath(); - } else { - bundlePath = getBundlePath(); - } - File tmp = new File(bundlePath, "urls." + getCurrentProcessId() + - ".properties"); - try { - log("Downloading from " + url + " to " + tmp); - downloadFromURL(url, tmp, "", showUI); - bundleURLs = new Properties(); - if (tmp.exists()) { - addToTotalDownloadSize((int) tmp.length()); // better late than never - InputStream in = new FileInputStream(tmp); - in = new BufferedInputStream(in); - bundleURLs.load(in); - in.close(); - if (bundleURLs.isEmpty()) { - fatalError(ERROR_MALFORMED_BUNDLE_PROPERTIES); - } - } else { - fatalError(ERROR_DOWNLOADING_BUNDLE_PROPERTIES); - } - } finally { - // delete the temp file - if (!debug) - tmp.delete(); - } - log("Leaving DownloadManager.getBundleURLs"); - // else an error occurred and user chose not to retry; leave - // bundleURLs empty so we don't continually try to re-download it - } - return bundleURLs; - } - - /** - * Checks to see if the specified resource is part of a bundle, and if so - * downloads it. Returns either a string which should be added to the boot - * class path (the newly-downloaded JAR's location), or null to indicate - * that it isn't one of the JRE's resources or could not be downloaded. - */ - public static String getBootClassPathEntryForResource( - final String resourceName) { - if (debug) - log("Entering getBootClassPathEntryForResource(" + resourceName + ")"); - if (isJREComplete() || downloading == null || - resourceName.startsWith("sun/jkernel")) { - if (debug) - log("Bailing: " + isJREComplete() + ", " + (downloading == null)); - return null; - } - incrementDownloadCount(); - try { - String result = (String) AccessController.doPrivileged( - new PrivilegedAction() { - public Object run() { - return (String) doGetBootClassPathEntryForResource( - resourceName); - } - } - ); - log("getBootClassPathEntryForResource(" + resourceName + ") == " + result); - return result; - } - finally { - decrementDownloadCount(); - } - } - - - /** - * Called by the boot class loader when it encounters a class it can't find. - * This method will check to see if the class is part of a bundle, and if so - * download it. Returns either a string which should be added to the boot - * class path (the newly-downloaded JAR's location), or null to indicate - * that it isn't one of the JRE's classes or could not be downloaded. - */ - public static String getBootClassPathEntryForClass(final String className) { - return getBootClassPathEntryForResource(className.replace('.', '/') + - ".class"); - } - - - private static boolean doDownloadFile(String relativePath) - throws IOException { - Bundle bundle = getBundleForFile(relativePath); - if (bundle != null) { - bundle.queueDependencies(true); - log("On-demand downloading " + bundle.getName() + - " for file " + relativePath + "..."); - bundle.install(); - return true; - } - return false; - } - - - /** - * Locates the bundle for the specified JRE file (e.g. "bin/awt.dll") and - * installs it. Returns true if the file is indeed part of the JRE and has - * now been installed, false if the file is not part of the JRE, and throws - * an IOException if the file is part of the JRE but could not be - * downloaded. - */ - public static boolean downloadFile(final String relativePath) - throws IOException { - if (isJREComplete() || downloading == null) - return false; - - incrementDownloadCount(); - try { - Object result = - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - File path = new File(JAVA_HOME, - relativePath.replace('/', File.separatorChar)); - if (path.exists()) - return true; - try { - return new Boolean(doDownloadFile(relativePath)); - } - catch (IOException e) { - return e; - } - } - }); - if (result instanceof Boolean) - return ((Boolean) result).booleanValue(); - else - throw (IOException) result; - } - finally { - decrementDownloadCount(); - } - } - - - // increments the counter that tracks whether the current thread is involved - // in any download-related activities. A non-zero count indicates that the - // thread is currently downloading or installing a bundle. - static void incrementDownloadCount() { - downloading.set(downloading.get() + 1); - } - - - // increments the counter that tracks whether the current thread is involved - // in any download-related activities. A non-zero count indicates that the - // thread is currently downloading or installing a bundle. - static void decrementDownloadCount() { - // will generate an exception if incrementDownloadCount() hasn't been - // called first, this is intentional - downloading.set(downloading.get() - 1); - } - - - /** - * Returns true if the current thread is in the process of - * downloading a bundle. This is called by DownloadManager.loadLibrary() - * that is called by System.loadLibrary(), so - * that when we run into a library required by the download process itself, - * we don't call back into DownloadManager in an attempt to download it - * (which would lead to infinite recursion). - * - * All classes and libraries required to download classes must by - * definition already be present. So if this method returns true, we are - * currently in the middle of performing a download, and the class or - * library load must be happening due to the download itself. We can - * immediately abort such requests -- the class or library should already - * be present. If it isn't, we're not going to be able to download it, - * since we have just established that it is required to perform a - * download, and we might as well just let the NoClassDefFoundError / - * UnsatisfiedLinkError occur. - */ - public static boolean isCurrentThreadDownloading() { - return downloading != null ? downloading.get() > 0 : false; - } - - - /** - * Returns true if everything is downloaded and the JRE has been - * reconstructed. Also returns true if kernel functionality is disabled - * for any other reason. - */ - public static boolean isJREComplete() { - return complete; - } - - - // called by BackgroundDownloader - static void doBackgroundDownloads(boolean showProgress) { - if (!complete) { - if (!showProgress && !debug) - reportErrors = false; - try { - // install swing first for ergonomic reasons - Bundle swing = Bundle.getBundle("javax_swing_core"); - if (!swing.isInstalled()) - swing.install(showProgress, false, false); - // install remaining bundles - for (String name : getCriticalBundleNames()) { - Bundle bundle = Bundle.getBundle(name); - if (!bundle.isInstalled()) { - bundle.install(showProgress, false, true); - } - } - shutdown(); - } - catch (IOException e) { - log(e); - } - } - } - - // copy receipt file to destination path specified - static void copyReceiptFile(File from, File to) throws IOException { - DataInputStream in = new DataInputStream( - new BufferedInputStream(new FileInputStream(from))); - OutputStream out = new FileOutputStream(to); - String line = in.readLine(); - while (line != null) { - out.write((line + '\n').getBytes("utf-8")); - line = in.readLine(); - } - in.close(); - out.close(); - } - - - private static void downloadRequestedBundles() { - log("Checking for requested bundles..."); - try { - File list = new File(JAVA_HOME, REQUESTED_BUNDLES_PATH); - if (list.exists()) { - FileInputStream in = new FileInputStream(list); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - send(in, buffer); - in.close(); - - // split string manually to avoid relying on regexes or - // StringTokenizer - String raw = new String(buffer.toByteArray(), "utf-8"); - List/**/ bundles = new ArrayList/**/(); - StringBuilder token = new StringBuilder(); - for (int i = 0; i < raw.length(); i++) { - char c = raw.charAt(i); - if (c == ',' || Character.isWhitespace(c)) { - if (token.length() > 0) { - bundles.add(token.toString()); - token.setLength(0); - } - } - else - token.append(c); - } - if (token.length() > 0) - bundles.add(token.toString()); - log("Requested bundles: " + bundles); - for (int i = 0; i < bundles.size(); i++) { - Bundle bundle = Bundle.getBundle((String) bundles.get(i)); - if (bundle != null && !bundle.isInstalled()) { - log("Downloading " + bundle + " due to requested.list"); - bundle.install(true, false, false); - } - } - } - } - catch (IOException e) { - log(e); - } - } - - - static void fatalError(int code) { - fatalError(code, null); - } - - - /** - * Called to cleanly shut down the VM when a fatal download error has - * occurred. Calls System.exit() if outside of the Java Plug-In, otherwise - * throws an error. - */ - static void fatalError(int code, String arg) { - sendErrorPing(code); - - for (int i = 0; i < Bundle.THREADS; i++) - bundleInstallComplete(); - if (reportErrors) - displayError(code, arg); - // inPlugIn check isn't 100% reliable but should be close enough. - // headless is for the browser side of things in the out-of-process - // plug-in - boolean inPlugIn = (Boolean.getBoolean("java.awt.headless") || - System.getProperty("javaplugin.version") != null); - KernelError error = new KernelError("Java Kernel bundle download failed"); - if (inPlugIn) - throw error; - else { - log(error); - System.exit(1); - } - } - - - // start the background download process using the jbroker broker process - // the method will first launch the broker process, if it is not already - // running - // it will then send the command necessary to start the background download - // process to the broker process - private static void startBackgroundDownloadWithBroker() { - - if (!BackgroundDownloader.getBackgroundDownloadProperty()) { - // If getBackgroundDownloadProperty() returns false - // we're doing the downloads from this VM; we don't want to - // spawn another one - return; - } - - // launch broker process if necessary - if (!launchBrokerProcess()) { - return; - } - - - String kernelDownloadURLProperty = getBaseDownloadURL(); - - String kernelDownloadURL; - - // only set KERNEL_DOWNLOAD_URL_PROPERTY if we override - // the default download url - if (kernelDownloadURLProperty == null || - kernelDownloadURLProperty.equals(DEFAULT_DOWNLOAD_URL)) { - kernelDownloadURL = " "; - } else { - kernelDownloadURL = kernelDownloadURLProperty; - } - - startBackgroundDownloadWithBrokerImpl(kernelDownloadURLProperty); - } - - private static void startBackgroundDownloads() { - if (!complete) { - if (BackgroundDownloader.getBackgroundMutex().acquire(0)) { - // we don't actually need to hold the mutex -- it was just a - // quick check to see if there is any point in even attempting - // to start the background downloader - BackgroundDownloader.getBackgroundMutex().release(); - if (isWindowsVista()) { - // use broker process to start background download - // at high integrity - startBackgroundDownloadWithBroker(); - } else { - BackgroundDownloader.startBackgroundDownloads(); - } - } - } - } - - - /** - * Increases the total download size displayed in the download progress - * dialog. - */ - static native void addToTotalDownloadSize(int size); - - - /** - * Displays a progress dialog while downloading from the specified URL. - * - *@param url the URL string from which to download - *@param file the destination path - *@param name the user-visible name of the component we are downloading - */ - static void downloadFromURL(String url, File file, String name, - boolean showProgress) { - // do not show download dialog if kernel.download.dialog is false - downloadFromURLImpl(url, file, name, - disableDownloadDialog ? false : showProgress); - } - - private static native void downloadFromURLImpl(String url, File file, - String name, boolean showProgress); - - // This is for testing purposes only - allows to specify URL - // to download kernel bundles from through the registry key. - static native String getUrlFromRegistry(); - - static native String getVisitorId0(); - - static native void postDownloadComplete(); - - static native void postDownloadError(int code); - - // Returns the visitor ID set by the installer, will be sent to the server - // during bundle downloads for logging purposes. - static synchronized String getVisitorId() { - if (!visitorIdDetermined) { - visitorIdDetermined = true; - visitorId = getVisitorId0(); - } - return visitorId; - } - - // display an error message using a native dialog - public static native void displayError(int code, String arg); - - // prompt user whether to retry download, or quit - // returns true if the user chose to retry - public static native boolean askUserToRetryDownloadOrQuit(int code); - - // returns true if we are running Windows Vista; false otherwise - static native boolean isWindowsVista(); - - private static native void startBackgroundDownloadWithBrokerImpl( - String command); - - private static int isJBrokerStarted() { - if (_isJBrokerStarted == -1) { - // initialize state of jbroker - _isJBrokerStarted = isJBrokerRunning() ? 1 : 0; - } - return _isJBrokerStarted; - } - - // returns true if broker process (jbroker) is running; false otherwise - private static native boolean isJBrokerRunning(); - - // returns true if we are running in IE protected mode; false otherwise - private static native boolean isIEProtectedMode(); - - private static native boolean launchJBroker(String jbrokerPath); - - static native void bundleInstallStart(); - - static native void bundleInstallComplete(); - - private static native boolean moveFileWithBrokerImpl(String fromPath, - String userHome); - - private static native boolean moveDirWithBrokerImpl(String fromPath, - String userHome); - - static boolean moveFileWithBroker(String fromPath) { - // launch jbroker if necessary - if (!launchBrokerProcess()) { - return false; - } - - return moveFileWithBrokerImpl(fromPath, USER_HOME); - } - - static boolean moveDirWithBroker(String fromPath) { - // launch jbroker if necessary - if (!launchBrokerProcess()) { - return false; - } - - return moveDirWithBrokerImpl(fromPath, USER_HOME); - } - - private static synchronized boolean launchBrokerProcess() { - // launch jbroker if necessary - if (isJBrokerStarted() == 0) { - // launch jbroker if needed - boolean ret = launchJBroker(JAVA_HOME); - // set state of jbroker - _isJBrokerStarted = ret ? 1 : 0; - return ret; - } - return true; - } - - private static class StreamMonitor implements Runnable { - private InputStream istream; - public StreamMonitor(InputStream stream) { - istream = new BufferedInputStream(stream); - new Thread(this).start(); - } - public void run() { - byte[] buffer = new byte[4096]; - try { - int ret = istream.read(buffer); - while (ret != -1) { - ret = istream.read(buffer); - } - } catch (IOException e) { - try { - istream.close(); - } catch (IOException e2) { - } // Should allow clean exit when process shuts down - } - } - } - - - /** Copy a file tree, excluding certain named files. */ - private static void copyAll(File src, File dest, Set/**/ excludes) - throws IOException { - if (!excludes.contains(src.getName())) { - if (src.isDirectory()) { - File[] children = src.listFiles(); - if (children != null) { - for (int i = 0; i < children.length; i++) - copyAll(children[i], - new File(dest, children[i].getName()), - excludes); - } - } - else { - dest.getParentFile().mkdirs(); - FileInputStream in = new FileInputStream(src); - FileOutputStream out = new FileOutputStream(dest); - send(in, out); - in.close(); - out.close(); - } - } - } - - - public static void dumpOutput(final Process p) { - Thread outputReader = new Thread("outputReader") { - public void run() { - try { - InputStream in = p.getInputStream(); - DownloadManager.send(in, System.out); - } catch (IOException e) { - log(e); - } - } - }; - outputReader.start(); - Thread errorReader = new Thread("errorReader") { - public void run() { - try { - InputStream in = p.getErrorStream(); - DownloadManager.send(in, System.err); - } catch (IOException e) { - log(e); - } - } - }; - errorReader.start(); - } - - - /** - * Creates the merged rt.jar and resources.jar files. - */ - private static void createMergedJars() { - log("DownloadManager.createMergedJars"); - File bundlePath; - if (isWindowsVista()) { - bundlePath = getLocalLowTempBundlePath(); - } else { - bundlePath = getBundlePath(); - } - File tmp = new File(bundlePath, "tmp"); - // explicitly check the final location, not the (potentially) local-low - // location -- a local-low finished isn't good enough to call it done - if (new File(getBundlePath(), "tmp" + File.separator + "finished").exists()) - return; // already done - log("DownloadManager.createMergedJars: running"); - tmp.mkdirs(); - boolean retry = false; - do { - try { - Bundle.getBundle("merged").install(false, false, true); - postDownloadComplete(); - // done, write an empty "finished" file to flag completion - File finished = new File(tmp, "finished"); - new FileOutputStream(finished).close(); - if (isWindowsVista()) { - if (!moveFileWithBroker(getKernelJREDir() + - "-bundles\\tmp\\finished")) { - throw new IOException("unable to create 'finished' file"); - } - } - log("DownloadManager.createMergedJars: created " + finished); - // next JRE startup will move these files into their final - // locations, as long as no other JREs are running - - // clean up the local low bundle directory on vista - if (isWindowsVista()) { - File tmpDir = getLocalLowTempBundlePath(); - File[] list = tmpDir.listFiles(); - if (list != null) { - for (int i = 0; i < list.length; i++) { - list[i].delete(); - } - } - tmpDir.delete(); - log("Finished cleanup, " + tmpDir + ".exists(): " + tmpDir.exists()); - } - } - catch (IOException e) { - log(e); - } - } - while (retry); - log("DownloadManager.createMergedJars: finished"); - } - - - private static void shutdown() { - try { - ExecutorService e = Bundle.getThreadPool(); - e.shutdown(); - e.awaitTermination(60 * 60 * 24, TimeUnit.SECONDS); - } - catch (InterruptedException e) { - } - } - - - // returns the registry key for kernel.debug - static native boolean getDebugKey(); - - - // returns the final value for the kernel debug property - public static boolean getDebugProperty(){ - /* - * Check registry key value - */ - boolean debugEnabled = getDebugKey(); - - /* - * Check system property - it should override the registry - * key value. - */ - if (System.getProperty(KERNEL_DEBUG_PROPERTY) != null) { - debugEnabled = Boolean.valueOf( - System.getProperty(KERNEL_DEBUG_PROPERTY)); - } - return debugEnabled; - - } - - - /** - * Outputs to the error stream even when System.err has not yet been - * initialized. - */ - static void println(String msg) { - if (System.err != null) - System.err.println(msg); - else { - try { - if (errorStream == null) - errorStream = new FileOutputStream(FileDescriptor.err); - errorStream.write((msg + - System.getProperty("line.separator")).getBytes("utf-8")); - } - catch (IOException e) { - throw new RuntimeException(e); - } - } - } - - - static void log(String msg) { - if (debug) { - println(msg); - try { - if (logStream == null) { - loadJKernelLibrary(); - File path = isWindowsVista() ? getLocalLowTempBundlePath() : - getBundlePath(); - path = new File(path, "kernel." + getCurrentProcessId() + ".log"); - logStream = new FileOutputStream(path); - } - logStream.write((msg + - System.getProperty("line.separator")).getBytes("utf-8")); - logStream.flush(); - } - catch (IOException e) { - // ignore - } - } - } - - - static void log(Throwable e) { - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - PrintStream p = new PrintStream(buffer); - e.printStackTrace(p); - p.close(); - log(buffer.toString(0)); - } - - - /** Dump the contents of a map to System.out. */ - private static void printMap(Map/**/ map) { - int size = 0; - Set identityHashes = new HashSet(); - Iterator/*>*/ i = map.entrySet().iterator(); - while (i.hasNext()) { - Map.Entry/**/ e = (Map.Entry) i.next(); - String key = (String) e.getKey(); - String value = (String) e.getValue(); - System.out.println(key + ": " + value); - Integer keyHash = Integer.valueOf(System.identityHashCode(key)); - if (!identityHashes.contains(keyHash)) { - identityHashes.add(keyHash); - size += key.length(); - } - Integer valueHash = Integer.valueOf(System.identityHashCode(value)); - if (!identityHashes.contains(valueHash)) { - identityHashes.add(valueHash); - size += value.length(); - } - } - System.out.println(size + " bytes"); - } - - - /** Process the "-dumpmaps" command-line argument. */ - private static void dumpMaps() throws IOException { - System.out.println("Resources:"); - System.out.println("----------"); - printMap(getResourceMap()); - System.out.println(); - System.out.println("Files:"); - System.out.println("----------"); - printMap(getFileMap()); - } - - - /** Process the "-download" command-line argument. */ - private static void processDownload(String bundleName) throws IOException { - if (bundleName.equals("all")) { - debug = true; - doBackgroundDownloads(true); - performCompletionIfNeeded(); - } - else { - Bundle bundle = Bundle.getBundle(bundleName); - if (bundle == null) { - println("Unknown bundle: " + bundleName); - System.exit(1); - } - else - bundle.install(); - } - } - - - static native int getCurrentProcessId(); - - private DownloadManager() { - } - - // Invoked by jkernel VM after the VM is initialized - static void setBootClassLoaderHook() { - if (!isJREComplete()) { - sun.misc.BootClassLoaderHook.setHook(new DownloadManager()); - } - } - - // Implementation of the BootClassLoaderHook interface - public String loadBootstrapClass(String name) { - // Check for download before we look for it. If - // DownloadManager ends up downloading it, it will add it to - // our search path before we proceed to the findClass(). - return DownloadManager.getBootClassPathEntryForClass(name); - } - - public boolean loadLibrary(String name) { - try { - if (!DownloadManager.isJREComplete() && - !DownloadManager.isCurrentThreadDownloading()) { - return DownloadManager.downloadFile("bin/" + - System.mapLibraryName(name)); - // it doesn't matter if the downloadFile call returns false -- - // it probably just means that this is a user library, as - // opposed to a JRE library - } - } catch (IOException e) { - throw new UnsatisfiedLinkError("Error downloading library " + - name + ": " + e); - } catch (NoClassDefFoundError e) { - // This happens while Java itself is being compiled; DownloadManager - // isn't accessible when this code is first invoked. It isn't an - // issue, as if we can't find DownloadManager, we can safely assume - // that additional code is not available for download. - } - return false; - } - - public boolean prefetchFile(String name) { - try { - return sun.jkernel.DownloadManager.downloadFile(name); - } catch (IOException ioe) { - return false; - } - } - - public String getBootstrapResource(String name) { - try { - // If this is a known JRE resource, ensure that its bundle is - // downloaded. If it isn't known, we just ignore the download - // failure and check to see if we can find the resource anyway - // (which is possible if the boot class path has been modified). - return DownloadManager.getBootClassPathEntryForResource(name); - } catch (NoClassDefFoundError e) { - // This happens while Java itself is being compiled; DownloadManager - // isn't accessible when this code is first invoked. It isn't an - // issue, as if we can't find DownloadManager, we can safely assume - // that additional code is not available for download. - return null; - } - } - - public URLClassPath getBootstrapClassPath(URLClassPath bcp, - URLStreamHandlerFactory factory) - { - return DownloadManager.getBootClassPath(bcp, factory); - } - - public boolean isCurrentThreadPrefetching() { - return DownloadManager.isCurrentThreadDownloading(); - } - - public static void main(String[] arg) throws Exception { - AccessController.checkPermission(new AllPermission()); - - boolean valid = false; - if (arg.length == 2 && arg[0].equals("-install")) { - valid = true; - Bundle bundle = new Bundle() { - protected void updateState() { - // the bundle path was provided on the command line, so we - // just claim it has already been "downloaded" to the local - // filesystem - state = DOWNLOADED; - } - }; - - File jarPath; - int index = 0; - do { - index++; - jarPath = new File(getBundlePath(), - CUSTOM_PREFIX + index + ".jar"); - } - while (jarPath.exists()); - bundle.setName(CUSTOM_PREFIX + index); - bundle.setLocalPath(new File(arg[1])); - bundle.setJarPath(jarPath); - bundle.setDeleteOnInstall(false); - bundle.install(); - } - else if (arg.length == 2 && arg[0].equals("-download")) { - valid = true; - processDownload(arg[1]); - } - else if (arg.length == 1 && arg[0].equals("-dumpmaps")) { - valid = true; - dumpMaps(); - } - else if (arg.length == 2 && arg[0].equals("-sha1")) { - valid = true; - System.out.println(BundleCheck.getInstance(new File(arg[1]))); - } - else if (arg.length == 1 && arg[0].equals("-downloadtest")) { - valid = true; - File file = File.createTempFile("download", ".test"); - for (;;) { - file.delete(); - downloadFromURL(getBaseDownloadURL(), file, "URLS", true); - System.out.println("Downloaded " + file.length() + " bytes"); - } - } - if (!valid) { - System.out.println("usage: DownloadManager -install .zip |"); - System.out.println(" DownloadManager -download " + - " |"); - System.out.println(" DownloadManager -dumpmaps"); - System.exit(1); - } - } -} diff --git a/jdk/src/share/classes/sun/jkernel/Mutex.java b/jdk/src/share/classes/sun/jkernel/Mutex.java deleted file mode 100644 index 6f7247dcb84..00000000000 --- a/jdk/src/share/classes/sun/jkernel/Mutex.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ -package sun.jkernel; - -/** - * A mutex which works even between different processes. Currently implemented - * only on Win32. - * - *@author Ethan Nicholas - */ -public class Mutex { - static { - try { - System.loadLibrary("jkernel"); - } - catch (Exception e) { - throw new Error(e); - } - } - - private String uniqueId; - private long handle; - - public static Mutex create(String uniqueId) { - return new Mutex(uniqueId); - } - - - private Mutex(String uniqueId) { - this.uniqueId = uniqueId; - this.handle = createNativeMutex(uniqueId); - } - - - private static native long createNativeMutex(String uniqueId); - - - public native void acquire(); - - - public native boolean acquire(int timeout); - - - public native void release(); - - - public native void destroyNativeMutex(); - - - public void dispose() { - destroyNativeMutex(); - handle = 0; - } - - - public void finalize() { - dispose(); - } - - - public String toString() { - return "Mutex[" + uniqueId + "]"; - } -} diff --git a/jdk/src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java b/jdk/src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java deleted file mode 100644 index 1749e567db8..00000000000 --- a/jdk/src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -/* - * This is a pure subset of package-private class - * sun.security.provider.ByteArrayAccess. The subset consists of only the simple - * shift and boolean operations needed for the one current client of this - * class (sun.jkernel.StandaloneSHA) and omits optimization code and comments - * not relevant to the subset. No semantic changes have been made. - * A few long lines were broken to conform to JDK coding style. - * Pete Soper, August, 2007. - */ - -package sun.jkernel; - -/** - * Methods for converting between byte[] and int[]/long[]. - * - * @since 1.6 - * @version 1.1, 05/26/06 - * @author Andreas Sterbenz - */ -final class StandaloneByteArrayAccess { - - private StandaloneByteArrayAccess() { - // empty - } - - /** - * byte[] to int[] conversion, little endian byte order. - */ - static void b2iLittle(byte[] in, int inOfs, int[] out, int outOfs, - int len) { - len += inOfs; - while (inOfs < len) { - out[outOfs++] = ((in[inOfs ] & 0xff) ) - | ((in[inOfs + 1] & 0xff) << 8) - | ((in[inOfs + 2] & 0xff) << 16) - | ((in[inOfs + 3] ) << 24); - inOfs += 4; - } - } - - /** - * int[] to byte[] conversion, little endian byte order. - */ - static void i2bLittle(int[] in, int inOfs, byte[] out, int outOfs, - int len) { - len += outOfs; - while (outOfs < len) { - int i = in[inOfs++]; - out[outOfs++] = (byte)(i ); - out[outOfs++] = (byte)(i >> 8); - out[outOfs++] = (byte)(i >> 16); - out[outOfs++] = (byte)(i >> 24); - } - } - - /** - * byte[] to int[] conversion, big endian byte order. - */ - static void b2iBig(byte[] in, int inOfs, int[] out, int outOfs, int len) { - len += inOfs; - while (inOfs < len) { - out[outOfs++] = ((in[inOfs + 3] & 0xff) ) - | ((in[inOfs + 2] & 0xff) << 8) - | ((in[inOfs + 1] & 0xff) << 16) - | ((in[inOfs ] ) << 24); - inOfs += 4; - } - } - - /** - * int[] to byte[] conversion, big endian byte order. - */ - static void i2bBig(int[] in, int inOfs, byte[] out, int outOfs, int len) { - len += outOfs; - while (outOfs < len) { - int i = in[inOfs++]; - out[outOfs++] = (byte)(i >> 24); - out[outOfs++] = (byte)(i >> 16); - out[outOfs++] = (byte)(i >> 8); - out[outOfs++] = (byte)(i ); - } - } - - // Store one 32-bit value into out[outOfs..outOfs+3] in big endian order. - static void i2bBig4(int val, byte[] out, int outOfs) { - out[outOfs ] = (byte)(val >> 24); - out[outOfs + 1] = (byte)(val >> 16); - out[outOfs + 2] = (byte)(val >> 8); - out[outOfs + 3] = (byte)(val ); - } - - /** - * byte[] to long[] conversion, big endian byte order. - */ - static void b2lBig(byte[] in, int inOfs, long[] out, int outOfs, int len) { - len += inOfs; - while (inOfs < len) { - int i1 = ((in[inOfs + 3] & 0xff) ) - | ((in[inOfs + 2] & 0xff) << 8) - | ((in[inOfs + 1] & 0xff) << 16) - | ((in[inOfs ] ) << 24); - inOfs += 4; - int i2 = ((in[inOfs + 3] & 0xff) ) - | ((in[inOfs + 2] & 0xff) << 8) - | ((in[inOfs + 1] & 0xff) << 16) - | ((in[inOfs ] ) << 24); - out[outOfs++] = ((long)i1 << 32) | (i2 & 0xffffffffL); - inOfs += 4; - } - } - - /** - * long[] to byte[] conversion - */ - static void l2bBig(long[] in, int inOfs, byte[] out, int outOfs, int len) { - len += outOfs; - while (outOfs < len) { - long i = in[inOfs++]; - out[outOfs++] = (byte)(i >> 56); - out[outOfs++] = (byte)(i >> 48); - out[outOfs++] = (byte)(i >> 40); - out[outOfs++] = (byte)(i >> 32); - out[outOfs++] = (byte)(i >> 24); - out[outOfs++] = (byte)(i >> 16); - out[outOfs++] = (byte)(i >> 8); - out[outOfs++] = (byte)(i ); - } - } - -} diff --git a/jdk/src/share/classes/sun/jkernel/StandaloneMessageDigest.java b/jdk/src/share/classes/sun/jkernel/StandaloneMessageDigest.java deleted file mode 100644 index fc4e94d0f5c..00000000000 --- a/jdk/src/share/classes/sun/jkernel/StandaloneMessageDigest.java +++ /dev/null @@ -1,395 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -/* - * This is a combination and adaptation of subsets of - * java.security.MessageDigest and - * sun.security.provider.DigestBase to provide a class offering - * most of the same public methods of MessageDigest while not - * depending on the Java Security Framework. - *

- * One algorithm is currently supported: "SHA-1". - *

- * NOTE If java.security.MessageDigest, - * sun.security.provider.DigestBase or - * sun.security.provider.SHA are modified, review of those - * modifications should be done to determine any possible implications for this - * class and StandaloneSHA. - */ - -package sun.jkernel; - -import java.security.DigestException; -import java.security.ProviderException; -import java.security.NoSuchAlgorithmException; - -/** - * (Adapted from the sun.security.provider.DigestBase doc). - * This is a simple subset of the Common base message digest implementation - * for the Sun provider. - * It implements most of the JCA methods as suitable for a Java message - * digest - * implementation of an algorithm based on a compression function (as all - * commonly used algorithms are). The individual digest subclasses only need to - * implement the following methods: - * - * . abstract void implCompress(byte[] b, int ofs); - * . abstract void implDigest(byte[] out, int ofs); - * . abstract void implReset(); - *

- * No support for a clone() method is provided. - *

- * See the inline documentation for details. - * - * @since 1.5 - * @version 1.3, 08/08/07 - * @author Andreas Sterbenz (MessageDigest) - * @author Pete Soper (this derived class) - */ -public abstract class StandaloneMessageDigest { - - public static final boolean debug = false; - - /* - * (Copied/adapted from java.security.MessageDigest - * - * This is a subset/simplification java.security.MessageDigest - * that supports a fixed set of hashcode mechanisms (currently just - * SHA-1) while preserving the following MessageDigest methods: - * - * public MessageDigest getInstance(String algorithm) - * public final int getDigestLength() - * public void reset() - * public byte[] digest() - * public void update(byte[] input, int offset, int len) - * public final String getAlgorithm() - *

- * NOTE that the clone() method is not provided. - */ - - /** - * Prevent direct instantiation except via the factory method. - */ - - private StandaloneMessageDigest() { - // Keep javac happy. - digestLength = 0; - blockSize = 0; - algorithm = null; - buffer = null; - } - - private String algorithm; - - // The state of this digest - private static final int INITIAL = 0; - private static final int IN_PROGRESS = 1; - private int state = INITIAL; - - /** - * Returns a StandaloneMessageDigest object that implements the specified - * digest algorithm. - * - *

This method returns a new StandaloneMessageDigest for a single - * algorithm provider. - * - * @param algorithm the name of the algorithm requested. - * - * @return a standalone Message Digest object that implements the specified algorithm. - * - * @exception NoSuchAlgorithmException if algorithm not supported - * - */ - public static StandaloneMessageDigest getInstance(String algorithm) - throws NoSuchAlgorithmException { - if (! algorithm.equals("SHA-1")) { - throw new NoSuchAlgorithmException(algorithm + " not found"); - } else { - return new StandaloneSHA(); - } - } - - /** - * Updates the digest using the specified array of bytes, starting - * at the specified offset. - * - * @param input the array of bytes. - * - * @param offset the offset to start from in the array of bytes. - * - * @param len the number of bytes to use, starting at - * offset. - */ - public void update(byte[] input, int offset, int len) { - if (debug) { - System.out.println("StandaloneMessageDigest.update"); - (new Exception()).printStackTrace(); - } - if (input == null) { - throw new IllegalArgumentException("No input buffer given"); - } - if (input.length - offset < len) { - throw new IllegalArgumentException("Input buffer too short"); - } - // No need to check for negative offset: engineUpdate does this - - engineUpdate(input, offset, len); - state = IN_PROGRESS; - } - - /** - * Completes the hash computation by performing final operations - * such as padding. The digest is reset after this call is made. - * - * @return the array of bytes for the resulting hash value. - */ - public byte[] digest() { - if (debug) { - System.out.println("StandaloneMessageDigest.digest"); - } - /* Resetting is the responsibility of implementors. */ - byte[] result = engineDigest(); - state = INITIAL; - return result; - } - - /** - * Compares two digests for equality. Does a simple byte compare. - * - * @param digesta one of the digests to compare. - * - * @param digestb the other digest to compare. - * - * @return true if the digests are equal, false otherwise. - */ - public static boolean isEqual(byte digesta[], byte digestb[]) { - if (digesta.length != digestb.length) - return false; - - for (int i = 0; i < digesta.length; i++) { - if (digesta[i] != digestb[i]) { - return false; - } - } - return true; - } - - /** - * Resets the digest for further use. - */ - public void reset() { - if (debug) { - System.out.println("StandaloneMessageDigest.reset"); - } - engineReset(); - state = INITIAL; - } - - /** - * Returns a string that identifies the algorithm, independent of - * implementation details. The name should be a standard - * Java Security name (such as "SHA", "MD5", and so on). - * See Appendix A in the - * Java Cryptography Architecture API Specification & Reference - * for information about standard algorithm names. - * - * @return the name of the algorithm - */ - public final String getAlgorithm() { - return this.algorithm; - } - - /** - * Returns the length of the digest in bytes. - * - * @return the digest length in bytes. - * - * @since 1.2 - */ - public final int getDigestLength() { - return engineGetDigestLength(); - } - - //* End of copied/adapted java.security.MessageDigest - - // Start of copied/adapted sun.security.provider.DigestBase - - // one element byte array, temporary storage for update(byte) - private byte[] oneByte; - - // length of the message digest in bytes - private final int digestLength; - - // size of the input to the compression function in bytes - private final int blockSize; - // buffer to store partial blocks, blockSize bytes large - // Subclasses should not access this array directly except possibly in their - // implDigest() method. See MD5.java as an example. - final byte[] buffer; - // offset into buffer - private int bufOfs; - - // number of bytes processed so far. subclasses should not modify - // this value. - // also used as a flag to indicate reset status - // -1: need to call engineReset() before next call to update() - // 0: is already reset - long bytesProcessed; - - /** - * Main constructor. - */ - StandaloneMessageDigest(String algorithm, int digestLength, int blockSize) { - // super(); - this.algorithm = algorithm; - this.digestLength = digestLength; - this.blockSize = blockSize; - buffer = new byte[blockSize]; - } - - // return digest length. See JCA doc. - protected final int engineGetDigestLength() { - return digestLength; - } - - // single byte update. See JCA doc. - protected final void engineUpdate(byte b) { - if (oneByte == null) { - oneByte = new byte[1]; - } - oneByte[0] = b; - engineUpdate(oneByte, 0, 1); - } - - // array update. See JCA doc. - protected final void engineUpdate(byte[] b, int ofs, int len) { - if (len == 0) { - return; - } - if ((ofs < 0) || (len < 0) || (ofs > b.length - len)) { - throw new ArrayIndexOutOfBoundsException(); - } - if (bytesProcessed < 0) { - engineReset(); - } - bytesProcessed += len; - // if buffer is not empty, we need to fill it before proceeding - if (bufOfs != 0) { - int n = Math.min(len, blockSize - bufOfs); - System.arraycopy(b, ofs, buffer, bufOfs, n); - bufOfs += n; - ofs += n; - len -= n; - if (bufOfs >= blockSize) { - // compress completed block now - implCompress(buffer, 0); - bufOfs = 0; - } - } - // compress complete blocks - while (len >= blockSize) { - implCompress(b, ofs); - len -= blockSize; - ofs += blockSize; - } - // copy remainder to buffer - if (len > 0) { - System.arraycopy(b, ofs, buffer, 0, len); - bufOfs = len; - } - } - - // reset this object. See JCA doc. - protected final void engineReset() { - if (bytesProcessed == 0) { - // already reset, ignore - return; - } - implReset(); - bufOfs = 0; - bytesProcessed = 0; - } - - // return the digest. See JCA doc. - protected final byte[] engineDigest() throws ProviderException { - byte[] b = new byte[digestLength]; - try { - engineDigest(b, 0, b.length); - } catch (DigestException e) { - throw (ProviderException) - new ProviderException("Internal error").initCause(e); - } - return b; - } - - // return the digest in the specified array. See JCA doc. - protected final int engineDigest(byte[] out, int ofs, int len) - throws DigestException { - if (len < digestLength) { - throw new DigestException("Length must be at least " - + digestLength + " for " + algorithm + "digests"); - } - if ((ofs < 0) || (len < 0) || (ofs > out.length - len)) { - throw new DigestException("Buffer too short to store digest"); - } - if (bytesProcessed < 0) { - engineReset(); - } - implDigest(out, ofs); - bytesProcessed = -1; - return digestLength; - } - - /** - * Core compression function. Processes blockSize bytes at a time - * and updates the state of this object. - */ - abstract void implCompress(byte[] b, int ofs); - - /** - * Return the digest. Subclasses do not need to reset() themselves, - * StandaloneMessageDigest calls implReset() when necessary. - */ - abstract void implDigest(byte[] out, int ofs); - - /** - * Reset subclass specific state to their initial values. StandaloneMessageDigest - * calls this method when necessary. - */ - abstract void implReset(); - - // padding used for the MD5, and SHA-* message digests - static final byte[] padding; - - static { - // we need 128 byte padding for SHA-384/512 - // and an additional 8 bytes for the high 8 bytes of the 16 - // byte bit counter in SHA-384/512 - padding = new byte[136]; - padding[0] = (byte)0x80; - } - -} diff --git a/jdk/src/share/classes/sun/jkernel/StandaloneSHA.java b/jdk/src/share/classes/sun/jkernel/StandaloneSHA.java deleted file mode 100644 index c59c76c386e..00000000000 --- a/jdk/src/share/classes/sun/jkernel/StandaloneSHA.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -package sun.jkernel; - -import static sun.jkernel.StandaloneByteArrayAccess.*; - -/** - * This is a slightly modified subset of the - * sun.security.provider.SHA class that - * is not dependent on the regular Java Security framework classes. It - * implements the Secure Hash Algorithm (SHA-1) developed by - * the National Institute of Standards and Technology along with the - * National Security Agency. This is the updated version of SHA - * fip-180 as superseded by fip-180-1. - *

- * The sun.security.provider.SHA.clonde() method is not - * implemented and other, formerly public methods, are package private. - * - */ -final class StandaloneSHA extends StandaloneMessageDigest { - - static final boolean debug = false; - - // Buffer of int's and count of characters accumulated - // 64 bytes are included in each hash block so the low order - // bits of count are used to know how to pack the bytes into ints - // and to know when to compute the block and start the next one. - private final int[] W; - - // state of this - private final int[] state; - - /** - * Creates a new StandaloneSHA object. - */ - StandaloneSHA() { - super("SHA-1", 20, 64); - state = new int[5]; - W = new int[80]; - implReset(); - } - - /** - * Resets the buffers and hash value to start a new hash. - */ - void implReset() { - if (debug) { - System.out.print("StandaloneSHA.implR: " ); - } - state[0] = 0x67452301; - state[1] = 0xefcdab89; - state[2] = 0x98badcfe; - state[3] = 0x10325476; - state[4] = 0xc3d2e1f0; - } - - /** - * Computes the final hash and copies the 20 bytes to the output array. - */ - void implDigest(byte[] out, int ofs) { - if (debug) { - System.out.print("StandaloneSHA.implD: " ); - } - long bitsProcessed = bytesProcessed << 3; - - int index = (int)bytesProcessed & 0x3f; - int padLen = (index < 56) ? (56 - index) : (120 - index); - - engineUpdate(padding, 0, padLen); - - // System.out.println("Inserting: " + bitsProcessed); - StandaloneByteArrayAccess.i2bBig4((int)(bitsProcessed >>> 32), buffer, 56); - StandaloneByteArrayAccess.i2bBig4((int)bitsProcessed, buffer, 60); - implCompress(buffer, 0); - - StandaloneByteArrayAccess.i2bBig(state, 0, out, ofs, 20); - } - - // Constants for each round - private final static int round1_kt = 0x5a827999; - private final static int round2_kt = 0x6ed9eba1; - private final static int round3_kt = 0x8f1bbcdc; - private final static int round4_kt = 0xca62c1d6; - - /** - * Compute a the hash for the current block. - * - * This is in the same vein as Peter Gutmann's algorithm listed in - * the back of Applied Cryptography, Compact implementation of - * "old" NIST Secure Hash Algorithm. - */ - void implCompress(byte[] buf, int ofs) { - - if (debug) { - System.out.print("StandaloneSHA.implC: " ); - for (int i=ofs; i>> 31); - } - - int a = state[0]; - int b = state[1]; - int c = state[2]; - int d = state[3]; - int e = state[4]; - - // Round 1 - for (int i = 0; i < 20; i++) { - int temp = ((a<<5) | (a>>>(32-5))) + - ((b&c)|((~b)&d))+ e + W[i] + round1_kt; - e = d; - d = c; - c = ((b<<30) | (b>>>(32-30))); - b = a; - a = temp; - } - - // Round 2 - for (int i = 20; i < 40; i++) { - int temp = ((a<<5) | (a>>>(32-5))) + - (b ^ c ^ d) + e + W[i] + round2_kt; - e = d; - d = c; - c = ((b<<30) | (b>>>(32-30))); - b = a; - a = temp; - } - - // Round 3 - for (int i = 40; i < 60; i++) { - int temp = ((a<<5) | (a>>>(32-5))) + - ((b&c)|(b&d)|(c&d)) + e + W[i] + round3_kt; - e = d; - d = c; - c = ((b<<30) | (b>>>(32-30))); - b = a; - a = temp; - } - - // Round 4 - for (int i = 60; i < 80; i++) { - int temp = ((a<<5) | (a>>>(32-5))) + - (b ^ c ^ d) + e + W[i] + round4_kt; - e = d; - d = c; - c = ((b<<30) | (b>>>(32-30))); - b = a; - a = temp; - } - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; - state[4] += e; - } - -} diff --git a/jdk/src/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java b/jdk/src/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java index 3644777a420..9e9614bb09b 100644 --- a/jdk/src/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java +++ b/jdk/src/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java @@ -179,18 +179,4 @@ public class MonitoredVmUtil { } } - /** - * Returns true if the target VM is a kernel VM - * - * @param vm the target MonitoredVm - */ - public static boolean isKernelVM(MonitoredVm vm) throws MonitorException { - StringMonitor jvmCapabilities = - (StringMonitor)vm.findByName("sun.rt.jvmCapabilities"); - if (jvmCapabilities == null) { - return false; - } else { - return jvmCapabilities.stringValue().charAt(IS_KERNEL_VM) == '1'; - } - } } diff --git a/jdk/src/share/classes/sun/launcher/LauncherHelper.java b/jdk/src/share/classes/sun/launcher/LauncherHelper.java index 870ed30e9f0..ff71e8908b1 100644 --- a/jdk/src/share/classes/sun/launcher/LauncherHelper.java +++ b/jdk/src/share/classes/sun/launcher/LauncherHelper.java @@ -63,8 +63,6 @@ import java.util.jar.Manifest; public enum LauncherHelper { INSTANCE; - private static final String defaultBundleName = - "sun.launcher.resources.launcher"; private static final String MAIN_CLASS = "Main-Class"; private static StringBuilder outBuf = new StringBuilder(); @@ -76,11 +74,14 @@ public enum LauncherHelper { private static final String PROP_SETTINGS = "Property settings:"; private static final String LOCALE_SETTINGS = "Locale settings:"; - private static synchronized ResourceBundle getLauncherResourceBundle() { - if (javarb == null) { - javarb = ResourceBundle.getBundle(defaultBundleName); - } - return javarb; + // sync with java.c and sun.misc.VM + private static final String diagprop = "sun.java.launcher.diag"; + + private static final String defaultBundleName = + "sun.launcher.resources.launcher"; + private static class ResourceBundleHolder { + private static final ResourceBundle RB = + ResourceBundle.getBundle(defaultBundleName); } /* @@ -308,7 +309,7 @@ public enum LauncherHelper { * apply any arguments that we might pass. */ private static String getLocalizedMessage(String key, Object... args) { - String msg = getLauncherResourceBundle().getString(key); + String msg = ResourceBundleHolder.RB.getString(key); return (args != null) ? MessageFormat.format(msg, args) : msg; } @@ -380,25 +381,29 @@ public enum LauncherHelper { File.pathSeparator)); } - static String getMainClassFromJar(String jarname) throws IOException { - JarFile jarFile = null; + static String getMainClassFromJar(PrintStream ostream, String jarname) { try { - jarFile = new JarFile(jarname); - Manifest manifest = jarFile.getManifest(); - if (manifest == null) { - throw new IOException("manifest not found in " + jarname); - } - Attributes mainAttrs = manifest.getMainAttributes(); - if (mainAttrs == null) { - throw new IOException("no main mainifest attributes, in " + - jarname); - } - return mainAttrs.getValue(MAIN_CLASS).trim(); - } finally { - if (jarFile != null) { - jarFile.close(); + JarFile jarFile = null; + try { + jarFile = new JarFile(jarname); + Manifest manifest = jarFile.getManifest(); + if (manifest == null) { + abort(ostream, null, "java.launcher.jar.error2", jarname); + } + Attributes mainAttrs = manifest.getMainAttributes(); + if (mainAttrs == null) { + abort(ostream, null, "java.launcher.jar.error3", jarname); + } + return mainAttrs.getValue(MAIN_CLASS).trim(); + } finally { + if (jarFile != null) { + jarFile.close(); + } } + } catch (IOException ioe) { + abort(ostream, ioe, "java.launcher.jar.error1", jarname); } + return null; } @@ -409,6 +414,20 @@ public enum LauncherHelper { private static final int LM_CLASS = 1; private static final int LM_JAR = 2; + static void abort(PrintStream ostream, Throwable t, String msgKey, Object... args) { + if (msgKey != null) { + ostream.println(getLocalizedMessage(msgKey, args)); + } + if (sun.misc.VM.getSavedProperty(diagprop) != null) { + if (t != null) { + t.printStackTrace(); + } else { + Thread.currentThread().dumpStack(); + } + } + System.exit(1); + } + /** * This method does the following: * 1. gets the classname from a Jar's manifest, if necessary @@ -426,39 +445,31 @@ public enum LauncherHelper { * @param isJar * @param name * @return - * @throws java.io.IOException */ public static Class checkAndLoadMain(boolean printToStderr, int mode, - String what) throws IOException - { - - ClassLoader ld = ClassLoader.getSystemClassLoader(); - + String what) { + final PrintStream ostream = (printToStderr) ? System.err : System.out; + final ClassLoader ld = ClassLoader.getSystemClassLoader(); // get the class name String cn = null; switch (mode) { - case LM_CLASS: - cn = what; - break; - case LM_JAR: - cn = getMainClassFromJar(what); - break; - default: - throw new InternalError("" + mode + ": Unknown launch mode"); + case LM_CLASS: + cn = what; + break; + case LM_JAR: + cn = getMainClassFromJar(ostream, what); + break; + default: + // should never happen + throw new InternalError("" + mode + ": Unknown launch mode"); } cn = cn.replace('/', '.'); - - PrintStream ostream = (printToStderr) ? System.err : System.out; Class c = null; try { c = ld.loadClass(cn); } catch (ClassNotFoundException cnfe) { - ostream.println(getLocalizedMessage("java.launcher.cls.error1", - cn)); - NoClassDefFoundError ncdfe = new NoClassDefFoundError(cn); - ncdfe.initCause(cnfe); - throw ncdfe; + abort(ostream, cnfe, "java.launcher.cls.error1", cn); } signatureDiagnostic(ostream, c); return c; @@ -470,9 +481,7 @@ public enum LauncherHelper { try { method = clazz.getMethod("main", String[].class); } catch (NoSuchMethodException nsme) { - ostream.println(getLocalizedMessage("java.launcher.cls.error4", - classname)); - throw new RuntimeException("Main method not found in " + classname); + abort(ostream, null, "java.launcher.cls.error4", classname); } /* * getMethod (above) will choose the correct method, based @@ -481,17 +490,10 @@ public enum LauncherHelper { */ int mod = method.getModifiers(); if (!Modifier.isStatic(mod)) { - ostream.println(getLocalizedMessage("java.launcher.cls.error2", - "static", classname)); - throw new RuntimeException("Main method is not static in class " + - classname); + abort(ostream, null, "java.launcher.cls.error2", "static", classname); } if (method.getReturnType() != java.lang.Void.TYPE) { - ostream.println(getLocalizedMessage("java.launcher.cls.error3", - classname)); - throw new RuntimeException("Main method must return a value" + - " of type void in class " + - classname); + abort(ostream, null, "java.launcher.cls.error3", classname); } return; } diff --git a/jdk/src/share/classes/sun/launcher/resources/launcher.properties b/jdk/src/share/classes/sun/launcher/resources/launcher.properties index 17ba48a1384..f508e9f49fc 100644 --- a/jdk/src/share/classes/sun/launcher/resources/launcher.properties +++ b/jdk/src/share/classes/sun/launcher/resources/launcher.properties @@ -84,6 +84,7 @@ java.launcher.X.usage=\ \ append to end of bootstrap class path\n\ \ -Xbootclasspath/p:\n\ \ prepend in front of bootstrap class path\n\ +\ -Xdiag show additional diagnostic messages\n\ \ -Xnoclassgc disable class garbage collection\n\ \ -Xincgc enable incremental garbage collection\n\ \ -Xloggc: log GC status to a file with time stamps\n\ @@ -109,7 +110,7 @@ java.launcher.X.usage=\ The -X options are non-standard and subject to change without notice.\n java.launcher.cls.error1=\ - Error: Could not find main class {0} + Error: Could not find or load main class {0} java.launcher.cls.error2=\ Error: Main method is not {0} in class {1}, please define the main method as:\n\ \ public static void main(String[] args) @@ -120,5 +121,7 @@ java.launcher.cls.error3=\ java.launcher.cls.error4=\ Error: Main method not found in class {0}, please define the main method as:\n\ \ public static void main(String[] args) - - +java.launcher.jar.error1=\ + Error: An unexpected error occurred while trying to open file {0} +java.launcher.jar.error2=manifest not found in {0} +java.launcher.jar.error3=no main manifest attribute, in {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_de.properties b/jdk/src/share/classes/sun/management/resources/agent_de.properties index a58d0ecb027..a238dc551ff 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_de.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_de.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2005, 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 @@ -28,65 +28,65 @@ # these are the same as the non-localized level name. agent.err.error = Fehler -agent.err.exception = Agent-Ausnahmefehler +agent.err.exception = Ausnahme von Agent ausgel\u00F6st agent.err.warning = Warnung -agent.err.configfile.notfound = Konfigurationsdatei wurde nicht gefunden. -agent.err.configfile.failed = Konfigurationsdatei konnte nicht gelesen werden. -agent.err.configfile.closed.failed = Konfigurationsdatei konnte nicht geschlossen werden. -agent.err.configfile.access.denied = Zugriff auf Konfigurationsdatei wurde verweigert. +agent.err.configfile.notfound = Konfigurationsdatei wurde nicht gefunden +agent.err.configfile.failed = Konfigurationsdatei konnte nicht gelesen werden +agent.err.configfile.closed.failed = Konfigurationsdatei konnte nicht geschlossen werden +agent.err.configfile.access.denied = Zugriff auf Konfigurationsdatei wurde abgelehnt -agent.err.exportaddress.failed = Export der JMX-Anschlussadresse an Instrumentierungspuffer schlug fehl. +agent.err.exportaddress.failed = Export der JMX-Connector-Adresse in Instrumentierungspuffer nicht erfolgreich -agent.err.agentclass.notfound = Verwaltungsagentenklasse nicht gefunden -agent.err.agentclass.failed = Verwaltungsagentenklasse fehlgeschlagen -agent.err.premain.notfound = premain(String) ist in Agentenklasse nicht vorhanden. -agent.err.agentclass.access.denied = Zugriff auf premain(String) wurde verweigert. -agent.err.invalid.agentclass = Ung\u00fcltiger Eigenschaftswert f\u00fcr com.sun.management.agent.class +agent.err.agentclass.notfound = Management Agent-Klasse nicht gefunden +agent.err.agentclass.failed = Management Agent-Klasse nicht erfolgreich +agent.err.premain.notfound = premain(String) ist in Agentklasse nicht vorhanden +agent.err.agentclass.access.denied = Zugriff auf premain(String) wurde abgelehnt +agent.err.invalid.agentclass = Ung\u00FCltiger Eigenschaftswert f\u00FCr com.sun.management.agent.class -agent.err.invalid.jmxremote.port = Ung\u00fcltige Nummer f\u00fcr com.sun.management.jmxremote.port +agent.err.invalid.jmxremote.port = Ung\u00FCltige Nummer f\u00FCr com.sun.management.jmxremote.port agent.err.file.not.set = Datei nicht angegeben agent.err.file.not.readable = Datei nicht lesbar agent.err.file.read.failed = Datei konnte nicht gelesen werden -agent.err.file.not.found = Datei wurde nicht gefunden -agent.err.file.access.not.restricted = Lesezugriff auf die Datei muss eingeschr\u00e4nkt sein +agent.err.file.not.found = Datei wurde nicht gefunden +agent.err.file.access.not.restricted = Lesezugriff auf Datei muss eingeschr\u00E4nkt werden -agent.err.password.file.notset = Es wurde keine Passwortdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist. -agent.err.password.file.not.readable = Passwortdatei kann nicht gelesen werden. -agent.err.password.file.read.failed = Passwortdatei konnte nicht gelesen werden. -agent.err.password.file.notfound = Passwortdatei konnte nicht gefunden werden. -agent.err.password.file.access.notrestricted = Lesezugriff auf Passwortdatei muss eingeschr\u00e4nkt sein. +agent.err.password.file.notset = Es wurde keine Kennwortdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist +agent.err.password.file.not.readable = Kennwortdatei nicht lesbar +agent.err.password.file.read.failed = Kennwortdatei konnte nicht gelesen werden +agent.err.password.file.notfound = Kennwortdatei nicht gefunden +agent.err.password.file.access.notrestricted = Lesezugriff auf Kennwortdatei muss eingeschr\u00E4nkt werden -agent.err.access.file.notset = Es wurde keine Zugriffsdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist. -agent.err.access.file.not.readable = Zugriffsdatei kann nicht gelesen werden. -agent.err.access.file.read.failed = Zugriffsdatei konnte nicht gelesen werden. -agent.err.access.file.notfound = Zugriffsdatei konnte nicht gefunden werden. +agent.err.access.file.notset = Es wurde keine Zugriffsdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist +agent.err.access.file.not.readable = Zugriffsdatei kann nicht gelesen werden +agent.err.access.file.read.failed = Zugriffsdatei konnte nicht gelesen werden +agent.err.access.file.notfound = Zugriffsdatei nicht gefunden -agent.err.connector.server.io.error = Fehler bei der JMX-Anschlussserver-Kommunikation +agent.err.connector.server.io.error = Fehler bei JMX-Connector-Serverkommunikation -agent.err.invalid.option = Ung\u00fcltige Option angegeben -agent.err.invalid.snmp.port = Ung\u00fcltige Nummer f\u00fcr com.sun.management.snmp.port -agent.err.invalid.snmp.trap.port = Ung\u00fcltige Nummer f\u00fcr com.sun.management.snmp.trap +agent.err.invalid.option = Ung\u00FCltige Option angegeben +agent.err.invalid.snmp.port = Ung\u00FCltige Nummer f\u00FCr com.sun.management.snmp.port +agent.err.invalid.snmp.trap.port = Ung\u00FCltige Nummer f\u00FCr com.sun.management.snmp.trap agent.err.unknown.snmp.interface = Unbekannte SNMP-Schnittstelle -agent.err.acl.file.notset = Es wurde keine SNMP-ACL-Datei angegeben, obwohl com.sun.management.snmp.acl auf \"true\" gesetzt ist. -agent.err.acl.file.notfound = SNMP-ACL-Datei konnte nicht gefunden werden. -agent.err.acl.file.not.readable = SNMP-ACL-Datei kann nicht gelesen werden. -agent.err.acl.file.read.failed = SNMP-ACL-Datei konnte nicht gelesen werden. -agent.err.acl.file.access.notrestricted = Lesezugriff auf Passwortdatei muss eingeschr\u00e4nkt sein. +agent.err.acl.file.notset = Es wurde keine SNMP-ACL-Datei angegeben, obwohl com.sun.management.snmp.acl auf \"true\" gesetzt ist +agent.err.acl.file.notfound = SNMP-ACL-Datei konnte nicht gefunden werden +agent.err.acl.file.not.readable = SNMP-ACL-Datei kann nicht gelesen werden +agent.err.acl.file.read.failed = SNMP-ACL-Datei konnte nicht gelesen werden +agent.err.acl.file.access.notrestricted = Lesezugriff auf Kennwortdatei muss eingeschr\u00E4nkt werden -agent.err.snmp.adaptor.start.failed = Fehler beim Starten des SNMP-Adapters mit Adresse -agent.err.snmp.mib.init.failed = Initialisierung von SNMP-MIB fehlgeschlagen mit Fehler +agent.err.snmp.adaptor.start.failed = Fehler beim Starten des SNMP-Adaptors mit Adresse +agent.err.snmp.mib.init.failed = Initialisierung von SNMP-MIB nicht erfolgreich mit Fehler -jmxremote.ConnectorBootstrap.initialize = JMX-Anschlussserver starten: +jmxremote.ConnectorBootstrap.initialize = JMX-Connector-Server starten: jmxremote.ConnectorBootstrap.initialize.noAuthentication = Keine Authentifizierung -jmxremote.ConnectorBootstrap.initialize.ready = JMX-Anschluss bereit unter: {0} -jmxremote.ConnectorBootstrap.initialize.password.readonly = Lesezugriff auf Passwortdatei muss eingeschr\u00e4nkt sein. {0} -jmxremote.ConnectorBootstrap.initialize.file.readonly = Lesezugriff auf die Datei muss eingeschr\u00e4nkt sein: {0} +jmxremote.ConnectorBootstrap.initialize.ready = JMX-Connector bereit unter: {0} +jmxremote.ConnectorBootstrap.initialize.password.readonly = Lesezugriff auf Kennwortdatei muss eingeschr\u00E4nkt werden: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = Lesezugriff auf Datei muss eingeschr\u00E4nkt werden: {0} -jmxremote.AdaptorBootstrap.getTargetList.processing = ACL verarbeiten -jmxremote.AdaptorBootstrap.getTargetList.adding = Ziel hinzuf\u00fcgen: {0} -jmxremote.AdaptorBootstrap.getTargetList.starting = Adapterserver starten: -jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adapter bereit. -jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-Adapter bereit unter: {0}:{1} +jmxremote.AdaptorBootstrap.getTargetList.processing = ACL wird verarbeitet +jmxremote.AdaptorBootstrap.getTargetList.adding = Ziel hinzuf\u00FCgen: {0} +jmxremote.AdaptorBootstrap.getTargetList.starting = Adaptor-Server starten: +jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptor bereit. +jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-Adaptor bereit unter: {0}:{1} jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} beenden diff --git a/jdk/src/share/classes/sun/management/resources/agent_es.properties b/jdk/src/share/classes/sun/management/resources/agent_es.properties index 973b39385f1..ba6782208df 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_es.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_es.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2005, 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 @@ -28,65 +28,65 @@ # these are the same as the non-localized level name. agent.err.error = Error -agent.err.exception = Excepci\u00f3n generada por el agente +agent.err.exception = Excepci\u00F3n devuelta por el agente agent.err.warning = Advertencia -agent.err.configfile.notfound = No se ha encontrado el archivo de configuraci\u00f3n -agent.err.configfile.failed = Error al leer el archivo de configuraci\u00f3n -agent.err.configfile.closed.failed = Error al cerrar el archivo de configuraci\u00f3n -agent.err.configfile.access.denied = Acceso denegado al archivo de configuraci\u00f3n +agent.err.configfile.notfound = No se ha encontrado el archivo de configuraci\u00F3n +agent.err.configfile.failed = Fallo al leer el archivo de configuraci\u00F3n +agent.err.configfile.closed.failed = Fallo al cerrar el archivo de configuraci\u00F3n +agent.err.configfile.access.denied = Acceso denegado al archivo de configuraci\u00F3n -agent.err.exportaddress.failed = Error de exportaci\u00f3n de la direcci\u00f3n del conector JMX al b\u00fafer de instrumentaci\u00f3n +agent.err.exportaddress.failed = Fallo al exportar la direcci\u00F3n del conector JMX al buffer de instrumentaci\u00F3n -agent.err.agentclass.notfound = Clase de agente de administraci\u00f3n no encontrada -agent.err.agentclass.failed = Error de clase de agente de administraci\u00f3n +agent.err.agentclass.notfound = Clase de agente de gesti\u00F3n no encontrada +agent.err.agentclass.failed = Fallo de clase de agente de gesti\u00F3n agent.err.premain.notfound = premain(String) no existe en la clase del agente agent.err.agentclass.access.denied = Acceso denegado a premain(String) -agent.err.invalid.agentclass = Valor de propiedad com.sun.management.agent.class no v\u00e1lido +agent.err.invalid.agentclass = Valor de propiedad com.sun.management.agent.class no v\u00E1lido -agent.err.invalid.jmxremote.port = N\u00famero com.sun.management.jmxremote.port no v\u00e1lido +agent.err.invalid.jmxremote.port = N\u00FAmero com.sun.management.jmxremote.port no v\u00E1lido agent.err.file.not.set = Archivo no especificado agent.err.file.not.readable = Archivo ilegible -agent.err.file.read.failed = Error al leer el archivo +agent.err.file.read.failed = Fallo al leer el archivo agent.err.file.not.found = Archivo no encontrado -agent.err.file.access.not.restricted = Se debe restringir el acceso de lectura al archivo +agent.err.file.access.not.restricted = El acceso de lectura al archivo debe ser restringido -agent.err.password.file.notset = El archivo de contrase\u00f1as no se ha especificado, pero com.sun.management.jmxremote.authenticate=true -agent.err.password.file.not.readable = No se puede leer el archivo de contrase\u00f1as -agent.err.password.file.read.failed = Error al leer el archivo de contrase\u00f1as -agent.err.password.file.notfound = Archivo de contrase\u00f1as no encontrado -agent.err.password.file.access.notrestricted = Se debe restringir el acceso de lectura al archivo de contrase\u00f1as +agent.err.password.file.notset = El archivo de contrase\u00F1as no se ha especificado, pero com.sun.management.jmxremote.authenticate=true +agent.err.password.file.not.readable = No se puede leer el archivo de contrase\u00F1as +agent.err.password.file.read.failed = Fallo al leer el archivo de contrase\u00F1as +agent.err.password.file.notfound = Archivo de contrase\u00F1as no encontrado +agent.err.password.file.access.notrestricted = Se debe restringir el acceso de lectura al archivo de contrase\u00F1as agent.err.access.file.notset = El archivo de acceso no se ha especificado, pero com.sun.management.jmxremote.authenticate=true agent.err.access.file.not.readable = No se puede leer el archivo de acceso -agent.err.access.file.read.failed = Error al leer el archivo de acceso +agent.err.access.file.read.failed = Fallo al leer el archivo de acceso agent.err.access.file.notfound = Archivo de acceso no encontrado -agent.err.connector.server.io.error = Error de comunicaci\u00f3n con el servidor de conector JMX +agent.err.connector.server.io.error = Error de comunicaci\u00F3n con el servidor de conector JMX -agent.err.invalid.option = Opci\u00f3n especificada no v\u00e1lida -agent.err.invalid.snmp.port = N\u00famero com.sun.management.snmp.port no v\u00e1lido -agent.err.invalid.snmp.trap.port = N\u00famero com.sun.management.snmp.trap no v\u00e1lido -agent.err.unknown.snmp.interface = Interfaz SNMP desconocido -agent.err.acl.file.notset = No se ha especificado ning\u00fan archivo ACL de SNMP, pero com.sun.management.snmp.acl=true +agent.err.invalid.option = Opci\u00F3n especificada no v\u00E1lida +agent.err.invalid.snmp.port = N\u00FAmero de com.sun.management.snmp.port no v\u00E1lido +agent.err.invalid.snmp.trap.port = N\u00FAmero de com.sun.management.snmp.trap no v\u00E1lido +agent.err.unknown.snmp.interface = Interfaz SNMP desconocida +agent.err.acl.file.notset = No se ha especificado ning\u00FAn archivo ACL de SNMP, pero com.sun.management.snmp.acl=true agent.err.acl.file.notfound = Archivo ACL de SNMP no encontrado agent.err.acl.file.not.readable = No se puede leer el archivo ACL de SNMP -agent.err.acl.file.read.failed = Error al leer el archivo ACL de SNMP -agent.err.acl.file.access.notrestricted = Se debe restringir el acceso de lectura al archivo de contrase\u00f1as +agent.err.acl.file.read.failed = Fallo al leer el archivo ACL de SNMP +agent.err.acl.file.access.notrestricted = Se debe restringir el acceso de lectura al archivo de contrase\u00F1as -agent.err.snmp.adaptor.start.failed = No se ha podido iniciar el adaptador de SNMP con la direcci\u00f3n -agent.err.snmp.mib.init.failed = No se ha podido inicializar el MIB de SNMP con error +agent.err.snmp.adaptor.start.failed = Fallo al iniciar el adaptador de SNMP con la direcci\u00F3n +agent.err.snmp.mib.init.failed = Fallo al inicializar el MIB de SNMP con error jmxremote.ConnectorBootstrap.initialize = Iniciando servidor de conector JMX: -jmxremote.ConnectorBootstrap.initialize.noAuthentication = Sin autenticaci\u00f3n +jmxremote.ConnectorBootstrap.initialize.noAuthentication = Sin autenticaci\u00F3n jmxremote.ConnectorBootstrap.initialize.ready = Conector JMX listo en: {0} -jmxremote.ConnectorBootstrap.initialize.password.readonly = Se debe restringir el acceso de lectura al archivo de contrase\u00f1as: {0} -jmxremote.ConnectorBootstrap.initialize.file.readonly = Se debe restringir el acceso de lectura al archivo: {0} +jmxremote.ConnectorBootstrap.initialize.password.readonly = Se debe restringir el acceso de lectura al archivo de contrase\u00F1as: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = El acceso de lectura al archivo debe ser restringido: {0} jmxremote.AdaptorBootstrap.getTargetList.processing = Procesando ACL jmxremote.AdaptorBootstrap.getTargetList.adding = Agregando destino: {0} -jmxremote.AdaptorBootstrap.getTargetList.starting = Iniciar servidor adaptador: +jmxremote.AdaptorBootstrap.getTargetList.starting = Iniciando servidor de adaptador: jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptador listo. jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptador SNMP listo en: {0}:{1} -jmxremote.AdaptorBootstrap.getTargetList.terminate = finalizar {0} +jmxremote.AdaptorBootstrap.getTargetList.terminate = terminar {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_fr.properties b/jdk/src/share/classes/sun/management/resources/agent_fr.properties index 0e1e94a8b3e..70015727725 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_fr.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_fr.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2005, 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 @@ -28,65 +28,65 @@ # these are the same as the non-localized level name. agent.err.error = Erreur -agent.err.exception = Exception envoy\u00e9e par l'agent +agent.err.exception = Exception envoy\u00E9e par l'agent agent.err.warning = Avertissement agent.err.configfile.notfound = Fichier de configuration introuvable agent.err.configfile.failed = Impossible de lire le fichier de configuration agent.err.configfile.closed.failed = Impossible de fermer le fichier de configuration -agent.err.configfile.access.denied = Acc\u00e8s au fichier de configuration refus\u00e9 +agent.err.configfile.access.denied = Acc\u00E8s refus\u00E9 au fichier de configuration agent.err.exportaddress.failed = Impossible d'exporter l'adresse du connecteur JMX dans le tampon d'instrumentation agent.err.agentclass.notfound = Classe d'agents de gestion introuvable -agent.err.agentclass.failed = Une erreur s'est produite au niveau de la classe d'agents de gestion +agent.err.agentclass.failed = Echec de la classe d'agents de gestion agent.err.premain.notfound = premain(String) n'existe pas dans la classe d'agents -agent.err.agentclass.access.denied = Acc\u00e8s \u00e0 premain(String) refus\u00e9 -agent.err.invalid.agentclass = Valeur de propri\u00e9t\u00e9 com.sun.management.agent.class incorrecte +agent.err.agentclass.access.denied = Acc\u00E8s \u00E0 premain(String) refus\u00E9 +agent.err.invalid.agentclass = Valeur de propri\u00E9t\u00E9 com.sun.management.agent.class incorrecte -agent.err.invalid.jmxremote.port = Num\u00e9ro com.sun.management.jmxremote.port incorrect +agent.err.invalid.jmxremote.port = Num\u00E9ro com.sun.management.jmxremote.port incorrect -agent.err.file.not.set = Fichier non sp\u00e9cifi\u00e9 +agent.err.file.not.set = Fichier non sp\u00E9cifi\u00E9 agent.err.file.not.readable = Fichier illisible agent.err.file.read.failed = Impossible de lire le fichier agent.err.file.not.found = Fichier introuvable -agent.err.file.access.not.restricted = L'acc\u00e8s \u00e0 la lecture du fichier doit \u00eatre limit\u00e9 +agent.err.file.access.not.restricted = L'acc\u00E8s en lecture au fichier doit \u00EAtre limit\u00E9 -agent.err.password.file.notset = Le fichier de mots de passe n'est pas sp\u00e9cifi\u00e9 mais com.sun.management.jmxremote.authenticate=true +agent.err.password.file.notset = Le fichier de mots de passe n'est pas sp\u00E9cifi\u00E9 mais com.sun.management.jmxremote.authenticate=true agent.err.password.file.not.readable = Fichier de mots de passe illisible agent.err.password.file.read.failed = Impossible de lire le fichier de mots de passe agent.err.password.file.notfound = Fichier de mots de passe introuvable -agent.err.password.file.access.notrestricted = L'acc\u00e8s \u00e0 la lecture du fichier de mots de passe doit \u00eatre limit\u00e9 +agent.err.password.file.access.notrestricted = L'acc\u00E8s en lecture au fichier de mots de passe doit \u00EAtre limit\u00E9 -agent.err.access.file.notset = Le fichier d'acc\u00e8s n'est pas sp\u00e9cifi\u00e9 mais com.sun.management.jmxremote.authenticate=true -agent.err.access.file.not.readable = Fichier d'acc\u00e8s illisible -agent.err.access.file.read.failed = Impossible de lire le fichier d'acc\u00e8s -agent.err.access.file.notfound = Fichier d'acc\u00e8s introuvable +agent.err.access.file.notset = Le fichier d'acc\u00E8s n'est pas sp\u00E9cifi\u00E9 mais com.sun.management.jmxremote.authenticate=true +agent.err.access.file.not.readable = Fichier d'acc\u00E8s illisible +agent.err.access.file.read.failed = Impossible de lire le fichier d'acc\u00E8s +agent.err.access.file.notfound = Fichier d'acc\u00E8s introuvable agent.err.connector.server.io.error = Erreur de communication avec le serveur du connecteur JMX -agent.err.invalid.option = Option sp\u00e9cifi\u00e9e non valide -agent.err.invalid.snmp.port = Num\u00e9ro com.sun.management.snmp.port incorrect -agent.err.invalid.snmp.trap.port = Num\u00e9ro com.sun.management.snmp.trap incorrect +agent.err.invalid.option = Option sp\u00E9cifi\u00E9e non valide +agent.err.invalid.snmp.port = Num\u00E9ro com.sun.management.snmp.port incorrect +agent.err.invalid.snmp.trap.port = Num\u00E9ro com.sun.management.snmp.trap incorrect agent.err.unknown.snmp.interface = Interface SNMP inconnue -agent.err.acl.file.notset = Aucun fichier SNMP ACL n'est sp\u00e9cifi\u00e9 mais com.sun.management.snmp.acl=true -agent.err.acl.file.notfound = Fichier SNMP ACL introuvable -agent.err.acl.file.not.readable = Fichier SNMP ACL illisible -agent.err.acl.file.read.failed = Impossible de lire le fichier SNMP ACL -agent.err.acl.file.access.notrestricted = L'acc\u00e8s \u00e0 la lecture du fichier de mots de passe doit \u00eatre limit\u00e9 +agent.err.acl.file.notset = Aucun fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP n'est sp\u00E9cifi\u00E9 mais com.sun.management.snmp.acl=true +agent.err.acl.file.notfound = Fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP introuvable +agent.err.acl.file.not.readable = Fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP illisible +agent.err.acl.file.read.failed = Impossible de lire le fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP +agent.err.acl.file.access.notrestricted = L'acc\u00E8s en lecture au fichier de mots de passe doit \u00EAtre limit\u00E9 -agent.err.snmp.adaptor.start.failed = Impossible de d\u00e9marrer l'adaptateur SNMP avec l'adresse +agent.err.snmp.adaptor.start.failed = Impossible de d\u00E9marrer l'adaptateur SNMP avec l'adresse agent.err.snmp.mib.init.failed = Impossible d'initialiser SNMP MIB avec l'erreur -jmxremote.ConnectorBootstrap.initialize = D\u00e9marrage du serveur du connecteur JMX : +jmxremote.ConnectorBootstrap.initialize = D\u00E9marrage du serveur du connecteur JMX : jmxremote.ConnectorBootstrap.initialize.noAuthentication = Pas d'authentification -jmxremote.ConnectorBootstrap.initialize.ready = Connecteur JMX pr\u00eat \u00e0 : {0} -jmxremote.ConnectorBootstrap.initialize.password.readonly = L''acc\u00e8s \u00e0 la lecture du fichier de mots de passe doit \u00eatre limit\u00e9 : {0} -jmxremote.ConnectorBootstrap.initialize.file.readonly = L''acc\u00e8s \u00e0 la lecture du fichier doit \u00eatre limit\u00e9\u00a0: {0} +jmxremote.ConnectorBootstrap.initialize.ready = Connecteur JMX pr\u00EAt \u00E0 : {0} +jmxremote.ConnectorBootstrap.initialize.password.readonly = L''acc\u00E8s en lecture au fichier de mots de passe doit \u00EAtre limit\u00E9 : {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = L''acc\u00E8s en lecture au fichier doit \u00EAtre limit\u00E9 : {0} -jmxremote.AdaptorBootstrap.getTargetList.processing = Traitement d'ACL +jmxremote.AdaptorBootstrap.getTargetList.processing = Traitement de la liste de contr\u00F4le d'acc\u00E8s (ACL) jmxremote.AdaptorBootstrap.getTargetList.adding = Ajout de la cible : {0} -jmxremote.AdaptorBootstrap.getTargetList.starting = D\u00e9marrage du serveur de l'adaptateur : -jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptateur pr\u00eat. -jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptateur SNMP pr\u00eat sur : {0}:{1} +jmxremote.AdaptorBootstrap.getTargetList.starting = D\u00E9marrage du serveur de l'adaptateur : +jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptateur pr\u00EAt. +jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptateur SNMP pr\u00EAt sur : {0}:{1} jmxremote.AdaptorBootstrap.getTargetList.terminate = terminer {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_it.properties b/jdk/src/share/classes/sun/management/resources/agent_it.properties index e16314817cf..1e2da1e6c86 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_it.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_it.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2005, 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 @@ -29,7 +29,7 @@ agent.err.error = Errore agent.err.exception = Eccezione dell'agente -agent.err.warning = Avviso +agent.err.warning = Avvertenza agent.err.configfile.notfound = File di configurazione non trovato agent.err.configfile.failed = Errore di lettura file di configurazione @@ -42,23 +42,23 @@ agent.err.agentclass.notfound = Classe agente gestione non trovata agent.err.agentclass.failed = Errore classe agente gestione agent.err.premain.notfound = premain(String) non esiste nella classe agente agent.err.agentclass.access.denied = Accesso negato a premain(String) -agent.err.invalid.agentclass = Valore propriet\u00e0 com.sun.management.agent.class non valido +agent.err.invalid.agentclass = Valore propriet\u00E0 com.sun.management.agent.class non valido agent.err.invalid.jmxremote.port = Numero com.sun.management.jmxremote.port non valido agent.err.file.not.set = File non specificato agent.err.file.not.readable = File non leggibile -agent.err.file.read.failed = Lettura del file non riuscita +agent.err.file.read.failed = Errore di lettura file agent.err.file.not.found = File non trovato -agent.err.file.access.not.restricted = L'accesso in lettura al file deve essere limitato +agent.err.file.access.not.restricted = Limitare l'accesso in lettura al file -agent.err.password.file.notset = Il file password non \u00e8 specificato ma com.sun.management.jmxremote.authenticate=true -agent.err.password.file.not.readable = File password non leggibile -agent.err.password.file.read.failed = Errore di lettura file password -agent.err.password.file.notfound = File password non trovato -agent.err.password.file.access.notrestricted = Limitare l'accesso in lettura al file password +agent.err.password.file.notset = Il password file non \u00E8 specificato ma com.sun.management.jmxremote.authenticate=true +agent.err.password.file.not.readable = Password file non leggibile +agent.err.password.file.read.failed = Errore di lettura password file +agent.err.password.file.notfound = Password file non trovato +agent.err.password.file.access.notrestricted = Limitare l'accesso in lettura al password file -agent.err.access.file.notset = Il file di accesso non \u00e8 specificato ma com.sun.management.jmxremote.authenticate=true +agent.err.access.file.notset = Il file di accesso non \u00E8 specificato ma com.sun.management.jmxremote.authenticate=true agent.err.access.file.not.readable = File di accesso non leggibile agent.err.access.file.read.failed = Errore di lettura file di accesso agent.err.access.file.notfound = File di accesso non trovato @@ -73,19 +73,19 @@ agent.err.acl.file.notset = Nessun file SNMP ACL specificato ma com.sun agent.err.acl.file.notfound = File SNMP ACL non trovato agent.err.acl.file.not.readable = File SNMP ACL non leggibile agent.err.acl.file.read.failed = Errore di lettura file SNMP ACL -agent.err.acl.file.access.notrestricted = Limitare l'accesso in lettura al file password +agent.err.acl.file.access.notrestricted = Limitare l'accesso in lettura al password file agent.err.snmp.adaptor.start.failed = Impossibile avviare l'adattatore SNMP con indirizzo -agent.err.snmp.mib.init.failed = Impossibile inizializzare MIB SNMP, errore +agent.err.snmp.mib.init.failed = Impossibile inizializzare MIB SNMP con errore jmxremote.ConnectorBootstrap.initialize = Avvio del server connettore JMX: jmxremote.ConnectorBootstrap.initialize.noAuthentication = Nessuna autenticazione jmxremote.ConnectorBootstrap.initialize.ready = Connettore JMX pronto in: {0} -jmxremote.ConnectorBootstrap.initialize.password.readonly = Limitare l''accesso in lettura al file password: {0} +jmxremote.ConnectorBootstrap.initialize.password.readonly = Limitare l''accesso in lettura al password file: {0} jmxremote.ConnectorBootstrap.initialize.file.readonly = Limitare l''accesso in lettura al file: {0} jmxremote.AdaptorBootstrap.getTargetList.processing = Elaborazione ACL -jmxremote.AdaptorBootstrap.getTargetList.adding = Aggiunta della destinazione: {0} +jmxremote.AdaptorBootstrap.getTargetList.adding = Aggiunta destinazione: {0} jmxremote.AdaptorBootstrap.getTargetList.starting = Avvio del server adattatore: jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adattatore pronto. jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adattatore SNMP pronto in: {0}:{1} diff --git a/jdk/src/share/classes/sun/management/resources/agent_ja.properties b/jdk/src/share/classes/sun/management/resources/agent_ja.properties index 8d747f55a89..fb0ccd3d5be 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_ja.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_ja.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2005, 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 @@ -27,66 +27,66 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -agent.err.error = \u30a8\u30e9\u30fc -agent.err.exception = \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\u3057\u307e\u3057\u305f\u3002 -agent.err.warning = \u8b66\u544a +agent.err.error = \u30A8\u30E9\u30FC +agent.err.exception = \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u307E\u3057\u305F +agent.err.warning = \u8B66\u544A -agent.err.configfile.notfound = \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -agent.err.configfile.failed = \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -agent.err.configfile.closed.failed = \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u30af\u30ed\u30fc\u30ba\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -agent.err.configfile.access.denied = \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002 +agent.err.configfile.notfound = \u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +agent.err.configfile.failed = \u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F +agent.err.configfile.closed.failed = \u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u3092\u9589\u3058\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F +agent.err.configfile.access.denied = \u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F -agent.err.exportaddress.failed = JMX \u30b3\u30cd\u30af\u30bf\u30a2\u30c9\u30ec\u30b9\u306e\u8a08\u6e2c\u30d0\u30c3\u30d5\u30a1\u30fc\u3078\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f +agent.err.exportaddress.failed = JMX\u30B3\u30CD\u30AF\u30BF\u30FB\u30A2\u30C9\u30EC\u30B9\u306E\u8A08\u6E2C\u30D0\u30C3\u30D5\u30A1\u3078\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F -agent.err.agentclass.notfound = \u7ba1\u7406\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30af\u30e9\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -agent.err.agentclass.failed = \u7ba1\u7406\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30af\u30e9\u30b9\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -agent.err.premain.notfound = premain(String) \u304c\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30af\u30e9\u30b9\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 -agent.err.agentclass.access.denied = premain(String) \u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002 -agent.err.invalid.agentclass = com.sun.management.agent.class \u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u306e\u5024\u304c\u4e0d\u6b63\u3067\u3059\u3002 +agent.err.agentclass.notfound = \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +agent.err.agentclass.failed = \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30AF\u30E9\u30B9\u304C\u5931\u6557\u3057\u307E\u3057\u305F +agent.err.premain.notfound = premain(String)\u304C\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30AF\u30E9\u30B9\u306B\u5B58\u5728\u3057\u307E\u305B\u3093 +agent.err.agentclass.access.denied = premain(String)\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F +agent.err.invalid.agentclass = com.sun.management.agent.class\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u5024\u304C\u7121\u52B9\u3067\u3059 -agent.err.invalid.jmxremote.port = com.sun.management.jmxremote.port \u306e\u756a\u53f7\u304c\u4e0d\u6b63\u3067\u3059\u3002 +agent.err.invalid.jmxremote.port = com.sun.management.jmxremote.port\u306E\u756A\u53F7\u304C\u7121\u52B9\u3067\u3059 -agent.err.file.not.set = \u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -agent.err.file.not.readable = \u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 -agent.err.file.read.failed = \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -agent.err.file.not.found = \u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 -agent.err.file.access.not.restricted = \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +agent.err.file.not.set = \u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +agent.err.file.not.readable = \u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +agent.err.file.read.failed = \u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F +agent.err.file.not.found = \u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F +agent.err.file.access.not.restricted = \u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -agent.err.password.file.notset = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001com.sun.management.jmxremote.authenticate=true \u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -agent.err.password.file.not.readable = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 -agent.err.password.file.read.failed = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -agent.err.password.file.notfound = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -agent.err.password.file.access.notrestricted = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +agent.err.password.file.notset = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u304C\u3001com.sun.management.jmxremote.authenticate=true\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 +agent.err.password.file.not.readable = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +agent.err.password.file.read.failed = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F +agent.err.password.file.notfound = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +agent.err.password.file.access.notrestricted = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -agent.err.access.file.notset = \u30a2\u30af\u30bb\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001com.sun.management.jmxremote.authenticate=true \u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -agent.err.access.file.not.readable = \u30a2\u30af\u30bb\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 -agent.err.access.file.read.failed = \u30a2\u30af\u30bb\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -agent.err.access.file.notfound = \u30a2\u30af\u30bb\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +agent.err.access.file.notset = \u30A2\u30AF\u30BB\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u304C\u3001com.sun.management.jmxremote.authenticate=true\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 +agent.err.access.file.not.readable = \u30A2\u30AF\u30BB\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +agent.err.access.file.read.failed = \u30A2\u30AF\u30BB\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F +agent.err.access.file.notfound = \u30A2\u30AF\u30BB\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 -agent.err.connector.server.io.error = JMX \u30b3\u30cd\u30af\u30bf\u30b5\u30fc\u30d0\u306e\u901a\u4fe1\u30a8\u30e9\u30fc +agent.err.connector.server.io.error = JMX\u30B3\u30CD\u30AF\u30BF\u30FB\u30B5\u30FC\u30D0\u30FC\u306E\u901A\u4FE1\u30A8\u30E9\u30FC -agent.err.invalid.option = \u7121\u52b9\u306a\u5f15\u6570\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f -agent.err.invalid.snmp.port = com.sun.management.snmp.port \u306e\u756a\u53f7\u304c\u4e0d\u6b63\u3067\u3059\u3002 -agent.err.invalid.snmp.trap.port = com.sun.management.snmp.trap \u306e\u756a\u53f7\u304c\u4e0d\u6b63\u3067\u3059\u3002 -agent.err.unknown.snmp.interface = \u4e0d\u660e\u306a SNMP \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002 -agent.err.acl.file.notset = SNMP ACL \u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001com.sun.management.snmp.acl=true \u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -agent.err.acl.file.notfound = SNMP ACL \u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -agent.err.acl.file.not.readable = SNMP ACL \u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 -agent.err.acl.file.read.failed = SNMP ACL \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -agent.err.acl.file.access.notrestricted = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +agent.err.invalid.option = \u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F +agent.err.invalid.snmp.port = com.sun.management.snmp.port\u306E\u756A\u53F7\u304C\u7121\u52B9\u3067\u3059 +agent.err.invalid.snmp.trap.port = com.sun.management.snmp.trap\u306E\u756A\u53F7\u304C\u7121\u52B9\u3067\u3059 +agent.err.unknown.snmp.interface = \u4E0D\u660E\u306ASNMP\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059 +agent.err.acl.file.notset = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u304C\u3001com.sun.management.snmp.acl=true\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 +agent.err.acl.file.notfound = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +agent.err.acl.file.not.readable = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +agent.err.acl.file.read.failed = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F +agent.err.acl.file.access.notrestricted = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -agent.err.snmp.adaptor.start.failed = \u3053\u306e\u30a2\u30c9\u30ec\u30b9\u3067 SNMP \u30a2\u30c0\u30d7\u30bf\u3092\u958b\u59cb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -agent.err.snmp.mib.init.failed = \u30a8\u30e9\u30fc\u3067 SNMP MIB \u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +agent.err.snmp.adaptor.start.failed = \u3053\u306E\u30A2\u30C9\u30EC\u30B9\u3067SNMP\u30A2\u30C0\u30D7\u30BF\u3092\u958B\u59CB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F +agent.err.snmp.mib.init.failed = \u30A8\u30E9\u30FC\u3067SNMP MIB\u3092\u521D\u671F\u5316\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F -jmxremote.ConnectorBootstrap.initialize = JMX \u30b3\u30cd\u30af\u30bf\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059: -jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u8a8d\u8a3c\u306a\u3057 -jmxremote.ConnectorBootstrap.initialize.ready = JMX \u30b3\u30cd\u30af\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f: {0} -jmxremote.ConnectorBootstrap.initialize.password.readonly = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: {0} -jmxremote.ConnectorBootstrap.initialize.file.readonly = \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: {0} +jmxremote.ConnectorBootstrap.initialize = JMX\u30B3\u30CD\u30AF\u30BF\u30FB\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059: +jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u8A8D\u8A3C\u306A\u3057 +jmxremote.ConnectorBootstrap.initialize.ready = JMX\u30B3\u30CD\u30AF\u30BF\u306E\u6E96\u5099\u304C\u3067\u304D\u307E\u3057\u305F: {0} +jmxremote.ConnectorBootstrap.initialize.password.readonly = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = \u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0} -jmxremote.AdaptorBootstrap.getTargetList.processing = ACL \u3092\u51e6\u7406\u3057\u3066\u3044\u307e\u3059 -jmxremote.AdaptorBootstrap.getTargetList.adding = \u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059: {0} -jmxremote.AdaptorBootstrap.getTargetList.starting = \u30a2\u30c0\u30d7\u30bf\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059: -jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u30a2\u30c0\u30d7\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f -jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP \u30a2\u30c0\u30d7\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f: {0}:{1} -jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} \u3092\u7d42\u4e86\u3057\u307e\u3059 +jmxremote.AdaptorBootstrap.getTargetList.processing = ACL\u3092\u51E6\u7406\u3057\u3066\u3044\u307E\u3059 +jmxremote.AdaptorBootstrap.getTargetList.adding = \u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u8FFD\u52A0\u3057\u3066\u3044\u307E\u3059: {0} +jmxremote.AdaptorBootstrap.getTargetList.starting = \u30A2\u30C0\u30D7\u30BF\u30FB\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059: +jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u30A2\u30C0\u30D7\u30BF\u306E\u6E96\u5099\u304C\u3067\u304D\u307E\u3057\u305F\u3002 +jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP\u30A2\u30C0\u30D7\u30BF\u306E\u6E96\u5099\u304C\u3067\u304D\u307E\u3057\u305F: {0}:{1} +jmxremote.AdaptorBootstrap.getTargetList.terminate = {0}\u3092\u7D42\u4E86\u3057\u307E\u3059 diff --git a/jdk/src/share/classes/sun/management/resources/agent_ko.properties b/jdk/src/share/classes/sun/management/resources/agent_ko.properties index 62c612cd2af..fccc30869a8 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_ko.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_ko.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2005, 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 @@ -27,66 +27,66 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -agent.err.error = \uc624\ub958 -agent.err.exception = \uc5d0\uc774\uc804\ud2b8\uc5d0 \uc608\uc678 \ubc1c\uc0dd -agent.err.warning = \uacbd\uace0 +agent.err.error = \uC624\uB958 +agent.err.exception = \uC5D0\uC774\uC804\uD2B8\uC5D0 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +agent.err.warning = \uACBD\uACE0 -agent.err.configfile.notfound = \uad6c\uc131 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -agent.err.configfile.failed = \uad6c\uc131 \ud30c\uc77c \uc77d\uae30\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -agent.err.configfile.closed.failed = \uad6c\uc131\ud30c\uc77c\uc744 \ub2eb\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -agent.err.configfile.access.denied = \uad6c\uc131 \ud30c\uc77c\uc5d0 \uc561\uc138\uc2a4\uac00 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +agent.err.configfile.notfound = \uAD6C\uC131 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +agent.err.configfile.failed = \uAD6C\uC131 \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +agent.err.configfile.closed.failed = \uAD6C\uC131 \uD30C\uC77C \uB2EB\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +agent.err.configfile.access.denied = \uAD6C\uC131 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC561\uC138\uC2A4\uAC00 \uAC70\uBD80\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -agent.err.exportaddress.failed = \ubc84\ud37c \uad6c\ud604\uc744 \uc704\ud574 JMX \ucee4\ub125\ud130 \uc8fc\uc18c\ub97c \uac00\uc838\uc624\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. +agent.err.exportaddress.failed = \uAE30\uAE30 \uBC84\uD37C\uB85C JMX \uCEE4\uB125\uD130 \uC8FC\uC18C \uC775\uC2A4\uD3EC\uD2B8\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. -agent.err.agentclass.notfound = \uad00\ub9ac \uc5d0\uc774\uc804\ud2b8 \ud074\ub798\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -agent.err.agentclass.failed = \uad00\ub9ac \uc5d0\uc774\uc804\ud2b8 \ud074\ub798\uc2a4 \uc2e4\ud328 -agent.err.premain.notfound = \uc5d0\uc774\uc804\ud2b8 \ud074\ub798\uc2a4\uc5d0 premain(\ubb38\uc790\uc5f4)\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -agent.err.agentclass.access.denied = premain(\ubb38\uc790\uc5f4)\uc5d0 \uc561\uc138\uc2a4\uac00 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -agent.err.invalid.agentclass = \uc798\ubabb\ub41c com.sun.management.agent.class \uc18d\uc131 \uac12 +agent.err.agentclass.notfound = \uAD00\uB9AC \uC5D0\uC774\uC804\uD2B8 \uD074\uB798\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +agent.err.agentclass.failed = \uAD00\uB9AC \uC5D0\uC774\uC804\uD2B8 \uD074\uB798\uC2A4\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +agent.err.premain.notfound = \uC5D0\uC774\uC804\uD2B8 \uD074\uB798\uC2A4\uC5D0 premain(\uBB38\uC790\uC5F4)\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +agent.err.agentclass.access.denied = premain(\uBB38\uC790\uC5F4)\uC5D0 \uB300\uD55C \uC561\uC138\uC2A4\uAC00 \uAC70\uBD80\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +agent.err.invalid.agentclass = com.sun.management.agent.class \uC18D\uC131 \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. -agent.err.invalid.jmxremote.port = \uc798\ubabb\ub41c com.sun.management.jmxremote.port \ubc88\ud638 +agent.err.invalid.jmxremote.port = com.sun.management.jmxremote.port \uBC88\uD638\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. -agent.err.file.not.set = \ud30c\uc77c\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. -agent.err.file.not.readable = \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -agent.err.file.read.failed = \ud30c\uc77c\uc744 \uc77d\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. -agent.err.file.not.found = \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -agent.err.file.access.not.restricted = \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. +agent.err.file.not.set = \uD30C\uC77C\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. +agent.err.file.not.readable = \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +agent.err.file.read.failed = \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +agent.err.file.not.found = \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +agent.err.file.access.not.restricted = \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4. -agent.err.password.file.notset = com.sun.management.jmxremote.authenticate=true\ub97c \uc81c\uc678\ud55c \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. -agent.err.password.file.not.readable = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -agent.err.password.file.read.failed = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -agent.err.password.file.notfound = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -agent.err.password.file.access.notrestricted = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. +agent.err.password.file.notset = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC9C0\uB9CC com.sun.management.jmxremote.authenticate=true\uC785\uB2C8\uB2E4. +agent.err.password.file.not.readable = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +agent.err.password.file.read.failed = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +agent.err.password.file.notfound = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +agent.err.password.file.access.notrestricted = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4. -agent.err.access.file.notset = com.sun.management.jmxremote.authenticate=true\ub97c \uc81c\uc678\ud55c \uc561\uc138\uc2a4 \ud30c\uc77c\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. -agent.err.access.file.not.readable = \uc561\uc138\uc2a4 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -agent.err.access.file.read.failed = \uc561\uc138\uc2a4 \ud30c\uc77c\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -agent.err.access.file.notfound = \uc561\uc138\uc2a4 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +agent.err.access.file.notset = \uC561\uC138\uC2A4 \uD30C\uC77C\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC9C0\uB9CC com.sun.management.jmxremote.authenticate=true\uC785\uB2C8\uB2E4. +agent.err.access.file.not.readable = \uC561\uC138\uC2A4 \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +agent.err.access.file.read.failed = \uC561\uC138\uC2A4 \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +agent.err.access.file.notfound = \uC561\uC138\uC2A4 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -agent.err.connector.server.io.error = JMX \ucee4\ub125\ud130 \uc11c\ubc84 \ud1b5\uc2e0 \uc624\ub958 +agent.err.connector.server.io.error = JMX \uCEE4\uB125\uD130 \uC11C\uBC84 \uD1B5\uC2E0 \uC624\uB958 -agent.err.invalid.option = \uc9c0\uc815\ub41c \uc635\uc158\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -agent.err.invalid.snmp.port = \uc798\ubabb\ub41c com.sun.management.snmp.port \ubc88\ud638 -agent.err.invalid.snmp.trap.port = \uc798\ubabb\ub41c com.sun.management.snmp.trap \ubc88\ud638 -agent.err.unknown.snmp.interface = \uc54c \uc218 \uc5c6\ub294 SNMP \uc778\ud130\ud398\uc774\uc2a4 -agent.err.acl.file.notset = \uc9c0\uc815\ub41c SNMP ACL \ud30c\uc77c\uc774 \uc5c6\ub294\ub370 com.sun.management.snmp.acl=true\ub85c \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -agent.err.acl.file.notfound = SNMP ACL \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -agent.err.acl.file.not.readable = SNMP ACL \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -agent.err.acl.file.read.failed = SNMP ACL \ud30c\uc77c\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -agent.err.acl.file.access.notrestricted = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. +agent.err.invalid.option = \uBD80\uC801\uD569\uD55C \uC635\uC158\uC774 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +agent.err.invalid.snmp.port = com.sun.management.snmp.port \uBC88\uD638\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +agent.err.invalid.snmp.trap.port = com.sun.management.snmp.trap \uBC88\uD638\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +agent.err.unknown.snmp.interface = \uC54C \uC218 \uC5C6\uB294 SNMP \uC778\uD130\uD398\uC774\uC2A4 +agent.err.acl.file.notset = SNMP ACL \uD30C\uC77C\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC9C0\uB9CC com.sun.management.snmp.acl=true\uC785\uB2C8\uB2E4. +agent.err.acl.file.notfound = SNMP ACL \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +agent.err.acl.file.not.readable = SNMP ACL \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +agent.err.acl.file.read.failed = SNMP ACL \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +agent.err.acl.file.access.notrestricted = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4. -agent.err.snmp.adaptor.start.failed = \uc8fc\uc18c\uac00 \uc788\ub294 SNMP \uc5b4\ub311\ud130\ub97c \uc2dc\uc791\ud558\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -agent.err.snmp.mib.init.failed = \uc624\ub958\uac00 \uc788\ub294 SNMP MIB\ub97c \ucd08\uae30\ud654\ud558\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. +agent.err.snmp.adaptor.start.failed = \uC8FC\uC18C\uAC00 \uC788\uB294 SNMP \uC5B4\uB311\uD130 \uC2DC\uC791\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +agent.err.snmp.mib.init.failed = \uC624\uB958\uB85C \uC778\uD574 SNMP MIB \uCD08\uAE30\uD654\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. -jmxremote.ConnectorBootstrap.initialize = JMX \ucee4\ub125\ud130 \uc11c\ubc84 \uc2dc\uc791: -jmxremote.ConnectorBootstrap.initialize.noAuthentication = \uc778\uc99d \uc5c6\uc74c -jmxremote.ConnectorBootstrap.initialize.ready = \ub2e4\uc74c\uc5d0\uc11c JMX \ucee4\ub125\ud130 \uc900\ube44: {0} -jmxremote.ConnectorBootstrap.initialize.password.readonly = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. {0} -jmxremote.ConnectorBootstrap.initialize.file.readonly = \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. {0} +jmxremote.ConnectorBootstrap.initialize = JMX \uCEE4\uB125\uD130 \uC11C\uBC84\uB97C \uC2DC\uC791\uD558\uB294 \uC911: +jmxremote.ConnectorBootstrap.initialize.noAuthentication = \uC778\uC99D \uC5C6\uC74C +jmxremote.ConnectorBootstrap.initialize.ready = {0}\uC5D0\uC11C JMX \uCEE4\uB125\uD130\uAC00 \uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +jmxremote.ConnectorBootstrap.initialize.password.readonly = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD568: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD568: {0} -jmxremote.AdaptorBootstrap.getTargetList.processing = ACL \ucc98\ub9ac -jmxremote.AdaptorBootstrap.getTargetList.adding = \ub300\uc0c1 \ucd94\uac00: {0} -jmxremote.AdaptorBootstrap.getTargetList.starting = \uc5b4\ub311\ud130 \uc11c\ubc84 \uc2dc\uc791: -jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \uc5b4\ub311\ud130 \uc900\ube44 -jmxremote.AdaptorBootstrap.getTargetList.initialize2 = \ub2e4\uc74c\uc5d0 SNMP \uc5b4\ub311\ud130 \uc900\ube44: {0}:{1} -jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} \uc885\ub8cc +jmxremote.AdaptorBootstrap.getTargetList.processing = ACL\uC744 \uCC98\uB9AC\uD558\uB294 \uC911 +jmxremote.AdaptorBootstrap.getTargetList.adding = \uB300\uC0C1\uC744 \uCD94\uAC00\uD558\uB294 \uC911: {0} +jmxremote.AdaptorBootstrap.getTargetList.starting = \uC5B4\uB311\uD130 \uC11C\uBC84\uB97C \uC2DC\uC791\uD558\uB294 \uC911: +jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \uC5B4\uB311\uD130\uAC00 \uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +jmxremote.AdaptorBootstrap.getTargetList.initialize2 = {0}:{1}\uC5D0\uC11C SNMP \uC5B4\uB311\uD130\uAC00 \uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} \uC885\uB8CC diff --git a/jdk/src/share/classes/sun/management/resources/agent_pt_BR.properties b/jdk/src/share/classes/sun/management/resources/agent_pt_BR.properties index 5ac26eb3a90..c0be836bce0 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_pt_BR.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_pt_BR.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2005, 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 @@ -28,65 +28,65 @@ # these are the same as the non-localized level name. agent.err.error = Erro -agent.err.exception = Exce\u00e7\u00e3o lan\u00e7ada pelo agente -agent.err.warning = Aviso +agent.err.exception = Exce\u00E7\u00E3o gerada pelo agente +agent.err.warning = Advert\u00EAncia -agent.err.configfile.notfound = Arquivo de configura\u00e7\u00e3o n\u00e3o encontrado -agent.err.configfile.failed = Falha ao ler o arquivo de configura\u00e7\u00e3o -agent.err.configfile.closed.failed = Falha ao fechar o arquivo de configura\u00e7\u00e3o -agent.err.configfile.access.denied = Acesso negado ao arquivo de configura\u00e7\u00e3o +agent.err.configfile.notfound = Arquivo de configura\u00E7\u00E3o n\u00E3o encontrado +agent.err.configfile.failed = Falha ao ler o arquivo de configura\u00E7\u00E3o +agent.err.configfile.closed.failed = Falha ao fechar o arquivo de configura\u00E7\u00E3o +agent.err.configfile.access.denied = Acesso negado ao arquivo de configura\u00E7\u00E3o -agent.err.exportaddress.failed = Falha na exporta\u00e7\u00e3o do endere\u00e7o do conector JMX para o buffer de instrumenta\u00e7\u00e3o +agent.err.exportaddress.failed = Falha na exporta\u00E7\u00E3o do endere\u00E7o do conector JMX para o buffer de instrumenta\u00E7\u00E3o -agent.err.agentclass.notfound = Classe do agente de gerenciamento n\u00e3o encontrada -agent.err.agentclass.failed = Classe do agente de gerenciamento falha -agent.err.premain.notfound = premain(String) n\u00e3o existe na classe do agente +agent.err.agentclass.notfound = Classe do agente de gerenciamento n\u00E3o encontrada +agent.err.agentclass.failed = Falha na classe do agente de gerenciamento +agent.err.premain.notfound = premain(String) n\u00E3o existe na classe do agente agent.err.agentclass.access.denied = Acesso negado a premain(String) -agent.err.invalid.agentclass = Valor inv\u00e1lido da propriedade com.sun.management.agent.class +agent.err.invalid.agentclass = Valor inv\u00E1lido da propriedade com.sun.management.agent.class -agent.err.invalid.jmxremote.port = N\u00famero inv\u00e1lido de com.sun.management.jmxremote.port +agent.err.invalid.jmxremote.port = N\u00FAmero inv\u00E1lido de com.sun.management.jmxremote.port -agent.err.file.not.set = Arquivo n\u00e3o especificado -agent.err.file.not.readable = Arquivo ileg\u00edvel +agent.err.file.not.set = Arquivo n\u00E3o especificado +agent.err.file.not.readable = Arquivo ileg\u00EDvel agent.err.file.read.failed = Falha ao ler o arquivo -agent.err.file.not.found = Arquivo n\u00e3o encontrado +agent.err.file.not.found = Arquivo n\u00E3o encontrado agent.err.file.access.not.restricted = O acesso de leitura do arquivo deve ser limitado -agent.err.password.file.notset = O arquivo de senha n\u00e3o est\u00e1 especificado, mas com.sun.management.jmxremote.authenticate=true -agent.err.password.file.not.readable = Arquivo de senha ileg\u00edvel +agent.err.password.file.notset = O arquivo de senha n\u00E3o est\u00E1 especificado, mas com.sun.management.jmxremote.authenticate=true +agent.err.password.file.not.readable = Arquivo de senha ileg\u00EDvel agent.err.password.file.read.failed = Falha ao ler o arquivo de senha -agent.err.password.file.notfound = Arquivo de senha n\u00e3o encontrado +agent.err.password.file.notfound = Arquivo de senha n\u00E3o encontrado agent.err.password.file.access.notrestricted = O acesso de leitura do arquivo de senha deve ser limitado -agent.err.access.file.notset = O arquivo de acesso n\u00e3o est\u00e1 especificado, mas com.sun.management.jmxremote.authenticate=true -agent.err.access.file.not.readable = Arquivo de acesso ileg\u00edvel +agent.err.access.file.notset = O arquivo de acesso n\u00E3o est\u00E1 especificado, mas com.sun.management.jmxremote.authenticate=true +agent.err.access.file.not.readable = Arquivo de acesso ileg\u00EDvel agent.err.access.file.read.failed = Falha ao ler o arquivo de acesso -agent.err.access.file.notfound = Arquivo de acesso n\u00e3o encontrado +agent.err.access.file.notfound = Arquivo de acesso n\u00E3o encontrado -agent.err.connector.server.io.error = Erro de comunica\u00e7\u00e3o do servidor do conector JMX +agent.err.connector.server.io.error = Erro de comunica\u00E7\u00E3o do servidor do conector JMX -agent.err.invalid.option = Op\u00e7\u00e3o especificada inv\u00e1lida -agent.err.invalid.snmp.port = N\u00famero inv\u00e1lido de com.sun.management.snmp.port -agent.err.invalid.snmp.trap.port = N\u00famero inv\u00e1lido de com.sun.management.snmp.trap +agent.err.invalid.option = Op\u00E7\u00E3o especificada inv\u00E1lida +agent.err.invalid.snmp.port = N\u00FAmero inv\u00E1lido de com.sun.management.snmp.port +agent.err.invalid.snmp.trap.port = N\u00FAmero inv\u00E1lido de com.sun.management.snmp.trap agent.err.unknown.snmp.interface = Interface SNMP desconhecida -agent.err.acl.file.notset = N\u00e3o h\u00e1 nenhum arquivo ACL SNMP especificado, mas com.sun.management.snmp.acl=true -agent.err.acl.file.notfound = Arquivo ACL SNMP n\u00e3o encontrado -agent.err.acl.file.not.readable = Arquivo ACL SNMP ileg\u00edvel +agent.err.acl.file.notset = N\u00E3o h\u00E1 um arquivo ACL SNMP especificado, mas com.sun.management.snmp.acl=true +agent.err.acl.file.notfound = Arquivo ACL SNMP n\u00E3o encontrado +agent.err.acl.file.not.readable = Arquivo ACL SNMP ileg\u00EDvel agent.err.acl.file.read.failed = Falha ao ler o arquivo ACL SNMP agent.err.acl.file.access.notrestricted = O acesso de leitura do arquivo de senha deve ser limitado -agent.err.snmp.adaptor.start.failed = Falha ao iniciar o adaptador SNMP com endere\u00e7o +agent.err.snmp.adaptor.start.failed = Falha ao iniciar o adaptador SNMP com endere\u00E7o agent.err.snmp.mib.init.failed = Falha ao inicializar o MIB SNMP com erro -jmxremote.ConnectorBootstrap.initialize = Iniciando o servidor do conector JMX: -jmxremote.ConnectorBootstrap.initialize.noAuthentication = Sem autentica\u00e7\u00e3o +jmxremote.ConnectorBootstrap.initialize = Iniciando o Servidor do Conector JMX: +jmxremote.ConnectorBootstrap.initialize.noAuthentication = Sem autentica\u00E7\u00E3o jmxremote.ConnectorBootstrap.initialize.ready = Conector JMX pronto em: {0} jmxremote.ConnectorBootstrap.initialize.password.readonly = O acesso de leitura do arquivo de senha deve ser limitado: {0} jmxremote.ConnectorBootstrap.initialize.file.readonly = O acesso de leitura do arquivo deve ser limitado: {0} jmxremote.AdaptorBootstrap.getTargetList.processing = Processando ACL jmxremote.AdaptorBootstrap.getTargetList.adding = Adicionando destino: {0} -jmxremote.AdaptorBootstrap.getTargetList.starting = Iniciando o servidor do adaptador: +jmxremote.AdaptorBootstrap.getTargetList.starting = Iniciando o Servidor do Adaptador: jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptador pronto. jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptador SNMP pronto em: {0}:{1} -jmxremote.AdaptorBootstrap.getTargetList.terminate = conclu\u00eddo {0} +jmxremote.AdaptorBootstrap.getTargetList.terminate = encerrar {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_sv.properties b/jdk/src/share/classes/sun/management/resources/agent_sv.properties index 3838dca8104..89335919c4f 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_sv.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_sv.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2005, 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 @@ -29,64 +29,64 @@ agent.err.error = Fel agent.err.exception = Agenten orsakade ett undantag -agent.err.warning = Varning! +agent.err.warning = Varning agent.err.configfile.notfound = Konfigurationsfilen hittades inte -agent.err.configfile.failed = Det g\u00e5r inte att l\u00e4sa konfigurationsfilen -agent.err.configfile.closed.failed = Det g\u00e5r inte att st\u00e4nga konfigurationsfilen -agent.err.configfile.access.denied = \u00c5tkomst till konfigurationsfilen nekad +agent.err.configfile.failed = Kunde inte l\u00E4sa konfigurationsfilen +agent.err.configfile.closed.failed = Kunde inte st\u00E4nga konfigurationsfilen +agent.err.configfile.access.denied = \u00C5tkomst till konfigurationsfilen nekad -agent.err.exportaddress.failed = Det g\u00e5r inte att exportera JMX-anslutningsadressen till instrumentbufferten +agent.err.exportaddress.failed = Kunde inte exportera JMX-anslutningsadressen till instrumentbufferten agent.err.agentclass.notfound = Administrationsagentklassen hittades inte -agent.err.agentclass.failed = Administrationsagentklassen misslyckades +agent.err.agentclass.failed = Administrationsagentklassen utf\u00F6rdes inte agent.err.premain.notfound = premain(String) finns inte i agentklassen -agent.err.agentclass.access.denied = \u00c5tkomst till premain(String) nekad -agent.err.invalid.agentclass = Ogiltigt egenskapsv\u00e4rde f\u00f6r com.sun.management.agent.class +agent.err.agentclass.access.denied = \u00C5tkomst till premain(String) nekad +agent.err.invalid.agentclass = Ogiltigt egenskapsv\u00E4rde f\u00F6r com.sun.management.agent.class agent.err.invalid.jmxremote.port = Ogiltigt com.sun.management.jmxremote.port-nummer -agent.err.file.not.set = Filen har inte angetts. -agent.err.file.not.readable = Filen g\u00e5r inte att l\u00e4sa. -agent.err.file.read.failed = Det gick inte att l\u00e4sa filen +agent.err.file.not.set = Filen \u00E4r inte angiven +agent.err.file.not.readable = Filen \u00E4r inte l\u00E4sbar +agent.err.file.read.failed = Kunde inte l\u00E4sa filen agent.err.file.not.found = Filen hittades inte -agent.err.file.access.not.restricted = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas +agent.err.file.access.not.restricted = Fill\u00E4snings\u00E5tkomst m\u00E5ste begr\u00E4nsas -agent.err.password.file.notset = L\u00f6senordsfilen har inte angetts men com.sun.management.jmxremote.authenticate=true -agent.err.password.file.not.readable = L\u00f6senordsfilen \u00e4r inte l\u00e4sbar -agent.err.password.file.read.failed = Det g\u00e5r inte att l\u00e4sa l\u00f6senordsfilen -agent.err.password.file.notfound = Det g\u00e5r inte att hitta l\u00f6senordsfilen -agent.err.password.file.access.notrestricted = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas +agent.err.password.file.notset = L\u00F6senordsfilen har inte angetts men com.sun.management.jmxremote.authenticate=true +agent.err.password.file.not.readable = L\u00F6senordsfilen \u00E4r inte l\u00E4sbar +agent.err.password.file.read.failed = Kunde inte l\u00E4sa l\u00F6senordsfilen +agent.err.password.file.notfound = Hittar inte l\u00F6senordsfilen +agent.err.password.file.access.notrestricted = L\u00E4sbeh\u00F6righeten f\u00F6r filen m\u00E5ste begr\u00E4nsas -agent.err.access.file.notset = Access-filen har inte angetts men com.sun.management.jmxremote.authenticate=true -agent.err.access.file.not.readable = Access-filen \u00e4r inte l\u00e4sbar -agent.err.access.file.read.failed = Det g\u00e5r inte att l\u00e4sa access-filen +agent.err.access.file.notset = \u00C5tkomstfilen har inte angetts men com.sun.management.jmxremote.authenticate=true +agent.err.access.file.not.readable = Access-filen \u00E4r inte l\u00E4sbar +agent.err.access.file.read.failed = Kunde inte l\u00E4sa \u00E5tkomstfilen agent.err.access.file.notfound = Access-filen hittades inte -agent.err.connector.server.io.error = Serverkommunikationsfel f\u00f6r JMX-anslutning +agent.err.connector.server.io.error = Serverkommunikationsfel f\u00F6r JMX-anslutning -agent.err.invalid.option = Det angivna alternativet \u00e4r ogiltigt +agent.err.invalid.option = Det angivna alternativet \u00E4r ogiltigt agent.err.invalid.snmp.port = Ogiltigt com.sun.management.snmp.port-nummer agent.err.invalid.snmp.trap.port = Ogiltigt com.sun.management.snmp.trap-nummer -agent.err.unknown.snmp.interface = Ok\u00e4nt SNMP-gr\u00e4nssnitt +agent.err.unknown.snmp.interface = Ok\u00E4nt SNMP-gr\u00E4nssnitt agent.err.acl.file.notset = Ingen SNMP ACL-fil har angetts, men com.sun.management.snmp.acl=true agent.err.acl.file.notfound = SNMP ACL-filen hittades inte -agent.err.acl.file.not.readable = SNMP ACL-filen \u00e4r inte l\u00e4sbar -agent.err.acl.file.read.failed = Det g\u00e5r inte att l\u00e4sa filen SNMP ACL -agent.err.acl.file.access.notrestricted = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas +agent.err.acl.file.not.readable = SNMP ACL-filen \u00E4r inte l\u00E4sbar +agent.err.acl.file.read.failed = Kunde inte l\u00E4sa filen SNMP ACL +agent.err.acl.file.access.notrestricted = L\u00E4sbeh\u00F6righeten f\u00F6r filen m\u00E5ste begr\u00E4nsas -agent.err.snmp.adaptor.start.failed = Det g\u00e5r inte att starta SNMP-adaptern med adressen -agent.err.snmp.mib.init.failed = Det g\u00e5r inte att initiera SNMP MIB med felet +agent.err.snmp.adaptor.start.failed = Kunde inte starta SNMP-adaptern med adressen +agent.err.snmp.mib.init.failed = Kunde inte initiera SNMP MIB. Returnerade felet -jmxremote.ConnectorBootstrap.initialize = Startar JMX Connector-servern: +jmxremote.ConnectorBootstrap.initialize = Startar server f\u00F6r JMX-anslutning: jmxremote.ConnectorBootstrap.initialize.noAuthentication = Ingen autentisering -jmxremote.ConnectorBootstrap.initialize.ready = JMX Connector redo p\u00e5: {0} -jmxremote.ConnectorBootstrap.initialize.password.readonly = L\u00e4sbeh\u00f6righeten f\u00f6r l\u00f6senordsfilen m\u00e5ste begr\u00e4nsas: {0} -jmxremote.ConnectorBootstrap.initialize.file.readonly = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas: {0} +jmxremote.ConnectorBootstrap.initialize.ready = JMX-anslutning redo p\u00E5: {0} +jmxremote.ConnectorBootstrap.initialize.password.readonly = L\u00E4sbeh\u00F6righeten f\u00F6r l\u00F6senordsfilen m\u00E5ste begr\u00E4nsas: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = Fill\u00E4snings\u00E5tkomst m\u00E5ste begr\u00E4nsas {0} jmxremote.AdaptorBootstrap.getTargetList.processing = ACL bearbetas -jmxremote.AdaptorBootstrap.getTargetList.adding = M\u00e5l l\u00e4ggs till: {0} +jmxremote.AdaptorBootstrap.getTargetList.adding = M\u00E5l l\u00E4ggs till: {0} jmxremote.AdaptorBootstrap.getTargetList.starting = Adapterservern startas: -jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptern klar. -jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-adaptern redo p\u00e5: {0}:{1} +jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptern redo. +jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-adaptern redo p\u00E5: {0}:{1} jmxremote.AdaptorBootstrap.getTargetList.terminate = avsluta {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties b/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties index 6f52206c603..b2dd90776ff 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2005, 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 @@ -27,66 +27,66 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -agent.err.error = \u9519\u8bef -agent.err.exception = \u4ee3\u7406\u629b\u51fa\u5f02\u5e38 -agent.err.warning = \u8b66\u544a +agent.err.error = \u9519\u8BEF +agent.err.exception = \u4EE3\u7406\u629B\u51FA\u5F02\u5E38\u9519\u8BEF +agent.err.warning = \u8B66\u544A -agent.err.configfile.notfound = \u627e\u4e0d\u5230\u914d\u7f6e\u6587\u4ef6 -agent.err.configfile.failed = \u8bfb\u53d6\u914d\u7f6e\u6587\u4ef6\u5931\u8d25 -agent.err.configfile.closed.failed = \u5173\u95ed\u914d\u7f6e\u6587\u4ef6\u5931\u8d25 -agent.err.configfile.access.denied = \u62d2\u7edd\u8bbf\u95ee\u914d\u7f6e\u6587\u4ef6 +agent.err.configfile.notfound = \u627E\u4E0D\u5230\u914D\u7F6E\u6587\u4EF6 +agent.err.configfile.failed = \u672A\u80FD\u8BFB\u53D6\u914D\u7F6E\u6587\u4EF6 +agent.err.configfile.closed.failed = \u672A\u80FD\u5173\u95ED\u914D\u7F6E\u6587\u4EF6 +agent.err.configfile.access.denied = \u62D2\u7EDD\u8BBF\u95EE\u914D\u7F6E\u6587\u4EF6 -agent.err.exportaddress.failed = \u5c06 JMX \u8fde\u63a5\u5668\u5730\u5740\u5bfc\u51fa\u5230\u6d4b\u8bd5\u8bbe\u5907\u7f13\u51b2\u533a\u5931\u8d25 +agent.err.exportaddress.failed = \u672A\u80FD\u5C06 JMX \u8FDE\u63A5\u5668\u5730\u5740\u5BFC\u51FA\u5230\u68C0\u6D4B\u7F13\u51B2\u533A -agent.err.agentclass.notfound = \u627e\u4e0d\u5230\u7ba1\u7406\u4ee3\u7406\u7c7b -agent.err.agentclass.failed = \u7ba1\u7406\u4ee3\u7406\u7c7b\u5931\u8d25 -agent.err.premain.notfound = \u4ee3\u7406\u7c7b\u4e2d\u4e0d\u5b58\u5728 premain(String) -agent.err.agentclass.access.denied = \u62d2\u7edd\u8bbf\u95ee premain(String) -agent.err.invalid.agentclass = com.sun.management.agent.class \u5c5e\u6027\u503c\u65e0\u6548 +agent.err.agentclass.notfound = \u627E\u4E0D\u5230\u7BA1\u7406\u4EE3\u7406\u7C7B +agent.err.agentclass.failed = \u7BA1\u7406\u4EE3\u7406\u7C7B\u5931\u8D25 +agent.err.premain.notfound = \u4EE3\u7406\u7C7B\u4E2D\u4E0D\u5B58\u5728 premain(String) +agent.err.agentclass.access.denied = \u62D2\u7EDD\u8BBF\u95EE premain(String) +agent.err.invalid.agentclass = com.sun.management.agent.class \u5C5E\u6027\u503C\u65E0\u6548 -agent.err.invalid.jmxremote.port = com.sun.management.jmxremote.port \u7f16\u53f7\u65e0\u6548 +agent.err.invalid.jmxremote.port = com.sun.management.jmxremote.port \u7F16\u53F7\u65E0\u6548 -agent.err.file.not.set = \u672a\u6307\u5b9a\u6587\u4ef6 -agent.err.file.not.readable = \u65e0\u6cd5\u8bfb\u53d6\u6587\u4ef6 -agent.err.file.read.failed = \u8bfb\u53d6\u6587\u4ef6\u5931\u8d25 -agent.err.file.not.found = \u627e\u4e0d\u5230\u6587\u4ef6 -agent.err.file.access.not.restricted = \u5fc5\u987b\u9650\u5236\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee +agent.err.file.not.set = \u672A\u6307\u5B9A\u6587\u4EF6 +agent.err.file.not.readable = \u6587\u4EF6\u4E0D\u53EF\u8BFB\u53D6 +agent.err.file.read.failed = \u672A\u80FD\u8BFB\u53D6\u6587\u4EF6 +agent.err.file.not.found = \u627E\u4E0D\u5230\u6587\u4EF6 +agent.err.file.access.not.restricted = \u5FC5\u987B\u9650\u5236\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650 -agent.err.password.file.notset = \u672a\u6307\u5b9a\u53e3\u4ee4\u6587\u4ef6\uff0c\u4f46 com.sun.management.jmxremote.authenticate=true -agent.err.password.file.not.readable = \u65e0\u6cd5\u8bfb\u53d6\u53e3\u4ee4\u6587\u4ef6 -agent.err.password.file.read.failed = \u8bfb\u53d6\u53e3\u4ee4\u6587\u4ef6\u5931\u8d25 -agent.err.password.file.notfound = \u627e\u4e0d\u5230\u53e3\u4ee4\u6587\u4ef6 -agent.err.password.file.access.notrestricted = \u5fc5\u987b\u9650\u5236\u53e3\u4ee4\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee +agent.err.password.file.notset = \u672A\u6307\u5B9A\u53E3\u4EE4\u6587\u4EF6, \u4F46 com.sun.management.jmxremote.authenticate=true +agent.err.password.file.not.readable = \u53E3\u4EE4\u6587\u4EF6\u4E0D\u53EF\u8BFB\u53D6 +agent.err.password.file.read.failed = \u8BFB\u53D6\u53E3\u4EE4\u6587\u4EF6\u5931\u8D25 +agent.err.password.file.notfound = \u627E\u4E0D\u5230\u53E3\u4EE4\u6587\u4EF6 +agent.err.password.file.access.notrestricted = \u5FC5\u987B\u9650\u5236\u53E3\u4EE4\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650 -agent.err.access.file.notset = \u672a\u6307\u5b9a\u8bbf\u95ee\u6587\u4ef6\uff0c\u4f46 com.sun.management.jmxremote.authenticate=true -agent.err.access.file.not.readable = \u65e0\u6cd5\u8bfb\u53d6\u8bbf\u95ee\u6587\u4ef6 -agent.err.access.file.read.failed = \u8bfb\u53d6\u8bbf\u95ee\u6587\u4ef6\u5931\u8d25 -agent.err.access.file.notfound = \u627e\u4e0d\u5230\u8bbf\u95ee\u6587\u4ef6 +agent.err.access.file.notset = \u672A\u6307\u5B9A\u8BBF\u95EE\u6587\u4EF6, \u4F46 com.sun.management.jmxremote.authenticate=true +agent.err.access.file.not.readable = \u8BBF\u95EE\u6587\u4EF6\u4E0D\u53EF\u8BFB\u53D6 +agent.err.access.file.read.failed = \u8BFB\u53D6\u8BBF\u95EE\u6587\u4EF6\u5931\u8D25 +agent.err.access.file.notfound = \u627E\u4E0D\u5230\u8BBF\u95EE\u6587\u4EF6 -agent.err.connector.server.io.error = JMX \u8fde\u63a5\u5668\u670d\u52a1\u5668\u901a\u4fe1\u9519\u8bef +agent.err.connector.server.io.error = JMX \u8FDE\u63A5\u5668\u670D\u52A1\u5668\u901A\u4FE1\u9519\u8BEF -agent.err.invalid.option = \u6307\u5b9a\u7684\u9009\u9879\u65e0\u6548 -agent.err.invalid.snmp.port = com.sun.management.snmp.port \u7f16\u53f7\u65e0\u6548 -agent.err.invalid.snmp.trap.port = com.sun.management.snmp.trap \u7f16\u53f7\u65e0\u6548 -agent.err.unknown.snmp.interface = \u672a\u77e5 SNMP \u63a5\u53e3 -agent.err.acl.file.notset = \u672a\u6307\u5b9a SNMP ACL \u6587\u4ef6\uff0c\u4f46 com.sun.management.snmp.acl=true -agent.err.acl.file.notfound = \u627e\u4e0d\u5230 SNMP ACL \u6587\u4ef6 -agent.err.acl.file.not.readable = \u65e0\u6cd5\u8bfb\u53d6 SNMP ACL \u6587\u4ef6 -agent.err.acl.file.read.failed = \u8bfb\u53d6 SNMP ACL \u6587\u4ef6\u5931\u8d25 -agent.err.acl.file.access.notrestricted = \u5fc5\u987b\u9650\u5236\u53e3\u4ee4\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee +agent.err.invalid.option = \u6307\u5B9A\u7684\u9009\u9879\u65E0\u6548 +agent.err.invalid.snmp.port = com.sun.management.snmp.port number \u65E0\u6548 +agent.err.invalid.snmp.trap.port = com.sun.management.snmp.trap number \u65E0\u6548 +agent.err.unknown.snmp.interface = \u672A\u77E5 SNMP \u63A5\u53E3 +agent.err.acl.file.notset = \u672A\u6307\u5B9A SNMP ACL \u6587\u4EF6, \u4F46 com.sun.management.snmp.acl=true +agent.err.acl.file.notfound = \u627E\u4E0D\u5230 SNMP ACL \u6587\u4EF6 +agent.err.acl.file.not.readable = SNMP ACL \u6587\u4EF6\u4E0D\u53EF\u8BFB\u53D6 +agent.err.acl.file.read.failed = \u672A\u80FD\u8BFB\u53D6 SNMP ACL \u6587\u4EF6 +agent.err.acl.file.access.notrestricted = \u5FC5\u987B\u9650\u5236\u53E3\u4EE4\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650 -agent.err.snmp.adaptor.start.failed = \u65e0\u6cd5\u542f\u52a8\u5e26\u6709\u5730\u5740\u7684 SNMP \u9002\u914d\u5668 -agent.err.snmp.mib.init.failed = \u65e0\u6cd5\u521d\u59cb\u5316\u5e26\u6709\u9519\u8bef\u7684 SNMP MIB +agent.err.snmp.adaptor.start.failed = \u65E0\u6CD5\u542F\u52A8\u5E26\u6709\u5730\u5740\u7684 SNMP \u9002\u914D\u5668 +agent.err.snmp.mib.init.failed = \u65E0\u6CD5\u521D\u59CB\u5316\u5E26\u6709\u9519\u8BEF\u7684 SNMP MIB -jmxremote.ConnectorBootstrap.initialize = \u6b63\u5728\u542f\u52a8 JMX \u8fde\u63a5\u5668\u670d\u52a1\u5668\uff1a -jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u65e0\u9a8c\u8bc1 -jmxremote.ConnectorBootstrap.initialize.ready = \u4f4d\u4e8e {0} \u7684 JMX \u8fde\u63a5\u5668\u5c31\u7eea -jmxremote.ConnectorBootstrap.initialize.password.readonly = \u5fc5\u987b\u9650\u5236\u53e3\u4ee4\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee\uff1a{0} -jmxremote.ConnectorBootstrap.initialize.file.readonly = \u5fc5\u987b\u9650\u5236\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee\uff1a{0} +jmxremote.ConnectorBootstrap.initialize = \u6B63\u5728\u542F\u52A8 JMX \u8FDE\u63A5\u5668\u670D\u52A1\u5668: +jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u65E0\u9A8C\u8BC1 +jmxremote.ConnectorBootstrap.initialize.ready = \u4F4D\u4E8E{0}\u7684 JMX \u8FDE\u63A5\u5668\u5DF2\u5C31\u7EEA +jmxremote.ConnectorBootstrap.initialize.password.readonly = \u5FC5\u987B\u9650\u5236\u53E3\u4EE4\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = \u5FC5\u987B\u9650\u5236\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650: {0} -jmxremote.AdaptorBootstrap.getTargetList.processing = \u6b63\u5728\u5904\u7406 ACL -jmxremote.AdaptorBootstrap.getTargetList.adding = \u6b63\u5728\u6dfb\u52a0\u76ee\u6807\uff1a{0} -jmxremote.AdaptorBootstrap.getTargetList.starting = \u6b63\u5728\u542f\u52a8\u9002\u914d\u5668\u670d\u52a1\u5668\uff1a -jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u9002\u914d\u5668\u5c31\u7eea\u3002 -jmxremote.AdaptorBootstrap.getTargetList.initialize2 = \u4f4d\u4e8e {0}:{1} \u7684 SNMP \u9002\u914d\u5668\u5c31\u7eea -jmxremote.AdaptorBootstrap.getTargetList.terminate = \u7ec8\u6b62 {0} +jmxremote.AdaptorBootstrap.getTargetList.processing = \u6B63\u5728\u5904\u7406 ACL +jmxremote.AdaptorBootstrap.getTargetList.adding = \u6B63\u5728\u6DFB\u52A0\u76EE\u6807: {0} +jmxremote.AdaptorBootstrap.getTargetList.starting = \u6B63\u5728\u542F\u52A8\u9002\u914D\u5668\u670D\u52A1\u5668: +jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u9002\u914D\u5668\u5C31\u7EEA\u3002 +jmxremote.AdaptorBootstrap.getTargetList.initialize2 = \u4F4D\u4E8E {0}:{1} \u7684 SNMP \u9002\u914D\u5668\u5C31\u7EEA +jmxremote.AdaptorBootstrap.getTargetList.terminate = \u7EC8\u6B62{0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties b/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties index b3db73c92b2..902717713b5 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2005, 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 @@ -27,66 +27,66 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -agent.err.error = \u932f\u8aa4 -agent.err.exception = \u4ee3\u7406\u7a0b\u5f0f\u4e1f\u51fa\u7570\u5e38 -agent.err.warning = \u8b66\u544a +agent.err.error = \u932F\u8AA4 +agent.err.exception = \u4EE3\u7406\u7A0B\u5F0F\u767C\u751F\u7570\u5E38 +agent.err.warning = \u8B66\u544A -agent.err.configfile.notfound = \u627e\u4e0d\u5230\u914d\u7f6e\u6a94\u6848 -agent.err.configfile.failed = \u7121\u6cd5\u8b80\u53d6\u914d\u7f6e\u6a94\u6848 -agent.err.configfile.closed.failed = \u7121\u6cd5\u95dc\u9589\u914d\u7f6e\u6a94\u6848 -agent.err.configfile.access.denied = \u5b58\u53d6\u914d\u7f6e\u6a94\u6848\u906d\u5230\u62d2\u7d55 +agent.err.configfile.notfound = \u627E\u4E0D\u5230\u914D\u7F6E\u6A94\u6848 +agent.err.configfile.failed = \u7121\u6CD5\u8B80\u53D6\u914D\u7F6E\u6A94\u6848 +agent.err.configfile.closed.failed = \u7121\u6CD5\u95DC\u9589\u914D\u7F6E\u6A94\u6848 +agent.err.configfile.access.denied = \u5B58\u53D6\u914D\u7F6E\u6A94\u6848\u906D\u5230\u62D2\u7D55 -agent.err.exportaddress.failed = \u5c07 JMX \u9023\u63a5\u5668\u4f4d\u5740\u532f\u51fa\u81f3\u8a2d\u5099\u7de9\u885d\u5340\u5931\u6557 +agent.err.exportaddress.failed = \u5C07 JMX \u9023\u63A5\u5668\u4F4D\u5740\u532F\u51FA\u81F3\u8A2D\u5099\u7DE9\u885D\u5340\u5931\u6557 -agent.err.agentclass.notfound = \u627e\u4e0d\u5230\u7ba1\u7406\u4ee3\u7406\u7a0b\u5f0f\u985e\u5225 -agent.err.agentclass.failed = \u7ba1\u7406\u4ee3\u7406\u985e\u5225\u5931\u6557 -agent.err.premain.notfound = \u4ee3\u7406\u7a0b\u5f0f\u985e\u5225\u4e2d\u4e0d\u5b58\u5728 premain(String) -agent.err.agentclass.access.denied = \u5b58\u53d6 premain(String) \u906d\u5230\u62d2\u7d55 -agent.err.invalid.agentclass = com.sun.management.agent.class \u7279\u6027\u503c\u7121\u6548 +agent.err.agentclass.notfound = \u627E\u4E0D\u5230\u7BA1\u7406\u4EE3\u7406\u7A0B\u5F0F\u985E\u5225 +agent.err.agentclass.failed = \u7BA1\u7406\u4EE3\u7406\u7A0B\u5F0F\u985E\u5225\u5931\u6557 +agent.err.premain.notfound = \u4EE3\u7406\u7A0B\u5F0F\u985E\u5225\u4E2D\u4E0D\u5B58\u5728 premain(String) +agent.err.agentclass.access.denied = \u5B58\u53D6 premain(String) \u906D\u5230\u62D2\u7D55 +agent.err.invalid.agentclass = com.sun.management.agent.class \u5C6C\u6027\u503C\u7121\u6548 -agent.err.invalid.jmxremote.port = com.sun.management.jmxremote.port \u7de8\u865f\u7121\u6548 +agent.err.invalid.jmxremote.port = com.sun.management.jmxremote.port \u865F\u78BC\u7121\u6548 -agent.err.file.not.set = \u672a\u6307\u5b9a\u6a94\u6848 -agent.err.file.not.readable = \u6a94\u6848\u4e0d\u53ef\u8b80 -agent.err.file.read.failed = \u7121\u6cd5\u8b80\u53d6\u6a94\u6848 -agent.err.file.not.found = \u627e\u4e0d\u5230\u6a94\u6848 -agent.err.file.access.not.restricted = \u5fc5\u9808\u9650\u5236\u6a94\u6848\u8b80\u53d6\u5b58\u53d6 +agent.err.file.not.set = \u672A\u6307\u5B9A\u6A94\u6848 +agent.err.file.not.readable = \u6A94\u6848\u7121\u6CD5\u8B80\u53D6 +agent.err.file.read.failed = \u7121\u6CD5\u8B80\u53D6\u6A94\u6848 +agent.err.file.not.found = \u627E\u4E0D\u5230\u6A94\u6848 +agent.err.file.access.not.restricted = \u5FC5\u9808\u9650\u5236\u6A94\u6848\u8B80\u53D6\u5B58\u53D6\u6B0A -agent.err.password.file.notset = \u672a\u6307\u5b9a\u5bc6\u78bc\u6a94\u6848\uff0c\u4f46 com.sun.management.jmxremote.authenticate=true -agent.err.password.file.not.readable = \u5bc6\u78bc\u6a94\u6848\u4e0d\u53ef\u8b80 -agent.err.password.file.read.failed = \u7121\u6cd5\u8b80\u53d6\u5bc6\u78bc\u6a94\u6848 -agent.err.password.file.notfound = \u627e\u4e0d\u5230\u5bc6\u78bc\u6a94\u6848 -agent.err.password.file.access.notrestricted = \u5fc5\u9808\u9650\u5236\u5bc6\u78bc\u6a94\u6848\u8b80\u53d6\u5b58\u53d6 +agent.err.password.file.notset = \u672A\u6307\u5B9A\u5BC6\u78BC\u6A94\u6848\uFF0C\u4F46 com.sun.management.jmxremote.authenticate=true +agent.err.password.file.not.readable = \u5BC6\u78BC\u6A94\u6848\u7121\u6CD5\u8B80\u53D6 +agent.err.password.file.read.failed = \u7121\u6CD5\u8B80\u53D6\u5BC6\u78BC\u6A94\u6848 +agent.err.password.file.notfound = \u627E\u4E0D\u5230\u5BC6\u78BC\u6A94\u6848 +agent.err.password.file.access.notrestricted = \u5FC5\u9808\u9650\u5236\u5BC6\u78BC\u6A94\u6848\u8B80\u53D6\u5B58\u53D6 -agent.err.access.file.notset = \u672a\u6307\u5b9a\u5b58\u53d6\u6a94\u6848\uff0c\u4f46 com.sun.management.jmxremote.authenticate=true -agent.err.access.file.not.readable = \u5b58\u53d6\u6a94\u6848\u4e0d\u53ef\u8b80 -agent.err.access.file.read.failed = \u7121\u6cd5\u8b80\u53d6\u5b58\u53d6\u6a94\u6848 -agent.err.access.file.notfound = \u627e\u4e0d\u5230\u5b58\u53d6\u6a94\u6848 +agent.err.access.file.notset = \u672A\u6307\u5B9A\u5B58\u53D6\u6A94\u6848\uFF0C\u4F46 com.sun.management.jmxremote.authenticate=true +agent.err.access.file.not.readable = \u5B58\u53D6\u6A94\u6848\u7121\u6CD5\u8B80\u53D6 +agent.err.access.file.read.failed = \u7121\u6CD5\u8B80\u53D6\u5B58\u53D6\u6A94\u6848 +agent.err.access.file.notfound = \u627E\u4E0D\u5230\u5B58\u53D6\u6A94\u6848 -agent.err.connector.server.io.error = JMX \u9023\u63a5\u5668\u4f3a\u670d\u5668\u901a\u8a0a\u932f\u8aa4 +agent.err.connector.server.io.error = JMX \u9023\u63A5\u5668\u4F3A\u670D\u5668\u901A\u8A0A\u932F\u8AA4 -agent.err.invalid.option = \u6307\u5b9a\u7684\u9078\u9805\u7121\u6548 -agent.err.invalid.snmp.port = com.sun.management.snmp.port \u7de8\u865f\u7121\u6548 -agent.err.invalid.snmp.trap.port = com.sun.management.snmp.trap \u7de8\u865f\u7121\u6548 -agent.err.unknown.snmp.interface = \u4e0d\u660e\u7684 SNMP \u4ecb\u9762 -agent.err.acl.file.notset = \u672a\u6307\u5b9a SNMP ACL \u6a94\u6848\uff0c\u4f46 com.sun.management.snmp.acl=true -agent.err.acl.file.notfound = \u627e\u4e0d\u5230 SNMP ACL \u6a94\u6848 -agent.err.acl.file.not.readable = SNMP ACL \u6a94\u6848\u4e0d\u53ef\u8b80 -agent.err.acl.file.read.failed = \u7121\u6cd5\u8b80\u53d6 SNMP ACL \u6a94\u6848 -agent.err.acl.file.access.notrestricted = \u5fc5\u9808\u9650\u5236\u5bc6\u78bc\u6a94\u6848\u8b80\u53d6\u5b58\u53d6 +agent.err.invalid.option = \u6307\u5B9A\u7684\u9078\u9805\u7121\u6548 +agent.err.invalid.snmp.port = com.sun.management.snmp.port \u865F\u78BC\u7121\u6548 +agent.err.invalid.snmp.trap.port = com.sun.management.snmp.trap \u7DE8\u865F\u7121\u6548 +agent.err.unknown.snmp.interface = \u4E0D\u660E\u7684 SNMP \u4ECB\u9762 +agent.err.acl.file.notset = \u672A\u6307\u5B9A SNMP ACL \u6A94\u6848\uFF0C\u4F46 com.sun.management.snmp.acl=true +agent.err.acl.file.notfound = \u627E\u4E0D\u5230 SNMP ACL \u6A94\u6848 +agent.err.acl.file.not.readable = SNMP ACL \u6A94\u6848\u7121\u6CD5\u8B80\u53D6 +agent.err.acl.file.read.failed = \u7121\u6CD5\u8B80\u53D6 SNMP ACL \u6A94\u6848 +agent.err.acl.file.access.notrestricted = \u5FC5\u9808\u9650\u5236\u5BC6\u78BC\u6A94\u6848\u8B80\u53D6\u5B58\u53D6 -agent.err.snmp.adaptor.start.failed = \u7121\u6cd5\u4f7f\u7528\u4f4d\u5740\u555f\u52d5 SNMP \u914d\u63a5\u5361 -agent.err.snmp.mib.init.failed = \u7121\u6cd5\u521d\u59cb\u5316 SNMP MIB\uff0c\u51fa\u73fe\u932f\u8aa4 +agent.err.snmp.adaptor.start.failed = \u7121\u6CD5\u4F7F\u7528\u4F4D\u5740\u555F\u52D5 SNMP \u914D\u63A5\u5361 +agent.err.snmp.mib.init.failed = \u7121\u6CD5\u521D\u59CB\u5316 SNMP MIB\uFF0C\u51FA\u73FE\u932F\u8AA4 -jmxremote.ConnectorBootstrap.initialize = \u6b63\u5728\u555f\u52d5 JMX \u9023\u63a5\u5668\u4f3a\u670d\u5668\ufe30 -jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u7121\u8a8d\u8b49 -jmxremote.ConnectorBootstrap.initialize.ready = JMX \u9023\u63a5\u5668\u5c31\u7dd2\uff0c\u4f4d\u65bc\ufe30{0} -jmxremote.ConnectorBootstrap.initialize.password.readonly = \u5fc5\u9808\u9650\u5236\u5bc6\u78bc\u6a94\u6848\u8b80\u53d6\u5b58\u53d6\ufe30{0} -jmxremote.ConnectorBootstrap.initialize.file.readonly = \u5fc5\u9808\u9650\u5236\u6a94\u6848\u8b80\u53d6\u5b58\u53d6: {0} +jmxremote.ConnectorBootstrap.initialize = \u6B63\u5728\u555F\u52D5 JMX \u9023\u63A5\u5668\u4F3A\u670D\u5668: +jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u7121\u8A8D\u8B49 +jmxremote.ConnectorBootstrap.initialize.ready = JMX \u9023\u63A5\u5668\u5C31\u7DD2\uFF0C\u4F4D\u65BC: {0} +jmxremote.ConnectorBootstrap.initialize.password.readonly = \u5FC5\u9808\u9650\u5236\u5BC6\u78BC\u6A94\u6848\u8B80\u53D6\u5B58\u53D6: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = \u5FC5\u9808\u9650\u5236\u6A94\u6848\u8B80\u53D6\u5B58\u53D6\u6B0A: {0} -jmxremote.AdaptorBootstrap.getTargetList.processing = \u6b63\u5728\u8655\u7406 ACL -jmxremote.AdaptorBootstrap.getTargetList.adding = \u6b63\u5728\u589e\u52a0\u76ee\u6a19\ufe30{0} -jmxremote.AdaptorBootstrap.getTargetList.starting = \u6b63\u5728\u555f\u52d5\u914d\u63a5\u5361\u4f3a\u670d\u5668\ufe30 -jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u914d\u63a5\u5361\u5c31\u7dd2\u3002 -jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP \u914d\u63a5\u5361\u5c31\u7dd2\uff0c\u4f4d\u65bc\ufe30{0}:{1} -jmxremote.AdaptorBootstrap.getTargetList.terminate = \u7d42\u6b62 {0} +jmxremote.AdaptorBootstrap.getTargetList.processing = \u6B63\u5728\u8655\u7406 ACL +jmxremote.AdaptorBootstrap.getTargetList.adding = \u6B63\u5728\u65B0\u589E\u76EE\u6A19: {0} +jmxremote.AdaptorBootstrap.getTargetList.starting = \u6B63\u5728\u555F\u52D5\u914D\u63A5\u5361\u4F3A\u670D\u5668: +jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u914D\u63A5\u5361\u5C31\u7DD2\u3002 +jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP \u914D\u63A5\u5361\u5C31\u7DD2\uFF0C\u4F4D\u65BC: {0}:{1} +jmxremote.AdaptorBootstrap.getTargetList.terminate = \u7D42\u6B62 {0} diff --git a/jdk/src/share/classes/sun/misc/BootClassLoaderHook.java b/jdk/src/share/classes/sun/misc/BootClassLoaderHook.java index d0e2e4eb842..0df465c3e66 100644 --- a/jdk/src/share/classes/sun/misc/BootClassLoaderHook.java +++ b/jdk/src/share/classes/sun/misc/BootClassLoaderHook.java @@ -34,10 +34,7 @@ import sun.misc.URLClassPath; * BootClassLoaderHook defines an interface for a hook to inject * into the bootstrap class loader. * - * In jkernel build, the sun.jkernel.DownloadManager is set as - * a BootClassLoaderHook by the jkernel VM after the VM is initialized. - * - * In other JDK builds, no hook is set. + * With jkernel now removed, no hook is set */ public abstract class BootClassLoaderHook { private static BootClassLoaderHook bootLoaderHook = null; diff --git a/jdk/src/share/classes/sun/misc/FloatingDecimal.java b/jdk/src/share/classes/sun/misc/FloatingDecimal.java index 3ef35ed3edc..fedca65e760 100644 --- a/jdk/src/share/classes/sun/misc/FloatingDecimal.java +++ b/jdk/src/share/classes/sun/misc/FloatingDecimal.java @@ -1547,7 +1547,7 @@ public class FloatingDecimal{ if ( (cmpResult = bigB.cmp( bigD ) ) > 0 ){ overvalue = true; // our candidate is too big. diff = bigB.sub( bigD ); - if ( (bigIntNBits == 1) && (bigIntExp > -expBias) ){ + if ( (bigIntNBits == 1) && (bigIntExp > -expBias+1) ){ // candidate is a normalized exact power of 2 and // is too big. We will be subtracting. // For our purposes, ulp is the ulp of the diff --git a/jdk/src/share/classes/sun/misc/JarIndex.java b/jdk/src/share/classes/sun/misc/JarIndex.java index 0418befce12..39e2eca91d8 100644 --- a/jdk/src/share/classes/sun/misc/JarIndex.java +++ b/jdk/src/share/classes/sun/misc/JarIndex.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -66,6 +66,14 @@ public class JarIndex { */ public static final String INDEX_NAME = "META-INF/INDEX.LIST"; + /** + * true if, and only if, sun.misc.JarIndex.metaInfFilenames is set to true. + * If true, the names of the files in META-INF, and its subdirectories, will + * be added to the index. Otherwise, just the directory names are added. + */ + private static final boolean metaInfFilenames = + "true".equals(System.getProperty("sun.misc.JarIndex.metaInfFilenames")); + /** * Constructs a new, empty jar index. */ @@ -186,6 +194,18 @@ public class JarIndex { addToList(jarName, packageName, jarMap); } + /** + * Same as add(String,String) except that it doesn't strip off from the + * last index of '/'. It just adds the filename. + */ + private void addExplicit(String fileName, String jarName) { + // add the mapping to indexMap + addToList(fileName, jarName, indexMap); + + // add the mapping to jarMap + addToList(jarName, fileName, jarMap); + } + /** * Go through all the jar files and construct the * index table. @@ -204,15 +224,31 @@ public class JarIndex { Enumeration entries = zrf.entries(); while(entries.hasMoreElements()) { - String fileName = ((ZipEntry)(entries.nextElement())).getName(); - // Index the META-INF directory, but not the index or manifest. - if (!fileName.startsWith("META-INF/") || - !(fileName.equals("META-INF/") || - fileName.equals(INDEX_NAME) || - fileName.equals(JarFile.MANIFEST_NAME))) { + ZipEntry entry = (ZipEntry) entries.nextElement(); + String fileName = entry.getName(); + + // Skip the META-INF directory, the index, and manifest. + // Any files in META-INF/ will be indexed explicitly + if (fileName.equals("META-INF/") || + fileName.equals(INDEX_NAME) || + fileName.equals(JarFile.MANIFEST_NAME)) + continue; + + if (!metaInfFilenames) { add(fileName, currentJar); + } else { + if (!fileName.startsWith("META-INF/")) { + add(fileName, currentJar); + } else if (!entry.isDirectory()) { + // Add files under META-INF explicitly so that certain + // services, like ServiceLoader, etc, can be located + // with greater accuracy. Directories can be skipped + // since each file will be added explicitly. + addExplicit(fileName, currentJar); + } } } + zrf.close(); } } diff --git a/jdk/src/share/classes/sun/misc/VM.java b/jdk/src/share/classes/sun/misc/VM.java index 0d8369a9d01..e3dc5efd64e 100644 --- a/jdk/src/share/classes/sun/misc/VM.java +++ b/jdk/src/share/classes/sun/misc/VM.java @@ -235,6 +235,9 @@ public class VM { return savedProps.getProperty(key); } + // TODO: the Property Management needs to be refactored and + // the appropriate prop keys need to be accessible to the + // calling classes to avoid duplication of keys. private static final Properties savedProps = new Properties(); // Save a private copy of the system properties and remove @@ -283,6 +286,9 @@ public class VM { // used by java.util.zip.ZipFile props.remove("sun.zip.disableMemoryMapping"); + + // used by sun.launcher.LauncherHelper + props.remove("sun.java.launcher.diag"); } // Initialize any miscellenous operating system settings that need to be diff --git a/jdk/src/share/classes/sun/misc/resources/Messages_de.java b/jdk/src/share/classes/sun/misc/resources/Messages_de.java index 8f5ef9a991e..9f063e822d2 100644 --- a/jdk/src/share/classes/sun/misc/resources/Messages_de.java +++ b/jdk/src/share/classes/sun/misc/resources/Messages_de.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2005, 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 @@ -44,9 +44,9 @@ public class Messages_de extends java.util.ListResourceBundle { } private static final Object[][] contents = { - { "optpkg.versionerror", "FEHLER: In der JAR-Datei {0} wurde ein ung\u00fcltiges Versionsformat verwendet. Pr\u00fcfen Sie in der Dokumentation, welches Versionsformat unterst\u00fctzt wird." }, - { "optpkg.attributeerror", "FEHLER: In der JAR-Datei {1} ist das erforderliche JAR-Manifestattribut {0} nicht gesetzt." }, - { "optpkg.attributeserror", "FEHLER: In der JAR-Datei {0} sind einige erforderliche JAR-Manifestattribute nicht gesetzt." } + { "optpkg.versionerror", "ERROR: In JAR-Datei {0} wurde ein ung\u00FCltiges Versionsformat verwendet. Pr\u00FCfen Sie in der Dokumentation, welches Versionsformat unterst\u00FCtzt wird." }, + { "optpkg.attributeerror", "ERROR: In JAR-Datei {1} ist das erforderliche JAR-Manifestattribut {0} nicht festgelegt." }, + { "optpkg.attributeserror", "ERROR: In JAR-Datei {0} sind einige erforderliche JAR-Manifestattribute nicht festgelegt." } }; } diff --git a/jdk/src/share/classes/sun/misc/resources/Messages_es.java b/jdk/src/share/classes/sun/misc/resources/Messages_es.java index 14b9d49d1dc..d46419e99c2 100644 --- a/jdk/src/share/classes/sun/misc/resources/Messages_es.java +++ b/jdk/src/share/classes/sun/misc/resources/Messages_es.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2005, 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 @@ -44,9 +44,9 @@ public class Messages_es extends java.util.ListResourceBundle { } private static final Object[][] contents = { - { "optpkg.versionerror", "ERROR: El formato del archivo JAR {0} pertenece a una versi\u00f3n no v\u00e1lida. Busque en la documentaci\u00f3n un formato de una versi\u00f3n compatible." }, - { "optpkg.attributeerror", "ERROR: El atributo obligatorio JAR manifest {0} no est\u00e1 definido en el archivo JAR {1}." }, - { "optpkg.attributeserror", "ERROR: Algunos atributos obligatorios JAR manifest no est\u00e1n definidos en el archivo JAR {0}." } + { "optpkg.versionerror", "ERROR: el formato del archivo JAR {0} pertenece a una versi\u00F3n no v\u00E1lida. Busque en la documentaci\u00F3n el formato de una versi\u00F3n soportada." }, + { "optpkg.attributeerror", "ERROR: el atributo obligatorio JAR manifest {0} no est\u00E1 definido en el archivo JAR {1}." }, + { "optpkg.attributeserror", "ERROR: algunos atributos obligatorios JAR manifest no est\u00E1n definidos en el archivo JAR {0}." } }; } diff --git a/jdk/src/share/classes/sun/misc/resources/Messages_fr.java b/jdk/src/share/classes/sun/misc/resources/Messages_fr.java index ea2bc1efb5c..9ed71c99d2a 100644 --- a/jdk/src/share/classes/sun/misc/resources/Messages_fr.java +++ b/jdk/src/share/classes/sun/misc/resources/Messages_fr.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2005, 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 @@ -44,9 +44,9 @@ public class Messages_fr extends java.util.ListResourceBundle { } private static final Object[][] contents = { - { "optpkg.versionerror", "ERREUR\u00a0: Format de version utilis\u00e9 pour le fichier JAR {0} non valide. Consultez la documentation pour voir le format de version pris en charge." }, - { "optpkg.attributeerror", "ERREUR\u00a0: L''attribut manifeste JAR {0} n\u00e9cessaire n''est pas d\u00e9fini pour le fichier {1}. " }, - { "optpkg.attributeserror", "ERREUR\u00a0: Certains attributs manifeste JAR {0} n\u00e9cessaires ne sont pas d\u00e9finis pour le fichier {1}. " } + { "optpkg.versionerror", "ERREUR\u00A0: le format de version utilis\u00E9 pour le fichier JAR {0} n''est pas valide. Pour conna\u00EEtre le format de version pris en charge, consultez la documentation." }, + { "optpkg.attributeerror", "ERREUR\u00A0: l''attribut manifest JAR {0} obligatoire n''est pas d\u00E9fini dans le fichier JAR {1}." }, + { "optpkg.attributeserror", "ERREUR\u00A0: certains attributs manifest JAR obligatoires ne sont pas d\u00E9finis dans le fichier JAR {0}." } }; } diff --git a/jdk/src/share/classes/sun/misc/resources/Messages_it.java b/jdk/src/share/classes/sun/misc/resources/Messages_it.java index daecf06bbea..956caaa3df8 100644 --- a/jdk/src/share/classes/sun/misc/resources/Messages_it.java +++ b/jdk/src/share/classes/sun/misc/resources/Messages_it.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2005, 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 @@ -45,8 +45,8 @@ public class Messages_it extends java.util.ListResourceBundle { private static final Object[][] contents = { { "optpkg.versionerror", "ERRORE: Formato versione non valido nel file JAR {0}. Verificare nella documentazione il formato della versione supportato." }, - { "optpkg.attributeerror", "ERRORE: L''attributo manifesto JAR {0} richiesto non \u00e8 impostato nel file JAR {1}." }, - { "optpkg.attributeserror", "ERRORE: Alcuni attributi manifesti JAR {0} richiesti non sono impostati nel file JAR {1}." } + { "optpkg.attributeerror", "ERRORE: L''attributo manifest JAR {0} richiesto non \u00E8 impostato nel file JAR {1}." }, + { "optpkg.attributeserror", "ERRORE: Alcuni attributi manifesti JAR obbligatori non sono impostati nel file JAR {0}." } }; } diff --git a/jdk/src/share/classes/sun/misc/resources/Messages_ja.java b/jdk/src/share/classes/sun/misc/resources/Messages_ja.java index 00482588cea..95c7990e2ef 100644 --- a/jdk/src/share/classes/sun/misc/resources/Messages_ja.java +++ b/jdk/src/share/classes/sun/misc/resources/Messages_ja.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2005, 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 @@ -44,9 +44,9 @@ public class Messages_ja extends java.util.ListResourceBundle { } private static final Object[][] contents = { - { "optpkg.versionerror", "\u30a8\u30e9\u30fc: JAR \u30d5\u30a1\u30a4\u30eb {0} \u3067\u7121\u52b9\u306a\u30d0\u30fc\u30b8\u30e7\u30f3\u5f62\u5f0f\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u5f62\u5f0f\u306b\u3064\u3044\u3066\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002" }, - { "optpkg.attributeerror", "\u30a8\u30e9\u30fc: \u5fc5\u8981\u306a JAR \u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u5c5e\u6027 {0} \u304c JAR \u30d5\u30a1\u30a4\u30eb {1} \u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002" }, - { "optpkg.attributeserror", "\u30a8\u30e9\u30fc: \u8907\u6570\u306e\u5fc5\u8981\u306a JAR \u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u5c5e\u6027\u304c JAR \u30d5\u30a1\u30a4\u30eb {0} \u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002" } + { "optpkg.versionerror", "\u30A8\u30E9\u30FC: JAR\u30D5\u30A1\u30A4\u30EB{0}\u3067\u7121\u52B9\u306A\u30D0\u30FC\u30B8\u30E7\u30F3\u5F62\u5F0F\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u308B\u30D0\u30FC\u30B8\u30E7\u30F3\u5F62\u5F0F\u306B\u3064\u3044\u3066\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002" }, + { "optpkg.attributeerror", "\u30A8\u30E9\u30FC: \u5FC5\u8981\u306AJAR\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5C5E\u6027{0}\u304CJAR\u30D5\u30A1\u30A4\u30EB{1}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002" }, + { "optpkg.attributeserror", "\u30A8\u30E9\u30FC: \u8907\u6570\u306E\u5FC5\u8981\u306AJAR\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5C5E\u6027\u304CJAR\u30D5\u30A1\u30A4\u30EB{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002" } }; } diff --git a/jdk/src/share/classes/sun/misc/resources/Messages_ko.java b/jdk/src/share/classes/sun/misc/resources/Messages_ko.java index 56f59005cfe..60b4ef04399 100644 --- a/jdk/src/share/classes/sun/misc/resources/Messages_ko.java +++ b/jdk/src/share/classes/sun/misc/resources/Messages_ko.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2005, 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 @@ -44,9 +44,9 @@ public class Messages_ko extends java.util.ListResourceBundle { } private static final Object[][] contents = { - { "optpkg.versionerror", "\uc624\ub958: {0} JAR \ud30c\uc77c\uc5d0 \uc798\ubabb\ub41c \ubc84\uc804 \ud615\uc2dd\uc774 \uc0ac\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc124\uba85\uc11c\ub97c \ucc38\uc870\ud558\uc5ec \uc9c0\uc6d0\ub418\ub294 \ubc84\uc804 \ud615\uc2dd\uc744 \ud655\uc778\ud558\uc2ed\uc2dc\uc624." }, - { "optpkg.attributeerror", "\uc624\ub958: \ud544\uc694\ud55c {0} JAR \ud45c\uc2dc \uc18d\uc131\uc774 {1} JAR \ud30c\uc77c\uc5d0 \uc124\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4." }, - { "optpkg.attributeserror", "\uc624\ub958: \ud544\uc694\ud55c JAR \ud45c\uc2dc \uc18d\uc131 \uc77c\ubd80\uac00 {0} JAR \ud30c\uc77c\uc5d0 \uc124\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4." } + { "optpkg.versionerror", "\uC624\uB958: {0} JAR \uD30C\uC77C\uC5D0 \uBD80\uC801\uD569\uD55C \uBC84\uC804 \uD615\uC2DD\uC774 \uC0AC\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uC124\uBA85\uC11C\uC5D0\uC11C \uC9C0\uC6D0\uB418\uB294 \uBC84\uC804 \uD615\uC2DD\uC744 \uD655\uC778\uD558\uC2ED\uC2DC\uC624." }, + { "optpkg.attributeerror", "\uC624\uB958: \uD544\uC694\uD55C {0} JAR manifest \uC18D\uC131\uC774 {1} JAR \uD30C\uC77C\uC5D0 \uC124\uC815\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4." }, + { "optpkg.attributeserror", "\uC624\uB958: \uD544\uC694\uD55C \uC77C\uBD80 JAR manifest \uC18D\uC131\uC774 {0} JAR \uD30C\uC77C\uC5D0 \uC124\uC815\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4." } }; } diff --git a/jdk/src/share/classes/sun/misc/resources/Messages_pt_BR.java b/jdk/src/share/classes/sun/misc/resources/Messages_pt_BR.java index b90fc942acb..e5880281d66 100644 --- a/jdk/src/share/classes/sun/misc/resources/Messages_pt_BR.java +++ b/jdk/src/share/classes/sun/misc/resources/Messages_pt_BR.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2005, 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 @@ -30,7 +30,6 @@ package sun.misc.resources; * for sun.misc. * * @author Michael Colburn - * @version 1.5, 11/17/05 */ public class Messages_pt_BR extends java.util.ListResourceBundle { @@ -45,9 +44,9 @@ public class Messages_pt_BR extends java.util.ListResourceBundle { } private static final Object[][] contents = { - { "optpkg.versionerror", "ERRO: formato de vers\u00e3o inv\u00e1lido usado no arquivo jar {0}. Verifique a documenta\u00e7\u00e3o para obter o formato de vers\u00e3o suportado." }, - { "optpkg.attributeerror", "ERRO: o atributo de manifesto JAR {0} necess\u00e1rio n\u00e3o est\u00e1 definido no arquivo JAR {1}." }, - { "optpkg.attributeserror", "ERRO: alguns atributos de manifesto JAR necess\u00e1rios n\u00e3o est\u00e3o definidos no arquivo JAR {0}." } + { "optpkg.versionerror", "ERRO: formato de vers\u00E3o inv\u00E1lido usado no arquivo JAR {0}. Verifique a documenta\u00E7\u00E3o para obter o formato de vers\u00E3o suportado." }, + { "optpkg.attributeerror", "ERRO: o atributo de manifesto JAR {0} necess\u00E1rio n\u00E3o est\u00E1 definido no arquivo JAR {1}." }, + { "optpkg.attributeserror", "ERRO: alguns atributos de manifesto JAR necess\u00E1rios n\u00E3o est\u00E3o definidos no arquivo JAR {0}." } }; -} \ No newline at end of file +} diff --git a/jdk/src/share/classes/sun/misc/resources/Messages_sv.java b/jdk/src/share/classes/sun/misc/resources/Messages_sv.java index 39aadc798a4..c6770c26a35 100644 --- a/jdk/src/share/classes/sun/misc/resources/Messages_sv.java +++ b/jdk/src/share/classes/sun/misc/resources/Messages_sv.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2005, 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 @@ -44,9 +44,9 @@ public class Messages_sv extends java.util.ListResourceBundle { } private static final Object[][] contents = { - { "optpkg.versionerror", "FEL: Ogiltigt versionsformat i {0} JAR-fil. Kontrollera i dokumentationen vilket versionsformat som st\u00f6ds." }, - { "optpkg.attributeerror", "FEL: Det JAR manifest-attribut {0} som kr\u00e4vs \u00e4r inte angivet i {1} JAR-filen." }, - { "optpkg.attributeserror", "FEL: Vissa JAR manifest-attribut som kr\u00e4vs \u00e4r inte angivna i {0} JAR-filen." } + { "optpkg.versionerror", "FEL: Ogiltigt versionsformat i {0} JAR-fil. Kontrollera i dokumentationen vilket versionsformat som st\u00F6ds." }, + { "optpkg.attributeerror", "FEL: Obligatoriskt JAR manifest-attribut {0} \u00E4r inte inst\u00E4llt i {1} JAR-filen." }, + { "optpkg.attributeserror", "FEL: Vissa obligatoriska JAR manifest-attribut \u00E4r inte inst\u00E4llda i {0} JAR-filen." } }; } diff --git a/jdk/src/share/classes/sun/misc/resources/Messages_zh_CN.java b/jdk/src/share/classes/sun/misc/resources/Messages_zh_CN.java index d4ffcac7a17..5ee47f93955 100644 --- a/jdk/src/share/classes/sun/misc/resources/Messages_zh_CN.java +++ b/jdk/src/share/classes/sun/misc/resources/Messages_zh_CN.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2005, 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 @@ -44,9 +44,9 @@ public class Messages_zh_CN extends java.util.ListResourceBundle { } private static final Object[][] contents = { - { "optpkg.versionerror", "\u9519\u8bef\uff1a{0} JAR \u6587\u4ef6\u4e2d\u4f7f\u7528\u7684\u7248\u672c\u683c\u5f0f\u65e0\u6548\u3002\u8bf7\u68c0\u67e5\u6587\u6863\u4ee5\u4e86\u89e3\u652f\u6301\u7684\u7248\u672c\u683c\u5f0f\u3002" }, - { "optpkg.attributeerror", "\u9519\u8bef\uff1a\u5fc5\u8981\u7684 {0} JAR \u6807\u660e\u5c5e\u6027\u672a\u5728 {1} JAR \u6587\u4ef6\u4e2d\u8bbe\u7f6e\u3002" }, - { "optpkg.attributeserror", "\u9519\u8bef\uff1a\u67d0\u4e9b\u5fc5\u8981\u7684 JAR \u6807\u660e\u5c5e\u6027\u672a\u5728 {0} JAR \u6587\u4ef6\u4e2d\u8bbe\u7f6e\u3002" } + { "optpkg.versionerror", "\u9519\u8BEF: {0} JAR \u6587\u4EF6\u4E2D\u4F7F\u7528\u7684\u7248\u672C\u683C\u5F0F\u65E0\u6548\u3002\u8BF7\u68C0\u67E5\u6587\u6863\u4EE5\u4E86\u89E3\u652F\u6301\u7684\u7248\u672C\u683C\u5F0F\u3002" }, + { "optpkg.attributeerror", "\u9519\u8BEF: \u5FC5\u8981\u7684{0} JAR \u6E05\u5355\u5C5E\u6027\u672A\u5728{1} JAR \u6587\u4EF6\u4E2D\u8BBE\u7F6E\u3002" }, + { "optpkg.attributeserror", "\u9519\u8BEF: \u67D0\u4E9B\u5FC5\u8981\u7684 JAR \u6E05\u5355\u5C5E\u6027\u672A\u5728{0} JAR \u6587\u4EF6\u4E2D\u8BBE\u7F6E\u3002" } }; } diff --git a/jdk/src/share/classes/sun/misc/resources/Messages_zh_TW.java b/jdk/src/share/classes/sun/misc/resources/Messages_zh_TW.java index ba9fbbc6025..7b39584b79b 100644 --- a/jdk/src/share/classes/sun/misc/resources/Messages_zh_TW.java +++ b/jdk/src/share/classes/sun/misc/resources/Messages_zh_TW.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2005, 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 @@ -44,9 +44,9 @@ public class Messages_zh_TW extends java.util.ListResourceBundle { } private static final Object[][] contents = { - { "optpkg.versionerror", "\u932f\u8aa4: {0} JAR \u6a94\u4f7f\u7528\u4e86\u7121\u6548\u7684\u7248\u672c\u683c\u5f0f\u3002\u8acb\u6aa2\u67e5\u6587\u4ef6\uff0c\u4ee5\u7372\u5f97\u652f\u63f4\u7684\u7248\u672c\u683c\u5f0f\u3002" }, - { "optpkg.attributeerror", "\u932f\u8aa4: {1} JAR \u6a94\u4e2d\u672a\u8a2d\u5b9a\u5fc5\u8981\u7684 {0} JAR \u6a19\u660e\u5c6c\u6027\u3002" }, - { "optpkg.attributeserror", "\u932f\u8aa4: {0} JAR \u6a94\u4e2d\u672a\u8a2d\u5b9a\u67d0\u4e9b\u5fc5\u8981\u7684 JAR \u6a19\u660e\u5c6c\u6027\u3002" } + { "optpkg.versionerror", "\u932F\u8AA4: {0} JAR \u6A94\u4F7F\u7528\u4E86\u7121\u6548\u7684\u7248\u672C\u683C\u5F0F\u3002\u8ACB\u6AA2\u67E5\u6587\u4EF6\uFF0C\u4EE5\u7372\u5F97\u652F\u63F4\u7684\u7248\u672C\u683C\u5F0F\u3002" }, + { "optpkg.attributeerror", "\u932F\u8AA4: {1} JAR \u6A94\u4E2D\u672A\u8A2D\u5B9A\u5FC5\u8981\u7684 {0} JAR \u8CC7\u8A0A\u6E05\u55AE\u5C6C\u6027\u3002" }, + { "optpkg.attributeserror", "\u932F\u8AA4: {0} JAR \u6A94\u4E2D\u672A\u8A2D\u5B9A\u67D0\u4E9B\u5FC5\u8981\u7684 JAR \u8CC7\u8A0A\u6E05\u55AE\u5C6C\u6027\u3002" } }; } diff --git a/jdk/src/share/classes/sun/net/www/http/KeepAliveCache.java b/jdk/src/share/classes/sun/net/www/http/KeepAliveCache.java index e75e294c1e2..7c09e3965fa 100644 --- a/jdk/src/share/classes/sun/net/www/http/KeepAliveCache.java +++ b/jdk/src/share/classes/sun/net/www/http/KeepAliveCache.java @@ -106,6 +106,9 @@ public class KeepAliveCache keepAliveTimer = new Thread(grp, cache, "Keep-Alive-Timer"); keepAliveTimer.setDaemon(true); keepAliveTimer.setPriority(Thread.MAX_PRIORITY - 2); + // Set the context class loader to null in order to avoid + // keeping a strong reference to an application classloader. + keepAliveTimer.setContextClassLoader(null); keepAliveTimer.start(); return null; } diff --git a/jdk/src/share/classes/sun/net/www/http/KeepAliveStream.java b/jdk/src/share/classes/sun/net/www/http/KeepAliveStream.java index c430ae3518b..b3d3b607066 100644 --- a/jdk/src/share/classes/sun/net/www/http/KeepAliveStream.java +++ b/jdk/src/share/classes/sun/net/www/http/KeepAliveStream.java @@ -185,6 +185,9 @@ class KeepAliveStream extends MeteredStream implements Hurryable { cleanerThread = new Thread(grp, queue, "Keep-Alive-SocketCleaner"); cleanerThread.setDaemon(true); cleanerThread.setPriority(Thread.MAX_PRIORITY - 2); + // Set the context class loader to null in order to avoid + // keeping a strong reference to an application classloader. + cleanerThread.setContextClassLoader(null); cleanerThread.start(); return null; } diff --git a/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java b/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java index 65b965bb32b..cd1e6c26b8d 100644 --- a/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java +++ b/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java @@ -44,15 +44,6 @@ abstract class AbstractAclFileAttributeView return "acl"; } - @Override - public final Object getAttribute(String attribute) throws IOException { - if (attribute.equals(OWNER_NAME)) - return getOwner(); - if (attribute.equals(ACL_NAME)) - return getAcl(); - return null; - } - @Override @SuppressWarnings("unchecked") public final void setAttribute(String attribute, Object value) @@ -71,7 +62,7 @@ abstract class AbstractAclFileAttributeView } @Override - public final Map readAttributes(String[] attributes) + public final Map readAttributes(String[] attributes) throws IOException { boolean acl = false; @@ -91,7 +82,7 @@ abstract class AbstractAclFileAttributeView continue; } } - Map result = new HashMap(2); + Map result = new HashMap<>(2); if (acl) result.put(ACL_NAME, getAcl()); if (owner) diff --git a/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java b/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java index de84499cb78..6383c08edf1 100644 --- a/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java +++ b/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java @@ -53,30 +53,6 @@ abstract class AbstractBasicFileAttributeView return "basic"; } - @Override - public Object getAttribute(String attribute) throws IOException { - BasicFileAttributes attrs = readAttributes(); - if (attribute.equals(SIZE_NAME)) - return attrs.size(); - if (attribute.equals(CREATION_TIME_NAME)) - return attrs.creationTime(); - if (attribute.equals(LAST_ACCESS_TIME_NAME)) - return attrs.lastAccessTime(); - if (attribute.equals(LAST_MODIFIED_TIME_NAME)) - return attrs.lastModifiedTime(); - if (attribute.equals(FILE_KEY_NAME)) - return attrs.fileKey(); - if (attribute.equals(IS_DIRECTORY_NAME)) - return attrs.isDirectory(); - if (attribute.equals(IS_REGULAR_FILE_NAME)) - return attrs.isRegularFile(); - if (attribute.equals(IS_SYMBOLIC_LINK_NAME)) - return attrs.isSymbolicLink(); - if (attribute.equals(IS_OTHER_NAME)) - return attrs.isOther(); - return null; - } - @Override public void setAttribute(String attribute, Object value) throws IOException @@ -101,8 +77,8 @@ abstract class AbstractBasicFileAttributeView * Used to build a map of attribute name/values. */ static class AttributesBuilder { - private Set set = new HashSet(); - private Map map = new HashMap(); + private Set set = new HashSet<>(); + private Map map = new HashMap<>(); private boolean copyAll; private AttributesBuilder(String[] attributes) { @@ -172,7 +148,7 @@ abstract class AbstractBasicFileAttributeView } @Override - public Map readAttributes(String[] attributes) throws IOException { + public Map readAttributes(String[] attributes) throws IOException { AttributesBuilder builder = AttributesBuilder.create(attributes); addBasicAttributesToBuilder(readAttributes(), builder); return builder.unmodifiableMap(); diff --git a/jdk/src/share/classes/sun/nio/fs/AbstractFileSystemProvider.java b/jdk/src/share/classes/sun/nio/fs/AbstractFileSystemProvider.java new file mode 100644 index 00000000000..95d1cb30931 --- /dev/null +++ b/jdk/src/share/classes/sun/nio/fs/AbstractFileSystemProvider.java @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2011, 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. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * 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. + */ + +package sun.nio.fs; + +import java.nio.file.*; +import java.nio.file.spi.FileSystemProvider; +import java.io.IOException; +import java.util.Map; +import java.util.Collections; + +/** + * Base implementation class of FileSystemProvider + */ + +abstract class AbstractFileSystemProvider extends FileSystemProvider { + protected AbstractFileSystemProvider() { } + + /** + * Splits the given attribute name into the name of an attribute view and + * the attribute. If the attribute view is not identified then it assumed + * to be "basic". + */ + private static String[] split(String attribute) { + String[] s = new String[2]; + int pos = attribute.indexOf(':'); + if (pos == -1) { + s[0] = "basic"; + s[1] = attribute; + } else { + s[0] = attribute.substring(0, pos++); + s[1] = (pos == attribute.length()) ? "" : attribute.substring(pos); + } + return s; + } + + /** + * Gets a DynamicFileAttributeView by name. Returns {@code null} if the + * view is not available. + */ + abstract DynamicFileAttributeView getFileAttributeView(Path file, + String name, + LinkOption... options); + + @Override + public final void setAttribute(Path file, + String attribute, + Object value, + LinkOption... options) + throws IOException + { + String[] s = split(attribute); + DynamicFileAttributeView view = getFileAttributeView(file, s[0], options); + if (view == null) + throw new UnsupportedOperationException("View '" + s[0] + "' not available"); + view.setAttribute(s[1], value); + } + + @Override + public final Map readAttributes(Path file, String attributes, LinkOption... options) + throws IOException + { + String[] s = split(attributes); + DynamicFileAttributeView view = getFileAttributeView(file, s[0], options); + if (view == null) + return Collections.emptyMap(); + return view.readAttributes(s[1].split(",")); + } + + /** + * Deletes a file. The {@code failIfNotExists} parameters determines if an + * {@code IOException} is thrown when the file does not exist. + */ + abstract boolean implDelete(Path file, boolean failIfNotExists) throws IOException; + + @Override + public final void delete(Path file) throws IOException { + implDelete(file, true); + } + + @Override + public final boolean deleteIfExists(Path file) throws IOException { + return implDelete(file, false); + } +} diff --git a/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java b/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java index 612e8e36f59..2ab2961561c 100644 --- a/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java +++ b/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java @@ -25,7 +25,7 @@ package sun.nio.fs; -import java.nio.file.FileRef; +import java.nio.file.Path; import java.nio.file.spi.FileTypeDetector; import java.util.Locale; import java.io.IOException; @@ -46,7 +46,7 @@ public abstract class AbstractFileTypeDetector * and checks that the content type's syntax is valid. */ @Override - public final String probeContentType(FileRef file) throws IOException { + public final String probeContentType(Path file) throws IOException { if (file == null) throw new NullPointerException("'file' is null"); String result = implProbeContentType(file); @@ -56,7 +56,7 @@ public abstract class AbstractFileTypeDetector /** * Probes the given file to guess its content type. */ - protected abstract String implProbeContentType(FileRef file) + protected abstract String implProbeContentType(Path file) throws IOException; /** diff --git a/jdk/src/share/classes/sun/nio/fs/AbstractPath.java b/jdk/src/share/classes/sun/nio/fs/AbstractPath.java index 17262b68c04..eae2ac96483 100644 --- a/jdk/src/share/classes/sun/nio/fs/AbstractPath.java +++ b/jdk/src/share/classes/sun/nio/fs/AbstractPath.java @@ -26,391 +26,81 @@ package sun.nio.fs; import java.nio.file.*; -import static java.nio.file.StandardOpenOption.*; -import java.nio.file.attribute.*; -import java.nio.channels.*; -import java.nio.ByteBuffer; -import java.io.*; -import java.util.*; +import java.io.File; +import java.io.IOException; +import java.util.Iterator; +import java.util.NoSuchElementException; /** - * Base implementation class for a {@code Path}. + * Base implementation class of {@code Path}. */ -abstract class AbstractPath extends Path { +abstract class AbstractPath implements Path { protected AbstractPath() { } @Override - public final Path createFile(FileAttribute... attrs) - throws IOException - { - EnumSet options = EnumSet.of(CREATE_NEW, WRITE); - SeekableByteChannel sbc = newByteChannel(options, attrs); - try { - sbc.close(); - } catch (IOException x) { - // ignore - } - return this; - } - - /** - * Deletes a file. The {@code failIfNotExists} parameters determines if an - * {@code IOException} is thrown when the file does not exist. - */ - abstract void implDelete(boolean failIfNotExists) throws IOException; - - @Override - public final void delete() throws IOException { - implDelete(true); + public final boolean startsWith(String other) { + return startsWith(getFileSystem().getPath(other)); } @Override - public final void deleteIfExists() throws IOException { - implDelete(false); + public final boolean endsWith(String other) { + return endsWith(getFileSystem().getPath(other)); } @Override - public final InputStream newInputStream(OpenOption... options) - throws IOException - { - if (options.length > 0) { - for (OpenOption opt: options) { - if (opt != READ) - throw new UnsupportedOperationException("'" + opt + "' not allowed"); - } - } - return Channels.newInputStream(newByteChannel()); + public final Path resolve(String other) { + return resolve(getFileSystem().getPath(other)); } @Override - public final OutputStream newOutputStream(OpenOption... options) - throws IOException - { - int len = options.length; - Set opts = new HashSet(len + 3); - if (len == 0) { - opts.add(CREATE); - opts.add(TRUNCATE_EXISTING); - } else { - for (OpenOption opt: options) { - if (opt == READ) - throw new IllegalArgumentException("READ not allowed"); - opts.add(opt); - } - } - opts.add(WRITE); - return Channels.newOutputStream(newByteChannel(opts)); + public final Path resolveSibling(Path other) { + if (other == null) + throw new NullPointerException(); + Path parent = getParent(); + return (parent == null) ? other : parent.resolve(other); } @Override - public final SeekableByteChannel newByteChannel(OpenOption... options) - throws IOException - { - Set set = new HashSet(options.length); - Collections.addAll(set, options); - return newByteChannel(set); - } - - private static final DirectoryStream.Filter acceptAllFilter = - new DirectoryStream.Filter() { - @Override public boolean accept(Path entry) { return true; } - }; - - @Override - public final DirectoryStream newDirectoryStream() throws IOException { - return newDirectoryStream(acceptAllFilter); + public final Path resolveSibling(String other) { + return resolveSibling(getFileSystem().getPath(other)); } @Override - public final DirectoryStream newDirectoryStream(String glob) - throws IOException - { - // avoid creating a matcher if all entries are required. - if (glob.equals("*")) - return newDirectoryStream(); - - // create a matcher and return a filter that uses it. - final PathMatcher matcher = getFileSystem().getPathMatcher("glob:" + glob); - DirectoryStream.Filter filter = new DirectoryStream.Filter() { + public final Iterator iterator() { + return new Iterator() { + private int i = 0; @Override - public boolean accept(Path entry) { - return matcher.matches(entry.getName()); + public boolean hasNext() { + return (i < getNameCount()); + } + @Override + public Path next() { + if (i < getNameCount()) { + Path result = getName(i); + i++; + return result; + } else { + throw new NoSuchElementException(); + } + } + @Override + public void remove() { + throw new UnsupportedOperationException(); } }; - return newDirectoryStream(filter); } @Override - public final boolean exists() { - try { - checkAccess(); - return true; - } catch (IOException x) { - // unable to determine if file exists - } - return false; + public final File toFile() { + return new File(toString()); } - @Override - public final boolean notExists() { - try { - checkAccess(); - return false; - } catch (NoSuchFileException x) { - // file confirmed not to exist - return true; - } catch (IOException x) { - return false; - } - } - - private static final WatchEvent.Modifier[] NO_MODIFIERS = new WatchEvent.Modifier[0]; - @Override public final WatchKey register(WatchService watcher, WatchEvent.Kind... events) throws IOException { - return register(watcher, events, NO_MODIFIERS); - } - - abstract void implCopyTo(Path target, CopyOption... options) - throws IOException; - - @Override - public final Path copyTo(Path target, CopyOption... options) - throws IOException - { - if ((getFileSystem().provider() == target.getFileSystem().provider())) { - implCopyTo(target, options); - } else { - copyToForeignTarget(target, options); - } - return target; - } - - abstract void implMoveTo(Path target, CopyOption... options) - throws IOException; - - @Override - public final Path moveTo(Path target, CopyOption... options) - throws IOException - { - if ((getFileSystem().provider() == target.getFileSystem().provider())) { - implMoveTo(target, options); - } else { - // different providers so copy + delete - copyToForeignTarget(target, convertMoveToCopyOptions(options)); - delete(); - } - return target; - } - - /** - * Converts the given array of options for moving a file to options suitable - * for copying the file when a move is implemented as copy + delete. - */ - private static CopyOption[] convertMoveToCopyOptions(CopyOption... options) - throws AtomicMoveNotSupportedException - { - int len = options.length; - CopyOption[] newOptions = new CopyOption[len+2]; - for (int i=0; i 0; - buf.flip(); - while (buf.hasRemaining()) { - sbc.write(buf); - } - buf.rewind(); - } - - } finally { - sbc.close(); - } - } finally { - rbc.close(); - } - } - - /** - * Splits the given attribute name into the name of an attribute view and - * the attribute. If the attribute view is not identified then it assumed - * to be "basic". - */ - private static String[] split(String attribute) { - String[] s = new String[2]; - int pos = attribute.indexOf(':'); - if (pos == -1) { - s[0] = "basic"; - s[1] = attribute; - } else { - s[0] = attribute.substring(0, pos++); - s[1] = (pos == attribute.length()) ? "" : attribute.substring(pos); - } - return s; - } - - /** - * Gets a DynamicFileAttributeView by name. Returns {@code null} if the - * view is not available. - */ - abstract DynamicFileAttributeView getFileAttributeView(String name, - LinkOption... options); - - @Override - public final void setAttribute(String attribute, - Object value, - LinkOption... options) - throws IOException - { - String[] s = split(attribute); - DynamicFileAttributeView view = getFileAttributeView(s[0], options); - if (view == null) - throw new UnsupportedOperationException("View '" + s[0] + "' not available"); - view.setAttribute(s[1], value); - } - - @Override - public final Object getAttribute(String attribute, LinkOption... options) - throws IOException - { - String[] s = split(attribute); - DynamicFileAttributeView view = getFileAttributeView(s[0], options); - return (view == null) ? null : view.getAttribute(s[1]); - } - - @Override - public final Map readAttributes(String attributes, LinkOption... options) - throws IOException - { - String[] s = split(attributes); - DynamicFileAttributeView view = getFileAttributeView(s[0], options); - if (view == null) - return Collections.emptyMap(); - return view.readAttributes(s[1].split(",")); + return register(watcher, events, new WatchEvent.Modifier[0]); } } diff --git a/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java b/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java index 25567f3ce30..4bc4ecc29df 100644 --- a/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java +++ b/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java @@ -92,7 +92,7 @@ abstract class AbstractPoller implements Runnable { /** * Requests, and waits on, poller thread to register given file. */ - final WatchKey register(FileRef dir, + final WatchKey register(Path dir, WatchEvent.Kind[] events, WatchEvent.Modifier... modifiers) throws IOException @@ -102,7 +102,7 @@ abstract class AbstractPoller implements Runnable { throw new NullPointerException(); if (events.length == 0) throw new IllegalArgumentException("No events to register"); - Set> eventSet = new HashSet>(events.length); + Set> eventSet = new HashSet<>(events.length); for (WatchEvent.Kind event: events) { // standard events if (event == StandardWatchEventKind.ENTRY_CREATE || diff --git a/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java b/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java index 2f60db3f547..cf36a09ff0a 100644 --- a/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java +++ b/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java @@ -59,8 +59,7 @@ abstract class AbstractUserDefinedFileAttributeView return "user"; } - @Override - public final Object getAttribute(String attribute) throws IOException { + private Object getAttribute(String attribute) throws IOException { int size; try { size = size(attribute); @@ -90,11 +89,11 @@ abstract class AbstractUserDefinedFileAttributeView } @Override - public final Map readAttributes(String[] attributes) + public final Map readAttributes(String[] attributes) throws IOException { // names of attributes to return - List names = new ArrayList(); + List names = new ArrayList<>(); for (String name: attributes) { if (name.equals("*")) { @@ -106,7 +105,7 @@ abstract class AbstractUserDefinedFileAttributeView } // read each value and return in map - Map result = new HashMap(); + Map result = new HashMap<>(); for (String name: names) { Object value = getAttribute(name); if (value != null) diff --git a/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java b/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java index c3970d86c05..55234ba6528 100644 --- a/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java +++ b/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java @@ -32,7 +32,7 @@ import java.util.*; * Base implementation class for watch keys. */ -abstract class AbstractWatchKey extends WatchKey { +abstract class AbstractWatchKey implements WatchKey { /** * Maximum size of event list (in the future this may be tunable) @@ -53,6 +53,9 @@ abstract class AbstractWatchKey extends WatchKey { // reference to watcher private final AbstractWatchService watcher; + // reference to the original directory + private final Path dir; + // key state private State state; @@ -63,8 +66,9 @@ abstract class AbstractWatchKey extends WatchKey { // event for the context is an ENTRY_MODIFY event). private Map> lastModifyEvents; - protected AbstractWatchKey(AbstractWatchService watcher) { + protected AbstractWatchKey(Path dir, AbstractWatchService watcher) { this.watcher = watcher; + this.dir = dir; this.state = State.READY; this.events = new ArrayList>(); this.lastModifyEvents = new HashMap>(); @@ -74,6 +78,13 @@ abstract class AbstractWatchKey extends WatchKey { return watcher; } + /** + * Return the original watchable (Path) + */ + Path watchable() { + return dir; + } + /** * Enqueues this key to the watch service */ @@ -175,7 +186,7 @@ abstract class AbstractWatchKey extends WatchKey { /** * WatchEvent implementation */ - private static class Event extends WatchEvent { + private static class Event implements WatchEvent { private final WatchEvent.Kind kind; private final T context; diff --git a/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java b/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java index ffab46fd645..c35e15f4158 100644 --- a/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java +++ b/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java @@ -33,7 +33,7 @@ import java.io.IOException; * Base implementation class for watch services. */ -abstract class AbstractWatchService extends WatchService { +abstract class AbstractWatchService implements WatchService { // signaled keys waiting to be dequeued private final LinkedBlockingDeque pendingKeys = @@ -41,7 +41,7 @@ abstract class AbstractWatchService extends WatchService { // special key to indicate that watch service is closed private final WatchKey CLOSE_KEY = - new AbstractWatchKey(null) { + new AbstractWatchKey(null, null) { @Override public boolean isValid() { return true; @@ -54,7 +54,7 @@ abstract class AbstractWatchService extends WatchService { // used when closing watch service private volatile boolean closed; - private Object closeLock = new Object(); + private final Object closeLock = new Object(); protected AbstractWatchService() { } @@ -93,7 +93,7 @@ abstract class AbstractWatchService extends WatchService { } @Override - public final WatchKey poll() { + public final WatchKey poll() { checkOpen(); WatchKey key = pendingKeys.poll(); checkKey(key); diff --git a/jdk/src/share/classes/sun/nio/fs/DynamicFileAttributeView.java b/jdk/src/share/classes/sun/nio/fs/DynamicFileAttributeView.java index 963a741b525..f91b8539e9c 100644 --- a/jdk/src/share/classes/sun/nio/fs/DynamicFileAttributeView.java +++ b/jdk/src/share/classes/sun/nio/fs/DynamicFileAttributeView.java @@ -34,11 +34,6 @@ import java.io.IOException; */ interface DynamicFileAttributeView { - /** - * Reads the value of an attribute. - */ - Object getAttribute(String attribute) throws IOException; - /** * Sets/updates the value of an attribute. */ @@ -47,5 +42,5 @@ interface DynamicFileAttributeView { /** * Reads a set of file attributes as a bulk operation. */ - Map readAttributes(String[] attributes) throws IOException; + Map readAttributes(String[] attributes) throws IOException; } diff --git a/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java b/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java index 977b81f4cfa..aae9bd318c1 100644 --- a/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java +++ b/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java @@ -57,13 +57,6 @@ final class FileOwnerAttributeViewImpl return "owner"; } - @Override - public Object getAttribute(String attribute) throws IOException { - if (attribute.equals(OWNER_NAME)) - return getOwner(); - return null; - } - @Override public void setAttribute(String attribute, Object value) throws IOException @@ -77,8 +70,8 @@ final class FileOwnerAttributeViewImpl } @Override - public Map readAttributes(String[] attributes) throws IOException { - Map result = new HashMap(); + public Map readAttributes(String[] attributes) throws IOException { + Map result = new HashMap<>(); for (String attribute: attributes) { if (attribute.equals("*") || attribute.equals(OWNER_NAME)) { result.put(OWNER_NAME, getOwner()); diff --git a/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java b/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java index e2b2078bd99..7cd923842b5 100644 --- a/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java +++ b/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java @@ -146,7 +146,7 @@ class PollingWatchService throws IOException { // check file is a directory and get its file key if possible - BasicFileAttributes attrs = Attributes.readBasicFileAttributes(path); + BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class); if (!attrs.isDirectory()) { throw new NotDirectoryException(path.toString()); } @@ -164,7 +164,7 @@ class PollingWatchService watchKey = map.get(fileKey); if (watchKey == null) { // new registration - watchKey = new PollingWatchKey(this, path, fileKey); + watchKey = new PollingWatchKey(path, this, fileKey); map.put(fileKey, watchKey); } else { // update to existing registration @@ -228,7 +228,6 @@ class PollingWatchService * directory and queue keys when entries are added, modified, or deleted. */ private class PollingWatchKey extends AbstractWatchKey { - private final Path dir; private final Object fileKey; // current event set @@ -246,44 +245,28 @@ class PollingWatchService // map of entries in directory private Map entries; - PollingWatchKey(PollingWatchService watcher, - Path dir, - Object fileKey) + PollingWatchKey(Path dir, PollingWatchService watcher, Object fileKey) throws IOException { - super(watcher); - this.dir = dir; + super(dir, watcher); this.fileKey = fileKey; this.valid = true; this.tickCount = 0; this.entries = new HashMap(); // get the initial entries in the directory - DirectoryStream stream = dir.newDirectoryStream(); - try { + try (DirectoryStream stream = Files.newDirectoryStream(dir)) { for (Path entry: stream) { // don't follow links - long lastModified = Attributes - .readBasicFileAttributes(entry, LinkOption.NOFOLLOW_LINKS) - .lastModifiedTime().toMillis(); - entries.put(entry.getName(), - new CacheEntry(lastModified, tickCount)); + long lastModified = + Files.getLastModifiedTime(entry, LinkOption.NOFOLLOW_LINKS).toMillis(); + entries.put(entry.getFileName(), new CacheEntry(lastModified, tickCount)); } - } catch (ConcurrentModificationException cme) { - // thrown if directory iteration fails - Throwable cause = cme.getCause(); - if (cause != null && cause instanceof IOException) - throw (IOException)cause; - throw new AssertionError(cme); - } finally { - stream.close(); + } catch (DirectoryIteratorException e) { + throw e.getCause(); } } - FileRef directory() { - return dir; - } - Object fileKey() { return fileKey; } @@ -342,7 +325,7 @@ class PollingWatchService // open directory DirectoryStream stream = null; try { - stream = dir.newDirectoryStream(); + stream = Files.newDirectoryStream(watchable()); } catch (IOException x) { // directory is no longer accessible so cancel key cancel(); @@ -355,9 +338,8 @@ class PollingWatchService for (Path entry: stream) { long lastModified = 0L; try { - lastModified = Attributes - .readBasicFileAttributes(entry, LinkOption.NOFOLLOW_LINKS) - .lastModifiedTime().toMillis(); + lastModified = + Files.getLastModifiedTime(entry, LinkOption.NOFOLLOW_LINKS).toMillis(); } catch (IOException x) { // unable to get attributes of entry. If file has just // been deleted then we'll report it as deleted on the @@ -366,15 +348,15 @@ class PollingWatchService } // lookup cache - CacheEntry e = entries.get(entry.getName()); + CacheEntry e = entries.get(entry.getFileName()); if (e == null) { // new file found - entries.put(entry.getName(), + entries.put(entry.getFileName(), new CacheEntry(lastModified, tickCount)); // queue ENTRY_CREATE if event enabled if (events.contains(StandardWatchEventKind.ENTRY_CREATE)) { - signalEvent(StandardWatchEventKind.ENTRY_CREATE, entry.getName()); + signalEvent(StandardWatchEventKind.ENTRY_CREATE, entry.getFileName()); continue; } else { // if ENTRY_CREATE is not enabled and ENTRY_MODIFY is @@ -382,7 +364,7 @@ class PollingWatchService // modifications to the file immediately after it is // created. if (events.contains(StandardWatchEventKind.ENTRY_MODIFY)) { - signalEvent(StandardWatchEventKind.ENTRY_MODIFY, entry.getName()); + signalEvent(StandardWatchEventKind.ENTRY_MODIFY, entry.getFileName()); } } continue; @@ -391,15 +373,17 @@ class PollingWatchService // check if file has changed if (e.lastModified != lastModified) { if (events.contains(StandardWatchEventKind.ENTRY_MODIFY)) { - signalEvent(StandardWatchEventKind.ENTRY_MODIFY, entry.getName()); + signalEvent(StandardWatchEventKind.ENTRY_MODIFY, + entry.getFileName()); } } // entry in cache so update poll time e.update(lastModified, tickCount); } - } catch (ConcurrentModificationException x) { - // FIXME - should handle this + } catch (DirectoryIteratorException e) { + // ignore for now; if the directory is no longer accessible + // then the key will be cancelled on the next poll } finally { // close directory stream diff --git a/jdk/src/share/classes/sun/print/resources/serviceui_de.properties b/jdk/src/share/classes/sun/print/resources/serviceui_de.properties index 63702575e27..36b4f4aea95 100644 --- a/jdk/src/share/classes/sun/print/resources/serviceui_de.properties +++ b/jdk/src/share/classes/sun/print/resources/serviceui_de.properties @@ -2,14 +2,14 @@ # border.chromaticity=Farbdarstellung border.copies=Kopien -border.jobattributes=Job-Attribute +border.jobattributes=Jobattribute border.media=Medien border.orientation=Ausrichtung border.printrange=Druckbereich -border.printservice=Druckdienst -border.quality=Qualit\u00e4t +border.printservice=Druckservice +border.quality=Qualit\u00E4t border.sides=Seiten -border.margins=R\u00e4nder +border.margins=R\u00E4nder # button.cancel=Abbrechen button.ok=OK @@ -18,63 +18,63 @@ button.properties=Eigenschaften... button.properties.mnemonic=E # checkbox.collate=Sortieren -checkbox.collate.mnemonic=R -checkbox.jobsheets=Deckblatt +checkbox.collate.mnemonic=S +checkbox.jobsheets=Bannerseite checkbox.jobsheets.mnemonic=B -checkbox.printtofile=Ausgabe in Datei umleiten +checkbox.printtofile=In Datei drucken checkbox.printtofile.mnemonic=D # dialog.printtitle=Drucken dialog.pstitle=Seite einrichten -dialog.overwrite=Diese Datei existiert bereits. M\u00f6chten Sie die vorhandene Datei \u00fcberschreiben? -dialog.owtitle=Ausgabe in Datei umleiten -dialog.printtofile=Ausgabe in Datei umleiten -dialog.noprintermsg=Kein Druckdienst gefunden -dialog.writeerror=Schreiben in Datei nicht m\u00f6glich: +dialog.overwrite=Diese Datei ist bereits vorhanden. M\u00F6chten Sie die vorhandene Datei \u00FCberschreiben? +dialog.owtitle=In Datei drucken +dialog.printtofile=In Datei drucken +dialog.noprintermsg=Kein Druckservice gefunden. +dialog.writeerror=Schreiben in Datei nicht m\u00F6glich: # label.info=Info: -label.jobname=Job-Name: +label.jobname=Jobname: label.jobname.mnemonic=J -label.numcopies=Anzahl der Kopien: -label.numcopies.mnemonic=O -label.priority=Priorit\u00e4t: +label.numcopies=Anzahl Kopien: +label.numcopies.mnemonic=K +label.priority=Priorit\u00E4t: label.priority.mnemonic=R label.psname=Name: label.psname.mnemonic=N label.pstype=Typ: label.rangeto=Bis -label.size=Gr\u00f6\u00dfe: -label.size.mnemonic=E +label.size=Gr\u00F6\u00DFe: +label.size.mnemonic=G label.source=Quelle: label.source.mnemonic=U label.status=Status: label.username=Benutzername: -label.username.mnemonic=U +label.username.mnemonic=Z label.millimetres=(mm) -label.inches=(in) +label.inches=(Zoll) label.topmargin=oben label.topmargin.mnemonic=O label.bottommargin=unten -label.bottommargin.mnemonic=N +label.bottommargin.mnemonic=T label.leftmargin=links label.leftmargin.mnemonic=L label.rightmargin=rechts -label.rightmargin.mnemonic=R +label.rightmargin.mnemonic=C # radiobutton.color=Farbe radiobutton.color.mnemonic=F radiobutton.draftq=Entwurf -radiobutton.draftq.mnemonic=T +radiobutton.draftq.mnemonic=W radiobutton.duplex=Duplex -radiobutton.duplex.mnemonic=D +radiobutton.duplex.mnemonic=X radiobutton.highq=Hoch radiobutton.highq.mnemonic=H radiobutton.landscape=Querformat radiobutton.landscape.mnemonic=Q -radiobutton.monochrome=Schwarzwei\u00df +radiobutton.monochrome=Schwarzwei\u00DF radiobutton.monochrome.mnemonic=W radiobutton.normalq=Normal -radiobutton.normalq.mnemonic=N +radiobutton.normalq.mnemonic=M radiobutton.oneside=Einseitig radiobutton.oneside.mnemonic=E radiobutton.portrait=Hochformat @@ -91,15 +91,15 @@ radiobutton.tumble=Kalenderdruck radiobutton.tumble.mnemonic=K # The vkMnemonics correspond with the constants defined in KeyEvent, eg # 65 = KeyEvent.VK_A -tab.appearance=Aussehen +tab.appearance=Darstellung tab.appearance.vkMnemonic=65 tab.general=Allgemein tab.general.vkMnemonic=71 tab.pagesetup=Seite einrichten tab.pagesetup.vkMnemonic=83 # -error.pagerange=Ung\u00fcltiger Seitenbereich. Bitte geben Sie die Werte noch einmal ein (z. B. 1-3,5,7-10). -error.destination=Ung\u00fcltiger Dateiname. Bitte versuchen Sie es noch einmal. +error.pagerange=Ung\u00FCltiger Seitenbereich. Geben Sie die Werte erneut ein (Beispiel: 1-3,5,7-10) +error.destination=Ung\u00FCltiger Dateiname. Wiederholen Sie den Vorgang # # The following keys match the Strings returned by MediaSizeName.toString() # (in some cases the space character is replaced by '-' and the pound @@ -156,7 +156,7 @@ na-legal=Legal executive=Executive ledger=Ledger tabloid=Tabloid -invoice=Rechnung +invoice=Invoice folio=Folio quarto=Quarto japanese-postcard=Postkarte (JIS) @@ -166,12 +166,12 @@ b=Millimeterpapier B c=Millimeterpapier C d=Millimeterpapier D e=Millimeterpapier E -iso-designated-long=ISO-bestimmte L\u00e4nge +iso-designated-long=ISO Designated Long italian-envelope=Italy-Umschlag italy-envelope=Italy-Umschlag invite-envelope=Einladungsumschlag monarch-envelope=Monarch-Umschlag -personal-envelope=Pers\u00f6nlicher Umschlag +personal-envelope=Pers\u00F6nlicher Umschlag na-number-9-envelope=Umschlag Nr. 9 na-number-10-envelope=Umschlag Nr. 10 na-number-11-envelope=Umschlag Nr. 11 @@ -195,20 +195,20 @@ middle=Mitte bottom=Unten envelope=Umschlag manual=Manuell -large-capacity=Hohe Kapazit\u00e4t +large-capacity=Hohe Kapazit\u00E4t main=Haupt side=Seite # Add the additional standard bins defined by win32 -Manual-Envelope=Manuelle Umschlagzuf\u00fchrung -Automatic-Feeder=Automatische Zuf\u00fchrung +Manual-Envelope=Manuelle Umschlagzuf\u00FChrung +Automatic-Feeder=Automatische Zuf\u00FChrung Tractor-Feeder=Endlospapiereinzug Small-Format=Kleinformat -Large-Format=Gro\u00dfformat +Large-Format=Gro\u00DFformat Cassette=Kassette Form-Source=Formularquelle # # The following keys match the Strings returned by # PrinterIsAcceptingJobs.toString() # -accepting-jobs=Jobs werden angenommen. -not-accepting-jobs=Es werden keine Jobs angenommen. +accepting-jobs=Jobs annehmen +not-accepting-jobs=Jobs nicht annehmen diff --git a/jdk/src/share/classes/sun/print/resources/serviceui_es.properties b/jdk/src/share/classes/sun/print/resources/serviceui_es.properties index 4a15d9bdd43..c1e9a7a8618 100644 --- a/jdk/src/share/classes/sun/print/resources/serviceui_es.properties +++ b/jdk/src/share/classes/sun/print/resources/serviceui_es.properties @@ -1,15 +1,15 @@ # # -border.chromaticity=Aspecto del color +border.chromaticity=Apariencia del Color border.copies=Copias -border.jobattributes=Atributos del trabajo +border.jobattributes=Atributos del Trabajo border.media=Soporte -border.orientation=Orientaci\u00f3n -border.printrange=Rango de impresi\u00f3n -border.printservice=Servicio de impresi\u00f3n +border.orientation=Orientaci\u00F3n +border.printrange=Rango de Impresi\u00F3n +border.printservice=Servicio de Impresi\u00F3n border.quality=Calidad border.sides=Caras -border.margins=M\u00e1rgenes +border.margins=M\u00E1rgenes # button.cancel=Cancelar button.ok=Aceptar @@ -18,39 +18,39 @@ button.properties=Propiedades... button.properties.mnemonic=P # checkbox.collate=Intercalar -checkbox.collate.mnemonic=I -checkbox.jobsheets=P\u00e1gina de car\u00e1tula -checkbox.jobsheets.mnemonic=r -checkbox.printtofile=Imprimir en archivo -checkbox.printtofile.mnemonic=m +checkbox.collate.mnemonic=E +checkbox.jobsheets=P\u00E1gina de R\u00F3tulo +checkbox.jobsheets.mnemonic=R +checkbox.printtofile=Imprimir en Archivo +checkbox.printtofile.mnemonic=M # dialog.printtitle=Imprimir -dialog.pstitle=Configurar p\u00e1gina -dialog.overwrite=Este archivo ya existe. \u00bfDesea sobrescribirlo? -dialog.owtitle=Imprimir en archivo -dialog.printtofile=Imprimir en archivo -dialog.noprintermsg=No se ha encontrado el servicio de impresi\u00f3n. +dialog.pstitle=Preparar P\u00E1gina +dialog.overwrite=Este archivo ya existe. \u00BFDesea sobrescribirlo? +dialog.owtitle=Imprimir en Archivo +dialog.printtofile=Imprimir en Archivo +dialog.noprintermsg=No se ha encontrado el servicio de impresi\u00F3n. dialog.writeerror=No se puede escribir en el archivo: # -label.info=Informaci\u00f3n: -label.jobname=Nombre del trabajo: -label.jobname.mnemonic=t -label.numcopies=N\u00famero de copias: +label.info=Informaci\u00F3n: +label.jobname=Nombre del Trabajo: +label.jobname.mnemonic=T +label.numcopies=N\u00FAmero de Copias: label.numcopies.mnemonic=O label.priority=Prioridad: -label.priority.mnemonic=P +label.priority.mnemonic=R label.psname=Nombre: label.psname.mnemonic=N -label.pstype=Escriba: +label.pstype=Tipo: label.rangeto=A -label.size=Tama\u00f1o: +label.size=Tama\u00F1o: label.size.mnemonic=T label.source=Origen: label.source.mnemonic=O label.status=Estado: -label.username=Nombre de usuario: +label.username=Nombre de Usuario: label.username.mnemonic=S -label.millimetres=(mm.) +label.millimetres=(mm) label.inches=(pulg.) label.topmargin=superior label.topmargin.mnemonic=S @@ -65,7 +65,7 @@ radiobutton.color=Color radiobutton.color.mnemonic=O radiobutton.draftq=Borrador radiobutton.draftq.mnemonic=B -radiobutton.duplex=D\u00faplex +radiobutton.duplex=D\u00FAplex radiobutton.duplex.mnemonic=D radiobutton.highq=Alta radiobutton.highq.mnemonic=L @@ -75,49 +75,49 @@ radiobutton.monochrome=Monocromo radiobutton.monochrome.mnemonic=M radiobutton.normalq=Normal radiobutton.normalq.mnemonic=N -radiobutton.oneside=Una cara +radiobutton.oneside=Una Cara radiobutton.oneside.mnemonic=U radiobutton.portrait=Vertical radiobutton.portrait.mnemonic=V radiobutton.rangeall=Todo radiobutton.rangeall.mnemonic=T -radiobutton.rangepages=P\u00e1ginas -radiobutton.rangepages.mnemonic=P -radiobutton.revlandscape=Horizontal inverso +radiobutton.rangepages=P\u00E1ginas +radiobutton.rangepages.mnemonic=A +radiobutton.revlandscape=Horizontal Inverso radiobutton.revlandscape.mnemonic=N -radiobutton.revportrait=Vertical inverso +radiobutton.revportrait=Vertical Inverso radiobutton.revportrait.mnemonic=R -radiobutton.tumble=Voltear -radiobutton.tumble.mnemonic=V +radiobutton.tumble=Cambio de Cara +radiobutton.tumble.mnemonic=C # The vkMnemonics correspond with the constants defined in KeyEvent, eg # 65 = KeyEvent.VK_A -tab.appearance=Aspecto +tab.appearance=Apariencia tab.appearance.vkMnemonic=65 tab.general=General tab.general.vkMnemonic=71 -tab.pagesetup=Configurar p\u00e1gina -tab.pagesetup.vkMnemonic=67 +tab.pagesetup=Preparar P\u00E1gina +tab.pagesetup.vkMnemonic=83 # -error.pagerange=Rango de p\u00e1ginas no v\u00e1lido; vuelva a introducir los valores (por ejemplo, 1-3, 5, 7-10) -error.destination=Nombre de archivo no v\u00e1lido; int\u00e9ntelo de nuevo. +error.pagerange=Rango de p\u00E1ginas no v\u00E1lido; vuelva a introducir los valores (por ejemplo, 1-3, 5, 7-10) +error.destination=Nombre de archivo no v\u00E1lido; int\u00E9ntelo de nuevo # # The following keys match the Strings returned by MediaSizeName.toString() # (in some cases the space character is replaced by '-' and the pound # character is replaced with 'n') # -iso-4a0=4A0 (ISO/DIN y JIS) -iso-2a0=2A0 (ISO/DIN y JIS) -iso-a0=A0 (ISO/DIN y JIS) -iso-a1=A1 (ISO/DIN y JIS) -iso-a2=A2 (ISO/DIN y JIS) -iso-a3=A3 (ISO/DIN y JIS) -iso-a4=A4 (ISO/DIN y JIS) -iso-a5=A5 (ISO/DIN y JIS) -iso-a6=A6 (ISO/DIN y JIS) -iso-a7=A7 (ISO/DIN y JIS) -iso-a8=A8 (ISO/DIN y JIS) -iso-a9=A9 (ISO/DIN y JIS) -iso-a10=A10 (ISO/DIN y JIS) +iso-4a0=4A0 (ISO/DIN & JIS) +iso-2a0=2A0 (ISO/DIN & JIS) +iso-a0=A0 (ISO/DIN & JIS) +iso-a1=A1 (ISO/DIN & JIS) +iso-a2=A2 (ISO/DIN & JIS) +iso-a3=A3 (ISO/DIN & JIS) +iso-a4=A4 (ISO/DIN & JIS) +iso-a5=A5 (ISO/DIN & JIS) +iso-a6=A6 (ISO/DIN & JIS) +iso-a7=A7 (ISO/DIN & JIS) +iso-a8=A8 (ISO/DIN & JIS) +iso-a9=A9 (ISO/DIN & JIS) +iso-a10=A10 (ISO/DIN & JIS) iso-b0=B0 (ISO/DIN) iso-b1=B1 (ISO/DIN) iso-b2=B2 (ISO/DIN) @@ -153,30 +153,30 @@ iso-c9=C9 (ISO/DIN) iso-c10=C10 (ISO/DIN) na-letter=Carta na-legal=Legal -executive=Executive -ledger=Libro mayor +executive=Ejecutivo +ledger=Libro Mayor tabloid=Tabloide invoice=Factura folio=Folio quarto=Cuarto japanese-postcard=Postal (JIS) -oufuko-postcard=Postal doble (JIS) -a=Ingenier\u00eda A -b=Ingenier\u00eda B -c=Ingenier\u00eda C -d=Ingenier\u00eda D -e=Ingenier\u00eda E -iso-designated-long=Largo designado ISO -italian-envelope=Sobre italiano -italy-envelope=Sobre italiano -invite-envelope=Sobre de invitaci\u00f3n +oufuko-postcard=Postal Doble (JIS) +a=Ingenier\u00EDa A +b=Ingenier\u00EDa B +c=Ingenier\u00EDa C +d=Ingenier\u00EDa D +e=Ingenier\u00EDa E +iso-designated-long=Largo Designado ISO +italian-envelope=Sobre Italiano +italy-envelope=Sobre Italiano +invite-envelope=Sobre de Invitaci\u00F3n monarch-envelope=Sobre Monarch -personal-envelope=Sobre personal -na-number-9-envelope=Sobre N.\u00ba 9 -na-number-10-envelope=Sobre N.\u00ba 10 -na-number-11-envelope=Sobre N.\u00ba 11 -na-number-12-envelope=Sobre N.\u00ba 12 -na-number-14-envelope=Sobre N.\u00ba 14 +personal-envelope=Sobre Personal +na-number-9-envelope=Sobre N\u00BA 9 +na-number-10-envelope=Sobre N\u00BA 10 +na-number-11-envelope=Sobre N\u00BA 11 +na-number-12-envelope=Sobre N\u00BA 12 +na-number-14-envelope=Sobre N\u00BA 14 na-6x9-envelope=Sobre 6x9 na-7x9-envelope=Sobre 6x7 na-9x11-envelope=Sobre 9x11 @@ -189,23 +189,23 @@ na-8x10=Papel 8" x 10" # # The following keys match the Strings returned by MediaTray.toString() # -auto-select=Seleccionar autom\u00e1ticamente +auto-select=Seleccionar Autom\u00E1ticamente top=Arriba middle=Centro bottom=Abajo envelope=Sobre manual=Manual -large-capacity=Gran capacidad +large-capacity=Gran Capacidad main=Principal side=Cara # Add the additional standard bins defined by win32 -Manual-Envelope=Sobre manual -Automatic-Feeder=Alimentador autom\u00e1tico -Tractor-Feeder=Alimentador de arrastre -Small-Format=Formato peque\u00f1o -Large-Format=Formato grande +Manual-Envelope=Sobre Manual +Automatic-Feeder=Alimentador Autom\u00E1tico +Tractor-Feeder=Alimentador de Arrastre +Small-Format=Formato Peque\u00F1o +Large-Format=Formato Grande Cassette=Casete -Form-Source=Origen de formulario +Form-Source=Origen de Formulario # # The following keys match the Strings returned by # PrinterIsAcceptingJobs.toString() diff --git a/jdk/src/share/classes/sun/print/resources/serviceui_fr.properties b/jdk/src/share/classes/sun/print/resources/serviceui_fr.properties index ce64829dc1d..afd5fa28309 100644 --- a/jdk/src/share/classes/sun/print/resources/serviceui_fr.properties +++ b/jdk/src/share/classes/sun/print/resources/serviceui_fr.properties @@ -2,67 +2,67 @@ # border.chromaticity=Couleur border.copies=Copies -border.jobattributes=Attributs de t\u00e2che +border.jobattributes=Attributs de t\u00E2che border.media=Support border.orientation=Orientation -border.printrange=\u00c9tendue d'impression +border.printrange=Plage d'impression border.printservice=Service d'impression -border.quality=Qualit\u00e9 -border.sides=C\u00f4t\u00e9s +border.quality=Qualit\u00E9 +border.sides=C\u00F4t\u00E9s border.margins=Marges # button.cancel=Annuler button.ok=OK button.print=Imprimer -button.properties=Propri\u00e9t\u00e9s... +button.properties=Propri\u00E9t\u00E9s... button.properties.mnemonic=R # -checkbox.collate=Interclasser -checkbox.collate.mnemonic=L -checkbox.jobsheets=Page de garde -checkbox.jobsheets.mnemonic=P +checkbox.collate=Collationner +checkbox.collate.mnemonic=C +checkbox.jobsheets=Page de banni\u00E8re +checkbox.jobsheets.mnemonic=B checkbox.printtofile=Imprimer dans un fichier checkbox.printtofile.mnemonic=F # dialog.printtitle=Imprimer dialog.pstitle=Mise en page -dialog.overwrite=Ce fichier existe d\u00e9j\u00e0. Remplacer le fichier existant ? +dialog.overwrite=Ce fichier existe d\u00E9j\u00E0. Remplacer le fichier existant ? dialog.owtitle=Imprimer dans un fichier dialog.printtofile=Imprimer dans un fichier -dialog.noprintermsg=Service d'impression introuvable -dialog.writeerror=Impossible d'enregistrer dans le fichier : +dialog.noprintermsg=Service d'impression introuvable. +dialog.writeerror=Impossible d'\u00E9crire dans le fichier : # -label.info=Info : -label.jobname=Nom de t\u00e2che : +label.info=Infos : +label.jobname=Nom de la t\u00E2che : label.jobname.mnemonic=C label.numcopies=Nombre de copies : label.numcopies.mnemonic=O -label.priority=Priorit\u00e9 : +label.priority=Priorit\u00E9 : label.priority.mnemonic=R label.psname=Nom : label.psname.mnemonic=N label.pstype=Type : -label.rangeto=Pour +label.rangeto=A label.size=Taille : -label.size.mnemonic=T +label.size.mnemonic=A label.source=Source : label.source.mnemonic=C -label.status=\u00c9tat : -label.username=Nom d'utilisateur : -label.username.mnemonic=O +label.status=Statut : +label.username=Nom utilisateur : +label.username.mnemonic=U label.millimetres=(mm) -label.inches=(in) -label.topmargin=sup\u00e9rieure -label.topmargin.mnemonic=U -label.bottommargin=inf\u00e9rieure -label.bottommargin.mnemonic=F +label.inches=(po) +label.topmargin=haut +label.topmargin.mnemonic=T +label.bottommargin=bas +label.bottommargin.mnemonic=B label.leftmargin=gauche label.leftmargin.mnemonic=E label.rightmargin=droite label.rightmargin.mnemonic=R # radiobutton.color=Couleur -radiobutton.color.mnemonic=L +radiobutton.color.mnemonic=C radiobutton.draftq=Brouillon radiobutton.draftq.mnemonic=B radiobutton.duplex=Duplex @@ -75,30 +75,30 @@ radiobutton.monochrome=Monochrome radiobutton.monochrome.mnemonic=M radiobutton.normalq=Normal radiobutton.normalq.mnemonic=N -radiobutton.oneside=Un c\u00f4t\u00e9 +radiobutton.oneside=Un c\u00F4t\u00E9 radiobutton.oneside.mnemonic=U radiobutton.portrait=Portrait radiobutton.portrait.mnemonic=O radiobutton.rangeall=Tout radiobutton.rangeall.mnemonic=T radiobutton.rangepages=Pages -radiobutton.rangepages.mnemonic=P -radiobutton.revlandscape=Paysage invers\u00e9 +radiobutton.rangepages.mnemonic=E +radiobutton.revlandscape=Paysage invers\u00E9 radiobutton.revlandscape.mnemonic=N -radiobutton.revportrait=Portrait invers\u00e9 +radiobutton.revportrait=Portrait invers\u00E9 radiobutton.revportrait.mnemonic=I -radiobutton.tumble=Culbuter +radiobutton.tumble=T\u00EAte-b\u00EAche radiobutton.tumble.mnemonic=T # The vkMnemonics correspond with the constants defined in KeyEvent, eg # 65 = KeyEvent.VK_A tab.appearance=Apparence tab.appearance.vkMnemonic=65 -tab.general=G\u00e9n\u00e9ral +tab.general=G\u00E9n\u00E9ral tab.general.vkMnemonic=71 tab.pagesetup=Mise en page tab.pagesetup.vkMnemonic=83 # -error.pagerange=Etendue de pages non valide ; sp\u00e9cifiez les valeurs de nouveau (p. ex., 1-3,5,7-10) +error.pagerange=Plage de pages non valide. Sp\u00E9cifiez les valeurs de nouveau (ex. : 1-3,5,7-10) error.destination=Nom de fichier non valide ; recommencez # # The following keys match the Strings returned by MediaSizeName.toString() @@ -109,7 +109,7 @@ iso-4a0=4A0 (ISO/DIN & JIS) iso-2a0=2A0 (ISO/DIN & JIS) iso-a0=A0 (ISO/DIN & JIS) iso-a1=A1 (ISO/DIN & JIS) -iso-a2=A2 (ISO/DIN & JIS)1 (ISO/DIN & JIS) +iso-a2=A2 (ISO/DIN & JIS) iso-a3=A3 (ISO/DIN & JIS) iso-a4=A4 (ISO/DIN & JIS) iso-a5=A5 (ISO/DIN & JIS) @@ -133,7 +133,7 @@ jis-b0=B0 (JIS) jis-b1=B1 (JIS) jis-b2=B2 (JIS) jis-b3=B3 (JIS) -jis-b4=B4 (JIS)3 (JIS) +jis-b4=B4 (JIS) jis-b5=B5 (JIS) jis-b6=B6 (JIS) jis-b7=B7 (JIS) @@ -152,31 +152,31 @@ iso-c8=C8 (ISO/DIN) iso-c9=C9 (ISO/DIN) iso-c10=C10 (ISO/DIN) na-letter=Lettre -na-legal=L\u00e9gal +na-legal=L\u00E9gal executive=Administratif ledger=Fiche -tabloid=Tablo\u00efd +tabloid=Tablo\u00EFd invoice=Facture folio=Folio quarto=Quarto japanese-postcard=Carte postale (JIS) -oufuko-postcard=Carte postale (JIS) -a=Ing\u00e9nierie A -b=Ing\u00e9nierie B -c=Ing\u00e9nierie C -d=Ing\u00e9nierie D -e=Ing\u00e9nierie E +oufuko-postcard=Carte postale double (JIS) +a=Ing\u00E9nierie A +b=Ing\u00E9nierie B +c=Ing\u00E9nierie C +d=Ing\u00E9nierie D +e=Ing\u00E9nierie E iso-designated-long=Long ISO italian-envelope=Enveloppe Italie italy-envelope=Enveloppe Italie invite-envelope=Enveloppe invitation monarch-envelope=Enveloppe Monarch personal-envelope=Enveloppe personnelle -na-number-9-envelope=Enveloppe no 9 -na-number-10-envelope=Enveloppe no 10 -na-number-11-envelope=Enveloppe no 11 -na-number-12-envelope=Enveloppe no 12 -na-number-14-envelope=Enveloppe no 14 +na-number-9-envelope=Enveloppe n\u00B09 +na-number-10-envelope=Enveloppe n\u00B010 +na-number-11-envelope=Enveloppe n\u00B011 +na-number-12-envelope=Enveloppe n\u00B012 +na-number-14-envelope=Enveloppe n\u00B014 na-6x9-envelope=Enveloppe 6x9 na-7x9-envelope=Enveloppe 6x7 na-9x11-envelope=Enveloppe 9x11 @@ -184,22 +184,22 @@ na-9x12-envelope=Enveloppe 9x12 na-10x13-envelope=Enveloppe 10x15 na-10x14-envelope=Enveloppe 10x15 na-10x15-envelope=Enveloppe 10x15 -na-5x7=Papier 5 x 7 po -na-8x10=Papier 8 x 10 po +na-5x7=Papier 5x7 po +na-8x10=Papier 8x10 po # # The following keys match the Strings returned by MediaTray.toString() # -auto-select=S\u00e9lection automatique +auto-select=S\u00E9lection automatique top=Haut middle=Centre bottom=Bas envelope=Enveloppe manual=Manuel -large-capacity=Grande capacit\u00e9 +large-capacity=Grande capacit\u00E9 main=Principal -side=C\u00f4t\u00e9 +side=C\u00F4t\u00E9 # Add the additional standard bins defined by win32 -Manual-Envelope=Enveloppe +Manual-Envelope=Enveloppe (manuel) Automatic-Feeder=Alimentation automatique Tractor-Feeder=Alimentation en continu Small-Format=Petit format @@ -210,5 +210,5 @@ Form-Source=Source du formulaire # The following keys match the Strings returned by # PrinterIsAcceptingJobs.toString() # -accepting-jobs=Accepter les t\u00e2ches -not-accepting-jobs=Refuser les t\u00e2ches +accepting-jobs=Acceptation des t\u00E2ches +not-accepting-jobs=Refus des t\u00E2ches diff --git a/jdk/src/share/classes/sun/print/resources/serviceui_it.properties b/jdk/src/share/classes/sun/print/resources/serviceui_it.properties index a3f581b5268..5947afb9e04 100644 --- a/jdk/src/share/classes/sun/print/resources/serviceui_it.properties +++ b/jdk/src/share/classes/sun/print/resources/serviceui_it.properties @@ -7,14 +7,14 @@ border.media=Supporti border.orientation=Orientamento border.printrange=Intervallo di stampa border.printservice=Servizio di stampa -border.quality=Qualit\u00e0 +border.quality=Qualit\u00E0 border.sides=Lati border.margins=Margini # button.cancel=Annulla button.ok=OK button.print=Stampa -button.properties=Propriet\u00e0... +button.properties=Propriet\u00E0... button.properties.mnemonic=R # checkbox.collate=Fascicola @@ -26,7 +26,7 @@ checkbox.printtofile.mnemonic=F # dialog.printtitle=Stampa dialog.pstitle=Imposta pagina -dialog.overwrite=Il file esiste gi\u00e0. Sovrascrivere il file esistente? +dialog.overwrite=Il file esiste gi\u00E0. Sovrascrivere il file esistente? dialog.owtitle=Stampa su file dialog.printtofile=Stampa su file dialog.noprintermsg=Nessun servizio di stampa trovato @@ -37,7 +37,7 @@ label.jobname=Nome processo: label.jobname.mnemonic=M label.numcopies=Numero di copie: label.numcopies.mnemonic=U -label.priority=Priorit\u00e0: +label.priority=Priorit\u00E0: label.priority.mnemonic=I label.psname=Nome: label.psname.mnemonic=N @@ -45,13 +45,13 @@ label.pstype=Tipo: label.rangeto=A label.size=Dimensioni: label.size.mnemonic=D -label.source=Sorgente: +label.source=Origine: label.source.mnemonic=R label.status=Stato: label.username=Nome utente: label.username.mnemonic=U label.millimetres=(mm) -label.inches=(in) +label.inches=(poll.) label.topmargin=alto label.topmargin.mnemonic=L label.bottommargin=basso @@ -67,12 +67,12 @@ radiobutton.draftq=Bozza radiobutton.draftq.mnemonic=B radiobutton.duplex=Fronte retro radiobutton.duplex.mnemonic=R -radiobutton.highq=Alta +radiobutton.highq=Alto radiobutton.highq.mnemonic=L radiobutton.landscape=Orizzontale radiobutton.landscape.mnemonic=O radiobutton.monochrome=Monocromatica -radiobutton.monochrome.mnemonic=M +radiobutton.monochrome.mnemonic=A radiobutton.normalq=Normale radiobutton.normalq.mnemonic=N radiobutton.oneside=Un lato @@ -82,10 +82,10 @@ radiobutton.portrait.mnemonic=V radiobutton.rangeall=Tutto radiobutton.rangeall.mnemonic=T radiobutton.rangepages=Pagine -radiobutton.rangepages.mnemonic=P -radiobutton.revlandscape=Orizzontale invertito +radiobutton.rangepages.mnemonic=E +radiobutton.revlandscape=Orizzontale capovolto radiobutton.revlandscape.mnemonic=N -radiobutton.revportrait=Verticale invertito +radiobutton.revportrait=Verticale capovolto radiobutton.revportrait.mnemonic=I radiobutton.tumble=Testa a piede radiobutton.tumble.mnemonic=T @@ -181,8 +181,8 @@ na-6x9-envelope=Busta 6x9 na-7x9-envelope=Busta 6x7 na-9x11-envelope=Busta 9x11 na-9x12-envelope=Busta 9x12 -na-10x13-envelope=Busta 10x13 -na-10x14-envelope=Busta 10x14 +na-10x13-envelope=Busta 10x15 +na-10x14-envelope=Busta 10x15 na-10x15-envelope=Busta 10x15 na-5x7=Foglio 5" x 7" na-8x10=Foglio 8" x 10" @@ -195,7 +195,7 @@ middle=Medio bottom=Basso envelope=Busta manual=Manuale -large-capacity=Grande capacit\u00e0 +large-capacity=Grande capacit\u00E0 main=Principale side=Laterale # Add the additional standard bins defined by win32 diff --git a/jdk/src/share/classes/sun/print/resources/serviceui_ja.properties b/jdk/src/share/classes/sun/print/resources/serviceui_ja.properties index ee688458f5d..141e6f16d70 100644 --- a/jdk/src/share/classes/sun/print/resources/serviceui_ja.properties +++ b/jdk/src/share/classes/sun/print/resources/serviceui_ja.properties @@ -1,105 +1,105 @@ # # -border.chromaticity=\u8272\u306e\u8868\u73fe -border.copies=\u5370\u5237\u90e8\u6570 -border.jobattributes=\u30b8\u30e7\u30d6\u306e\u5c5e\u6027 -border.media=\u30e1\u30c7\u30a3\u30a2 -border.orientation=\u7528\u7d19\u306e\u5411\u304d -border.printrange=\u5370\u5237\u7bc4\u56f2 -border.printservice=\u5370\u5237\u30b5\u30fc\u30d3\u30b9 -border.quality=\u54c1\u8cea +border.chromaticity=\u8272\u306E\u8868\u73FE +border.copies=\u5370\u5237\u90E8\u6570 +border.jobattributes=\u30B8\u30E7\u30D6\u306E\u5C5E\u6027 +border.media=\u30E1\u30C7\u30A3\u30A2 +border.orientation=\u7528\u7D19\u306E\u5411\u304D +border.printrange=\u5370\u5237\u7BC4\u56F2 +border.printservice=\u5370\u5237\u30B5\u30FC\u30D3\u30B9 +border.quality=\u54C1\u8CEA border.sides=\u9762 -border.margins=\u30de\u30fc\u30b8\u30f3 +border.margins=\u30DE\u30FC\u30B8\u30F3 # -button.cancel=\u53d6\u6d88\u3057 -button.ok=\u4e86\u89e3 +button.cancel=\u53D6\u6D88 +button.ok=OK button.print=\u5370\u5237 -button.properties=\u30d7\u30ed\u30d1\u30c6\u30a3(R)... +button.properties=\u30D7\u30ED\u30D1\u30C6\u30A3... button.properties.mnemonic=R # -checkbox.collate=\u4e01\u5408\u3044(C) +checkbox.collate=\u4E01\u5408\u3044 checkbox.collate.mnemonic=C -checkbox.jobsheets=\u30d0\u30ca\u30fc\u30da\u30fc\u30b8(B) +checkbox.jobsheets=\u30D0\u30CA\u30FC\u30FB\u30DA\u30FC\u30B8 checkbox.jobsheets.mnemonic=B -checkbox.printtofile=\u30d5\u30a1\u30a4\u30eb\u306b\u51fa\u529b(F) +checkbox.printtofile=\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B checkbox.printtofile.mnemonic=F # dialog.printtitle=\u5370\u5237 -dialog.pstitle=\u30da\u30fc\u30b8\u8a2d\u5b9a -dialog.overwrite=\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b? -dialog.owtitle=\u30d5\u30a1\u30a4\u30eb\u306b\u51fa\u529b -dialog.printtofile=\u30d5\u30a1\u30a4\u30eb\u306b\u51fa\u529b -dialog.noprintermsg=\u5370\u5237\u30b5\u30fc\u30d3\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -dialog.writeerror=\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093: +dialog.pstitle=\u30DA\u30FC\u30B8\u8A2D\u5B9A +dialog.overwrite=\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\u3002 +dialog.owtitle=\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B +dialog.printtofile=\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B +dialog.noprintermsg=\u5370\u5237\u30B5\u30FC\u30D3\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +dialog.writeerror=\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093: # -label.info=\u60c5\u5831: -label.jobname=\u30b8\u30e7\u30d6\u540d(J): +label.info=\u60C5\u5831: +label.jobname=\u30B8\u30E7\u30D6\u540D: label.jobname.mnemonic=J -label.numcopies=\u5370\u5237\u90e8\u6570(O): +label.numcopies=\u5370\u5237\u90E8\u6570: label.numcopies.mnemonic=O -label.priority=\u512a\u5148\u9806\u4f4d(R): +label.priority=\u512A\u5148\u5EA6: label.priority.mnemonic=R -label.psname=\u540d\u524d(N): +label.psname=\u540D\u524D: label.psname.mnemonic=N -label.pstype=\u30bf\u30a4\u30d7: -label.rangeto=\u5370\u5237\u7bc4\u56f2 -label.size=\u30b5\u30a4\u30ba(Z): +label.pstype=\u30BF\u30A4\u30D7: +label.rangeto=\u5370\u5237\u7BC4\u56F2 +label.size=\u30B5\u30A4\u30BA: label.size.mnemonic=Z -label.source=\u30bd\u30fc\u30b9(C): +label.source=\u30BD\u30FC\u30B9: label.source.mnemonic=C -label.status=\u72b6\u614b: -label.username=\u30e6\u30fc\u30b6\u540d(U): +label.status=\u72B6\u614B: +label.username=\u30E6\u30FC\u30B6\u30FC\u540D: label.username.mnemonic=U label.millimetres=(mm) label.inches=(in) -label.topmargin=\u4e0a(T) +label.topmargin=\u4E0A label.topmargin.mnemonic=T -label.bottommargin=\u4e0b(B) +label.bottommargin=\u4E0B label.bottommargin.mnemonic=B -label.leftmargin=\u5de6(F) +label.leftmargin=\u5DE6 label.leftmargin.mnemonic=F -label.rightmargin=\u53f3(R) +label.rightmargin=\u53F3 label.rightmargin.mnemonic=R # -radiobutton.color=\u30ab\u30e9\u30fc(C) +radiobutton.color=\u30AB\u30E9\u30FC radiobutton.color.mnemonic=C -radiobutton.draftq=\u30c9\u30e9\u30d5\u30c8(F) +radiobutton.draftq=\u30C9\u30E9\u30D5\u30C8 radiobutton.draftq.mnemonic=F -radiobutton.duplex=\u4e21\u9762(D) +radiobutton.duplex=\u4E21\u9762 radiobutton.duplex.mnemonic=D -radiobutton.highq=\u9ad8\u54c1\u8cea(H) +radiobutton.highq=\u9AD8\u54C1\u8CEA radiobutton.highq.mnemonic=H -radiobutton.landscape=\u30e9\u30f3\u30c9\u30b9\u30b1\u30fc\u30d7 (\u6a2a)(L) +radiobutton.landscape=\u30E9\u30F3\u30C9\u30B9\u30B1\u30FC\u30D7(\u6A2A) radiobutton.landscape.mnemonic=L -radiobutton.monochrome=\u30e2\u30ce\u30af\u30ed(M) +radiobutton.monochrome=\u30E2\u30CE\u30AF\u30ED radiobutton.monochrome.mnemonic=M -radiobutton.normalq=\u6a19\u6e96(N) +radiobutton.normalq=\u6A19\u6E96 radiobutton.normalq.mnemonic=N -radiobutton.oneside=\u7247\u9762(O) +radiobutton.oneside=\u7247\u9762 radiobutton.oneside.mnemonic=O -radiobutton.portrait=\u30dd\u30fc\u30c8\u30ec\u30a4\u30c8 (\u7e26)(P) +radiobutton.portrait=\u30DD\u30FC\u30C8\u30EC\u30A4\u30C8(\u7E26) radiobutton.portrait.mnemonic=P -radiobutton.rangeall=\u3059\u3079\u3066(L) +radiobutton.rangeall=\u3059\u3079\u3066 radiobutton.rangeall.mnemonic=L -radiobutton.rangepages=\u30da\u30fc\u30b8(E) +radiobutton.rangepages=\u30DA\u30FC\u30B8 radiobutton.rangepages.mnemonic=E -radiobutton.revlandscape=\u30e9\u30f3\u30c9\u30b9\u30b1\u30fc\u30d7 (\u53cd\u8ee2)(N) +radiobutton.revlandscape=\u30E9\u30F3\u30C9\u30B9\u30B1\u30FC\u30D7(\u53CD\u8EE2) radiobutton.revlandscape.mnemonic=N -radiobutton.revportrait=\u30dd\u30fc\u30c8\u30ec\u30a4\u30c8 (\u53cd\u8ee2)(I) +radiobutton.revportrait=\u30DD\u30FC\u30C8\u30EC\u30A4\u30C8(\u53CD\u8EE2) radiobutton.revportrait.mnemonic=I -radiobutton.tumble=\u53cd\u8ee2(T) +radiobutton.tumble=\u53CD\u8EE2 radiobutton.tumble.mnemonic=T # The vkMnemonics correspond with the constants defined in KeyEvent, eg # 65 = KeyEvent.VK_A -tab.appearance=\u5916\u89b3(A) +tab.appearance=\u5916\u89B3 tab.appearance.vkMnemonic=65 -tab.general=\u4e00\u822c(G) +tab.general=\u4E00\u822C tab.general.vkMnemonic=71 -tab.pagesetup=\u30da\u30fc\u30b8\u8a2d\u5b9a(S) +tab.pagesetup=\u30DA\u30FC\u30B8\u8A2D\u5B9A tab.pagesetup.vkMnemonic=83 # -error.pagerange=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u7bc4\u56f2; \u5024\u3092\u518d\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 (\u4f8b\u30011-3,5,7-10)\u3002 -error.destination=\u7121\u52b9\u306a\u30d5\u30a1\u30a4\u30eb\u540d; \u30d5\u30a1\u30a4\u30eb\u540d\u3092\u518d\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +error.pagerange=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u7BC4\u56F2\u3002\u5024\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044(\u4F8B\u30011-3,5,7-10) +error.destination=\u7121\u52B9\u306A\u30D5\u30A1\u30A4\u30EB\u540D\u3002\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 # # The following keys match the Strings returned by MediaSizeName.toString() # (in some cases the space character is replaced by '-' and the pound @@ -151,64 +151,64 @@ iso-c7=C7 (ISO/DIN) iso-c8=C8 (ISO/DIN) iso-c9=C9 (ISO/DIN) iso-c10=C10 (ISO/DIN) -na-letter=\u30ec\u30bf\u30fc -na-legal=\u30ea\u30fc\u30ac\u30eb -executive=\u30a8\u30b0\u30bc\u30af\u30c6\u30a3\u30d6 -ledger=\u30ec\u30c3\u30b8\u30e3\u30fc -tabloid=\u30bf\u30d6\u30ed\u30a4\u30c9 -invoice=\u30a4\u30f3\u30dc\u30a4\u30b9 -folio=\u30d5\u30a9\u30ea\u30aa -quarto=\u30af\u30a9\u30fc\u30c8 -japanese-postcard=\u306f\u304c\u304d (JIS) -oufuko-postcard=\u5f80\u5fa9\u306f\u304c\u304d (JIS) -a=\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0 A -b=\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0 B -c=\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0 C -d=\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0 D -e=\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0 E -iso-designated-long=ISO DL (\u9577\u5bf8) -italian-envelope=\u30a4\u30bf\u30ea\u30a2\u5c01\u7b52 -italy-envelope=\u30a4\u30bf\u30ea\u30a2\u5c01\u7b52 -invite-envelope=\u62db\u5f85\u5c01\u7b52 -monarch-envelope=\u30e2\u30ca\u30fc\u30af\u5c01\u7b52 -personal-envelope=\u500b\u4eba\u7528\u5c01\u7b52 -na-number-9-envelope=No. 9 \u5c01\u7b52 -na-number-10-envelope=No. 10 \u5c01\u7b52 -na-number-11-envelope=No. 11 \u5c01\u7b52 -na-number-12-envelope=No. 12 \u5c01\u7b52 -na-number-14-envelope=No. 14 \u5c01\u7b52 -na-6x9-envelope=6x9 \u5c01\u7b52 -na-7x9-envelope=6x7 \u5c01\u7b52 -na-9x11-envelope=9x11 \u5c01\u7b52 -na-9x12-envelope=9x12 \u5c01\u7b52 -na-10x13-envelope=10x15 \u5c01\u7b52 -na-10x14-envelope=10x15 \u5c01\u7b52 -na-10x15-envelope=10x15 \u5c01\u7b52 -na-5x7=5" x 7" \u7528\u7d19 -na-8x10=8" x 10" \u7528\u7d19 +na-letter=\u30EC\u30BF\u30FC +na-legal=\u30EA\u30FC\u30AC\u30EB +executive=\u30A8\u30B0\u30BC\u30AF\u30C6\u30A3\u30D6 +ledger=\u30EC\u30C3\u30B8\u30E3 +tabloid=\u30BF\u30D6\u30ED\u30A4\u30C9 +invoice=\u30A4\u30F3\u30DC\u30A4\u30B9 +folio=\u30D5\u30A9\u30EA\u30AA +quarto=\u30AF\u30A9\u30FC\u30C8 +japanese-postcard=\u306F\u304C\u304D(JIS) +oufuko-postcard=\u5F80\u5FA9\u306F\u304C\u304D(JIS) +a=\u30A8\u30F3\u30B8\u30CB\u30A2\u30EA\u30F3\u30B0A +b=\u30A8\u30F3\u30B8\u30CB\u30A2\u30EA\u30F3\u30B0B +c=\u30A8\u30F3\u30B8\u30CB\u30A2\u30EA\u30F3\u30B0C +d=\u30A8\u30F3\u30B8\u30CB\u30A2\u30EA\u30F3\u30B0D +e=\u30A8\u30F3\u30B8\u30CB\u30A2\u30EA\u30F3\u30B0E +iso-designated-long=ISO DL(\u9577\u5BF8) +italian-envelope=\u30A4\u30BF\u30EA\u30A2\u5C01\u7B52 +italy-envelope=\u30A4\u30BF\u30EA\u30A2\u5C01\u7B52 +invite-envelope=\u62DB\u5F85\u5C01\u7B52 +monarch-envelope=\u30E2\u30CA\u30FC\u30AF\u5C01\u7B52 +personal-envelope=\u500B\u4EBA\u7528\u5C01\u7B52 +na-number-9-envelope=No. 9\u5C01\u7B52 +na-number-10-envelope=No. 10\u5C01\u7B52 +na-number-11-envelope=No. 11\u5C01\u7B52 +na-number-12-envelope=No. 12\u5C01\u7B52 +na-number-14-envelope=No. 14\u5C01\u7B52 +na-6x9-envelope=6x9\u5C01\u7B52 +na-7x9-envelope=6x7\u5C01\u7B52 +na-9x11-envelope=9x11\u5C01\u7B52 +na-9x12-envelope=9x12\u5C01\u7B52 +na-10x13-envelope=10x15\u5C01\u7B52 +na-10x14-envelope=10x15\u5C01\u7B52 +na-10x15-envelope=10x15\u5C01\u7B52 +na-5x7=5x7\u30A4\u30F3\u30C1\u7528\u7D19 +na-8x10=8x10\u30A4\u30F3\u30C1\u7528\u7D19 # # The following keys match the Strings returned by MediaTray.toString() # -auto-select=\u81ea\u52d5\u9078\u629e -top=\u4e0a\u90e8 -middle=\u4e2d\u9593 -bottom=\u4e0b\u90e8 -envelope=\u5c01\u7b52 -manual=\u30de\u30cb\u30e5\u30a2\u30eb -large-capacity=\u5927\u5bb9\u91cf -main=\u30e1\u30a4\u30f3 +auto-select=\u81EA\u52D5\u9078\u629E +top=\u4E0A\u90E8 +middle=\u4E2D\u9593 +bottom=\u4E0B\u90E8 +envelope=\u5C01\u7B52 +manual=\u30DE\u30CB\u30E5\u30A2\u30EB +large-capacity=\u5927\u5BB9\u91CF +main=\u30E1\u30A4\u30F3 side=\u9762 # Add the additional standard bins defined by win32 -Manual-Envelope=\u30de\u30cb\u30e5\u30a2\u30eb\u5c01\u7b52 -Automatic-Feeder=\u81ea\u52d5\u30d5\u30a3\u30fc\u30c0 -Tractor-Feeder=\u30c8\u30e9\u30af\u30bf\u30d5\u30a3\u30fc\u30c0 -Small-Format=\u30b9\u30e2\u30fc\u30eb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8 -Large-Format=\u30e9\u30fc\u30b8\u30d5\u30a9\u30fc\u30de\u30c3\u30c8 -Cassette=\u30ab\u30bb\u30c3\u30c8 -Form-Source=\u30d5\u30a9\u30fc\u30e0\u30bd\u30fc\u30b9 +Manual-Envelope=\u30DE\u30CB\u30E5\u30A2\u30EB\u5C01\u7B52 +Automatic-Feeder=\u81EA\u52D5\u30D5\u30A3\u30FC\u30C0 +Tractor-Feeder=\u30C8\u30E9\u30AF\u30BF\u30FB\u30D5\u30A3\u30FC\u30C0 +Small-Format=\u30B9\u30E2\u30FC\u30EB\u30FB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +Large-Format=\u30E9\u30FC\u30B8\u30FB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 +Cassette=\u30AB\u30BB\u30C3\u30C8 +Form-Source=\u30D5\u30A9\u30FC\u30E0\u30FB\u30BD\u30FC\u30B9 # # The following keys match the Strings returned by # PrinterIsAcceptingJobs.toString() # -accepting-jobs=\u30b8\u30e7\u30d6\u3092\u53d7\u3051\u4ed8\u3051\u3066\u3044\u307e\u3059\u3002 -not-accepting-jobs=\u30b8\u30e7\u30d6\u3092\u53d7\u3051\u4ed8\u3051\u307e\u305b\u3093\u3002 +accepting-jobs=\u30B8\u30E7\u30D6\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u307E\u3059 +not-accepting-jobs=\u30B8\u30E7\u30D6\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093 diff --git a/jdk/src/share/classes/sun/print/resources/serviceui_ko.properties b/jdk/src/share/classes/sun/print/resources/serviceui_ko.properties index 0ea8f2e4c0b..1cfd848b5d0 100644 --- a/jdk/src/share/classes/sun/print/resources/serviceui_ko.properties +++ b/jdk/src/share/classes/sun/print/resources/serviceui_ko.properties @@ -1,123 +1,123 @@ # # -border.chromaticity=\uc0c9\uc0c1 \ubaa8\uc591 -border.copies=\ubcf5\uc0ac -border.jobattributes=\uc791\uc5c5 \uc18d\uc131 -border.media=\ubbf8\ub514\uc5b4 -border.orientation=\ubc29\ud5a5 -border.printrange=\uc778\uc1c4 \ubc94\uc704 -border.printservice=\uc778\uc1c4 \uc11c\ube44\uc2a4 -border.quality=\ud488\uc9c8 -border.sides=\uce21\uba74 -border.margins=\ub9c8\uc9c4 +border.chromaticity=\uC0C9\uC0C1 \uBAA8\uC591 +border.copies=\uBCF5\uC0AC +border.jobattributes=\uC791\uC5C5 \uC18D\uC131 +border.media=\uB9E4\uCCB4 +border.orientation=\uBC29\uD5A5 +border.printrange=\uC778\uC1C4 \uBC94\uC704 +border.printservice=\uC778\uC1C4 \uC11C\uBE44\uC2A4 +border.quality=\uD488\uC9C8 +border.sides=\uCE21\uBA74 +border.margins=\uC5EC\uBC31 # -button.cancel=\ucde8\uc18c -button.ok=\ud655\uc778 -button.print=\uc778\uc1c4 -button.properties=\ub4f1\ub85d \uc815\ubcf4(R)... +button.cancel=\uCDE8\uC18C +button.ok=\uD655\uC778 +button.print=\uC778\uC1C4 +button.properties=\uC18D\uC131... button.properties.mnemonic=R # -checkbox.collate=\uc870\ud569(C) +checkbox.collate=\uC21C\uC11C\uB300\uB85C checkbox.collate.mnemonic=C -checkbox.jobsheets=\ubc30\ub108 \ud398\uc774\uc9c0(B) +checkbox.jobsheets=\uBC30\uB108 \uD398\uC774\uC9C0 checkbox.jobsheets.mnemonic=B -checkbox.printtofile=\ud30c\uc77c\ub85c \uc778\uc1c4(F) +checkbox.printtofile=\uD30C\uC77C\uB85C \uC778\uC1C4 checkbox.printtofile.mnemonic=F # -dialog.printtitle=\uc778\uc1c4 -dialog.pstitle=\ud398\uc774\uc9c0 \uc124\uc815 -dialog.overwrite=\uc774 \ud30c\uc77c\uc740 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4. \uae30\uc874 \ud30c\uc77c\uc744 \uacb9\uccd0\uc4f0\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -dialog.owtitle=\ud30c\uc77c\ub85c \uc778\uc1c4 -dialog.printtofile=\ud30c\uc77c\ub85c \uc778\uc1c4 -dialog.noprintermsg=\uc778\uc1c4 \uc11c\ube44\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -dialog.writeerror=\ud30c\uc77c\uc5d0 \uc4f8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +dialog.printtitle=\uC778\uC1C4 +dialog.pstitle=\uD398\uC774\uC9C0 \uC124\uC815 +dialog.overwrite=\uC774 \uD30C\uC77C\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. \uAE30\uC874 \uD30C\uC77C\uC744 \uACB9\uCCD0 \uC4F0\uACA0\uC2B5\uB2C8\uAE4C? +dialog.owtitle=\uD30C\uC77C\uB85C \uC778\uC1C4 +dialog.printtofile=\uD30C\uC77C\uB85C \uC778\uC1C4 +dialog.noprintermsg=\uC778\uC1C4 \uC11C\uBE44\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +dialog.writeerror=\uD30C\uC77C\uC5D0 \uC4F8 \uC218 \uC5C6\uC74C: # -label.info=\uc815\ubcf4: -label.jobname=\uc791\uc5c5 \uc774\ub984(J): +label.info=\uC815\uBCF4: +label.jobname=\uC791\uC5C5 \uC774\uB984: label.jobname.mnemonic=J -label.numcopies=\ubcf5\uc0ac \ub9e4\uc218(O): +label.numcopies=\uB9E4\uC218: label.numcopies.mnemonic=O -label.priority=\uc6b0\uc120 \uc21c\uc704(R): +label.priority=\uC6B0\uC120\uC21C\uC704: label.priority.mnemonic=R -label.psname=\uc774\ub984(N): +label.psname=\uC774\uB984: label.psname.mnemonic=N -label.pstype=\uc885\ub958: -label.rangeto=\uae4c\uc9c0 -label.size=\ud06c\uae30(Z): +label.pstype=\uC720\uD615: +label.rangeto=\uC885\uB8CC +label.size=\uD06C\uAE30: label.size.mnemonic=Z -label.source=\uc18c\uc2a4(C): +label.source=\uC18C\uC2A4: label.source.mnemonic=C -label.status=\uc0c1\ud0dc: -label.username=\uc0ac\uc6a9\uc790 \uc774\ub984(U): +label.status=\uC0C1\uD0DC: +label.username=\uC0AC\uC6A9\uC790 \uC774\uB984: label.username.mnemonic=U label.millimetres=(mm) -label.inches=(in) -label.topmargin=\ub9e8 \uc704(T) +label.inches=(\uC778\uCE58) +label.topmargin=\uC704\uCABD label.topmargin.mnemonic=T -label.bottommargin==\ub9e8 \uc544\ub798(B) +label.bottommargin=\uC544\uB798\uCABD label.bottommargin.mnemonic=B -label.leftmargin=\uc67c\ucabd(F) +label.leftmargin=\uC67C\uCABD label.leftmargin.mnemonic=F -label.rightmargin=\uc624\ub978\ucabd(R) +label.rightmargin=\uC624\uB978\uCABD label.rightmargin.mnemonic=R # -radiobutton.color=\uc0c9\uc0c1(C) +radiobutton.color=\uC0C9\uC0C1 radiobutton.color.mnemonic=C -radiobutton.draftq=\ucd08\uc548(F) +radiobutton.draftq=\uCD08\uC548 radiobutton.draftq.mnemonic=F -radiobutton.duplex=\uc591\uba74(D) +radiobutton.duplex=\uC591\uBA74 radiobutton.duplex.mnemonic=D -radiobutton.highq=\ub192\uc74c(H) +radiobutton.highq=\uB192\uC74C radiobutton.highq.mnemonic=H -radiobutton.landscape=\uac00\ub85c(L) +radiobutton.landscape=\uAC00\uB85C radiobutton.landscape.mnemonic=L -radiobutton.monochrome=\ub2e8\uc0c9(M) +radiobutton.monochrome=\uB2E8\uC0C9 radiobutton.monochrome.mnemonic=M -radiobutton.normalq=\uc77c\ubc18(N) +radiobutton.normalq=\uC77C\uBC18 radiobutton.normalq.mnemonic=N -radiobutton.oneside=\ud55c\uba74(O) +radiobutton.oneside=\uB2E8\uBA74 radiobutton.oneside.mnemonic=O -radiobutton.portrait=\uc138\ub85c(P) +radiobutton.portrait=\uC138\uB85C radiobutton.portrait.mnemonic=P -radiobutton.rangeall=\ubaa8\ub450(L) +radiobutton.rangeall=\uBAA8\uB450 radiobutton.rangeall.mnemonic=L -radiobutton.rangepages=\ud398\uc774\uc9c0(E) +radiobutton.rangepages=\uD398\uC774\uC9C0 radiobutton.rangepages.mnemonic=E -radiobutton.revlandscape=\uc5ed\uc21c \uac00\ub85c(N) +radiobutton.revlandscape=\uAC00\uB85C \uBC18\uC804 radiobutton.revlandscape.mnemonic=N -radiobutton.revportrait=\uc5ed\uc21c \uc138\ub85c(I) +radiobutton.revportrait=\uC138\uB85C \uBC18\uC804 radiobutton.revportrait.mnemonic=I -radiobutton.tumble=\ub07c\uc6cc\ub123\uae30(T) +radiobutton.tumble=\uD68C\uC804\uC2DD radiobutton.tumble.mnemonic=T # The vkMnemonics correspond with the constants defined in KeyEvent, eg # 65 = KeyEvent.VK_A -tab.appearance=\ubaa8\uc591(A) +tab.appearance=\uBAA8\uC591 tab.appearance.vkMnemonic=65 -tab.general=\uc77c\ubc18(G) +tab.general=\uC77C\uBC18 \uC0AC\uD56D tab.general.vkMnemonic=71 -tab.pagesetup=\ud398\uc774\uc9c0 \uc124\uc815(S) +tab.pagesetup=\uD398\uC774\uC9C0 \uC124\uC815 tab.pagesetup.vkMnemonic=83 # -error.pagerange=\uc798\ubabb\ub41c \ud398\uc774\uc9c0 \ubc94\uc704; \uac12\uc744 \ub2e4\uc2dc \uc785\ub825\ud558\uc2ed\uc2dc\uc624(\uc608: 1-3,5,7-10) -error.destination=\uc798\ubabb\ub41c \ud30c\uc77c \uc774\ub984. \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624. +error.pagerange=\uBD80\uC801\uD569\uD55C \uD398\uC774\uC9C0 \uBC94\uC704: \uAC12\uC744 \uB2E4\uC2DC \uC785\uB825\uD558\uC2ED\uC2DC\uC624(\uC608: 1-3,5,7-10). +error.destination=\uBD80\uC801\uD569\uD55C \uD30C\uC77C \uC774\uB984: \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624. # # The following keys match the Strings returned by MediaSizeName.toString() # (in some cases the space character is replaced by '-' and the pound # character is replaced with 'n') # -iso-4a0=4A0 (ISO/DIN \ubc0f JIS) -iso-2a0=2A0 (ISO/DIN \ubc0f JIS) -iso-a0=A0 (ISO/DIN \ubc0f JIS) -iso-a1=A1 (ISO/DIN \ubc0f JIS) -iso-a2=A2 (ISO/DIN \ubc0f JIS) -iso-a3=A3 (ISO/DIN \ubc0f JIS) -iso-a4=A4 (ISO/DIN \ubc0f JIS) -iso-a5=A5 (ISO/DIN \ubc0f JIS) -iso-a6=A6 (ISO/DIN \ubc0f JIS) -iso-a7=A7 (ISO/DIN \ubc0f JIS) -iso-a8=A8 (ISO/DIN \ubc0f JIS) -iso-a9=A9 (ISO/DIN \ubc0f JIS) -iso-a10=A10 (ISO/DIN \ubc0f JIS) +iso-4a0=4A0 (ISO/DIN & JIS) +iso-2a0=2A0 (ISO/DIN & JIS) +iso-a0=A0 (ISO/DIN & JIS) +iso-a1=A1 (ISO/DIN & JIS) +iso-a2=A2 (ISO/DIN & JIS) +iso-a3=A3 (ISO/DIN & JIS) +iso-a4=A4 (ISO/DIN & JIS) +iso-a5=A5 (ISO/DIN & JIS) +iso-a6=A6 (ISO/DIN & JIS) +iso-a7=A7 (ISO/DIN & JIS) +iso-a8=A8 (ISO/DIN & JIS) +iso-a9=A9 (ISO/DIN & JIS) +iso-a10=A10 (ISO/DIN & JIS) iso-b0=B0 (ISO/DIN) iso-b1=B1 (ISO/DIN) iso-b2=B2 (ISO/DIN) @@ -154,61 +154,61 @@ iso-c10=C10 (ISO/DIN) na-letter=Letter na-legal=Legal executive=Executive -ledger=\uc6d0\uc7a5 -tabloid=\ud0c0\ube14\ub85c\uc774\ub4dc -invoice=\uc1a1\uc7a5 -folio=\ud3f4\ub9ac\uc624 -quarto=\ucffc\ud2b8\ub85c -japanese-postcard=\uc5fd\uc11c(JIS) -oufuko-postcard=\uc774\uc911 \uc5fd\uc11c(JIS) -a=\uacf5\ud559 A -b=\uacf5\ud559 B -c=\uacf5\ud559 C -d=\uacf5\ud559 D -e=\uacf5\ud559 E -iso-designated-long=ISO \uc9c0\uc815 \uae38\uc774 -italian-envelope=\uc774\ud0c8\ub9ac\uc544 \ubd09\ud22c -italy-envelope=\uc774\ud0c8\ub9ac\uc544 \ubd09\ud22c -invite-envelope=\ucd08\uccad\uc7a5 \ubd09\ud22c -monarch-envelope=Monarch \ubd09\ud22c -personal-envelope=\uac1c\uc778 \ubd09\ud22c -na-number-9-envelope=No. 9 \ubd09\ud22c -na-number-10-envelope=No. 10 \ubd09\ud22c -na-number-11-envelope=No. 11 \ubd09\ud22c -na-number-12-envelope=No. 12 \ubd09\ud22c -na-number-14-envelope=No. 14 \ubd09\ud22c -na-6x9-envelope=6x9 \ubd09\ud22c -na-7x9-envelope=6x7 \ubd09\ud22c -na-9x11-envelope=9x11 \ubd09\ud22c -na-9x12-envelope=9x12 \ubd09\ud22c -na-10x13-envelope=10x15 \ubd09\ud22c -na-10x14-envelope=10x15 \ubd09\ud22c -na-10x15-envelope=10x15 \ubd09\ud22c -na-5x7=5" x 7" \uc6a9\uc9c0 -na-8x10=8" x 10" \uc6a9\uc9c0 +ledger=Ledger +tabloid=Tabloid +invoice=Invoice +folio=Folio +quarto=Quarto +japanese-postcard=Postcard (JIS) +oufuko-postcard=Double Postcard (JIS) +a=Engineering A +b=Engineering B +c=Engineering C +d=Engineering D +e=Engineering E +iso-designated-long=ISO Designated Long +italian-envelope=Italy Envelope +italy-envelope=Italy Envelope +invite-envelope=Invitation Envelope +monarch-envelope=Monarch Envelope +personal-envelope=Personal Envelope +na-number-9-envelope=No. 9 Envelope +na-number-10-envelope=No. 10 Envelope +na-number-11-envelope=No. 11 Envelope +na-number-12-envelope=No. 12 Envelope +na-number-14-envelope=No. 14 Envelope +na-6x9-envelope=6x9 Envelope +na-7x9-envelope=6x7 Envelope +na-9x11-envelope=9x11 Envelope +na-9x12-envelope=9x12 Envelope +na-10x13-envelope=10x15 Envelope +na-10x14-envelope=10x15 Envelope +na-10x15-envelope=10x15 Envelope +na-5x7=5" x 7" \uC6A9\uC9C0 +na-8x10=8" x 10" \uC6A9\uC9C0 # # The following keys match the Strings returned by MediaTray.toString() # -auto-select=\uc790\ub3d9 \uc120\ud0dd -top=\uc704 -middle=\uc911\uac04 -bottom=\uc544\ub798 -envelope=\ubd09\ud22c -manual=\uc218\ub3d9 -large-capacity=\ud070 \uc6a9\ub7c9 -main=\uc8fc -side=\uce21\uba74 +auto-select=\uC790\uB3D9 \uC120\uD0DD +top=\uC704\uCABD +middle=\uAC00\uC6B4\uB370 +bottom=\uC544\uB798\uCABD +envelope=Envelope +manual=\uC218\uB3D9 +large-capacity=\uD070 \uC6A9\uB7C9 +main=\uC8FC +side=\uCE21\uBA74 # Add the additional standard bins defined by win32 -Manual-Envelope=\uc218\ub3d9 \ubd09\ud22c -Automatic-Feeder=\uc790\ub3d9 \uacf5\uae09\uae30 -Tractor-Feeder=\ud2b8\ub799\ud130 \uacf5\uae09\uae30 -Small-Format=\uc791\uc740 \ud615\uc2dd -Large-Format=\ud070 \ud615\uc2dd -Cassette=\uce74\uc138\ud2b8 -Form-Source=\uc591\uc2dd \uc18c\uc2a4 +Manual-Envelope=\uC218\uB3D9 \uBD09\uD22C +Automatic-Feeder=\uC790\uB3D9 \uACF5\uAE09\uAE30 +Tractor-Feeder=\uD2B8\uB799\uD130 \uACF5\uAE09\uAE30 +Small-Format=\uC791\uC740 \uD615\uC2DD +Large-Format=\uD070 \uD615\uC2DD +Cassette=\uCE74\uC138\uD2B8 +Form-Source=\uC591\uC2DD \uC18C\uC2A4 # # The following keys match the Strings returned by # PrinterIsAcceptingJobs.toString() # -accepting-jobs=\uc791\uc5c5 \uc218\ub77d -not-accepting-jobs=\uc791\uc5c5 \uc218\ub77d \uc548 \ud568 +accepting-jobs=\uC791\uC5C5 \uC2B9\uC778 +not-accepting-jobs=\uC791\uC5C5 \uC2B9\uC778 \uC548\uD568 diff --git a/jdk/src/share/classes/sun/print/resources/serviceui_pt_BR.properties b/jdk/src/share/classes/sun/print/resources/serviceui_pt_BR.properties index 216c4b168e4..e6107a40421 100644 --- a/jdk/src/share/classes/sun/print/resources/serviceui_pt_BR.properties +++ b/jdk/src/share/classes/sun/print/resources/serviceui_pt_BR.properties @@ -1,12 +1,12 @@ # # -border.chromaticity=Apar\u00eancia da cor -border.copies=C\u00f3pias -border.jobattributes=Atributos do trabalho -border.media=M\u00eddia -border.orientation=Orienta\u00e7\u00e3o -border.printrange=Intervalo de impress\u00e3o -border.printservice=Servi\u00e7o de impress\u00e3o +border.chromaticity=Apar\u00EAncia da Cor +border.copies=C\u00F3pias +border.jobattributes=Atributos do Job +border.media=M\u00EDdia +border.orientation=Orienta\u00E7\u00E3o +border.printrange=Faixa de Impress\u00E3o +border.printservice=Servi\u00E7o de Impress\u00E3o border.quality=Qualidade border.sides=Lados border.margins=Margens @@ -19,36 +19,36 @@ button.properties.mnemonic=R # checkbox.collate=Agrupar checkbox.collate.mnemonic=C -checkbox.jobsheets=P\u00e1gina com cabe\u00e7alho +checkbox.jobsheets=P\u00E1gina com Banner checkbox.jobsheets.mnemonic=B -checkbox.printtofile=Imprimir em arquivo +checkbox.printtofile=Imprimir em Arquivo checkbox.printtofile.mnemonic=F # dialog.printtitle=Imprimir -dialog.pstitle=Configurar p\u00e1gina -dialog.overwrite=Este arquivo j\u00e1 existe. Deseja substituir o arquivo existente? -dialog.owtitle=Imprimir em arquivo -dialog.printtofile=Imprimir em arquivo -dialog.noprintermsg=Nenhum servi\u00e7o de impress\u00e3o encontrado. -dialog.writeerror=N\u00e3o \u00e9 poss\u00edvel gravar no arquivo: +dialog.pstitle=Configura\u00E7\u00E3o da P\u00E1gina +dialog.overwrite=Este arquivo j\u00E1 existe. Deseja substituir o arquivo existente? +dialog.owtitle=Imprimir em Arquivo +dialog.printtofile=Imprimir em Arquivo +dialog.noprintermsg=Nenhum servi\u00E7o de impress\u00E3o encontrado. +dialog.writeerror=N\u00E3o \u00E9 poss\u00EDvel gravar no arquivo: # -label.info=Info: -label.jobname=Nome do trabalho: +label.info=Informa\u00E7\u00F5es: +label.jobname=Nome do Job: label.jobname.mnemonic=J -label.numcopies=N\u00famero de c\u00f3pias: +label.numcopies=N\u00FAmero de c\u00F3pias: label.numcopies.mnemonic=O label.priority=Prioridade: label.priority.mnemonic=R label.psname=Nome: label.psname.mnemonic=N label.pstype=Tipo: -label.rangeto=Para +label.rangeto=At\u00E9 label.size=Tamanho: label.size.mnemonic=Z -label.source=Fonte: +label.source=Origem: label.source.mnemonic=C label.status=Status: -label.username=Nome de usu\u00e1rio: +label.username=Nome do Usu\u00E1rio: label.username.mnemonic=U label.millimetres=(mm) label.inches=(pol) @@ -71,35 +71,35 @@ radiobutton.highq=Alto radiobutton.highq.mnemonic=H radiobutton.landscape=Paisagem radiobutton.landscape.mnemonic=L -radiobutton.monochrome=Monocrom\u00e1tico +radiobutton.monochrome=Monocrom\u00E1tico radiobutton.monochrome.mnemonic=M radiobutton.normalq=Normal radiobutton.normalq.mnemonic=N -radiobutton.oneside=Um lado +radiobutton.oneside=Um Lado radiobutton.oneside.mnemonic=O radiobutton.portrait=Retrato radiobutton.portrait.mnemonic=P radiobutton.rangeall=Todas radiobutton.rangeall.mnemonic=L -radiobutton.rangepages=P\u00e1ginas +radiobutton.rangepages=P\u00E1ginas radiobutton.rangepages.mnemonic=E -radiobutton.revlandscape=Paisagem invertida +radiobutton.revlandscape=Paisagem Invertida radiobutton.revlandscape.mnemonic=N -radiobutton.revportrait=Retrato invertido +radiobutton.revportrait=Retrato Invertido radiobutton.revportrait.mnemonic=I -radiobutton.tumble=Duplex horizontal +radiobutton.tumble=Duplex Horizontal radiobutton.tumble.mnemonic=T # The vkMnemonics correspond with the constants defined in KeyEvent, eg # 65 = KeyEvent.VK_A -tab.appearance=Apar\u00eancia +tab.appearance=Apar\u00EAncia tab.appearance.vkMnemonic=65 tab.general=Geral tab.general.vkMnemonic=71 -tab.pagesetup=Configurar p\u00e1gina +tab.pagesetup=Configura\u00E7\u00E3o da P\u00E1gina tab.pagesetup.vkMnemonic=83 # -error.pagerange=Intervalo de p\u00e1ginas inv\u00e1lido; insira novamente os valores (por exemplo, 1-3,5,7-10) -error.destination=Nome de arquivo inv\u00e1lido; tente novamente +error.pagerange=Faixa de p\u00E1ginas inv\u00E1lida; insira novamente os valores (por exemplo, 1-3,5,7-10) +error.destination=Nome de arquivo inv\u00E1lido; tente novamente # # The following keys match the Strings returned by MediaSizeName.toString() # (in some cases the space character is replaced by '-' and the pound @@ -152,31 +152,31 @@ iso-c8=C8 (ISO/DIN) iso-c9=C9 (ISO/DIN) iso-c10=C10 (ISO/DIN) na-letter=Carta -na-legal=Of\u00edcio +na-legal=Of\u00EDcio executive=Executivo -ledger=Livro-raz\u00e3o -tabloid=Tabl\u00f3ide +ledger=Duplo Carta +tabloid=Tabl\u00F3ide invoice=Fatura -folio=F\u00f3lio +folio=F\u00F3lio quarto=Quarto -japanese-postcard=Cart\u00e3o-postal (JIS) -oufuko-postcard=Cart\u00e3o-postal (JIS) +japanese-postcard=Cart\u00E3o Postal (JIS) +oufuko-postcard=Cart\u00E3o Postal Duplo (JIS) a=Engenharia A b=Engenharia B c=Engenharia C d=Engenharia D e=Engenharia E -iso-designated-long=Longo designado ISO -italian-envelope=Envelope italiano -italy-envelope=Envelope italiano -invite-envelope=Envelope de convite -monarch-envelope=Envelope monarca -personal-envelope=Envelope personalizado -na-number-9-envelope=Envelope n\u00ba 9 -na-number-10-envelope=Envelope n\u00ba 10 -na-number-11-envelope=Envelope n\u00ba 11 -na-number-12-envelope=Envelope n\u00ba 12 -na-number-14-envelope=Envelope n\u00ba 14 +iso-designated-long=Longo Designado ISO +italian-envelope=Envelope Italiano +italy-envelope=Envelope Italiano +invite-envelope=Envelope de Convite +monarch-envelope=Envelope Monarca +personal-envelope=Envelope Personalizado +na-number-9-envelope=Envelope n\u00BA 9 +na-number-10-envelope=Envelope n\u00BA 10 +na-number-11-envelope=Envelope n\u00BA 11 +na-number-12-envelope=Envelope n\u00BA 12 +na-number-14-envelope=Envelope n\u00BA 14 na-6x9-envelope=Envelope 6x9 na-7x9-envelope=Envelope 6x7 na-9x11-envelope=Envelope 9x11 @@ -189,26 +189,26 @@ na-8x10=Papel 8" x 10" # # The following keys match the Strings returned by MediaTray.toString() # -auto-select=Selecionar automaticamente +auto-select=Selecionar Automaticamente top=Superior middle=Meio bottom=Inferior envelope=Envelope manual=Manual -large-capacity=Grande capacidade +large-capacity=Grande Capacidade main=Principal side=Lado # Add the additional standard bins defined by win32 -Manual-Envelope=Envelope manual -Automatic-Feeder=Alimentador autom\u00e1tico -Tractor-Feeder=Alimentador por tracionador -Small-Format=Formato pequeno -Large-Format=Formato grande +Manual-Envelope=Envelope Manual +Automatic-Feeder=Alimentador Autom\u00E1tico +Tractor-Feeder=Alimentador por Tracionador +Small-Format=Formato Pequeno +Large-Format=Formato Grande Cassette=Cassete -Form-Source=Fonte do formul\u00e1rio +Form-Source=Origem do Formul\u00E1rio # # The following keys match the Strings returned by # PrinterIsAcceptingJobs.toString() # -accepting-jobs=Aceitando trabalhos -not-accepting-jobs=N\u00e3o aceitando trabalhos +accepting-jobs=Aceitando jobs +not-accepting-jobs=N\u00E3o aceitando jobs diff --git a/jdk/src/share/classes/sun/print/resources/serviceui_sv.properties b/jdk/src/share/classes/sun/print/resources/serviceui_sv.properties index 7d781054d86..97706b3e2b6 100644 --- a/jdk/src/share/classes/sun/print/resources/serviceui_sv.properties +++ b/jdk/src/share/classes/sun/print/resources/serviceui_sv.properties @@ -1,12 +1,12 @@ # # -border.chromaticity=F\u00e4rgutseende -border.copies=Antal kopior -border.jobattributes=Jobbattribut -border.media=Medier -border.orientation=Riktning -border.printrange=Utskriftsomr\u00e5de -border.printservice=Skrivarhantering +border.chromaticity=F\u00E4rg +border.copies=Antal exemplar +border.jobattributes=Utskriftsattribut +border.media=Media +border.orientation=Orientering +border.printrange=Utskriftsintervall +border.printservice=Utskriftstj\u00E4nst border.quality=Kvalitet border.sides=Sidor border.margins=Marginaler @@ -15,59 +15,59 @@ button.cancel=Avbryt button.ok=OK button.print=Skriv ut button.properties=Egenskaper... -button.properties.mnemonic=R +button.properties.mnemonic=H # checkbox.collate=Sortera -checkbox.collate.mnemonic=T -checkbox.jobsheets=Titelsida -checkbox.jobsheets.mnemonic=I +checkbox.collate.mnemonic=F +checkbox.jobsheets=F\u00F6rs\u00E4ttsblad +checkbox.jobsheets.mnemonic=B checkbox.printtofile=Skriv till fil -checkbox.printtofile.mnemonic=F +checkbox.printtofile.mnemonic=V # dialog.printtitle=Skriv ut dialog.pstitle=Utskriftsformat -dialog.overwrite=Denna fil finns redan. Vill du skriva \u00f6ver den befintliga filen? +dialog.overwrite=Denna fil finns redan. Vill du skriva \u00F6ver den befintliga filen? dialog.owtitle=Skriv till fil dialog.printtofile=Skriv till fil -dialog.noprintermsg=Det gick inte att hitta n\u00e5gon utskriftstj\u00e4nst. -dialog.writeerror=Det g\u00e5r inte att skriva till filen: +dialog.noprintermsg=Hittade ingen utskriftstj\u00E4nst. +dialog.writeerror=Kan inte skriva till filen: # label.info=Information: -label.jobname=Jobbnamn: -label.jobname.mnemonic=J -label.numcopies=Antal kopior: -label.numcopies.mnemonic=O +label.jobname=Utskrift: +label.jobname.mnemonic=U +label.numcopies=Antal exemplar: +label.numcopies.mnemonic=E label.priority=Prioritet: -label.priority.mnemonic=R +label.priority.mnemonic=H label.psname=Namn: label.psname.mnemonic=N label.pstype=Typ: label.rangeto=Till label.size=Storlek: -label.size.mnemonic=O -label.source=K\u00e4lla: -label.source.mnemonic=K +label.size.mnemonic=o +label.source=K\u00E4lla: +label.source.mnemonic=F label.status=Status: -label.username=Anv\u00e4ndarnamn: -label.username.mnemonic=V +label.username=Anv\u00E4ndarnamn: +label.username.mnemonic=v label.millimetres=(mm) -label.inches=(inch) -label.topmargin=start -label.topmargin.mnemonic=R -label.bottommargin=slut -label.bottommargin.mnemonic=T -label.leftmargin=v\u00e4nster +label.inches=(tum) +label.topmargin=topp +label.topmargin.mnemonic=V +label.bottommargin=botten +label.bottommargin.mnemonic=B +label.leftmargin=v\u00E4nster label.leftmargin.mnemonic=V -label.rightmargin=h\u00f6ger +label.rightmargin=h\u00F6ger label.rightmargin.mnemonic=H # -radiobutton.color=F\u00e4rg +radiobutton.color=F\u00E4rg radiobutton.color.mnemonic=F radiobutton.draftq=Utkast -radiobutton.draftq.mnemonic=K +radiobutton.draftq.mnemonic=V radiobutton.duplex=Duplex radiobutton.duplex.mnemonic=D -radiobutton.highq=H\u00f6g +radiobutton.highq=H\u00F6g radiobutton.highq.mnemonic=H radiobutton.landscape=Liggande radiobutton.landscape.mnemonic=L @@ -77,29 +77,29 @@ radiobutton.normalq=Normal radiobutton.normalq.mnemonic=N radiobutton.oneside=En sida radiobutton.oneside.mnemonic=E -radiobutton.portrait=St\u00e5ende +radiobutton.portrait=St\u00E5ende radiobutton.portrait.mnemonic=D radiobutton.rangeall=Alla radiobutton.rangeall.mnemonic=L radiobutton.rangepages=Sidor radiobutton.rangepages.mnemonic=D -radiobutton.revlandscape=Omv\u00e4nt liggande +radiobutton.revlandscape=Omv\u00E4nt liggande radiobutton.revlandscape.mnemonic=N -radiobutton.revportrait=Omv\u00e4nt st\u00e5ende +radiobutton.revportrait=Omv\u00E4nt st\u00E5ende radiobutton.revportrait.mnemonic=M -radiobutton.tumble=Tumble -radiobutton.tumble.mnemonic=T +radiobutton.tumble=V\u00E4nd +radiobutton.tumble.mnemonic=V # The vkMnemonics correspond with the constants defined in KeyEvent, eg # 65 = KeyEvent.VK_A tab.appearance=Utseende -tab.appearance.vkMnemonic=85 -tab.general=Allm\u00e4nt -tab.general.vkMnemonic=65 +tab.appearance.vkMnemonic=65 +tab.general=Allm\u00E4nt +tab.general.vkMnemonic=71 tab.pagesetup=Utskriftsformat tab.pagesetup.vkMnemonic=83 # -error.pagerange=Ogiltigt sidintervall. Skriv in v\u00e4rdena p\u00e5 nytt (t ex 1-3,5,7-10) -error.destination=Ogiltigt filnamn. F\u00f6rs\u00f6k p\u00e5 nytt. +error.pagerange=Ogiltigt sidintervall. Skriv in v\u00E4rdena igen (t ex 1-3,5,7-10) +error.destination=Ogiltigt filnamn. F\u00F6rs\u00F6k igen. # # The following keys match the Strings returned by MediaSizeName.toString() # (in some cases the space character is replaced by '-' and the pound @@ -156,7 +156,7 @@ na-legal=Legal executive=Executive ledger=Ledger tabloid=Tabloid -invoice=Faktura +invoice=Invoice folio=Folio quarto=Quarto japanese-postcard=Postcard (JIS) @@ -166,36 +166,36 @@ b=Engineering B c=Engineering C d=Engineering D e=Engineering E -iso-designated-long=ISO-designerad Long -italian-envelope=Italy-kuvert -italy-envelope=Italy-kuvert +iso-designated-long=ISO Designated Long +italian-envelope=Italienskt kuvert +italy-envelope=Italienskt kuvert invite-envelope=Invitation-kuvert monarch-envelope=Monarch-kuvert -personal-envelope=egen kuvertstorlek +personal-envelope=Egen kuvertstorlek na-number-9-envelope=No. 9-kuvert na-number-10-envelope=No. 10-kuvert na-number-11-envelope=No. 11-kuvert na-number-12-envelope=No. 12-kuvert na-number-14-envelope=No. 14-kuvert na-6x9-envelope=6x9-kuvert -na-7x9-envelope=7x9-kuvert +na-7x9-envelope=6x7-kuvert na-9x11-envelope=9x11-kuvert na-9x12-envelope=9x12-kuvert -na-10x13-envelope=10x13-kuvert -na-10x14-envelope=10x14-kuvert +na-10x13-envelope=10x15-kuvert +na-10x14-envelope=10x15-kuvert na-10x15-envelope=10x15-kuvert -na-5x7=5x7 tums papper -na-8x10=8x10 tums papper +na-5x7=5x7-tumspapper +na-8x10=8x10-tumspapper # # The following keys match the Strings returned by MediaTray.toString() # -auto-select=V\u00e4lj automatiskt -top=\u00d6verst +auto-select=V\u00E4lj automatiskt +top=Topp middle=Mitten -bottom=Underst +bottom=Botten envelope=Kuvert -manual=Manuellt -large-capacity=H\u00f6g kapacitet +manual=Manuell +large-capacity=H\u00F6g kapacitet main=Huvud side=Sida # Add the additional standard bins defined by win32 @@ -205,10 +205,10 @@ Tractor-Feeder=Traktormatning Small-Format=Litet format Large-Format=Stort format Cassette=Kassett -Form-Source=Formul\u00e4rk\u00e4lla +Form-Source=Formul\u00E4rk\u00E4lla # # The following keys match the Strings returned by # PrinterIsAcceptingJobs.toString() # -accepting-jobs=Acceptera jobb -not-accepting-jobs=Inte acceptera jobb +accepting-jobs=Accepterar jobb +not-accepting-jobs=Accepterar inte jobb diff --git a/jdk/src/share/classes/sun/print/resources/serviceui_zh_CN.properties b/jdk/src/share/classes/sun/print/resources/serviceui_zh_CN.properties index 1cd38b0592b..8a8be61bbbe 100644 --- a/jdk/src/share/classes/sun/print/resources/serviceui_zh_CN.properties +++ b/jdk/src/share/classes/sun/print/resources/serviceui_zh_CN.properties @@ -1,105 +1,105 @@ # # -border.chromaticity=\u8272\u5f69\u5916\u89c2 -border.copies=\u4efd\u6570 -border.jobattributes=\u4efb\u52a1\u5c5e\u6027 -border.media=\u5a92\u4f53 -border.orientation=\u65b9\u5411 -border.printrange=\u6253\u5370\u533a\u57df -border.printservice=\u6253\u5370\u670d\u52a1 -border.quality=\u8d28\u91cf -border.sides=\u8fb9 -border.margins=\u8fb9\u8ddd +border.chromaticity=\u989C\u8272\u5916\u89C2 +border.copies=\u4EFD\u6570 +border.jobattributes=\u4F5C\u4E1A\u5C5E\u6027 +border.media=\u4ECB\u8D28 +border.orientation=\u65B9\u5411 +border.printrange=\u6253\u5370\u533A\u57DF +border.printservice=\u6253\u5370\u670D\u52A1 +border.quality=\u8D28\u91CF +border.sides=\u8FB9 +border.margins=\u8FB9\u8DDD # -button.cancel=\u53d6\u6d88 -button.ok=\u786e\u5b9a +button.cancel=\u53D6\u6D88 +button.ok=\u786E\u5B9A button.print=\u6253\u5370 -button.properties=\u5c5e\u6027(R)... +button.properties=\u5C5E\u6027... button.properties.mnemonic=R # -checkbox.collate=\u6bd4\u8f83(C) +checkbox.collate=\u9010\u4EFD\u6253\u5370 checkbox.collate.mnemonic=C -checkbox.jobsheets=\u6807\u9898\u9875(B) +checkbox.jobsheets=\u6807\u5E1C\u9875 checkbox.jobsheets.mnemonic=B -checkbox.printtofile=\u6253\u5370\u5230\u6587\u4ef6(F) +checkbox.printtofile=\u6253\u5370\u5230\u6587\u4EF6 checkbox.printtofile.mnemonic=F # dialog.printtitle=\u6253\u5370 -dialog.pstitle=\u9875\u9762\u8bbe\u7f6e -dialog.overwrite=\u8fd9\u4e2a\u6587\u4ef6\u5df2\u7ecf\u5b58\u5728\u3002\u662f\u5426\u8981\u66ff\u6362\u5df2\u6709\u7684\u6587\u4ef6\uff1f -dialog.owtitle=\u6253\u5370\u5230\u6587\u4ef6 -dialog.printtofile=\u6253\u5370\u5230\u6587\u4ef6 -dialog.noprintermsg=\u672a\u627e\u5230\u6253\u5370\u670d\u52a1\u3002 -dialog.writeerror=\u65e0\u6cd5\u5199\u5165\u6587\u4ef6: +dialog.pstitle=\u9875\u9762\u8BBE\u7F6E +dialog.overwrite=\u8BE5\u6587\u4EF6\u5DF2\u7ECF\u5B58\u5728\u3002\u662F\u5426\u8981\u8986\u76D6\u73B0\u6709\u6587\u4EF6? +dialog.owtitle=\u6253\u5370\u5230\u6587\u4EF6 +dialog.printtofile=\u6253\u5370\u5230\u6587\u4EF6 +dialog.noprintermsg=\u627E\u4E0D\u5230\u6253\u5370\u670D\u52A1\u3002 +dialog.writeerror=\u65E0\u6CD5\u5199\u5165\u6587\u4EF6: # -label.info=\u4fe1\u606f\uff1a -label.jobname=\u4efb\u52a1\u540d\u79f0(J)\uff1a +label.info=\u4FE1\u606F: +label.jobname=\u4F5C\u4E1A\u540D\u79F0: label.jobname.mnemonic=J -label.numcopies=\u6253\u5370\u4efd\u6570(O)\uff1a +label.numcopies=\u6253\u5370\u4EFD\u6570: label.numcopies.mnemonic=O -label.priority=\u4f18\u5148\u7ea7(R)\uff1a +label.priority=\u4F18\u5148\u7EA7: label.priority.mnemonic=R -label.psname=\u540d\u79f0(N)\uff1a +label.psname=\u540D\u79F0: label.psname.mnemonic=N -label.pstype=\u7c7b\u578b\uff1a -label.rangeto=\u81f3 -label.size=\u5927\u5c0f(Z)\uff1a +label.pstype=\u7C7B\u578B: +label.rangeto=\u81F3 +label.size=\u5927\u5C0F: label.size.mnemonic=Z -label.source=\u6765\u6e90(C)\uff1a +label.source=\u6765\u6E90: label.source.mnemonic=C -label.status=\u72b6\u6001\uff1a -label.username=\u7528\u6237\u540d(U)\uff1a +label.status=\u72B6\u6001: +label.username=\u7528\u6237\u540D: label.username.mnemonic=U -label.millimetres=(mm) -label.inches=(in) -label.topmargin=\u9876\u8fb9\u8ddd(T) +label.millimetres=(\u6BEB\u7C73) +label.inches=(\u82F1\u5BF8) +label.topmargin=\u4E0A\u8FB9\u8DDD label.topmargin.mnemonic=T -label.bottommargin=\u5e95\u8fb9\u8ddd(B) +label.bottommargin=\u4E0B\u8FB9\u8DDD label.bottommargin.mnemonic=B -label.leftmargin=\u5de6\u8fb9\u8ddd(F) +label.leftmargin=\u5DE6\u8FB9\u8DDD label.leftmargin.mnemonic=F -label.rightmargin=\u53f3\u8fb9\u8ddd(R) +label.rightmargin=\u53F3\u8FB9\u8DDD label.rightmargin.mnemonic=R # -radiobutton.color=\u8272\u5f69(C) +radiobutton.color=\u989C\u8272 radiobutton.color.mnemonic=C -radiobutton.draftq=\u8349\u56fe(F) +radiobutton.draftq=\u8349\u56FE radiobutton.draftq.mnemonic=F -radiobutton.duplex=\u53cc\u9762\u6253\u5370(D) +radiobutton.duplex=\u53CC\u9762\u6253\u5370 radiobutton.duplex.mnemonic=D -radiobutton.highq=\u9ad8(H) +radiobutton.highq=\u9AD8 radiobutton.highq.mnemonic=H -radiobutton.landscape=\u6a2a\u5411(L) +radiobutton.landscape=\u6A2A\u5411 radiobutton.landscape.mnemonic=L -radiobutton.monochrome=\u5355\u8272(M) +radiobutton.monochrome=\u5355\u8272 radiobutton.monochrome.mnemonic=M -radiobutton.normalq=\u6b63\u5e38(N) +radiobutton.normalq=\u6B63\u5E38 radiobutton.normalq.mnemonic=N -radiobutton.oneside=\u5355\u9762(O) +radiobutton.oneside=\u5355\u9762 radiobutton.oneside.mnemonic=O -radiobutton.portrait=\u7eb5\u5411(P) +radiobutton.portrait=\u7EB5\u5411 radiobutton.portrait.mnemonic=P -radiobutton.rangeall=\u5168\u90e8(L) +radiobutton.rangeall=\u5168\u90E8 radiobutton.rangeall.mnemonic=L -radiobutton.rangepages=\u9875\u7801\u8303\u56f4(E) +radiobutton.rangepages=\u9875\u7801\u8303\u56F4 radiobutton.rangepages.mnemonic=E -radiobutton.revlandscape=\u6a2a\u5411\u53cd\u9762\u6253\u5370(N) +radiobutton.revlandscape=\u6A2A\u5411\u53CD\u9762\u6253\u5370 radiobutton.revlandscape.mnemonic=N -radiobutton.revportrait=\u7eb5\u5411\u53cd\u9762\u6253\u5370(I) +radiobutton.revportrait=\u7EB5\u5411\u53CD\u9762\u6253\u5370 radiobutton.revportrait.mnemonic=I -radiobutton.tumble=\u7ffb\u8f6c(T) +radiobutton.tumble=\u7FFB\u8F6C radiobutton.tumble.mnemonic=T # The vkMnemonics correspond with the constants defined in KeyEvent, eg # 65 = KeyEvent.VK_A -tab.appearance=\u5916\u89c2(A) +tab.appearance=\u5916\u89C2 tab.appearance.vkMnemonic=65 -tab.general=\u5e38\u89c4(G) +tab.general=\u5E38\u89C4 tab.general.vkMnemonic=71 -tab.pagesetup=\u9875\u9762\u8bbe\u7f6e(S) +tab.pagesetup=\u9875\u9762\u8BBE\u7F6E tab.pagesetup.vkMnemonic=83 # -error.pagerange=\u65e0\u6548\u7684\u9875\u9762\u8303\u56f4\uff1b\u8bf7\u91cd\u65b0\u8f93\u5165\u6570\u503c (e.g. 1-3,5,7-10) -error.destination=\u65e0\u6548\u7684\u6587\u4ef6\u540d\uff1b\u8bf7\u91cd\u8bd5 +error.pagerange=\u65E0\u6548\u7684\u9875\u9762\u8303\u56F4; \u8BF7\u91CD\u65B0\u8F93\u5165\u6570\u503C (\u4F8B\u5982 1-3,5,7-10) +error.destination=\u65E0\u6548\u7684\u6587\u4EF6\u540D; \u8BF7\u91CD\u8BD5 # # The following keys match the Strings returned by MediaSizeName.toString() # (in some cases the space character is replaced by '-' and the pound @@ -151,64 +151,64 @@ iso-c7=C7 (ISO/DIN) iso-c8=C8 (ISO/DIN) iso-c9=C9 (ISO/DIN) iso-c10=C10 (ISO/DIN) -na-letter=\u4fe1 -na-legal=\u6cd5\u5f8b\u6587\u4e66 -executive=\u6267\u884c\u7a0b\u5e8f -ledger=\u5e10\u76ee -tabloid=\u5c0f\u62a5 -invoice=\u53d1\u7968 -folio=\u5bf9\u5f00\u9875 -quarto=\u56db\u5f00\u9875 -japanese-postcard=\u660e\u4fe1\u7247 (JIS) -oufuko-postcard=\u53cc\u9762\u540d\u4fe1\u7247 (JIS) -a=\u5de5\u7a0b A -b=\u5de5\u7a0b B -c=\u5de5\u7a0b C -d=\u5de5\u7a0b D -e=\u5de5\u7a0b E -iso-designated-long=ISO \u6307\u5b9a\u957f\u5ea6 -italian-envelope=\u610f\u5927\u5229\u4fe1\u5c01 -italy-envelope=\u610f\u5927\u5229\u4fe1\u5c01 -invite-envelope=\u9080\u8bf7\u51fd\u4fe1\u5c01 -monarch-envelope=Monarch \u4fe1\u5c01 -personal-envelope=\u4e2a\u4eba\u4fe1\u5c01 -na-number-9-envelope=9 \u53f7\u4fe1\u5c01 -na-number-10-envelope=10 \u53f7\u4fe1\u5c01 -na-number-11-envelope=11 \u53f7\u4fe1\u5c01 -na-number-12-envelope=12 \u53f7\u4fe1\u5c01 -na-number-14-envelope=14 \u53f7\u4fe1\u5c01 -na-6x9-envelope=6x9 \u4fe1\u5c01 -na-7x9-envelope=6x7 \u4fe1\u5c01 -na-9x11-envelope=9x11 \u4fe1\u5c01 -na-9x12-envelope=9x12 \u4fe1\u5c01 -na-10x13-envelope=10x15 \u4fe1\u5c01 -na-10x14-envelope=10x15 \u4fe1\u5c01 -na-10x15-envelope=10x15 \u4fe1\u5c01 -na-5x7=5" x 7" \u7eb8\u5f20 -na-8x10=8" x 10" \u7eb8\u5f20 +na-letter=\u4FE1\u51FD +na-legal=\u6CD5\u5F8B\u6587\u4E66 +executive=\u6267\u884C\u7A0B\u5E8F +ledger=\u5E10\u76EE +tabloid=\u5C0F\u62A5 +invoice=\u53D1\u7968 +folio=\u5BF9\u5F00\u9875 +quarto=\u56DB\u5F00\u9875 +japanese-postcard=\u660E\u4FE1\u7247 (JIS) +oufuko-postcard=\u53CC\u9762\u660E\u4FE1\u7247 (JIS) +a=\u5DE5\u7A0B A +b=\u5DE5\u7A0B B +c=\u5DE5\u7A0B C +d=\u5DE5\u7A0B D +e=\u5DE5\u7A0B E +iso-designated-long=ISO \u6307\u5B9A\u957F\u5EA6 +italian-envelope=\u610F\u5927\u5229\u4FE1\u5C01 +italy-envelope=\u610F\u5927\u5229\u4FE1\u5C01 +invite-envelope=\u9080\u8BF7\u51FD\u4FE1\u5C01 +monarch-envelope=Monarch \u4FE1\u5C01 +personal-envelope=\u4E2A\u4EBA\u4FE1\u5C01 +na-number-9-envelope=9 \u53F7\u4FE1\u5C01 +na-number-10-envelope=10 \u53F7\u4FE1\u5C01 +na-number-11-envelope=11 \u53F7\u4FE1\u5C01 +na-number-12-envelope=12 \u53F7\u4FE1\u5C01 +na-number-14-envelope=14 \u53F7\u4FE1\u5C01 +na-6x9-envelope=6x9 \u4FE1\u5C01 +na-7x9-envelope=6x7 \u4FE1\u5C01 +na-9x11-envelope=9x11 \u4FE1\u5C01 +na-9x12-envelope=9x12 \u4FE1\u5C01 +na-10x13-envelope=10x15 \u4FE1\u5C01 +na-10x14-envelope=10x15 \u4FE1\u5C01 +na-10x15-envelope=10x15 \u4FE1\u5C01 +na-5x7=5" x 7" \u7EB8\u5F20 +na-8x10=8" x 10" \u7EB8\u5F20 # # The following keys match the Strings returned by MediaTray.toString() # -auto-select=\u81ea\u52a8\u9009\u5b9a -top=\u4e0a -middle=\u4e2d -bottom=\u4e0b -envelope=\u4fe1\u5c01 -manual=\u624b\u52a8 -large-capacity=\u5927\u5bb9\u91cf -main=\u4e3b -side=\u8fb9 +auto-select=\u81EA\u52A8\u9009\u62E9 +top=\u4E0A +middle=\u4E2D +bottom=\u4E0B +envelope=\u4FE1\u5C01 +manual=\u624B\u52A8 +large-capacity=\u5927\u5BB9\u91CF +main=\u4E3B +side=\u4FA7 # Add the additional standard bins defined by win32 -Manual-Envelope=\u624b\u52a8\u4fe1\u5c01 -Automatic-Feeder=\u81ea\u52a8\u9001\u7eb8\u5668 -Tractor-Feeder=\u7275\u5f15\u5f0f\u9001\u7eb8\u5668 -Small-Format=\u5c0f\u53f7\u7248\u5f0f -Large-Format=\u5927\u53f7\u7248\u5f0f -Cassette=\u7eb8\u76d2 -Form-Source=\u8868\u683c\u6765\u6e90 +Manual-Envelope=\u624B\u52A8\u4FE1\u5C01 +Automatic-Feeder=\u81EA\u52A8\u9988\u9001\u5668 +Tractor-Feeder=\u7275\u5F15\u5F0F\u9988\u9001\u5668 +Small-Format=\u5C0F\u53F7\u7248\u5F0F +Large-Format=\u5927\u53F7\u7248\u5F0F +Cassette=\u7EB8\u76D2 +Form-Source=\u8868\u683C\u6765\u6E90 # # The following keys match the Strings returned by # PrinterIsAcceptingJobs.toString() # -accepting-jobs=\u63a5\u53d7\u4efb\u52a1 -not-accepting-jobs=\u4e0d\u63a5\u53d7\u4efb\u52a1 +accepting-jobs=\u63A5\u53D7\u4F5C\u4E1A +not-accepting-jobs=\u4E0D\u63A5\u53D7\u4F5C\u4E1A diff --git a/jdk/src/share/classes/sun/print/resources/serviceui_zh_TW.properties b/jdk/src/share/classes/sun/print/resources/serviceui_zh_TW.properties index f5f487825d9..ecde0fd350c 100644 --- a/jdk/src/share/classes/sun/print/resources/serviceui_zh_TW.properties +++ b/jdk/src/share/classes/sun/print/resources/serviceui_zh_TW.properties @@ -1,105 +1,105 @@ # # -border.chromaticity=\u8272\u5f69\u5916\u89c0 -border.copies=\u4efd\u6578 -border.jobattributes=\u5de5\u4f5c\u5c6c\u6027 -border.media=\u5a92\u9ad4 -border.orientation=\u65b9\u5411 -border.printrange=\u5217\u5370\u7bc4\u570d -border.printservice=\u5217\u5370\u670d\u52d9 -border.quality=\u54c1\u8cea -border.sides=\u908a -border.margins=\u908a\u8ddd +border.chromaticity=\u8272\u5F69\u5916\u89C0 +border.copies=\u4EFD\u6578 +border.jobattributes=\u5DE5\u4F5C\u5C6C\u6027 +border.media=\u5A92\u9AD4 +border.orientation=\u65B9\u5411 +border.printrange=\u5217\u5370\u7BC4\u570D +border.printservice=\u5217\u5370\u670D\u52D9 +border.quality=\u54C1\u8CEA +border.sides=\u908A +border.margins=\u908A\u8DDD # -button.cancel=\u53d6\u6d88 -button.ok=\u78ba\u5b9a +button.cancel=\u53D6\u6D88 +button.ok=\u78BA\u5B9A button.print=\u5217\u5370 -button.properties=\u5c6c\u6027(R)... +button.properties=\u5C6C\u6027(R)... button.properties.mnemonic=R # -checkbox.collate=\u7406\u5e8f(C) +checkbox.collate=\u7406\u5E8F(C) checkbox.collate.mnemonic=C -checkbox.jobsheets=\u6a19\u984c\u9801(B) +checkbox.jobsheets=\u6A19\u984C\u9801(B) checkbox.jobsheets.mnemonic=B -checkbox.printtofile=\u5217\u5370\u81f3\u6a94\u6848(F) +checkbox.printtofile=\u5217\u5370\u81F3\u6A94\u6848(F) checkbox.printtofile.mnemonic=F # dialog.printtitle=\u5217\u5370 -dialog.pstitle=\u9801\u9762\u8a2d\u5b9a -dialog.overwrite=\u9019\u500b\u6a94\u6848\u5df2\u7d93\u5b58\u5728\u3002\u60a8\u8981\u8986\u5beb\u5df2\u5b58\u5728\u7684\u6a94\u6848\u55ce\uff1f -dialog.owtitle=\u5217\u5370\u81f3\u6a94\u6848 -dialog.printtofile=\u5217\u5370\u81f3\u6a94\u6848 -dialog.noprintermsg=\u627e\u4e0d\u5230\u5217\u5370\u670d\u52d9\u3002 -dialog.writeerror=\u7121\u6cd5\u5beb\u5165\u81f3\u6a94\u6848\ufe30 +dialog.pstitle=\u9801\u9762\u8A2D\u5B9A +dialog.overwrite=\u9019\u500B\u6A94\u6848\u5DF2\u7D93\u5B58\u5728\u3002\u60A8\u8981\u8986\u5BEB\u5DF2\u5B58\u5728\u7684\u6A94\u6848\u55CE\uFF1F +dialog.owtitle=\u5217\u5370\u81F3\u6A94\u6848 +dialog.printtofile=\u5217\u5370\u81F3\u6A94\u6848 +dialog.noprintermsg=\u627E\u4E0D\u5230\u5217\u5370\u670D\u52D9\u3002 +dialog.writeerror=\u7121\u6CD5\u5BEB\u5165\u81F3\u6A94\u6848: # -label.info=\u8cc7\u8a0a\uff1a -label.jobname=\u5de5\u4f5c\u540d\u7a31(J)\uff1a +label.info=\u8CC7\u8A0A: +label.jobname=\u5DE5\u4F5C\u540D\u7A31(J): label.jobname.mnemonic=J -label.numcopies=\u5217\u5370\u4efd\u6578(O)\uff1a +label.numcopies=\u5217\u5370\u4EFD\u6578(O): label.numcopies.mnemonic=O -label.priority=\u512a\u5148\u6b0a(R)\uff1a +label.priority=\u512A\u5148\u6B0A(R): label.priority.mnemonic=R -label.psname=\u540d\u7a31(N)\uff1a +label.psname=\u540D\u7A31(N): label.psname.mnemonic=N -label.pstype=\u985e\u578b\uff1a -label.rangeto=\u81f3 -label.size=\u5927\u5c0f(Z)\uff1a +label.pstype=\u985E\u578B: +label.rangeto=\u81F3 +label.size=\u5927\u5C0F(Z): label.size.mnemonic=Z -label.source=\u4f86\u6e90(C)\uff1a +label.source=\u4F86\u6E90(C): label.source.mnemonic=C -label.status=\u72c0\u614b\uff1a -label.username=\u4f7f\u7528\u8005\u540d\u7a31(U)\uff1a +label.status=\u72C0\u614B: +label.username=\u4F7F\u7528\u8005\u540D\u7A31(U): label.username.mnemonic=U label.millimetres=(mm) label.inches=(in) -label.topmargin=\u9802\u7aef\u908a\u8ddd(T) +label.topmargin=\u9802\u7AEF\u908A\u8DDD(T) label.topmargin.mnemonic=T -label.bottommargin=\u5e95\u90e8\u908a\u8ddd(B) +label.bottommargin=\u5E95\u90E8\u908A\u8DDD(B) label.bottommargin.mnemonic=B -label.leftmargin=\u5de6\u908a\u8ddd(F) +label.leftmargin=\u5DE6\u908A\u8DDD(F) label.leftmargin.mnemonic=F -label.rightmargin=\u53f3\u908a\u8ddd(R) +label.rightmargin=\u53F3\u908A\u8DDD(R) label.rightmargin.mnemonic=R # -radiobutton.color=\u8272\u5f69(C) +radiobutton.color=\u8272\u5F69(C) radiobutton.color.mnemonic=C radiobutton.draftq=\u8349\u5716(F) radiobutton.draftq.mnemonic=F -radiobutton.duplex=\u96d9\u9762\u5217\u5370(D) +radiobutton.duplex=\u96D9\u9762\u5217\u5370(D) radiobutton.duplex.mnemonic=D -radiobutton.highq=\u9ad8(H) +radiobutton.highq=\u9AD8(H) radiobutton.highq.mnemonic=H -radiobutton.landscape=\u6a6b\u5411(L) +radiobutton.landscape=\u6A6B\u5411(L) radiobutton.landscape.mnemonic=L -radiobutton.monochrome=\u55ae\u8272(M) +radiobutton.monochrome=\u55AE\u8272(M) radiobutton.monochrome.mnemonic=M -radiobutton.normalq=\u6b63\u5e38(N) +radiobutton.normalq=\u6B63\u5E38(N) radiobutton.normalq.mnemonic=N -radiobutton.oneside=\u55ae\u9762(O) +radiobutton.oneside=\u55AE\u9762(O) radiobutton.oneside.mnemonic=O -radiobutton.portrait=\u76f4\u5411(P) +radiobutton.portrait=\u76F4\u5411(P) radiobutton.portrait.mnemonic=P -radiobutton.rangeall=\u5168\u90e8(L) +radiobutton.rangeall=\u5168\u90E8(L) radiobutton.rangeall.mnemonic=L radiobutton.rangepages=\u9801\u9762(E) radiobutton.rangepages.mnemonic=E -radiobutton.revlandscape=\u53cd\u5411\u6a6b\u5370(N) +radiobutton.revlandscape=\u53CD\u5411\u6A6B\u5370(N) radiobutton.revlandscape.mnemonic=N -radiobutton.revportrait=\u53cd\u5411\u76f4\u5370(I) +radiobutton.revportrait=\u53CD\u5411\u76F4\u5370(I) radiobutton.revportrait.mnemonic=I -radiobutton.tumble=\u7ffb\u8f49(T) +radiobutton.tumble=\u7FFB\u8F49(T) radiobutton.tumble.mnemonic=T # The vkMnemonics correspond with the constants defined in KeyEvent, eg # 65 = KeyEvent.VK_A -tab.appearance=\u5916\u89c0(A) +tab.appearance=\u5916\u89C0 tab.appearance.vkMnemonic=65 -tab.general=\u4e00\u822c(G) +tab.general=\u4E00\u822C tab.general.vkMnemonic=71 -tab.pagesetup=\u9801\u9762\u8a2d\u5b9a(S) +tab.pagesetup=\u9801\u9762\u8A2D\u5B9A tab.pagesetup.vkMnemonic=83 # -error.pagerange=\u7121\u6548\u7684\u9801\u9762\u7bc4\u570d\uff1b\u8acb\u91cd\u65b0\u8f38\u5165\u6578\u503c (e.g. 1-3,5,7-10) -error.destination=\u7121\u6548\u7684\u6a94\u540d\uff1b\u8acb\u518d\u8a66\u4e00\u6b21 +error.pagerange=\u7121\u6548\u7684\u9801\u9762\u7BC4\u570D; \u8ACB\u91CD\u65B0\u8F38\u5165\u6578\u503C (\u4F8B\u5982 1-3,5,7-10) +error.destination=\u7121\u6548\u7684\u6A94\u540D; \u8ACB\u518D\u8A66\u4E00\u6B21 # # The following keys match the Strings returned by MediaSizeName.toString() # (in some cases the space character is replaced by '-' and the pound @@ -161,11 +161,11 @@ folio=Folio quarto=Quarto japanese-postcard=Postcard (JIS) oufuko-postcard=Double Postcard (JIS) -a=\u5de5\u7a0b A -b=\u5de5\u7a0b B -c=\u5de5\u7a0b C -d=\u5de5\u7a0b D -e=\u5de5\u7a0b E +a=\u5DE5\u7A0B A +b=\u5DE5\u7A0B B +c=\u5DE5\u7A0B C +d=\u5DE5\u7A0B D +e=\u5DE5\u7A0B E iso-designated-long=ISO Designated Long italian-envelope=Italy Envelope italy-envelope=Italy Envelope @@ -189,26 +189,26 @@ na-8x10=8" x 10" Paper # # The following keys match the Strings returned by MediaTray.toString() # -auto-select=\u81ea\u52d5\u9078\u53d6 -top=\u4e0a -middle=\u4e2d -bottom=\u4e0b -envelope=\u5c01\u5957 -manual=\u624b\u9001 -large-capacity=\u5927\u5bb9\u91cf -main=\u4e3b -side=\u908a +auto-select=\u81EA\u52D5\u9078\u53D6 +top=\u4E0A +middle=\u4E2D +bottom=\u4E0B +envelope=\u5C01\u5957 +manual=\u624B\u9001 +large-capacity=\u5927\u5BB9\u91CF +main=\u4E3B +side=\u908A # Add the additional standard bins defined by win32 -Manual-Envelope=\u624b\u9001\u5c01\u5957 -Automatic-Feeder=\u81ea\u52d5\u994b\u7d19\u5668 -Tractor-Feeder=\u62d6\u66f3\u994b\u7d19\u5668 -Small-Format=\u5c0f\u683c\u5f0f -Large-Format=\u5927\u683c\u5f0f -Cassette=\u5361\u5f0f\u78c1\u5e36\u6a5f -Form-Source=\u8868\u683c\u4f86\u6e90 +Manual-Envelope=\u624B\u9001\u5C01\u5957 +Automatic-Feeder=\u81EA\u52D5\u994B\u7D19\u5668 +Tractor-Feeder=\u62D6\u66F3\u994B\u7D19\u5668 +Small-Format=\u5C0F\u683C\u5F0F +Large-Format=\u5927\u683C\u5F0F +Cassette=\u5361\u5F0F\u78C1\u5E36\u6A5F +Form-Source=\u8868\u683C\u4F86\u6E90 # # The following keys match the Strings returned by # PrinterIsAcceptingJobs.toString() # -accepting-jobs=\u63a5\u53d7\u7684\u5de5\u4f5c -not-accepting-jobs=\u4e0d\u63a5\u53d7\u7684\u5de5\u4f5c +accepting-jobs=\u63A5\u53D7\u7684\u5DE5\u4F5C +not-accepting-jobs=\u4E0D\u63A5\u53D7\u7684\u5DE5\u4F5C diff --git a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_de.properties b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_de.properties index 3c5751e9fc6..51068bff8de 100644 --- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_de.properties +++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_de.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2001, 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 @@ -24,8 +24,5 @@ # questions. # -rmiregistry.usage=Syntax: {0} \ -\n\ -\nmit folgendem Wert f\u00fcr :\ -\n -J \u00dcbergeben des Arguments an den Java-Interpreter. -rmiregistry.port.badnumber=Anschlussargument {0} ist keine Zahl. +rmiregistry.usage=Verwendung: {0} \n\nwobei die Folgendes beinhalten:\n -J Argument an den Java-Interpreter \u00FCbergeben +rmiregistry.port.badnumber=Portargument {0} ist keine Zahl. diff --git a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_es.properties b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_es.properties index b4f4c537425..9192c090ff6 100644 --- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_es.properties +++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_es.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2001, 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 @@ -24,8 +24,5 @@ # questions. # -rmiregistry.usage=Sintaxis: {0} \ -\n\ -\ndonde las son:\ -\n -J Pasar argumento al int\u00e9rprete de java -rmiregistry.port.badnumber=argumento de puerto, {0}, no es un n\u00famero. +rmiregistry.usage=Sintaxis: {0} \n\ndonde las son:\n -J Pasar argumento al int\u00E9rprete de java +rmiregistry.port.badnumber=argumento de puerto, {0}, no es un n\u00FAmero. diff --git a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_fr.properties b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_fr.properties index 8b71545075a..f806368fa0e 100644 --- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_fr.properties +++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_fr.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2001, 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 @@ -24,8 +24,5 @@ # questions. # -rmiregistry.usage=Syntaxe : {0} \ -\n\ -\no\u00f9 comprend :\ -\n -J Transmettre l''argument \u00e0 l''interpr\u00e9teur Java -rmiregistry.port.badnumber=l''argument de port, {0}, n''est pas un nombre. +rmiregistry.usage=Syntaxe : {0} \n\no\u00F9 comprend :\n -J Transmettre l''argument \u00E0 l''interpr\u00E9teur Java +rmiregistry.port.badnumber=l''argument port, {0}, n''est pas un nombre. diff --git a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties index f9979080c40..4ca145629cd 100644 --- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties +++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2001, 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 @@ -24,8 +24,5 @@ # questions. # -rmiregistry.usage=Utilizzo: {0} \ -\n\ -\ndove include:\ -\n -J Passa l''argomento all''interprete java -rmiregistry.port.badnumber=l''argomento della porta, {0}, non \u00e8 un numero. +rmiregistry.usage=Utilizzo: {0} \n\ndove include:\n -J Passa l''argomento all''interprete java +rmiregistry.port.badnumber=l''argomento della porta, {0}, non \u00E8 un numero. diff --git a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ja.properties b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ja.properties index 17424a42c64..46261e666e4 100644 --- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ja.properties +++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ja.properties @@ -1,5 +1,6 @@ # -# Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved. +# +# Copyright (c) 1999, 2001, 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 @@ -23,8 +24,5 @@ # questions. # -rmiregistry.usage=\u4f7f\u3044\u65b9: {0} \ -\n\ -\n \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\ -\n -J java \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306b\u5f15\u6570\u3092\u6e21\u3059 -rmiregistry.port.badnumber=\u30dd\u30fc\u30c8\u5f15\u6570 {0} \u306f\u756a\u53f7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +rmiregistry.usage=\u4F7F\u7528\u65B9\u6CD5: {0} \n\n\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -J java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u5F15\u6570\u3092\u6E21\u3059 +rmiregistry.port.badnumber=\u30DD\u30FC\u30C8\u5F15\u6570{0}\u306F\u756A\u53F7\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 diff --git a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ko.properties b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ko.properties index 2ade70ff412..3464c4ea240 100644 --- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ko.properties +++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ko.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2001, 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 @@ -24,8 +24,5 @@ # questions. # -rmiregistry.usage=\uc0ac\uc6a9\ubc95: {0} \ -\n\ -\n\ub294 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud569\ub2c8\ub2e4:\ -\n -J Java \uc778\ud130\ud504\ub9ac\ud130\uc5d0 \uc778\uc790\ub97c \uc804\ub2ec\ud569\ub2c8\ub2e4. -rmiregistry.port.badnumber=\ud3ec\ud2b8 \uc778\uc790 {0}\uc740(\ub294) \uc22b\uc790\uac00 \uc544\ub2d9\ub2c8\ub2e4. +rmiregistry.usage=\uC0AC\uC6A9\uBC95: {0} \n\n\uC5EC\uAE30\uC11C \uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n -J Java \uC778\uD130\uD504\uB9AC\uD130\uC5D0 \uC778\uC218\uB97C \uC804\uB2EC\uD569\uB2C8\uB2E4. +rmiregistry.port.badnumber=\uD3EC\uD2B8 \uC778\uC218 {0}\uC740(\uB294) \uC22B\uC790\uAC00 \uC544\uB2D9\uB2C8\uB2E4. diff --git a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_pt_BR.properties b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_pt_BR.properties index d35f01a45ee..9659c3b603b 100644 --- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_pt_BR.properties +++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_pt_BR.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2001, 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 @@ -24,5 +24,5 @@ # questions. # -rmiregistry.usage=Uso: {0} \n\nem que inclui:\n -J passa o argumento para o int\u00e9rprete de java -rmiregistry.port.badnumber=o argumento da porta, {0}, n\u00e3o \u00e9 um n\u00famero. +rmiregistry.usage=Uso: {0} \n\nem que inclui:\n -J Especifica o argumento para o int\u00E9rprete de java +rmiregistry.port.badnumber=o argumento da porta, {0}, n\u00E3o \u00E9 um n\u00FAmero. diff --git a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_sv.properties b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_sv.properties index 78ecd4b6743..e853e97243d 100644 --- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_sv.properties +++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_sv.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2001, 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 @@ -24,8 +24,5 @@ # questions. # -rmiregistry.usage=G\u00f6r s\u00e5 h\u00e4r: {0} \ -\n\ -\nd\u00e4r omfattar:\ -\n -J Skicka argumentet till java-tolken -rmiregistry.port.badnumber=portargumentet, {0}, \u00e4r inte en siffra. +rmiregistry.usage=Syntax: {0} \n\nd\u00E4r inkluderar:\n -J Skicka argumentet till Javatolken +rmiregistry.port.badnumber=portargumentet, {0}, \u00E4r inte ett tal. diff --git a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_CN.properties b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_CN.properties index cd6e56b0a34..9a5a2bf4af4 100644 --- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_CN.properties +++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_CN.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2001, 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 @@ -24,8 +24,5 @@ # questions. # -rmiregistry.usage=\u7528\u6cd5\uff1a {0} <\u9009\u9879> <\u7aef\u53e3>\ -\n\ -\n\u5176\u4e2d\uff0c<\u9009\u9879> \u5305\u62ec\uff1a\ -\n -J \u5c06\u53c2\u6570\u4f20\u9012\u5230 java \u89e3\u91ca\u7a0b\u5e8f -rmiregistry.port.badnumber=\u7aef\u53e3\u53c2\u6570\uff1a{0}, \u4e0d\u662f\u6570\u5b57\u3002 +rmiregistry.usage=\u7528\u6CD5: {0} <\u9009\u9879> <\u7AEF\u53E3>\n\n\u5176\u4E2D, <\u9009\u9879> \u5305\u62EC: \n -J \u5C06\u53C2\u6570\u4F20\u9012\u5230 java \u89E3\u91CA\u5668 +rmiregistry.port.badnumber=\u7AEF\u53E3\u53C2\u6570 {0} \u4E0D\u662F\u6570\u5B57\u3002 diff --git a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_TW.properties b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_TW.properties index 6639ef9a637..256fb2c890f 100644 --- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_TW.properties +++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_TW.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2001, 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 @@ -24,8 +24,5 @@ # questions. # -rmiregistry.usage=\u7528\u6cd5: {0} \ -\n\ -\n\u5176\u4e2d \u5305\u62ec\ufe30\ -\n -J \u50b3\u905e\u5f15\u6578\u5230 java \u76f4\u8b6f\u5668 -rmiregistry.port.badnumber=\u9023\u63a5\u57e0\u5f15\u6578\uff0c{0}\uff0c\u4e0d\u662f\u4e00\u500b\u6578\u5b57 +rmiregistry.usage=\u7528\u6CD5: {0} \n\n\u5176\u4E2D \u5305\u62EC:\n -J \u50B3\u905E\u5F15\u6578\u5230 java \u76F4\u8B6F\u5668 +rmiregistry.port.badnumber=\u9023\u63A5\u57E0\u5F15\u6578\uFF0C{0}\uFF0C\u4E0D\u662F\u4E00\u500B\u6578\u5B57 diff --git a/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_ja.properties b/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_ja.properties index 2c53008d813..7e5d0e74179 100644 --- a/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_ja.properties +++ b/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_ja.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1996, 2010, 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 @@ -71,151 +71,80 @@ generator.env.iiop=sun.rmi.rmic.iiop.BatchEnvironment generator.env.idl=sun.rmi.rmic.iiop.BatchEnvironment generator.env.xprint=sun.rmi.rmic.iiop.BatchEnvironment -rmic.usage=\u4f7f\u3044\u65b9: {0} \ -\n\ -\n \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\ -\n -keep \u4e2d\u9593\u751f\u6210\u3055\u308c\u305f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u306a\u3044\ -\n -keepgenerated ("-keep" \u3068\u540c\u3058)\ -\n -v1.1 1.1 \u30b9\u30bf\u30d6\u30d7\u30ed\u30c8\u30b3\u30eb\u7248\u7528\u306e\u30b9\u30bf\u30d6/\u30b9\u30b1\u30eb\u30c8\u30f3\u3092\u4f5c\u6210\u3059\u308b\ -\n -vcompat 1.1 \u3068 1.2 \u306e\u30b9\u30bf\u30d6\u30d7\u30ed\u30c8\u30b3\u30eb\u7248\u3068\ -\n \u4e92\u63db\u6027\u306e\u3042\u308b\u30b9\u30bf\u30d6/\u30b9\u30b1\u30eb\u30c8\u30f3\u3092\u4f5c\u6210\u3059\u308b\ -\n -v1.2 (\u30c7\u30d5\u30a9\u30eb\u30c8) 1.2 \u30b9\u30bf\u30d6\u30d7\u30ed\u30c8\u30b3\u30eb\u7248\u5c02\u7528\u306e\u30b9\u30bf\u30d6\u3092\u4f5c\u6210\u3059\u308b\ -\n -iiop IIOP \u7528\u306e\u30b9\u30bf\u30d6\u3092\u4f5c\u6210\u3059\u308b\u3002\u6307\u5b9a\u3059\u308b\u3068 \u306b\u306f\u6b21\u306e\u3082\u306e\u3082\u542b\u307e\u308c\u307e\u3059\u3002\ -\n\ -\n -always \u6700\u65b0\u306e\u5834\u5408\u3067\u3082\u30b9\u30bf\u30d6\u3092\u4f5c\u6210\u3059\u308b\ -\n -alwaysgenerate ("-always" \u3068\u540c\u3058)\ -\n -nolocalstubs \u540c\u3058\u30d7\u30ed\u30bb\u30b9\u306b\u3064\u3044\u3066\u6700\u9069\u5316\u3055\u308c\u305f\u30b9\u30bf\u30d6\u306f\u4f5c\u6210\u3057\u306a\u3044\ -\n\ -\n -idl IDL \u3092\u4f5c\u6210\u3059\u308b\u3002\u6307\u5b9a\u3059\u308b\u3068 \u306b\u306f\u6b21\u306e\u3082\u306e\u3082\u542b\u307e\u308c\u307e\u3059\u3002\ -\n\ -\n -noValueMethods valuetypes \u306b\u5bfe\u3057\u3066\u30e1\u30bd\u30c3\u30c9\u3092\u751f\u6210\u3057\u306a\u3044 \ -\n -always \u6700\u65b0\u306e\u5834\u5408\u3067\u3082 IDL \u3092\u751f\u6210\u3059\u308b\ -\n -alwaysgenerate ("-always" \u3068\u540c\u3058)\ -\n\ -\n -g \u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u751f\u6210\u3059\u308b\ -\n -nowarn \u8b66\u544a\u3092\u751f\u6210\u3057\u306a\u3044\ -\n -nowrite \u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u305f\u30af\u30e9\u30b9\u3092\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306b\u66f8\u304d\u8fbc\u307e\u306a\u3044\ -\n -verbose \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u52d5\u4f5c\u306b\u95a2\u3059\u308b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\u3059\u308b\ -\n -classpath \u5165\u529b\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b\ -\n -bootclasspath \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b\ -\n -extdirs \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u62e1\u5f35\u6a5f\u80fd\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b\ -\n -d \u751f\u6210\u3055\u308c\u305f\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b\ -\n -J java \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306b\u5f15\u6570\u3092\u6e21\u3059\ -\n +rmic.usage=\u4F7F\u7528\u65B9\u6CD5: {0} \n\n\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -keep \u4E2D\u9593\u751F\u6210\u3055\u308C\u305F\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u306A\u3044\n -keepgenerated("-keep"\u3068\u540C\u3058)\n -v1.1 1.1\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u7528\u306E\u30B9\u30BF\u30D6/\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u4F5C\u6210\u3059\u308B\n -vcompat 1.1\u30681.2\u306E\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u3068\n \u4E92\u63DB\u6027\u306E\u3042\u308B\u30B9\u30BF\u30D6/\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u4F5C\u6210\u3059\u308B\n -v1.2 (\u30C7\u30D5\u30A9\u30EB\u30C8)1.2\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u5C02\u7528\u306E\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\n -iiop IIOP\u7528\u306E\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\u3002\u6307\u5B9A\u3059\u308B\u3068\u306B\u306F\u6B21\u306E\u3082\u306E\u3082\u542B\u307E\u308C\u307E\u3059\u3002\n\n -always \u6700\u65B0\u306E\u5834\u5408\u3067\u3082\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\n -alwaysgenerate ("-always"\u3068\u540C\u3058)\n -nolocalstubs \u540C\u3058\u30D7\u30ED\u30BB\u30B9\u306B\u3064\u3044\u3066\u6700\u9069\u5316\u3055\u308C\u305F\u30B9\u30BF\u30D6\u306F\u4F5C\u6210\u3057\u306A\u3044\n\n -idl IDL\u3092\u4F5C\u6210\u3059\u308B\u3002\u6307\u5B9A\u3059\u308B\u3068\u306B\u306F\u6B21\u306E\u3082\u306E\u3082\u542B\u307E\u308C\u307E\u3059\u3002\n\n -noValueMethods valuetypes\u306B\u5BFE\u3057\u3066\u30E1\u30BD\u30C3\u30C9\u3092\u751F\u6210\u3057\u306A\u3044\n -always \u6700\u65B0\u306E\u5834\u5408\u3067\u3082IDL\u3092\u751F\u6210\u3059\u308B\n -alwaysgenerate ("-always"\u3068\u540C\u3058)\n\n -g \u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n -nowarn \u8B66\u544A\u3092\u751F\u6210\u3057\u306A\u3044\n -nowrite \u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u305F\u30AF\u30E9\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u30FB\u30B7\u30B9\u30C6\u30E0\u306B\u66F8\u304D\u8FBC\u307E\u306A\u3044\n -verbose \u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u52D5\u4F5C\u306B\u95A2\u3059\u308B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n -classpath \u5165\u529B\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B\n -bootclasspath \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u4F4D\u7F6E\u3092\u7F6E\u304D\u63DB\u3048\u308B\n -extdirs \u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u62E1\u5F35\u6A5F\u80FD\u306E\u4F4D\u7F6E\u3092\u7F6E\u304D\u63DB\u3048\u308B\n -d \u751F\u6210\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u683C\u7D0D\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B\n -J java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u5F15\u6570\u3092\u6E21\u3059\n # # Generic Messages # -rmic.cant.read={0} \u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 -rmic.cant.write={0} \u304c\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3002 -rmic.option.unsupported=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306f\u73fe\u5728\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -rmic.option.unimplemented=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306f\u307e\u3060\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -rmic.option.already.seen=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306e\u6307\u5b9a\u306f 1 \u56de\u3060\u3051\u3067\u3059\u3002 -rmic.option.requires.argument=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002 -rmic.no.such.directory=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 -rmic.no.such.option={0} \u306f\u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u307e\u305f\u306f\u5f15\u6570\u3067\u3059\u3002 -rmic.wrote=[{0} \u3092\u66f8\u304d\u8fbc\u307f\u307e\u3057\u305f] -rmic.errors=\u30a8\u30e9\u30fc {0} \u500b -rmic.1error=\u30a8\u30e9\u30fc 1 \u500b -rmic.warnings=\u8b66\u544a {0} \u500b -rmic.1warning=\u8b66\u544a 1 \u500b -rmic.done_in=[{0} ms \u3067\u5b8c\u4e86] -rmic.no.memory=\ - \u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u30e1\u30e2\u30ea\u30fc\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002"-J-Xmx" \u30b3\u30de\u30f3\u30c9\u884c\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3001\u6700\u5927\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba\u3092\u5897\u3084\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -rmic.stack.overflow=\ - \u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u30b9\u30bf\u30c3\u30af\u7a7a\u9593\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002"-J-Xss" \u30b3\u30de\u30f3\u30c9\u884c\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3001Java \u30b9\u30bf\u30c3\u30af\u306b\u5272\u308a\u5f53\u3066\u308b\u30e1\u30e2\u30ea\u30fc\u3092\u5897\u3084\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -rmic.class.not.found=\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -rmic.missing.property=\u30d7\u30ed\u30d1\u30c6\u30a3 generator.class.{0} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -rmic.cannot.instantiate=\u30af\u30e9\u30b9 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002 -rmic.cannot.use.both={0} \u3068 {1} \u306e\u4e21\u65b9\u3092\u4f7f\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 -rmic.resource.not.found={0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -rmic.no.output.dir=\ - {0} \u306b\u9069\u5207\u306a\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002-d \u3092\u4f7f\u7528\u3057\u3066\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -rmic.cannot.create.dir=\ - \u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 +rmic.cant.read={0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093 +rmic.cant.write={0}\u304C\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093 +rmic.option.unsupported=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306F\u73FE\u5728\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +rmic.option.unimplemented=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306F\u307E\u3060\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +rmic.option.already.seen={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8907\u6570\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +rmic.option.requires.argument={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059\u3002 +rmic.no.such.directory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002 +rmic.no.such.option={0}\u306F\u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u307E\u305F\u306F\u5F15\u6570\u3067\u3059\u3002 +rmic.wrote=[{0}\u3092\u66F8\u8FBC\u307F\u5B8C\u4E86] +rmic.errors=\u30A8\u30E9\u30FC{0}\u500B +rmic.1error=\u30A8\u30E9\u30FC1\u500B +rmic.warnings=\u8B66\u544A{0}\u500B +rmic.1warning=\u8B66\u544A1\u500B +rmic.done_in=[{0}\u30DF\u30EA\u79D2\u3067\u5B8C\u4E86] +rmic.no.memory=\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u30E1\u30E2\u30EA\u30FC\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002"-J-Xmx"\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u3001\u6700\u5927\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u5897\u3084\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +rmic.stack.overflow=\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u30B9\u30BF\u30C3\u30AF\u7A7A\u9593\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002"-J-Xss"\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u3001Java\u30B9\u30BF\u30C3\u30AF\u306B\u5272\u308A\u5F53\u3066\u308B\u30E1\u30E2\u30EA\u30FC\u3092\u5897\u3084\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +rmic.class.not.found=\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +rmic.missing.property=\u30D7\u30ED\u30D1\u30C6\u30A3generator.class.{0}\u304C\u3042\u308A\u307E\u305B\u3093 +rmic.cannot.instantiate=\u30AF\u30E9\u30B9{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093 +rmic.cannot.use.both={0}\u3068{1}\u306E\u4E21\u65B9\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002 +rmic.resource.not.found={0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +rmic.no.output.dir={0}\u306B\u9069\u5207\u306A\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002-d\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u30EB\u30FC\u30C8\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +rmic.cannot.create.dir=\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002 # # JRMP Messages # -rmic.cant.make.stubs.for.interface=\ - {0} \u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30b9\u30bf\u30d6\u306f\u30ea\u30e2\u30fc\u30c8\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30af\u30e9\u30b9\u3060\u3051\u306b\u5fc5\u8981\u3067\u3059\u3002 -rmic.must.implement.remote=\ - \u30af\u30e9\u30b9 {0} \u306f java.rmi.Remote \u3092\u62e1\u5f35\u3059\u308b\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u307e\u305b\u3093\u3002\u30b9\u30bf\u30d6\u3068\u30b9\u30b1\u30eb\u30c8\u30f3\u3092\u5fc5\u8981\u3068\u3059\u308b\u306e\u306f\u30ea\u30e2\u30fc\u30c8\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3060\u3051\u3067\u3059\u3002 -rmic.must.implement.remote.directly=\ - \u30b9\u30bf\u30d6\u3092\u5fc5\u8981\u3068\u3059\u308b\u306e\u306f java.rmi.Remote \u3092\u62e1\u5f35\u3059\u308b\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u76f4\u63a5\u5b9f\u88c5\u3059\u308b\u30af\u30e9\u30b9\u3060\u3051\u3067\u3059\u3002\n\t\u30af\u30e9\u30b9 {0} \u306f\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u76f4\u63a5\u306b\u306f\u5b9f\u88c5\u3057\u307e\u305b\u3093\u3002 -rmic.must.throw.remoteexception=\ - {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9 {1} \u306f java.rmi.RemoteException \u3092\u30b9\u30ed\u30fc\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -rmic.must.only.throw.exception=\ - \u30e1\u30bd\u30c3\u30c9 {0} \u306f {1} \u3092\u30b9\u30ed\u30fc\u3059\u308b\u306e\u3067\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30e1\u30bd\u30c3\u30c9\u5b9f\u88c5\u3067\u3059\u3002\u30ea\u30e2\u30fc\u30c8\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u88c5\u304c\u30b9\u30ed\u30fc\u3059\u308b\u306e\u306f java.lang.Exception \u304b\u305d\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3060\u3051\u3067\u3059\u3002 -warn.rmic.tie.found=\ - IIOP "tie" \u306f\u30af\u30e9\u30b9 {0} \u306e\u305f\u3081\u306b\u3042\u308a\u307e\u3059\u3002\ - \n {1}\ - \nPortableRemoteObject.exportObject \u3092\u4f7f\u3046\u5834\u5408\u306f\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u307e\u3059\u3002\u524a\u9664\u3057\u306a\u3044\u3068\u3001\u30b5\u30fc\u30d0\u30fc\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f JRMP \u3067\u306a\u304f IIOP \u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002 +rmic.cant.make.stubs.for.interface={0}\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30B9\u30BF\u30D6\u306F\u30EA\u30E2\u30FC\u30C8\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30FB\u30AF\u30E9\u30B9\u306B\u306E\u307F\u5FC5\u8981\u3067\u3059\u3002 +rmic.must.implement.remote=\u30AF\u30E9\u30B9{0}\u306Fjava.rmi.Remote\u3092\u62E1\u5F35\u3059\u308B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u5B9F\u88C5\u3057\u307E\u305B\u3093\u3002\u30B9\u30BF\u30D6\u3068\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u5FC5\u8981\u3068\u3059\u308B\u306E\u306F\u30EA\u30E2\u30FC\u30C8\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u307F\u3067\u3059\u3002 +rmic.must.implement.remote.directly=\u30B9\u30BF\u30D6\u3092\u5FC5\u8981\u3068\u3059\u308B\u306E\u306Fjava.rmi.Remote\u3092\u62E1\u5F35\u3059\u308B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u76F4\u63A5\u5B9F\u88C5\u3059\u308B\u30AF\u30E9\u30B9\u306E\u307F\u3067\u3059\u3002\u30AF\u30E9\u30B9{0}\u306F\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u76F4\u63A5\u306B\u306F\u5B9F\u88C5\u3057\u307E\u305B\u3093\u3002 +rmic.must.throw.remoteexception={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9{1}\u306Fjava.rmi.RemoteException\u3092\u30B9\u30ED\u30FC\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +rmic.must.only.throw.exception=\u30E1\u30BD\u30C3\u30C9{0}\u306F{1}\u3092\u30B9\u30ED\u30FC\u3059\u308B\u306E\u3067\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u5B9F\u88C5\u3067\u3059\u3002\u30EA\u30E2\u30FC\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u306E\u5B9F\u88C5\u304C\u30B9\u30ED\u30FC\u3059\u308B\u306E\u306Fjava.lang.Exception\u304B\u305D\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u306E\u307F\u3067\u3059\u3002 +warn.rmic.tie.found=IIOP "tie"\u306F\u30AF\u30E9\u30B9{0}\u306E\u305F\u3081\u306B\u3042\u308A\u307E\u3059\u3002\n {1}\nPortableRemoteObject.exportObject\u3092\u4F7F\u7528\u3059\u308B\u5834\u5408\u306F\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u524A\u9664\u3057\u306A\u3044\u3068\u3001\u30B5\u30FC\u30D0\u30FC\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306FJRMP\u3067\u306A\u304FIIOP\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u307E\u3059\u3002 # # RMI-IIOP Messages # -rmic.generated=[{1} ms \u3067 {0} \u3092\u751f\u6210] -rmic.previously.generated=[\u4ee5\u524d\u306b\u751f\u6210\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb {0} \u306f\u6700\u65b0\u3067\u3059] -warn.rmic.member.not.mapped=\ - \u30af\u30e9\u30b9 {1} \u306e\u30c7\u30fc\u30bf\u30e1\u30f3\u30d0\u30fc {0} \u306f IDL \u306b\u30de\u30c3\u30d7\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +rmic.generated=[{1}\u30DF\u30EA\u79D2\u3067{0}\u3092\u751F\u6210] +rmic.previously.generated=[\u4EE5\u524D\u306B\u751F\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB{0}\u306F\u6700\u65B0\u3067\u3059] +warn.rmic.member.not.mapped=\u30AF\u30E9\u30B9{1}\u306E\u30C7\u30FC\u30BF\u30FB\u30E1\u30F3\u30D0\u30FC{0}\u306FIDL\u306B\u30DE\u30C3\u30D7\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -rmic.iiop.constraint.1=\ - {0} \u306f\u4e0d\u6b63\u306a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002java.rmi.Remote \u304b\u3089\u306f\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.2=\ - \u30af\u30e9\u30b9 {0} \u306e serialPersistentFields \u914d\u5217\u306f\u4e0d\u6b63\u3067\u3059\u3002\u5b58\u5728\u3057\u306a\u3044\u30e1\u30f3\u30d0\u30fc\u3092\u53c2\u7167\u3057\u3066\u3044\u307e\u3059\u3002 -rmic.iiop.constraint.3=\ - {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002{1} \u306f\u6b63\u3057\u3044\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u307e\u305f\u306f String \u5b9a\u6570\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.4=\ - {0} \u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002serialPersistentFields \u306f private static final \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.5=\ - {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9 {1} \u306f RemoteException \u307e\u305f\u306f RemoteException \u306e\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u3092\u30b9\u30ed\u30fc\u3059\u3079\u304d\u3067\u3059\u3002 -rmic.iiop.constraint.6=\ - {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u7d99\u627f\u3055\u308c\u305f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {1} \u3082\u4e21\u65b9\u30e1\u30bd\u30c3\u30c9 {2} \u3092\u5ba3\u8a00\u3057\u3066\u3044\u307e\u3059\u3002 -rmic.iiop.constraint.7=\ - {0} \u306f\u4e0d\u6b63\u306a\u578b\u3067\u3059\u3002{1} \u306f\u7279\u5225\u306a\u5834\u5408\u306b\u306e\u307f\u7570\u306a\u308a\u307e\u3059\u3002 -rmic.iiop.constraint.8=\ - {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u5b9f\u88c5\u3067\u3059\u3002\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u6301\u3063\u3066\u3044\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.9=\ - \u30af\u30e9\u30b9 {1} \u306e serialPersistentFields \u914d\u5217\u30e1\u30f3\u30d0\u30fc {0} \u306f\u4e0d\u6b63\u3067\u3059\u3002\u578b\u304c\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30f3\u30d0\u30fc\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.10=\ - {0} \u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002java.rmi.Remote \u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002 -rmic.iiop.constraint.11=\ - {0} \u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002java.io.Serializable \u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.12=\ - {0} \u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002\u4e0d\u6b63\u306a\u89aa\u3067\u3059\u3002 -rmic.iiop.constraint.13=\ - {0} \u306f\u4e0d\u6b63\u306a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9 {1} \u306e idl \u540d\u304c\u4ed6\u306e\u30e1\u30bd\u30c3\u30c9\u3068\u7af6\u5408\u3057\u307e\u3059\u3002 -rmic.iiop.constraint.14=\ - {0} \u306f\u4e0d\u6b63\u306a abstract \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.15=\ - {0} \u306f\u4e0d\u6b63\u306a abstract \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002java.rmi.Remote \u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002 -rmic.iiop.constraint.16=\ - {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.17=\ - {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u5b9f\u88c5\u3067\u3059\u3002\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.18=\ - {0} \u306f\u4e0d\u6b63\u306a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9 {1} \u306f org.omg.CORBA.portable.IDLEntity \u3092\u5b9f\u88c5\u3059\u308b\u4f8b\u5916\u3092\u6e21\u3057\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.19=\ - {0} \u306f\u4e0d\u6b63\u306a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u5b9a\u6570 {1} \u306e idl \u540d\u304c\u4ed6\u306e\u5b9a\u6570\u3068\u7af6\u5408\u3057\u307e\u3059\u3002 -rmic.iiop.constraint.20=\ - {0} \u306f\u4e0d\u6b63\u306a\u30af\u30e9\u30b9\u3067\u3059\u3002\u30e1\u30f3\u30d0\u30fc {1} \u306e idl \u540d\u304c\u4ed6\u306e\u30e1\u30f3\u30d0\u30fc\u3068\u7af6\u5408\u3057\u307e\u3059\u3002 -rmic.iiop.constraint.21=\ - {0} \u306f\u30ea\u30e2\u30fc\u30c8\u5b9f\u88c5\u30af\u30e9\u30b9\u3067\u3042\u308a\u3001{1} \u306e\u30e1\u30bd\u30c3\u30c9\u5f15\u6570\u3042\u308b\u3044\u306f\u623b\u308a\u578b\u3068\u3057\u3066\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.22=\ - \u5185\u90e8\u969c\u5bb3: (\u30e1\u30bd\u30c3\u30c9) \u4f8b\u5916 {0} \u306f\u30af\u30e9\u30b9\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.23=\ - \u5185\u90e8\u969c\u5bb3: (\u30e1\u30bd\u30c3\u30c9) \u306f {0} \u306e null \u30dd\u30a4\u30f3\u30bf\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f\u3002 -rmic.iiop.constraint.24=\ - \u30af\u30e9\u30b9 {0} \u306f\u4e0d\u6b63\u306a\u623b\u308a\u578b\u3092\u542b\u3093\u3067\u3044\u307e\u3059\u3002 -rmic.iiop.constraint.25=\ - \u30af\u30e9\u30b9 {0} \u306f\u30e1\u30bd\u30c3\u30c9 {1} \u306b\u4e0d\u6b63\u306a\u5f15\u6570\u578b\u3092\u542b\u3093\u3067\u3044\u307e\u3059\u3002 -rmic.iiop.constraint.26=\ - {0} \u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3067\u304d\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.27=\ - \u30af\u30e9\u30b9 {0} \u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3002 -rmic.iiop.constraint.28=\ - {0} \u306f\u30ea\u30e2\u30fc\u30c8\u5b9f\u88c5\u30af\u30e9\u30b9\u3067\u3042\u308a\u3001{1} \u306e\u30c7\u30fc\u30bf\u30e1\u30f3\u30d0\u30fc\u3068\u3057\u3066\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +rmic.iiop.constraint.1={0}\u306F\u4E0D\u6B63\u306A\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002java.rmi.Remote\u304B\u3089\u306F\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.2=\u30AF\u30E9\u30B9{0}\u306EserialPersistentFields\u914D\u5217\u306F\u4E0D\u6B63\u3067\u3059\u3002\u5B58\u5728\u3057\u306A\u3044\u30E1\u30F3\u30D0\u30FC\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002 +rmic.iiop.constraint.3={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002{1}\u306F\u6B63\u3057\u3044\u30D7\u30EA\u30DF\u30C6\u30A3\u30D6\u307E\u305F\u306FString\u5B9A\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.4={0}\u306F\u4E0D\u6B63\u306A\u5024\u3067\u3059\u3002serialPersistentFields\u306Fprivate static final\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +rmic.iiop.constraint.5={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9{1}\u306FRemoteException\u307E\u305F\u306FRemoteException\u306E\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u3092\u30B9\u30ED\u30FC\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +rmic.iiop.constraint.6={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u7D99\u627F\u3055\u308C\u305F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{1}\u3082\u4E21\u65B9\u30E1\u30BD\u30C3\u30C9{2}\u3092\u5BA3\u8A00\u3057\u3066\u3044\u307E\u3059\u3002 +rmic.iiop.constraint.7={0}\u306F\u4E0D\u6B63\u306A\u578B\u3067\u3059\u3002{1}\u306F\u7279\u5225\u306A\u5834\u5408\u306B\u306E\u307F\u7570\u306A\u308A\u307E\u3059\u3002 +rmic.iiop.constraint.8={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u5B9F\u88C5\u3067\u3059\u3002\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u6301\u3063\u3066\u3044\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.9=\u30AF\u30E9\u30B9{1}\u306EserialPersistentFields\u914D\u5217\u30E1\u30F3\u30D0\u30FC{0}\u306F\u4E0D\u6B63\u3067\u3059\u3002\u578B\u304C\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30F3\u30D0\u30FC\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.10={0}\u306F\u4E0D\u6B63\u306A\u5024\u3067\u3059\u3002java.rmi.Remote\u3092\u5B9F\u88C5\u3057\u307E\u3059\u3002 +rmic.iiop.constraint.11={0}\u306F\u4E0D\u6B63\u306A\u5024\u3067\u3059\u3002java.io.Serializable\u3092\u5B9F\u88C5\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.12={0}\u306F\u4E0D\u6B63\u306A\u5024\u3067\u3059\u3002\u4E0D\u6B63\u306A\u89AA\u3067\u3059\u3002 +rmic.iiop.constraint.13={0}\u306F\u4E0D\u6B63\u306A\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9{1}\u306Eidl\u540D\u304C\u4ED6\u306E\u30E1\u30BD\u30C3\u30C9\u3068\u7AF6\u5408\u3057\u307E\u3059\u3002 +rmic.iiop.constraint.14={0}\u306F\u4E0D\u6B63\u306Aabstract\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.15={0}\u306F\u4E0D\u6B63\u306Aabstract\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002java.rmi.Remote\u3092\u5B9F\u88C5\u3057\u3066\u3044\u307E\u3059\u3002 +rmic.iiop.constraint.16={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.17={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u5B9F\u88C5\u3067\u3059\u3002\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.18={0}\u306F\u4E0D\u6B63\u306A\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9{1}\u306Forg.omg.CORBA.portable.IDLEntity\u3092\u5B9F\u88C5\u3059\u308B\u4F8B\u5916\u3092\u6E21\u3057\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.19={0}\u306F\u4E0D\u6B63\u306A\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u5B9A\u6570{1}\u306Eidl\u540D\u304C\u4ED6\u306E\u5B9A\u6570\u3068\u7AF6\u5408\u3057\u307E\u3059\u3002 +rmic.iiop.constraint.20={0}\u306F\u4E0D\u6B63\u306A\u30AF\u30E9\u30B9\u3067\u3059\u3002\u30E1\u30F3\u30D0\u30FC{1}\u306Eidl\u540D\u304C\u4ED6\u306E\u30E1\u30F3\u30D0\u30FC\u3068\u7AF6\u5408\u3057\u307E\u3059\u3002 +rmic.iiop.constraint.21={0}\u306F\u30EA\u30E2\u30FC\u30C8\u5B9F\u88C5\u30AF\u30E9\u30B9\u3067\u3042\u308A\u3001{1}\u306E\u30E1\u30BD\u30C3\u30C9\u5F15\u6570\u307E\u305F\u306F\u623B\u308A\u5024\u306E\u578B\u3068\u3057\u3066\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.22=\u5185\u90E8\u969C\u5BB3: (\u30E1\u30BD\u30C3\u30C9)\u4F8B\u5916{0}\u306F\u30AF\u30E9\u30B9\u578B\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.23=\u5185\u90E8\u969C\u5BB3: (\u30E1\u30BD\u30C3\u30C9)\u306F{0}\u306Enull\u30DD\u30A4\u30F3\u30BF\u4F8B\u5916\u3092\u6355\u6349\u3057\u307E\u3057\u305F\u3002 +rmic.iiop.constraint.24=\u30AF\u30E9\u30B9{0}\u306F\u4E0D\u6B63\u306A\u623B\u308A\u5024\u306E\u578B\u3092\u542B\u3093\u3067\u3044\u307E\u3059\u3002 +rmic.iiop.constraint.25=\u30AF\u30E9\u30B9{0}\u306F\u30E1\u30BD\u30C3\u30C9{1}\u306B\u4E0D\u6B63\u306A\u5F15\u6570\u578B\u3092\u542B\u3093\u3067\u3044\u307E\u3059\u3002 +rmic.iiop.constraint.26={0}\u3092\u30B3\u30F3\u30D1\u30A4\u30EB\u3067\u304D\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.27=\u30AF\u30E9\u30B9{0}\u3092\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093\u3002 +rmic.iiop.constraint.28={0}\u306F\u30EA\u30E2\u30FC\u30C8\u5B9F\u88C5\u30AF\u30E9\u30B9\u3067\u3042\u308A\u3001{1}\u306E\u30C7\u30FC\u30BF\u30FB\u30E1\u30F3\u30D0\u30FC\u3068\u3057\u3066\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002 diff --git a/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_zh_CN.properties b/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_zh_CN.properties index a97142bac34..db847f5a79b 100644 --- a/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_zh_CN.properties +++ b/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_zh_CN.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1996, 2010, 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 @@ -71,152 +71,80 @@ generator.env.iiop=sun.rmi.rmic.iiop.BatchEnvironment generator.env.idl=sun.rmi.rmic.iiop.BatchEnvironment generator.env.xprint=sun.rmi.rmic.iiop.BatchEnvironment -rmic.usage=\u7528\u6cd5\uff1a{0} <\u9009\u9879> <\u7c7b\u540d\u79f0>\ -\n\ -\n\u5176\u4e2d <\u9009\u9879> \u5305\u62ec\uff1a\ -\n -keep \u4e0d\u5220\u9664\u4e2d\u95f4\u751f\u6210\u7684\u6e90\u6587\u4ef6\ -\n -keepgenerated\uff08\u4e0e "-keep" \u76f8\u540c\uff09\ -\n -v1.1 \u521b\u5efa 1.1 \u5b58\u6839\u534f\u8bae\u7248\u672c\u7684\u5b58\u6839/\u6846\u67b6\ -\n -vcompat \u521b\u5efa\u4e0e 1.1 \u548c 1.2 \u5b58\u6839\u534f\u8bae\u7248\u672c\u90fd\u517c\u5bb9\u7684\ -\n \u5b58\u6839/\u6846\u67b6\ -\n -v1.2 \uff08\u9ed8\u8ba4\u503c\uff09\u4ec5\u521b\u5efa 1.2 \u5b58\u6839\u534f\u8bae\u7248\u672c\u7684\u5b58\u6839\ -\n -iiop \u521b\u5efa IIOP \u7684\u5b58\u6839\u3002\u4f7f\u7528\u6b64\u9009\u9879\u65f6\uff0c<\u9009\u9879> \u8fd8\u5305\u62ec\uff1a\ -\n\ -\n -always \u5373\u4f7f\u5f53\u524d\u663e\u793a\u5b58\u6839\uff0c\u4ecd\u521b\u5efa\u5b83\u4eec\ -\n -alwaysgenerate \uff08\u4e0e "-always" \u76f8\u540c\uff09\ -\n -nolocalstubs \u4e0d\u521b\u5efa\u4e3a\u76f8\u540c\u8fdb\u7a0b\u4f18\u5316\u7684\u5b58\u6839\ -\n\ -\n -idl \u521b\u5efa IDL\u3002\u4f7f\u7528\u6b64\u9009\u9879\u65f6\uff0c<\u9009\u9879> \u8fd8\u5305\u62ec\uff1a\ -\n\ -\n -noValueMethods \u4e0d\u751f\u6210 valuetypes \u7684\u65b9\u6cd5\ -\n -always \u5373\u4f7f\u5f53\u524d\u663e\u793a IDL\uff0c\u4ecd\u521b\u5efa\u5b83\ -\n -alwaysgenerate \uff08\u4e0e "-always" \u76f8\u540c\uff09\ -\n\ -\n -g \u751f\u6210\u8c03\u8bd5\u4fe1\u606f\ -\n -nowarn \u4e0d\u751f\u6210\u4efb\u4f55\u8b66\u544a\ -\n -nowrite \u4e0d\u5411\u6587\u4ef6\u7cfb\u7edf\u5199\u5165\u7f16\u8bd1\u7684\u7c7b\ -\n -verbose \u8f93\u51fa\u6709\u5173\u7f16\u8bd1\u5668\u6b63\u5728\u6267\u884c\u7684\u64cd\u4f5c\u7684\u6d88\u606f\ -\n -classpath <\u8def\u5f84> \u6307\u5b9a\u67e5\u627e\u8f93\u5165\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\ -\n -bootclasspath <\u8def\u5f84> \u8986\u76d6\u5f15\u5bfc\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\ -\n -extdirs <\u8def\u5f84> \u8986\u76d6\u5b89\u88c5\u7684\u6269\u5c55\u76ee\u5f55\u7684\u4f4d\u7f6e\ -\n -d <\u76ee\u5f55> \u6307\u5b9a\u5b58\u653e\u751f\u6210\u7684\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\ -\n -J <\u8fd0\u884c\u65f6\u6807\u5fd7> \u5411 java \u89e3\u91ca\u7a0b\u5e8f\u4f20\u9012\u53c2\u6570\ -\n +rmic.usage=\u7528\u6CD5: {0} \n\n\u5176\u4E2D, \u5305\u62EC:\n -keep \u4E0D\u5220\u9664\u4E34\u65F6\u751F\u6210\u7684\u6E90\u6587\u4EF6\n -keepgenerated (\u4E0E "-keep" \u76F8\u540C)\n -v1.1 \u521B\u5EFA 1.1 \u5B58\u6839\u534F\u8BAE\u7248\u672C\u7684\u5B58\u6839/\u9AA8\u67B6\n -vcompat \u521B\u5EFA\u4E0E 1.1 \u548C 1.2 \u5B58\u6839\u534F\u8BAE\u7248\u672C\n \u90FD\u517C\u5BB9\u7684\u5B58\u6839/\u9AA8\u67B6\n -v1.2 (\u9ED8\u8BA4\u503C) \u4EC5\u521B\u5EFA 1.2 \u5B58\u6839\u534F\u8BAE\u7248\u672C\u7684\u5B58\u6839\n -iiop \u521B\u5EFA IIOP \u7684\u5B58\u6839\u3002\u5982\u679C\u63D0\u4F9B, \u8FD8\u5305\u62EC:\n\n -always \u521B\u5EFA\u5B58\u6839 (\u5373\u4F7F\u5F53\u524D\u663E\u793A)\n -alwaysgenerate (\u4E0E "-always" \u76F8\u540C)\n -nolocalstubs \u4E0D\u521B\u5EFA\u5BF9\u76F8\u540C\u8FDB\u7A0B\u4F18\u5316\u7684\u5B58\u6839\n\n -idl \u521B\u5EFA IDL\u3002\u5982\u679C\u63D0\u4F9B, \u8FD8\u5305\u62EC:\n\n -noValueMethods \u4E0D\u4E3A valuetype \u751F\u6210\u65B9\u6CD5\n -always \u521B\u5EFA IDL (\u5373\u4F7F\u5F53\u524D\u663E\u793A)\n -alwaysgenerate (\u4E0E "-always" \u76F8\u540C)\n\n -g \u751F\u6210\u8C03\u8BD5\u4FE1\u606F\n -nowarn \u4E0D\u751F\u6210\u4EFB\u4F55\u8B66\u544A\n -nowrite \u4E0D\u5C06\u7F16\u8BD1\u7684\u7C7B\u5199\u5165\u6587\u4EF6\u7CFB\u7EDF\n -verbose \u8F93\u51FA\u6709\u5173\u7F16\u8BD1\u5668\u6B63\u5728\u6267\u884C\u7684\u64CD\u4F5C\u7684\u6D88\u606F\n -classpath \u6307\u5B9A\u67E5\u627E\u8F93\u5165\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n -bootclasspath \u8986\u76D6\u5F15\u5BFC\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n -extdirs \u8986\u76D6\u6240\u5B89\u88C5\u6269\u5C55\u7684\u4F4D\u7F6E\n -d \u6307\u5B9A\u653E\u7F6E\u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n -J \u5C06\u53C2\u6570\u4F20\u9012\u7ED9 java \u89E3\u91CA\u5668\n # # Generic Messages # -rmic.cant.read=\u65e0\u6cd5\u8bfb\u53d6\uff1a{0} -rmic.cant.write=\u65e0\u6cd5\u5199\u5165\uff1a{0} -rmic.option.unsupported=\u4e0d\u518d\u652f\u6301 {0} \u9009\u9879\u3002 -rmic.option.unimplemented=\u4ecd\u672a\u5b9e\u73b0 {0} \u9009\u9879\u3002 -rmic.option.already.seen={0} \u9009\u9879\u53ea\u80fd\u88ab\u6307\u5b9a\u4e00\u6b21\u3002 -rmic.option.requires.argument=\u9009\u9879 {0} \u9700\u8981\u53c2\u6570\u3002 -rmic.no.such.directory={0} \u76ee\u5f55\u4e0d\u5b58\u5728\u3002 -rmic.no.such.option={0} \u4e3a\u65e0\u6548\u9009\u9879\u6216\u53c2\u6570\u3002 -rmic.wrote=[\u5df2\u5199\u5165 {0}] -rmic.errors={0} \u4e2a\u9519\u8bef -rmic.1error=1 \u4e2a\u9519\u8bef -rmic.warnings={0} \u4e2a\u8b66\u544a -rmic.1warning=1 \u4e2a\u8b66\u544a -rmic.done_in=[\u5728 {0} \u6beb\u79d2\u5185\u5b8c\u6210] -rmic.no.memory=\ - \u7f16\u8bd1\u5668\u6240\u7528\u5185\u5b58\u4e0d\u8db3\u3002\u8bf7\u8003\u8651\u4f7f\u7528\u201c-J-Xmx<\u5927\u5c0f>\u201d\u547d\u4ee4\u884c\u9009\u9879\u6765\u589e\u52a0\u5806\u5927\u5c0f\u7684\u6700\u5927\u503c\u3002 -rmic.stack.overflow=\ - \u7f16\u8bd1\u5668\u6240\u7528\u5806\u6808\u7a7a\u95f4\u4e0d\u8db3\u3002\u8bf7\u8003\u8651\u4f7f\u7528\u201c-J-Xss<\u5927\u5c0f>\u201d\u547d\u4ee4\u884c\u9009\u9879\u6765\u589e\u52a0\u5206\u914d\u7ed9 Java \u5806\u6808\u7684\u5185\u5b58\u5927\u5c0f\u3002 -rmic.class.not.found=\ - \u672a\u627e\u5230\u7c7b {0}\u3002 -rmic.missing.property=\u7f3a\u5c11\u5c5e\u6027 generator.class.{0} -rmic.cannot.instantiate=\u65e0\u6cd5\u5b9e\u4f8b\u5316\u7c7b {0} -rmic.cannot.use.both=\u65e0\u6cd5\u540c\u65f6\u4f7f\u7528 {0} \u548c {1} -rmic.resource.not.found=\u672a\u627e\u5230 {0}\u3002 -rmic.no.output.dir=\ - \u65e0\u6cd5\u627e\u5230\u9002\u7528\u4e8e {0} \u7684\u8f93\u51fa\u76ee\u5f55\u3002\u8bf7\u4f7f\u7528 -d \u9009\u9879\u6765\u6307\u5b9a\u6839\u76ee\u5f55\u3002 -rmic.cannot.create.dir=\ - \u65e0\u6cd5\u521b\u5efa\u8f93\u51fa\u76ee\u5f55 {0}\u3002 +rmic.cant.read=\u65E0\u6CD5\u8BFB\u53D6: {0} +rmic.cant.write=\u65E0\u6CD5\u5199\u5165: {0} +rmic.option.unsupported=\u4E0D\u518D\u652F\u6301{0}\u9009\u9879\u3002 +rmic.option.unimplemented=\u5C1A\u672A\u5B9E\u73B0{0}\u9009\u9879\u3002 +rmic.option.already.seen={0}\u9009\u9879\u53EA\u80FD\u6307\u5B9A\u4E00\u6B21\u3002 +rmic.option.requires.argument=\u9009\u9879{0}\u9700\u8981\u53C2\u6570\u3002 +rmic.no.such.directory={0} \u76EE\u5F55\u4E0D\u5B58\u5728\u3002 +rmic.no.such.option={0}\u662F\u65E0\u6548\u9009\u9879\u6216\u53C2\u6570\u3002 +rmic.wrote=[\u5DF2\u5199\u5165{0}] +rmic.errors={0} \u4E2A\u9519\u8BEF +rmic.1error=1 \u4E2A\u9519\u8BEF +rmic.warnings={0} \u4E2A\u8B66\u544A +rmic.1warning=1 \u4E2A\u8B66\u544A +rmic.done_in=[\u5728 {0} \u6BEB\u79D2\u5185\u5B8C\u6210] +rmic.no.memory=\u7F16\u8BD1\u5668\u6240\u7528\u5185\u5B58\u4E0D\u8DB3\u3002\u8BF7\u8003\u8651\u4F7F\u7528 "-J-Xmx" \u547D\u4EE4\u884C\u9009\u9879\u6765\u589E\u52A0\u5806\u5927\u5C0F\u7684\u6700\u5927\u503C\u3002 +rmic.stack.overflow=\u7F16\u8BD1\u5668\u6240\u7528\u5806\u6808\u7A7A\u95F4\u4E0D\u8DB3\u3002\u8BF7\u8003\u8651\u4F7F\u7528 "-J-Xss" \u547D\u4EE4\u884C\u9009\u9879\u6765\u589E\u52A0\u5206\u914D\u7ED9 Java \u5806\u6808\u7684\u5185\u5B58\u5927\u5C0F\u3002 +rmic.class.not.found=\u627E\u4E0D\u5230\u7C7B{0}\u3002 +rmic.missing.property=\u7F3A\u5C11\u5C5E\u6027 generator.class.{0} +rmic.cannot.instantiate=\u65E0\u6CD5\u5B9E\u4F8B\u5316\u7C7B{0} +rmic.cannot.use.both=\u4E0D\u80FD\u540C\u65F6\u4F7F\u7528{0}\u548C{1} +rmic.resource.not.found=\u627E\u4E0D\u5230{0}\u3002 +rmic.no.output.dir=\u65E0\u6CD5\u627E\u5230\u9002\u7528\u4E8E{0}\u7684\u8F93\u51FA\u76EE\u5F55\u3002\u8BF7\u4F7F\u7528 -d \u9009\u9879\u6765\u6307\u5B9A\u6839\u76EE\u5F55\u3002 +rmic.cannot.create.dir=\u65E0\u6CD5\u521B\u5EFA\u8F93\u51FA\u76EE\u5F55 {0}\u3002 # # JRMP Messages # -rmic.cant.make.stubs.for.interface=\ - {0} \u662f\u63a5\u53e3\uff1b\u4ec5\u8fdc\u7a0b\u5bf9\u8c61\u7c7b\u9700\u8981\u5b58\u6839\u3002 -rmic.must.implement.remote=\ - \u7c7b {0} \u4e0d\u5b9e\u73b0\u6269\u5c55 java.rmi.Remote \u7684\u63a5\u53e3\uff1b\u4ec5\u8fdc\u7a0b\u5bf9\u8c61\u9700\u8981\u5b58\u6839\u548c\u6846\u67b6\u3002 -rmic.must.implement.remote.directly=\ - \u4ec5\u76f4\u63a5\u5b9e\u73b0\u6269\u5c55 java.rmi.Remote \u7684\u63a5\u53e3\u7684\u7c7b\u9700\u8981\u5b58\u6839\uff1b\u7c7b {0} \u4e0d\u76f4\u63a5\u5b9e\u73b0\u8fdc\u7a0b\u63a5\u53e3\u3002 -rmic.must.throw.remoteexception=\ - {0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u63a5\u53e3\uff1a\u65b9\u6cd5 {1} \u5fc5\u987b\u629b\u51fa java.rmi.RemoteException\u3002 -rmic.must.only.throw.exception=\ - \u65b9\u6cd5 {0} \u4e0d\u662f\u6709\u6548\u7684\u8fdc\u7a0b\u65b9\u6cd5\u5b9e\u73b0\uff0c\u56e0\u4e3a\u5b83\u629b\u51fa\u4e86 {1}\uff1b\u8fdc\u7a0b\u65b9\u6cd5\u5b9e\u73b0\u53ea\u53ef\u80fd\u629b\u51fa java.lang.Exception \u6216\u5176\u5b50\u7c7b\u3002 -warn.rmic.tie.found=\ - \u5bf9\u4e8e\u7c7b {0}\uff0c\u5b58\u5728 IIOP "tie"\uff1a\ - \n {1}\ - \n\u5982\u679c\u4f7f\u7528 PortableRemoteObject.exportObject\uff0c\u5219\u5e94\u8be5\u5220\u9664\u6b64\u6587\u4ef6\uff0c\u5426\u5219\uff0c\u60a8\u7684\u670d\u52a1\u5668\u5bf9\u8c61\u5c06\u4f1a\u88ab\u5bfc\u51fa\u5230 IIOP \u800c\u975e JRMP\u3002 +rmic.cant.make.stubs.for.interface={0}\u662F\u63A5\u53E3; \u4EC5\u8FDC\u7A0B\u5BF9\u8C61\u7C7B\u9700\u8981\u5B58\u6839\u3002 +rmic.must.implement.remote=\u7C7B{0}\u4E0D\u5B9E\u73B0\u6269\u5C55 java.rmi.Remote \u7684\u63A5\u53E3; \u4EC5\u8FDC\u7A0B\u5BF9\u8C61\u9700\u8981\u5B58\u6839\u548C\u6846\u67B6\u3002 +rmic.must.implement.remote.directly=\u4EC5\u76F4\u63A5\u5B9E\u73B0\u6269\u5C55 java.rmi.Remote \u7684\u63A5\u53E3\u7684\u7C7B\u9700\u8981\u5B58\u6839; \u7C7B{0}\u4E0D\u76F4\u63A5\u5B9E\u73B0\u8FDC\u7A0B\u63A5\u53E3\u3002 +rmic.must.throw.remoteexception={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: \u65B9\u6CD5{1}\u5FC5\u987B\u629B\u51FA java.rmi.RemoteException\u3002 +rmic.must.only.throw.exception=\u65B9\u6CD5{0}\u4E0D\u662F\u6709\u6548\u7684\u8FDC\u7A0B\u65B9\u6CD5\u5B9E\u73B0, \u56E0\u4E3A\u5B83\u629B\u51FA\u4E86{1}; \u8FDC\u7A0B\u65B9\u6CD5\u5B9E\u73B0\u53EA\u53EF\u80FD\u629B\u51FA java.lang.Exception \u6216\u5176\u5B50\u7C7B\u3002 +warn.rmic.tie.found=\u5BF9\u4E8E\u7C7B{0}, \u5B58\u5728 IIOP "tie":\n {1}\n\u5982\u679C\u4F7F\u7528 PortableRemoteObject.exportObject, \u5219\u5E94\u8BE5\u5220\u9664\u6B64\u6587\u4EF6, \u5426\u5219, \u60A8\u7684\u670D\u52A1\u5668\u5BF9\u8C61\u5C06\u4F1A\u5BFC\u51FA\u5230 IIOP \u800C\u975E JRMP\u3002 # # RMI-IIOP Messages # -rmic.generated=[\u5728 {1} \u6beb\u79d2\u5185\u751f\u6210\u7684 {0}] -rmic.previously.generated=[\u4ee5\u524d\u751f\u6210\u7684\u6587\u4ef6 {0} \u4e3a\u5f53\u524d\u6587\u4ef6] -warn.rmic.member.not.mapped=\ -\u7c7b {1} \u7684\u6570\u636e\u6210\u5458 {0} \u672a\u6620\u5c04\u5230 IDL\u3002 +rmic.generated=[\u5728 {1} \u6BEB\u79D2\u5185\u751F\u6210{0}] +rmic.previously.generated=[\u4EE5\u524D\u751F\u6210\u7684\u6587\u4EF6{0}\u4E3A\u5F53\u524D\u6587\u4EF6] +warn.rmic.member.not.mapped=\u7C7B{1}\u7684\u6570\u636E\u6210\u5458{0}\u672A\u6620\u5C04\u5230 IDL\u3002 -rmic.iiop.constraint.1=\ -{0} \u4e0d\u662f\u6709\u6548\u63a5\u53e3\uff1a\u6ca1\u6709\u4ece java.rmi.Remote \u7ee7\u627f\u3002 -rmic.iiop.constraint.2=\ -\u7c7b {0} \u7684 serialPersistentFields \u6570\u7ec4\u65e0\u6548\uff1a\u5f15\u7528\u4e86\u4e0d\u5b58\u5728\u7684\u6210\u5458\u3002 -rmic.iiop.constraint.3=\ -{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u63a5\u53e3\uff1a{1} \u4e0d\u662f\u6709\u6548\u7684\u539f\u59cb\u6216\u5b57\u7b26\u4e32\u5e38\u91cf\u3002 -rmic.iiop.constraint.4=\ -{0} \u4e0d\u662f\u6709\u6548\u503c\uff1aserialPersistentFields \u5fc5\u987b\u4e3a\u4e13\u7528\u9759\u6001\u6700\u7ec8\u7c7b\u578b\u3002 -rmic.iiop.constraint.5=\ -{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u63a5\u53e3\uff1a\u65b9\u6cd5 {1} \u5fc5\u987b\u629b\u51fa RemoteException \u6216 RemoteException \u7684\u7236\u7c7b\u3002 -rmic.iiop.constraint.6=\ -{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u63a5\u53e3\uff1a\u7ee7\u627f\u7684\u63a5\u53e3 {1} \u5747\u58f0\u660e\u4e86\u65b9\u6cd5 {2}\u3002 -rmic.iiop.constraint.7=\ -{0} \u4e0d\u662f\u6709\u6548\u7c7b\u578b\uff1a{1} \u4ec5\u5728\u5927\u5c0f\u5199\u4e0a\u4e0d\u540c\u3002 -rmic.iiop.constraint.8=\ -{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u5b9e\u73b0\uff1a\u4e0d\u5177\u6709\u8fdc\u7a0b\u63a5\u53e3\u3002 -rmic.iiop.constraint.9=\ -\u7c7b {1} \u7684 serialPersistentFields \u6570\u7ec4\u6210\u5458 {0} \u65e0\u6548\uff1a\u7c7b\u578b\u4e0e\u58f0\u660e\u7684\u6210\u5458\u4e0d\u5339\u914d\u3002 -rmic.iiop.constraint.10=\ -{0} \u4e0d\u662f\u6709\u6548\u503c\uff1a\u5b9e\u73b0 java.rmi.Remote\u3002 -rmic.iiop.constraint.11=\ -{0} \u4e0d\u662f\u6709\u6548\u503c\uff1a\u4e0d\u5b9e\u73b0 java.io.Serializable\u3002 -rmic.iiop.constraint.12=\ -{0} \u4e0d\u662f\u6709\u6548\u503c\uff1a\u7236\u503c\u65e0\u6548\u3002 -rmic.iiop.constraint.13=\ -{0} \u4e0d\u662f\u6709\u6548\u63a5\u53e3\uff1a\u65b9\u6cd5 {1} \u7684 idl \u540d\u79f0\u4e0e\u5176\u4ed6\u65b9\u6cd5\u51b2\u7a81\u3002 -rmic.iiop.constraint.14=\ -{0} \u4e0d\u662f\u6709\u6548\u62bd\u8c61\u63a5\u53e3\uff1a\u4e0d\u662f\u63a5\u53e3\u3002 -rmic.iiop.constraint.15=\ -{0} \u4e0d\u662f\u6709\u6548\u62bd\u8c61\u63a5\u53e3\uff1a\u5b9e\u73b0 java.rmi.Remote\u3002 -rmic.iiop.constraint.16=\ -{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u63a5\u53e3\uff1a\u4e0d\u662f\u63a5\u53e3\u3002 -rmic.iiop.constraint.17=\ -{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u5b9e\u73b0\uff1a\u4e0d\u662f\u7c7b\u3002 -rmic.iiop.constraint.18=\ -{0} \u4e0d\u662f\u6709\u6548\u63a5\u53e3\uff1a\u65b9\u6cd5 {1} \u4e0d\u80fd\u4f20\u9012\u5b9e\u73b0 org.omg.CORBA.portable.IDLEntity \u7684\u5f02\u5e38\u3002 -rmic.iiop.constraint.19=\ -{0} \u4e0d\u662f\u6709\u6548\u63a5\u53e3\uff1a\u5e38\u91cf {1} \u7684 idl \u540d\u79f0\u4e0e\u5176\u4ed6\u5e38\u91cf\u51b2\u7a81\u3002 -rmic.iiop.constraint.20=\ -{0} \u4e0d\u662f\u6709\u6548\u7c7b\uff1a\u6210\u5458 {1} \u7684 idl \u540d\u79f0\u4e0e\u5176\u4ed6\u6210\u5458\u51b2\u7a81\u3002 -rmic.iiop.constraint.21=\ -{0} \u662f\u8fdc\u7a0b\u5b9e\u73b0\u7c7b\u5e76\u4e14\u4e0d\u80fd\u7528\u4f5c {1} \u4e2d\u7684\u65b9\u6cd5\u53c2\u6570\u6216\u8fd4\u56de\u7c7b\u578b\u3002 -rmic.iiop.constraint.22=\ -\u5185\u90e8\u5931\u8d25\uff1a\uff08\u65b9\u6cd5\uff09\u5f02\u5e38 {0} \u4e0d\u662f\u7c7b\u7c7b\u578b\u3002 -rmic.iiop.constraint.23=\ -\u5185\u90e8\u5931\u8d25\uff1a\uff08\u65b9\u6cd5\uff09\u6355\u6349\u5230 {0} \u7684\u7a7a\u6307\u9488\u5f02\u5e38\u3002 -rmic.iiop.constraint.24=\ -\u7c7b {0} \u5305\u542b\u65e0\u6548\u8fd4\u56de\u7c7b\u578b\u3002 -rmic.iiop.constraint.25=\ -\u7c7b {0} \u5305\u542b\u65b9\u6cd5 {1} \u4e2d\u7684\u65e0\u6548\u53c2\u6570\u7c7b\u578b\u3002 -rmic.iiop.constraint.26=\ -\u65e0\u6cd5\u7f16\u8bd1 {0}\u3002 -rmic.iiop.constraint.27=\ -\u65e0\u6cd5\u88c5\u5165\u7c7b {0}\u3002 -rmic.iiop.constraint.28=\ -{0} \u662f\u8fdc\u7a0b\u5b9e\u73b0\u7c7b\u5e76\u4e14\u65e0\u6cd5\u7528\u4f5c {1} \u4e2d\u7684\u6570\u636e\u6210\u5458\u3002 +rmic.iiop.constraint.1={0}\u4E0D\u662F\u6709\u6548\u63A5\u53E3: \u6CA1\u6709\u4ECE java.rmi.Remote \u7EE7\u627F\u3002 +rmic.iiop.constraint.2=\u7C7B{0}\u7684 serialPersistentFields \u6570\u7EC4\u65E0\u6548: \u5F15\u7528\u4E86\u4E0D\u5B58\u5728\u7684\u6210\u5458\u3002 +rmic.iiop.constraint.3={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: {1}\u4E0D\u662F\u6709\u6548\u7684\u57FA\u5143\u6216\u5B57\u7B26\u4E32\u5E38\u91CF\u3002 +rmic.iiop.constraint.4={0}\u4E0D\u662F\u6709\u6548\u503C: serialPersistentFields \u5FC5\u987B\u4E3A\u4E13\u7528\u9759\u6001\u6700\u7EC8\u7C7B\u578B\u3002 +rmic.iiop.constraint.5={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: \u65B9\u6CD5{1}\u5FC5\u987B\u629B\u51FA RemoteException \u6216 RemoteException \u7684\u8D85\u7C7B\u3002 +rmic.iiop.constraint.6={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: \u7EE7\u627F\u7684\u63A5\u53E3{1}\u5747\u58F0\u660E\u4E86\u65B9\u6CD5{2}\u3002 +rmic.iiop.constraint.7={0}\u4E0D\u662F\u6709\u6548\u7C7B\u578B: {1}\u4EC5\u5728\u5927\u5C0F\u5199\u4E0A\u4E0D\u540C\u3002 +rmic.iiop.constraint.8={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u5B9E\u73B0: \u4E0D\u5177\u6709\u8FDC\u7A0B\u63A5\u53E3\u3002 +rmic.iiop.constraint.9=\u7C7B{1}\u7684 serialPersistentFields \u6570\u7EC4\u6210\u5458{0}\u65E0\u6548: \u7C7B\u578B\u4E0E\u58F0\u660E\u7684\u6210\u5458\u4E0D\u5339\u914D\u3002 +rmic.iiop.constraint.10={0}\u4E0D\u662F\u6709\u6548\u503C: \u5B9E\u73B0 java.rmi.Remote\u3002 +rmic.iiop.constraint.11={0}\u4E0D\u662F\u6709\u6548\u503C: \u4E0D\u5B9E\u73B0 java.io.Serializable\u3002 +rmic.iiop.constraint.12={0}\u4E0D\u662F\u6709\u6548\u503C: \u7236\u7EA7\u65E0\u6548\u3002 +rmic.iiop.constraint.13={0}\u4E0D\u662F\u6709\u6548\u63A5\u53E3: \u65B9\u6CD5{1}\u7684 idl \u540D\u79F0\u4E0E\u5176\u4ED6\u65B9\u6CD5\u51B2\u7A81\u3002 +rmic.iiop.constraint.14={0}\u4E0D\u662F\u6709\u6548\u62BD\u8C61\u63A5\u53E3: \u4E0D\u662F\u63A5\u53E3\u3002 +rmic.iiop.constraint.15={0}\u4E0D\u662F\u6709\u6548\u62BD\u8C61\u63A5\u53E3: \u5B9E\u73B0 java.rmi.Remote\u3002 +rmic.iiop.constraint.16={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: \u4E0D\u662F\u63A5\u53E3\u3002 +rmic.iiop.constraint.17={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u5B9E\u73B0: \u4E0D\u662F\u7C7B\u3002 +rmic.iiop.constraint.18={0}\u4E0D\u662F\u6709\u6548\u63A5\u53E3: \u65B9\u6CD5{1}\u4E0D\u80FD\u4F20\u9012\u5B9E\u73B0 org.omg.CORBA.portable.IDLEntity \u7684\u5F02\u5E38\u9519\u8BEF\u3002 +rmic.iiop.constraint.19={0}\u4E0D\u662F\u6709\u6548\u63A5\u53E3: \u5E38\u91CF{1}\u7684 idl \u540D\u79F0\u4E0E\u5176\u4ED6\u5E38\u91CF\u51B2\u7A81\u3002 +rmic.iiop.constraint.20={0}\u4E0D\u662F\u6709\u6548\u7C7B: \u6210\u5458{1}\u7684 idl \u540D\u79F0\u4E0E\u5176\u4ED6\u6210\u5458\u51B2\u7A81\u3002 +rmic.iiop.constraint.21={0}\u662F\u8FDC\u7A0B\u5B9E\u73B0\u7C7B\u5E76\u4E14\u4E0D\u80FD\u7528\u4F5C{1}\u4E2D\u7684\u65B9\u6CD5\u53C2\u6570\u6216\u8FD4\u56DE\u7C7B\u578B\u3002 +rmic.iiop.constraint.22=\u5185\u90E8\u5931\u8D25: (\u65B9\u6CD5) \u5F02\u5E38\u9519\u8BEF{0}\u4E0D\u662F\u7C7B\u7C7B\u578B\u3002 +rmic.iiop.constraint.23=\u5185\u90E8\u5931\u8D25: (\u65B9\u6CD5) \u6355\u83B7\u5230{0}\u7684\u7A7A\u503C\u6307\u9488\u5F02\u5E38\u9519\u8BEF\u3002 +rmic.iiop.constraint.24=\u7C7B{0}\u5305\u542B\u65E0\u6548\u8FD4\u56DE\u7C7B\u578B\u3002 +rmic.iiop.constraint.25=\u7C7B{0}\u5305\u542B\u65B9\u6CD5{1}\u4E2D\u7684\u65E0\u6548\u53C2\u6570\u7C7B\u578B\u3002 +rmic.iiop.constraint.26=\u65E0\u6CD5\u7F16\u8BD1{0}\u3002 +rmic.iiop.constraint.27=\u65E0\u6CD5\u52A0\u8F7D\u7C7B{0}\u3002 +rmic.iiop.constraint.28={0}\u662F\u8FDC\u7A0B\u5B9E\u73B0\u7C7B\u5E76\u4E14\u65E0\u6CD5\u7528\u4F5C{1}\u4E2D\u7684\u6570\u636E\u6210\u5458\u3002 diff --git a/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties b/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties index ee17f716c92..0d185f3ac2a 100644 --- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties +++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1998, 2005, 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 @@ -25,109 +25,72 @@ # # "rmid", inetd", and "wait" should not be translated. -rmid.syntax.exec.invalid=\ - rmid wurde mit einem ung\u00fcltigen Status (muss wait sein) von inetd gestartet +rmid.syntax.exec.invalid=rmid wurde mit einem ung\u00FCltigen Status (muss "wait" sein) von inetd gestartet # "rmid" and "inetd" should not be translated. -rmid.syntax.port.badarg=\ - Der Port kann nicht angegeben werden, wenn rmid von inetd gestartet wird +rmid.syntax.port.badarg=Port kann nicht angegeben werden, wenn rmid von inetd gestartet wird # "port" here refers to a TCP port for the server to listen on. -rmid.syntax.port.badnumber=\ - Port ist keine Zahl +rmid.syntax.port.badnumber=Port ist keine Zahl # "-port" should not be translated, because it's part of command syntax. -rmid.syntax.port.missing=\ - F\u00fcr Option -port ist ein Argument erforderlich. +rmid.syntax.port.missing=F\u00FCr Option -port ist ein Argument erforderlich # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.missing=\ - F\u00fcr Option -log ist ein Argument erforderlich. +rmid.syntax.log.missing=F\u00FCr Option -log ist ein Argument erforderlich # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.required=\ - Die Option -log ist erforderlich. +rmid.syntax.log.required=Option -log ist erforderlich # {0} = the (string) illegal argument in question -rmid.syntax.illegal.option=\ -Unzul\u00e4ssige Option: {0} +rmid.syntax.illegal.option=Ung\u00FCltige Option: {0} # {0} = the (string) reason text that came with a thrown exception # "Activation.main" should not be translated, because it's a codepoint -rmid.unexpected.exception=\ - Activation.main: Es ist eine Ausnahme aufgetreten: {0} +rmid.unexpected.exception=Activation.main: Es ist eine Ausnahme aufgetreten: {0} # "java.home" should not be translated, because it's a property name # "ActivatorImpl" should not be translated, because it's a codepoint -rmid.unfound.java.home.property=\ - ActivatorImpl: java.home konnte nicht gefunden werden. +rmid.unfound.java.home.property=ActivatorImpl: java.home konnte nicht gefunden werden # "rmid" should not be translated -rmid.inherited.channel.info=\ - rmid-Start mit \u00fcbernommenem Kanal +rmid.inherited.channel.info=rmid-Start mit \u00FCbernommenem Kanal # "Activation.main" should not be translated, because it's a codepoint -rmid.exec.policy.invalid=\ - Activation.main: ung\u00fcltige exec-Verfahrensklasse +rmid.exec.policy.invalid=Activation.main: Ung\u00FCltige exec-Policy-Klasse # "rmid" should not be translated -rmid.exec.policy.exception=\ - rmid: Der Versuch, die exec-Richtlinie abzurufen, bewirkt: +rmid.exec.policy.exception=rmid: Versuch, die exec-Policy abzurufen, l\u00F6st Folgendes aus: # "rmid" should not be translated -rmid.exec.command=\ - rmid: debugExec: "{0}" wird ausgef\u00fchrt +rmid.exec.command=rmid: debugExec: "{0}" wird ausgef\u00FChrt # "rmid" should not be translated -rmid.group.inactive=\ - rmid: Aktivierungsgruppe inaktiv: {0} +rmid.group.inactive=rmid: Aktivierungsgruppe inaktiv: {0} # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and # "ExecOptionPermission" should not be translated, since they refer to # class/permission names. -rmid.exec.perms.inadequate=\ - Activation.main: Achtung: Systemeigenschaft sun.rmi.activation.execPolicy\n\ - nicht angegeben, und keine ExecPermissions/ExecOptionPermissions\n\ - gew\u00e4hrt; erneute Aktivierung kann wegen erfolgloser\n\ - Berechtigungspr\u00fcfungen ExecPermission/ExecOptionPermission fehlschlagen. Weitere\n\ - Dokumentation \u00fcber die Konfiguration von rmid-Sicherheit finden Sie unter:\n\ -\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n +rmid.exec.perms.inadequate=Activation.main: Warnung: Systemeigenschaft sun.rmi.activation.execPolicy\nnicht angegeben, und keine ExecPermissions/ExecOptionPermissions\nerteilt. Darauf folgende Aktivierungsversuche sind m\u00F6glicherweise aufgrund erfolgloser\nBerechtigungspr\u00FCfungen ExecPermission/ExecOptionPermission nicht erfolgreich. Weitere\nDokumentation zur Konfiguration von rmid-Sicherheit finden Sie unter:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated, # because they are syntax -rmid.usage=Syntax: {0} \ -\n\ -\nwobei folgende m\u00f6glich sind:\ -\n -port Angabe des Ports f\u00fcr rmid\ -\n -log Angabe des Verzeichnisses, in das rmid die Log-Datei schreibt\ -\n -stop Aktuellen Aufruf von rmid stoppen (f\u00fcr den angegebenen Anschluss)\ -\n -C \u00dcbergeben des Arguments an jeden untergeordneten Prozess (Aktivierungsgruppe)\ -\n -J Argument an den Java-Interpreter \u00fcbergeben\ -\n\ - +rmid.usage=Verwendung: {0} \n\nwobei folgende m\u00F6glich sind:\n -port Port f\u00FCr rmid angeben\n -log Verzeichnis, in das rmid die Logdatei schreibt, angeben\n -stop Aktuellen Aufruf von rmid stoppen (f\u00FCr den angegebenen Port)\n -C Argument an jeden untergeordneten Prozess (Aktivierungsgruppe) \u00FCbergeben\n -J Argument an den Java-Interpreter \u00FCbergeben\n # This means "The currently running activation daemon has been shut down, # and is about to exit". -rmid.daemon.shutdown=\ -Aktivierungsdaemon wird geschlossen. +rmid.daemon.shutdown=Aktivierungsdaemon heruntergefahren # "rmid" should not be translated -rmid.restart.group.warning=\ -\nrmid: (WARNUNG) Neustart der Gruppe bewirkt: +rmid.restart.group.warning=\nrmid: (WARNING) Neustart der Gruppe l\u00F6st Folgendes aus: # "rmid" should not be translated -rmid.restart.service.warning=\ -\nrmid: (WARNUNG) Neustart des Dienstes bewirkt: +rmid.restart.service.warning=\nrmid: (WARNING) Neustart des Service l\u00F6st Folgendes aus: # "rmid" should not be translated -rmid.log.update.warning=\ -\nrmid: (WARNUNG) Aktualisierung des Protokolls bewirkt: +rmid.log.update.warning=\nrmid: (WARNING) Logupdate l\u00F6st Folgendes aus: # "rmid" should not be translated -rmid.log.snapshot.warning=\ -\nrmid: (SCHWERW.) Momentaufnahme des Protokolls bewirkt: +rmid.log.snapshot.warning=\nrmid: (SEVERE) Log-Snapshot l\u00F6st Folgendes aus: # "rmid" should not be translated -rmid.log.recover.warning=\ -\nrmid: (WARNUNG) {0}: \u00dcberspringen eines Protokolleintrags bei der Wiederherstellung: +rmid.log.recover.warning=\nrmid: (WARNING) {0}: Logdatensatz wird bei Wiederherstellung \u00FCbersprungen: diff --git a/jdk/src/share/classes/sun/rmi/server/resources/rmid_es.properties b/jdk/src/share/classes/sun/rmi/server/resources/rmid_es.properties index df712b4fec4..5c6e67023df 100644 --- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_es.properties +++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_es.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1998, 2005, 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 @@ -25,109 +25,72 @@ # # "rmid", inetd", and "wait" should not be translated. -rmid.syntax.exec.invalid=\ - rmid se ha iniciado desde inetd con un estado no v\u00e1lido (debe ser wait) +rmid.syntax.exec.invalid=rmid se ha iniciado desde inetd con un estado no v\u00E1lido (debe ser wait) # "rmid" and "inetd" should not be translated. -rmid.syntax.port.badarg=\ - no se puede especificar el puerto si rmid se ha iniciado desde inetd +rmid.syntax.port.badarg=no se puede especificar el puerto si rmid se ha iniciado desde inetd # "port" here refers to a TCP port for the server to listen on. -rmid.syntax.port.badnumber=\ - el puerto no es un n\u00famero +rmid.syntax.port.badnumber=el puerto no es un n\u00FAmero # "-port" should not be translated, because it's part of command syntax. -rmid.syntax.port.missing=\ - la opci\u00f3n -port requiere un argumento +rmid.syntax.port.missing=la opci\u00F3n -port requiere un argumento # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.missing=\ - la opci\u00f3n -log requiere un argumento +rmid.syntax.log.missing=la opci\u00F3n -log requiere un argumento # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.required=\ - la opci\u00f3n -log es obligatoria +rmid.syntax.log.required=la opci\u00F3n -log es obligatoria # {0} = the (string) illegal argument in question -rmid.syntax.illegal.option=\ -opci\u00f3n no permitida: {0} +rmid.syntax.illegal.option=opci\u00F3n no permitida: {0} # {0} = the (string) reason text that came with a thrown exception # "Activation.main" should not be translated, because it's a codepoint -rmid.unexpected.exception=\ - Activation.main: ha ocurrido una excepci\u00f3n: {0} +rmid.unexpected.exception=Activation.main: se ha producido una excepci\u00F3n: {0} # "java.home" should not be translated, because it's a property name # "ActivatorImpl" should not be translated, because it's a codepoint -rmid.unfound.java.home.property=\ - ActivatorImpl: imposible encontrar java.home +rmid.unfound.java.home.property=ActivatorImpl: no se ha encontrado java.home # "rmid" should not be translated -rmid.inherited.channel.info=\ - inicio de rmid con canal heredado +rmid.inherited.channel.info=inicio de rmid con canal heredado # "Activation.main" should not be translated, because it's a codepoint -rmid.exec.policy.invalid=\ - Activation.main: Clase de norma de ejecuci\u00f3n no v\u00e1lida +rmid.exec.policy.invalid=Activation.main: clase de pol\u00EDtica de ejecuci\u00F3n no v\u00E1lida # "rmid" should not be translated -rmid.exec.policy.exception=\ - rmid: el intento de obtener la norma de ejecuci\u00f3n indica: +rmid.exec.policy.exception=rmid: el intento de obtener la pol\u00EDtica de ejecuci\u00F3n devuelve: # "rmid" should not be translated -rmid.exec.command=\ - rmid: debugExec: en ejecuci\u00f3n "{0}" +rmid.exec.command=rmid: debugExec: en ejecuci\u00F3n "{0}" # "rmid" should not be translated -rmid.group.inactive=\ - rmid: grupo de activaci\u00f3n inactivo: {0} +rmid.group.inactive=rmid: grupo de activaci\u00F3n inactivo: {0} # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and # "ExecOptionPermission" should not be translated, since they refer to # class/permission names. -rmid.exec.perms.inadequate=\ - Activation.main: advertencia: no se han especificado las propiedades del sistema sun.rmi.activation.execPolicy\n\ - y no se han concedido ExecPermissions/ExecOptionPermissions;\n\ - los intentos de activaci\u00f3n posteriores pueden fallar debido a\n\ - comprobaciones de permiso ExecPermission/ExecOptionPermission no satisfactorias. Para\n\ - obtener documentaci\u00f3n sobre c\u00f3mo configurar la seguridad rmid, rem\u00edtase a:\n\ -\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n +rmid.exec.perms.inadequate=Activation.main: advertencia: no se han especificado las propiedades del sistema sun.rmi.activation.execPolicy\ny no se han otorgado ExecPermissions/ExecOptionPermissions;\nlos intentos de activaci\u00F3n posteriores pueden fallar debido a\ncomprobaciones de permiso ExecPermission/ExecOptionPermission incorrectas. Para\nobtener documentaci\u00F3n sobre c\u00F3mo configurar la seguridad rmid, rem\u00EDtase a:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated, # because they are syntax -rmid.usage=Sintaxis: {0} \ -\n\ -\ndonde incluye:\ -\n -port Especificar puerto para uso de rmid\ -\n -log Especificar directorio en el que rmid escribir\u00e1 el registro\ -\n -stop Detener la llamada actual de rmid (para el puerto especificado)\ -\n -C Pasar argumento a cada uno de los procesos subordinados (grupo de activaci\u00f3n)\ -\n -J Pasar argumento al int\u00e9rprete de Java\ -\n\ - +rmid.usage=Sintaxis: {0} \n\ndonde incluye:\n -port Especificar puerto para uso de rmid\n -log Especificar directorio en el que rmid escribir\u00E1 el registro\n -stop Parar la llamada actual de rmid (para el puerto especificado)\n -C Pasar argumento a cada uno de los procesos secundarios (grupo de activaci\u00F3n)\n -J Pasar argumento al int\u00E9rprete de Java\n # This means "The currently running activation daemon has been shut down, # and is about to exit". -rmid.daemon.shutdown=\ -daemon de activaci\u00f3n desactivado +rmid.daemon.shutdown=daemon de activaci\u00F3n cerrado # "rmid" should not be translated -rmid.restart.group.warning=\ -\nrmid: (ADVERTENCIA) el reinicio del grupo indica: +rmid.restart.group.warning=\nrmid: (ADVERTENCIA) el reinicio del grupo devuelve: # "rmid" should not be translated -rmid.restart.service.warning=\ -\nrmid: (ADVERTENCIA) el reinicio del servicio indica: +rmid.restart.service.warning=\nrmid: (ADVERTENCIA) el reinicio del servicio devuelve: # "rmid" should not be translated -rmid.log.update.warning=\ -\nrmid: (ADVERTENCIA) la actualizaci\u00f3n del registro indica: +rmid.log.update.warning=\nrmid: (ADVERTENCIA) la actualizaci\u00F3n del log indica: # "rmid" should not be translated -rmid.log.snapshot.warning=\ -\nrmid: (GRAVE) la instant\u00e1nea del registro indica: +rmid.log.snapshot.warning=\nrmid: (GRAVE) la instant\u00E1nea del log indica: # "rmid" should not be translated -rmid.log.recover.warning=\ -\nrmid: (ADVERTENCIA) {0}: omitiendo la escritura del registro durante la recuperaci\u00f3n: +rmid.log.recover.warning=\nrmid: (ADVERTENCIA) {0}: saltando el registro del log durante la recuperaci\u00F3n: diff --git a/jdk/src/share/classes/sun/rmi/server/resources/rmid_fr.properties b/jdk/src/share/classes/sun/rmi/server/resources/rmid_fr.properties index 006c5d7997a..5b719bfd3ab 100644 --- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_fr.properties +++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_fr.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1998, 2005, 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 @@ -25,109 +25,72 @@ # # "rmid", inetd", and "wait" should not be translated. -rmid.syntax.exec.invalid=\ - rmid a \u00e9t\u00e9 lanc\u00e9 depuis inetd avec un statut invalide (doit \u00eatre wait) +rmid.syntax.exec.invalid=rmid a \u00E9t\u00E9 lanc\u00E9 depuis inetd avec un statut non valide (doit \u00EAtre wait) # "rmid" and "inetd" should not be translated. -rmid.syntax.port.badarg=\ - impossible de sp\u00e9cifier port si rmid est lanc\u00e9 depuis inetd +rmid.syntax.port.badarg=impossible de sp\u00E9cifier port si rmid est lanc\u00E9 depuis inetd # "port" here refers to a TCP port for the server to listen on. -rmid.syntax.port.badnumber=\ - port n'est pas un num\u00e9ro +rmid.syntax.port.badnumber=port n'est pas un num\u00E9ro # "-port" should not be translated, because it's part of command syntax. -rmid.syntax.port.missing=\ - l'option -port exige un argument +rmid.syntax.port.missing=l'option -port exige un argument # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.missing=\ - l'option -log exige un argument +rmid.syntax.log.missing=l'option -log exige un argument # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.required=\ - option -log requise +rmid.syntax.log.required=option -log obligatoire # {0} = the (string) illegal argument in question -rmid.syntax.illegal.option=\ - option incorrecte : {0} +rmid.syntax.illegal.option=option non admise : {0} # {0} = the (string) reason text that came with a thrown exception # "Activation.main" should not be translated, because it's a codepoint -rmid.unexpected.exception=\ - Activation.main : une exception s''est produite : {0} +rmid.unexpected.exception=Activation.main : une exception s''est produite - {0} # "java.home" should not be translated, because it's a property name # "ActivatorImpl" should not be translated, because it's a codepoint -rmid.unfound.java.home.property=\ - ActivatorImpl : impossible de localiser java.home +rmid.unfound.java.home.property=ActivatorImpl : impossible de localiser java.home # "rmid" should not be translated -rmid.inherited.channel.info=\ - d\u00e9marrage de rmid avec le canal existant +rmid.inherited.channel.info=d\u00E9marrage de rmid avec le canal existant # "Activation.main" should not be translated, because it's a codepoint -rmid.exec.policy.invalid=\ - Activation.main : classe de r\u00e8gle exec incorrecte +rmid.exec.policy.invalid=Activation.main : classe de r\u00E8gle exec incorrecte # "rmid" should not be translated -rmid.exec.policy.exception=\ - rmid: tenter d'obtenir des basculements de classes exec : +rmid.exec.policy.exception=rmid : tentative d'obtention des basculements de classes exec : # "rmid" should not be translated -rmid.exec.command=\ - rmid: debugExec : ex\u00e9cution de "{0}" +rmid.exec.command=rmid : debugExec : ex\u00E9cution de "{0}" # "rmid" should not be translated -rmid.group.inactive=\ - rmid : groupe d''activation inactif : {0} +rmid.group.inactive=rmid : groupe d''activation inactif : {0} # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and # "ExecOptionPermission" should not be translated, since they refer to # class/permission names. -rmid.exec.perms.inadequate=\ - Activation.main: avertissement : syst\u00e8me sun.rmi.activation.execPolicy\n\ - propri\u00e9t\u00e9 non sp\u00e9cifi\u00e9e et ExecPermissions/ExecOptionPermissions\n\ - non autoris\u00e9s ; les tentatives d'activation suivantes risquent d'\u00e9chouer en raison de la v\u00e9rification des permissions\n\ - ExecPermission/ExecOptionPermission. Pour obtenir de la\n\ - documentation sur la configuration de la s\u00e9curit\u00e9 rmid, reportez-vous \u00e0 :\n\ -\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\ - http://javasun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n +rmid.exec.perms.inadequate=Activation.main: avertissement : propri\u00E9t\u00E9 syst\u00E8me sun.rmi.activation.execPolicy\nnon sp\u00E9cifi\u00E9e et ExecPermissions/ExecOptionPermissions\nnon autoris\u00E9s ; les tentatives d'activation suivantes risquent d'\u00E9chouer en raison de la v\u00E9rification des droits\nExecPermission/ExecOptionPermission. Pour obtenir de la\ndocumentation sur la configuration de la s\u00E9curit\u00E9 rmid, reportez-vous \u00E0 :\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://javasun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated, # because they are syntax -rmid.usage=Syntaxe : {0} \ -\n\ -\no\u00f9 comprend :\ -\n -port Port que rmid doit utiliser\ -\n -log R\u00e9pertoire o\u00f9 rmid enregistre le journal\ -\n -stop Arr\u00eater l''appel courant de rmid (pour le port sp\u00e9cifi\u00e9)\ -\n -C Passe l''argument \u00e0 chaque processus fils (groupe d''activation)\ -\n -J Passe l''argument \u00e0 l''interpr\u00e9teur Java\ -\n\ - +rmid.usage=Syntaxe : {0} \n\no\u00F9 comprend :\n -port Port que rmid doit utiliser\n -log R\u00E9pertoire o\u00F9 rmid enregistre le journal\n -stop Arr\u00EAter l''appel en cours de rmid (pour le port sp\u00E9cifi\u00E9)\n -C Transmet l''argument \u00E0 chaque processus enfant (groupe d''activation)\n -J Transmet l''argument \u00E0 l''interpr\u00E9teur Java\n # This means "The currently running activation daemon has been shut down, # and is about to exit". -rmid.daemon.shutdown=\ - d\u00e9mon d'activation arr\u00eat\u00e9 +rmid.daemon.shutdown=d\u00E9mon d'activation arr\u00EAt\u00E9 # "rmid" should not be translated -rmid.restart.group.warning=\ -\nrmid : (AVERTISSEMENT) red\u00e9marrer les basculements de groupes : +rmid.restart.group.warning=\nrmid : (AVERTISSEMENT) red\u00E9marrer les basculements de groupes : # "rmid" should not be translated -rmid.restart.service.warning=\ -\nrmid : (AVERTISSEMENT) red\u00e9marrer les basculements de services : +rmid.restart.service.warning=\nrmid : (AVERTISSEMENT) red\u00E9marrer les basculements de services : # "rmid" should not be translated -rmid.log.update.warning=\ -\nrmid : (AVERTISSEMENT) consigner les basculements de mises \u00e0 jour : +rmid.log.update.warning=\nrmid : (AVERTISSEMENT) consigner les basculements de mises \u00E0 jour : # "rmid" should not be translated -rmid.log.snapshot.warning=\ -\nrmid : (GRAVE) consigner les basculements de captures instantan\u00e9es : +rmid.log.snapshot.warning=\nrmid : (GRAVE) consigner les basculements de clich\u00E9s : # "rmid" should not be translated -rmid.log.recover.warning=\ -\nrmid : (AVERTISSEMENT) {0} : enregistrement du journal ignor\u00e9 pendant la r\u00e9cup\u00e9ration : +rmid.log.recover.warning=\nrmid : (AVERTISSEMENT) {0} : enregistrement du journal ignor\u00E9 lors de la r\u00E9cup\u00E9ration : diff --git a/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties b/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties index efd9acedf7f..854d914f837 100644 --- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties +++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1998, 2005, 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 @@ -25,109 +25,72 @@ # # "rmid", inetd", and "wait" should not be translated. -rmid.syntax.exec.invalid=\ - rmid \u00e8 stato avviato da inetd con uno stato non valido (diverso da wait) +rmid.syntax.exec.invalid=rmid \u00E8 stato avviato da inetd con uno stato non valido (diverso da wait) # "rmid" and "inetd" should not be translated. -rmid.syntax.port.badarg=\ - non \u00e8 possibile specificare la porta se rmid viene avviato da inetd +rmid.syntax.port.badarg=non \u00E8 possibile specificare la porta se rmid viene avviato da inetd # "port" here refers to a TCP port for the server to listen on. -rmid.syntax.port.badnumber=\ - la porta non \u00e8 un numero +rmid.syntax.port.badnumber=la porta non \u00E8 un numero # "-port" should not be translated, because it's part of command syntax. -rmid.syntax.port.missing=\ - L'opzione -port richiede un argomento +rmid.syntax.port.missing=L'opzione -port richiede un argomento # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.missing=\ - L'opzione -log richiede un argomento +rmid.syntax.log.missing=L'opzione -log richiede un argomento # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.required=\ - \u00c8 richiesta l'opzione -log +rmid.syntax.log.required=\u00C8 richiesta l'opzione -log # {0} = the (string) illegal argument in question -rmid.syntax.illegal.option=\ - opzione illegale: {0} +rmid.syntax.illegal.option=opzione non valida: {0} # {0} = the (string) reason text that came with a thrown exception # "Activation.main" should not be translated, because it's a codepoint -rmid.unexpected.exception=\ - Activation.main: si \u00e8 verificata un''eccezione: {0} +rmid.unexpected.exception=Activation.main: si \u00E8 verificata un''eccezione: {0} # "java.home" should not be translated, because it's a property name # "ActivatorImpl" should not be translated, because it's a codepoint -rmid.unfound.java.home.property=\ - ActivatorImpl: impossibile individuare java.home +rmid.unfound.java.home.property=ActivatorImpl: impossibile individuare java.home # "rmid" should not be translated -rmid.inherited.channel.info=\ - Avvio di rmid con canale ereditato +rmid.inherited.channel.info=Avvio di rmid con canale ereditato # "Activation.main" should not be translated, because it's a codepoint -rmid.exec.policy.invalid=\ - Activation.main: classe di policy eseguibile non valida +rmid.exec.policy.invalid=Activation.main: classe di criteri eseguibili non valida # "rmid" should not be translated -rmid.exec.policy.exception=\ - rmid: il tentativo di ottenere i criteri di esecuzione ha restituito: +rmid.exec.policy.exception=rmid: il tentativo di ottenere i criteri di esecuzione ha restituito: # "rmid" should not be translated -rmid.exec.command=\ - rmid: debugExec: esecuzione di "{0}" in corso +rmid.exec.command=rmid: debugExec: esecuzione di "{0}" in corso # "rmid" should not be translated -rmid.group.inactive=\ - rmid: gruppo attivazione inattivo: {0} +rmid.group.inactive=rmid: gruppo attivazione inattivo: {0} # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and # "ExecOptionPermission" should not be translated, since they refer to # class/permission names. -rmid.exec.perms.inadequate=\ - Activation.main: avviso: sistema sun.rmi.activation.execPolicy\n\ - Propriet\u00e0 non specificata e nessun ExecPermissions/ExecOptionPermissions\n\ - garantito. I tentativi di attivazione successivi potrebbero fallire a causa di \n\ - controlli di autorizzazione ExecPermission/ExecOptionPermission non andati a buon fine. Per\n\ - la documentazione e le modalit\u00e0 di configurazione della protezione rmid, fare riferimento a (informazioni in inglese):\n\ -\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n +rmid.exec.perms.inadequate=Activation.main: avvertenza: sistema sun.rmi.activation.execPolicy\nPropriet\u00E0 non specificata e nessun ExecPermissions/ExecOptionPermissions\ngarantito. I tentativi di attivazione successivi potrebbero fallire a causa di \ncontrolli di autorizzazione ExecPermission/ExecOptionPermission non andati a buon fine. Per\nla documentazione e le modalit\u00E0 di configurazione della sicurezza rmid, fare riferimento a (informazioni in inglese):\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated, # because they are syntax -rmid.usage=Utilizzo: {0} \ -\n\ -\ndove comprende:\ -\n -port Specifica la porta usata da rmid\ -\n -log Specifica la directory in cui rmid scrive il log\ -\n -stop Interrompe l''invocazione corrente di rmid (per la porta specificata)\ -\n -C Passa l''argomento a ciascun processo figlio (gruppo di attivazione)\ -\n -J Passa l''argomento all''interprete java\ -\n\ - +rmid.usage=Utilizzo: {0} \n\ndove include:\n -port Specifica la porta usata da rmid\n -log Specifica la directory in cui rmid scrive il log\n -stop Arresta l''invocazione corrente di rmid (per la porta specificata)\n -C Passa l''argomento a ciascun processo figlio (gruppo di attivazione)\n -J Passa l''argomento all''interprete java\n # This means "The currently running activation daemon has been shut down, # and is about to exit". -rmid.daemon.shutdown=\ - daemon di attivazione terminato +rmid.daemon.shutdown=daemon di attivazione terminato # "rmid" should not be translated -rmid.restart.group.warning=\ -\nrmid: (AVVERTENZA) il riavvio del gruppo ha restituito: +rmid.restart.group.warning=\nrmid: (AVVERTENZA) il riavvio del gruppo ha restituito: # "rmid" should not be translated -rmid.restart.service.warning=\ -\nrmid: (AVVERTENZA) il riavvio del servizio ha restituito: +rmid.restart.service.warning=\nrmid: (AVVERTENZA) il riavvio del servizio ha restituito: # "rmid" should not be translated -rmid.log.update.warning=\ -\nrmid: (AVVERTENZA) il log dell'aggiornamento ha restituito: +rmid.log.update.warning=\nrmid: (AVVERTENZA) il log dell'aggiornamento ha restituito: # "rmid" should not be translated -rmid.log.snapshot.warning=\ -\nrmid: (GRAVE) il log dell'istantanea ha restituito: +rmid.log.snapshot.warning=\nrmid: (GRAVE) snapshot log ha restituito: # "rmid" should not be translated -rmid.log.recover.warning=\ -\nrmid: (AVVERTENZA) {0}: record del log ignorato durante il ripristino: +rmid.log.recover.warning=\nrmid: (AVVERTENZA) {0}: record del log ignorato durante il recupero: diff --git a/jdk/src/share/classes/sun/rmi/server/resources/rmid_ja.properties b/jdk/src/share/classes/sun/rmi/server/resources/rmid_ja.properties index c007948b879..b0742af43fb 100644 --- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_ja.properties +++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_ja.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1998, 2005, 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 @@ -25,110 +25,72 @@ # # "rmid", inetd", and "wait" should not be translated. -rmid.syntax.exec.invalid=\ - rmid \u304c inetd \u304b\u3089\u7121\u52b9\u306a\u72b6\u614b\u3067\u8d77\u52d5\u3055\u308c\u307e\u3057\u305f (wait \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093)\u3002 +rmid.syntax.exec.invalid=rmid\u304Cinetd\u304B\u3089\u7121\u52B9\u306A\u72B6\u614B\u3067\u8D77\u52D5\u3055\u308C\u307E\u3057\u305F(wait\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059) # "rmid" and "inetd" should not be translated. -rmid.syntax.port.badarg=\ - rmid \u304c inetd \u304b\u3089\u8d77\u52d5\u3055\u308c\u305f\u5834\u5408\u3001\u30dd\u30fc\u30c8\u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002 +rmid.syntax.port.badarg=rmid\u304Cinetd\u304B\u3089\u8D77\u52D5\u3055\u308C\u305F\u5834\u5408\u3001\u30DD\u30FC\u30C8\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093 # "port" here refers to a TCP port for the server to listen on. -rmid.syntax.port.badnumber=\ - "port" \u306f\u756a\u53f7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +rmid.syntax.port.badnumber=port\u306F\u756A\u53F7\u3067\u306F\u3042\u308A\u307E\u305B\u3093 # "-port" should not be translated, because it's part of command syntax. -rmid.syntax.port.missing=\ - -port \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059 +rmid.syntax.port.missing=-port\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059 # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.missing=\ - -log \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059 +rmid.syntax.log.missing=-log\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059 # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.required=\ - -log \u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u5fc5\u8981\u3067\u3059 +rmid.syntax.log.required=-log\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u5FC5\u8981\u3067\u3059 # {0} = the (string) illegal argument in question -rmid.syntax.illegal.option=\ - \u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3: {0} +rmid.syntax.illegal.option=\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0} # {0} = the (string) reason text that came with a thrown exception # "Activation.main" should not be translated, because it's a codepoint -rmid.unexpected.exception=\ - Activation.main: \u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +rmid.unexpected.exception=Activation.main: \u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0} # "java.home" should not be translated, because it's a property name # "ActivatorImpl" should not be translated, because it's a codepoint -rmid.unfound.java.home.property=\ - ActivatorImpl: java.home \u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 +rmid.unfound.java.home.property=ActivatorImpl: java.home\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093 # "rmid" should not be translated -rmid.inherited.channel.info=\ - rmid \u306f\u7d99\u627f\u3055\u308c\u305f\u30c1\u30e3\u30cd\u30eb\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002 +rmid.inherited.channel.info=rmid\u306F\u7D99\u627F\u3055\u308C\u305F\u30C1\u30E3\u30CD\u30EB\u3067\u8D77\u52D5\u3057\u307E\u3059 # "Activation.main" should not be translated, because it's a codepoint -rmid.exec.policy.invalid=\ - Activation.main: \u7121\u52b9\u306a\u5b9f\u884c\u30dd\u30ea\u30b7\u30fc\u30af\u30e9\u30b9\u3067\u3059\u3002 +rmid.exec.policy.invalid=Activation.main: \u7121\u52B9\u306A\u5B9F\u884C\u30DD\u30EA\u30B7\u30FC\u30FB\u30AF\u30E9\u30B9\u3067\u3059 # "rmid" should not be translated -rmid.exec.policy.exception=\ - rmid: \u5b9f\u884c\u30dd\u30ea\u30b7\u30fc\u306e\u53d6\u5f97\u6642\u306e\u4f8b\u5916: +rmid.exec.policy.exception=rmid: \u5B9F\u884C\u30DD\u30EA\u30B7\u30FC\u306E\u53D6\u5F97\u3067\u6B21\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F: # "rmid" should not be translated -rmid.exec.command=\ - rmid: debugExec: "{0}" \u3092\u5b9f\u884c\u4e2d +rmid.exec.command=rmid: debugExec: "{0}"\u3092\u5B9F\u884C\u4E2D # "rmid" should not be translated -rmid.group.inactive=\ - rmid: \u8d77\u52d5\u30b0\u30eb\u30fc\u30d7\u304c\u505c\u6b62\u3057\u3066\u3044\u307e\u3059: {0} +rmid.group.inactive=rmid: \u8D77\u52D5\u30B0\u30EB\u30FC\u30D7\u304C\u505C\u6B62\u3057\u3066\u3044\u307E\u3059: {0} # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and # "ExecOptionPermission" should not be translated, since they refer to # class/permission names. -rmid.exec.perms.inadequate=\ - Activation.main: \u8b66\u544a:sun.rmi.activation.execPolicy \u30b7\u30b9\u30c6\u30e0\n\ - \u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u3001\u307e\u305f\u306f \n\ - ExecPermissions/ExecOptionPermissions \u304c\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002\n\ - ExecPermissions/ExecOptionPermissions \u30a2\u30af\u30bb\u30b9\u6a29\u691c\u67fb\u3067\u8a31\u53ef\u3055\u308c\n\ - \u306a\u3044\u305f\u3081\u3001\u3042\u3068\u306b\u7d9a\u304f\u8d77\u52d5\u306f\u5931\u6557\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\n\ - rmid \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u6b21\u306e\u30de\u30cb\u30e5\u30a2\u30eb\u3092\u53c2\u7167\u3057\u3066\n\ - \u304f\u3060\u3055\u3044\u3002:\n\ -\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n +rmid.exec.perms.inadequate=Activation.main: \u8B66\u544A:sun.rmi.activation.execPolicy\u30B7\u30B9\u30C6\u30E0\n\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u3001\u307E\u305F\u306F\nExecPermissions/ExecOptionPermissions\u304C\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093\u3002\nExecPermissions/ExecOptionPermissions\u30A2\u30AF\u30BB\u30B9\u6A29\u691C\u67FB\u3067\u8A31\u53EF\u3055\u308C\n\u306A\u3044\u305F\u3081\u3001\u5F8C\u306B\u7D9A\u304F\u8D77\u52D5\u306F\u5931\u6557\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\nrmid\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u69CB\u6210\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306F\u3001\u6B21\u306E\u30DE\u30CB\u30E5\u30A2\u30EB\u3092\u53C2\u7167\u3057\u3066\n\u304F\u3060\u3055\u3044\u3002\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated, # because they are syntax -rmid.usage=\u4f7f\u3044\u65b9: {0} \ -\n\ -\n \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\ -\n -port rmid \u304c\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3092\u6307\u5b9a\u3059\u308b\ -\n -log rmid \u304c\u30ed\u30b0\u3092\u66f8\u304d\u8fbc\u3080\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3059\u308b\ -\n -stop \u6307\u5b9a\u30dd\u30fc\u30c8\u306b\u5bfe\u3059\u308b rmid \u306e\u73fe\u5728\u306e\u547c\u3073\u51fa\u3057\u3092\u4e2d\u6b62\u3059\u308b\ -\n -C \u5404\u5b50\u30d7\u30ed\u30bb\u30b9 (\u8d77\u52d5\u30b0\u30eb\u30fc\u30d7) \u306b\u5f15\u6570\u3092\u6e21\u3059\ -\n -J java \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306b\u5f15\u6570\u3092\u6e21\u3059\ -\n +rmid.usage=\u4F7F\u7528\u65B9\u6CD5: {0} \n\n\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -port rmid\u304C\u4F7F\u7528\u3059\u308B\u30DD\u30FC\u30C8\u3092\u6307\u5B9A\u3059\u308B\n -log rmid\u304C\u30ED\u30B0\u3092\u66F8\u304D\u8FBC\u3080\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u6307\u5B9A\u3059\u308B\n -stop \u6307\u5B9A\u30DD\u30FC\u30C8\u306B\u5BFE\u3059\u308Brmid\u306E\u73FE\u5728\u306E\u547C\u51FA\u3057\u3092\u4E2D\u6B62\u3059\u308B\n -C \u5404\u5B50\u30D7\u30ED\u30BB\u30B9(\u8D77\u52D5\u30B0\u30EB\u30FC\u30D7)\u306B\u5F15\u6570\u3092\u6E21\u3059\n -J java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u5F15\u6570\u3092\u6E21\u3059\n # This means "The currently running activation daemon has been shut down, # and is about to exit". -rmid.daemon.shutdown=\ - \u8d77\u52d5\u30c7\u30fc\u30e2\u30f3\u304c\u505c\u6b62\u3057\u307e\u3057\u305f\u3002 +rmid.daemon.shutdown=\u8D77\u52D5\u30C7\u30FC\u30E2\u30F3\u304C\u505C\u6B62\u3057\u307E\u3057\u305F # "rmid" should not be translated -rmid.restart.group.warning=\ -\nrmid: (\u8b66\u544a) \u30b0\u30eb\u30fc\u30d7\u306e\u518d\u8d77\u52d5\u6642\u306e\u4f8b\u5916: +rmid.restart.group.warning=\nrmid: (\u8B66\u544A)\u30B0\u30EB\u30FC\u30D7\u306E\u518D\u8D77\u52D5\u3067\u6B21\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F: # "rmid" should not be translated -rmid.restart.service.warning=\ -\nrmid: (\u8b66\u544a) \u30b5\u30fc\u30d3\u30b9\u306e\u518d\u8d77\u52d5\u6642\u306e\u4f8b\u5916: +rmid.restart.service.warning=\nrmid: (\u8B66\u544A)\u30B5\u30FC\u30D3\u30B9\u306E\u518D\u8D77\u52D5\u3067\u6B21\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F: # "rmid" should not be translated -rmid.log.update.warning=\ -\nrmid: (\u8b66\u544a) \u30ed\u30b0\u66f4\u65b0\u6642\u306e\u4f8b\u5916: +rmid.log.update.warning=\nrmid: (\u8B66\u544A)\u30ED\u30B0\u66F4\u65B0\u3067\u6B21\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F: # "rmid" should not be translated -rmid.log.snapshot.warning=\ -\nrmid: (\u91cd\u5927) \u30ed\u30b0\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u6642\u306e\u4f8b\u5916: +rmid.log.snapshot.warning=\nrmid: (\u91CD\u5927)\u30ED\u30B0\u30FB\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3067\u6B21\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F: # "rmid" should not be translated -rmid.log.recover.warning=\ -\nrmid: (\u8b66\u544a) {0}: \u56de\u5fa9\u4e2d\u306e\u30ed\u30b0\u30ec\u30b3\u30fc\u30c9\u306e\u30b9\u30ad\u30c3\u30d7: +rmid.log.recover.warning=\nrmid: (\u8B66\u544A){0}: \u56DE\u5FA9\u4E2D\u306E\u30ED\u30B0\u30FB\u30EC\u30B3\u30FC\u30C9\u306E\u30B9\u30AD\u30C3\u30D7: diff --git a/jdk/src/share/classes/sun/rmi/server/resources/rmid_ko.properties b/jdk/src/share/classes/sun/rmi/server/resources/rmid_ko.properties index 5d6c150c367..e744d9cc433 100644 --- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_ko.properties +++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_ko.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1998, 2005, 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 @@ -25,109 +25,72 @@ # # "rmid", inetd", and "wait" should not be translated. -rmid.syntax.exec.invalid=\ - rmid\uac00 \uc798\ubabb\ub41c \uc0c1\ud0dc\ub97c \uac00\uc9c4 inetd\uc5d0\uc11c \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4. (wait\uc774\uc5b4\uc57c \ud568) +rmid.syntax.exec.invalid=rmid\uAC00 \uBD80\uC801\uD569\uD55C \uC0C1\uD0DC\uC758 inetd\uC5D0\uC11C \uC2DC\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uC0C1\uD0DC\uB294 wait\uC5EC\uC57C \uD569\uB2C8\uB2E4. # "rmid" and "inetd" should not be translated. -rmid.syntax.port.badarg=\ - rmid\uac00 inetd\uc5d0\uc11c \uc2dc\uc791\ub41c \uacbd\uc6b0 \ud3ec\ud2b8\ub97c \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +rmid.syntax.port.badarg=rmid\uAC00 inetd\uC5D0\uC11C \uC2DC\uC791\uB41C \uACBD\uC6B0 \uD3EC\uD2B8\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. # "port" here refers to a TCP port for the server to listen on. -rmid.syntax.port.badnumber=\ - \ud3ec\ud2b8\ub294 \uc22b\uc790\uac00 \uc544\ub2d9\ub2c8\ub2e4. +rmid.syntax.port.badnumber=\uD3EC\uD2B8\uB294 \uC22B\uC790\uAC00 \uC544\uB2D9\uB2C8\uB2E4. # "-port" should not be translated, because it's part of command syntax. -rmid.syntax.port.missing=\ - -port \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \uc778\uc790\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. +rmid.syntax.port.missing=-port \uC635\uC158\uC744 \uC0AC\uC6A9\uD558\uB824\uBA74 \uC778\uC218\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.missing=\ - -log \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \uc778\uc790\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. +rmid.syntax.log.missing=-log \uC635\uC158\uC744 \uC0AC\uC6A9\uD558\uB824\uBA74 \uC778\uC218\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.required=\ - -log \uc635\uc158\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. +rmid.syntax.log.required=-log \uC635\uC158\uC774 \uD544\uC694\uD569\uB2C8\uB2E4. # {0} = the (string) illegal argument in question -rmid.syntax.illegal.option=\ - \uc798\ubabb\ub41c \uc635\uc158: {0} +rmid.syntax.illegal.option=\uC798\uBABB\uB41C \uC635\uC158: {0} # {0} = the (string) reason text that came with a thrown exception # "Activation.main" should not be translated, because it's a codepoint -rmid.unexpected.exception=\ - Activation.main: \uc608\uc678 \ubc1c\uc0dd: {0} +rmid.unexpected.exception=Activation.main: \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0} # "java.home" should not be translated, because it's a property name # "ActivatorImpl" should not be translated, because it's a codepoint -rmid.unfound.java.home.property=\ - ActivatorImpl: java.home\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc74c +rmid.unfound.java.home.property=ActivatorImpl: java.home\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. # "rmid" should not be translated -rmid.inherited.channel.info=\ - \uc0c1\uc18d \ucc44\ub110\uc744 \uc0ac\uc6a9\ud558\uc5ec rmid \uc2dc\uc791 +rmid.inherited.channel.info=\uC0C1\uC18D\uB41C \uCC44\uB110\uC744 \uC0AC\uC6A9\uD558\uC5EC rmid \uC2DC\uC791 # "Activation.main" should not be translated, because it's a codepoint -rmid.exec.policy.invalid=\ - Activation.main: \uc798\ubabb\ub41c \uc2e4\ud589 \uc815\ucc45 \ud074\ub798\uc2a4 +rmid.exec.policy.invalid=Activation.main: \uC2E4\uD589 \uC815\uCC45 \uD074\uB798\uC2A4\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. # "rmid" should not be translated -rmid.exec.policy.exception=\ - rmid: \uc2e4\ud589 \uc815\ucc45 \uac00\uc838\uc624\uae30 \uc2dc\ub3c4\ub85c \uc778\ud574 \ub2e4\uc74c \uc624\ub958\uac00 \ubc1c\uc0dd\ud568: +rmid.exec.policy.exception=rmid: \uC2E4\uD589 \uC815\uCC45\uC744 \uAC00\uC838\uC624\uB824\uB294 \uC2DC\uB3C4\uB85C \uBC1C\uC0DD\uD55C \uC608\uC678 \uC0AC\uD56D: # "rmid" should not be translated -rmid.exec.command=\ - rmid: debugExec: "{0}" \uc2e4\ud589 \uc911 +rmid.exec.command=rmid: debugExec: "{0}" \uC2E4\uD589 \uC911 # "rmid" should not be translated -rmid.group.inactive=\ - rmid: \ud65c\uc131\ud654 \uadf8\ub8f9 \ube44\ud65c\uc131: {0} +rmid.group.inactive=rmid: \uD65C\uC131\uD654 \uADF8\uB8F9 \uBE44\uD65C\uC131: {0} # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and # "ExecOptionPermission" should not be translated, since they refer to # class/permission names. -rmid.exec.perms.inadequate=\ - Activation.main: \uacbd\uace0: sun.rmi.activation.execPolicy \uc2dc\uc2a4\ud15c \ub4f1\ub85d \uc815\ubcf4\uac00\n\ - \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uace0 ExecPermissions/ExecOptionPermissions\uc774 \ubd80\uc5ec\ub418\uc9c0\n\ - \uc54a\uc558\uc2b5\ub2c8\ub2e4. \uacc4\uc18d\ub418\ub294 \ud65c\uc131\ud654 \uc2dc\ub3c4\ub294 ExecPermission/ExecOptionPermission\uc758\n\ - \ud5c8\uac00 \ud655\uc778 \uc2e4\ud328\ub85c \uc778\ud574 \uc2e4\ud328\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\ - rmid \ubcf4\uc548\uc744 \uad6c\uc131\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc124\uba85\uc11c\ub294 \ub2e4\uc74c \uc6f9 \uc0ac\uc774\ud2b8\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.\n\ -\n\ -http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\ -http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n +rmid.exec.perms.inadequate=Activation.main: \uACBD\uACE0: sun.rmi.activation.execPolicy \uC2DC\uC2A4\uD15C \uC18D\uC131\uC774\n\uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC73C\uBA70 ExecPermissions/ExecOptionPermissions\uAC00 \uBD80\uC5EC\uB418\uC9C0\n\uC54A\uC558\uC2B5\uB2C8\uB2E4. \uD65C\uC131\uD654\uB97C \uACC4\uC18D \uC2DC\uB3C4\uD558\uBA74 ExecPermission/ExecOptionPermission\n\uAD8C\uD55C \uAC80\uC0AC \uC2E4\uD328\uB85C \uC778\uD574 \uC2E4\uD328\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\nrmid \uBCF4\uC548 \uAD6C\uC131 \uBC29\uBC95\uC5D0 \uB300\uD55C \uC124\uBA85\uC11C\uB294 \uB2E4\uC74C \uC6F9 \uC0AC\uC774\uD2B8\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated, # because they are syntax -rmid.usage=\uc0ac\uc6a9\ubc95: {0} <\uc635\uc158> \ -\n\ -\n<\uc635\uc158>\uc740 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud569\ub2c8\ub2e4:\ -\n -port rmid\uac00 \uc0ac\uc6a9\ud560 \ud3ec\ud2b8 \uc9c0\uc815\ -\n -log rmid\uac00 \ub85c\uadf8\ub97c \uae30\ub85d\ud560 \ub514\ub809\ud1a0\ub9ac \uc9c0\uc815\ -\n -stop rmid\uc758 \ud604\uc7ac \ud638\ucd9c \uc911\ub2e8 (\uc9c0\uc815\ub41c \ud3ec\ud2b8\uc5d0 \ub300\ud574)\ -\n -C \uac01\uac01\uc758 \uc790\uc2dd \ud504\ub85c\uc138\uc2a4\uc5d0 \uc778\uc790 \uc804\ub2ec (\ud65c\uc131\ud654 \uadf8\ub8f9)\ -\n -J Java \uc778\ud130\ud504\ub9ac\ud130\uc5d0 \uc778\uc790\ub97c \uc804\ub2ec\ud569\ub2c8\ub2e4.\ -\n\ - +rmid.usage=\uC0AC\uC6A9\uBC95: {0} \n\n\uC5EC\uAE30\uC11C \uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n -port rmid\uAC00 \uC0AC\uC6A9\uD560 \uD3EC\uD2B8\uB97C \uC9C0\uC815\uD569\uB2C8\uB2E4.\n -log rmid\uAC00 \uB85C\uADF8\uB97C \uAE30\uB85D\uD560 \uB514\uB809\uD1A0\uB9AC\uB97C \uC9C0\uC815\uD569\uB2C8\uB2E4.\n -stop \uC9C0\uC815\uB41C \uD3EC\uD2B8\uC5D0 \uB300\uD574 rmid\uC758 \uD604\uC7AC \uD638\uCD9C\uC744 \uC815\uC9C0\uD569\uB2C8\uB2E4.\n -C \uAC01\uAC01\uC758 \uD558\uC704 \uD504\uB85C\uC138\uC2A4(\uD65C\uC131\uD654 \uADF8\uB8F9)\uC5D0 \uC778\uC218\uB97C \uC804\uB2EC\uD569\uB2C8\uB2E4.\n -J Java \uC778\uD130\uD504\uB9AC\uD130\uC5D0 \uC778\uC218\uB97C \uC804\uB2EC\uD569\uB2C8\uB2E4.\n # This means "The currently running activation daemon has been shut down, # and is about to exit". -rmid.daemon.shutdown=\ - \ud65c\uc131 \ub370\ubaac \uc167\ub2e4\uc6b4 +rmid.daemon.shutdown=\uD65C\uC131 \uB370\uBAAC \uC885\uB8CC # "rmid" should not be translated -rmid.restart.group.warning=\ -\nrmid: (\uacbd\uace0) \uadf8\ub8f9 \ub2e4\uc2dc \uc2dc\uc791\uc73c\ub85c \uc778\ud574 \ub2e4\uc74c \uc624\ub958\uac00 \ubc1c\uc0dd\ud568: +rmid.restart.group.warning=\nrmid: (\uACBD\uACE0) \uADF8\uB8F9 \uC7AC\uC2DC\uC791\uC73C\uB85C \uC778\uD574 \uBC1C\uC0DD\uD55C \uC624\uB958: # "rmid" should not be translated -rmid.restart.service.warning=\ -\nrmid: (\uacbd\uace0) \uc11c\ube44\uc2a4 \ub2e4\uc2dc \uc2dc\uc791\uc73c\ub85c \uc778\ud574 \ub2e4\uc74c \uc624\ub958\uac00 \ubc1c\uc0dd\ud568: +rmid.restart.service.warning=\nrmid: (\uACBD\uACE0) \uC11C\uBE44\uC2A4 \uC7AC\uC2DC\uC791\uC73C\uB85C \uC778\uD574 \uBC1C\uC0DD\uD55C \uC624\uB958: # "rmid" should not be translated -rmid.log.update.warning=\ -\nrmid: (\uacbd\uace0) \ub85c\uadf8 \uc5c5\ub370\uc774\ud2b8\ub85c \uc778\ud574 \ub2e4\uc74c \uc624\ub958\uac00 \ubc1c\uc0dd\ud568: +rmid.log.update.warning=\nrmid: (\uACBD\uACE0) \uB85C\uADF8 \uAC31\uC2E0\uC73C\uB85C \uC778\uD574 \uBC1C\uC0DD\uD55C \uC624\uB958: # "rmid" should not be translated -rmid.log.snapshot.warning=\ -\nrmid: (\uc2ec\uac01) \ub85c\uadf8 \uc2a4\ub0c5\uc0f7\uc73c\ub85c \uc778\ud574 \ub2e4\uc74c \uc624\ub958\uac00 \ubc1c\uc0dd\ud568: +rmid.log.snapshot.warning=\nrmid: (\uC2EC\uAC01) \uB85C\uADF8 \uC2A4\uB0C5\uC0F7\uC73C\uB85C \uC778\uD574 \uBC1C\uC0DD\uD55C \uC624\uB958: # "rmid" should not be translated -rmid.log.recover.warning=\ -\nrmid: (\uacbd\uace0) {0}: \ubcf5\uad6c\ud558\ub294 \ub3d9\uc548 \ub808\ucf54\ub4dc \uae30\ub85d \uac74\ub108\ub6f0\uae30: +rmid.log.recover.warning=\nrmid: (\uACBD\uACE0) {0}: \uBCF5\uAD6C\uD558\uB294 \uB3D9\uC548 \uB808\uCF54\uB4DC \uAE30\uB85D\uC744 \uAC74\uB108 \uB6F0\uB294 \uC911: diff --git a/jdk/src/share/classes/sun/rmi/server/resources/rmid_pt_BR.properties b/jdk/src/share/classes/sun/rmi/server/resources/rmid_pt_BR.properties index ba9bf58e983..eac4239a6b3 100644 --- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_pt_BR.properties +++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_pt_BR.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1998, 2005, 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 @@ -25,72 +25,72 @@ # # "rmid", inetd", and "wait" should not be translated. -rmid.syntax.exec.invalid=rmid foi iniciado de inetd com um status inv\u00e1lido (deve estar em espera) +rmid.syntax.exec.invalid=rmid foi acionado a partir de inetd com um status inv\u00E1lido (deve ser wait) # "rmid" and "inetd" should not be translated. -rmid.syntax.port.badarg=a porta n\u00e3o pode ser especificada se rmid for iniciado de inetd +rmid.syntax.port.badarg=a porta n\u00E3o poder\u00E1 ser especificada se rmid for acionado a partir de inetd # "port" here refers to a TCP port for the server to listen on. -rmid.syntax.port.badnumber=a porta n\u00e3o \u00e9 um n\u00famero +rmid.syntax.port.badnumber=a porta n\u00E3o \u00E9 um n\u00FAmero # "-port" should not be translated, because it's part of command syntax. -rmid.syntax.port.missing=a op\u00e7\u00e3o -port requer argumento +rmid.syntax.port.missing=a op\u00E7\u00E3o -port requer um argumento # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.missing=a op\u00e7\u00e3o -log requer argumento +rmid.syntax.log.missing=a op\u00E7\u00E3o -log requer um argumento # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.required=op\u00e7\u00e3o -log necess\u00e1ria +rmid.syntax.log.required=op\u00E7\u00E3o -log necess\u00E1ria # {0} = the (string) illegal argument in question -rmid.syntax.illegal.option=op\u00e7\u00e3o ilegal: {0} +rmid.syntax.illegal.option=op\u00E7\u00E3o inv\u00E1lida: {0} # {0} = the (string) reason text that came with a thrown exception # "Activation.main" should not be translated, because it's a codepoint -rmid.unexpected.exception=Activation.main: ocorreu uma exce\u00e7\u00e3o: {0} +rmid.unexpected.exception=Activation.main: ocorreu uma exce\u00E7\u00E3o: {0} # "java.home" should not be translated, because it's a property name # "ActivatorImpl" should not be translated, because it's a codepoint -rmid.unfound.java.home.property=ActivatorImpl: n\u00e3o \u00e9 poss\u00edvel localizar java.home +rmid.unfound.java.home.property=ActivatorImpl: n\u00E3o \u00E9 poss\u00EDvel localizar java.home # "rmid" should not be translated -rmid.inherited.channel.info=inicializa\u00e7\u00e3o de rmid com canal legado +rmid.inherited.channel.info=inicializa\u00E7\u00E3o de rmid com canal herdado # "Activation.main" should not be translated, because it's a codepoint -rmid.exec.policy.invalid=Activation.main: classe de pol\u00edtica de execu\u00e7\u00e3o inv\u00e1lida +rmid.exec.policy.invalid=Activation.main: classe de pol\u00EDtica de execu\u00E7\u00E3o inv\u00E1lida # "rmid" should not be translated -rmid.exec.policy.exception=rmid: a tentativa de obter a pol\u00edtica de execu\u00e7\u00e3o gera: +rmid.exec.policy.exception=rmid: a tentativa de obter a pol\u00EDtica de execu\u00E7\u00E3o gera: # "rmid" should not be translated rmid.exec.command=rmid: debugExec: executando "{0}" # "rmid" should not be translated -rmid.group.inactive=rmid: grupo de ativa\u00e7\u00e3o inativo: {0} +rmid.group.inactive=rmid: grupo de ativa\u00E7\u00E3o inativo: {0} # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and # "ExecOptionPermission" should not be translated, since they refer to # class/permission names. -rmid.exec.perms.inadequate=Activation.main: aviso: propriedade do sistema sun.rmi.activation.execPolicy\nn\u00e3o registrada e nenhuma ExecPermission/ExecOptionPermission\nconcedida; as tentativas de ativa\u00e7\u00e3o seguintes podem falhar devido a verifica\u00e7\u00f5es mal sucedidas da permiss\u00e3o\nExecPermission/ExecOptionPermission. Para obter\ndocumenta\u00e7\u00e3o sobre como configurar a seguran\u00e7a rmid, conculte:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n +rmid.exec.perms.inadequate=Activation.main: advert\u00EAncia: propriedade do sistema sun.rmi.activation.execPolicy\nn\u00E3o registrada e nenhuma ExecPermission/ExecOptionPermission\nconcedida; as tentativas de ativa\u00E7\u00E3o seguintes podem falhar devido a verifica\u00E7\u00F5es malsucedidas da permiss\u00E3o\nExecPermission/ExecOptionPermission. Para obter\ndocumenta\u00E7\u00E3o sobre como configurar a seguran\u00E7a rmid, consulte:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated, # because they are syntax -rmid.usage=Uso: {0} \n\nem que inclui:\n -port especifica a porta que rmid usar\u00e1\n -log especifica o diret\u00f3rio no qual o rmid grava o registro\n -stop para a chamada atual de rmid (para a porta especificada)\n -C passa o argumento para cada processo filho (grupo de ativa\u00e7\u00e3o)\n -J passa o argumento para o int\u00e9rprete de java\n +rmid.usage=Uso: {0} \n\nem que inclui:\n -port especifica a porta que rmid usar\u00E1\n -log especifica o diret\u00F3rio no qual o rmid grava o log\n -stop para a chamada atual de rmid (para a porta especificada)\n -C especifica o argumento para cada processo filho (grupo de ativa\u00E7\u00E3o)\n -J especifica o argumento para o int\u00E9rprete de java\n # This means "The currently running activation daemon has been shut down, # and is about to exit". -rmid.daemon.shutdown=encerramento do daemon de ativa\u00e7\u00e3o +rmid.daemon.shutdown=shutdown do daemon de ativa\u00E7\u00E3o # "rmid" should not be translated -rmid.restart.group.warning=\nrmid: (AVISO) reiniciar grupo gera: +rmid.restart.group.warning=\nrmid: (ADVERT\u00CANCIA) a reinicializa\u00E7\u00E3o do grupo gera: # "rmid" should not be translated -rmid.restart.service.warning=\nrmid: (AVISO) reiniciar servi\u00e7o gera: +rmid.restart.service.warning=\nrmid: (ADVERT\u00CANCIA) a reinicializa\u00E7\u00E3o do servi\u00E7o gera: # "rmid" should not be translated -rmid.log.update.warning=\nrmid: (AVISO) registrar atualiza\u00e7\u00e3o gera: +rmid.log.update.warning=\nrmid: (ADVERT\u00CANCIA) o registro da atualiza\u00E7\u00E3o gera: # "rmid" should not be translated -rmid.log.snapshot.warning=\nrmid: (GRAVE) registrar instant\u00e2neo gera: +rmid.log.snapshot.warning=\nrmid: (GRAVE) o registro do snapshot gera: # "rmid" should not be translated -rmid.log.recover.warning=\nrmid: (AVISO) {0}: ignorando registro durante a recupera\u00e7\u00e3o: +rmid.log.recover.warning=\nrmid: (ADVERT\u00CANCIA) {0}: ignorando registro de log durante a recupera\u00E7\u00E3o: diff --git a/jdk/src/share/classes/sun/rmi/server/resources/rmid_sv.properties b/jdk/src/share/classes/sun/rmi/server/resources/rmid_sv.properties index 2c2553e9b11..94f4e97f7e7 100644 --- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_sv.properties +++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_sv.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1998, 2005, 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 @@ -25,109 +25,72 @@ # # "rmid", inetd", and "wait" should not be translated. -rmid.syntax.exec.invalid=\ - rmid startades fr\u00e5n inetd med ogiltig status (m\u00e5ste vara wait) +rmid.syntax.exec.invalid=rmid startades fr\u00E5n inetd med ogiltig status (m\u00E5ste vara wait) # "rmid" and "inetd" should not be translated. -rmid.syntax.port.badarg=\ - port kan inte anges om rmid startas fr\u00e5n inetd +rmid.syntax.port.badarg=port kan inte anges om rmid startas fr\u00E5n inetd # "port" here refers to a TCP port for the server to listen on. -rmid.syntax.port.badnumber=\ - port \u00e4r inte ett nummer +rmid.syntax.port.badnumber=port \u00E4r inte ett tal # "-port" should not be translated, because it's part of command syntax. -rmid.syntax.port.missing=\ - alternativet -port kr\u00e4ver argument +rmid.syntax.port.missing=alternativet -port kr\u00E4ver argument # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.missing=\ - alternativet -log kr\u00e4ver argument +rmid.syntax.log.missing=alternativet -log kr\u00E4ver argument # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.required=\ - alternativet -log kr\u00e4vs +rmid.syntax.log.required=alternativet -log kr\u00E4vs # {0} = the (string) illegal argument in question -rmid.syntax.illegal.option=\ -ogiltigt alternativ: {0} +rmid.syntax.illegal.option=otill\u00E5tet alternativ: {0} # {0} = the (string) reason text that came with a thrown exception # "Activation.main" should not be translated, because it's a codepoint -rmid.unexpected.exception=\ - Activation.main: ett undantagsavbrott har intr\u00e4ffat: {0} +rmid.unexpected.exception=Activation.main: ett undantag uppstod: {0} # "java.home" should not be translated, because it's a property name # "ActivatorImpl" should not be translated, because it's a codepoint -rmid.unfound.java.home.property=\ - ActivatorImpl: det g\u00e5r inte att hitta java.home +rmid.unfound.java.home.property=ActivatorImpl: hittar inte java.home # "rmid" should not be translated -rmid.inherited.channel.info=\ - uppstart av rmid med \u00e4rvd kanal +rmid.inherited.channel.info=start av rmid med \u00E4rvd kanal # "Activation.main" should not be translated, because it's a codepoint -rmid.exec.policy.invalid=\ - Activation.main: ogiltig exec policy-klass +rmid.exec.policy.invalid=Activation.main: ogiltig exec policy-klass # "rmid" should not be translated -rmid.exec.policy.exception=\ - rmid: f\u00f6rs\u00f6k att h\u00e4mta throws f\u00f6r exec-policy: +rmid.exec.policy.exception=rmid: f\u00F6rs\u00F6k att h\u00E4mta throws f\u00F6r exec-policy: # "rmid" should not be translated -rmid.exec.command=\ - rmid: debugExec: k\u00f6r "{0}" +rmid.exec.command=rmid: debugExec: k\u00F6r "{0}" # "rmid" should not be translated -rmid.group.inactive=\ - rmid: aktiveringsgruppen \u00e4r inaktiv: {0} +rmid.group.inactive=rmid: aktiveringsgruppen \u00E4r inaktiv: {0} # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and # "ExecOptionPermission" should not be translated, since they refer to # class/permission names. -rmid.exec.perms.inadequate=\ - Activation.main: varning: systemegenskapen sun.rmi.activation.execPolicy\n\ - \u00e4r inte specificerad och inga ExecPermissions/ExecOptionPermissions\n\ - har utdelats. Efterf\u00f6ljande aktiveringsf\u00f6rs\u00f6k kan misslyckas p\u00e5 grund av misslyckade\n\ - kontroller av ExecPermission/ExecOptionPermission-beh\u00f6righet. Mer\n\ - information om hur du konfigurerar rmid-s\u00e4kerhet finns i:\n\ -\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n +rmid.exec.perms.inadequate=Activation.main: varning: systemegenskapen sun.rmi.activation.execPolicy\n\u00E4r inte specificerad och inga ExecPermissions/ExecOptionPermissions\nhar utdelats. Efterf\u00F6ljande aktiveringsf\u00F6rs\u00F6k kanske inte utf\u00F6rs p\u00E5 grund av ej utf\u00F6rda\nkontroller av ExecPermission/ExecOptionPermission-beh\u00F6righet. Mer\ninformation om hur du konfigurerar rmid-s\u00E4kerhet finns i:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated, # because they are syntax -rmid.usage=G\u00f6r s\u00e5 h\u00e4r: {0} \ -\n\ -\nd\u00e4r omfattar:\ -\n -port Ange porten f\u00f6r rmid\ -\n -log Ange katalogen d\u00e4r rmid ska spara loggen\ -\n -stop Stoppa p\u00e5g\u00e5ende rmid-anrop (f\u00f6r angiven port)\ -\n -C Skicka argumentet till varje underordnad process (aktiveringsgrupp)\ -\n -J Skicka argumentet till java-tolken\ -\n\ - +rmid.usage=Syntax: {0} \n\nd\u00E4r inkluderar:\n -port Ange porten f\u00F6r rmid\n -log Ange katalogen d\u00E4r rmid ska spara loggen\n -stop Stoppa p\u00E5g\u00E5ende rmid-anrop (f\u00F6r angiven port)\n -C Skicka argumentet till varje underordnad process (aktiveringsgrupp)\n -J Skicka argumentet till Javatolken\n # This means "The currently running activation daemon has been shut down, # and is about to exit". -rmid.daemon.shutdown=\ - aktiveringsdemonen avslutas +rmid.daemon.shutdown=aktiveringsdemonen avslutas # "rmid" should not be translated -rmid.restart.group.warning=\ -\nrmid: (VARNING) starta om grupp-throws: +rmid.restart.group.warning=\nrmid: (VARNING) starta om gruppkast: # "rmid" should not be translated -rmid.restart.service.warning=\ -\nrmid: (VARNING) starta om service-throws: +rmid.restart.service.warning=\nrmid: (VARNING) starta om tj\u00E4nstekast: # "rmid" should not be translated -rmid.log.update.warning=\ -\nrmid: (VARNING) logga uppdaterings-throws: +rmid.log.update.warning=\nrmid: (VARNING) logga uppdateringskast: # "rmid" should not be translated -rmid.log.snapshot.warning=\ -\nrmid: (ALLVARLIGT) logga \u00f6gonblicks-throws: +rmid.log.snapshot.warning=\nrmid: (ALLVARLIGT) logga \u00F6gonblickskast: # "rmid" should not be translated -rmid.log.recover.warning=\ -\nrmid: (VARNING) {0}: hoppa \u00f6ver loggpost under \u00e5terst\u00e4llning: +rmid.log.recover.warning=\nrmid: (VARNING) {0}: hoppar \u00F6ver loggpost under \u00E5terst\u00E4llning: diff --git a/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_CN.properties b/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_CN.properties index 280d20b9935..920bde70f01 100644 --- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_CN.properties +++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_CN.properties @@ -1,6 +1,6 @@ # # -# Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1998, 2005, 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 @@ -25,109 +25,72 @@ # # "rmid", inetd", and "wait" should not be translated. -rmid.syntax.exec.invalid=\ - rmid \u5df2\u4ece inetd \u542f\u52a8\uff0c\u4e14\u72b6\u6001\u65e0\u6548 (\u5fc5\u987b\u7b49\u5f85) +rmid.syntax.exec.invalid=rmid \u5DF2\u4ECE inetd \u542F\u52A8, \u4E14\u72B6\u6001\u65E0\u6548 (\u5FC5\u987B\u7B49\u5F85) # "rmid" and "inetd" should not be translated. -rmid.syntax.port.badarg=\ - \u5982\u679c rmid \u4ece inetd \u542f\u52a8\uff0c\u5219\u65e0\u6cd5\u6307\u5b9a\u7aef\u53e3 +rmid.syntax.port.badarg=\u5982\u679C rmid \u4ECE inetd \u542F\u52A8, \u5219\u65E0\u6CD5\u6307\u5B9A\u7AEF\u53E3 # "port" here refers to a TCP port for the server to listen on. -rmid.syntax.port.badnumber=\ - \u7aef\u53e3\u4e0d\u662f\u4e00\u4e2a\u6570\u5b57 +rmid.syntax.port.badnumber=\u7AEF\u53E3\u4E0D\u662F\u4E00\u4E2A\u6570\u5B57 # "-port" should not be translated, because it's part of command syntax. -rmid.syntax.port.missing=\ - -port \u9009\u9879\u9700\u8981\u53c2\u6570 +rmid.syntax.port.missing=-port \u9009\u9879\u9700\u8981\u53C2\u6570 # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.missing=\ - -log \u9009\u9879\u9700\u8981\u53c2\u6570 +rmid.syntax.log.missing=-log \u9009\u9879\u9700\u8981\u53C2\u6570 # "-log" should not be translated, because it's part of command syntax. -rmid.syntax.log.required=\ - \u9700\u8981 -log \u9009\u9879 +rmid.syntax.log.required=\u9700\u8981 -log \u9009\u9879 # {0} = the (string) illegal argument in question -rmid.syntax.illegal.option=\ - \u975e\u6cd5\u9009\u9879\uff1a{0} +rmid.syntax.illegal.option=\u975E\u6CD5\u9009\u9879: {0} # {0} = the (string) reason text that came with a thrown exception # "Activation.main" should not be translated, because it's a codepoint -rmid.unexpected.exception=\ - Activation.main: \u51fa\u73b0\u5f02\u5e38\uff1a{0} +rmid.unexpected.exception=Activation.main: \u51FA\u73B0\u5F02\u5E38\u9519\u8BEF: {0} # "java.home" should not be translated, because it's a property name # "ActivatorImpl" should not be translated, because it's a codepoint -rmid.unfound.java.home.property=\ - ActivatorImpl: \u65e0\u6cd5\u5b9a\u4f4d java.home +rmid.unfound.java.home.property=ActivatorImpl: \u627E\u4E0D\u5230 java.home # "rmid" should not be translated -rmid.inherited.channel.info=\ - rmid \u901a\u8fc7\u7ee7\u627f\u7684\u4fe1\u9053\u542f\u52a8 +rmid.inherited.channel.info=rmid \u901A\u8FC7\u7EE7\u627F\u7684\u901A\u9053\u542F\u52A8 # "Activation.main" should not be translated, because it's a codepoint -rmid.exec.policy.invalid=\ - Activation.main: \u65e0\u6548\u7684\u53ef\u6267\u884c policy \u7c7b +rmid.exec.policy.invalid=Activation.main: \u65E0\u6548\u7684\u53EF\u6267\u884C policy \u7C7B # "rmid" should not be translated -rmid.exec.policy.exception=\ - rmid: \u8bd5\u56fe\u83b7\u53d6\u53ef\u6267\u884c\u7b56\u7565\u629b\u51fa: +rmid.exec.policy.exception=rmid: \u5C1D\u8BD5\u83B7\u53D6\u6267\u884C\u7B56\u7565\u629B\u51FA: # "rmid" should not be translated -rmid.exec.command=\ - rmid: debugExec: \u6b63\u5728\u8fd0\u884c\u201c{0}\u201d +rmid.exec.command=rmid: debugExec: \u6B63\u5728\u8FD0\u884C "{0}" # "rmid" should not be translated -rmid.group.inactive=\ - rmid: \u6fc0\u6d3b\u7ec4\u65e0\u6548: {0} +rmid.group.inactive=rmid: \u6FC0\u6D3B\u7EC4\u65E0\u6548: {0} # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and # "ExecOptionPermission" should not be translated, since they refer to # class/permission names. -rmid.exec.perms.inadequate=\ - Activation.main: \u8b66\u544a\uff1a sun.rmi.activation.execPolicy \u7cfb\u7edf\n\ - \u5c5e\u6027\u672a\u88ab\u6307\u5b9a\u4e14 ExecPermissions/ExecOptionPermissions\n\ - \u5747\u672a\u88ab\u6388\u6743\u3002\u968f\u540e\u7684\u6fc0\u6d3b\u5c1d\u8bd5\u5931\u8d25\uff0c\u539f\u56e0\u662f\u5bf9\n\ - ExecPermission/ExecOptionPermission \u7684\u6743\u9650\u68c0\u67e5\u5931\u8d25\u3002 \u6709\u5173\u5982\u4f55\n\ - \u914d\u7f6e rmid \u5b89\u5168\u6027\u7684\u6587\u6863\u8bf4\u660e\uff0c\u8bf7\u53c2\u9605\uff1a \n\ -\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\ - http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n +rmid.exec.perms.inadequate=Activation.main: \u8B66\u544A: sun.rmi.activation.execPolicy \u7CFB\u7EDF\n\u5C5E\u6027\u672A\u88AB\u6307\u5B9A\u4E14 ExecPermissions/ExecOptionPermissions\n\u5747\u672A\u88AB\u6388\u6743\u3002\u968F\u540E\u7684\u6FC0\u6D3B\u5C1D\u8BD5\u5931\u8D25, \u539F\u56E0\u662F\u5BF9\nExecPermission/ExecOptionPermission \u7684\u6743\u9650\u68C0\u67E5\u5931\u8D25\u3002\u6709\u5173\u5982\u4F55\n\u914D\u7F6E rmid \u5B89\u5168\u6027\u7684\u6587\u6863\u8BF4\u660E, \u8BF7\u53C2\u9605: \n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated, # because they are syntax -rmid.usage=\u7528\u6cd5\uff1a{0}

  • com.sun.security.auth.login * * - * @version 1.6, 01/23/01 */ public class AuthResources_pt_BR extends java.util.ListResourceBundle { private static final Object[][] contents = { - // NT principals - {"invalid null input: value", "entrada nula inv\u00e1lida: {0}"}, - {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"}, - {"NTNumericCredential: name", "NTNumericCredential: {0}"}, - {"Invalid NTSid value", "Valor de NTSid inv\u00e1lido"}, - {"NTSid: name", "NTSid: {0}"}, - {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"}, - {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"}, - {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"}, - {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"}, - {"NTUserPrincipal: name", "NTUserPrincipal: {0}"}, + // NT principals + {"invalid.null.input.value", "entrada nula inv\u00E1lida: {0}"}, + {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"}, + {"NTNumericCredential.name", "NTNumericCredential: {0}"}, + {"Invalid.NTSid.value", "Valor de NTSid inv\u00E1lido"}, + {"NTSid.name", "NTSid: {0}"}, + {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"}, + {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"}, + {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"}, + {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"}, + {"NTUserPrincipal.name", "NTUserPrincipal: {0}"}, - // UnixPrincipals - {"UnixNumericGroupPrincipal [Primary Group]: name", - "UnixNumericGroupPrincipal [grupo principal]: {0}"}, - {"UnixNumericGroupPrincipal [Supplementary Group]: name", - "UnixNumericGroupPrincipal [grupo complement\u00e1rio]: {0}"}, - {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"}, - {"UnixPrincipal: name", "UnixPrincipal: {0}"}, + // UnixPrincipals + {"UnixNumericGroupPrincipal.Primary.Group.name", + "UnixNumericGroupPrincipal [Grupo Principal]: {0}"}, + {"UnixNumericGroupPrincipal.Supplementary.Group.name", + "UnixNumericGroupPrincipal [Grupo Complementar]: {0}"}, + {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"}, + {"UnixPrincipal.name", "UnixPrincipal: {0}"}, - // com.sun.security.auth.login.ConfigFile - {"Unable to properly expand config", "N\u00e3o \u00e9 poss\u00edvel expandir corretamente {0}"}, - {"extra_config (No such file or directory)", - "{0} (tal arquivo ou diret\u00f3rio n\u00e3o existe)"}, - {"Unable to locate a login configuration", - "N\u00e3o \u00e9 poss\u00edvel localizar uma configura\u00e7\u00e3o de logon"}, - {"Configuration Error:\n\tInvalid control flag, flag", - "Erro de configura\u00e7\u00e3o:\n\tSinalizador de controle inv\u00e1lido, {0}"}, - {"Configuration Error:\n\tCan not specify multiple entries for appName", - "Erro de configura\u00e7\u00e3o:\n\tN\u00e3o \u00e9 poss\u00edvel especificar v\u00e1rias entradas para {0}"}, - {"Configuration Error:\n\texpected [expect], read [end of file]", - "Erro de configura\u00e7\u00e3o:\n\tesperado [{0}], lido [fim do arquivo]"}, - {"Configuration Error:\n\tLine line: expected [expect], found [value]", - "Erro de configura\u00e7\u00e3o:\n\tlinha {0}: esperado [{1}], encontrado [{2}]"}, - {"Configuration Error:\n\tLine line: expected [expect]", - "Erro de configura\u00e7\u00e3o:\n\tlinha {0}: esperado [{1}]"}, - {"Configuration Error:\n\tLine line: system property [value] expanded to empty value", - "Erro de configura\u00e7\u00e3o:\n\tlinha {0}: propriedade do sistema [{1}] expandida para valor vazio"}, + // com.sun.security.auth.login.ConfigFile + {"Unable.to.properly.expand.config", "N\u00E3o \u00E9 poss\u00EDvel expandir corretamente {0}"}, + {"extra.config.No.such.file.or.directory.", + "{0} (tal arquivo ou diret\u00F3rio n\u00E3o existe)"}, + {"Configuration.Error.No.such.file.or.directory", + "Erro de Configura\u00E7\u00E3o:\n\tN\u00E3o h\u00E1 tal arquivo ou diret\u00F3rio"}, + {"Configuration.Error.Invalid.control.flag.flag", + "Erro de Configura\u00E7\u00E3o:\n\tFlag de controle inv\u00E1lido, {0}"}, + {"Configuration.Error.Can.not.specify.multiple.entries.for.appName", + "Erro de Configura\u00E7\u00E3o:\n\tN\u00E3o \u00E9 poss\u00EDvel especificar v\u00E1rias entradas para {0}"}, + {"Configuration.Error.expected.expect.read.end.of.file.", + "Erro de Configura\u00E7\u00E3o:\n\tesperado [{0}], lido [fim do arquivo]"}, + {"Configuration.Error.Line.line.expected.expect.found.value.", + "Erro de Configura\u00E7\u00E3o:\n\tLinha {0}: esperada [{1}], encontrada [{2}]"}, + {"Configuration.Error.Line.line.expected.expect.", + "Erro de Configura\u00E7\u00E3o:\n\tLinha {0}: esperada [{1}]"}, + {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value", + "Erro de Configura\u00E7\u00E3o:\n\tLinha {0}: propriedade do sistema [{1}] expandida para valor vazio"}, - // com.sun.security.auth.module.JndiLoginModule - {"username: ","nome de usu\u00e1rio: "}, - {"password: ","senha: "}, + // com.sun.security.auth.module.JndiLoginModule + {"username.","nome do usu\u00E1rio: "}, + {"password.","senha: "}, - // com.sun.security.auth.module.KeyStoreLoginModule - {"Please enter keystore information", - "Insira as informa\u00e7\u00f5es do armazenamento de chaves"}, - {"Keystore alias: ","Alias do armazenamento de chaves: "}, - {"Keystore password: ","Senha do armazenamento de chaves: "}, - {"Private key password (optional): ", - "Senha da chave privada (opcional): "}, + // com.sun.security.auth.module.KeyStoreLoginModule + {"Please.enter.keystore.information", + "Especifique as informa\u00E7\u00F5es do armazenamento de chaves"}, + {"Keystore.alias.","Alias do armazenamento de chaves: "}, + {"Keystore.password.","Senha do armazenamento de chaves: "}, + {"Private.key.password.optional.", + "Senha da chave privada (opcional): "}, - // com.sun.security.auth.module.Krb5LoginModule - {"Kerberos username [[defUsername]]: ", - "Nome de usu\u00e1rio de Kerberos [{0}]: "}, - {"Kerberos password for [username]: ", - "Senha de Kerberos de {0}: "}, + // com.sun.security.auth.module.Krb5LoginModule + {"Kerberos.username.defUsername.", + "Nome do usu\u00E1rio de Kerberos [{0}]: "}, + {"Kerberos.password.for.username.", + "Senha de Kerberos de {0}: "}, - /*** EVERYTHING BELOW IS DEPRECATED ***/ + /*** EVERYTHING BELOW IS DEPRECATED ***/ - // com.sun.security.auth.PolicyFile - {": error parsing ", ": erro ao analisar "}, - {": ", ": "}, - {": error adding Permission ", ": erro ao adicionar permiss\u00e3o "}, - {" ", " "}, - {": error adding Entry ", ": erro ao adicionar entrada "}, - {"(", "("}, - {")", ")"}, - {"attempt to add a Permission to a readonly PermissionCollection", - "tentativa de adicionar uma permiss\u00e3o ao um PermissionCollection de somente leitura"}, + // com.sun.security.auth.PolicyFile + {".error.parsing.", ": erro de parse "}, + {"COLON", ": "}, + {".error.adding.Permission.", ": erro ao adicionar a Permiss\u00E3o "}, + {"SPACE", " "}, + {".error.adding.Entry.", ": erro ao adicionar a Entrada "}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection", + "tentativa de adicionar uma Permiss\u00E3o a um PermissionCollection somente para leitura"}, - // com.sun.security.auth.PolicyParser - {"expected keystore type", "tipo de armazenamento de chaves esperado"}, - {"can not specify Principal with a ", - "n\u00e3o \u00e9 poss\u00edvel especificar um principal com uma "}, - {"wildcard class without a wildcard name", - "de coringa sem um nome de coringa"}, - {"expected codeBase or SignedBy", "CodeBase ou SignedBy esperado"}, - {"only Principal-based grant entries permitted", - "somente \u00e9 permitido conceder entradas com base no principal"}, - {"expected permission entry", "entrada de permiss\u00e3o esperada"}, - {"number ", "n\u00famero "}, - {"expected ", "esperado "}, - {", read end of file", ", fim de arquivo lido"}, - {"expected ';', read end of file", "esperado ';', fim de arquivo lido"}, - {"line ", "linha "}, - {": expected '", ": esperado '"}, - {"', found '", "', encontrado '"}, - {"'", "'"}, + // com.sun.security.auth.PolicyParser + {"expected.keystore.type", "tipo de armazenamento de chaves esperado"}, + {"can.not.specify.Principal.with.a.", + "n\u00E3o \u00E9 poss\u00EDvel especificar um Principal com uma "}, + {"wildcard.class.without.a.wildcard.name", + "de curinga sem um nome de curinga"}, + {"expected.codeBase.or.SignedBy", "CodeBase ou SignedBy esperado"}, + {"only.Principal.based.grant.entries.permitted", + "somente \u00E9 permitido conceder entradas com base no Principal"}, + {"expected.permission.entry", "entrada de permiss\u00E3o esperada"}, + {"number.", "n\u00FAmero "}, + {"expected.", "esperado "}, + {".read.end.of.file", ", fim de arquivo lido"}, + {"expected.read.end.of.file", "esperado ';', fim de arquivo lido"}, + {"line.", "linha "}, + {".expected.", ": esperado '"}, + {".found.", "', encontrado '"}, + {"QUOTE", "'"}, - // SolarisPrincipals - {"SolarisNumericGroupPrincipal [Primary Group]: ", - "SolarisNumericGroupPrincipal [grupo principal]: "}, - {"SolarisNumericGroupPrincipal [Supplementary Group]: ", - "SolarisNumericGroupPrincipal [grupo complement\u00e1rio]: "}, - {"SolarisNumericUserPrincipal: ", - "SolarisNumericUserPrincipal: "}, - {"SolarisPrincipal: ", "SolarisPrincipal: "}, - {"provided null name", "nome nulo fornecido"} + // SolarisPrincipals + {"SolarisNumericGroupPrincipal.Primary.Group.", + "SolarisNumericGroupPrincipal [Grupo Principal]: "}, + {"SolarisNumericGroupPrincipal.Supplementary.Group.", + "SolarisNumericGroupPrincipal [Grupo Complementar]: "}, + {"SolarisNumericUserPrincipal.", + "SolarisNumericUserPrincipal: "}, + {"SolarisPrincipal.", "SolarisPrincipal: "}, + {"provided.null.name", "nome nulo fornecido"} }; @@ -149,6 +148,6 @@ public class AuthResources_pt_BR extends java.util.ListResourceBundle { * @return the contents of this ResourceBundle. */ public Object[][] getContents() { - return contents; + return contents; } } diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_sv.java b/jdk/src/share/classes/sun/security/util/AuthResources_sv.java index 8dcf0920f34..3fbec22f5da 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_sv.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_sv.java @@ -40,103 +40,103 @@ public class AuthResources_sv extends java.util.ListResourceBundle { private static final Object[][] contents = { // NT principals - {"invalid null input: value", "ogiltiga null-indata: {0}"}, - {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"}, - {"NTNumericCredential: name", "NTNumericCredential: {0}"}, - {"Invalid NTSid value", "Ogiltigt NTSid-v\u00e4rde"}, - {"NTSid: name", "NTSid: {0}"}, - {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"}, - {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"}, - {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"}, - {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"}, - {"NTUserPrincipal: name", "NTUserPrincipal: {0}"}, + {"invalid.null.input.value", "ogiltiga null-indata: {0}"}, + {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"}, + {"NTNumericCredential.name", "NTNumericCredential: {0}"}, + {"Invalid.NTSid.value", "Ogiltigt NTSid-v\u00E4rde"}, + {"NTSid.name", "NTSid: {0}"}, + {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"}, + {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"}, + {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"}, + {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"}, + {"NTUserPrincipal.name", "NTUserPrincipal: {0}"}, // UnixPrincipals - {"UnixNumericGroupPrincipal [Primary Group]: name", - "UnixNumericGroupPrincipal [prim\u00e4r grupp]: {0}"}, - {"UnixNumericGroupPrincipal [Supplementary Group]: name", - "UnixNumericGroupPrincipal [till\u00e4ggsgrupp]: {0}"}, - {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"}, - {"UnixPrincipal: name", "UnixPrincipal: {0}"}, + {"UnixNumericGroupPrincipal.Primary.Group.name", + "UnixNumericGroupPrincipal [prim\u00E4r grupp]: {0}"}, + {"UnixNumericGroupPrincipal.Supplementary.Group.name", + "UnixNumericGroupPrincipal [till\u00E4ggsgrupp]: {0}"}, + {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"}, + {"UnixPrincipal.name", "UnixPrincipal: {0}"}, // com.sun.security.auth.login.ConfigFile - {"Unable to properly expand config", "Det g\u00e5r inte att utvidga korrekt {0}"}, - {"extra_config (No such file or directory)", - "{0} (Det finns ingen s\u00e5dan fil eller katalog.)"}, - {"Configuration Error:\n\tNo such file or directory", - "Konfigurationsfel:\n\tDet finns ingen s\u00e5dan fil eller katalog."}, - {"Configuration Error:\n\tInvalid control flag, flag", + {"Unable.to.properly.expand.config", "Kan inte ut\u00F6ka korrekt {0}"}, + {"extra.config.No.such.file.or.directory.", + "{0} (det finns ingen s\u00E5dan fil eller katalog)"}, + {"Configuration.Error.No.such.file.or.directory", + "Konfigurationsfel:\n\tFilen eller katalogen finns inte"}, + {"Configuration.Error.Invalid.control.flag.flag", "Konfigurationsfel:\n\tOgiltig kontrollflagga, {0}"}, - {"Configuration Error:\n\tCan not specify multiple entries for appName", - "Konfigurationsfel:\n\tDet g\u00e5r inte att ange flera poster f\u00f6r {0}"}, - {"Configuration Error:\n\texpected [expect], read [end of file]", - "Konfigurationsfel:\n\tf\u00f6rv\u00e4ntade [{0}], l\u00e4ste [end of file]"}, - {"Configuration Error:\n\tLine line: expected [expect], found [value]", - "Konfigurationsfel:\n\tLine {0}: f\u00f6rv\u00e4ntade [{1}], hittade [{2}]"}, - {"Configuration Error:\n\tLine line: expected [expect]", - "Konfigurationsfel:\n\tLine {0}: f\u00f6rv\u00e4ntade [{1}]"}, - {"Configuration Error:\n\tLine line: system property [value] expanded to empty value", - "Konfigurationsfel:\n\tLine {0}: systemegenskapen [{1}] utvidgad till tomt v\u00e4rde"}, + {"Configuration.Error.Can.not.specify.multiple.entries.for.appName", + "Konfigurationsfel:\n\tKan inte ange flera poster f\u00F6r {0}"}, + {"Configuration.Error.expected.expect.read.end.of.file.", + "Konfigurationsfel:\n\tf\u00F6rv\u00E4ntade [{0}], l\u00E4ste [end of file]"}, + {"Configuration.Error.Line.line.expected.expect.found.value.", + "Konfigurationsfel:\n\tLine {0}: f\u00F6rv\u00E4ntade [{1}], hittade [{2}]"}, + {"Configuration.Error.Line.line.expected.expect.", + "Konfigurationsfel:\n\tLine {0}: f\u00F6rv\u00E4ntade [{1}]"}, + {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value", + "Konfigurationsfel:\n\tRad {0}: systemegenskapen [{1}] ut\u00F6kad till tomt v\u00E4rde"}, // com.sun.security.auth.module.JndiLoginModule - {"username: ","anv\u00e4ndarnamn: "}, - {"password: ","l\u00f6senord: "}, + {"username.","anv\u00E4ndarnamn: "}, + {"password.","l\u00F6senord: "}, // com.sun.security.auth.module.KeyStoreLoginModule - {"Please enter keystore information", - "Ange keystore-information"}, - {"Keystore alias: ","Keystore-alias: "}, - {"Keystore password: ","Keystore-l\u00f6senord: "}, - {"Private key password (optional): ", - "L\u00f6senord f\u00f6r personlig nyckel (valfritt): "}, + {"Please.enter.keystore.information", + "Ange nyckellagerinformation"}, + {"Keystore.alias.","Nyckellageralias: "}, + {"Keystore.password.","Nyckellagerl\u00F6senord: "}, + {"Private.key.password.optional.", + "L\u00F6senord f\u00F6r personlig nyckel (valfritt): "}, // com.sun.security.auth.module.Krb5LoginModule - {"Kerberos username [[defUsername]]: ", - "Kerberos-anv\u00e4ndarnamn [{0}]: "}, - {"Kerberos password for [username]: ", - "Kerberos-l\u00f6senord f\u00f6r {0}: "}, + {"Kerberos.username.defUsername.", + "Kerberos-anv\u00E4ndarnamn [{0}]: "}, + {"Kerberos.password.for.username.", + "Kerberos-l\u00F6senord f\u00F6r {0}: "}, /*** EVERYTHING BELOW IS DEPRECATED ***/ // com.sun.security.auth.PolicyFile - {": error parsing ", ": analysfel "}, - {": ", ": "}, - {": error adding Permission ", ": fel vid till\u00e4gg av beh\u00f6righet "}, - {" ", " "}, - {": error adding Entry ", ": fel vid till\u00e4gg av post "}, - {"(", "("}, - {")", ")"}, - {"attempt to add a Permission to a readonly PermissionCollection", - "f\u00f6rs\u00f6k att l\u00e4gga till beh\u00f6righet till skrivskyddad PermissionCollection"}, + {".error.parsing.", ": tolkningsfel "}, + {"COLON", ": "}, + {".error.adding.Permission.", ": fel vid till\u00E4gg av beh\u00F6righet "}, + {"SPACE", " "}, + {".error.adding.Entry.", ": fel vid till\u00E4gg av post "}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection", + "f\u00F6rs\u00F6k att l\u00E4gga till beh\u00F6righet till skrivskyddad PermissionCollection"}, // com.sun.security.auth.PolicyParser - {"expected keystore type", "f\u00f6rv\u00e4ntad keystore-typ"}, - {"can not specify Principal with a ", - "det g\u00e5r inte att specificera n\u00e5gon principal med "}, - {"wildcard class without a wildcard name", - "jokertecken f\u00f6r klass men inte f\u00f6r namn"}, - {"expected codeBase or SignedBy", "f\u00f6rv\u00e4ntade codeBase eller SignedBy"}, - {"only Principal-based grant entries permitted", - "enbart Principal-baserade poster till\u00e5tna"}, - {"expected permission entry", "f\u00f6rv\u00e4ntade beh\u00f6righetspost"}, - {"number ", "antal "}, - {"expected ", "f\u00f6rv\u00e4ntade "}, - {", read end of file", ", l\u00e4ste filslut"}, - {"expected ';', read end of file", "f\u00f6rv\u00e4ntade ';', l\u00e4ste filslut"}, - {"line ", "rad "}, - {": expected '", ": f\u00f6rv\u00e4ntade '"}, - {"', found '", "', hittade '"}, - {"'", "'"}, + {"expected.keystore.type", "f\u00F6rv\u00E4ntad nyckellagertyp"}, + {"can.not.specify.Principal.with.a.", + "kan inte ange identitetshavare med "}, + {"wildcard.class.without.a.wildcard.name", + "jokerteckenklass utan jokerteckennamn"}, + {"expected.codeBase.or.SignedBy", "f\u00F6rv\u00E4ntade codeBase eller SignedBy"}, + {"only.Principal.based.grant.entries.permitted", + "endast identitetshavarbaserade poster till\u00E5ts"}, + {"expected.permission.entry", "f\u00F6rv\u00E4ntade beh\u00F6righetspost"}, + {"number.", "antal "}, + {"expected.", "f\u00F6rv\u00E4ntade "}, + {".read.end.of.file", ", l\u00E4ste filslut"}, + {"expected.read.end.of.file", "f\u00F6rv\u00E4ntade ';', l\u00E4ste filslut"}, + {"line.", "rad "}, + {".expected.", ": f\u00F6rv\u00E4ntade '"}, + {".found.", "', hittade '"}, + {"QUOTE", "'"}, // SolarisPrincipals - {"SolarisNumericGroupPrincipal [Primary Group]: ", - "SolarisNumericGroupPrincipal [prim\u00e4r grupp]: "}, - {"SolarisNumericGroupPrincipal [Supplementary Group]: ", - "SolarisNumericGroupPrincipal [till\u00e4ggsgrupp]: "}, - {"SolarisNumericUserPrincipal: ", + {"SolarisNumericGroupPrincipal.Primary.Group.", + "SolarisNumericGroupPrincipal [prim\u00E4r grupp]: "}, + {"SolarisNumericGroupPrincipal.Supplementary.Group.", + "SolarisNumericGroupPrincipal [till\u00E4ggsgrupp]: "}, + {"SolarisNumericUserPrincipal.", "SolarisNumericUserPrincipal: "}, - {"SolarisPrincipal: ", "SolarisPrincipal: "}, - {"provided null name", "gav null-namn"} + {"SolarisPrincipal.", "SolarisPrincipal: "}, + {"provided.null.name", "angav null-namn"} }; diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java b/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java index 3e92c787748..9aa01fb41fb 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java @@ -40,103 +40,103 @@ public class AuthResources_zh_CN extends java.util.ListResourceBundle { private static final Object[][] contents = { // NT principals - {"invalid null input: value", "\u65e0\u6548\u7684\u7a7a\u8f93\u5165\uff1a {0}"}, - {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"}, - {"NTNumericCredential: name", "NTNumericCredential: {0}"}, - {"Invalid NTSid value", "\u65e0\u6548\u7684 NTSid \u503c"}, - {"NTSid: name", "NTSid: {0}"}, - {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"}, - {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"}, - {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"}, - {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"}, - {"NTUserPrincipal: name", "NTUserPrincipal: {0}"}, + {"invalid.null.input.value", "\u65E0\u6548\u7684\u7A7A\u8F93\u5165: {0}"}, + {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"}, + {"NTNumericCredential.name", "NTNumericCredential: {0}"}, + {"Invalid.NTSid.value", "\u65E0\u6548\u7684 NTSid \u503C"}, + {"NTSid.name", "NTSid: {0}"}, + {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"}, + {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"}, + {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"}, + {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"}, + {"NTUserPrincipal.name", "NTUserPrincipal: {0}"}, // UnixPrincipals - {"UnixNumericGroupPrincipal [Primary Group]: name", - "UnixNumericGroupPrincipal [\u4e3b\u7fa4\u7ec4]\uff1a {0}"}, - {"UnixNumericGroupPrincipal [Supplementary Group]: name", - "UnixNumericGroupPrincipal [\u9644\u52a0\u7fa4\u7ec4]\uff1a {0}"}, - {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"}, - {"UnixPrincipal: name", "UnixPrincipal\uff1a {0}"}, + {"UnixNumericGroupPrincipal.Primary.Group.name", + "UnixNumericGroupPrincipal [\u4E3B\u7EC4]: {0}"}, + {"UnixNumericGroupPrincipal.Supplementary.Group.name", + "UnixNumericGroupPrincipal [\u8865\u5145\u7EC4]: {0}"}, + {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"}, + {"UnixPrincipal.name", "UnixPrincipal: {0}"}, // com.sun.security.auth.login.ConfigFile - {"Unable to properly expand config", "\u65e0\u6cd5\u5b8c\u5168\u6269\u5145 {0}"}, - {"extra_config (No such file or directory)", - "{0} \uff08\u6ca1\u6709\u6b64\u6587\u4ef6\u6216\u76ee\u5f55\uff09"}, - {"Configuration Error:\n\tNo such file or directory", - "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u6ca1\u6709\u6b64\u6587\u4ef6\u6216\u76ee\u5f55"}, - {"Configuration Error:\n\tInvalid control flag, flag", - "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u65e0\u6548\u7684\u63a7\u5236\u6807\u8bb0\uff0c {0}"}, - {"Configuration Error:\n\tCan not specify multiple entries for appName", - "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u65e0\u6cd5\u6307\u5b9a\u591a\u4e2a\u9879\u76ee {0}"}, - {"Configuration Error:\n\texpected [expect], read [end of file]", - "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u9884\u671f\u7684 [{0}], \u8bfb\u53d6 [\u6587\u4ef6\u672b\u7aef]"}, - {"Configuration Error:\n\tLine line: expected [expect], found [value]", - "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u884c {0}: \u9884\u671f\u7684 [{1}], \u627e\u5230 [{2}]"}, - {"Configuration Error:\n\tLine line: expected [expect]", - "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u884c {0}: \u9884\u671f\u7684 [{1}]"}, - {"Configuration Error:\n\tLine line: system property [value] expanded to empty value", - "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u884c {0}: \u7cfb\u7edf\u5c5e\u6027 [{1}] \u6269\u5145\u81f3\u7a7a\u503c"}, + {"Unable.to.properly.expand.config", "\u65E0\u6CD5\u6B63\u786E\u6269\u5C55{0}"}, + {"extra.config.No.such.file.or.directory.", + "{0} (\u6CA1\u6709\u8FD9\u6837\u7684\u6587\u4EF6\u6216\u76EE\u5F55)"}, + {"Configuration.Error.No.such.file.or.directory", + "\u914D\u7F6E\u9519\u8BEF:\n\t\u6CA1\u6709\u6B64\u6587\u4EF6\u6216\u76EE\u5F55"}, + {"Configuration.Error.Invalid.control.flag.flag", + "\u914D\u7F6E\u9519\u8BEF: \n\t\u65E0\u6548\u7684\u63A7\u5236\u6807\u8BB0, {0}"}, + {"Configuration.Error.Can.not.specify.multiple.entries.for.appName", + "\u914D\u7F6E\u9519\u8BEF:\n\t\u65E0\u6CD5\u6307\u5B9A{0}\u7684\u591A\u4E2A\u6761\u76EE"}, + {"Configuration.Error.expected.expect.read.end.of.file.", + "\u914D\u7F6E\u9519\u8BEF: \n\t\u5E94\u4E3A [{0}], \u8BFB\u53D6\u7684\u662F [\u6587\u4EF6\u7ED3\u5C3E]"}, + {"Configuration.Error.Line.line.expected.expect.found.value.", + "\u914D\u7F6E\u9519\u8BEF: \n\t\u884C {0}: \u5E94\u4E3A [{1}], \u627E\u5230 [{2}]"}, + {"Configuration.Error.Line.line.expected.expect.", + "\u914D\u7F6E\u9519\u8BEF: \n\t\u884C {0}: \u5E94\u4E3A [{1}]"}, + {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value", + "\u914D\u7F6E\u9519\u8BEF: \n\t\u884C {0}: \u7CFB\u7EDF\u5C5E\u6027 [{1}] \u6269\u5C55\u5230\u7A7A\u503C"}, // com.sun.security.auth.module.JndiLoginModule - {"username: ","\u7528\u6237\u540d\uff1a "}, - {"password: ","\u5bc6\u7801\uff1a "}, + {"username.","\u7528\u6237\u540D: "}, + {"password.","\u53E3\u4EE4: "}, // com.sun.security.auth.module.KeyStoreLoginModule - {"Please enter keystore information", - "\u8bf7\u8f93\u5165 keystore \u4fe1\u606f"}, - {"Keystore alias: ","Keystore \u522b\u540d\uff1a "}, - {"Keystore password: ","Keystore \u5bc6\u7801\uff1a "}, - {"Private key password (optional): ", - "\u79c1\u4eba\u5173\u952e\u5bc6\u7801\uff08\u53ef\u9009\u7684\uff09\uff1a "}, + {"Please.enter.keystore.information", + "\u8BF7\u8F93\u5165\u5BC6\u94A5\u5E93\u4FE1\u606F"}, + {"Keystore.alias.","\u5BC6\u94A5\u5E93\u522B\u540D: "}, + {"Keystore.password.","\u5BC6\u94A5\u5E93\u53E3\u4EE4: "}, + {"Private.key.password.optional.", + "\u79C1\u6709\u5BC6\u94A5\u53E3\u4EE4 (\u53EF\u9009): "}, // com.sun.security.auth.module.Krb5LoginModule - {"Kerberos username [[defUsername]]: ", - "Kerberos \u7528\u6237\u540d [{0}]: "}, - {"Kerberos password for [username]: ", - " {0} \u7684 Kerberos \u5bc6\u7801: "}, + {"Kerberos.username.defUsername.", + "Kerberos \u7528\u6237\u540D [{0}]: "}, + {"Kerberos.password.for.username.", + "{0}\u7684 Kerberos \u53E3\u4EE4: "}, /*** EVERYTHING BELOW IS DEPRECATED ***/ // com.sun.security.auth.PolicyFile - {": error parsing ", "\uff1a\u8bed\u6cd5\u89e3\u6790\u9519\u8bef "}, - {": ", ": "}, - {": error adding Permission ", "\uff1a\u6dfb\u52a0\u6743\u9650\u9519\u8bef "}, - {" ", " "}, - {": error adding Entry ", "\u6dfb\u52a0\u9879\u76ee\u9519\u8bef "}, - {"(", "("}, - {")", ")"}, - {"attempt to add a Permission to a readonly PermissionCollection", - "\u8bd5\u56fe\u5c06\u6743\u9650\u6dfb\u52a0\u81f3\u53ea\u8bfb\u7684 PermissionCollection"}, + {".error.parsing.", ": \u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u65F6\u51FA\u9519 "}, + {"COLON", ": "}, + {".error.adding.Permission.", ": \u6DFB\u52A0\u6743\u9650\u65F6\u51FA\u9519 "}, + {"SPACE", " "}, + {".error.adding.Entry.", ": \u6DFB\u52A0\u6761\u76EE\u65F6\u51FA\u9519 "}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection", + "\u5C1D\u8BD5\u5C06\u6743\u9650\u6DFB\u52A0\u81F3\u53EA\u8BFB\u7684 PermissionCollection"}, // com.sun.security.auth.PolicyParser - {"expected keystore type", "\u9884\u671f\u7684 keystore \u7c7b\u578b"}, - {"can not specify Principal with a ", - "\u65e0\u6cd5\u4ee5\u6b64\u6765\u6307\u5b9a Principal "}, - {"wildcard class without a wildcard name", - "\u65e0\u901a\u914d\u5b57\u7b26\u540d\u79f0\u7684\u901a\u914d\u5b57\u7b26\u7c7b"}, - {"expected codeBase or SignedBy", "\u9884\u671f\u7684 codeBase \u6216 SignedBy"}, - {"only Principal-based grant entries permitted", - "\u53ea\u5141\u8bb8\u57fa\u4e8e Principal \u7684\u6388\u6743\u9879\u76ee"}, - {"expected permission entry", "\u9884\u671f\u7684\u6743\u9650\u9879\u76ee"}, - {"number ", "\u53f7\u7801 "}, - {"expected ", "\u9884\u671f\u7684 "}, - {", read end of file", "\uff0c\u8bfb\u53d6\u6587\u4ef6\u672b\u7aef"}, - {"expected ';', read end of file", "\u9884\u671f\u7684 ';', \u8bfb\u53d6\u6587\u4ef6\u672b\u7aef"}, - {"line ", "\u884c "}, - {": expected '", ": \u9884\u671f\u7684 '"}, - {"', found '", "', \u627e\u5230 '"}, - {"'", "'"}, + {"expected.keystore.type", "\u5E94\u4E3A\u5BC6\u94A5\u5E93\u7C7B\u578B"}, + {"can.not.specify.Principal.with.a.", + "\u6CA1\u6709\u901A\u914D\u7B26\u540D\u79F0, \u65E0\u6CD5\u4F7F\u7528"}, + {"wildcard.class.without.a.wildcard.name", + "\u901A\u914D\u7B26\u7C7B\u6307\u5B9A\u4E3B\u7528\u6237"}, + {"expected.codeBase.or.SignedBy", "\u5E94\u4E3A codeBase \u6216 SignedBy"}, + {"only.Principal.based.grant.entries.permitted", + "\u53EA\u5141\u8BB8\u57FA\u4E8E\u4E3B\u7528\u6237\u7684\u6388\u6743\u6761\u76EE"}, + {"expected.permission.entry", "\u5E94\u4E3A\u6743\u9650\u6761\u76EE"}, + {"number.", "\u7F16\u53F7 "}, + {"expected.", "\u5E94\u4E3A "}, + {".read.end.of.file", ", \u8BFB\u53D6\u7684\u662F\u6587\u4EF6\u7ED3\u5C3E"}, + {"expected.read.end.of.file", "\u5E94\u4E3A ';', \u8BFB\u53D6\u7684\u662F\u6587\u4EF6\u7ED3\u5C3E"}, + {"line.", "\u884C "}, + {".expected.", ": \u5E94\u4E3A '"}, + {".found.", "', \u627E\u5230 '"}, + {"QUOTE", "'"}, // SolarisPrincipals - {"SolarisNumericGroupPrincipal [Primary Group]: ", - "SolarisNumericGroupPrincipal [\u4e3b\u7fa4\u7ec4]\uff1a "}, - {"SolarisNumericGroupPrincipal [Supplementary Group]: ", - "SolarisNumericGroupPrincipal [\u9644\u52a0\u7fa4\u7ec4]\uff1a "}, - {"SolarisNumericUserPrincipal: ", + {"SolarisNumericGroupPrincipal.Primary.Group.", + "SolarisNumericGroupPrincipal [\u4E3B\u7EC4]: "}, + {"SolarisNumericGroupPrincipal.Supplementary.Group.", + "SolarisNumericGroupPrincipal [\u8865\u5145\u7EC4]: "}, + {"SolarisNumericUserPrincipal.", "SolarisNumericUserPrincipal: "}, - {"SolarisPrincipal: ", "SolarisPrincipal: "}, - {"provided null name", "\u5df2\u63d0\u4f9b\u7684\u7a7a\u540d\u79f0"} + {"SolarisPrincipal.", "SolarisPrincipal: "}, + {"provided.null.name", "\u63D0\u4F9B\u7684\u540D\u79F0\u4E3A\u7A7A\u503C"} }; diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java b/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java index 1cb58dd5873..5688f0c6f32 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java @@ -40,103 +40,103 @@ public class AuthResources_zh_TW extends java.util.ListResourceBundle { private static final Object[][] contents = { // NT principals - {"invalid null input: value", "\u7121\u6548\u7a7a\u8f38\u5165\uff1a {0}"}, - {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"}, - {"NTNumericCredential: name", "NTNumericCredential: {0}"}, - {"Invalid NTSid value", "\u7121\u6548 NTSid \u503c"}, - {"NTSid: name", "NTSid: {0}"}, - {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"}, - {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"}, - {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"}, - {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"}, - {"NTUserPrincipal: name", "NTUserPrincipal: {0}"}, + {"invalid.null.input.value", "\u7121\u6548\u7A7A\u503C\u8F38\u5165: {0}"}, + {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"}, + {"NTNumericCredential.name", "NTNumericCredential: {0}"}, + {"Invalid.NTSid.value", "\u7121\u6548 NTSid \u503C"}, + {"NTSid.name", "NTSid: {0}"}, + {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"}, + {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"}, + {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"}, + {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"}, + {"NTUserPrincipal.name", "NTUserPrincipal: {0}"}, // UnixPrincipals - {"UnixNumericGroupPrincipal [Primary Group]: name", - "UnixNumericGroupPrincipal [\u4e3b\u7fa4\u7d44]\uff1a {0}"}, - {"UnixNumericGroupPrincipal [Supplementary Group]: name", - "UnixNumericGroupPrincipal [\u9644\u52a0\u7fa4\u7d44]\uff1a {0}"}, - {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"}, - {"UnixPrincipal: name", "UnixPrincipal\uff1a {0}"}, + {"UnixNumericGroupPrincipal.Primary.Group.name", + "UnixNumericGroupPrincipal [\u4E3B\u7FA4\u7D44]: {0}"}, + {"UnixNumericGroupPrincipal.Supplementary.Group.name", + "UnixNumericGroupPrincipal [\u9644\u52A0\u7FA4\u7D44]: {0}"}, + {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"}, + {"UnixPrincipal.name", "UnixPrincipal: {0}"}, // com.sun.security.auth.login.ConfigFile - {"Unable to properly expand config", "\u7121\u6cd5\u5b8c\u5168\u64f4\u5145 {0}"}, - {"extra_config (No such file or directory)", - "{0} \uff08\u6c92\u6709\u6b64\u6a94\u6848\u6216\u76ee\u9304\uff09"}, - {"Configuration Error:\n\tNo such file or directory", - "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u6c92\u6709\u9019\u985e\u7684\u6a94\u6848\u6216\u76ee\u9304"}, - {"Configuration Error:\n\tInvalid control flag, flag", - "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u7121\u6548\u7684\u63a7\u5236\u65d7\u865f\uff0c {0}"}, - {"Configuration Error:\n\tCan not specify multiple entries for appName", - "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u7121\u6cd5\u6307\u5b9a\u591a\u91cd\u9805\u76ee {0}"}, - {"Configuration Error:\n\texpected [expect], read [end of file]", - "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u9810\u671f\u7684 [{0}], \u8b80\u53d6 [\u6a94\u6848\u672b\u7aef]"}, - {"Configuration Error:\n\tLine line: expected [expect], found [value]", - "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u884c {0}: \u9810\u671f\u7684 [{1}], \u767c\u73fe [{2}]"}, - {"Configuration Error:\n\tLine line: expected [expect]", - "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u884c {0}: \u9810\u671f\u7684 [{1}]"}, - {"Configuration Error:\n\tLine line: system property [value] expanded to empty value", - "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u884c {0}: \u7cfb\u7d71\u5c6c\u6027 [{1}] \u64f4\u5145\u81f3\u7a7a\u503c"}, + {"Unable.to.properly.expand.config", "\u7121\u6CD5\u9069\u7576\u5730\u64F4\u5145 {0}"}, + {"extra.config.No.such.file.or.directory.", + "{0} (\u6C92\u6709\u6B64\u6A94\u6848\u6216\u76EE\u9304)"}, + {"Configuration.Error.No.such.file.or.directory", + "\u7D44\u614B\u932F\u8AA4:\n\t\u7121\u6B64\u6A94\u6848\u6216\u76EE\u9304"}, + {"Configuration.Error.Invalid.control.flag.flag", + "\u7D44\u614B\u932F\u8AA4:\n\t\u7121\u6548\u7684\u63A7\u5236\u65D7\u6A19\uFF0C{0}"}, + {"Configuration.Error.Can.not.specify.multiple.entries.for.appName", + "\u7D44\u614B\u932F\u8AA4: \n\t\u7121\u6CD5\u6307\u5B9A\u591A\u91CD\u9805\u76EE {0}"}, + {"Configuration.Error.expected.expect.read.end.of.file.", + "\u7D44\u614B\u932F\u8AA4: \n\t\u9810\u671F\u7684 [{0}], \u8B80\u53D6 [end of file]"}, + {"Configuration.Error.Line.line.expected.expect.found.value.", + "\u7D44\u614B\u932F\u8AA4: \n\t\u884C {0}: \u9810\u671F\u7684 [{1}], \u767C\u73FE [{2}]"}, + {"Configuration.Error.Line.line.expected.expect.", + "\u7D44\u614B\u932F\u8AA4: \n\t\u884C {0}: \u9810\u671F\u7684 [{1}]"}, + {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value", + "\u7D44\u614B\u932F\u8AA4: \n\t\u884C {0}: \u7CFB\u7D71\u5C6C\u6027 [{1}] \u64F4\u5145\u81F3\u7A7A\u503C"}, // com.sun.security.auth.module.JndiLoginModule - {"username: ","\u4f7f\u7528\u8005\u540d\u7a31\uff1a "}, - {"password: ","\u5bc6\u78bc\uff1a "}, + {"username.","\u4F7F\u7528\u8005\u540D\u7A31: "}, + {"password.","\u5BC6\u78BC: "}, // com.sun.security.auth.module.KeyStoreLoginModule - {"Please enter keystore information", - "\u8acb\u8f38\u5165 keystore \u8cc7\u8a0a"}, - {"Keystore alias: ","Keystore \u5225\u540d\uff1a "}, - {"Keystore password: ","Keystore \u5bc6\u78bc\uff1a "}, - {"Private key password (optional): ", - "\u79c1\u4eba\u95dc\u9375\u5bc6\u78bc\uff08\u9078\u64c7\u6027\u7684\uff09\uff1a "}, + {"Please.enter.keystore.information", + "\u8ACB\u8F38\u5165\u91D1\u9470\u5132\u5B58\u5EAB\u8CC7\u8A0A"}, + {"Keystore.alias.","\u91D1\u9470\u5132\u5B58\u5EAB\u5225\u540D: "}, + {"Keystore.password.","\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC: "}, + {"Private.key.password.optional.", + "\u79C1\u4EBA\u91D1\u9470\u5BC6\u78BC (\u9078\u64C7\u6027\u7684): "}, // com.sun.security.auth.module.Krb5LoginModule - {"Kerberos username [[defUsername]]: ", - "Kerberos \u4f7f\u7528\u8005\u540d\u7a31 [{0}]: "}, - {"Kerberos password for [username]: ", - "Kerberos \u7684 {0} \u5bc6\u78bc\uff1a "}, + {"Kerberos.username.defUsername.", + "Kerberos \u4F7F\u7528\u8005\u540D\u7A31 [{0}]: "}, + {"Kerberos.password.for.username.", + "Kerberos \u5BC6\u78BC [{0}]: "}, /*** EVERYTHING BELOW IS DEPRECATED ***/ // com.sun.security.auth.PolicyFile - {": error parsing ", "\uff1a\u8a9e\u6cd5\u932f\u8aa4 "}, - {": ", ": "}, - {": error adding Permission ", "\uff1a\u65b0\u589e\u8a31\u53ef\u6b0a\u932f\u8aa4 "}, - {" ", " "}, - {": error adding Entry ", "\u65b0\u589e\u8f38\u5165\u932f\u8aa4 "}, - {"(", "("}, - {")", ")"}, - {"attempt to add a Permission to a readonly PermissionCollection", - "\u8a66\u8457\u65b0\u589e\u8a31\u53ef\u6b0a\u81f3\u552f\u8b80\u7684 PermissionCollection"}, + {".error.parsing.", ": \u5256\u6790\u932F\u8AA4 "}, + {"COLON", ": "}, + {".error.adding.Permission.", ": \u65B0\u589E\u6B0A\u9650\u932F\u8AA4 "}, + {"SPACE", " "}, + {".error.adding.Entry.", ": \u65B0\u589E\u8F38\u5165\u932F\u8AA4 "}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection", + "\u8A66\u8457\u65B0\u589E\u6B0A\u9650\u81F3\u552F\u8B80\u7684 PermissionCollection"}, // com.sun.security.auth.PolicyParser - {"expected keystore type", "\u9810\u671f\u7684 keystore \u985e\u578b"}, - {"can not specify Principal with a ", - "\u7121\u6cd5\u4ee5\u6b64\u4f86\u6307\u5b9a Principal "}, - {"wildcard class without a wildcard name", - "\u842c\u7528\u5b57\u5143\u985e\u5225\u672a\u9644\u842c\u7528\u5b57\u5143\u540d\u7a31"}, - {"expected codeBase or SignedBy", "\u9810\u671f\u7684 codeBase \u6216 SignedBy"}, - {"only Principal-based grant entries permitted", - "\u53ea\u5141\u8a31\u4ee5 Principal \u70ba\u57fa\u790e\u7684\u6388\u6b0a\u8f38\u5165"}, - {"expected permission entry", "\u9810\u671f\u8a31\u53ef\u8f38\u5165"}, - {"number ", "\u865f\u78bc "}, - {"expected ", "\u9810\u671f\u7684 "}, - {", read end of file", "\uff0c\u8b80\u53d6\u6a94\u6848\u672b\u7aef"}, - {"expected ';', read end of file", "\u9810\u671f\u7684 ';', \u8b80\u53d6\u6a94\u6848\u672b\u7aef"}, - {"line ", "\u884c "}, - {": expected '", ": \u9810\u671f '"}, - {"', found '", "', \u767c\u73fe '"}, - {"'", "'"}, + {"expected.keystore.type", "\u9810\u671F\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"}, + {"can.not.specify.Principal.with.a.", + "\u6C92\u6709\u842C\u7528\u5B57\u5143\u540D\u7A31\uFF0C\u7121\u6CD5\u6307\u5B9A"}, + {"wildcard.class.without.a.wildcard.name", + "\u542B\u6709\u842C\u7528\u5B57\u5143\u985E\u5225\u7684 Principal"}, + {"expected.codeBase.or.SignedBy", "\u9810\u671F\u7684 codeBase \u6216 SignedBy"}, + {"only.Principal.based.grant.entries.permitted", + "\u53EA\u5141\u8A31\u4EE5 Principal \u70BA\u57FA\u790E\u7684\u6388\u6B0A\u9805\u76EE"}, + {"expected.permission.entry", "\u9810\u671F\u7684\u6B0A\u9650\u9805\u76EE"}, + {"number.", "\u865F\u78BC "}, + {"expected.", "\u9810\u671F\u7684 "}, + {".read.end.of.file", "\uFF0C\u8B80\u53D6\u6A94\u6848\u7D50\u5C3E"}, + {"expected.read.end.of.file", "\u9810\u671F\u7684 ';'\uFF0C\u8B80\u53D6\u6A94\u6848\u7D50\u5C3E"}, + {"line.", "\u884C "}, + {".expected.", ": \u9810\u671F '"}, + {".found.", "'\uFF0C\u767C\u73FE '"}, + {"QUOTE", "'"}, // SolarisPrincipals - {"SolarisNumericGroupPrincipal [Primary Group]: ", - "SolarisNumericGroupPrincipal [\u4e3b\u7fa4\u7d44]\uff1a "}, - {"SolarisNumericGroupPrincipal [Supplementary Group]: ", - "SolarisNumericGroupPrincipal [\u9644\u52a0\u7fa4\u7d44]\uff1a "}, - {"SolarisNumericUserPrincipal: ", + {"SolarisNumericGroupPrincipal.Primary.Group.", + "SolarisNumericGroupPrincipal [\u4E3B\u7FA4\u7D44]: "}, + {"SolarisNumericGroupPrincipal.Supplementary.Group.", + "SolarisNumericGroupPrincipal [\u9644\u52A0\u7FA4\u7D44]: "}, + {"SolarisNumericUserPrincipal.", "SolarisNumericUserPrincipal: "}, - {"SolarisPrincipal: ", "SolarisPrincipal: "}, - {"provided null name", "\u63d0\u4f9b\u7684\u7a7a\u540d\u7a31"} + {"SolarisPrincipal.", "SolarisPrincipal: "}, + {"provided.null.name", "\u63D0\u4F9B\u7A7A\u503C\u540D\u7A31"} }; diff --git a/jdk/src/share/classes/sun/security/util/Resources_de.java b/jdk/src/share/classes/sun/security/util/Resources_de.java index d8746bf8e0a..5885d561cbb 100644 --- a/jdk/src/share/classes/sun/security/util/Resources_de.java +++ b/jdk/src/share/classes/sun/security/util/Resources_de.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -35,605 +35,627 @@ public class Resources_de extends java.util.ListResourceBundle { private static final Object[][] contents = { // shared (from jarsigner) - {" ", " "}, - {" ", " "}, - {" ", " "}, - {", ", ", "}, + {"SPACE", " "}, + {"2SPACE", " "}, + {"6SPACE", " "}, + {"COMMA", ", "}, // shared (from keytool) - {"\n", "\n"}, - {"*******************************************", + {"NEWLINE", "\n"}, + {"STAR", "*******************************************"}, - {"*******************************************\n\n", + {"STARNN", "*******************************************\n\n"}, - // keytool - {"keytool error: ", "Keytool-Fehler: "}, - {"Illegal option: ", "Unzul\u00e4ssige Option: "}, - {"Try keytool -help","Verwenden Sie den Befehl keytool -help"}, - {"Command option needs an argument.", "Befehlsoption {0} ben\u00f6tigt ein Argument."}, - {"Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified value.", - "Warnung: Keine Unterst\u00fctzung f\u00fcr unterschiedliche Speicher- und Schl\u00fcsselpassw\u00f6rter bei PKCS12 KeyStores. Der benutzerdefinierte Wert {0} wird ignoriert."}, - {"-keystore must be NONE if -storetype is {0}", - "-keystore muss NONE sein, wenn -storetype gleich {0} ist"}, - {"Too may retries, program terminated", - "Zu viele erneute Versuche, das Programm wird beendet."}, - {"-storepasswd and -keypasswd commands not supported if -storetype is {0}", - "Die Befehle -storepasswd und -keypasswd werden nicht unterst\u00fctzt, wenn -storetype gleich {0} ist"}, - {"-keypasswd commands not supported if -storetype is PKCS12", - "Befehle des Typs -keypasswd werden nicht unterst\u00fctzt, wenn -storetype gleich PKCS12"}, - {"-keypass and -new can not be specified if -storetype is {0}", - "Die Befehle -keypass und -new k\u00f6nnen nicht spezifiziert werden, wenn -storetype gleich {0} ist"}, - {"if -protected is specified, then -storepass, -keypass, and -new must not be specified", - "Wenn -protected angegeben ist, d\u00fcrfen -storepass, -keypass und -new nicht angegeben werden"}, - {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified", - "wenn -srcprotected angegeben ist, d\u00fcrfen -srcstorepass und -srckeypass nicht angegeben sein"}, - {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified", - "Wenn der Keystore nicht passwortgesch\u00fctzt ist, d\u00fcrfen -storepass, -keypass und -new nicht spezifiziert werden"}, - {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified", - "Wenn der Quell-Keystore nicht passwortgesch\u00fctzt ist, d\u00fcrfen -srcstorepass und -srckeypass nicht spezifiziert werden"}, - {"Validity must be greater than zero", - "G\u00fcltigkeit muss gr\u00f6\u00dfer als Null sein"}, - {"provName not a provider", "{0} kein Provider"}, - {"Usage error: no command provided", "Verwendungsfehler: kein Befehl angegeben"}, - {"Usage error, is not a legal command", "Verwendungsfehler: {0} ist kein g\u00fcltiger Befehl"}, - {"Source keystore file exists, but is empty: ", "Datei f\u00fcr Quell-Keystore ist zwar vorhanden, aber leer: "}, - {"Please specify -srckeystore", "Geben Sie \u0096srckeystore an"}, - {"Must not specify both -v and -rfc with 'list' command", - "-v und -rfc d\u00fcrfen bei Befehl 'list' nicht beide angegeben werden"}, - {"Key password must be at least 6 characters", - "Schl\u00fcsselpasswort muss mindestens 6 Zeichen lang sein"}, - {"New password must be at least 6 characters", - "Neues Passwort muss mindest 6 Zeichen lang sein"}, - {"Keystore file exists, but is empty: ", - "Keystore-Datei vorhanden, aber leer: "}, - {"Keystore file does not exist: ", - "Keystore-Datei nicht vorhanden: "}, - {"Must specify destination alias", "Zielalias muss angegeben werden."}, - {"Must specify alias", "Alias muss angegeben werden."}, - {"Keystore password must be at least 6 characters", - "Keystore-Passwort muss mindestens 6 Zeichen lang sein."}, - {"Enter keystore password: ", "Geben Sie das Keystore-Passwort ein: "}, - {"Enter source keystore password: ", "Geben Sie das Passwort f\u00fcr den Quell-Keystore ein: "}, - {"Enter destination keystore password: ", "Geben Sie das Passwort f\u00fcr den Ziel-Keystore ein: "}, - {"Keystore password is too short - must be at least 6 characters", - "Keystore-Passwort zu kurz - muss mindestens 6 Zeichen lang sein."}, - {"Unknown Entry Type", "Unbekannter Eintragstyp"}, - {"Too many failures. Alias not changed", "Zu viele Fehler. Alias nicht ge\u00e4ndert"}, - {"Entry for alias successfully imported.", - "Eintrag f\u00fcr Alias {0} erfolgreich importiert."}, - {"Entry for alias not imported.", "Eintrag f\u00fcr Alias {0} nicht importiert."}, - {"Problem importing entry for alias : .\nEntry for alias not imported.", - "Fehler beim Importieren des Eintrags f\u00fcr Alias {0}: {1}.\nEintrag f\u00fcr Alias {0} nicht importiert."}, - {"Import command completed: entries successfully imported, entries failed or cancelled", - "Importbefehl abgeschlossen: {0} Eintr\u00e4ge erfolgreich importiert, Fehler oder Abbruch bei {1} Eintr\u00e4gen"}, - {"Warning: Overwriting existing alias in destination keystore", - "Warnung: \u00dcberschreiben von vorhandenem Alias {0} in Ziel-Keystore"}, - {"Existing entry alias exists, overwrite? [no]: ", - "Eintrags-Alias {0} bereits vorhanden. \u00dcberschreiben? [Nein]: "}, - {"Too many failures - try later", "Zu viele Fehler - versuchen Sie es sp\u00e4ter noch einmal."}, - {"Certification request stored in file ", - "Zertifizierungsanforderung in Datei <{0}> gespeichert."}, - {"Submit this to your CA", "Reichen Sie dies bei Ihrem CA ein."}, - {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified", - "wenn kein Alias angegeben ist, m\u00fcssen destalias, srckeypass und destkeypass nicht angegeben werden"}, - {"Certificate stored in file ", - "Zertifikat in Datei <{0}> gespeichert."}, - {"Certificate reply was installed in keystore", - "Zertifikatantwort wurde in Keystore installiert."}, - {"Certificate reply was not installed in keystore", - "Zertifikatantwort wurde nicht in Keystore installiert."}, - {"Certificate was added to keystore", - "Zertifikat wurde zu Keystore hinzugef\u00fcgt."}, - {"Certificate was not added to keystore", - "Zertifikat wurde nicht zu Keystore hinzugef\u00fcgt."}, - {"[Storing ksfname]", "[{0} wird gesichert.]"}, - {"alias has no public key (certificate)", - "{0} hat keinen \u00f6ffentlichen Schl\u00fcssel (Zertifikat)."}, - {"Cannot derive signature algorithm", - "Signaturalgorithmus kann nicht abgeleitet werden."}, - {"Alias does not exist", - "Alias <{0}> existiert nicht."}, - {"Alias has no certificate", - "Alias <{0}> hat kein Zertifikat."}, - {"Key pair not generated, alias already exists", - "Schl\u00fcsselpaar wurde nicht erzeugt, Alias <{0}> ist bereits vorhanden."}, - {"Cannot derive signature algorithm", - "Signaturalgorithmus kann nicht abgeleitet werden."}, - {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name", - "Erstellen von Schl\u00fcsselpaar (Typ {1}, {0} Bit) und selbstunterzeichnetem Zertifikat ({2}) mit einer G\u00fcltigkeit von {3} Tagen\n\tf\u00fcr: {4}"}, - {"Enter key password for ", "Geben Sie das Passwort f\u00fcr <{0}> ein."}, - {"\t(RETURN if same as keystore password): ", - "\t(EINGABETASTE, wenn Passwort dasselbe wie f\u00fcr Keystore): "}, - {"Key password is too short - must be at least 6 characters", - "Schl\u00fcsselpasswort zu kurz - muss mindestens 6 Zeichen lang sein."}, - {"Too many failures - key not added to keystore", - "Zu viele Fehler - Schl\u00fcssel wurde nicht zu Keystore hinzugef\u00fcgt."}, - {"Destination alias already exists", + // keytool: Help part + {".OPTION.", " [OPTION]..."}, + {"Options.", "Optionen:"}, + {"Use.keytool.help.for.all.available.commands", + "\"keytool -help\" f\u00FCr alle verf\u00FCgbaren Befehle verwenden"}, + {"Key.and.Certificate.Management.Tool", + "Schl\u00FCssel- und Zertifikatsverwaltungstool"}, + {"Commands.", "Befehle:"}, + {"Use.keytool.command.name.help.for.usage.of.command.name", + "\"keytool -command_name -help\" f\u00FCr Verwendung von command_name verwenden"}, + // keytool: help: commands + {"Generates.a.certificate.request", + "Generiert eine Zertifikatanforderung"}, //-certreq + {"Changes.an.entry.s.alias", + "\u00C4ndert den Alias eines Eintrags"}, //-changealias + {"Deletes.an.entry", + "L\u00F6scht einen Eintrag"}, //-delete + {"Exports.certificate", + "Exportiert ein Zertifikat"}, //-exportcert + {"Generates.a.key.pair", + "Generiert ein Schl\u00FCsselpaar"}, //-genkeypair + {"Generates.a.secret.key", + "Generiert einen Secret Key"}, //-genseckey + {"Generates.certificate.from.a.certificate.request", + "Generiert ein Zertifikat aus einer Zertifikatanforderung"}, //-gencert + {"Generates.CRL", "Generiert eine CRL"}, //-gencrl + {"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.one.or.all.entries.from.another.keystore", + "Importiert einen oder alle Eintr\u00E4ge aus einem anderen Keystore"}, //-importkeystore + {"Clones.a.key.entry", + "Clont einen Schl\u00FCsseleintrag"}, //-keyclone + {"Changes.the.key.password.of.an.entry", + "\u00C4ndert das Schl\u00FCsselkennwort eines Eintrags"}, //-keypasswd + {"Lists.entries.in.a.keystore", + "Listet die Eintr\u00E4ge in einem Keystore auf"}, //-list + {"Prints.the.content.of.a.certificate", + "Druckt den Content eines Zertifikats"}, //-printcert + {"Prints.the.content.of.a.certificate.request", + "Druckt den Content einer Zertifikatanforderung"}, //-printcertreq + {"Prints.the.content.of.a.CRL.file", + "Druckt den Content einer CRL-Datei"}, //-printcrl + {"Generates.a.self.signed.certificate", + "Generiert ein selbst signiertes Zertifikat"}, //-selfcert + {"Changes.the.store.password.of.a.keystore", + "\u00C4ndert das Speicherkennwort eines Keystores"}, //-storepasswd + // keytool: help: options + {"alias.name.of.the.entry.to.process", + "Aliasname des zu verarbeitenden Eintrags"}, //-alias + {"destination.alias", + "Zielalias"}, //-destalias + {"destination.key.password", + "Zielschl\u00FCssel-Kennwort"}, //-destkeypass + {"destination.keystore.name", + "Ziel-Keystore-Name"}, //-destkeystore + {"destination.keystore.password.protected", + "Ziel-Keystore kennwortgesch\u00FCtzt"}, //-destprotected + {"destination.keystore.provider.name", + "Ziel-Keystore-Providername"}, //-destprovidername + {"destination.keystore.password", + "Ziel-Keystore-Kennwort"}, //-deststorepass + {"destination.keystore.type", + "Ziel-Keystore-Typ"}, //-deststoretype + {"distinguished.name", + "Distinguished Name"}, //-dname + {"X.509.extension", + "X.509-Erweiterung"}, //-ext + {"output.file.name", + "Ausgabedateiname"}, //-file and -outfile + {"input.file.name", + "Eingabedateiname"}, //-file and -infile + {"key.algorithm.name", + "Schl\u00FCsselalgorithmusname"}, //-keyalg + {"key.password", + "Schl\u00FCsselkennwort"}, //-keypass + {"key.bit.size", + "Schl\u00FCsselbitgr\u00F6\u00DFe"}, //-keysize + {"keystore.name", + "Keystore-Name"}, //-keystore + {"new.password", + "Neues Kennwort"}, //-new + {"do.not.prompt", + "Kein Prompt"}, //-noprompt + {"password.through.protected.mechanism", + "Kennwort \u00FCber gesch\u00FCtzten Mechanismus"}, //-protected + {"provider.argument", + "Providerargument"}, //-providerarg + {"provider.class.name", + "Providerklassenname"}, //-providerclass + {"provider.name", + "Providername"}, //-providername + {"provider.classpath", + "Provider-Classpath"}, //-providerpath + {"output.in.RFC.style", + "Ausgabe in RFC-Stil"}, //-rfc + {"signature.algorithm.name", + "Signaturalgorithmusname"}, //-sigalg + {"source.alias", + "Quellalias"}, //-srcalias + {"source.key.password", + "Quellschl\u00FCssel-Kennwort"}, //-srckeypass + {"source.keystore.name", + "Quell-Keystore-Name"}, //-srckeystore + {"source.keystore.password.protected", + "Quell-Keystore kennwortgesch\u00FCtzt"}, //-srcprotected + {"source.keystore.provider.name", + "Quell-Keystore-Providername"}, //-srcprovidername + {"source.keystore.password", + "Quell-Keystore-Kennwort"}, //-srcstorepass + {"source.keystore.type", + "Quell-Keystore-Typ"}, //-srcstoretype + {"SSL.server.host.and.port", + "SSL-Serverhost und -port"}, //-sslserver + {"signed.jar.file", + "Signierte JAR-Datei"}, //=jarfile + {"certificate.validity.start.date.time", + "Anfangsdatum/-zeit f\u00FCr Zertifikatsg\u00FCltigkeit"}, //-startdate + {"keystore.password", + "Keystore-Kennwort"}, //-storepass + {"keystore.type", + "Keystore-Typ"}, //-storetype + {"trust.certificates.from.cacerts", + "Zertifikaten aus cacerts vertrauen"}, //-trustcacerts + {"verbose.output", + "Verbose-Ausgabe"}, //-v + {"validity.number.of.days", + "G\u00FCltigkeitsdauer (Tage)"}, //-validity + {"Serial.ID.of.cert.to.revoke", + "Serielle ID des zu entziehenden Certs"}, //-id + // keytool: Running part + {"keytool.error.", "Keytool-Fehler: "}, + {"Illegal.option.", "Ung\u00FCltige Option: "}, + {"Illegal.value.", "Ung\u00FCltiger Wert: "}, + {"Unknown.password.type.", "Unbekannter Kennworttyp: "}, + {"Cannot.find.environment.variable.", + "Umgebungsvariable kann nicht gefunden werden: "}, + {"Cannot.find.file.", "Datei kann nicht gefunden werden: "}, + {"Command.option.flag.needs.an.argument.", "Befehlsoption {0} ben\u00F6tigt ein Argument."}, + {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.", + "Warnung: Keine Unterst\u00FCtzung f\u00FCr unterschiedliche Speicher- und Schl\u00FCsselkennw\u00F6rter bei PKCS12 KeyStores. Der benutzerdefinierte Wert {0} wird ignoriert."}, + {".keystore.must.be.NONE.if.storetype.is.{0}", + "-keystore muss NONE sein, wenn -storetype {0} ist"}, + {"Too.many.retries.program.terminated", + "Zu viele erneute Versuche. Programm wird beendet"}, + {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}", + "Befehle -storepasswd und -keypasswd werden nicht unterst\u00FCtzt, wenn -storetype {0} ist"}, + {".keypasswd.commands.not.supported.if.storetype.is.PKCS12", + "Befehle des Typs -keypasswd werden nicht unterst\u00FCtzt, wenn -storetype PKCS12 ist"}, + {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}", + "-keypass und -new k\u00F6nnen nicht angegeben werden, wenn -storetype {0} ist"}, + {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified", + "Wenn -protected angegeben ist, d\u00FCrfen -storepass, -keypass und -new nicht angegeben werden"}, + {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified", + "Wenn -srcprotected angegeben ist, d\u00FCrfen -srcstorepass und -srckeypass nicht angegeben werden"}, + {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified", + "Wenn der Keystore nicht kennwortgesch\u00FCtzt ist, d\u00FCrfen -storepass, -keypass und -new nicht angegeben werden"}, + {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", + "Wenn der Quell-Keystore nicht kennwortgesch\u00FCtzt ist, d\u00FCrfen -srcstorepass und -srckeypass nicht angegeben werden"}, + {"Illegal.startdate.value", "Ung\u00FCltiger Wert f\u00FCr Anfangsdatum"}, + {"Validity.must.be.greater.than.zero", + "G\u00FCltigkeit muss gr\u00F6\u00DFer als null sein"}, + {"provName.not.a.provider", "{0} kein Provider"}, + {"Usage.error.no.command.provided", "Verwendungsfehler: Kein Befehl angegeben"}, + {"Source.keystore.file.exists.but.is.empty.", "Quell-Keystore-Datei ist zwar vorhanden, ist aber leer: "}, + {"Please.specify.srckeystore", "Geben Sie -srckeystore an"}, + {"Must.not.specify.both.v.and.rfc.with.list.command", + "-v und -rfc d\u00FCrfen bei Befehl \"list\" nicht beide angegeben werden"}, + {"Key.password.must.be.at.least.6.characters", + "Schl\u00FCsselkennwort muss mindestens sechs Zeichen lang sein"}, + {"New.password.must.be.at.least.6.characters", + "Neues Kennwort muss mindestens sechs Zeichen lang sein"}, + {"Keystore.file.exists.but.is.empty.", + "Keystore-Datei ist vorhanden, ist aber leer: "}, + {"Keystore.file.does.not.exist.", + "Keystore-Datei ist nicht vorhanden: "}, + {"Must.specify.destination.alias", "Sie m\u00FCssen einen Zielalias angeben"}, + {"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.keystore.password.", "Keystore-Kennwort eingeben: "}, + {"Enter.source.keystore.password.", "Quell-Keystore-Kennwort eingeben: "}, + {"Enter.destination.keystore.password.", "Ziel-Keystore-Kennwort eingeben: "}, + {"Keystore.password.is.too.short.must.be.at.least.6.characters", + "Keystore-Kennwort ist zu kurz. Es muss mindestens sechs Zeichen lang sein"}, + {"Unknown.Entry.Type", "Unbekannter Eintragstyp"}, + {"Too.many.failures.Alias.not.changed", "Zu viele Fehler. Alias nicht ge\u00E4ndert"}, + {"Entry.for.alias.alias.successfully.imported.", + "Eintrag f\u00FCr Alias {0} erfolgreich importiert."}, + {"Entry.for.alias.alias.not.imported.", "Eintrag f\u00FCr Alias {0} nicht importiert."}, + {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.", + "Problem beim Importieren des Eintrags f\u00FCr Alias {0}: {1}.\nEintrag f\u00FCr Alias {0} nicht importiert."}, + {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled", + "Importbefehl abgeschlossen: {0} Eintr\u00E4ge erfolgreich importiert, {1} Eintr\u00E4ge nicht erfolgreich oder abgebrochen"}, + {"Warning.Overwriting.existing.alias.alias.in.destination.keystore", + "Warnung: Vorhandener Alias {0} in Ziel-Keystore wird \u00FCberschrieben"}, + {"Existing.entry.alias.alias.exists.overwrite.no.", + "Eintragsalias {0} ist bereits vorhanden. \u00DCberschreiben? [Nein]: "}, + {"Too.many.failures.try.later", "Zu viele Fehler. Versuchen Sie es sp\u00E4ter erneut"}, + {"Certification.request.stored.in.file.filename.", + "Zertifizierungsanforderung in Datei <{0}> gespeichert"}, + {"Submit.this.to.your.CA", "Leiten Sie dies an die CA weiter"}, + {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified", + "Wenn kein Alias angegeben ist, d\u00FCrfen destalias, srckeypass und destkeypass nicht angegeben werden"}, + {"Certificate.stored.in.file.filename.", + "Zertifikat in Datei <{0}> gespeichert"}, + {"Certificate.reply.was.installed.in.keystore", + "Zertifikatantwort wurde in Keystore installiert"}, + {"Certificate.reply.was.not.installed.in.keystore", + "Zertifikatantwort wurde nicht in Keystore installiert"}, + {"Certificate.was.added.to.keystore", + "Zertifikat wurde Keystore hinzugef\u00FCgt"}, + {"Certificate.was.not.added.to.keystore", + "Zertifikat wurde nicht zu Keystore hinzugef\u00FCgt"}, + {".Storing.ksfname.", "[{0} wird gesichert]"}, + {"alias.has.no.public.key.certificate.", + "{0} hat keinen Public Key (Zertifikat)"}, + {"Cannot.derive.signature.algorithm", + "Signaturalgorithmus kann nicht abgeleitet werden"}, + {"Alias.alias.does.not.exist", + "Alias <{0}> ist nicht vorhanden"}, + {"Alias.alias.has.no.certificate", + "Alias <{0}> hat kein Zertifikat"}, + {"Key.pair.not.generated.alias.alias.already.exists", + "Schl\u00FCsselpaar wurde nicht generiert. Alias <{0}> ist bereits vorhanden"}, + {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for", + "Generieren von Schl\u00FCsselpaar (Typ {1}, {0} Bit) und selbst signiertem Zertifikat ({2}) mit einer G\u00FCltigkeit von {3} Tagen\n\tf\u00FCr: {4}"}, + {"Enter.key.password.for.alias.", "Schl\u00FCsselkennwort f\u00FCr <{0}> eingeben"}, + {".RETURN.if.same.as.keystore.password.", + "\t(RETURN, wenn identisch mit Keystore-Kennwort): "}, + {"Key.password.is.too.short.must.be.at.least.6.characters", + "Schl\u00FCsselkennwort ist zu kurz. Es muss mindestens sechs Zeichen lang sein"}, + {"Too.many.failures.key.not.added.to.keystore", + "Zu viele Fehler. Schl\u00FCssel wurde nicht zu Keystore hinzugef\u00FCgt"}, + {"Destination.alias.dest.already.exists", "Zielalias <{0}> bereits vorhanden"}, - {"Password is too short - must be at least 6 characters", - "Passwort zu kurz - muss mindestens 6 Zeichen lang sein"}, - {"Too many failures. Key entry not cloned", - "Zu viele Fehler. Schl\u00fcsseleingabe wurde nicht dupliziert."}, - {"key password for ", "Schl\u00fcsselpasswort f\u00fcr <{0}>"}, - {"Keystore entry for already exists", - "Keystore-Eintrag f\u00fcr <{0}> bereits vorhanden"}, - {"Creating keystore entry for ...", - "Keystore-Eintrag f\u00fcr <{0}> wird erstellt ..."}, - {"No entries from identity database added", - "Keine Eintr\u00e4ge von Identit\u00e4tsdatenbank hinzugef\u00fcgt"}, - {"Alias name: alias", "Aliasname: {0}"}, - {"Creation date: keyStore.getCreationDate(alias)", + {"Password.is.too.short.must.be.at.least.6.characters", + "Kennwort ist zu kurz. Es muss mindestens sechs Zeichen lang sein"}, + {"Too.many.failures.Key.entry.not.cloned", + "Zu viele Fehler. Schl\u00FCsseleintrag wurde nicht geclont"}, + {"key.password.for.alias.", "Schl\u00FCsselkennwort f\u00FCr <{0}>"}, + {"Keystore.entry.for.id.getName.already.exists", + "Keystore-Eintrag f\u00FCr <{0}> bereits vorhanden"}, + {"Creating.keystore.entry.for.id.getName.", + "Keystore-Eintrag f\u00FCr <{0}> wird erstellt..."}, + {"No.entries.from.identity.database.added", + "Keine Eintr\u00E4ge aus Identity-Datenbank hinzugef\u00FCgt"}, + {"Alias.name.alias", "Aliasname: {0}"}, + {"Creation.date.keyStore.getCreationDate.alias.", "Erstellungsdatum: {0,date}"}, - {"alias, keyStore.getCreationDate(alias), ", + {"alias.keyStore.getCreationDate.alias.", "{0}, {1,date}, "}, - {"alias, ", "{0}, "}, - {"Entry type: ", "Eintragstyp: {0}"}, - {"Certificate chain length: ", "Zertifikatskettenl\u00e4nge: "}, - {"Certificate[(i + 1)]:", "Zertifikat[{0,number,integer}]:"}, - {"Certificate fingerprint (MD5): ", "Zertifikatsfingerabdruck (MD5): "}, - {"Entry type: trustedCertEntry\n", "Eintragstyp: trustedCertEntry\n"}, - {"trustedCertEntry,", "trustedCertEntry,"}, - {"Keystore type: ", "Keystore-Typ: "}, - {"Keystore provider: ", "Keystore-Provider: "}, - {"Your keystore contains keyStore.size() entry", - "Ihr Keystore enth\u00e4lt {0,number,integer} Eintrag/-\u00e4ge."}, - {"Your keystore contains keyStore.size() entries", - "Ihr Keystore enth\u00e4lt {0,number,integer} Eintr\u00e4ge."}, - {"Failed to parse input", "Eingabe konnte nicht analysiert werden."}, - {"Empty input", "Leere Eingabe"}, - {"Not X.509 certificate", "Kein X.509-Zertifikat"}, - {"Cannot derive signature algorithm", - "Signaturalgorithmus kann nicht abgeleitet werden."}, - {"alias has no public key", "{0} hat keinen \u00f6ffentlichen Schl\u00fcssel."}, - {"alias has no X.509 certificate", "{0} hat kein X.509-Zertifikat."}, - {"New certificate (self-signed):", "Neues Zertifikat (selbstsigniert):"}, - {"Reply has no certificates", "Antwort hat keine Zertifikate."}, - {"Certificate not imported, alias already exists", - "Zertifikat nicht importiert, Alias <{0}> bereits vorhanden"}, - {"Input not an X.509 certificate", "Eingabe kein X.509-Zertifikat"}, - {"Certificate already exists in keystore under alias ", - "Zertifikat in Keystore bereits unter Alias <{0}> vorhanden"}, - {"Do you still want to add it? [no]: ", - "M\u00f6chten Sie es trotzdem hinzuf\u00fcgen? [Nein]: "}, - {"Certificate already exists in system-wide CA keystore under alias ", - "Zertifikat in systemweiten CA-Keystore bereits unter Alias <{0}> vorhanden."}, - {"Do you still want to add it to your own keystore? [no]: ", - "M\u00f6chten Sie es trotzdem zu Ihrem eigenen Keystore hinzuf\u00fcgen? [Nein]: "}, - {"Trust this certificate? [no]: ", "Diesem Zertifikat vertrauen? [Nein]: "}, + {"alias.", "{0}, "}, + {"Entry.type.type.", "Eintragstyp: {0}"}, + {"Certificate.chain.length.", "Zertifikatkettenl\u00E4nge: "}, + {"Certificate.i.1.", "Zertifikat[{0,number,integer}]:"}, + {"Certificate.fingerprint.SHA1.", "Zertifikat-Fingerprint (SHA1): "}, + {"Entry.type.trustedCertEntry.", "Eintragstyp: trustedCertEntry\n"}, + {"trustedCertEntry.", "trustedCertEntry,"}, + {"Keystore.type.", "Keystore-Typ: "}, + {"Keystore.provider.", "Keystore-Provider: "}, + {"Your.keystore.contains.keyStore.size.entry", + "Keystore enth\u00E4lt {0,number,integer} Eintrag"}, + {"Your.keystore.contains.keyStore.size.entries", + "Keystore enth\u00E4lt {0,number,integer} Eintr\u00E4ge"}, + {"Failed.to.parse.input", "Eingabe konnte nicht geparst werden"}, + {"Empty.input", "Leere Eingabe"}, + {"Not.X.509.certificate", "Kein X.509-Zertifikat"}, + {"alias.has.no.public.key", "{0} hat keinen Public Key"}, + {"alias.has.no.X.509.certificate", "{0} hat kein X.509-Zertifikat"}, + {"New.certificate.self.signed.", "Neues Zertifikat (selbst signiert):"}, + {"Reply.has.no.certificates", "Antwort hat keine Zertifikate"}, + {"Certificate.not.imported.alias.alias.already.exists", + "Zertifikat nicht importiert. Alias <{0}> ist bereits vorhanden"}, + {"Input.not.an.X.509.certificate", "Eingabe kein X.509-Zertifikat"}, + {"Certificate.already.exists.in.keystore.under.alias.trustalias.", + "Zertifikat ist bereits unter Alias <{0}> im Keystore vorhanden"}, + {"Do.you.still.want.to.add.it.no.", + "M\u00F6chten Sie es trotzdem hinzuf\u00FCgen? [Nein]: "}, + {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.", + "Zertifikat ist bereits unter Alias <{0}> im systemweiten CA-Keystore vorhanden"}, + {"Do.you.still.want.to.add.it.to.your.own.keystore.no.", + "M\u00F6chten Sie es trotzdem zu Ihrem eigenen Keystore hinzuf\u00FCgen? [Nein]: "}, + {"Trust.this.certificate.no.", "Diesem Zertifikat vertrauen? [Nein]: "}, {"YES", "JA"}, - {"New prompt: ", "Neues {0}: "}, - {"Passwords must differ", "Passw\u00f6rter m\u00fcssen sich unterscheiden"}, - {"Re-enter new prompt: ", "Neues {0} nochmals eingeben: "}, - {"Re-enter new password: ", "Geben Sie das Passwort erneut ein: "}, - {"They don't match. Try again", "Keine \u00dcbereinstimmung. Versuchen Sie es erneut."}, - {"Enter prompt alias name: ", "Geben Sie den Aliasnamen von {0} ein: "}, - {"Enter new alias name\t(RETURN to cancel import for this entry): ", - "Geben Sie einen neuen Alias-Namen ein.\t(Dr\u00fccken Sie die Eingabetaste, um das Importieren dieses Eintrags abzubrechen.): "}, - {"Enter alias name: ", "Geben Sie den Aliasnamen ein: "}, - {"\t(RETURN if same as for )", - "\t(EINGABETASTE, wenn selber Name wie f\u00fcr <{0}>)"}, - {"*PATTERN* printX509Cert", - "Eigner: {0}\nAussteller: {1}\nSeriennummer: {2}\nG\u00fcltig von: {3} bis: {4}\nDigitaler Fingerabdruck des Zertifikats:\n\t MD5: {5}\n\t SHA1: {6}\n\t Unterschrift-Algorithmusname: {7}\n\t Version: {8}"}, - {"What is your first and last name?", + {"New.prompt.", "Neues {0}: "}, + {"Passwords.must.differ", "Kennw\u00F6rter m\u00FCssen sich unterscheiden"}, + {"Re.enter.new.prompt.", "Neues {0} erneut eingeben: "}, + {"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: "}, + {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.", + "Geben Sie einen neuen Aliasnamen ein\t(RETURN, um den Import dieses Eintrags abzubrechen): "}, + {"Enter.alias.name.", "Aliasnamen eingeben: "}, + {".RETURN.if.same.as.for.otherAlias.", + "\t(RETURN, wenn identisch mit <{0}>)"}, + {".PATTERN.printX509Cert", + "Eigent\u00FCmer: {0}\nAussteller: {1}\nSeriennummer: {2}\nG\u00FCltig von: {3} bis: {4}\nZertifikat-Fingerprints:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Signaturalgorithmusname: {8}\n\t Version: {9}"}, + {"What.is.your.first.and.last.name.", "Wie lautet Ihr Vor- und Nachname?"}, - {"What is the name of your organizational unit?", + {"What.is.the.name.of.your.organizational.unit.", "Wie lautet der Name Ihrer organisatorischen Einheit?"}, - {"What is the name of your organization?", + {"What.is.the.name.of.your.organization.", "Wie lautet der Name Ihrer Organisation?"}, - {"What is the name of your City or Locality?", + {"What.is.the.name.of.your.City.or.Locality.", "Wie lautet der Name Ihrer Stadt oder Gemeinde?"}, - {"What is the name of your State or Province?", - "Wie lautet der Name Ihres Bundeslandes oder Ihrer Provinz?"}, - {"What is the two-letter country code for this unit?", - "Wie lautet der Landescode (zwei Buchstaben) f\u00fcr diese Einheit?"}, - {"Is correct?", "Ist {0} richtig?"}, + {"What.is.the.name.of.your.State.or.Province.", + "Wie lautet der Name Ihres Bundeslands?"}, + {"What.is.the.two.letter.country.code.for.this.unit.", + "Wie lautet der L\u00E4ndercode (zwei Buchstaben) f\u00FCr diese Einheit?"}, + {"Is.name.correct.", "Ist {0} richtig?"}, {"no", "Nein"}, {"yes", "Ja"}, {"y", "J"}, - {" [defaultValue]: ", " [{0}]: "}, - {"Alias has no key", - "Alias <{0}> verf\u00fcgt \u00fcber keinen Schl\u00fcssel"}, - {"Alias references an entry type that is not a private key entry. The -keyclone command only supports cloning of private key entries", - "Alias <{0}> verweist auf einen Eintragstyp, der nicht einem Eintrag f\u00fcr einen privaten Schl\u00fcssel entspricht. Der Befehl -keyclone unterst\u00fctzt nur das Klonen von privaten Schl\u00fcsseleintr\u00e4gen"}, + {".defaultValue.", " [{0}]: "}, + {"Alias.alias.has.no.key", + "Alias <{0}> verf\u00FCgt \u00FCber keinen Schl\u00FCssel"}, + {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key", + "Alias <{0}> verweist auf einen Eintragstyp, der kein Private Key-Eintrag ist. Der Befehl -keyclone unterst\u00FCtzt nur das Clonen von Private Key-Eintr\u00E4gen"}, - {"***************** WARNING WARNING WARNING *****************", - "***************** WARNUNG WARNUNG WARNUNG *****************"}, + {".WARNING.WARNING.WARNING.", + "***************** WARNING WARNING WARNING *****************"}, + {"Signer.d.", "Signaturgeber #%d:"}, + {"Timestamp.", "Zeitstempel:"}, + {"Signature.", "Signatur:"}, + {"CRLs.", "CRLs:"}, + {"Certificate.owner.", "Zertifikateigent\u00FCmer: "}, + {"Not.a.signed.jar.file", "Keine signierte JAR-Datei"}, + {"No.certificate.from.the.SSL.server", + "Kein Zertifikat vom SSL-Server"}, // Translators of the following 5 pairs, ATTENTION: // the next 5 string pairs are meant to be combined into 2 paragraphs, // 1+3+4 and 2+3+5. make sure your translation also does. - {"* The integrity of the information stored in your keystore *", - "* Die Integrit\u00e4t der in Ihrem Keystore gespeicherten Informationen *"}, - {"* The integrity of the information stored in the srckeystore*", - "* Die Integrit\u00e4t der in srckeystore gespeicherten Informationen*"}, - {"* has NOT been verified! In order to verify its integrity, *", - "* ist NICHT verifiziert worden! Damit die Integrit\u00e4t verifiziert werden kann, *"}, - {"* you must provide your keystore password. *", - "* m\u00fcssen Sie Ihr Keystore-Passwort eingeben. *"}, - {"* you must provide the srckeystore password. *", - "* Sie m\u00fcssen das Passwort f\u00fcr srckeystore angeben. *"}, + {".The.integrity.of.the.information.stored.in.your.keystore.", + "* Integrit\u00E4t der im Keystore gespeicherten Informationen *"}, + {".The.integrity.of.the.information.stored.in.the.srckeystore.", + "* Integrit\u00E4t der in srckeystore gespeicherten Informationen*"}, + {".has.NOT.been.verified.In.order.to.verify.its.integrity.", + "* ist NICHT verifiziert worden. Damit die Integrit\u00E4t verifiziert werden kann, *"}, + {".you.must.provide.your.keystore.password.", + "* m\u00FCssen Sie Ihr Keystore-Kennwort angeben. *"}, + {".you.must.provide.the.srckeystore.password.", + "* m\u00FCssen Sie das Kennwort f\u00FCr srckeystore angeben. *"}, - {"Certificate reply does not contain public key for ", - "Zertifikatantwort enth\u00e4lt keinen \u00f6ffentlichen Schl\u00fcssel f\u00fcr <{0}>."}, - {"Incomplete certificate chain in reply", - "Unvollst\u00e4ndige Zertifikatskette in Antwort"}, - {"Certificate chain in reply does not verify: ", - "Zertifikatskette in Antwort verifiziert nicht: "}, - {"Top-level certificate in reply:\n", - "Toplevel-Zertifikat in Antwort:\n"}, - {"... is not trusted. ", "... wird nicht vertraut. "}, - {"Install reply anyway? [no]: ", "Antwort trotzdem installieren? [Nein]: "}, + {"Certificate.reply.does.not.contain.public.key.for.alias.", + "Zertifikatantwort enth\u00E4lt keinen Public Key f\u00FCr <{0}>"}, + {"Incomplete.certificate.chain.in.reply", + "Unvollst\u00E4ndige Zertifikatkette in Antwort"}, + {"Certificate.chain.in.reply.does.not.verify.", + "Zertifikatkette in Antwort verifiziert nicht: "}, + {"Top.level.certificate.in.reply.", + "Zertifikat der obersten Ebene in Antwort:\n"}, + {".is.not.trusted.", "... ist nicht vertrauensw\u00FCrdig. "}, + {"Install.reply.anyway.no.", "Antwort trotzdem installieren? [Nein]: "}, {"NO", "NEIN"}, - {"Public keys in reply and keystore don't match", - "\u00d6ffentliche Schl\u00fcssel in Antwort und Keystore stimmen nicht \u00fcberein."}, - {"Certificate reply and certificate in keystore are identical", - "Zertifikatantwort und Zertifikat in Keystore sind identisch."}, - {"Failed to establish chain from reply", - "Kette konnte nicht aus Antwort entnommen werden."}, + {"Public.keys.in.reply.and.keystore.don.t.match", + "Public Keys in Antwort und Keystore stimmen nicht \u00FCberein"}, + {"Certificate.reply.and.certificate.in.keystore.are.identical", + "Zertifikatantwort und Zertifikat in Keystore sind identisch"}, + {"Failed.to.establish.chain.from.reply", + "Kette konnte der Antwort nicht entnommen werden"}, {"n", "N"}, - {"Wrong answer, try again", "Falsche Antwort, versuchen Sie es noch einmal."}, - {"Secret key not generated, alias already exists", - "Geheimschl\u00fcssel wurde nicht erstellt, Alias <{0}> bereits vorhanden"}, - {"Please provide -keysize for secret key generation", - "Geben Sie -keysize zum Erstellen eines Geheimschl\u00fcssels an"}, - {"keytool usage:\n", "Keytool-Syntax:\n"}, + {"Wrong.answer.try.again", "Falsche Antwort. Wiederholen Sie den Vorgang"}, + {"Secret.key.not.generated.alias.alias.already.exists", + "Secret Key wurde nicht generiert. Alias <{0}> ist bereits vorhanden"}, + {"Please.provide.keysize.for.secret.key.generation", + "Geben Sie -keysize zum Erstellen eines Secret Keys an"}, - {"Extensions: ", "Erweiterungen: "}, - - {"-certreq [-v] [-protected]", - "-certreq [-v] [-protected]"}, - {"\t [-alias ] [-sigalg ]", - "\t [-alias ] [-sigalg ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - {"\t [-keystore ] [-storepass ]", - "\t [-keystore ] [-storepass ]"}, - {"\t [-storetype ] [-providername ]", - "\t [-storetype ] [-providername ]"}, - {"\t [-providerclass [-providerarg ]] ...", - "\t [-providerclass [-providerarg ]] ..."}, - {"\t [-providerpath ]", - "\t [-providerpath ]"}, - {"-delete [-v] [-protected] -alias ", - "-delete [-v] [-protected] -alias "}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-export [-v] [-rfc] [-protected]", - // "-export [-v] [-rfc] [-protected]"}, - {"-exportcert [-v] [-rfc] [-protected]", - "-exportcert [-v] [-rfc] [-protected]"}, - {"\t [-alias ] [-file ]", - "\t [-alias ] [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-genkey [-v] [-protected]", - // "-genkey [-v] [-protected]"}, - {"-genkeypair [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-keyalg ] [-keysize ]", - "\t [-keyalg ] [-keysize ]"}, - {"\t [-sigalg ] [-dname ]", - "\t [-sigalg ] [-dname ]"}, - {"\t [-validity ] [-keypass ]", - "\t [-validity ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-genseckey [-v] [-protected]", - "-genseckey [-v] [-protected]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-help", "-help"}, - //{"-identitydb [-v] [-protected]", - // "-identitydb [-v] [-protected]"}, - //{"\t [-file ]", "\t [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-import [-v] [-noprompt] [-trustcacerts] [-protected]", - // "-import [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"-importcert [-v] [-noprompt] [-trustcacerts] [-protected]", - "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-alias ] [-keypass ]", - "\t [-alias ] [-keypass ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-importkeystore [-v] ", - "-importkeystore [-v] "}, - {"\t [-srckeystore ] [-destkeystore ]", - "\t [-srckeystore ] [-destkeystore ]"}, - {"\t [-srcstoretype ] [-deststoretype ]", - "\t [-srcstoretype ] [-deststoretype ]"}, - {"\t [-srcprotected] [-destprotected]", - "\t [-srcprotected] [-destprotected]"}, - {"\t [-srcstorepass ] [-deststorepass ]", - "\t [-srcstorepass ] [-deststorepass ]"}, - {"\t [-srcprovidername ]\n\t [-destprovidername ]", // Zeile zu lang, zwei Zeilen verwenden - "\t [-srcprovidername ]\n\t [-destprovidername ]"}, - {"\t [-srcalias [-destalias ]", - "\t [-srcalias [-destalias ]"}, - {"\t [-srckeypass ] [-destkeypass ]]", - "\t [-srckeypass ] [-destkeypass ]]"}, - {"\t [-noprompt]", "\t [-noprompt]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-changealias [-v] [-protected] -alias -destalias ", - "-changealias [-v] [-protected] -alias -destalias "}, - {"\t [-keypass ]", "\t [-keypass ]"}, - - //{"-keyclone [-v] [-protected]", - // "-keyclone [-v] [-protected]"}, - //{"\t [-alias ] -dest ", - // "\t [-alias ] -dest "}, - //{"\t [-keypass ] [-new ]", - // "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-keypasswd [-v] [-alias ]", - "-keypasswd [-v] [-alias ]"}, - {"\t [-keypass ] [-new ]", - "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-list [-v | -rfc] [-protected]", - "-list [-v | -rfc] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-printcert [-v] [-file ]", - "-printcert [-v] [-file ]"}, - - //{"-selfcert [-v] [-protected]", - // "-selfcert [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - //{"\t [-dname ] [-validity ]", - // "\t [-dname ] [-validity ]"}, - //{"\t [-keypass ] [-sigalg ]", - // "\t [-keypass ] [-sigalg ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-storepasswd [-v] [-new ]", - "-storepasswd [-v] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ + {"Extensions.", "Erweiterungen: "}, + {".Empty.value.", "(Leerer Wert)"}, + {"Extension.Request.", "Erweiterungsanforderung:"}, + {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.", + "PKCS #10-Zertifikatanforderung (Version 1.0)\nSubjekt: %s\nPublic Key: %s Format %s Schl\u00FCssel\n"}, + {"Unknown.keyUsage.type.", "Unbekannter keyUsage-Typ: "}, + {"Unknown.extendedkeyUsage.type.", "Unbekannter extendedkeyUsage-Typ: "}, + {"Unknown.AccessDescription.type.", "Unbekannter AccessDescription-Typ: "}, + {"Unrecognized.GeneralName.type.", "Unbekannter GeneralName-Typ: "}, + {"This.extension.cannot.be.marked.as.critical.", + "Erweiterung kann nicht als \"Kritisch\" markiert werden. "}, + {"Odd.number.of.hex.digits.found.", "Ungerade Anzahl hexadezimaler Ziffern gefunden: "}, + {"Unknown.extension.type.", "Unbekannter Erweiterungstyp: "}, + {"command.{0}.is.ambiguous.", "Befehl {0} ist mehrdeutig:"}, // policytool - {"Warning: A public key for alias 'signers[i]' does not exist. Make sure a KeyStore is properly configured.", - "Warnung: Kein \u00f6ffentlicher Schl\u00fcssel f\u00fcr Alias {0} vorhanden. Vergewissern Sie sich, dass der KeyStore ordnungsgem\u00e4\u00df konfiguriert ist."}, - {"Warning: Class not found: class", "Warnung: Klasse nicht gefunden: {0}"}, - {"Warning: Invalid argument(s) for constructor: arg", - "Warnung: Ung\u00fcltige(s) Argument(e) f\u00fcr Konstruktor: {0}"}, - {"Illegal Principal Type: type", "Unzul\u00e4ssiger Principal-Typ: {0}"}, - {"Illegal option: option", "Unzul\u00e4ssige Option: {0}"}, - {"Usage: policytool [options]", "Syntax: policytool [Optionen]"}, - {" [-file ] policy file location", - " [-file ] Verzeichnis der Richtliniendatei"}, + {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.", + "Warnung: Kein Public Key f\u00FCr Alias {0} vorhanden. Vergewissern Sie sich, dass der KeyStore ordnungsgem\u00E4\u00DF konfiguriert ist."}, + {"Warning.Class.not.found.class", "Warnung: Klasse nicht gefunden: {0}"}, + {"Warning.Invalid.argument.s.for.constructor.arg", + "Warnung: Ung\u00FCltige(s) Argument(e) f\u00FCr Constructor: {0}"}, + {"Illegal.Principal.Type.type", "Ung\u00FCltiger Principal-Typ: {0}"}, + {"Illegal.option.option", "Ung\u00FCltige Option: {0}"}, + {"Usage.policytool.options.", "Verwendung: policytool [Optionen]"}, + {".file.file.policy.file.location", + " [-file ] Policy-Dateiverzeichnis"}, {"New", "Neu"}, - {"Open", "\u00d6ffnen"}, + {"Open", "\u00D6ffnen"}, {"Save", "Speichern"}, - {"Save As", "Speichern unter"}, - {"View Warning Log", "Warnungsprotokoll anzeigen"}, + {"Save.As", "Speichern unter"}, + {"View.Warning.Log", "Warnungslog anzeigen"}, {"Exit", "Beenden"}, - {"Add Policy Entry", "Richtlinieneintrag hinzuf\u00fcgen"}, - {"Edit Policy Entry", "Richtlinieneintrag bearbeiten"}, - {"Remove Policy Entry", "Richtlinieneintrag l\u00f6schen"}, + {"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 characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name.", - "Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name."}, + {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes", + "Warnung: M\u00F6glicherweise enth\u00E4lt der Dateiname Escape-Zeichen mit Backslash. Es ist nicht notwendig, Backslash-Zeichen zu escapen (das Tool f\u00FChrt dies automatisch beim Schreiben des Policy-Contents in den persistenten Speicher aus).\n\nKlicken Sie auf \"Beibehalten\", um den eingegebenen Namen beizubehalten oder auf \"Bearbeiten\", um den Namen zu bearbeiten."}, - {"Add Public Key Alias", "Alias f\u00fcr \u00f6ffentlichen Schl\u00fcssel hinzuf\u00fcgen"}, - {"Remove Public Key Alias", "Alias f\u00fcr \u00f6ffentlichen Schl\u00fcssel l\u00f6schen"}, + {"Add.Public.Key.Alias", "Public Key-Alias hinzuf\u00FCgen"}, + {"Remove.Public.Key.Alias", "Public Key-Alias entfernen"}, {"File", "Datei"}, {"KeyStore", "KeyStore"}, - {"Policy File:", "Richtliniendatei:"}, - {"Could not open policy file: policyFile: e.toString()", - "Richtliniendatei konnte nicht ge\u00f6ffnet werden: {0}: {1}"}, - {"Policy Tool", "Richtlinientool"}, - {"Errors have occurred while opening the policy configuration. View the Warning Log for more information.", - "Beim \u00d6ffnen der Richtlinienkonfiguration sind Fehler aufgetreten. Weitere Informationen finden Sie im Warnungsprotokoll."}, + {"Policy.File.", "Policy-Datei:"}, + {"Could.not.open.policy.file.policyFile.e.toString.", + "Policy-Datei konnte nicht ge\u00F6ffnet werden: {0}: {1}"}, + {"Policy.Tool", "Policy-Tool"}, + {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.", + "Beim \u00D6ffnen der Policy-Konfiguration sind Fehler aufgetreten. Weitere Informationen finden Sie im Warnungslog."}, {"Error", "Fehler"}, {"OK", "OK"}, {"Status", "Status"}, {"Warning", "Warnung"}, - {"Permission: ", + {"Permission.", "Berechtigung: "}, - {"Principal Type:", "Principal-Typ:"}, - {"Principal Name:", "Principal-Name:"}, - {"Target Name: ", + {"Principal.Type.", "Principal-Typ:"}, + {"Principal.Name.", "Principal-Name:"}, + {"Target.Name.", "Zielname: "}, - {"Actions: ", + {"Actions.", "Aktionen: "}, - {"OK to overwrite existing file filename?", - "Vorhandene Datei {0} \u00fcberschreiben?"}, + {"OK.to.overwrite.existing.file.filename.", + "Vorhandene Datei {0} \u00FCberschreiben?"}, {"Cancel", "Abbrechen"}, - {"CodeBase:", "Code-Basis:"}, - {"SignedBy:", "Signiert von:"}, - {"Add Principal", "Principal hinzuf\u00fcgen"}, - {"Edit Principal", "Principal bearbeiten"}, - {"Remove Principal", "Principal l\u00f6schen"}, - {"Principals:", "Principals:"}, - {" Add Permission", " Berechtigung hinzuf\u00fcgen"}, - {" Edit Permission", " Berechtigung \u00e4ndern"}, - {"Remove Permission", "Berechtigung l\u00f6schen"}, + {"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"}, {"Done", "Fertig"}, - {"KeyStore URL:", "KeyStore-URL:"}, - {"KeyStore Type:", "KeyStore-Typ:"}, - {"KeyStore Provider:", "KeyStore-Anbieter:"}, - {"KeyStore Password URL:", "KeyStore-Passwort-URL:"}, + {"KeyStore.URL.", "KeyStore-URL:"}, + {"KeyStore.Type.", "KeyStore-Typ:"}, + {"KeyStore.Provider.", "KeyStore-Provider:"}, + {"KeyStore.Password.URL.", "KeyStore-Kennwort-URL:"}, {"Principals", "Principals"}, - {" Edit Principal:", " Principal bearbeiten:"}, - {" Add New Principal:", " Neuen Principal hinzuf\u00fcgen:"}, + {".Edit.Principal.", " Principal bearbeiten:"}, + {".Add.New.Principal.", " Neuen Principal hinzuf\u00FCgen:"}, {"Permissions", "Berechtigungen"}, - {" Edit Permission:", " Berechtigung \u00e4ndern:"}, - {" Add New Permission:", " Neue Berechtigung hinzuf\u00fcgen:"}, - {"Signed By:", "Signiert von:"}, - {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name", - "Principal kann nicht mit einer Wildcard-Klasse ohne Wildcard-Namen angegeben werden"}, - {"Cannot Specify Principal without a Name", + {".Edit.Permission.", " Berechtigung bearbeiten:"}, + {".Add.New.Permission.", " Neue Berechtigung hinzuf\u00FCgen:"}, + {"Signed.By.", "Signiert von:"}, + {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name", + "Principal kann nicht mit einer Platzhalterklasse ohne Platzhalternamen angegeben werden"}, + {"Cannot.Specify.Principal.without.a.Name", "Principal kann nicht ohne einen Namen angegeben werden"}, - {"Permission and Target Name must have a value", - "Berechtigung und Zielname m\u00fcssen einen Wert haben"}, - {"Remove this Policy Entry?", "Diesen Richtlinieneintrag l\u00f6schen?"}, - {"Overwrite File", "Datei \u00fcberschreiben"}, - {"Policy successfully written to filename", - "Richtlinien erfolgreich in {0} geschrieben"}, - {"null filename", "Null als Dateiname"}, - {"Save changes?", "\u00c4nderungen speichern?"}, + {"Permission.and.Target.Name.must.have.a.value", + "Berechtigung und Zielname m\u00FCssen einen Wert haben"}, + {"Remove.this.Policy.Entry.", "Diesen Policy-Eintrag entfernen?"}, + {"Overwrite.File", "Datei \u00FCberschreiben"}, + {"Policy.successfully.written.to.filename", + "Policy erfolgreich in {0} geschrieben"}, + {"null.filename", "Null-Dateiname"}, + {"Save.changes.", "\u00C4nderungen speichern?"}, {"Yes", "Ja"}, {"No", "Nein"}, - {"Policy Entry", "Richtlinieneintrag"}, - {"Save Changes", "\u00c4nderungen speichern"}, - {"No Policy Entry selected", "Kein Richtlinieneintrag ausgew\u00e4hlt"}, - {"Unable to open KeyStore: ex.toString()", - "KeyStore konnte nicht ge\u00f6ffnet werden: {0}"}, - {"No principal selected", "Kein Principal ausgew\u00e4hlt"}, - {"No permission selected", "Keine Berechtigung ausgew\u00e4hlt"}, + {"Policy.Entry", "Policy-Eintrag"}, + {"Save.Changes", "\u00C4nderungen speichern"}, + {"No.Policy.Entry.selected", "Kein Policy-Eintrag ausgew\u00E4hlt"}, + {"Unable.to.open.KeyStore.ex.toString.", + "KeyStore kann nicht ge\u00F6ffnet werden: {0}"}, + {"No.principal.selected", "Kein Principal ausgew\u00E4hlt"}, + {"No.permission.selected", "Keine Berechtigung ausgew\u00E4hlt"}, {"name", "Name"}, - {"configuration type", "Konfigurationstyp"}, - {"environment variable name", "Name der Umgebungsvariable"}, - {"library name", "Bibliotheksname"}, - {"package name", "Paketname"}, - {"policy type", "Richtlinientyp"}, - {"property name", "Eigenschaftsname"}, - {"provider name", "Providername"}, - {"Principal List", "Principal-Liste"}, - {"Permission List", "Berechtigungsliste"}, - {"Code Base", "Code-Basis"}, - {"KeyStore U R L:", "KeyStore-URL:"}, - {"KeyStore Password U R L:", "KeyStore-Passwort-URL:"}, + {"configuration.type", "Konfigurationstyp"}, + {"environment.variable.name", "Umgebungsvariablenname"}, + {"library.name", "Library-Name"}, + {"package.name", "Packagename"}, + {"policy.type", "Policy-Typ"}, + {"property.name", "Eigenschaftsname"}, + {"Principal.List", "Principal-Liste"}, + {"Permission.List", "Berechtigungsliste"}, + {"Code.Base", "Codebase"}, + {"KeyStore.U.R.L.", "KeyStore-URL:"}, + {"KeyStore.Password.U.R.L.", "KeyStore-Kennwort-URL:"}, // javax.security.auth.PrivateCredentialPermission - {"invalid null input(s)", "Ung\u00fcltige Null-Eingabe(n)"}, - {"actions can only be 'read'", "Aktionen k\u00f6nnen nur 'gelesen' werden"}, - {"permission name [name] syntax invalid: ", - "Syntax f\u00fcr Berechtigungsnamen [{0}] ung\u00fcltig: "}, - {"Credential Class not followed by a Principal Class and Name", - "Nach Authentisierungsklasse folgt keine Principal-Klasse und kein Name."}, - {"Principal Class not followed by a Principal Name", + {"invalid.null.input.s.", "Ung\u00FCltige Nulleingabe(n)"}, + {"actions.can.only.be.read.", "Aktionen k\u00F6nnen nur \"lesen\" sein"}, + {"permission.name.name.syntax.invalid.", + "Syntax f\u00FCr Berechtigungsnamen [{0}] ung\u00FCltig: "}, + {"Credential.Class.not.followed.by.a.Principal.Class.and.Name", + "Nach Zugangsdatenklasse folgt keine Principal-Klasse und kein Name"}, + {"Principal.Class.not.followed.by.a.Principal.Name", "Nach Principal-Klasse folgt kein Principal-Name"}, - {"Principal Name must be surrounded by quotes", - "Principal-Name muss vorn und hinten mit Anf\u00fchrungsstrichen versehen sein"}, - {"Principal Name missing end quote", - "Abschlie\u00dfendes Anf\u00fchrungszeichen f\u00fcr Principal-Name fehlt"}, - {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value", - "Private Authentisierungsberechtigung Principal-Klasse kann kein Wildcardwert (*) sein, wenn der Principal-Name kein Wildcardwert (*) ist."}, - {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name", - "Authentisierungsbesitzer:\n\tPrincipal-Klasse = {0}\n\tPrincipal-Name = {1}"}, + {"Principal.Name.must.be.surrounded.by.quotes", + "Principal-Name muss in Anf\u00FChrungszeichen stehen"}, + {"Principal.Name.missing.end.quote", + "Abschlie\u00DFendes Anf\u00FChrungszeichen f\u00FCr Principal-Name fehlt"}, + {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value", + "Principal-Klasse PrivateCredentialPermission kann kein Platzhalterwert (*) sein, wenn der Principal-Name kein Platzhalterwert (*) ist"}, + {"CredOwner.Principal.Class.class.Principal.Name.name", + "CredOwner:\n\tPrincipal-Klasse = {0}\n\tPrincipal-Name = {1}"}, // javax.security.auth.x500 - {"provided null name", "hat Null als Namen geliefert"}, - {"provided null keyword map", "Leere Schl\u00fcsselwort-Map"}, - {"provided null OID map", "Leere OID-Map"}, + {"provided.null.name", "Nullname angegeben"}, + {"provided.null.keyword.map", "Null-Schl\u00FCsselwortzuordnung angegeben"}, + {"provided.null.OID.map", "Null-OID-Zuordnung angegeben"}, // javax.security.auth.Subject - {"invalid null AccessControlContext provided", - "Ung\u00fcltige Null als Zugangskontrollkontext geliefert"}, - {"invalid null action provided", "Ung\u00fcltige Null als Aktion geliefert"}, - {"invalid null Class provided", "Ung\u00fcltige Null als Klasse geliefert"}, - {"Subject:\n", "Betreff:\n"}, - {"\tPrincipal: ", "\tPrincipal: "}, - {"\tPublic Credential: ", "\t\u00d6ffentliche Authentisierung: "}, - {"\tPrivate Credentials inaccessible\n", - "\tKein Zugriff auf private Authentisierungen m\u00f6glich\n"}, - {"\tPrivate Credential: ", "\tPrivate Authentisierung: "}, - {"\tPrivate Credential inaccessible\n", - "\tKein Zugriff auf private Authentisierung m\u00f6glich\n"}, - {"Subject is read-only", "Betreff ist schreibgesch\u00fctzt"}, - {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set", - "Es wird versucht, ein Objekt hinzuzuf\u00fcgen, das keine Instanz von java.security.Principal f\u00fcr eine Principal-Gruppe eines Betreffs ist."}, - {"attempting to add an object which is not an instance of class", - "Es wird versucht, ein Objekt hinzuzuf\u00fcgen, das keine Instanz von {0} ist."}, + {"invalid.null.AccessControlContext.provided", + "Ung\u00FCltiger Nullwert f\u00FCr AccessControlContext angegeben"}, + {"invalid.null.action.provided", "Ung\u00FCltige Nullaktion angegeben"}, + {"invalid.null.Class.provided", "Ung\u00FCltige Nullklasse angegeben"}, + {"Subject.", "Subjekt:\n"}, + {".Principal.", "\tPrincipal: "}, + {".Public.Credential.", "\t\u00D6ffentliche Zugangsdaten: "}, + {".Private.Credentials.inaccessible.", + "\tKein Zugriff auf private Zugangsdaten\n"}, + {".Private.Credential.", "\tPrivate Zugangsdaten: "}, + {".Private.Credential.inaccessible.", + "\tKein Zugriff auf private Zugangsdaten\n"}, + {"Subject.is.read.only", "Subjekt ist schreibgesch\u00FCtzt"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set", + "Es wird versucht, ein Objekt hinzuzuf\u00FCgen, das keine Instanz von java.security.Principal f\u00FCr eine Principal-Gruppe eines Subjekts ist"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.class", + "Es wird versucht, ein Objekt hinzuzuf\u00FCgen, das keine Instanz von {0} ist"}, // javax.security.auth.login.AppConfigurationEntry - {"LoginModuleControlFlag: ", "Anmeldemodul-Steuerflag: "}, + {"LoginModuleControlFlag.", "LoginModuleControlFlag: "}, // javax.security.auth.login.LoginContext - {"Invalid null input: name", "Ung\u00fcltige Nulleingabe: Name"}, - {"No LoginModules configured for name", - "F\u00fcr {0} sind keine Anmeldemodule konfiguriert."}, - {"invalid null Subject provided", "Ung\u00fcltige Null als Betreff geliefert"}, - {"invalid null CallbackHandler provided", - "Ung\u00fcltige Null als Callback-Handler geliefert"}, - {"null subject - logout called before login", - "Null-Betreff - Abmeldung vor Anmeldung aufgerufen"}, - {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor", - "Es kann keine Instanz des Anmeldemoduls {0} erstellt werden, weil es keinen argumentlosen Konstruktor liefert."}, - {"unable to instantiate LoginModule", - "Es kann keine Instanz des Anmeldemoduls erstellt werden."}, - {"unable to instantiate LoginModule: ", - "LoginModule konnte nicht instanziiert werden: "}, - {"unable to find LoginModule class: ", - "Die Anmeldemodulklasse kann nicht gefunden werden: "}, - {"unable to access LoginModule: ", - "Kein Zugriff auf Anmeldemodul m\u00f6glich: "}, - {"Login Failure: all modules ignored", + {"Invalid.null.input.name", "Ung\u00FCltige Nulleingabe: Name"}, + {"No.LoginModules.configured.for.name", + "F\u00FCr {0} sind keine LoginModules konfiguriert"}, + {"invalid.null.Subject.provided", "Ung\u00FCltiges Nullsubjekt angegeben"}, + {"invalid.null.CallbackHandler.provided", + "Ung\u00FCltiger Nullwert f\u00FCr CallbackHandler angegeben"}, + {"null.subject.logout.called.before.login", + "Nullsubjekt - Abmeldung vor Anmeldung aufgerufen"}, + {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor", + "LoginModule {0} kann nicht instanziiert werden, da es keinen argumentlosen Constructor angibt"}, + {"unable.to.instantiate.LoginModule", + "LoginModule kann nicht instanziiert werden"}, + {"unable.to.instantiate.LoginModule.", + "LoginModule kann nicht instanziiert werden: "}, + {"unable.to.find.LoginModule.class.", + "LoginModule-Klasse kann nicht gefunden werden: "}, + {"unable.to.access.LoginModule.", + "Kein Zugriff auf LoginModule m\u00F6glich: "}, + {"Login.Failure.all.modules.ignored", "Anmeldefehler: Alle Module werden ignoriert"}, // sun.security.provider.PolicyFile - {"java.security.policy: error parsing policy:\n\tmessage", - "java.security.policy: Fehler bei Analyse {0}:\n\t{1}"}, - {"java.security.policy: error adding Permission, perm:\n\tmessage", - "java.security.policy: Fehler beim Hinzuf\u00fcgen der Genehmigung, {0}:\n\t{1}"}, - {"java.security.policy: error adding Entry:\n\tmessage", - "java.security.policy: Fehler beim Hinzuf\u00fcgen des Eintrags:\n\t{0}"}, - {"alias name not provided (pe.name)", "Aliasname nicht bereitgestellt ({0})"}, - {"unable to perform substitution on alias, suffix", - "kann Substition von Alias nicht durchf\u00fchren, {0}"}, - {"substitution value, prefix, unsupported", - "Substitutionswert, {0}, nicht unterst\u00fctzt"}, - {"(", "("}, - {")", ")"}, - {"type can't be null","Typ kann nicht Null sein"}, + {"java.security.policy.error.parsing.policy.message", + "java.security.policy: Fehler beim Parsen von {0}:\n\t{1}"}, + {"java.security.policy.error.adding.Permission.perm.message", + "java.security.policy: Fehler beim Hinzuf\u00FCgen von Berechtigung, {0}:\n\t{1}"}, + {"java.security.policy.error.adding.Entry.message", + "java.security.policy: Fehler beim Hinzuf\u00FCgen von Eintrag:\n\t{0}"}, + {"alias.name.not.provided.pe.name.", "Aliasname nicht angegeben ({0})"}, + {"unable.to.perform.substitution.on.alias.suffix", + "Substitution f\u00FCr Alias {0} kann nicht ausgef\u00FChrt werden"}, + {"substitution.value.prefix.unsupported", + "Substitutionswert {0} nicht unterst\u00FCtzt"}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"type.can.t.be.null","Typ kann nicht null sein"}, // sun.security.provider.PolicyParser - {"keystorePasswordURL can not be specified without also specifying keystore", + {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore", "keystorePasswordURL kann nicht ohne Keystore angegeben werden"}, - {"expected keystore type", "erwarteter Keystore-Typ"}, - {"expected keystore provider", "erwarteter Keystore-Provider"}, - {"multiple Codebase expressions", - "mehrere Codebase-Ausdr\u00fccke"}, - {"multiple SignedBy expressions","mehrere SignedBy-Ausdr\u00fccke"}, - {"SignedBy has empty alias","Leerer Alias in SignedBy"}, - {"can not specify Principal with a wildcard class without a wildcard name", - "Kann Principal nicht mit einer Wildcard-Klasse ohne Wildcard-Namen angeben."}, - {"expected codeBase or SignedBy or Principal", - "CodeBase oder SignedBy oder Principal erwartet"}, - {"expected permission entry", "Berechtigungseintrag erwartet"}, - {"number ", "Nummer "}, - {"expected [expect], read [end of file]", - "erwartet [{0}], gelesen [Dateiende]"}, - {"expected [;], read [end of file]", - "erwartet [;], gelesen [Dateiende]"}, - {"line number: msg", "Zeile {0}: {1}"}, - {"line number: expected [expect], found [actual]", - "Zeile {0}: erwartet [{1}], gefunden [{2}]"}, - {"null principalClass or principalName", - "Principal-Klasse oder Principal-Name Null"}, + {"expected.keystore.type", "Keystore-Typ erwartet"}, + {"expected.keystore.provider", "Keystore-Provider erwartet"}, + {"multiple.Codebase.expressions", + "mehrere Codebase-Ausdr\u00FCcke"}, + {"multiple.SignedBy.expressions","mehrere SignedBy-Ausdr\u00FCcke"}, + {"SignedBy.has.empty.alias","Leerer Alias in SignedBy"}, + {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name", + "Principal kann nicht mit einer Platzhalterklasse ohne Platzhalternamen angegeben werden"}, + {"expected.codeBase.or.SignedBy.or.Principal", + "codeBase oder SignedBy oder Principal erwartet"}, + {"expected.permission.entry", "Berechtigungseintrag erwartet"}, + {"number.", "Nummer "}, + {"expected.expect.read.end.of.file.", + "[{0}] erwartet, [Dateiende] gelesen"}, + {"expected.read.end.of.file.", + "[;] erwartet, [Dateiende] gelesen"}, + {"line.number.msg", "Zeile {0}: {1}"}, + {"line.number.expected.expect.found.actual.", + "Zeile {0}: [{1}] erwartet, [{2}] gefunden"}, + {"null.principalClass.or.principalName", + "principalClass oder principalName null"}, // sun.security.pkcs11.SunPKCS11 - {"PKCS11 Token [providerName] Password: ", - "Passwort f\u00fcr PKCS11-Token [{0}]: "}, + {"PKCS11.Token.providerName.Password.", + "Kennwort f\u00FCr PKCS11-Token [{0}]: "}, /* --- DEPRECATED --- */ // javax.security.auth.Policy - {"unable to instantiate Subject-based policy", - "auf Subject basierende Richtlinie konnte nicht instanziiert werden"} + {"unable.to.instantiate.Subject.based.policy", + "Subjektbasierte Policy kann nicht instanziiert werden"} }; @@ -648,3 +670,4 @@ public class Resources_de extends java.util.ListResourceBundle { return contents; } } + diff --git a/jdk/src/share/classes/sun/security/util/Resources_es.java b/jdk/src/share/classes/sun/security/util/Resources_es.java index d337e0f1ca4..e9776829f4a 100644 --- a/jdk/src/share/classes/sun/security/util/Resources_es.java +++ b/jdk/src/share/classes/sun/security/util/Resources_es.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -35,605 +35,627 @@ public class Resources_es extends java.util.ListResourceBundle { private static final Object[][] contents = { // shared (from jarsigner) - {" ", " "}, - {" ", " "}, - {" ", " "}, - {", ", ", "}, + {"SPACE", " "}, + {"2SPACE", " "}, + {"6SPACE", " "}, + {"COMMA", ", "}, // shared (from keytool) - {"\n", "\n"}, - {"*******************************************", + {"NEWLINE", "\n"}, + {"STAR", "*******************************************"}, - {"*******************************************\n\n", + {"STARNN", "*******************************************\n\n"}, - // keytool - {"keytool error: ", "error de keytool: "}, - {"Illegal option: ", "Opci\u00f3n no permitida: "}, - {"Try keytool -help","Probar keytool -help"}, - {"Command option needs an argument.", "La opci\u00f3n de comando {0} necesita un argumento."}, - {"Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified value.", - "Advertencia: Los archivos de almac\u00e9n de claves en formato PKCS12 no admiten contrase\u00f1as de clave y almacenamiento distintas. Se omite el valor especificado por el usuario {0}."}, - {"-keystore must be NONE if -storetype is {0}", + // keytool: Help part + {".OPTION.", " [OPTION]..."}, + {"Options.", "Opciones:"}, + {"Use.keytool.help.for.all.available.commands", + "Utilice\"keytool -help\" para todos los comandos disponibles"}, + {"Key.and.Certificate.Management.Tool", + "Herramienta de Gesti\u00F3n de Certificados y Claves"}, + {"Commands.", "Comandos:"}, + {"Use.keytool.command.name.help.for.usage.of.command.name", + "Utilice \"keytool -command_name -help\" para la sintaxis de nombre_comando"}, + // keytool: help: commands + {"Generates.a.certificate.request", + "Genera una solicitud de certificado"}, //-certreq + {"Changes.an.entry.s.alias", + "Cambia un alias de entrada"}, //-changealias + {"Deletes.an.entry", + "Suprime una entrada"}, //-delete + {"Exports.certificate", + "Exporta el certificado"}, //-exportcert + {"Generates.a.key.pair", + "Genera un par de claves"}, //-genkeypair + {"Generates.a.secret.key", + "Genera un clave secreta"}, //-genseckey + {"Generates.certificate.from.a.certificate.request", + "Genera un certificado a partir de una solicitud de certificado"}, //-gencert + {"Generates.CRL", "Genera CRL"}, //-gencrl + {"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.one.or.all.entries.from.another.keystore", + "Importa una o todas las entradas desde otro almac\u00E9n de claves"}, //-importkeystore + {"Clones.a.key.entry", + "Clona una entrada de clave"}, //-keyclone + {"Changes.the.key.password.of.an.entry", + "Cambia la contrase\u00F1a de clave de una entrada"}, //-keypasswd + {"Lists.entries.in.a.keystore", + "Enumera las entradas de un almac\u00E9n de claves"}, //-list + {"Prints.the.content.of.a.certificate", + "Imprime el contenido de un certificado"}, //-printcert + {"Prints.the.content.of.a.certificate.request", + "Imprime el contenido de una solicitud de certificado"}, //-printcertreq + {"Prints.the.content.of.a.CRL.file", + "Imprime el contenido de un archivo CRL"}, //-printcrl + {"Generates.a.self.signed.certificate", + "Genera un certificado autofirmado"}, //-selfcert + {"Changes.the.store.password.of.a.keystore", + "Cambia la contrase\u00F1a de almac\u00E9n de un almac\u00E9n de claves"}, //-storepasswd + // keytool: help: options + {"alias.name.of.the.entry.to.process", + "nombre de alias de la entrada que se va a procesar"}, //-alias + {"destination.alias", + "alias de destino"}, //-destalias + {"destination.key.password", + "contrase\u00F1a de clave de destino"}, //-destkeypass + {"destination.keystore.name", + "nombre de almac\u00E9n de claves de destino"}, //-destkeystore + {"destination.keystore.password.protected", + "almac\u00E9n de claves de destino protegido por contrase\u00F1a"}, //-destprotected + {"destination.keystore.provider.name", + "nombre de proveedor de almac\u00E9n de claves de destino"}, //-destprovidername + {"destination.keystore.password", + "contrase\u00F1a de almac\u00E9n de claves de destino"}, //-deststorepass + {"destination.keystore.type", + "tipo de almac\u00E9n de claves de destino"}, //-deststoretype + {"distinguished.name", + "nombre distinguido"}, //-dname + {"X.509.extension", + "extensi\u00F3n X.509"}, //-ext + {"output.file.name", + "nombre de archivo de salida"}, //-file and -outfile + {"input.file.name", + "nombre de archivo de entrada"}, //-file and -infile + {"key.algorithm.name", + "nombre de algoritmo de clave"}, //-keyalg + {"key.password", + "contrase\u00F1a de clave"}, //-keypass + {"key.bit.size", + "tama\u00F1o de bit de clave"}, //-keysize + {"keystore.name", + "nombre de almac\u00E9n de claves"}, //-keystore + {"new.password", + "nueva contrase\u00F1a"}, //-new + {"do.not.prompt", + "no solicitar"}, //-noprompt + {"password.through.protected.mechanism", + "contrase\u00F1a a trav\u00E9s de mecanismo protegido"}, //-protected + {"provider.argument", + "argumento del proveedor"}, //-providerarg + {"provider.class.name", + "nombre de clase del proveedor"}, //-providerclass + {"provider.name", + "nombre del proveedor"}, //-providername + {"provider.classpath", + "classpath de proveedor"}, //-providerpath + {"output.in.RFC.style", + "salida en estilo RFC"}, //-rfc + {"signature.algorithm.name", + "nombre de algoritmo de firma"}, //-sigalg + {"source.alias", + "alias de origen"}, //-srcalias + {"source.key.password", + "contrase\u00F1a de clave de origen"}, //-srckeypass + {"source.keystore.name", + "nombre de almac\u00E9n de claves de origen"}, //-srckeystore + {"source.keystore.password.protected", + "almac\u00E9n de claves de origen protegido por contrase\u00F1a"}, //-srcprotected + {"source.keystore.provider.name", + "nombre de proveedor de almac\u00E9n de claves de origen"}, //-srcprovidername + {"source.keystore.password", + "contrase\u00F1a de almac\u00E9n de claves de origen"}, //-srcstorepass + {"source.keystore.type", + "tipo de almac\u00E9n de claves de origen"}, //-srcstoretype + {"SSL.server.host.and.port", + "puerto y host del servidor SSL"}, //-sslserver + {"signed.jar.file", + "archivo jar firmado"}, //=jarfile + {"certificate.validity.start.date.time", + "fecha/hora de inicio de validez del certificado"}, //-startdate + {"keystore.password", + "contrase\u00F1a de almac\u00E9n de claves"}, //-storepass + {"keystore.type", + "tipo de almac\u00E9n de claves"}, //-storetype + {"trust.certificates.from.cacerts", + "certificados de protecci\u00F3n de cacerts"}, //-trustcacerts + {"verbose.output", + "salida detallada"}, //-v + {"validity.number.of.days", + "n\u00FAmero de validez de d\u00EDas"}, //-validity + {"Serial.ID.of.cert.to.revoke", + "identificador de serie del certificado que se va a revocar"}, //-id + // keytool: Running part + {"keytool.error.", "error de herramienta de claves: "}, + {"Illegal.option.", "Opci\u00F3n no permitida: "}, + {"Illegal.value.", "Valor no permitido: "}, + {"Unknown.password.type.", "Tipo de contrase\u00F1a desconocido: "}, + {"Cannot.find.environment.variable.", + "No se ha encontrado la variable del entorno: "}, + {"Cannot.find.file.", "No se ha encontrado el archivo: "}, + {"Command.option.flag.needs.an.argument.", "La opci\u00F3n de comando {0} necesita un argumento."}, + {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.", + "Advertencia: los almacenes de claves en formato PKCS12 no admiten contrase\u00F1as de clave y almacenamiento distintas. Se ignorar\u00E1 el valor especificado por el usuario, {0}."}, + {".keystore.must.be.NONE.if.storetype.is.{0}", "-keystore debe ser NONE si -storetype es {0}"}, - {"Too may retries, program terminated", + {"Too.many.retries.program.terminated", "Ha habido demasiados intentos, se ha cerrado el programa"}, - {"-storepasswd and -keypasswd commands not supported if -storetype is {0}", - "los comandos -storepasswd y -keypasswd no se admiten si -storetype es {0}"}, - {"-keypasswd commands not supported if -storetype is PKCS12", - "los comandos -keypasswd no se admiten si -storetype es PKCS12"}, - {"-keypass and -new can not be specified if -storetype is {0}", + {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}", + "Los comandos -storepasswd y -keypasswd no est\u00E1n soportados si -storetype es {0}"}, + {".keypasswd.commands.not.supported.if.storetype.is.PKCS12", + "Los comandos -keypasswd no est\u00E1n soportados si -storetype es PKCS12"}, + {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}", "-keypass y -new no se pueden especificar si -storetype es {0}"}, - {"if -protected is specified, then -storepass, -keypass, and -new must not be specified", + {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified", "si se especifica -protected, no deben especificarse -storepass, -keypass ni -new"}, - {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified", - "si se especifica -srcprotected, no se puede especificar -srcstorepass ni -srckeypass"}, - {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified", - "Si keystore no est\u00e1 protegido por contrase\u00f1a, no se deben especificar -storepass, -keypass ni -new"}, - {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified", - "Si keystore de origen no est\u00e1 protegido por contrase\u00f1a, no se deben especificar -srcstorepass ni -srckeypass"}, - {"Validity must be greater than zero", + {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified", + "Si se especifica -srcprotected, no se puede especificar -srcstorepass ni -srckeypass"}, + {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified", + "Si keystore no est\u00E1 protegido por contrase\u00F1a, no se deben especificar -storepass, -keypass ni -new"}, + {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", + "Si el almac\u00E9n de claves de origen no est\u00E1 protegido por contrase\u00F1a, no se deben especificar -srcstorepass ni -srckeypass"}, + {"Illegal.startdate.value", "Valor de fecha de inicio no permitido"}, + {"Validity.must.be.greater.than.zero", "La validez debe ser mayor que cero"}, - {"provName not a provider", "{0} no es un proveedor"}, - {"Usage error: no command provided", "Error de uso: no se ha proporcionado ning\u00fan comando"}, - {"Usage error, is not a legal command", "Error de uso, {0} no es un comando legal"}, - {"Source keystore file exists, but is empty: ", "El archivo de almac\u00e9n de claves de origen existe, pero est\u00e1 vac\u00edo: "}, - {"Please specify -srckeystore", "Especifique -srckeystore"}, - {"Must not specify both -v and -rfc with 'list' command", - "No se deben especificar -v y -rfc simult\u00e1neamente con el comando 'list'"}, - {"Key password must be at least 6 characters", - "La contrase\u00f1a clave debe tener al menos 6 caracteres"}, - {"New password must be at least 6 characters", - "La nueva contrase\u00f1a debe tener al menos 6 caracteres"}, - {"Keystore file exists, but is empty: ", - "El archivo de almac\u00e9n de claves existe, pero est\u00e1 vac\u00edo "}, - {"Keystore file does not exist: ", - "El archivo de almac\u00e9n de claves no existe: "}, - {"Must specify destination alias", "Se debe especificar alias de destino"}, - {"Must specify alias", "Se debe especificar alias"}, - {"Keystore password must be at least 6 characters", - "La contrase\u00f1a del almac\u00e9n de claves debe tener al menos 6 caracteres"}, - {"Enter keystore password: ", "Escriba la contrase\u00f1a del almac\u00e9n de claves: "}, - {"Enter source keystore password: ", "Escribir contrase\u00f1a de almac\u00e9n de claves de origen: "}, - {"Enter destination keystore password: ", "Escribir contrase\u00f1a de almac\u00e9n de claves de destino: "}, - {"Keystore password is too short - must be at least 6 characters", - "La contrase\u00f1a del almac\u00e9n de claves es demasiado corta, debe tener al menos 6 caracteres"}, - {"Unknown Entry Type", "Tipo de entrada desconocido"}, - {"Too many failures. Alias not changed", "Demasiados errores. No se ha cambiado el alias"}, - {"Entry for alias successfully imported.", - "Las entradas del alias {0} se han importado correctamente."}, - {"Entry for alias not imported.", "La entrada del alias {0} no se ha importado."}, - {"Problem importing entry for alias : .\nEntry for alias not imported.", + {"provName.not.a.provider", "{0} no es un proveedor"}, + {"Usage.error.no.command.provided", "Error de sintaxis: no se ha proporcionado ning\u00FAn comando"}, + {"Source.keystore.file.exists.but.is.empty.", "El archivo de almac\u00E9n de claves de origen existe, pero est\u00E1 vac\u00EDo: "}, + {"Please.specify.srckeystore", "Especifique -srckeystore"}, + {"Must.not.specify.both.v.and.rfc.with.list.command", + "No se deben especificar -v y -rfc simult\u00E1neamente con el comando 'list'"}, + {"Key.password.must.be.at.least.6.characters", + "La contrase\u00F1a de clave debe tener al menos 6 caracteres"}, + {"New.password.must.be.at.least.6.characters", + "La nueva contrase\u00F1a debe tener al menos 6 caracteres"}, + {"Keystore.file.exists.but.is.empty.", + "El archivo de almac\u00E9n de claves existe, pero est\u00E1 vac\u00EDo: "}, + {"Keystore.file.does.not.exist.", + "El archivo de almac\u00E9n de claves no existe: "}, + {"Must.specify.destination.alias", "Se debe especificar un alias de destino"}, + {"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.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: "}, + {"Keystore.password.is.too.short.must.be.at.least.6.characters", + "La contrase\u00F1a del almac\u00E9n de claves es demasiado corta, debe tener al menos 6 caracteres"}, + {"Unknown.Entry.Type", "Tipo de Entrada Desconocido"}, + {"Too.many.failures.Alias.not.changed", "Demasiados fallos. No se ha cambiado el alias"}, + {"Entry.for.alias.alias.successfully.imported.", + "La entrada del alias {0} se ha importado correctamente."}, + {"Entry.for.alias.alias.not.imported.", "La entrada del alias {0} no se ha importado."}, + {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.", "Problema al importar la entrada del alias {0}: {1}.\nNo se ha importado la entrada del alias {0}."}, - {"Import command completed: entries successfully imported, entries failed or cancelled", - "Comando de importaci\u00f3n completado: {0} entradas importadas correctamente, {1} entradas incorrectas o canceladas"}, - {"Warning: Overwriting existing alias in destination keystore", - "Advertencia: Sobrescribiendo el alias {0} en el almac\u00e9n de claves de destino"}, - {"Existing entry alias exists, overwrite? [no]: ", - "El alias de entrada {0} ya existe, \u00bfdesea sobrescribirlo? [no]: "}, - {"Too many failures - try later", "Demasiados fallos; int\u00e9ntelo m\u00e1s adelante"}, - {"Certification request stored in file ", - "Solicitud de certificaci\u00f3n almacenada en el archivo <{0}>"}, - {"Submit this to your CA", "Enviar a la CA"}, - {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified", + {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled", + "Comando de importaci\u00F3n completado: {0} entradas importadas correctamente, {1} entradas incorrectas o canceladas"}, + {"Warning.Overwriting.existing.alias.alias.in.destination.keystore", + "Advertencia: se sobrescribir\u00E1 el alias {0} en el almac\u00E9n de claves de destino"}, + {"Existing.entry.alias.alias.exists.overwrite.no.", + "El alias de entrada existente {0} ya existe, \u00BFdesea sobrescribirlo? [no]: "}, + {"Too.many.failures.try.later", "Demasiados fallos; int\u00E9ntelo m\u00E1s adelante"}, + {"Certification.request.stored.in.file.filename.", + "Solicitud de certificaci\u00F3n almacenada en el archivo <{0}>"}, + {"Submit.this.to.your.CA", "Enviar a la CA"}, + {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified", "si no se especifica el alias, no se puede especificar destalias, srckeypass ni destkeypass"}, - {"Certificate stored in file ", + {"Certificate.stored.in.file.filename.", "Certificado almacenado en el archivo <{0}>"}, - {"Certificate reply was installed in keystore", - "Se ha instalado la respuesta del certificado en el almac\u00e9n de claves"}, - {"Certificate reply was not installed in keystore", - "No se ha instalado la respuesta del certificado en el almac\u00e9n de claves"}, - {"Certificate was added to keystore", - "Se ha a\u00f1adido el certificado al almac\u00e9n de claves"}, - {"Certificate was not added to keystore", - "No se ha a\u00f1adido el certificado al almac\u00e9n de claves"}, - {"[Storing ksfname]", "[Almacenando {0}]"}, - {"alias has no public key (certificate)", - "{0} no tiene clave p\u00fablica (certificado)"}, - {"Cannot derive signature algorithm", + {"Certificate.reply.was.installed.in.keystore", + "Se ha instalado la respuesta del certificado en el almac\u00E9n de claves"}, + {"Certificate.reply.was.not.installed.in.keystore", + "No se ha instalado la respuesta del certificado en el almac\u00E9n de claves"}, + {"Certificate.was.added.to.keystore", + "Se ha agregado el certificado al almac\u00E9n de claves"}, + {"Certificate.was.not.added.to.keystore", + "No se ha agregado el certificado al almac\u00E9n de claves"}, + {".Storing.ksfname.", "[Almacenando {0}]"}, + {"alias.has.no.public.key.certificate.", + "{0} no tiene clave p\u00FAblica (certificado)"}, + {"Cannot.derive.signature.algorithm", "No se puede derivar el algoritmo de firma"}, - {"Alias does not exist", + {"Alias.alias.does.not.exist", "El alias <{0}> no existe"}, - {"Alias has no certificate", + {"Alias.alias.has.no.certificate", "El alias <{0}> no tiene certificado"}, - {"Key pair not generated, alias already exists", + {"Key.pair.not.generated.alias.alias.already.exists", "No se ha generado el par de claves, el alias <{0}> ya existe"}, - {"Cannot derive signature algorithm", - "No se puede derivar el algoritmo de firma"}, - {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name", - "Generando par de claves {1} de {0} bits para certificado autofirmado ({2}) con una validez de {3} d\u00edas\n\tpara: {4}"}, - {"Enter key password for ", "Escriba la contrase\u00f1a clave para <{0}>"}, - {"\t(RETURN if same as keystore password): ", - "\t(INTRO si es la misma contrase\u00f1a que la del almac\u00e9n de claves): "}, - {"Key password is too short - must be at least 6 characters", - "La contrase\u00f1a clave es demasiado corta; debe tener al menos 6 caracteres"}, - {"Too many failures - key not added to keystore", - "Demasiados fallos; no se ha agregado la clave al almac\u00e9n de claves"}, - {"Destination alias already exists", + {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for", + "Generando par de claves {1} de {0} bits para certificado autofirmado ({2}) con una validez de {3} d\u00EDas\n\tpara: {4}"}, + {"Enter.key.password.for.alias.", "Introduzca la contrase\u00F1a de clave para <{0}>"}, + {".RETURN.if.same.as.keystore.password.", + "\t(INTRO si es la misma contrase\u00F1a que la del almac\u00E9n de claves): "}, + {"Key.password.is.too.short.must.be.at.least.6.characters", + "La contrase\u00F1a de clave es demasiado corta; debe tener al menos 6 caracteres"}, + {"Too.many.failures.key.not.added.to.keystore", + "Demasiados fallos; no se ha agregado la clave al almac\u00E9n de claves"}, + {"Destination.alias.dest.already.exists", "El alias de destino <{0}> ya existe"}, - {"Password is too short - must be at least 6 characters", - "La contrase\u00f1a es demasiado corta; debe tener al menos 6 caracteres"}, - {"Too many failures. Key entry not cloned", - "Demasiados errores. No se ha copiado la entrada de clave"}, - {"key password for ", "contrase\u00f1a clave para <{0}>"}, - {"Keystore entry for already exists", - "La entrada de almac\u00e9n de claves para <{0}> ya existe"}, - {"Creating keystore entry for ...", - "Creando entrada de almac\u00e9n de claves para <{0}> ..."}, - {"No entries from identity database added", + {"Password.is.too.short.must.be.at.least.6.characters", + "La contrase\u00F1a es demasiado corta; debe tener al menos 6 caracteres"}, + {"Too.many.failures.Key.entry.not.cloned", + "Demasiados fallos. No se ha clonado la entrada de clave"}, + {"key.password.for.alias.", "contrase\u00F1a de clave para <{0}>"}, + {"Keystore.entry.for.id.getName.already.exists", + "La entrada de almac\u00E9n de claves para <{0}> ya existe"}, + {"Creating.keystore.entry.for.id.getName.", + "Creando entrada de almac\u00E9n de claves para <{0}> ..."}, + {"No.entries.from.identity.database.added", "No se han agregado entradas de la base de datos de identidades"}, - {"Alias name: alias", "Nombre de alias: {0}"}, - {"Creation date: keyStore.getCreationDate(alias)", - "Fecha de creaci\u00f3n: {0,date}"}, - {"alias, keyStore.getCreationDate(alias), ", + {"Alias.name.alias", "Nombre de Alias: {0}"}, + {"Creation.date.keyStore.getCreationDate.alias.", + "Fecha de Creaci\u00F3n: {0,date}"}, + {"alias.keyStore.getCreationDate.alias.", "{0}, {1,date}, "}, - {"alias, ", "{0}, "}, - {"Entry type: ", "Tipo de entrada: {0}"}, - {"Certificate chain length: ", "Longitud de la cadena de certificado: "}, - {"Certificate[(i + 1)]:", "Certificado[{0,number,integer}]:"}, - {"Certificate fingerprint (MD5): ", "Huella digital de certificado (MD5): "}, - {"Entry type: trustedCertEntry\n", "Tipo de entrada: trustedCertEntry\n"}, - {"trustedCertEntry,", "trustedCertEntry,"}, - {"Keystore type: ", "Tipo de almac\u00e9n de claves: "}, - {"Keystore provider: ", "Proveedor de almac\u00e9n de claves: "}, - {"Your keystore contains keyStore.size() entry", - "Su almac\u00e9n de claves contiene entrada {0,number,integer}"}, - {"Your keystore contains keyStore.size() entries", - "Su almac\u00e9n de claves contiene {0,number,integer} entradas"}, - {"Failed to parse input", "Error al analizar la entrada"}, - {"Empty input", "Entrada vac\u00eda"}, - {"Not X.509 certificate", "No es un certificado X.509"}, - {"Cannot derive signature algorithm", - "No se puede derivar el algoritmo de firma"}, - {"alias has no public key", "{0} no tiene clave p\u00fablica"}, - {"alias has no X.509 certificate", "{0} no tiene certificado X.509"}, - {"New certificate (self-signed):", "Nuevo certificado (autofirmado):"}, - {"Reply has no certificates", "La respuesta no tiene certificados"}, - {"Certificate not imported, alias already exists", + {"alias.", "{0}, "}, + {"Entry.type.type.", "Tipo de Entrada: {0}"}, + {"Certificate.chain.length.", "Longitud de la Cadena de Certificado: "}, + {"Certificate.i.1.", "Certificado[{0,number,integer}]:"}, + {"Certificate.fingerprint.SHA1.", "Huella Digital de Certificado (SHA1): "}, + {"Entry.type.trustedCertEntry.", "Tipo de Entrada: trustedCertEntry\n"}, + {"trustedCertEntry.", "trustedCertEntry,"}, + {"Keystore.type.", "Tipo de Almac\u00E9n de Claves: "}, + {"Keystore.provider.", "Proveedor de Almac\u00E9n de Claves: "}, + {"Your.keystore.contains.keyStore.size.entry", + "Su almac\u00E9n de claves contiene {0,number,integer} entrada"}, + {"Your.keystore.contains.keyStore.size.entries", + "Su almac\u00E9n de claves contiene {0,number,integer} entradas"}, + {"Failed.to.parse.input", "Fallo al analizar la entrada"}, + {"Empty.input", "Entrada vac\u00EDa"}, + {"Not.X.509.certificate", "No es un certificado X.509"}, + {"alias.has.no.public.key", "{0} no tiene clave p\u00FAblica"}, + {"alias.has.no.X.509.certificate", "{0} no tiene certificado X.509"}, + {"New.certificate.self.signed.", "Nuevo Certificado (Autofirmado):"}, + {"Reply.has.no.certificates", "La respuesta no tiene certificados"}, + {"Certificate.not.imported.alias.alias.already.exists", "Certificado no importado, el alias <{0}> ya existe"}, - {"Input not an X.509 certificate", "La entrada no es un certificado X.509"}, - {"Certificate already exists in keystore under alias ", - "El certificado ya existe en el almac\u00e9n de claves con el alias <{0}>"}, - {"Do you still want to add it? [no]: ", - "\u00bfA\u00fan desea agregarlo? [no]: "}, - {"Certificate already exists in system-wide CA keystore under alias ", - "El certificado ya existe en el almac\u00e9n de claves de la CA del sistema, con el alias <{0}>"}, - {"Do you still want to add it to your own keystore? [no]: ", - "\u00bfA\u00fan desea agregarlo a su propio almac\u00e9n de claves? [no]: "}, - {"Trust this certificate? [no]: ", "\u00bfConfiar en este certificado? [no]: "}, - {"YES", "S\u00cd"}, - {"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 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}: "}, - {"Enter new alias name\t(RETURN to cancel import for this entry): ", - "Indique el nuevo nombre de alias\t(INTRO para cancelar la importaci\u00f3n de esta entrada): "}, - {"Enter alias name: ", "Escriba el nombre de alias: "}, - {"\t(RETURN if same as for )", + {"Input.not.an.X.509.certificate", "La entrada no es un certificado X.509"}, + {"Certificate.already.exists.in.keystore.under.alias.trustalias.", + "El certificado ya existe en el almac\u00E9n de claves con el alias <{0}>"}, + {"Do.you.still.want.to.add.it.no.", + "\u00BFA\u00FAn desea agregarlo? [no]: "}, + {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.", + "El certificado ya existe en el almac\u00E9n de claves de la CA del sistema, con el alias <{0}>"}, + {"Do.you.still.want.to.add.it.to.your.own.keystore.no.", + "\u00BFA\u00FAn desea agregarlo a su propio almac\u00E9n de claves? [no]: "}, + {"Trust.this.certificate.no.", "\u00BFConfiar en este certificado? [no]: "}, + {"YES", "S\u00CD"}, + {"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.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}: "}, + {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.", + "Indique el nuevo nombre de alias\t(INTRO para cancelar la importaci\u00F3n de esta entrada): "}, + {"Enter.alias.name.", "Introduzca el nombre de alias: "}, + {".RETURN.if.same.as.for.otherAlias.", "\t(INTRO si es el mismo que para <{0}>)"}, - {"*PATTERN* printX509Cert", - "Propietario: {0}\nEmisor: {1}\nN\u00famero de serie: {2}\nV\u00e1lido desde: {3} hasta: {4}\nHuellas digitales del certificado:\n\t MD5: {5}\n\t SHA1: {6}\n\t Nombre del algoritmo de firma: {7}\n\t Versi\u00f3n: {8}"}, - {"What is your first and last name?", - "\u00bfCu\u00e1les son su nombre y su apellido?"}, - {"What is the name of your organizational unit?", - "\u00bfCu\u00e1l es el nombre de su unidad de organizaci\u00f3n?"}, - {"What is the name of your organization?", - "\u00bfCu\u00e1l es el nombre de su organizaci\u00f3n?"}, - {"What is the name of your City or Locality?", - "\u00bfCu\u00e1l es el nombre de su ciudad o localidad?"}, - {"What is the name of your State or Province?", - "\u00bfCu\u00e1l es el nombre de su estado o provincia?"}, - {"What is the two-letter country code for this unit?", - "\u00bfCu\u00e1l es el c\u00f3digo de pa\u00eds de dos letras de la unidad?"}, - {"Is correct?", "\u00bfEs correcto {0}?"}, + {".PATTERN.printX509Cert", + "Propietario: {0}\nEmisor: {1}\nN\u00FAmero de serie: {2}\nV\u00E1lido desde: {3} hasta: {4}\nHuellas digitales del Certificado:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Nombre del Algoritmo de Firma: {8}\n\t Versi\u00F3n: {9}"}, + {"What.is.your.first.and.last.name.", + "\u00BFCu\u00E1les son su nombre y su apellido?"}, + {"What.is.the.name.of.your.organizational.unit.", + "\u00BFCu\u00E1l es el nombre de su unidad de organizaci\u00F3n?"}, + {"What.is.the.name.of.your.organization.", + "\u00BFCu\u00E1l es el nombre de su organizaci\u00F3n?"}, + {"What.is.the.name.of.your.City.or.Locality.", + "\u00BFCu\u00E1l es el nombre de su ciudad o localidad?"}, + {"What.is.the.name.of.your.State.or.Province.", + "\u00BFCu\u00E1l es el nombre de su estado o provincia?"}, + {"What.is.the.two.letter.country.code.for.this.unit.", + "\u00BFCu\u00E1l es el c\u00F3digo de pa\u00EDs de dos letras de la unidad?"}, + {"Is.name.correct.", "\u00BFEs correcto {0}?"}, {"no", "no"}, - {"yes", "s\u00ed"}, - {"y", "y"}, - {" [defaultValue]: ", " [{0}]: "}, - {"Alias has no key", + {"yes", "s\u00ED"}, + {"y", "s"}, + {".defaultValue.", " [{0}]: "}, + {"Alias.alias.has.no.key", "El alias <{0}> no tiene clave"}, - {"Alias references an entry type that is not a private key entry. The -keyclone command only supports cloning of private key entries", - "El alias <{0}> hace referencia a un tipo de entrada que no es una clave privada. El comando -keyclone s\u00f3lo permite la clonaci\u00f3n de entradas de claves privadas"}, + {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key", + "El alias <{0}> hace referencia a un tipo de entrada que no es una clave privada. El comando -keyclone s\u00F3lo permite la clonaci\u00F3n de entradas de claves privadas"}, - {"***************** WARNING WARNING WARNING *****************", - "***************** ADVERTENCIA ADVERTENCIA ADVERTENCIA *****************"}, + {".WARNING.WARNING.WARNING.", + "***************** WARNING WARNING WARNING *****************"}, + {"Signer.d.", "#%d de Firmante:"}, + {"Timestamp.", "Registro de Hora:"}, + {"Signature.", "Firma:"}, + {"CRLs.", "CRL:"}, + {"Certificate.owner.", "Propietario del Certificado: "}, + {"Not.a.signed.jar.file", "No es un archivo jar firmado"}, + {"No.certificate.from.the.SSL.server", + "Ning\u00FAn certificado del servidor SSL"}, // Translators of the following 5 pairs, ATTENTION: // the next 5 string pairs are meant to be combined into 2 paragraphs, // 1+3+4 and 2+3+5. make sure your translation also does. - {"* The integrity of the information stored in your keystore *", - "* La integridad de la informaci\u00f3n almacenada en su almac\u00e9n de claves *"}, - {"* The integrity of the information stored in the srckeystore*", - "* La totalidad de la informaci\u00f3n almacenada en srckeystore*"}, - {"* has NOT been verified! In order to verify its integrity, *", + {".The.integrity.of.the.information.stored.in.your.keystore.", + "* La integridad de la informaci\u00F3n almacenada en su almac\u00E9n de claves *"}, + {".The.integrity.of.the.information.stored.in.the.srckeystore.", + "* La totalidad de la informaci\u00F3n almacenada en srckeystore*"}, + {".has.NOT.been.verified.In.order.to.verify.its.integrity.", "* NO se ha comprobado. Para comprobar dicha integridad, *"}, - {"* you must provide your keystore password. *", - "deber\u00e1 proporcionar su contrase\u00f1a de almac\u00e9n de claves. *"}, - {"* you must provide the srckeystore password. *", - "* se debe indicar la contrase\u00f1a de srckeystore. *"}, + {".you.must.provide.your.keystore.password.", + "* deber\u00E1 proporcionar su contrase\u00F1a de almac\u00E9n de claves. *"}, + {".you.must.provide.the.srckeystore.password.", + "* deber\u00E1 indicar la contrase\u00F1a de srckeystore. *"}, - {"Certificate reply does not contain public key for ", - "La respuesta de certificado no contiene una clave p\u00fablica para <{0}>"}, - {"Incomplete certificate chain in reply", + {"Certificate.reply.does.not.contain.public.key.for.alias.", + "La respuesta de certificado no contiene una clave p\u00FAblica para <{0}>"}, + {"Incomplete.certificate.chain.in.reply", "Cadena de certificado incompleta en la respuesta"}, - {"Certificate chain in reply does not verify: ", + {"Certificate.chain.in.reply.does.not.verify.", "La cadena de certificado de la respuesta no verifica: "}, - {"Top-level certificate in reply:\n", + {"Top.level.certificate.in.reply.", "Certificado de nivel superior en la respuesta:\n"}, - {"... is not trusted. ", "... no es de confianza. "}, - {"Install reply anyway? [no]: ", "\u00bfinstalar respuesta de todos modos? [no]: "}, + {".is.not.trusted.", "... no es de confianza. "}, + {"Install.reply.anyway.no.", "\u00BFInstalar respuesta de todos modos? [no]: "}, {"NO", "NO"}, - {"Public keys in reply and keystore don't match", - "Las claves p\u00fablicas en la respuesta y en el almac\u00e9n de claves no coinciden"}, - {"Certificate reply and certificate in keystore are identical", - "La respuesta del certificado y el certificado en el almac\u00e9n de claves son id\u00e9nticos"}, - {"Failed to establish chain from reply", - "No se ha podido establecer una cadena a partir de la respuesta"}, + {"Public.keys.in.reply.and.keystore.don.t.match", + "Las claves p\u00FAblicas en la respuesta y en el almac\u00E9n de claves no coinciden"}, + {"Certificate.reply.and.certificate.in.keystore.are.identical", + "La respuesta del certificado y el certificado en el almac\u00E9n de claves son id\u00E9nticos"}, + {"Failed.to.establish.chain.from.reply", + "No se ha podido definir una cadena a partir de la respuesta"}, {"n", "n"}, - {"Wrong answer, try again", "Respuesta incorrecta, vuelva a intentarlo"}, - {"Secret key not generated, alias already exists", + {"Wrong.answer.try.again", "Respuesta incorrecta, vuelva a intentarlo"}, + {"Secret.key.not.generated.alias.alias.already.exists", "No se ha generado la clave secreta, el alias <{0}> ya existe"}, - {"Please provide -keysize for secret key generation", - "Proporcione el valor de -keysize para la generaci\u00f3n de claves secretas"}, - {"keytool usage:\n", "sintaxis de keytool:\n"}, + {"Please.provide.keysize.for.secret.key.generation", + "Proporcione el valor de -keysize para la generaci\u00F3n de claves secretas"}, - {"Extensions: ", "Extensiones: "}, - - {"-certreq [-v] [-protected]", - "-certreq [-v] [-protected]"}, - {"\t [-alias ] [-sigalg ]", - "\t [-alias ] [-sigalg ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - {"\t [-keystore ] [-storepass ]", - "\t [-keystore ] [-storepass ]"}, - {"\t [-storetype ] [-providername ]", - "\t [-storetype ] [-providername ]"}, - {"\t [-providerclass [-providerarg ]] ...", - "\t [-providerclass [-providerarg ]] ..."}, - {"\t [-providerpath ]", - "\t [-providerpath ]"}, - {"-delete [-v] [-protected] -alias ", - "-delete [-v] [-protected] -alias "}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-export [-v] [-rfc] [-protected]", - // "-export [-v] [-rfc] [-protected]"}, - {"-exportcert [-v] [-rfc] [-protected]", - "-exportcert [-v] [-rfc] [-protected]"}, - {"\t [-alias ] [-file ]", - "\t [-alias ] [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-genkey [-v] [-protected]", - // "-genkey [-v] [-protected]"}, - {"-genkeypair [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-keyalg ] [-keysize ]", - "\t [-keyalg ] [-keysize ]"}, - {"\t [-sigalg ] [-dname ]", - "\t [-sigalg ] [-dname ]"}, - {"\t [-validity ] [-keypass ]", - "\t [-validity ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-genseckey [-v] [-protected]", - "-genseckey [-v] [-protected]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-help", "-help"}, - //{"-identitydb [-v] [-protected]", - // "-identitydb [-v] [-protected]"}, - //{"\t [-file ]", "\t [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-import [-v] [-noprompt] [-trustcacerts] [-protected]", - // "-import [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"-importcert [-v] [-noprompt] [-trustcacerts] [-protected]", - "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-alias ] [-keypass ]", - "\t [-alias ] [-keypass ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-importkeystore [-v] ", - "-importkeystore [-v] "}, - {"\t [-srckeystore ] [-destkeystore ]", - "\t [-srckeystore ] [-destkeystore ]"}, - {"\t [-srcstoretype ] [-deststoretype ]", - "\t [-srcstoretype ] [-deststoretype ]"}, - {"\t [-srcprotected] [-destprotected]", - "\t [-srcprotected] [-destprotected]"}, - {"\t [-srcstorepass ] [-deststorepass ]", - "\t [-srcstorepass ] [-deststorepass ]"}, - {"\t [-srcprovidername ]\n\t [-destprovidername ]", // l\u00ednea demasiado larga, dividir en 2 - "\t [-srcprovidername ]\n\t [-destprovidername ]"}, - {"\t [-srcalias [-destalias ]", - "\t [-srcalias [-destalias ]"}, - {"\t [-srckeypass ] [-destkeypass ]]", - "\t [-srckeypass ] [-destkeypass ]]"}, - {"\t [-noprompt]", "\t [-noprompt]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-changealias [-v] [-protected] -alias -destalias ", - "-changealias [-v] [-protected] -alias -destalias "}, - {"\t [-keypass ]", "\t [-keypass ]"}, - - //{"-keyclone [-v] [-protected]", - // "-keyclone [-v] [-protected]"}, - //{"\t [-alias ] -dest ", - // "\t [-alias ] -dest "}, - //{"\t [-keypass ] [-new ]", - // "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-keypasswd [-v] [-alias ]", - "-keypasswd [-v] [-alias ]"}, - {"\t [-keypass ] [-new ]", - "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-list [-v | -rfc] [-protected]", - "-list [-v | -rfc] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-printcert [-v] [-file ]", - "-printcert [-v] [-file ]"}, - - //{"-selfcert [-v] [-protected]", - // "-selfcert [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - //{"\t [-dname ] [-validity ]", - // "\t [-dname ] [-validity ]"}, - //{"\t [-keypass ] [-sigalg ]", - // "\t [-keypass ] [-sigalg ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-storepasswd [-v] [-new ]", - "-storepasswd [-v] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ + {"Extensions.", "Extensiones: "}, + {".Empty.value.", "(Valor vac\u00EDo)"}, + {"Extension.Request.", "Solicitud de Extensi\u00F3n:"}, + {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.", + "Solicitud de Certificado PKCS #10 (Versi\u00F3n 1.0)\nAsunto: %s\nClave P\u00FAblica: %s formato %s clave\n"}, + {"Unknown.keyUsage.type.", "Tipo de uso de clave desconocido: "}, + {"Unknown.extendedkeyUsage.type.", "Tipo de uso de clave extendida desconocido: "}, + {"Unknown.AccessDescription.type.", "Tipo de descripci\u00F3n de acceso desconocido: "}, + {"Unrecognized.GeneralName.type.", "Tipo de nombre general no reconocido: "}, + {"This.extension.cannot.be.marked.as.critical.", + "Esta extensi\u00F3n no se puede marcar como cr\u00EDtica. "}, + {"Odd.number.of.hex.digits.found.", "Se ha encontrado un n\u00FAmero impar de d\u00EDgitos hexadecimales: "}, + {"Unknown.extension.type.", "Tipo de extensi\u00F3n desconocida: "}, + {"command.{0}.is.ambiguous.", "El comando {0} es ambiguo:"}, // policytool - {"Warning: A public key for alias 'signers[i]' does not exist. Make sure a KeyStore is properly configured.", - "Advertencia: No hay clave p\u00fablica para el alias {0}. Compruebe que se haya configurado correctamente un almac\u00e9n de claves."}, - {"Warning: Class not found: class", "Advertencia: No se ha encontrado la clase: {0}"}, - {"Warning: Invalid argument(s) for constructor: arg", - "Advertencia: Argumento(s) no v\u00e1lido(s) para el constructor: {0}"}, - {"Illegal Principal Type: type", "Tipo de principal no permitido: {0}"}, - {"Illegal option: option", "Opci\u00f3n no permitida: {0}"}, - {"Usage: policytool [options]", "Sintaxis: policytool [opciones]"}, - {" [-file ] policy file location", - " [-file ] ubicaci\u00f3n del archivo de normas"}, + {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.", + "Advertencia: no hay clave p\u00FAblica para el alias {0}. Aseg\u00FArese de que se ha configurado correctamente un almac\u00E9n de claves."}, + {"Warning.Class.not.found.class", "Advertencia: no se ha encontrado la clase: {0}"}, + {"Warning.Invalid.argument.s.for.constructor.arg", + "Advertencia: argumento(s) no v\u00E1lido(s) para el constructor: {0}"}, + {"Illegal.Principal.Type.type", "Tipo de principal no permitido: {0}"}, + {"Illegal.option.option", "Opci\u00F3n no permitida: {0}"}, + {"Usage.policytool.options.", "Sintaxis: policytool [opciones]"}, + {".file.file.policy.file.location", + " [-file ] ubicaci\u00F3n del archivo de normas"}, {"New", "Nuevo"}, {"Open", "Abrir"}, {"Save", "Guardar"}, - {"Save As", "Guardar como"}, - {"View Warning Log", "Ver registro de advertencias"}, + {"Save.As", "Guardar como"}, + {"View.Warning.Log", "Ver Log de Advertencias"}, {"Exit", "Salir"}, - {"Add Policy Entry", "Agregar entrada de norma"}, - {"Edit Policy Entry", "Editar entrada de norma"}, - {"Remove Policy Entry", "Eliminar entrada de norma"}, + {"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"}, {"Retain", "Mantener"}, - {"Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name.", - "Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name."}, + {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes", + "Advertencia: el nombre del archivo puede contener caracteres de barra invertida de escape. No es necesario utilizar barras invertidas de escape (la herramienta aplica caracteres de escape seg\u00FAn sea necesario al escribir el contenido de las pol\u00EDticas en el almac\u00E9n persistente).\n\nHaga clic en Mantener para conservar el nombre introducido o en Editar para modificarlo."}, - {"Add Public Key Alias", "Agregar alias de clave p\u00fablico"}, - {"Remove Public Key Alias", "Eliminar alias de clave p\u00fablico"}, + {"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"}, - {"Policy File:", "Archivo de normas:"}, - {"Could not open policy file: policyFile: e.toString()", - "No se ha podido abrir el archivo java.policy: {0}: {1}"}, - {"Policy Tool", "Herramienta de normas"}, - {"Errors have occurred while opening the policy configuration. View the Warning Log for more information.", - "Ha habido errores al abrir la configuraci\u00f3n de normas. V\u00e9ase el registro de advertencias para obtener m\u00e1s informaci\u00f3n."}, + {"KeyStore", "Almac\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}"}, + {"Policy.Tool", "Herramienta de Pol\u00EDticas"}, + {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.", + "Ha habido errores al abrir la configuraci\u00F3n de pol\u00EDticas. V\u00E9ase el log de advertencias para obtener m\u00E1s informaci\u00F3n."}, {"Error", "Error"}, {"OK", "Aceptar"}, {"Status", "Estado"}, {"Warning", "Advertencia"}, - {"Permission: ", + {"Permission.", "Permiso: "}, - {"Principal Type:", "Tipo de principal:"}, - {"Principal Name:", "Nombre de principal:"}, - {"Target Name: ", - "Nombre de destino: "}, - {"Actions: ", + {"Principal.Type.", "Tipo de Principal:"}, + {"Principal.Name.", "Nombre de Principal:"}, + {"Target.Name.", + "Nombre de Destino: "}, + {"Actions.", "Acciones: "}, - {"OK to overwrite existing file filename?", - "\u00bfSobrescribir el archivo existente {0}?"}, + {"OK.to.overwrite.existing.file.filename.", + "\u00BFSobrescribir el archivo existente {0}?"}, {"Cancel", "Cancelar"}, - {"CodeBase:", "Base de c\u00f3digos:"}, - {"SignedBy:", "Firmado por:"}, - {"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"}, - {"Done", "Terminar"}, - {"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:"}, + {"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"}, + {"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:"}, {"Principals", "Principales"}, - {" Edit Principal:", " Editar principal:"}, - {" Add New Principal:", " Agregar nuevo principal:"}, + {".Edit.Principal.", " Editar Principal:"}, + {".Add.New.Principal.", " Agregar Nuevo Principal:"}, {"Permissions", "Permisos"}, - {" Edit Permission:", " Editar permiso:"}, - {" Add New Permission:", " Agregar permiso nuevo:"}, - {"Signed By:", "Firmado por:"}, - {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name", - "No se puede especificar principal con una clase de comod\u00edn sin un nombre de comod\u00edn"}, - {"Cannot Specify Principal without a Name", - "No se puede especificar principal sin un nombre"}, - {"Permission and Target Name must have a value", - "Permiso y Nombre de destino deben tener un valor"}, - {"Remove this Policy Entry?", "\u00bfEliminar esta entrada de norma?"}, - {"Overwrite File", "Sobrescribir archivo"}, - {"Policy successfully written to filename", - "Norma escrita satisfactoriamente en {0}"}, - {"null filename", "nombre de archivo nulo"}, - {"Save changes?", "\u00bfGuardar los cambios?"}, - {"Yes", "S\u00ed"}, + {".Edit.Permission.", " Editar Permiso:"}, + {".Add.New.Permission.", " Agregar Permiso Nuevo:"}, + {"Signed.By.", "Firmado Por:"}, + {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name", + "No se puede especificar un principal con una clase de comod\u00EDn sin un nombre de comod\u00EDn"}, + {"Cannot.Specify.Principal.without.a.Name", + "No se puede especificar el principal sin un nombre"}, + {"Permission.and.Target.Name.must.have.a.value", + "Permiso y Nombre de Destino deben tener un valor"}, + {"Remove.this.Policy.Entry.", "\u00BFEliminar esta entrada de pol\u00EDtica?"}, + {"Overwrite.File", "Sobrescribir Archivo"}, + {"Policy.successfully.written.to.filename", + "Pol\u00EDtica escrita correctamente en {0}"}, + {"null.filename", "nombre de archivo nulo"}, + {"Save.changes.", "\u00BFGuardar los cambios?"}, + {"Yes", "S\u00ED"}, {"No", "No"}, - {"Policy Entry", "Entrada de norma"}, - {"Save Changes", "Guardar cambios"}, - {"No Policy Entry selected", "No se ha seleccionado entrada de norma"}, - {"Unable to open KeyStore: ex.toString()", - "No se puede abrir el almac\u00e9n de claves: {0}"}, - {"No principal selected", "No se ha seleccionado principal"}, - {"No permission selected", "No se ha seleccionado un permiso"}, + {"Policy.Entry", "Entrada de Pol\u00EDtica"}, + {"Save.Changes", "Guardar Cambios"}, + {"No.Policy.Entry.selected", "No se ha seleccionado la entrada de pol\u00EDtica"}, + {"Unable.to.open.KeyStore.ex.toString.", + "No se ha podido abrir el almac\u00E9n de claves: {0}"}, + {"No.principal.selected", "No se ha seleccionado un principal"}, + {"No.permission.selected", "No se ha seleccionado un permiso"}, {"name", "nombre"}, - {"configuration type", "tipo de configuraci\u00f3n"}, - {"environment variable name", "nombre de variable de entorno"}, - {"library name", "nombre de la biblioteca"}, - {"package name", "nombre del paquete"}, - {"policy type", "tipo de directiva"}, - {"property name", "nombre de la propiedad"}, - {"provider name", "nombre del proveedor"}, - {"Principal List", "Lista de principales"}, - {"Permission List", "Lista de permisos"}, - {"Code Base", "Base de c\u00f3digo"}, - {"KeyStore U R L:", "URL de almac\u00e9n de claves:"}, - {"KeyStore Password U R L:", "URL de contrase\u00f1a de almac\u00e9n de claves:"}, + {"configuration.type", "tipo de configuraci\u00F3n"}, + {"environment.variable.name", "nombre de variable de entorno"}, + {"library.name", "nombre de la biblioteca"}, + {"package.name", "nombre del paquete"}, + {"policy.type", "tipo de pol\u00EDtica"}, + {"property.name", "nombre de la propiedad"}, + {"Principal.List", "Lista de Principales"}, + {"Permission.List", "Lista de Permisos"}, + {"Code.Base", "Base de C\u00F3digo"}, + {"KeyStore.U.R.L.", "URL de Almac\u00E9n de Claves:"}, + {"KeyStore.Password.U.R.L.", "URL de Contrase\u00F1a de Almac\u00E9n de Claves:"}, // javax.security.auth.PrivateCredentialPermission - {"invalid null input(s)", "entradas nulas no v\u00e1lidas"}, - {"actions can only be 'read'", "las acciones s\u00f3lo pueden 'leerse'"}, - {"permission name [name] syntax invalid: ", - "sintaxis de nombre de permiso [{0}] no v\u00e1lida: "}, - {"Credential Class not followed by a Principal Class and Name", - "Clase de credencial no va seguida de una clase y nombre de principal"}, - {"Principal Class not followed by a Principal Name", + {"invalid.null.input.s.", "entradas nulas no v\u00E1lidas"}, + {"actions.can.only.be.read.", "las acciones s\u00F3lo pueden 'leerse'"}, + {"permission.name.name.syntax.invalid.", + "sintaxis de nombre de permiso [{0}] no v\u00E1lida: "}, + {"Credential.Class.not.followed.by.a.Principal.Class.and.Name", + "La clase de credencial no va seguida de una clase y nombre de principal"}, + {"Principal.Class.not.followed.by.a.Principal.Name", "La clase de principal no va seguida de un nombre de principal"}, - {"Principal Name must be surrounded by quotes", + {"Principal.Name.must.be.surrounded.by.quotes", "El nombre de principal debe ir entre comillas"}, - {"Principal Name missing end quote", + {"Principal.Name.missing.end.quote", "Faltan las comillas finales en el nombre de principal"}, - {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value", - "La clase de principal PrivateCredentialPermission no puede ser un valor comod\u00edn (*) si el nombre de principal no lo es tambi\u00e9n"}, - {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name", - "CredOwner:\n\tClase de principal = {0}\n\tNombre de principal = {1}"}, + {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value", + "La clase de principal PrivateCredentialPermission no puede ser un valor comod\u00EDn (*) si el nombre de principal no lo es tambi\u00E9n"}, + {"CredOwner.Principal.Class.class.Principal.Name.name", + "CredOwner:\n\tClase de Principal = {0}\n\tNombre de Principal = {1}"}, // javax.security.auth.x500 - {"provided null name", "se ha proporcionado un nombre nulo"}, - {"provided null keyword map", "mapa de palabras proporcionado nulo"}, - {"provided null OID map", "mapa de OID proporcionado nulo"}, + {"provided.null.name", "se ha proporcionado un nombre nulo"}, + {"provided.null.keyword.map", "mapa de palabras clave proporcionado nulo"}, + {"provided.null.OID.map", "mapa de OID proporcionado nulo"}, // javax.security.auth.Subject - {"invalid null AccessControlContext provided", - "se ha proporcionado un AccessControlContext nulo no v\u00e1lido"}, - {"invalid null action provided", "se ha proporcionado una acci\u00f3n nula no v\u00e1lida"}, - {"invalid null Class provided", "se ha proporcionado una clase nula no v\u00e1lida"}, - {"Subject:\n", "Asunto:\n"}, - {"\tPrincipal: ", "\tPrincipal: "}, - {"\tPublic Credential: ", "\tCredencial p\u00fablica: "}, - {"\tPrivate Credentials inaccessible\n", - "\tCredenciales privadas inaccesibles\n"}, - {"\tPrivate Credential: ", "\tCredencial privada: "}, - {"\tPrivate Credential inaccessible\n", - "\tCredencial privada inaccesible\n"}, - {"Subject is read-only", "El asunto es de s\u00f3lo lectura"}, - {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set", - "intentando agregar un objeto que no es un ejemplar de java.security.Principal al conjunto principal de un asunto"}, - {"attempting to add an object which is not an instance of class", - "intentando agregar un objeto que no es un ejemplar de {0}"}, + {"invalid.null.AccessControlContext.provided", + "se ha proporcionado un AccessControlContext nulo no v\u00E1lido"}, + {"invalid.null.action.provided", "se ha proporcionado una acci\u00F3n nula no v\u00E1lida"}, + {"invalid.null.Class.provided", "se ha proporcionado una clase nula no v\u00E1lida"}, + {"Subject.", "Asunto:\n"}, + {".Principal.", "\tPrincipal: "}, + {".Public.Credential.", "\tCredencial P\u00FAblica: "}, + {".Private.Credentials.inaccessible.", + "\tCredenciales Privadas Inaccesibles\n"}, + {".Private.Credential.", "\tCredencial Privada: "}, + {".Private.Credential.inaccessible.", + "\tCredencial Privada Inaccesible\n"}, + {"Subject.is.read.only", "El asunto es de s\u00F3lo lectura"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set", + "intentando agregar un objeto que no es una instancia de java.security.Principal al juego principal de un asunto"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.class", + "intentando agregar un objeto que no es una instancia de {0}"}, // javax.security.auth.login.AppConfigurationEntry - {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "}, + {"LoginModuleControlFlag.", "LoginModuleControlFlag: "}, // javax.security.auth.login.LoginContext - {"Invalid null input: name", "Entrada nula no v\u00e1lida: nombre"}, - {"No LoginModules configured for name", + {"Invalid.null.input.name", "Entrada nula no v\u00E1lida: nombre"}, + {"No.LoginModules.configured.for.name", "No se han configurado LoginModules para {0}"}, - {"invalid null Subject provided", "se ha proporcionado un asunto nulo no v\u00e1lido"}, - {"invalid null CallbackHandler provided", - "se ha proporcionado CallbackHandler nulo no v\u00e1lido"}, - {"null subject - logout called before login", - "asunto nulo - se ha llamado a fin de sesi\u00f3n antes del inicio de sesi\u00f3n"}, - {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor", - "no se puede lanzar un ejemplar de LoginModule, {0}, porque no incluye un constructor no-argumento"}, - {"unable to instantiate LoginModule", - "no se puede lanzar un ejemplar de LoginModule"}, - {"unable to instantiate LoginModule: ", - "no se puede instanciar LoginModule: "}, - {"unable to find LoginModule class: ", - "no se puede encontrar la clase LoginModule: "}, - {"unable to access LoginModule: ", - "no se puede acceder a LoginModule: "}, - {"Login Failure: all modules ignored", - "Fallo en inicio de sesi\u00f3n: se ha hecho caso omiso de todos los m\u00f3dulos"}, + {"invalid.null.Subject.provided", "se ha proporcionado un asunto nulo no v\u00E1lido"}, + {"invalid.null.CallbackHandler.provided", + "se ha proporcionado CallbackHandler nulo no v\u00E1lido"}, + {"null.subject.logout.called.before.login", + "asunto nulo - se ha llamado al cierre de sesi\u00F3n antes del inicio de sesi\u00F3n"}, + {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor", + "no se ha podido instanciar LoginModule, {0}, porque no incluye un constructor sin argumentos"}, + {"unable.to.instantiate.LoginModule", + "no se ha podido instanciar LoginModule"}, + {"unable.to.instantiate.LoginModule.", + "no se ha podido instanciar LoginModule: "}, + {"unable.to.find.LoginModule.class.", + "no se ha encontrado la clase LoginModule: "}, + {"unable.to.access.LoginModule.", + "no se ha podido acceder a LoginModule: "}, + {"Login.Failure.all.modules.ignored", + "Fallo en inicio de sesi\u00F3n: se han ignorado todos los m\u00F3dulos"}, // sun.security.provider.PolicyFile - {"java.security.policy: error parsing policy:\n\tmessage", - "java.security.policy: error de an\u00e1lisis de {0}:\n\t{1}"}, - {"java.security.policy: error adding Permission, perm:\n\tmessage", - "java.security.policy: error al agregar Permiso, {0}:\n\t{1}"}, - {"java.security.policy: error adding Entry:\n\tmessage", - "java.security.policy: error al agregar Entrada:\n\t{0}"}, - {"alias name not provided (pe.name)", "no se ha proporcionado nombre de alias ({0})"}, - {"unable to perform substitution on alias, suffix", - "no se puede realizar la sustituci\u00f3n en el alias, {0}"}, - {"substitution value, prefix, unsupported", - "valor de sustituci\u00f3n, {0}, no soportado"}, - {"(", "("}, - {")", ")"}, - {"type can't be null","el tipo no puede ser nulo"}, + {"java.security.policy.error.parsing.policy.message", + "java.security.policy: error de an\u00E1lisis de {0}:\n\t{1}"}, + {"java.security.policy.error.adding.Permission.perm.message", + "java.security.policy: error al agregar un permiso, {0}:\n\t{1}"}, + {"java.security.policy.error.adding.Entry.message", + "java.security.policy: error al agregar una entrada:\n\t{0}"}, + {"alias.name.not.provided.pe.name.", "no se ha proporcionado el nombre de alias ({0})"}, + {"unable.to.perform.substitution.on.alias.suffix", + "no se puede realizar la sustituci\u00F3n en el alias, {0}"}, + {"substitution.value.prefix.unsupported", + "valor de sustituci\u00F3n, {0}, no soportado"}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"type.can.t.be.null","el tipo no puede ser nulo"}, // sun.security.provider.PolicyParser - {"keystorePasswordURL can not be specified without also specifying keystore", - "keystorePasswordURL no puede especificarse sin especificar tambi\u00e9n el almac\u00e9n de claves"}, - {"expected keystore type", "se esperaba un tipo de almac\u00e9n de claves"}, - {"expected keystore provider", "se esperaba un proveedor de almac\u00e9n de claves"}, - {"multiple Codebase expressions", - "expresiones m\u00faltiples de base de c\u00f3digos"}, - {"multiple SignedBy expressions","expresiones m\u00faltiples de SignedBy"}, - {"SignedBy has empty alias","SignedBy tiene un alias vac\u00edo"}, - {"can not specify Principal with a wildcard class without a wildcard name", - "no se puede especificar Principal con una clase de comod\u00edn sin un nombre de comod\u00edn"}, - {"expected codeBase or SignedBy or Principal", - "se esperaba base de c\u00f3digos o SignedBy o Principal"}, - {"expected permission entry", "se esperaba un permiso de entrada"}, - {"number ", "n\u00famero "}, - {"expected [expect], read [end of file]", - "se esperaba [{0}], se ha le\u00eddo [end of file]"}, - {"expected [;], read [end of file]", - "se esperaba [;], se ha le\u00eddo [end of file]"}, - {"line number: msg", "l\u00ednea {0}: {1}"}, - {"line number: expected [expect], found [actual]", - "l\u00ednea {0}: se esperaba [{1}], se ha encontrado [{2}]"}, - {"null principalClass or principalName", + {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore", + "keystorePasswordURL no puede especificarse sin especificar tambi\u00E9n el almac\u00E9n de claves"}, + {"expected.keystore.type", "se esperaba un tipo de almac\u00E9n de claves"}, + {"expected.keystore.provider", "se esperaba un proveedor de almac\u00E9n de claves"}, + {"multiple.Codebase.expressions", + "expresiones m\u00FAltiples de CodeBase"}, + {"multiple.SignedBy.expressions","expresiones m\u00FAltiples de SignedBy"}, + {"SignedBy.has.empty.alias","SignedBy tiene un alias vac\u00EDo"}, + {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name", + "no se puede especificar Principal con una clase de comod\u00EDn sin un nombre de comod\u00EDn"}, + {"expected.codeBase.or.SignedBy.or.Principal", + "se esperaba codeBase o SignedBy o Principal"}, + {"expected.permission.entry", "se esperaba una entrada de permiso"}, + {"number.", "n\u00FAmero "}, + {"expected.expect.read.end.of.file.", + "se esperaba [{0}], se ha le\u00EDdo [final de archivo]"}, + {"expected.read.end.of.file.", + "se esperaba [;], se ha le\u00EDdo [final de archivo]"}, + {"line.number.msg", "l\u00EDnea {0}: {1}"}, + {"line.number.expected.expect.found.actual.", + "l\u00EDnea {0}: se esperaba [{1}], se ha encontrado [{2}]"}, + {"null.principalClass.or.principalName", "principalClass o principalName nulos"}, // sun.security.pkcs11.SunPKCS11 - {"PKCS11 Token [providerName] Password: ", - "Contrase\u00f1a de la tarjeta de claves PKCS11 [{0}]: "}, + {"PKCS11.Token.providerName.Password.", + "Contrase\u00F1a del Elemento PKCS11 [{0}]: "}, /* --- DEPRECATED --- */ // javax.security.auth.Policy - {"unable to instantiate Subject-based policy", - "no se puede instanciar una directiva basada en Subject"} + {"unable.to.instantiate.Subject.based.policy", + "no se ha podido instanciar una pol\u00EDtica basada en asunto"} }; @@ -648,3 +670,4 @@ public class Resources_es extends java.util.ListResourceBundle { return contents; } } + diff --git a/jdk/src/share/classes/sun/security/util/Resources_fr.java b/jdk/src/share/classes/sun/security/util/Resources_fr.java index 199642dfc46..fa1e48b3613 100644 --- a/jdk/src/share/classes/sun/security/util/Resources_fr.java +++ b/jdk/src/share/classes/sun/security/util/Resources_fr.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -35,605 +35,627 @@ public class Resources_fr extends java.util.ListResourceBundle { private static final Object[][] contents = { // shared (from jarsigner) - {" ", " "}, - {" ", " "}, - {" ", " "}, - {", ", ", "}, + {"SPACE", " "}, + {"2SPACE", " "}, + {"6SPACE", " "}, + {"COMMA", ", "}, // shared (from keytool) - {"\n", "\n"}, - {"*******************************************", - "*******************************************"}, - {"*******************************************\n\n", + {"NEWLINE", "\n"}, + {"STAR", "*******************************************"}, + {"STARNN", + "*******************************************\n\n"}, - // keytool - {"keytool error: ", "erreur keytool : "}, - {"Illegal option: ", "Option non valide : "}, - {"Try keytool -help","Essayez keytool -help"}, - {"Command option needs an argument.", "L''option de commande {0} requiert un argument."}, - {"Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified value.", - "Avertissement\u00a0: Les mots de passe store et key distincts ne sont pas pris en charge pour les keystores PKCS12. La valeur {0} sp\u00e9cifi\u00e9e par l''utilisateur est ignor\u00e9e."}, - {"-keystore must be NONE if -storetype is {0}", - "-keystore doit \u00eatre d\u00e9fini sur NONE si -storetype est {0}"}, - {"Too may retries, program terminated", + // keytool: Help part + {".OPTION.", " [OPTION]..."}, + {"Options.", "Options :"}, + {"Use.keytool.help.for.all.available.commands", + "Utiliser \"keytool -help\" pour toutes les commandes disponibles"}, + {"Key.and.Certificate.Management.Tool", + "Outil de gestion de certificats et de cl\u00E9s"}, + {"Commands.", "Commandes :"}, + {"Use.keytool.command.name.help.for.usage.of.command.name", + "Utiliser \"keytool -command_name -help\" pour la syntaxe de command_name"}, + // keytool: help: commands + {"Generates.a.certificate.request", + "G\u00E9n\u00E8re une demande de certificat"}, //-certreq + {"Changes.an.entry.s.alias", + "Modifie l'alias d'une entr\u00E9e"}, //-changealias + {"Deletes.an.entry", + "Supprime une entr\u00E9e"}, //-delete + {"Exports.certificate", + "Exporte le certificat"}, //-exportcert + {"Generates.a.key.pair", + "G\u00E9n\u00E8re une paire de cl\u00E9s"}, //-genkeypair + {"Generates.a.secret.key", + "G\u00E9n\u00E8re une cl\u00E9 secr\u00E8te"}, //-genseckey + {"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 + {"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.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", + "Clone une entr\u00E9e de cl\u00E9"}, //-keyclone + {"Changes.the.key.password.of.an.entry", + "Modifie le mot de passe de cl\u00E9 d'une entr\u00E9e"}, //-keypasswd + {"Lists.entries.in.a.keystore", + "R\u00E9pertorie les entr\u00E9es d'un fichier de cl\u00E9s"}, //-list + {"Prints.the.content.of.a.certificate", + "Imprime le contenu d'un certificat"}, //-printcert + {"Prints.the.content.of.a.certificate.request", + "Imprime le contenu d'une demande de certificat"}, //-printcertreq + {"Prints.the.content.of.a.CRL.file", + "Imprime le contenu d'un fichier de liste des certificats r\u00E9voqu\u00E9s (CRL)"}, //-printcrl + {"Generates.a.self.signed.certificate", + "G\u00E9n\u00E8re un certificat auto-sign\u00E9"}, //-selfcert + {"Changes.the.store.password.of.a.keystore", + "Modifie le mot de passe de banque d'un fichier de cl\u00E9s"}, //-storepasswd + // keytool: help: options + {"alias.name.of.the.entry.to.process", + "nom d'alias de l'entr\u00E9e \u00E0 traiter"}, //-alias + {"destination.alias", + "alias de destination"}, //-destalias + {"destination.key.password", + "mot de passe de la cl\u00E9 de destination"}, //-destkeypass + {"destination.keystore.name", + "nom du fichier de cl\u00E9s de destination"}, //-destkeystore + {"destination.keystore.password.protected", + "mot de passe du fichier de cl\u00E9s de destination prot\u00E9g\u00E9"}, //-destprotected + {"destination.keystore.provider.name", + "nom du fournisseur du fichier de cl\u00E9s de destination"}, //-destprovidername + {"destination.keystore.password", + "mot de passe du fichier de cl\u00E9s de destination"}, //-deststorepass + {"destination.keystore.type", + "type du fichier de cl\u00E9s de destination"}, //-deststoretype + {"distinguished.name", + "nom distinctif"}, //-dname + {"X.509.extension", + "extension X.509"}, //-ext + {"output.file.name", + "nom du fichier de sortie"}, //-file and -outfile + {"input.file.name", + "nom du fichier d'entr\u00E9e"}, //-file and -infile + {"key.algorithm.name", + "nom de l'algorithme de cl\u00E9"}, //-keyalg + {"key.password", + "mot de passe de la cl\u00E9"}, //-keypass + {"key.bit.size", + "taille en bits de la cl\u00E9"}, //-keysize + {"keystore.name", + "nom du fichier de cl\u00E9s"}, //-keystore + {"new.password", + "nouveau mot de passe"}, //-new + {"do.not.prompt", + "ne pas inviter"}, //-noprompt + {"password.through.protected.mechanism", + "mot de passe via m\u00E9canisme prot\u00E9g\u00E9"}, //-protected + {"provider.argument", + "argument du fournisseur"}, //-providerarg + {"provider.class.name", + "nom de la classe de fournisseur"}, //-providerclass + {"provider.name", + "nom du fournisseur"}, //-providername + {"provider.classpath", + "variable d'environnement CLASSPATH du fournisseur"}, //-providerpath + {"output.in.RFC.style", + "sortie au style RFC"}, //-rfc + {"signature.algorithm.name", + "nom de l'algorithme de signature"}, //-sigalg + {"source.alias", + "alias source"}, //-srcalias + {"source.key.password", + "mot de passe de la cl\u00E9 source"}, //-srckeypass + {"source.keystore.name", + "nom du fichier de cl\u00E9s source"}, //-srckeystore + {"source.keystore.password.protected", + "mot de passe du fichier de cl\u00E9s source prot\u00E9g\u00E9"}, //-srcprotected + {"source.keystore.provider.name", + "nom du fournisseur du fichier de cl\u00E9s source"}, //-srcprovidername + {"source.keystore.password", + "mot de passe du fichier de cl\u00E9s source"}, //-srcstorepass + {"source.keystore.type", + "type du fichier de cl\u00E9s source"}, //-srcstoretype + {"SSL.server.host.and.port", + "Port et h\u00F4te du serveur SSL"}, //-sslserver + {"signed.jar.file", + "fichier JAR sign\u00E9"}, //=jarfile + {"certificate.validity.start.date.time", + "date/heure de d\u00E9but de validit\u00E9 du certificat"}, //-startdate + {"keystore.password", + "mot de passe du fichier de cl\u00E9s"}, //-storepass + {"keystore.type", + "type du fichier de cl\u00E9s"}, //-storetype + {"trust.certificates.from.cacerts", + "certificats s\u00E9curis\u00E9s issus de certificats CA"}, //-trustcacerts + {"verbose.output", + "sortie en mode verbose"}, //-v + {"validity.number.of.days", + "nombre de jours de validit\u00E9"}, //-validity + {"Serial.ID.of.cert.to.revoke", + "ID de s\u00E9rie du certificat \u00E0 r\u00E9voquer"}, //-id + // keytool: Running part + {"keytool.error.", "erreur keytool : "}, + {"Illegal.option.", "Option non admise : "}, + {"Illegal.value.", "Valeur non admise : "}, + {"Unknown.password.type.", "Type de mot de passe inconnu : "}, + {"Cannot.find.environment.variable.", + "Variable d'environnement introuvable : "}, + {"Cannot.find.file.", "Fichier introuvable : "}, + {"Command.option.flag.needs.an.argument.", "L''option de commande {0} requiert un argument."}, + {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.", + "Avertissement\u00A0: les mots de passe de cl\u00E9 et de banque distincts ne sont pas pris en charge pour les fichiers de cl\u00E9s d''acc\u00E8s PKCS12. La valeur {0} sp\u00E9cifi\u00E9e par l''utilisateur est ignor\u00E9e."}, + {".keystore.must.be.NONE.if.storetype.is.{0}", + "-keystore doit \u00EAtre d\u00E9fini sur NONE si -storetype est {0}"}, + {"Too.many.retries.program.terminated", "Trop de tentatives, fin du programme"}, - {"-storepasswd and -keypasswd commands not supported if -storetype is {0}", - "Les commandes -storepasswd et -keypasswd ne sont pas prises en charge si -storetype est d\u00e9fini sur {0}"}, - {"-keypasswd commands not supported if -storetype is PKCS12", - "Les commandes -keypasswd ne sont pas prises en charge si -storetype est d\u00e9fini sur PKCS12"}, - {"-keypass and -new can not be specified if -storetype is {0}", - "Les commandes -keypass et -new ne peuvent pas \u00eatre sp\u00e9cifi\u00e9es si -storetype est d\u00e9fini sur {0}"}, - {"if -protected is specified, then -storepass, -keypass, and -new must not be specified", - "si -protected est sp\u00e9cifi\u00e9, alors -storepass, -keypass et -new ne doivent pas \u00eatre sp\u00e9cifi\u00e9s"}, - {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified", - "Si \u0096srcprotected est sp\u00e9cifi\u00e9, alors -srcstorepass et \u0096srckeypass ne doivent pas \u00eatre sp\u00e9cifi\u00e9s"}, - {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified", - "Si le keystore n'est pas prot\u00e9g\u00e9 par un mot de passe, les commandes -storepass, -keypass et -new ne doivent pas \u00eatre sp\u00e9cifi\u00e9es"}, - {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified", - "Si le keystore source n'est pas prot\u00e9g\u00e9 par un mot de passe, les commandes -srcstorepass et -srckeypass ne doivent pas \u00eatre sp\u00e9cifi\u00e9es"}, - {"Validity must be greater than zero", - "La validit\u00e9 doit \u00eatre sup\u00e9rieure \u00e0 z\u00e9ro"}, - {"provName not a provider", "{0} n''est pas un fournisseur"}, - {"Usage error: no command provided", "Erreur d'utilisation\u00a0: aucune commande fournie"}, - {"Usage error, is not a legal command", "Erreur d''utilisation, {0} n''est pas une commande valide"}, - {"Source keystore file exists, but is empty: ", "Le fichier du keystore source existe, mais il est vide\u00a0: "}, - {"Please specify -srckeystore", "veuillez sp\u00e9cifier -srckeystore"}, - {"Must not specify both -v and -rfc with 'list' command", - "-v et -rfc ne peuvent \u00eatre sp\u00e9cifi\u00e9s simultan\u00e9ment avec la commande 'list'"}, - {"Key password must be at least 6 characters", - "Un mot de passe de cl\u00e9 doit comporter au moins 6 caract\u00e8res"}, - {"New password must be at least 6 characters", - "Le nouveau mot de passe doit comporter au moins 6 caract\u00e8res"}, - {"Keystore file exists, but is empty: ", - "Fichier Keystore existant mais vide : "}, - {"Keystore file does not exist: ", - "Fichier Keystore introuvable : "}, - {"Must specify destination alias", "L'alias de destination doit \u00eatre sp\u00e9cifi\u00e9"}, - {"Must specify alias", "Vous devez sp\u00e9cifier un alias"}, - {"Keystore password must be at least 6 characters", - "Un mot de passe de Keystore doit comporter au moins 6 caract\u00e8res"}, - {"Enter keystore password: ", "Tapez le mot de passe du Keystore : "}, - {"Enter source keystore password: ", "Saisissez le mot de passe du keystore source\u00a0: "}, - {"Enter destination keystore password: ", "Saisissez le mot de passe du keystore de destination\u00a0: "}, - {"Keystore password is too short - must be at least 6 characters", - "Mot de passe de Keystore trop court, il doit compter au moins 6 caract\u00e8res"}, - {"Unknown Entry Type", "Type d'entr\u00e9e inconnu"}, - {"Too many failures. Alias not changed", "Trop d'erreurs. Alias non modifi\u00e9"}, - {"Entry for alias successfully imported.", - "L''entr\u00e9e de l''alias {0} a \u00e9t\u00e9 import\u00e9e."}, - {"Entry for alias not imported.", "L''entr\u00e9e de l''alias {0} n''a pas \u00e9t\u00e9 import\u00e9e."}, - {"Problem importing entry for alias : .\nEntry for alias not imported.", - "Probl\u00e8me lors de l''importation de l''entr\u00e9e de l''alias {0}\u00a0: {1}.\nL''entr\u00e9e de l''alias {0} n''a pas \u00e9t\u00e9 import\u00e9e."}, - {"Import command completed: entries successfully imported, entries failed or cancelled", - "Commande d''importation ex\u00e9cut\u00e9e\u00a0: {0} entr\u00e9es import\u00e9es, \u00e9chec ou annulation de {1} entr\u00e9es"}, - {"Warning: Overwriting existing alias in destination keystore", - "Avertissement\u00a0: L''alias existant {0} est \u00e9cras\u00e9 dans le keystore de destination"}, - {"Existing entry alias exists, overwrite? [no]: ", - "L''alias d''entr\u00e9e {0} existe d\u00e9j\u00e0, voulez-vous l''\u00e9craser\u00a0? [non]\u00a0: "}, - {"Too many failures - try later", "Trop d'erreurs - r\u00e9essayez plus tard"}, - {"Certification request stored in file ", - "Demande de certification enregistr\u00e9e dans le fichier <{0}>"}, - {"Submit this to your CA", "Soumettre \u00e0 votre CA"}, - {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified", - "si l'alias n'est pas sp\u00e9cifi\u00e9, destalias, srckeypass et destkeypass ne doivent pas \u00eatre sp\u00e9cifi\u00e9s"}, - {"Certificate stored in file ", - "Certificat enregistr\u00e9 dans le fichier <{0}>"}, - {"Certificate reply was installed in keystore", - "R\u00e9ponse de certificat install\u00e9e dans le Keystore"}, - {"Certificate reply was not installed in keystore", - "R\u00e9ponse de certificat non install\u00e9e dans le Keystore"}, - {"Certificate was added to keystore", - "Certificat ajout\u00e9 au Keystore"}, - {"Certificate was not added to keystore", - "Certificat non ajout\u00e9 au Keystore"}, - {"[Storing ksfname]", "[Stockage de {0}]"}, - {"alias has no public key (certificate)", - "{0} ne poss\u00e8de pas de cl\u00e9 publique (certificat)"}, - {"Cannot derive signature algorithm", - "Impossible de d\u00e9duire l'algorithme de signature"}, - {"Alias does not exist", - "Alias <{0}> introuvable"}, - {"Alias has no certificate", - "L''alias <{0}> ne poss\u00e8de pas de certificat"}, - {"Key pair not generated, alias already exists", - "Paire de cl\u00e9s non g\u00e9n\u00e9r\u00e9e, l''alias <{0}> existe d\u00e9j\u00e0"}, - {"Cannot derive signature algorithm", - "Impossible de d\u00e9duire l'algorithme de signature"}, - {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name", - "G\u00e9n\u00e9ration d''une paire de cl\u00e9s {1} de {0} bits et d''un certificat autosign\u00e9 ({2}) d''une validit\u00e9 de {3} jours\n\tpour : {4}"}, - {"Enter key password for ", "Sp\u00e9cifiez le mot de passe de la cl\u00e9 pour <{0}>"}, - {"\t(RETURN if same as keystore password): ", - "\t(appuyez sur Entr\u00e9e s'il s'agit du mot de passe du Keystore) : "}, - {"Key password is too short - must be at least 6 characters", - "Le mot de passe de cl\u00e9 doit comporter au moins 6 caract\u00e8res."}, - {"Too many failures - key not added to keystore", - "Trop d'erreurs - cl\u00e9 non ajout\u00e9e au Keystore"}, - {"Destination alias already exists", - "L''alias de la destination <{0}> existe d\u00e9j\u00e0"}, - {"Password is too short - must be at least 6 characters", - "Le mot de passe doit comporter au moins 6 caract\u00e8res."}, - {"Too many failures. Key entry not cloned", - "Trop d'erreurs. Entr\u00e9e de cl\u00e9 non clon\u00e9e"}, - {"key password for ", "mot de passe de cl\u00e9 pour <{0}>"}, - {"Keystore entry for already exists", - "L''entr\u00e9e Keystore pour <{0}> existe d\u00e9j\u00e0"}, - {"Creating keystore entry for ...", - "Cr\u00e9ation d''une entr\u00e9e keystore pour <{0}> ..."}, - {"No entries from identity database added", - "Aucune entr\u00e9e ajout\u00e9e \u00e0 partir de la base de donn\u00e9es d'identit\u00e9s"}, - {"Alias name: alias", "Nom d''alias : {0}"}, - {"Creation date: keyStore.getCreationDate(alias)", - "Date de cr\u00e9ation : {0,date}"}, - {"alias, keyStore.getCreationDate(alias), ", + {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}", + "Les commandes -storepasswd et -keypasswd ne sont pas prises en charge si -storetype est d\u00E9fini sur {0}"}, + {".keypasswd.commands.not.supported.if.storetype.is.PKCS12", + "Les commandes -keypasswd ne sont pas prises en charge si -storetype est d\u00E9fini sur PKCS12"}, + {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}", + "Les commandes -keypass et -new ne peuvent pas \u00EAtre sp\u00E9cifi\u00E9es si -storetype est d\u00E9fini sur {0}"}, + {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified", + "si -protected est sp\u00E9cifi\u00E9, -storepass, -keypass et -new ne doivent pas \u00EAtre indiqu\u00E9s"}, + {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified", + "Si -srcprotected est indiqu\u00E9, les commandes -srcstorepass et -srckeypass ne doivent pas \u00EAtre sp\u00E9cifi\u00E9es"}, + {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified", + "Si le fichier de cl\u00E9s n'est pas prot\u00E9g\u00E9 par un mot de passe, les commandes -storepass, -keypass et -new ne doivent pas \u00EAtre sp\u00E9cifi\u00E9es"}, + {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", + "Si le fichier de cl\u00E9s source n'est pas prot\u00E9g\u00E9 par un mot de passe, les commandes -srcstorepass et -srckeypass ne doivent pas \u00EAtre sp\u00E9cifi\u00E9es"}, + {"Illegal.startdate.value", "Valeur de date de d\u00E9but non admise"}, + {"Validity.must.be.greater.than.zero", + "La validit\u00E9 doit \u00EAtre sup\u00E9rieure \u00E0 z\u00E9ro"}, + {"provName.not.a.provider", "{0} n''est pas un fournisseur"}, + {"Usage.error.no.command.provided", "Erreur de syntaxe\u00A0: aucune commande fournie"}, + {"Source.keystore.file.exists.but.is.empty.", "Le fichier de cl\u00E9s source existe mais il est vide : "}, + {"Please.specify.srckeystore", "Indiquez -srckeystore"}, + {"Must.not.specify.both.v.and.rfc.with.list.command", + "-v et -rfc ne doivent pas \u00EAtre sp\u00E9cifi\u00E9s avec la commande 'list'"}, + {"Key.password.must.be.at.least.6.characters", + "Un mot de passe de cl\u00E9 doit comporter au moins 6 caract\u00E8res"}, + {"New.password.must.be.at.least.6.characters", + "Le nouveau mot de passe doit comporter au moins 6 caract\u00E8res"}, + {"Keystore.file.exists.but.is.empty.", + "Fichier de cl\u00E9s existant mais vide : "}, + {"Keystore.file.does.not.exist.", + "Le fichier de cl\u00E9s n'existe pas : "}, + {"Must.specify.destination.alias", "L'alias de destination doit \u00EAtre sp\u00E9cifi\u00E9"}, + {"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.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: "}, + {"Keystore.password.is.too.short.must.be.at.least.6.characters", + "Le mot de passe du fichier de cl\u00E9s est trop court : il doit comporter au moins 6 caract\u00E8res"}, + {"Unknown.Entry.Type", "Type d'entr\u00E9e inconnu"}, + {"Too.many.failures.Alias.not.changed", "Trop d'erreurs. Alias non modifi\u00E9"}, + {"Entry.for.alias.alias.successfully.imported.", + "L''entr\u00E9e de l''alias {0} a \u00E9t\u00E9 import\u00E9e."}, + {"Entry.for.alias.alias.not.imported.", "L''entr\u00E9e de l''alias {0} n''a pas \u00E9t\u00E9 import\u00E9e."}, + {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.", + "Probl\u00E8me lors de l''import de l''entr\u00E9e de l''alias {0}\u00A0: {1}.\nL''entr\u00E9e de l''alias {0} n''a pas \u00E9t\u00E9 import\u00E9e."}, + {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled", + "Commande d''import ex\u00E9cut\u00E9e\u00A0: {0} entr\u00E9es import\u00E9es, \u00E9chec ou annulation de {1} entr\u00E9es"}, + {"Warning.Overwriting.existing.alias.alias.in.destination.keystore", + "Avertissement\u00A0: l''alias {0} existant sera remplac\u00E9 dans le fichier de cl\u00E9s d''acc\u00E8s de destination"}, + {"Existing.entry.alias.alias.exists.overwrite.no.", + "L''alias d''entr\u00E9e {0} existe d\u00E9j\u00E0. Voulez-vous le remplacer ? [non]\u00A0: "}, + {"Too.many.failures.try.later", "Trop d'erreurs. R\u00E9essayez plus tard"}, + {"Certification.request.stored.in.file.filename.", + "Demande de certification stock\u00E9e dans le fichier <{0}>"}, + {"Submit.this.to.your.CA", "Soumettre \u00E0 votre CA"}, + {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified", + "si l'alias n'est pas sp\u00E9cifi\u00E9, destalias, srckeypass et destkeypass ne doivent pas \u00EAtre sp\u00E9cifi\u00E9s"}, + {"Certificate.stored.in.file.filename.", + "Certificat stock\u00E9 dans le fichier <{0}>"}, + {"Certificate.reply.was.installed.in.keystore", + "R\u00E9ponse de certificat install\u00E9e dans le fichier de cl\u00E9s"}, + {"Certificate.reply.was.not.installed.in.keystore", + "R\u00E9ponse de certificat non install\u00E9e dans le fichier de cl\u00E9s"}, + {"Certificate.was.added.to.keystore", + "Certificat ajout\u00E9 au fichier de cl\u00E9s"}, + {"Certificate.was.not.added.to.keystore", + "Certificat non ajout\u00E9 au fichier de cl\u00E9s"}, + {".Storing.ksfname.", "[Stockage de {0}]"}, + {"alias.has.no.public.key.certificate.", + "{0} ne poss\u00E8de pas de cl\u00E9 publique (certificat)"}, + {"Cannot.derive.signature.algorithm", + "Impossible de d\u00E9duire l'algorithme de signature"}, + {"Alias.alias.does.not.exist", + "L''alias <{0}> n''existe pas"}, + {"Alias.alias.has.no.certificate", + "L''alias <{0}> ne poss\u00E8de pas de certificat"}, + {"Key.pair.not.generated.alias.alias.already.exists", + "Paire de cl\u00E9s non g\u00E9n\u00E9r\u00E9e, l''alias <{0}> existe d\u00E9j\u00E0"}, + {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for", + "G\u00E9n\u00E9ration d''une paire de cl\u00E9s {1} de {0} bits et d''un certificat auto-sign\u00E9 ({2}) d''une validit\u00E9 de {3} jours\n\tpour : {4}"}, + {"Enter.key.password.for.alias.", "Entrez le mot de passe de la cl\u00E9 pour <{0}>"}, + {".RETURN.if.same.as.keystore.password.", + "\t(appuyez sur Entr\u00E9e s'il s'agit du mot de passe du fichier de cl\u00E9s) : "}, + {"Key.password.is.too.short.must.be.at.least.6.characters", + "Le mot de passe de la cl\u00E9 est trop court : il doit comporter au moins 6 caract\u00E8res"}, + {"Too.many.failures.key.not.added.to.keystore", + "Trop d'erreurs. Cl\u00E9 non ajout\u00E9e au fichier de cl\u00E9s"}, + {"Destination.alias.dest.already.exists", + "L''alias de la destination <{0}> existe d\u00E9j\u00E0"}, + {"Password.is.too.short.must.be.at.least.6.characters", + "Le mot de passe est trop court : il doit comporter au moins 6 caract\u00E8res"}, + {"Too.many.failures.Key.entry.not.cloned", + "Trop d'erreurs. Entr\u00E9e de cl\u00E9 non clon\u00E9e"}, + {"key.password.for.alias.", "mot de passe de cl\u00E9 pour <{0}>"}, + {"Keystore.entry.for.id.getName.already.exists", + "L''entr\u00E9e de fichier de cl\u00E9s d''acc\u00E8s pour <{0}> existe d\u00E9j\u00E0"}, + {"Creating.keystore.entry.for.id.getName.", + "Cr\u00E9ation d''une entr\u00E9e de fichier de cl\u00E9s d''acc\u00E8s pour <{0}>..."}, + {"No.entries.from.identity.database.added", + "Aucune entr\u00E9e ajout\u00E9e \u00E0 partir de la base de donn\u00E9es d'identit\u00E9s"}, + {"Alias.name.alias", "Nom d''alias : {0}"}, + {"Creation.date.keyStore.getCreationDate.alias.", + "Date de cr\u00E9ation : {0,date}"}, + {"alias.keyStore.getCreationDate.alias.", "{0}, {1,date}, "}, - {"alias, ", "{0}, "}, - {"Entry type: ", "Type d''entr\u00e9e\u00a0: {0}"}, - {"Certificate chain length: ", "Longueur de cha\u00eene du certificat : "}, - {"Certificate[(i + 1)]:", "Certificat[{0,number,integer}]:"}, - {"Certificate fingerprint (MD5): ", "Empreinte du certificat (MD5) : "}, - {"Entry type: trustedCertEntry\n", "Type d'entr\u00e9e : trustedCertEntry\n"}, - {"trustedCertEntry,", "trustedCertEntry,"}, - {"Keystore type: ", "Type Keystore : "}, - {"Keystore provider: ", "Fournisseur Keystore : "}, - {"Your keystore contains keyStore.size() entry", - "Votre Keystore contient {0,number,integer} entr\u00e9e(s)"}, - {"Your keystore contains keyStore.size() entries", - "Votre Keystore contient {0,number,integer} entr\u00e9e(s)"}, - {"Failed to parse input", "L'analyse de l'entr\u00e9e a \u00e9chou\u00e9"}, - {"Empty input", "Entr\u00e9e vide"}, - {"Not X.509 certificate", "Pas un certificat X.509"}, - {"Cannot derive signature algorithm", - "Impossible de d\u00e9duire l'algorithme de signature"}, - {"alias has no public key", "{0} ne poss\u00e8de pas de cl\u00e9 publique"}, - {"alias has no X.509 certificate", "{0} ne poss\u00e8de pas de certificat X.509"}, - {"New certificate (self-signed):", "Nouveau certificat (auto-sign\u00e9) :"}, - {"Reply has no certificates", "La r\u00e9ponse n'a pas de certificat"}, - {"Certificate not imported, alias already exists", - "Certificat non import\u00e9, l''alias <{0}> existe d\u00e9j\u00e0"}, - {"Input not an X.509 certificate", "L'entr\u00e9e n'est pas un certificat X.509"}, - {"Certificate already exists in keystore under alias ", - "Le certificat existe d\u00e9j\u00e0 dans le Keystore sous l''alias <{0}>"}, - {"Do you still want to add it? [no]: ", + {"alias.", "{0}, "}, + {"Entry.type.type.", "Type d''entr\u00E9e\u00A0: {0}"}, + {"Certificate.chain.length.", "Longueur de cha\u00EEne du certificat : "}, + {"Certificate.i.1.", "Certificat[{0,number,integer}]:"}, + {"Certificate.fingerprint.SHA1.", "Empreinte du certificat (SHA1) : "}, + {"Entry.type.trustedCertEntry.", "Type d'entr\u00E9e : trustedCertEntry\n"}, + {"trustedCertEntry.", "trustedCertEntry,"}, + {"Keystore.type.", "Type de fichier de cl\u00E9s : "}, + {"Keystore.provider.", "Fournisseur de fichier de cl\u00E9s : "}, + {"Your.keystore.contains.keyStore.size.entry", + "Votre fichier de cl\u00E9s d''acc\u00E8s contient {0,number,integer} entr\u00E9e"}, + {"Your.keystore.contains.keyStore.size.entries", + "Votre fichier de cl\u00E9s d''acc\u00E8s contient {0,number,integer} entr\u00E9es"}, + {"Failed.to.parse.input", "L'analyse de l'entr\u00E9e a \u00E9chou\u00E9"}, + {"Empty.input", "Entr\u00E9e vide"}, + {"Not.X.509.certificate", "Pas un certificat X.509"}, + {"alias.has.no.public.key", "{0} ne poss\u00E8de pas de cl\u00E9 publique"}, + {"alias.has.no.X.509.certificate", "{0} ne poss\u00E8de pas de certificat X.509"}, + {"New.certificate.self.signed.", "Nouveau certificat (auto-sign\u00E9) :"}, + {"Reply.has.no.certificates", "La r\u00E9ponse n'a pas de certificat"}, + {"Certificate.not.imported.alias.alias.already.exists", + "Certificat non import\u00E9, l''alias <{0}> existe d\u00E9j\u00E0"}, + {"Input.not.an.X.509.certificate", "L'entr\u00E9e n'est pas un certificat X.509"}, + {"Certificate.already.exists.in.keystore.under.alias.trustalias.", + "Le certificat existe d\u00E9j\u00E0 dans le fichier de cl\u00E9s d''acc\u00E8s sous l''alias <{0}>"}, + {"Do.you.still.want.to.add.it.no.", "Voulez-vous toujours l'ajouter ? [non] : "}, - {"Certificate already exists in system-wide CA keystore under alias ", - "Le certificat existe d\u00e9j\u00e0 dans le Keystore CA syst\u00e8me sous l''alias <{0}>alias <{0}>"}, - {"Do you still want to add it to your own keystore? [no]: ", - "Voulez-vous toujours l'ajouter \u00e0 votre Keystore ? [non] : "}, - {"Trust this certificate? [no]: ", "Faire confiance \u00e0 ce certificat ? [non] : "}, + {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.", + "Le certificat existe d\u00E9j\u00E0 dans le fichier de cl\u00E9s d''acc\u00E8s CA syst\u00E8me sous l''alias <{0}>"}, + {"Do.you.still.want.to.add.it.to.your.own.keystore.no.", + "Voulez-vous toujours l'ajouter \u00E0 votre fichier de cl\u00E9s ? [non] : "}, + {"Trust.this.certificate.no.", "Faire confiance \u00E0 ce certificat ? [non] : "}, {"YES", "OUI"}, - {"New prompt: ", "Nouveau {0} : "}, - {"Passwords must differ", "Les mots de passe doivent diff\u00e9rer"}, - {"Re-enter new prompt: ", "Sp\u00e9cifiez nouveau {0} : "}, - {"Re-enter new password: ", "Ressaisissez le nouveau mot de passe : "}, - {"They don't match. Try again", "ne correspondent pas. R\u00e9essayez."}, - {"Enter prompt alias name: ", "Sp\u00e9cifiez le nom d''alias {0} : "}, - {"Enter new alias name\t(RETURN to cancel import for this entry): ", - "Saisissez le nom du nouvel alias\t(ou appuyez sur ENTR\u00c9E pour annuler l'importation pour cette entr\u00e9e)\u00a0: "}, - {"Enter alias name: ", "Sp\u00e9cifiez le nom d'alias : "}, - {"\t(RETURN if same as for )", - "\t(appuyez sur Entr\u00e9e si le r\u00e9sultat est identique \u00e0 <{0}>)"}, - {"*PATTERN* printX509Cert", - "Propri\u00e9taire\u00a0: {0}\n\u00c9metteur\u00a0: {1}\nNum\u00e9ro de s\u00e9rie\u00a0: {2}\nValide du\u00a0: {3} au\u00a0: {4}\nEmpreintes du certificat\u00a0:\n\t MD5\u00a0: {5}\n\t SHA1\u00a0: {6}\n\t Nom de l''algorithme de signature\u00a0: {7}\n\t Version\u00a0: {8}"}, - {"What is your first and last name?", - "Quels sont vos pr\u00e9nom et nom ?"}, - {"What is the name of your organizational unit?", - "Quel est le nom de votre unit\u00e9 organisationnelle ?"}, - {"What is the name of your organization?", - "Quelle est le nom de votre organisation ?"}, - {"What is the name of your City or Locality?", - "Quel est le nom de votre ville de r\u00e9sidence ?"}, - {"What is the name of your State or Province?", - "Quel est le nom de votre \u00e9tat ou province ?"}, - {"What is the two-letter country code for this unit?", - "Quel est le code de pays \u00e0 deux lettres pour cette unit\u00e9 ?"}, - {"Is correct?", "Est-ce {0} ?"}, + {"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.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} : "}, + {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.", + "Saisissez le nom du nouvel alias\t(ou appuyez sur Entr\u00E9e pour annuler l'import de cette entr\u00E9e)\u00A0: "}, + {"Enter.alias.name.", "Indiquez le nom d'alias : "}, + {".RETURN.if.same.as.for.otherAlias.", + "\t(appuyez sur Entr\u00E9e si le r\u00E9sultat est identique \u00E0 <{0}>)"}, + {".PATTERN.printX509Cert", + "Propri\u00E9taire : {0}\nEmetteur : {1}\nNum\u00E9ro de s\u00E9rie : {2}\nValide du : {3} au : {4}\nEmpreintes du certificat :\n\t MD5: {5}\n\t SHA1 : {6}\n\t SHA256 : {7}\n\t Nom de l''algorithme de signature : {8}\n\t Version : {9}"}, + {"What.is.your.first.and.last.name.", + "Quels sont vos nom et pr\u00E9nom ?"}, + {"What.is.the.name.of.your.organizational.unit.", + "Quel est le nom de votre unit\u00E9 organisationnelle ?"}, + {"What.is.the.name.of.your.organization.", + "Quel est le nom de votre entreprise ?"}, + {"What.is.the.name.of.your.City.or.Locality.", + "Quel est le nom de votre ville de r\u00E9sidence ?"}, + {"What.is.the.name.of.your.State.or.Province.", + "Quel est le nom de votre \u00E9tat ou province ?"}, + {"What.is.the.two.letter.country.code.for.this.unit.", + "Quel est le code pays \u00E0 deux lettres pour cette unit\u00E9 ?"}, + {"Is.name.correct.", "Est-ce {0} ?"}, {"no", "non"}, {"yes", "oui"}, {"y", "o"}, - {" [defaultValue]: ", " [{0}] : "}, - {"Alias has no key", - "L''alias <{0}> n''est associ\u00e9 \u00e0 aucune cl\u00e9"}, - {"Alias references an entry type that is not a private key entry. The -keyclone command only supports cloning of private key entries", - "L''entr\u00e9e \u00e0 laquelle l''alias <{0}> fait r\u00e9f\u00e9rence n''est pas une entr\u00e9e de type cl\u00e9 priv\u00e9e. La commande -keyclone prend uniquement en charge le clonage des cl\u00e9s priv\u00e9es"}, + {".defaultValue.", " [{0}]: "}, + {"Alias.alias.has.no.key", + "L''alias <{0}> n''est associ\u00E9 \u00E0 aucune cl\u00E9"}, + {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key", + "L''entr\u00E9e \u00E0 laquelle l''alias <{0}> fait r\u00E9f\u00E9rence n''est pas une entr\u00E9e de type cl\u00E9 priv\u00E9e. La commande -keyclone prend uniquement en charge le clonage des cl\u00E9s priv\u00E9es"}, - {"***************** WARNING WARNING WARNING *****************", - "***************** A V E R T I S S E M E N T *****************"}, + {".WARNING.WARNING.WARNING.", + "***************** WARNING WARNING WARNING *****************"}, + {"Signer.d.", "Signataire n\u00B0%d :"}, + {"Timestamp.", "Horodatage :"}, + {"Signature.", "Signature :"}, + {"CRLs.", "Listes des certificats r\u00E9voqu\u00E9s (CRL) :"}, + {"Certificate.owner.", "Propri\u00E9taire du certificat : "}, + {"Not.a.signed.jar.file", "Fichier JAR non sign\u00E9"}, + {"No.certificate.from.the.SSL.server", + "Aucun certificat du serveur SSL"}, // Translators of the following 5 pairs, ATTENTION: // the next 5 string pairs are meant to be combined into 2 paragraphs, // 1+3+4 and 2+3+5. make sure your translation also does. - {"* The integrity of the information stored in your keystore *", - "* L'int\u00e9grit\u00e9 des informations enregistr\u00e9es dans votre Keystore *"}, - {"* The integrity of the information stored in the srckeystore*", - "* L'int\u00e9grit\u00e9 des informations enregistr\u00e9es dans srckeystore*"}, - {"* has NOT been verified! In order to verify its integrity, *", - "* n'a PAS \u00e9t\u00e9 v\u00e9rifi\u00e9e ! Pour cela, *"}, - {"* you must provide your keystore password. *", - "* vous devez sp\u00e9cifier le mot de passe de votre Keystore. *"}, - {"* you must provide the srckeystore password. *", - "* vous devez fournir le mot de passe srckeystore. *"}, + {".The.integrity.of.the.information.stored.in.your.keystore.", + "* L'int\u00E9grit\u00E9 des informations stock\u00E9es dans votre fichier de cl\u00E9s *"}, + {".The.integrity.of.the.information.stored.in.the.srckeystore.", + "* L'int\u00E9grit\u00E9 des informations stock\u00E9es dans le fichier de cl\u00E9s source *"}, + {".has.NOT.been.verified.In.order.to.verify.its.integrity.", + "* n'a PAS \u00E9t\u00E9 v\u00E9rifi\u00E9e. Pour cela, *"}, + {".you.must.provide.your.keystore.password.", + "* vous devez fournir le mot de passe de votre fichier de cl\u00E9s. *"}, + {".you.must.provide.the.srckeystore.password.", + "* vous devez fournir le mot de passe de votre fichier de cl\u00E9s source. *"}, - {"Certificate reply does not contain public key for ", - "La r\u00e9ponse au certificat ne contient pas de cl\u00e9 publique pour <{0}>"}, - {"Incomplete certificate chain in reply", - "Cha\u00eene de certificat incompl\u00e8te dans la r\u00e9ponse"}, - {"Certificate chain in reply does not verify: ", - "La cha\u00eene de certificat de la r\u00e9ponse ne concorde pas : "}, - {"Top-level certificate in reply:\n", - "Certificat du plus haut niveau dans la r\u00e9ponse :\n"}, - {"... is not trusted. ", "... n'est pas digne de confiance. "}, - {"Install reply anyway? [no]: ", "Installer la r\u00e9ponse quand m\u00eame ? [non] : "}, + {"Certificate.reply.does.not.contain.public.key.for.alias.", + "La r\u00E9ponse au certificat ne contient pas de cl\u00E9 publique pour <{0}>"}, + {"Incomplete.certificate.chain.in.reply", + "Cha\u00EEne de certificat incompl\u00E8te dans la r\u00E9ponse"}, + {"Certificate.chain.in.reply.does.not.verify.", + "La cha\u00EEne de certificat de la r\u00E9ponse ne concorde pas : "}, + {"Top.level.certificate.in.reply.", + "Certificat de niveau sup\u00E9rieur dans la r\u00E9ponse :\n"}, + {".is.not.trusted.", "... non s\u00E9curis\u00E9. "}, + {"Install.reply.anyway.no.", "Installer la r\u00E9ponse quand m\u00EAme ? [non] : "}, {"NO", "NON"}, - {"Public keys in reply and keystore don't match", - "Les cl\u00e9s publiques de la r\u00e9ponse et du Keystore ne concordent pas"}, - {"Certificate reply and certificate in keystore are identical", - "La r\u00e9ponse au certificat et le certificat du Keystore sont identiques"}, - {"Failed to establish chain from reply", - "Impossible de cr\u00e9er une cha\u00eene \u00e0 partir de la r\u00e9ponse"}, + {"Public.keys.in.reply.and.keystore.don.t.match", + "Les cl\u00E9s publiques de la r\u00E9ponse et du fichier de cl\u00E9s ne concordent pas"}, + {"Certificate.reply.and.certificate.in.keystore.are.identical", + "La r\u00E9ponse au certificat et le certificat du fichier de cl\u00E9s sont identiques"}, + {"Failed.to.establish.chain.from.reply", + "Impossible de cr\u00E9er une cha\u00EEne \u00E0 partir de la r\u00E9ponse"}, {"n", "n"}, - {"Wrong answer, try again", "R\u00e9ponse incorrecte, recommencez"}, - {"Secret key not generated, alias already exists", - "Cl\u00e9 secr\u00e8te non g\u00e9n\u00e9r\u00e9e, l'alias <{0}> existe d\u00e9j\u00e0"}, - {"Please provide -keysize for secret key generation", - "Veuillez sp\u00e9cifier -keysize pour la g\u00e9n\u00e9ration de la cl\u00e9 secr\u00e8te"}, - {"keytool usage:\n", "Syntaxe keytool :\n"}, + {"Wrong.answer.try.again", "R\u00E9ponse incorrecte, recommencez"}, + {"Secret.key.not.generated.alias.alias.already.exists", + "Cl\u00E9 secr\u00E8te non g\u00E9n\u00E9r\u00E9e, l''alias <{0}> existe d\u00E9j\u00E0"}, + {"Please.provide.keysize.for.secret.key.generation", + "Indiquez -keysize pour la g\u00E9n\u00E9ration de la cl\u00E9 secr\u00E8te"}, - {"Extensions: ", "Extensions\u00a0: "}, - - {"-certreq [-v] [-protected]", - "-certreq [-v] [-protected]"}, - {"\t [-alias ] [-sigalg ]", - "\t [-alias ] [-sigalg ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - {"\t [-keystore ] [-storepass ]", - "\t [-keystore ] [-storepass ]"}, - {"\t [-storetype ] [-providername ]", - "\t [-storetype ] [-providername ]"}, - {"\t [-providerclass [-providerarg ]] ...", - "\t [-providerclass [-providerarg ]] ..."}, - {"\t [-providerpath ]", - "\t [-providerpath ]"}, - {"-delete [-v] [-protected] -alias ", - "-delete [-v] [-protected] -alias "}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-export [-v] [-rfc] [-protected]", - // "-export [-v] [-rfc] [-protected]"}, - {"-exportcert [-v] [-rfc] [-protected]", - "-exportcert [-v] [-rfc] [-protected]"}, - {"\t [-alias ] [-file ]", - "\t [-alias ] [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-genkey [-v] [-protected]", - // "-genkey [-v] [-protected]"}, - {"-genkeypair [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-keyalg ] [-keysize ]", - "\t [-keyalg ] [-keysize ]"}, - {"\t [-sigalg ] [-dname ]", - "\t [-sigalg ] [-dname ]"}, - {"\t [-validity ] [-keypass ]", - "\t [-validity ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-genseckey [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-help", "-help"}, - //{"-identitydb [-v] [-protected]", - // "-identitydb [-v] [-protected]"}, - //{"\t [-file ]", "\t [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-import [-v] [-noprompt] [-trustcacerts] [-protected]", - // "-import [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"-importcert [-v] [-noprompt] [-trustcacerts] [-protected]", - "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-alias ] [-keypass ]", - "\t [-alias ] [-keypass ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-importkeystore [-v] ", - "-importkeystore [-v] "}, - {"\t [-srckeystore ] [-destkeystore ]", - "\t [-srckeystore ] [-destkeystore ]"}, - {"\t [-srcstoretype ] [-deststoretype ]", - "\t [-srcstoretype ] [-deststoretype ]"}, - {"\t [-srcprotected] [-destprotected]", - "\t [-srcprotected] [-destprotected]"}, - {"\t [-srcstorepass ] [-deststorepass ]", - "\t [-srcstorepass ] [-deststorepass ]"}, - {"\t [-srcprovidername ]\n\t [-destprovidername ]", // ligne trop longue, scind\u00e9e - "\t [-srcprovidername ]\n\t [-destprovidername ]"}, - {"\t [-srcalias [-destalias ]", - "\t [-srcalias [-destalias ]"}, - {"\t [-srckeypass ] [-destkeypass ]]", - "\t [-srckeypass ] [-destkeypass ]]"}, - {"\t [-noprompt]", "\t [-noprompt]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-changealias [-v] [-protected] -alias -destalias ", - "-changealias [-v] [-protected] -alias -destalias "}, - {"\t [-keypass ]", "\t [-keypass ]"}, - - //{"-keyclone [-v] [-protected]", - // "-keyclone [-v] [-protected]"}, - //{"\t [-alias ] -dest ", - // "\t [-alias ] -dest "}, - //{"\t [-keypass ] [-new ]", - // "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-keypasswd [-v] [-alias ]", - "-keypasswd [-v] [-alias ]"}, - {"\t [-keypass ] [-new ]", - "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-list [-v | -rfc] [-protected]", - "-list [-v | -rfc] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-printcert [-v] [-file ]", - "-printcert [-v] [-file ]"}, - - //{"-selfcert [-v] [-protected]", - // "-selfcert [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - //{"\t [-dname ] [-validity ]", - // "\t [-dname ] [-validity ]"}, - //{"\t [-keypass ] [-sigalg ]", - // "\t [-keypass ] [-sigalg ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-storepasswd [-v] [-new ]", - "-storepasswd [-v] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ + {"Extensions.", "Extensions\u00A0: "}, + {".Empty.value.", "(Valeur vide)"}, + {"Extension.Request.", "Demande d'extension :"}, + {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.", + "Demande de certificat PKCS #10 (version 1.0)\nSujet : %s\nCl\u00E9 publique : format %s pour la cl\u00E9 %s\n"}, + {"Unknown.keyUsage.type.", "Type keyUsage inconnu : "}, + {"Unknown.extendedkeyUsage.type.", "Type extendedkeyUsage inconnu : "}, + {"Unknown.AccessDescription.type.", "Type AccessDescription inconnu : "}, + {"Unrecognized.GeneralName.type.", "Type GeneralName non reconnu : "}, + {"This.extension.cannot.be.marked.as.critical.", + "Cette extension ne peut pas \u00EAtre marqu\u00E9e comme critique. "}, + {"Odd.number.of.hex.digits.found.", "Nombre impair de chiffres hexad\u00E9cimaux trouv\u00E9 : "}, + {"Unknown.extension.type.", "Type d'extension inconnu : "}, + {"command.{0}.is.ambiguous.", "commande {0} ambigu\u00EB :"}, // policytool - {"Warning: A public key for alias 'signers[i]' does not exist. Make sure a KeyStore is properly configured.", - "Avertissement\u00a0: il n'existe pas de cl\u00e9 publique pour l'alias {0}. V\u00e9rifiez que le keystore est correctement configur\u00e9."}, - {"Warning: Class not found: class", "Avertissement : Classe introuvable : {0}"}, - {"Warning: Invalid argument(s) for constructor: arg", - "Avertissement\u00a0: argument(s) non valide(s) pour le constructeur\u00a0: {0}"}, - {"Illegal Principal Type: type", "Type de mandant non admis : {0}"}, - {"Illegal option: option", "Option non admise : {0}"}, - {"Usage: policytool [options]", "Syntaxe : policytool [options]"}, - {" [-file ] policy file location", - " [-file ] emplacement du fichier de r\u00e8gles"}, + {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.", + "Avertissement\u00A0: il n''existe pas de cl\u00E9 publique pour l''alias {0}. V\u00E9rifiez que le fichier de cl\u00E9s d''acc\u00E8s est correctement configur\u00E9."}, + {"Warning.Class.not.found.class", "Avertissement : classe introuvable - {0}"}, + {"Warning.Invalid.argument.s.for.constructor.arg", + "Avertissement\u00A0: arguments non valides pour le constructeur\u00A0- {0}"}, + {"Illegal.Principal.Type.type", "Type de principal non admis : {0}"}, + {"Illegal.option.option", "Option non admise : {0}"}, + {"Usage.policytool.options.", "Syntaxe : policytool [options]"}, + {".file.file.policy.file.location", + " [-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"}, + {"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", "Supprimer une r\u00e8gle"}, - {"Edit", "Edition"}, + {"Add.Policy.Entry", "Ajouter une r\u00E8gle"}, + {"Edit.Policy.Entry", "Modifier une r\u00E8gle"}, + {"Remove.Policy.Entry", "Enlever une r\u00E8gle"}, + {"Edit", "Modifier"}, {"Retain", "Conserver"}, - {"Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name.", - "Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name."}, + {"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."}, - {"Add Public Key Alias", "Ajouter un alias de cl\u00e9 publique"}, - {"Remove Public Key Alias", "Supprimer un alias de cl\u00e9 publique"}, + {"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", "KeyStore"}, - {"Policy File:", "Fichier de r\u00e8gles :"}, - {"Could not open policy file: policyFile: e.toString()", - "Impossible d''ouvrir le fichier de strat\u00e9gie\u00a0: {0}: {1}"}, - {"Policy Tool", "Policy Tool"}, - {"Errors have occurred while opening the policy configuration. View the Warning Log for more information.", - "Des erreurs se sont produites \u00e0 l'ouverture de la configuration de r\u00e8gles. Consultez le journal des avertissements pour obtenir des informations."}, + {"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}"}, + {"Policy.Tool", "Policy Tool"}, + {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.", + "Des erreurs se sont produites \u00E0 l'ouverture de la configuration de r\u00E8gles. Pour plus d'informations, consultez le journal des avertissements."}, {"Error", "Erreur"}, {"OK", "OK"}, - {"Status", "\u00c9tat"}, + {"Status", "Statut"}, {"Warning", "Avertissement"}, - {"Permission: ", - "Permission : "}, - {"Principal Type:", "Type de principal :"}, - {"Principal Name:", "Nom de principal :"}, - {"Target Name: ", + {"Permission.", + "Droit : "}, + {"Principal.Type.", "Type de principal :"}, + {"Principal.Name.", "Nom de principal :"}, + {"Target.Name.", "Nom de cible : "}, - {"Actions: ", + {"Actions.", "Actions : "}, - {"OK to overwrite existing file filename?", + {"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", "Supprimer un principal"}, - {"Principals:", "Principaux :"}, - {" Add Permission", " Ajouter une permission"}, - {" Edit Permission", " Modifier une permission"}, - {"Remove Permission", "Supprimer une permission"}, - {"Done", "Termin\u00e9"}, - {"KeyStore URL:", "URL du KeyStore :"}, - {"KeyStore Type:", "Type de KeyStore :"}, - {"KeyStore Provider:", "Fournisseur du KeyStore :"}, - {"KeyStore Password URL:", "URL du mot de passe du KeyStore :"}, + {"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"}, + {"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 :"}, {"Principals", "Principaux"}, - {" Edit Principal:", " Modifier un principal :"}, - {" Add New Principal:", " Ajouter un principal :"}, - {"Permissions", "Permissions"}, - {" Edit Permission:", " Modifier une permission :"}, - {" Add New Permission:", " Ajouter une permission :"}, - {"Signed By:", "Sign\u00e9 par :"}, - {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name", - "Impossible de sp\u00e9cifier un principal avec une classe g\u00e9n\u00e9rique sans nom de g\u00e9n\u00e9rique"}, - {"Cannot Specify Principal without a Name", - "Impossible de sp\u00e9cifier un principal sans nom"}, - {"Permission and Target Name must have a value", - "La permission et le nom de cible doivent avoir une valeur"}, - {"Remove this Policy Entry?", "Supprimer cette r\u00e8gle ?"}, - {"Overwrite File", "Remplacer le fichier"}, - {"Policy successfully written to filename", - "R\u00e8gle enregistr\u00e9e dans {0}"}, - {"null filename", "Nom Null de fichier"}, - {"Save changes?", "Enregistrer les modifications ?"}, + {".Edit.Principal.", " Modifier un principal :"}, + {".Add.New.Principal.", " Ajouter un principal :"}, + {"Permissions", "Droits"}, + {".Edit.Permission.", " Modifier un droit :"}, + {".Add.New.Permission.", " Ajouter un droit :"}, + {"Signed.By.", "Sign\u00E9 par :"}, + {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name", + "Impossible de sp\u00E9cifier un principal avec une classe g\u00E9n\u00E9rique sans nom g\u00E9n\u00E9rique"}, + {"Cannot.Specify.Principal.without.a.Name", + "Impossible de sp\u00E9cifier un principal sans nom"}, + {"Permission.and.Target.Name.must.have.a.value", + "Le droit et le nom de cible doivent avoir une valeur"}, + {"Remove.this.Policy.Entry.", "Enlever cette r\u00E8gle ?"}, + {"Overwrite.File", "Remplacer le fichier"}, + {"Policy.successfully.written.to.filename", + "R\u00E8gle \u00E9crite dans {0}"}, + {"null.filename", "nom de fichier NULL"}, + {"Save.changes.", "Enregistrer les modifications ?"}, {"Yes", "Oui"}, {"No", "Non"}, - {"Policy Entry", "R\u00e8gle"}, - {"Save Changes", "Enregistrer les changements"}, - {"No Policy Entry selected", "Aucune r\u00e8gle s\u00e9lectionn\u00e9e"}, - {"Unable to open KeyStore: ex.toString()", - "Impossible d''ouvrir le keystore\u00a0: {0}"}, - {"No principal selected", "Aucun principal s\u00e9lectionn\u00e9"}, - {"No permission selected", "Aucune permission s\u00e9lectionn\u00e9e"}, + {"Policy.Entry", "R\u00E8gle"}, + {"Save.Changes", "Enregistrer les modifications"}, + {"No.Policy.Entry.selected", "Aucune r\u00E8gle s\u00E9lectionn\u00E9e"}, + {"Unable.to.open.KeyStore.ex.toString.", + "Impossible d''ouvrir le fichier de cl\u00E9s d''acc\u00E8s : {0}"}, + {"No.principal.selected", "Aucun principal s\u00E9lectionn\u00E9"}, + {"No.permission.selected", "Aucun droit s\u00E9lectionn\u00E9"}, {"name", "nom"}, - {"configuration type", "type de configuration"}, - {"environment variable name", "Nom variable de l'environnement"}, - {"library name", "nom de biblioth\u00e8que"}, - {"package name", "nom de package"}, - {"policy type", "type de strat\u00e9gie"}, - {"property name", "nom de propri\u00e9t\u00e9"}, - {"provider name", "nom de fournisseur"}, - {"Principal List", "Liste de mandants"}, - {"Permission List", "Liste de droits"}, - {"Code Base", "Base de codes"}, - {"KeyStore U R L:", "URL du KeyStore :"}, - {"KeyStore Password U R L:", "URL du mot de passe du KeyStore :"}, + {"configuration.type", "type de configuration"}, + {"environment.variable.name", "Nom de variable d'environnement"}, + {"library.name", "nom de biblioth\u00E8que"}, + {"package.name", "nom de package"}, + {"policy.type", "type de r\u00E8gle"}, + {"property.name", "nom de propri\u00E9t\u00E9"}, + {"Principal.List", "Liste de principaux"}, + {"Permission.List", "Liste de droits"}, + {"Code.Base", "Base de code"}, + {"KeyStore.U.R.L.", "URL du fichier de cl\u00E9s :"}, + {"KeyStore.Password.U.R.L.", "URL du mot de passe du fichier de cl\u00E9s :"}, // javax.security.auth.PrivateCredentialPermission - {"invalid null input(s)", "Entr\u00e9e() Null non valide(s)"}, - {"actions can only be 'read'", "les actions peuvent \u00eatre accessibles en 'lecture' uniquement"}, - {"permission name [name] syntax invalid: ", - "syntaxe de nom de permission [{0}] non valide : "}, - {"Credential Class not followed by a Principal Class and Name", + {"invalid.null.input.s.", "entr\u00E9es NULL non valides"}, + {"actions.can.only.be.read.", "les actions sont accessibles en lecture uniquement"}, + {"permission.name.name.syntax.invalid.", + "syntaxe de nom de droit [{0}] non valide : "}, + {"Credential.Class.not.followed.by.a.Principal.Class.and.Name", "Classe Credential non suivie d'une classe et d'un nom de principal"}, - {"Principal Class not followed by a Principal Name", + {"Principal.Class.not.followed.by.a.Principal.Name", "Classe de principal non suivie d'un nom de principal"}, - {"Principal Name must be surrounded by quotes", - "Le nom de principal doit \u00eatre entre guillemets"}, - {"Principal Name missing end quote", - "Guillemet fermant manquant pour nom de principal"}, - {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value", - "La classe principale PrivateCredentialPermission ne peut \u00eatre une valeur g\u00e9n\u00e9rique (*) si le nom de principal n'est pas une valeur g\u00e9n\u00e9rique (*)"}, - {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name", - "CredOwner :\n\tClasse principale = {0}\n\tNom principal = {1}"}, + {"Principal.Name.must.be.surrounded.by.quotes", + "Le nom de principal doit \u00EAtre indiqu\u00E9 entre guillemets"}, + {"Principal.Name.missing.end.quote", + "Guillemet fermant manquant pour le nom de principal"}, + {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value", + "La classe de principal PrivateCredentialPermission ne peut pas \u00EAtre une valeur g\u00E9n\u00E9rique (*) si le nom de principal n'est pas une valeur g\u00E9n\u00E9rique (*)"}, + {"CredOwner.Principal.Class.class.Principal.Name.name", + "CredOwner :\n\tClasse de principal = {0}\n\tNom de principal = {1}"}, // javax.security.auth.x500 - {"provided null name", "nom Null sp\u00e9cifi\u00e9"}, - {"provided null keyword map", "Mappage des mots cl\u00e9s Null fourni"}, - {"provided null OID map", "Mappage OID Null fourni"}, + {"provided.null.name", "nom NULL fourni"}, + {"provided.null.keyword.map", "mappage de mots-cl\u00E9s NULL fourni"}, + {"provided.null.OID.map", "mappage OID NULL fourni"}, // javax.security.auth.Subject - {"invalid null AccessControlContext provided", - "AccessControlContext Null sp\u00e9cifi\u00e9 non valide"}, - {"invalid null action provided", "action Null sp\u00e9cifi\u00e9e non valide"}, - {"invalid null Class provided", "classe Null sp\u00e9cifi\u00e9e non valide"}, - {"Subject:\n", "Objet :\n"}, - {"\tPrincipal: ", "\tPrincipal : "}, - {"\tPublic Credential: ", "\tIdentit\u00e9 publique : "}, - {"\tPrivate Credentials inaccessible\n", - "\tIdentit\u00e9s priv\u00e9es inaccessibles\n"}, - {"\tPrivate Credential: ", "\tIdentit\u00e9 priv\u00e9e : "}, - {"\tPrivate Credential inaccessible\n", - "\tIdentit\u00e9 priv\u00e9e inaccessible\n"}, - {"Subject is read-only", "Objet en lecture seule"}, - {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set", - "tentative d'ajout d'un objet qui n'est pas une instance de java.security.Principal dans un ensemble principal d'objet"}, - {"attempting to add an object which is not an instance of class", + {"invalid.null.AccessControlContext.provided", + "AccessControlContext NULL fourni non valide"}, + {"invalid.null.action.provided", "action NULL fournie non valide"}, + {"invalid.null.Class.provided", "classe NULL fournie non valide"}, + {"Subject.", "Objet :\n"}, + {".Principal.", "\tPrincipal : "}, + {".Public.Credential.", "\tInformations d'identification et de connexion publiques : "}, + {".Private.Credentials.inaccessible.", + "\tInformations d'identification et de connexion priv\u00E9es inaccessibles\n"}, + {".Private.Credential.", "\tInformations d'identification et de connexion priv\u00E9es : "}, + {".Private.Credential.inaccessible.", + "\tInformations d'identification et de connexion priv\u00E9es inaccessibles\n"}, + {"Subject.is.read.only", "Sujet en lecture seule"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set", + "tentative d'ajout d'un objet qui n'est pas une instance de java.security.Principal dans un ensemble de principaux du sujet"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.class", "tentative d''ajout d''un objet qui n''est pas une instance de {0}"}, // javax.security.auth.login.AppConfigurationEntry - {"LoginModuleControlFlag: ", "LoginModuleControlFlag : "}, + {"LoginModuleControlFlag.", "LoginModuleControlFlag : "}, // javax.security.auth.login.LoginContext - {"Invalid null input: name", "Entr\u00e9e Null non valide : nom"}, - {"No LoginModules configured for name", - "Aucun LoginModule configur\u00e9 pour {0}"}, - {"invalid null Subject provided", "sujet Null sp\u00e9cifi\u00e9 non valide"}, - {"invalid null CallbackHandler provided", - "CallbackHandler Null sp\u00e9cifi\u00e9 non valide"}, - {"null subject - logout called before login", - "sujet Null - tentative de d\u00e9connexion avant connexion"}, - {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor", + {"Invalid.null.input.name", "Entr\u00E9e NULL non valide : nom"}, + {"No.LoginModules.configured.for.name", + "Aucun LoginModule configur\u00E9 pour {0}"}, + {"invalid.null.Subject.provided", "sujet NULL fourni non valide"}, + {"invalid.null.CallbackHandler.provided", + "CallbackHandler NULL fourni non valide"}, + {"null.subject.logout.called.before.login", + "sujet NULL - Tentative de d\u00E9connexion avant la connexion"}, + {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor", "impossible d''instancier LoginModule {0} car il ne fournit pas de constructeur sans argument"}, - {"unable to instantiate LoginModule", + {"unable.to.instantiate.LoginModule", "impossible d'instancier LoginModule"}, - {"unable to instantiate LoginModule: ", - "impossible d'instancier LoginModule\u00a0: "}, - {"unable to find LoginModule class: ", + {"unable.to.instantiate.LoginModule.", + "impossible d'instancier LoginModule\u00A0: "}, + {"unable.to.find.LoginModule.class.", "classe LoginModule introuvable : "}, - {"unable to access LoginModule: ", - "impossible d'acc\u00e9der \u00e0 LoginModule : "}, - {"Login Failure: all modules ignored", - "Echec de connexion : tous les modules ont \u00e9t\u00e9 ignor\u00e9s"}, + {"unable.to.access.LoginModule.", + "impossible d'acc\u00E9der \u00E0 LoginModule : "}, + {"Login.Failure.all.modules.ignored", + "Echec de connexion : tous les modules ont \u00E9t\u00E9 ignor\u00E9s"}, // sun.security.provider.PolicyFile - {"java.security.policy: error parsing policy:\n\tmessage", + {"java.security.policy.error.parsing.policy.message", "java.security.policy : erreur d''analyse de {0} :\n\t{1}"}, - {"java.security.policy: error adding Permission, perm:\n\tmessage", - "java.security.policy : erreur d''ajout de permission, {0} :\n\t{1}"}, - {"java.security.policy: error adding Entry:\n\tmessage", - "java.security.policy : erreur d''ajout d''entr\u00e9e :\n\t{0}"}, - {"alias name not provided (pe.name)", "nom d''alias non fourni ({0})"}, - {"unable to perform substitution on alias, suffix", + {"java.security.policy.error.adding.Permission.perm.message", + "java.security.policy : erreur d''ajout de droit, {0} :\n\t{1}"}, + {"java.security.policy.error.adding.Entry.message", + "java.security.policy : erreur d''ajout d''entr\u00E9e :\n\t{0}"}, + {"alias.name.not.provided.pe.name.", "nom d''alias non fourni ({0})"}, + {"unable.to.perform.substitution.on.alias.suffix", "impossible d''effectuer une substitution pour l''alias, {0}"}, - {"substitution value, prefix, unsupported", + {"substitution.value.prefix.unsupported", "valeur de substitution, {0}, non prise en charge"}, - {"(", "("}, - {")", ")"}, - {"type can't be null","le type ne peut \u00eatre Null"}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"type.can.t.be.null","le type ne peut \u00EAtre NULL"}, // sun.security.provider.PolicyParser - {"keystorePasswordURL can not be specified without also specifying keystore", - "Impossible de sp\u00e9cifier keystorePasswordURL sans sp\u00e9cifier aussi le keystore"}, - {"expected keystore type", "type keystore pr\u00e9vu"}, - {"expected keystore provider", "fournisseur keystore pr\u00e9vu"}, - {"multiple Codebase expressions", + {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore", + "Impossible de sp\u00E9cifier keystorePasswordURL sans indiquer aussi le fichier de cl\u00E9s"}, + {"expected.keystore.type", "type de fichier de cl\u00E9s attendu"}, + {"expected.keystore.provider", "fournisseur de fichier de cl\u00E9s attendu"}, + {"multiple.Codebase.expressions", "expressions Codebase multiples"}, - {"multiple SignedBy expressions","expressions SignedBy multiples"}, - {"SignedBy has empty alias","SignedBy poss\u00e8de un alias vide"}, - {"can not specify Principal with a wildcard class without a wildcard name", - "impossible de sp\u00e9cifier Principal avec une classe g\u00e9n\u00e9rique sans nom g\u00e9n\u00e9rique"}, - {"expected codeBase or SignedBy or Principal", - "codeBase ou SignedBy ou Principal pr\u00e9vu"}, - {"expected permission entry", "entr\u00e9e de permission pr\u00e9vue"}, - {"number ", "nombre "}, - {"expected [expect], read [end of file]", - "pr\u00e9vu [{0}], lecture [fin de fichier]"}, - {"expected [;], read [end of file]", - "pr\u00e9vu [;], lecture [fin de fichier]"}, - {"line number: msg", "ligne {0} : {1}"}, - {"line number: expected [expect], found [actual]", - "ligne {0} : pr\u00e9vu [{1}], trouv\u00e9 [{2}]"}, - {"null principalClass or principalName", - "principalClass ou principalName Null"}, + {"multiple.SignedBy.expressions","expressions SignedBy multiples"}, + {"SignedBy.has.empty.alias","SignedBy poss\u00E8de un alias vide"}, + {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name", + "impossible de sp\u00E9cifier le principal avec une classe g\u00E9n\u00E9rique sans nom g\u00E9n\u00E9rique"}, + {"expected.codeBase.or.SignedBy.or.Principal", + "codeBase, SignedBy ou Principal attendu"}, + {"expected.permission.entry", "entr\u00E9e de droit attendue"}, + {"number.", "nombre "}, + {"expected.expect.read.end.of.file.", + "attendu [{0}], lu [fin de fichier]"}, + {"expected.read.end.of.file.", + "attendu [;], lu [fin de fichier]"}, + {"line.number.msg", "ligne {0} : {1}"}, + {"line.number.expected.expect.found.actual.", + "ligne {0} : attendu [{1}], trouv\u00E9 [{2}]"}, + {"null.principalClass.or.principalName", + "principalClass ou principalName NULL"}, // sun.security.pkcs11.SunPKCS11 - {"PKCS11 Token [providerName] Password: ", + {"PKCS11.Token.providerName.Password.", "Mot de passe PKCS11 Token [{0}] : "}, /* --- DEPRECATED --- */ // javax.security.auth.Policy - {"unable to instantiate Subject-based policy", - "impossible d'instancier la strat\u00e9gie Subject"} + {"unable.to.instantiate.Subject.based.policy", + "impossible d'instancier les r\u00E8gles bas\u00E9es sur le sujet"} }; @@ -648,3 +670,4 @@ public class Resources_fr extends java.util.ListResourceBundle { return contents; } } + diff --git a/jdk/src/share/classes/sun/security/util/Resources_it.java b/jdk/src/share/classes/sun/security/util/Resources_it.java index 3beec0ddf9b..c8fd0a40731 100644 --- a/jdk/src/share/classes/sun/security/util/Resources_it.java +++ b/jdk/src/share/classes/sun/security/util/Resources_it.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -35,605 +35,627 @@ public class Resources_it extends java.util.ListResourceBundle { private static final Object[][] contents = { // shared (from jarsigner) - {" ", " "}, - {" ", " "}, - {" ", " "}, - {", ", ", "}, + {"SPACE", " "}, + {"2SPACE", " "}, + {"6SPACE", " "}, + {"COMMA", ", "}, // shared (from keytool) - {"\n", "\n"}, - {"*******************************************", + {"NEWLINE", "\n"}, + {"STAR", "*******************************************"}, - {"*******************************************\n\n", + {"STARNN", "*******************************************\n\n"}, - // keytool - {"keytool error: ", "Errore keytool: "}, - {"Illegal option: ", "Opzione non valida: "}, - {"Try keytool -help","Provare keytool -help"}, - {"Command option needs an argument.", "\u00c8 necessario specificare un argomento per l''opzione di comando {0}."}, - {"Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified value.", - "Avviso: non sono supportate password diverse di chiave e di archivio per i KeyStore PKCS12. Il valore {0} specificato dall''utente verr\u00e0 ignorato."}, - {"-keystore must be NONE if -storetype is {0}", - "Se -storetype \u00e8 impostato su {0}, -keystore deve essere impostato su NONE"}, - {"Too may retries, program terminated", - "Il numero dei tentativi consentiti \u00e8 stato superato. Il programma verr\u00e0 chiuso."}, - {"-storepasswd and -keypasswd commands not supported if -storetype is {0}", - "Se -storetype \u00e8 impostato su {0}, i comandi -storepasswd e -keypasswd non sono supportati"}, - {"-keypasswd commands not supported if -storetype is PKCS12", - "Se -storetype \u00e8 impostato su PKCS12 i comandi -keypasswd non vengono supportati"}, - {"-keypass and -new can not be specified if -storetype is {0}", - "Se -storetype \u00e8 impostato su {0}, non \u00e8 possibile specificare un valore per -keypass e -new"}, - {"if -protected is specified, then -storepass, -keypass, and -new must not be specified", - "Se \u00e8 specificata l'opzione -protected, le opzioni -storepass, -keypass e -new non possono essere specificate"}, - {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified", + // keytool: Help part + {".OPTION.", " [OPTION]..."}, + {"Options.", "Opzioni:"}, + {"Use.keytool.help.for.all.available.commands", + "Utilizzare \"keytool -help\" per visualizzare tutti i comandi disponibili"}, + {"Key.and.Certificate.Management.Tool", + "Strumento di gestione di chiavi e certificati"}, + {"Commands.", "Comandi:"}, + {"Use.keytool.command.name.help.for.usage.of.command.name", + "Utilizzare \"keytool -command_name -help\" per informazioni sull'uso di command_name"}, + // keytool: help: commands + {"Generates.a.certificate.request", + "Genera una richiesta di certificato"}, //-certreq + {"Changes.an.entry.s.alias", + "Modifica l'alias di una voce"}, //-changealias + {"Deletes.an.entry", + "Elimina una voce"}, //-delete + {"Exports.certificate", + "Esporta il certificato"}, //-exportcert + {"Generates.a.key.pair", + "Genera una coppia di chiavi"}, //-genkeypair + {"Generates.a.secret.key", + "Genera una chiave segreta"}, //-genseckey + {"Generates.certificate.from.a.certificate.request", + "Genera un certificato da una richiesta di certificato"}, //-gencert + {"Generates.CRL", "Genera CRL"}, //-gencrl + {"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.one.or.all.entries.from.another.keystore", + "Importa una o tutte le voci da un altro keystore"}, //-importkeystore + {"Clones.a.key.entry", + "Duplica una voce di chiave"}, //-keyclone + {"Changes.the.key.password.of.an.entry", + "Modifica la password della chiave per una voce"}, //-keypasswd + {"Lists.entries.in.a.keystore", + "Elenca le voci in un keystore"}, //-list + {"Prints.the.content.of.a.certificate", + "Visualizza i contenuti di un certificato"}, //-printcert + {"Prints.the.content.of.a.certificate.request", + "Visualizza i contenuti di una richiesta di certificato"}, //-printcertreq + {"Prints.the.content.of.a.CRL.file", + "Visualizza i contenuti di un file CRL"}, //-printcrl + {"Generates.a.self.signed.certificate", + "Genera certificato con firma automatica"}, //-selfcert + {"Changes.the.store.password.of.a.keystore", + "Modifica la password di area di memorizzazione di un keystore"}, //-storepasswd + // keytool: help: options + {"alias.name.of.the.entry.to.process", + "nome alias della voce da elaborare"}, //-alias + {"destination.alias", + "alias di destinazione"}, //-destalias + {"destination.key.password", + "password chiave di destinazione"}, //-destkeypass + {"destination.keystore.name", + "nome keystore di destinazione"}, //-destkeystore + {"destination.keystore.password.protected", + "password keystore di destinazione protetta"}, //-destprotected + {"destination.keystore.provider.name", + "nome provider keystore di destinazione"}, //-destprovidername + {"destination.keystore.password", + "password keystore di destinazione"}, //-deststorepass + {"destination.keystore.type", + "tipo keystore di destinazione"}, //-deststoretype + {"distinguished.name", + "nome distinto"}, //-dname + {"X.509.extension", + "estensione X.509"}, //-ext + {"output.file.name", + "nome file di output"}, //-file and -outfile + {"input.file.name", + "nome file di input"}, //-file and -infile + {"key.algorithm.name", + "nome algoritmo chiave"}, //-keyalg + {"key.password", + "password chiave"}, //-keypass + {"key.bit.size", + "dimensione bit chiave"}, //-keysize + {"keystore.name", + "nome keystore"}, //-keystore + {"new.password", + "nuova password"}, //-new + {"do.not.prompt", + "non richiedere"}, //-noprompt + {"password.through.protected.mechanism", + "password mediante meccanismo protetto"}, //-protected + {"provider.argument", + "argomento provider"}, //-providerarg + {"provider.class.name", + "nome classe provider"}, //-providerclass + {"provider.name", + "nome provider"}, //-providername + {"provider.classpath", + "classpath provider"}, //-providerpath + {"output.in.RFC.style", + "output in stile RFC"}, //-rfc + {"signature.algorithm.name", + "nome algoritmo firma"}, //-sigalg + {"source.alias", + "alias origine"}, //-srcalias + {"source.key.password", + "password chiave di origine"}, //-srckeypass + {"source.keystore.name", + "nome keystore di origine"}, //-srckeystore + {"source.keystore.password.protected", + "password keystore di origine protetta"}, //-srcprotected + {"source.keystore.provider.name", + "nome provider keystore di origine"}, //-srcprovidername + {"source.keystore.password", + "password keystore di origine"}, //-srcstorepass + {"source.keystore.type", + "tipo keystore di origine"}, //-srcstoretype + {"SSL.server.host.and.port", + "host e porta server SSL"}, //-sslserver + {"signed.jar.file", + "file jar firmato"}, //=jarfile + {"certificate.validity.start.date.time", + "data/ora di inizio validit\u00E0 certificato"}, //-startdate + {"keystore.password", + "password keystore"}, //-storepass + {"keystore.type", + "tipo keystore"}, //-storetype + {"trust.certificates.from.cacerts", + "considera sicuri i certificati da cacerts"}, //-trustcacerts + {"verbose.output", + "output descrittivo"}, //-v + {"validity.number.of.days", + "numero di giorni di validit\u00E0"}, //-validity + {"Serial.ID.of.cert.to.revoke", + "ID seriale del certificato da revocare"}, //-id + // keytool: Running part + {"keytool.error.", "Errore keytool: "}, + {"Illegal.option.", "Opzione non valida: "}, + {"Illegal.value.", "Valore non valido: "}, + {"Unknown.password.type.", "Tipo di password sconosciuto: "}, + {"Cannot.find.environment.variable.", + "Impossibile trovare la variabile di ambiente: "}, + {"Cannot.find.file.", "Impossibile trovare il file: "}, + {"Command.option.flag.needs.an.argument.", "\u00C8 necessario specificare un argomento per l''opzione di comando {0}."}, + {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.", + "Avvertenza: non sono supportate password diverse di chiave e di archivio per i keystore PKCS12. Il valore {0} specificato dall''utente verr\u00E0 ignorato."}, + {".keystore.must.be.NONE.if.storetype.is.{0}", + "Se -storetype \u00E8 impostato su {0}, -keystore deve essere impostato su NONE"}, + {"Too.many.retries.program.terminated", + "Il numero dei tentativi consentiti \u00E8 stato superato. Il programma verr\u00E0 terminato."}, + {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}", + "Se -storetype \u00E8 impostato su {0}, i comandi -storepasswd e -keypasswd non sono supportati"}, + {".keypasswd.commands.not.supported.if.storetype.is.PKCS12", + "Se -storetype \u00E8 impostato su PKCS12 i comandi -keypasswd non vengono supportati"}, + {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}", + "Se -storetype \u00E8 impostato su {0}, non \u00E8 possibile specificare un valore per -keypass e -new"}, + {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified", + "Se \u00E8 specificata l'opzione -protected, le opzioni -storepass, -keypass e -new non possono essere specificate"}, + {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified", "Se viene specificato -srcprotected, -srcstorepass e -srckeypass non dovranno essere specificati"}, - {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified", - "Se il file keystore non \u00e8 protetto da password, non deve essere specificato alcun valore per -storepass, -keypass e -new"}, - {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified", - "Se il file keystore non \u00e8 protetto da password, non deve essere specificato alcun valore per -srcstorepass e -srckeypass"}, - {"Validity must be greater than zero", - "La validit\u00e0 deve essere maggiore di zero"}, - {"provName not a provider", "{0} non \u00e8 un provider"}, - {"Usage error: no command provided", "Errore di utilizzo: nessun comando specificato"}, - {"Usage error, is not a legal command", "Errore di utilizzo. {0} non \u00e8 un comando valido."}, - {"Source keystore file exists, but is empty: ", "Il file keystore di origine esiste, ma \u00e8 vuoto: "}, - {"Please specify -srckeystore", "Specificare -srckeystore"}, - {"Must not specify both -v and -rfc with 'list' command", + {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified", + "Se il file keystore non \u00E8 protetto da password, non deve essere specificato alcun valore per -storepass, -keypass e -new"}, + {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", + "Se il file keystore non \u00E8 protetto da password, non deve essere specificato alcun valore per -srcstorepass e -srckeypass"}, + {"Illegal.startdate.value", "Valore di data di inizio non valido"}, + {"Validity.must.be.greater.than.zero", + "La validit\u00E0 deve essere maggiore di zero"}, + {"provName.not.a.provider", "{0} non \u00E8 un provider"}, + {"Usage.error.no.command.provided", "Errore di utilizzo: nessun comando specificato"}, + {"Source.keystore.file.exists.but.is.empty.", "Il file keystore di origine esiste, ma \u00E8 vuoto: "}, + {"Please.specify.srckeystore", "Specificare -srckeystore"}, + {"Must.not.specify.both.v.and.rfc.with.list.command", "Impossibile specificare sia -v sia -rfc con il comando 'list'"}, - {"Key password must be at least 6 characters", + {"Key.password.must.be.at.least.6.characters", "La password della chiave deve contenere almeno 6 caratteri"}, - {"New password must be at least 6 characters", + {"New.password.must.be.at.least.6.characters", "La nuova password deve contenere almeno 6 caratteri"}, - {"Keystore file exists, but is empty: ", - "Il file keystore esiste ma \u00e8 vuoto: "}, - {"Keystore file does not exist: ", + {"Keystore.file.exists.but.is.empty.", + "Il file keystore esiste ma \u00E8 vuoto: "}, + {"Keystore.file.does.not.exist.", "Il file keystore non esiste: "}, - {"Must specify destination alias", "\u00c8 necessario specificare l'alias di destinazione"}, - {"Must specify alias", "\u00c8 necessario specificare l'alias"}, - {"Keystore password must be at least 6 characters", + {"Must.specify.destination.alias", "\u00C8 necessario specificare l'alias di destinazione"}, + {"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 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: "}, - {"Keystore password is too short - must be at least 6 characters", - "La password del keystore \u00e8 troppo corta - deve contenere almeno 6 caratteri"}, - {"Unknown Entry Type", "Tipo di voce sconosciuto"}, - {"Too many failures. Alias not changed", "Si sono verificati troppi errori. L'alias non \u00e8 stato modificato."}, - {"Entry for alias successfully imported.", - "La voce dell''alias {0} \u00e8 stata importata."}, - {"Entry for alias not imported.", "La voce dell''alias {0} non \u00e8 stata importata."}, - {"Problem importing entry for alias : .\nEntry for alias not imported.", - "Si \u00e8 verificato un problema durante l''importazione della voce dell''alias {0}: {1}.\nLa voce dell''alias {0} non \u00e8 stata importata."}, - {"Import command completed: entries successfully imported, entries failed or cancelled", - "Importazione completata: {0} voci importate, {1} voci non importate o annullate"}, - {"Warning: Overwriting existing alias in destination keystore", - "Avviso: sovrascrittura in corso dell''alias {0} nel file keystore di destinazione"}, - {"Existing entry alias exists, overwrite? [no]: ", - "La voce dell''alias {0} esiste gi\u00e0. Sovrascrivere? [no]: "}, - {"Too many failures - try later", "Troppi errori - riprovare"}, - {"Certification request stored in file ", - "La richiesta di certificazione \u00e8 memorizzata nel file <{0}>"}, - {"Submit this to your CA", "Inviarla alla propria CA"}, - {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified", - "Se l'alias non \u00e8 specificato, destalias, srckeypass e destkeypass non dovranno essere specificati"}, - {"Certificate stored in file ", - "Il certificato \u00e8 memorizzato nel file <{0}>"}, - {"Certificate reply was installed in keystore", - "La risposta del certificato \u00e8 stata installata nel keystore"}, - {"Certificate reply was not installed in keystore", - "La risposta del certificato non \u00e8 stata installata nel keystore"}, - {"Certificate was added to keystore", - "Il certificato \u00e8 stato aggiunto al keystore"}, - {"Certificate was not added to keystore", - "Il certificato non \u00e8 stato aggiunto al keystore"}, - {"[Storing ksfname]", "[Memorizzazione di {0}] in corso"}, - {"alias has no public key (certificate)", + {"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: "}, + {"Keystore.password.is.too.short.must.be.at.least.6.characters", + "La password del keystore \u00E8 troppo corta - deve contenere almeno 6 caratteri"}, + {"Unknown.Entry.Type", "Tipo di voce sconosciuto"}, + {"Too.many.failures.Alias.not.changed", "Numero eccessivo di errori. L'alias non \u00E8 stato modificato."}, + {"Entry.for.alias.alias.successfully.imported.", + "La voce dell''alias {0} \u00E8 stata importata."}, + {"Entry.for.alias.alias.not.imported.", "La voce dell''alias {0} non \u00E8 stata importata."}, + {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.", + "Si \u00E8 verificato un problema durante l''importazione della voce dell''alias {0}: {1}.\nLa voce dell''alias {0} non \u00E8 stata importata."}, + {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled", + "Comando di importazione completato: {0} voce/i importata/e, {1} voce/i non importata/e o annullata/e"}, + {"Warning.Overwriting.existing.alias.alias.in.destination.keystore", + "Avvertenza: sovrascrittura in corso dell''alias {0} nel file keystore di destinazione"}, + {"Existing.entry.alias.alias.exists.overwrite.no.", + "La voce dell''alias {0} esiste gi\u00E0. Sovrascrivere? [no]: "}, + {"Too.many.failures.try.later", "Troppi errori - riprovare"}, + {"Certification.request.stored.in.file.filename.", + "La richiesta di certificazione \u00E8 memorizzata nel file <{0}>"}, + {"Submit.this.to.your.CA", "Sottomettere alla propria CA"}, + {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified", + "Se l'alias non \u00E8 specificato, destalias, srckeypass e destkeypass non dovranno essere specificati"}, + {"Certificate.stored.in.file.filename.", + "Il certificato \u00E8 memorizzato nel file <{0}>"}, + {"Certificate.reply.was.installed.in.keystore", + "La risposta del certificato \u00E8 stata installata nel keystore"}, + {"Certificate.reply.was.not.installed.in.keystore", + "La risposta del certificato non \u00E8 stata installata nel keystore"}, + {"Certificate.was.added.to.keystore", + "Il certificato \u00E8 stato aggiunto al keystore"}, + {"Certificate.was.not.added.to.keystore", + "Il certificato non \u00E8 stato aggiunto al keystore"}, + {".Storing.ksfname.", "[Memorizzazione di {0}] in corso"}, + {"alias.has.no.public.key.certificate.", "{0} non dispone di chiave pubblica (certificato)"}, - {"Cannot derive signature algorithm", + {"Cannot.derive.signature.algorithm", "Impossibile derivare l'algoritmo di firma"}, - {"Alias does not exist", + {"Alias.alias.does.not.exist", "L''alias <{0}> non esiste"}, - {"Alias has no certificate", + {"Alias.alias.has.no.certificate", "L''alias <{0}> non dispone di certificato"}, - {"Key pair not generated, alias already exists", - "Non \u00e8 stata generata la coppia di chiavi, l''alias <{0}> \u00e8 gi\u00e0 esistente"}, - {"Cannot derive signature algorithm", - "Impossibile derivare l'algoritmo di firma"}, - {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name", - "Generazione in corso di una coppia di chiavi {1} da {0} bit e di un certificato autofirmato ({2}) con una validit\u00e0 di {3} giorni\n\tper: {4}"}, - {"Enter key password for ", "Immettere la password della chiave per <{0}>"}, - {"\t(RETURN if same as keystore password): ", + {"Key.pair.not.generated.alias.alias.already.exists", + "Non \u00E8 stata generata la coppia di chiavi, l''alias <{0}> \u00E8 gi\u00E0 esistente"}, + {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for", + "Generazione in corso di una coppia di chiavi {1} da {0} bit e di un certificato autofirmato ({2}) con una validit\u00E0 di {3} giorni\n\tper: {4}"}, + {"Enter.key.password.for.alias.", "Immettere la password della chiave per <{0}>"}, + {".RETURN.if.same.as.keystore.password.", "\t(INVIO se corrisponde alla password del keystore): "}, - {"Key password is too short - must be at least 6 characters", - "La password della chiave \u00e8 troppo corta - deve contenere almeno 6 caratteri"}, - {"Too many failures - key not added to keystore", - "Troppi errori - la chiave non \u00e8 stata aggiunta al keystore"}, - {"Destination alias already exists", - "L''alias di destinazione <{0}> \u00e8 gi\u00e0 esistente"}, - {"Password is too short - must be at least 6 characters", - "La password \u00e8 troppo corta - deve contenere almeno 6 caratteri"}, - {"Too many failures. Key entry not cloned", - "Troppi errori. Il valore della chiave non \u00e8 stato clonato"}, - {"key password for ", "password della chiave per <{0}>"}, - {"Keystore entry for already exists", - "L''entry nel keystore per <{0}> \u00e8 gi\u00e0 esistente"}, - {"Creating keystore entry for ...", - "Creazione dell''entry nel keystore per <{0}> in corso..."}, - {"No entries from identity database added", - "Nessuna entry aggiunta dal database di identit\u00e0"}, - {"Alias name: alias", "Nome alias: {0}"}, - {"Creation date: keyStore.getCreationDate(alias)", + {"Key.password.is.too.short.must.be.at.least.6.characters", + "La password della chiave \u00E8 troppo corta - deve contenere almeno 6 caratteri"}, + {"Too.many.failures.key.not.added.to.keystore", + "Troppi errori - la chiave non \u00E8 stata aggiunta al keystore"}, + {"Destination.alias.dest.already.exists", + "L''alias di destinazione <{0}> \u00E8 gi\u00E0 esistente"}, + {"Password.is.too.short.must.be.at.least.6.characters", + "La password \u00E8 troppo corta - deve contenere almeno 6 caratteri"}, + {"Too.many.failures.Key.entry.not.cloned", + "Numero eccessivo di errori. Il valore della chiave non \u00E8 stato copiato."}, + {"key.password.for.alias.", "password della chiave per <{0}>"}, + {"Keystore.entry.for.id.getName.already.exists", + "La voce del keystore per <{0}> esiste gi\u00E0"}, + {"Creating.keystore.entry.for.id.getName.", + "Creazione della voce del keystore per <{0}> in corso..."}, + {"No.entries.from.identity.database.added", + "Nessuna voce aggiunta dal database delle identit\u00E0"}, + {"Alias.name.alias", "Nome alias: {0}"}, + {"Creation.date.keyStore.getCreationDate.alias.", "Data di creazione: {0,date}"}, - {"alias, keyStore.getCreationDate(alias), ", + {"alias.keyStore.getCreationDate.alias.", "{0}, {1,date}, "}, - {"alias, ", "{0}, "}, - {"Entry type: ", "Tipo di voce: {0}"}, - {"Certificate chain length: ", "Lunghezza catena certificati: "}, - {"Certificate[(i + 1)]:", "Certificato[{0,number,integer}]:"}, - {"Certificate fingerprint (MD5): ", "Impronta digitale certificato (MD5): "}, - {"Entry type: trustedCertEntry\n", "Tipo entry: trustedCertEntry\n"}, - {"trustedCertEntry,", "trustedCertEntry,"}, - {"Keystore type: ", "Tipo keystore: "}, - {"Keystore provider: ", "Provider keystore: "}, - {"Your keystore contains keyStore.size() entry", - "Il keystore contiene {0,number,integer} entry"}, - {"Your keystore contains keyStore.size() entries", - "Il keystore contiene {0,number,integer} entry"}, - {"Failed to parse input", "Impossibile analizzare l'input"}, - {"Empty input", "Input vuoto"}, - {"Not X.509 certificate", "Il certificato non \u00e8 X.509"}, - {"Cannot derive signature algorithm", - "Impossibile derivare l'algoritmo di firma"}, - {"alias has no public key", "{0} non dispone di chiave pubblica"}, - {"alias has no X.509 certificate", "{0} non dispone di certificato X.509"}, - {"New certificate (self-signed):", "Nuovo certificato (autofirmato):"}, - {"Reply has no certificates", "La risposta non dispone di certificati"}, - {"Certificate not imported, alias already exists", - "Impossibile importare il certificato, l''alias <{0}> \u00e8 gi\u00e0 esistente"}, - {"Input not an X.509 certificate", "L'input non \u00e8 un certificato X.509"}, - {"Certificate already exists in keystore under alias ", - "Il certificato esiste gi\u00e0 nel keystore con alias <{0}>"}, - {"Do you still want to add it? [no]: ", + {"alias.", "{0}, "}, + {"Entry.type.type.", "Tipo di voce: {0}"}, + {"Certificate.chain.length.", "Lunghezza catena certificati: "}, + {"Certificate.i.1.", "Certificato[{0,number,integer}]:"}, + {"Certificate.fingerprint.SHA1.", "Impronta digitale certificato (SHA1): "}, + {"Entry.type.trustedCertEntry.", "Tipo di voce: trustedCertEntry\n"}, + {"trustedCertEntry.", "trustedCertEntry,"}, + {"Keystore.type.", "Tipo keystore: "}, + {"Keystore.provider.", "Provider keystore: "}, + {"Your.keystore.contains.keyStore.size.entry", + "Il keystore contiene {0,number,integer} voce"}, + {"Your.keystore.contains.keyStore.size.entries", + "Il keystore contiene {0,number,integer} voci"}, + {"Failed.to.parse.input", "Impossibile analizzare l'input"}, + {"Empty.input", "Input vuoto"}, + {"Not.X.509.certificate", "Il certificato non \u00E8 X.509"}, + {"alias.has.no.public.key", "{0} non dispone di chiave pubblica"}, + {"alias.has.no.X.509.certificate", "{0} non dispone di certificato X.509"}, + {"New.certificate.self.signed.", "Nuovo certificato (autofirmato):"}, + {"Reply.has.no.certificates", "La risposta non dispone di certificati"}, + {"Certificate.not.imported.alias.alias.already.exists", + "Impossibile importare il certificato, l''alias <{0}> \u00E8 gi\u00E0 esistente"}, + {"Input.not.an.X.509.certificate", "L'input non \u00E8 un certificato X.509"}, + {"Certificate.already.exists.in.keystore.under.alias.trustalias.", + "Il certificato esiste gi\u00E0 nel keystore con alias <{0}>"}, + {"Do.you.still.want.to.add.it.no.", "Aggiungerlo ugualmente? [no]: "}, - {"Certificate already exists in system-wide CA keystore under alias ", - "Il certificato esiste gi\u00e0 nel keystore CA con alias <{0}>"}, - {"Do you still want to add it to your own keystore? [no]: ", + {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.", + "Il certificato esiste gi\u00E0 nel keystore CA con alias <{0}>"}, + {"Do.you.still.want.to.add.it.to.your.own.keystore.no.", "Aggiungerlo al proprio keystore? [no]: "}, - {"Trust this certificate? [no]: ", "Considerare attendibile questo certificato? [no]: "}, - {"YES", "S\u00ec"}, - {"New prompt: ", "Nuova {0}: "}, - {"Passwords must differ", "Le password non devono coincidere"}, - {"Re-enter new prompt: ", "Reimmettere nuova {0}: "}, - {"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}: "}, - {"Enter new alias name\t(RETURN to cancel import for this entry): ", + {"Trust.this.certificate.no.", "Considerare sicuro questo certificato? [no]: "}, + {"YES", "S\u00EC"}, + {"New.prompt.", "Nuova {0}: "}, + {"Passwords.must.differ", "Le password non devono coincidere"}, + {"Re.enter.new.prompt.", "Reimmettere un nuovo valore per {0}: "}, + {"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}: "}, + {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.", "Immettere un nuovo nome alias\t(premere INVIO per annullare l'importazione della voce): "}, - {"Enter alias name: ", "Immettere nome alias: "}, - {"\t(RETURN if same as for )", + {"Enter.alias.name.", "Immettere nome alias: "}, + {".RETURN.if.same.as.for.otherAlias.", "\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 Nome algoritmo firma: {7}\n\t Versione: {8}"}, - {"What is your first and last name?", + {".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.", "Specificare nome e cognome"}, - {"What is the name of your organizational unit?", - "Specificare il nome dell'unit\u00e0 aziendale"}, - {"What is the name of your organization?", - "Specificare il nome dell'azienda"}, - {"What is the name of your City or Locality?", - "Specificare la localit\u00e0"}, - {"What is the name of your State or Province?", + {"What.is.the.name.of.your.organizational.unit.", + "Specificare il nome dell'unit\u00E0 organizzativa"}, + {"What.is.the.name.of.your.organization.", + "Specificare il nome dell'organizzazione"}, + {"What.is.the.name.of.your.City.or.Locality.", + "Specificare la localit\u00E0"}, + {"What.is.the.name.of.your.State.or.Province.", "Specificare la provincia"}, - {"What is the two-letter country code for this unit?", - "Specificare il codice a due lettere del paese in cui si trova l'unit\u00e0"}, - {"Is correct?", "Il dato {0} \u00e8 corretto?"}, + {"What.is.the.two.letter.country.code.for.this.unit.", + "Specificare il codice a due lettere del paese in cui si trova l'unit\u00E0"}, + {"Is.name.correct.", "Il dato {0} \u00E8 corretto?"}, {"no", "no"}, - {"yes", "s\u00ec"}, + {"yes", "s\u00EC"}, {"y", "s"}, - {" [defaultValue]: ", " [{0}]: "}, - {"Alias has no key", - "All''alias <{0}> non \u00e8 associata alcuna chiave"}, - {"Alias references an entry type that is not a private key entry. The -keyclone command only supports cloning of private key entries", - "L''alias <{0}> fa riferimento a un tipo di voce che non \u00e8 una voce di chiave privata. Il comando -keyclone supporta solo la duplicazione delle voci di chiave private."}, + {".defaultValue.", " [{0}]: "}, + {"Alias.alias.has.no.key", + "All''alias <{0}> non \u00E8 associata alcuna chiave"}, + {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key", + "L''alias <{0}> fa riferimento a un tipo di voce che non \u00E8 una voce di chiave privata. Il comando -keyclone supporta solo la copia delle voci di chiave private."}, - {"***************** WARNING WARNING WARNING *****************", - "***************** AVVISO AVVISO AVVISO *****************"}, + {".WARNING.WARNING.WARNING.", + "***************** WARNING WARNING WARNING *****************"}, + {"Signer.d.", "Firmatario #%d:"}, + {"Timestamp.", "Indicatore orario:"}, + {"Signature.", "Firma:"}, + {"CRLs.", "CRL:"}, + {"Certificate.owner.", "Proprietario certificato: "}, + {"Not.a.signed.jar.file", "Non \u00E8 un file jar firmato"}, + {"No.certificate.from.the.SSL.server", + "Nessun certificato dal server SSL"}, // Translators of the following 5 pairs, ATTENTION: // the next 5 string pairs are meant to be combined into 2 paragraphs, // 1+3+4 and 2+3+5. make sure your translation also does. - {"* The integrity of the information stored in your keystore *", - "* L'integrit\u00e0 delle informazioni memorizzate nel keystore *"}, - {"* The integrity of the information stored in the srckeystore*", - "* L'integrit\u00e0 delle informazioni salvate nel srckeystore*"}, - {"* has NOT been verified! In order to verify its integrity, *", - "* NON \u00e8 stata verificata! A tale scopo \u00e8 necessario fornire *"}, - {"* you must provide your keystore password. *", + {".The.integrity.of.the.information.stored.in.your.keystore.", + "* L'integrit\u00E0 delle informazioni memorizzate nel keystore *"}, + {".The.integrity.of.the.information.stored.in.the.srckeystore.", + "* L'integrit\u00E0 delle informazioni salvate nel srckeystore*"}, + {".has.NOT.been.verified.In.order.to.verify.its.integrity.", + "* NON \u00E8 stata verificata. A tale scopo \u00E8 necessario fornire *"}, + {".you.must.provide.your.keystore.password.", "* la password del keystore. *"}, - {"* you must provide the srckeystore password. *", - "* \u00c8 necessario fornire la password per il srckeystore. *"}, + {".you.must.provide.the.srckeystore.password.", + "* \u00C8 necessario fornire la password per il srckeystore. *"}, - {"Certificate reply does not contain public key for ", + {"Certificate.reply.does.not.contain.public.key.for.alias.", "La risposta del certificato non contiene la chiave pubblica per <{0}>"}, - {"Incomplete certificate chain in reply", + {"Incomplete.certificate.chain.in.reply", "Catena dei certificati incompleta nella risposta"}, - {"Certificate chain in reply does not verify: ", + {"Certificate.chain.in.reply.does.not.verify.", "La catena dei certificati nella risposta non verifica: "}, - {"Top-level certificate in reply:\n", + {"Top.level.certificate.in.reply.", "Certificato di primo livello nella risposta:\n"}, - {"... is not trusted. ", "... non \u00e8 considerato attendibile. "}, - {"Install reply anyway? [no]: ", "Installare la risposta? [no]: "}, + {".is.not.trusted.", "...non \u00E8 considerato sicuro. "}, + {"Install.reply.anyway.no.", "Installare la risposta? [no]: "}, {"NO", "NO"}, - {"Public keys in reply and keystore don't match", + {"Public.keys.in.reply.and.keystore.don.t.match", "Le chiavi pubbliche nella risposta e nel keystore non corrispondono"}, - {"Certificate reply and certificate in keystore are identical", + {"Certificate.reply.and.certificate.in.keystore.are.identical", "La risposta del certificato e il certificato nel keystore sono identici"}, - {"Failed to establish chain from reply", + {"Failed.to.establish.chain.from.reply", "Impossibile stabilire la catena dalla risposta"}, {"n", "n"}, - {"Wrong answer, try again", "Risposta errata, riprovare"}, - {"Secret key not generated, alias already exists", - "La chiave segreta non \u00e8 stata generata; l''alias <{0}> esiste gi\u00e0"}, - {"Please provide -keysize for secret key generation", + {"Wrong.answer.try.again", "Risposta errata, riprovare"}, + {"Secret.key.not.generated.alias.alias.already.exists", + "La chiave segreta non \u00E8 stata generata; l''alias <{0}> esiste gi\u00E0"}, + {"Please.provide.keysize.for.secret.key.generation", "Specificare il valore -keysize per la generazione della chiave segreta"}, - {"keytool usage:\n", "utilizzo keytool:\n"}, - {"Extensions: ", "Estensioni: "}, - - {"-certreq [-v] [-protected]", - "-certreq [-v] [-protected]"}, - {"\t [-alias ] [-sigalg ]", - "\t [-alias ] [-sigalg ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - {"\t [-keystore ] [-storepass ]", - "\t [-keystore ] [-storepass ]"}, - {"\t [-storetype ] [-providername ]", - "\t [-storetype ] [-providername ]"}, - {"\t [-providerclass [-providerarg ]] ...", - "\t [-providerclass [-providerarg ]] ..."}, - {"\t [-providerpath ]", - "\t [-providerpath ]"}, - {"-delete [-v] [-protected] -alias ", - "-delete [-v] [-protected] -alias "}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-export [-v] [-rfc] [-protected]", - // "-export [-v] [-rfc] [-protected]"}, - {"-exportcert [-v] [-rfc] [-protected]", - "-exportcert [-v] [-rfc] [-protected]"}, - {"\t [-alias ] [-file ]", - "\t [-alias ] [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-genkey [-v] [-protected]", - // "-genkey [-v] [-protected]"}, - {"-genkeypair [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-keyalg ] [-keysize ]", - "\t [-keyalg ] [-keysize ]"}, - {"\t [-sigalg ] [-dname ]", - "\t [-sigalg ] [-dname ]"}, - {"\t [-validity ] [-keypass ]", - "\t [-validity ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-genseckey [-v] [-protected]", - "-genseckey [-v] [-protected]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-help", "-help"}, - //{"-identitydb [-v] [-protected]", - // "-identitydb [-v] [-protected]"}, - //{"\t [-file ]", "\t [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-import [-v] [-noprompt] [-trustcacerts] [-protected]", - // "-import [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"-importcert [-v] [-noprompt] [-trustcacerts] [-protected]", - "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-alias ] [-keypass ]", - "\t [-alias ] [-keypass ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-importkeystore [-v] ", - "-importkeystore [-v] "}, - {"\t [-srckeystore ] [-destkeystore ]", - "\t [-srckeystore ] [-destkeystore ]"}, - {"\t [-srcstoretype ] [-deststoretype ]", - "\t [-srcstoretype ] [-deststoretype ]"}, - {"\t [-srcprotected] [-destprotected]", - "\t [-srcprotected] [-destprotected]"}, - {"\t [-srcstorepass ] [-deststorepass ]", - "\t [-srcstorepass ] [-deststorepass ]"}, - {"\t [-srcprovidername ]\n\t [-destprovidername ]", // riga troppo lunga, divisa in 2 parti - "\t [-srcprovidername ]\n\t [-destprovidername ]"}, - {"\t [-srcalias [-destalias ]", - "\t [-srcalias [-destalias ]"}, - {"\t [-srckeypass ] [-destkeypass ]]", - "\t [-srckeypass ] [-destkeypass ]]"}, - {"\t [-noprompt]", "\t [-noprompt]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-changealias [-v] [-protected] -alias -destalias ", - "-changealias [-v] [-protected] -alias -destalias "}, - {"\t [-keypass ]", "\t [-keypass ]"}, - - //{"-keyclone [-v] [-protected]", - // "-keyclone [-v] [-protected]"}, - //{"\t [-alias ] -dest ", - // "\t [-alias ] -dest "}, - //{"\t [-keypass ] [-new ]", - // "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-keypasswd [-v] [-alias ]", - "-keypasswd [-v] [-alias ]"}, - {"\t [-keypass ] [-new ]", - "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-list [-v | -rfc] [-protected]", - "-list [-v | -rfc] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-printcert [-v] [-file ]", - "-printcert [-v] [-file ]"}, - - //{"-selfcert [-v] [-protected]", - // "-selfcert [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - //{"\t [-dname ] [-validity ]", - // "\t [-dname ] [-validity ]"}, - //{"\t [-keypass ] [-sigalg ]", - // "\t [-keypass ] [-sigalg ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-storepasswd [-v] [-new ]", - "-storepasswd [-v] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ + {"Extensions.", "Estensioni: "}, + {".Empty.value.", "(valore vuoto)"}, + {"Extension.Request.", "Richiesta di estensione:"}, + {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.", + "Richiesta di certificato PKCS #10 (versione 1.0)\nOggetto: %s\nChiave pubblica: %s formato %s chiave\n"}, + {"Unknown.keyUsage.type.", "Tipo keyUsage sconosciuto: "}, + {"Unknown.extendedkeyUsage.type.", "Tipo extendedkeyUsage sconosciuto: "}, + {"Unknown.AccessDescription.type.", "Tipo AccessDescription sconosciuto: "}, + {"Unrecognized.GeneralName.type.", "Tipo GeneralName non riconosciuto: "}, + {"This.extension.cannot.be.marked.as.critical.", + "Impossibile contrassegnare questa estensione come critica. "}, + {"Odd.number.of.hex.digits.found.", "\u00C8 stato trovato un numero dispari di cifre esadecimali: "}, + {"Unknown.extension.type.", "Tipo di estensione sconosciuto: "}, + {"command.{0}.is.ambiguous.", "il comando {0} \u00E8 ambiguo:"}, // policytool - {"Warning: A public key for alias 'signers[i]' does not exist. Make sure a KeyStore is properly configured.", - "Avviso: non esiste una chiave pubblica per l''alias {0}. Verificare che il KeyStore sia configurato correttamente."}, - {"Warning: Class not found: class", "Avviso: Classe non trovata: {0}"}, - {"Warning: Invalid argument(s) for constructor: arg", - "Avviso: argomento o argomenti non validi per il costruttore {0}"}, - {"Illegal Principal Type: type", "Tipo principale non valido: {0}"}, - {"Illegal option: option", "Opzione non valida: {0}"}, - {"Usage: policytool [options]", "Utilizzo: policytool [opzioni]"}, - {" [-file ] policy file location", - " [-file ] posizione del policy file"}, + {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.", + "Avvertenza: non esiste una chiave pubblica per l''alias {0}. Verificare che il keystore sia configurato correttamente."}, + {"Warning.Class.not.found.class", "Avvertenza: classe non trovata: {0}"}, + {"Warning.Invalid.argument.s.for.constructor.arg", + "Avvertenza: argomento o argomenti non validi per il costruttore {0}"}, + {"Illegal.Principal.Type.type", "Tipo principal non valido: {0}"}, + {"Illegal.option.option", "Opzione non valida: {0}"}, + {"Usage.policytool.options.", "Utilizzo: policytool [opzioni]"}, + {".file.file.policy.file.location", + " [-file ] posizione del file dei criteri"}, {"New", "Nuovo"}, {"Open", "Apri"}, {"Save", "Salva"}, - {"Save As", "Salva con nome"}, - {"View Warning Log", "Visualizza registro avvisi"}, + {"Save.As", "Salva con nome"}, + {"View.Warning.Log", "Visualizza registro avvertenze"}, {"Exit", "Esci"}, - {"Add Policy Entry", "Aggiungi policy entry"}, - {"Edit Policy Entry", "Modifica policy entry"}, - {"Remove Policy Entry", "Elimina policy entry"}, + {"Add.Policy.Entry", "Aggiungi voce dei criteri"}, + {"Edit.Policy.Entry", "Modifica voce dei criteri"}, + {"Remove.Policy.Entry", "Rimuovi voce dei criteri"}, {"Edit", "Modifica"}, {"Retain", "Mantieni"}, - {"Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name.", - "Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name."}, + {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes", + "Avvertenza: il nome file pu\u00F2 includere barre rovesciate con escape. Non \u00E8 necessario eseguire l'escape delle barre rovesciate (se necessario lo strumento esegue l'escape dei caratteri al momento della scrittura del contenuto dei criteri nell'area di memorizzazione persistente).\n\nFare click su Mantieni per conservare il nome immesso, oppure su Modifica per modificare il nome."}, - {"Add Public Key Alias", "Aggiungi alias chiave pubblica"}, - {"Remove Public Key Alias", "Elimina alias chiave pubblica"}, + {"Add.Public.Key.Alias", "Aggiungi alias chiave pubblica"}, + {"Remove.Public.Key.Alias", "Rimuovi alias chiave pubblica"}, {"File", "File"}, - {"KeyStore", "KeyStore"}, - {"Policy File:", "Policy file:"}, - {"Could not open policy file: policyFile: e.toString()", + {"KeyStore", "Keystore"}, + {"Policy.File.", "File dei criteri:"}, + {"Could.not.open.policy.file.policyFile.e.toString.", "Impossibile aprire il file di criteri {0}: {1}"}, - {"Policy Tool", "Policy Tool"}, - {"Errors have occurred while opening the policy configuration. View the Warning Log for more information.", - "Si sono verificati errori durante l'apertura della configurazione della policy. Consultare il registro degli avvisi per ulteriori informazioni."}, + {"Policy.Tool", "Strumento criteri"}, + {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.", + "Si sono verificati errori durante l'apertura della configurazione dei criteri. Consultare il registro delle avvertenze per ulteriori informazioni."}, {"Error", "Errore"}, {"OK", "OK"}, {"Status", "Stato"}, - {"Warning", "Avviso"}, - {"Permission: ", - "Permesso: "}, - {"Principal Type:", "Tipo Principal:"}, - {"Principal Name:", "Nome Principal:"}, - {"Target Name: ", - "Nome obiettivo: "}, - {"Actions: ", + {"Warning", "Avvertenza"}, + {"Permission.", + "Autorizzazione: "}, + {"Principal.Type.", "Tipo principal:"}, + {"Principal.Name.", "Nome principal:"}, + {"Target.Name.", + "Nome destinazione: "}, + {"Actions.", "Azioni: "}, - {"OK to overwrite existing file filename?", + {"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", "Elimina Principal"}, - {"Principals:", "Principal:"}, - {" Add Permission", " Aggiungi permesso"}, - {" Edit Permission", " Modifica permesso"}, - {"Remove Permission", "Elimina permesso"}, + {"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"}, {"Done", "Fine"}, - {"KeyStore URL:", "URL KeyStore:"}, - {"KeyStore Type:", "Tipo KeyStore:"}, - {"KeyStore Provider:", "Fornitore KeyStore:"}, - {"KeyStore Password URL:", "URL password KeyStore:"}, + {"KeyStore.URL.", "URL keystore:"}, + {"KeyStore.Type.", "Tipo keystore:"}, + {"KeyStore.Provider.", "Provider keystore:"}, + {"KeyStore.Password.URL.", "URL password keystore:"}, {"Principals", "Principal:"}, - {" Edit Principal:", " Modifica Principal:"}, - {" Add New Principal:", " Aggiungi nuova Principal:"}, - {"Permissions", "Permessi"}, - {" Edit Permission:", " Modifica permesso:"}, - {" Add New Permission:", " Aggiungi nuovo permesso:"}, - {"Signed By:", "Firmato da:"}, - {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name", - "Impossibile specificare Principal con una classe wildcard senza un nome wildcard"}, - {"Cannot Specify Principal without a Name", - "Impossibile specificare Principal senza un nome"}, - {"Permission and Target Name must have a value", - "Il permesso e il nome di obiettivo non possono essere nulli"}, - {"Remove this Policy Entry?", "Eliminare questa policy entry?"}, - {"Overwrite File", "Sovrascrivi file"}, - {"Policy successfully written to filename", - "La policy \u00e8 stata scritta correttamente in {0}"}, - {"null filename", "nome file nullo"}, - {"Save changes?", "Salvare le modifiche?"}, - {"Yes", "S\u00ec"}, + {".Edit.Principal.", " Modifica principal:"}, + {".Add.New.Principal.", " Aggiungi nuovo principal:"}, + {"Permissions", "Autorizzazioni"}, + {".Edit.Permission.", " Modifica autorizzazione:"}, + {".Add.New.Permission.", " Aggiungi nuova autorizzazione:"}, + {"Signed.By.", "Firmato da:"}, + {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name", + "Impossibile specificare principal con una classe carattere jolly senza un nome carattere jolly"}, + {"Cannot.Specify.Principal.without.a.Name", + "Impossibile specificare principal senza un nome"}, + {"Permission.and.Target.Name.must.have.a.value", + "L'autorizzazione e il nome destinazione non possono essere nulli"}, + {"Remove.this.Policy.Entry.", "Rimuovere questa voce dei criteri?"}, + {"Overwrite.File", "Sovrascrivi file"}, + {"Policy.successfully.written.to.filename", + "I criteri sono stati scritti in {0}"}, + {"null.filename", "nome file nullo"}, + {"Save.changes.", "Salvare le modifiche?"}, + {"Yes", "S\u00EC"}, {"No", "No"}, - {"Policy Entry", "Policy entry"}, - {"Save Changes", "Salva le modifiche"}, - {"No Policy Entry selected", "Nessuna policy entry selezionata"}, - {"Unable to open KeyStore: ex.toString()", - "Impossibile aprire il KeyStore: {0}"}, - {"No principal selected", "Nessuna Principal selezionata"}, - {"No permission selected", "Nessun permesso selezionato"}, + {"Policy.Entry", "Voce dei criteri"}, + {"Save.Changes", "Salva le modifiche"}, + {"No.Policy.Entry.selected", "Nessuna voce dei criteri selezionata"}, + {"Unable.to.open.KeyStore.ex.toString.", + "Impossibile aprire il keystore: {0}"}, + {"No.principal.selected", "Nessun principal selezionato"}, + {"No.permission.selected", "Nessuna autorizzazione selezionata"}, {"name", "nome"}, - {"configuration type", "tipo di configurazione"}, - {"environment variable name", "nome variabile ambiente"}, - {"library name", "nome libreria"}, - {"package name", "nome package"}, - {"policy type", "tipo di criteri"}, - {"property name", "nome propriet\u00e0"}, - {"provider name", "nome provider"}, - {"Principal List", "Elenco principale"}, - {"Permission List", "Elenco autorizzazioni"}, - {"Code Base", "Codebase"}, - {"KeyStore U R L:", "URL KeyStore:"}, - {"KeyStore Password U R L:", "URL password KeyStore:"}, + {"configuration.type", "tipo di configurazione"}, + {"environment.variable.name", "nome variabile ambiente"}, + {"library.name", "nome libreria"}, + {"package.name", "nome package"}, + {"policy.type", "tipo di criteri"}, + {"property.name", "nome propriet\u00E0"}, + {"Principal.List", "Lista principal"}, + {"Permission.List", "Lista autorizzazioni"}, + {"Code.Base", "Codebase"}, + {"KeyStore.U.R.L.", "URL keystore:"}, + {"KeyStore.Password.U.R.L.", "URL password keystore:"}, // javax.security.auth.PrivateCredentialPermission - {"invalid null input(s)", "input nullo/i non valido/i"}, - {"actions can only be 'read'", "le azioni possono essere solamente 'lette'"}, - {"permission name [name] syntax invalid: ", - "sintassi non valida per il nome di permesso [{0}]: "}, - {"Credential Class not followed by a Principal Class and Name", - "la classe Credential non \u00e8 seguita da un nome e una classe Principal"}, - {"Principal Class not followed by a Principal Name", - "la classe Principal non \u00e8 seguita da un nome Principal"}, - {"Principal Name must be surrounded by quotes", - "il nome Principal deve essere compreso tra virgolette"}, - {"Principal Name missing end quote", - "virgolette di chiusura del nome Principal mancanti"}, - {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value", - "la classe Principal PrivateCredentialPermission non pu\u00f2 essere un valore wildcard (*) se il nome Principal a sua volta non \u00e8 un valore wildcard (*)"}, - {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name", - "ProprCred:\n\tclasse Principal = {0}\n\tNome Principal = {1}"}, + {"invalid.null.input.s.", "input nullo/i non valido/i"}, + {"actions.can.only.be.read.", "le azioni possono essere solamente 'lette'"}, + {"permission.name.name.syntax.invalid.", + "sintassi [{0}] non valida per il nome autorizzazione: "}, + {"Credential.Class.not.followed.by.a.Principal.Class.and.Name", + "la classe di credenziali non \u00E8 seguita da un nome e una classe di principal"}, + {"Principal.Class.not.followed.by.a.Principal.Name", + "la classe di principal non \u00E8 seguita da un nome principal"}, + {"Principal.Name.must.be.surrounded.by.quotes", + "il nome principal deve essere compreso tra apici"}, + {"Principal.Name.missing.end.quote", + "apice di chiusura del nome principal mancante"}, + {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value", + "la classe principal PrivateCredentialPermission non pu\u00F2 essere un valore carattere jolly (*) se il nome principal a sua volta non \u00E8 un valore carattere jolly (*)"}, + {"CredOwner.Principal.Class.class.Principal.Name.name", + "CredOwner:\n\tclasse Principal = {0}\n\tNome Principal = {1}"}, // javax.security.auth.x500 - {"provided null name", "il nome fornito \u00e8 nullo"}, - {"provided null keyword map", "specificata mappa parole chiave null"}, - {"provided null OID map", "specificata mappa OID null"}, + {"provided.null.name", "il nome fornito \u00E8 nullo"}, + {"provided.null.keyword.map", "specificata mappa parole chiave null"}, + {"provided.null.OID.map", "specificata mappa OID null"}, // javax.security.auth.Subject - {"invalid null AccessControlContext provided", + {"invalid.null.AccessControlContext.provided", "fornito un valore nullo non valido per AccessControlContext"}, - {"invalid null action provided", "fornita un'azione nulla non valida"}, - {"invalid null Class provided", "fornita una classe nulla non valida"}, - {"Subject:\n", "Subject:\n"}, - {"\tPrincipal: ", "\tPrincipal: "}, - {"\tPublic Credential: ", "\tCredenziale pubblica: "}, - {"\tPrivate Credentials inaccessible\n", + {"invalid.null.action.provided", "fornita un'azione nulla non valida"}, + {"invalid.null.Class.provided", "fornita una classe nulla non valida"}, + {"Subject.", "Oggetto:\n"}, + {".Principal.", "\tPrincipal: "}, + {".Public.Credential.", "\tCredenziale pubblica: "}, + {".Private.Credentials.inaccessible.", "\tImpossibile accedere alle credenziali private\n"}, - {"\tPrivate Credential: ", "\tCredenziale privata: "}, - {"\tPrivate Credential inaccessible\n", + {".Private.Credential.", "\tCredenziale privata: "}, + {".Private.Credential.inaccessible.", "\tImpossibile accedere alla credenziale privata\n"}, - {"Subject is read-only", "Subject \u00e8 di sola lettura"}, - {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set", - "si \u00e8 tentato di aggiungere un oggetto che non \u00e8 un'istanza di java.security.Principal a un set Principal di Subject"}, - {"attempting to add an object which is not an instance of class", - "si \u00e8 tentato di aggiungere un oggetto che non \u00e8 un''istanza di {0}"}, + {"Subject.is.read.only", "L'oggetto \u00E8 di sola lettura"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set", + "si \u00E8 tentato di aggiungere un oggetto che non \u00E8 un'istanza di java.security.Principal a un set principal dell'oggetto"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.class", + "si \u00E8 tentato di aggiungere un oggetto che non \u00E8 un''istanza di {0}"}, // javax.security.auth.login.AppConfigurationEntry - {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "}, + {"LoginModuleControlFlag.", "LoginModuleControlFlag: "}, // javax.security.auth.login.LoginContext - {"Invalid null input: name", "Input nullo non valido: nome"}, - {"No LoginModules configured for name", - "Nessun LoginModule configurato per {0}"}, - {"invalid null Subject provided", "fornito un valore nullo non valido per Subject"}, - {"invalid null CallbackHandler provided", + {"Invalid.null.input.name", "Input nullo non valido: nome"}, + {"No.LoginModules.configured.for.name", + "Nessun LoginModules configurato per {0}"}, + {"invalid.null.Subject.provided", "fornito un valore nullo non valido per l'oggetto"}, + {"invalid.null.CallbackHandler.provided", "fornito un valore nullo non valido per CallbackHandler"}, - {"null subject - logout called before login", - "subject nullo - il logout \u00e8 stato chiamato prima del login"}, - {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor", - "impossibile istanziare il LoginModule {0} in quando non restituisce un valore vuoto per il costruttore"}, - {"unable to instantiate LoginModule", - "impossibile istanziare LoginModule"}, - {"unable to instantiate LoginModule: ", - "Impossibile creare un'istanza di LoginModule: "}, - {"unable to find LoginModule class: ", + {"null.subject.logout.called.before.login", + "oggetto nullo - il logout \u00E8 stato richiamato prima del login"}, + {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor", + "impossibile creare un''istanza di LoginModule {0} in quanto non restituisce un argomento vuoto per il costruttore"}, + {"unable.to.instantiate.LoginModule", + "impossibile creare un'istanza di LoginModule"}, + {"unable.to.instantiate.LoginModule.", + "impossibile creare un'istanza di LoginModule: "}, + {"unable.to.find.LoginModule.class.", "impossibile trovare la classe LoginModule: "}, - {"unable to access LoginModule: ", + {"unable.to.access.LoginModule.", "impossibile accedere a LoginModule "}, - {"Login Failure: all modules ignored", + {"Login.Failure.all.modules.ignored", "Errore di login: tutti i moduli sono stati ignorati"}, // sun.security.provider.PolicyFile - {"java.security.policy: error parsing policy:\n\tmessage", - "java.security.policy: errore nell''analisi di {0}:\n\t{1}"}, - {"java.security.policy: error adding Permission, perm:\n\tmessage", - "java.security.policy: errore nell''aggiunta del permesso {0}:\n\t{1}"}, - {"java.security.policy: error adding Entry:\n\tmessage", - "java.security.policy: errore nell''aggiunta dell''entry:\n\t{0}"}, - {"alias name not provided (pe.name)", "impossibile fornire nome alias ({0})"}, - {"unable to perform substitution on alias, suffix", + {"java.security.policy.error.parsing.policy.message", + "java.security.policy: errore durante l''analisi di {0}:\n\t{1}"}, + {"java.security.policy.error.adding.Permission.perm.message", + "java.security.policy: errore durante l''aggiunta dell''autorizzazione {0}:\n\t{1}"}, + {"java.security.policy.error.adding.Entry.message", + "java.security.policy: errore durante l''aggiunta della voce:\n\t{0}"}, + {"alias.name.not.provided.pe.name.", "impossibile fornire nome alias ({0})"}, + {"unable.to.perform.substitution.on.alias.suffix", "impossibile eseguire una sostituzione sull''alias, {0}"}, - {"substitution value, prefix, unsupported", + {"substitution.value.prefix.unsupported", "valore sostituzione, {0}, non supportato"}, - {"(", "("}, - {")", ")"}, - {"type can't be null","il tipo non pu\u00f2 essere nullo"}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"type.can.t.be.null","il tipo non pu\u00F2 essere nullo"}, // sun.security.provider.PolicyParser - {"keystorePasswordURL can not be specified without also specifying keystore", + {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore", "Impossibile specificare keystorePasswordURL senza specificare anche il keystore"}, - {"expected keystore type", "tipo di keystore previsto"}, - {"expected keystore provider", "provider di keystore previsto"}, - {"multiple Codebase expressions", + {"expected.keystore.type", "tipo keystore previsto"}, + {"expected.keystore.provider", "provider di keystore previsto"}, + {"multiple.Codebase.expressions", "espressioni Codebase multiple"}, - {"multiple SignedBy expressions","espressioni SignedBy multiple"}, - {"SignedBy has empty alias","SignedBy presenta un alias vuoto"}, - {"can not specify Principal with a wildcard class without a wildcard name", - "impossibile specificare Principal con una classe wildcard senza un nome wildcard"}, - {"expected codeBase or SignedBy or Principal", - "previsto codeBase o SignedBy o Principal"}, - {"expected permission entry", "prevista entry di permesso"}, - {"number ", "numero "}, - {"expected [expect], read [end of file]", + {"multiple.SignedBy.expressions","espressioni SignedBy multiple"}, + {"SignedBy.has.empty.alias","SignedBy presenta un alias vuoto"}, + {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name", + "impossibile specificare un principal con una classe carattere jolly senza un nome carattere jolly"}, + {"expected.codeBase.or.SignedBy.or.Principal", + "previsto codeBase o SignedBy o principal"}, + {"expected.permission.entry", "prevista voce di autorizzazione"}, + {"number.", "numero "}, + {"expected.expect.read.end.of.file.", "previsto [{0}], letto [end of file]"}, - {"expected [;], read [end of file]", + {"expected.read.end.of.file.", "previsto [;], letto [end of file]"}, - {"line number: msg", "riga {0}: {1}"}, - {"line number: expected [expect], found [actual]", + {"line.number.msg", "riga {0}: {1}"}, + {"line.number.expected.expect.found.actual.", "riga {0}: previsto [{1}], trovato [{2}]"}, - {"null principalClass or principalName", + {"null.principalClass.or.principalName", "principalClass o principalName nullo"}, // sun.security.pkcs11.SunPKCS11 - {"PKCS11 Token [providerName] Password: ", + {"PKCS11.Token.providerName.Password.", "Password per token PKCS11 [{0}]: "}, /* --- DEPRECATED --- */ // javax.security.auth.Policy - {"unable to instantiate Subject-based policy", - "impossibile creare un'istanza dei criteri basati su Subject"} + {"unable.to.instantiate.Subject.based.policy", + "impossibile creare un'istanza dei criteri basati sull'oggetto"} }; @@ -648,3 +670,4 @@ public class Resources_it extends java.util.ListResourceBundle { return contents; } } + diff --git a/jdk/src/share/classes/sun/security/util/Resources_ja.java b/jdk/src/share/classes/sun/security/util/Resources_ja.java index 194105665f3..1a03433814d 100644 --- a/jdk/src/share/classes/sun/security/util/Resources_ja.java +++ b/jdk/src/share/classes/sun/security/util/Resources_ja.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -35,605 +35,627 @@ public class Resources_ja extends java.util.ListResourceBundle { private static final Object[][] contents = { // shared (from jarsigner) - {" ", " "}, - {" ", " "}, - {" ", " "}, - {", ", ", "}, + {"SPACE", " "}, + {"2SPACE", " "}, + {"6SPACE", " "}, + {"COMMA", ", "}, // shared (from keytool) - {"\n", "\n"}, - {"*******************************************", + {"NEWLINE", "\n"}, + {"STAR", "*******************************************"}, - {"*******************************************\n\n", + {"STARNN", "*******************************************\n\n"}, - // keytool - {"keytool error: ", "keytool \u30a8\u30e9\u30fc: "}, - {"Illegal option: ", "\u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3: "}, - {"Try keytool -help","keytool -help \u3092\u5b9f\u884c\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044"}, - {"Command option needs an argument.", "\u30b3\u30de\u30f3\u30c9\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002"}, - {"Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified value.", - "\u8b66\u544a: PKCS12 \u30ad\u30fc\u30b9\u30c8\u30a2\u3067\u306f\u3001\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u9375\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u7570\u306a\u3063\u3066\u3044\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u6307\u5b9a\u3057\u305f {0} \u306e\u5024\u306f\u7121\u8996\u3057\u307e\u3059\u3002"}, - {"-keystore must be NONE if -storetype is {0}", - "-storetype \u304c {0} \u306e\u5834\u5408 -keystore \u306f NONE \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093"}, - {"Too may retries, program terminated", - "\u518d\u8a66\u884c\u304c\u591a\u3059\u304e\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f"}, - {"-storepasswd and -keypasswd commands not supported if -storetype is {0}", - "-storetype \u304c {0} \u306e\u5834\u5408 -storepasswd \u30b3\u30de\u30f3\u30c9\u3068 -keypasswd \u30b3\u30de\u30f3\u30c9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093"}, - {"-keypasswd commands not supported if -storetype is PKCS12", - "-storetype \u304c PKCS12 \u306e\u5834\u5408\u3001-keypasswd \u30b3\u30de\u30f3\u30c9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093"}, - {"-keypass and -new can not be specified if -storetype is {0}", - "-storetype \u304c {0} \u306e\u5834\u5408 -keypass \u3068 -new \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"}, - {"if -protected is specified, then -storepass, -keypass, and -new must not be specified", - "-protected \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001-storepass\u3001-keypass\u3001-new \u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093"}, - {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified", - "-srcprotected \u3092\u6307\u5b9a\u3059\u308b\u5834\u5408\u3001-srcstorepass \u304a\u3088\u3073 -srckeypass \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"}, - {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified", - "\u30ad\u30fc\u30b9\u30c8\u30a2\u304c\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u4fdd\u8b77\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001-storepass\u3001-keypass\u3001\u304a\u3088\u3073 -new \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"}, - {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified", - "\u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u304c\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u4fdd\u8b77\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001-srcstorepass \u3068 -srckeypass \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"}, - {"Validity must be greater than zero", - "\u59a5\u5f53\u6027\u306f\u30bc\u30ed\u3088\u308a\u5927\u304d\u304f\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"}, - {"provName not a provider", "{0} \u306f\u30d7\u30ed\u30d0\u30a4\u30c0\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Usage error: no command provided", "\u4f7f\u7528\u30a8\u30e9\u30fc: \u30b3\u30de\u30f3\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"Usage error, is not a legal command", "\u4f7f\u7528\u30a8\u30e9\u30fc: {0} \u306f\u4e0d\u6b63\u306a\u30b3\u30de\u30f3\u30c9\u3067\u3059"}, - {"Source keystore file exists, but is empty: ", "\u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u5b58\u5728\u3057\u307e\u3059\u304c\u7a7a\u3067\u3059: "}, - {"Please specify -srckeystore", "-srckeystore \u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"}, - {"Must not specify both -v and -rfc with 'list' command", - "'list' \u30b3\u30de\u30f3\u30c9\u306b -v \u3068 -rfc \u306e\u4e21\u65b9\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"Key password must be at least 6 characters", - "\u9375\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u306f 6 \u6587\u5b57\u4ee5\u4e0a\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"}, - {"New password must be at least 6 characters", - "\u65b0\u898f\u30d1\u30b9\u30ef\u30fc\u30c9\u306f 6 \u6587\u5b57\u4ee5\u4e0a\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"}, - {"Keystore file exists, but is empty: ", - "\u30ad\u30fc\u30b9\u30c8\u30a2\u30d5\u30a1\u30a4\u30eb\u306f\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u7a7a\u3067\u3059: "}, - {"Keystore file does not exist: ", - "\u30ad\u30fc\u30b9\u30c8\u30a2\u30d5\u30a1\u30a4\u30eb\u306f\u5b58\u5728\u3057\u307e\u305b\u3093: "}, - {"Must specify destination alias", "\u5b9b\u5148\u306e\u5225\u540d\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}, - {"Must specify alias", "\u5225\u540d\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}, - {"Keystore password must be at least 6 characters", - "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u306f 6 \u6587\u5b57\u4ee5\u4e0a\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"}, - {"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\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: "}, - {"Keystore password is too short - must be at least 6 characters", - "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u77ed\u904e\u304e\u307e\u3059 - 6 \u6587\u5b57\u4ee5\u4e0a\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Unknown Entry Type", "\u672a\u77e5\u306e\u30a8\u30f3\u30c8\u30ea\u30bf\u30a4\u30d7"}, - {"Too many failures. Alias not changed", "\u969c\u5bb3\u304c\u591a\u3059\u304e\u307e\u3059\u3002\u5225\u540d\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093"}, - {"Entry for alias successfully imported.", - "\u5225\u540d {0} \u306e\u30a8\u30f3\u30c8\u30ea\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002"}, - {"Entry for alias not imported.", "\u5225\u540d {0} \u306e\u30a8\u30f3\u30c8\u30ea\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"}, - {"Problem importing entry for alias : .\nEntry for alias not imported.", - "\u5225\u540d {0} \u306e\u30a8\u30f3\u30c8\u30ea\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {1}\u3002\n\u5225\u540d {0} \u306e\u30a8\u30f3\u30c8\u30ea\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"}, - {"Import command completed: entries successfully imported, entries failed or cancelled", - "\u30a4\u30f3\u30dd\u30fc\u30c8\u30b3\u30de\u30f3\u30c9\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f: {0} \u4ef6\u306e\u30a8\u30f3\u30c8\u30ea\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u304c\u6210\u529f\u3057\u307e\u3057\u305f\u3002{1} \u4ef6\u306e\u30a8\u30f3\u30c8\u30ea\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u304c\u5931\u6557\u3057\u305f\u304b\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f"}, - {"Warning: Overwriting existing alias in destination keystore", - "\u8b66\u544a: \u51fa\u529b\u5148\u30ad\u30fc\u30b9\u30c8\u30a2\u5185\u306e\u65e2\u5b58\u306e\u5225\u540d {0} \u3092\u4e0a\u66f8\u304d\u3057\u3066\u3044\u307e\u3059"}, - {"Existing entry alias exists, overwrite? [no]: ", - "\u65e2\u5b58\u306e\u30a8\u30f3\u30c8\u30ea\u306e\u5225\u540d {0} \u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b? [no]: "}, - {"Too many failures - try later", "\u969c\u5bb3\u304c\u591a\u904e\u304e\u307e\u3059 - \u5f8c\u3067\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Certification request stored in file ", - "\u8a3c\u660e\u66f8\u8981\u6c42\u304c\u30d5\u30a1\u30a4\u30eb <{0}> \u306b\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"Submit this to your CA", "\u3053\u308c\u3092 CA \u306b\u63d0\u51fa\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified", - "\u5225\u540d\u3092\u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u3001\u51fa\u529b\u5148\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u5225\u540d\u3001\u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3001\u304a\u3088\u3073\u51fa\u529b\u5148\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"}, - {"Certificate stored in file ", - "\u8a3c\u660e\u66f8\u304c\u30d5\u30a1\u30a4\u30eb <{0}> \u306b\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"Certificate reply was installed in keystore", - "\u8a3c\u660e\u66f8\u5fdc\u7b54\u304c\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"Certificate reply was not installed in keystore", - "\u8a3c\u660e\u66f8\u5fdc\u7b54\u304c\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"}, - {"Certificate was added to keystore", - "\u8a3c\u660e\u66f8\u304c\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"Certificate was not added to keystore", - "\u8a3c\u660e\u66f8\u304c\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u8ffd\u52a0\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"}, - {"[Storing ksfname]", "[{0} \u3092\u683c\u7d0d\u4e2d]"}, - {"alias has no public key (certificate)", - "{0} \u306b\u306f\u516c\u958b\u9375 (\u8a3c\u660e\u66f8) \u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Cannot derive signature algorithm", - "\u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"Alias does not exist", - "\u5225\u540d <{0}> \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002"}, - {"Alias has no certificate", - "\u5225\u540d <{0}> \u306f\u8a3c\u660e\u66f8\u3092\u4fdd\u6301\u3057\u307e\u305b\u3093\u3002"}, - {"Key pair not generated, alias already exists", - "\u9375\u30da\u30a2\u306f\u751f\u6210\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u5225\u540d <{0}> \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"}, - {"Cannot derive signature algorithm", - "\u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name", - "{3} \u65e5\u9593\u6709\u52b9\u306a {0} \u30d3\u30c3\u30c8\u306e {1} \u306e\u9375\u30da\u30a2\u3068\u81ea\u5df1\u7f72\u540d\u578b\u8a3c\u660e\u66f8 ({2}) \u3092\u751f\u6210\u3057\u3066\u3044\u307e\u3059\n\t\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u540d: {4}"}, - {"Enter key password for ", "<{0}> \u306e\u9375\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"\t(RETURN if same as keystore password): ", - "\t(\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u540c\u3058\u5834\u5408\u306f RETURN \u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044): "}, - {"Key password is too short - must be at least 6 characters", - "\u9375\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u77ed\u904e\u304e\u307e\u3059 - 6 \u6587\u5b57\u4ee5\u4e0a\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Too many failures - key not added to keystore", - "\u969c\u5bb3\u304c\u591a\u904e\u304e\u307e\u3059 - \u9375\u306f\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u8ffd\u52a0\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f"}, - {"Destination alias already exists", - "\u5b9b\u5148\u306e\u5225\u540d <{0}> \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"}, - {"Password is too short - must be at least 6 characters", - "\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u77ed\u904e\u304e\u307e\u3059 - 6 \u6587\u5b57\u4ee5\u4e0a\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Too many failures. Key entry not cloned", - "\u969c\u5bb3\u304c\u591a\u904e\u304e\u307e\u3059\u3002\u9375\u30a8\u30f3\u30c8\u30ea\u306f\u8907\u88fd\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"}, - {"key password for ", "<{0}> \u306e\u9375\u306e\u30d1\u30b9\u30ef\u30fc\u30c9"}, - {"Keystore entry for already exists", - "<{0}> \u306e\u30ad\u30fc\u30b9\u30c8\u30a2\u30a8\u30f3\u30c8\u30ea\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"}, - {"Creating keystore entry for ...", - "<{0}> \u306e\u30ad\u30fc\u30b9\u30c8\u30a2\u30a8\u30f3\u30c8\u30ea\u3092\u4f5c\u6210\u4e2d..."}, - {"No entries from identity database added", - "\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u8ffd\u52a0\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Alias name: alias", "\u5225\u540d: {0}"}, - {"Creation date: keyStore.getCreationDate(alias)", - "\u4f5c\u6210\u65e5: {0,date}"}, - {"alias, keyStore.getCreationDate(alias), ", - "{0}, {1,date}, "}, - {"alias, ", "{0}, "}, - {"Entry type: ", "\u30a8\u30f3\u30c8\u30ea\u30bf\u30a4\u30d7: {0}"}, - {"Certificate chain length: ", "\u8a3c\u660e\u9023\u9396\u306e\u9577\u3055: "}, - {"Certificate[(i + 1)]:", "\u8a3c\u660e\u66f8[{0,number,integer}]:"}, - {"Certificate fingerprint (MD5): ", "\u8a3c\u660e\u66f8\u306e\u30d5\u30a3\u30f3\u30ac\u30fc\u30d7\u30ea\u30f3\u30c8 (MD5): "}, - {"Entry type: trustedCertEntry\n", "\u30a8\u30f3\u30c8\u30ea\u306e\u30bf\u30a4\u30d7: trustedCertEntry\n"}, - {"trustedCertEntry,", "trustedCertEntry,"}, - {"Keystore type: ", "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30bf\u30a4\u30d7: "}, - {"Keystore provider: ", "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d7\u30ed\u30d0\u30a4\u30c0: "}, - {"Your keystore contains keyStore.size() entry", - "\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u306f {0,number,integer} \u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u307e\u3059\u3002"}, - {"Your keystore contains keyStore.size() entries", - "\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u306f {0,number,integer} \u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u307e\u3059\u3002"}, - {"Failed to parse input", "\u5165\u529b\u306e\u69cb\u6587\u89e3\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"}, - {"Empty input", "\u5165\u529b\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Not X.509 certificate", "X.509 \u8a3c\u660e\u66f8\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Cannot derive signature algorithm", - "\u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"alias has no public key", "{0} \u306b\u306f\u516c\u958b\u9375\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"alias has no X.509 certificate", "{0} \u306b\u306f X.509 \u8a3c\u660e\u66f8\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"New certificate (self-signed):", "\u65b0\u3057\u3044\u8a3c\u660e\u66f8 (\u81ea\u5df1\u7f72\u540d\u578b):"}, - {"Reply has no certificates", "\u5fdc\u7b54\u306b\u306f\u8a3c\u660e\u66f8\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Certificate not imported, alias already exists", - "\u8a3c\u660e\u66f8\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u5225\u540d <{0}> \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"}, - {"Input not an X.509 certificate", "\u5165\u529b\u306f X.509 \u8a3c\u660e\u66f8\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Certificate already exists in keystore under alias ", - "\u8a3c\u660e\u66f8\u306f\u3001\u5225\u540d <{0}> \u306e\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"}, - {"Do you still want to add it? [no]: ", - "\u8ffd\u52a0\u3057\u307e\u3059\u304b? [no]: "}, - {"Certificate already exists in system-wide CA keystore under alias ", - "\u8a3c\u660e\u66f8\u306f\u3001\u5225\u540d <{0}> \u306e\u30b7\u30b9\u30c6\u30e0\u898f\u6a21\u306e CA \u30ad\u30fc\u30b9\u30c8\u30a2\u5185\u306b\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"}, - {"Do you still want to add it to your own keystore? [no]: ", - "\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u8ffd\u52a0\u3057\u307e\u3059\u304b? [no]: "}, - {"Trust this certificate? [no]: ", "\u3053\u306e\u8a3c\u660e\u66f8\u3092\u4fe1\u983c\u3057\u307e\u3059\u304b? [no]: "}, - {"YES", "YES"}, - {"New prompt: ", "\u65b0\u898f {0}: "}, - {"Passwords must differ", "\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u7570\u306a\u3063\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"}, - {"Re-enter new prompt: ", "\u65b0\u898f {0} \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: "}, - {"Enter new alias name\t(RETURN to cancel import for this entry): ", - "\u65b0\u3057\u3044\u5225\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\t(\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u53d6\u308a\u6d88\u3059\u5834\u5408\u306f RETURN \u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044): "}, - {"Enter alias name: ", "\u5225\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044: "}, - {"\t(RETURN if same as for )", - "\t(<{0}> \u3068\u540c\u3058\u5834\u5408\u306f RETURN \u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044)"}, - {"*PATTERN* printX509Cert", - "\u6240\u6709\u8005: {0}\n\u767a\u884c\u8005: {1}\n\u30b7\u30ea\u30a2\u30eb\u756a\u53f7: {2}\n\u6709\u52b9\u671f\u9593\u306e\u958b\u59cb\u65e5: {3} \u7d42\u4e86\u65e5: {4}\n\u8a3c\u660e\u66f8\u306e\u30d5\u30a3\u30f3\u30ac\u30fc\u30d7\u30ea\u30f3\u30c8:\n\t MD5: {5}\n\t SHA1: {6}\n\t \u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u540d: {7}\n\t \u30d0\u30fc\u30b8\u30e7\u30f3: {8}"}, - {"What is your first and last name?", - "\u59d3\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"What is the name of your organizational unit?", - "\u7d44\u7e54\u5358\u4f4d\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"What is the name of your organization?", - "\u7d44\u7e54\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"What is the name of your City or Locality?", - "\u90fd\u5e02\u540d\u307e\u305f\u306f\u5730\u57df\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"What is the name of your State or Province?", - "\u5dde\u540d\u307e\u305f\u306f\u5730\u65b9\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"What is the two-letter country code for this unit?", - "\u3053\u306e\u5358\u4f4d\u306b\u8a72\u5f53\u3059\u308b 2 \u6587\u5b57\u306e\u56fd\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Is correct?", "{0} \u3067\u3088\u308d\u3057\u3044\u3067\u3059\u304b?"}, - {"no", "no"}, - {"yes", "yes"}, + // keytool: Help part + {".OPTION.", " [OPTION]..."}, + {"Options.", "\u30AA\u30D7\u30B7\u30E7\u30F3:"}, + {"Use.keytool.help.for.all.available.commands", + "\u4F7F\u7528\u53EF\u80FD\u306A\u3059\u3079\u3066\u306E\u30B3\u30DE\u30F3\u30C9\u306B\u3064\u3044\u3066\u306F\"keytool -help\"\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Key.and.Certificate.Management.Tool", + "\u30AD\u30FC\u304A\u3088\u3073\u8A3C\u660E\u66F8\u7BA1\u7406\u30C4\u30FC\u30EB"}, + {"Commands.", "\u30B3\u30DE\u30F3\u30C9:"}, + {"Use.keytool.command.name.help.for.usage.of.command.name", + "command_name\u306E\u4F7F\u7528\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306F\"keytool -command_name -help\"\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"}, + // keytool: help: commands + {"Generates.a.certificate.request", + "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u751F\u6210\u3057\u307E\u3059"}, //-certreq + {"Changes.an.entry.s.alias", + "\u30A8\u30F3\u30C8\u30EA\u306E\u5225\u540D\u3092\u5909\u66F4\u3057\u307E\u3059"}, //-changealias + {"Deletes.an.entry", + "\u30A8\u30F3\u30C8\u30EA\u3092\u524A\u9664\u3057\u307E\u3059"}, //-delete + {"Exports.certificate", + "\u8A3C\u660E\u66F8\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-exportcert + {"Generates.a.key.pair", + "\u9375\u30DA\u30A2\u3092\u751F\u6210\u3057\u307E\u3059"}, //-genkeypair + {"Generates.a.secret.key", + "\u79D8\u5BC6\u9375\u3092\u751F\u6210\u3057\u307E\u3059"}, //-genseckey + {"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 + {"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.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", + "\u9375\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u3092\u4F5C\u6210\u3057\u307E\u3059"}, //-keyclone + {"Changes.the.key.password.of.an.entry", + "\u30A8\u30F3\u30C8\u30EA\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5909\u66F4\u3057\u307E\u3059"}, //-keypasswd + {"Lists.entries.in.a.keystore", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306E\u30A8\u30F3\u30C8\u30EA\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059"}, //-list + {"Prints.the.content.of.a.certificate", + "\u8A3C\u660E\u66F8\u306E\u5185\u5BB9\u3092\u51FA\u529B\u3057\u307E\u3059"}, //-printcert + {"Prints.the.content.of.a.certificate.request", + "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u5185\u5BB9\u3092\u51FA\u529B\u3057\u307E\u3059"}, //-printcertreq + {"Prints.the.content.of.a.CRL.file", + "CRL\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u3092\u51FA\u529B\u3057\u307E\u3059"}, //-printcrl + {"Generates.a.self.signed.certificate", + "\u81EA\u5DF1\u7F72\u540D\u578B\u8A3C\u660E\u66F8\u3092\u751F\u6210\u3057\u307E\u3059"}, //-selfcert + {"Changes.the.store.password.of.a.keystore", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30B9\u30C8\u30A2\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5909\u66F4\u3057\u307E\u3059"}, //-storepasswd + // keytool: help: options + {"alias.name.of.the.entry.to.process", + "\u51E6\u7406\u3059\u308B\u30A8\u30F3\u30C8\u30EA\u306E\u5225\u540D"}, //-alias + {"destination.alias", + "\u51FA\u529B\u5148\u306E\u5225\u540D"}, //-destalias + {"destination.key.password", + "\u51FA\u529B\u5148\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-destkeypass + {"destination.keystore.name", + "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u540D"}, //-destkeystore + {"destination.keystore.password.protected", + "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u4FDD\u8B77\u5BFE\u8C61\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-destprotected + {"destination.keystore.provider.name", + "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0\u540D"}, //-destprovidername + {"destination.keystore.password", + "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-deststorepass + {"destination.keystore.type", + "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7"}, //-deststoretype + {"distinguished.name", + "\u8B58\u5225\u540D"}, //-dname + {"X.509.extension", + "X.509\u62E1\u5F35"}, //-ext + {"output.file.name", + "\u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u540D"}, //-file and -outfile + {"input.file.name", + "\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D"}, //-file and -infile + {"key.algorithm.name", + "\u9375\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D"}, //-keyalg + {"key.password", + "\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-keypass + {"key.bit.size", + "\u9375\u306E\u30D3\u30C3\u30C8\u30FB\u30B5\u30A4\u30BA"}, //-keysize + {"keystore.name", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u540D"}, //-keystore + {"new.password", + "\u65B0\u898F\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-new + {"do.not.prompt", + "\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u306A\u3044"}, //-noprompt + {"password.through.protected.mechanism", + "\u4FDD\u8B77\u30E1\u30AB\u30CB\u30BA\u30E0\u306B\u3088\u308B\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-protected + {"provider.argument", + "\u30D7\u30ED\u30D0\u30A4\u30C0\u5F15\u6570"}, //-providerarg + {"provider.class.name", + "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FB\u30AF\u30E9\u30B9\u540D"}, //-providerclass + {"provider.name", + "\u30D7\u30ED\u30D0\u30A4\u30C0\u540D"}, //-providername + {"provider.classpath", + "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9"}, //-providerpath + {"output.in.RFC.style", + "RFC\u30B9\u30BF\u30A4\u30EB\u306E\u51FA\u529B"}, //-rfc + {"signature.algorithm.name", + "\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D"}, //-sigalg + {"source.alias", + "\u30BD\u30FC\u30B9\u5225\u540D"}, //-srcalias + {"source.key.password", + "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-srckeypass + {"source.keystore.name", + "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u540D"}, //-srckeystore + {"source.keystore.password.protected", + "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u4FDD\u8B77\u5BFE\u8C61\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-srcprotected + {"source.keystore.provider.name", + "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0\u540D"}, //-srcprovidername + {"source.keystore.password", + "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-srcstorepass + {"source.keystore.type", + "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7"}, //-srcstoretype + {"SSL.server.host.and.port", + "SSL\u30B5\u30FC\u30D0\u30FC\u306E\u30DB\u30B9\u30C8\u3068\u30DD\u30FC\u30C8"}, //-sslserver + {"signed.jar.file", + "\u7F72\u540D\u4ED8\u304DJAR\u30D5\u30A1\u30A4\u30EB"}, //=jarfile + {"certificate.validity.start.date.time", + "\u8A3C\u660E\u66F8\u306E\u6709\u52B9\u958B\u59CB\u65E5\u6642"}, //-startdate + {"keystore.password", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-storepass + {"keystore.type", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7"}, //-storetype + {"trust.certificates.from.cacerts", + "cacerts\u304B\u3089\u306E\u8A3C\u660E\u66F8\u3092\u4FE1\u983C\u3059\u308B"}, //-trustcacerts + {"verbose.output", + "\u8A73\u7D30\u51FA\u529B"}, //-v + {"validity.number.of.days", + "\u59A5\u5F53\u6027\u65E5\u6570"}, //-validity + {"Serial.ID.of.cert.to.revoke", + "\u5931\u52B9\u3059\u308B\u8A3C\u660E\u66F8\u306E\u30B7\u30EA\u30A2\u30EBID"}, //-id + // keytool: Running part + {"keytool.error.", "keytool\u30A8\u30E9\u30FC: "}, + {"Illegal.option.", "\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: "}, + {"Illegal.value.", "\u4E0D\u6B63\u306A\u5024: "}, + {"Unknown.password.type.", "\u4E0D\u660E\u306A\u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30BF\u30A4\u30D7: "}, + {"Cannot.find.environment.variable.", + "\u74B0\u5883\u5909\u6570\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: "}, + {"Cannot.find.file.", "\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: "}, + {"Command.option.flag.needs.an.argument.", "\u30B3\u30DE\u30F3\u30C9\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059\u3002"}, + {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.", + "\u8B66\u544A: PKCS12\u30AD\u30FC\u30B9\u30C8\u30A2\u3067\u306F\u3001\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3068\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u7570\u306A\u308B\u72B6\u6CC1\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3002\u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F{0}\u306E\u5024\u306F\u7121\u8996\u3057\u307E\u3059\u3002"}, + {".keystore.must.be.NONE.if.storetype.is.{0}", + "-storetype\u304C{0}\u306E\u5834\u5408\u3001-keystore\u306FNONE\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"Too.many.retries.program.terminated", + "\u518D\u8A66\u884C\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u30D7\u30ED\u30B0\u30E9\u30E0\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F"}, + {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}", + "-storetype\u304C{0}\u306E\u5834\u5408\u3001-storepasswd\u30B3\u30DE\u30F3\u30C9\u304A\u3088\u3073-keypasswd\u30B3\u30DE\u30F3\u30C9\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093"}, + {".keypasswd.commands.not.supported.if.storetype.is.PKCS12", + "-storetype\u304CPKCS12\u306E\u5834\u5408\u3001-keypasswd\u30B3\u30DE\u30F3\u30C9\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093"}, + {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}", + "-storetype\u304C{0}\u306E\u5834\u5408\u3001-keypass\u3068-new\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"}, + {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified", + "-protected\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001-storepass\u3001-keypass\u304A\u3088\u3073-new\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"}, + {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified", + "-srcprotected\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001-srcstorepass\u304A\u3088\u3073-srckeypass\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"}, + {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u4FDD\u8B77\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001-storepass\u3001-keypass\u304A\u3088\u3073-new\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"}, + {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", + "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u4FDD\u8B77\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001-srcstorepass\u304A\u3088\u3073-srckeypass\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"}, + {"Illegal.startdate.value", "startdate\u5024\u304C\u7121\u52B9\u3067\u3059"}, + {"Validity.must.be.greater.than.zero", + "\u59A5\u5F53\u6027\u306F\u30BC\u30ED\u3088\u308A\u5927\u304D\u3044\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"provName.not.a.provider", "{0}\u306F\u30D7\u30ED\u30D0\u30A4\u30C0\u3067\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"Usage.error.no.command.provided", "\u4F7F\u7528\u30A8\u30E9\u30FC: \u30B3\u30DE\u30F3\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"Source.keystore.file.exists.but.is.empty.", "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u5B58\u5728\u3057\u307E\u3059\u304C\u7A7A\u3067\u3059: "}, + {"Please.specify.srckeystore", "-srckeystore\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Must.not.specify.both.v.and.rfc.with.list.command", + "'list'\u30B3\u30DE\u30F3\u30C9\u306B-v\u3068-rfc\u306E\u4E21\u65B9\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"}, + {"Key.password.must.be.at.least.6.characters", + "\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F6\u6587\u5B57\u4EE5\u4E0A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"New.password.must.be.at.least.6.characters", + "\u65B0\u898F\u30D1\u30B9\u30EF\u30FC\u30C9\u306F6\u6587\u5B57\u4EE5\u4E0A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"Keystore.file.exists.but.is.empty.", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u5B58\u5728\u3057\u307E\u3059\u304C\u3001\u7A7A\u3067\u3059: "}, + {"Keystore.file.does.not.exist.", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u5B58\u5728\u3057\u307E\u305B\u3093: "}, + {"Must.specify.destination.alias", "\u51FA\u529B\u5148\u306E\u5225\u540D\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"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.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: "}, + {"Keystore.password.is.too.short.must.be.at.least.6.characters", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u77ED\u3059\u304E\u307E\u3059 - 6\u6587\u5B57\u4EE5\u4E0A\u306B\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Unknown.Entry.Type", "\u4E0D\u660E\u306A\u30A8\u30F3\u30C8\u30EA\u30FB\u30BF\u30A4\u30D7"}, + {"Too.many.failures.Alias.not.changed", "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u5225\u540D\u306F\u5909\u66F4\u3055\u308C\u307E\u305B\u3093"}, + {"Entry.for.alias.alias.successfully.imported.", + "\u5225\u540D{0}\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002"}, + {"Entry.for.alias.alias.not.imported.", "\u5225\u540D{0}\u306E\u30A8\u30F3\u30C8\u30EA\u306F\u30A4\u30F3\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002"}, + {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.", + "\u5225\u540D{0}\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u4E2D\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {1}\u3002\n\u5225\u540D{0}\u306E\u30A8\u30F3\u30C8\u30EA\u306F\u30A4\u30F3\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002"}, + {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled", + "\u30A4\u30F3\u30DD\u30FC\u30C8\u30FB\u30B3\u30DE\u30F3\u30C9\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F: {0}\u4EF6\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u304C\u6210\u529F\u3057\u307E\u3057\u305F\u3002{1}\u4EF6\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u304C\u5931\u6557\u3057\u305F\u304B\u53D6\u308A\u6D88\u3055\u308C\u307E\u3057\u305F"}, + {"Warning.Overwriting.existing.alias.alias.in.destination.keystore", + "\u8B66\u544A: \u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306E\u65E2\u5B58\u306E\u5225\u540D{0}\u3092\u4E0A\u66F8\u304D\u3057\u3066\u3044\u307E\u3059"}, + {"Existing.entry.alias.alias.exists.overwrite.no.", + "\u65E2\u5B58\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u5225\u540D{0}\u304C\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\u3002[\u3044\u3044\u3048]: "}, + {"Too.many.failures.try.later", "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059 - \u5F8C\u3067\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Certification.request.stored.in.file.filename.", + "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u30D5\u30A1\u30A4\u30EB<{0}>\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F"}, + {"Submit.this.to.your.CA", "\u3053\u308C\u3092CA\u306B\u63D0\u51FA\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified", + "\u5225\u540D\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u3001\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u5225\u540D\u3001\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304A\u3088\u3073\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"}, + {"Certificate.stored.in.file.filename.", + "\u8A3C\u660E\u66F8\u304C\u30D5\u30A1\u30A4\u30EB<{0}>\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F"}, + {"Certificate.reply.was.installed.in.keystore", + "\u8A3C\u660E\u66F8\u5FDC\u7B54\u304C\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u307E\u3057\u305F"}, + {"Certificate.reply.was.not.installed.in.keystore", + "\u8A3C\u660E\u66F8\u5FDC\u7B54\u304C\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"}, + {"Certificate.was.added.to.keystore", + "\u8A3C\u660E\u66F8\u304C\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F"}, + {"Certificate.was.not.added.to.keystore", + "\u8A3C\u660E\u66F8\u304C\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"}, + {".Storing.ksfname.", "[{0}\u3092\u683C\u7D0D\u4E2D]"}, + {"alias.has.no.public.key.certificate.", + "{0}\u306B\u306F\u516C\u958B\u9375(\u8A3C\u660E\u66F8)\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"Cannot.derive.signature.algorithm", + "\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093"}, + {"Alias.alias.does.not.exist", + "\u5225\u540D<{0}>\u306F\u5B58\u5728\u3057\u307E\u305B\u3093"}, + {"Alias.alias.has.no.certificate", + "\u5225\u540D<{0}>\u306B\u306F\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"Key.pair.not.generated.alias.alias.already.exists", + "\u9375\u30DA\u30A2\u306F\u751F\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"}, + {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for", + "{3}\u65E5\u9593\u6709\u52B9\u306A{0}\u30D3\u30C3\u30C8\u306E{1}\u306E\u9375\u30DA\u30A2\u3068\u81EA\u5DF1\u7F72\u540D\u578B\u8A3C\u660E\u66F8({2})\u3092\u751F\u6210\u3057\u3066\u3044\u307E\u3059\n\t\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540D: {4}"}, + {"Enter.key.password.for.alias.", "<{0}>\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"}, + {".RETURN.if.same.as.keystore.password.", + "\t(\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3068\u540C\u3058\u5834\u5408\u306FRETURN\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044): "}, + {"Key.password.is.too.short.must.be.at.least.6.characters", + "\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u77ED\u3059\u304E\u307E\u3059 - 6\u6587\u5B57\u4EE5\u4E0A\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Too.many.failures.key.not.added.to.keystore", + "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059 - \u9375\u306F\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"}, + {"Destination.alias.dest.already.exists", + "\u51FA\u529B\u5148\u306E\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"}, + {"Password.is.too.short.must.be.at.least.6.characters", + "\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u77ED\u3059\u304E\u307E\u3059 - 6\u6587\u5B57\u4EE5\u4E0A\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Too.many.failures.Key.entry.not.cloned", + "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u9375\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u306F\u4F5C\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"}, + {"key.password.for.alias.", "<{0}>\u306E\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, + {"Keystore.entry.for.id.getName.already.exists", + "<{0}>\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30A8\u30F3\u30C8\u30EA\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"}, + {"Creating.keystore.entry.for.id.getName.", + "<{0}>\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30A8\u30F3\u30C8\u30EA\u3092\u4F5C\u6210\u4E2D..."}, + {"No.entries.from.identity.database.added", + "\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u30FB\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u8FFD\u52A0\u3055\u308C\u305F\u30A8\u30F3\u30C8\u30EA\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"Alias.name.alias", "\u5225\u540D: {0}"}, + {"Creation.date.keyStore.getCreationDate.alias.", + "\u4F5C\u6210\u65E5: {0,date}"}, + {"alias.keyStore.getCreationDate.alias.", + "{0},{1,date}, "}, + {"alias.", "{0}, "}, + {"Entry.type.type.", "\u30A8\u30F3\u30C8\u30EA\u30FB\u30BF\u30A4\u30D7: {0}"}, + {"Certificate.chain.length.", "\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u306E\u9577\u3055: "}, + {"Certificate.i.1.", "\u8A3C\u660E\u66F8[{0,number,integer}]:"}, + {"Certificate.fingerprint.SHA1.", "\u8A3C\u660E\u66F8\u306E\u30D5\u30A3\u30F3\u30AC\u30D7\u30EA\u30F3\u30C8(SHA1): "}, + {"Entry.type.trustedCertEntry.", "\u30A8\u30F3\u30C8\u30EA\u306E\u30BF\u30A4\u30D7: trustedCertEntry\n"}, + {"trustedCertEntry.", "trustedCertEntry,"}, + {"Keystore.type.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7: "}, + {"Keystore.provider.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0: "}, + {"Your.keystore.contains.keyStore.size.entry", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u306F{0,number,integer}\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u307E\u3059"}, + {"Your.keystore.contains.keyStore.size.entries", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u306F{0,number,integer}\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u307E\u3059"}, + {"Failed.to.parse.input", "\u5165\u529B\u306E\u69CB\u6587\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F"}, + {"Empty.input", "\u5165\u529B\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"Not.X.509.certificate", "X.509\u8A3C\u660E\u66F8\u3067\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"alias.has.no.public.key", "{0}\u306B\u306F\u516C\u958B\u9375\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"alias.has.no.X.509.certificate", "{0}\u306B\u306FX.509\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"New.certificate.self.signed.", "\u65B0\u3057\u3044\u8A3C\u660E\u66F8(\u81EA\u5DF1\u7F72\u540D\u578B):"}, + {"Reply.has.no.certificates", "\u5FDC\u7B54\u306B\u306F\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"Certificate.not.imported.alias.alias.already.exists", + "\u8A3C\u660E\u66F8\u306F\u30A4\u30F3\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"}, + {"Input.not.an.X.509.certificate", "\u5165\u529B\u306FX.509\u8A3C\u660E\u66F8\u3067\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"Certificate.already.exists.in.keystore.under.alias.trustalias.", + "\u8A3C\u660E\u66F8\u306F\u3001\u5225\u540D<{0}>\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"}, + {"Do.you.still.want.to.add.it.no.", + "\u8FFD\u52A0\u3057\u307E\u3059\u304B\u3002[\u3044\u3044\u3048]: "}, + {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.", + "\u8A3C\u660E\u66F8\u306F\u3001\u5225\u540D<{0}>\u306E\u30B7\u30B9\u30C6\u30E0\u898F\u6A21\u306ECA\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306B\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"}, + {"Do.you.still.want.to.add.it.to.your.own.keystore.no.", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3057\u307E\u3059\u304B\u3002 [\u3044\u3044\u3048]: "}, + {"Trust.this.certificate.no.", "\u3053\u306E\u8A3C\u660E\u66F8\u3092\u4FE1\u983C\u3057\u307E\u3059\u304B\u3002 [\u3044\u3044\u3048]: "}, + {"YES", "\u306F\u3044"}, + {"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.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: "}, + {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.", + "\u65B0\u3057\u3044\u5225\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\t(\u3053\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u3092\u53D6\u308A\u6D88\u3059\u5834\u5408\u306FRETURN\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044): "}, + {"Enter.alias.name.", "\u5225\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "}, + {".RETURN.if.same.as.for.otherAlias.", + "\t(<{0}>\u3068\u540C\u3058\u5834\u5408\u306FRETURN\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044)"}, + {".PATTERN.printX509Cert", + "\u6240\u6709\u8005: {0}\n\u767A\u884C\u8005: {1}\n\u30B7\u30EA\u30A2\u30EB\u756A\u53F7: {2}\n\u6709\u52B9\u671F\u9593\u306E\u958B\u59CB\u65E5: {3}\u7D42\u4E86\u65E5: {4}\n\u8A3C\u660E\u66F8\u306E\u30D5\u30A3\u30F3\u30AC\u30D7\u30EA\u30F3\u30C8:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D: {8}\n\t \u30D0\u30FC\u30B8\u30E7\u30F3: {9}"}, + {"What.is.your.first.and.last.name.", + "\u59D3\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"What.is.the.name.of.your.organizational.unit.", + "\u7D44\u7E54\u5358\u4F4D\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"What.is.the.name.of.your.organization.", + "\u7D44\u7E54\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"What.is.the.name.of.your.City.or.Locality.", + "\u90FD\u5E02\u540D\u307E\u305F\u306F\u5730\u57DF\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"What.is.the.name.of.your.State.or.Province.", + "\u90FD\u9053\u5E9C\u770C\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"What.is.the.two.letter.country.code.for.this.unit.", + "\u3053\u306E\u5358\u4F4D\u306B\u8A72\u5F53\u3059\u308B2\u6587\u5B57\u306E\u56FD\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"Is.name.correct.", "{0}\u3067\u3088\u308D\u3057\u3044\u3067\u3059\u304B\u3002"}, + {"no", "\u3044\u3044\u3048"}, + {"yes", "\u306F\u3044"}, {"y", "y"}, - {" [defaultValue]: ", " [{0}]: "}, - {"Alias has no key", - "\u5225\u540d <{0}> \u306b\u306f\u9375\u304c\u3042\u308a\u307e\u305b\u3093"}, - {"Alias references an entry type that is not a private key entry. The -keyclone command only supports cloning of private key entries", - "\u5225\u540d <{0}> \u304c\u53c2\u7167\u3057\u3066\u3044\u308b\u30a8\u30f3\u30c8\u30ea\u30bf\u30a4\u30d7\u306f\u975e\u516c\u958b\u9375\u30a8\u30f3\u30c8\u30ea\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002-keyclone \u30b3\u30de\u30f3\u30c9\u306f\u975e\u516c\u958b\u9375\u30a8\u30f3\u30c8\u30ea\u306e\u8907\u88fd\u306e\u307f\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059"}, + {".defaultValue.", " [{0}]: "}, + {"Alias.alias.has.no.key", + "\u5225\u540D<{0}>\u306B\u306F\u9375\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key", + "\u5225\u540D<{0}>\u304C\u53C2\u7167\u3057\u3066\u3044\u308B\u30A8\u30F3\u30C8\u30EA\u30FB\u30BF\u30A4\u30D7\u306F\u79D8\u5BC6\u9375\u30A8\u30F3\u30C8\u30EA\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002-keyclone\u30B3\u30DE\u30F3\u30C9\u306F\u79D8\u5BC6\u9375\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u4F5C\u6210\u306E\u307F\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, - {"***************** WARNING WARNING WARNING *****************", - "***************** \u8b66\u544a \u8b66\u544a \u8b66\u544a *****************"}, + {".WARNING.WARNING.WARNING.", + "***************** WARNING WARNING WARNING *****************"}, + {"Signer.d.", "\u7F72\u540D\u8005\u756A\u53F7%d:"}, + {"Timestamp.", "\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7:"}, + {"Signature.", "\u7F72\u540D:"}, + {"CRLs.", "CRL:"}, + {"Certificate.owner.", "\u8A3C\u660E\u66F8\u306E\u6240\u6709\u8005: "}, + {"Not.a.signed.jar.file", "\u7F72\u540D\u4ED8\u304DJAR\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"No.certificate.from.the.SSL.server", + "SSL\u30B5\u30FC\u30D0\u30FC\u304B\u3089\u306E\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"}, // Translators of the following 5 pairs, ATTENTION: // the next 5 string pairs are meant to be combined into 2 paragraphs, // 1+3+4 and 2+3+5. make sure your translation also does. - {"* The integrity of the information stored in your keystore *", - "* \u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u4fdd\u5b58\u3055\u308c\u305f\u60c5\u5831\u306e\u5b8c\u5168\u6027\u306f\u691c\u8a3c\u3055\u308c\u3066 *"}, - {"* The integrity of the information stored in the srckeystore*", - "* \u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u4fdd\u5b58\u3055\u308c\u305f\u60c5\u5831\u306e\u5b8c\u5168\u6027*"}, - {"* has NOT been verified! In order to verify its integrity, *", - "* \u3044\u307e\u305b\u3093! \u5b8c\u5168\u6027\u3092\u691c\u8a3c\u3059\u308b\u306b\u306f\u3001\u30ad\u30fc\u30b9\u30c8\u30a2\u306e *"}, - {"* you must provide your keystore password. *", - "* \u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 *"}, - {"* you must provide the srckeystore password. *", - "* \u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 *"}, + {".The.integrity.of.the.information.stored.in.your.keystore.", + "* \u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u4FDD\u5B58\u3055\u308C\u305F\u60C5\u5831\u306E\u6574\u5408\u6027 *"}, + {".The.integrity.of.the.information.stored.in.the.srckeystore.", + "* \u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u4FDD\u5B58\u3055\u308C\u305F\u60C5\u5831\u306E\u5B8C\u5168\u6027 *"}, + {".has.NOT.been.verified.In.order.to.verify.its.integrity.", + "* \u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u6574\u5408\u6027\u3092\u691C\u8A3C\u3059\u308B\u306B\u306F *"}, + {".you.must.provide.your.keystore.password.", + "* \u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 *"}, + {".you.must.provide.the.srckeystore.password.", + "* \u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 *"}, - {"Certificate reply does not contain public key for ", - "\u8a3c\u660e\u66f8\u5fdc\u7b54\u306b\u306f\u3001<{0}> \u306e\u516c\u958b\u9375\u306f\u542b\u307e\u308c\u307e\u305b\u3093\u3002"}, - {"Incomplete certificate chain in reply", - "\u5fdc\u7b54\u3057\u305f\u8a3c\u660e\u9023\u9396\u306f\u4e0d\u5b8c\u5168\u3067\u3059\u3002"}, - {"Certificate chain in reply does not verify: ", - "\u5fdc\u7b54\u3057\u305f\u8a3c\u660e\u9023\u9396\u306f\u691c\u8a3c\u3055\u308c\u3066\u3044\u307e\u305b\u3093: "}, - {"Top-level certificate in reply:\n", - "\u5fdc\u7b54\u3057\u305f\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u306e\u8a3c\u660e\u66f8:\n"}, - {"... is not trusted. ", "... \u306f\u4fe1\u983c\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 "}, - {"Install reply anyway? [no]: ", "\u5fdc\u7b54\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u304b? [no]: "}, - {"NO", "NO"}, - {"Public keys in reply and keystore don't match", - "\u5fdc\u7b54\u3057\u305f\u516c\u958b\u9375\u3068\u30ad\u30fc\u30b9\u30c8\u30a2\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002"}, - {"Certificate reply and certificate in keystore are identical", - "\u8a3c\u660e\u66f8\u5fdc\u7b54\u3068\u30ad\u30fc\u30b9\u30c8\u30a2\u5185\u306e\u8a3c\u660e\u66f8\u304c\u540c\u3058\u3067\u3059\u3002"}, - {"Failed to establish chain from reply", - "\u5fdc\u7b54\u304b\u3089\u9023\u9396\u3092\u78ba\u7acb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002"}, + {"Certificate.reply.does.not.contain.public.key.for.alias.", + "\u8A3C\u660E\u66F8\u5FDC\u7B54\u306B\u306F\u3001<{0}>\u306E\u516C\u958B\u9375\u306F\u542B\u307E\u308C\u307E\u305B\u3093"}, + {"Incomplete.certificate.chain.in.reply", + "\u5FDC\u7B54\u3057\u305F\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u306F\u4E0D\u5B8C\u5168\u3067\u3059"}, + {"Certificate.chain.in.reply.does.not.verify.", + "\u5FDC\u7B54\u3057\u305F\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u306F\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093: "}, + {"Top.level.certificate.in.reply.", + "\u5FDC\u7B54\u3057\u305F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u8A3C\u660E\u66F8:\n"}, + {".is.not.trusted.", "... \u306F\u4FE1\u983C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 "}, + {"Install.reply.anyway.no.", "\u5FDC\u7B54\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\u3002[\u3044\u3044\u3048]: "}, + {"NO", "\u3044\u3044\u3048"}, + {"Public.keys.in.reply.and.keystore.don.t.match", + "\u5FDC\u7B54\u3057\u305F\u516C\u958B\u9375\u3068\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093"}, + {"Certificate.reply.and.certificate.in.keystore.are.identical", + "\u8A3C\u660E\u66F8\u5FDC\u7B54\u3068\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306E\u8A3C\u660E\u66F8\u304C\u540C\u3058\u3067\u3059"}, + {"Failed.to.establish.chain.from.reply", + "\u5FDC\u7B54\u304B\u3089\u9023\u9396\u3092\u78BA\u7ACB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F"}, {"n", "n"}, - {"Wrong answer, try again", "\u5fdc\u7b54\u304c\u9593\u9055\u3063\u3066\u3044\u307e\u3059\u3002\u3082\u3046\u4e00\u5ea6\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Secret key not generated, alias already exists", - "\u79d8\u5bc6\u9375\u306f\u751f\u6210\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u5225\u540d <{0}> \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059"}, - {"Please provide -keysize for secret key generation", - "\u79d8\u5bc6\u9375\u306e\u751f\u6210\u6642\u306b\u306f -keysize \u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"}, - {"keytool usage:\n", "keytool \u306e\u4f7f\u3044\u65b9:\n"}, + {"Wrong.answer.try.again", "\u5FDC\u7B54\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059\u3002\u3082\u3046\u4E00\u5EA6\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Secret.key.not.generated.alias.alias.already.exists", + "\u79D8\u5BC6\u9375\u306F\u751F\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"}, + {"Please.provide.keysize.for.secret.key.generation", + "\u79D8\u5BC6\u9375\u306E\u751F\u6210\u6642\u306B\u306F -keysize\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"}, - {"Extensions: ", "\u62e1\u5f35: "}, - - {"-certreq [-v] [-protected]", - "-certreq [-v] [-protected]"}, - {"\t [-alias ] [-sigalg ]", - "\t [-alias ] [-sigalg ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - {"\t [-keystore ] [-storepass ]", - "\t [-keystore ] [-storepass ]"}, - {"\t [-storetype ] [-providername ]", - "\t [-storetype ] [-providername ]"}, - {"\t [-providerclass [-providerarg ]] ...", - "\t [-providerclass [-providerarg ]] ..."}, - {"\t [-providerpath ]", - "\t [-providerpath ]"}, - {"-delete [-v] [-protected] -alias ", - "-delete [-v] [-protected] -alias "}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-export [-v] [-rfc] [-protected]", - // "-export [-v] [-rfc] [-protected]"}, - {"-exportcert [-v] [-rfc] [-protected]", - "-exportcert [-v] [-rfc] [-protected]"}, - {"\t [-alias ] [-file ]", - "\t [-alias ] [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-genkey [-v] [-protected]", - // "-genkey [-v] [-protected]"}, - {"-genkeypair [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-keyalg ] [-keysize ]", - "\t [-keyalg ] [-keysize ]"}, - {"\t [-sigalg ] [-dname ]", - "\t [-sigalg ] [-dname ]"}, - {"\t [-validity ] [-keypass ]", - "\t [-validity ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-genseckey [-v] [-protected]", - "-genseckey [-v] [-protected]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-help", "-help"}, - //{"-identitydb [-v] [-protected]", - // "-identitydb [-v] [-protected]"}, - //{"\t [-file ]", "\t [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-import [-v] [-noprompt] [-trustcacerts] [-protected]", - // "-import [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"-importcert [-v] [-noprompt] [-trustcacerts] [-protected]", - "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-alias ] [-keypass ]", - "\t [-alias ] [-keypass ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-importkeystore [-v] ", - "-importkeystore [-v] "}, - {"\t [-srckeystore ] [-destkeystore ]", - "\t [-srckeystore ] [-destkeystore ]"}, - {"\t [-srcstoretype ] [-deststoretype ]", - "\t [-srcstoretype ] [-deststoretype ]"}, - {"\t [-srcprotected] [-destprotected]", - "\t [-srcprotected] [-destprotected]"}, - {"\t [-srcstorepass ] [-deststorepass ]", - "\t [-srcstorepass ] [-deststorepass ]"}, - {"\t [-srcprovidername ]\n\t [-destprovidername ]", // \u3053\u306e\u884c\u306f\u9577\u3059\u304e\u307e\u3059\u30022 \u884c\u306b\u5206\u5272\u3057\u3066\u304f\u3060\u3055\u3044 - "\t [-srcprovidername ]\n\t [-destprovidername ]"}, - {"\t [-srcalias [-destalias ]", - "\t [-srcalias [-destalias ]"}, - {"\t [-srckeypass ] [-destkeypass ]]", - "\t [-srckeypass ] [-destkeypass ]]"}, - {"\t [-noprompt]", "\t [-noprompt]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-changealias [-v] [-protected] -alias -destalias ", - "-changealias [-v] [-protected] -alias -destalias "}, - {"\t [-keypass ]", "\t [-keypass ]"}, - - //{"-keyclone [-v] [-protected]", - // "-keyclone [-v] [-protected]"}, - //{"\t [-alias ] -dest ", - // "\t [-alias ] -dest "}, - //{"\t [-keypass ] [-new ]", - // "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-keypasswd [-v] [-alias ]", - "-keypasswd [-v] [-alias ]"}, - {"\t [-keypass ] [-new ]", - "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-list [-v | -rfc] [-protected]", - "-list [-v | -rfc] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-printcert [-v] [-file ]", - "-printcert [-v] [-file ]"}, - - //{"-selfcert [-v] [-protected]", - // "-selfcert [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - //{"\t [-dname ] [-validity ]", - // "\t [-dname ] [-validity ]"}, - //{"\t [-keypass ] [-sigalg ]", - // "\t [-keypass ] [-sigalg ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-storepasswd [-v] [-new ]", - "-storepasswd [-v] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ + {"Extensions.", "\u62E1\u5F35: "}, + {".Empty.value.", "(\u7A7A\u306E\u5024)"}, + {"Extension.Request.", "\u62E1\u5F35\u30EA\u30AF\u30A8\u30B9\u30C8:"}, + {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.", + "PKCS #10\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8(\u30D0\u30FC\u30B8\u30E7\u30F31.0)\n\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8: %s\n\u516C\u958B\u9375: %s \u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 %s \u30AD\u30FC\n"}, + {"Unknown.keyUsage.type.", "\u4E0D\u660E\u306AkeyUsage\u30BF\u30A4\u30D7: "}, + {"Unknown.extendedkeyUsage.type.", "\u4E0D\u660E\u306AextendedkeyUsage\u30BF\u30A4\u30D7: "}, + {"Unknown.AccessDescription.type.", "\u4E0D\u660E\u306AAccessDescription\u30BF\u30A4\u30D7: "}, + {"Unrecognized.GeneralName.type.", "\u8A8D\u8B58\u3055\u308C\u306A\u3044GeneralName\u30BF\u30A4\u30D7: "}, + {"This.extension.cannot.be.marked.as.critical.", + "\u3053\u306E\u62E1\u5F35\u306F\u30AF\u30EA\u30C6\u30A3\u30AB\u30EB\u3068\u3057\u3066\u30DE\u30FC\u30AF\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3002 "}, + {"Odd.number.of.hex.digits.found.", "\u5947\u6570\u306E16\u9032\u6570\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F: "}, + {"Unknown.extension.type.", "\u4E0D\u660E\u306A\u62E1\u5F35\u30BF\u30A4\u30D7: "}, + {"command.{0}.is.ambiguous.", "\u30B3\u30DE\u30F3\u30C9{0}\u306F\u3042\u3044\u307E\u3044\u3067\u3059:"}, // policytool - {"Warning: A public key for alias 'signers[i]' does not exist. Make sure a KeyStore is properly configured.", - "\u8b66\u544a: \u5225\u540d {0} \u306e\u516c\u958b\u9375\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u30ad\u30fc\u30b9\u30c8\u30a2\u304c\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Warning: Class not found: class", "\u8b66\u544a: \u30af\u30e9\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"}, - {"Warning: Invalid argument(s) for constructor: arg", - "\u8b66\u544a: \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u5f15\u6570\u304c\u7121\u52b9\u3067\u3059: {0}"}, - {"Illegal Principal Type: type", "\u4e0d\u6b63\u306a\u4e3b\u4f53\u306e\u30bf\u30a4\u30d7: {0}"}, - {"Illegal option: option", "\u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3: {0}"}, - {"Usage: policytool [options]", "\u4f7f\u3044\u65b9: policytool [options]"}, - {" [-file ] policy file location", - " [-file ] \u30dd\u30ea\u30b7\u30fc\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\u30a8\u30f3\u30c8\u30ea\u306e\u8ffd\u52a0"}, - {"Edit Policy Entry", "\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea\u306e\u7de8\u96c6"}, - {"Remove Policy Entry", "\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea\u306e\u524a\u9664"}, - {"Edit", "\u7de8\u96c6"}, - {"Retain", "\u4fdd\u6301"}, + {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.", + "\u8B66\u544A: \u5225\u540D{0}\u306E\u516C\u958B\u9375\u304C\u5B58\u5728\u3057\u307E\u305B\u3093\u3002\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u6B63\u3057\u304F\u69CB\u6210\u3055\u308C\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"Warning.Class.not.found.class", "\u8B66\u544A: \u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}"}, + {"Warning.Invalid.argument.s.for.constructor.arg", + "\u8B66\u544A: \u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059: {0}"}, + {"Illegal.Principal.Type.type", "\u4E0D\u6B63\u306A\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u30BF\u30A4\u30D7: {0}"}, + {"Illegal.option.option", "\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"}, + {"Usage.policytool.options.", "\u4F7F\u7528\u65B9\u6CD5: policytool [options]"}, + {".file.file.policy.file.location", + " [-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"}, + {"Retain", "\u4FDD\u6301"}, - {"Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name.", - "Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name."}, + {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes", + "\u8B66\u544A: \u30D5\u30A1\u30A4\u30EB\u540D\u306B\u30A8\u30B9\u30B1\u30FC\u30D7\u3055\u308C\u305F\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u6587\u5B57\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u6587\u5B57\u3092\u30A8\u30B9\u30B1\u30FC\u30D7\u3059\u308B\u5FC5\u8981\u306F\u3042\u308A\u307E\u305B\u3093(\u30C4\u30FC\u30EB\u306F\u30DD\u30EA\u30B7\u30FC\u5185\u5BB9\u3092\u6C38\u7D9A\u30B9\u30C8\u30A2\u306B\u66F8\u304D\u8FBC\u3080\u3068\u304D\u306B\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u6587\u5B57\u3092\u30A8\u30B9\u30B1\u30FC\u30D7\u3057\u307E\u3059)\u3002\n\n\u5165\u529B\u6E08\u306E\u540D\u524D\u3092\u4FDD\u6301\u3059\u308B\u306B\u306F\u300C\u4FDD\u6301\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3001\u540D\u524D\u3092\u7DE8\u96C6\u3059\u308B\u306B\u306F\u300C\u7DE8\u96C6\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, - {"Add Public Key Alias", "\u516c\u958b\u9375\u306e\u5225\u540d\u3092\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"}, - {"Policy File:", "\u30dd\u30ea\u30b7\u30fc\u30d5\u30a1\u30a4\u30eb:"}, - {"Could not open policy file: policyFile: e.toString()", - "\u30dd\u30ea\u30b7\u30fc\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f: {0}: {1}"}, - {"Policy Tool", "Policy Tool"}, - {"Errors have occurred while opening the policy configuration. View the Warning Log for more information.", - "\u30dd\u30ea\u30b7\u30fc\u69cb\u6210\u306e\u30aa\u30fc\u30d7\u30f3\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u8a73\u7d30\u306f\u8b66\u544a\u30ed\u30b0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Error", "\u30a8\u30e9\u30fc"}, - {"OK", "\u4e86\u89e3"}, - {"Status", "\u72b6\u614b"}, - {"Warning", "\u8b66\u544a"}, - {"Permission: ", - "\u30a2\u30af\u30bb\u30b9\u6a29: "}, - {"Principal Type:", "\u4e3b\u4f53\u306e\u30bf\u30a4\u30d7:"}, - {"Principal Name:", "\u4e3b\u4f53\u306e\u540d\u524d:"}, - {"Target Name: ", - "\u30bf\u30fc\u30b2\u30c3\u30c8\u540d: "}, - {"Actions: ", - "\u30a2\u30af\u30b7\u30e7\u30f3: "}, - {"OK to overwrite existing file filename?", - "\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb {0} \u306b\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b?"}, - {"Cancel", "\u53d6\u6d88\u3057"}, - {"CodeBase:", "CodeBase:"}, - {"SignedBy:", "SignedBy:"}, - {"Add Principal", "\u4e3b\u4f53\u306e\u8ffd\u52a0"}, - {"Edit Principal", "\u4e3b\u4f53\u306e\u7de8\u96c6"}, - {"Remove Principal", "\u4e3b\u4f53\u306e\u524a\u9664"}, - {"Principals:", "\u4e3b\u4f53:"}, - {" 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"}, - {"Done", "\u5b8c\u4e86"}, - {"KeyStore URL:", "\u30ad\u30fc\u30b9\u30c8\u30a2 URL:"}, - {"KeyStore Type:", "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30bf\u30a4\u30d7:"}, - {"KeyStore Provider:", "\u30ad\u30fc\u30b9\u30c8\u30a2\u30d7\u30ed\u30d0\u30a4\u30c0:"}, - {"KeyStore Password URL:", "\u30ad\u30fc\u30b9\u30c8\u30a2\u30d1\u30b9\u30ef\u30fc\u30c9 URL:"}, - {"Principals", "\u4e3b\u4f53"}, - {" Edit Principal:", " \u4e3b\u4f53\u306e\u7de8\u96c6:"}, - {" Add New Principal:", " \u4e3b\u4f53\u306e\u65b0\u898f\u8ffd\u52a0:"}, - {"Permissions", "\u30a2\u30af\u30bb\u30b9\u6a29"}, - {" Edit Permission:", " \u30a2\u30af\u30bb\u30b9\u6a29\u306e\u7de8\u96c6:"}, - {" Add New Permission:", " \u65b0\u898f\u30a2\u30af\u30bb\u30b9\u6a29\u306e\u8ffd\u52a0:"}, - {"Signed By:", "\u7f72\u540d\u8005:"}, - {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name", - "\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u540d\u306e\u306a\u3044\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u30af\u30e9\u30b9\u3092\u4f7f\u3063\u3066\u4e3b\u4f53\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"Cannot Specify Principal without a Name", - "\u540d\u524d\u3092\u4f7f\u308f\u305a\u306b\u4e3b\u4f53\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"Permission and Target Name must have a value", - "\u30a2\u30af\u30bb\u30b9\u6a29\u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u540d\u306f\u3001\u5024\u3092\u4fdd\u6301\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}, - {"Remove this Policy Entry?", "\u3053\u306e\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea\u3092\u524a\u9664\u3057\u307e\u3059\u304b?"}, - {"Overwrite File", "\u30d5\u30a1\u30a4\u30eb\u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002"}, - {"Policy successfully written to filename", - "\u30dd\u30ea\u30b7\u30fc\u306e {0} \u3078\u306e\u66f8\u304d\u8fbc\u307f\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002"}, - {"null filename", "\u30d5\u30a1\u30a4\u30eb\u540d\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Save changes?", "\u5909\u66f4\u3092\u4fdd\u5b58\u3057\u307e\u3059\u304b?"}, - {"Yes", "\u306f\u3044"}, + {"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"}, + {"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}"}, + {"Policy.Tool", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30C4\u30FC\u30EB"}, + {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.", + "\u30DD\u30EA\u30B7\u30FC\u69CB\u6210\u3092\u958B\u304F\u3068\u304D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u8A73\u7D30\u306F\u8B66\u544A\u30ED\u30B0\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, + {"Error", "\u30A8\u30E9\u30FC"}, + {"OK", "OK"}, + {"Status", "\u72B6\u614B"}, + {"Warning", "\u8B66\u544A"}, + {"Permission.", + "\u30A2\u30AF\u30BB\u30B9\u6A29: "}, + {"Principal.Type.", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u30BF\u30A4\u30D7:"}, + {"Principal.Name.", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u540D\u524D:"}, + {"Target.Name.", + "\u30BF\u30FC\u30B2\u30C3\u30C8\u540D: "}, + {"Actions.", + "\u30A2\u30AF\u30B7\u30E7\u30F3: "}, + {"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"}, + {"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:"}, + {"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:"}, + {"Permissions", "\u30A2\u30AF\u30BB\u30B9\u6A29"}, + {".Edit.Permission.", " \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u7DE8\u96C6:"}, + {".Add.New.Permission.", " \u65B0\u898F\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0:"}, + {"Signed.By.", "\u7F72\u540D\u8005:"}, + {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name", + "\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u540D\u306E\u306A\u3044\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u30FB\u30AF\u30E9\u30B9\u3092\u4F7F\u7528\u3057\u3066\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"}, + {"Cannot.Specify.Principal.without.a.Name", + "\u540D\u524D\u3092\u4F7F\u7528\u305B\u305A\u306B\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"}, + {"Permission.and.Target.Name.must.have.a.value", + "\u30A2\u30AF\u30BB\u30B9\u6A29\u3068\u30BF\u30FC\u30B2\u30C3\u30C8\u540D\u306F\u3001\u5024\u3092\u4FDD\u6301\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"Remove.this.Policy.Entry.", "\u3053\u306E\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u3092\u524A\u9664\u3057\u307E\u3059\u304B\u3002"}, + {"Overwrite.File", "\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059"}, + {"Policy.successfully.written.to.filename", + "\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"}, - {"Policy Entry", "\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea"}, - {"Save Changes", "\u5909\u66f4\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002"}, - {"No Policy Entry selected", "\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"Unable to open KeyStore: ex.toString()", - "\u30ad\u30fc\u30b9\u30c8\u30a2 {0} \u3092\u958b\u3051\u307e\u305b\u3093"}, - {"No principal selected", "\u4e3b\u4f53\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"No permission selected", "\u30a2\u30af\u30bb\u30b9\u6a29\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"name", "\u540d\u524d"}, - {"configuration type", "\u8a2d\u5b9a\u30bf\u30a4\u30d7"}, - {"environment variable name", "\u74b0\u5883\u5909\u6570\u540d"}, - {"library name", "\u30e9\u30a4\u30d6\u30e9\u30ea\u540d"}, - {"package name", "\u30d1\u30c3\u30b1\u30fc\u30b8\u540d"}, - {"policy type", "\u30dd\u30ea\u30b7\u30fc\u30bf\u30a4\u30d7"}, - {"property name", "\u30d7\u30ed\u30d1\u30c6\u30a3\u540d"}, - {"provider name", "\u30d7\u30ed\u30d0\u30a4\u30c0\u540d"}, - {"Principal List", "\u4e3b\u4f53\u306e\u30ea\u30b9\u30c8"}, - {"Permission List", "\u30a2\u30af\u30bb\u30b9\u6a29\u306e\u30ea\u30b9\u30c8"}, - {"Code Base", "\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9"}, - {"KeyStore U R L:", "\u30ad\u30fc\u30b9\u30c8\u30a2 U R L:"}, - {"KeyStore Password U R L:", "\u30ad\u30fc\u30b9\u30c8\u30a2\u30d1\u30b9\u30ef\u30fc\u30c9 U R L:"}, + {"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"}, + {"Unable.to.open.KeyStore.ex.toString.", + "\u30AD\u30FC\u30B9\u30C8\u30A2{0}\u3092\u958B\u3051\u307E\u305B\u3093"}, + {"No.principal.selected", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"No.permission.selected", "\u30A2\u30AF\u30BB\u30B9\u6A29\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"name", "\u540D\u524D"}, + {"configuration.type", "\u69CB\u6210\u30BF\u30A4\u30D7"}, + {"environment.variable.name", "\u74B0\u5883\u5909\u6570\u540D"}, + {"library.name", "\u30E9\u30A4\u30D6\u30E9\u30EA\u540D"}, + {"package.name", "\u30D1\u30C3\u30B1\u30FC\u30B8\u540D"}, + {"policy.type", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30BF\u30A4\u30D7"}, + {"property.name", "\u30D7\u30ED\u30D1\u30C6\u30A3\u540D"}, + {"Principal.List", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u30EA\u30B9\u30C8"}, + {"Permission.List", "\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u30EA\u30B9\u30C8"}, + {"Code.Base", "\u30B3\u30FC\u30C9\u30FB\u30D9\u30FC\u30B9"}, + {"KeyStore.U.R.L.", "\u30AD\u30FC\u30B9\u30C8\u30A2U R L:"}, + {"KeyStore.Password.U.R.L.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9U R L:"}, // javax.security.auth.PrivateCredentialPermission - {"invalid null input(s)", "null \u306e\u5165\u529b\u306f\u7121\u52b9\u3067\u3059\u3002"}, - {"actions can only be 'read'", "\u30a2\u30af\u30b7\u30e7\u30f3\u306f '\u8aad\u307f\u8fbc\u307f' \u306e\u307f\u53ef\u80fd\u3067\u3059\u3002"}, - {"permission name [name] syntax invalid: ", - "\u30a2\u30af\u30bb\u30b9\u6a29\u540d [{0}] \u306e\u69cb\u6587\u304c\u7121\u52b9\u3067\u3059: "}, - {"Credential Class not followed by a Principal Class and Name", - "Credential \u30af\u30e9\u30b9\u306e\u6b21\u306b Principal \u30af\u30e9\u30b9\u304a\u3088\u3073\u540d\u524d\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Principal Class not followed by a Principal Name", - "Principal \u30af\u30e9\u30b9\u306e\u6b21\u306b\u4e3b\u4f53\u540d\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Principal Name must be surrounded by quotes", - "\u4e3b\u4f53\u540d\u306f\u5f15\u7528\u7b26\u3067\u56f2\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}, - {"Principal Name missing end quote", - "\u4e3b\u4f53\u540d\u306e\u6700\u5f8c\u306b\u5f15\u7528\u7b26\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value", - "\u4e3b\u4f53\u540d\u304c\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 (*) \u5024\u3067\u306a\u3044\u5834\u5408\u3001PrivateCredentialPermission \u306e Principal \u30af\u30e9\u30b9\u3092\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 (*) \u5024\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name", - "CredOwner:\n\tPrincipal \u30af\u30e9\u30b9 = {0}\n\t\u4e3b\u4f53\u540d = {1}"}, + {"invalid.null.input.s.", "null\u306E\u5165\u529B\u306F\u7121\u52B9\u3067\u3059"}, + {"actions.can.only.be.read.", "\u30A2\u30AF\u30B7\u30E7\u30F3\u306F'\u8AAD\u8FBC\u307F'\u306E\u307F\u53EF\u80FD\u3067\u3059"}, + {"permission.name.name.syntax.invalid.", + "\u30A2\u30AF\u30BB\u30B9\u6A29\u540D[{0}]\u306E\u69CB\u6587\u304C\u7121\u52B9\u3067\u3059: "}, + {"Credential.Class.not.followed.by.a.Principal.Class.and.Name", + "Credential\u30AF\u30E9\u30B9\u306E\u6B21\u306BPrincipal\u30AF\u30E9\u30B9\u304A\u3088\u3073\u540D\u524D\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"Principal.Class.not.followed.by.a.Principal.Name", + "Principal\u30AF\u30E9\u30B9\u306E\u6B21\u306B\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u540D\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"Principal.Name.must.be.surrounded.by.quotes", + "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u540D\u306F\u5F15\u7528\u7B26\u3067\u56F2\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"Principal.Name.missing.end.quote", + "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u540D\u306E\u6700\u5F8C\u306B\u5F15\u7528\u7B26\u304C\u3042\u308A\u307E\u305B\u3093"}, + {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value", + "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u540D\u304C\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9(*)\u5024\u3067\u306A\u3044\u5834\u5408\u3001PrivateCredentialPermission\u306EPrincipal\u30AF\u30E9\u30B9\u3092\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9(*)\u5024\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"}, + {"CredOwner.Principal.Class.class.Principal.Name.name", + "CredOwner:\n\tPrincipal\u30AF\u30E9\u30B9={0}\n\t\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u540D={1}"}, // javax.security.auth.x500 - {"provided null name", "\u7a7a\u306e\u540d\u524d\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"provided null keyword map", "null \u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30de\u30c3\u30d7\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f"}, - {"provided null OID map", "null \u306e OID \u30de\u30c3\u30d7\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f"}, + {"provided.null.name", "null\u306E\u540D\u524D\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"}, + {"provided.null.keyword.map", "null\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u30FB\u30DE\u30C3\u30D7\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"}, + {"provided.null.OID.map", "null\u306EOID\u30DE\u30C3\u30D7\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"}, // javax.security.auth.Subject - {"invalid null AccessControlContext provided", - "\u7121\u52b9\u306a null AccessControlContext \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"invalid null action provided", "\u7121\u52b9\u306a null \u30a2\u30af\u30b7\u30e7\u30f3\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"invalid null Class provided", "\u7121\u52b9\u306a null \u30af\u30e9\u30b9\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"Subject:\n", "\u30b5\u30d6\u30b8\u30a7\u30af\u30c8:\n"}, - {"\tPrincipal: ", "\t\u4e3b\u4f53: "}, - {"\tPublic Credential: ", "\t\u516c\u958b\u8cc7\u683c: "}, - {"\tPrivate Credentials inaccessible\n", - "\t\u975e\u516c\u958b\u8cc7\u683c\u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\n"}, - {"\tPrivate Credential: ", "\t\u975e\u516c\u958b\u8cc7\u683c: "}, - {"\tPrivate Credential inaccessible\n", - "\t\u975e\u516c\u958b\u8cc7\u683c\u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\n"}, - {"Subject is read-only", "\u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3067\u3059\u3002"}, - {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set", - "java.security.Principal \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u306f\u306a\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u3001\u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4e3b\u4f53\u30bb\u30c3\u30c8\u306b\u8ffd\u52a0\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002"}, - {"attempting to add an object which is not an instance of class", - "{0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u306f\u306a\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8ffd\u52a0\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002"}, + {"invalid.null.AccessControlContext.provided", + "\u7121\u52B9\u306Anull AccessControlContext\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"}, + {"invalid.null.action.provided", "\u7121\u52B9\u306Anull\u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"}, + {"invalid.null.Class.provided", "\u7121\u52B9\u306Anull\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"}, + {"Subject.", "\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8:\n"}, + {".Principal.", "\t\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB: "}, + {".Public.Credential.", "\t\u516C\u958B\u8CC7\u683C: "}, + {".Private.Credentials.inaccessible.", + "\t\u975E\u516C\u958B\u8CC7\u683C\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n"}, + {".Private.Credential.", "\t\u975E\u516C\u958B\u8CC7\u683C: "}, + {".Private.Credential.inaccessible.", + "\t\u975E\u516C\u958B\u8CC7\u683C\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n"}, + {"Subject.is.read.only", "\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u8AAD\u53D6\u308A\u5C02\u7528\u3067\u3059"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set", + "java.security.Principal\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3067\u306F\u306A\u3044\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u3001\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u30FB\u30BB\u30C3\u30C8\u306B\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.class", + "{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3067\u306F\u306A\u3044\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F"}, // javax.security.auth.login.AppConfigurationEntry - {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "}, + {"LoginModuleControlFlag.", "LoginModuleControlFlag: "}, // javax.security.auth.login.LoginContext - {"Invalid null input: name", "\u7121\u52b9\u306a null \u5165\u529b: \u540d\u524d"}, - {"No LoginModules configured for name", - "{0} \u7528\u306b\u69cb\u6210\u3055\u308c\u305f LoginModules \u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"invalid null Subject provided", "\u7121\u52b9\u306a null \u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"invalid null CallbackHandler provided", - "\u7121\u52b9\u306a null CallbackHandler \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"null subject - logout called before login", - "null \u30b5\u30d6\u30b8\u30a7\u30af\u30c8 - \u30ed\u30b0\u30a4\u30f3\u3059\u308b\u524d\u306b\u30ed\u30b0\u30a2\u30a6\u30c8\u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor", - "LoginModule {0} \u306f\u5f15\u6570\u3092\u53d6\u3089\u306a\u3044\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u6307\u5b9a\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"unable to instantiate LoginModule", - "LoginModule \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"unable to instantiate LoginModule: ", - "LoginModule \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093: "}, - {"unable to find LoginModule class: ", - "LoginModule \u30af\u30e9\u30b9\u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093: "}, - {"unable to access LoginModule: ", - "LoginModule \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093: "}, - {"Login Failure: all modules ignored", - "\u30ed\u30b0\u30a4\u30f3\u5931\u6557: \u3059\u3079\u3066\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002"}, + {"Invalid.null.input.name", "\u7121\u52B9\u306Anull\u5165\u529B: \u540D\u524D"}, + {"No.LoginModules.configured.for.name", + "{0}\u7528\u306B\u69CB\u6210\u3055\u308C\u305FLoginModules\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"invalid.null.Subject.provided", "\u7121\u52B9\u306Anull\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"}, + {"invalid.null.CallbackHandler.provided", + "\u7121\u52B9\u306Anull CallbackHandler\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"}, + {"null.subject.logout.called.before.login", + "null\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8 - \u30ED\u30B0\u30A4\u30F3\u3059\u308B\u524D\u306B\u30ED\u30B0\u30A2\u30A6\u30C8\u304C\u547C\u3073\u51FA\u3055\u308C\u307E\u3057\u305F"}, + {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor", + "LoginModule {0}\u306F\u5F15\u6570\u3092\u53D6\u3089\u306A\u3044\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u6307\u5B9A\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093"}, + {"unable.to.instantiate.LoginModule", + "LoginModule\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093"}, + {"unable.to.instantiate.LoginModule.", + "LoginModule\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093: "}, + {"unable.to.find.LoginModule.class.", + "LoginModule\u30AF\u30E9\u30B9\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093: "}, + {"unable.to.access.LoginModule.", + "LoginModule\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093: "}, + {"Login.Failure.all.modules.ignored", + "\u30ED\u30B0\u30A4\u30F3\u5931\u6557: \u3059\u3079\u3066\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u7121\u8996\u3055\u308C\u307E\u3059"}, // sun.security.provider.PolicyFile - {"java.security.policy: error parsing policy:\n\tmessage", - "java.security.policy: {0} \u306e\u69cb\u6587\u89e3\u6790\u30a8\u30e9\u30fc:\n\t{1}"}, - {"java.security.policy: error adding Permission, perm:\n\tmessage", - "java.security.policy: \u30a2\u30af\u30bb\u30b9\u6a29 {0} \u306e\u8ffd\u52a0\u30a8\u30e9\u30fc:\n\t{1}"}, - {"java.security.policy: error adding Entry:\n\tmessage", - "java.security.policy: \u30a8\u30f3\u30c8\u30ea\u306e\u8ffd\u52a0\u30a8\u30e9\u30fc:\n\t{0}"}, - {"alias name not provided (pe.name)", "\u5225\u540d\u306e\u6307\u5b9a\u304c\u3042\u308a\u307e\u305b\u3093 ({0})"}, - {"unable to perform substitution on alias, suffix", - "\u5225\u540d {0} \u306b\u5bfe\u3057\u3066\u7f6e\u63db\u64cd\u4f5c\u304c\u3067\u304d\u307e\u305b\u3093"}, - {"substitution value, prefix, unsupported", - "\u7f6e\u63db\u5024 {0} \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"(", "("}, - {")", ")"}, - {"type can't be null","\u5165\u529b\u3092 null \u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"}, + {"java.security.policy.error.parsing.policy.message", + "java.security.policy: {0}\u306E\u69CB\u6587\u89E3\u6790\u30A8\u30E9\u30FC:\n\t{1}"}, + {"java.security.policy.error.adding.Permission.perm.message", + "java.security.policy: \u30A2\u30AF\u30BB\u30B9\u6A29{0}\u306E\u8FFD\u52A0\u30A8\u30E9\u30FC:\n\t{1}"}, + {"java.security.policy.error.adding.Entry.message", + "java.security.policy: \u30A8\u30F3\u30C8\u30EA\u306E\u8FFD\u52A0\u30A8\u30E9\u30FC:\n\t{0}"}, + {"alias.name.not.provided.pe.name.", "\u5225\u540D\u306E\u6307\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093({0})"}, + {"unable.to.perform.substitution.on.alias.suffix", + "\u5225\u540D{0}\u306B\u5BFE\u3057\u3066\u7F6E\u63DB\u64CD\u4F5C\u304C\u3067\u304D\u307E\u305B\u3093"}, + {"substitution.value.prefix.unsupported", + "\u7F6E\u63DB\u5024{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"type.can.t.be.null","\u5165\u529B\u3092null\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"}, // sun.security.provider.PolicyParser - {"keystorePasswordURL can not be specified without also specifying keystore", - "\u30ad\u30fc\u30b9\u30c8\u30a2\u3092\u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u3001keystorePasswordURL \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"expected keystore type", "\u671f\u5f85\u3055\u308c\u305f\u30ad\u30fc\u30b9\u30c8\u30a2\u30bf\u30a4\u30d7"}, - {"expected keystore provider", "\u671f\u5f85\u3055\u308c\u305f\u30ad\u30fc\u30b9\u30c8\u30a2\u30d7\u30ed\u30d0\u30a4\u30c0"}, - {"multiple Codebase expressions", - "\u8907\u6570\u306e Codebase \u5f0f"}, - {"multiple SignedBy expressions","\u8907\u6570\u306e SignedBy \u5f0f"}, - {"SignedBy has empty alias","SignedBy \u306f\u7a7a\u306e\u5225\u540d\u3092\u4fdd\u6301\u3057\u307e\u3059\u3002"}, - {"can not specify Principal with a wildcard class without a wildcard name", - "\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u540d\u306e\u306a\u3044\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u30af\u30e9\u30b9\u3092\u4f7f\u3063\u3066\u3001\u4e3b\u4f53\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"expected codeBase or SignedBy or Principal", - "\u671f\u5f85\u3055\u308c\u305f codeBase\u3001SignedBy\u3001\u307e\u305f\u306f Principal"}, - {"expected permission entry", "\u671f\u5f85\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u6a29\u30a8\u30f3\u30c8\u30ea"}, - {"number ", "\u6570 "}, - {"expected [expect], read [end of file]", - "[{0}] \u3067\u306f\u306a\u304f [\u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a] \u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3057\u305f\u3002"}, - {"expected [;], read [end of file]", - "[;] \u3067\u306f\u306a\u304f [\u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a] \u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3057\u305f\u3002"}, - {"line number: msg", "\u884c {0}: {1}"}, - {"line number: expected [expect], found [actual]", - "\u884c {0}: [{1}] \u3067\u306f\u306a\u304f [{2}] \u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"}, - {"null principalClass or principalName", - "null \u306e principalClass \u307e\u305f\u306f principalName"}, + {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore", + "\u30AD\u30FC\u30B9\u30C8\u30A2\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u3001keystorePasswordURL\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"}, + {"expected.keystore.type", "\u4E88\u60F3\u3055\u308C\u305F\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30BF\u30A4\u30D7"}, + {"expected.keystore.provider", "\u4E88\u60F3\u3055\u308C\u305F\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0"}, + {"multiple.Codebase.expressions", + "\u8907\u6570\u306ECodebase\u5F0F"}, + {"multiple.SignedBy.expressions","\u8907\u6570\u306ESignedBy\u5F0F"}, + {"SignedBy.has.empty.alias","SignedBy\u306F\u7A7A\u306E\u5225\u540D\u3092\u4FDD\u6301\u3057\u307E\u3059"}, + {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name", + "\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u540D\u306E\u306A\u3044\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u30FB\u30AF\u30E9\u30B9\u3092\u4F7F\u7528\u3057\u3066\u3001\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"}, + {"expected.codeBase.or.SignedBy.or.Principal", + "\u4E88\u60F3\u3055\u308C\u305FcodeBase\u3001SignedBy\u307E\u305F\u306FPrincipal"}, + {"expected.permission.entry", "\u4E88\u60F3\u3055\u308C\u305F\u30A2\u30AF\u30BB\u30B9\u6A29\u30A8\u30F3\u30C8\u30EA"}, + {"number.", "\u6570 "}, + {"expected.expect.read.end.of.file.", + "[{0}]\u3067\u306F\u306A\u304F[\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A]\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F"}, + {"expected.read.end.of.file.", + "[;]\u3067\u306F\u306A\u304F[\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A]\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F"}, + {"line.number.msg", "\u884C{0}: {1}"}, + {"line.number.expected.expect.found.actual.", + "\u884C{0}: [{1}]\u3067\u306F\u306A\u304F[{2}]\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"}, + {"null.principalClass.or.principalName", + "null\u306EprincipalClass\u307E\u305F\u306FprincipalName"}, // sun.security.pkcs11.SunPKCS11 - {"PKCS11 Token [providerName] Password: ", - "PKCS11 \u30c8\u30fc\u30af\u30f3 [{0}] \u30d1\u30b9\u30ef\u30fc\u30c9: "}, + {"PKCS11.Token.providerName.Password.", + "PKCS11\u30C8\u30FC\u30AF\u30F3[{0}]\u30D1\u30B9\u30EF\u30FC\u30C9: "}, /* --- DEPRECATED --- */ // javax.security.auth.Policy - {"unable to instantiate Subject-based policy", - "\u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u30d9\u30fc\u30b9\u306e\u30dd\u30ea\u30b7\u30fc\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093"} + {"unable.to.instantiate.Subject.based.policy", + "\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u30FB\u30D9\u30FC\u30B9\u306E\u30DD\u30EA\u30B7\u30FC\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093"} }; @@ -648,3 +670,4 @@ public class Resources_ja extends java.util.ListResourceBundle { return contents; } } + diff --git a/jdk/src/share/classes/sun/security/util/Resources_ko.java b/jdk/src/share/classes/sun/security/util/Resources_ko.java index a2e4ecafa36..dc41e3a7ca4 100644 --- a/jdk/src/share/classes/sun/security/util/Resources_ko.java +++ b/jdk/src/share/classes/sun/security/util/Resources_ko.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -35,605 +35,627 @@ public class Resources_ko extends java.util.ListResourceBundle { private static final Object[][] contents = { // shared (from jarsigner) - {" ", " "}, - {" ", " "}, - {" ", " "}, - {", ", ", "}, + {"SPACE", " "}, + {"2SPACE", " "}, + {"6SPACE", " "}, + {"COMMA", ", "}, // shared (from keytool) - {"\n", "\n"}, - {"*******************************************", + {"NEWLINE", "\n"}, + {"STAR", "*******************************************"}, - {"*******************************************\n\n", + {"STARNN", "*******************************************\n\n"}, - // keytool - {"keytool error: ", "keytool \uc624\ub958: "}, - {"Illegal option: ", "\uc798\ubabb\ub41c \uc635\uc158: "}, - {"Try keytool -help","keytool -help \uc0ac\uc6a9"}, - {"Command option needs an argument.", "\uba85\ub839 \uc635\uc158 {0}\uc5d0 \uc778\uc218\uac00 \ud544\uc694\ud569\ub2c8\ub2e4."}, - {"Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified value.", - "\uacbd\uace0:\t \ub2e4\ub978 \uc800\uc7a5\uc18c \ubc0f \ud0a4 \uc554\ud638\ub294 PKCS12 \ud0a4 \uc800\uc7a5\uc18c\uc5d0 \ub300\ud574 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\uc790\uac00 \uc9c0\uc815\ud55c {0} \uac12\uc744 \ubb34\uc2dc\ud569\ub2c8\ub2e4."}, - {"-keystore must be NONE if -storetype is {0}", - "-storetype\uc774 {0}\uc778 \uacbd\uc6b0 -keystore\uac00 NONE\uc774\uc5b4\uc57c \ud568"}, - {"Too may retries, program terminated", - "\uc7ac\uc2dc\ub3c4 \ud69f\uc218\uac00 \ub108\ubb34 \ub9ce\uc544 \ud504\ub85c\uadf8\ub7a8\uc774 \uc885\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4."}, - {"-storepasswd and -keypasswd commands not supported if -storetype is {0}", - "-storetype\uc774 {0}\uc778 \uacbd\uc6b0 -storepasswd \ubc0f -keypasswd \uba85\ub839\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c"}, - {"-keypasswd commands not supported if -storetype is PKCS12", - "-storetype\uc774 PKCS12\uc778 \uacbd\uc6b0\uc5d0\ub294 -keypasswd \uba85\ub839\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."}, - {"-keypass and -new can not be specified if -storetype is {0}", - "-storetype\uc774 {0}\uc778 \uacbd\uc6b0 -keypass \ubc0f -new\ub97c \uc9c0\uc815\ud560 \uc218 \uc5c6\uc74c"}, - {"if -protected is specified, then -storepass, -keypass, and -new must not be specified", - "-protected\uac00 \uc9c0\uc815\ub41c \uacbd\uc6b0 -storepass, -keypass \ubc0f -new\ub294 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc544\uc57c \ud569\ub2c8\ub2e4."}, - {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified", - "-srcprotected\ub97c \uc9c0\uc815\ud55c \uacbd\uc6b0 -srcstorepass \ubc0f -srckeypass\ub97c \uc9c0\uc815\ud558\uba74 \uc548 \ub429\ub2c8\ub2e4."}, - {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified", - "\ud0a4 \uc800\uc7a5\uc18c\uac00 \uc554\ud638\ub85c \ubcf4\ud638\ub418\uc9c0 \uc54a\uc740 \uacbd\uc6b0 -storepass, -keypass \ubc0f -new\ub97c \uc9c0\uc815\ud558\uba74 \uc548 \ub428"}, - {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified", - "\uc18c\uc2a4 \ud0a4 \uc800\uc7a5\uc18c\uac00 \uc554\ud638\ub85c \ubcf4\ud638\ub418\uc9c0 \uc54a\uc740 \uacbd\uc6b0 -srcstorepass \ubc0f -srckeypass\ub97c \uc9c0\uc815\ud558\uba74 \uc548 \ub428"}, - {"Validity must be greater than zero", - "\uc720\ud6a8\uc131\uc740 0\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4."}, - {"provName not a provider", " {0}\uc740(\ub294) \uacf5\uae09\uc790\uac00 \uc544\ub2d9\ub2c8\ub2e4."}, - {"Usage error: no command provided", "\uc0ac\uc6a9\ubc95 \uc624\ub958: \uba85\ub839\uc744 \uc785\ub825\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"Usage error, is not a legal command", "\uc0ac\uc6a9\ubc95 \uc624\ub958\uc785\ub2c8\ub2e4. {0}\uc740(\ub294) \uc720\ud6a8\ud55c \uba85\ub839\uc774 \uc544\ub2d9\ub2c8\ub2e4."}, - {"Source keystore file exists, but is empty: ", "\uc18c\uc2a4 \ud0a4 \uc800\uc7a5\uc18c \ud30c\uc77c\uc774 \uc788\uc9c0\ub9cc \ube44\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. "}, - {"Please specify -srckeystore", "-srckeystore\ub97c \uc9c0\uc815\ud558\uc2ed\uc2dc\uc624."}, - {"Must not specify both -v and -rfc with 'list' command", - "'list' \uba85\ub839\uc5d0 -v\uc640 -rfc\ub97c \ubaa8\ub450 \uc9c0\uc815\ud574\uc11c\ub294 \uc548 \ub429\ub2c8\ub2e4."}, - {"Key password must be at least 6 characters", - "\ud0a4 \uc554\ud638\ub294 \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."}, - {"New password must be at least 6 characters", - "\uc0c8 \uc554\ud638\ub294 \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."}, - {"Keystore file exists, but is empty: ", - "keystore \ud30c\uc77c\uc774 \uc788\uc9c0\ub9cc \ube44\uc5b4 \uc788\uc2b5\ub2c8\ub2e4: "}, - {"Keystore file does not exist: ", - "keystore \ud30c\uc77c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4: "}, - {"Must specify destination alias", "\ub300\uc0c1 \ubcc4\uce6d\uc744 \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4."}, - {"Must specify alias", "\ubcc4\uce6d\uc744 \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4."}, - {"Keystore password must be at least 6 characters", - "Keystore \uc554\ud638\ub294 \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."}, - {"Enter keystore password: ", "keystore \uc554\ud638\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624: "}, - {"Enter source keystore password: ", "\uc18c\uc2a4 \ud0a4 \uc800\uc7a5\uc18c \uc554\ud638 \uc785\ub825: "}, - {"Enter destination keystore password: ", "\ub300\uc0c1 \ud0a4 \uc800\uc7a5\uc18c \uc554\ud638 \uc785\ub825: "}, - {"Keystore password is too short - must be at least 6 characters", - "Keystore \uc554\ud638\uac00 \ub108\ubb34 \uc9e7\uc2b5\ub2c8\ub2e4. \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."}, - {"Unknown Entry Type", "\uc54c \uc218 \uc5c6\ub294 \ud56d\ubaa9 \uc720\ud615"}, - {"Too many failures. Alias not changed", "\uc2e4\ud328 \ud69f\uc218\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4. \ubcc4\uce6d\uc774 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"Entry for alias successfully imported.", - "\ubcc4\uce6d {0}\uc5d0 \ub300\ud55c \ud56d\ubaa9\uc744 \uc131\uacf5\uc801\uc73c\ub85c \uac00\uc838\uc654\uc2b5\ub2c8\ub2e4."}, - {"Entry for alias not imported.", "\ubcc4\uce6d {0}\uc5d0 \ub300\ud55c \ud56d\ubaa9\uc744 \uac00\uc838\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."}, - {"Problem importing entry for alias : .\nEntry for alias not imported.", - "\ubcc4\uce6d {0}\uc5d0 \ub300\ud55c \ud56d\ubaa9\uc744 \uac00\uc838\uc624\ub294 \ub3d9\uc548 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. {1}.\n\ubcc4\uce6d {0\uc5d0 \ub300\ud55c \ud56d\ubaa9\uc744 \uac00\uc838\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."}, - {"Import command completed: entries successfully imported, entries failed or cancelled", - "\uac00\uc838\uc624\uae30 \uba85\ub839 \uc644\ub8cc: {0}\uac1c \ud56d\ubaa9\uc744 \uc131\uacf5\uc801\uc73c\ub85c \uac00\uc838\uc654\uc2b5\ub2c8\ub2e4. {1}\uac1c \ud56d\ubaa9\uc740 \uc2e4\ud328\ud588\uac70\ub098 \ucde8\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4."}, - {"Warning: Overwriting existing alias in destination keystore", - "\uacbd\uace0:\t \ub300\uc0c1 \ud0a4 \uc800\uc7a5\uc18c\uc5d0\uc11c \uae30\uc874 \ubcc4\uce6d {0}\uc744(\ub97c) \ub36e\uc5b4\uc4f0\ub294 \uc911"}, - {"Existing entry alias exists, overwrite? [no]: ", - "\uae30\uc874 \ud56d\ubaa9 \ubcc4\uce6d {0}\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4. \ub36e\uc5b4\uc4f0\uc2dc\uaca0\uc2b5\ub2c8\uae4c? [\uc544\ub2c8\uc624]: "}, - {"Too many failures - try later", "\uc624\ub958\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624."}, - {"Certification request stored in file ", - "\uc778\uc99d \uc694\uccad\uc774 <{0}> \ud30c\uc77c\uc5d0 \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4."}, - {"Submit this to your CA", "CA\uc5d0\uac8c \uc81c\ucd9c\ud558\uc2ed\uc2dc\uc624."}, - {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified", - "\ubcc4\uce6d\uc744 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0 destalias, srckeypass \ubc0f destkeypass\ub97c \uc9c0\uc815\ud558\uba74 \uc548 \ub429\ub2c8\ub2e4."}, - {"Certificate stored in file ", - "\uc778\uc99d\uc11c\uac00 <{0}> \ud30c\uc77c\uc5d0 \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4."}, - {"Certificate reply was installed in keystore", - "\uc778\uc99d\uc11c \ud68c\uc2e0\uc774 keystore\uc5d0 \uc124\uce58\ub418\uc5c8\uc2b5\ub2c8\ub2e4."}, - {"Certificate reply was not installed in keystore", - "\uc778\uc99d \ud68c\uc2e0\uc774 keystore\uc5d0 \uc124\uce58\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"Certificate was added to keystore", - "\uc778\uc99d\uc774 keystore\uc5d0 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4."}, - {"Certificate was not added to keystore", - "\uc778\uc99d\uc11c\uac00 keystore\uc5d0 \ucd94\uac00\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"[Storing ksfname]", "[{0} \uc800\uc7a5 \uc911]"}, - {"alias has no public key (certificate)", - "{0}\uc5d0\ub294 \uacf5\uac1c \ud0a4(\uc778\uc99d\uc11c)\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"Cannot derive signature algorithm", - "\uc11c\uba85 \uc54c\uace0\ub9ac\uc998\uc744 \uc720\ub3c4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"Alias does not exist", - "<{0}> \ubcc4\uce6d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"Alias <{0}> has no certificate", - "<{0}> \ubcc4\uce6d\uc5d0 \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"Key pair not generated, alias already exists", - "\ud0a4 \uc30d\uc774 \uc0dd\uc131\ub418\uc9c0 \uc54a\uc558\uace0 <{0}> \ubcc4\uce6d\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."}, - {"Cannot derive signature algorithm", - "\uc11c\uba85 \uc54c\uace0\ub9ac\uc998\uc744 \uc720\ub3c4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name", - "\ub2e4\uc74c\uc5d0 \ub300\ud574 \uc720\ud6a8 \uae30\uac04\uc774 {3}\uc77c\uc778 {0}\ube44\ud2b8 {1} \ud0a4 \uc30d \ubc0f \uc790\uccb4 \uc11c\uba85\ub41c \uc778\uc99d\uc11c({2}) \uc0dd\uc131 \uc911\n\t: {4}"}, - {"Enter key password for ", "<{0}>\uc5d0 \ub300\ud55c \ud0a4 \uc554\ud638\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624."}, - {"\t(RETURN if same as keystore password): ", - "\t(keystore \uc554\ud638\uc640 \uac19\uc740 \uacbd\uc6b0 Enter\ub97c \ub204\ub974\uc2ed\uc2dc\uc624): "}, - {"Key password is too short - must be at least 6 characters", - "\ud0a4 \uc554\ud638\uac00 \ub108\ubb34 \uc9e7\uc2b5\ub2c8\ub2e4. \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."}, - {"Too many failures - key not added to keystore", - "\uc624\ub958\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4. keystore\uc5d0 \ud0a4\uac00 \ucd94\uac00\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"Destination alias already exists", - "\ub300\uc0c1 \ubcc4\uce6d <{0}>\uc774(\uac00) \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."}, - {"Password is too short - must be at least 6 characters", - "\uc554\ud638\uac00 \ub108\ubb34 \uc9e7\uc2b5\ub2c8\ub2e4. \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."}, - {"Too many failures. Key entry not cloned", - "\uc624\ub958\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4. \ud0a4 \ud56d\ubaa9\uc774 \ubcf5\uc81c\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"key password for ", "<{0}>\uc5d0 \ub300\ud55c \ud0a4 \uc554\ud638"}, - {"Keystore entry for already exists", - "<{0}>\uc5d0 \ub300\ud55c keystore \ud56d\ubaa9\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."}, - {"Creating keystore entry for ...", - "<{0}>\uc5d0 \ub300\ud55c keystore \ud56d\ubaa9\uc744 \uc791\uc131\ud558\ub294 \uc911 ..."}, - {"No entries from identity database added", - "\uc2e0\uc6d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ud56d\ubaa9\uc774 \ucd94\uac00\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"Alias name: alias", "\ubcc4\uce6d \uc774\ub984: {0}"}, - {"Creation date: keyStore.getCreationDate(alias)", - "\uc791\uc131\uc77c: keyStore.getCreationDate(alias)"}, - {"alias, keyStore.getCreationDate(alias), ", + // keytool: Help part + {".OPTION.", " [OPTION]..."}, + {"Options.", "\uC635\uC158:"}, + {"Use.keytool.help.for.all.available.commands", + "\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uBAA8\uB4E0 \uBA85\uB839\uC5D0 \"keytool -help\" \uC0AC\uC6A9"}, + {"Key.and.Certificate.Management.Tool", + "\uD0A4 \uBC0F \uC778\uC99D\uC11C \uAD00\uB9AC \uD234"}, + {"Commands.", "\uBA85\uB839:"}, + {"Use.keytool.command.name.help.for.usage.of.command.name", + "command_name \uC0AC\uC6A9\uBC95\uC5D0 \"keytool -command_name -help\" \uC0AC\uC6A9"}, + // keytool: help: commands + {"Generates.a.certificate.request", + "\uC778\uC99D\uC11C \uC694\uCCAD\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-certreq + {"Changes.an.entry.s.alias", + "\uD56D\uBAA9\uC758 \uBCC4\uCE6D\uC744 \uBCC0\uACBD\uD569\uB2C8\uB2E4."}, //-changealias + {"Deletes.an.entry", + "\uD56D\uBAA9\uC744 \uC0AD\uC81C\uD569\uB2C8\uB2E4."}, //-delete + {"Exports.certificate", + "\uC778\uC99D\uC11C\uB97C \uC775\uC2A4\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-exportcert + {"Generates.a.key.pair", + "\uD0A4 \uC30D\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-genkeypair + {"Generates.a.secret.key", + "\uBCF4\uC548 \uD0A4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-genseckey + {"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 + {"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.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", + "\uD0A4 \uD56D\uBAA9\uC744 \uBCF5\uC81C\uD569\uB2C8\uB2E4."}, //-keyclone + {"Changes.the.key.password.of.an.entry", + "\uD56D\uBAA9\uC758 \uD0A4 \uBE44\uBC00\uBC88\uD638\uB97C \uBCC0\uACBD\uD569\uB2C8\uB2E4."}, //-keypasswd + {"Lists.entries.in.a.keystore", + "\uD0A4 \uC800\uC7A5\uC18C\uC758 \uD56D\uBAA9\uC744 \uB098\uC5F4\uD569\uB2C8\uB2E4."}, //-list + {"Prints.the.content.of.a.certificate", + "\uC778\uC99D\uC11C\uC758 \uCF58\uD150\uCE20\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4."}, //-printcert + {"Prints.the.content.of.a.certificate.request", + "\uC778\uC99D\uC11C \uC694\uCCAD\uC758 \uCF58\uD150\uCE20\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4."}, //-printcertreq + {"Prints.the.content.of.a.CRL.file", + "CRL \uD30C\uC77C\uC758 \uCF58\uD150\uCE20\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4."}, //-printcrl + {"Generates.a.self.signed.certificate", + "\uC790\uCCB4 \uC11C\uBA85\uB41C \uC778\uC99D\uC11C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-selfcert + {"Changes.the.store.password.of.a.keystore", + "\uD0A4 \uC800\uC7A5\uC18C\uC758 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB97C \uBCC0\uACBD\uD569\uB2C8\uB2E4."}, //-storepasswd + // keytool: help: options + {"alias.name.of.the.entry.to.process", + "\uCC98\uB9AC\uD560 \uD56D\uBAA9\uC758 \uBCC4\uCE6D \uC774\uB984"}, //-alias + {"destination.alias", + "\uB300\uC0C1 \uBCC4\uCE6D"}, //-destalias + {"destination.key.password", + "\uB300\uC0C1 \uD0A4 \uBE44\uBC00\uBC88\uD638"}, //-destkeypass + {"destination.keystore.name", + "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uC774\uB984"}, //-destkeystore + {"destination.keystore.password.protected", + "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB85C \uBCF4\uD638\uB428"}, //-destprotected + {"destination.keystore.provider.name", + "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790 \uC774\uB984"}, //-destprovidername + {"destination.keystore.password", + "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638"}, //-deststorepass + {"destination.keystore.type", + "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uC720\uD615"}, //-deststoretype + {"distinguished.name", + "\uC2DD\uBCC4 \uC774\uB984"}, //-dname + {"X.509.extension", + "X.509 \uD655\uC7A5"}, //-ext + {"output.file.name", + "\uCD9C\uB825 \uD30C\uC77C \uC774\uB984"}, //-file and -outfile + {"input.file.name", + "\uC785\uB825 \uD30C\uC77C \uC774\uB984"}, //-file and -infile + {"key.algorithm.name", + "\uD0A4 \uC54C\uACE0\uB9AC\uC998 \uC774\uB984"}, //-keyalg + {"key.password", + "\uD0A4 \uBE44\uBC00\uBC88\uD638"}, //-keypass + {"key.bit.size", + "\uD0A4 \uBE44\uD2B8 \uD06C\uAE30"}, //-keysize + {"keystore.name", + "\uD0A4 \uC800\uC7A5\uC18C \uC774\uB984"}, //-keystore + {"new.password", + "\uC0C8 \uBE44\uBC00\uBC88\uD638"}, //-new + {"do.not.prompt", + "\uD655\uC778\uD558\uC9C0 \uC54A\uC74C"}, //-noprompt + {"password.through.protected.mechanism", + "\uBCF4\uD638\uB418\uB294 \uBA54\uCEE4\uB2C8\uC998\uC744 \uD1B5\uD55C \uBE44\uBC00\uBC88\uD638"}, //-protected + {"provider.argument", + "\uC81C\uACF5\uC790 \uC778\uC218"}, //-providerarg + {"provider.class.name", + "\uC81C\uACF5\uC790 \uD074\uB798\uC2A4 \uC774\uB984"}, //-providerclass + {"provider.name", + "\uC81C\uACF5\uC790 \uC774\uB984"}, //-providername + {"provider.classpath", + "\uC81C\uACF5\uC790 \uD074\uB798\uC2A4 \uACBD\uB85C"}, //-providerpath + {"output.in.RFC.style", + "RFC \uC2A4\uD0C0\uC77C\uC758 \uCD9C\uB825"}, //-rfc + {"signature.algorithm.name", + "\uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998 \uC774\uB984"}, //-sigalg + {"source.alias", + "\uC18C\uC2A4 \uBCC4\uCE6D"}, //-srcalias + {"source.key.password", + "\uC18C\uC2A4 \uD0A4 \uBE44\uBC00\uBC88\uD638"}, //-srckeypass + {"source.keystore.name", + "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uC774\uB984"}, //-srckeystore + {"source.keystore.password.protected", + "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB85C \uBCF4\uD638\uB428"}, //-srcprotected + {"source.keystore.provider.name", + "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790 \uC774\uB984"}, //-srcprovidername + {"source.keystore.password", + "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638"}, //-srcstorepass + {"source.keystore.type", + "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uC720\uD615"}, //-srcstoretype + {"SSL.server.host.and.port", + "SSL \uC11C\uBC84 \uD638\uC2A4\uD2B8 \uBC0F \uD3EC\uD2B8"}, //-sslserver + {"signed.jar.file", + "\uC11C\uBA85\uB41C jar \uD30C\uC77C"}, //=jarfile + {"certificate.validity.start.date.time", + "\uC778\uC99D\uC11C \uC720\uD6A8 \uAE30\uAC04 \uC2DC\uC791 \uB0A0\uC9DC/\uC2DC\uAC04"}, //-startdate + {"keystore.password", + "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638"}, //-storepass + {"keystore.type", + "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615"}, //-storetype + {"trust.certificates.from.cacerts", + "cacerts\uC758 \uBCF4\uC548 \uC778\uC99D\uC11C"}, //-trustcacerts + {"verbose.output", + "\uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825"}, //-v + {"validity.number.of.days", + "\uC720\uD6A8 \uAE30\uAC04 \uC77C \uC218"}, //-validity + {"Serial.ID.of.cert.to.revoke", + "\uCCA0\uD68C\uD560 \uC778\uC99D\uC11C\uC758 \uC77C\uB828 ID"}, //-id + // keytool: Running part + {"keytool.error.", "keytool \uC624\uB958: "}, + {"Illegal.option.", "\uC798\uBABB\uB41C \uC635\uC158: "}, + {"Illegal.value.", "\uC798\uBABB\uB41C \uAC12: "}, + {"Unknown.password.type.", "\uC54C \uC218 \uC5C6\uB294 \uBE44\uBC00\uBC88\uD638 \uC720\uD615: "}, + {"Cannot.find.environment.variable.", + "\uD658\uACBD \uBCC0\uC218\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: "}, + {"Cannot.find.file.", "\uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC74C: "}, + {"Command.option.flag.needs.an.argument.", "\uBA85\uB839 \uC635\uC158 {0}\uC5D0 \uC778\uC218\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.", + "\uACBD\uACE0: \uB2E4\uB978 \uC800\uC7A5\uC18C \uBC0F \uD0A4 \uBE44\uBC00\uBC88\uD638\uB294 PKCS12 KeyStores\uC5D0 \uB300\uD574 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC0AC\uC6A9\uC790\uAC00 \uC9C0\uC815\uD55C {0} \uAC12\uC744 \uBB34\uC2DC\uD558\uB294 \uC911\uC785\uB2C8\uB2E4."}, + {".keystore.must.be.NONE.if.storetype.is.{0}", + "-storetype\uC774 {0}\uC778 \uACBD\uC6B0 -keystore\uB294 NONE\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."}, + {"Too.many.retries.program.terminated", + "\uC7AC\uC2DC\uB3C4 \uD69F\uC218\uAC00 \uB108\uBB34 \uB9CE\uC544 \uD504\uB85C\uADF8\uB7A8\uC774 \uC885\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}", + "-storetype\uC774 {0}\uC778 \uACBD\uC6B0 -storepasswd \uBC0F -keypasswd \uBA85\uB839\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."}, + {".keypasswd.commands.not.supported.if.storetype.is.PKCS12", + "-storetype\uC774 PKCS12\uC778 \uACBD\uC6B0 -keypasswd \uBA85\uB839\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."}, + {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}", + "-storetype\uC774 {0}\uC778 \uACBD\uC6B0 -keypass \uBC0F -new\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified", + "-protected\uB97C \uC9C0\uC815\uD55C \uACBD\uC6B0 -storepass, -keypass \uBC0F -new\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."}, + {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified", + "-srcprotected\uB97C \uC9C0\uC815\uD55C \uACBD\uC6B0 -srcstorepass \uBC0F -srckeypass\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."}, + {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified", + "\uD0A4 \uC800\uC7A5\uC18C\uAC00 \uBE44\uBC00\uBC88\uD638\uB85C \uBCF4\uD638\uB418\uC9C0 \uC54A\uB294 \uACBD\uC6B0 -storepass, -keypass \uBC0F -new\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."}, + {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", + "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C\uAC00 \uBE44\uBC00\uBC88\uD638\uB85C \uBCF4\uD638\uB418\uC9C0 \uC54A\uB294 \uACBD\uC6B0 -srcstorepass \uBC0F -srckeypass\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."}, + {"Illegal.startdate.value", "startdate \uAC12\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"Validity.must.be.greater.than.zero", + "\uC720\uD6A8 \uAE30\uAC04\uC740 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4."}, + {"provName.not.a.provider", "{0}\uC740(\uB294) \uC81C\uACF5\uC790\uAC00 \uC544\uB2D9\uB2C8\uB2E4."}, + {"Usage.error.no.command.provided", "\uC0AC\uC6A9\uBC95 \uC624\uB958: \uBA85\uB839\uC744 \uC785\uB825\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"Source.keystore.file.exists.but.is.empty.", "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uD30C\uC77C\uC774 \uC874\uC7AC\uD558\uC9C0\uB9CC \uBE44\uC5B4 \uC788\uC74C: "}, + {"Please.specify.srckeystore", "-srckeystore\uB97C \uC9C0\uC815\uD558\uC2ED\uC2DC\uC624."}, + {"Must.not.specify.both.v.and.rfc.with.list.command", + "'list' \uBA85\uB839\uC5D0 -v\uC640 -rfc\uB97C \uD568\uAED8 \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."}, + {"Key.password.must.be.at.least.6.characters", + "\uD0A4 \uBE44\uBC00\uBC88\uD638\uB294 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."}, + {"New.password.must.be.at.least.6.characters", + "\uC0C8 \uBE44\uBC00\uBC88\uD638\uB294 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."}, + {"Keystore.file.exists.but.is.empty.", + "\uD0A4 \uC800\uC7A5\uC18C \uD30C\uC77C\uC774 \uC874\uC7AC\uD558\uC9C0\uB9CC \uBE44\uC5B4 \uC788\uC74C: "}, + {"Keystore.file.does.not.exist.", + "\uD0A4 \uC800\uC7A5\uC18C \uD30C\uC77C\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC74C: "}, + {"Must.specify.destination.alias", "\uB300\uC0C1 \uBCC4\uCE6D\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4."}, + {"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.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: "}, + {"Keystore.password.is.too.short.must.be.at.least.6.characters", + "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uAC00 \uB108\uBB34 \uC9E7\uC74C - 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."}, + {"Unknown.Entry.Type", "\uC54C \uC218 \uC5C6\uB294 \uD56D\uBAA9 \uC720\uD615"}, + {"Too.many.failures.Alias.not.changed", "\uC624\uB958\uAC00 \uB108\uBB34 \uB9CE\uC2B5\uB2C8\uB2E4. \uBCC4\uCE6D\uC774 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"Entry.for.alias.alias.successfully.imported.", + "{0} \uBCC4\uCE6D\uC5D0 \uB300\uD55C \uD56D\uBAA9\uC774 \uC131\uACF5\uC801\uC73C\uB85C \uC784\uD3EC\uD2B8\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"Entry.for.alias.alias.not.imported.", "{0} \uBCC4\uCE6D\uC5D0 \uB300\uD55C \uD56D\uBAA9\uC774 \uC784\uD3EC\uD2B8\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.", + "{0} \uBCC4\uCE6D\uC5D0 \uB300\uD55C \uD56D\uBAA9\uC744 \uC784\uD3EC\uD2B8\uD558\uB294 \uC911 \uBB38\uC81C \uBC1C\uC0DD: {1}.\n{0} \uBCC4\uCE6D\uC5D0 \uB300\uD55C \uD56D\uBAA9\uC774 \uC784\uD3EC\uD2B8\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled", + "\uC784\uD3EC\uD2B8 \uBA85\uB839 \uC644\uB8CC: \uC131\uACF5\uC801\uC73C\uB85C \uC784\uD3EC\uD2B8\uB41C \uD56D\uBAA9\uC740 {0}\uAC1C, \uC2E4\uD328\uD558\uAC70\uB098 \uCDE8\uC18C\uB41C \uD56D\uBAA9\uC740 {1}\uAC1C\uC785\uB2C8\uB2E4."}, + {"Warning.Overwriting.existing.alias.alias.in.destination.keystore", + "\uACBD\uACE0: \uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C\uC5D0\uC11C \uAE30\uC874 \uBCC4\uCE6D {0}\uC744(\uB97C) \uACB9\uCCD0 \uC4F0\uB294 \uC911"}, + {"Existing.entry.alias.alias.exists.overwrite.no.", + "\uAE30\uC874 \uD56D\uBAA9 \uBCC4\uCE6D {0}\uC774(\uAC00) \uC874\uC7AC\uD569\uB2C8\uB2E4. \uACB9\uCCD0 \uC4F0\uACA0\uC2B5\uB2C8\uAE4C? [\uC544\uB2C8\uC624]: "}, + {"Too.many.failures.try.later", "\uC624\uB958\uAC00 \uB108\uBB34 \uB9CE\uC74C - \uB098\uC911\uC5D0 \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624."}, + {"Certification.request.stored.in.file.filename.", + "\uC778\uC99D \uC694\uCCAD\uC774 <{0}> \uD30C\uC77C\uC5D0 \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"Submit.this.to.your.CA", "CA\uC5D0\uAC8C \uC81C\uCD9C\uD558\uC2ED\uC2DC\uC624."}, + {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified", + "\uBCC4\uCE6D\uC744 \uC9C0\uC815\uD558\uC9C0 \uC54A\uC740 \uACBD\uC6B0 destalias, srckeypass \uBC0F destkeypass\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."}, + {"Certificate.stored.in.file.filename.", + "\uC778\uC99D\uC11C\uAC00 <{0}> \uD30C\uC77C\uC5D0 \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"Certificate.reply.was.installed.in.keystore", + "\uC778\uC99D\uC11C \uD68C\uC2E0\uC774 \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uC124\uCE58\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"Certificate.reply.was.not.installed.in.keystore", + "\uC778\uC99D\uC11C \uD68C\uC2E0\uC774 \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uC124\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"Certificate.was.added.to.keystore", + "\uC778\uC99D\uC11C\uAC00 \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uCD94\uAC00\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"Certificate.was.not.added.to.keystore", + "\uC778\uC99D\uC11C\uAC00 \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uCD94\uAC00\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {".Storing.ksfname.", "[{0}\uC744(\uB97C) \uC800\uC7A5\uD558\uB294 \uC911]"}, + {"alias.has.no.public.key.certificate.", + "{0}\uC5D0 \uACF5\uC6A9 \uD0A4(\uC778\uC99D\uC11C)\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"Cannot.derive.signature.algorithm", + "\uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998\uC744 \uD30C\uC0DD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"Alias.alias.does.not.exist", + "<{0}> \uBCC4\uCE6D\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."}, + {"Alias.alias.has.no.certificate", + "<{0}> \uBCC4\uCE6D\uC5D0 \uC778\uC99D\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"Key.pair.not.generated.alias.alias.already.exists", + "\uD0A4 \uC30D\uC774 \uC0DD\uC131\uB418\uC9C0 \uC54A\uC558\uC73C\uBA70 <{0}> \uBCC4\uCE6D\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4."}, + {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for", + "\uB2E4\uC74C\uC5D0 \uB300\uD574 \uC720\uD6A8 \uAE30\uAC04\uC774 {3}\uC77C\uC778 {0}\uBE44\uD2B8 {1} \uD0A4 \uC30D \uBC0F \uC790\uCCB4 \uC11C\uBA85\uB41C \uC778\uC99D\uC11C({2})\uB97C \uC0DD\uC131\uD558\uB294 \uC911\n\t: {4}"}, + {"Enter.key.password.for.alias.", "<{0}>\uC5D0 \uB300\uD55C \uD0A4 \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC2ED\uC2DC\uC624."}, + {".RETURN.if.same.as.keystore.password.", + "\t(\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uC640 \uB3D9\uC77C\uD55C \uACBD\uC6B0 Enter \uD0A4\uB97C \uB204\uB984): "}, + {"Key.password.is.too.short.must.be.at.least.6.characters", + "\uD0A4 \uBE44\uBC00\uBC88\uD638\uAC00 \uB108\uBB34 \uC9E7\uC74C - 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."}, + {"Too.many.failures.key.not.added.to.keystore", + "\uC624\uB958\uAC00 \uB108\uBB34 \uB9CE\uC74C - \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uD0A4\uAC00 \uCD94\uAC00\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"Destination.alias.dest.already.exists", + "\uB300\uC0C1 \uBCC4\uCE6D <{0}>\uC774(\uAC00) \uC874\uC7AC\uD569\uB2C8\uB2E4."}, + {"Password.is.too.short.must.be.at.least.6.characters", + "\uBE44\uBC00\uBC88\uD638\uAC00 \uB108\uBB34 \uC9E7\uC74C - 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."}, + {"Too.many.failures.Key.entry.not.cloned", + "\uC624\uB958\uAC00 \uB108\uBB34 \uB9CE\uC2B5\uB2C8\uB2E4. \uD0A4 \uD56D\uBAA9\uC774 \uBCF5\uC81C\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."}, + {"key.password.for.alias.", "<{0}>\uC5D0 \uB300\uD55C \uD0A4 \uBE44\uBC00\uBC88\uD638"}, + {"Keystore.entry.for.id.getName.already.exists", + "<{0}>\uC5D0 \uB300\uD55C \uD0A4 \uC800\uC7A5\uC18C \uD56D\uBAA9\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4."}, + {"Creating.keystore.entry.for.id.getName.", + "<{0}>\uC5D0 \uB300\uD55C \uD0A4 \uC800\uC7A5\uC18C \uD56D\uBAA9\uC744 \uC0DD\uC131\uD558\uB294 \uC911..."}, + {"No.entries.from.identity.database.added", + "ID \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0\uC11C \uCD94\uAC00\uB41C \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"Alias.name.alias", "\uBCC4\uCE6D \uC774\uB984: {0}"}, + {"Creation.date.keyStore.getCreationDate.alias.", + "\uC0DD\uC131 \uB0A0\uC9DC: {0,date}"}, + {"alias.keyStore.getCreationDate.alias.", "{0}, {1,date}, "}, - {"alias, ", "{0},"}, - {"Entry type: ", "\ud56d\ubaa9 \uc720\ud615: {0}"}, - {"Certificate chain length: ", "\uc778\uc99d\uc11c \uccb4\uc778 \uae38\uc774: "}, - {"Certificate[(i + 1)]:", "\uc778\uc99d\uc11c[{0,number,integer}]:"}, - {"Certificate fingerprint (MD5): ", "\uc778\uc99d\uc11c \uc9c0\ubb38(MD5): "}, - {"Entry type: trustedCertEntry\n", "\uc785\ub825 \uc720\ud615: trustedCertEntry\n"}, - {"trustedCertEntry,", "trustedCertEntry,"}, - {"Keystore type: ", "Keystore \uc720\ud615: "}, - {"Keystore provider: ", "Keystore \uacf5\uae09\uc790: "}, - {"Your keystore contains keyStore.size() entry", - "Keystore\uc5d0\ub294 {0,number,integer} \ud56d\ubaa9\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4."}, - {"Your keystore contains keyStore.size() entries", - "Keystore\uc5d0\ub294 {0,number,integer} \ud56d\ubaa9\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4."}, - {"Failed to parse input", "\uc785\ub825\uc744 \uad6c\ubb38 \ubd84\uc11d\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."}, - {"Empty input", "\uc785\ub825\uc774 \ube44\uc5b4\uc788\uc2b5\ub2c8\ub2e4."}, - {"Not X.509 certificate", "X.509 \uc778\uc99d\uc11c\uac00 \uc544\ub2d9\ub2c8\ub2e4."}, - {"Cannot derive signature algorithm", - "\uc11c\uba85 \uc54c\uace0\ub9ac\uc998\uc744 \uc720\ub3c4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"alias has no public key", "{0}\uc5d0\ub294 \uacf5\uac1c \ud0a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"alias has no X.509 certificate", "{0}\uc5d0 X.509 \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"New certificate (self-signed):", "\uc0c8 \uc778\uc99d\uc11c(\uc790\uccb4 \uc11c\uba85):"}, - {"Reply has no certificates", "\ud68c\uc2e0\uc5d0 \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"Certificate not imported, alias already exists", - "\uc778\uc99d\uc11c\ub97c \uac00\uc838\uc624\uc9c0 \uc54a\uc558\uace0 <{0}> \ubcc4\uce6d\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."}, - {"Input not an X.509 certificate", "\uc785\ub825\uc774 X.509 \uc778\uc99d\uc11c\uac00 \uc544\ub2d9\ub2c8\ub2e4."}, - {"Certificate already exists in keystore under alias ", - "\uc778\uc99d\uc11c\uac00 <{0}> \ubcc4\uce6d \uc544\ub798\uc758 keystore\uc5d0 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."}, - {"Do you still want to add it? [no]: ", - "\ucd94\uac00\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? [\uc544\ub2c8\uc624]: "}, - {"Certificate already exists in system-wide CA keystore under alias ", - "\uc778\uc99d\uc11c\uac00 <{0}> \ubcc4\uce6d \uc544\ub798\uc758 \uc2dc\uc2a4\ud15c \ubc94\uc704 CA keystore\uc5d0 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."}, - {"Do you still want to add it to your own keystore? [no]: ", - "\uc0ac\uc6a9\uc790 keystore\uc5d0 \ucd94\uac00\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? [\uc544\ub2c8\uc624]: "}, - {"Trust this certificate? [no]: ", "\uc774 \uc778\uc99d\uc11c\ub97c \uc2e0\ub8b0\ud558\uc2ed\ub2c8\uae4c? [\uc544\ub2c8\uc624]: "}, - {"YES", "\uc608"}, - {"New prompt: ", "\uc0c8 \ud504\ub86c\ud504\ud2b8: "}, - {"Passwords must differ", "\uc554\ud638\ub294 \ub2ec\ub77c\uc57c \ud569\ub2c8\ub2e4."}, - {"Re-enter new prompt: ", "\uc0c8 {0}\uc744(\ub97c) \ub2e4\uc2dc \uc785\ub825\ud558\uc2ed\uc2dc\uc624: "}, - {"Re-enter new password: ", "\uc0c8 \uc554\ud638\ub97c \ub2e4\uc2dc \uc785\ub825\ud558\uc2ed\uc2dc\uc624: "}, - {"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\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624: "}, - {"Enter new alias name\t(RETURN to cancel import for this entry): ", - "\uc0c8 \ubcc4\uce6d \uc785\ub825\t(Enter - \uc774 \ud56d\ubaa9\uc5d0 \ub300\ud55c \uac00\uc838\uc624\uae30 \ucde8\uc18c): "}, - {"Enter alias name: ", "\ubcc4\uce6d \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624: "}, - {"\t(RETURN if same as for )", - "\t(<{0}>\uc640(\uacfc) \uac19\uc740 \uacbd\uc6b0 Enter\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.)"}, - {"*PATTERN* printX509Cert", - "\uc18c\uc720\uc790: {0}\n\ubc1c\uae09\uc790: {1}\n\uc77c\ub828 \ubc88\ud638: {2}\n\uc720\ud6a8 \uae30\uac04 \uc2dc\uc791: {3} \ub05d: {4}\n\uc778\uc99d \uc9c0\ubb38:\n\t MD5: {5}\n\t SHA1: {6}\n\t \uc11c\uba85 \uc54c\uace0\ub9ac\uc998 \uc774\ub984: {7}\n\t \ubc84\uc804: {8}"}, - {"What is your first and last name?", - "\uc774\ub984\uacfc \uc131\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624."}, - {"What is the name of your organizational unit?", - "\uc870\uc9c1 \ub2e8\uc704 \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624."}, - {"What is the name of your organization?", - "\uc870\uc9c1 \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624."}, - {"What is the name of your City or Locality?", - "\uad6c/\uad70/\uc2dc \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624?"}, - {"What is the name of your State or Province?", - "\uc2dc/\ub3c4 \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624."}, - {"What is the two-letter country code for this unit?", - "\uc774 \uc870\uc9c1\uc758 \ub450 \uc790\ub9ac \uad6d\uac00 \ucf54\ub4dc\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624."}, - {"Is correct?", "{0}\uc774(\uac00) \ub9de\uc2b5\ub2c8\uae4c?"}, - {"no", "\uc544\ub2c8\uc624"}, - {"yes", "\uc608"}, + {"alias.", "{0}, "}, + {"Entry.type.type.", "\uD56D\uBAA9 \uC720\uD615: {0}"}, + {"Certificate.chain.length.", "\uC778\uC99D\uC11C \uCCB4\uC778 \uAE38\uC774: "}, + {"Certificate.i.1.", "\uC778\uC99D\uC11C[{0,number,integer}]:"}, + {"Certificate.fingerprint.SHA1.", "\uC778\uC99D\uC11C \uC9C0\uBB38(SHA1): "}, + {"Entry.type.trustedCertEntry.", "\uD56D\uBAA9 \uC720\uD615: trustedCertEntry\n"}, + {"trustedCertEntry.", "trustedCertEntry,"}, + {"Keystore.type.", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615: "}, + {"Keystore.provider.", "\uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790: "}, + {"Your.keystore.contains.keyStore.size.entry", + "\uD0A4 \uC800\uC7A5\uC18C\uC5D0 {0,number,integer}\uAC1C\uC758 \uD56D\uBAA9\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."}, + {"Your.keystore.contains.keyStore.size.entries", + "\uD0A4 \uC800\uC7A5\uC18C\uC5D0 {0,number,integer}\uAC1C\uC758 \uD56D\uBAA9\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."}, + {"Failed.to.parse.input", "\uC785\uB825\uAC12\uC758 \uAD6C\uBB38 \uBD84\uC11D\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."}, + {"Empty.input", "\uC785\uB825\uAC12\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."}, + {"Not.X.509.certificate", "X.509 \uC778\uC99D\uC11C\uAC00 \uC544\uB2D9\uB2C8\uB2E4."}, + {"alias.has.no.public.key", "{0}\uC5D0 \uACF5\uC6A9 \uD0A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"alias.has.no.X.509.certificate", "{0}\uC5D0 X.509 \uC778\uC99D\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"New.certificate.self.signed.", "\uC0C8 \uC778\uC99D\uC11C(\uC790\uCCB4 \uC11C\uBA85):"}, + {"Reply.has.no.certificates", "\uD68C\uC2E0\uC5D0 \uC778\uC99D\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"Certificate.not.imported.alias.alias.already.exists", + "\uC778\uC99D\uC11C\uAC00 \uC784\uD3EC\uD2B8\uB418\uC9C0 \uC54A\uC558\uC73C\uBA70 <{0}> \uBCC4\uCE6D\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4."}, + {"Input.not.an.X.509.certificate", "\uC785\uB825\uC774 X.509 \uC778\uC99D\uC11C\uAC00 \uC544\uB2D9\uB2C8\uB2E4."}, + {"Certificate.already.exists.in.keystore.under.alias.trustalias.", + "\uC778\uC99D\uC11C\uAC00 <{0}> \uBCC4\uCE6D \uC544\uB798\uC758 \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uC874\uC7AC\uD569\uB2C8\uB2E4."}, + {"Do.you.still.want.to.add.it.no.", + "\uCD94\uAC00\uD558\uACA0\uC2B5\uB2C8\uAE4C? [\uC544\uB2C8\uC624]: "}, + {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.", + "\uC778\uC99D\uC11C\uAC00 <{0}> \uBCC4\uCE6D \uC544\uB798\uC5D0 \uC788\uB294 \uC2DC\uC2A4\uD15C \uCC28\uC6D0\uC758 CA \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uC874\uC7AC\uD569\uB2C8\uB2E4."}, + {"Do.you.still.want.to.add.it.to.your.own.keystore.no.", + "\uACE0\uC720\uD55C \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uCD94\uAC00\uD558\uACA0\uC2B5\uB2C8\uAE4C? [\uC544\uB2C8\uC624]: "}, + {"Trust.this.certificate.no.", "\uC774 \uC778\uC99D\uC11C\uB97C \uC2E0\uB8B0\uD569\uB2C8\uAE4C? [\uC544\uB2C8\uC624]: "}, + {"YES", "\uC608"}, + {"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.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: "}, + {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.", + "\uC0C8 \uBCC4\uCE6D \uC774\uB984 \uC785\uB825\t(\uC774 \uD56D\uBAA9\uC5D0 \uB300\uD55C \uC784\uD3EC\uD2B8\uB97C \uCDE8\uC18C\uD558\uB824\uBA74 Enter \uD0A4\uB97C \uB204\uB984): "}, + {"Enter.alias.name.", "\uBCC4\uCE6D \uC774\uB984 \uC785\uB825: "}, + {".RETURN.if.same.as.for.otherAlias.", + "\t(<{0}>\uACFC(\uC640) \uB3D9\uC77C\uD55C \uACBD\uC6B0 Enter \uD0A4\uB97C \uB204\uB984)"}, + {".PATTERN.printX509Cert", + "\uC18C\uC720\uC790: {0}\n\uBC1C\uD589\uC790: {1}\n\uC77C\uB828 \uBC88\uD638: {2}\n\uC801\uD569\uD55C \uC2DC\uC791 \uB0A0\uC9DC: {3}, \uC885\uB8CC \uB0A0\uC9DC: {4}\n\uC778\uC99D\uC11C \uC9C0\uBB38:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998 \uC774\uB984: {8}\n\t \uBC84\uC804: {9}"}, + {"What.is.your.first.and.last.name.", + "\uC774\uB984\uACFC \uC131\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624."}, + {"What.is.the.name.of.your.organizational.unit.", + "\uC870\uC9C1 \uB2E8\uC704 \uC774\uB984\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624."}, + {"What.is.the.name.of.your.organization.", + "\uC870\uC9C1 \uC774\uB984\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624."}, + {"What.is.the.name.of.your.City.or.Locality.", + "\uAD6C/\uAD70/\uC2DC \uC774\uB984\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624?"}, + {"What.is.the.name.of.your.State.or.Province.", + "\uC2DC/\uB3C4 \uC774\uB984\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624."}, + {"What.is.the.two.letter.country.code.for.this.unit.", + "\uC774 \uC870\uC9C1\uC758 \uB450 \uC790\uB9AC \uAD6D\uAC00 \uCF54\uB4DC\uB97C \uC785\uB825\uD558\uC2ED\uC2DC\uC624."}, + {"Is.name.correct.", "{0}\uC774(\uAC00) \uB9DE\uC2B5\uB2C8\uAE4C?"}, + {"no", "\uC544\uB2C8\uC624"}, + {"yes", "\uC608"}, {"y", "y"}, - {" [defaultValue]: ", " [{0}]: "}, - {"Alias has no key", - "\ubcc4\uce6d <{0}>\uc5d0 \ud0a4 \uc5c6\uc74c"}, - {"Alias references an entry type that is not a private key entry. The -keyclone command only supports cloning of private key entries", - "\ubcc4\uce6d <{0}>\uc774(\uac00) \uac1c\uc778 \ud0a4 \ud56d\ubaa9\uc774 \uc544\ub2cc \ud56d\ubaa9 \uc720\ud615\uc744 \ucc38\uc870\ud569\ub2c8\ub2e4. -keyclone \uba85\ub839\uc740 \uac1c\uc778 \ud0a4 \ud56d\ubaa9\uc758 \ubcf5\uc81c\ub9cc \uc9c0\uc6d0\ud569\ub2c8\ub2e4."}, + {".defaultValue.", " [{0}]: "}, + {"Alias.alias.has.no.key", + "<{0}> \uBCC4\uCE6D\uC5D0 \uD0A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key", + "<{0}> \uBCC4\uCE6D\uC740 \uC804\uC6A9 \uD0A4 \uD56D\uBAA9\uC774 \uC544\uB2CC \uD56D\uBAA9 \uC720\uD615\uC744 \uCC38\uC870\uD569\uB2C8\uB2E4. -keyclone \uBA85\uB839\uC740 \uC804\uC6A9 \uD0A4 \uD56D\uBAA9\uC758 \uBCF5\uC81C\uB9CC \uC9C0\uC6D0\uD569\uB2C8\uB2E4."}, - {"***************** WARNING WARNING WARNING *****************", - "************** \uacbd\uace0 \uacbd\uace0 \uacbd\uace0 **************"}, + {".WARNING.WARNING.WARNING.", + "***************** WARNING WARNING WARNING *****************"}, + {"Signer.d.", "\uC11C\uBA85\uC790 #%d:"}, + {"Timestamp.", "\uC2DC\uAC04 \uAE30\uB85D:"}, + {"Signature.", "\uC11C\uBA85:"}, + {"CRLs.", "CRL:"}, + {"Certificate.owner.", "\uC778\uC99D\uC11C \uC18C\uC720\uC790: "}, + {"Not.a.signed.jar.file", "\uC11C\uBA85\uB41C jar \uD30C\uC77C\uC774 \uC544\uB2D9\uB2C8\uB2E4."}, + {"No.certificate.from.the.SSL.server", + "SSL \uC11C\uBC84\uC5D0\uC11C \uAC00\uC838\uC628 \uC778\uC99D\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."}, // Translators of the following 5 pairs, ATTENTION: // the next 5 string pairs are meant to be combined into 2 paragraphs, // 1+3+4 and 2+3+5. make sure your translation also does. - {"* The integrity of the information stored in your keystore *", - "* keystore\uc5d0 \uc800\uc7a5\ub41c \uc815\ubcf4\uc758 \ubb34\uacb0\uc131\uc774 \ud655\uc778\ub418\uc9c0 *"}, - {"* The integrity of the information stored in the srckeystore*", - "* srckeystore\uc5d0 \uc800\uc7a5\ub41c \uc815\ubcf4\uc758 \ubb34\uacb0\uc131*"}, - {"* has NOT been verified! In order to verify its integrity, *", - "* \uc54a\uc558\uc2b5\ub2c8\ub2e4! \ubb34\uacb0\uc131\uc744 \ud655\uc778\ud558\ub824\uba74 keystore *"}, - {"* you must provide your keystore password. *", - "* \uc554\ud638\ub97c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. *"}, - {"* you must provide the srckeystore password. *", - "* srckeystore \uc554\ud638\ub97c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. *"}, + {".The.integrity.of.the.information.stored.in.your.keystore.", + "* \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uC800\uC7A5\uB41C \uC815\uBCF4\uC758 \uBB34\uACB0\uC131\uC774 *"}, + {".The.integrity.of.the.information.stored.in.the.srckeystore.", + "* srckeystore\uC5D0 \uC800\uC7A5\uB41C \uC815\uBCF4\uC758 \uBB34\uACB0\uC131\uC774*"}, + {".has.NOT.been.verified.In.order.to.verify.its.integrity.", + "* \uD655\uC778\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4! \uBB34\uACB0\uC131\uC744 \uD655\uC778\uD558\uB824\uBA74 *"}, + {".you.must.provide.your.keystore.password.", + "* \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB97C \uC81C\uACF5\uD574\uC57C \uD569\uB2C8\uB2E4. *"}, + {".you.must.provide.the.srckeystore.password.", + "* srckeystore \uBE44\uBC00\uBC88\uD638\uB97C \uC81C\uACF5\uD574\uC57C \uD569\uB2C8\uB2E4. *"}, - {"Certificate reply does not contain public key for ", - "\uc778\uc99d\uc11c \ud68c\uc2e0\uc5d0 <{0}>\uc5d0 \ub300\ud55c \uacf5\uac1c \ud0a4\uac00 \ub4e4\uc5b4\uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."}, - {"Incomplete certificate chain in reply", - "\ud68c\uc2e0\uc758 \ubd88\uc644\uc804\ud55c \uc778\uc99d\uc11c \uccb4\uc778"}, - {"Certificate chain in reply does not verify: ", - "\ud68c\uc2e0\uc758 \uc778\uc99d\uc11c \uccb4\uc778\uc774 \ud655\uc778\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4: "}, - {"Top-level certificate in reply:\n", - "\ud68c\uc2e0\uc758 \ucd5c\uc0c1\uc704 \uc778\uc99d\uc11c:\n"}, - {"... is not trusted. ", "... \uc778\uc99d\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. "}, - {"Install reply anyway? [no]: ", "\ud68c\uc2e0\uc744 \uc124\uce58\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? [\uc544\ub2c8\uc624]: "}, - {"NO", "\uc544\ub2c8\uc624"}, - {"Public keys in reply and keystore don't match", - "\ud68c\uc2e0\uacfc keystore\uc758 \uacf5\uac1c \ud0a4\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."}, - {"Certificate reply and certificate in keystore are identical", - "\ud68c\uc2e0\uc758 \uc778\uc99d\uc11c\uc640 keystore\uc758 \uc778\uc99d\uc11c\uac00 \ub3d9\uc77c\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."}, - {"Failed to establish chain from reply", - "\ud68c\uc2e0\uc758 \uccb4\uc778\uc744 \uc124\uc815\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."}, + {"Certificate.reply.does.not.contain.public.key.for.alias.", + "\uC778\uC99D\uC11C \uD68C\uC2E0\uC5D0 <{0}>\uC5D0 \uB300\uD55C \uACF5\uC6A9 \uD0A4\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."}, + {"Incomplete.certificate.chain.in.reply", + "\uD68C\uC2E0\uC5D0 \uBD88\uC644\uC804\uD55C \uC778\uC99D\uC11C \uCCB4\uC778\uC774 \uC788\uC2B5\uB2C8\uB2E4."}, + {"Certificate.chain.in.reply.does.not.verify.", + "\uD68C\uC2E0\uC758 \uC778\uC99D\uC11C \uCCB4\uC778\uC774 \uD655\uC778\uB418\uC9C0 \uC54A\uC74C: "}, + {"Top.level.certificate.in.reply.", + "\uD68C\uC2E0\uC5D0 \uCD5C\uC0C1\uC704 \uB808\uBCA8 \uC778\uC99D\uC11C\uAC00 \uC788\uC74C:\n"}, + {".is.not.trusted.", "...\uC744(\uB97C) \uC2E0\uB8B0\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. "}, + {"Install.reply.anyway.no.", "\uD68C\uC2E0\uC744 \uC124\uCE58\uD558\uACA0\uC2B5\uB2C8\uAE4C? [\uC544\uB2C8\uC624]: "}, + {"NO", "\uC544\uB2C8\uC624"}, + {"Public.keys.in.reply.and.keystore.don.t.match", + "\uD68C\uC2E0\uACFC \uD0A4 \uC800\uC7A5\uC18C\uC758 \uACF5\uC6A9 \uD0A4\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."}, + {"Certificate.reply.and.certificate.in.keystore.are.identical", + "\uD68C\uC2E0\uACFC \uD0A4 \uC800\uC7A5\uC18C\uC758 \uC778\uC99D\uC11C\uAC00 \uB3D9\uC77C\uD569\uB2C8\uB2E4."}, + {"Failed.to.establish.chain.from.reply", + "\uD68C\uC2E0\uC758 \uCCB4\uC778 \uC124\uC815\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."}, {"n", "n"}, - {"Wrong answer, try again", "\uc798\ubabb\ub41c \uc751\ub2f5\uc785\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624."}, - {"Secret key not generated, alias already exists", - "\ubcf4\uc548 \ud0a4\uac00 \uc0dd\uc131\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \ubcc4\uce6d <{0}>\uc774(\uac00) \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."}, - {"Please provide -keysize for secret key generation", - "\ubcf4\uc548 \ud0a4 \uc0dd\uc131\uc744 \uc704\ud55c -keysize\ub97c \uc81c\uacf5\ud558\uc2ed\uc2dc\uc624."}, - {"keytool usage:\n", "keytool \uc0ac\uc6a9\ubc95:\n"}, + {"Wrong.answer.try.again", "\uC798\uBABB\uB41C \uC751\uB2F5\uC785\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624."}, + {"Secret.key.not.generated.alias.alias.already.exists", + "\uBCF4\uC548 \uD0A4\uAC00 \uC0DD\uC131\uB418\uC9C0 \uC54A\uC558\uC73C\uBA70 <{0}> \uBCC4\uCE6D\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4."}, + {"Please.provide.keysize.for.secret.key.generation", + "\uBCF4\uC548 \uD0A4\uB97C \uC0DD\uC131\uD558\uB824\uBA74 -keysize\uB97C \uC81C\uACF5\uD558\uC2ED\uC2DC\uC624."}, - {"Extensions: ", "\ud655\uc7a5\uc790: "}, - - {"-certreq [-v] [-protected]", - "-certreq [-v] [-protected]"}, - {"\t [-alias ] [-sigalg ]", - "\t [-alias <\ubcc4\uce6d>] [-sigalg <\uc11c\uba85 \uc54c\uace0\ub9ac\uc998>]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass <\ud0a4 \uc554\ud638>]"}, - {"\t [-keystore ] [-storepass ]", - "\t [-keystore <\ud0a4 \uc800\uc7a5\uc18c>] [-storepass <\uc800\uc7a5\uc18c \uc554\ud638>]"}, - {"\t [-storetype ] [-providername ]", - "\t [-storetype <\uc800\uc7a5\uc18c \uc720\ud615>] [-providername <\uc774\ub984>]"}, - {"\t [-providerclass [-providerarg ]] ...", - "\t [-providerclass <\uacf5\uae09\uc790 \ud074\ub798\uc2a4 \uc774\ub984> [-providerarg <\uc778\uc218>]] ..."}, - {"\t [-providerpath ]", - "\t [-providerpath <\uacbd\ub85c \ubaa9\ub85d>]"}, - {"-delete [-v] [-protected] -alias ", - "-delete [-v] [-protected] -alias <\ubcc4\uce6d>"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-export [-v] [-rfc] [-protected]", - // "-export [-v] [-rfc] [-protected]"}, - {"-exportcert [-v] [-rfc] [-protected]", - "-exportcert [-v] [-rfc] [-protected]"}, - {"\t [-alias ] [-file ]", - "\t [-alias <\ubcc4\uce6d>] [-file <\uc778\uc99d\uc11c \ud30c\uc77c>]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-genkey [-v] [-protected]", - // "-genkey [-v] [-protected]"}, - {"-genkeypair [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\ubcc4\uce6d>]"}, - {"\t [-keyalg ] [-keysize ]", - "\t [-keyalg <\ud0a4 \uc54c\uace0\ub9ac\uc998>] [-keysize <\ud0a4 \ud06c\uae30>]"}, - {"\t [-sigalg ] [-dname ]", - "\t [-sigalg <\uc11c\uba85 \uc54c\uace0\ub9ac\uc998>] [-dname <\ub300\uc0c1 \uc774\ub984>]"}, - {"\t [-validity ] [-keypass ]", - "\t [-validity <\uc720\ud6a8\uc77c>] [-keypass <\ud0a4 \uc554\ud638>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-genseckey [-v] [-protected]", - "-genseckey [-v] [-protected]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-help", "-help"}, - //{"-identitydb [-v] [-protected]", - // "-identitydb [-v] [-protected]"}, - //{"\t [-file ]", "\t [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-import [-v] [-noprompt] [-trustcacerts] [-protected]", - // "-import [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"-importcert [-v] [-noprompt] [-trustcacerts] [-protected]", - "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\ubcc4\uce6d>]"}, - {"\t [-alias ] [-keypass ]", - "\t [-alias <\ubcc4\uce6d>] [-keypass <\ud0a4 \uc554\ud638>]"}, - {"\t [-file ] [-keypass ]", - "\t [-file <\uc778\uc99d\uc11c \ud30c\uc77c>] [-keypass <\ud0a4 \uc554\ud638>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-importkeystore [-v] ", - "-importkeystore [-v] "}, - {"\t [-srckeystore ] [-destkeystore ]", - "\t [-srckeystore <\uc18c\uc2a4 \ud0a4 \uc800\uc7a5\uc18c>] [-destkeystore <\ub300\uc0c1 \ud0a4 \uc800\uc7a5\uc18c>]"}, - {"\t [-srcstoretype ] [-deststoretype ]", - "\t [-srcstoretype <\uc18c\uc2a4 \uc800\uc7a5\uc18c \uc720\ud615>] [-deststoretype <\ub300\uc0c1 \uc800\uc7a5\uc18c \uc720\ud615>]"}, - {"\t [-srcprotected] [-destprotected]", - "\t [-srcprotected] [-destprotected]"}, - {"\t [-srcstorepass ] [-deststorepass ]", - "\t [-srcstorepass <\uc18c\uc2a4 \uc800\uc7a5\uc18c \uc554\ud638>] [-deststorepass <\ub300\uc0c1 \uc800\uc7a5\uc18c \uc554\ud638>]"}, - {"\t [-srcprovidername <\uc18c\uc2a4 \uacf5\uae09\uc790 \uc774\ub984>]\n\t [-destprovidername <\ub300\uc0c1 \uacf5\uae09\uc790 \uc774\ub984>]", // \ud589\uc774 \ub108\ubb34 \uae41\ub2c8\ub2e4. 2\ud589\uc73c\ub85c \ubd84\ud560\ud558\uc2ed\uc2dc\uc624. - "\t [-srcprovidername <\uc18c\uc2a4 \uacf5\uae09\uc790 \uc774\ub984>]\n\t [-destprovidername <\ub300\uc0c1 \uacf5\uae09\uc790 \uc774\ub984>]"}, - {"\t [-srcalias [-destalias ]", - "\t [-srcalias <\uc18c\uc2a4 \ubcc4\uce6d> [-destalias <\ub300\uc0c1 \ubcc4\uce6d>]"}, - {"\t [-srckeypass ] [-destkeypass ]]", - "\t [-srckeypass <\uc18c\uc2a4 \ud0a4 \uc554\ud638>] [-destkeypass <\ub300\uc0c1 \ud0a4 \uc554\ud638>]]"}, - {"\t [-noprompt]", "\t [-noprompt]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-changealias [-v] [-protected] -alias -destalias ", - "-changealias [-v] [-protected] -alias <\ubcc4\uce6d> -destalias <\ub300\uc0c1 \ubcc4\uce6d>"}, - {"\t [-keypass ]", "\t [-keypass <\ud0a4 \uc554\ud638>]"}, - - //{"-keyclone [-v] [-protected]", - // "-keyclone [-v] [-protected]"}, - //{"\t [-alias ] -dest ", - // "\t [-alias <\ubcc4\uce6d>] -dest <\ub300\uc0c1 \ubcc4\uce6d>"}, - //{"\t [-keypass ] [-new ]", - // "\t [-keypass <\ud0a4 \uc554\ud638>] [-new <\uc0c8 \ud0a4 \uc554\ud638>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-keypasswd [-v] [-alias ]", - "-keypasswd [-v] [-alias <\ubcc4\uce6d>]"}, - {"\t [-keypass ] [-new ]", - "\t [-keypass <\uae30\uc874 \ud0a4 \uc554\ud638>] [-new <\uc0c8 \ud0a4 \uc554\ud638>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-list [-v | -rfc] [-protected]", - "-list [-v | -rfc] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\ubcc4\uce6d>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-printcert [-v] [-file ]", - "-printcert [-v] [-file <\uc778\uc99d\uc11c \ud30c\uc77c>]"}, - - //{"-selfcert [-v] [-protected]", - // "-selfcert [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\ubcc4\uce6d>]"}, - //{"\t [-dname ] [-validity ]", - // "\t [-dname <\ub300\uc0c1 \uc774\ub984>] [-validity <\uc720\ud6a8\uc77c>]"}, - //{"\t [-keypass ] [-sigalg ]", - // "\t [-keypass <\ud0a4 \uc554\ud638>] [-sigalg <\uc11c\uba85 \uc54c\uace0\ub9ac\uc998>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-storepasswd [-v] [-new ]", - "-storepasswd [-v] [-new <\uc0c8 \uc800\uc7a5\uc18c \uc554\ud638>]"}, - /** rest is same as -certreq starting from -keystore **/ + {"Extensions.", "\uD655\uC7A5: "}, + {".Empty.value.", "(\uBE44\uC5B4 \uC788\uB294 \uAC12)"}, + {"Extension.Request.", "\uD655\uC7A5 \uC694\uCCAD:"}, + {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.", + "PKCS #10 \uC778\uC99D\uC11C \uC694\uCCAD(1.0 \uBC84\uC804)\n\uC81C\uBAA9: %s\n\uACF5\uC6A9 \uD0A4: %s \uD615\uC2DD %s \uD0A4\n"}, + {"Unknown.keyUsage.type.", "\uC54C \uC218 \uC5C6\uB294 keyUsage \uC720\uD615: "}, + {"Unknown.extendedkeyUsage.type.", "\uC54C \uC218 \uC5C6\uB294 extendedkeyUsage \uC720\uD615: "}, + {"Unknown.AccessDescription.type.", "\uC54C \uC218 \uC5C6\uB294 AccessDescription \uC720\uD615: "}, + {"Unrecognized.GeneralName.type.", "\uC54C \uC218 \uC5C6\uB294 GeneralName \uC720\uD615: "}, + {"This.extension.cannot.be.marked.as.critical.", + "\uC774 \uD655\uC7A5\uC740 \uC911\uC694\uD55C \uAC83\uC73C\uB85C \uD45C\uC2DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. "}, + {"Odd.number.of.hex.digits.found.", "\uD640\uC218 \uAC1C\uC758 16\uC9C4\uC218\uAC00 \uBC1C\uACAC\uB428: "}, + {"Unknown.extension.type.", "\uC54C \uC218 \uC5C6\uB294 \uD655\uC7A5 \uC720\uD615: "}, + {"command.{0}.is.ambiguous.", "{0} \uBA85\uB839\uC774 \uBAA8\uD638\uD568:"}, // policytool - {"Warning: A public key for alias 'signers[i]' does not exist. Make sure a KeyStore is properly configured.", - "\uacbd\uace0:\t \ubcc4\uce6d {0}\uc5d0 \ub300\ud55c \uacf5\uac1c \ud0a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ud0a4 \uc800\uc7a5\uc18c\uac00 \uc81c\ub300\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624."}, - {"Warning: Class not found: class", "\uacbd\uace0: \ud074\ub798\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc74c: {0}"}, - {"Warning: Invalid argument(s) for constructor: {0}", - "\uacbd\uace0:\t \uc798\ubabb\ub41c \uad6c\uc131\uc790 \uc778\uc218: {0}"}, - {"Illegal Principal Type: type", "\uc798\ubabb\ub41c \uae30\ubcf8 \uc720\ud615: {0}"}, - {"Illegal option: option", "\uc798\ubabb\ub41c \uc635\uc158: {0}"}, - {"Usage: policytool [options]", "\uc0ac\uc6a9\ubc95: policytool [\uc635\uc158]"}, - {" [-file ] policy file location", - " [-file <\ud30c\uc77c>] \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"}, - {"Retain", "\uc720\uc9c0"}, + {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.", + "\uACBD\uACE0: {0} \uBCC4\uCE6D\uC5D0 \uB300\uD55C \uACF5\uC6A9 \uD0A4\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uD0A4 \uC800\uC7A5\uC18C\uAC00 \uC81C\uB300\uB85C \uAD6C\uC131\uB418\uC5B4 \uC788\uB294\uC9C0 \uD655\uC778\uD558\uC2ED\uC2DC\uC624."}, + {"Warning.Class.not.found.class", "\uACBD\uACE0: \uD074\uB798\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: {0}"}, + {"Warning.Invalid.argument.s.for.constructor.arg", + "\uACBD\uACE0: \uC0DD\uC131\uC790\uC5D0 \uB300\uD574 \uBD80\uC801\uD569\uD55C \uC778\uC218: {0}"}, + {"Illegal.Principal.Type.type", "\uC798\uBABB\uB41C \uC8FC\uCCB4 \uC720\uD615: {0}"}, + {"Illegal.option.option", "\uC798\uBABB\uB41C \uC635\uC158: {0}"}, + {"Usage.policytool.options.", "\uC0AC\uC6A9\uBC95: policytool [options]"}, + {".file.file.policy.file.location", + " [-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"}, + {"Retain", "\uC720\uC9C0"}, - {"Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name.", - "Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name."}, + {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes", + "\uACBD\uACE0: \uD30C\uC77C \uC774\uB984\uC5D0 \uC774\uC2A4\uCF00\uC774\uD504\uB41C \uBC31\uC2AC\uB798\uC2DC \uBB38\uC790\uAC00 \uD3EC\uD568\uB418\uC5C8\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uBC31\uC2AC\uB798\uC2DC \uBB38\uC790\uB294 \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uD544\uC694\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uC601\uAD6C \uC800\uC7A5\uC18C\uC5D0 \uC815\uCC45 \uCF58\uD150\uCE20\uB97C \uC4F8 \uB54C \uD544\uC694\uC5D0 \uB530\uB77C \uC790\uB3D9\uC73C\uB85C \uBB38\uC790\uAC00 \uC774\uC2A4\uCF00\uC774\uD504\uB429\uB2C8\uB2E4.\n\n\uC785\uB825\uB41C \uC774\uB984\uC744 \uADF8\uB300\uB85C \uC720\uC9C0\uD558\uB824\uBA74 [\uC720\uC9C0]\uB97C \uB204\uB974\uACE0, \uC774\uB984\uC744 \uD3B8\uC9D1\uD558\uB824\uBA74 [\uD3B8\uC9D1]\uC744 \uB204\uB974\uC2ED\uC2DC\uC624."}, - {"Add Public Key Alias", "\uacf5\uac1c \ud0a4 \ubcc4\uce6d \ucd94\uac00"}, - {"Remove Public Key Alias", "\uacf5\uac1c \ud0a4 \ubcc4\uce6d \uc81c\uac70"}, - {"File", "\ud30c\uc77c"}, - {"KeyStore", "\ud0a4 \uc800\uc7a5\uc18c"}, - {"Policy File:", "\uc815\ucc45 \ud30c\uc77c:"}, - {"Could not open policy file: policyFile: e.toString()", - "\uc815\ucc45 \ud30c\uc77c\uc744 \uc5f4\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. {0}: {1}"}, - {"Policy Tool", "\uc815\ucc45 \ub3c4\uad6c"}, - {"Errors have occurred while opening the policy configuration. View the Warning Log for more information.", - "\uc815\ucc45 \uad6c\uc131\uc744 \uc5ec\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uacbd\uace0 \ub85c\uadf8\ub97c \ubcf4\uc2ed\uc2dc\uc624."}, - {"Error", "\uc624\ub958"}, - {"OK", "\ud655\uc778"}, - {"Status", "\uc0c1\ud0dc"}, - {"Warning", "\uacbd\uace0"}, - {"Permission: ", - "\uc0ac\uc6a9 \uad8c\ud55c: "}, - {"Principal Type:", "Principal \uc720\ud615:"}, - {"Principal Name:", "Principal \uc774\ub984:"}, - {"Target Name: ", - "\ub300\uc0c1 \uc774\ub984: "}, - {"Actions: ", - "\uc791\uc5c5: "}, - {"OK to overwrite existing file filename?", - "\uae30\uc874 \ud30c\uc77c {0}\uc744(\ub97c) \uacb9\uccd0\uc4f0\uc2dc\uaca0\uc2b5\ub2c8\uae4c?"}, - {"Cancel", "\ucde8\uc18c"}, - {"CodeBase:", "CodeBase:"}, - {"SignedBy:", "SignedBy:"}, - {"Add Principal", "Principal \ucd94\uac00"}, - {"Edit Principal", "Principal \ud3b8\uc9d1"}, - {"Remove Principal", "Principal \uc81c\uac70"}, - {"Principals:", "Principals:"}, - {" Add Permission", " \uc0ac\uc6a9 \uad8c\ud55c \ucd94\uac00"}, - {" Edit Permission", " \uc0ac\uc6a9 \uad8c\ud55c \ud3b8\uc9d1"}, - {"Remove Permission", "\uc0ac\uc6a9 \uad8c\ud55c \uc81c\uac70"}, - {"Done", "\uc644\ub8cc"}, - {"KeyStore URL:", "\ud0a4 \uc800\uc7a5\uc18c URL:"}, - {"KeyStore Type:", "\ud0a4 \uc800\uc7a5\uc18c \uc720\ud615:"}, - {"KeyStore Provider:", "\ud0a4 \uc800\uc7a5\uc18c \uacf5\uae09\uc790:"}, - {"KeyStore Password URL:", "\ud0a4 \uc800\uc7a5\uc18c \ube44\ubc00\ubc88\ud638 URL:"}, - {"Principals", "Principals"}, - {" Edit Principal:", " Principal \ud3b8\uc9d1:"}, - {" Add New Principal:", " \uc0c8 Principal \ucd94\uac00:"}, - {"Permissions", "\uc0ac\uc6a9 \uad8c\ud55c"}, - {" Edit Permission:", " \uc0ac\uc6a9 \uad8c\ud55c \ud3b8\uc9d1:"}, - {" Add New Permission:", " \uc0c8 \uc0ac\uc6a9 \uad8c\ud55c \ucd94\uac00:"}, - {"Signed By:", "\uc11c\uba85\uc790:"}, - {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name", - "\uc640\uc77c\ub4dc\uce74\ub4dc \uc774\ub984 \uc5c6\uc774 \uc640\uc77c\ub4dc\uce74\ub4dc \ud074\ub798\uc2a4\ub97c \uac00\uc9c4 Principal\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"Cannot Specify Principal without a Name", - "\uc774\ub984 \uc5c6\uc774 Principal\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"Permission and Target Name must have a value", - "\uc0ac\uc6a9 \uad8c\ud55c\uacfc \ub300\uc0c1 \uc774\ub984\uc740 \uac12\uc744 \uac00\uc838\uc57c \ud569\ub2c8\ub2e4."}, - {"Remove this Policy Entry?", "\uc774 \uc815\ucc45 \ud56d\ubaa9\uc744 \uc81c\uac70\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?"}, - {"Overwrite File", "\ud30c\uc77c \uacb9\uccd0\uc4f0\uae30"}, - {"Policy successfully written to filename", - "\uc815\ucc45\uc744 \ud30c\uc77c \uc774\ub984\uc5d0 \uc131\uacf5\uc801\uc73c\ub85c \uae30\ub85d\ud588\uc2b5\ub2c8\ub2e4."}, - {"null filename", "\ud30c\uc77c \uc774\ub984\uc774 \uc5c6\uc74c"}, - {"Save changes?", "\ubcc0\uacbd \uc0ac\ud56d\uc744 \uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?"}, - {"Yes", "\uc608"}, - {"No", "\uc544\ub2c8\uc624"}, - {"Policy Entry", "\uc815\ucc45 \ud56d\ubaa9"}, - {"Save Changes", "\ubcc0\uacbd \uc0ac\ud56d \uc800\uc7a5"}, - {"No Policy Entry selected", "\uc815\ucc45 \ud56d\ubaa9\uc774 \uc120\ud0dd\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"Unable to open KeyStore: ex.toString()", - "\ud0a4 \uc800\uc7a5\uc18c\ub97c \uc5f4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}"}, - {"No principal selected", "Principal\uc744 \uc120\ud0dd\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"No permission selected", "\uc0ac\uc6a9 \uad8c\ud55c\uc744 \uc120\ud0dd\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."}, - {"name", "\uc774\ub984"}, - {"configuration type", "\uad6c\uc131 \uc720\ud615"}, - {"environment variable name", "\ud658\uacbd \ubcc0\uc218 \uc774\ub984"}, - {"library name", "\ub77c\uc774\ube0c\ub7ec\ub9ac \uc774\ub984"}, - {"package name", "\ud328\ud0a4\uc9c0 \uc774\ub984"}, - {"policy type", "\uc815\ucc45 \uc720\ud615"}, - {"property name", "\ud2b9\uc131 \uc774\ub984"}, - {"provider name", "\uacf5\uae09\uc790 \uc774\ub984"}, - {"Principal List", "\uae30\ubcf8 \ubaa9\ub85d"}, - {"Permission List", "\uad8c\ud55c \ubaa9\ub85d"}, - {"Code Base", "\ucf54\ub4dc \ubca0\uc774\uc2a4"}, - {"KeyStore U R L:", "\ud0a4 \uc800\uc7a5\uc18c U R L:"}, - {"KeyStore Password U R L:", "\ud0a4 \uc800\uc7a5\uc18c \ube44\ubc00\ubc88\ud638 U R L:"}, + {"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"}, + {"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}"}, + {"Policy.Tool", "\uC815\uCC45 \uD234"}, + {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.", + "\uC815\uCC45 \uAD6C\uC131\uC744 \uC5EC\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uACBD\uACE0 \uB85C\uADF8\uB97C \uD655\uC778\uD558\uC2ED\uC2DC\uC624."}, + {"Error", "\uC624\uB958"}, + {"OK", "\uD655\uC778"}, + {"Status", "\uC0C1\uD0DC"}, + {"Warning", "\uACBD\uACE0"}, + {"Permission.", + "\uAD8C\uD55C: "}, + {"Principal.Type.", "\uC8FC\uCCB4 \uC720\uD615:"}, + {"Principal.Name.", "\uC8FC\uCCB4 \uC774\uB984:"}, + {"Target.Name.", + "\uB300\uC0C1 \uC774\uB984: "}, + {"Actions.", + "\uC791\uC5C5: "}, + {"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"}, + {"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:"}, + {"Principals", "\uC8FC\uCCB4"}, + {".Edit.Principal.", " \uC8FC\uCCB4 \uD3B8\uC9D1:"}, + {".Add.New.Principal.", " \uC0C8 \uC8FC\uCCB4 \uCD94\uAC00:"}, + {"Permissions", "\uAD8C\uD55C"}, + {".Edit.Permission.", " \uAD8C\uD55C \uD3B8\uC9D1:"}, + {".Add.New.Permission.", " \uC0C8 \uAD8C\uD55C \uCD94\uAC00:"}, + {"Signed.By.", "\uC11C\uBA85\uC790:"}, + {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name", + "\uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uC774\uB984 \uC5C6\uC774 \uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uD074\uB798\uC2A4\uB97C \uC0AC\uC6A9\uD558\uB294 \uC8FC\uCCB4\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"Cannot.Specify.Principal.without.a.Name", + "\uC774\uB984 \uC5C6\uC774 \uC8FC\uCCB4\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"Permission.and.Target.Name.must.have.a.value", + "\uAD8C\uD55C\uACFC \uB300\uC0C1 \uC774\uB984\uC758 \uAC12\uC774 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4."}, + {"Remove.this.Policy.Entry.", "\uC774 \uC815\uCC45 \uD56D\uBAA9\uC744 \uC81C\uAC70\uD558\uACA0\uC2B5\uB2C8\uAE4C?"}, + {"Overwrite.File", "\uD30C\uC77C \uACB9\uCCD0\uC4F0\uAE30"}, + {"Policy.successfully.written.to.filename", + "{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"}, + {"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."}, + {"Unable.to.open.KeyStore.ex.toString.", + "\uD0A4 \uC800\uC7A5\uC18C\uB97C \uC5F4 \uC218 \uC5C6\uC74C: {0}"}, + {"No.principal.selected", "\uC120\uD0DD\uB41C \uC8FC\uCCB4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"No.permission.selected", "\uC120\uD0DD\uB41C \uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"name", "\uC774\uB984"}, + {"configuration.type", "\uAD6C\uC131 \uC720\uD615"}, + {"environment.variable.name", "\uD658\uACBD \uBCC0\uC218 \uC774\uB984"}, + {"library.name", "\uB77C\uC774\uBE0C\uB7EC\uB9AC \uC774\uB984"}, + {"package.name", "\uD328\uD0A4\uC9C0 \uC774\uB984"}, + {"policy.type", "\uC815\uCC45 \uC720\uD615"}, + {"property.name", "\uC18D\uC131 \uC774\uB984"}, + {"Principal.List", "\uC8FC\uCCB4 \uBAA9\uB85D"}, + {"Permission.List", "\uAD8C\uD55C \uBAA9\uB85D"}, + {"Code.Base", "\uCF54\uB4DC \uBCA0\uC774\uC2A4"}, + {"KeyStore.U.R.L.", "\uD0A4 \uC800\uC7A5\uC18C URL:"}, + {"KeyStore.Password.U.R.L.", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 URL:"}, // javax.security.auth.PrivateCredentialPermission - {"invalid null input(s)", "\uc798\ubabb\ub41c null \uc785\ub825"}, - {"actions can only be 'read'", "\uc791\uc5c5\uc740 '\uc77d\uae30' \uc804\uc6a9\uc785\ub2c8\ub2e4."}, - {"permission name [name] syntax invalid: ", - "\uc0ac\uc6a9 \uad8c\ud55c \uc774\ub984 [{0}] \uad6c\ubb38\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4: "}, - {"Credential Class not followed by a Principal Class and Name", - "Principal \ud074\ub798\uc2a4 \ubc0f \uc774\ub984 \ub2e4\uc74c\uc5d0 \uc778\uc99d\uc11c \ud074\ub798\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"Principal Class not followed by a Principal Name", - "Principal \uc774\ub984 \ub2e4\uc74c\uc5d0 Principal \ud074\ub798\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"Principal Name must be surrounded by quotes", - "Principal \uc774\ub984\uc740 \uc778\uc6a9 \ubd80\ud638\ub85c \ubb36\uc5b4\uc57c \ud569\ub2c8\ub2e4."}, - {"Principal Name missing end quote", - "Principal \uc774\ub984\uc5d0 \ub2eb\ub294 \uc778\uc6a9 \ubd80\ud638\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value", - "PrivateCredentialPermission Principal \ud074\ub798\uc2a4\ub294 Principal \uc774\ub984\uc774 \uc640\uc77c\ub4dc\uce74\ub4dc(*) \uac12\uc774 \uc544\ub2cc \uacbd\uc6b0 \uc640\uc77c\ub4dc\uce74\ub4dc(*) \uac12\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name", - "CredOwner:\n\tPrincipal \ud074\ub798\uc2a4 = \ud074\ub798\uc2a4\n\tPrincipal \uc774\ub984 = \uc774\ub984"}, + {"invalid.null.input.s.", "\uB110 \uC785\uB825\uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4."}, + {"actions.can.only.be.read.", "\uC791\uC5C5\uC740 '\uC77D\uAE30' \uC804\uC6A9\uC785\uB2C8\uB2E4."}, + {"permission.name.name.syntax.invalid.", + "\uAD8C\uD55C \uC774\uB984 [{0}] \uAD6C\uBB38\uC774 \uBD80\uC801\uD569\uD568: "}, + {"Credential.Class.not.followed.by.a.Principal.Class.and.Name", + "\uC778\uC99D\uC11C \uD074\uB798\uC2A4 \uB2E4\uC74C\uC5D0 \uC8FC\uCCB4 \uD074\uB798\uC2A4\uC640 \uC774\uB984\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"Principal.Class.not.followed.by.a.Principal.Name", + "\uC8FC\uCCB4 \uD074\uB798\uC2A4 \uB2E4\uC74C\uC5D0 \uC8FC\uCCB4 \uC774\uB984\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"Principal.Name.must.be.surrounded.by.quotes", + "\uC8FC\uCCB4 \uC774\uB984\uC740 \uB530\uC634\uD45C\uB85C \uBB36\uC5B4\uC57C \uD569\uB2C8\uB2E4."}, + {"Principal.Name.missing.end.quote", + "\uC8FC\uCCB4 \uC774\uB984\uC5D0 \uB2EB\uB294 \uB530\uC634\uD45C\uAC00 \uB204\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value", + "\uC8FC\uCCB4 \uC774\uB984\uC774 \uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790(*) \uAC12\uC774 \uC544\uB2CC \uACBD\uC6B0 PrivateCredentialPermission \uC8FC\uCCB4 \uD074\uB798\uC2A4\uB294 \uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790(*) \uAC12\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"CredOwner.Principal.Class.class.Principal.Name.name", + "CredOwner:\n\t\uC8FC\uCCB4 \uD074\uB798\uC2A4 = {0}\n\t\uC8FC\uCCB4 \uC774\uB984 = {1}"}, // javax.security.auth.x500 - {"provided null name", "null \uc774\ub984\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."}, - {"provided null keyword map", "null \ud0a4\uc6cc\ub4dc \ub9f5\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."}, - {"provided null OID map", "null OID \ub9f5\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."}, + {"provided.null.name", "\uB110 \uC774\uB984\uC744 \uC81C\uACF5\uD588\uC2B5\uB2C8\uB2E4."}, + {"provided.null.keyword.map", "\uB110 \uD0A4\uC6CC\uB4DC \uB9F5\uC744 \uC81C\uACF5\uD588\uC2B5\uB2C8\uB2E4."}, + {"provided.null.OID.map", "\uB110 OID \uB9F5\uC744 \uC81C\uACF5\uD588\uC2B5\uB2C8\uB2E4."}, // javax.security.auth.Subject - {"invalid null AccessControlContext provided", - "\uc798\ubabb\ub41c null AccessControlContext\ub97c \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."}, - {"invalid null action provided", "\uc798\ubabb\ub41c null \uc791\uc5c5\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."}, - {"invalid null Class provided", "\uc798\ubabb\ub41c null \ud074\ub798\uc2a4\ub97c \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."}, - {"Subject:\n", "\uc81c\ubaa9:\n"}, - {"\tPrincipal: ", "\tPrincipal: "}, - {"\tPublic Credential: ", "\t\uacf5\uac1c \uc778\uc99d\uc11c: "}, - {"\tPrivate Credentials inaccessible\n", - "\t\uac1c\uc778 \uc778\uc99d\uc11c\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n"}, - {"\tPrivate Credential: ", "\t\uac1c\uc778 \uc778\uc99d\uc11c: "}, - {"\tPrivate Credential inaccessible\n", - "\t\uac1c\uc778 \uc778\uc99d\uc11c\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n"}, - {"Subject is read-only", "\uc81c\ubaa9\uc774 \uc77d\uae30 \uc804\uc6a9\uc785\ub2c8\ub2e4."}, - {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set", - "java.security.Principal\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2cc \uac1d\uccb4\ub97c \uc81c\ubaa9\uc758 Principal \uc138\ud2b8\uc5d0 \ucd94\uac00\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\ub294 \uc911"}, - {"attempting to add an object which is not an instance of class", - "\ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2cc \uac1d\uccb4\ub97c \ucd94\uac00\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\ub294 \uc911"}, + {"invalid.null.AccessControlContext.provided", + "\uBD80\uC801\uD569\uD55C \uB110 AccessControlContext\uAC00 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"invalid.null.action.provided", "\uBD80\uC801\uD569\uD55C \uB110 \uC791\uC5C5\uC774 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"invalid.null.Class.provided", "\uBD80\uC801\uD569\uD55C \uB110 \uD074\uB798\uC2A4\uAC00 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"Subject.", "\uC81C\uBAA9:\n"}, + {".Principal.", "\\\uC8FC\uCCB4: "}, + {".Public.Credential.", "\t\uACF5\uC6A9 \uC778\uC99D\uC11C: "}, + {".Private.Credentials.inaccessible.", + "\t\uC804\uC6A9 \uC778\uC99D\uC11C\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n"}, + {".Private.Credential.", "\t\uC804\uC6A9 \uC778\uC99D\uC11C: "}, + {".Private.Credential.inaccessible.", + "\t\uC804\uC6A9 \uC778\uC99D\uC11C\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n"}, + {"Subject.is.read.only", "\uC81C\uBAA9\uC774 \uC77D\uAE30 \uC804\uC6A9\uC785\uB2C8\uB2E4."}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set", + "java.security.Principal\uC758 \uC778\uC2A4\uD134\uC2A4\uAC00 \uC544\uB2CC \uAC1D\uCCB4\uB97C \uC81C\uBAA9\uC758 \uC8FC\uCCB4 \uC9D1\uD569\uC5D0 \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.class", + "{0}\uC758 \uC778\uC2A4\uD134\uC2A4\uAC00 \uC544\uB2CC \uAC1D\uCCB4\uB97C \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911"}, // javax.security.auth.login.AppConfigurationEntry - {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "}, + {"LoginModuleControlFlag.", "LoginModuleControlFlag: "}, // javax.security.auth.login.LoginContext - {"Invalid null input: name", "\uc798\ubabb\ub41c null \uc785\ub825: \uc774\ub984"}, - {"No LoginModules configured for name", - "{0}\uc5d0 \ub300\ud574 LoginModules\uac00 \uad6c\uc131\ub418\uc9c0 \uc54a\uc558\uc74c"}, - {"invalid null Subject provided", "\uc798\ubabb\ub41c null \uc81c\ubaa9\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."}, - {"invalid null CallbackHandler provided", - "\uc798\ubabb\ub41c null CallbackHandler\ub97c \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."}, - {"null subject - logout called before login", - "null \uc81c\ubaa9 - \ub85c\uadf8\uc778 \uc804\uc5d0 \ub85c\uadf8\uc544\uc6c3\uc744 \ud638\ucd9c\ud588\uc2b5\ub2c8\ub2e4."}, - {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor", - "\uc778\uc218\uac00 \uc5c6\ub294 \uad6c\uc131\uc790\ub97c \uc81c\uacf5\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 LoginModule, {0}\uc744(\ub97c) \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"unable to instantiate LoginModule", - "LoginModule\uc744 \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"unable to instantiate LoginModule: ", - "LoginModule\uc744 \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. "}, - {"unable to find LoginModule class: ", - "LoginModule \ud074\ub798\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: "}, - {"unable to access LoginModule: ", - "LoginModule\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: "}, - {"Login Failure: all modules ignored", - "\ub85c\uadf8\uc778 \uc2e4\ud328: \ubaa8\ub4e0 \ubaa8\ub4c8\uc774 \ubb34\uc2dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4."}, + {"Invalid.null.input.name", "\uBD80\uC801\uD569\uD55C \uB110 \uC785\uB825\uAC12: \uC774\uB984"}, + {"No.LoginModules.configured.for.name", + "{0}\uC5D0 \uB300\uD574 \uAD6C\uC131\uB41C LoginModules\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"invalid.null.Subject.provided", "\uBD80\uC801\uD569\uD55C \uB110 \uC81C\uBAA9\uC774 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"invalid.null.CallbackHandler.provided", + "\uBD80\uC801\uD569\uD55C \uB110 CallbackHandler\uAC00 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"null.subject.logout.called.before.login", + "\uB110 \uC81C\uBAA9 - \uB85C\uADF8\uC778 \uC804\uC5D0 \uB85C\uADF8\uC544\uC6C3\uC774 \uD638\uCD9C\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor", + "\uC778\uC218\uAC00 \uC5C6\uB294 \uC0DD\uC131\uC790\uB97C \uC81C\uACF5\uD558\uC9C0 \uC54A\uC544 LoginModule {0}\uC744(\uB97C) \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"unable.to.instantiate.LoginModule", + "LoginModule\uC744 \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"unable.to.instantiate.LoginModule.", + "LoginModule\uC744 \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC74C: "}, + {"unable.to.find.LoginModule.class.", + "LoginModule \uD074\uB798\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: "}, + {"unable.to.access.LoginModule.", + "LoginModule\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC74C: "}, + {"Login.Failure.all.modules.ignored", + "\uB85C\uADF8\uC778 \uC2E4\uD328: \uBAA8\uB4E0 \uBAA8\uB4C8\uC774 \uBB34\uC2DC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, // sun.security.provider.PolicyFile - {"java.security.policy: error parsing policy:\n\tmessage", - "java.security.policy: {0}\uc744(\ub97c) \uad6c\ubb38 \ubd84\uc11d\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd:\n\t{1}"}, - {"java.security.policy: error adding Permission, perm:\n\tmessage", - "java.security.policy: {0} \uc0ac\uc6a9 \uad8c\ud55c\uc744 \ucd94\uac00\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd:\n\t{1}"}, - {"java.security.policy: error adding Entry:\n\tmessage", - "java.security.policy: \ud56d\ubaa9\uc744 \ucd94\uac00\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd:\n\t{0}"}, - {"alias name not provided (pe.name)", "\ubcc4\uce6d\uc774 \uc81c\uacf5\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4({0})."}, - {"unable to perform substitution on alias, suffix", - "\ubcc4\uce6d{0}\uc5d0\uc11c \ub300\uccb4 \uc218\ud589\uc774 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4."}, - {"substitution value, prefix, unsupported", - "\ub300\uccb4 \uac12 {0}\uc774(\uac00) \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."}, - {"(", "("}, - {")", ")"}, - {"type can't be null","\uc720\ud615\uc740 null\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, + {"java.security.policy.error.parsing.policy.message", + "java.security.policy: {0}\uC758 \uAD6C\uBB38\uC744 \uBD84\uC11D\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD:\n\t{1}"}, + {"java.security.policy.error.adding.Permission.perm.message", + "java.security.policy: {0} \uAD8C\uD55C\uC744 \uCD94\uAC00\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD:\n\t{1}"}, + {"java.security.policy.error.adding.Entry.message", + "java.security.policy: \uD56D\uBAA9\uC744 \uCD94\uAC00\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD:\n\t{0}"}, + {"alias.name.not.provided.pe.name.", "\uBCC4\uCE6D \uC774\uB984\uC774 \uC81C\uACF5\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4({0})."}, + {"unable.to.perform.substitution.on.alias.suffix", + "{0} \uBCC4\uCE6D\uC744 \uB300\uCCB4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"substitution.value.prefix.unsupported", + "\uB300\uCCB4 \uAC12 {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"type.can.t.be.null","\uC720\uD615\uC740 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, // sun.security.provider.PolicyParser - {"keystorePasswordURL can not be specified without also specifying keystore", - "Keystore \uc9c0\uc815 \uc5c6\uc774 keystorePasswordURL\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"expected keystore type", "keystore \uc720\ud615\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4."}, - {"expected keystore provider", "keystore \uacf5\uae09\uc790\uac00 \uc608\uc0c1\ub429\ub2c8\ub2e4."}, - {"multiple Codebase expressions", - "\ubcf5\uc218 Codebase \ud45c\ud604\uc2dd"}, - {"multiple SignedBy expressions","\ubcf5\uc218 SignedBy \ud45c\ud604\uc2dd"}, - {"SignedBy has empty alias","SignedBy\uc5d0 \ube44\uc5b4 \uc788\ub294 \ubcc4\uce6d\uc774 \uc788\uc2b5\ub2c8\ub2e4."}, - {"can not specify Principal with a wildcard class without a wildcard name", - "\uc640\uc77c\ub4dc\uce74\ub4dc \uc774\ub984 \uc5c6\uc774 \uc640\uc77c\ub4dc\uce74\ub4dc \ud074\ub798\uc2a4\ub97c \uac00\uc9c4 Principal\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, - {"expected codeBase or SignedBy or Principal", - "codeBase, SignedBy \ub610\ub294 Principal\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4."}, - {"expected permission entry", "\uc0ac\uc6a9 \uad8c\ud55c \ud56d\ubaa9\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4."}, - {"number ", "\ubc88\ud638 "}, - {"expected [expect], read [end of file]", - "[{0}]\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4. [EOF]\ub97c \uc77d\uc5c8\uc2b5\ub2c8\ub2e4."}, - {"expected [;], read [end of file]", - "[;]\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4. [EOF]\ub97c \uc77d\uc5c8\uc2b5\ub2c8\ub2e4."}, - {"line number: msg", "\ud589 {0}: {1}"}, - {"line number: expected [expect], found [actual]", - "\ud589 {0}: [{1}]\uc744(\ub97c) \uc608\uc0c1\ud588\ub294\ub370, [{2}]\uc774(\uac00) \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4."}, - {"null principalClass or principalName", - "principalClass \ub610\ub294 principalName\uc774 \uc5c6\uc2b5\ub2c8\ub2e4."}, + {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore", + "\uD0A4 \uC800\uC7A5\uC18C\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uACE0 keystorePasswordURL\uC744 \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"expected.keystore.type", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"expected.keystore.provider", "\uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"multiple.Codebase.expressions", + "Codebase \uD45C\uD604\uC2DD\uC774 \uC5EC\uB7EC \uAC1C\uC785\uB2C8\uB2E4."}, + {"multiple.SignedBy.expressions","SignedBy \uD45C\uD604\uC2DD\uC774 \uC5EC\uB7EC \uAC1C\uC785\uB2C8\uB2E4."}, + {"SignedBy.has.empty.alias","SignedBy\uC758 \uBCC4\uCE6D\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."}, + {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name", + "\uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uC774\uB984 \uC5C6\uC774 \uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uD074\uB798\uC2A4\uB97C \uC0AC\uC6A9\uD558\uB294 \uC8FC\uCCB4\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}, + {"expected.codeBase.or.SignedBy.or.Principal", + "codeBase, SignedBy \uB610\uB294 \uC8FC\uCCB4\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"expected.permission.entry", "\uAD8C\uD55C \uD56D\uBAA9\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."}, + {"number.", "\uC22B\uC790 "}, + {"expected.expect.read.end.of.file.", + "[{0}]\uC774(\uAC00) \uD544\uC694\uD558\uC9C0\uB9CC [\uD30C\uC77C\uC758 \uB05D]\uAE4C\uC9C0 \uC77D\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"expected.read.end.of.file.", + "[;]\uC774 \uD544\uC694\uD558\uC9C0\uB9CC [\uD30C\uC77C\uC758 \uB05D]\uAE4C\uC9C0 \uC77D\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"line.number.msg", "{0} \uD589: {1}"}, + {"line.number.expected.expect.found.actual.", + "{0} \uD589: [{1}]\uC774(\uAC00) \uD544\uC694\uD558\uC9C0\uB9CC [{2}]\uC774(\uAC00) \uBC1C\uACAC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."}, + {"null.principalClass.or.principalName", + "principalClass \uB610\uB294 principalName\uC774 \uB110\uC785\uB2C8\uB2E4."}, // sun.security.pkcs11.SunPKCS11 - {"PKCS11 Token [providerName] Password: ", - "PKCS11 \ud1a0\ud070 [{0}] \uc554\ud638: "}, + {"PKCS11.Token.providerName.Password.", + "PKCS11 \uD1A0\uD070 [{0}] \uBE44\uBC00\uBC88\uD638: "}, /* --- DEPRECATED --- */ // javax.security.auth.Policy - {"unable to instantiate Subject-based policy", - "\uc8fc\uc81c \uae30\ubc18 \uc815\ucc45\uc744 \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."} + {"unable.to.instantiate.Subject.based.policy", + "\uC81C\uBAA9 \uAE30\uBC18 \uC815\uCC45\uC744 \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."} }; @@ -648,3 +670,4 @@ public class Resources_ko extends java.util.ListResourceBundle { return contents; } } + diff --git a/jdk/src/share/classes/sun/security/util/Resources_pt_BR.java b/jdk/src/share/classes/sun/security/util/Resources_pt_BR.java index 4eaf5295f35..26e316391f7 100644 --- a/jdk/src/share/classes/sun/security/util/Resources_pt_BR.java +++ b/jdk/src/share/classes/sun/security/util/Resources_pt_BR.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -29,607 +29,633 @@ package sun.security.util; *

    This class represents the ResourceBundle * for javax.security.auth and sun.security. * - * @version 1.33, 12/06/05 */ public class Resources_pt_BR extends java.util.ListResourceBundle { private static final Object[][] contents = { - // shared (from jarsigner) - {" ", " "}, - {" ", " "}, - {" ", " "}, - {", ", ", "}, - // shared (from keytool) - {"\n", "\n"}, - {"*******************************************", - "*******************************************"}, - {"*******************************************\n\n", - "*******************************************\n\n"}, + // shared (from jarsigner) + {"SPACE", " "}, + {"2SPACE", " "}, + {"6SPACE", " "}, + {"COMMA", ", "}, + // shared (from keytool) + {"NEWLINE", "\n"}, + {"STAR", + "*******************************************"}, + {"STARNN", + "*******************************************\n\n"}, - // keytool - {"keytool error: ", "erro de keytool: "}, - {"Illegal option: ", "Op\u00e7\u00e3o ilegal: "}, - {"Try keytool -help","Tentar keytool -help"}, - {"Command option needs an argument.", "A op\u00e7\u00e3o de comando {0} precisa de um argumento."}, - {"Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified value.", - "Aviso: senhas de chave e de armazenamento diferentes n\u00e3o suportadas para KeyStores PKCS12. Ignorando valor {0} especificado pelo usu\u00e1rio."}, - {"-keystore must be NONE if -storetype is {0}", - "-keystore deve ser NONE se -storetype for {0}"}, - {"Too may retries, program terminated", - "N\u00famero de tentativas excedido, programa finalizado"}, - {"-storepasswd and -keypasswd commands not supported if -storetype is {0}", - "comandos -storepasswd e -keypasswd n\u00e3o suportados se -storetype for {0}"}, - {"-keypasswd commands not supported if -storetype is PKCS12", - "comandos -keypasswd n\u00e3o suportados se -storetype for PKCS12"}, - {"-keypass and -new can not be specified if -storetype is {0}", - "-keypass e -new n\u00e3o podem ser especificados se -storetype for {0}"}, - {"if -protected is specified, then -storepass, -keypass, and -new must not be specified", - "se -protected estiver especificado, ent\u00e3o -storepass, -keypass e -new n\u00e3o devem ser especificados"}, - {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified", - "se -srcprotected estiver especificado, ent\u00e3o -srcstorepass e -srckeypass n\u00e3o devem ser especificados"}, - {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified", - "se o armazenamento de chaves n\u00e3o estiver protegido por senha, ent\u00e3o -storepass, -keypass e -new n\u00e3o devem ser especificados"}, - {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified", - "se o armazenamento de chaves de origem n\u00e3o estiver protegido por senha, ent\u00e3o -srcstorepass e -srckeypass n\u00e3o devem ser especificados"}, - {"Validity must be greater than zero", - "A validade deve ser maior do que zero"}, - {"provName not a provider", "{0} n\u00e3o \u00e9 um fornecedor"}, - {"Usage error: no command provided", "Erro de uso: nenhum comando fornecido"}, - {"Usage error, is not a legal command", "Erro de uso, {0} n\u00e3o \u00e9 um comando legal"}, - {"Source keystore file exists, but is empty: ", "O arquivo de armazenamento de chaves de origem existe, mas est\u00e1 vazio: "}, - {"Please specify -srckeystore", "Especifique -srckeystore"}, - {"Must not specify both -v and -rfc with 'list' command", - "N\u00e3o devem ser especificados -v e -rfc com o comando 'list'"}, - {"Key password must be at least 6 characters", - "A senha da chave deve ter como m\u00ednimo 6 caracteres"}, - {"New password must be at least 6 characters", - "A nova senha deve ter como m\u00ednimo 6 caracteres"}, - {"Keystore file exists, but is empty: ", - "O arquivo de armazenamento de chaves existe, mas est\u00e1 vazio: "}, - {"Keystore file does not exist: ", - "O arquivo de armazenamento de chaves n\u00e3o existe. "}, - {"Must specify destination alias", "Deve ser especificado um alias de destino"}, - {"Must specify alias", "Deve ser especificado um alias"}, - {"Keystore password must be at least 6 characters", - "A senha do armazenamento de chaves deve ter como m\u00ednimo 6 caracteres"}, - {"Enter keystore password: ", "Insira a senha do armazenamento de chaves: "}, - {"Enter source keystore password: ", "Insira a senha do armazenamento de chaves de origem: "}, - {"Enter destination keystore password: ", "Insira a senha do armazenamento de chaves de destino: "}, - {"Keystore password is too short - must be at least 6 characters", - "A senha do armazenamento de chaves \u00e9 muito curta - deve ter como m\u00ednimo 6 caracteres"}, - {"Unknown Entry Type", "Tipo de entrada desconhecido"}, - {"Too many failures. Alias not changed", "Excesso de falhas. Alias n\u00e3o alterado"}, - {"Entry for alias successfully imported.", - "Entrada do alias {0} importada com \u00eaxito."}, - {"Entry for alias not imported.", "Entrada do alias {0} n\u00e3o importada."}, - {"Problem importing entry for alias : .\nEntry for alias not imported.", - "Problema ao importar a entrada do {0}: {1}.\nEntrada do alias {0} n\u00e3o importada."}, - {"Import command completed: entries successfully imported, entries failed or cancelled", - "Comando de importa\u00e7\u00e3o conclu\u00eddo: {0} entradas importadas com \u00eaxito, {1} entradas falhas ou canceladas"}, - {"Warning: Overwriting existing alias in destination keystore", - "Aviso: substitui\u00e7\u00e3o de alias {0} existente no armazenamento de chaves de destino"}, - {"Existing entry alias exists, overwrite? [no]: ", - "Entrada j\u00e1 existente no alias {0}, substituir? [n\u00e3o]: "}, - {"Too many failures - try later", "Excesso de falhas - tentar mais tarde"}, - {"Certification request stored in file ", - "Solicita\u00e7\u00e3o de certificado armazenada no arquivo <{0}>"}, - {"Submit this to your CA", "Enviar \u00e0 CA"}, - {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified", - "se o alias n\u00e3o estiver especificado, destalias, srckeypass e destkeypass n\u00e3o devem ser especificados"}, - {"Certificate stored in file ", - "Certificado armazenado no arquivo <{0}>"}, - {"Certificate reply was installed in keystore", - "Resposta do certificado foi instalada no armazenamento de chaves"}, - {"Certificate reply was not installed in keystore", - "Resposta do certificado n\u00e3o foi instalada no armazenamento de chaves"}, - {"Certificate was added to keystore", - "O certificado foi adicionado ao armazenamento de chaves"}, - {"Certificate was not added to keystore", - "O certificado n\u00e3o foi adicionado ao armazenamento de chaves"}, - {"[Storing ksfname]", "[Armazenando {0}]"}, - {"alias has no public key (certificate)", - "{0} n\u00e3o possui chave p\u00fablica (certificado)"}, - {"Cannot derive signature algorithm", - "N\u00e3o \u00e9 poss\u00edvel obter algoritmo de assinatura"}, - {"Alias does not exist", - "O alias <{0}> n\u00e3o existe"}, - {"Alias has no certificate", - "O alias <{0}> n\u00e3o possui certificado"}, - {"Key pair not generated, alias already exists", - "Par de chaves n\u00e3o gerado, o alias <{0}> j\u00e1 existe"}, - {"Cannot derive signature algorithm", - "N\u00e3o \u00e9 poss\u00edvel obter algoritmo de assinatura"}, - {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name", + // keytool: Help part + {".OPTION.", " [OPTION]..."}, + {"Options.", "Op\u00E7\u00F5es:"}, + {"Use.keytool.help.for.all.available.commands", + "Use \"keytool -help\" para todos os comandos dispon\u00EDveis"}, + {"Key.and.Certificate.Management.Tool", + "Ferramenta de Gerenciamento de Chave e Certificado"}, + {"Commands.", "Comandos:"}, + {"Use.keytool.command.name.help.for.usage.of.command.name", + "Use \"keytool -command_name -help\" para uso de command_name"}, + // keytool: help: commands + {"Generates.a.certificate.request", + "Gera uma solicita\u00E7\u00E3o de certificado"}, //-certreq + {"Changes.an.entry.s.alias", + "Altera um alias de entrada"}, //-changealias + {"Deletes.an.entry", + "Deleta uma entrada"}, //-delete + {"Exports.certificate", + "Exporta o certificado"}, //-exportcert + {"Generates.a.key.pair", + "Gera um par de chaves"}, //-genkeypair + {"Generates.a.secret.key", + "Gera uma chave secreta"}, //-genseckey + {"Generates.certificate.from.a.certificate.request", + "Gera um certificado de uma solicita\u00E7\u00E3o de certificado"}, //-gencert + {"Generates.CRL", "Gera CRL"}, //-gencrl + {"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.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", + "Clona uma entrada de chave"}, //-keyclone + {"Changes.the.key.password.of.an.entry", + "Altera a senha da chave de uma entrada"}, //-keypasswd + {"Lists.entries.in.a.keystore", + "Lista entradas em uma \u00E1rea de armazenamento de chaves"}, //-list + {"Prints.the.content.of.a.certificate", + "Imprime o conte\u00FAdo de um certificado"}, //-printcert + {"Prints.the.content.of.a.certificate.request", + "Imprime o conte\u00FAdo de uma solicita\u00E7\u00E3o de certificado"}, //-printcertreq + {"Prints.the.content.of.a.CRL.file", + "Imprime o conte\u00FAdo de um arquivo CRL"}, //-printcrl + {"Generates.a.self.signed.certificate", + "Gera um certificado autoassinado"}, //-selfcert + {"Changes.the.store.password.of.a.keystore", + "Altera a senha de armazenamento de uma \u00E1rea de armazenamento de chaves"}, //-storepasswd + // keytool: help: options + {"alias.name.of.the.entry.to.process", + "nome do alias da entrada a ser processada"}, //-alias + {"destination.alias", + "alias de destino"}, //-destalias + {"destination.key.password", + "senha da chave de destino"}, //-destkeypass + {"destination.keystore.name", + "nome da \u00E1rea de armazenamento de chaves de destino"}, //-destkeystore + {"destination.keystore.password.protected", + "senha protegida da \u00E1rea de armazenamento de chaves de destino"}, //-destprotected + {"destination.keystore.provider.name", + "nome do fornecedor da \u00E1rea de armazenamento de chaves de destino"}, //-destprovidername + {"destination.keystore.password", + "senha da \u00E1rea de armazenamento de chaves de destino"}, //-deststorepass + {"destination.keystore.type", + "tipo de \u00E1rea de armazenamento de chaves de destino"}, //-deststoretype + {"distinguished.name", + "nome distinto"}, //-dname + {"X.509.extension", + "extens\u00E3o X.509"}, //-ext + {"output.file.name", + "nome do arquivo de sa\u00EDda"}, //-file and -outfile + {"input.file.name", + "nome do arquivo de entrada"}, //-file and -infile + {"key.algorithm.name", + "nome do algoritmo da chave"}, //-keyalg + {"key.password", + "senha da chave"}, //-keypass + {"key.bit.size", + "tamanho do bit da chave"}, //-keysize + {"keystore.name", + "nome da \u00E1rea de armazenamento de chaves"}, //-keystore + {"new.password", + "nova senha"}, //-new + {"do.not.prompt", + "n\u00E3o perguntar"}, //-noprompt + {"password.through.protected.mechanism", + "senha por meio de mecanismo protegido"}, //-protected + {"provider.argument", + "argumento do fornecedor"}, //-providerarg + {"provider.class.name", + "nome da classe do fornecedor"}, //-providerclass + {"provider.name", + "nome do fornecedor"}, //-providername + {"provider.classpath", + "classpath do fornecedor"}, //-providerpath + {"output.in.RFC.style", + "sa\u00EDda no estilo RFC"}, //-rfc + {"signature.algorithm.name", + "nome do algoritmo de assinatura"}, //-sigalg + {"source.alias", + "alias de origem"}, //-srcalias + {"source.key.password", + "senha da chave de origem"}, //-srckeypass + {"source.keystore.name", + "nome da \u00E1rea de armazenamento de chaves de origem"}, //-srckeystore + {"source.keystore.password.protected", + "senha protegida da \u00E1rea de armazenamento de chaves de origem"}, //-srcprotected + {"source.keystore.provider.name", + "nome do fornecedor da \u00E1rea de armazenamento de chaves de origem"}, //-srcprovidername + {"source.keystore.password", + "senha da \u00E1rea de armazenamento de chaves de origem"}, //-srcstorepass + {"source.keystore.type", + "tipo de \u00E1rea de armazenamento de chaves de origem"}, //-srcstoretype + {"SSL.server.host.and.port", + "porta e host do servidor SSL"}, //-sslserver + {"signed.jar.file", + "arquivo jar assinado"}, //=jarfile + {"certificate.validity.start.date.time", + "data/hora inicial de validade do certificado"}, //-startdate + {"keystore.password", + "senha da \u00E1rea de armazenamento de chaves"}, //-storepass + {"keystore.type", + "tipo de \u00E1rea de armazenamento de chaves"}, //-storetype + {"trust.certificates.from.cacerts", + "certificados confi\u00E1veis do cacerts"}, //-trustcacerts + {"verbose.output", + "sa\u00EDda detalhada"}, //-v + {"validity.number.of.days", + "n\u00FAmero de dias da validade"}, //-validity + {"Serial.ID.of.cert.to.revoke", + "ID de s\u00E9rie do certificado a ser revogado"}, //-id + // keytool: Running part + {"keytool.error.", "erro de keytool: "}, + {"Illegal.option.", "Op\u00E7\u00E3o inv\u00E1lida: "}, + {"Illegal.value.", "Valor inv\u00E1lido: "}, + {"Unknown.password.type.", "Tipo de senha desconhecido: "}, + {"Cannot.find.environment.variable.", + "N\u00E3o \u00E9 poss\u00EDvel localizar a vari\u00E1vel do ambiente: "}, + {"Cannot.find.file.", "N\u00E3o \u00E9 poss\u00EDvel localizar o arquivo: "}, + {"Command.option.flag.needs.an.argument.", "A op\u00E7\u00E3o de comando {0} precisa de um argumento."}, + {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.", + "Advert\u00EAncia: Senhas de chave e de armazenamento diferentes n\u00E3o suportadas para KeyStores PKCS12. Ignorando valor {0} especificado pelo usu\u00E1rio."}, + {".keystore.must.be.NONE.if.storetype.is.{0}", + "-keystore deve ser NONE se -storetype for {0}"}, + {"Too.many.retries.program.terminated", + "Excesso de tentativas de repeti\u00E7\u00E3o; programa finalizado"}, + {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}", + "comandos -storepasswd e -keypasswd n\u00E3o suportados se -storetype for {0}"}, + {".keypasswd.commands.not.supported.if.storetype.is.PKCS12", + "comandos -keypasswd n\u00E3o suportados se -storetype for PKCS12"}, + {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}", + "-keypass e -new n\u00E3o podem ser especificados se -storetype for {0}"}, + {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified", + "se -protected for especificado, ent\u00E3o -storepass, -keypass e -new n\u00E3o dever\u00E3o ser especificados"}, + {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified", + "se -srcprotected for especificado, ent\u00E3o -srcstorepass e -srckeypass n\u00E3o dever\u00E3o ser especificados"}, + {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified", + "se a \u00E1rea de armazenamento de chaves n\u00E3o estiver protegida por senha, ent\u00E3o -storepass, -keypass e -new n\u00E3o dever\u00E3o ser especificados"}, + {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", + "se a \u00E1rea de armazenamento de chaves de origem n\u00E3o estiver protegida por senha, ent\u00E3o -srcstorepass e -srckeypass n\u00E3o dever\u00E3o ser especificados"}, + {"Illegal.startdate.value", "valor da data inicial inv\u00E1lido"}, + {"Validity.must.be.greater.than.zero", + "A validade deve ser maior do que zero"}, + {"provName.not.a.provider", "{0} n\u00E3o \u00E9 um fornecedor"}, + {"Usage.error.no.command.provided", "Erro de uso: nenhum comando fornecido"}, + {"Source.keystore.file.exists.but.is.empty.", "O arquivo da \u00E1rea de armazenamento de chaves de origem existe, mas est\u00E1 vazio: "}, + {"Please.specify.srckeystore", "Especifique -srckeystore"}, + {"Must.not.specify.both.v.and.rfc.with.list.command", + "N\u00E3o devem ser especificados -v e -rfc com o comando 'list'"}, + {"Key.password.must.be.at.least.6.characters", + "A senha da chave deve ter, no m\u00EDnimo, 6 caracteres"}, + {"New.password.must.be.at.least.6.characters", + "A nova senha deve ter, no m\u00EDnimo, 6 caracteres"}, + {"Keystore.file.exists.but.is.empty.", + "O arquivo da \u00E1rea de armazenamento de chaves existe, mas est\u00E1 vazio: "}, + {"Keystore.file.does.not.exist.", + "O arquivo da \u00E1rea de armazenamento de chaves n\u00E3o existe. "}, + {"Must.specify.destination.alias", "Deve ser especificado um alias de destino"}, + {"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.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: "}, + {"Keystore.password.is.too.short.must.be.at.least.6.characters", + "A senha da \u00E1rea de armazenamento de chaves \u00E9 muito curta - ela deve ter, no m\u00EDnimo, 6 caracteres"}, + {"Unknown.Entry.Type", "Tipo de Entrada Desconhecido"}, + {"Too.many.failures.Alias.not.changed", "Excesso de falhas. Alias n\u00E3o alterado"}, + {"Entry.for.alias.alias.successfully.imported.", + "Entrada do alias {0} importada com \u00EAxito."}, + {"Entry.for.alias.alias.not.imported.", "Entrada do alias {0} n\u00E3o importada."}, + {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.", + "Problema ao importar a entrada do alias {0}: {1}.\nEntrada do alias {0} n\u00E3o importada."}, + {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled", + "Comando de importa\u00E7\u00E3o conclu\u00EDdo: {0} entradas importadas com \u00EAxito, {1} entradas falharam ou foram canceladas"}, + {"Warning.Overwriting.existing.alias.alias.in.destination.keystore", + "Advert\u00EAncia: Substitui\u00E7\u00E3o do alias {0} existente na \u00E1rea de armazenamento de chaves de destino"}, + {"Existing.entry.alias.alias.exists.overwrite.no.", + "Entrada j\u00E1 existente no alias {0}, substituir? [n\u00E3o]: "}, + {"Too.many.failures.try.later", "Excesso de falhas - tente mais tarde"}, + {"Certification.request.stored.in.file.filename.", + "Solicita\u00E7\u00E3o de certificado armazenada no arquivo <{0}>"}, + {"Submit.this.to.your.CA", "Submeter \u00E0 CA"}, + {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified", + "se o alias n\u00E3o estiver especificado, destalias, srckeypass e destkeypass n\u00E3o dever\u00E3o ser especificados"}, + {"Certificate.stored.in.file.filename.", + "Certificado armazenado no arquivo <{0}>"}, + {"Certificate.reply.was.installed.in.keystore", + "A resposta do certificado foi instalada na \u00E1rea de armazenamento de chaves"}, + {"Certificate.reply.was.not.installed.in.keystore", + "A resposta do certificado n\u00E3o foi instalada na \u00E1rea de armazenamento de chaves"}, + {"Certificate.was.added.to.keystore", + "O certificado foi adicionado \u00E0 \u00E1rea de armazenamento de chaves"}, + {"Certificate.was.not.added.to.keystore", + "O certificado n\u00E3o foi adicionado \u00E0 \u00E1rea de armazenamento de chaves"}, + {".Storing.ksfname.", "[Armazenando {0}]"}, + {"alias.has.no.public.key.certificate.", + "{0} n\u00E3o tem chave p\u00FAblica (certificado)"}, + {"Cannot.derive.signature.algorithm", + "N\u00E3o \u00E9 poss\u00EDvel obter um algoritmo de assinatura"}, + {"Alias.alias.does.not.exist", + "O alias <{0}> n\u00E3o existe"}, + {"Alias.alias.has.no.certificate", + "O alias <{0}> n\u00E3o tem certificado"}, + {"Key.pair.not.generated.alias.alias.already.exists", + "Par de chaves n\u00E3o gerado; o alias <{0}> j\u00E1 existe"}, + {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for", "Gerando o par de chaves {1} de {0} bit e o certificado autoassinado ({2}) com uma validade de {3} dias\n\tpara: {4}"}, - {"Enter key password for ", "Inserir a senha da chave de <{0}>"}, - {"\t(RETURN if same as keystore password): ", - "\t(RETURN se for igual \u00e0 senha do armazenamento de chaves): "}, - {"Key password is too short - must be at least 6 characters", - "A senha da chave \u00e9 muito curta - deve ter como m\u00ednimo 6 caracteres"}, - {"Too many failures - key not added to keystore", - "Excesso de falhas - chave n\u00e3o adicionada ao armazenamento de chaves"}, - {"Destination alias already exists", - "O alias de destino <{0}> j\u00e1 existe"}, - {"Password is too short - must be at least 6 characters", - "A senha \u00e9 muito curta - deve ter como m\u00ednimo 6 caracteres"}, - {"Too many failures. Key entry not cloned", - "Excesso de falhas. Entrada da chave n\u00e3o clonada"}, - {"key password for ", "senha da chave de <{0}>"}, - {"Keystore entry for already exists", - "A entrada do armazenamento de chaves de <{0}> j\u00e1 existe"}, - {"Creating keystore entry for ...", - "Criando entrada do armazenamento de chaves para <{0}> ..."}, - {"No entries from identity database added", - "Nenhuma entrada adicionada do banco de dados de identidades"}, - {"Alias name: alias", "Nome do alias: {0}"}, - {"Creation date: keyStore.getCreationDate(alias)", - "Data de cria\u00e7\u00e3o: {0,data}"}, - {"alias, keyStore.getCreationDate(alias), ", - "{0}, {1,data}, "}, - {"alias, ", "{0}, "}, - {"Entry type: ", "Tipo de entrada: {0}"}, - {"Certificate chain length: ", "Comprimento da cadeia de certificados: "}, - {"Certificate[(i + 1)]:", "Certificado[{0,n\u00famero,inteiro}]:"}, - {"Certificate fingerprint (MD5): ", "Fingerprint (MD5) do certificado: "}, - {"Entry type: trustedCertEntry\n", "Tipo de entrada: trustedCertEntry\n"}, - {"trustedCertEntry,", "trustedCertEntry,"}, - {"Keystore type: ", "Tipo de armazenamento de chaves: "}, - {"Keystore provider: ", "Fornecedor de armazenamento de chaves: "}, - {"Your keystore contains keyStore.size() entry", - "Seu armazenamento de chaves cont\u00e9m {0,n\u00famero,inteiro} entrada"}, - {"Your keystore contains keyStore.size() entries", - "Seu armazenamento de chaves cont\u00e9m {0,n\u00famero,inteiro} entradas"}, - {"Failed to parse input", "Falha ao analisar a entrada"}, - {"Empty input", "Entrada vazia"}, - {"Not X.509 certificate", "N\u00e3o \u00e9 um certificado X.509"}, - {"Cannot derive signature algorithm", - "N\u00e3o \u00e9 poss\u00edvel obter algoritmo de assinatura"}, - {"alias has no public key", "{0} n\u00e3o possui chave p\u00fablica"}, - {"alias has no X.509 certificate", "{0} n\u00e3o possui certificado X.509"}, - {"New certificate (self-signed):", "Novo certificado (autoassinado):"}, - {"Reply has no certificates", "A resposta n\u00e3o possui certificado"}, - {"Certificate not imported, alias already exists", - "Certificado n\u00e3o importado, o alias <{0}> j\u00e1 existe"}, - {"Input not an X.509 certificate", "A entrada n\u00e3o \u00e9 um certificado X.509"}, - {"Certificate already exists in keystore under alias ", - "O certificado j\u00e1 existe no armazenamento de chaves no alias <{0}>"}, - {"Do you still want to add it? [no]: ", - "Ainda deseja adicion\u00e1-lo? [n\u00e3o]: "}, - {"Certificate already exists in system-wide CA keystore under alias ", - "O certificado j\u00e1 existe no armazenamento de chaves de CA em todo o sistema no alias <{0}>"}, - {"Do you still want to add it to your own keystore? [no]: ", - "Ainda deseja adicion\u00e1-lo ao seu pr\u00f3prio armazenamento de chaves? [n\u00e3o]: "}, - {"Trust this certificate? [no]: ", "Confiar neste certificado? [n\u00e3o]: "}, - {"YES", "SIM"}, - {"New prompt: ", "Nova {0}: "}, - {"Passwords must differ", "As senhas devem ser diferentes"}, - {"Re-enter new prompt: ", "Insira novamente a nova {0}: "}, - {"Re-enter new password: ", "Insira novamente a nova senha: "}, - {"They don't match. Try again", "Elas n\u00e3o correspondem. Tente novamente"}, - {"Enter prompt alias name: ", "Insira o nome do alias {0}: "}, - {"Enter new alias name\t(RETURN to cancel import for this entry): ", - "Insira o novo nome do alias\t(RETURN para cancelar a importa\u00e7\u00e3o desta entrada): "}, - {"Enter alias name: ", "Insira o nome do alias: "}, - {"\t(RETURN if same as for )", - "\t(RETURN se for igual ao de <{0}>)"}, - {"*PATTERN* printX509Cert", - "Propriet\u00e1rio: {0}\nEmissor: {1}\nN\u00famero de s\u00e9rie: {2}\nV\u00e1lido de: {3} a: {4}\nFingerprints do certificado:\n\t MD5: {5}\n\t SHA1: {6}\n\t Nome do algoritmo de assinatura: {7}\n\t Vers\u00e3o: {8}"}, - {"What is your first and last name?", - "Qual \u00e9 o seu nome e o seu sobrenome?"}, - {"What is the name of your organizational unit?", - "Qual \u00e9 o nome da sua unidade organizacional?"}, - {"What is the name of your organization?", - "Qual \u00e9 o nome da sua empresa?"}, - {"What is the name of your City or Locality?", - "Qual \u00e9 o nome da sua cidade ou localidade?"}, - {"What is the name of your State or Province?", - "Qual \u00e9 o nome do seu estado ou munic\u00edpio?"}, - {"What is the two-letter country code for this unit?", - "Quais s\u00e3o as duas letras do c\u00f3digo do pa\u00eds desta unidade?"}, - {"Is correct?", "{0} \u00e9 correto?"}, - {"no", "n\u00e3o"}, - {"yes", "sim"}, - {"y", "s"}, - {" [defaultValue]: ", " [{0}]: "}, - {"Alias has no key", - "O alias <{0}> n\u00e3o possui chave"}, - {"Alias references an entry type that is not a private key entry. The -keyclone command only supports cloning of private key entries", - "O alias <{0}> faz refer\u00eancia a um tipo de entrada que n\u00e3o \u00e9 uma entrada de chave privada. O comando -keyclone oferece suporte somente \u00e0 clonagem de entradas de chave privada"}, + {"Enter.key.password.for.alias.", "Informar a senha da chave de <{0}>"}, + {".RETURN.if.same.as.keystore.password.", + "\t(RETURN se for igual \u00E0 senha da \u00E1rea do armazenamento de chaves): "}, + {"Key.password.is.too.short.must.be.at.least.6.characters", + "A senha da chave \u00E9 muito curta - deve ter, no m\u00EDnimo, 6 caracteres"}, + {"Too.many.failures.key.not.added.to.keystore", + "Excesso de falhas - chave n\u00E3o adicionada a \u00E1rea de armazenamento de chaves"}, + {"Destination.alias.dest.already.exists", + "O alias de destino <{0}> j\u00E1 existe"}, + {"Password.is.too.short.must.be.at.least.6.characters", + "A senha \u00E9 muito curta - deve ter, no m\u00EDnimo, 6 caracteres"}, + {"Too.many.failures.Key.entry.not.cloned", + "Excesso de falhas. Entrada da chave n\u00E3o clonada"}, + {"key.password.for.alias.", "senha da chave de <{0}>"}, + {"Keystore.entry.for.id.getName.already.exists", + "A entrada da \u00E1rea do armazenamento de chaves de <{0}> j\u00E1 existe"}, + {"Creating.keystore.entry.for.id.getName.", + "Criando entrada da \u00E1rea do armazenamento de chaves para <{0}> ..."}, + {"No.entries.from.identity.database.added", + "Nenhuma entrada adicionada do banco de dados de identidades"}, + {"Alias.name.alias", "Nome do alias: {0}"}, + {"Creation.date.keyStore.getCreationDate.alias.", + "Data de cria\u00E7\u00E3o: {0,date}"}, + {"alias.keyStore.getCreationDate.alias.", + "{0}, {1,date}, "}, + {"alias.", "{0}, "}, + {"Entry.type.type.", "Tipo de entrada: {0}"}, + {"Certificate.chain.length.", "Comprimento da cadeia de certificados: "}, + {"Certificate.i.1.", "Certificado[{0,number,integer}]:"}, + {"Certificate.fingerprint.SHA1.", "Fingerprint (MD5) do certificado: "}, + {"Entry.type.trustedCertEntry.", "Tipo de entrada: trustedCertEntry\n"}, + {"trustedCertEntry.", "trustedCertEntry,"}, + {"Keystore.type.", "Tipo de \u00E1rea de armazenamento de chaves: "}, + {"Keystore.provider.", "Fornecedor da \u00E1rea de armazenamento de chaves: "}, + {"Your.keystore.contains.keyStore.size.entry", + "Sua \u00E1rea de armazenamento de chaves cont\u00E9m {0,number,integer} entrada"}, + {"Your.keystore.contains.keyStore.size.entries", + "Sua \u00E1rea de armazenamento de chaves cont\u00E9m {0,number,integer} entradas"}, + {"Failed.to.parse.input", "Falha durante o parse da entrada"}, + {"Empty.input", "Entrada vazia"}, + {"Not.X.509.certificate", "N\u00E3o \u00E9 um certificado X.509"}, + {"alias.has.no.public.key", "{0} n\u00E3o tem chave p\u00FAblica"}, + {"alias.has.no.X.509.certificate", "{0} n\u00E3o tem certificado X.509"}, + {"New.certificate.self.signed.", "Novo certificado (autoassinado):"}, + {"Reply.has.no.certificates", "A resposta n\u00E3o tem certificado"}, + {"Certificate.not.imported.alias.alias.already.exists", + "Certificado n\u00E3o importado, o alias <{0}> j\u00E1 existe"}, + {"Input.not.an.X.509.certificate", "A entrada n\u00E3o \u00E9 um certificado X.509"}, + {"Certificate.already.exists.in.keystore.under.alias.trustalias.", + "O certificado j\u00E1 existe no armazenamento de chaves no alias <{0}>"}, + {"Do.you.still.want.to.add.it.no.", + "Ainda deseja adicion\u00E1-lo? [n\u00E3o]: "}, + {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.", + "O certificado j\u00E1 existe na \u00E1rea de armazenamento de chaves da CA em todo o sistema no alias <{0}>"}, + {"Do.you.still.want.to.add.it.to.your.own.keystore.no.", + "Ainda deseja adicion\u00E1-lo \u00E0 sua \u00E1rea de armazenamento de chaves? [n\u00E3o]: "}, + {"Trust.this.certificate.no.", "Confiar neste certificado? [n\u00E3o]: "}, + {"YES", "SIM"}, + {"New.prompt.", "Nova {0}: "}, + {"Passwords.must.differ", "As senhas devem ser diferentes"}, + {"Re.enter.new.prompt.", "Informe novamente a nova {0}: "}, + {"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}: "}, + {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.", + "Informe o novo nome do alias\t(RETURN para cancelar a importa\u00E7\u00E3o desta entrada): "}, + {"Enter.alias.name.", "Informe o nome do alias: "}, + {".RETURN.if.same.as.for.otherAlias.", + "\t(RETURN se for igual ao de <{0}>)"}, + {".PATTERN.printX509Cert", + "Propriet\u00E1rio: {0}\nEmissor: {1}\nN\u00FAmero de s\u00E9rie: {2}\nV\u00E1lido de: {3} a: {4}\nFingerprints do certificado:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Nome do algoritmo de assinatura: {8}\n\t Vers\u00E3o: {9}"}, + {"What.is.your.first.and.last.name.", + "Qual \u00E9 o seu nome e o seu sobrenome?"}, + {"What.is.the.name.of.your.organizational.unit.", + "Qual \u00E9 o nome da sua unidade organizacional?"}, + {"What.is.the.name.of.your.organization.", + "Qual \u00E9 o nome da sua empresa?"}, + {"What.is.the.name.of.your.City.or.Locality.", + "Qual \u00E9 o nome da sua Cidade ou Localidade?"}, + {"What.is.the.name.of.your.State.or.Province.", + "Qual \u00E9 o nome do seu Estado ou Munic\u00EDpio?"}, + {"What.is.the.two.letter.country.code.for.this.unit.", + "Quais s\u00E3o as duas letras do c\u00F3digo do pa\u00EDs desta unidade?"}, + {"Is.name.correct.", "{0} Est\u00E1 correto?"}, + {"no", "n\u00E3o"}, + {"yes", "sim"}, + {"y", "s"}, + {".defaultValue.", " [{0}]: "}, + {"Alias.alias.has.no.key", + "O alias <{0}> n\u00E3o tem chave"}, + {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key", + "O alias <{0}> faz refer\u00EAncia a um tipo de entrada que n\u00E3o \u00E9 uma entrada de chave privada. O comando -keyclone oferece suporte somente \u00E0 clonagem de entradas de chave privada"}, - {"***************** WARNING WARNING WARNING *****************", - "***************** AVISO AVISO AVISO *****************"}, + {".WARNING.WARNING.WARNING.", + "***************** WARNING WARNING WARNING *****************"}, + {"Signer.d.", "Signat\u00E1rio #%d:"}, + {"Timestamp.", "Timestamp:"}, + {"Signature.", "Assinatura:"}, + {"CRLs.", "CRLs:"}, + {"Certificate.owner.", "Propriet\u00E1rio do certificado: "}, + {"Not.a.signed.jar.file", "N\u00E3o \u00E9 um arquivo jar assinado"}, + {"No.certificate.from.the.SSL.server", + "N\u00E3o \u00E9 um certificado do servidor SSL"}, // Translators of the following 5 pairs, ATTENTION: // the next 5 string pairs are meant to be combined into 2 paragraphs, // 1+3+4 and 2+3+5. make sure your translation also does. - {"* The integrity of the information stored in your keystore *", - "* A integridade das informa\u00e7\u00f5es armazenadas no seu armazenamento de chaves *"}, - {"* The integrity of the information stored in the srckeystore*", - "* A integridade das informa\u00e7\u00f5es armazenadas no srckeystore*"}, - {"* has NOT been verified! In order to verify its integrity, *", - "* N\u00c3O foi verificada! Para verificar a integridade destas informa\u00e7\u00f5es, *"}, - {"* you must provide your keystore password. *", - "* voc\u00ea deve fornecer a senha do seu armazenamento de chaves. *"}, - {"* you must provide the srckeystore password. *", - "* voc\u00ea deve fornecer a senha do srckeystore. *"}, + {".The.integrity.of.the.information.stored.in.your.keystore.", + "* A integridade das informa\u00E7\u00F5es armazenadas na sua \u00E1rea de armazenamento de chaves *"}, + {".The.integrity.of.the.information.stored.in.the.srckeystore.", + "* A integridade das informa\u00E7\u00F5es armazenadas no srckeystore*"}, + {".has.NOT.been.verified.In.order.to.verify.its.integrity.", + "* N\u00C3O foi verificada! Para verificar a integridade destas informa\u00E7\u00F5es, *"}, + {".you.must.provide.your.keystore.password.", + "* voc\u00EA deve fornecer a senha da sua \u00E1rea de armazenamento de chaves. *"}, + {".you.must.provide.the.srckeystore.password.", + "* voc\u00EA deve fornecer a senha do srckeystore. *"}, - {"Certificate reply does not contain public key for ", - "A resposta do certificado n\u00e3o cont\u00e9m a chave p\u00fablica de <{0}>"}, - {"Incomplete certificate chain in reply", - "Cadeia de certificados incompleta na resposta"}, - {"Certificate chain in reply does not verify: ", - "A cadeia de certificados da resposta n\u00e3o verifica: "}, - {"Top-level certificate in reply:\n", - "Certificado de n\u00edvel superior na resposta:\n"}, - {"... is not trusted. ", "... n\u00e3o \u00e9 confi\u00e1vel. "}, - {"Install reply anyway? [no]: ", "Instalar resposta assim mesmo? [n\u00e3o]: "}, - {"NO", "N\u00c3O"}, - {"Public keys in reply and keystore don't match", - "As chaves p\u00fablicas da resposta e do armazenamento de chaves n\u00e3o correspondem"}, - {"Certificate reply and certificate in keystore are identical", - "O certificado da resposta e o certificado do armazenamento de chaves s\u00e3o id\u00eanticos"}, - {"Failed to establish chain from reply", - "Falha ao estabelecer a cadeia a partir da resposta"}, - {"n", "n"}, - {"Wrong answer, try again", "Resposta errada, tente novamente"}, - {"Secret key not generated, alias already exists", - "Chave secreta n\u00e3o gerada, o alias <{0}> j\u00e1 existe"}, - {"Please provide -keysize for secret key generation", - "Forne\u00e7a o -keysize para a gera\u00e7\u00e3o da chave secreta"}, - {"keytool usage:\n", "uso de keytool:\n"}, + {"Certificate.reply.does.not.contain.public.key.for.alias.", + "A resposta do certificado n\u00E3o cont\u00E9m a chave p\u00FAblica de <{0}>"}, + {"Incomplete.certificate.chain.in.reply", + "Cadeia de certificados incompleta na resposta"}, + {"Certificate.chain.in.reply.does.not.verify.", + "A cadeia de certificados da resposta n\u00E3o verifica: "}, + {"Top.level.certificate.in.reply.", + "Certificado de n\u00EDvel superior na resposta:\n"}, + {".is.not.trusted.", "... n\u00E3o \u00E9 confi\u00E1vel. "}, + {"Install.reply.anyway.no.", "Instalar resposta assim mesmo? [n\u00E3o]: "}, + {"NO", "N\u00C3O"}, + {"Public.keys.in.reply.and.keystore.don.t.match", + "As chaves p\u00FAblicas da resposta e da \u00E1rea de armazenamento de chaves n\u00E3o correspondem"}, + {"Certificate.reply.and.certificate.in.keystore.are.identical", + "O certificado da resposta e o certificado da \u00E1rea de armazenamento de chaves s\u00E3o id\u00EAnticos"}, + {"Failed.to.establish.chain.from.reply", + "Falha ao estabelecer a cadeia a partir da resposta"}, + {"n", "n"}, + {"Wrong.answer.try.again", "Resposta errada; tente novamente"}, + {"Secret.key.not.generated.alias.alias.already.exists", + "Chave secreta n\u00E3o gerada; o alias <{0}> j\u00E1 existe"}, + {"Please.provide.keysize.for.secret.key.generation", + "Forne\u00E7a o -keysize para a gera\u00E7\u00E3o da chave secreta"}, - {"Extensions: ", "Extens\u00f5es: "}, + {"Extensions.", "Extens\u00F5es: "}, + {".Empty.value.", "(Valor vazio)"}, + {"Extension.Request.", "Solicita\u00E7\u00E3o de Extens\u00E3o:"}, + {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.", + "Solicita\u00E7\u00E3o do Certificado PKCS #10 (Vers\u00E3o 1.0)\nAssunto: %s\nChave P\u00FAblica: %s formato %s chave\n"}, + {"Unknown.keyUsage.type.", "Tipo de keyUsage desconhecido: "}, + {"Unknown.extendedkeyUsage.type.", "Tipo de extendedkeyUsage desconhecido: "}, + {"Unknown.AccessDescription.type.", "Tipo de AccessDescription desconhecido: "}, + {"Unrecognized.GeneralName.type.", "Tipo de GeneralName n\u00E3o reconhecido: "}, + {"This.extension.cannot.be.marked.as.critical.", + "Esta extens\u00E3o n\u00E3o pode ser marcada como cr\u00EDtica. "}, + {"Odd.number.of.hex.digits.found.", "Encontrado n\u00FAmero \u00EDmpar de seis d\u00EDgitos: "}, + {"Unknown.extension.type.", "Tipo de extens\u00E3o desconhecido: "}, + {"command.{0}.is.ambiguous.", "o comando {0} \u00E9 amb\u00EDguo:"}, - {"-certreq [-v] [-protected]", - "-certreq [-v] [-protected]"}, - {"\t [-alias ] [-sigalg ]", - "\t [-alias ] [-sigalg ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - {"\t [-keystore ] [-storepass ]", - "\t [-keystore ] [-storepass ]"}, - {"\t [-storetype ] [-providername ]", - "\t [-storetype ] [-providername ]"}, - {"\t [-providerclass [-providerarg ]] ...", - "\t [-providerclass [-providerarg ]] ..."}, - {"\t [-providerpath ]", - "\t [-providerpath ]"}, - {"-delete [-v] [-protected] -alias ", - "-delete [-v] [-protected] -alias "}, - /** rest is same as -certreq starting from -keystore **/ + // policytool + {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.", + "Advert\u00EAncia: N\u00E3o existe uma chave p\u00FAblica para o alias {0}. Certifique-se de que um KeyStore esteja configurado adequadamente."}, + {"Warning.Class.not.found.class", "Advert\u00EAncia: Classe n\u00E3o encontrada: {0}"}, + {"Warning.Invalid.argument.s.for.constructor.arg", + "Advert\u00EAncia: Argumento(s) inv\u00E1lido(s) para o construtor: {0}"}, + {"Illegal.Principal.Type.type", "Tipo Principal Inv\u00E1lido: {0}"}, + {"Illegal.option.option", "Op\u00E7\u00E3o inv\u00E1lida: {0}"}, + {"Usage.policytool.options.", "Uso: policytool [options]"}, + {".file.file.policy.file.location", + " [-file ] 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"}, + {"Retain", "Reter"}, - //{"-export [-v] [-rfc] [-protected]", - // "-export [-v] [-rfc] [-protected]"}, - {"-exportcert [-v] [-rfc] [-protected]", - "-exportcert [-v] [-rfc] [-protected]"}, - {"\t [-alias ] [-file ]", - "\t [-alias ] [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ + {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes", + "Advert\u00EAncia: O nome do arquivo pode conter caracteres de escape barra invertida. N\u00E3o \u00E9 necess\u00E1rio fazer o escape dos caracteres de barra invertida (a ferramenta faz o escape dos caracteres conforme necess\u00E1rio ao gravar o conte\u00FAdo da pol\u00EDtica no armazenamento persistente).\n\nClique em Reter para reter o nome da entrada ou clique em Editar para edit\u00E1-lo."}, - //{"-genkey [-v] [-protected]", - // "-genkey [-v] [-protected]"}, - {"-genkeypair [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-keyalg ] [-keysize ]", - "\t [-keyalg ] [-keysize ]"}, - {"\t [-sigalg ] [-dname ]", - "\t [-sigalg ] [-dname ]"}, - {"\t [-validity ] [-keypass ]", - "\t [-validity ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-genseckey [-v] [-protected]", - "-genseckey [-v] [-protected]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-help", "-help"}, - //{"-identitydb [-v] [-protected]", - // "-identitydb [-v] [-protected]"}, - //{"\t [-file ]", "\t [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-import [-v] [-noprompt] [-trustcacerts] [-protected]", - // "-import [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"-importcert [-v] [-noprompt] [-trustcacerts] [-protected]", - "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-alias ] [-keypass ]", - "\t [-alias ] [-keypass ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-importkeystore [-v] ", - "-importkeystore [-v] "}, - {"\t [-srckeystore ] [-destkeystore ]", - "\t [-srckeystore ] [-destkeystore ]"}, - {"\t [-srcstoretype ] [-deststoretype ]", - "\t [-srcstoretype ] [-deststoretype ]"}, - {"\t [-srcprotected] [-destprotected]", - "\t [-srcprotected] [-destprotected]"}, - {"\t [-srcstorepass ] [-deststorepass ]", - "\t [-srcstorepass ] [-deststorepass ]"}, - {"\t [-srcprovidername ]\n\t [-destprovidername ]", // line too long, split to 2 - "\t [-srcprovidername ]\n\t [-destprovidername ]"}, - {"\t [-srcalias [-destalias ]", - "\t [-srcalias [-destalias ]"}, - {"\t [-srckeypass ] [-destkeypass ]]", - "\t [-srckeypass ] [-destkeypass ]]"}, - {"\t [-noprompt]", "\t [-noprompt]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-changealias [-v] [-protected] -alias -destalias ", - "-changealias [-v] [-protected] -alias -destalias "}, - {"\t [-keypass ]", "\t [-keypass ]"}, - - //{"-keyclone [-v] [-protected]", - // "-keyclone [-v] [-protected]"}, - //{"\t [-alias ] -dest ", - // "\t [-alias ] -dest "}, - //{"\t [-keypass ] [-new ]", - // "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-keypasswd [-v] [-alias ]", - "-keypasswd [-v] [-alias ]"}, - {"\t [-keypass ] [-new ]", - "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-list [-v | -rfc] [-protected]", - "-list [-v | -rfc] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-printcert [-v] [-file ]", - "-printcert [-v] [-file ]"}, - - //{"-selfcert [-v] [-protected]", - // "-selfcert [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - //{"\t [-dname ] [-validity ]", - // "\t [-dname ] [-validity ]"}, - //{"\t [-keypass ] [-sigalg ]", - // "\t [-keypass ] [-sigalg ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-storepasswd [-v] [-new ]", - "-storepasswd [-v] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - // policytool - {"Warning: A public key for alias 'signers[i]' does not exist. Make sure a KeyStore is properly configured.", - "Aviso: n\u00e3o existe uma chave p\u00fablica para o alias {0}. Certifique-se de que um KeyStore esteja configurado adequadamente."}, - {"Warning: Class not found: class", "Aviso: classe n\u00e3o encontrada: {0}"}, - {"Warning: Invalid argument(s) for constructor: arg", - "Aviso: argumento(s) inv\u00e1lido(s) para o construtor: {0}"}, - {"Illegal Principal Type: type", "Tipo principal ilegal: {0}"}, - {"Illegal option: option", "Op\u00e7\u00e3o ilegal: {0}"}, - {"Usage: policytool [options]", "Uso: policytool [op\u00e7\u00f5es]"}, - {" [-file ] policy file location", - " [-file ] local do arquivo de pol\u00edtica"}, - {"New", "Novo"}, - {"Open", "Abrir"}, - {"Save", "Salvar"}, - {"Save As", "Salvar como"}, - {"View Warning Log", "Visualizar registro de avisos"}, - {"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"}, - {"Retain", "Conservar"}, - - {"Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name.", - "Aviso: o nome do arquivo pode incluir caracteres de escape barra invertida. N\u00e3o \u00e9 necess\u00e1rio fazer o escape dos caracteres de barra invertida (a ferramenta faz o escape dos caracteres conforme necess\u00e1rio ao gravar o conte\u00fado da pol\u00edtica no armazenamento persistente).\n\nClique em Conservar para conservar o nome da entrada ou clique em Editar para edit\u00e1-lo."}, - - {"Add Public Key Alias", "Adicionar alias de chave p\u00fablica"}, - {"Remove Public Key Alias", "Remover alias de chave p\u00fablica"}, - {"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}"}, - {"Policy Tool", "Ferramenta de pol\u00edtica"}, - {"Errors have occurred while opening the policy configuration. View the Warning Log for more information.", - "Ocorreram erros ao abrir a configura\u00e7\u00e3o da pol\u00edtica. Consulte o registro de avisos para obter mais informa\u00e7\u00f5es."}, - {"Error", "Erro"}, - {"OK", "OK"}, - {"Status", "Status"}, - {"Warning", "Aviso"}, - {"Permission: ", - "Permiss\u00e3o: "}, - {"Principal Type:", "Tipo do principal:"}, - {"Principal Name:", "Nome do principal:"}, - {"Target Name: ", - "Nome de destino: "}, - {"Actions: ", - "A\u00e7\u00f5es: "}, - {"OK to overwrite existing file filename?", - "OK para 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"}, - {"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:"}, - {"Principals", "Principais"}, - {" Edit Principal:", " Editar principal:"}, - {" Add New Principal:", " Adicionar novo principal:"}, - {"Permissions", "Permiss\u00f5es"}, - {" Edit Permission:", " Editar permiss\u00e3o:"}, - {" Add New Permission:", " Adicionar nova permiss\u00e3o:"}, - {"Signed By:", "Assinado por:"}, - {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name", - "N\u00e3o \u00e9 poss\u00edvel especificar principal com uma classe de coringa sem um nome de coringa"}, - {"Cannot Specify Principal without a Name", - "N\u00e3o \u00e9 poss\u00edvel especificar principal sem um nome"}, - {"Permission and Target Name must have a value", - "O nome de destino e a permiss\u00e3o devem ter um valor"}, - {"Remove this Policy Entry?", "Remover esta entrada de pol\u00edtica?"}, - {"Overwrite File", "Substituir arquivo"}, - {"Policy successfully written to filename", - "Pol\u00edtica gravada com \u00eaxito em {0}"}, - {"null filename", "nome de arquivo nulo"}, - {"Save changes?", "Salvar altera\u00e7\u00f5es?"}, - {"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"}, - {"Unable to open KeyStore: ex.toString()", - "N\u00e3o \u00e9 poss\u00edvel abrir o KeyStore: {0}"}, - {"No principal selected", "Nenhum principal selecionado"}, - {"No permission selected", "Nenhuma permiss\u00e3o selecionada"}, - {"name", "nome"}, - {"configuration type", "tipo de configura\u00e7\u00e3o"}, - {"environment variable name", "nome da vari\u00e1vel de ambiente"}, - {"library name", "nome da biblioteca"}, - {"package name", "nome do pacote"}, - {"policy type", "tipo de pol\u00edtica"}, - {"property name", "nome da propriedade"}, - {"provider name", "nome do fornecedor"}, - {"Principal List", "Lista de principais"}, - {"Permission List", "Lista de permiss\u00f5es"}, - {"Code Base", "Base de c\u00f3digo"}, - {"KeyStore U R L:", "U R L do KeyStore:"}, - {"KeyStore Password U R L:", "U R L da senha do KeyStore:"}, + {"Add.Public.Key.Alias", "Adicionar Alias de Chave P\u00FAblica"}, + {"Remove.Public.Key.Alias", "Remover Alias de Chave P\u00FAblica"}, + {"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}"}, + {"Policy.Tool", "Ferramenta de Pol\u00EDtica"}, + {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.", + "Erros durante a abertura da configura\u00E7\u00E3o da pol\u00EDtica. Consulte o Log de Advert\u00EAncias para obter mais informa\u00E7\u00F5es."}, + {"Error", "Erro"}, + {"OK", "OK"}, + {"Status", "Status"}, + {"Warning", "Advert\u00EAncia"}, + {"Permission.", + "Permiss\u00E3o: "}, + {"Principal.Type.", "Tipo do Principal:"}, + {"Principal.Name.", "Nome do Principal:"}, + {"Target.Name.", + "Nome do Alvo: "}, + {"Actions.", + "A\u00E7\u00F5es: "}, + {"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"}, + {"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:"}, + {"Principals", "Principais"}, + {".Edit.Principal.", " Editar Principal:"}, + {".Add.New.Principal.", " Adicionar Novo Principal:"}, + {"Permissions", "Permiss\u00F5es"}, + {".Edit.Permission.", " Editar Permiss\u00E3o:"}, + {".Add.New.Permission.", " Adicionar Nova Permiss\u00E3o:"}, + {"Signed.By.", "Assinado por:"}, + {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name", + "N\u00E3o \u00E9 Poss\u00EDvel Especificar um Principal com uma Classe de Curinga sem um Nome de Curinga"}, + {"Cannot.Specify.Principal.without.a.Name", + "N\u00E3o \u00E9 Poss\u00EDvel Especificar um Principal sem um Nome"}, + {"Permission.and.Target.Name.must.have.a.value", + "O Nome de Destino e a Permiss\u00E3o devem ter um Valor"}, + {"Remove.this.Policy.Entry.", "Remover esta Entrada de Pol\u00EDtica?"}, + {"Overwrite.File", "Substituir Arquivo"}, + {"Policy.successfully.written.to.filename", + "Pol\u00EDtica gravada com \u00EAxito em {0}"}, + {"null.filename", "nome de arquivo nulo"}, + {"Save.changes.", "Salvar altera\u00E7\u00F5es?"}, + {"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"}, + {"Unable.to.open.KeyStore.ex.toString.", + "N\u00E3o \u00E9 poss\u00EDvel abrir a KeyStore: {0}"}, + {"No.principal.selected", "Nenhum principal selecionado"}, + {"No.permission.selected", "Nenhuma permiss\u00E3o selecionada"}, + {"name", "nome"}, + {"configuration.type", "tipo de configura\u00E7\u00E3o"}, + {"environment.variable.name", "nome da vari\u00E1vel de ambiente"}, + {"library.name", "nome da biblioteca"}, + {"package.name", "nome do pacote"}, + {"policy.type", "tipo de pol\u00EDtica"}, + {"property.name", "nome da propriedade"}, + {"Principal.List", "Lista de Principais"}, + {"Permission.List", "Lista de Permiss\u00F5es"}, + {"Code.Base", "Base de C\u00F3digo"}, + {"KeyStore.U.R.L.", "U R L da KeyStore:"}, + {"KeyStore.Password.U.R.L.", "U R L da Senha do KeyStore:"}, - // javax.security.auth.PrivateCredentialPermission - {"invalid null input(s)", "entrada(s) nula(s) inv\u00e1lida(s)"}, - {"actions can only be 'read'", "as a\u00e7\u00f5es podem ser somente 'lidas'"}, - {"permission name [name] syntax invalid: ", - "sintaxe inv\u00e1lida do nome da permiss\u00e3o [{0}]: "}, - {"Credential Class not followed by a Principal Class and Name", - "Classe da credencial n\u00e3o seguida por um nome e classe do principal"}, - {"Principal Class not followed by a Principal Name", - "Classe do principal n\u00e3o seguida por um nome do principal"}, - {"Principal Name must be surrounded by quotes", - "O nome do principal deve estar entre aspas"}, - {"Principal Name missing end quote", - "Faltam as aspas finais no nome do principal "}, - {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value", - "A classe do principal PrivateCredentialPermission n\u00e3o pode ser um valor coringa (*) se o nome do principal n\u00e3o for um valor coringa (*)"}, - {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name", - "CredOwner:\n\tClasse do principal = {0}\n\tNome do principal = {1}"}, + // javax.security.auth.PrivateCredentialPermission + {"invalid.null.input.s.", "entrada(s) nula(s) inv\u00E1lida(s)"}, + {"actions.can.only.be.read.", "as a\u00E7\u00F5es s\u00F3 podem ser 'lidas'"}, + {"permission.name.name.syntax.invalid.", + "sintaxe inv\u00E1lida do nome da permiss\u00E3o [{0}]: "}, + {"Credential.Class.not.followed.by.a.Principal.Class.and.Name", + "Classe da Credencial n\u00E3o seguida por um Nome e uma Classe do Principal"}, + {"Principal.Class.not.followed.by.a.Principal.Name", + "Classe do Principal n\u00E3o seguida por um Nome do Principal"}, + {"Principal.Name.must.be.surrounded.by.quotes", + "O Nome do Principal deve estar entre aspas"}, + {"Principal.Name.missing.end.quote", + "Faltam as aspas finais no Nome do Principal"}, + {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value", + "A Classe do Principal PrivateCredentialPermission n\u00E3o pode ser um valor curinga (*) se o Nome do Principal n\u00E3o for um valor curinga (*)"}, + {"CredOwner.Principal.Class.class.Principal.Name.name", + "CredOwner:\n\tClasse do Principal = {0}\n\tNome do Principal = {1}"}, - // javax.security.auth.x500 - {"provided null name", "nome nulo fornecido"}, - {"provided null keyword map", "mapa de palavra-chave nulo fornecido"}, - {"provided null OID map", "mapa OID nulo fornecido"}, + // javax.security.auth.x500 + {"provided.null.name", "nome nulo fornecido"}, + {"provided.null.keyword.map", "mapa de palavra-chave nulo fornecido"}, + {"provided.null.OID.map", "mapa OID nulo fornecido"}, - // javax.security.auth.Subject - {"invalid null AccessControlContext provided", - "AccessControlContext nulo inv\u00e1lido fornecido"}, - {"invalid null action provided", "a\u00e7\u00e3o nula inv\u00e1lida fornecida"}, - {"invalid null Class provided", "classe nula inv\u00e1lida fornecida"}, - {"Subject:\n", "Subject:\n"}, - {"\tPrincipal: ", "\tPrincipal: "}, - {"\tPublic Credential: ", "\tCredencial p\u00fablica: "}, - {"\tPrivate Credentials inaccessible\n", - "\tCredenciais privadas inacess\u00edveis\n"}, - {"\tPrivate Credential: ", "\tCredencial privada: "}, - {"\tPrivate Credential inaccessible\n", - "\tCredencial privada inacess\u00edvel\n"}, - {"Subject is read-only", "O Subject \u00e9 de somente leitura"}, - {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set", - "tentativa de adicionar um objeto que n\u00e3o \u00e9 uma inst\u00e2ncia de java.security.Principal a um conjunto de principais do Subject"}, - {"attempting to add an object which is not an instance of class", - "tentativa de adicionar um objeto que n\u00e3o \u00e9 uma inst\u00e2ncia de {0}"}, + // javax.security.auth.Subject + {"invalid.null.AccessControlContext.provided", + "AccessControlContext nulo inv\u00E1lido fornecido"}, + {"invalid.null.action.provided", "a\u00E7\u00E3o nula inv\u00E1lida fornecida"}, + {"invalid.null.Class.provided", "Classe nula inv\u00E1lida fornecida"}, + {"Subject.", "Assunto:\n"}, + {".Principal.", "\tPrincipal: "}, + {".Public.Credential.", "\tCredencial P\u00FAblica: "}, + {".Private.Credentials.inaccessible.", + "\tCredenciais Privadas inacess\u00EDveis\n"}, + {".Private.Credential.", "\tCredencial Privada: "}, + {".Private.Credential.inaccessible.", + "\tCredencial Privada inacess\u00EDvel\n"}, + {"Subject.is.read.only", "O Assunto \u00E9 somente para leitura"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set", + "tentativa de adicionar um objeto que n\u00E3o \u00E9 uma inst\u00E2ncia de java.security.Principal a um conjunto de principais do Subject"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.class", + "tentativa de adicionar um objeto que n\u00E3o \u00E9 uma inst\u00E2ncia de {0}"}, - // javax.security.auth.login.AppConfigurationEntry - {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "}, + // javax.security.auth.login.AppConfigurationEntry + {"LoginModuleControlFlag.", "LoginModuleControlFlag: "}, - // javax.security.auth.login.LoginContext - {"Invalid null input: name", "Entrada nula inv\u00e1lida: nome"}, - {"No LoginModules configured for name", - "Nenhum LoginModule configurado para {0}"}, - {"invalid null Subject provided", "Subject nulo inv\u00e1lido fornecido"}, - {"invalid null CallbackHandler provided", - "CallbackHandler nulo inv\u00e1lido fornecido"}, - {"null subject - logout called before login", - "Subject nulo - logoff chamado antes do logon"}, - {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor", - "n\u00e3o \u00e9 poss\u00edvel instanciar LoginModule, {0}, porque n\u00e3o fornece um construtor sem argumento"}, - {"unable to instantiate LoginModule", - "n\u00e3o \u00e9 poss\u00edvel instanciar LoginModule"}, - {"unable to instantiate LoginModule: ", - "n\u00e3o \u00e9 poss\u00edvel instanciar LoginModule: "}, - {"unable to find LoginModule class: ", - "n\u00e3o \u00e9 poss\u00edvel localizar a classe LoginModule: "}, - {"unable to access LoginModule: ", - "n\u00e3o \u00e9 poss\u00edvel acessar LoginModule: "}, - {"Login Failure: all modules ignored", - "Falha de logon: todos os m\u00f3dulos ignorados"}, + // javax.security.auth.login.LoginContext + {"Invalid.null.input.name", "Entrada nula inv\u00E1lida: nome"}, + {"No.LoginModules.configured.for.name", + "Nenhum LoginModule configurado para {0}"}, + {"invalid.null.Subject.provided", "Subject nulo inv\u00E1lido fornecido"}, + {"invalid.null.CallbackHandler.provided", + "CallbackHandler nulo inv\u00E1lido fornecido"}, + {"null.subject.logout.called.before.login", + "Subject nulo - log-out chamado antes do log-in"}, + {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor", + "n\u00E3o \u00E9 poss\u00EDvel instanciar LoginModule, {0}, porque ele n\u00E3o fornece um construtor sem argumento"}, + {"unable.to.instantiate.LoginModule", + "n\u00E3o \u00E9 poss\u00EDvel instanciar LoginModule"}, + {"unable.to.instantiate.LoginModule.", + "n\u00E3o \u00E9 poss\u00EDvel instanciar LoginModule: "}, + {"unable.to.find.LoginModule.class.", + "n\u00E3o \u00E9 poss\u00EDvel localizar a classe LoginModule: "}, + {"unable.to.access.LoginModule.", + "n\u00E3o \u00E9 poss\u00EDvel acessar LoginModule: "}, + {"Login.Failure.all.modules.ignored", + "Falha de Log-in: todos os m\u00F3dulos ignorados"}, - // sun.security.provider.PolicyFile + // sun.security.provider.PolicyFile - {"java.security.policy: error parsing policy:\n\tmessage", - "java.security.policy: erro ao analisar {0}:\n\t{1}"}, - {"java.security.policy: error adding Permission, perm:\n\tmessage", - "java.security.policy: erro ao adicionar permiss\u00e3o, {0}:\n\t{1}"}, - {"java.security.policy: error adding Entry:\n\tmessage", - "java.security.policy: erro ao adicionar entrada:\n\t{0}"}, - {"alias name not provided (pe.name)", "nome de alias n\u00e3o fornecido ({0})"}, - {"unable to perform substitution on alias, suffix", - "n\u00e3o \u00e9 poss\u00edvel realizar a substitui\u00e7\u00e3o no alias, {0}"}, - {"substitution value, prefix, unsupported", - "valor da substitui\u00e7\u00e3o, {0}, n\u00e3o suportado"}, - {"(", "("}, - {")", ")"}, - {"type can't be null","o tipo n\u00e3o pode ser nulo"}, + {"java.security.policy.error.parsing.policy.message", + "java.security.policy: erro durante o parse de {0}:\n\t{1}"}, + {"java.security.policy.error.adding.Permission.perm.message", + "java.security.policy: erro ao adicionar a permiss\u00E3o, {0}:\n\t{1}"}, + {"java.security.policy.error.adding.Entry.message", + "java.security.policy: erro ao adicionar a Entrada:\n\t{0}"}, + {"alias.name.not.provided.pe.name.", "nome de alias n\u00E3o fornecido ({0})"}, + {"unable.to.perform.substitution.on.alias.suffix", + "n\u00E3o \u00E9 poss\u00EDvel realizar a substitui\u00E7\u00E3o no alias, {0}"}, + {"substitution.value.prefix.unsupported", + "valor da substitui\u00E7\u00E3o, {0}, n\u00E3o suportado"}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"type.can.t.be.null","o tipo n\u00E3o pode ser nulo"}, - // sun.security.provider.PolicyParser - {"keystorePasswordURL can not be specified without also specifying keystore", - "keystorePasswordURL n\u00e3o pode ser especificado sem que o armazenamento de chaves tamb\u00e9m seja especificado"}, - {"expected keystore type", "tipo de armazenamento de chaves esperado"}, - {"expected keystore provider", "fornecedor de armazenamento de chaves esperado"}, - {"multiple Codebase expressions", - "v\u00e1rias express\u00f5es CodeBase"}, - {"multiple SignedBy expressions","v\u00e1rias express\u00f5es SignedBy"}, - {"SignedBy has empty alias","SignedBy possui alias vazio"}, - {"can not specify Principal with a wildcard class without a wildcard name", - "n\u00e3o \u00e9 poss\u00edvel especificar principal com uma classe de coringa sem um nome de coringa"}, - {"expected codeBase or SignedBy or Principal", - "CodeBase ou SignedBy ou Principal esperado"}, - {"expected permission entry", "entrada de permiss\u00e3o esperada"}, - {"number ", "n\u00famero "}, - {"expected [expect], read [end of file]", - "esperado [{0}], lido [fim do arquivo]"}, - {"expected [;], read [end of file]", - "esperado [;], lido [fim do arquivo]"}, - {"line number: msg", "linha {0}: {1}"}, - {"line number: expected [expect], found [actual]", - "linha {0}: esperado [{1}], encontrado [{2}]"}, - {"null principalClass or principalName", - "principalClass ou principalName nulo "}, + // sun.security.provider.PolicyParser + {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore", + "keystorePasswordURL n\u00E3o pode ser especificado sem que a \u00E1rea de armazenamento de chaves tamb\u00E9m seja especificada"}, + {"expected.keystore.type", "tipo de armazenamento de chaves esperado"}, + {"expected.keystore.provider", "fornecedor da \u00E1rea de armazenamento de chaves esperado"}, + {"multiple.Codebase.expressions", + "v\u00E1rias express\u00F5es CodeBase"}, + {"multiple.SignedBy.expressions","v\u00E1rias express\u00F5es SignedBy"}, + {"SignedBy.has.empty.alias","SignedBy tem alias vazio"}, + {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name", + "n\u00E3o \u00E9 poss\u00EDvel especificar um principal com uma classe curinga sem um nome curinga"}, + {"expected.codeBase.or.SignedBy.or.Principal", + "CodeBase ou SignedBy ou Principal esperado"}, + {"expected.permission.entry", "entrada de permiss\u00E3o esperada"}, + {"number.", "n\u00FAmero "}, + {"expected.expect.read.end.of.file.", + "esperado [{0}], lido [fim do arquivo]"}, + {"expected.read.end.of.file.", + "esperado [;], lido [fim do arquivo]"}, + {"line.number.msg", "linha {0}: {1}"}, + {"line.number.expected.expect.found.actual.", + "linha {0}: esperada [{1}], encontrada [{2}]"}, + {"null.principalClass.or.principalName", + "principalClass ou principalName nulo"}, - // sun.security.pkcs11.SunPKCS11 - {"PKCS11 Token [providerName] Password: ", - "Senha PKCS11 Token [{0}]: "}, + // sun.security.pkcs11.SunPKCS11 + {"PKCS11.Token.providerName.Password.", + "Senha PKCS11 de Token [{0}]: "}, - /* --- DEPRECATED --- */ - // javax.security.auth.Policy - {"unable to instantiate Subject-based policy", - "n\u00e3o \u00e9 poss\u00edvel instanciar a pol\u00edtica com base em Subject"} + /* --- DEPRECATED --- */ + // javax.security.auth.Policy + {"unable.to.instantiate.Subject.based.policy", + "n\u00E3o \u00E9 poss\u00EDvel instanciar a pol\u00EDtica com base em Subject"} }; @@ -641,6 +667,7 @@ public class Resources_pt_BR extends java.util.ListResourceBundle { * @return the contents of this ResourceBundle. */ public Object[][] getContents() { - return contents; + return contents; } } + diff --git a/jdk/src/share/classes/sun/security/util/Resources_sv.java b/jdk/src/share/classes/sun/security/util/Resources_sv.java index 05d66de06ac..265873079bb 100644 --- a/jdk/src/share/classes/sun/security/util/Resources_sv.java +++ b/jdk/src/share/classes/sun/security/util/Resources_sv.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -35,605 +35,627 @@ public class Resources_sv extends java.util.ListResourceBundle { private static final Object[][] contents = { // shared (from jarsigner) - {" ", " "}, - {" ", " "}, - {" ", " "}, - {", ", ", "}, + {"SPACE", " "}, + {"2SPACE", " "}, + {"6SPACE", " "}, + {"COMMA", ", "}, // shared (from keytool) - {"\n", "\n"}, - {"*******************************************", + {"NEWLINE", "\n"}, + {"STAR", "*******************************************"}, - {"*******************************************\n\n", + {"STARNN", "*******************************************\n\n"}, - // keytool - {"keytool error: ", "nyckelverktygsfel: "}, - {"Illegal option: ", "Ogiltigt alternativ: "}, - {"Try keytool -help","Try keytool -help"}, - {"Command option needs an argument.", "Kommandoalternativet {0} beh\u00f6ver ett argument."}, - {"Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified value.", - "Varning! PKCS12 KeyStores har inte st\u00f6d f\u00f6r olika l\u00f6senord f\u00f6r lagret och nyckeln. Det anv\u00e4ndarspecificerade {0}-v\u00e4rdet ignoreras."}, - {"-keystore must be NONE if -storetype is {0}", - "-keystore m\u00e5ste vara NONE om -storetype \u00e4r {0}"}, - {"Too may retries, program terminated", - "F\u00f6r m\u00e5nga f\u00f6rs\u00f6k. Programmet avslutas."}, - {"-storepasswd and -keypasswd commands not supported if -storetype is {0}", - "-storepasswd- och -keypasswd-kommandon st\u00f6ds inte om -storetype \u00e4r {0}"}, - {"-keypasswd commands not supported if -storetype is PKCS12", - " \u0096keypasswd-kommandon st\u00f6ds inte om -storetype \u00e4r inst\u00e4lld p\u00e5 PKCS12"}, - {"-keypass and -new can not be specified if -storetype is {0}", - "-keypass och -new kan inte anges om -storetype \u00e4r {0}"}, - {"if -protected is specified, then -storepass, -keypass, and -new must not be specified", - "om -protected har angetts f\u00e5r inte -storepass, -keypass och -new anges"}, - {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified", - "om -srcprotected anges f\u00e5r -srcstorepass och -srckeypass inte anges"}, - {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified", - "om nyckelfilen inte \u00e4r l\u00f6senordsskyddad f\u00e5r -storepass, -keypass och -new inte anges"}, - {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified", - "om k\u00e4llnyckelfilen inte \u00e4r l\u00f6senordsskyddad f\u00e5r -srcstorepass och -srckeypass inte anges"}, - {"Validity must be greater than zero", - "Giltigheten m\u00e5ste vara st\u00f6rre \u00e4n noll"}, - {"provName not a provider", "{0} inte en leverant\u00f6r"}, - {"Usage error: no command provided", "Anv\u00e4ndningsfel: inget kommando angivet"}, - {"Usage error, is not a legal command", "Anv\u00e4ndningsfel: {0} \u00e4r inte ett giltigt kommando"}, - {"Source keystore file exists, but is empty: ", "Nyckellagrets k\u00e4llfil finns, men \u00e4r tom: "}, - {"Please specify -srckeystore", "Ange -srckeystore"}, - {"Must not specify both -v and -rfc with 'list' command", - "Det g\u00e5r inte att specificera b\u00e5de -v och -rfc med 'list'-kommandot"}, - {"Key password must be at least 6 characters", - "Nyckell\u00f6senordet m\u00e5ste inneh\u00e5lla minst 6 tecken"}, - {"New password must be at least 6 characters", - "Det nya l\u00f6senordet m\u00e5ste inneh\u00e5lla minst 6 tecken"}, - {"Keystore file exists, but is empty: ", - "Keystore-filen finns, men \u00e4r tom: "}, - {"Keystore file does not exist: ", - "Keystore-filen finns inte: "}, - {"Must specify destination alias", "Du m\u00e5ste ange destinations-alias"}, - {"Must specify alias", "Du m\u00e5ste ange alias"}, - {"Keystore password must be at least 6 characters", - "Keystore-l\u00f6senordet m\u00e5ste inneh\u00e5lla minst 6 tecken"}, - {"Enter keystore password: ", "Ange keystore-l\u00f6senord: "}, - {"Enter source keystore password: ", "Ange l\u00f6senord f\u00f6r k\u00e4llnyckellagret: "}, - {"Enter destination keystore password: ", "Ange destination f\u00f6r nyckellagrets l\u00f6senord: "}, - {"Keystore password is too short - must be at least 6 characters", - "Keystore-l\u00f6senordet \u00e4r f\u00f6r kort - det m\u00e5ste inneh\u00e5lla minst 6 tecken"}, - {"Unknown Entry Type", "Ok\u00e4nd posttyp"}, - {"Too many failures. Alias not changed", "Alias har inte \u00e4ndrats p.g.a. f\u00f6r m\u00e5nga fel."}, - {"Entry for alias successfully imported.", - "Posten f\u00f6r alias {0} har importerats."}, - {"Entry for alias not imported.", "Posten f\u00f6r alias {0} har inte importerats."}, - {"Problem importing entry for alias : .\nEntry for alias not imported.", - "Ett problem uppstod vid importen av posten f\u00f6r alias {0}: {1}.\nPosten har inte importerats."}, - {"Import command completed: entries successfully imported, entries failed or cancelled", - "Kommandoimporten slutf\u00f6rd: {0} poster har importerats, {1} poster var felaktiga eller utesl\u00f6ts"}, - {"Warning: Overwriting existing alias in destination keystore", - "Varning! Det befintliga aliaset {0} i m\u00e5lnyckellagret skrivs \u00f6ver"}, - {"Existing entry alias exists, overwrite? [no]: ", - "Aliaset {0} finns redan. Vill du skriva \u00f6ver det? [no]: "}, - {"Too many failures - try later", "F\u00f6r m\u00e5nga fel - f\u00f6rs\u00f6k igen senare"}, - {"Certification request stored in file ", - "Certifikat-f\u00f6rfr\u00e5gan har lagrats i filen <{0}>"}, - {"Submit this to your CA", "Skicka detta till din CA"}, - {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified", - "om n\u00e5got alias inte anges f\u00e5r destalias, srckeypass och destkeypass inte anges"}, - {"Certificate stored in file ", + // keytool: Help part + {".OPTION.", " [OPTION]..."}, + {"Options.", "Alternativ:"}, + {"Use.keytool.help.for.all.available.commands", + "L\u00E4s \"Hj\u00E4lp - Nyckelverktyg\" f\u00F6r alla tillg\u00E4ngliga kommandon"}, + {"Key.and.Certificate.Management.Tool", + "Hanteringsverktyg f\u00F6r nycklar och certifikat"}, + {"Commands.", "Kommandon:"}, + {"Use.keytool.command.name.help.for.usage.of.command.name", + "L\u00E4s \"Hj\u00E4lp - Nyckelverktyg - command_name\" om anv\u00E4ndning av command_name"}, + // keytool: help: commands + {"Generates.a.certificate.request", + "Genererar certifikatbeg\u00E4ran"}, //-certreq + {"Changes.an.entry.s.alias", + "\u00C4ndrar postalias"}, //-changealias + {"Deletes.an.entry", + "Tar bort post"}, //-delete + {"Exports.certificate", + "Exporterar certifikat"}, //-exportcert + {"Generates.a.key.pair", + "Genererar nyckelpar"}, //-genkeypair + {"Generates.a.secret.key", + "Genererar hemlig nyckel"}, //-genseckey + {"Generates.certificate.from.a.certificate.request", + "Genererar certifikat fr\u00E5n certifikatbeg\u00E4ran"}, //-gencert + {"Generates.CRL", "Genererar CRL"}, //-gencrl + {"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.one.or.all.entries.from.another.keystore", + "Importerar en eller alla poster fr\u00E5n annat nyckellager"}, //-importkeystore + {"Clones.a.key.entry", + "Klonar en nyckelpost"}, //-keyclone + {"Changes.the.key.password.of.an.entry", + "\u00C4ndrar nyckell\u00F6senordet f\u00F6r en post"}, //-keypasswd + {"Lists.entries.in.a.keystore", + "Visar lista \u00F6ver poster i nyckellager"}, //-list + {"Prints.the.content.of.a.certificate", + "Skriver ut inneh\u00E5llet i ett certifikat"}, //-printcert + {"Prints.the.content.of.a.certificate.request", + "Skriver ut inneh\u00E5llet i en certifikatbeg\u00E4ran"}, //-printcertreq + {"Prints.the.content.of.a.CRL.file", + "Skriver ut inneh\u00E5llet i en CRL-fil"}, //-printcrl + {"Generates.a.self.signed.certificate", + "Genererar ett sj\u00E4lvsignerat certifikat"}, //-selfcert + {"Changes.the.store.password.of.a.keystore", + "\u00C4ndrar lagerl\u00F6senordet f\u00F6r ett nyckellager"}, //-storepasswd + // keytool: help: options + {"alias.name.of.the.entry.to.process", + "aliasnamn f\u00F6r post som ska bearbetas"}, //-alias + {"destination.alias", + "destinationsalias"}, //-destalias + {"destination.key.password", + "l\u00F6senord f\u00F6r destinationsnyckel"}, //-destkeypass + {"destination.keystore.name", + "namn p\u00E5 destinationsnyckellager"}, //-destkeystore + {"destination.keystore.password.protected", + "skyddat l\u00F6senord f\u00F6r destinationsnyckellager"}, //-destprotected + {"destination.keystore.provider.name", + "leverant\u00F6rsnamn f\u00F6r destinationsnyckellager"}, //-destprovidername + {"destination.keystore.password", + "l\u00F6senord f\u00F6r destinationsnyckellager"}, //-deststorepass + {"destination.keystore.type", + "typ av destinationsnyckellager"}, //-deststoretype + {"distinguished.name", + "unikt namn"}, //-dname + {"X.509.extension", + "X.509-till\u00E4gg"}, //-ext + {"output.file.name", + "namn p\u00E5 utdatafil"}, //-file and -outfile + {"input.file.name", + "namn p\u00E5 indatafil"}, //-file and -infile + {"key.algorithm.name", + "namn p\u00E5 nyckelalgoritm"}, //-keyalg + {"key.password", + "nyckell\u00F6senord"}, //-keypass + {"key.bit.size", + "nyckelbitstorlek"}, //-keysize + {"keystore.name", + "namn p\u00E5 nyckellager"}, //-keystore + {"new.password", + "nytt l\u00F6senord"}, //-new + {"do.not.prompt", + "fr\u00E5ga inte"}, //-noprompt + {"password.through.protected.mechanism", + "l\u00F6senord med skyddad mekanism"}, //-protected + {"provider.argument", + "leverant\u00F6rsargument"}, //-providerarg + {"provider.class.name", + "namn p\u00E5 leverant\u00F6rsklass"}, //-providerclass + {"provider.name", + "leverant\u00F6rsnamn"}, //-providername + {"provider.classpath", + "leverant\u00F6rsklass\u00F6kv\u00E4g"}, //-providerpath + {"output.in.RFC.style", + "utdata i RFC-format"}, //-rfc + {"signature.algorithm.name", + "namn p\u00E5 signaturalgoritm"}, //-sigalg + {"source.alias", + "k\u00E4llalias"}, //-srcalias + {"source.key.password", + "l\u00F6senord f\u00F6r k\u00E4llnyckel"}, //-srckeypass + {"source.keystore.name", + "namn p\u00E5 k\u00E4llnyckellager"}, //-srckeystore + {"source.keystore.password.protected", + "skyddat l\u00F6senord f\u00F6r k\u00E4llnyckellager"}, //-srcprotected + {"source.keystore.provider.name", + "leverant\u00F6rsnamn f\u00F6r k\u00E4llnyckellager"}, //-srcprovidername + {"source.keystore.password", + "l\u00F6senord f\u00F6r k\u00E4llnyckellager"}, //-srcstorepass + {"source.keystore.type", + "typ av k\u00E4llnyckellager"}, //-srcstoretype + {"SSL.server.host.and.port", + "SSL-serverv\u00E4rd och -port"}, //-sslserver + {"signed.jar.file", + "signerad jar-fil"}, //=jarfile + {"certificate.validity.start.date.time", + "startdatum/-tid f\u00F6r certifikatets giltighet"}, //-startdate + {"keystore.password", + "l\u00F6senord f\u00F6r nyckellager"}, //-storepass + {"keystore.type", + "nyckellagertyp"}, //-storetype + {"trust.certificates.from.cacerts", + "tillf\u00F6rlitliga certifikat fr\u00E5n cacerts"}, //-trustcacerts + {"verbose.output", + "utf\u00F6rliga utdata"}, //-v + {"validity.number.of.days", + "antal dagar f\u00F6r giltighet"}, //-validity + {"Serial.ID.of.cert.to.revoke", + "Seriellt ID f\u00F6r certifikat som ska \u00E5terkallas"}, //-id + // keytool: Running part + {"keytool.error.", "nyckelverktygsfel: "}, + {"Illegal.option.", "Otill\u00E5tet alternativ: "}, + {"Illegal.value.", "Otill\u00E5tet v\u00E4rde: "}, + {"Unknown.password.type.", "Ok\u00E4nd l\u00F6senordstyp: "}, + {"Cannot.find.environment.variable.", + "Kan inte hitta milj\u00F6variabel: "}, + {"Cannot.find.file.", "Hittar inte fil: "}, + {"Command.option.flag.needs.an.argument.", "Kommandoalternativet {0} beh\u00F6ver ett argument."}, + {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.", + "Varning! PKCS12-nyckellager har inte st\u00F6d f\u00F6r olika l\u00F6senord f\u00F6r lagret och nyckeln. Det anv\u00E4ndarspecificerade {0}-v\u00E4rdet ignoreras."}, + {".keystore.must.be.NONE.if.storetype.is.{0}", + "-keystore m\u00E5ste vara NONE om -storetype \u00E4r {0}"}, + {"Too.many.retries.program.terminated", + "F\u00F6r m\u00E5nga f\u00F6rs\u00F6k. Programmet avslutas"}, + {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}", + "-storepasswd- och -keypasswd-kommandon st\u00F6ds inte om -storetype \u00E4r {0}"}, + {".keypasswd.commands.not.supported.if.storetype.is.PKCS12", + "-keypasswd-kommandon st\u00F6ds inte om -storetype \u00E4r PKCS12"}, + {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}", + "-keypass och -new kan inte anges om -storetype \u00E4r {0}"}, + {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified", + "om -protected har angetts f\u00E5r inte -storepass, -keypass och -new anges"}, + {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified", + "om -srcprotected anges f\u00E5r -srcstorepass och -srckeypass inte anges"}, + {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified", + "om nyckellagret inte \u00E4r l\u00F6senordsskyddat f\u00E5r -storepass, -keypass och -new inte anges"}, + {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", + "om k\u00E4llnyckellagret inte \u00E4r l\u00F6senordsskyddat f\u00E5r -srcstorepass och -srckeypass inte anges"}, + {"Illegal.startdate.value", "Otill\u00E5tet v\u00E4rde f\u00F6r startdatum"}, + {"Validity.must.be.greater.than.zero", + "Giltigheten m\u00E5ste vara st\u00F6rre \u00E4n noll"}, + {"provName.not.a.provider", "{0} \u00E4r inte en leverant\u00F6r"}, + {"Usage.error.no.command.provided", "Syntaxfel: inget kommando angivet"}, + {"Source.keystore.file.exists.but.is.empty.", "Nyckellagrets k\u00E4llfil finns, men \u00E4r tom: "}, + {"Please.specify.srckeystore", "Ange -srckeystore"}, + {"Must.not.specify.both.v.and.rfc.with.list.command", + "Kan inte specificera b\u00E5de -v och -rfc med 'list'-kommandot"}, + {"Key.password.must.be.at.least.6.characters", + "Nyckell\u00F6senordet m\u00E5ste inneh\u00E5lla minst 6 tecken"}, + {"New.password.must.be.at.least.6.characters", + "Det nya l\u00F6senordet m\u00E5ste inneh\u00E5lla minst 6 tecken"}, + {"Keystore.file.exists.but.is.empty.", + "Nyckellagerfilen finns, men \u00E4r tom: "}, + {"Keystore.file.does.not.exist.", + "Nyckellagerfilen finns inte: "}, + {"Must.specify.destination.alias", "Du m\u00E5ste ange destinationsalias"}, + {"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.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: "}, + {"Keystore.password.is.too.short.must.be.at.least.6.characters", + "Nyckellagerl\u00F6senordet \u00E4r f\u00F6r kort - det m\u00E5ste inneh\u00E5lla minst 6 tecken"}, + {"Unknown.Entry.Type", "Ok\u00E4nd posttyp"}, + {"Too.many.failures.Alias.not.changed", "F\u00F6r m\u00E5nga fel. Alias har inte \u00E4ndrats"}, + {"Entry.for.alias.alias.successfully.imported.", + "Posten f\u00F6r alias {0} har importerats."}, + {"Entry.for.alias.alias.not.imported.", "Posten f\u00F6r alias {0} har inte importerats."}, + {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.", + "Ett problem uppstod vid importen av posten f\u00F6r alias {0}: {1}.\nPosten {0} har inte importerats."}, + {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled", + "Kommandoimporten slutf\u00F6rd: {0} poster har importerats, {1} poster var felaktiga eller annullerades"}, + {"Warning.Overwriting.existing.alias.alias.in.destination.keystore", + "Varning! Det befintliga aliaset {0} i destinationsnyckellagret skrivs \u00F6ver"}, + {"Existing.entry.alias.alias.exists.overwrite.no.", + "Aliaset {0} finns redan. Vill du skriva \u00F6ver det? [nej]: "}, + {"Too.many.failures.try.later", "F\u00F6r m\u00E5nga fel - f\u00F6rs\u00F6k igen senare"}, + {"Certification.request.stored.in.file.filename.", + "Certifikatbeg\u00E4ran har lagrats i filen <{0}>"}, + {"Submit.this.to.your.CA", "Skicka detta till certifikatutf\u00E4rdaren"}, + {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified", + "om n\u00E5got alias inte anges f\u00E5r destalias, srckeypass och destkeypass inte anges"}, + {"Certificate.stored.in.file.filename.", "Certifikatet har lagrats i filen <{0}>"}, - {"Certificate reply was installed in keystore", - "Certifikatsvaret har installerats i keystore-filen"}, - {"Certificate reply was not installed in keystore", - "Certifikatsvaret har inte installerats i keystore-filen"}, - {"Certificate was added to keystore", - "Certifikatet har lagts till i keystore-filen"}, - {"Certificate was not added to keystore", - "Certifikatet har inte lagts till i keystore-filen"}, - {"[Storing ksfname]", "[Lagrar {0}]"}, - {"alias has no public key (certificate)", + {"Certificate.reply.was.installed.in.keystore", + "Certifikatsvaret har installerats i nyckellagret"}, + {"Certificate.reply.was.not.installed.in.keystore", + "Certifikatsvaret har inte installerats i nyckellagret"}, + {"Certificate.was.added.to.keystore", + "Certifikatet har lagts till i nyckellagret"}, + {"Certificate.was.not.added.to.keystore", + "Certifikatet har inte lagts till i nyckellagret"}, + {".Storing.ksfname.", "[Lagrar {0}]"}, + {"alias.has.no.public.key.certificate.", "{0} saknar offentlig nyckel (certifikat)"}, - {"Cannot derive signature algorithm", - "Det g\u00e5r inte att h\u00e4mta n\u00e5gon signatur-algoritm"}, - {"Alias does not exist", + {"Cannot.derive.signature.algorithm", + "Kan inte h\u00E4rleda signaturalgoritm"}, + {"Alias.alias.does.not.exist", "Aliaset <{0}> finns inte"}, - {"Alias has no certificate", + {"Alias.alias.has.no.certificate", "Aliaset <{0}> saknar certifikat"}, - {"Key pair not generated, alias already exists", + {"Key.pair.not.generated.alias.alias.already.exists", "Nyckelparet genererades inte. Aliaset <{0}> finns redan"}, - {"Cannot derive signature algorithm", - "Det g\u00e5r inte att h\u00e4mta n\u00e5gon signatur-algoritm"}, - {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name", - "Genererar {0}-bitars {1}-nyckelpar och sj\u00e4lvsignerat certifikat ({2}) med en giltighet p\u00e5 {3} dagar\n\tf\u00f6r: {4}"}, - {"Enter key password for ", "Ange nyckell\u00f6senord f\u00f6r <{0}>"}, - {"\t(RETURN if same as keystore password): ", - "\t(RETURN om det \u00e4r identiskt med keystore-l\u00f6senordet): "}, - {"Key password is too short - must be at least 6 characters", - "Nyckell\u00f6senordet \u00e4r f\u00f6r kort - det m\u00e5ste inneh\u00e5lla minst 6 tecken"}, - {"Too many failures - key not added to keystore", - "F\u00f6r m\u00e5nga fel - nyckeln lades inte till i keystore-filen"}, - {"Destination alias already exists", + {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for", + "Genererar {0} bitars {1}-nyckelpar och sj\u00E4lvsignerat certifikat ({2}) med en giltighet p\u00E5 {3} dagar\n\tf\u00F6r: {4}"}, + {"Enter.key.password.for.alias.", "Ange nyckell\u00F6senord f\u00F6r <{0}>"}, + {".RETURN.if.same.as.keystore.password.", + "\t(RETURN om det \u00E4r identiskt med nyckellagerl\u00F6senordet): "}, + {"Key.password.is.too.short.must.be.at.least.6.characters", + "Nyckell\u00F6senordet \u00E4r f\u00F6r kort - det m\u00E5ste inneh\u00E5lla minst 6 tecken"}, + {"Too.many.failures.key.not.added.to.keystore", + "F\u00F6r m\u00E5nga fel - nyckeln lades inte till i nyckellagret"}, + {"Destination.alias.dest.already.exists", "Destinationsaliaset <{0}> finns redan"}, - {"Password is too short - must be at least 6 characters", - "L\u00f6senordet \u00e4r f\u00f6r kort - det m\u00e5ste inneh\u00e5lla minst 6 tecken"}, - {"Too many failures. Key entry not cloned", - "F\u00f6r m\u00e5nga fel. Nyckelposten har inte klonats"}, - {"key password for ", "nyckell\u00f6senord f\u00f6r <{0}>"}, - {"Keystore entry for already exists", - "Keystore-post f\u00f6r <{0}> finns redan"}, - {"Creating keystore entry for ...", - "Skapar keystore-post f\u00f6r <{0}> ..."}, - {"No entries from identity database added", - "Inga poster fr\u00e5n identitetsdatabasen har lagts till"}, - {"Alias name: alias", "Aliasnamn: {0}"}, - {"Creation date: keyStore.getCreationDate(alias)", + {"Password.is.too.short.must.be.at.least.6.characters", + "L\u00F6senordet \u00E4r f\u00F6r kort - det m\u00E5ste inneh\u00E5lla minst 6 tecken"}, + {"Too.many.failures.Key.entry.not.cloned", + "F\u00F6r m\u00E5nga fel. Nyckelposten har inte klonats"}, + {"key.password.for.alias.", "nyckell\u00F6senord f\u00F6r <{0}>"}, + {"Keystore.entry.for.id.getName.already.exists", + "Nyckellagerpost f\u00F6r <{0}> finns redan"}, + {"Creating.keystore.entry.for.id.getName.", + "Skapar nyckellagerpost f\u00F6r <{0}> ..."}, + {"No.entries.from.identity.database.added", + "Inga poster fr\u00E5n identitetsdatabasen har lagts till"}, + {"Alias.name.alias", "Aliasnamn: {0}"}, + {"Creation.date.keyStore.getCreationDate.alias.", "Skapat den: {0,date}"}, - {"alias, keyStore.getCreationDate(alias), ", + {"alias.keyStore.getCreationDate.alias.", "{0}, {1,date}, "}, - {"alias, ", "{0}, "}, - {"Entry type: ", "Posttyp: {0}"}, - {"Certificate chain length: ", "L\u00e4ngd p\u00e5 certifikatskedja: "}, - {"Certificate[(i + 1)]:", "Certifikat[{0,number,integer}]:"}, - {"Certificate fingerprint (MD5): ", "Certifikatsfingeravtryck (MD5): "}, - {"Entry type: trustedCertEntry\n", "Posttyp: trustedCertEntry\n"}, - {"trustedCertEntry,", "trustedCertEntry,"}, - {"Keystore type: ", "Keystore-typ: "}, - {"Keystore provider: ", "Keystore-leverant\u00f6r: "}, - {"Your keystore contains keyStore.size() entry", - "Din keystore inneh\u00e5ller en {0,number,integer} post"}, - {"Your keystore contains keyStore.size() entries", - "Din keystore inneh\u00e5ller {0,number,integer} poster"}, - {"Failed to parse input", "Det g\u00e5r inte att analysera indata"}, - {"Empty input", "Inga indata"}, - {"Not X.509 certificate", "Inte ett X.509-certifikat"}, - {"Cannot derive signature algorithm", - "Det g\u00e5r inte att h\u00e4mta n\u00e5gon signatur-algoritm"}, - {"alias has no public key", "{0} saknar offentlig nyckel"}, - {"alias has no X.509 certificate", "{0} saknar X.509-certifikat"}, - {"New certificate (self-signed):", "Nytt certifikat (sj\u00e4lvsignerat):"}, - {"Reply has no certificates", "Svaret saknar certifikat"}, - {"Certificate not imported, alias already exists", + {"alias.", "{0}, "}, + {"Entry.type.type.", "Posttyp: {0}"}, + {"Certificate.chain.length.", "L\u00E4ngd p\u00E5 certifikatskedja: "}, + {"Certificate.i.1.", "Certifikat[{0,number,integer}]:"}, + {"Certificate.fingerprint.SHA1.", "Certifikatets fingeravtryck (SHA1): "}, + {"Entry.type.trustedCertEntry.", "Posttyp: trustedCertEntry\n"}, + {"trustedCertEntry.", "trustedCertEntry,"}, + {"Keystore.type.", "Nyckellagertyp: "}, + {"Keystore.provider.", "Nyckellagerleverant\u00F6r: "}, + {"Your.keystore.contains.keyStore.size.entry", + "Nyckellagret inneh\u00E5ller {0,number,integer} post"}, + {"Your.keystore.contains.keyStore.size.entries", + "Nyckellagret inneh\u00E5ller {0,number,integer} poster"}, + {"Failed.to.parse.input", "Kunde inte tolka indata"}, + {"Empty.input", "Inga indata"}, + {"Not.X.509.certificate", "Inte ett X.509-certifikat"}, + {"alias.has.no.public.key", "{0} saknar offentlig nyckel"}, + {"alias.has.no.X.509.certificate", "{0} saknar X.509-certifikat"}, + {"New.certificate.self.signed.", "Nytt certifikat (sj\u00E4lvsignerat):"}, + {"Reply.has.no.certificates", "Svaret saknar certifikat"}, + {"Certificate.not.imported.alias.alias.already.exists", "Certifikatet importerades inte. Aliaset <{0}> finns redan"}, - {"Input not an X.509 certificate", "Indata \u00e4r inte ett X.509-certifikat"}, - {"Certificate already exists in keystore under alias ", - "Certifikatet finns redan i keystore-filen under aliaset <{0}>"}, - {"Do you still want to add it? [no]: ", - "Vill du fortfarande l\u00e4gga till det? [nej]: "}, - {"Certificate already exists in system-wide CA keystore under alias ", - "Certifikatet finns redan i systemkeystore-filen under aliaset <{0}>"}, - {"Do you still want to add it to your own keystore? [no]: ", - "Vill du fortfarande l\u00e4gga till det i din egen keystore-fil? [nej]: "}, - {"Trust this certificate? [no]: ", "Betror du det h\u00e4r certifikatet? [nej]: "}, + {"Input.not.an.X.509.certificate", "Indata \u00E4r inte ett X.509-certifikat"}, + {"Certificate.already.exists.in.keystore.under.alias.trustalias.", + "Certifikatet finns redan i nyckellagerfilen under aliaset <{0}>"}, + {"Do.you.still.want.to.add.it.no.", + "Vill du fortfarande l\u00E4gga till det? [nej]: "}, + {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.", + "Certifikatet finns redan i den systemomsp\u00E4nnande CA-nyckellagerfilen under aliaset <{0}>"}, + {"Do.you.still.want.to.add.it.to.your.own.keystore.no.", + "Vill du fortfarande l\u00E4gga till det i ditt eget nyckellagret? [nej]: "}, + {"Trust.this.certificate.no.", "Litar du p\u00E5 det h\u00E4r certifikatet? [nej]: "}, {"YES", "JA"}, - {"New prompt: ", "Nytt {0}: "}, - {"Passwords must differ", "L\u00f6senorden m\u00e5ste vara olika"}, - {"Re-enter new prompt: ", "Ange nytt {0} 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 {0}-aliasnamn: "}, - {"Enter new alias name\t(RETURN to cancel import for this entry): ", - "Ange ett nytt aliasnamn\t(skriv RETURN f\u00f6r att avbryta importen av denna post): "}, - {"Enter alias name: ", "Ange aliasnamn: "}, - {"\t(RETURN if same as for )", - "\t(RETURN om det \u00e4r det samma som f\u00f6r <{0}>)"}, - {"*PATTERN* printX509Cert", - "\u00c4gare: {0}\nUtf\u00e4rdare: {1}\nSerienummer: {2}\nGiltigt fr\u00e5n: {3} till: {4}\nCertifikatfingeravtryck:\n\t MD5: {5}\n\t SHA1: {6}\n\t Signaturalgoritm: {7}\n\t Version: {8}"}, - {"What is your first and last name?", - "Vad heter du i f\u00f6r- och efternamn?"}, - {"What is the name of your organizational unit?", + {"New.prompt.", "Nytt {0}: "}, + {"Passwords.must.differ", "L\u00F6senorden m\u00E5ste vara olika"}, + {"Re.enter.new.prompt.", "Ange nytt {0} 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}: "}, + {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.", + "Ange ett nytt aliasnamn\t(skriv RETURN f\u00F6r att avbryta importen av denna post): "}, + {"Enter.alias.name.", "Ange aliasnamn: "}, + {".RETURN.if.same.as.for.otherAlias.", + "\t(RETURN om det \u00E4r det samma som f\u00F6r <{0}>)"}, + {".PATTERN.printX509Cert", + "\u00C4gare: {0}\nUtf\u00E4rdare: {1}\nSerienummer: {2}\nGiltigt fr\u00E5n den: {3} till: {4}\nCertifikatets fingeravtryck:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Namn p\u00E5 signaturalgoritm: {8}\n\t Version: {9}"}, + {"What.is.your.first.and.last.name.", + "Vad heter du i f\u00F6r- och efternamn?"}, + {"What.is.the.name.of.your.organizational.unit.", "Vad heter din avdelning inom organisationen?"}, - {"What is the name of your organization?", + {"What.is.the.name.of.your.organization.", "Vad heter din organisation?"}, - {"What is the name of your City or Locality?", + {"What.is.the.name.of.your.City.or.Locality.", "Vad heter din ort eller plats?"}, - {"What is the name of your State or Province?", + {"What.is.the.name.of.your.State.or.Province.", "Vad heter ditt land eller din provins?"}, - {"What is the two-letter country code for this unit?", - "Vilken \u00e4r den tv\u00e5st\u00e4lliga landskoden?"}, - {"Is correct?", "\u00c4r {0} korrekt?"}, + {"What.is.the.two.letter.country.code.for.this.unit.", + "Vilken \u00E4r den tv\u00E5st\u00E4lliga landskoden?"}, + {"Is.name.correct.", "\u00C4r {0} korrekt?"}, {"no", "nej"}, {"yes", "ja"}, {"y", "j"}, - {" [defaultValue]: ", " [{0}]: "}, - {"Alias has no key", + {".defaultValue.", " [{0}]: "}, + {"Alias.alias.has.no.key", "Aliaset <{0}> saknar nyckel"}, - {"Alias references an entry type that is not a private key entry. The -keyclone command only supports cloning of private key entries", - "Aliaset <{0}> h\u00e4nvisar till en posttyp som inte \u00e4r n\u00e5gon privat nyckelpost. Kommandot -keyclone har endast st\u00f6d f\u00f6r kloning av privata nyckelposter"}, + {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key", + "Aliaset <{0}> refererar till en posttyp som inte \u00E4r n\u00E5gon privat nyckelpost. Kommandot -keyclone har endast st\u00F6d f\u00F6r kloning av privata nyckelposter"}, - {"***************** WARNING WARNING WARNING *****************", - "***************** VARNING VARNING VARNING *****************"}, + {".WARNING.WARNING.WARNING.", + "***************** WARNING WARNING WARNING *****************"}, + {"Signer.d.", "Signerare #%d:"}, + {"Timestamp.", "Tidsst\u00E4mpel:"}, + {"Signature.", "Underskrift:"}, + {"CRLs.", "CRL:er:"}, + {"Certificate.owner.", "Certifikat\u00E4gare: "}, + {"Not.a.signed.jar.file", "Ingen signerad jar-fil"}, + {"No.certificate.from.the.SSL.server", + "Inget certifikat fr\u00E5n SSL-servern"}, // Translators of the following 5 pairs, ATTENTION: // the next 5 string pairs are meant to be combined into 2 paragraphs, // 1+3+4 and 2+3+5. make sure your translation also does. - {"* The integrity of the information stored in your keystore *", - "* Integriteten betr\u00e4ffande den information som lagras i keystore-filen *"}, - {"* The integrity of the information stored in the srckeystore*", - "* Integriteten f\u00f6r informationen som lagras i srckeystore*"}, - {"* has NOT been verified! In order to verify its integrity, *", + {".The.integrity.of.the.information.stored.in.your.keystore.", + "* Integriteten f\u00F6r den information som lagras i nyckellagerfilen *"}, + {".The.integrity.of.the.information.stored.in.the.srckeystore.", + "* Integriteten f\u00F6r informationen som lagras i srckeystore*"}, + {".has.NOT.been.verified.In.order.to.verify.its.integrity.", "* har INTE verifierats! Om du vill verifiera dess integritet, *"}, - {"* you must provide your keystore password. *", - "* m\u00e5ste du tillhandah\u00e5lla ditt keystore-l\u00f6senord. *"}, - {"* you must provide the srckeystore password. *", - "* du m\u00e5ste ange l\u00f6senordet f\u00f6r srckeystore. *"}, + {".you.must.provide.your.keystore.password.", + "* m\u00E5ste du ange nyckellagerl\u00F6senord. *"}, + {".you.must.provide.the.srckeystore.password.", + "* du m\u00E5ste ange l\u00F6senordet f\u00F6r srckeystore. *"}, - {"Certificate reply does not contain public key for ", - "Certifikatsvaret inneh\u00e5ller inte n\u00e5gon offentlig nyckel f\u00f6r <{0}>"}, - {"Incomplete certificate chain in reply", - "Ofullst\u00e4ndig certifikatskedja i svaret"}, - {"Certificate chain in reply does not verify: ", - "Certifikatskedjan i svaret g\u00e5r inte att verifiera: "}, - {"Top-level certificate in reply:\n", - "Toppniv\u00e5certifikatet i svaret:\n"}, - {"... is not trusted. ", "... \u00e4r inte betrott. "}, - {"Install reply anyway? [no]: ", "Vill du installera svaret \u00e4nd\u00e5? [nej]: "}, + {"Certificate.reply.does.not.contain.public.key.for.alias.", + "Certifikatsvaret inneh\u00E5ller inte n\u00E5gon offentlig nyckel f\u00F6r <{0}>"}, + {"Incomplete.certificate.chain.in.reply", + "Ofullst\u00E4ndig certifikatskedja i svaret"}, + {"Certificate.chain.in.reply.does.not.verify.", + "Certifikatskedjan i svaret g\u00E5r inte att verifiera: "}, + {"Top.level.certificate.in.reply.", + "Toppniv\u00E5certifikatet i svaret:\n"}, + {".is.not.trusted.", "... \u00E4r inte betrott. "}, + {"Install.reply.anyway.no.", "Vill du installera svaret \u00E4nd\u00E5? [nej]: "}, {"NO", "NEJ"}, - {"Public keys in reply and keystore don't match", - "De offentliga nycklarna i svaret och keystore-filen matchar inte varandra"}, - {"Certificate reply and certificate in keystore are identical", - "Certifikatssvaret och certifikatet i keystore-filen \u00e4r identiska"}, - {"Failed to establish chain from reply", - "Det gick inte att uppr\u00e4tta n\u00e5gon kedja ur svaret"}, + {"Public.keys.in.reply.and.keystore.don.t.match", + "De offentliga nycklarna i svaret och nyckellagret matchar inte varandra"}, + {"Certificate.reply.and.certificate.in.keystore.are.identical", + "Certifikatsvaret och certifikatet i nyckellagret \u00E4r identiska"}, + {"Failed.to.establish.chain.from.reply", + "Kunde inte uppr\u00E4tta kedja fr\u00E5n svaret"}, {"n", "n"}, - {"Wrong answer, try again", "Fel svar. F\u00f6rs\u00f6k p\u00e5 nytt."}, - {"Secret key not generated, alias already exists", + {"Wrong.answer.try.again", "Fel svar. F\u00F6rs\u00F6k p\u00E5 nytt."}, + {"Secret.key.not.generated.alias.alias.already.exists", "Den hemliga nyckeln har inte genererats eftersom aliaset <{0}> redan finns"}, - {"Please provide -keysize for secret key generation", - "Ange -keysize f\u00f6r skapande av hemlig nyckel"}, - {"keytool usage:\n", "nyckelverktyg:\n"}, + {"Please.provide.keysize.for.secret.key.generation", + "Ange -keysize f\u00F6r att skapa hemlig nyckel"}, - {"Extensions: ", "Filtill\u00e4gg: "}, - - {"-certreq [-v] [-protected]", - "-certreq [-v] [-protected]"}, - {"\t [-alias ] [-sigalg ]", - "\t [-alias ] [-sigalg ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - {"\t [-keystore ] [-storepass ]", - "\t [-keystore ] [-storepass ]"}, - {"\t [-storetype ] [-providername ]", - "\t [-storetype ] [-providername ]"}, - {"\t [-providerclass [-providerarg ]] ...", - "\t [-providerclass [-providerarg ]] ..."}, - {"\t [-providerpath ]", - "\t [-providerpath ]"}, - {"-delete [-v] [-protected] -alias ", - "-delete [-v] [-protected] -alias "}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-export [-v] [-rfc] [-protected]", - // "-export [-v] [-rfc] [-protected]"}, - {"-exportcert [-v] [-rfc] [-protected]", - "-exportcert [-v] [-rfc] [-protected]"}, - {"\t [-alias ] [-file ]", - "\t [-alias ] [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-genkey [-v] [-protected]", - // "-genkey [-v] [-protected]"}, - {"-genkeypair [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-keyalg ] [-keysize ]", - "\t [-keyalg ] [-keysize ]"}, - {"\t [-sigalg ] [-dname ]", - "\t [-sigalg ] [-dname ]"}, - {"\t [-validity ] [-keypass ]", - "\t [-validity ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-genseckey [-v] [-protected]", - "-genseckey [-v] [-protected]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-help", "-help"}, - //{"-identitydb [-v] [-protected]", - // "-identitydb [-v] [-protected]"}, - //{"\t [-file ]", "\t [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-import [-v] [-noprompt] [-trustcacerts] [-protected]", - // "-import [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"-importcert [-v] [-noprompt] [-trustcacerts] [-protected]", - "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - {"\t [-alias ] [-keypass ]", - "\t [-alias ] [-keypass ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-importkeystore [-v] ", - "-importkeystore [-v] "}, - {"\t [-srckeystore ] [-destkeystore ]", - "\t [-srckeystore ] [-destkeystore ]"}, - {"\t [-srcstoretype ] [-deststoretype ]", - "\t [-srcstoretype ] [-deststoretype ]"}, - {"\t [-srcprotected] [-destprotected]", - "\t [-srcprotected] [-destprotected]"}, - {"\t [-srcstorepass ] [-deststorepass ]", - "\t [-srcstorepass ] [-deststorepass ]"}, - {"\t [-srcprovidername ]\n\t [-destprovidername ]", // raden \u00e4r f\u00f6r l\u00e5ng, dela upp p\u00e5 2 - "\t [-srcprovidername ]\n\t [-destprovidername ]"}, - {"\t [-srcalias [-destalias ]", - "\t [-srcalias [-destalias ]"}, - {"\t [-srckeypass ] [-destkeypass ]]", - "\t [-srckeypass ] [-destkeypass ]]"}, - {"\t [-noprompt]", "\t [-noprompt]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-changealias [-v] [-protected] -alias -destalias ", - "-changealias [-v] [-protected] -alias -destalias "}, - {"\t [-keypass ]", "\t [-keypass ]"}, - - //{"-keyclone [-v] [-protected]", - // "-keyclone [-v] [-protected]"}, - //{"\t [-alias ] -dest ", - // "\t [-alias ] -dest "}, - //{"\t [-keypass ] [-new ]", - // "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-keypasswd [-v] [-alias ]", - "-keypasswd [-v] [-alias ]"}, - {"\t [-keypass ] [-new ]", - "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-list [-v | -rfc] [-protected]", - "-list [-v | -rfc] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-printcert [-v] [-file ]", - "-printcert [-v] [-file ]"}, - - //{"-selfcert [-v] [-protected]", - // "-selfcert [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias ]"}, - //{"\t [-dname ] [-validity ]", - // "\t [-dname ] [-validity ]"}, - //{"\t [-keypass ] [-sigalg ]", - // "\t [-keypass ] [-sigalg ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-storepasswd [-v] [-new ]", - "-storepasswd [-v] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ + {"Extensions.", "Till\u00E4gg: "}, + {".Empty.value.", "(Tomt v\u00E4rde)"}, + {"Extension.Request.", "Till\u00E4ggsbeg\u00E4ran:"}, + {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.", + "PKCS #10 certifikatbeg\u00E4ran (version 1.0)\n\u00C4mne: %s\nAllm\u00E4n nyckel: %s-format %s-nyckel\n"}, + {"Unknown.keyUsage.type.", "Ok\u00E4nd keyUsage-typ: "}, + {"Unknown.extendedkeyUsage.type.", "Ok\u00E4nd extendedkeyUsage-typ: "}, + {"Unknown.AccessDescription.type.", "Ok\u00E4nd AccessDescription-typ: "}, + {"Unrecognized.GeneralName.type.", "Ok\u00E4nd GeneralName-typ: "}, + {"This.extension.cannot.be.marked.as.critical.", + "Detta till\u00E4gg kan inte markeras som kritiskt. "}, + {"Odd.number.of.hex.digits.found.", "Udda antal hex-siffror p\u00E5tr\u00E4ffades: "}, + {"Unknown.extension.type.", "Ok\u00E4nd till\u00E4ggstyp: "}, + {"command.{0}.is.ambiguous.", "kommandot {0} \u00E4r tvetydigt:"}, // policytool - {"Warning: A public key for alias 'signers[i]' does not exist. Make sure a KeyStore is properly configured.", - "Varning! Det finns ingen offentlig nyckel f\u00f6r aliaset {0}. Kontrollera att det aktuella nyckellagret \u00e4r korrekt konfigurerat."}, - {"Warning: Class not found: class", "Varning! Klassen hittades inte: {0}"}, - {"Warning: Invalid argument(s) for constructor: arg", - "Varning! Ogiltigt/Ogiltiga argument f\u00f6r konstrukt\u00f6r: {0}"}, - {"Illegal Principal Type: type", "Ogiltig huvudtyp: {0}"}, - {"Illegal option: option", "Ogiltigt alternativ: {0}"}, - {"Usage: policytool [options]", "G\u00f6r s\u00e5 h\u00e4r: policytool [alternativ]"}, - {" [-file ] policy file location", + {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.", + "Varning! Det finns ingen offentlig nyckel f\u00F6r aliaset {0}. Kontrollera att det aktuella nyckellagret \u00E4r korrekt konfigurerat."}, + {"Warning.Class.not.found.class", "Varning! Klassen hittades inte: {0}"}, + {"Warning.Invalid.argument.s.for.constructor.arg", + "Varning! Ogiltiga argument f\u00F6r konstruktor: {0}"}, + {"Illegal.Principal.Type.type", "Otill\u00E5ten identitetshavaretyp: {0}"}, + {"Illegal.option.option", "Otill\u00E5tet alternativ: {0}"}, + {"Usage.policytool.options.", "Syntax: policytool [alternativ]"}, + {".file.file.policy.file.location", " [-file ] policyfilens plats"}, {"New", "Nytt"}, - {"Open", "\u00d6ppna"}, + {"Open", "\u00D6ppna"}, {"Save", "Spara"}, - {"Save As", "Spara som"}, - {"View Warning Log", "Visa varningslogg"}, + {"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"}, + {"Add.Policy.Entry", "L\u00E4gg till policypost"}, + {"Edit.Policy.Entry", "Redigera policypost"}, + {"Remove.Policy.Entry", "Ta bort policypost"}, {"Edit", "Redigera"}, - {"Retain", "Beh\u00e5ll"}, + {"Retain", "Beh\u00E5ll"}, - {"Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name.", - "Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name."}, + {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes", + "Varning! Filnamnet kan inneh\u00E5lla omv\u00E4nda snedstreck inom citattecken. Citattecken kr\u00E4vs inte f\u00F6r omv\u00E4nda snedstreck (verktyget hanterar detta n\u00E4r policyinneh\u00E5llet skrivs till det best\u00E4ndiga lagret).\n\nKlicka p\u00E5 Beh\u00E5ll f\u00F6r att beh\u00E5lla det angivna namnet, eller klicka p\u00E5 Redigera f\u00F6r att \u00E4ndra det."}, - {"Add Public Key Alias", "L\u00e4gg till offentligt nyckelalias"}, - {"Remove Public Key Alias", "Ta bort offentligt nyckelalias"}, - {"File", "Arkiv"}, + {"Add.Public.Key.Alias", "L\u00E4gg till offentligt nyckelalias"}, + {"Remove.Public.Key.Alias", "Ta bort offentligt nyckelalias"}, + {"File", "Fil"}, {"KeyStore", "Nyckellager"}, - {"Policy File:", "Policyfil:"}, - {"Could not open policy file: policyFile: e.toString()", - "Det g\u00e5r inte att \u00f6ppna policyfilen: {0}: {1}"}, - {"Policy Tool", "Policyverktyg"}, - {"Errors have occurred while opening the policy configuration. View the Warning Log for more information.", - "Det uppstod ett fel n\u00e4r policykonfigurationen skulle \u00f6ppnas. Visa varningsloggen med ytterligare information."}, + {"Policy.File.", "Policyfil:"}, + {"Could.not.open.policy.file.policyFile.e.toString.", + "Kan inte \u00F6ppna policyfilen: {0}: {1}"}, + {"Policy.Tool", "Policyverktyg"}, + {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.", + "Det uppstod ett fel n\u00E4r policykonfigurationen skulle \u00F6ppnas. Se varningsloggen f\u00F6r mer information."}, {"Error", "Fel"}, {"OK", "OK"}, {"Status", "Status"}, {"Warning", "Varning"}, - {"Permission: ", - "Beh\u00f6righet: "}, - {"Principal Type:", "Principaltyp:"}, - {"Principal Name:", "Principalnamn:"}, - {"Target Name: ", - "M\u00e5lets namn: "}, - {"Actions: ", + {"Permission.", + "Beh\u00F6righet: "}, + {"Principal.Type.", "Identitetshavaretyp:"}, + {"Principal.Name.", "Identitetshavare:"}, + {"Target.Name.", + "M\u00E5l: "}, + {"Actions.", "Funktioner: "}, - {"OK to overwrite existing file filename?", - "Ska den befintliga filen {0} skrivas \u00f6ver?"}, + {"OK.to.overwrite.existing.file.filename.", + "Ska den befintliga filen {0} skrivas \u00F6ver?"}, {"Cancel", "Avbryt"}, - {"CodeBase:", "CodeBase:"}, - {"SignedBy:", "SignedBy:"}, - {"Add Principal", "L\u00e4gg till principal"}, - {"Edit Principal", "Redigera principal"}, - {"Remove Principal", "Ta bort principal"}, - {"Principals:", "Principaler:"}, - {" Add Permission", " L\u00e4gg till beh\u00f6righet"}, - {" Edit Permission", " Redigera beh\u00f6righet"}, - {"Remove Permission", "Ta bort beh\u00f6righet"}, - {"Done", "Klar"}, - {"KeyStore URL:", "Webbadress f\u00f6r nyckellager:"}, - {"KeyStore Type:", "Nyckellagertyp:"}, - {"KeyStore Provider:", "Nyckellagerleverant\u00f6r:"}, - {"KeyStore Password URL:", "Webbadress f\u00f6r l\u00f6senord till nyckellager:"}, - {"Principals", "Principaler"}, - {" Edit Principal:", " Redigera principal:"}, - {" Add New Principal:", " L\u00e4gg till ny principal:"}, - {"Permissions", "Beh\u00f6righet"}, - {" Edit Permission:", " Redigera beh\u00f6righet:"}, - {" Add New Permission:", " L\u00e4gg till ny beh\u00f6righet:"}, - {"Signed By:", "Signerad av:"}, - {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name", - "Det g\u00e5r inte att specificera principal med wildcard-klass utan wildcard-namn"}, - {"Cannot Specify Principal without a Name", - "Det g\u00e5r inte att specificera principal utan namn"}, - {"Permission and Target Name must have a value", - "Beh\u00f6righet och m\u00e5lnamn m\u00e5ste ha ett v\u00e4rde"}, - {"Remove this Policy Entry?", "Vill du ta bort den h\u00e4r policyposten?"}, - {"Overwrite File", "Skriva \u00f6ver fil"}, - {"Policy successfully written to filename", + {"CodeBase.", "Kodbas:"}, + {"SignedBy.", "Signerad av:"}, + {"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"}, + {"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:"}, + {"Principals", "Identitetshavare"}, + {".Edit.Principal.", " Redigera identitetshavare:"}, + {".Add.New.Principal.", " L\u00E4gg till ny identitetshavare:"}, + {"Permissions", "Beh\u00F6righet"}, + {".Edit.Permission.", " Redigera beh\u00F6righet:"}, + {".Add.New.Permission.", " L\u00E4gg till ny beh\u00F6righet:"}, + {"Signed.By.", "Signerad av:"}, + {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name", + "Kan inte specificera identitetshavare med jokerteckenklass utan jokerteckennamn"}, + {"Cannot.Specify.Principal.without.a.Name", + "Kan inte specificera identitetshavare utan namn"}, + {"Permission.and.Target.Name.must.have.a.value", + "Beh\u00F6righet och m\u00E5lnamn m\u00E5ste ha ett v\u00E4rde"}, + {"Remove.this.Policy.Entry.", "Vill du ta bort den h\u00E4r policyposten?"}, + {"Overwrite.File", "Skriv \u00F6ver fil"}, + {"Policy.successfully.written.to.filename", "Policy har skrivits till {0}"}, - {"null filename", "nullfilnamn"}, - {"Save changes?", "Vill du spara \u00e4ndringarna?"}, + {"null.filename", "nullfilnamn"}, + {"Save.changes.", "Vill du spara \u00E4ndringarna?"}, {"Yes", "Ja"}, {"No", "Nej"}, - {"Policy Entry", "Policyfel"}, - {"Save Changes", "Vill du spara \u00e4ndringarna?"}, - {"No Policy Entry selected", "N\u00e5gon policypost har inte markerats"}, - {"Unable to open KeyStore: ex.toString()", - "Det g\u00e5r inte att \u00f6ppna nyckellagret: {0}"}, - {"No principal selected", "Ingen principal har markerats"}, - {"No permission selected", "N\u00e5gon beh\u00f6righet har inte markerats"}, + {"Policy.Entry", "Policyfel"}, + {"Save.Changes", "Spara \u00E4ndringar"}, + {"No.Policy.Entry.selected", "Ingen policypost har valts"}, + {"Unable.to.open.KeyStore.ex.toString.", + "Kan inte \u00F6ppna nyckellagret: {0}"}, + {"No.principal.selected", "Ingen identitetshavare har valts"}, + {"No.permission.selected", "Ingen beh\u00F6righet har valts"}, {"name", "namn"}, - {"configuration type", "konfigurationstyp"}, - {"environment variable name", "variabelnamn f\u00f6r milj\u00f6"}, - {"library name", "biblioteksnamn"}, - {"package name", "paketnamn"}, - {"policy type", "policytyp"}, - {"property name", "egenskapsnamn"}, - {"provider name", "leverant\u00f6rsnamn"}, - {"Principal List", "Huvudlista"}, - {"Permission List", "Beh\u00f6righetslista"}, - {"Code Base", "Kodbas"}, - {"KeyStore U R L:", "Webbadress f\u00f6r nyckellager:"}, - {"KeyStore Password U R L:", "Webbadress f\u00f6r l\u00f6senord till nyckellager:"}, + {"configuration.type", "konfigurationstyp"}, + {"environment.variable.name", "variabelnamn f\u00F6r milj\u00F6"}, + {"library.name", "biblioteksnamn"}, + {"package.name", "paketnamn"}, + {"policy.type", "policytyp"}, + {"property.name", "egenskapsnamn"}, + {"Principal.List", "Lista \u00F6ver identitetshavare"}, + {"Permission.List", "Beh\u00F6righetslista"}, + {"Code.Base", "Kodbas"}, + {"KeyStore.U.R.L.", "URL f\u00F6r nyckellager:"}, + {"KeyStore.Password.U.R.L.", "URL f\u00F6r l\u00F6senord till nyckellager:"}, // javax.security.auth.PrivateCredentialPermission - {"invalid null input(s)", "ogiltiga null-indata"}, - {"actions can only be 'read'", "funktioner kan endast 'l\u00e4sas'"}, - {"permission name [name] syntax invalid: ", - "syntaxen f\u00f6r beh\u00f6righetsnamnet [{0}] \u00e4r ogiltig: "}, - {"Credential Class not followed by a Principal Class and Name", - "Kreditivklassen f\u00f6ljs inte av principalklass eller principalnamn"}, - {"Principal Class not followed by a Principal Name", - "Principalklassen f\u00f6ljs inte av n\u00e5got principalnamn"}, - {"Principal Name must be surrounded by quotes", - "Principalnamnet m\u00e5ste anges inom citattecken"}, - {"Principal Name missing end quote", - "Principalnamnet saknar avslutande citattecken"}, - {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value", - "V\u00e4rdet f\u00f6r principalklassen PrivateCredentialPermission kan inte ha n\u00e5got jokertecken (*) om principalnamnet inte anges med jokertecken (*)"}, - {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name", - "CredOwner:\n\tPrincipalklass = {0}\n\tPrincipalnamn = {1}"}, + {"invalid.null.input.s.", "ogiltiga null-indata"}, + {"actions.can.only.be.read.", "funktioner kan endast 'l\u00E4sas'"}, + {"permission.name.name.syntax.invalid.", + "syntaxen f\u00F6r beh\u00F6righetsnamnet [{0}] \u00E4r ogiltig: "}, + {"Credential.Class.not.followed.by.a.Principal.Class.and.Name", + "Inloggningsuppgiftsklassen f\u00F6ljs inte av klass eller namn f\u00F6r identitetshavare"}, + {"Principal.Class.not.followed.by.a.Principal.Name", + "Identitetshavareklassen f\u00F6ljs inte av n\u00E5got identitetshavarenamn"}, + {"Principal.Name.must.be.surrounded.by.quotes", + "Identitetshavarenamnet m\u00E5ste anges inom citattecken"}, + {"Principal.Name.missing.end.quote", + "Identitetshavarenamnet saknar avslutande citattecken"}, + {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value", + "Identitetshavareklassen PrivateCredentialPermission kan inte ha n\u00E5got jokertecken (*) om inte namnet p\u00E5 identitetshavaren anges med jokertecken (*)"}, + {"CredOwner.Principal.Class.class.Principal.Name.name", + "CredOwner:\n\tIdentitetshavareklass = {0}\n\tIdentitetshavarenamn = {1}"}, // javax.security.auth.x500 - {"provided null name", "gav null-namn"}, - {"provided null keyword map", "nullnyckelordsmappning tillhandah\u00f6lls"}, - {"provided null OID map", "null-OID-mappning tillhandah\u00f6lls"}, + {"provided.null.name", "angav null-namn"}, + {"provided.null.keyword.map", "nullnyckelordsmappning tillhandah\u00F6lls"}, + {"provided.null.OID.map", "null-OID-mappning tillhandah\u00F6lls"}, // javax.security.auth.Subject - {"invalid null AccessControlContext provided", + {"invalid.null.AccessControlContext.provided", "ogiltigt null-AccessControlContext"}, - {"invalid null action provided", "ogiltig null-funktion"}, - {"invalid null Class provided", "ogiltig null-klass"}, - {"Subject:\n", "\u00c4rende:\n"}, - {"\tPrincipal: ", "\tPrincipal: "}, - {"\tPublic Credential: ", "\tOffentligt kreditiv: "}, - {"\tPrivate Credentials inaccessible\n", - "\tPrivata kreditiv \u00e4r otillg\u00e4ngliga\n"}, - {"\tPrivate Credential: ", "\tPrivata kreditiv: "}, - {"\tPrivate Credential inaccessible\n", - "\tPrivata kreditiv \u00e4r otillg\u00e4ngliga\n"}, - {"Subject is read-only", "\u00c4mnet \u00e4r skrivskyddat"}, - {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set", - "f\u00f6rs\u00f6k att l\u00e4gga till ett objekt som inte \u00e4r en f\u00f6rekomst av java.security.Principal till en principalupps\u00e4ttning"}, - {"attempting to add an object which is not an instance of class", - "f\u00f6rs\u00f6ker l\u00e4gga till ett objekt som inte \u00e4r en f\u00f6rekomst av {0}"}, + {"invalid.null.action.provided", "ogiltig null-funktion"}, + {"invalid.null.Class.provided", "ogiltig null-klass"}, + {"Subject.", "Innehavare:\n"}, + {".Principal.", "\tIdentitetshavare: "}, + {".Public.Credential.", "\tOffentlig inloggning: "}, + {".Private.Credentials.inaccessible.", + "\tPrivat inloggning \u00E4r inte tillg\u00E4nglig\n"}, + {".Private.Credential.", "\tPrivat inloggning: "}, + {".Private.Credential.inaccessible.", + "\tPrivat inloggning \u00E4r inte tillg\u00E4nglig\n"}, + {"Subject.is.read.only", "Innehavare \u00E4r skrivskyddad"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set", + "f\u00F6rs\u00F6k att l\u00E4gga till ett objekt som inte \u00E4r en f\u00F6rekomst av java.security.Principal till en upps\u00E4ttning av identitetshavare"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.class", + "f\u00F6rs\u00F6ker l\u00E4gga till ett objekt som inte \u00E4r en instans av {0}"}, // javax.security.auth.login.AppConfigurationEntry - {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "}, + {"LoginModuleControlFlag.", "LoginModuleControlFlag: "}, // javax.security.auth.login.LoginContext - {"Invalid null input: name", "Ogiltiga null-indata: namn"}, - {"No LoginModules configured for name", - "Inga inloggningsmoduler har konfigurerats f\u00f6r {0}"}, - {"invalid null Subject provided", "ogiltigt null-Subject"}, - {"invalid null CallbackHandler provided", + {"Invalid.null.input.name", "Ogiltiga null-indata: namn"}, + {"No.LoginModules.configured.for.name", + "Inga inloggningsmoduler har konfigurerats f\u00F6r {0}"}, + {"invalid.null.Subject.provided", "ogiltig null-innehavare"}, + {"invalid.null.CallbackHandler.provided", "ogiltig null-CallbackHandler"}, - {"null subject - logout called before login", - "null-subject - utloggning anropades f\u00f6re inloggning"}, - {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor", - "det g\u00e5r inta att representera LoginModule, {0}, eftersom den inte tillhandah\u00e5ller n\u00e5gon argumentfri konstruktion"}, - {"unable to instantiate LoginModule", - "det g\u00e5r inte att representera LoginModule"}, - {"unable to instantiate LoginModule: ", - "inloggningsmodulen kan inte skapas: "}, - {"unable to find LoginModule class: ", - "det g\u00e5r inte att hitta LoginModule-klassen: "}, - {"unable to access LoginModule: ", - "det g\u00e5r inte att komma \u00e5t LoginModule: "}, - {"Login Failure: all modules ignored", + {"null.subject.logout.called.before.login", + "null-innehavare - utloggning anropades f\u00F6re inloggning"}, + {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor", + "kan inte instansiera LoginModule, {0}, eftersom den inte tillhandah\u00E5ller n\u00E5gon icke-argumentskonstruktor"}, + {"unable.to.instantiate.LoginModule", + "kan inte instansiera LoginModule"}, + {"unable.to.instantiate.LoginModule.", + "kan inte instansiera LoginModule: "}, + {"unable.to.find.LoginModule.class.", + "hittar inte LoginModule-klassen: "}, + {"unable.to.access.LoginModule.", + "ingen \u00E5tkomst till LoginModule: "}, + {"Login.Failure.all.modules.ignored", "Inloggningsfel: alla moduler ignoreras"}, // sun.security.provider.PolicyFile - {"java.security.policy: error parsing policy:\n\tmessage", - "java.security.policy: fel vid analys av {0}:\n\t{1}"}, - {"java.security.policy: error adding Permission, perm:\n\tmessage", - "java.security.policy: fel vid till\u00e4gg av beh\u00f6righet, {0}:\n\t{1}"}, - {"java.security.policy: error adding Entry:\n\tmessage", - "java.security.policy: fel vid till\u00e4gg av post:\n\t{0}"}, - {"alias name not provided (pe.name)", "aliasnamn ej angivet ({0})"}, - {"unable to perform substitution on alias, suffix", - "kan ej ers\u00e4tta aliasnamn, {0}"}, - {"substitution value, prefix, unsupported", - "ers\u00e4ttningsv\u00e4rde, {0}, st\u00f6ds ej"}, - {"(", "("}, - {")", ")"}, - {"type can't be null","typen kan inte vara null"}, + {"java.security.policy.error.parsing.policy.message", + "java.security.policy: fel vid tolkning av {0}:\n\t{1}"}, + {"java.security.policy.error.adding.Permission.perm.message", + "java.security.policy: fel vid till\u00E4gg av beh\u00F6righet, {0}:\n\t{1}"}, + {"java.security.policy.error.adding.Entry.message", + "java.security.policy: fel vid till\u00E4gg av post:\n\t{0}"}, + {"alias.name.not.provided.pe.name.", "aliasnamn ej angivet ({0})"}, + {"unable.to.perform.substitution.on.alias.suffix", + "kan ej ers\u00E4tta alias, {0}"}, + {"substitution.value.prefix.unsupported", + "ers\u00E4ttningsv\u00E4rde, {0}, st\u00F6ds ej"}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"type.can.t.be.null","typen kan inte vara null"}, // sun.security.provider.PolicyParser - {"keystorePasswordURL can not be specified without also specifying keystore", - "det g\u00e5r inte att ange keystorePasswordURL utan att ange keystore"}, - {"expected keystore type", "f\u00f6rv\u00e4ntad keystore-typ"}, - {"expected keystore provider", "keystore-leverant\u00f6r f\u00f6rv\u00e4ntades"}, - {"multiple Codebase expressions", - "flera Codebase-uttryck"}, - {"multiple SignedBy expressions","flera SignedBy-uttryck"}, - {"SignedBy has empty alias","SignedBy har ett tomt alias"}, - {"can not specify Principal with a wildcard class without a wildcard name", - "Det g\u00e5r inte att specificera principal genom att ange jokertecken f\u00f6r klass utan att samtidigt ange jokertecken f\u00f6r namn"}, - {"expected codeBase or SignedBy or Principal", - "f\u00f6rv\u00e4ntad codeBase eller SignedBy eller Principal"}, - {"expected permission entry", "f\u00f6rv\u00e4ntade beh\u00f6righetspost"}, - {"number ", "antal "}, - {"expected [expect], read [end of file]", - "f\u00f6rv\u00e4ntade [{0}], l\u00e4ste [end of file]"}, - {"expected [;], read [end of file]", - "f\u00f6rv\u00e4ntade [;], l\u00e4ste [end of file]"}, - {"line number: msg", "rad {0}: {1}"}, - {"line number: expected [expect], found [actual]", - "rad {0}: f\u00f6rv\u00e4ntade [{1}], hittade [{2}]"}, - {"null principalClass or principalName", + {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore", + "kan inte ange keystorePasswordURL utan att ange nyckellager"}, + {"expected.keystore.type", "f\u00F6rv\u00E4ntad nyckellagertyp"}, + {"expected.keystore.provider", "nyckellagerleverant\u00F6r f\u00F6rv\u00E4ntades"}, + {"multiple.Codebase.expressions", + "flera CodeBase-uttryck"}, + {"multiple.SignedBy.expressions","flera SignedBy-uttryck"}, + {"SignedBy.has.empty.alias","SignedBy har ett tomt alias"}, + {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name", + "kan inte ange identitetshavare med en jokerteckenklass utan ett jokerteckennamn"}, + {"expected.codeBase.or.SignedBy.or.Principal", + "f\u00F6rv\u00E4ntad codeBase eller SignedBy eller identitetshavare"}, + {"expected.permission.entry", "f\u00F6rv\u00E4ntade beh\u00F6righetspost"}, + {"number.", "antal "}, + {"expected.expect.read.end.of.file.", + "f\u00F6rv\u00E4ntade [{0}], l\u00E4ste [end of file]"}, + {"expected.read.end.of.file.", + "f\u00F6rv\u00E4ntade [;], l\u00E4ste [end of file]"}, + {"line.number.msg", "rad {0}: {1}"}, + {"line.number.expected.expect.found.actual.", + "rad {0}: f\u00F6rv\u00E4ntade [{1}], hittade [{2}]"}, + {"null.principalClass.or.principalName", "null-principalClass eller -principalName"}, // sun.security.pkcs11.SunPKCS11 - {"PKCS11 Token [providerName] Password: ", - "PKCS11-pollett [{0}] L\u00f6senord: "}, + {"PKCS11.Token.providerName.Password.", + "PKCS11-tecken [{0}] L\u00F6senord: "}, /* --- DEPRECATED --- */ // javax.security.auth.Policy - {"unable to instantiate Subject-based policy", - "den Subject-baserade policyn kan inte skapas"} + {"unable.to.instantiate.Subject.based.policy", + "den innehavarbaserade policyn kan inte skapas"} }; @@ -648,3 +670,4 @@ public class Resources_sv extends java.util.ListResourceBundle { return contents; } } + diff --git a/jdk/src/share/classes/sun/security/util/Resources_zh_CN.java b/jdk/src/share/classes/sun/security/util/Resources_zh_CN.java index 815004dda67..934b003c75e 100644 --- a/jdk/src/share/classes/sun/security/util/Resources_zh_CN.java +++ b/jdk/src/share/classes/sun/security/util/Resources_zh_CN.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -35,605 +35,627 @@ public class Resources_zh_CN extends java.util.ListResourceBundle { private static final Object[][] contents = { // shared (from jarsigner) - {" ", " "}, - {" ", " "}, - {" ", " "}, - {", ", ", "}, + {"SPACE", " "}, + {"2SPACE", " "}, + {"6SPACE", " "}, + {"COMMA", ", "}, // shared (from keytool) - {"\n", "\n"}, - {"*******************************************", + {"NEWLINE", "\n"}, + {"STAR", "*******************************************"}, - {"*******************************************\n\n", + {"STARNN", "*******************************************\n\n"}, - // keytool - {"keytool error: ", "keytool\u9519\u8bef\uff1a "}, - {"Illegal option: ", "\u975e\u6cd5\u9009\u9879\uff1a "}, - {"Try keytool -help","\u5c1d\u8bd5 keytool -help"}, - {"Command option needs an argument.", "\u547d\u4ee4\u9009\u9879 {0} \u9700\u8981\u4e00\u4e2a\u53c2\u6570\u3002"}, - {"Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified value.", -"\u8b66\u544a: PKCS12 KeyStores \u4e0d\u652f\u6301\u5176\u4ed6\u5b58\u50a8\u548c\u5bc6\u94a5\u53e3\u4ee4\u3002\u5ffd\u7565\u7528\u6237\u6307\u5b9a\u7684 {0} \u503c\u3002"}, - {"-keystore must be NONE if -storetype is {0}", - "\u5982\u679c -storetype \u4e3a {0}\uff0c\u5219 -keystore \u5fc5\u987b\u4e3a NONE"}, - {"Too may retries, program terminated", -"\u91cd\u8bd5\u6b21\u6570\u8fc7\u591a\uff0c\u7a0b\u5e8f\u5df2\u7ec8\u6b62"}, - {"-storepasswd and -keypasswd commands not supported if -storetype is {0}", - "\u5982\u679c -storetype \u4e3a {0}\uff0c\u5219\u4e0d\u652f\u6301 -storepasswd \u548c -keypasswd \u547d\u4ee4"}, - {"-keypasswd commands not supported if -storetype is PKCS12", - "\u5982\u679c -storetype \u4e3a PKCS12\uff0c\u5219\u4e0d\u652f\u6301 -keypasswd \u547d\u4ee4"}, - {"-keypass and -new can not be specified if -storetype is {0}", - "\u5982\u679c -storetype \u4e3a {0}\uff0c\u5219\u4e0d\u80fd\u6307\u5b9a -keypass \u548c -new"}, - {"if -protected is specified, then -storepass, -keypass, and -new must not be specified", - "\u5982\u679c\u6307\u5b9a\u4e86 -protected\uff0c\u5219\u4e0d\u8981\u6307\u5b9a -storepass\u3001-keypass \u548c -new"}, - {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified", - "\u5982\u679c\u6307\u5b9a\u4e86 -srcprotected\uff0c\u5219\u4e0d\u80fd\u6307\u5b9a -srcstorepass \u548c -srckeypass"}, - {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified", - "\u5982\u679c\u5bc6\u94a5\u5e93\u672a\u53d7\u5bc6\u7801\u4fdd\u62a4\uff0c\u5219\u8bf7\u52ff\u6307\u5b9a -storepass\u3001-keypass \u548c -new"}, - {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified", - "\u5982\u679c\u6e90\u5bc6\u94a5\u5e93\u672a\u53d7\u5bc6\u7801\u4fdd\u62a4\uff0c\u5219\u8bf7\u52ff\u6307\u5b9a -srcstorepass \u548c -srckeypass"}, - {"Validity must be greater than zero", - "\u6709\u6548\u6027\u5fc5\u987b\u5927\u4e8e\u96f6"}, - {"provName not a provider", "{0}\u4e0d\u662f\u4e00\u4e2a\u63d0\u4f9b\u8005"}, - {"Usage error: no command provided", "\u7528\u6cd5\u9519\u8bef: \u6ca1\u6709\u63d0\u4f9b\u547d\u4ee4"}, - {"Usage error, is not a legal command", "\u7528\u6cd5\u9519\u8bef\uff0c{0} \u4e0d\u662f\u5408\u6cd5\u7684\u547d\u4ee4"}, - {"Source keystore file exists, but is empty: ", "\u6e90\u5bc6\u94a5\u5e93\u6587\u4ef6\u5b58\u5728\uff0c\u4f46\u4e3a\u7a7a: "}, - {"Please specify -srckeystore", "\u8bf7\u6307\u5b9a -srckeystore"}, - {"Must not specify both -v and -rfc with 'list' command", - "\u4e0d\u5f97\u4ee5\u300c\u5217\u8868\u300d\u6307\u4ee4\u6765\u6307\u5b9a-v \u53ca-rfc"}, - {"Key password must be at least 6 characters", - "\u5173\u952e\u5bc6\u7801\u81f3\u5c11\u5fc5\u987b\u4e3a6\u4e2a\u5b57\u7b26"}, - {"New password must be at least 6 characters", - "\u65b0\u5bc6\u7801\u81f3\u5c11\u5fc5\u987b\u4e3a6\u4e2a\u5b57\u7b26"}, - {"Keystore file exists, but is empty: ", - "Keystore\u6587\u4ef6\u5b58\u5728\uff0c\u4f46\u4e3a\u7a7a\u6587\u4ef6\uff1a "}, - {"Keystore file does not exist: ", - "Keystore \u6587\u4ef6\u4e0d\u5b58\u5728\uff1a "}, - {"Must specify destination alias", "\u5fc5\u987b\u6307\u5b9a\u76ee\u7684\u5730\u522b\u540d"}, - {"Must specify alias", "\u5fc5\u987b\u6307\u5b9a\u522b\u540d"}, - {"Keystore password must be at least 6 characters", - "Keystore \u5bc6\u7801\u81f3\u5c11\u5fc5\u987b\u4e3a6\u4e2a\u5b57\u7b26"}, - {"Enter keystore password: ", "\u8f93\u5165keystore\u5bc6\u7801\uff1a "}, - {"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: "}, - {"Keystore password is too short - must be at least 6 characters", - "Keystore \u5bc6\u7801\u592a\u77ed -\u81f3\u5c11\u5fc5\u987b\u4e3a6\u4e2a\u5b57\u7b26"}, - {"Unknown Entry Type", "\u672a\u77e5\u9879\u7c7b\u578b"}, - {"Too many failures. Alias not changed", "\u9519\u8bef\u8fc7\u591a\u3002\u672a\u66f4\u6539\u522b\u540d"}, - {"Entry for alias successfully imported.", -"\u5df2\u6210\u529f\u5bfc\u5165\u522b\u540d {0} \u9879\u3002"}, - {"Entry for alias not imported.", "\u672a\u5bfc\u5165\u522b\u540d {0} \u9879\u3002"}, - {"Problem importing entry for alias : .\nEntry for alias not imported.", -"\u5bfc\u5165\u522b\u540d {0} \u9879\u65f6\u51fa\u73b0\u95ee\u9898: {1}\u3002\n\u672a\u5bfc\u5165\u522b\u540d {0} \u9879\u3002"}, - {"Import command completed: entries successfully imported, entries failed or cancelled", -"\u5df2\u5b8c\u6210\u5bfc\u5165\u547d\u4ee4: {0} \u9879\u6210\u529f\u5bfc\u5165\uff0c{1} \u9879\u5931\u8d25\u6216\u53d6\u6d88"}, - {"Warning: Overwriting existing alias in destination keystore", -"\u8b66\u544a: \u6b63\u5728\u8986\u76d6\u76ee\u6807\u5bc6\u94a5\u5e93\u4e2d\u7684\u73b0\u6709\u522b\u540d {0}"}, - {"Existing entry alias exists, overwrite? [no]: ", -"\u5b58\u5728\u73b0\u6709\u9879\u522b\u540d {0}\uff0c\u662f\u5426\u8981\u8986\u76d6\uff1f[\u5426]: "}, - {"Too many failures - try later", "\u592a\u591a\u9519\u8bef - \u8bf7\u7a0d\u540e\u518d\u8bd5"}, - {"Certification request stored in file ", - "\u4fdd\u5b58\u5728\u6587\u4ef6\u4e2d\u7684\u8ba4\u8bc1\u8981\u6c42 <{0}>"}, - {"Submit this to your CA", "\u5c06\u6b64\u63d0\u4ea4\u7ed9\u60a8\u7684CA"}, - {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified", -"\u5982\u679c\u6ca1\u6709\u6307\u5b9a\u522b\u540d\uff0c\u5219\u4e0d\u80fd\u6307\u5b9a\u76ee\u6807\u522b\u540d\u3001\u6e90\u5bc6\u94a5\u5e93\u53e3\u4ee4\u548c\u76ee\u6807\u5bc6\u94a5\u5e93\u53e3\u4ee4"}, - {"Certificate stored in file ", - "\u4fdd\u5b58\u5728\u6587\u4ef6\u4e2d\u7684\u8ba4\u8bc1 <{0}>"}, - {"Certificate reply was installed in keystore", - "\u8ba4\u8bc1\u56de\u590d\u5df2\u5b89\u88c5\u5728 keystore\u4e2d"}, - {"Certificate reply was not installed in keystore", - "\u8ba4\u8bc1\u56de\u590d\u672a\u5b89\u88c5\u5728 keystore\u4e2d"}, - {"Certificate was added to keystore", - "\u8ba4\u8bc1\u5df2\u6dfb\u52a0\u81f3keystore\u4e2d"}, - {"Certificate was not added to keystore", - "\u8ba4\u8bc1\u672a\u6dfb\u52a0\u81f3keystore\u4e2d"}, - {"[Storing ksfname]", "[\u6b63\u5728\u5b58\u50a8 {0}]"}, - {"alias has no public key (certificate)", - "{0} \u6ca1\u6709\u516c\u5f00\u91d1\u94a5\uff08\u8ba4\u8bc1\uff09"}, - {"Cannot derive signature algorithm", - "\u65e0\u6cd5\u53d6\u5f97\u7b7e\u540d\u7b97\u6cd5"}, - {"Alias does not exist", - "\u522b\u540d <{0}> \u4e0d\u5b58\u5728"}, - {"Alias has no certificate", - "\u522b\u540d <{0}> \u6ca1\u6709\u8ba4\u8bc1"}, - {"Key pair not generated, alias already exists", - "\u6ca1\u6709\u521b\u5efa\u952e\u503c\u5bf9\uff0c\u522b\u540d <{0}> \u5df2\u7ecf\u5b58\u5728"}, - {"Cannot derive signature algorithm", - "\u65e0\u6cd5\u53d6\u5f97\u7b7e\u540d\u7b97\u6cd5"}, - {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name", -"\u6b63\u5728\u4e3a\u4ee5\u4e0b\u5bf9\u8c61\u751f\u6210 {0} \u4f4d {1} \u5bc6\u94a5\u5bf9\u548c\u81ea\u7b7e\u540d\u8bc1\u4e66 ({2})\uff08\u6709\u6548\u671f\u4e3a {3} \u5929\uff09:\n\t {4}"}, - {"Enter key password for ", "\u8f93\u5165<{0}>\u7684\u4e3b\u5bc6\u7801"}, - {"\t(RETURN if same as keystore password): ", - "\t\uff08\u5982\u679c\u548c keystore \u5bc6\u7801\u76f8\u540c\uff0c\u6309\u56de\u8f66\uff09\uff1a "}, - {"Key password is too short - must be at least 6 characters", - "\u4e3b\u5bc6\u7801\u592a\u77ed -\u81f3\u5c11\u5fc5\u987b\u4e3a 6 \u4e2a\u5b57\u7b26"}, - {"Too many failures - key not added to keystore", - "\u592a\u591a\u9519\u8bef - \u952e\u503c\u672a\u88ab\u6dfb\u52a0\u81f3keystore\u4e2d"}, - {"Destination alias already exists", - "\u76ee\u7684\u5730\u522b\u540d <{0}> \u5df2\u7ecf\u5b58\u5728"}, - {"Password is too short - must be at least 6 characters", - "\u5bc6\u7801\u592a\u77ed -\u81f3\u5c11\u5fc5\u987b\u4e3a6\u4e2a\u5b57\u7b26"}, - {"Too many failures. Key entry not cloned", - "\u592a\u591a\u9519\u8bef\u3002\u952e\u503c\u8f93\u5165\u672a\u88ab\u590d\u5236"}, - {"key password for ", "<{0}> \u7684\u4e3b\u5bc6\u7801"}, - {"Keystore entry for already exists", - "<{0}> \u7684 Keystore \u8f93\u5165\u5df2\u7ecf\u5b58\u5728"}, - {"Creating keystore entry for ...", - "\u521b\u5efa <{0}> \u7684 keystore\u8f93\u5165..."}, - {"No entries from identity database added", - "\u4ece\u6dfb\u52a0\u7684\u8fa8\u8bc6\u6570\u636e\u5e93\u4e2d\uff0c\u6ca1\u6709\u8f93\u5165"}, - {"Alias name: alias", "\u522b\u540d\u540d\u79f0\uff1a {0}"}, - {"Creation date: keyStore.getCreationDate(alias)", - "\u521b\u5efa\u65e5\u671f\uff1a {0,date}"}, - {"alias, keyStore.getCreationDate(alias), ", + // keytool: Help part + {".OPTION.", " [OPTION]..."}, + {"Options.", "\u9009\u9879:"}, + {"Use.keytool.help.for.all.available.commands", + "\u4F7F\u7528 \"keytool -help\" \u83B7\u53D6\u6240\u6709\u53EF\u7528\u547D\u4EE4"}, + {"Key.and.Certificate.Management.Tool", + "\u5BC6\u94A5\u548C\u8BC1\u4E66\u7BA1\u7406\u5DE5\u5177"}, + {"Commands.", "\u547D\u4EE4:"}, + {"Use.keytool.command.name.help.for.usage.of.command.name", + "\u4F7F\u7528 \"keytool -command_name -help\" \u83B7\u53D6 command_name \u7684\u7528\u6CD5"}, + // keytool: help: commands + {"Generates.a.certificate.request", + "\u751F\u6210\u8BC1\u4E66\u8BF7\u6C42"}, //-certreq + {"Changes.an.entry.s.alias", + "\u66F4\u6539\u6761\u76EE\u7684\u522B\u540D"}, //-changealias + {"Deletes.an.entry", + "\u5220\u9664\u6761\u76EE"}, //-delete + {"Exports.certificate", + "\u5BFC\u51FA\u8BC1\u4E66"}, //-exportcert + {"Generates.a.key.pair", + "\u751F\u6210\u5BC6\u94A5\u5BF9"}, //-genkeypair + {"Generates.a.secret.key", + "\u751F\u6210\u5BC6\u94A5"}, //-genseckey + {"Generates.certificate.from.a.certificate.request", + "\u6839\u636E\u8BC1\u4E66\u8BF7\u6C42\u751F\u6210\u8BC1\u4E66"}, //-gencert + {"Generates.CRL", "\u751F\u6210 CRL"}, //-gencrl + {"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.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", + "\u514B\u9686\u5BC6\u94A5\u6761\u76EE"}, //-keyclone + {"Changes.the.key.password.of.an.entry", + "\u66F4\u6539\u6761\u76EE\u7684\u5BC6\u94A5\u53E3\u4EE4"}, //-keypasswd + {"Lists.entries.in.a.keystore", + "\u5217\u51FA\u5BC6\u94A5\u5E93\u4E2D\u7684\u6761\u76EE"}, //-list + {"Prints.the.content.of.a.certificate", + "\u6253\u5370\u8BC1\u4E66\u5185\u5BB9"}, //-printcert + {"Prints.the.content.of.a.certificate.request", + "\u6253\u5370\u8BC1\u4E66\u8BF7\u6C42\u7684\u5185\u5BB9"}, //-printcertreq + {"Prints.the.content.of.a.CRL.file", + "\u6253\u5370 CRL \u6587\u4EF6\u7684\u5185\u5BB9"}, //-printcrl + {"Generates.a.self.signed.certificate", + "\u751F\u6210\u81EA\u7B7E\u540D\u8BC1\u4E66"}, //-selfcert + {"Changes.the.store.password.of.a.keystore", + "\u66F4\u6539\u5BC6\u94A5\u5E93\u7684\u5B58\u50A8\u53E3\u4EE4"}, //-storepasswd + // keytool: help: options + {"alias.name.of.the.entry.to.process", + "\u8981\u5904\u7406\u7684\u6761\u76EE\u7684\u522B\u540D"}, //-alias + {"destination.alias", + "\u76EE\u6807\u522B\u540D"}, //-destalias + {"destination.key.password", + "\u76EE\u6807\u5BC6\u94A5\u53E3\u4EE4"}, //-destkeypass + {"destination.keystore.name", + "\u76EE\u6807\u5BC6\u94A5\u5E93\u540D\u79F0"}, //-destkeystore + {"destination.keystore.password.protected", + "\u53D7\u4FDD\u62A4\u7684\u76EE\u6807\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, //-destprotected + {"destination.keystore.provider.name", + "\u76EE\u6807\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9\u540D\u79F0"}, //-destprovidername + {"destination.keystore.password", + "\u76EE\u6807\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, //-deststorepass + {"destination.keystore.type", + "\u76EE\u6807\u5BC6\u94A5\u5E93\u7C7B\u578B"}, //-deststoretype + {"distinguished.name", + "\u552F\u4E00\u5224\u522B\u540D"}, //-dname + {"X.509.extension", + "X.509 \u6269\u5C55"}, //-ext + {"output.file.name", + "\u8F93\u51FA\u6587\u4EF6\u540D"}, //-file and -outfile + {"input.file.name", + "\u8F93\u5165\u6587\u4EF6\u540D"}, //-file and -infile + {"key.algorithm.name", + "\u5BC6\u94A5\u7B97\u6CD5\u540D\u79F0"}, //-keyalg + {"key.password", + "\u5BC6\u94A5\u53E3\u4EE4"}, //-keypass + {"key.bit.size", + "\u5BC6\u94A5\u4F4D\u5927\u5C0F"}, //-keysize + {"keystore.name", + "\u5BC6\u94A5\u5E93\u540D\u79F0"}, //-keystore + {"new.password", + "\u65B0\u53E3\u4EE4"}, //-new + {"do.not.prompt", + "\u4E0D\u63D0\u793A"}, //-noprompt + {"password.through.protected.mechanism", + "\u901A\u8FC7\u53D7\u4FDD\u62A4\u7684\u673A\u5236\u7684\u53E3\u4EE4"}, //-protected + {"provider.argument", + "\u63D0\u4F9B\u65B9\u53C2\u6570"}, //-providerarg + {"provider.class.name", + "\u63D0\u4F9B\u65B9\u7C7B\u540D"}, //-providerclass + {"provider.name", + "\u63D0\u4F9B\u65B9\u540D\u79F0"}, //-providername + {"provider.classpath", + "\u63D0\u4F9B\u65B9\u7C7B\u8DEF\u5F84"}, //-providerpath + {"output.in.RFC.style", + "\u4EE5 RFC \u6837\u5F0F\u8F93\u51FA"}, //-rfc + {"signature.algorithm.name", + "\u7B7E\u540D\u7B97\u6CD5\u540D\u79F0"}, //-sigalg + {"source.alias", + "\u6E90\u522B\u540D"}, //-srcalias + {"source.key.password", + "\u6E90\u5BC6\u94A5\u53E3\u4EE4"}, //-srckeypass + {"source.keystore.name", + "\u6E90\u5BC6\u94A5\u5E93\u540D\u79F0"}, //-srckeystore + {"source.keystore.password.protected", + "\u53D7\u4FDD\u62A4\u7684\u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, //-srcprotected + {"source.keystore.provider.name", + "\u6E90\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9\u540D\u79F0"}, //-srcprovidername + {"source.keystore.password", + "\u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, //-srcstorepass + {"source.keystore.type", + "\u6E90\u5BC6\u94A5\u5E93\u7C7B\u578B"}, //-srcstoretype + {"SSL.server.host.and.port", + "SSL \u670D\u52A1\u5668\u4E3B\u673A\u548C\u7AEF\u53E3"}, //-sslserver + {"signed.jar.file", + "\u5DF2\u7B7E\u540D\u7684 jar \u6587\u4EF6"}, //=jarfile + {"certificate.validity.start.date.time", + "\u8BC1\u4E66\u6709\u6548\u671F\u5F00\u59CB\u65E5\u671F/\u65F6\u95F4"}, //-startdate + {"keystore.password", + "\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, //-storepass + {"keystore.type", + "\u5BC6\u94A5\u5E93\u7C7B\u578B"}, //-storetype + {"trust.certificates.from.cacerts", + "\u4FE1\u4EFB\u6765\u81EA cacerts \u7684\u8BC1\u4E66"}, //-trustcacerts + {"verbose.output", + "\u8BE6\u7EC6\u8F93\u51FA"}, //-v + {"validity.number.of.days", + "\u6709\u6548\u5929\u6570"}, //-validity + {"Serial.ID.of.cert.to.revoke", + "\u8981\u64A4\u9500\u7684\u8BC1\u4E66\u7684\u5E8F\u5217 ID"}, //-id + // keytool: Running part + {"keytool.error.", "keytool \u9519\u8BEF: "}, + {"Illegal.option.", "\u975E\u6CD5\u9009\u9879: "}, + {"Illegal.value.", "\u975E\u6CD5\u503C: "}, + {"Unknown.password.type.", "\u672A\u77E5\u53E3\u4EE4\u7C7B\u578B: "}, + {"Cannot.find.environment.variable.", + "\u627E\u4E0D\u5230\u73AF\u5883\u53D8\u91CF: "}, + {"Cannot.find.file.", "\u627E\u4E0D\u5230\u6587\u4EF6: "}, + {"Command.option.flag.needs.an.argument.", "\u547D\u4EE4\u9009\u9879{0}\u9700\u8981\u4E00\u4E2A\u53C2\u6570\u3002"}, + {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.", + "\u8B66\u544A: PKCS12 KeyStores \u4E0D\u652F\u6301\u5176\u4ED6\u5B58\u50A8\u548C\u5BC6\u94A5\u53E3\u4EE4\u3002\u6B63\u5728\u5FFD\u7565\u7528\u6237\u6307\u5B9A\u7684{0}\u503C\u3002"}, + {".keystore.must.be.NONE.if.storetype.is.{0}", + "\u5982\u679C -storetype \u4E3A {0}, \u5219 -keystore \u5FC5\u987B\u4E3A NONE"}, + {"Too.many.retries.program.terminated", + "\u91CD\u8BD5\u6B21\u6570\u8FC7\u591A, \u7A0B\u5E8F\u5DF2\u7EC8\u6B62"}, + {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}", + "\u5982\u679C -storetype \u4E3A {0}, \u5219\u4E0D\u652F\u6301 -storepasswd \u548C -keypasswd \u547D\u4EE4"}, + {".keypasswd.commands.not.supported.if.storetype.is.PKCS12", + "\u5982\u679C -storetype \u4E3A PKCS12, \u5219\u4E0D\u652F\u6301 -keypasswd \u547D\u4EE4"}, + {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}", + "\u5982\u679C -storetype \u4E3A {0}, \u5219\u4E0D\u80FD\u6307\u5B9A -keypass \u548C -new"}, + {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified", + "\u5982\u679C\u6307\u5B9A\u4E86 -protected, \u5219\u4E0D\u80FD\u6307\u5B9A -storepass, -keypass \u548C -new"}, + {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified", + "\u5982\u679C\u6307\u5B9A\u4E86 -srcprotected, \u5219\u4E0D\u80FD\u6307\u5B9A -srcstorepass \u548C -srckeypass"}, + {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified", + "\u5982\u679C\u5BC6\u94A5\u5E93\u672A\u53D7\u53E3\u4EE4\u4FDD\u62A4, \u5219\u4E0D\u80FD\u6307\u5B9A -storepass, -keypass \u548C -new"}, + {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", + "\u5982\u679C\u6E90\u5BC6\u94A5\u5E93\u672A\u53D7\u53E3\u4EE4\u4FDD\u62A4, \u5219\u4E0D\u80FD\u6307\u5B9A -srcstorepass \u548C -srckeypass"}, + {"Illegal.startdate.value", "\u975E\u6CD5\u5F00\u59CB\u65E5\u671F\u503C"}, + {"Validity.must.be.greater.than.zero", + "\u6709\u6548\u6027\u5FC5\u987B\u5927\u4E8E\u96F6"}, + {"provName.not.a.provider", "{0}\u4E0D\u662F\u63D0\u4F9B\u65B9"}, + {"Usage.error.no.command.provided", "\u7528\u6CD5\u9519\u8BEF: \u6CA1\u6709\u63D0\u4F9B\u547D\u4EE4"}, + {"Source.keystore.file.exists.but.is.empty.", "\u6E90\u5BC6\u94A5\u5E93\u6587\u4EF6\u5B58\u5728, \u4F46\u4E3A\u7A7A: "}, + {"Please.specify.srckeystore", "\u8BF7\u6307\u5B9A -srckeystore"}, + {"Must.not.specify.both.v.and.rfc.with.list.command", + "\u4E0D\u80FD\u4F7F\u7528 'list' \u547D\u4EE4\u6765\u6307\u5B9A -v \u53CA -rfc"}, + {"Key.password.must.be.at.least.6.characters", + "\u5BC6\u94A5\u53E3\u4EE4\u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"}, + {"New.password.must.be.at.least.6.characters", + "\u65B0\u53E3\u4EE4\u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"}, + {"Keystore.file.exists.but.is.empty.", + "\u5BC6\u94A5\u5E93\u6587\u4EF6\u5B58\u5728, \u4F46\u4E3A\u7A7A: "}, + {"Keystore.file.does.not.exist.", + "\u5BC6\u94A5\u5E93\u6587\u4EF6\u4E0D\u5B58\u5728: "}, + {"Must.specify.destination.alias", "\u5FC5\u987B\u6307\u5B9A\u76EE\u6807\u522B\u540D"}, + {"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.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: "}, + {"Keystore.password.is.too.short.must.be.at.least.6.characters", + "\u5BC6\u94A5\u5E93\u53E3\u4EE4\u592A\u77ED - \u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"}, + {"Unknown.Entry.Type", "\u672A\u77E5\u6761\u76EE\u7C7B\u578B"}, + {"Too.many.failures.Alias.not.changed", "\u6545\u969C\u592A\u591A\u3002\u672A\u66F4\u6539\u522B\u540D"}, + {"Entry.for.alias.alias.successfully.imported.", + "\u5DF2\u6210\u529F\u5BFC\u5165\u522B\u540D {0} \u7684\u6761\u76EE\u3002"}, + {"Entry.for.alias.alias.not.imported.", "\u672A\u5BFC\u5165\u522B\u540D {0} \u7684\u6761\u76EE\u3002"}, + {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.", + "\u5BFC\u5165\u522B\u540D {0} \u7684\u6761\u76EE\u65F6\u51FA\u73B0\u95EE\u9898: {1}\u3002\n\u672A\u5BFC\u5165\u522B\u540D {0} \u7684\u6761\u76EE\u3002"}, + {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled", + "\u5DF2\u5B8C\u6210\u5BFC\u5165\u547D\u4EE4: {0} \u4E2A\u6761\u76EE\u6210\u529F\u5BFC\u5165, {1} \u4E2A\u6761\u76EE\u5931\u8D25\u6216\u53D6\u6D88"}, + {"Warning.Overwriting.existing.alias.alias.in.destination.keystore", + "\u8B66\u544A: \u6B63\u5728\u8986\u76D6\u76EE\u6807\u5BC6\u94A5\u5E93\u4E2D\u7684\u73B0\u6709\u522B\u540D {0}"}, + {"Existing.entry.alias.alias.exists.overwrite.no.", + "\u5B58\u5728\u73B0\u6709\u6761\u76EE\u522B\u540D {0}, \u662F\u5426\u8986\u76D6? [\u5426]: "}, + {"Too.many.failures.try.later", "\u6545\u969C\u592A\u591A - \u8BF7\u7A0D\u540E\u518D\u8BD5"}, + {"Certification.request.stored.in.file.filename.", + "\u5B58\u50A8\u5728\u6587\u4EF6 <{0}> \u4E2D\u7684\u8BA4\u8BC1\u8BF7\u6C42"}, + {"Submit.this.to.your.CA", "\u5C06\u6B64\u63D0\u4EA4\u7ED9\u60A8\u7684 CA"}, + {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified", + "\u5982\u679C\u6CA1\u6709\u6307\u5B9A\u522B\u540D, \u5219\u4E0D\u80FD\u6307\u5B9A\u76EE\u6807\u522B\u540D, \u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4\u548C\u76EE\u6807\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, + {"Certificate.stored.in.file.filename.", + "\u5B58\u50A8\u5728\u6587\u4EF6 <{0}> \u4E2D\u7684\u8BC1\u4E66"}, + {"Certificate.reply.was.installed.in.keystore", + "\u8BC1\u4E66\u56DE\u590D\u5DF2\u5B89\u88C5\u5728\u5BC6\u94A5\u5E93\u4E2D"}, + {"Certificate.reply.was.not.installed.in.keystore", + "\u8BC1\u4E66\u56DE\u590D\u672A\u5B89\u88C5\u5728\u5BC6\u94A5\u5E93\u4E2D"}, + {"Certificate.was.added.to.keystore", + "\u8BC1\u4E66\u5DF2\u6DFB\u52A0\u5230\u5BC6\u94A5\u5E93\u4E2D"}, + {"Certificate.was.not.added.to.keystore", + "\u8BC1\u4E66\u672A\u6DFB\u52A0\u5230\u5BC6\u94A5\u5E93\u4E2D"}, + {".Storing.ksfname.", "[\u6B63\u5728\u5B58\u50A8{0}]"}, + {"alias.has.no.public.key.certificate.", + "{0}\u6CA1\u6709\u516C\u5171\u5BC6\u94A5 (\u8BC1\u4E66)"}, + {"Cannot.derive.signature.algorithm", + "\u65E0\u6CD5\u6D3E\u751F\u7B7E\u540D\u7B97\u6CD5"}, + {"Alias.alias.does.not.exist", + "\u522B\u540D <{0}> \u4E0D\u5B58\u5728"}, + {"Alias.alias.has.no.certificate", + "\u522B\u540D <{0}> \u6CA1\u6709\u8BC1\u4E66"}, + {"Key.pair.not.generated.alias.alias.already.exists", + "\u672A\u751F\u6210\u5BC6\u94A5\u5BF9, \u522B\u540D <{0}> \u5DF2\u7ECF\u5B58\u5728"}, + {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for", + "\u6B63\u5728\u4E3A\u4EE5\u4E0B\u5BF9\u8C61\u751F\u6210 {0} \u4F4D{1}\u5BC6\u94A5\u5BF9\u548C\u81EA\u7B7E\u540D\u8BC1\u4E66 ({2}) (\u6709\u6548\u671F\u4E3A {3} \u5929):\n\t {4}"}, + {"Enter.key.password.for.alias.", "\u8F93\u5165 <{0}> \u7684\u5BC6\u94A5\u53E3\u4EE4"}, + {".RETURN.if.same.as.keystore.password.", + "\t(\u5982\u679C\u548C\u5BC6\u94A5\u5E93\u53E3\u4EE4\u76F8\u540C, \u6309\u56DE\u8F66): "}, + {"Key.password.is.too.short.must.be.at.least.6.characters", + "\u5BC6\u94A5\u53E3\u4EE4\u592A\u77ED - \u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"}, + {"Too.many.failures.key.not.added.to.keystore", + "\u6545\u969C\u592A\u591A - \u5BC6\u94A5\u672A\u6DFB\u52A0\u5230\u5BC6\u94A5\u5E93\u4E2D"}, + {"Destination.alias.dest.already.exists", + "\u76EE\u6807\u522B\u540D <{0}> \u5DF2\u7ECF\u5B58\u5728"}, + {"Password.is.too.short.must.be.at.least.6.characters", + "\u53E3\u4EE4\u592A\u77ED - \u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"}, + {"Too.many.failures.Key.entry.not.cloned", + "\u6545\u969C\u592A\u591A\u3002\u672A\u514B\u9686\u5BC6\u94A5\u6761\u76EE"}, + {"key.password.for.alias.", "<{0}> \u7684\u5BC6\u94A5\u53E3\u4EE4"}, + {"Keystore.entry.for.id.getName.already.exists", + "<{0}> \u7684\u5BC6\u94A5\u5E93\u6761\u76EE\u5DF2\u7ECF\u5B58\u5728"}, + {"Creating.keystore.entry.for.id.getName.", + "\u6B63\u5728\u521B\u5EFA <{0}> \u7684\u5BC6\u94A5\u5E93\u6761\u76EE..."}, + {"No.entries.from.identity.database.added", + "\u672A\u4ECE\u8EAB\u4EFD\u6570\u636E\u5E93\u4E2D\u6DFB\u52A0\u4EFB\u4F55\u6761\u76EE"}, + {"Alias.name.alias", "\u522B\u540D: {0}"}, + {"Creation.date.keyStore.getCreationDate.alias.", + "\u521B\u5EFA\u65E5\u671F: {0,date}"}, + {"alias.keyStore.getCreationDate.alias.", "{0}, {1,date}, "}, - {"alias, ", "{0}, "}, - {"Entry type: ", "\u9879\u7c7b\u578b: {0}"}, - {"Certificate chain length: ", "\u8ba4\u8bc1\u94fe\u957f\u5ea6\uff1a "}, - {"Certificate[(i + 1)]:", "\u8ba4\u8bc1 [{0,number,integer}]:"}, - {"Certificate fingerprint (MD5): ", "\u8ba4\u8bc1\u6307\u7eb9 (MD5)\uff1a "}, - {"Entry type: trustedCertEntry\n", "\u8f93\u5165\u7c7b\u578b\uff1a trustedCertEntry\n"}, - {"trustedCertEntry,", "trustedCertEntry,"}, - {"Keystore type: ", "Keystore \u7c7b\u578b\uff1a "}, - {"Keystore provider: ", "Keystore \u63d0\u4f9b\u8005\uff1a "}, - {"Your keystore contains keyStore.size() entry", - "\u60a8\u7684 keystore \u5305\u542b {0,number,integer} \u8f93\u5165"}, - {"Your keystore contains keyStore.size() entries", - "\u60a8\u7684 keystore \u5305\u542b {0,number,integer} \u8f93\u5165"}, - {"Failed to parse input", "\u65e0\u6cd5\u5bf9\u8f93\u5165\u8fdb\u884c\u8bed\u6cd5\u5206\u6790"}, - {"Empty input", "\u7a7a\u8f93\u5165"}, - {"Not X.509 certificate", "\u975e X.509 \u8ba4\u8bc1"}, - {"Cannot derive signature algorithm", - "\u65e0\u6cd5\u53d6\u5f97\u7b7e\u540d\u7b97\u6cd5"}, - {"alias has no public key", "{0} \u65e0\u516c\u7528\u5bc6\u94a5"}, - {"alias has no X.509 certificate", "{0} \u65e0 X.509 \u8ba4\u8bc1"}, - {"New certificate (self-signed):", "\u65b0\u8ba4\u8bc1\uff08\u81ea\u6211\u7b7e\u7f72\uff09\uff1a"}, - {"Reply has no certificates", "\u56de\u590d\u4e2d\u6ca1\u6709\u8ba4\u8bc1"}, - {"Certificate not imported, alias already exists", - "\u8ba4\u8bc1\u672a\u8f93\u5165\uff0c\u522b\u540d <{0}> \u5df2\u7ecf\u5b58\u5728"}, - {"Input not an X.509 certificate", "\u6240\u8f93\u5165\u7684\u4e0d\u662f\u4e00\u4e2a X.509 \u8ba4\u8bc1"}, - {"Certificate already exists in keystore under alias ", - "\u5728 <{0}> \u7684\u522b\u540d\u4e4b\u4e0b\uff0c\u8ba4\u8bc1\u5df2\u7ecf\u5b58\u5728 keystore \u4e2d"}, - {"Do you still want to add it? [no]: ", - "\u60a8\u4ecd\u7136\u60f3\u8981\u6dfb\u52a0\u5b83\u5417\uff1f [\u5426]\uff1a "}, - {"Certificate already exists in system-wide CA keystore under alias ", - "\u5728 <{0}> \u7684\u522b\u540d\u4e4b\u4e0b\uff0c\u8ba4\u8bc1\u5df2\u7ecf\u5b58\u5728\u4e8e CA keystore \u6574\u4e2a\u7cfb\u7edf\u4e4b\u4e2d"}, - {"Do you still want to add it to your own keystore? [no]: ", - "\u60a8\u4ecd\u7136\u60f3\u8981\u5c06\u5b83\u6dfb\u52a0\u5230\u81ea\u5df1\u7684keystore \u5417\uff1f [\u5426]\uff1a "}, - {"Trust this certificate? [no]: ", "\u4fe1\u4efb\u8fd9\u4e2a\u8ba4\u8bc1\uff1f [\u5426]\uff1a "}, - {"YES", "\u662f"}, - {"New prompt: ", "\u65b0 {0}\uff1a "}, - {"Passwords must differ", "\u5fc5\u987b\u662f\u4e0d\u540c\u7684\u5bc6\u7801"}, - {"Re-enter new prompt: ", "\u91cd\u65b0\u8f93\u5165\u65b0 {0}\uff1a "}, - {"Re-enter new password: ", "\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801: "}, - {"They don't match. Try again", "\u5b83\u4eec\u4e0d\u5339\u914d\u3002\u8bf7\u91cd\u8bd5"}, - {"Enter prompt alias name: ", "\u8f93\u5165 {0} \u522b\u540d\u540d\u79f0\uff1a "}, - {"Enter new alias name\t(RETURN to cancel import for this entry): ", -"\u8f93\u5165\u65b0\u7684\u522b\u540d\t\uff08\u6309\u56de\u8f66\u952e\u4ee5\u53d6\u6d88\u5bf9\u6b64\u9879\u7684\u5bfc\u5165\uff09: "}, - {"Enter alias name: ", "\u8f93\u5165\u522b\u540d\u540d\u79f0\uff1a "}, - {"\t(RETURN if same as for )", - "\t\uff08\u5982\u679c\u548c <{0}> \u7684\u76f8\u540c\uff0c\u6309\u56de\u8f66\uff09"}, - {"*PATTERN* printX509Cert", - "\u6240\u6709\u8005:{0}\n\u7b7e\u53d1\u4eba:{1}\n\u5e8f\u5217\u53f7:{2}\n\u6709\u6548\u671f: {3} \u81f3{4}\n\u8bc1\u4e66\u6307\u7eb9:\n\t MD5:{5}\n\t SHA1:{6}\n\t \u7b7e\u540d\u7b97\u6cd5\u540d\u79f0:{7}\n\t \u7248\u672c: {8}"}, - {"What is your first and last name?", - "\u60a8\u7684\u540d\u5b57\u4e0e\u59d3\u6c0f\u662f\u4ec0\u4e48\uff1f"}, - {"What is the name of your organizational unit?", - "\u60a8\u7684\u7ec4\u7ec7\u5355\u4f4d\u540d\u79f0\u662f\u4ec0\u4e48\uff1f"}, - {"What is the name of your organization?", - "\u60a8\u7684\u7ec4\u7ec7\u540d\u79f0\u662f\u4ec0\u4e48\uff1f"}, - {"What is the name of your City or Locality?", - "\u60a8\u6240\u5728\u7684\u57ce\u5e02\u6216\u533a\u57df\u540d\u79f0\u662f\u4ec0\u4e48\uff1f"}, - {"What is the name of your State or Province?", - "\u60a8\u6240\u5728\u7684\u5dde\u6216\u7701\u4efd\u540d\u79f0\u662f\u4ec0\u4e48\uff1f"}, - {"What is the two-letter country code for this unit?", - "\u8be5\u5355\u4f4d\u7684\u4e24\u5b57\u6bcd\u56fd\u5bb6\u4ee3\u7801\u662f\u4ec0\u4e48"}, - {"Is correct?", "{0} \u6b63\u786e\u5417\uff1f"}, + {"alias.", "{0}, "}, + {"Entry.type.type.", "\u6761\u76EE\u7C7B\u578B: {0}"}, + {"Certificate.chain.length.", "\u8BC1\u4E66\u94FE\u957F\u5EA6: "}, + {"Certificate.i.1.", "\u8BC1\u4E66[{0,number,integer}]:"}, + {"Certificate.fingerprint.SHA1.", "\u8BC1\u4E66\u6307\u7EB9 (SHA1): "}, + {"Entry.type.trustedCertEntry.", "\u6761\u76EE\u7C7B\u578B: trustedCertEntry\n"}, + {"trustedCertEntry.", "trustedCertEntry,"}, + {"Keystore.type.", "\u5BC6\u94A5\u5E93\u7C7B\u578B: "}, + {"Keystore.provider.", "\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9: "}, + {"Your.keystore.contains.keyStore.size.entry", + "\u60A8\u7684\u5BC6\u94A5\u5E93\u5305\u542B {0,number,integer} \u4E2A\u6761\u76EE"}, + {"Your.keystore.contains.keyStore.size.entries", + "\u60A8\u7684\u5BC6\u94A5\u5E93\u5305\u542B {0,number,integer} \u4E2A\u6761\u76EE"}, + {"Failed.to.parse.input", "\u65E0\u6CD5\u5BF9\u8F93\u5165\u8FDB\u884C\u8BED\u6CD5\u5206\u6790"}, + {"Empty.input", "\u7A7A\u8F93\u5165"}, + {"Not.X.509.certificate", "\u975E X.509 \u8BC1\u4E66"}, + {"alias.has.no.public.key", "{0}\u6CA1\u6709\u516C\u5171\u5BC6\u94A5"}, + {"alias.has.no.X.509.certificate", "{0}\u6CA1\u6709 X.509 \u8BC1\u4E66"}, + {"New.certificate.self.signed.", "\u65B0\u8BC1\u4E66 (\u81EA\u7B7E\u540D):"}, + {"Reply.has.no.certificates", "\u56DE\u590D\u4E2D\u6CA1\u6709\u8BC1\u4E66"}, + {"Certificate.not.imported.alias.alias.already.exists", + "\u8BC1\u4E66\u672A\u5BFC\u5165, \u522B\u540D <{0}> \u5DF2\u7ECF\u5B58\u5728"}, + {"Input.not.an.X.509.certificate", "\u6240\u8F93\u5165\u7684\u4E0D\u662F X.509 \u8BC1\u4E66"}, + {"Certificate.already.exists.in.keystore.under.alias.trustalias.", + "\u5728\u522B\u540D <{0}> \u4E4B\u4E0B, \u8BC1\u4E66\u5DF2\u7ECF\u5B58\u5728\u4E8E\u5BC6\u94A5\u5E93\u4E2D"}, + {"Do.you.still.want.to.add.it.no.", + "\u662F\u5426\u4ECD\u8981\u6DFB\u52A0? [\u5426]: "}, + {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.", + "\u5728\u522B\u540D <{0}> \u4E4B\u4E0B, \u8BC1\u4E66\u5DF2\u7ECF\u5B58\u5728\u4E8E\u7CFB\u7EDF\u8303\u56F4\u7684 CA \u5BC6\u94A5\u5E93\u4E2D"}, + {"Do.you.still.want.to.add.it.to.your.own.keystore.no.", + "\u662F\u5426\u4ECD\u8981\u5C06\u5B83\u6DFB\u52A0\u5230\u81EA\u5DF1\u7684\u5BC6\u94A5\u5E93? [\u5426]: "}, + {"Trust.this.certificate.no.", "\u662F\u5426\u4FE1\u4EFB\u6B64\u8BC1\u4E66? [\u5426]: "}, + {"YES", "YES"}, + {"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.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: "}, + {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.", + "\u5BFC\u5165\u65B0\u7684\u522B\u540D\t(\u6309\u56DE\u8F66\u4EE5\u53D6\u6D88\u5BF9\u6B64\u6761\u76EE\u7684\u5BFC\u5165): "}, + {"Enter.alias.name.", "\u8F93\u5165\u522B\u540D: "}, + {".RETURN.if.same.as.for.otherAlias.", + "\t(\u5982\u679C\u548C <{0}> \u76F8\u540C, \u5219\u6309\u56DE\u8F66)"}, + {".PATTERN.printX509Cert", + "\u6240\u6709\u8005: {0}\n\u53D1\u5E03\u8005: {1}\n\u5E8F\u5217\u53F7: {2}\n\u6709\u6548\u671F\u5F00\u59CB\u65E5\u671F: {3}, \u622A\u6B62\u65E5\u671F: {4}\n\u8BC1\u4E66\u6307\u7EB9:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \u7B7E\u540D\u7B97\u6CD5\u540D\u79F0: {8}\n\t \u7248\u672C: {9}"}, + {"What.is.your.first.and.last.name.", + "\u60A8\u7684\u540D\u5B57\u4E0E\u59D3\u6C0F\u662F\u4EC0\u4E48?"}, + {"What.is.the.name.of.your.organizational.unit.", + "\u60A8\u7684\u7EC4\u7EC7\u5355\u4F4D\u540D\u79F0\u662F\u4EC0\u4E48?"}, + {"What.is.the.name.of.your.organization.", + "\u60A8\u7684\u7EC4\u7EC7\u540D\u79F0\u662F\u4EC0\u4E48?"}, + {"What.is.the.name.of.your.City.or.Locality.", + "\u60A8\u6240\u5728\u7684\u57CE\u5E02\u6216\u533A\u57DF\u540D\u79F0\u662F\u4EC0\u4E48?"}, + {"What.is.the.name.of.your.State.or.Province.", + "\u60A8\u6240\u5728\u7684\u7701/\u5E02/\u81EA\u6CBB\u533A\u540D\u79F0\u662F\u4EC0\u4E48?"}, + {"What.is.the.two.letter.country.code.for.this.unit.", + "\u8BE5\u5355\u4F4D\u7684\u53CC\u5B57\u6BCD\u56FD\u5BB6/\u5730\u533A\u4EE3\u7801\u662F\u4EC0\u4E48?"}, + {"Is.name.correct.", "{0}\u662F\u5426\u6B63\u786E?"}, {"no", "\u5426"}, - {"yes", "\u662f"}, + {"yes", "\u662F"}, {"y", "y"}, - {" [defaultValue]: ", " [{0}]\uff1a "}, - {"Alias has no key", - "\u522b\u540d <{0}> \u6ca1\u6709\u5bc6\u94a5"}, - {"Alias references an entry type that is not a private key entry. The -keyclone command only supports cloning of private key entries", -"\u522b\u540d <{0}> \u5f15\u7528\u4e86\u4e0d\u5c5e\u4e8e\u4e13\u7528\u5bc6\u94a5\u9879\u7684\u9879\u7c7b\u578b\u3002-keyclone \u547d\u4ee4\u4ec5\u652f\u6301\u5bf9\u4e13\u7528\u5bc6\u94a5\u9879\u7684\u514b\u9686"}, + {".defaultValue.", " [{0}]: "}, + {"Alias.alias.has.no.key", + "\u522B\u540D <{0}> \u6CA1\u6709\u5BC6\u94A5"}, + {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key", + "\u522B\u540D <{0}> \u5F15\u7528\u4E86\u4E0D\u5C5E\u4E8E\u79C1\u6709\u5BC6\u94A5\u6761\u76EE\u7684\u6761\u76EE\u7C7B\u578B\u3002-keyclone \u547D\u4EE4\u4EC5\u652F\u6301\u5BF9\u79C1\u6709\u5BC6\u94A5\u6761\u76EE\u7684\u514B\u9686"}, - {"***************** WARNING WARNING WARNING *****************", - "***************** \u8b66\u544a \u8b66\u544a \u8b66\u544a *****************"}, + {".WARNING.WARNING.WARNING.", + "***************** WARNING WARNING WARNING *****************"}, + {"Signer.d.", "\u7B7E\u540D\u8005 #%d:"}, + {"Timestamp.", "\u65F6\u95F4\u6233:"}, + {"Signature.", "\u7B7E\u540D:"}, + {"CRLs.", "CRL:"}, + {"Certificate.owner.", "\u8BC1\u4E66\u6240\u6709\u8005: "}, + {"Not.a.signed.jar.file", "\u4E0D\u662F\u5DF2\u7B7E\u540D\u7684 jar \u6587\u4EF6"}, + {"No.certificate.from.the.SSL.server", + "\u6CA1\u6709\u6765\u81EA SSL \u670D\u52A1\u5668\u7684\u8BC1\u4E66"}, // Translators of the following 5 pairs, ATTENTION: // the next 5 string pairs are meant to be combined into 2 paragraphs, // 1+3+4 and 2+3+5. make sure your translation also does. - {"* The integrity of the information stored in your keystore *", - "*\u4fdd\u5b58\u5728\u60a8\u7684 keystore \u4e2d\u6570\u636e\u7684\u5b8c\u6574\u6027 *"}, - {"* The integrity of the information stored in the srckeystore*", -"* srckeystore \u4e2d\u6240\u5b58\u50a8\u7684\u4fe1\u606f\u7684\u5b8c\u6574\u6027*"}, - {"* has NOT been verified! In order to verify its integrity, *", - "* \u5c1a\u672a\u88ab\u9a8c\u8bc1\uff01 \u4e3a\u4e86\u9a8c\u8bc1\u5176\u5b8c\u6574\u6027\uff0c *"}, - {"* you must provide your keystore password. *", - "* \u60a8\u5fc5\u987b\u63d0\u4f9b\u60a8 keystore \u7684\u5bc6\u7801\u3002 *"}, - {"* you must provide the srckeystore password. *", -"* \u60a8\u5fc5\u987b\u63d0\u4f9b\u6e90\u5bc6\u94a5\u5e93\u53e3\u4ee4\u3002 *"}, + {".The.integrity.of.the.information.stored.in.your.keystore.", + "* \u5B58\u50A8\u5728\u60A8\u7684\u5BC6\u94A5\u5E93\u4E2D\u7684\u4FE1\u606F\u7684\u5B8C\u6574\u6027 *"}, + {".The.integrity.of.the.information.stored.in.the.srckeystore.", + "* \u5B58\u50A8\u5728 srckeystore \u4E2D\u7684\u4FE1\u606F\u7684\u5B8C\u6574\u6027 *"}, + {".has.NOT.been.verified.In.order.to.verify.its.integrity.", + "* \u5C1A\u672A\u7ECF\u8FC7\u9A8C\u8BC1! \u4E3A\u4E86\u9A8C\u8BC1\u5176\u5B8C\u6574\u6027, *"}, + {".you.must.provide.your.keystore.password.", + "* \u5FC5\u987B\u63D0\u4F9B\u5BC6\u94A5\u5E93\u53E3\u4EE4\u3002 *"}, + {".you.must.provide.the.srckeystore.password.", + "* \u5FC5\u987B\u63D0\u4F9B\u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4\u3002 *"}, - {"Certificate reply does not contain public key for ", - "\u8ba4\u8bc1\u56de\u590d\u5e76\u672a\u5305\u542b <{0}> \u7684\u516c\u7528\u5bc6\u94a5"}, - {"Incomplete certificate chain in reply", - "\u56de\u590d\u4e2d\u7684\u8ba4\u8bc1\u94fe\u4e0d\u5b8c\u6574"}, - {"Certificate chain in reply does not verify: ", - "\u56de\u590d\u4e2d\u7684\u8ba4\u8bc1\u94fe\u672a\u9a8c\u8bc1\uff1a "}, - {"Top-level certificate in reply:\n", - "\u56de\u590d\u4e2d\u7684\u6700\u9ad8\u7ea7\u8ba4\u8bc1\uff1a\n"}, - {"... is not trusted. ", "... \u662f\u4e0d\u53ef\u4fe1\u7684\u3002 "}, - {"Install reply anyway? [no]: ", "\u8fd8\u662f\u8981\u5b89\u88c5\u56de\u590d\uff1f [\u5426]\uff1a "}, - {"NO", "\u5426"}, - {"Public keys in reply and keystore don't match", - "\u56de\u590d\u4e2d\u7684\u516c\u7528\u5bc6\u94a5\u4e0e keystore \u4e0d\u7b26"}, - {"Certificate reply and certificate in keystore are identical", - "\u8ba4\u8bc1\u56de\u590d\u4e0ekeystore\u4e2d\u7684\u8ba4\u8bc1\u662f\u76f8\u540c\u7684"}, - {"Failed to establish chain from reply", - "\u65e0\u6cd5\u4ece\u56de\u590d\u4e2d\u5efa\u7acb\u94fe\u63a5"}, + {"Certificate.reply.does.not.contain.public.key.for.alias.", + "\u8BC1\u4E66\u56DE\u590D\u4E2D\u4E0D\u5305\u542B <{0}> \u7684\u516C\u5171\u5BC6\u94A5"}, + {"Incomplete.certificate.chain.in.reply", + "\u56DE\u590D\u4E2D\u7684\u8BC1\u4E66\u94FE\u4E0D\u5B8C\u6574"}, + {"Certificate.chain.in.reply.does.not.verify.", + "\u56DE\u590D\u4E2D\u7684\u8BC1\u4E66\u94FE\u672A\u9A8C\u8BC1: "}, + {"Top.level.certificate.in.reply.", + "\u56DE\u590D\u4E2D\u7684\u9876\u7EA7\u8BC1\u4E66:\n"}, + {".is.not.trusted.", "... \u662F\u4E0D\u53EF\u4FE1\u7684\u3002"}, + {"Install.reply.anyway.no.", "\u662F\u5426\u4ECD\u8981\u5B89\u88C5\u56DE\u590D? [\u5426]: "}, + {"NO", "NO"}, + {"Public.keys.in.reply.and.keystore.don.t.match", + "\u56DE\u590D\u4E2D\u7684\u516C\u5171\u5BC6\u94A5\u4E0E\u5BC6\u94A5\u5E93\u4E0D\u5339\u914D"}, + {"Certificate.reply.and.certificate.in.keystore.are.identical", + "\u8BC1\u4E66\u56DE\u590D\u4E0E\u5BC6\u94A5\u5E93\u4E2D\u7684\u8BC1\u4E66\u662F\u76F8\u540C\u7684"}, + {"Failed.to.establish.chain.from.reply", + "\u65E0\u6CD5\u4ECE\u56DE\u590D\u4E2D\u5EFA\u7ACB\u94FE"}, {"n", "n"}, - {"Wrong answer, try again", "\u9519\u8bef\u7684\u7b54\u6848\uff0c\u8bf7\u518d\u8bd5\u4e00\u6b21"}, - {"Secret key not generated, alias already exists", - "\u6ca1\u6709\u751f\u6210\u5bc6\u94a5\uff0c\u522b\u540d <{0}> \u5df2\u7ecf\u5b58\u5728"}, - {"Please provide -keysize for secret key generation", -"\u8bf7\u63d0\u4f9b -keysize \u4ee5\u751f\u6210\u5bc6\u94a5"}, - {"keytool usage:\n", "keytool \u7528\u6cd5\uff1a\n"}, + {"Wrong.answer.try.again", "\u9519\u8BEF\u7684\u7B54\u6848, \u8BF7\u518D\u8BD5\u4E00\u6B21"}, + {"Secret.key.not.generated.alias.alias.already.exists", + "\u6CA1\u6709\u751F\u6210\u5BC6\u94A5, \u522B\u540D <{0}> \u5DF2\u7ECF\u5B58\u5728"}, + {"Please.provide.keysize.for.secret.key.generation", + "\u8BF7\u63D0\u4F9B -keysize \u4EE5\u751F\u6210\u5BC6\u94A5"}, - {"Extensions: ", "\u6269\u5c55: "}, - - {"-certreq [-v] [-protected]", - "-certreq [-v] [-protected]"}, - {"\t [-alias ] [-sigalg ]", - "\t [-alias <\u522b\u540d>] [-sigalg ]"}, - {"\t [-file ] [-keypass ]", - "\t [-file ] [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"}, - {"\t [-keystore ] [-storepass ]", - "\t [-keystore <\u5bc6\u94a5\u5e93>] [-storepass <\u5b58\u50a8\u5e93\u53e3\u4ee4>]"}, - {"\t [-storetype ] [-providername ]", - "\t [-storetype <\u5b58\u50a8\u7c7b\u578b>] [-providername <\u540d\u79f0>]"}, - {"\t [-providerclass [-providerarg ]] ...", - "\t [-providerclass <\u63d0\u4f9b\u65b9\u7c7b\u540d\u79f0> [-providerarg <\u53c2\u6570>]] ..."}, - {"\t [-providerpath ]", -"\t [-providerpath <\u8def\u5f84\u5217\u8868>]"}, - {"-delete [-v] [-protected] -alias ", - "-delete [-v] [-protected] -alias <\u522b\u540d>"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-export [-v] [-rfc] [-protected]", - // "-export [-v] [-rfc] [-protected]"}, - {"-exportcert [-v] [-rfc] [-protected]", - "-exportcert [-v] [-rfc] [-protected]"}, - {"\t [-alias ] [-file ]", - "\t [-alias <\u522b\u540d>] [-file <\u8ba4\u8bc1\u6587\u4ef6>]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-genkey [-v] [-protected]", - // "-genkey [-v] [-protected]"}, - {"-genkeypair [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\u522b\u540d>]"}, - {"\t [-keyalg ] [-keysize ]", - "\t [-keyalg ] [-keysize <\u5bc6\u94a5\u5927\u5c0f>]"}, - {"\t [-sigalg ] [-dname ]", - "\t [-sigalg ] [-dname ]"}, - {"\t [-validity ] [-keypass ]", - "\t [-validity ] [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-genseckey [-v] [-protected]", - "-genseckey [-v] [-protected]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-help", "-help"}, - //{"-identitydb [-v] [-protected]", - // "-identitydb [-v] [-protected]"}, - //{"\t [-file ]", "\t [-file ]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-import [-v] [-noprompt] [-trustcacerts] [-protected]", - // "-import [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"-importcert [-v] [-noprompt] [-trustcacerts] [-protected]", - "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\u522b\u540d>]"}, - {"\t [-alias ] [-keypass ]", -"\t [-alias <\u522b\u540d>] [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"}, - {"\t [-file ] [-keypass ]", - "\t [-file <\u8ba4\u8bc1\u6587\u4ef6>] [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-importkeystore [-v] ", -"-importkeystore [-v] "}, - {"\t [-srckeystore ] [-destkeystore ]", -"\t [-srckeystore <\u6e90\u5bc6\u94a5\u5e93>] [-destkeystore <\u76ee\u6807\u5bc6\u94a5\u5e93>]"}, - {"\t [-srcstoretype ] [-deststoretype ]", -"\t [-srcstoretype <\u6e90\u5b58\u50a8\u7c7b\u578b>] [-deststoretype <\u76ee\u6807\u5b58\u50a8\u7c7b\u578b>]"}, - {"\t [-srcprotected] [-destprotected]", -"\t [-srcprotected] [-destprotected]"}, - {"\t [-srcstorepass ] [-deststorepass ]", -"\t [-srcstorepass <\u6e90\u5b58\u50a8\u5e93\u53e3\u4ee4>] [-deststorepass <\u76ee\u6807\u5b58\u50a8\u5e93\u53e3\u4ee4>]"}, - {"\t [-srcprovidername ]\n\t [-destprovidername ]", // \u884c\u592a\u957f\uff0c\u5206\u4e3a\u4e24\u884c -"\t [-srcprovidername <\u6e90\u63d0\u4f9b\u65b9\u540d\u79f0>]\n\t [-destprovidername <\u76ee\u6807\u63d0\u4f9b\u65b9\u540d\u79f0>]"}, - {"\t [-srcalias [-destalias ]", -"\t [-srcalias <\u6e90\u522b\u540d> [-destalias <\u76ee\u6807\u522b\u540d>]"}, - {"\t [-srckeypass ] [-destkeypass ]]", -"\t [-srckeypass <\u6e90\u5bc6\u94a5\u5e93\u53e3\u4ee4>] [-destkeypass <\u76ee\u6807\u5bc6\u94a5\u5e93\u53e3\u4ee4>]]"}, - {"\t [-noprompt]", "\t [-noprompt]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-changealias [-v] [-protected] -alias -destalias ", -"-changealias [-v] [-protected] -alias <\u522b\u540d> -destalias <\u76ee\u6807\u522b\u540d>"}, - {"\t [-keypass ]", "\t [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"}, - - //{"-keyclone [-v] [-protected]", - // "-keyclone [-v] [-protected]"}, - //{"\t [-alias ] -dest ", - // "\t [-alias ] -dest "}, - //{"\t [-keypass ] [-new ]", - // "\t [-keypass ] [-new ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-keypasswd [-v] [-alias ]", - "-keypasswd [-v] [-alias <\u522b\u540d>]"}, - {"\t [-keypass ] [-new ]", - "\t [-keypass <\u65e7\u5bc6\u94a5\u5e93\u53e3\u4ee4>] [-new <\u65b0\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-list [-v | -rfc] [-protected]", - "-list [-v | -rfc] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\u522b\u540d>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-printcert [-v] [-file ]", - "-printcert [-v] [-file <\u8ba4\u8bc1\u6587\u4ef6>]"}, - - //{"-selfcert [-v] [-protected]", - // "-selfcert [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\u522b\u540d>]"}, - //{"\t [-dname ] [-validity ]", - // "\t [-dname ] [-validity ]"}, - //{"\t [-keypass ] [-sigalg ]", - // "\t [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>] [-sigalg ]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-storepasswd [-v] [-new ]", - "-storepasswd [-v] [-new <\u65b0\u5b58\u50a8\u5e93\u53e3\u4ee4>]"}, - /** rest is same as -certreq starting from -keystore **/ + {"Extensions.", "\u6269\u5C55: "}, + {".Empty.value.", "(\u7A7A\u503C)"}, + {"Extension.Request.", "\u6269\u5C55\u8BF7\u6C42:"}, + {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.", + "PKCS #10 \u8BC1\u4E66\u8BF7\u6C42 (\u7248\u672C 1.0)\n\u4E3B\u9898: %s\n\u516C\u5171\u5BC6\u94A5: %s \u683C\u5F0F %s \u5BC6\u94A5\n"}, + {"Unknown.keyUsage.type.", "\u672A\u77E5 keyUsage \u7C7B\u578B: "}, + {"Unknown.extendedkeyUsage.type.", "\u672A\u77E5 extendedkeyUsage \u7C7B\u578B: "}, + {"Unknown.AccessDescription.type.", "\u672A\u77E5 AccessDescription \u7C7B\u578B: "}, + {"Unrecognized.GeneralName.type.", "\u65E0\u6CD5\u8BC6\u522B\u7684 GeneralName \u7C7B\u578B: "}, + {"This.extension.cannot.be.marked.as.critical.", + "\u65E0\u6CD5\u5C06\u6B64\u6269\u5C55\u6807\u8BB0\u4E3A\u201C\u4E25\u91CD\u201D\u3002"}, + {"Odd.number.of.hex.digits.found.", "\u627E\u5230\u5947\u6570\u4E2A\u5341\u516D\u8FDB\u5236\u6570\u5B57: "}, + {"Unknown.extension.type.", "\u672A\u77E5\u6269\u5C55\u7C7B\u578B: "}, + {"command.{0}.is.ambiguous.", "\u547D\u4EE4{0}\u4E0D\u660E\u786E:"}, // policytool - {"Warning: A public key for alias 'signers[i]' does not exist. Make sure a KeyStore is properly configured.", - "\u8b66\u544a: \u522b\u540d {0} \u7684\u516c\u7528\u5bc6\u94a5\u4e0d\u5b58\u5728\u3002\u8bf7\u786e\u4fdd\u5df2\u6b63\u786e\u914d\u7f6e\u5bc6\u94a5\u5e93\u3002"}, - {"Warning: Class not found: class", "\u8b66\u544a: \u627e\u4e0d\u5230\u7c7b: {0}"}, - {"Warning: Invalid argument(s) for constructor: arg", - "\u8b66\u544a: \u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\u65e0\u6548: {0}"}, - {"Illegal Principal Type: type", "\u975e\u6cd5\u7684 Principal \u7c7b\u578b: {0}"}, - {"Illegal option: option", "\u975e\u6cd5\u9009\u9879: {0}"}, - {"Usage: policytool [options]", "\u7528\u6cd5\uff1a policytool [\u9009\u9879]"}, - {" [-file ] policy file location", - " [-file ] \u89c4\u5219\u6587\u4ef6\u4f4d\u7f6e"}, - {"New", "\u65b0\u6587\u4ef6"}, - {"Open", "\u6253\u5f00"}, - {"Save", "\u4fdd\u5b58"}, - {"Save As", "\u53e6\u5b58\u4e3a"}, - {"View Warning Log", "\u67e5\u770b\u8b66\u544a\u8bb0\u5f55"}, - {"Exit", "\u9000\u51fa"}, - {"Add Policy Entry", "\u6dfb\u52a0\u89c4\u5219\u9879\u76ee"}, - {"Edit Policy Entry", "\u7f16\u8f91\u89c4\u5219\u9879\u76ee"}, - {"Remove Policy Entry", "\u5220\u9664\u89c4\u5219\u9879\u76ee"}, - {"Edit", "\u7f16\u8f91"}, - {"Retain", "\u4fdd\u6301"}, + {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.", + "\u8B66\u544A: \u522B\u540D {0} \u7684\u516C\u5171\u5BC6\u94A5\u4E0D\u5B58\u5728\u3002\u8BF7\u786E\u4FDD\u5DF2\u6B63\u786E\u914D\u7F6E KeyStore\u3002"}, + {"Warning.Class.not.found.class", "\u8B66\u544A: \u627E\u4E0D\u5230\u7C7B: {0}"}, + {"Warning.Invalid.argument.s.for.constructor.arg", + "\u8B66\u544A: \u6784\u9020\u5668\u7684\u53C2\u6570\u65E0\u6548: {0}"}, + {"Illegal.Principal.Type.type", "\u975E\u6CD5\u7684\u4E3B\u7528\u6237\u7C7B\u578B: {0}"}, + {"Illegal.option.option", "\u975E\u6CD5\u9009\u9879: {0}"}, + {"Usage.policytool.options.", "\u7528\u6CD5: policytool [\u9009\u9879]"}, + {".file.file.policy.file.location", + " [-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"}, + {"Retain", "\u4FDD\u7559"}, - {"Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name.", - "Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name."}, + {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes", + "\u8B66\u544A: \u6587\u4EF6\u540D\u5305\u542B\u8F6C\u4E49\u7684\u53CD\u659C\u6760\u5B57\u7B26\u3002\u4E0D\u9700\u8981\u5BF9\u53CD\u659C\u6760\u5B57\u7B26\u8FDB\u884C\u8F6C\u4E49 (\u8BE5\u5DE5\u5177\u5728\u5C06\u7B56\u7565\u5185\u5BB9\u5199\u5165\u6C38\u4E45\u5B58\u50A8\u65F6\u4F1A\u6839\u636E\u9700\u8981\u5BF9\u5B57\u7B26\u8FDB\u884C\u8F6C\u4E49)\u3002\n\n\u5355\u51FB\u201C\u4FDD\u7559\u201D\u53EF\u4FDD\u7559\u8F93\u5165\u7684\u540D\u79F0, \u6216\u8005\u5355\u51FB\u201C\u7F16\u8F91\u201D\u53EF\u7F16\u8F91\u8BE5\u540D\u79F0\u3002"}, - {"Add Public Key Alias", "\u6dfb\u52a0\u516c\u7528\u5bc6\u94a5\u522b\u540d"}, - {"Remove Public Key Alias", "\u5220\u9664\u516c\u7528\u5bc6\u94a5\u522b\u540d"}, - {"File", "\u6587\u4ef6"}, - {"KeyStore", "\u5bc6\u94a5\u5e93"}, - {"Policy File:", "\u89c4\u5219\u6587\u4ef6\uff1a"}, - {"Could not open policy file: policyFile: e.toString()", - "\u65e0\u6cd5\u6253\u5f00\u7b56\u7565\u6587\u4ef6: {0}: {1}"}, - {"Policy Tool", "\u89c4\u5219\u5de5\u5177"}, - {"Errors have occurred while opening the policy configuration. View the Warning Log for more information.", - "\u6253\u5f00\u89c4\u5219\u914d\u7f6e\u65f6\u53d1\u751f\u9519\u8bef\u3002 \u8bf7\u67e5\u770b\u8b66\u544a\u8bb0\u5f55\u83b7\u53d6\u66f4\u591a\u4fe1\u606f"}, - {"Error", "\u9519\u8bef"}, - {"OK", "\u786e\u8ba4"}, - {"Status", "\u72b6\u6001"}, - {"Warning", "\u8b66\u544a"}, - {"Permission: ", - "\u8bb8\u53ef\uff1a "}, - {"Principal Type:", "Principal \u7c7b\u578b\uff1a"}, - {"Principal Name:", "Principal \u540d\u79f0\uff1a"}, - {"Target Name: ", - "\u76ee\u6807\u540d\u79f0\uff1a "}, - {"Actions: ", - "\u52a8\u4f5c\uff1a "}, - {"OK to overwrite existing file filename?", - "\u786e\u8ba4\u66ff\u6362\u73b0\u6709\u7684\u6587\u4ef6 {0}\uff1f"}, - {"Cancel", "\u53d6\u6d88"}, - {"CodeBase:", "CodeBase:"}, - {"SignedBy:", "SignedBy:"}, - {"Add Principal", "\u6dfb\u52a0 Principal"}, - {"Edit Principal", "\u7f16\u8f91 Principal"}, - {"Remove Principal", "\u5220\u9664 Principal"}, - {"Principals:", "Principals\uff1a"}, - {" Add Permission", " \u6dfb\u52a0\u6743\u9650"}, - {" Edit Permission", " \u7f16\u8f91\u6743\u9650"}, - {"Remove Permission", "\u5220\u9664\u6743\u9650"}, - {"Done", "\u5b8c\u6210"}, - {"KeyStore URL:", "\u5bc6\u94a5\u5e93 URL:"}, - {"KeyStore Type:", "\u5bc6\u94a5\u5e93\u7c7b\u578b:"}, - {"KeyStore Provider:", "\u5bc6\u94a5\u5e93\u63d0\u4f9b\u8005:"}, - {"KeyStore Password URL:", "\u5bc6\u94a5\u5e93\u53e3\u4ee4 URL:"}, - {"Principals", "Principals"}, - {" Edit Principal:", " \u7f16\u8f91 Principal\uff1a"}, - {" Add New Principal:", " \u52a0\u5165\u65b0 Principal\uff1a"}, + {"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", "KeyStore"}, + {"Policy.File.", "\u7B56\u7565\u6587\u4EF6:"}, + {"Could.not.open.policy.file.policyFile.e.toString.", + "\u65E0\u6CD5\u6253\u5F00\u7B56\u7565\u6587\u4EF6: {0}: {1}"}, + {"Policy.Tool", "\u7B56\u7565\u5DE5\u5177"}, + {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.", + "\u6253\u5F00\u7B56\u7565\u914D\u7F6E\u65F6\u51FA\u9519\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u67E5\u770B\u8B66\u544A\u65E5\u5FD7\u3002"}, + {"Error", "\u9519\u8BEF"}, + {"OK", "\u786E\u5B9A"}, + {"Status", "\u72B6\u6001"}, + {"Warning", "\u8B66\u544A"}, + {"Permission.", + "\u6743\u9650: "}, + {"Principal.Type.", "\u4E3B\u7528\u6237\u7C7B\u578B:"}, + {"Principal.Name.", "\u4E3B\u7528\u6237\u540D\u79F0:"}, + {"Target.Name.", + "\u76EE\u6807\u540D\u79F0: "}, + {"Actions.", + "\u64CD\u4F5C: "}, + {"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"}, + {"Done", "\u5B8C\u6210"}, + {"KeyStore.URL.", "KeyStore URL:"}, + {"KeyStore.Type.", "KeyStore \u7C7B\u578B:"}, + {"KeyStore.Provider.", "KeyStore \u63D0\u4F9B\u65B9:"}, + {"KeyStore.Password.URL.", "KeyStore \u53E3\u4EE4 URL:"}, + {"Principals", "\u4E3B\u7528\u6237"}, + {".Edit.Principal.", " \u7F16\u8F91\u4E3B\u7528\u6237:"}, + {".Add.New.Principal.", " \u6DFB\u52A0\u65B0\u4E3B\u7528\u6237:"}, {"Permissions", "\u6743\u9650"}, - {" Edit Permission:", " \u7f16\u8f91\u6743\u9650"}, - {" Add New Permission:", " \u52a0\u5165\u65b0\u7684\u6743\u9650"}, - {"Signed By:", "\u7b7e\u7f72\u4eba\uff1a"}, - {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name", - "\u6ca1\u6709\u901a\u914d\u7b26\u540d\u79f0\uff0c\u65e0\u6cd5\u7528\u901a\u914d\u7b26\u7c7b\u522b\u6307\u5b9aPrincipal"}, - {"Cannot Specify Principal without a Name", - "\u6ca1\u6709\u540d\u79f0\uff0c\u65e0\u6cd5\u6307\u5b9a Principal"}, - {"Permission and Target Name must have a value", - "\u6743\u9650\u53ca\u76ee\u6807\u540d\u5fc5\u987b\u6709\u4e00\u4e2a\u503c\u3002"}, - {"Remove this Policy Entry?", "\u5220\u9664\u6b64\u89c4\u5219\u9879\uff1f"}, - {"Overwrite File", "\u66ff\u6362\u6587\u4ef6"}, - {"Policy successfully written to filename", - "\u89c4\u5219\u6210\u529f\u5199\u81f3 {0}"}, - {"null filename", "\u65e0\u6548\u7684\u6587\u4ef6\u540d"}, - {"Save changes?", "\u662f\u5426\u4fdd\u5b58\u6240\u505a\u7684\u66f4\u6539\uff1f"}, - {"Yes", "\u662f"}, + {".Edit.Permission.", " \u7F16\u8F91\u6743\u9650:"}, + {".Add.New.Permission.", " \u52A0\u5165\u65B0\u7684\u6743\u9650:"}, + {"Signed.By.", "\u7B7E\u7F72\u4EBA: "}, + {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name", + "\u6CA1\u6709\u901A\u914D\u7B26\u540D\u79F0, \u65E0\u6CD5\u4F7F\u7528\u901A\u914D\u7B26\u7C7B\u6307\u5B9A\u4E3B\u7528\u6237"}, + {"Cannot.Specify.Principal.without.a.Name", + "\u6CA1\u6709\u540D\u79F0, \u65E0\u6CD5\u6307\u5B9A\u4E3B\u7528\u6237"}, + {"Permission.and.Target.Name.must.have.a.value", + "\u6743\u9650\u53CA\u76EE\u6807\u540D\u5FC5\u987B\u6709\u4E00\u4E2A\u503C"}, + {"Remove.this.Policy.Entry.", "\u662F\u5426\u5220\u9664\u6B64\u7B56\u7565\u6761\u76EE?"}, + {"Overwrite.File", "\u8986\u76D6\u6587\u4EF6"}, + {"Policy.successfully.written.to.filename", + "\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"}, - {"Policy Entry", "\u89c4\u5219\u9879\u76ee"}, - {"Save Changes", "\u4fdd\u5b58\u4fee\u6539"}, - {"No Policy Entry selected", "\u6ca1\u6709\u9009\u62e9\u89c4\u5219\u9879\u76ee"}, - {"Unable to open KeyStore: ex.toString()", - "\u65e0\u6cd5\u6253\u5f00\u5bc6\u94a5\u5e93: {0}"}, - {"No principal selected", "\u672a\u9009\u62e9 Principal"}, - {"No permission selected", "\u6ca1\u6709\u9009\u62e9\u6743\u9650"}, - {"name", "\u540d\u79f0"}, - {"configuration type", "\u914d\u7f6e\u7c7b\u578b"}, - {"environment variable name", "\u73af\u5883\u53d8\u91cf\u540d"}, - {"library name", "\u7a0b\u5e8f\u5e93\u540d\u79f0"}, - {"package name", "\u8f6f\u4ef6\u5305\u540d\u79f0"}, - {"policy type", "\u7b56\u7565\u7c7b\u578b"}, - {"property name", "\u5c5e\u6027\u540d\u79f0"}, - {"provider name", "\u63d0\u4f9b\u8005\u540d\u79f0"}, - {"Principal List", "Principal \u5217\u8868"}, - {"Permission List", "\u6743\u9650\u5217\u8868"}, - {"Code Base", "Code Base\uff08\u4ee3\u7801\u5e93\uff09"}, - {"KeyStore U R L:", "\u5bc6\u94a5\u5e93 URL:"}, - {"KeyStore Password U R L:", "\u5bc6\u94a5\u5e93\u53e3\u4ee4 URL:"}, + {"Policy.Entry", "\u7B56\u7565\u6761\u76EE"}, + {"Save.Changes", "\u4FDD\u5B58\u66F4\u6539"}, + {"No.Policy.Entry.selected", "\u6CA1\u6709\u9009\u62E9\u7B56\u7565\u6761\u76EE"}, + {"Unable.to.open.KeyStore.ex.toString.", + "\u65E0\u6CD5\u6253\u5F00 KeyStore: {0}"}, + {"No.principal.selected", "\u672A\u9009\u62E9\u4E3B\u7528\u6237"}, + {"No.permission.selected", "\u6CA1\u6709\u9009\u62E9\u6743\u9650"}, + {"name", "\u540D\u79F0"}, + {"configuration.type", "\u914D\u7F6E\u7C7B\u578B"}, + {"environment.variable.name", "\u73AF\u5883\u53D8\u91CF\u540D"}, + {"library.name", "\u5E93\u540D\u79F0"}, + {"package.name", "\u7A0B\u5E8F\u5305\u540D\u79F0"}, + {"policy.type", "\u7B56\u7565\u7C7B\u578B"}, + {"property.name", "\u5C5E\u6027\u540D\u79F0"}, + {"Principal.List", "\u4E3B\u7528\u6237\u5217\u8868"}, + {"Permission.List", "\u6743\u9650\u5217\u8868"}, + {"Code.Base", "\u4EE3\u7801\u5E93"}, + {"KeyStore.U.R.L.", "KeyStore URL:"}, + {"KeyStore.Password.U.R.L.", "KeyStore \u53E3\u4EE4 URL:"}, // javax.security.auth.PrivateCredentialPermission - {"invalid null input(s)", "\u65e0\u6548\u7a7a\u8f93\u5165"}, - {"actions can only be 'read'", "\u52a8\u4f5c\u53ea\u80fd\u88ab\u2018\u8bfb\u53d6'"}, - {"permission name [name] syntax invalid: ", - "\u6743\u9650\u540d\u79f0 [{0}]\u8bed\u6cd5\u65e0\u6548\uff1a "}, - {"Credential Class not followed by a Principal Class and Name", - "\u8ba4\u8bc1\u7b49\u7ea7\u540e\u672a\u52a0\u4e0aPrincipal \u7c7b\u522b\u53ca\u540d\u79f0"}, - {"Principal Class not followed by a Principal Name", - "Principal \u7c7b\u522b\u540e\u9762\u6ca1\u52a0\u4e0aPrincipal \u540d\u79f0"}, - {"Principal Name must be surrounded by quotes", - "Principal \u540d\u79f0\u5fc5\u987b\u653e\u5728\u5f15\u53f7\u5185"}, - {"Principal Name missing end quote", - "Principal \u540d\u79f0\u7f3a\u5c11\u4e0b\u5f15\u53f7"}, - {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value", - "\u5982\u679c Principal \u540d\u79f0\u4e0d\u662f\u4e00\u4e2a\u901a\u914d\u7b26 (*) \u503c\uff0c\u90a3\u4e48 PrivateCredentialPermission Principal \u7c7b\u522b\u5c31\u4e0d\u4f1a\u662f\u4e00\u4e2a\u901a\u914d\u7b26 (*) \u503c"}, - {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name", - "CredOwner:\n\tPrincipal \u7c7b\u522b = {0}\n\tPrincipal \u540d\u79f0 = {1}"}, + {"invalid.null.input.s.", "\u65E0\u6548\u7684\u7A7A\u8F93\u5165"}, + {"actions.can.only.be.read.", "\u64CD\u4F5C\u53EA\u80FD\u4E3A '\u8BFB\u53D6'"}, + {"permission.name.name.syntax.invalid.", + "\u6743\u9650\u540D\u79F0 [{0}] \u8BED\u6CD5\u65E0\u6548: "}, + {"Credential.Class.not.followed.by.a.Principal.Class.and.Name", + "\u8EAB\u4EFD\u8BC1\u660E\u7C7B\u540E\u9762\u672A\u8DDF\u968F\u4E3B\u7528\u6237\u7C7B\u53CA\u540D\u79F0"}, + {"Principal.Class.not.followed.by.a.Principal.Name", + "\u4E3B\u7528\u6237\u7C7B\u540E\u9762\u672A\u8DDF\u968F\u4E3B\u7528\u6237\u540D\u79F0"}, + {"Principal.Name.must.be.surrounded.by.quotes", + "\u4E3B\u7528\u6237\u540D\u79F0\u5FC5\u987B\u653E\u5728\u5F15\u53F7\u5185"}, + {"Principal.Name.missing.end.quote", + "\u4E3B\u7528\u6237\u540D\u79F0\u7F3A\u5C11\u53F3\u5F15\u53F7"}, + {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value", + "\u5982\u679C\u4E3B\u7528\u6237\u540D\u79F0\u4E0D\u662F\u901A\u914D\u7B26 (*) \u503C, \u90A3\u4E48 PrivateCredentialPermission \u4E3B\u7528\u6237\u7C7B\u4E0D\u80FD\u662F\u901A\u914D\u7B26 (*) \u503C"}, + {"CredOwner.Principal.Class.class.Principal.Name.name", + "CredOwner:\n\t\u4E3B\u7528\u6237\u7C7B = {0}\n\t\u4E3B\u7528\u6237\u540D\u79F0 = {1}"}, // javax.security.auth.x500 - {"provided null name", "\u6240\u4f9b\u540d\u79f0\u65e0\u6548"}, - {"provided null keyword map", "\u63d0\u4f9b\u4e86\u7a7a\u5173\u952e\u5b57\u6620\u5c04"}, - {"provided null OID map", "\u63d0\u4f9b\u4e86\u7a7a OID \u6620\u5c04"}, + {"provided.null.name", "\u63D0\u4F9B\u7684\u540D\u79F0\u4E3A\u7A7A\u503C"}, + {"provided.null.keyword.map", "\u63D0\u4F9B\u7684\u5173\u952E\u5B57\u6620\u5C04\u4E3A\u7A7A\u503C"}, + {"provided.null.OID.map", "\u63D0\u4F9B\u7684 OID \u6620\u5C04\u4E3A\u7A7A\u503C"}, // javax.security.auth.Subject - {"invalid null AccessControlContext provided", - "\u63d0\u4f9b\u65e0\u6548\u7684\u7a7a AccessControlContext"}, - {"invalid null action provided", "\u63d0\u4f9b\u4e86\u65e0\u6548\u7684\u7a7a\u52a8\u4f5c"}, - {"invalid null Class provided", "\u63d0\u4f9b\u4e86\u65e0\u6548\u7684\u7a7a\u7c7b\u522b"}, - {"Subject:\n", "\u4e3b\u9898\uff1a\n"}, - {"\tPrincipal: ", "\tPrincipal: "}, - {"\tPublic Credential: ", "\t\u516c\u7528\u8ba4\u8bc1 "}, - {"\tPrivate Credentials inaccessible\n", - "\t\u65e0\u6cd5\u8bbf\u95ee\u79c1\u4eba\u8ba4\u8bc1\n"}, - {"\tPrivate Credential: ", "\t\u79c1\u4eba\u8ba4\u8bc1 "}, - {"\tPrivate Credential inaccessible\n", - "\t\u65e0\u6cd5\u8bbf\u95ee\u79c1\u4eba\u8ba4\u8bc1\n"}, - {"Subject is read-only", "\u4e3b\u9898\u4e3a\u53ea\u8bfb"}, - {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set", - "\u8bd5\u56fe\u5c06\u4e00\u4e2a\u975e java.security.Principal \u5b9e\u4f8b\u7684\u5bf9\u8c61\u6dfb\u52a0\u81f3\u4e3b\u9898\u7684 Principal \u96c6\u4e2d"}, - {"attempting to add an object which is not an instance of class", - "\u8bd5\u56fe\u6dfb\u52a0\u4e00\u4e2a\u975e {0} \u5b9e\u4f8b\u7684\u5bf9\u8c61"}, + {"invalid.null.AccessControlContext.provided", + "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A AccessControlContext"}, + {"invalid.null.action.provided", "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A\u64CD\u4F5C"}, + {"invalid.null.Class.provided", "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A\u7C7B"}, + {"Subject.", "\u4E3B\u9898: \n"}, + {".Principal.", "\t\u4E3B\u7528\u6237: "}, + {".Public.Credential.", "\t\u516C\u5171\u8EAB\u4EFD\u8BC1\u660E: "}, + {".Private.Credentials.inaccessible.", + "\t\u65E0\u6CD5\u8BBF\u95EE\u4E13\u7528\u8EAB\u4EFD\u8BC1\u660E\n"}, + {".Private.Credential.", "\t\u4E13\u7528\u8EAB\u4EFD\u8BC1\u660E: "}, + {".Private.Credential.inaccessible.", + "\t\u65E0\u6CD5\u8BBF\u95EE\u4E13\u7528\u8EAB\u4EFD\u8BC1\u660E\n"}, + {"Subject.is.read.only", "\u4E3B\u9898\u4E3A\u53EA\u8BFB"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set", + "\u6B63\u5728\u5C1D\u8BD5\u5C06\u4E00\u4E2A\u975E java.security.Principal \u5B9E\u4F8B\u7684\u5BF9\u8C61\u6DFB\u52A0\u5230\u4E3B\u9898\u7684\u4E3B\u7528\u6237\u96C6\u4E2D"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.class", + "\u6B63\u5728\u5C1D\u8BD5\u6DFB\u52A0\u4E00\u4E2A\u975E{0}\u5B9E\u4F8B\u7684\u5BF9\u8C61"}, // javax.security.auth.login.AppConfigurationEntry - {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "}, + {"LoginModuleControlFlag.", "LoginModuleControlFlag: "}, // javax.security.auth.login.LoginContext - {"Invalid null input: name", "\u65e0\u6548\u7a7a\u8f93\u5165\uff1a\u540d\u79f0"}, - {"No LoginModules configured for name", - "\u6ca1\u6709\u4e3a {0} \u914d\u7f6eLoginModules"}, - {"invalid null Subject provided", "\u63d0\u4f9b\u4e86\u65e0\u6548\u7a7a\u4e3b\u9898"}, - {"invalid null CallbackHandler provided", - "\u63d0\u4f9b\u4e86\u65e0\u6548\u7684\u7a7a CallbackHandler"}, - {"null subject - logout called before login", - "\u65e0\u6548\u4e3b\u9898 - \u5728\u767b\u5f55\u4e4b\u524d\u5373\u88ab\u8c03\u7528\u6ce8\u9500"}, - {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor", - "\u65e0\u6cd5\u4f8b\u793a LoginModule\uff0c {0}\uff0c\u56e0\u4e3a\u5b83\u5e76\u672a\u63d0\u4f9b\u4e00\u4e2a\u4e0d\u542b\u53c2\u6570\u7684\u6784\u9020\u7a0b\u5e8f"}, - {"unable to instantiate LoginModule", - "\u65e0\u6cd5\u4f8b\u793a LoginModule"}, - {"unable to instantiate LoginModule: ", - "\u65e0\u6cd5\u5b9e\u4f8b\u5316 LoginModule: "}, - {"unable to find LoginModule class: ", - "\u65e0\u6cd5\u627e\u5230 LoginModule \u7c7b\u522b\uff1a "}, - {"unable to access LoginModule: ", - "\u65e0\u6cd5\u8bbf\u95ee LoginModule: "}, - {"Login Failure: all modules ignored", - "\u767b\u5f55\u5931\u8d25\uff1a\u5ffd\u7565\u6240\u6709\u6a21\u5757"}, + {"Invalid.null.input.name", "\u65E0\u6548\u7A7A\u8F93\u5165: \u540D\u79F0"}, + {"No.LoginModules.configured.for.name", + "\u6CA1\u6709\u4E3A{0}\u914D\u7F6E LoginModules"}, + {"invalid.null.Subject.provided", "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A\u4E3B\u9898"}, + {"invalid.null.CallbackHandler.provided", + "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A CallbackHandler"}, + {"null.subject.logout.called.before.login", + "\u7A7A\u4E3B\u9898 - \u5728\u767B\u5F55\u4E4B\u524D\u8C03\u7528\u4E86\u6CE8\u9500"}, + {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor", + "\u65E0\u6CD5\u5B9E\u4F8B\u5316 LoginModule, {0}, \u56E0\u4E3A\u5B83\u672A\u63D0\u4F9B\u4E00\u4E2A\u65E0\u53C2\u6570\u6784\u9020\u5668"}, + {"unable.to.instantiate.LoginModule", + "\u65E0\u6CD5\u5B9E\u4F8B\u5316 LoginModule"}, + {"unable.to.instantiate.LoginModule.", + "\u65E0\u6CD5\u5B9E\u4F8B\u5316 LoginModule: "}, + {"unable.to.find.LoginModule.class.", + "\u65E0\u6CD5\u627E\u5230 LoginModule \u7C7B: "}, + {"unable.to.access.LoginModule.", + "\u65E0\u6CD5\u8BBF\u95EE LoginModule: "}, + {"Login.Failure.all.modules.ignored", + "\u767B\u5F55\u5931\u8D25: \u5FFD\u7565\u6240\u6709\u6A21\u5757"}, // sun.security.provider.PolicyFile - {"java.security.policy: error parsing policy:\n\tmessage", - "java.security.policy: \u89e3\u6790\u9519\u8bef {0}\uff1a\n\t{1}"}, - {"java.security.policy: error adding Permission, perm:\n\tmessage", - "java.security.policy: \u6dfb\u52a0\u6743\u9650\u9519\u8bef {0}\uff1a\n\t{1}"}, - {"java.security.policy: error adding Entry:\n\tmessage", - "java.security.policy: \u6dfb\u52a0\u9879\u76ee\u9519\u8bef\uff1a\n\t{0}"}, - {"alias name not provided (pe.name)", "\u672a\u63d0\u4f9b\u522b\u540d ({0})"}, - {"unable to perform substitution on alias, suffix", - "\u4e0d\u80fd\u5728\u522b\u540d\u4e0a\u6267\u884c\u66ff\u4ee3\uff0c {0}"}, - {"substitution value, prefix, unsupported", - "\u66ff\u4ee3\u503c {0} \u4e0d\u53d7\u652f\u6301"}, - {"(", "("}, - {")", ")"}, - {"type can't be null","\u4e0d\u80fd\u4e3a\u65e0\u6548\u7c7b\u578b"}, + {"java.security.policy.error.parsing.policy.message", + "java.security.policy: \u5BF9{0}\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u65F6\u51FA\u9519:\n\t{1}"}, + {"java.security.policy.error.adding.Permission.perm.message", + "java.security.policy: \u6DFB\u52A0\u6743\u9650{0}\u65F6\u51FA\u9519:\n\t{1}"}, + {"java.security.policy.error.adding.Entry.message", + "java.security.policy: \u6DFB\u52A0\u6761\u76EE\u65F6\u51FA\u9519:\n\t{0}"}, + {"alias.name.not.provided.pe.name.", "\u672A\u63D0\u4F9B\u522B\u540D ({0})"}, + {"unable.to.perform.substitution.on.alias.suffix", + "\u65E0\u6CD5\u5728\u522B\u540D {0} \u4E0A\u6267\u884C\u66FF\u4EE3"}, + {"substitution.value.prefix.unsupported", + "\u66FF\u4EE3\u503C{0}\u4E0D\u53D7\u652F\u6301"}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"type.can.t.be.null","\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A\u503C"}, // sun.security.provider.PolicyParser - {"keystorePasswordURL can not be specified without also specifying keystore", - "\u4e0d\u6307\u5b9a keystore \u65f6\u65e0\u6cd5\u6307\u5b9a keystorePasswordURL"}, - {"expected keystore type", "\u9884\u671f\u7684 keystore \u7c7b\u578b"}, - {"expected keystore provider", "\u9884\u671f\u7684 keystore \u63d0\u4f9b\u8005"}, - {"multiple Codebase expressions", - "\u591a\u79cd Codebase \u8868\u8fbe\u5f0f"}, - {"multiple SignedBy expressions","\u591a\u79cd SignedBy \u8868\u8fbe\u5f0f"}, - {"SignedBy has empty alias","SignedBy \u6709\u7a7a\u522b\u540d"}, - {"can not specify Principal with a wildcard class without a wildcard name", - "\u6ca1\u6709\u901a\u914d\u7b26\u540d\u79f0\uff0c\u65e0\u6cd5\u7528\u901a\u914d\u7b26\u7c7b\u522b\u6307\u5b9aPrincipal"}, - {"expected codeBase or SignedBy or Principal", - "\u9884\u671f\u7684 codeBase \u6216 SignedBy \u6216 Principal"}, - {"expected permission entry", "\u9884\u671f\u7684\u6743\u9650\u9879\u76ee"}, - {"number ", "\u53f7\u7801"}, - {"expected [expect], read [end of file]", - "\u9884\u671f\u7684 [{0}], \u8bfb\u53d6 [end of file]"}, - {"expected [;], read [end of file]", - "\u9884\u671f\u7684 [;], \u8bfb\u53d6[end of file]"}, - {"line number: msg", "\u5217 {0}\uff1a {1}"}, - {"line number: expected [expect], found [actual]", - "\u884c\u53f7 {0}\uff1a\u9884\u671f\u7684 [{1}]\uff0c\u627e\u5230 [{2}]"}, - {"null principalClass or principalName", - "\u65e0\u6548 principalClass \u6216 principalName"}, + {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore", + "\u4E0D\u6307\u5B9A\u5BC6\u94A5\u5E93\u65F6\u65E0\u6CD5\u6307\u5B9A keystorePasswordURL"}, + {"expected.keystore.type", "\u5E94\u4E3A\u5BC6\u94A5\u5E93\u7C7B\u578B"}, + {"expected.keystore.provider", "\u5E94\u4E3A\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9"}, + {"multiple.Codebase.expressions", + "\u591A\u4E2A\u4EE3\u7801\u5E93\u8868\u8FBE\u5F0F"}, + {"multiple.SignedBy.expressions","\u591A\u4E2A SignedBy \u8868\u8FBE\u5F0F"}, + {"SignedBy.has.empty.alias","SignedBy \u6709\u7A7A\u522B\u540D"}, + {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name", + "\u6CA1\u6709\u901A\u914D\u7B26\u540D\u79F0, \u65E0\u6CD5\u4F7F\u7528\u901A\u914D\u7B26\u7C7B\u6307\u5B9A\u4E3B\u7528\u6237"}, + {"expected.codeBase.or.SignedBy.or.Principal", + "\u5E94\u4E3A codeBase, SignedBy \u6216\u4E3B\u7528\u6237"}, + {"expected.permission.entry", "\u5E94\u4E3A\u6743\u9650\u6761\u76EE"}, + {"number.", "\u7F16\u53F7 "}, + {"expected.expect.read.end.of.file.", + "\u5E94\u4E3A [{0}], \u8BFB\u53D6\u7684\u662F [\u6587\u4EF6\u7ED3\u5C3E]"}, + {"expected.read.end.of.file.", + "\u5E94\u4E3A [;], \u8BFB\u53D6\u7684\u662F [\u6587\u4EF6\u7ED3\u5C3E]"}, + {"line.number.msg", "\u5217{0}: {1}"}, + {"line.number.expected.expect.found.actual.", + "\u884C\u53F7 {0}: \u5E94\u4E3A [{1}], \u627E\u5230 [{2}]"}, + {"null.principalClass.or.principalName", + "principalClass \u6216 principalName \u4E3A\u7A7A\u503C"}, // sun.security.pkcs11.SunPKCS11 - {"PKCS11 Token [providerName] Password: ", - "PKCS11 Token [{0}] \u5bc6\u7801: "}, + {"PKCS11.Token.providerName.Password.", + "PKCS11 \u6807\u8BB0 [{0}] \u53E3\u4EE4: "}, /* --- DEPRECATED --- */ // javax.security.auth.Policy - {"unable to instantiate Subject-based policy", - "\u65e0\u6cd5\u5b9e\u4f8b\u5316\u57fa\u4e8e\u4e3b\u9898\u7684\u7b56\u7565"} + {"unable.to.instantiate.Subject.based.policy", + "\u65E0\u6CD5\u5B9E\u4F8B\u5316\u57FA\u4E8E\u4E3B\u9898\u7684\u7B56\u7565"} }; @@ -648,3 +670,4 @@ public class Resources_zh_CN extends java.util.ListResourceBundle { return contents; } } + diff --git a/jdk/src/share/classes/sun/security/util/Resources_zh_TW.java b/jdk/src/share/classes/sun/security/util/Resources_zh_TW.java index f017d39ee61..6bbc852314b 100644 --- a/jdk/src/share/classes/sun/security/util/Resources_zh_TW.java +++ b/jdk/src/share/classes/sun/security/util/Resources_zh_TW.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -35,605 +35,627 @@ public class Resources_zh_TW extends java.util.ListResourceBundle { private static final Object[][] contents = { // shared (from jarsigner) - {" ", " "}, - {" ", " "}, - {" ", " "}, - {", ", ", "}, + {"SPACE", " "}, + {"2SPACE", " "}, + {"6SPACE", " "}, + {"COMMA", ", "}, // shared (from keytool) - {"\n", "\n"}, - {"*******************************************", + {"NEWLINE", "\n"}, + {"STAR", "*******************************************"}, - {"*******************************************\n\n", + {"STARNN", "*******************************************\n\n"}, - // keytool - {"keytool error: ", "keytool \u932f\u8aa4\uff1a "}, - {"Illegal option: ", "\u975e\u6cd5\u9078\u9805\uff1a "}, - {"Try keytool -help","\u5617\u8a66 keytool -help"}, - {"Command option needs an argument.", "\u6307\u4ee4\u9078\u9805 {0} \u9700\u8981\u5f15\u6578\u3002"}, - {"Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified value.", -"\u8b66\u544a\ufe30PKCS12 \u91d1\u9470\u5132\u5b58\u5eab\u4e0d\u652f\u63f4\u4e0d\u540c\u7684\u5132\u5b58\u5eab\u548c\u91d1\u9470\u5bc6\u78bc\u3002\u5ffd\u7565\u4f7f\u7528\u8005\u6307\u5b9a\u7684 {0} \u503c\u3002"}, - {"-keystore must be NONE if -storetype is {0}", - "\u5982\u679c -storetype \u70ba {0}\uff0c\u5247 -keystore \u5fc5\u9808\u70ba NONE"}, - {"Too may retries, program terminated", -"\u91cd\u8a66\u6b21\u6578\u592a\u591a\uff0c\u7a0b\u5f0f\u5df2\u7d42\u6b62"}, - {"-storepasswd and -keypasswd commands not supported if -storetype is {0}", - "\u5982\u679c -storetype \u70ba {0}\uff0c\u5247\u4e0d\u652f\u63f4 -storepasswd \u548c -keypasswd \u6307\u4ee4"}, - {"-keypasswd commands not supported if -storetype is PKCS12", - "\u5982\u679c -storetype \u70ba PKCS12\uff0c\u5247 -keypasswd \u6307\u4ee4\u4e0d\u53d7\u652f\u63f4"}, - {"-keypass and -new can not be specified if -storetype is {0}", - "\u5982\u679c -storetype \u70ba {0}\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -keypass \u548c -new"}, - {"if -protected is specified, then -storepass, -keypass, and -new must not be specified", - "\u5982\u679c\u6307\u5b9a -protected\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -storepass\u3001-keypass \u548c -new"}, - {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified", - "\u5982\u679c\u6307\u5b9a -srcprotected\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -srcstorepass \u548c -srckeypass"}, - {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified", - "\u5982\u679c\u91d1\u9470\u5eab\u4e0d\u53d7\u5bc6\u78bc\u4fdd\u8b77\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -storepass\u3001-keypass \u548c -new"}, - {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified", - "\u5982\u679c\u4f86\u6e90\u91d1\u9470\u5eab\u4e0d\u53d7\u5bc6\u78bc\u4fdd\u8b77\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -srcstorepass \u548c -srckeypass"}, - {"Validity must be greater than zero", - "\u6709\u6548\u6027\u5fc5\u9808\u6bd4\u96f6\u9084\u5927"}, - {"provName not a provider", "{0} \u4e0d\u662f\u4e00\u500b\u63d0\u4f9b\u8005"}, - {"Usage error: no command provided", "\u7528\u6cd5\u932f\u8aa4\uff1a\u672a\u63d0\u4f9b\u6307\u4ee4"}, - {"Usage error, is not a legal command", "\u7528\u6cd5\u932f\u8aa4\uff0c{0} \u4e0d\u662f\u5408\u6cd5\u6307\u4ee4"}, - {"Source keystore file exists, but is empty: ", "\u4f86\u6e90\u91d1\u9470\u5132\u5b58\u5eab\u6a94\u6848\u5b58\u5728\uff0c\u4f46\u70ba\u7a7a\uff1a"}, - {"Please specify -srckeystore", "\u8acb\u6307\u5b9a -srckeystore"}, - {"Must not specify both -v and -rfc with 'list' command", - "\u4e0d\u5f97\u4ee5\u300c\u6e05\u55ae\u300d\u6307\u4ee4\u6307\u5b9a -v \u53ca -rfc"}, - {"Key password must be at least 6 characters", - "\u95dc\u9375\u5bc6\u78bc\u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"}, - {"New password must be at least 6 characters", - "\u65b0\u7684\u5bc6\u78bc\u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"}, - {"Keystore file exists, but is empty: ", - "Keystore \u6a94\u6848\u5b58\u5728\uff0c\u4f46\u70ba\u7a7a\u767d\uff1a "}, - {"Keystore file does not exist: ", - "Keystore \u6a94\u6848\u4e0d\u5b58\u5728\uff1a "}, - {"Must specify destination alias", "\u5fc5\u9808\u6307\u5b9a\u76ee\u7684\u5730\u5225\u540d"}, - {"Must specify alias", "\u5fc5\u9808\u6307\u5b9a\u5225\u540d"}, - {"Keystore password must be at least 6 characters", - "Keystore \u5bc6\u78bc\u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"}, - {"Enter keystore password: ", "\u8f38\u5165 keystore \u5bc6\u78bc\uff1a "}, - {"Enter source keystore password: ", "\u8acb\u8f38\u5165\u4f86\u6e90\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc\uff1a"}, - {"Enter destination keystore password: ", "\u8acb\u8f38\u5165\u76ee\u6a19\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc\uff1a"}, - {"Keystore password is too short - must be at least 6 characters", - "Keystore \u5bc6\u78bc\u592a\u77ed - \u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"}, - {"Unknown Entry Type", "\u4e0d\u660e\u7684\u9805\u76ee\u985e\u578b"}, - {"Too many failures. Alias not changed", "\u592a\u591a\u932f\u8aa4\u3002\u672a\u8b8a\u66f4\u5225\u540d"}, - {"Entry for alias successfully imported.", -"\u5df2\u6210\u529f\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u3002"}, - {"Entry for alias not imported.", "\u672a\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u3002"}, - {"Problem importing entry for alias : .\nEntry for alias not imported.", -"\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u6642\u51fa\u73fe\u554f\u984c\uff1a{1}\u3002\n\u672a\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u3002"}, - {"Import command completed: entries successfully imported, entries failed or cancelled", -"\u5df2\u5b8c\u6210\u532f\u5165\u6307\u4ee4\uff1a\u6210\u529f\u532f\u5165 {0} \u500b\u9805\u76ee\uff0c{1} \u500b\u9805\u76ee\u5931\u6557\u6216\u5df2\u53d6\u6d88"}, - {"Warning: Overwriting existing alias in destination keystore", -"\u8b66\u544a\uff1a\u6b63\u5728\u8986\u5beb\u76ee\u6a19\u91d1\u9470\u5132\u5b58\u5eab\u4e2d\u7684\u73fe\u6709\u5225\u540d {0}"}, - {"Existing entry alias exists, overwrite? [no]: ", -"\u73fe\u6709\u9805\u76ee\u5225\u540d {0} \u5b58\u5728\uff0c\u662f\u5426\u8986\u5beb\uff1f[\u5426]\uff1a "}, - {"Too many failures - try later", "\u592a\u591a\u932f\u8aa4 - \u8acb\u7a0d\u5f8c\u518d\u8a66"}, - {"Certification request stored in file ", - "\u8a8d\u8b49\u8981\u6c42\u5132\u5b58\u5728\u6a94\u6848 <{0}>"}, - {"Submit this to your CA", "\u5c07\u6b64\u63d0\u9001\u81f3\u60a8\u7684 CA"}, - {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified", -"\u5982\u679c\u672a\u6307\u5b9a\u5225\u540d\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a destalias\u3001srckeypass \u53ca destkeypass"}, - {"Certificate stored in file ", - "\u8a8d\u8b49\u5132\u5b58\u5728\u6a94\u6848 <{0}>"}, - {"Certificate reply was installed in keystore", - "\u8a8d\u8b49\u56de\u8986\u5df2\u5b89\u88dd\u5728 keystore \u4e2d"}, - {"Certificate reply was not installed in keystore", - "\u8a8d\u8b49\u56de\u8986\u672a\u5b89\u88dd\u5728 keystore \u4e2d"}, - {"Certificate was added to keystore", - "\u8a8d\u8b49\u5df2\u65b0\u589e\u81f3 keystore \u4e2d"}, - {"Certificate was not added to keystore", - "\u8a8d\u8b49\u672a\u65b0\u589e\u81f3 keystore \u4e2d"}, - {"[Storing ksfname]", "[\u5132\u5b58 {0}]"}, - {"alias has no public key (certificate)", - "{0} \u6c92\u6709\u516c\u958b\u91d1\u9470\uff08\u8a8d\u8b49\uff09"}, - {"Cannot derive signature algorithm", - "\u7121\u6cd5\u53d6\u5f97\u7c3d\u540d\u6f14\u7b97\u6cd5"}, - {"Alias does not exist", - "\u5225\u540d <{0}> \u4e0d\u5b58\u5728"}, - {"Alias has no certificate", - "\u5225\u540d <{0}> \u6c92\u6709\u8a8d\u8b49"}, - {"Key pair not generated, alias already exists", - "\u6c92\u6709\u5efa\u7acb\u9375\u503c\u5c0d\uff0c\u5225\u540d <{0}> \u5df2\u7d93\u5b58\u5728"}, - {"Cannot derive signature algorithm", - "\u7121\u6cd5\u53d6\u5f97\u7c3d\u540d\u6f14\u7b97\u6cd5"}, - {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name", -"\u91dd\u5c0d {4} \u7522\u751f\u6709\u6548\u671f\u70ba {3} \u5929\u7684 {0} \u4f4d\u5143 {1} \u91d1\u9470\u5c0d\u4ee5\u53ca\u81ea\u6211\u7c3d\u7f72\u6191\u8b49 ({2})\n\t"}, - {"Enter key password for ", "\u8f38\u5165 <{0}> \u7684\u4e3b\u5bc6\u78bc"}, - {"\t(RETURN if same as keystore password): ", - "\t\uff08RETURN \u5982\u679c\u548c keystore \u5bc6\u78bc\u76f8\u540c\uff09\uff1a "}, - {"Key password is too short - must be at least 6 characters", - "\u4e3b\u5bc6\u78bc\u592a\u77ed - \u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"}, - {"Too many failures - key not added to keystore", - "\u592a\u591a\u932f\u8aa4 - \u9375\u503c\u672a\u88ab\u65b0\u589e\u81f3 keystore \u4e2d"}, - {"Destination alias already exists", - "\u76ee\u7684\u5730\u5225\u540d <{0}> \u5df2\u7d93\u5b58\u5728"}, - {"Password is too short - must be at least 6 characters", - "\u5bc6\u78bc\u592a\u77ed - \u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"}, - {"Too many failures. Key entry not cloned", - "\u592a\u591a\u932f\u8aa4\u3002 \u9375\u503c\u8f38\u5165\u672a\u88ab\u8907\u88fd"}, - {"key password for ", "<{0}> \u7684\u4e3b\u5bc6\u78bc"}, - {"Keystore entry for already exists", - "<{0}> \u7684 Keystore \u8f38\u5165\u5df2\u7d93\u5b58\u5728"}, - {"Creating keystore entry for ...", - "\u5efa\u7acb <{0}> \u7684 keystore \u8f38\u5165..."}, - {"No entries from identity database added", - "\u5f9e\u65b0\u589e\u8fa8\u8b58\u8cc7\u6599\u5eab\u4e2d\uff0c\u6c92\u6709\u8f38\u5165"}, - {"Alias name: alias", "\u5225\u540d\u540d\u7a31\uff1a {0}"}, - {"Creation date: keyStore.getCreationDate(alias)", - "\u5efa\u7acb\u65e5\u671f\uff1a {0,date}"}, - {"alias, keyStore.getCreationDate(alias), ", + // keytool: Help part + {".OPTION.", " [OPTION]..."}, + {"Options.", "\u9078\u9805:"}, + {"Use.keytool.help.for.all.available.commands", + "\u4F7F\u7528 \"keytool -help\" \u53D6\u5F97\u6240\u6709\u53EF\u7528\u7684\u547D\u4EE4"}, + {"Key.and.Certificate.Management.Tool", + "\u91D1\u9470\u8207\u6191\u8B49\u7BA1\u7406\u5DE5\u5177"}, + {"Commands.", "\u547D\u4EE4:"}, + {"Use.keytool.command.name.help.for.usage.of.command.name", + "\u4F7F\u7528 \"keytool -command_name -help\" \u53D6\u5F97 command_name \u7684\u7528\u6CD5"}, + // keytool: help: commands + {"Generates.a.certificate.request", + "\u7522\u751F\u6191\u8B49\u8981\u6C42"}, //-certreq + {"Changes.an.entry.s.alias", + "\u8B8A\u66F4\u9805\u76EE\u7684\u5225\u540D"}, //-changealias + {"Deletes.an.entry", + "\u522A\u9664\u9805\u76EE"}, //-delete + {"Exports.certificate", + "\u532F\u51FA\u6191\u8B49"}, //-exportcert + {"Generates.a.key.pair", + "\u7522\u751F\u91D1\u9470\u7D44"}, //-genkeypair + {"Generates.a.secret.key", + "\u7522\u751F\u79D8\u5BC6\u91D1\u9470"}, //-genseckey + {"Generates.certificate.from.a.certificate.request", + "\u5F9E\u6191\u8B49\u8981\u6C42\u7522\u751F\u6191\u8B49"}, //-gencert + {"Generates.CRL", "\u7522\u751F CRL"}, //-gencrl + {"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.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", + "\u8907\u88FD\u91D1\u9470\u9805\u76EE"}, //-keyclone + {"Changes.the.key.password.of.an.entry", + "\u8B8A\u66F4\u9805\u76EE\u7684\u91D1\u9470\u5BC6\u78BC"}, //-keypasswd + {"Lists.entries.in.a.keystore", + "\u5217\u793A\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u7684\u9805\u76EE"}, //-list + {"Prints.the.content.of.a.certificate", + "\u5217\u5370\u6191\u8B49\u7684\u5167\u5BB9"}, //-printcert + {"Prints.the.content.of.a.certificate.request", + "\u5217\u5370\u6191\u8B49\u8981\u6C42\u7684\u5167\u5BB9"}, //-printcertreq + {"Prints.the.content.of.a.CRL.file", + "\u5217\u5370 CRL \u6A94\u6848\u7684\u5167\u5BB9"}, //-printcrl + {"Generates.a.self.signed.certificate", + "\u7522\u751F\u81EA\u884C\u7C3D\u7F72\u7684\u6191\u8B49"}, //-selfcert + {"Changes.the.store.password.of.a.keystore", + "\u8B8A\u66F4\u91D1\u9470\u5132\u5B58\u5EAB\u7684\u5132\u5B58\u5BC6\u78BC"}, //-storepasswd + // keytool: help: options + {"alias.name.of.the.entry.to.process", + "\u8981\u8655\u7406\u9805\u76EE\u7684\u5225\u540D\u540D\u7A31"}, //-alias + {"destination.alias", + "\u76EE\u7684\u5730\u5225\u540D"}, //-destalias + {"destination.key.password", + "\u76EE\u7684\u5730\u91D1\u9470\u5BC6\u78BC"}, //-destkeypass + {"destination.keystore.name", + "\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u540D\u7A31"}, //-destkeystore + {"destination.keystore.password.protected", + "\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u4FDD\u8B77"}, //-destprotected + {"destination.keystore.provider.name", + "\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005\u540D\u7A31"}, //-destprovidername + {"destination.keystore.password", + "\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC"}, //-deststorepass + {"destination.keystore.type", + "\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"}, //-deststoretype + {"distinguished.name", + "\u8FA8\u5225\u540D\u7A31"}, //-dname + {"X.509.extension", + "X.509 \u64F4\u5145\u5957\u4EF6"}, //-ext + {"output.file.name", + "\u8F38\u51FA\u6A94\u6848\u540D\u7A31"}, //-file and -outfile + {"input.file.name", + "\u8F38\u5165\u6A94\u6848\u540D\u7A31"}, //-file and -infile + {"key.algorithm.name", + "\u91D1\u9470\u6F14\u7B97\u6CD5\u540D\u7A31"}, //-keyalg + {"key.password", + "\u91D1\u9470\u5BC6\u78BC"}, //-keypass + {"key.bit.size", + "\u91D1\u9470\u4F4D\u5143\u5927\u5C0F"}, //-keysize + {"keystore.name", + "\u91D1\u9470\u5132\u5B58\u5EAB\u540D\u7A31"}, //-keystore + {"new.password", + "\u65B0\u5BC6\u78BC"}, //-new + {"do.not.prompt", + "\u4E0D\u8981\u63D0\u793A"}, //-noprompt + {"password.through.protected.mechanism", + "\u7D93\u7531\u4FDD\u8B77\u6A5F\u5236\u7684\u5BC6\u78BC"}, //-protected + {"provider.argument", + "\u63D0\u4F9B\u8005\u5F15\u6578"}, //-providerarg + {"provider.class.name", + "\u63D0\u4F9B\u8005\u985E\u5225\u540D\u7A31"}, //-providerclass + {"provider.name", + "\u63D0\u4F9B\u8005\u540D\u7A31"}, //-providername + {"provider.classpath", + "\u63D0\u4F9B\u8005\u985E\u5225\u8DEF\u5F91"}, //-providerpath + {"output.in.RFC.style", + "\u4EE5 RFC \u6A23\u5F0F\u8F38\u51FA"}, //-rfc + {"signature.algorithm.name", + "\u7C3D\u7AE0\u6F14\u7B97\u6CD5\u540D\u7A31"}, //-sigalg + {"source.alias", + "\u4F86\u6E90\u5225\u540D"}, //-srcalias + {"source.key.password", + "\u4F86\u6E90\u91D1\u9470\u5BC6\u78BC"}, //-srckeypass + {"source.keystore.name", + "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u540D\u7A31"}, //-srckeystore + {"source.keystore.password.protected", + "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u4FDD\u8B77"}, //-srcprotected + {"source.keystore.provider.name", + "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005\u540D\u7A31"}, //-srcprovidername + {"source.keystore.password", + "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC"}, //-srcstorepass + {"source.keystore.type", + "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"}, //-srcstoretype + {"SSL.server.host.and.port", + "SSL \u4F3A\u670D\u5668\u4E3B\u6A5F\u8207\u9023\u63A5\u57E0"}, //-sslserver + {"signed.jar.file", + "\u7C3D\u7F72\u7684 jar \u6A94\u6848"}, //=jarfile + {"certificate.validity.start.date.time", + "\u6191\u8B49\u6709\u6548\u6027\u958B\u59CB\u65E5\u671F/\u6642\u9593"}, //-startdate + {"keystore.password", + "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC"}, //-storepass + {"keystore.type", + "\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"}, //-storetype + {"trust.certificates.from.cacerts", + "\u4F86\u81EA cacerts \u7684\u4FE1\u4EFB\u6191\u8B49"}, //-trustcacerts + {"verbose.output", + "\u8A73\u7D30\u8CC7\u8A0A\u8F38\u51FA"}, //-v + {"validity.number.of.days", + "\u6709\u6548\u6027\u65E5\u6578"}, //-validity + {"Serial.ID.of.cert.to.revoke", + "\u8981\u64A4\u92B7\u6191\u8B49\u7684\u5E8F\u5217 ID"}, //-id + // keytool: Running part + {"keytool.error.", "\u91D1\u9470\u5DE5\u5177\u932F\u8AA4: "}, + {"Illegal.option.", "\u7121\u6548\u7684\u9078\u9805:"}, + {"Illegal.value.", "\u7121\u6548\u503C: "}, + {"Unknown.password.type.", "\u4E0D\u660E\u7684\u5BC6\u78BC\u985E\u578B: "}, + {"Cannot.find.environment.variable.", + "\u627E\u4E0D\u5230\u74B0\u5883\u8B8A\u6578: "}, + {"Cannot.find.file.", "\u627E\u4E0D\u5230\u6A94\u6848: "}, + {"Command.option.flag.needs.an.argument.", "\u547D\u4EE4\u9078\u9805 {0} \u9700\u8981\u5F15\u6578\u3002"}, + {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.", + "\u8B66\u544A: PKCS12 \u91D1\u9470\u5132\u5B58\u5EAB\u4E0D\u652F\u63F4\u4E0D\u540C\u7684\u5132\u5B58\u5EAB\u548C\u91D1\u9470\u5BC6\u78BC\u3002\u5FFD\u7565\u4F7F\u7528\u8005\u6307\u5B9A\u7684 {0} \u503C\u3002"}, + {".keystore.must.be.NONE.if.storetype.is.{0}", + "\u5982\u679C -storetype \u70BA {0}\uFF0C\u5247 -keystore \u5FC5\u9808\u70BA NONE"}, + {"Too.many.retries.program.terminated", + "\u91CD\u8A66\u6B21\u6578\u592A\u591A\uFF0C\u7A0B\u5F0F\u5DF2\u7D42\u6B62"}, + {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}", + "\u5982\u679C -storetype \u70BA {0}\uFF0C\u5247\u4E0D\u652F\u63F4 -storepasswd \u548C -keypasswd \u547D\u4EE4"}, + {".keypasswd.commands.not.supported.if.storetype.is.PKCS12", + "\u5982\u679C -storetype \u70BA PKCS12\uFF0C\u5247\u4E0D\u652F\u63F4 -keypasswd \u547D\u4EE4"}, + {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}", + "\u5982\u679C -storetype \u70BA {0}\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A -keypass \u548C -new"}, + {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified", + "\u5982\u679C\u6307\u5B9A -protected\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A -storepass\u3001-keypass \u548C -new"}, + {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified", + "\u5982\u679C\u6307\u5B9A -srcprotected\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A -srcstorepass \u548C -srckeypass"}, + {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified", + "\u5982\u679C\u91D1\u9470\u5132\u5B58\u5EAB\u4E0D\u53D7\u5BC6\u78BC\u4FDD\u8B77\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A -storepass\u3001-keypass \u548C -new"}, + {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", + "\u5982\u679C\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u4E0D\u53D7\u5BC6\u78BC\u4FDD\u8B77\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A -srcstorepass \u548C -srckeypass"}, + {"Illegal.startdate.value", "\u7121\u6548\u7684 startdate \u503C"}, + {"Validity.must.be.greater.than.zero", + "\u6709\u6548\u6027\u5FC5\u9808\u5927\u65BC\u96F6"}, + {"provName.not.a.provider", "{0} \u4E0D\u662F\u4E00\u500B\u63D0\u4F9B\u8005"}, + {"Usage.error.no.command.provided", "\u7528\u6CD5\u932F\u8AA4: \u672A\u63D0\u4F9B\u547D\u4EE4"}, + {"Source.keystore.file.exists.but.is.empty.", "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u6A94\u6848\u5B58\u5728\uFF0C\u4F46\u70BA\u7A7A: "}, + {"Please.specify.srckeystore", "\u8ACB\u6307\u5B9A -srckeystore"}, + {"Must.not.specify.both.v.and.rfc.with.list.command", + " 'list' \u547D\u4EE4\u4E0D\u80FD\u540C\u6642\u6307\u5B9A -v \u53CA -rfc"}, + {"Key.password.must.be.at.least.6.characters", + "\u91D1\u9470\u5BC6\u78BC\u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"}, + {"New.password.must.be.at.least.6.characters", + "\u65B0\u7684\u5BC6\u78BC\u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"}, + {"Keystore.file.exists.but.is.empty.", + "\u91D1\u9470\u5132\u5B58\u5EAB\u6A94\u6848\u5B58\u5728\uFF0C\u4F46\u70BA\u7A7A\u767D: "}, + {"Keystore.file.does.not.exist.", + "\u91D1\u9470\u5132\u5B58\u5EAB\u6A94\u6848\u4E0D\u5B58\u5728: "}, + {"Must.specify.destination.alias", "\u5FC5\u9808\u6307\u5B9A\u76EE\u7684\u5730\u5225\u540D"}, + {"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.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: "}, + {"Keystore.password.is.too.short.must.be.at.least.6.characters", + "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u592A\u77ED - \u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"}, + {"Unknown.Entry.Type", "\u4E0D\u660E\u7684\u9805\u76EE\u985E\u578B"}, + {"Too.many.failures.Alias.not.changed", "\u592A\u591A\u932F\u8AA4\u3002\u672A\u8B8A\u66F4\u5225\u540D"}, + {"Entry.for.alias.alias.successfully.imported.", + "\u5DF2\u6210\u529F\u532F\u5165\u5225\u540D {0} \u7684\u9805\u76EE\u3002"}, + {"Entry.for.alias.alias.not.imported.", "\u672A\u532F\u5165\u5225\u540D {0} \u7684\u9805\u76EE\u3002"}, + {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.", + "\u532F\u5165\u5225\u540D {0} \u7684\u9805\u76EE\u6642\u51FA\u73FE\u554F\u984C: {1}\u3002\n\u672A\u532F\u5165\u5225\u540D {0} \u7684\u9805\u76EE\u3002"}, + {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled", + "\u5DF2\u5B8C\u6210\u532F\u5165\u547D\u4EE4: \u6210\u529F\u532F\u5165 {0} \u500B\u9805\u76EE\uFF0C{1} \u500B\u9805\u76EE\u5931\u6557\u6216\u5DF2\u53D6\u6D88"}, + {"Warning.Overwriting.existing.alias.alias.in.destination.keystore", + "\u8B66\u544A: \u6B63\u5728\u8986\u5BEB\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u7684\u73FE\u6709\u5225\u540D {0}"}, + {"Existing.entry.alias.alias.exists.overwrite.no.", + "\u73FE\u6709\u9805\u76EE\u5225\u540D {0} \u5B58\u5728\uFF0C\u662F\u5426\u8986\u5BEB\uFF1F[\u5426]: "}, + {"Too.many.failures.try.later", "\u592A\u591A\u932F\u8AA4 - \u8ACB\u7A0D\u5F8C\u518D\u8A66"}, + {"Certification.request.stored.in.file.filename.", + "\u8A8D\u8B49\u8981\u6C42\u5132\u5B58\u5728\u6A94\u6848 <{0}>"}, + {"Submit.this.to.your.CA", "\u5C07\u6B64\u9001\u51FA\u81F3\u60A8\u7684 CA"}, + {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified", + "\u5982\u679C\u672A\u6307\u5B9A\u5225\u540D\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A destalias\u3001srckeypass \u53CA destkeypass"}, + {"Certificate.stored.in.file.filename.", + "\u6191\u8B49\u5132\u5B58\u5728\u6A94\u6848 <{0}>"}, + {"Certificate.reply.was.installed.in.keystore", + "\u6191\u8B49\u56DE\u8986\u5DF2\u5B89\u88DD\u5728\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D"}, + {"Certificate.reply.was.not.installed.in.keystore", + "\u6191\u8B49\u56DE\u8986\u672A\u5B89\u88DD\u5728\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D"}, + {"Certificate.was.added.to.keystore", + "\u6191\u8B49\u5DF2\u65B0\u589E\u81F3\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D"}, + {"Certificate.was.not.added.to.keystore", + "\u6191\u8B49\u672A\u65B0\u589E\u81F3\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D"}, + {".Storing.ksfname.", "[\u5132\u5B58 {0}]"}, + {"alias.has.no.public.key.certificate.", + "{0} \u6C92\u6709\u516C\u958B\u91D1\u9470 (\u6191\u8B49)"}, + {"Cannot.derive.signature.algorithm", + "\u7121\u6CD5\u53D6\u5F97\u7C3D\u7AE0\u6F14\u7B97\u6CD5"}, + {"Alias.alias.does.not.exist", + "\u5225\u540D <{0}> \u4E0D\u5B58\u5728"}, + {"Alias.alias.has.no.certificate", + "\u5225\u540D <{0}> \u6C92\u6709\u6191\u8B49"}, + {"Key.pair.not.generated.alias.alias.already.exists", + "\u6C92\u6709\u5EFA\u7ACB\u91D1\u9470\u7D44\uFF0C\u5225\u540D <{0}> \u5DF2\u7D93\u5B58\u5728"}, + {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for", + "\u91DD\u5C0D {4} \u7522\u751F\u6709\u6548\u671F {3} \u5929\u7684 {0} \u4F4D\u5143 {1} \u91D1\u9470\u7D44\u4EE5\u53CA\u81EA\u6211\u7C3D\u7F72\u6191\u8B49 ({2})\n\t"}, + {"Enter.key.password.for.alias.", "\u8F38\u5165 <{0}> \u7684\u91D1\u9470\u5BC6\u78BC"}, + {".RETURN.if.same.as.keystore.password.", + "\t(RETURN \u5982\u679C\u548C\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u76F8\u540C): "}, + {"Key.password.is.too.short.must.be.at.least.6.characters", + "\u91D1\u9470\u5BC6\u78BC\u592A\u77ED - \u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"}, + {"Too.many.failures.key.not.added.to.keystore", + "\u592A\u591A\u932F\u8AA4 - \u91D1\u9470\u672A\u65B0\u589E\u81F3\u91D1\u9470\u5132\u5B58\u5EAB"}, + {"Destination.alias.dest.already.exists", + "\u76EE\u7684\u5730\u5225\u540D <{0}> \u5DF2\u7D93\u5B58\u5728"}, + {"Password.is.too.short.must.be.at.least.6.characters", + "\u5BC6\u78BC\u592A\u77ED - \u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"}, + {"Too.many.failures.Key.entry.not.cloned", + "\u592A\u591A\u932F\u8AA4\u3002\u672A\u8907\u88FD\u91D1\u9470\u9805\u76EE"}, + {"key.password.for.alias.", "<{0}> \u7684\u91D1\u9470\u5BC6\u78BC"}, + {"Keystore.entry.for.id.getName.already.exists", + "<{0}> \u7684\u91D1\u9470\u5132\u5B58\u5EAB\u9805\u76EE\u5DF2\u7D93\u5B58\u5728"}, + {"Creating.keystore.entry.for.id.getName.", + "\u5EFA\u7ACB <{0}> \u7684\u91D1\u9470\u5132\u5B58\u5EAB\u9805\u76EE..."}, + {"No.entries.from.identity.database.added", + "\u6C92\u6709\u65B0\u589E\u4F86\u81EA\u8B58\u5225\u8CC7\u6599\u5EAB\u7684\u9805\u76EE"}, + {"Alias.name.alias", "\u5225\u540D\u540D\u7A31: {0}"}, + {"Creation.date.keyStore.getCreationDate.alias.", + "\u5EFA\u7ACB\u65E5\u671F: {0,date}"}, + {"alias.keyStore.getCreationDate.alias.", "{0}, {1,date}, "}, - {"alias, ", "{0}, "}, - {"Entry type: ", "\u9805\u76ee\u985e\u578b\uff1a{0}"}, - {"Certificate chain length: ", "\u8a8d\u8b49\u93c8\u9577\u5ea6\uff1a "}, - {"Certificate[(i + 1)]:", "\u8a8d\u8b49 [{0,number,integer}]:"}, - {"Certificate fingerprint (MD5): ", "\u8a8d\u8b49\u6307\u7d0b (MD5)\uff1a "}, - {"Entry type: trustedCertEntry\n", "\u8f38\u5165\u985e\u578b\uff1a trustedCertEntry\n"}, - {"trustedCertEntry,", "trustedCertEntry,"}, - {"Keystore type: ", "Keystore \u985e\u578b\uff1a "}, - {"Keystore provider: ", "Keystore \u63d0\u4f9b\u8005\uff1a "}, - {"Your keystore contains keyStore.size() entry", - "\u60a8\u7684 keystore \u5305\u542b {0,number,integer} \u8f38\u5165"}, - {"Your keystore contains keyStore.size() entries", - "\u60a8\u7684 keystore \u5305\u542b {0,number,integer} \u8f38\u5165"}, - {"Failed to parse input", "\u7121\u6cd5\u8a9e\u6cd5\u5206\u6790\u8f38\u5165"}, - {"Empty input", "\u7a7a\u8f38\u5165"}, - {"Not X.509 certificate", "\u975e X.509 \u8a8d\u8b49"}, - {"Cannot derive signature algorithm", - "\u7121\u6cd5\u53d6\u5f97\u7c3d\u540d\u6f14\u7b97\u6cd5"}, - {"alias has no public key", "{0} \u7121\u516c\u958b\u91d1\u9470"}, - {"alias has no X.509 certificate", "{0} \u7121 X.509 \u8a8d\u8b49"}, - {"New certificate (self-signed):", "\u65b0\u8a8d\u8b49\uff08\u81ea\u6211\u7c3d\u7f72\uff09\uff1a"}, - {"Reply has no certificates", "\u56de\u8986\u4e0d\u542b\u8a8d\u8b49"}, - {"Certificate not imported, alias already exists", - "\u8a8d\u8b49\u672a\u8f38\u5165\uff0c\u5225\u540d <{0}> \u5df2\u7d93\u5b58\u5728"}, - {"Input not an X.509 certificate", "\u6240\u8f38\u5165\u7684\u4e0d\u662f\u4e00\u500b X.509 \u8a8d\u8b49"}, - {"Certificate already exists in keystore under alias ", - "\u5728 <{0}> \u7684\u5225\u540d\u4e4b\u4e0b\uff0c\u8a8d\u8b49\u5df2\u7d93\u5b58\u5728 keystore \u4e2d"}, - {"Do you still want to add it? [no]: ", - "\u60a8\u4ecd\u7136\u60f3\u8981\u5c07\u4e4b\u65b0\u589e\u55ce\uff1f [\u5426]\uff1a "}, - {"Certificate already exists in system-wide CA keystore under alias ", - "\u5728 <{0}> \u7684\u5225\u540d\u4e4b\u4e0b\uff0c\u8a8d\u8b49\u5df2\u7d93\u5b58\u5728\u65bc CA keystore \u6574\u500b\u7cfb\u7d71\u4e4b\u4e2d"}, - {"Do you still want to add it to your own keystore? [no]: ", - "\u60a8\u4ecd\u7136\u60f3\u8981\u5c07\u4e4b\u65b0\u589e\u81f3\u81ea\u5df1\u7684 keystore \u55ce\uff1f [\u5426]\uff1a "}, - {"Trust this certificate? [no]: ", "\u4fe1\u4efb\u9019\u500b\u8a8d\u8b49\uff1f [\u5426]\uff1a "}, - {"YES", "\u662f"}, - {"New prompt: ", "\u65b0 {0}\uff1a "}, - {"Passwords must differ", "\u5fc5\u9808\u662f\u4e0d\u540c\u7684\u5bc6\u78bc"}, - {"Re-enter new prompt: ", "\u91cd\u65b0\u8f38\u5165\u65b0 {0}\uff1a "}, - {"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\uff1a "}, - {"Enter new alias name\t(RETURN to cancel import for this entry): ", -"\u8acb\u8f38\u5165\u65b0\u7684\u5225\u540d\t(RETURN \u4ee5\u53d6\u6d88\u532f\u5165\u6b64\u9805\u76ee\u7684\u5225\u540d)\uff1a "}, - {"Enter alias name: ", "\u8f38\u5165\u5225\u540d\u540d\u7a31\uff1a "}, - {"\t(RETURN if same as for )", - "\t\uff08RETURN \u5982\u679c\u548c <{0}> \u7684\u76f8\u540c\uff09"}, - {"*PATTERN* printX509Cert", - "\u6240\u6709\u8005\uff1a{0}\n\u6838\u767c\u8005\uff1a{1}\n\u5e8f\u865f\uff1a{2}\n\u81ea\u4ee5\u4e0b\u65e5\u671f\u958b\u59cb\u751f\u6548\uff1a{3}\uff0c\u76f4\u5230\uff1a{4}\n\u6191\u8b49\u6307\u7d0b\uff1a\n\tMD5\uff1a{5}\n\tSHA1\uff1a{6}\n\t\u7c3d\u540d\u6f14\u7b97\u6cd5\u540d\u7a31\uff1a{7}\n\t\u7248\u672c\uff1a{8}"}, - {"What is your first and last name?", - "\u60a8\u7684\u540d\u5b57\u8207\u59d3\u6c0f\u70ba\u4f55\uff1f"}, - {"What is the name of your organizational unit?", - "\u60a8\u7684\u7de8\u5236\u55ae\u4f4d\u540d\u7a31\u70ba\u4f55\uff1f"}, - {"What is the name of your organization?", - "\u60a8\u7684\u7d44\u7e54\u540d\u7a31\u70ba\u4f55\uff1f"}, - {"What is the name of your City or Locality?", - "\u60a8\u6240\u5728\u7684\u57ce\u5e02\u6216\u5730\u5340\u540d\u7a31\u70ba\u4f55\uff1f"}, - {"What is the name of your State or Province?", - "\u60a8\u6240\u5728\u7684\u5dde\u53ca\u7701\u4efd\u540d\u7a31\u70ba\u4f55\uff1f"}, - {"What is the two-letter country code for this unit?", - "\u8a72\u55ae\u4f4d\u7684\u4e8c\u5b57\u570b\u78bc\u70ba\u4f55"}, - {"Is correct?", "{0} \u6b63\u78ba\u55ce\uff1f"}, + {"alias.", "{0}, "}, + {"Entry.type.type.", "\u9805\u76EE\u985E\u578B: {0}"}, + {"Certificate.chain.length.", "\u6191\u8B49\u93C8\u9577\u5EA6: "}, + {"Certificate.i.1.", "\u6191\u8B49 [{0,number,integer}]:"}, + {"Certificate.fingerprint.SHA1.", "\u6191\u8B49\u6307\u7D0B (SHA1): "}, + {"Entry.type.trustedCertEntry.", "\u8F38\u5165\u985E\u578B: trustedCertEntry\n"}, + {"trustedCertEntry.", "trustedCertEntry,"}, + {"Keystore.type.", "\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B: "}, + {"Keystore.provider.", "\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005: "}, + {"Your.keystore.contains.keyStore.size.entry", + "\u60A8\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u5305\u542B {0,number,integer} \u9805\u76EE"}, + {"Your.keystore.contains.keyStore.size.entries", + "\u60A8\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u5305\u542B {0,number,integer} \u9805\u76EE"}, + {"Failed.to.parse.input", "\u7121\u6CD5\u5256\u6790\u8F38\u5165"}, + {"Empty.input", "\u7A7A\u8F38\u5165"}, + {"Not.X.509.certificate", "\u975E X.509 \u6191\u8B49"}, + {"alias.has.no.public.key", "{0} \u7121\u516C\u958B\u91D1\u9470"}, + {"alias.has.no.X.509.certificate", "{0} \u7121 X.509 \u6191\u8B49"}, + {"New.certificate.self.signed.", "\u65B0\u6191\u8B49 (\u81EA\u6211\u7C3D\u7F72): "}, + {"Reply.has.no.certificates", "\u56DE\u8986\u4E0D\u542B\u6191\u8B49"}, + {"Certificate.not.imported.alias.alias.already.exists", + "\u6191\u8B49\u672A\u8F38\u5165\uFF0C\u5225\u540D <{0}> \u5DF2\u7D93\u5B58\u5728"}, + {"Input.not.an.X.509.certificate", "\u8F38\u5165\u7684\u4E0D\u662F X.509 \u6191\u8B49"}, + {"Certificate.already.exists.in.keystore.under.alias.trustalias.", + "\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u7684 <{0}> \u5225\u540D\u4E4B\u4E0B\uFF0C\u6191\u8B49\u5DF2\u7D93\u5B58\u5728"}, + {"Do.you.still.want.to.add.it.no.", + "\u60A8\u4ECD\u7136\u60F3\u8981\u5C07\u4E4B\u65B0\u589E\u55CE\uFF1F [\u5426]: "}, + {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.", + "\u6574\u500B\u7CFB\u7D71 CA \u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u7684 <{0}> \u5225\u540D\u4E4B\u4E0B\uFF0C\u6191\u8B49\u5DF2\u7D93\u5B58\u5728"}, + {"Do.you.still.want.to.add.it.to.your.own.keystore.no.", + "\u60A8\u4ECD\u7136\u60F3\u8981\u5C07\u4E4B\u65B0\u589E\u81F3\u81EA\u5DF1\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u55CE\uFF1F [\u5426]: "}, + {"Trust.this.certificate.no.", "\u4FE1\u4EFB\u9019\u500B\u6191\u8B49\uFF1F [\u5426]: "}, + {"YES", "\u662F"}, + {"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.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: "}, + {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.", + "\u8ACB\u8F38\u5165\u65B0\u7684\u5225\u540D\u540D\u7A31\t(RETURN \u4EE5\u53D6\u6D88\u532F\u5165\u6B64\u9805\u76EE):"}, + {"Enter.alias.name.", "\u8F38\u5165\u5225\u540D\u540D\u7A31: "}, + {".RETURN.if.same.as.for.otherAlias.", + "\t(RETURN \u5982\u679C\u548C <{0}> \u7684\u76F8\u540C)"}, + {".PATTERN.printX509Cert", + "\u64C1\u6709\u8005: {0}\n\u767C\u51FA\u8005: {1}\n\u5E8F\u865F: {2}\n\u6709\u6548\u671F\u81EA: {3} \u5230: {4}\n\u6191\u8B49\u6307\u7D0B:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \u7C3D\u7AE0\u6F14\u7B97\u6CD5\u540D\u7A31: {8}\n\t \u7248\u672C: {9}"}, + {"What.is.your.first.and.last.name.", + "\u60A8\u7684\u540D\u5B57\u8207\u59D3\u6C0F\u70BA\u4F55\uFF1F"}, + {"What.is.the.name.of.your.organizational.unit.", + "\u60A8\u7684\u7D44\u7E54\u55AE\u4F4D\u540D\u7A31\u70BA\u4F55\uFF1F"}, + {"What.is.the.name.of.your.organization.", + "\u60A8\u7684\u7D44\u7E54\u540D\u7A31\u70BA\u4F55\uFF1F"}, + {"What.is.the.name.of.your.City.or.Locality.", + "\u60A8\u6240\u5728\u7684\u57CE\u5E02\u6216\u5730\u5340\u540D\u7A31\u70BA\u4F55\uFF1F"}, + {"What.is.the.name.of.your.State.or.Province.", + "\u60A8\u6240\u5728\u7684\u5DDE\u53CA\u7701\u4EFD\u540D\u7A31\u70BA\u4F55\uFF1F"}, + {"What.is.the.two.letter.country.code.for.this.unit.", + "\u6B64\u55AE\u4F4D\u7684\u5169\u500B\u5B57\u6BCD\u570B\u5225\u4EE3\u78BC\u70BA\u4F55\uFF1F"}, + {"Is.name.correct.", "{0} \u6B63\u78BA\u55CE\uFF1F"}, {"no", "\u5426"}, - {"yes", "\u662f"}, + {"yes", "\u662F"}, {"y", "y"}, - {" [defaultValue]: ", " [{0}]\uff1a "}, - {"Alias has no key", - "\u5225\u540d <{0}> \u6c92\u6709\u91d1\u9470"}, - {"Alias references an entry type that is not a private key entry. The -keyclone command only supports cloning of private key entries", -"\u5225\u540d <{0}> \u6240\u53c3\u7167\u7684\u9805\u76ee\u4e0d\u662f\u79c1\u5bc6\u91d1\u9470\u985e\u578b\u3002-keyclone \u6307\u4ee4\u50c5\u652f\u63f4\u79c1\u5bc6\u91d1\u9470\u9805\u76ee\u7684\u8907\u88fd"}, + {".defaultValue.", " [{0}]: "}, + {"Alias.alias.has.no.key", + "\u5225\u540D <{0}> \u6C92\u6709\u91D1\u9470"}, + {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key", + "\u5225\u540D <{0}> \u6240\u53C3\u7167\u7684\u9805\u76EE\u4E0D\u662F\u79C1\u5BC6\u91D1\u9470\u985E\u578B\u3002-keyclone \u547D\u4EE4\u50C5\u652F\u63F4\u79C1\u5BC6\u91D1\u9470\u9805\u76EE\u7684\u8907\u88FD"}, - {"***************** WARNING WARNING WARNING *****************", - "***************** \u8b66\u544a \u8b66\u544a \u8b66\u544a *****************"}, + {".WARNING.WARNING.WARNING.", + "***************** WARNING WARNING WARNING *****************"}, + {"Signer.d.", "\u7C3D\u7F72\u8005 #%d:"}, + {"Timestamp.", "\u6642\u6233:"}, + {"Signature.", "\u7C3D\u7AE0:"}, + {"CRLs.", "CRL:"}, + {"Certificate.owner.", "\u6191\u8B49\u64C1\u6709\u8005: "}, + {"Not.a.signed.jar.file", "\u4E0D\u662F\u7C3D\u7F72\u7684 jar \u6A94\u6848"}, + {"No.certificate.from.the.SSL.server", + "\u6C92\u6709\u4F86\u81EA SSL \u4F3A\u670D\u5668\u7684\u6191\u8B49"}, // Translators of the following 5 pairs, ATTENTION: // the next 5 string pairs are meant to be combined into 2 paragraphs, // 1+3+4 and 2+3+5. make sure your translation also does. - {"* The integrity of the information stored in your keystore *", - "* \u8cc7\u6599\u7684\u5b8c\u6574\u6027\u5df2\u5132\u5b58\u5728\u60a8\u7684 keystore \u4e2d *"}, - {"* The integrity of the information stored in the srckeystore*", -"* \u5b8c\u6574\u7684\u8cc7\u8a0a\u5132\u5b58\u5728 srckeystore \u4e2d *"}, - {"* has NOT been verified! In order to verify its integrity, *", - "* \u5c1a\u672a\u88ab\u9a57\u8b49\uff01 \u70ba\u4e86\u9a57\u8b49\u5176\u5b8c\u6574\u6027\uff0c *"}, - {"* you must provide your keystore password. *", - "* \u60a8\u5fc5\u9808\u63d0\u4f9b\u60a8 keystore \u7684\u5bc6\u78bc\u3002 *"}, - {"* you must provide the srckeystore password. *", - "* \u60a8\u5fc5\u9808\u63d0\u4f9b srckeystore \u5bc6\u78bc\u3002 *"}, + {".The.integrity.of.the.information.stored.in.your.keystore.", + "* \u8CC7\u8A0A\u7684\u5B8C\u6574\u6027\u5DF2\u5132\u5B58\u5728\u60A8\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D *"}, + {".The.integrity.of.the.information.stored.in.the.srckeystore.", + "* \u8CC7\u8A0A\u7684\u5B8C\u6574\u6027\u5DF2\u5132\u5B58\u5728 srckeystore \u4E2D *"}, + {".has.NOT.been.verified.In.order.to.verify.its.integrity.", + "* \u5C1A\u672A\u88AB\u9A57\u8B49\uFF01\u70BA\u4E86\u9A57\u8B49\u5176\u5B8C\u6574\u6027\uFF0C*"}, + {".you.must.provide.your.keystore.password.", + "* \u60A8\u5FC5\u9808\u63D0\u4F9B\u60A8\u91D1\u9470\u5132\u5B58\u5EAB\u7684\u5BC6\u78BC\u3002 *"}, + {".you.must.provide.the.srckeystore.password.", + "* \u60A8\u5FC5\u9808\u63D0\u4F9B srckeystore \u5BC6\u78BC\u3002 *"}, - {"Certificate reply does not contain public key for ", - "\u8a8d\u8b49\u56de\u8986\u4e26\u672a\u5305\u542b <{0}> \u7684\u516c\u958b\u91d1\u9470"}, - {"Incomplete certificate chain in reply", - "\u56de\u8986\u6642\u7684\u8a8d\u8b49\u9375\u4e0d\u5b8c\u6574"}, - {"Certificate chain in reply does not verify: ", - "\u56de\u8986\u6642\u7684\u8a8d\u8b49\u93c8\u672a\u9a57\u8b49\uff1a "}, - {"Top-level certificate in reply:\n", - "\u56de\u8986\u6642\u7684\u6700\u9ad8\u7d1a\u8a8d\u8b49\uff1a\n"}, - {"... is not trusted. ", "... \u662f\u4e0d\u88ab\u4fe1\u4efb\u7684\u3002 "}, - {"Install reply anyway? [no]: ", "\u9084\u662f\u8981\u5b89\u88dd\u56de\u8986\uff1f [\u5426]\uff1a "}, + {"Certificate.reply.does.not.contain.public.key.for.alias.", + "\u6191\u8B49\u56DE\u8986\u4E26\u672A\u5305\u542B <{0}> \u7684\u516C\u958B\u91D1\u9470"}, + {"Incomplete.certificate.chain.in.reply", + "\u56DE\u8986\u6642\u7684\u6191\u8B49\u93C8\u4E0D\u5B8C\u6574"}, + {"Certificate.chain.in.reply.does.not.verify.", + "\u56DE\u8986\u6642\u7684\u6191\u8B49\u93C8\u672A\u9A57\u8B49: "}, + {"Top.level.certificate.in.reply.", + "\u56DE\u8986\u6642\u7684\u6700\u9AD8\u7D1A\u6191\u8B49:\\n"}, + {".is.not.trusted.", "... \u662F\u4E0D\u88AB\u4FE1\u4EFB\u7684\u3002"}, + {"Install.reply.anyway.no.", "\u9084\u662F\u8981\u5B89\u88DD\u56DE\u8986\uFF1F [\u5426]: "}, {"NO", "\u5426"}, - {"Public keys in reply and keystore don't match", - "\u56de\u8986\u6642\u7684\u516c\u958b\u91d1\u9470\u8207 keystore \u4e0d\u7b26"}, - {"Certificate reply and certificate in keystore are identical", - "\u8a8d\u8b49\u56de\u8986\u8207 keystore \u4e2d\u7684\u8a8d\u8b49\u662f\u76f8\u540c\u7684"}, - {"Failed to establish chain from reply", - "\u7121\u6cd5\u5f9e\u56de\u8986\u4e2d\u5c07\u9375\u5efa\u7acb\u8d77\u4f86"}, + {"Public.keys.in.reply.and.keystore.don.t.match", + "\u56DE\u8986\u6642\u7684\u516C\u958B\u91D1\u9470\u8207\u91D1\u9470\u5132\u5B58\u5EAB\u4E0D\u7B26"}, + {"Certificate.reply.and.certificate.in.keystore.are.identical", + "\u6191\u8B49\u56DE\u8986\u8207\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u7684\u6191\u8B49\u662F\u76F8\u540C\u7684"}, + {"Failed.to.establish.chain.from.reply", + "\u7121\u6CD5\u5F9E\u56DE\u8986\u4E2D\u5C07\u93C8\u5EFA\u7ACB\u8D77\u4F86"}, {"n", "n"}, - {"Wrong answer, try again", "\u932f\u8aa4\u7684\u7b54\u6848\uff0c\u8acb\u518d\u8a66\u4e00\u6b21"}, - {"Secret key not generated, alias already exists", - "\u672a\u7522\u751f\u79d8\u5bc6\u91d1\u9470\uff0c\u5225\u540d <{0}> \u5df2\u5b58\u5728"}, - {"Please provide -keysize for secret key generation", -"\u8acb\u63d0\u4f9b -keysize \u4ee5\u7522\u751f\u79d8\u5bc6\u91d1\u9470"}, - {"keytool usage:\n", "keytool \u7528\u6cd5\uff1a\n"}, + {"Wrong.answer.try.again", "\u932F\u8AA4\u7684\u7B54\u6848\uFF0C\u8ACB\u518D\u8A66\u4E00\u6B21"}, + {"Secret.key.not.generated.alias.alias.already.exists", + "\u672A\u7522\u751F\u79D8\u5BC6\u91D1\u9470\uFF0C\u5225\u540D <{0}> \u5DF2\u5B58\u5728"}, + {"Please.provide.keysize.for.secret.key.generation", + "\u8ACB\u63D0\u4F9B -keysize \u4EE5\u7522\u751F\u79D8\u5BC6\u91D1\u9470"}, - {"Extensions: ", "\u5ef6\u4f38\uff1a "}, - - {"-certreq [-v] [-protected]", - "-certreq [-v] [-protected]"}, - {"\t [-alias ] [-sigalg ]", - "\t [-alias <\u5225\u540d>] [-sigalg <\u7c3d\u7ae0\u6f14\u7b97\u6cd5>]"}, - {"\t [-file ] [-keypass ]", - "\t [-file <\u6191\u8b49\u7c3d\u7ae0\u8981\u6c42\u6a94\u6848>] [-keypass <\u4e3b\u5bc6\u78bc>]"}, - {"\t [-keystore ] [-storepass ]", - "\t [-keystore <\u91d1\u9470\u5132\u5b58\u5eab>] [-storepass <\u5132\u5b58\u5eab\u5bc6\u78bc>]"}, - {"\t [-storetype ] [-providername ]", - "\t[-storetype <\u5132\u5b58\u5eab\u985e\u578b>] [-providername <\u540d\u7a31>]"}, - {"\t [-providerclass [-providerarg ]] ...", - "\t[-providerclass <\u63d0\u4f9b\u8005\u985e\u5225\u540d\u7a31> [-providerarg <\u5f15\u6578>]] ..."}, - {"\t [-providerpath ]", -"\t[-providerpath <\u8def\u5f91\u6e05\u55ae>]"}, - {"-delete [-v] [-protected] -alias ", - "-delete [-v] [-protected] -alias <\u5225\u540d>"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-export [-v] [-rfc] [-protected]", - // "-export [-v] [-rfc] [-protected]"}, - {"-exportcert [-v] [-rfc] [-protected]", - "-exportcert [-v] [-rfc] [-protected]"}, - {"\t [-alias ] [-file ]", - "\t [-alias <\u5225\u540d>] [-file <\u8a8d\u8b49\u6a94\u6848>]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-genkey [-v] [-protected]", - // "-genkey [-v] [-protected]"}, - {"-genkeypair [-v] [-protected]", - "-genkeypair [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\u5225\u540d>]"}, - {"\t [-keyalg ] [-keysize ]", - "\t [-keyalg <\u91d1\u9470\u6f14\u7b97\u6cd5>] [-keysize <\u91d1\u9470\u5927\u5c0f>]"}, - {"\t [-sigalg ] [-dname ]", - "\t [-sigalg <\u7c3d\u7ae0\u6f14\u7b97\u6cd5>] [-dname <\u7db2\u57df\u540d\u7a31>]"}, - {"\t [-validity ] [-keypass ]", - "\t [-validity <\u6709\u6548\u5929\u6578>] [-keypass <\u4e3b\u5bc6\u78bc>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-genseckey [-v] [-protected]", - "-genseckey [-v] [-protected]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-help", "-help"}, - //{"-identitydb [-v] [-protected]", - // "-identitydb [-v] [-protected]"}, - //{"\t [-file ]", "\t [-file <\u8fa8\u8b58\u8cc7\u6599\u5eab\u6a94\u6848>]"}, - /** rest is same as -certreq starting from -keystore **/ - - //{"-import [-v] [-noprompt] [-trustcacerts] [-protected]", - // "-import [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"-importcert [-v] [-noprompt] [-trustcacerts] [-protected]", - "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\u5225\u540d>]"}, - {"\t [-alias ] [-keypass ]", -"\t[-alias <\u5225\u540d>] [-keypass <\u4e3b\u5bc6\u78bc>]"}, - {"\t [-file ] [-keypass ]", - "\t [-file <\u8a8d\u8b49\u6a94\u6848>] [-keypass <\u4e3b\u5bc6\u78bc>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-importkeystore [-v] ", -"-importkeystore [-v]"}, - {"\t [-srckeystore ] [-destkeystore ]", -"\t[-srckeystore <\u4f86\u6e90\u91d1\u9470\u5132\u5b58\u5eab>] [-destkeystore <\u76ee\u6a19\u91d1\u9470\u5132\u5b58\u5eab>]"}, - {"\t [-srcstoretype ] [-deststoretype ]", -"\t[-srcstoretype <\u4f86\u6e90\u5132\u5b58\u5eab\u985e\u578b>] [-deststoretype <\u76ee\u6a19\u5132\u5b58\u5eab\u985e\u578b>]"}, - {"\t [-srcprotected] [-destprotected]", -"\t[-srcprotected] [-destprotected]"}, - {"\t [-srcstorepass ] [-deststorepass ]", -"\t[-srcstorepass <\u4f86\u6e90\u5132\u5b58\u5eab\u5bc6\u78bc>] [-deststorepass <\u76ee\u6a19\u5132\u5b58\u5eab\u5bc6\u78bc>]"}, - {"\t [-srcprovidername ]\n\t [-destprovidername ]", //\u884c\u592a\u9577\uff0c\u8acb\u5206\u70ba 2 \u884c -"\t[-srcprovidername <\u4f86\u6e90\u63d0\u4f9b\u8005\u540d\u7a31>]\n\t[-destprovidername <\u76ee\u6a19\u63d0\u4f9b\u8005\u540d\u7a31>]"}, - {"\t [-srcalias [-destalias ]", -"\t[-srcalias <\u4f86\u6e90\u5225\u540d> [-destalias <\u76ee\u6a19\u5225\u540d>]"}, - {"\t [-srckeypass ] [-destkeypass ]]", -"\t[-srckeypass <\u4f86\u6e90\u4e3b\u5bc6\u78bc>] [-destkeypass <\u76ee\u6a19\u4e3b\u5bc6\u78bc>]]"}, - {"\t [-noprompt]", "\t[-noprompt]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-changealias [-v] [-protected] -alias -destalias ", -"-changealias [-v] [-protected] -alias <\u5225\u540d> -destalias <\u76ee\u6a19\u5225\u540d>"}, - {"\t [-keypass ]", "\t [-keypass <\u4e3b\u5bc6\u78bc>]"}, - - //{"-keyclone [-v] [-protected]", - // "-keyclone [-v] [-protected]"}, - //{"\t [-alias ] -dest ", - // "\t [-alias <\u5225\u540d>] -dest <\u76ee\u6a19\u5225\u540d>"}, - //{"\t [-keypass ] [-new ]", - // "\t [-keypass <\u4e3b\u5bc6\u78bc>] [-new <\u65b0\u4e3b\u5bc6\u78bc>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-keypasswd [-v] [-alias ]", - "-keypasswd [-v] [-alias <\u5225\u540d>]"}, - {"\t [-keypass ] [-new ]", - "\t [-keypass <\u820a\u4e3b\u5bc6\u78bc>] [-new <\u65b0\u4e3b\u5bc6\u78bc>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-list [-v | -rfc] [-protected]", - "-list [-v | -rfc] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\u5225\u540d>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-printcert [-v] [-file ]", - "-printcert [-v] [-file <\u8a8d\u8b49\u6a94\u6848>]"}, - - //{"-selfcert [-v] [-protected]", - // "-selfcert [-v] [-protected]"}, - {"\t [-alias ]", "\t [-alias <\u5225\u540d>]"}, - //{"\t [-dname ] [-validity ]", - // "\t [-dname <\u7db2\u57df\u540d\u7a31>] [-validity <\u6709\u6548\u5929\u6578>]"}, - //{"\t [-keypass ] [-sigalg ]", - // "\t [-keypass <\u4e3b\u5bc6\u78bc>] [-sigalg <\u7c3d\u7ae0\u6f14\u7b97\u6cd5>]"}, - /** rest is same as -certreq starting from -keystore **/ - - {"-storepasswd [-v] [-new ]", - "-storepasswd [-v] [-new <\u65b0\u5132\u5b58\u5eab\u5bc6\u78bc>]"}, - /** rest is same as -certreq starting from -keystore **/ + {"Extensions.", "\u64F4\u5145\u5957\u4EF6: "}, + {".Empty.value.", "(\u7A7A\u767D\u503C)"}, + {"Extension.Request.", "\u64F4\u5145\u5957\u4EF6\u8981\u6C42:"}, + {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.", + "PKCS #10 \u6191\u8B49\u8981\u6C42 (\u7248\u672C 1.0)\n\u4E3B\u9AD4: %s\n\u516C\u7528\u91D1\u9470: %s \u683C\u5F0F %s \u91D1\u9470\n"}, + {"Unknown.keyUsage.type.", "\u4E0D\u660E\u7684 keyUsage \u985E\u578B: "}, + {"Unknown.extendedkeyUsage.type.", "\u4E0D\u660E\u7684 extendedkeyUsage \u985E\u578B: "}, + {"Unknown.AccessDescription.type.", "\u4E0D\u660E\u7684 AccessDescription \u985E\u578B: "}, + {"Unrecognized.GeneralName.type.", "\u7121\u6CD5\u8FA8\u8B58\u7684 GeneralName \u985E\u578B: "}, + {"This.extension.cannot.be.marked.as.critical.", + "\u6B64\u64F4\u5145\u5957\u4EF6\u7121\u6CD5\u6A19\u793A\u70BA\u95DC\u9375\u3002"}, + {"Odd.number.of.hex.digits.found.", "\u627E\u5230\u5341\u516D\u9032\u4F4D\u6578\u5B57\u7684\u5947\u6578: "}, + {"Unknown.extension.type.", "\u4E0D\u660E\u7684\u64F4\u5145\u5957\u4EF6\u985E\u578B: "}, + {"command.{0}.is.ambiguous.", "\u547D\u4EE4 {0} \u4E0D\u660E\u78BA:"}, // policytool - {"Warning: A public key for alias 'signers[i]' does not exist. Make sure a KeyStore is properly configured.", - "\u8b66\u544a\ufe30\u5225\u540d {0} \u7684\u516c\u958b\u91d1\u9470\u4e0d\u5b58\u5728\u3002\u8acb\u78ba\u5b9a\u91d1\u9470\u5132\u5b58\u5eab\u914d\u7f6e\u6b63\u78ba\u3002"}, - {"Warning: Class not found: class", "\u8b66\u544a\ufe30\u627e\u4e0d\u5230\u985e\u5225 {0}"}, - {"Warning: Invalid argument(s) for constructor: arg", - "\u8b66\u544a\ufe30\u7121\u6548\u7684\u5efa\u69cb\u5b50\u5f15\u6578\uff1a{0}"}, - {"Illegal Principal Type: type", "\u975e\u6cd5\u7684\u4e3b\u9ad4\u985e\u578b\ufe30{0}"}, - {"Illegal option: option", "\u975e\u6cd5\u7684\u9078\u9805\uff1a{0}"}, - {"Usage: policytool [options]", "\u7528\u6cd5\uff1a policytool [\u9078\u9805]"}, - {" [-file ] policy file location", - " [-file ] \u898f\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", "\u96e2\u958b"}, - {"Add Policy Entry", "\u65b0\u589e\u898f\u5247\u9805\u76ee"}, - {"Edit Policy Entry", "\u7de8\u8f2f\u898f\u5247\u9805\u76ee"}, - {"Remove Policy Entry", "\u79fb\u9664\u898f\u5247\u9805\u76ee"}, - {"Edit", "\u7de8\u8f2f"}, - {"Retain", "\u4fdd\u7559"}, + {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.", + "\u8B66\u544A: \u5225\u540D {0} \u7684\u516C\u958B\u91D1\u9470\u4E0D\u5B58\u5728\u3002\u8ACB\u78BA\u5B9A\u91D1\u9470\u5132\u5B58\u5EAB\u914D\u7F6E\u6B63\u78BA\u3002"}, + {"Warning.Class.not.found.class", "\u8B66\u544A: \u627E\u4E0D\u5230\u985E\u5225 {0}"}, + {"Warning.Invalid.argument.s.for.constructor.arg", + "\u8B66\u544A: \u7121\u6548\u7684\u5EFA\u69CB\u5B50\u5F15\u6578: {0}"}, + {"Illegal.Principal.Type.type", "\u7121\u6548\u7684 Principal \u985E\u578B: {0}"}, + {"Illegal.option.option", "\u7121\u6548\u7684\u9078\u9805: {0}"}, + {"Usage.policytool.options.", "\u7528\u6CD5: policytool [options]"}, + {".file.file.policy.file.location", + " [-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"}, + {"Retain", "\u4FDD\u7559"}, - {"Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name.", - "Warning: File name may include escaped backslash characters. " + - "It is not necessary to escape backslash characters " + - "(the tool escapes characters as necessary when writing " + - "the policy contents to the persistent store).\n\n" + - "Click on Retain to retain the entered name, or click on " + - "Edit to edit the name."}, + {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes", + "\u8B66\u544A: \u6A94\u6848\u540D\u7A31\u5305\u542B\u9041\u96E2\u53CD\u659C\u7DDA\u5B57\u5143\u3002\u4E0D\u9700\u8981\u9041\u96E2\u53CD\u659C\u7DDA\u5B57\u5143 (\u64B0\u5BEB\u539F\u5247\u5167\u5BB9\u81F3\u6C38\u4E45\u5B58\u653E\u5340\u6642\u9700\u8981\u5DE5\u5177\u9041\u96E2\u5B57\u5143)\u3002\n\n\u6309\u4E00\u4E0B\u300C\u4FDD\u7559\u300D\u4EE5\u4FDD\u7559\u8F38\u5165\u7684\u540D\u7A31\uFF0C\u6216\u6309\u4E00\u4E0B\u300C\u7DE8\u8F2F\u300D\u4EE5\u7DE8\u8F2F\u540D\u7A31\u3002"}, - {"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"}, - {"Policy File:", "\u898f\u5247\u6a94\u6848\uff1a"}, - {"Could not open policy file: policyFile: e.toString()", - "\u7121\u6cd5\u958b\u555f\u7b56\u7565\u6a94\u6848\uff1a{0}\uff1a{1}"}, - {"Policy Tool", "\u898f\u5247\u5de5\u5177"}, - {"Errors have occurred while opening the policy configuration. View the Warning Log for more information.", - "\u958b\u555f\u898f\u5247\u8a18\u7f6e\u6642\u767c\u751f\u932f\u8aa4\u3002 \u8acb\u6aa2\u8996\u8b66\u544a\u8a18\u9304\u4ee5\u53d6\u5f97\u66f4\u591a\u7684\u8cc7\u8a0a"}, - {"Error", "\u932f\u8aa4"}, - {"OK", "\u78ba\u8a8d"}, - {"Status", "\u72c0\u614b"}, - {"Warning", "\u8b66\u544a"}, - {"Permission: ", - "\u8a31\u53ef\uff1a "}, - {"Principal Type:", "Principal \u985e\u578b\uff1a"}, - {"Principal Name:", "Principal \u540d\u7a31\uff1a"}, - {"Target Name: ", - "\u76ee\u6a19\u540d\u7a31\uff1a "}, - {"Actions: ", - "\u52d5\u4f5c\uff1a "}, - {"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:", "Principals\uff1a"}, - {" Add Permission", " \u65b0\u589e\u8a31\u53ef\u6b0a"}, - {" Edit Permission", " \u7de8\u8f2f\u8a31\u53ef\u6b0a"}, - {"Remove Permission", "\u79fb\u9664\u8a31\u53ef\u6b0a"}, - {"Done", "\u5b8c\u6210"}, - {"KeyStore URL:", "\u91d1\u9470\u5132\u5b58\u5eab URL\uff1a"}, - {"KeyStore Type:", "\u91d1\u9470\u5132\u5b58\u5eab\u985e\u578b\ufe30"}, - {"KeyStore Provider:", "\u91d1\u9470\u5132\u5b58\u5eab\u63d0\u4f9b\u8005\ufe30"}, - {"KeyStore Password URL:", "\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc URL\uff1a"}, - {"Principals", "Principals"}, - {" Edit Principal:", " \u7de8\u8f2f Principal\uff1a"}, - {" Add New Principal:", " \u52a0\u5165\u65b0 Principal\uff1a"}, - {"Permissions", "\u8a31\u53ef\u6b0a"}, - {" Edit Permission:", " \u7de8\u8f2f\u8a31\u53ef\u6b0a"}, - {" Add New Permission:", " \u52a0\u5165\u65b0\u7684\u8a31\u53ef\u6b0a"}, - {"Signed By:", "\u7c3d\u7f72\u4eba\uff1a"}, - {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name", - "\u6c92\u6709\u901a\u914d\u7b26\u865f\u540d\u7a31\uff0c\u7121\u6cd5\u6307\u5b9a\u542b\u6709\u901a\u914d\u7b26\u865f\u985e\u5225\u7684 Principal"}, - {"Cannot Specify Principal without a Name", - "\u6c92\u6709\u540d\u7a31\uff0c\u7121\u6cd5\u6307\u5b9a Principal"}, - {"Permission and Target Name must have a value", - "\u8a31\u53ef\u6b0a\u53ca\u76ee\u6a19\u5fc5\u9808\u6709\u4e00\u500b\u503c\u3002"}, - {"Remove this Policy Entry?", "\u79fb\u9664\u9019\u500b\u898f\u5247\u9805\u76ee\uff1f"}, - {"Overwrite File", "\u8986\u5beb\u6a94\u6848"}, - {"Policy successfully written to filename", - "\u898f\u5247\u6210\u529f\u5beb\u81f3 {0}"}, - {"null filename", "\u7121\u6548\u7684\u6a94\u540d"}, - {"Save changes?", "\u5132\u5b58\u8b8a\u66f4\uff1f"}, - {"Yes", "\u662f"}, + {"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"}, + {"Policy.File.", "\u539F\u5247\u6A94\u6848: "}, + {"Could.not.open.policy.file.policyFile.e.toString.", + "\u7121\u6CD5\u958B\u555F\u539F\u5247\u6A94\u6848: {0}: {1}"}, + {"Policy.Tool", "\u539F\u5247\u5DE5\u5177"}, + {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.", + "\u958B\u555F\u539F\u5247\u8A18\u7F6E\u6642\u767C\u751F\u932F\u8AA4\u3002\u8ACB\u6AA2\u8996\u8B66\u544A\u8A18\u9304\u4EE5\u53D6\u5F97\u66F4\u591A\u7684\u8CC7\u8A0A"}, + {"Error", "\u932F\u8AA4"}, + {"OK", "\u78BA\u5B9A"}, + {"Status", "\u72C0\u614B"}, + {"Warning", "\u8B66\u544A"}, + {"Permission.", + "\u6B0A\u9650: "}, + {"Principal.Type.", "Principal \u985E\u578B: "}, + {"Principal.Name.", "Principal \u540D\u7A31: "}, + {"Target.Name.", + "\u76EE\u6A19\u540D\u7A31: "}, + {"Actions.", + "\u52D5\u4F5C: "}, + {"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"}, + {"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: "}, + {"Principals", "Principal"}, + {".Edit.Principal.", " \u7DE8\u8F2F Principal: "}, + {".Add.New.Principal.", " \u65B0\u589E Principal: "}, + {"Permissions", "\u6B0A\u9650"}, + {".Edit.Permission.", " \u7DE8\u8F2F\u6B0A\u9650:"}, + {".Add.New.Permission.", " \u65B0\u589E\u6B0A\u9650:"}, + {"Signed.By.", "\u7C3D\u7F72\u4EBA: "}, + {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name", + "\u6C92\u6709\u842C\u7528\u5B57\u5143\u540D\u7A31\uFF0C\u7121\u6CD5\u6307\u5B9A\u542B\u6709\u842C\u7528\u5B57\u5143\u985E\u5225\u7684 Principal"}, + {"Cannot.Specify.Principal.without.a.Name", + "\u6C92\u6709\u540D\u7A31\uFF0C\u7121\u6CD5\u6307\u5B9A Principal"}, + {"Permission.and.Target.Name.must.have.a.value", + "\u6B0A\u9650\u53CA\u76EE\u6A19\u540D\u7A31\u5FC5\u9808\u6709\u4E00\u500B\u503C\u3002"}, + {"Remove.this.Policy.Entry.", "\u79FB\u9664\u9019\u500B\u539F\u5247\u9805\u76EE\uFF1F"}, + {"Overwrite.File", "\u8986\u5BEB\u6A94\u6848"}, + {"Policy.successfully.written.to.filename", + "\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"}, - {"Policy Entry", "\u898f\u5247\u9805\u76ee"}, - {"Save Changes", "\u5132\u5b58\u8b8a\u66f4"}, - {"No Policy Entry selected", "\u6c92\u6709\u9078\u53d6\u898f\u5247\u9805\u76ee"}, - {"Unable to open KeyStore: ex.toString()", - "\u7121\u6cd5\u958b\u555f\u91d1\u9470\u5132\u5b58\u5eab\uff1a{0}"}, - {"No principal selected", "\u672a\u9078\u53d6 Principal"}, - {"No permission selected", "\u6c92\u6709\u9078\u53d6\u8a31\u53ef\u6b0a"}, - {"name", "\u540d\u7a31"}, - {"configuration type", "\u914d\u7f6e\u985e\u578b"}, - {"environment variable name", "\u74b0\u5883\u8b8a\u6578\u540d\u7a31"}, - {"library name", "\u7a0b\u5f0f\u5eab\u540d\u7a31"}, - {"package name", "\u5957\u88dd\u8edf\u9ad4\u540d\u7a31"}, - {"policy type", "\u7b56\u7565\u985e\u578b"}, - {"property name", "\u5c6c\u6027\u540d\u7a31"}, - {"provider name", "\u63d0\u4f9b\u8005\u540d\u7a31"}, - {"Principal List", "\u4e3b\u9ad4\u6e05\u55ae"}, - {"Permission List", "\u6b0a\u9650\u6e05\u55ae"}, - {"Code Base", "\u4ee3\u78bc\u57fa\u6e96"}, - {"KeyStore U R L:", "\u91d1\u9470\u5132\u5b58\u5eab U R L\uff1a"}, - {"KeyStore Password U R L:", "\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc U R L\uff1a"}, + {"Policy.Entry", "\u539F\u5247\u9805\u76EE"}, + {"Save.Changes", "\u5132\u5B58\u8B8A\u66F4"}, + {"No.Policy.Entry.selected", "\u6C92\u6709\u9078\u53D6\u539F\u5247\u9805\u76EE"}, + {"Unable.to.open.KeyStore.ex.toString.", + "\u7121\u6CD5\u958B\u555F\u91D1\u9470\u5132\u5B58\u5EAB: {0}"}, + {"No.principal.selected", "\u672A\u9078\u53D6 Principal"}, + {"No.permission.selected", "\u6C92\u6709\u9078\u53D6\u6B0A\u9650"}, + {"name", "\u540D\u7A31"}, + {"configuration.type", "\u7D44\u614B\u985E\u578B"}, + {"environment.variable.name", "\u74B0\u5883\u8B8A\u6578\u540D\u7A31"}, + {"library.name", "\u7A0B\u5F0F\u5EAB\u540D\u7A31"}, + {"package.name", "\u5957\u88DD\u7A0B\u5F0F\u540D\u7A31"}, + {"policy.type", "\u539F\u5247\u985E\u578B"}, + {"property.name", "\u5C6C\u6027\u540D\u7A31"}, + {"Principal.List", "Principal \u6E05\u55AE"}, + {"Permission.List", "\u6B0A\u9650\u6E05\u55AE"}, + {"Code.Base", "\u4EE3\u78BC\u57FA\u6E96"}, + {"KeyStore.U.R.L.", "\u91D1\u9470\u5132\u5B58\u5EAB URL:"}, + {"KeyStore.Password.U.R.L.", "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC URL:"}, // javax.security.auth.PrivateCredentialPermission - {"invalid null input(s)", "\u7121\u6548\u7a7a\u8f38\u5165"}, - {"actions can only be 'read'", "\u52d5\u4f5c\u53ea\u80fd\u88ab\u8b80\u53d6'"}, - {"permission name [name] syntax invalid: ", - "\u8a31\u53ef\u6b0a\u540d\u7a31 [{0}] \u662f\u7121\u6548\u7684\u8a9e\u6cd5\uff1a "}, - {"Credential Class not followed by a Principal Class and Name", - "\u8a8d\u8b49\u7b49\u7d1a\u672a\u63a5\u5728 Principal \u985e\u5225\u53ca\u540d\u7a31\u4e4b\u5f8c"}, - {"Principal Class not followed by a Principal Name", - "Principal \u985e\u5225\u672a\u63a5\u5728 Principal \u540d\u7a31\u4e4b\u5f8c"}, - {"Principal Name must be surrounded by quotes", - "Principal \u540d\u7a31\u5fc5\u9808\u4ee5\u5f15\u865f\u5708\u4f4f"}, - {"Principal Name missing end quote", - "Principal \u540d\u7a31\u7f3a\u5c11\u4e0b\u5f15\u865f"}, - {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value", - "\u5982\u679c Principal \u540d\u7a31\u4e0d\u662f\u4e00\u500b\u901a\u914d\u7b26\u865f (*) \u503c\uff0c\u90a3\u9ebc PrivateCredentialPermission Principal \u985e\u5225\u5c31\u4e0d\u6703\u662f\u4e00\u500b\u901a\u914d\u7b26\u865f (*) \u503c"}, - {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name", - "CredOwner:\n\tPrincipal \u985e\u5225 = {0}\n\tPrincipal \u540d\u7a31 = {1}"}, + {"invalid.null.input.s.", "\u7121\u6548\u7A7A\u503C\u8F38\u5165"}, + {"actions.can.only.be.read.", "\u52D5\u4F5C\u53EA\u80FD\u88AB\u300C\u8B80\u53D6\u300D"}, + {"permission.name.name.syntax.invalid.", + "\u6B0A\u9650\u540D\u7A31 [{0}] \u662F\u7121\u6548\u7684\u8A9E\u6CD5: "}, + {"Credential.Class.not.followed.by.a.Principal.Class.and.Name", + "Credential \u985E\u5225\u5F8C\u9762\u4E0D\u662F Principal \u985E\u5225\u53CA\u540D\u7A31"}, + {"Principal.Class.not.followed.by.a.Principal.Name", + "Principal \u985E\u5225\u5F8C\u9762\u4E0D\u662F Principal \u540D\u7A31"}, + {"Principal.Name.must.be.surrounded.by.quotes", + "Principal \u540D\u7A31\u5FC5\u9808\u4EE5\u5F15\u865F\u5708\u4F4F"}, + {"Principal.Name.missing.end.quote", + "Principal \u540D\u7A31\u7F3A\u5C11\u4E0B\u5F15\u865F"}, + {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value", + "\u5982\u679C Principal \u540D\u7A31\u4E0D\u662F\u4E00\u500B\u842C\u7528\u5B57\u5143 (*) \u503C\uFF0C\u90A3\u9EBC PrivateCredentialPermission Principal \u985E\u5225\u5C31\u4E0D\u80FD\u662F\u842C\u7528\u5B57\u5143 (*) \u503C"}, + {"CredOwner.Principal.Class.class.Principal.Name.name", + "CredOwner:\n\tPrincipal \u985E\u5225 = {0}\n\tPrincipal \u540D\u7A31 = {1}"}, // javax.security.auth.x500 - {"provided null name", "\u63d0\u4f9b\u7a7a\u540d"}, - {"provided null keyword map", "\u63d0\u4f9b\u7a7a\u7684\u95dc\u9375\u5b57\u5c0d\u6620"}, - {"provided null OID map", "\u63d0\u4f9b\u7a7a\u7684 OID \u5c0d\u6620"}, + {"provided.null.name", "\u63D0\u4F9B\u7A7A\u503C\u540D\u7A31"}, + {"provided.null.keyword.map", "\u63D0\u4F9B\u7A7A\u503C\u95DC\u9375\u5B57\u5C0D\u6620"}, + {"provided.null.OID.map", "\u63D0\u4F9B\u7A7A\u503C OID \u5C0D\u6620"}, // javax.security.auth.Subject - {"invalid null AccessControlContext provided", - "\u63d0\u4f9b\u7121\u6548\u7684\u7a7a AccessControlContext"}, - {"invalid null action provided", "\u63d0\u4f9b\u7121\u6548\u7684\u7a7a\u52d5\u4f5c"}, - {"invalid null Class provided", "\u63d0\u4f9b\u7121\u6548\u7684\u7a7a\u985e\u5225"}, - {"Subject:\n", "\u4e3b\u984c\uff1a\n"}, - {"\tPrincipal: ", "\tPrincipal: "}, - {"\tPublic Credential: ", "\t\u516c\u7528\u8a8d\u8b49 "}, - {"\tPrivate Credentials inaccessible\n", - "\t\u79c1\u4eba\u8a8d\u8b49\u7121\u6cd5\u9032\u5165\n"}, - {"\tPrivate Credential: ", "\t\u79c1\u4eba\u6388\u6b0a "}, - {"\tPrivate Credential inaccessible\n", - "\t\u79c1\u4eba\u8a8d\u8b49\u7121\u6cd5\u9032\u5165\n"}, - {"Subject is read-only", "\u4e3b\u984c\u70ba\u552f\u8b80"}, - {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set", - "\u8a66\u5716\u65b0\u589e\u4e00\u500b\u975e java.security.Principal \u6848\u4f8b\u7684\u7269\u4ef6\u81f3\u4e3b\u984c\u7684 Principal \u7fa4\u4e2d"}, - {"attempting to add an object which is not an instance of class", - "\u8a66\u5716\u65b0\u589e\u4e00\u500b\u975e {0} \u6848\u4f8b\u7684\u7269\u4ef6"}, + {"invalid.null.AccessControlContext.provided", + "\u63D0\u4F9B\u7121\u6548\u7684\u7A7A\u503C AccessControlContext"}, + {"invalid.null.action.provided", "\u63D0\u4F9B\u7121\u6548\u7684\u7A7A\u503C\u52D5\u4F5C"}, + {"invalid.null.Class.provided", "\u63D0\u4F9B\u7121\u6548\u7684\u7A7A\u503C\u985E\u5225"}, + {"Subject.", "\u4E3B\u984C:\n"}, + {".Principal.", "\tPrincipal: "}, + {".Public.Credential.", "\t\u516C\u7528\u8B49\u660E\u8CC7\u6599: "}, + {".Private.Credentials.inaccessible.", + "\t\u79C1\u4EBA\u8B49\u660E\u8CC7\u6599\u7121\u6CD5\u5B58\u53D6\n"}, + {".Private.Credential.", "\t\u79C1\u4EBA\u8B49\u660E\u8CC7\u6599: "}, + {".Private.Credential.inaccessible.", + "\t\u79C1\u4EBA\u8B49\u660E\u8CC7\u6599\u7121\u6CD5\u5B58\u53D6\n"}, + {"Subject.is.read.only", "\u4E3B\u984C\u70BA\u552F\u8B80"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set", + "\u8A66\u5716\u65B0\u589E\u4E00\u500B\u975E java.security.Principal \u57F7\u884C\u8655\u7406\u7684\u7269\u4EF6\u81F3\u4E3B\u984C\u7684 Principal \u7FA4\u4E2D"}, + {"attempting.to.add.an.object.which.is.not.an.instance.of.class", + "\u8A66\u5716\u65B0\u589E\u4E00\u500B\u975E {0} \u57F7\u884C\u8655\u7406\u7684\u7269\u4EF6"}, // javax.security.auth.login.AppConfigurationEntry - {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "}, + {"LoginModuleControlFlag.", "LoginModuleControlFlag: "}, // javax.security.auth.login.LoginContext - {"Invalid null input: name", "\u7121\u6548\u7a7a\u8f38\u5165\uff1a \u540d\u7a31"}, - {"No LoginModules configured for name", - "\u7121\u91dd\u5c0d {0} \u914d\u7f6e\u7684 LoginModules"}, - {"invalid null Subject provided", "\u63d0\u4f9b\u7121\u6548\u7a7a\u4e3b\u984c"}, - {"invalid null CallbackHandler provided", - "\u63d0\u4f9b\u7121\u6548\u7a7a CallbackHandler"}, - {"null subject - logout called before login", - "\u7a7a\u4e3b\u984c - \u5728\u767b\u5165\u4e4b\u524d\u5373\u547c\u53eb\u767b\u51fa"}, - {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor", - "\u7121\u6cd5\u5be6\u5217\u5316 LoginModule\uff0c{0}\uff0c\u56e0\u70ba\u5b83\u4e26\u672a\u63d0\u4f9b\u4e00\u500b\u975e\u5f15\u6578\u7684\u69cb\u9020\u51fd\u6578"}, - {"unable to instantiate LoginModule", - "\u7121\u6cd5\u5be6\u4f8b\u5316 LoginModule"}, - {"unable to instantiate LoginModule: ", - "\u7121\u6cd5\u5275\u8a2d LoginModule\uff1a"}, - {"unable to find LoginModule class: ", - "\u7121\u6cd5\u627e\u5230 LoginModule \u985e\u5225\uff1a "}, - {"unable to access LoginModule: ", - "\u7121\u6cd5\u5b58\u53d6 LoginModule: "}, - {"Login Failure: all modules ignored", - "\u767b\u5165\u5931\u6557\uff1a \u5ffd\u7565\u6240\u6709\u6a21\u7d44"}, + {"Invalid.null.input.name", "\u7121\u6548\u7A7A\u503C\u8F38\u5165: \u540D\u7A31"}, + {"No.LoginModules.configured.for.name", + "\u7121\u91DD\u5C0D {0} \u914D\u7F6E\u7684 LoginModules"}, + {"invalid.null.Subject.provided", "\u63D0\u4F9B\u7121\u6548\u7A7A\u503C\u4E3B\u984C"}, + {"invalid.null.CallbackHandler.provided", + "\u63D0\u4F9B\u7121\u6548\u7A7A\u503C CallbackHandler"}, + {"null.subject.logout.called.before.login", + "\u7A7A\u503C\u4E3B\u984C - \u5728\u767B\u5165\u4E4B\u524D\u5373\u547C\u53EB\u767B\u51FA"}, + {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor", + "\u7121\u6CD5\u5275\u8A2D LoginModule\uFF0C{0}\uFF0C\u56E0\u70BA\u5B83\u4E26\u672A\u63D0\u4F9B\u975E\u5F15\u6578\u7684\u5EFA\u69CB\u5B50"}, + {"unable.to.instantiate.LoginModule", + "\u7121\u6CD5\u5EFA\u7ACB LoginModule"}, + {"unable.to.instantiate.LoginModule.", + "\u7121\u6CD5\u5EFA\u7ACB LoginModule: "}, + {"unable.to.find.LoginModule.class.", + "\u627E\u4E0D\u5230 LoginModule \u985E\u5225: "}, + {"unable.to.access.LoginModule.", + "\u7121\u6CD5\u5B58\u53D6 LoginModule: "}, + {"Login.Failure.all.modules.ignored", + "\u767B\u5165\u5931\u6557: \u5FFD\u7565\u6240\u6709\u6A21\u7D44"}, // sun.security.provider.PolicyFile - {"java.security.policy: error parsing policy:\n\tmessage", - "java.security.policy: \u89e3\u6790\u932f\u8aa4 {0}\uff1a\n\t{1}"}, - {"java.security.policy: error adding Permission, perm:\n\tmessage", - "java.security.policy: \u65b0\u589e\u8a31\u53ef\u6b0a\u932f\u8aa4 {0}\uff1a\n\t{1}"}, - {"java.security.policy: error adding Entry:\n\tmessage", - "java.security.policy: \u65b0\u589e\u9805\u76ee\u932f\u8aa4\uff1a\n\t{0}"}, - {"alias name not provided (pe.name)", "\u5225\u540d\u540d\u7a31 ({0}) \u672a\u63d0\u4f9b"}, - {"unable to perform substitution on alias, suffix", - "\u7121\u6cd5\u5c0d\u5225\u540d\u57f7\u884c\u66ff\u63db\uff0c{0}"}, - {"substitution value, prefix, unsupported", - "\u4e0d\u652f\u63f4\u7684\u66ff\u63db\u503c\uff0c{0}"}, - {"(", "("}, - {")", ")"}, - {"type can't be null","\u4e0d\u80fd\u70ba\u7a7a\u8f38\u5165"}, + {"java.security.policy.error.parsing.policy.message", + "java.security.policy: \u5256\u6790\u932F\u8AA4 {0}: \n\t{1}"}, + {"java.security.policy.error.adding.Permission.perm.message", + "java.security.policy: \u65B0\u589E\u6B0A\u9650\u932F\u8AA4 {0}: \n\t{1}"}, + {"java.security.policy.error.adding.Entry.message", + "java.security.policy: \u65B0\u589E\u9805\u76EE\u932F\u8AA4: \n\t{0}"}, + {"alias.name.not.provided.pe.name.", "\u672A\u63D0\u4F9B\u5225\u540D\u540D\u7A31 ({0})"}, + {"unable.to.perform.substitution.on.alias.suffix", + "\u7121\u6CD5\u5C0D\u5225\u540D\u57F7\u884C\u66FF\u63DB\uFF0C{0}"}, + {"substitution.value.prefix.unsupported", + "\u4E0D\u652F\u63F4\u7684\u66FF\u63DB\u503C\uFF0C{0}"}, + {"LPARAM", "("}, + {"RPARAM", ")"}, + {"type.can.t.be.null","\u8F38\u5165\u4E0D\u80FD\u70BA\u7A7A\u503C"}, // sun.security.provider.PolicyParser - {"keystorePasswordURL can not be specified without also specifying keystore", - "\u6307\u5b9a keystorePasswordURL \u9700\u8981\u540c\u6642\u6307\u5b9a keystore"}, - {"expected keystore type", "\u9810\u671f\u7684 keystore \u985e\u578b"}, - {"expected keystore provider", "\u9810\u671f\u7684 keystore \u63d0\u4f9b\u8005"}, - {"multiple Codebase expressions", - "\u591a\u52d5 Codebase \u8868\u793a\u5f0f"}, - {"multiple SignedBy expressions","\u591a\u91cd SignedBy \u8868\u793a\u5f0f"}, - {"SignedBy has empty alias","SignedBy \u6709\u7a7a\u5225\u540d"}, - {"can not specify Principal with a wildcard class without a wildcard name", - "\u6c92\u6709\u901a\u914d\u7b26\u865f\u540d\u7a31\uff0c\u7121\u6cd5\u6307\u5b9a\u542b\u6709\u901a\u914d\u7b26\u865f\u985e\u5225\u7684 Principal"}, - {"expected codeBase or SignedBy or Principal", - "\u9810\u671f\u7684 codeBase \u6216 SignedBy \u6216 Principal"}, - {"expected permission entry", "\u9810\u671f\u7684\u8a31\u53ef\u6b0a\u9805\u76ee"}, - {"number ", "\u865f\u78bc "}, - {"expected [expect], read [end of file]", - "\u9810\u671f\u7684 [{0}], \u8b80\u53d6 [end of file]"}, - {"expected [;], read [end of file]", - "\u9810\u671f\u7684 [;], \u8b80\u53d6 [end of file]"}, - {"line number: msg", "\u884c {0}\uff1a {1}"}, - {"line number: expected [expect], found [actual]", - "\u884c {0}\uff1a \u9810\u671f\u7684 [{1}]\uff0c\u767c\u73fe [{2}]"}, - {"null principalClass or principalName", - "\u7a7a principalClass \u6216 principalName"}, + {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore", + "\u6307\u5B9A keystorePasswordURL \u9700\u8981\u540C\u6642\u6307\u5B9A\u91D1\u9470\u5132\u5B58\u5EAB"}, + {"expected.keystore.type", "\u9810\u671F\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"}, + {"expected.keystore.provider", "\u9810\u671F\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005"}, + {"multiple.Codebase.expressions", + "\u591A\u91CD Codebase \u8868\u793A\u5F0F"}, + {"multiple.SignedBy.expressions","\u591A\u91CD SignedBy \u8868\u793A\u5F0F"}, + {"SignedBy.has.empty.alias","SignedBy \u6709\u7A7A\u5225\u540D"}, + {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name", + "\u6C92\u6709\u842C\u7528\u5B57\u5143\u540D\u7A31\uFF0C\u7121\u6CD5\u6307\u5B9A\u542B\u6709\u842C\u7528\u5B57\u5143\u985E\u5225\u7684 Principal"}, + {"expected.codeBase.or.SignedBy.or.Principal", + "\u9810\u671F\u7684 codeBase \u6216 SignedBy \u6216 Principal"}, + {"expected.permission.entry", "\u9810\u671F\u7684\u6B0A\u9650\u9805\u76EE"}, + {"number.", "\u865F\u78BC "}, + {"expected.expect.read.end.of.file.", + "\u9810\u671F\u7684 [{0}], \u8B80\u53D6 [end of file]"}, + {"expected.read.end.of.file.", + "\u9810\u671F\u7684 [;], \u8B80\u53D6 [end of file]"}, + {"line.number.msg", "\u884C {0}: {1}"}, + {"line.number.expected.expect.found.actual.", + "\u884C {0}: \u9810\u671F\u7684 [{1}]\uFF0C\u767C\u73FE [{2}]"}, + {"null.principalClass.or.principalName", + "\u7A7A\u503C principalClass \u6216 principalName"}, // sun.security.pkcs11.SunPKCS11 - {"PKCS11 Token [providerName] Password: ", - "PKCS11 \u8a18\u865f [{0}] \u5bc6\u78bc\uff1a "}, + {"PKCS11.Token.providerName.Password.", + "PKCS11 \u8A18\u865F [{0}] \u5BC6\u78BC: "}, /* --- DEPRECATED --- */ // javax.security.auth.Policy - {"unable to instantiate Subject-based policy", - "\u7121\u6cd5\u5275\u8a2d\u57fa\u65bc\u4e3b\u9ad4\u7684\u7b56\u7565"} + {"unable.to.instantiate.Subject.based.policy", + "\u7121\u6CD5\u5EFA\u7ACB\u4E3B\u984C\u5F0F\u7684\u539F\u5247"} }; @@ -648,3 +670,4 @@ public class Resources_zh_TW extends java.util.ListResourceBundle { return contents; } } + diff --git a/jdk/src/share/classes/sun/security/validator/SimpleValidator.java b/jdk/src/share/classes/sun/security/validator/SimpleValidator.java index f825a4d6867..9ad04b8773e 100644 --- a/jdk/src/share/classes/sun/security/validator/SimpleValidator.java +++ b/jdk/src/share/classes/sun/security/validator/SimpleValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2011, 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 @@ -156,8 +156,8 @@ public final class SimpleValidator extends Validator { // check certificate algorithm try { - // Algorithm checker don't care about the unresolved critical - // extensions. + // Algorithm checker does not care about the unresolved + // critical extensions. defaultAlgChecker.check(cert, Collections.emptySet()); if (appAlgChecker != null) { appAlgChecker.check(cert, Collections.emptySet()); diff --git a/jdk/src/share/classes/sun/swing/AccumulativeRunnable.java b/jdk/src/share/classes/sun/swing/AccumulativeRunnable.java index 583352918e4..2988521f133 100644 --- a/jdk/src/share/classes/sun/swing/AccumulativeRunnable.java +++ b/jdk/src/share/classes/sun/swing/AccumulativeRunnable.java @@ -120,6 +120,7 @@ public abstract class AccumulativeRunnable implements Runnable { * {@code Runnable} for execution. * @param args the arguments to accumulate */ + @SafeVarargs public final synchronized void add(T... args) { boolean isSubmitted = true; if (arguments == null) { diff --git a/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java b/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java index fcc8717ec80..313ba7ecf26 100644 --- a/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java +++ b/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java @@ -120,6 +120,7 @@ public class WindowsPlacesBar extends JToolBar buttons[i].setForeground(fgColor); } buttons[i].setMargin(new Insets(3, 2, 1, 2)); + buttons[i].setFocusPainted(false); buttons[i].setIconTextGap(0); buttons[i].setHorizontalTextPosition(JToggleButton.CENTER); buttons[i].setVerticalTextPosition(JToggleButton.BOTTOM); diff --git a/jdk/src/share/classes/sun/tools/attach/HotSpotAttachProvider.java b/jdk/src/share/classes/sun/tools/attach/HotSpotAttachProvider.java index 313936db6ce..1511590abb7 100644 --- a/jdk/src/share/classes/sun/tools/attach/HotSpotAttachProvider.java +++ b/jdk/src/share/classes/sun/tools/attach/HotSpotAttachProvider.java @@ -138,7 +138,6 @@ public abstract class HotSpotAttachProvider extends AttachProvider { */ void testAttachable(String id) throws AttachNotSupportedException { MonitoredVm mvm = null; - boolean isKernelVM = false; try { VmIdentifier vmid = new VmIdentifier(id); MonitoredHost host = MonitoredHost.getMonitoredHost(vmid); @@ -148,7 +147,6 @@ public abstract class HotSpotAttachProvider extends AttachProvider { // it's attachable; so return false return; } - isKernelVM = MonitoredVmUtil.isKernelVM(mvm); } catch (Throwable t) { if (t instanceof ThreadDeath) { ThreadDeath td = (ThreadDeath)t; @@ -163,11 +161,8 @@ public abstract class HotSpotAttachProvider extends AttachProvider { } // we're sure it's not attachable; throw exception - if (isKernelVM) { - throw new AttachNotSupportedException("Kernel VM does not support the attach mechanism"); - } else { - throw new AttachNotSupportedException("The VM does not support the attach mechanism"); - } + throw new AttachNotSupportedException( + "The VM does not support the attach mechanism"); } diff --git a/jdk/src/share/classes/sun/tools/jar/Main.java b/jdk/src/share/classes/sun/tools/jar/Main.java index 3b8ea5b95b8..59c758f6cfc 100644 --- a/jdk/src/share/classes/sun/tools/jar/Main.java +++ b/jdk/src/share/classes/sun/tools/jar/Main.java @@ -27,6 +27,7 @@ package sun.tools.jar; import java.io.*; import java.nio.file.Path; +import java.nio.file.Files; import java.util.*; import java.util.zip.*; import java.util.jar.*; @@ -1017,17 +1018,17 @@ class Main { Path jarPath = jarFile.toPath(); Path tmpPath = createTempFileInSameDirectoryAs(jarFile).toPath(); try { - if (update(jarPath.newInputStream(), - tmpPath.newOutputStream(), + if (update(Files.newInputStream(jarPath), + Files.newOutputStream(tmpPath), null, index)) { try { - tmpPath.moveTo(jarPath, REPLACE_EXISTING); + Files.move(tmpPath, jarPath, REPLACE_EXISTING); } catch (IOException e) { throw new IOException(getMsg("error.write.file"), e); } } } finally { - tmpPath.deleteIfExists(); + Files.deleteIfExists(tmpPath); } } diff --git a/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties b/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties index 7400378b84f..d044d5a5eaa 100644 --- a/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties +++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2006, 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 @@ -23,69 +23,25 @@ # questions. # -error.cant.open=\ - \u00d6ffnen nicht m\u00f6glich: {0} -error.illegal.option=\ - Unzul\u00e4ssige Option: {0} -error.bad.option=\ - Eine der Optionen -{ctxu} muss angegeben werden. -error.bad.cflag=\ - Flag 'c' erfordert Angabe von Manifest oder Eingabedateien! -error.bad.uflag=\ - Flag 'u' erfordert Angabe von Manifest, Flag 'e' oder Eingabedateien! -error.bad.eflag=\ - Flag 'e' und Manifest mit dem Attribut 'Main-Class' k\u00f6nnen nicht zusammen angegeben\n\ - werden. -error.nosuch.fileordir=\ - {0} : Datei oder Verzeichnis existiert nicht. -error.write.file=\ - Fehler beim Schreiben in vorhandener JAR-Datei. -error.create.dir=\ - {0} : Verzeichnis konnte nicht erstellt werden. -error.incorrect.length=\ - Falsche L\u00e4nge bei der Verarbeitung von: {0} -out.added.manifest=\ - Manifest wurde hinzugef\u00fcgt. -out.update.manifest=\ - Manifest wurde aktualisiert. -out.ignore.entry=\ - Eintrag {0} wird ignoriert. -out.adding=\ - Hinzuf\u00fcgen von: {0} -out.deflated=\ - \ \(komprimiert {0} %) -out.stored=\ - \ \(gespeichert 0 %) -out.create=\ - \ \ \ \ \ erstellt: {0} -out.extracted=\ - \ \ \ extrahiert: {0} -out.inflated=\ - dekomprimiert: {0} -out.size=\ - \ \(ein = {0}) (aus = {1}) +error.cant.open=\u00D6ffnen nicht m\u00F6glich: {0} +error.illegal.option=Ung\u00FCltige Option: {0} +error.bad.option=Eine der Optionen -{ctxu} muss angegeben werden. +error.bad.cflag=Kennzeichen "c" erfordert Angabe von Manifest oder Eingabedateien. +error.bad.uflag=Kennzeichen "u" erfordert Angabe von Manifest, Kennzeichen "e" oder Eingabedateien. +error.bad.eflag=Kennzeichen "e" und Manifest mit dem Attribut "Main-Class" k\u00F6nnen nicht zusammen angegeben\nwerden. +error.nosuch.fileordir={0}: Datei oder Verzeichnis nicht vorhanden +error.write.file=Fehler beim Schreiben in vorhandener JAR-Datei +error.create.dir={0}: Verzeichnis konnte nicht erstellt werden +error.incorrect.length=Falsche L\u00E4nge bei der Verarbeitung: {0} +out.added.manifest=Manifest wurde hinzugef\u00FCgt +out.update.manifest=Manifest wurde aktualisiert +out.ignore.entry=Eintrag {0} wird ignoriert +out.adding={0} wird hinzugef\u00FCgt +out.deflated=({0} % verkleinert) +out.stored=(0 % gespeichert) +out.create=\ \ erstellt: {0} +out.extracted=extrahiert: {0} +out.inflated=\ \\vergr\u00F6\u00DFert: {0} +out.size=(ein = {0}) (aus = {1}) -usage=\ -Syntax: jar {ctxui}[vfm0Me] [jar-Datei] [Manifest-Datei] [Einstiegspunkt] [-C Verzeichnis] Dateien ...\n\ -Optionen:\n\ -\ \ -c Neues Archiv erstellen\n\ -\ \ -t Inhaltsverzeichnis f\u00fcr Archiv auflisten\n\ -\ \ -x Genannte (oder alle) Dateien aus Archiv extrahieren\n\ -\ \ -u Vorhandenes Archiv aktualisieren\n\ -\ \ -v Ausf\u00fchrliche Ausgabe f\u00fcr Standardausgabe erzeugen\n\ -\ \ -f Namen der Archivdatei angeben\n\ -\ \ -m Manifest-Information von angegebener Manifest-Datei einschlie\u00dfen\n\ -\ \ -e Geben Sie einen Anwendungs-Einstiegspunkt f\u00fcr die \n\ -\ \ in einer ausf\u00fchrbaren jar-Datei geb\u00fcndelte eigenst\u00e4ndige Anwendung an.\n\ -\ \ -0 Nur speichern (keine ZIP-Komprimierung)\n\ -\ \ -M Keine Manifest-Datei f\u00fcr die Eintr\u00e4ge erstellen\n\ -\ \ -i Index-Information f\u00fcr angegebene jar-Dateien erstellen\n\ -\ \ -C Zum angegebenen Verzeichnis wechseln und folgende Datei einschlie\u00dfen\n\ -Falls eine Datei ein Verzeichnis ist, wird es rekursiv verarbeitet.\n\ -Der Name der Manifest-Datei, der Name der Archivdatei und der Name des Einstiegspunkts werden \n\ -in derselben Reihenfolge wie die Flags 'm', 'f' und 'e' angegeben.\n\n\ -Beispiel 1: So archivieren Sie zwei Klassendateien in ein Archiv mit Namen classes.jar: \n\ -\ \ jar cvf classes.jar Foo.class Bar.class \n\ -Beispiel 2: Verwenden der vorhandenen Manifest-Datei 'mymanifest' und archivieren\n\ -\ \ aller Dateien im Verzeichnis foo/ in 'classes.jar': \n\ -\ \ jar cvfm classes.jar mymanifest -C foo/ .\n +usage=Verwendung: jar-Dateien {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] ...\nOptionen:\n\ \ -c Neues Archiv erstellen\n\ \ -t Inhaltsverzeichnis f\u00FCr Archiv auflisten\n\ \ -x Genannte (oder alle) Dateien aus Archiv extrahieren\n\ \ -u Vorhandenes Archiv aktualisieren\n\ \ -v Verbose-Ausgabe f\u00FCr Standardausgabe generieren\n\ \ -f Namen der Archivdatei angeben\n\ \ -m Manifest-Informationen von angegebener Manifest-Datei einschlie\u00DFen\n\ \ -e Anwendungs-Einstiegspunkt f\u00FCr die \n\ \ in einer ausf\u00FChrbaren JAR-Datei geb\u00FCndelte Standalone-Anwendung angeben\n\ \ -0 Nur speichern (keine ZIP-Komprimierung)\n\ \ -M Keine Manifest-Datei f\u00FCr die Eintr\u00E4ge erstellen\n\ \ -i Indexinformationen f\u00FCr angegebenen JAR-Dateien erstellen\n\ \ -C zum angegebenen Verzeichnis wechseln und folgende Datei einschlie\u00DFen\nFalls eine Datei ein Verzeichnis ist, wird dieses rekursiv verarbeitet.\nDer Name der Manifest-Datei, der Name der Archivdatei und der Name des Einstiegspunkts werden\nin derselben Reihenfolge wie die Kennzeichen "m", "f" und "e" angegeben.\n\nBeispiel 1: Archivieren Sie zwei Klassendateien in ein Archiv mit Namen "classes.jar": \n\ \ jar cvf classes.jar Foo.class Bar.class \nBeispiel 2: Verwenden Sie die vorhandenen Manifest-Datei "mymanifest", und archivieren Sie\n\ \ alle Dateien im Verzeichnis foo/ in "classes.jar": \n\ \ jar cvfm classes.jar mymanifest -C foo/ .\n diff --git a/jdk/src/share/classes/sun/tools/jar/resources/jar_es.properties b/jdk/src/share/classes/sun/tools/jar/resources/jar_es.properties index 336a3f1764a..d54b19a530e 100644 --- a/jdk/src/share/classes/sun/tools/jar/resources/jar_es.properties +++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_es.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2006, 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 @@ -23,69 +23,25 @@ # questions. # -error.cant.open=\ - no es posible abrir: {0} -error.illegal.option=\ - Opci\u00f3n no permitida: {0} -error.bad.option=\ - Se debe especificar una de las opciones -{ctxu}. -error.bad.cflag=\ - La marca 'c' necesita la especificaci\u00f3n de archivos de manifiesto o de entrada. -error.bad.uflag=\ - La marca 'u' necesita la especificaci\u00f3n de archivos de manifiesto, de entrada o marca 'e'. -error.bad.eflag=\ - la marca 'e' y el manifiesto con el atributo 'Main-Class' no pueden especificarse \n\ - a la vez. -error.nosuch.fileordir=\ - {0} : no existe tal archivo o directorio. -error.write.file=\ - Error al escribir un archivo jar existente -error.create.dir=\ - {0} : no fue posible crear el directorio -error.incorrect.length=\ - longitud incorrecta al procesar: {0} -out.added.manifest=\ - manifest agregado -out.update.manifest=\ - manifest actualizado -out.ignore.entry=\ - ignorando entrada {0} -out.adding=\ - agregando: {0} -out.deflated=\ - \ \(desinflado {0}%) -out.stored=\ - \ \(almacenado 0%) -out.create=\ - \ \ creado: {0} -out.extracted=\ - extra\u00eddo: {0} -out.inflated=\ - \ inflado: {0} -out.size=\ - \ \(entrada = {0}) (salida = {1}) +error.cant.open=no se puede abrir: {0} +error.illegal.option=Opci\u00F3n no permitida: {0} +error.bad.option=Se debe especificar una de las opciones -{ctxu}. +error.bad.cflag=El indicador 'c' necesita la especificaci\u00F3n de archivos de manifiesto o de entrada. +error.bad.uflag=El indicador 'u' necesita la especificaci\u00F3n de archivos de manifiesto, de entrada o indicador 'e'. +error.bad.eflag=El indicador 'e' y el manifiesto con el atributo 'Main-Class' no pueden especificarse \na la vez. +error.nosuch.fileordir={0} : no existe tal archivo o directorio +error.write.file=Error al escribir un archivo jar existente +error.create.dir={0} : no se ha podido crear el directorio +error.incorrect.length=longitud incorrecta al procesar: {0} +out.added.manifest=manifiesto agregado +out.update.manifest=manifiesto actualizado +out.ignore.entry=ignorando entrada {0} +out.adding=agregando: {0} +out.deflated=(desinflado {0}%) +out.stored=(almacenado 0%) +out.create=\ \ creado: {0} +out.extracted=extra\u00EDdo: {0} +out.inflated=\ \\inflado: {0} +out.size=(entrada = {0}) (salida = {1}) -usage=\ -Uso: jar {ctxui}[vfm0Me] [archivo-jar] [archivo-manifiesto] [punto-entrada] [-C dir] archivos...\n\ -Opciones:\n\ -\ \ -c crear archivo de almacenamiento\n\ -\ \ -t crear la tabla de contenido del archivo de almacenamiento\n\ -\ \ -x extraer el archivo mencionado (o todos) del archivo de almacenamiento\n\ -\ \ -u actualizar archivo de almacenamiento existente\n\ -\ \ -v generar salida detallada de los datos de salida est\u00e1ndar\n\ -\ \ -f especificar nombre del archivo de almacenamiento\n\ -\ \ -m incluir informaci\u00f3n de un archivo de manifiesto especificado\n\ -\ \ -e especificar punto de entrada de la aplicaci\u00f3n para aplicaci\u00f3n aut\u00f3noma \n\ -\ \ que se incluye dentro de un archivo jar ejecutable\n\ -\ \ -0 s\u00f3lo almacenar; no utilizar compresi\u00f3n ZIP\n\ -\ \ -M no crear un archivo de manifiesto para las entradas\n\ -\ \ -i generar informaci\u00f3n de \u00edndice para los archivos jar especificados\n\ -\ \ -C cambiar al directorio especificado e incluir el archivo siguiente\n\ -Si alg\u00fan archivo coincide tambi\u00e9n con un directorio, ambos se procesar\u00e1n.\n\ -El nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\n\ -especifican en el mismo orden que las marcas 'm', 'f' y 'e'.\n\n\ -Ejemplo 1: para archivar dos archivos de clases en un archivo de almacenamiento llamado classes.jar: \n\ -\ \ jar cvf classes.jar Foo.class Bar.class \n\ -Ejemplo 2: utilice un archivo de manifiesto ya creado, '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}[vfm0Me] [archive-jar] [archive-manifiesto] [punto-entrada] [-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\ \ -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 diff --git a/jdk/src/share/classes/sun/tools/jar/resources/jar_fr.properties b/jdk/src/share/classes/sun/tools/jar/resources/jar_fr.properties index ba2d9d80775..755bc9cb6f8 100644 --- a/jdk/src/share/classes/sun/tools/jar/resources/jar_fr.properties +++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_fr.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2006, 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 @@ -23,69 +23,25 @@ # questions. # -error.cant.open=\ - impossible d''ouvrir : {0} -error.illegal.option=\ - Option incorrecte : {0} -error.bad.option=\ - Une des options -{ctxu} doit \u00eatre sp\u00e9cifi\u00e9e. -error.bad.cflag=\ - L'indicateur c requiert la sp\u00e9cification d'un fichier manifeste ou d'un fichier d'entr\u00e9e. -error.bad.uflag=\ - L'indicateur u requiert la sp\u00e9cification d'un fichier manifeste, d'un fichier d'entr\u00e9e ou d'un indicateur e. -error.bad.eflag=\ - L'indicateur e et le fichier manifeste portant l'attribut Main-Class ne peuvent pas \u00eatre sp\u00e9cifi\u00e9s \n\ - ensemble ! -error.nosuch.fileordir=\ - {0} : fichier ou r\u00e9pertoire introuvable -error.write.file=\ - Erreur lors de l'\u00e9criture d'un fichier jar existant -error.create.dir=\ - {0} : impossible de cr\u00e9er le r\u00e9pertoire -error.incorrect.length=\ - Longueur incorrecte lors du traitement de : {0} -out.added.manifest=\ - manifest ajout\u00e9 -out.update.manifest=\ - manifest mis \u00e0 jour -out.ignore.entry=\ - entr\u00e9e {0} ignor\u00e9e -out.adding=\ - ajout : {0} -out.deflated=\ - \ \({0}% compress\u00e9s) -out.stored=\ - \ \(0% stock\u00e9) -out.create=\ - \ \ \ \ \ \ \ cr\u00e9\u00e9e: {0} -out.extracted=\ - \ \ \ \ extraite: {0} -out.inflated=\ - d\u00e9compress\u00e9e: {0} -out.size=\ - \ \(entr\u00e9e = {0}) (sortie = {1}) +error.cant.open=impossible d''ouvrir : {0} +error.illegal.option=Option non admise : {0} +error.bad.option=Une des options -{ctxu} doit \u00EAtre sp\u00E9cifi\u00E9e. +error.bad.cflag=L'indicateur c requiert la sp\u00E9cification d'un fichier manifeste ou d'un fichier d'entr\u00E9e. +error.bad.uflag=L'indicateur u requiert la sp\u00E9cification d'un fichier manifeste, d'un fichier d'entr\u00E9e ou d'un indicateur e. +error.bad.eflag=L'indicateur e et le fichier manifeste portant l'attribut Main-Class ne peuvent pas \u00EAtre sp\u00E9cifi\u00E9s \nensemble. +error.nosuch.fileordir={0} : fichier ou r\u00E9pertoire introuvable +error.write.file=Erreur lors de l'\u00E9criture d'un fichier JAR existant +error.create.dir={0} : impossible de cr\u00E9er le r\u00E9pertoire +error.incorrect.length=longueur incorrecte lors du traitement de : {0} +out.added.manifest=manifeste ajout\u00E9 +out.update.manifest=manifeste mis \u00E0 jour +out.ignore.entry=entr\u00E9e {0} ignor\u00E9e +out.adding=ajout : {0} +out.deflated=(compression : {0} %) +out.stored=(stockage : 0 %) +out.create=\ \ cr\u00E9\u00E9 : {0} +out.extracted=extrait : {0} +out.inflated=\ \\d\u00E9compress\u00E9 : {0} +out.size=(entr\u00E9e = {0}) (sortie = {1}) -usage=\ -Utilisation : jar {ctxui}[vfm0Me] [fichier-jar] [fichier-manifeste] [point-entr\u00e9e] [-C r\u00e9p] fichiers...\n\ -Options :\n\ -\ \ -c cr\u00e9e une nouvelle archive\n\ -\ \ -t affiche la table des mati\u00e8res de l'archive\n\ -\ \ -x extrait les fichiers nomm\u00e9s (ou tous les fichiers) de l'archive\n\ -\ \ -u met \u00e0 jour l'archive existante\n\ -\ \ -v g\u00e9n\u00e8re une version d\u00e9taill\u00e9e d'une sortie standard\n\ -\ \ -f sp\u00e9cifie le nom du fichier archive\n\ -\ \ -m inclut les informations de manifeste \u00e0 partir du fichier de manifeste sp\u00e9cifi\u00e9\n\ -\ \ -e sp\u00e9cifie le point d'entr\u00e9e d'une application en mode autonome \n\ -\ \ int\u00e9gr\u00e9e \u00e0 un fichier JAR ex\u00e9cutable\n\ -\ \ -0 stockage uniquement, pas de compression ZIP\n\ -\ \ -M ne cr\u00e9e pas de fichier manifeste pour les entr\u00e9es\n\ -\ \ -i g\u00e9n\u00e8re les informations d'index des fichiers jar sp\u00e9cifi\u00e9s\n\ -\ \ -C passe au r\u00e9pertoire sp\u00e9cifi\u00e9 et inclut le fichier suivant\n\ -Si l'un des fichiers est un r\u00e9pertoire, celui-ci est trait\u00e9 r\u00e9cursivement.\n\ -Les noms du fichier manifeste, du fichier archive et du point d'entr\u00e9e sont\n\ -sp\u00e9cifi\u00e9s dans le m\u00eame ordre que celui des indicateurs m, f et e.\n\n\ -Exemple 1 : pour archiver deux fichiers de classe dans une archive intitul\u00e9e classes.jar : \n\ -\ \ jar cvf classes.jar Foo.class Bar.class \n\ -Exemple 2 : pour utiliser un fichier manifeste existant 'monmanifeste', puis archiver tous les\n\ -\ \ fichiers du r\u00e9pertoire foo/ dans 'classes.jar' : \n\ -\ \ jar cvfm classes.jar monmanifeste -C foo/ .\n +usage=Syntaxe : jar {ctxui}[vfm0Me] [fichier-jar] [fichier-manifeste] [point-entr\u00E9e] [-C r\u00E9p] fichiers...\nOptions :\n\ \ -c cr\u00E9e une archive\n\ \ -t affiche la table des mati\u00E8res de l'archive\n\ \ -x extrait les fichiers nomm\u00E9s (ou tous les fichiers) de l'archive\n\ \ -u met \u00E0 jour l'archive existante\n\ \ -v g\u00E9n\u00E8re une version d\u00E9taill\u00E9e d'une sortie standard\n\ \ -f sp\u00E9cifie le nom du fichier archive\n\ \ -m inclut les informations de manifeste \u00E0 partir du fichier de manifeste sp\u00E9cifi\u00E9\n\ \ -e sp\u00E9cifie le point d'entr\u00E9e d'une application en mode autonome \n\ \ int\u00E9gr\u00E9e \u00E0 un fichier JAR ex\u00E9cutable\n\ \ -0 stockage uniquement, pas de compression ZIP\n\ \ -M ne cr\u00E9e pas de fichier manifeste pour les entr\u00E9es\n\ \ -i g\u00E9n\u00E8re les informations d'index des fichiers JAR sp\u00E9cifi\u00E9s\n\ \ -C passe au r\u00E9pertoire sp\u00E9cifi\u00E9 et inclut le fichier suivant\nSi l'un des fichiers est un r\u00E9pertoire, celui-ci est trait\u00E9 r\u00E9cursivement.\nLes noms du fichier manifeste, du fichier archive et du point d'entr\u00E9e sont\nsp\u00E9cifi\u00E9s dans le m\u00EAme ordre que celui des indicateurs m, f et e.\n\nExemple 1 : pour archiver deux fichiers de classe dans une archive intitul\u00E9e classes.jar : \n\ \ jar cvf classes.jar Foo.class Bar.class \nExemple 2 : pour utiliser un fichier manifeste existant 'monmanifeste', puis archiver tous les\n\ \ fichiers du r\u00E9pertoire foo/ dans 'classes.jar' : \n\ \ jar cvfm classes.jar monmanifeste -C foo/ .\n diff --git a/jdk/src/share/classes/sun/tools/jar/resources/jar_it.properties b/jdk/src/share/classes/sun/tools/jar/resources/jar_it.properties index 7631f75a9f5..7fbb848e501 100644 --- a/jdk/src/share/classes/sun/tools/jar/resources/jar_it.properties +++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_it.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2006, 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 @@ -23,69 +23,25 @@ # questions. # -error.cant.open=\ - impossibile aprire: {0} -error.illegal.option=\ - Opzione non valida: {0} -error.bad.option=\ - \u00c8 necessario specificare una delle opzioni -{ctxu}. -error.bad.cflag=\ - Per il flag 'c' \u00e8 necessario specificare file manifesto o di input. -error.bad.uflag=\ - Per il flag 'u' \u00e8 necessario specificare il flag 'e' oppure file manifesto o di input. -error.bad.eflag=\ - Il flag 'e' e il manifesto con l'attributo 'Main-Class' non possono essere specificati\n\ - insieme. -error.nosuch.fileordir=\ - {0} : impossibile trovare il file o la directory -error.write.file=\ - Errore durante la scrittura del file jar esistente -error.create.dir=\ - {0} : impossibile creare la directory -error.incorrect.length=\ - lunghezza non valida durante l''elaborazione: {0} -out.added.manifest=\ - aggiunto manifesto -out.update.manifest=\ - aggiornato manifesto -out.ignore.entry=\ - la voce {0} sar\u00e0 ignorata -out.adding=\ - aggiunta in corso di: {0} -out.deflated=\ - \ \(compresso {0}%) -out.stored=\ - \ \(archiviato 0%) -out.create=\ - \ \ \ \ \ creato: {0} -out.extracted=\ - \ \ \ estratto: {0} -out.inflated=\ - decompresso: {0} -out.size=\ - \ \(in = {0}) (out = {1}) +error.cant.open=impossibile aprire: {0} +error.illegal.option=Opzione non valida: {0} +error.bad.option=\u00C8 necessario specificare una delle opzioni -{ctxu}. +error.bad.cflag=Per il flag 'c' \u00E8 necessario specificare file manifest o di input. +error.bad.uflag=Per il flag 'u' \u00E8 necessario specificare il flag 'e' oppure file manifest o di input. +error.bad.eflag=Il flag 'e' e il manifest con l'attributo 'Main-Class' non possono essere specificati\ninsieme. +error.nosuch.fileordir={0} : file o directory inesistente +error.write.file=Errore durante la scrittura del file jar esistente +error.create.dir={0} : impossibile creare la directory +error.incorrect.length=lunghezza non valida durante l''elaborazione: {0} +out.added.manifest=aggiunto manifest +out.update.manifest=aggiornato manifest +out.ignore.entry=la voce {0} sar\u00E0 ignorata +out.adding=aggiunta in corso di: {0} +out.deflated=(compresso {0}%) +out.stored=(memorizzato 0%) +out.create=\ \ \ \ \ creato: {0} +out.extracted=estratto: {0} +out.inflated=\ \\decompresso: {0} +out.size=(in = {0}) (out = {1}) -usage=\ -Utilizzo: jar {ctxui}[vfm0Me] [file-jar] [file-manifesto] [punto di ingresso] [-C dir] file ...\n\ -Opzioni:\n\ -\ \ -c crea un nuovo archivio\n\ -\ \ -t visualizza l'indice dell'archivio\n\ -\ \ -x estrae i file con nome (o tutti i file) dall'archivio\n\ -\ \ -u aggiorna l'archivio esistente\n\ -\ \ -v genera output commentato dall'output standard\n\ -\ \ -f specifica il nome file dell'archivio\n\ -\ \ -m include informazioni manifesto dal file manifesto specificato\n\ -\ \ -e specifica il punto di ingresso per l'applicazione stand-alone \n\ -\ \ inclusa nel file jar eseguibile\n\ -\ \ -0 solo memorizzazione; senza compressione ZIP\n\ -\ \ -M consente di non creare un file manifesto per le voci\n\ -\ \ -i genera informazioni sull'indice per i file jar specificati\n\ -\ \ -C imposta la directory specificata e include il file seguente\n\ -Se un file \u00e8 una directory, verr\u00e0 elaborato in modo ricorsivo.\n\ -Il nome del file manifesto, del file di archivio e del punto di ingresso devono\n\ -essere specificati nello stesso ordine dei flag 'm', 'f' ed 'e'.\n\n\ -Esempio 1: archiviazione di due file di classe in un archivio con il nome classes.jar: \n\ -\ \ jar cvf classes.jar Foo.class Bar.class \n\ -Esempio 2: utilizzo del file manifesto esistente 'mymanifest' e archiviazione di tutti i\n\ -\ \ file della directory foo/ in 'classes.jar': \n\ -\ \ jar cvfm classes.jar mymanifest -C foo/ .\n +usage=Utilizzo: jar {ctxui}[vfm0Me] [file-jar] [file-manifest] [punto di ingresso] [-C dir] file ...\nOpzioni:\n\ \ -c crea un nuovo archivio\n\ \ -t visualizza l'indice dell'archivio\n\ \ -x estrae i file con nome (o tutti i file) dall'archivio\n\ \ -u aggiorna l'archivio esistente\n\ \ -v genera output commentato dall'output standard\n\ \ -f specifica il nome file dell'archivio\n\ \ -m include informazioni manifest dal file manifest specificato\n\ \ -e specifica il punto di ingresso per l'applicazione stand-alone \n\ \ inclusa nel file jar eseguibile\n\ \ -0 solo memorizzazione; senza compressione ZIP\n\ \ -M consente di non creare un file manifest per le voci\n\ \ -i genera informazioni sull'indice per i file jar specificati\n\ \ -C imposta la directory specificata e include il file seguente\nSe un file \u00E8 una directory, verr\u00E0 elaborato in modo ricorsivo.\nIl nome del file manifest, del file di archivio e del punto di ingresso devono\nessere specificati nello stesso ordine dei flag 'm', 'f' ed 'e'.\n\nEsempio 1: archiviazione di due file di classe in un archivio con il nome classes.jar: \n\ \ jar cvf classes.jar Foo.class Bar.class \nEsempio 2: utilizzo del file manifest esistente 'mymanifest' e archiviazione di tutti i\n\ \ file della directory foo/ in 'classes.jar': \n\ \ jar cvfm classes.jar mymanifest -C foo/.\n diff --git a/jdk/src/share/classes/sun/tools/jar/resources/jar_ja.properties b/jdk/src/share/classes/sun/tools/jar/resources/jar_ja.properties index 9db49588b38..ae88945b45d 100644 --- a/jdk/src/share/classes/sun/tools/jar/resources/jar_ja.properties +++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_ja.properties @@ -23,67 +23,25 @@ # questions. # -error.cant.open=\ - {0} \u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 -error.illegal.option=\ - \u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3: {0} -error.bad.option=\ - \u30aa\u30d7\u30b7\u30e7\u30f3 -{ctxu} \u306e\u3046\u3061\u306e 1 \u3064\u3092\u6307\u5b9a\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -error.bad.cflag=\ - \u30d5\u30e9\u30b0 'c' \u3067\u306f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u304b\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u6307\u5b9a\u304c\u5fc5\u8981\u3067\u3059\u3002 -error.bad.uflag=\ - \u30d5\u30e9\u30b0 'u' \u3067\u306f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u304b 'e' \u30d5\u30e9\u30b0\u3001\u307e\u305f\u306f\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u6307\u5b9a\u304c\u5fc5\u8981\u3067\u3059\u3002 -error.bad.eflag='e' \u30d5\u30e9\u30b0\u3068 'Main-Class' \u5c5e\u6027\u3092\u6301\u3064\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306f\u540c\u6642\u306b\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002 -error.nosuch.fileordir=\ - {0} \u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -error.write.file=\ - \u65e2\u5b58 jar \u30d5\u30a1\u30a4\u30eb\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -error.create.dir=\ - \u30c7\u30a3\u30ec\u30af\u30c8\u30ea {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -error.incorrect.length=\ - {0} \u306e\u51e6\u7406\u4e2d\u306b\u4e0d\u6b63\u306a\u9577\u3055\u304c\u3042\u308a\u307e\u3057\u305f\u3002 -out.added.manifest=\ - \u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 -out.update.manifest=\ - \u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u304c\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f\u3002 -out.ignore.entry=\ - \u30a8\u30f3\u30c8\u30ea {0} \u3092\u7121\u8996\u3057\u307e\u3059\u3002 -out.adding=\ - {0} \u3092\u8ffd\u52a0\u4e2d\u3067\u3059\u3002 -out.deflated=\ - ({0}% \u53ce\u7e2e\u3055\u308c\u307e\u3057\u305f) -out.stored=\ - (0% \u683c\u7d0d\u3055\u308c\u307e\u3057\u305f) -out.create=\ - \ \ {0} \u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002 -out.extracted=\ - {0} \u304c\u62bd\u51fa\u3055\u308c\u307e\u3057\u305f\u3002 -out.inflated=\ - \ \{0} \u304c\u5c55\u958b\u3055\u308c\u307e\u3057\u305f\u3002 -out.size=\ - (\u5165 = {0}) (\u51fa = {1}) +error.cant.open={0}\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 +error.illegal.option=\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0} +error.bad.option=\u30AA\u30D7\u30B7\u30E7\u30F3-{ctxu}\u306E\u3046\u3061\u306E1\u3064\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +error.bad.cflag=\u30D5\u30E9\u30B0'c'\u3067\u306F\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u307E\u305F\u306F\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u6307\u5B9A\u304C\u5FC5\u8981\u3067\u3059\u3002 +error.bad.uflag=\u30D5\u30E9\u30B0'u'\u3067\u306F\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304B'e'\u30D5\u30E9\u30B0\u3001\u307E\u305F\u306F\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u6307\u5B9A\u304C\u5FC5\u8981\u3067\u3059\u3002 +error.bad.eflag='e'\u30D5\u30E9\u30B0\u3068'Main-Class'\u5C5E\u6027\u3092\u6301\u3064\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u306F\u540C\u6642\u306B\n\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002 +error.nosuch.fileordir={0}\u3068\u3044\u3046\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u3042\u308A\u307E\u305B\u3093 +error.write.file=\u65E2\u5B58jar\u30D5\u30A1\u30A4\u30EB\u306E\u66F8\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F +error.create.dir=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F +error.incorrect.length={0}\u306E\u51E6\u7406\u4E2D\u306B\u4E0D\u6B63\u306A\u9577\u3055\u304C\u3042\u308A\u307E\u3057\u305F +out.added.manifest=\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F +out.update.manifest=\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F +out.ignore.entry=\u30A8\u30F3\u30C8\u30EA{0}\u3092\u7121\u8996\u3057\u307E\u3059 +out.adding={0}\u3092\u8FFD\u52A0\u4E2D\u3067\u3059 +out.deflated=({0}%\u53CE\u7E2E\u3055\u308C\u307E\u3057\u305F) +out.stored=(0%\u683C\u7D0D\u3055\u308C\u307E\u3057\u305F) +out.create=\ \ {0}\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F +out.extracted={0}\u304C\u62BD\u51FA\u3055\u308C\u307E\u3057\u305F +out.inflated=\ \\{0}\u304C\u5C55\u958B\u3055\u308C\u307E\u3057\u305F +out.size=(\u5165={0})(\u51FA={1}) -usage=\ -\u4f7f\u3044\u65b9: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\ -\u30aa\u30d7\u30b7\u30e7\u30f3:\n\ -\ \ -c \u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u65b0\u898f\u4f5c\u6210\u3059\u308b\n\ -\ \ -t \u30a2\u30fc\u30ab\u30a4\u30d6\u306e\u5185\u5bb9\u3092\u4e00\u89a7\u8868\u793a\u3059\u308b\n\ -\ \ -x \u6307\u5b9a\u306e (\u307e\u305f\u306f\u3059\u3079\u3066\u306e) \u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30fc\u30ab\u30a4\u30d6\u304b\u3089\u62bd\u51fa\u3059\u308b\n\ -\ \ -u \u65e2\u5b58\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u66f4\u65b0\u3059\u308b\n\ -\ \ -v \u6a19\u6e96\u51fa\u529b\u306b\u8a73\u7d30\u306a\u51fa\u529b\u3092\u751f\u6210\u3059\u308b\n\ -\ \ -f \u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3059\u308b\n\ -\ \ -m \u6307\u5b9a\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u60c5\u5831\u3092\u53d6\u308a\u8fbc\u3080\n\ -\ \ -e \u5b9f\u884c\u53ef\u80fd jar \u30d5\u30a1\u30a4\u30eb\u306b\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u305f\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\n\ -\ \ \u30a8\u30f3\u30c8\u30ea\u30dd\u30a4\u30f3\u30c8\u3092\u6307\u5b9a\u3059\u308b\n\ -\ \ -0 \u683c\u7d0d\u306e\u307f\u3002ZIP \u5727\u7e2e\u3092\u4f7f\u7528\u3057\u306a\u3044\n\ -\ \ -M \u30a8\u30f3\u30c8\u30ea\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u306a\u3044\n\ -\ \ -i \u6307\u5b9a\u306e jar \u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u60c5\u5831\u3092\u751f\u6210\u3059\u308b\n\ -\ \ -C \u6307\u5b9a\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u5909\u66f4\u3057\u3001\u4ee5\u4e0b\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u308a\u8fbc\u3080\n\ -\u30d5\u30a1\u30a4\u30eb\u304c\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u5834\u5408\u306f\u518d\u5e30\u7684\u306b\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\n\ -\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u540d\u3001\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u540d\u304a\u3088\u3073\u30a8\u30f3\u30c8\u30ea\u30dd\u30a4\u30f3\u30c8\u540d\u306f\u3001\n\ -\u30d5\u30e9\u30b0 'm'\u3001'f'\u3001'e' \u306e\u6307\u5b9a\u3068\u540c\u3058\u9806\u756a\u3067\u6307\u5b9a\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\n\n\ -\u4f8b 1: 2 \u3064\u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30fc\u30ab\u30a4\u30d6 classes.jar \u306b\u4fdd\u5b58\u3059\u308b:\n\ -\ \ jar cvf classes.jar Foo.class Bar.class \n\ -\u4f8b 2: \u65e2\u5b58\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb 'mymanifest' \u3092\u4f7f\u7528\u3057\u3001foo/ \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\n\ -\ \ \u5168\u30d5\u30a1\u30a4\u30eb\u3092 'classes.jar' \u306b\u30a2\u30fc\u30ab\u30a4\u30d6\u3059\u308b:\n\ -\ \ jar cvfm classes.jar mymanifest -C foo/ .\n +usage=\u4F7F\u7528\u65B9\u6CD5: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u30AA\u30D7\u30B7\u30E7\u30F3:\n\\ -c \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u65B0\u898F\u4F5C\u6210\u3059\u308B\n\\ -t \u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u5185\u5BB9\u3092\u4E00\u89A7\u8868\u793A\u3059\u308B\n\\ -x \u6307\u5B9A\u306E(\u307E\u305F\u306F\u3059\u3079\u3066\u306E)\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u304B\u3089\u62BD\u51FA\u3059\u308B\n\\ -u \u65E2\u5B58\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u66F4\u65B0\u3059\u308B\n\\ -v \u6A19\u6E96\u51FA\u529B\u306B\u8A73\u7D30\u306A\u51FA\u529B\u3092\u751F\u6210\u3059\u308B\n\\ -f \u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3059\u308B\n\\ -m \u6307\u5B9A\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u60C5\u5831\u3092\u53D6\u308A\u8FBC\u3080\n\\ -e \u5B9F\u884C\u53EF\u80FDjar\u30D5\u30A1\u30A4\u30EB\u306B\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305F\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\n\\ \u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u3092\u6307\u5B9A\u3059\u308B\n\\ -0 \u683C\u7D0D\u306E\u307F\u3002ZIP\u5727\u7E2E\u3092\u4F7F\u7528\u3057\u306A\u3044\n\\ -M \u30A8\u30F3\u30C8\u30EA\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3057\u306A\u3044\n\\ -i \u6307\u5B9A\u306Ejar\u30D5\u30A1\u30A4\u30EB\u306E\u7D22\u5F15\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n\\ -C \u6307\u5B9A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u5909\u66F4\u3057\u3001\u4EE5\u4E0B\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u308A\u8FBC\u3080\n\u30D5\u30A1\u30A4\u30EB\u304C\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u5834\u5408\u306F\u518D\u5E30\u7684\u306B\u51E6\u7406\u3055\u308C\u307E\u3059\u3002\n\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3001\u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u304A\u3088\u3073\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u540D\u306F\u3001\n\u30D5\u30E9\u30B0'm'\u3001'f'\u3001'e'\u306E\u6307\u5B9A\u3068\u540C\u3058\u9806\u756A\u3067\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\n\u4F8B1: 2\u3064\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6classes.jar\u306B\u4FDD\u5B58\u3059\u308B:\n\\ jar cvf classes.jar Foo.class Bar.class\n\u4F8B2: \u65E2\u5B58\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB'mymanifest'\u3092\u4F7F\u7528\u3057\u3001foo/\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\n\\ \u5168\u30D5\u30A1\u30A4\u30EB\u3092'classes.jar'\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3059\u308B:\n\\ jar cvfm classes.jar mymanifest -C foo/ \n diff --git a/jdk/src/share/classes/sun/tools/jar/resources/jar_ko.properties b/jdk/src/share/classes/sun/tools/jar/resources/jar_ko.properties index 0257cd8265a..f4fbd3e65da 100644 --- a/jdk/src/share/classes/sun/tools/jar/resources/jar_ko.properties +++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_ko.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2006, 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 @@ -23,69 +23,25 @@ # questions. # -error.cant.open=\ - {0}\uc744(\ub97c) \uc5f4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -error.illegal.option=\ - {0} \uc635\uc158\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -error.bad.option=\ - \uc635\uc158 -{ctxu} \uc911 \ud558\ub098\uac00 \uc9c0\uc815\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. -error.bad.cflag=\ - 'c' \ud50c\ub798\uadf8\ub97c \uc9c0\uc815\ud558\ub824\uba74 manifest \ub610\ub294 \uc785\ub825 \ud30c\uc77c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4! -error.bad.uflag=\ - 'u' \ud50c\ub798\uadf8\ub97c \uc9c0\uc815\ud558\ub824\uba74 manifest, 'e' \ud50c\ub798\uadf8 \ub610\ub294 \uc785\ub825 \ud30c\uc77c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4! -error.bad.eflag=\ - '\uae30\ubcf8 \ud074\ub798\uc2a4' \uc18d\uc131\uc744 \ud3ec\ud568\ud55c 'e' \ud50c\ub798\uadf8 \ubc0f manifest\ub97c \ud568\uaed8 \uc9c0\uc815\ud560 \uc218\n\ - \uc5c6\uc2b5\ub2c8\ub2e4. -error.nosuch.fileordir=\ - {0} : \uc9c0\uc815\ud55c \ud30c\uc77c \ub610\ub294 \ub514\ub809\ud1a0\ub9ac\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -error.write.file=\ - \uae30\uc874\uc758 jar \ud30c\uc77c\uc5d0 \uc4f0\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd -error.create.dir=\ - {0} : \ub514\ub809\ud1a0\ub9ac\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -error.incorrect.length=\ - {0} \ucc98\ub9ac \uc911 \uae38\uc774\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -out.added.manifest=\ - \ucd94\uac00\ub41c manifest -out.update.manifest=\ - \uc5c5\ub370\uc774\ud2b8\ub41c manifest -out.ignore.entry=\ - \uc785\ub825 \ud56d\ubaa9 {0} \ubb34\uc2dc \uc911 -out.adding=\ - \ucd94\uac00 \uc911: {0} -out.deflated=\ - ({0}%\uac00 \uac10\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.) -out.stored=\ - (0%\uac00 \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.) -out.create=\ - \ \ {0}\uc774(\uac00) \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -out.extracted=\ - {0}\uc774(\uac00) \ucd94\ucd9c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -out.inflated=\ - \ \{0}\uc774(\uac00) \uc99d\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -out.size=\ - (\ub0b4\ubd80 = {0}) (\uc678\ubd80= {1}) +error.cant.open=\uC5F4 \uC218 \uC5C6\uC74C: {0} +error.illegal.option=\uC798\uBABB\uB41C \uC635\uC158: {0} +error.bad.option=\uC635\uC158 -{ctxu} \uC911 \uD558\uB098\uB97C \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4. +error.bad.cflag='c' \uD50C\uB798\uADF8\uB97C \uC0AC\uC6A9\uD558\uB824\uBA74 Manifest \uB610\uB294 \uC785\uB825 \uD30C\uC77C\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4! +error.bad.uflag='u' \uD50C\uB798\uADF8\uB97C \uC0AC\uC6A9\uD558\uB824\uBA74 Manifest, 'e' \uD50C\uB798\uADF8 \uB610\uB294 \uC785\uB825 \uD30C\uC77C\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4! +error.bad.eflag='e' \uD50C\uB798\uADF8 \uBC0F Manifest\uB97C 'Main-Class' \uC18D\uC131\uACFC \uD568\uAED8 \uC9C0\uC815\uD560 \uC218\n\uC5C6\uC2B5\uB2C8\uB2E4! +error.nosuch.fileordir={0}: \uD574\uB2F9 \uD30C\uC77C \uB610\uB294 \uB514\uB809\uD1A0\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. +error.write.file=\uAE30\uC874 jar \uD30C\uC77C\uC5D0 \uC4F0\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +error.create.dir={0}: \uB514\uB809\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +error.incorrect.length=\uCC98\uB9AC \uC911 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC740 \uAE38\uC774\uAC00 \uBC1C\uACAC\uB428: {0} +out.added.manifest=Manifest\uB97C \uCD94\uAC00\uD568 +out.update.manifest=Manifest\uB97C \uAC31\uC2E0\uD568 +out.ignore.entry={0} \uD56D\uBAA9\uC744 \uBB34\uC2DC\uD558\uB294 \uC911 +out.adding=\uCD94\uAC00\uD558\uB294 \uC911: {0} +out.deflated=({0}%\uB97C \uAC10\uC18C\uD568) +out.stored=(0%\uB97C \uC800\uC7A5\uD568) +out.create=\ \ \uC0DD\uC131\uB428: {0} +out.extracted=\uCD94\uCD9C\uB428: {0} +out.inflated=\ \\\uC99D\uAC00\uB428: {0} +out.size=(\uC785\uB825 = {0}) (\uCD9C\uB825 = {1}) -usage=\ -\uc0ac\uc6a9\ubc95: jar {ctxui}[vfm0Me] [jar \ud30c\uc77c] [manifest \ud30c\uc77c] [\uc2dc\uc791 \uc9c0\uc810] [-C \ub514\ub809\ud1a0\ub9ac] \ud30c\uc77c ...\n\ -\uc635\uc158:\n\ -\ \ -c \uc0c8 \uc544\uce74\uc774\ube0c \ub9cc\ub4e4\uae30\n\ -\ \ -t \uc544\uce74\uc774\ube0c\uc5d0 \ub300\ud55c \ub0b4\uc6a9 \ubaa9\ub85d \ud14c\uc774\ube14\n\ -\ \ -x \uba85\uba85\ub41c(\ub610\ub294 \ubaa8\ub4e0) \ud30c\uc77c\uc744 \uc544\uce74\uc774\ube0c\uc5d0\uc11c \ucd94\ucd9c\n\ -\ \ -u \uae30\uc874 \uc544\uce74\uc774\ube0c \uc5c5\ub370\uc774\ud2b8\n\ -\ \ -v \ud45c\uc900 \ucd9c\ub825\uc5d0 \uc138\ubd80 \uc815\ubcf4 \ud45c\uc2dc \ucd9c\ub825 \uc0dd\uc131\n\ -\ \ -f \uc544\uce74\uc774\ube0c \ud30c\uc77c \uc774\ub984 \uc9c0\uc815\n\ -\ \ -m \uc9c0\uc815\ud55c \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\ub85c\ubd80\ud130 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \uc815\ubcf4 \ud3ec\ud568\n\ -\ \ -e jar \uc2e4\ud589 \ud30c\uc77c\uc5d0 \ubc88\ub4e4\ub85c \uc81c\uacf5\ub41c \ub3c5\ub9bd \uc2e4\ud589\ud615 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc758 \n\ -\ \ \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \uc2dc\uc791 \uc9c0\uc810 \uc9c0\uc815\n\ -\ \ -0 \uc800\uc7a5 \uc804\uc6a9, ZIP \uc555\ucd95 \uc0ac\uc6a9 \uc548 \ud568\n\ -\ \ -M \ud56d\ubaa9\uc5d0 \ub300\ud574 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\uc744 \ub9cc\ub4e4\uc9c0 \uc54a\uc74c\n\ -\ \ -i \uc9c0\uc815\ud55c jar \ud30c\uc77c\uc5d0 \ub300\ud55c \uc0c9\uc778 \uc815\ubcf4 \uc0dd\uc131\n\ -\ \ -C \uc9c0\uc815\ud55c \ub514\ub809\ud1a0\ub9ac\ub85c \ubcc0\uacbd\ud558\uace0 \ub2e4\uc74c \ud30c\uc77c \ud3ec\ud568\n\ -\uc5b4\ub5a4 \ud30c\uc77c\uc774 \ub514\ub809\ud1a0\ub9ac\uba74 \uc7ac\uadc0\uc801\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4.\n\ -\ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c \uc774\ub984, \uc544\uce74\uc774\ube0c \ud30c\uc77c \uc774\ub984 \ubc0f \uc2dc\uc791 \uc9c0\uc810 \uc774\ub984\uc740\n\ -'m', 'f' \ubc0f 'e' \ud50c\ub798\uadf8\uc640 \ub3d9\uc77c\ud55c \uc21c\uc11c\ub85c \uc9c0\uc815\ub429\ub2c8\ub2e4.\n\n\ -\uc608 1: classes.jar\ub77c\ub294 \uc544\uce74\uc774\ube0c\uc5d0 \ub450 \ud074\ub798\uc2a4 \ud30c\uc77c\uc744 \uc544\uce74\uc774\ube0c\ud558\ub294 \ubc29\ubc95: \n\ -\ \ jar cvf classes.jar Foo.class Bar.class \n\ -\uc608 2: \uae30\uc874\uc758 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c 'mymanifest'\ub97c \uc0ac\uc6a9\ud558\uc5ec\n\ -\ \ foo/ \ub514\ub809\ud1a0\ub9ac\uc758 \ubaa8\ub4e0 \ud30c\uc77c\uc744 'classes.jar'\ub85c \uc544\uce74\uc774\ube0c\ud558\ub294 \ubc29\ubc95: \n\ -\ \ jar cvfm classes.jar mymanifest -C foo/ .\n +usage=\uC0AC\uC6A9\uBC95: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\uC635\uC158:\n\ \ -c \uC0C8 \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n\ \ -t \uC544\uCE74\uC774\uBE0C\uC5D0 \uB300\uD55C \uBAA9\uCC28\uB97C \uB098\uC5F4\uD569\uB2C8\uB2E4.\n\ \ -x \uBA85\uBA85\uB41C(\uB610\uB294 \uBAA8\uB4E0) \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uC5D0\uC11C \uCD94\uCD9C\uD569\uB2C8\uB2E4.\n\ \ -u \uAE30\uC874 \uC544\uCE74\uC774\uBE0C\uB97C \uAC31\uC2E0\uD569\uB2C8\uB2E4.\n\ \ -v \uD45C\uC900 \uCD9C\uB825\uC5D0 \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4.\n\ \ -f \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n\ \ -m \uC9C0\uC815\uB41C Manifest \uD30C\uC77C\uC758 Manifest \uC815\uBCF4\uB97C \uD3EC\uD568\uD569\uB2C8\uB2E4.\n\ \ -e jar \uC2E4\uD589 \uD30C\uC77C\uC5D0 \uBC88\uB4E4\uB85C \uC81C\uACF5\uB41C \uB3C5\uB9BD\uD615 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8\uC758 \n\ \ \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8 \uC2DC\uC791 \uC9C0\uC810\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n\ \ -0 \uC800\uC7A5 \uC804\uC6A9: ZIP \uC555\uCD95\uC744 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n\ \ -M \uD56D\uBAA9\uC5D0 \uB300\uD574 Manifest \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n\ \ -i \uC9C0\uC815\uB41C jar \uD30C\uC77C\uC5D0 \uB300\uD55C \uC778\uB371\uC2A4 \uC815\uBCF4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n\ \ -C \uC9C0\uC815\uB41C \uB514\uB809\uD1A0\uB9AC\uB85C \uBCC0\uACBD\uD558\uACE0 \uB2E4\uC74C \uD30C\uC77C\uC744 \uD3EC\uD568\uD569\uB2C8\uB2E4.\n\uD2B9\uC815 \uD30C\uC77C\uC774 \uB514\uB809\uD1A0\uB9AC\uC77C \uACBD\uC6B0 \uC21C\uD658\uC801\uC73C\uB85C \uCC98\uB9AC\uB429\uB2C8\uB2E4.\nManifest \uD30C\uC77C \uC774\uB984, \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984 \uBC0F \uC2DC\uC791 \uC9C0\uC810 \uC774\uB984\uC740\n'm', 'f' \uBC0F 'e' \uD50C\uB798\uADF8\uC640 \uB3D9\uC77C\uD55C \uC21C\uC11C\uB85C \uC9C0\uC815\uB429\uB2C8\uB2E4.\n\n\uC608 1: classes.jar\uB77C\uB294 \uC544\uCE74\uC774\uBE0C\uC5D0 \uB450 \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n\ \ jar cvf classes.jar Foo.class Bar.class \n\uC608 2: \uAE30\uC874 Manifest \uD30C\uC77C 'mymanifest'\uB97C \uC0AC\uC6A9\uD558\uC5EC\n\ \ foo/ \uB514\uB809\uD1A0\uB9AC\uC758 \uBAA8\uB4E0 \uD30C\uC77C\uC744 'classes.jar'\uB85C \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n\ \ jar cvfm classes.jar mymanifest -C foo/ .\n diff --git a/jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties b/jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties index b15ef1488d8..6ef47464a23 100644 --- a/jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties +++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2006, 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 @@ -23,25 +23,25 @@ # questions. # -error.cant.open=n\u00e3o \u00e9 poss\u00edvel abrir: {0} -error.illegal.option=Op\u00e7\u00e3o ilegal: {0} -error.bad.option=Uma das op\u00e7\u00f5es -{ctxu} deve ser especificada. -error.bad.cflag=sinalizador 'c' requer que os arquivos de manifesto ou entrada sejam especificados! -error.bad.uflag=sinalizador 'u' requer os arquivos de manifesto, o sinalizador 'e' ou os arquivos de entrada sejam especificados! -error.bad.eflag=sinalizador 'e' manifesto com o atributo 'Main-Class' n\u00e3o podem ser especificados \njuntos! -error.nosuch.fileordir={0} : n\u00e3o h\u00e1 tal arquivo ou diret\u00f3rio +error.cant.open=n\u00E3o \u00E9 poss\u00EDvel abrir: {0} +error.illegal.option=Op\u00E7\u00E3o inv\u00E1lida: {0} +error.bad.option=Uma das op\u00E7\u00F5es -{ctxu} deve ser especificada. +error.bad.cflag=flag 'c' requer que os arquivos de manifesto ou entrada sejam especificados! +error.bad.uflag=o flag 'u' requer que arquivos de manifesto, o flag 'e' ou arquivos de entrada sejam especificados! +error.bad.eflag=o flag 'e' e manifesto com o atributo 'Main-Class' n\u00E3o podem ser especificados \njuntos! +error.nosuch.fileordir={0} : n\u00E3o h\u00E1 tal arquivo ou diret\u00F3rio error.write.file=Erro ao gravar o arquivo jar existente -error.create.dir={0} : n\u00e3o foi poss\u00edvel gravar o diret\u00f3rio -error.incorrect.length=largura incorreta durante processamento: {0} +error.create.dir={0} : n\u00E3o foi poss\u00EDvel criar o diret\u00F3rio +error.incorrect.length=largura incorreta durante o processamento: {0} out.added.manifest=manifesto adicionado out.update.manifest=manifesto atualizado out.ignore.entry=ignorando entrada {0} out.adding=adicionando: {0} out.deflated=(vazio {0}%) out.stored=(armazenado 0%) -out.create=\ \ criando: {0} -out.extracted=extra\u00eddo: {0} -out.inflated=\ \cheio: {0} -out.size=(dento = {0}) (fora= {1}) +out.create=\ \ criado: {0} +out.extracted=extra\u00EDdo: {0} +out.inflated=\ \\cheio: {0} +out.size=(dentro = {0}) (fora= {1}) -usage=Uso: arquivos jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] ...\nOp\u00e7\u00f5es:\n\ \ -c cria novo arquivo de armazenamento\n\ \ -t lista o sum\u00e1rio do arquivo de armazenamento\n\ \ -x extrai arquivos nomeados (ou todos) do arquivo de armazenamento\n\ \ -u atualizar o arquivo de armazenamento existente\n\ \ -v gera sa\u00edda detalhada na sa\u00edda padr\u00e3o\n\ \ -f especifica o nome do arquivo do arquivo de armazenamento\n\ \ -m inclui as informa\u00e7\u00f5es do manifesto do arquivo de manifesto especificado\n\ \ -e especifica o ponto de entrada do aplicativo para aplicativo independente \n\ \ empacotando 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 altera para o diret\u00f3rio e inclui o arquivo seguinte\nSe nenhum arquivo for um diret\u00f3rio, ent\u00e3o \u00e9 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo de armazenamento e o nome do ponto de entrada s\u00e3o\nespecificados na mesma ordem dos sinalizadores 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo de armazenamento 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 +usage=Uso: arquivos jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] ...\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 atualizar 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\ \ -e especifica o ponto de entrada da aplica\u00E7\u00E3o para aplica\u00E7\u00E3o independente \n\ \ empacotando 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 altera para o diret\u00F3rio e inclui o arquivo seguinte\nSe nenhum arquivo for um diret\u00F3rio, ent\u00E3o 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 com o nome 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 diff --git a/jdk/src/share/classes/sun/tools/jar/resources/jar_sv.properties b/jdk/src/share/classes/sun/tools/jar/resources/jar_sv.properties index 1538da7a2b8..645df26cfe7 100644 --- a/jdk/src/share/classes/sun/tools/jar/resources/jar_sv.properties +++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_sv.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2006, 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 @@ -23,69 +23,25 @@ # questions. # -error.cant.open=\ - kan inte \u00f6ppna: {0} -error.illegal.option=\ - Ogiltigt alternativ: {0} -error.bad.option=\ - Ett av alternativen -{ctxu} m\u00e5ste anges. -error.bad.cflag=\ - f\u00f6r c-flaggan m\u00e5ste manifest- eller indatafiler anges. -error.bad.uflag=\ - f\u00f6r u-flaggan m\u00e5ste manifest-, e-flagg- eller indatafiler anges. -error.bad.eflag=\ - e-flaggan och manifest med attributet Main-Class kan inte anges \n\ - tillsammans. -error.nosuch.fileordir=\ - {0} : Det finns ingen s\u00e5dan fil eller katalog. -error.write.file=\ - Det uppstod ett fel vid skrivning till befintlig jar-fil. -error.create.dir=\ - {0} : Det gick inte att skapa n\u00e5gon katalog. -error.incorrect.length=\ - ogiltig l\u00e4ngd vid bearbetning: {0} -out.added.manifest=\ - extra manifestfil -out.update.manifest=\ - uppdaterad manifestfil -out.ignore.entry=\ - ignorerar posten {0} -out.adding=\ - l\u00e4gger till: {0} -out.deflated=\ - \ \({0}% komprimerat) -out.stored=\ - \ \(0% lagrat) -out.create=\ - \ \ \ \ skapad: {0} -out.extracted=\ - extraherat: {0} -out.inflated=\ - expanderat: {0} -out.size=\ - \ \(in = {0}) (ut = {1}) +error.cant.open=kan inte \u00F6ppna: {0} +error.illegal.option=Otill\u00E5tet alternativ: {0} +error.bad.option=Ett av alternativen -{ctxu} m\u00E5ste anges. +error.bad.cflag=f\u00F6r c-flaggan m\u00E5ste manifest- eller indatafiler anges. +error.bad.uflag=f\u00F6r u-flaggan m\u00E5ste manifest-, e-flagg- eller indatafiler anges. +error.bad.eflag=e-flaggan och manifest med attributet Main-Class kan inte anges \ntillsammans. +error.nosuch.fileordir={0} : det finns ingen s\u00E5dan fil eller katalog +error.write.file=Det uppstod ett fel vid skrivning till befintlig jar-fil. +error.create.dir={0} : kunde inte skapa n\u00E5gon katalog +error.incorrect.length=ogiltig l\u00E4ngd vid bearbetning: {0} +out.added.manifest=tillagt manifestfil +out.update.manifest=uppdaterat manifest +out.ignore.entry=ignorerar posten {0} +out.adding=l\u00E4gger till: {0} +out.deflated=({0}% packat) +out.stored=(0% lagrat) +out.create=\ \ skapad: {0} +out.extracted=extraherat: {0} +out.inflated=\\uppackat: {0} +out.size=(in = {0}) (ut = {1}) -usage=\ -Anv\u00e4ndning: jar-filer {ctxui}[vfm0Me] [jar-fil] [manifestfil] [startpunkt] [-C-katalog] files ...\n\ -Alternativ:\n\ -\ \ -c skapa nytt arkiv\n\ -\ \ -t lista inneh\u00e5llsf\u00f6rteckning f\u00f6r arkiv\n\ -\ \ -x extrahera specifika (eller alla) filer fr\u00e5n arkiv\n\ -\ \ -u uppdatera befintligt arkiv\n\ -\ \ -v generera ytterligare text f\u00f6r standardtext\n\ -\ \ -f ange arkivfilens namn\n\ -\ \ -m ta med manifestinformation fr\u00e5n angiven manifestfil\n\ -\ \ -e ange programstartpunkt f\u00f6r frist\u00e5ende program \n\ -\ \ som medf\u00f6ljer i en k\u00f6rbar jar-fil\n\ -\ \ -0 lagra endast (ingen zip-komprimering)\n\ -\ \ -M skapa inte n\u00e5gon manifestfil f\u00f6r posterna\n\ -\ \ -i generera indexinformation f\u00f6r de angivna jar-filerna\n\ -\ \ -C \u00e4ndra till den angivna katalogen och ta med f\u00f6ljande fil\n\ -Om en fil \u00e4r en katalog bearbetas den rekursivt.\n\ -Namnen p\u00e5 manifestfilen, arkivfilen och startpunkten anges i samma\n\ -ordning som m-, f- och e-flaggorna.\n\n\ -Exempel 1: S\u00e5 h\u00e4r arkiverar du tv\u00e5 klassfiler i ett arkiv vid namn classes.jar: \n\ -\ \ jar cvf classes.jar Foo.class Bar.class \n\ -Exempel 2: Anv\u00e4nd en befintlig manifestfil (mymanifest) och arkivera alla\n\ -\ \ filer fr\u00e5n katalogen foo/ i classes.jar: \n\ -\ \ jar cvfm classes.jar mymanifest -C foo/ .\n +usage=Syntax: jar-filer {ctxui}[vfm0Me] [jar-fil] [manifestfil] [startpunkt] [-C-katalog] ...\nAlternativ:\n\ \ -c skapa nytt arkiv\n\ \ -t lista inneh\u00E5llsf\u00F6rteckning f\u00F6r arkiv\n\ \ -x extrahera namngivna (eller alla) filer fr\u00E5n arkiv\n\ \ -u uppdatera befintligt arkiv\n\ \ -v generera utf\u00F6rliga utdata vid standardutmatning\n\ \ -f ange arkivfilens namn\n\ \ -m inkludera manifestinformation fr\u00E5n angivet manifest\n\ \ -e ange programstartpunkt f\u00F6r frist\u00E5ende applikation \n\ \ som medf\u00F6ljer i en jar-programfil\n\ \ -0 endast lagra (ingen zip-komprimering)\n\ \ -M skapa inte n\u00E5gon manifestfil f\u00F6r posterna\n\ \ -i generera indexinformation f\u00F6r de angivna jar-filerna\n\ \ -C \u00E4ndra till den angivna katalogen och inkludera f\u00F6ljande fil\nOm en fil \u00E4r en katalog bearbetas den rekursivt.\nNamnen p\u00E5 manifestfilen, arkivfilen och startpunkten anges i samma\nordning som m-, f- och e-flaggorna.\n\nExempel 1: S\u00E5 h\u00E4r arkiverar du tv\u00E5 klassfiler i ett arkiv med namnet classes.jar: \n\ \ jar cvf classes.jar Foo.class Bar.class \nExempel 2: Anv\u00E4nd en befintlig manifestfil (mymanifest) och arkivera alla\n\ \ filer fr\u00E5n katalogen foo/ i classes.jar: \n\ \ jar cvfm classes.jar mymanifest -C foo/ .\n diff --git a/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_CN.properties b/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_CN.properties index d6acf045b11..e8ae646c76b 100644 --- a/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_CN.properties +++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_CN.properties @@ -23,69 +23,25 @@ # questions. # -error.cant.open=\ - \u4e0d\u80fd\u6253\u5f00\uff1a{0} -error.illegal.option=\ - \u975e\u6cd5\u9009\u9879\uff1a{0} -error.bad.option=\ - \u5fc5\u987b\u6307\u5b9a {ctxu} \u4e2d\u7684\u4efb\u4e00\u9009\u9879\u3002 -error.bad.cflag=\ -'c' \u6807\u5fd7\u8981\u6c42\u6307\u5b9a\u6e05\u5355\u6216\u8f93\u5165\u6587\u4ef6\uff01 -error.bad.uflag=\ -'u' \u6807\u5fd7\u8981\u6c42\u6307\u5b9a\u6e05\u5355\u3001'e' \u6807\u5fd7\u6216\u8f93\u5165\u6587\u4ef6\uff01 -error.bad.eflag=\ - \u4e0d\u80fd\u540c\u65f6\u6307\u5b9a 'e' \u6807\u5fd7\u548c\u5177\u6709 'Main-Class' \u5c5e\u6027\u7684\n\ - \u6e05\u5355\uff01 -error.nosuch.fileordir=\ - \u6ca1\u6709\u8fd9\u4e2a\u6587\u4ef6\u6216\u76ee\u5f55\uff1a{0} -error.write.file=\ - \u5199\u5b58\u5728\u7684jar\u6587\u4ef6\u65f6\u9519\u8bef -error.create.dir=\ - \u4e0d\u80fd\u521b\u5efa\u76ee\u5f55\uff1a{0} -error.incorrect.length=\ - \u5904\u7406\u65f6\u9047\u5230\u4e0d\u6b63\u786e\u7684\u957f\u5ea6\uff1a{0} -out.added.manifest=\ - \u6807\u660e\u6e05\u5355(manifest) -out.update.manifest=\ - \u66f4\u65b0\u6e05\u5355(manifest) -out.ignore.entry=\ - \u5ffd\u7565\u9879 {0} -out.adding=\ - \u589e\u52a0\uff1a{0} -out.deflated=\ - (\u538b\u7f29\u4e86 {0}%) -out.stored=\ - (\u5b58\u50a8\u4e86 0%) -out.create=\ - \ \ \u521b\u5efa\uff1a{0} -out.extracted=\ - \u5c55\u5f00\uff1a{0} -out.inflated=\ - \ \ \u89e3\u538b {0} -out.size=\ - (\u8bfb\u5165= {0}) (\u5199\u51fa= {1}) +error.cant.open=\u65E0\u6CD5\u6253\u5F00: {0} +error.illegal.option=\u975E\u6CD5\u9009\u9879: {0} +error.bad.option=\u5FC5\u987B\u6307\u5B9A {ctxu} \u4E2D\u7684\u4EFB\u4E00\u9009\u9879\u3002 +error.bad.cflag='c' \u6807\u8BB0\u8981\u6C42\u6307\u5B9A\u6E05\u5355\u6216\u8F93\u5165\u6587\u4EF6! +error.bad.uflag='u' \u6807\u8BB0\u8981\u6C42\u6307\u5B9A\u6E05\u5355, 'e' \u6807\u8BB0\u6216\u8F93\u5165\u6587\u4EF6! +error.bad.eflag=\u4E0D\u80FD\u540C\u65F6\u6307\u5B9A 'e' \u6807\u8BB0\u548C\u5177\u6709 'Main-Class' \u5C5E\u6027\u7684\n\u6E05\u5355! +error.nosuch.fileordir={0}: \u6CA1\u6709\u8FD9\u4E2A\u6587\u4EF6\u6216\u76EE\u5F55 +error.write.file=\u5199\u5165\u73B0\u6709\u7684 jar \u6587\u4EF6\u65F6\u51FA\u9519 +error.create.dir={0}: \u65E0\u6CD5\u521B\u5EFA\u76EE\u5F55 +error.incorrect.length=\u5904\u7406\u65F6\u9047\u5230\u4E0D\u6B63\u786E\u7684\u957F\u5EA6: {0} +out.added.manifest=\u5DF2\u6DFB\u52A0\u6E05\u5355 +out.update.manifest=\u5DF2\u66F4\u65B0\u6E05\u5355 +out.ignore.entry=\u6B63\u5728\u5FFD\u7565\u6761\u76EE{0} +out.adding=\u6B63\u5728\u6DFB\u52A0: {0} +out.deflated=(\u538B\u7F29\u4E86 {0}%) +out.stored=(\u5B58\u50A8\u4E86 0%) +out.create=\ \ \u5DF2\u521B\u5EFA: {0} +out.extracted=\u5DF2\u63D0\u53D6: {0} +out.inflated=\ \ \u5DF2\u89E3\u538B: {0} +out.size=(\u8F93\u5165 = {0}) (\u8F93\u51FA = {1}) -usage=\ -\u7528\u6cd5: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\ -\u9009\u9879\u5305\u62ec\uff1a\n\ -\ \ -c \u521b\u5efa\u65b0\u7684\u5f52\u6863\u6587\u4ef6\n\ -\ \ -t \u5217\u51fa\u5f52\u6863\u76ee\u5f55\n\ -\ \ -x \u89e3\u538b\u7f29\u5df2\u5f52\u6863\u7684\u6307\u5b9a\uff08\u6216\u6240\u6709\uff09\u6587\u4ef6\n\ -\ \ -u \u66f4\u65b0\u73b0\u6709\u7684\u5f52\u6863\u6587\u4ef6\n\ -\ \ -v \u5728\u6807\u51c6\u8f93\u51fa\u4e2d\u751f\u6210\u8be6\u7ec6\u8f93\u51fa\n\ -\ \ -f \u6307\u5b9a\u5f52\u6863\u6587\u4ef6\u540d\n\ -\ \ -m \u5305\u542b\u6307\u5b9a\u6e05\u5355\u6587\u4ef6\u4e2d\u7684\u6e05\u5355\u4fe1\u606f\n\ -\ \ -e \u4e3a\u6346\u7ed1\u5230\u53ef\u6267\u884c jar \u6587\u4ef6\u7684\u72ec\u7acb\u5e94\u7528\u7a0b\u5e8f\n\ -\ \ \u6307\u5b9a\u5e94\u7528\u7a0b\u5e8f\u5165\u53e3\u70b9\n\ -\ \ -0 \u4ec5\u5b58\u50a8\uff1b\u4e0d\u4f7f\u7528\u4efb\u4f55 ZIP \u538b\u7f29\n\ -\ \ -M \u4e0d\u521b\u5efa\u6761\u76ee\u7684\u6e05\u5355\u6587\u4ef6\n\ -\ \ -i \u4e3a\u6307\u5b9a\u7684 jar \u6587\u4ef6\u751f\u6210\u7d22\u5f15\u4fe1\u606f\n\ -\ \ -C \u66f4\u6539\u4e3a\u6307\u5b9a\u7684\u76ee\u5f55\u5e76\u5305\u542b\u5176\u4e2d\u7684\u6587\u4ef6\n\ -\u5982\u679c\u6709\u4efb\u4f55\u76ee\u5f55\u6587\u4ef6\uff0c\u5219\u5bf9\u5176\u8fdb\u884c\u9012\u5f52\u5904\u7406\u3002\n\ -\u6e05\u5355\u6587\u4ef6\u540d\u3001\u5f52\u6863\u6587\u4ef6\u540d\u548c\u5165\u53e3\u70b9\u540d\u7684\u6307\u5b9a\u987a\u5e8f\n\ -\u4e0e "m"\u3001"f" \u548c "e" \u6807\u5fd7\u7684\u6307\u5b9a\u987a\u5e8f\u76f8\u540c\u3002\n\n\ -\u793a\u4f8b 1\uff1a\u5c06\u4e24\u4e2a\u7c7b\u6587\u4ef6\u5f52\u6863\u5230\u4e00\u4e2a\u540d\u4e3a classes.jar \u7684\u5f52\u6863\u6587\u4ef6\u4e2d\uff1a\n\ -\ \ jar cvf classes.jar Foo.class Bar.class \n\ -\u793a\u4f8b 2\uff1a\u4f7f\u7528\u73b0\u6709\u7684\u6e05\u5355\u6587\u4ef6 "mymanifest" \u5e76\n\ -\ \ \u5c06 foo/ \u76ee\u5f55\u4e2d\u7684\u6240\u6709\u6587\u4ef6\u5f52\u6863\u5230 "classes.jar" \u4e2d\uff1a\n\ -\ \ jar cvfm classes.jar mymanifest -C foo/ .\n +usage=\u7528\u6CD5: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u9009\u9879\u5305\u62EC: \n\ \ -c \u521B\u5EFA\u65B0\u7684\u5F52\u6863\u6587\u4EF6\n\ \ -t \u5217\u51FA\u5F52\u6863\u76EE\u5F55\n\ \ -x \u4ECE\u6863\u6848\u4E2D\u63D0\u53D6\u6307\u5B9A\u7684 (\u6216\u6240\u6709) \u6587\u4EF6\n\ \ -u \u66F4\u65B0\u73B0\u6709\u7684\u5F52\u6863\u6587\u4EF6\n\ \ -v \u5728\u6807\u51C6\u8F93\u51FA\u4E2D\u751F\u6210\u8BE6\u7EC6\u8F93\u51FA\n\ \ -f \u6307\u5B9A\u5F52\u6863\u6587\u4EF6\u540D\n\ \ -m \u5305\u542B\u6307\u5B9A\u6E05\u5355\u6587\u4EF6\u4E2D\u7684\u6E05\u5355\u4FE1\u606F\n\ \ -e \u4E3A\u6346\u7ED1\u5230\u53EF\u6267\u884C jar \u6587\u4EF6\u7684\u72EC\u7ACB\u5E94\u7528\u7A0B\u5E8F\n\ \ \u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u5165\u53E3\u70B9\n\ \ -0 \u4EC5\u5B58\u50A8; \u4E0D\u4F7F\u7528\u60C5\u51B5\u4EFB\u4F55 ZIP \u538B\u7F29\n\ \ -M \u4E0D\u521B\u5EFA\u6761\u76EE\u7684\u6E05\u5355\u6587\u4EF6\n\ \ -i \u4E3A\u6307\u5B9A\u7684 jar \u6587\u4EF6\u751F\u6210\u7D22\u5F15\u4FE1\u606F\n\ \ -C \u66F4\u6539\u4E3A\u6307\u5B9A\u7684\u76EE\u5F55\u5E76\u5305\u542B\u5176\u4E2D\u7684\u6587\u4EF6\n\u5982\u679C\u6709\u4EFB\u4F55\u76EE\u5F55\u6587\u4EF6, \u5219\u5BF9\u5176\u8FDB\u884C\u9012\u5F52\u5904\u7406\u3002\n\u6E05\u5355\u6587\u4EF6\u540D, \u5F52\u6863\u6587\u4EF6\u540D\u548C\u5165\u53E3\u70B9\u540D\u79F0\u7684\u6307\u5B9A\u987A\u5E8F\n\u4E0E 'm', 'f' \u548C 'e' \u6807\u8BB0\u7684\u6307\u5B9A\u987A\u5E8F\u76F8\u540C\u3002\n\n\u793A\u4F8B 1: \u5C06\u4E24\u4E2A\u7C7B\u6587\u4EF6\u5F52\u6863\u5230\u4E00\u4E2A\u540D\u4E3A classes.jar \u7684\u5F52\u6863\u6587\u4EF6\u4E2D: \n\ \ jar cvf classes.jar Foo.class Bar.class \n\u793A\u4F8B 2: \u4F7F\u7528\u73B0\u6709\u7684\u6E05\u5355\u6587\u4EF6 'mymanifest' \u5E76\n\ \ \u5C06 foo/ \u76EE\u5F55\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u5F52\u6863\u5230 'classes.jar' \u4E2D: \n\ \ jar cvfm classes.jar mymanifest -C foo/\u3002\n diff --git a/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_TW.properties b/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_TW.properties index e2435b2fb92..79565359fc3 100644 --- a/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_TW.properties +++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_TW.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2006, 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 @@ -23,69 +23,25 @@ # questions. # -error.cant.open=\ - \u7121\u6cd5\u958b\u555f\ufe30{0} -error.illegal.option=\ - \u975e\u6cd5\u7684\u9078\u9805\ufe30{0} -error.bad.option=\ - \u5176\u4e2d\u4e00\u500b\u9078\u9805 -{ctxu} \u5fc5\u9808\u52a0\u4ee5\u6307\u5b9a\u3002 -error.bad.cflag=\ -'c' \u65d7\u6a19\u8981\u6c42\u6307\u5b9a\u6e05\u55ae\u6a94\u6848\u6216\u8f38\u5165\u6a94\u6848\ufe57 -error.bad.uflag=\ -'u' \u65d7\u6a19\u8981\u6c42\u6307\u5b9a\u6e05\u55ae\u6a94\u6848\u3001'e' \u65d7\u6a19\u6a94\u6848\u6216\u8f38\u5165\u6a94\u6848\ufe57 -error.bad.eflag=\ - \u7121\u6cd5\u540c\u6642\u6307\u5b9a 'e' \u65d7\u6a19\u548c\u5177\u6709 'Main-Class' \u5c6c\u6027\u7684\n\ - \u6e05\u55ae\uff01 -error.nosuch.fileordir=\ - {0}\ufe30\u6c92\u6709\u9019\u985e\u6a94\u6848\u6216\u76ee\u9304 -error.write.file=\ - \u5beb\u5165\u73fe\u6709\u7684 jar \u6a94\u6848\u6642\u767c\u751f\u932f\u8aa4 -error.create.dir=\ - {0}\ufe30\u7121\u6cd5\u5efa\u7acb\u76ee\u9304 -error.incorrect.length=\ - \u8655\u7406\ufe30{0} \u6642\u9577\u5ea6\u4e0d\u6b63\u78ba -out.added.manifest=\ - \u65b0\u589e manifest -out.update.manifest=\ - \u66f4\u65b0 manifest -out.ignore.entry=\ - \u5ffd\u7565\u9805\u76ee {0} -out.adding=\ - \u65b0\u589e\ufe30{0} -out.deflated=\ - (\u58d3\u7e2e {0}%) -out.stored=\ - (\u5132\u5b58 0%) -out.create=\ - \u5efa\u7acb\ufe30{0} -out.extracted=\ - \u64f7\u53d6\ufe30{0} -out.inflated=\ - \u64f4\u5c55\ufe30{0} -out.size=\ - \ (\u8b80={0})(\u5beb={1}) +error.cant.open=\u7121\u6CD5\u958B\u555F: {0} +error.illegal.option=\u7121\u6548\u7684\u9078\u9805: {0} +error.bad.option=\u5176\u4E2D\u4E00\u500B\u9078\u9805 -{ctxu} \u5FC5\u9808\u52A0\u4EE5\u6307\u5B9A\u3002 +error.bad.cflag='c' \u65D7\u6A19\u8981\u6C42\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u6216\u8F38\u5165\u6A94\u6848\uFF01 +error.bad.uflag='u' \u65D7\u6A19\u8981\u6C42\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u3001'e' \u65D7\u6A19\u6216\u8F38\u5165\u6A94\u6848\uFF01 +error.bad.eflag=\u7121\u6CD5\u540C\u6642\u6307\u5B9A 'e' \u65D7\u6A19\u548C\u5177\u6709 'Main-Class' \u5C6C\u6027\u7684\n\u8CC7\u8A0A\u6E05\u55AE\uFF01 +error.nosuch.fileordir={0} : \u6C92\u6709\u9019\u985E\u6A94\u6848\u6216\u76EE\u9304 +error.write.file=\u5BEB\u5165\u73FE\u6709\u7684 jar \u6A94\u6848\u6642\u767C\u751F\u932F\u8AA4 +error.create.dir={0} : \u7121\u6CD5\u5EFA\u7ACB\u76EE\u9304 +error.incorrect.length=\u8655\u7406 {0} \u6642\u9577\u5EA6\u4E0D\u6B63\u78BA +out.added.manifest=\u5DF2\u65B0\u589E\u8CC7\u8A0A\u6E05\u55AE +out.update.manifest=\u5DF2\u66F4\u65B0\u8CC7\u8A0A\u6E05\u55AE +out.ignore.entry=\u5FFD\u7565\u9805\u76EE {0} +out.adding=\u65B0\u589E: {0} +out.deflated=(\u58D3\u7E2E {0}%) +out.stored=(\u5132\u5B58 0%) +out.create=\ \ \u5EFA\u7ACB: {0} +out.extracted=\u64F7\u53D6: {0} +out.inflated=\ \\\u64F4\u5C55: {0} +out.size=\ (\u8B80={0})(\u5BEB={1}) -usage=\ -\u7528\u6cd5\uff1ajar {ctxui}[vfm0Me] [jar \u6a94\u6848] [\u6e05\u55ae\u6a94\u6848] [\u9032\u5165\u9ede] [-C \u76ee\u9304] \u6a94\u6848 ...\n\ -\u9078\u9805\uff1a\n\ -\ \ -c \u5efa\u7acb\u65b0\u7684\u6b78\u6a94\n\ -\ \ -t \u5217\u51fa\u6b78\u6a94\u7684\u76ee\u9304\n\ -\ \ -x \u5f9e\u6b78\u6a94\u4e2d\u64f7\u53d6\u5df2\u547d\u540d\u7684 (\u6216\u6240\u6709) \u6a94\u6848\n\ -\ \ -u \u66f4\u65b0\u73fe\u6709\u6b78\u6a94\n\ -\ \ -v \u5728\u6a19\u6e96\u8f38\u51fa\u4e2d\u7522\u751f\u8a73\u7d30\u8f38\u51fa\n\ -\ \ -f \u6307\u5b9a\u6b78\u6a94\u6a94\u6848\u540d\u7a31\n\ -\ \ -m \u5305\u542b\u6307\u5b9a\u6e05\u55ae\u6a94\u6848\u4e2d\u7684\u6e05\u55ae\u8cc7\u8a0a\n\ -\ \ -e \u70ba\u7368\u7acb\u61c9\u7528\u7a0b\u5f0f\u6307\u5b9a\u61c9\u7528\u7a0b\u5f0f\u9032\u5165\u9ede\n\ -\ \ \u5df2\u96a8\u9644\u65bc\u53ef\u57f7\u884c jar \u6a94\u6848\u4e2d\n\ -\ \ -0 \u50c5\u5132\u5b58\uff1b\u4e0d\u4f7f\u7528 ZIP \u58d3\u7e2e\u65b9\u5f0f\n\ -\ \ -M \u4e0d\u70ba\u9805\u76ee\u5efa\u7acb\u6e05\u55ae\u6a94\u6848\n\ -\ \ -i \u70ba\u6307\u5b9a\u7684 jar \u6a94\u6848\u7522\u751f\u7d22\u5f15\u8cc7\u8a0a\n\ -\ \ -C \u8b8a\u66f4\u81f3\u6307\u5b9a\u76ee\u9304\u4e26\u5305\u542b\u5f8c\u9762\u6240\u5217\u7684\u6a94\u6848\n\ -\u5982\u679c\u6709\u4efb\u4f55\u6a94\u6848\u662f\u76ee\u9304\uff0c\u5247\u6703\u5c0d\u5176\u9032\u884c\u905e\u8ff4\u8655\u7406\u3002\n\ -\u6e05\u55ae\u6a94\u6848\u540d\u7a31\u3001\u6b78\u6a94\u6a94\u6848\u540d\u7a31\u548c\u9032\u5165\u9ede\u540d\u7a31\n\ -\u7684\u6307\u5b9a\u9806\u5e8f\u8207\u6307\u5b9a 'm' \u65d7\u6a19\u3001'f' \u65d7\u6a19\u548c 'e' \u65d7\u6a19\u7684\u9806\u5e8f\u76f8\u540c\u3002\n\n\ -\u7bc4\u4f8b 1\uff1a\u5c07\u5169\u500b\u985e\u5225\u6a94\u6848\u6b78\u6a94\u81f3\u540d\u70ba classes.jar \u7684\u6b78\u6a94\u4e2d\uff1a\n\ -\ \ jar cvf classes.jar Foo.class Bar.class\n\ -\u7bc4\u4f8b 2\uff1a\u4f7f\u7528\u73fe\u6709\u6e05\u55ae\u6a94\u6848 'mymanifest' \u4e26\u5c07\n\ -\ \ foo/ \u76ee\u9304\u4e2d\u7684\u6240\u6709\u6a94\u6848\u6b78\u6a94\u81f3 'classes.jar' \u4e2d\uff1a\n\ -\ \ jar cvfm classes.jar mymanifest -C foo/ .\n +usage=\u7528\u6CD5: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] \u6A94\u6848 ...\n\u9078\u9805:\n\ \ -c \u5EFA\u7ACB\u65B0\u7684\u6B78\u6A94\n\ \ -t \u5217\u51FA\u6B78\u6A94\u7684\u76EE\u9304\n\ \ -x \u5F9E\u6B78\u6A94\u4E2D\u64F7\u53D6\u5DF2\u547D\u540D\u7684 (\u6216\u6240\u6709) \u6A94\u6848\n\ \ -u \u66F4\u65B0\u73FE\u6709\u6B78\u6A94\n\ \ -v \u5728\u6A19\u6E96\u8F38\u51FA\u4E2D\u7522\u751F\u8A73\u7D30\u8F38\u51FA\n\ \ -f \u6307\u5B9A\u6B78\u6A94\u6A94\u6848\u540D\u7A31\n\ \ -m \u5305\u542B\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u4E2D\u7684\u8CC7\u8A0A\u6E05\u55AE\u8CC7\u8A0A\n\ \ -e \u70BA\u7368\u7ACB\u61C9\u7528\u7A0B\u5F0F\u6307\u5B9A\u61C9\u7528\u7A0B\u5F0F\u9032\u5165\u9EDE\n\ \ \u5DF2\u96A8\u9644\u65BC\u53EF\u57F7\u884C jar \u6A94\u6848\u4E2D\n\ \ -0 \u50C5\u5132\u5B58; \u4E0D\u4F7F\u7528 ZIP \u58D3\u7E2E\u65B9\u5F0F\n\ \ -M \u4E0D\u70BA\u9805\u76EE\u5EFA\u7ACB\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848\n\ \ -i \u70BA\u6307\u5B9A\u7684 jar \u6A94\u6848\u7522\u751F\u7D22\u5F15\u8CC7\u8A0A\n\ \ -C \u8B8A\u66F4\u81F3\u6307\u5B9A\u76EE\u9304\u4E26\u5305\u542B\u5F8C\u9762\u6240\u5217\u7684\u6A94\u6848\n\u5982\u679C\u6709\u4EFB\u4F55\u6A94\u6848\u662F\u76EE\u9304\uFF0C\u5247\u6703\u5C0D\u5176\u9032\u884C\u905E\u8FF4\u8655\u7406\u3002\n\u6E05\u55AE\u6A94\u6848\u540D\u7A31\u3001\u6B78\u6A94\u6A94\u6848\u540D\u7A31\u548C\u9032\u5165\u9EDE\u540D\u7A31\n\u7684\u6307\u5B9A\u9806\u5E8F\u8207\u6307\u5B9A 'm' \u65D7\u6A19\u3001'f' \u65D7\u6A19\u548C 'e' \u65D7\u6A19\u7684\u9806\u5E8F\u76F8\u540C\u3002\n\n\u7BC4\u4F8B 1: \u5C07\u5169\u500B\u985E\u5225\u6A94\u6848\u6B78\u6A94\u81F3\u540D\u70BA classes.jar \u7684\u6B78\u6A94\u4E2D: \n\ \ jar cvf classes.jar Foo.class Bar.class\n\u7BC4\u4F8B 2: \u4F7F\u7528\u73FE\u6709\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848 'mymanifest' \u4E26\u5C07\n\ \ foo/ \u76EE\u9304\u4E2D\u7684\u6240\u6709\u6A94\u6848\u6B78\u6A94\u81F3 'classes.jar' \u4E2D: \n\ \ jar cvfm classes.jar mymanifest -C foo/ .\n diff --git a/jdk/src/share/classes/sun/tools/javac/resources/javac_ja.properties b/jdk/src/share/classes/sun/tools/javac/resources/javac_ja.properties index c2fa6785ebc..d2febeb5a74 100644 --- a/jdk/src/share/classes/sun/tools/javac/resources/javac_ja.properties +++ b/jdk/src/share/classes/sun/tools/javac/resources/javac_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1996, 1999, 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 @@ -23,612 +23,292 @@ # questions. # -javac.err.internal=\ - \u5185\u90e8\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -javac.err.eof.in.comment=\ - \u30b3\u30e1\u30f3\u30c8\u304c\u5165\u529b\u306e\u6700\u5f8c\u3067\u7d42\u4e86\u3057\u3066\u3044\u307e\u305b\u3093\u3002 -javac.err.eof.in.string=\ - \u6587\u5b57\u5217\u304c\u5165\u529b\u306e\u6700\u5f8c\u3067\u7d42\u4e86\u3057\u3066\u3044\u307e\u305b\u3093\u3002 -javac.err.newline.in.string=\ - \u6587\u5b57\u5217\u304c\u884c\u306e\u6700\u5f8c\u3067\u7d42\u4e86\u3057\u3066\u3044\u307e\u305b\u3093\u3002 -javac.err.invalid.char.constant=\ - \u7121\u52b9\u306a\u6587\u5b57\u5b9a\u6570\u3067\u3059\u3002 -javac.err.unbalanced.paren=\ - \u62ec\u5f27\u304c\u91e3\u308a\u5408\u3063\u3066\u3044\u307e\u305b\u3093\u3002 -javac.err.invalid.escape.char=\ - \u30a8\u30b9\u30b1\u30fc\u30d7\u6587\u5b57\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.invalid.hex.number=\ - 16 \u9032\u6570\u5b57\u306f\u5c11\u306a\u304f\u3068\u3082 1 \u6841\u306e 16 \u9032\u6570\u3092\u542b\u307e\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.invalid.octal.number=\ - 8 \u9032\u6570\u5b57\u5185\u306b\u7121\u52b9\u306a\u6587\u5b57\u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.invalid.number=\ - \u6570\u5b57\u5185\u306b\u7121\u52b9\u306a\u6587\u5b57\u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.funny.char=\ - \u5165\u529b\u5185\u306b\u7121\u52b9\u306a\u6587\u5b57\u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.float.format=\ - \u6d6e\u52d5\u5c0f\u6570\u70b9\u306e\u5f62\u5f0f\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.overflow.int.oct=\ - \u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u30028 \u9032\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u306f 00 \u304b\u3089 037777777777 \ - \u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.overflow.int.dec=\ - \u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u300210 \u9032\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u306f -2147483648 \u304b\u3089 \ - 2147483647 \u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.overflow.int.hex=\ - \u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u300216 \u9032\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u306f 0x0 \u304b\u3089 0xffffffff \ - \u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.overflow.long.oct=\ - \u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u30028 \u9032\u30ed\u30f3\u30b0\u30ea\u30c6\u30e9\u30eb\u306f 00L \u304b\u3089 \ - 01777777777777777777777L \u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.overflow.long.dec=\ - \u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u300210 \u9032\u30ed\u30f3\u30b0\u30ea\u30c6\u30e9\u30eb\u306f -9223372036854775808L \ - \u304b\u3089 9223372036854775807L \u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.overflow.long.hex=\ - \u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u300216 \u9032\u30ed\u30f3\u30b0\u30ea\u30c6\u30e9\u30eb\u306f 0x0L \u304b\u3089 \ - 0xffffffffffffffffL \u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.overflow.float=\ - \u6570\u5024\u304c\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3057\u305f: \u6d6e\u52d5\u30ea\u30c6\u30e9\u30eb\u304c\u5927\u304d\u904e\u304e\u307e\u3059\u3002 -javac.err.overflow.double=\ - \u6570\u5024\u304c\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3057\u305f: \u500d\u7cbe\u5ea6\u30ea\u30c6\u30e9\u30eb\u304c\u5927\u304d\u904e\u304e\u307e\u3059\u3002 -javac.err.underflow.float=\ - \u6570\u5024\u304c\u30a2\u30f3\u30c0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3057\u305f: \u6d6e\u52d5\u30ea\u30c6\u30e9\u30eb\u304c\u5c0f\u3055\u904e\u304e\u307e\u3059\u3002 -javac.err.underflow.double=\ - \u6570\u5024\u304c\u30a2\u30f3\u30c0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3057\u305f: \u500d\u7cbe\u5ea6\u30ea\u30c6\u30e9\u30eb\u304c\u5c0f\u3055\u904e\u304e\u307e\u3059\u3002 -javac.err.token.expected=\ - ''{0}'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.statement.expected=\ - \u6587\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.type.expected=\ - \u578b\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.identifier.expected=\ - \u8b58\u5225\u5b50\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.class.expected=\ - \u30ad\u30fc\u30ef\u30fc\u30c9 ''class'' \u307e\u305f\u306f ''interface'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.toplevel.expected=\ - \u30af\u30e9\u30b9\u307e\u305f\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u5ba3\u8a00\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.missing.term=\ - \u9805\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.assign.in.conditionalexpr=\ - \u4ee3\u5165\u5f0f\u306f\u6761\u4ef6\u5f0f (\u3064\u307e\u308a\u3001? : \u5f0f) \u306e 3 \u756a\u76ee\u306e\u90e8\u5206\u5f0f\u3068\u3057\u3066\u306f\u4f7f\u7528 \ - \u3067\u304d\u307e\u305b\u3093\u3002 \ - \u3053\u306e\u4ee3\u5165\u5f0f\u3092\u62ec\u5f27\u3067\u56f2\u3093\u3067\u5165\u529b\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.else.without.if=\ - ''else'' \u3078\u306e ''if'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.catch.without.try=\ - ''catch'' \u3078\u306e ''try'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.finally.without.try=\ - ''finally'' \u3078\u306e ''try'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.try.without.catch.finally=\ - ''try'' \u3078\u306e ''catch'' \u307e\u305f\u306f ''finally'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.case.without.switch=\ - switch \u6587\u306e\u5916\u306b ''case'' \u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.default.without.switch=\ - switch \u6587\u306e\u5916\u306b ''default'' \u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.io.exception=\ - {0} \u3067\u5165\u51fa\u529b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -javac.err.io.exception.package=\ - \u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306e\u6709\u7121\u3092\u78ba\u8a8d\u4e2d\u306b\u5165\u51fa\u529b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -javac.err.malformed.attribute=\ - {0} \u3092\u542b\u3080\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u5f0f\u304c\u4e0d\u6b63\u306a\u5c5e\u6027 ''{1}'' \u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.array.index.required=\ - \u914d\u5217\u306e\u6dfb\u3048\u5b57\u304c\u5fc5\u8981\u3067\u3059\u3002 -javac.err.not.array=\ - [] \u306f\u914d\u5217\u306b\u306e\u307f\u9069\u7528\u3067\u304d\u307e\u3059\u3002{0} \u306b\u306f\u9069\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.array.dim.in.decl=\ - \u5ba3\u8a00\u4e2d\u3067\u306f\u914d\u5217\u306e\u6b21\u5143\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.array.dim.in.type=\ - \u578b\u8868\u73fe\u4e2d\u3067\u306f\u914d\u5217\u306e\u6b21\u5143\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.invalid.array.expr=\ - \u914d\u5217\u5b9a\u6570\u306f\u521d\u671f\u5316\u5b50\u3067\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 -javac.err.invalid.array.init=\ - {0} \u578b\u3078\u306e\u521d\u671f\u5316\u5b50\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.invalid.lhs.assignment=\ - \u4ee3\u5165\u306e\u5de6\u8fba\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.invalid.args=\ - {0} \u3078\u306e\u5f15\u6570\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.invalid.cast=\ - {0} \u304b\u3089 {1} \u3078\u306e\u30ad\u30e3\u30b9\u30c8\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.invalid.instanceof=\ - {0} \u306f {1} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u306f\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.invalid.type.expr=\ - \u578b\u5f0f\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.anonymous.extends=\ - \u540d\u524d\u306e\u306a\u3044\u30af\u30e9\u30b9\u304c ''extends'' \u7bc0\u307e\u305f\u306f ''implements'' \u7bc0\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.invalid.field.reference=\ - {1} \u304b\u3089\u30d5\u30a3\u30fc\u30eb\u30c9 {0} \u3092\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 -javac.err.no.such.field=\ - {1} \u306b\u306f\u5909\u6570 {0} \u306f\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -javac.err.no.field.access=\ - {1} \u5185\u306e\u5909\u6570 {0} \u306f {2} \u304b\u3089\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.no.type.access=\ - {1} \u5185\u306e\u5185\u90e8\u578b {0} \u306f {2} \u304b\u3089\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.cant.access.member.type=\ - \u30e1\u30f3\u30d0\u30fc {0} \u3092\u6301\u3064\u578b {1} \u306f {2} \u304b\u3089\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.inner.class.expected=\ - \u5185\u90e8\u30af\u30e9\u30b9 {0} \u304c {1} \u306b\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.no.static.field.access=\ - {1} \u5185\u306e static \u3067\u306a\u3044\u5909\u6570 {0} \u3092 static \u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.inner.static.ref=\ - \u5185\u90e8\u30af\u30e9\u30b9 {0} \u3092 static \u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.ambig.field=\ - {0} \u3078\u306e\u53c2\u7167\u304c\u3042\u3044\u307e\u3044\u3067\u3059\u3002{1} \u3068 {2} \u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.invalid.field=\ - {1} \u5185\u306e\u30e1\u30bd\u30c3\u30c9 {0} \u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3068\u3057\u3066\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 -javac.err.assign.to.final=\ - final \u5909\u6570 {0} \u306b\u5024\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.assign.to.blank.final=\ - \u30d6\u30e9\u30f3\u30af final \u5909\u6570 {0} \u306b 2 \u56de\u4ee5\u4e0a\u5024\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.qualified.static.final.assign=\ - static \u30d6\u30e9\u30f3\u30af final \u3078\u306e\u4ee3\u5165\u306b\u4f7f\u7528\u3059\u308b\u5909\u6570\u306f\u5358\u7d14\u540d\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 (\u30c9\u30c3\u30c8 ''.'' \u304c\u4ed8\u3044\u3066\u306f\u3044\u3051\u307e\u305b\u3093)\u3002 -javac.err.bad.qualified.final.assign=\ - \u30d6\u30e9\u30f3\u30af final \u3078\u306e\u4ee3\u5165\u306b\u4f7f\u7528\u3059\u308b\u5909\u6570\u306f\u5358\u7d14\u306a\u540d\u524d\u3001\u307e\u305f\u306f ''this'' \u3067\u4fee\u98fe\u3055\u308c\u305f\u5358\u7d14\u306a\u540d\u524d\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093: ''{0}'' \u307e\u305f\u306f ''this.{0}'' -javac.err.assign.to.blank.final.in.loop=\ - \u30d6\u30e9\u30f3\u30af final \u5909\u6570 {0} \u306b\u30eb\u30fc\u30d7\u4e2d\u3067\u4ee3\u5165\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002\u521d\u671f\u5316\u306f\u5fc5\u305a 1 \u56de\u9650\u308a\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.assign.to.uplevel=\ - \u5909\u6570 {0} \u306b\u7570\u306a\u308b\u30e1\u30bd\u30c3\u30c9\u304b\u3089\u4ee3\u5165\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002\u30af\u30e9\u30b9\u5b9a\u7fa9\u3092\u56f2\u3080\u30d6\u30ed\u30c3\u30af\u304b\u3089\u306f\u3001\u5185\u5074\u306e\u30af\u30e9\u30b9\u3067\u306f\u30d6\u30ed\u30c3\u30af\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u5909\u6570\u306e\u3046\u3061\u5c40\u6240\u7684\u306a final \u5909\u6570\u3060\u3051\u304c\u6709\u52b9\u3067\u3059\u3002 -javac.err.invalid.uplevel=\ - \u5909\u6570 {0} \u306b\u7570\u306a\u308b\u30e1\u30bd\u30c3\u30c9\u4e2d\u304b\u3089\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002\u30af\u30e9\u30b9\u5b9a\u7fa9\u3092\u56f2\u3080\u30d6\u30ed\u30c3\u30af\u304b\u3089\u306f\u3001\u5185\u5074\u306e\u30af\u30e9\u30b9\u3067\u306f\u30d6\u30ed\u30c3\u30af\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u5909\u6570\u306e\u3046\u3061\u5c40\u6240\u7684\u306a final \u5909\u6570\u3060\u3051\u304c\u6709\u52b9\u3067\u3059\u3002 -javac.err.undef.var=\ - {0} \u306f\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u3067\u3059\u3002 -javac.err.undef.var.super=\ - {0} \u306f\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u3067\u3059\u3002\u30ad\u30fc\u30ef\u30fc\u30c9 "super" \u306f\u3001\u30e1\u30f3\u30d0\u30fc\u306e\u30a2\u30af\u30bb\u30b9\u307e\u305f\u306f\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u547c\u3073\u51fa\u3057\u306b\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 -javac.err.undef.var.or.package=\ - {0} \u306f\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u307e\u305f\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3067\u3059\u3002 -javac.err.undef.class.or.package=\ - {0} \u306f\u672a\u5b9a\u7fa9\u306e\u30af\u30e9\u30b9\u307e\u305f\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3067\u3059\u3002 -javac.err.undef.var.class.or.package=\ - {0} \u306f\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u3001\u30af\u30e9\u30b9\u3001\u307e\u305f\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3067\u3059\u3002 -javac.err.undef.class=\ - {0} \u306f\u672a\u5b9a\u7fa9\u306e\u30af\u30e9\u30b9\u540d\u3067\u3059\u3002 -javac.err.undef.var.or.class=\ - {0} \u306f\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u307e\u305f\u306f\u30af\u30e9\u30b9\u540d\u3067\u3059\u3002 -javac.err.var.not.initialized=\ - \u5909\u6570 {0} \u306f\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.final.var.not.initialized=\ - \u30d6\u30e9\u30f3\u30af final \u5909\u6570 ''{0}'' \u306f\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30d6\u30e9\u30f3\u30af final \u5909\u6570\u306b\u306f\u521d\u671f\u5316\u5b50\u307e\u305f\u306f\u5404\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3067\u5024\u304c\u4ee3\u5165\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.access.inst.before.super=\ - \u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u524d\u306b {0} \u3092\u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.ambig.class=\ - {0} \u304a\u3088\u3073 {1} \u306e\u30af\u30e9\u30b9\u5b9a\u7fa9\u304c\u3042\u3044\u307e\u3044\u3067\u3059\u3002 -javac.err.invalid.arg=\ - {0} \u3078\u306e\u5f15\u6570\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.invalid.arg.type=\ - {1} \u306b\u5bfe\u3059\u308b\u5f15\u6570\u306e\u578b {0} \u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.invalid.length=\ - \u578b {0} \u306b ''length'' \u3092\u9069\u7528\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u304c\u3001\u3053\u308c\u306f\u914d\u5217\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.invalid.constr.invoke=\ - \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u4ee5\u5916\u304b\u3089\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.constr.invoke.not.first=\ - \u30e1\u30bd\u30c3\u30c9\u5185\u3067\u306f\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u6700\u521d\u306b\u547c\u3073\u51fa\u3055\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.invalid.method.invoke=\ - {0} \u306e\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.undef.meth=\ - \u30e1\u30bd\u30c3\u30c9 {0} \u306f {1} \u3067\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -javac.err.no.meth.access=\ - {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f {2} \u304b\u3089\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002 +javac.err.internal=\u5185\u90E8\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 +javac.err.eof.in.comment=\u30B3\u30E1\u30F3\u30C8\u304C\u5165\u529B\u306E\u6700\u5F8C\u3067\u7D42\u4E86\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +javac.err.eof.in.string=\u6587\u5B57\u5217\u304C\u5165\u529B\u306E\u6700\u5F8C\u3067\u7D42\u4E86\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +javac.err.newline.in.string=\u6587\u5B57\u5217\u304C\u884C\u306E\u6700\u5F8C\u3067\u7D42\u4E86\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +javac.err.invalid.char.constant=\u7121\u52B9\u306A\u6587\u5B57\u5B9A\u6570\u3067\u3059\u3002 +javac.err.unbalanced.paren=\u30AB\u30C3\u30B3\u304C\u4E00\u81F4\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +javac.err.invalid.escape.char=\u30A8\u30B9\u30B1\u30FC\u30D7\u6587\u5B57\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.invalid.hex.number=16\u9032\u6570\u5B57\u306F\u5C11\u306A\u304F\u3068\u30821\u6841\u306E16\u9032\u6570\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.invalid.octal.number=8\u9032\u6570\u5B57\u5185\u306B\u7121\u52B9\u306A\u6587\u5B57\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.invalid.number=\u6570\u5B57\u5185\u306B\u7121\u52B9\u306A\u6587\u5B57\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.funny.char=\u5165\u529B\u5185\u306B\u7121\u52B9\u306A\u6587\u5B57\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.float.format=\u6D6E\u52D5\u5C0F\u6570\u70B9\u306E\u5F62\u5F0F\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.overflow.int.oct=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u30028\u9032\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u306F00\u304B\u3089037777777777\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.overflow.int.dec=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u300210\u9032\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u306F -2147483648\u304B\u30892147483647\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.overflow.int.hex=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u300216\u9032\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u306F0x0\u304B\u30890xffffffff\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.overflow.long.oct=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u30028\u9032\u30ED\u30F3\u30B0\u30FB\u30EA\u30C6\u30E9\u30EB\u306F00L\u304B\u308901777777777777777777777L\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.overflow.long.dec=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u300210\u9032\u30ED\u30F3\u30B0\u30FB\u30EA\u30C6\u30E9\u30EB\u306F -9223372036854775808L\u304B\u30899223372036854775807L\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.overflow.long.hex=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u300216\u9032\u30ED\u30F3\u30B0\u30FB\u30EA\u30C6\u30E9\u30EB\u306F0x0L\u304B\u30890xffffffffffffffffL\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.overflow.float=\u6570\u5024\u304C\u30AA\u30FC\u30D0\u30FC\u30D5\u30ED\u30FC\u3057\u307E\u3057\u305F: \u6D6E\u52D5\u30EA\u30C6\u30E9\u30EB\u304C\u5927\u304D\u3059\u304E\u307E\u3059\u3002 +javac.err.overflow.double=\u6570\u5024\u304C\u30AA\u30FC\u30D0\u30FC\u30D5\u30ED\u30FC\u3057\u307E\u3057\u305F: \u500D\u7CBE\u5EA6\u30EA\u30C6\u30E9\u30EB\u304C\u5927\u304D\u3059\u304E\u307E\u3059\u3002 +javac.err.underflow.float=\u6570\u5024\u304C\u30A2\u30F3\u30C0\u30FC\u30D5\u30ED\u30FC\u3057\u307E\u3057\u305F: \u6D6E\u52D5\u30EA\u30C6\u30E9\u30EB\u304C\u5C0F\u3055\u3059\u304E\u307E\u3059\u3002 +javac.err.underflow.double=\u6570\u5024\u304C\u30A2\u30F3\u30C0\u30FC\u30D5\u30ED\u30FC\u3057\u307E\u3057\u305F: \u500D\u7CBE\u5EA6\u30EA\u30C6\u30E9\u30EB\u304C\u5C0F\u3055\u3059\u304E\u307E\u3059\u3002 +javac.err.token.expected=''{0}''\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.statement.expected=\u6587\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.type.expected=\u578B\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.identifier.expected=\u8B58\u5225\u5B50\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.class.expected=\u30AD\u30FC\u30EF\u30FC\u30C9''class''\u307E\u305F\u306F''interface''\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.toplevel.expected=\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u5BA3\u8A00\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.missing.term=\u9805\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.assign.in.conditionalexpr=\u4EE3\u5165\u5F0F\u306F\u6761\u4EF6\u5F0F(\u3064\u307E\u308A\u3001? : \u5F0F)\u306E3\u756A\u76EE\u306E\u90E8\u5206\u5F0F\u3068\u3057\u3066\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u4EE3\u5165\u5F0F\u3092\u30AB\u30C3\u30B3\u3067\u56F2\u3093\u3067\u5165\u529B\u3057\u3066\u307F\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.else.without.if=''else''\u3078\u306E''if''\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.catch.without.try=''catch''\u3078\u306E''try''\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.finally.without.try=''finally''\u3078\u306E''try''\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.try.without.catch.finally=''try''\u3078\u306E''catch''\u307E\u305F\u306F''finally''\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.case.without.switch=switch\u6587\u306E\u5916\u306B''case''\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.default.without.switch=switch\u6587\u306E\u5916\u306B''default''\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.io.exception={0}\u3067\u5165\u51FA\u529B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 +javac.err.io.exception.package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306E\u6709\u7121\u3092\u78BA\u8A8D\u4E2D\u306B\u5165\u51FA\u529B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 +javac.err.malformed.attribute={0}\u3092\u542B\u3080\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u5F0F\u304C\u4E0D\u6B63\u306A\u5C5E\u6027''{1}''\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.array.index.required=\u914D\u5217\u306E\u6DFB\u3048\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002 +javac.err.not.array=[]\u306F\u914D\u5217\u306B\u306E\u307F\u9069\u7528\u3067\u304D\u307E\u3059\u3002{0}\u306B\u306F\u9069\u7528\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.array.dim.in.decl=\u5BA3\u8A00\u4E2D\u3067\u306F\u914D\u5217\u306E\u6B21\u5143\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.array.dim.in.type=\u578B\u8868\u73FE\u4E2D\u3067\u306F\u914D\u5217\u306E\u6B21\u5143\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.invalid.array.expr=\u914D\u5217\u5B9A\u6570\u306F\u521D\u671F\u5316\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002 +javac.err.invalid.array.init={0}\u578B\u3078\u306E\u521D\u671F\u5316\u5B50\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.invalid.lhs.assignment=\u4EE3\u5165\u306E\u5DE6\u8FBA\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.invalid.args={0}\u3078\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.invalid.cast={0}\u304B\u3089{1}\u3078\u306E\u30AD\u30E3\u30B9\u30C8\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.invalid.instanceof={0}\u306F{1}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u306B\u306F\u306A\u308A\u307E\u305B\u3093\u3002 +javac.err.invalid.type.expr=\u578B\u5F0F\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.anonymous.extends=\u540D\u524D\u306E\u306A\u3044\u30AF\u30E9\u30B9\u304C''extends''\u7BC0\u307E\u305F\u306F''implements''\u7BC0\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.invalid.field.reference={1}\u304B\u3089\u30D5\u30A3\u30FC\u30EB\u30C9{0}\u3092\u53C2\u7167\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002 +javac.err.no.such.field={1}\u306B\u306F\u5909\u6570{0}\u306F\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +javac.err.no.field.access={1}\u5185\u306E\u5909\u6570{0}\u306F{2}\u304B\u3089\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.no.type.access={1}\u5185\u306E\u5185\u90E8\u578B{0}\u306F{2}\u304B\u3089\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.cant.access.member.type=\u30E1\u30F3\u30D0\u30FC{0}\u3092\u6301\u3064\u578B{1}\u306F{2}\u304B\u3089\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.inner.class.expected=\u5185\u90E8\u30AF\u30E9\u30B9{0}\u304C{1}\u306B\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.no.static.field.access={1}\u5185\u306Estatic\u3067\u306A\u3044\u5909\u6570{0}\u3092static\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.inner.static.ref=\u5185\u90E8\u30AF\u30E9\u30B9{0}\u3092static\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.ambig.field={0}\u3078\u306E\u53C2\u7167\u304C\u3042\u3044\u307E\u3044\u3067\u3059\u3002{1}\u3068{2}\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.invalid.field={1}\u5185\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5909\u6570\u3068\u3057\u3066\u53C2\u7167\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002 +javac.err.assign.to.final=final\u5909\u6570{0}\u306B\u5024\u3092\u4EE3\u5165\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.assign.to.blank.final=\u30D6\u30E9\u30F3\u30AFfinal\u5909\u6570{0}\u306B2\u56DE\u4EE5\u4E0A\u5024\u3092\u4EE3\u5165\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.qualified.static.final.assign=static\u30D6\u30E9\u30F3\u30AFfinal\u3078\u306E\u4EE3\u5165\u306B\u4F7F\u7528\u3059\u308B\u5909\u6570\u306F\u5358\u7D14\u540D\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059(\u30C9\u30C3\u30C8''.''\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093)\u3002 +javac.err.bad.qualified.final.assign=\u30D6\u30E9\u30F3\u30AFfinal\u3078\u306E\u4EE3\u5165\u306B\u4F7F\u7528\u3059\u308B\u5909\u6570\u306F\u5358\u7D14\u306A\u540D\u524D\u3001\u307E\u305F\u306F''this''\u3067\u4FEE\u98FE\u3055\u308C\u305F\u5358\u7D14\u306A\u540D\u524D\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: ''{0}''\u307E\u305F\u306F''this.{0}'' +javac.err.assign.to.blank.final.in.loop=\u30D6\u30E9\u30F3\u30AFfinal\u5909\u6570{0}\u306B\u30EB\u30FC\u30D7\u4E2D\u3067\u4EE3\u5165\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002\u521D\u671F\u5316\u306F\u5FC5\u305A1\u56DE\u9650\u308A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.assign.to.uplevel=\u5909\u6570{0}\u306B\u7570\u306A\u308B\u30E1\u30BD\u30C3\u30C9\u304B\u3089\u4EE3\u5165\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002\u30AF\u30E9\u30B9\u5B9A\u7FA9\u3092\u56F2\u3080\u30D6\u30ED\u30C3\u30AF\u304B\u3089\u306F\u3001\u5185\u5074\u306E\u30AF\u30E9\u30B9\u3067\u306F\u30D6\u30ED\u30C3\u30AF\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u5909\u6570\u306E\u3046\u3061\u5C40\u6240\u7684\u306Afinal\u5909\u6570\u306E\u307F\u304C\u6709\u52B9\u3067\u3059\u3002 +javac.err.invalid.uplevel=final\u3067\u306A\u3044\u5909\u6570{0}\u306B\u7570\u306A\u308B\u30E1\u30BD\u30C3\u30C9\u4E2D\u304B\u3089\u53C2\u7167\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002\u30AF\u30E9\u30B9\u5B9A\u7FA9\u3092\u56F2\u3080\u30D6\u30ED\u30C3\u30AF\u304B\u3089\u306F\u3001\u5185\u5074\u306E\u30AF\u30E9\u30B9\u3067\u306F\u30D6\u30ED\u30C3\u30AF\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u5909\u6570\u306E\u3046\u3061\u5C40\u6240\u7684\u306Afinal\u5909\u6570\u306E\u307F\u304C\u6709\u52B9\u3067\u3059\u3002 +javac.err.undef.var={0}\u306F\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3067\u3059 +javac.err.undef.var.super={0}\u306F\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3067\u3059\u3002\u30AD\u30FC\u30EF\u30FC\u30C9"super"\u306F\u3001\u30E1\u30F3\u30D0\u30FC\u306E\u30A2\u30AF\u30BB\u30B9\u307E\u305F\u306F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u547C\u51FA\u3057\u306B\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002 +javac.err.undef.var.or.package={0}\u306F\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u307E\u305F\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u3067\u3059 +javac.err.undef.class.or.package={0}\u306F\u672A\u5B9A\u7FA9\u306E\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u3067\u3059 +javac.err.undef.var.class.or.package={0}\u306F\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3001\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u3067\u3059 +javac.err.undef.class={0}\u306F\u672A\u5B9A\u7FA9\u306E\u30AF\u30E9\u30B9\u540D\u3067\u3059 +javac.err.undef.var.or.class={0}\u306F\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u307E\u305F\u306F\u30AF\u30E9\u30B9\u540D\u3067\u3059 +javac.err.var.not.initialized=\u5909\u6570{0}\u306F\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.final.var.not.initialized=\u30D6\u30E9\u30F3\u30AFfinal\u5909\u6570''{0}''\u306F\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u30D6\u30E9\u30F3\u30AFfinal\u5909\u6570\u306B\u306F\u521D\u671F\u5316\u5B50\u307E\u305F\u306F\u5404\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3067\u5024\u304C\u4EE3\u5165\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.access.inst.before.super=\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u304C\u547C\u3073\u51FA\u3055\u308C\u308B\u524D\u306B{0}\u3092\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.ambig.class={0}\u304A\u3088\u3073{1}\u306E\u30AF\u30E9\u30B9\u5B9A\u7FA9\u304C\u3042\u3044\u307E\u3044\u3067\u3059 +javac.err.invalid.arg={0}\u3078\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.invalid.arg.type={1}\u306B\u5BFE\u3059\u308B\u5F15\u6570\u306E\u578B{0}\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.invalid.length=\u578B{0}\u306B''length''\u3092\u9069\u7528\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u304C\u3001\u3053\u308C\u306F\u914D\u5217\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.invalid.constr.invoke=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u4EE5\u5916\u304B\u3089\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u547C\u3073\u51FA\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.constr.invoke.not.first=\u30E1\u30BD\u30C3\u30C9\u5185\u3067\u306F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u6700\u521D\u306B\u547C\u3073\u51FA\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.invalid.method.invoke={0}\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u547C\u3073\u51FA\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.undef.meth=\u30E1\u30BD\u30C3\u30C9{0}\u306F{1}\u3067\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +javac.err.no.meth.access={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306F{2}\u304B\u3089\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002 #warning: -javac.err.no.override.access=\ - \u6ce8: {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f {2} \u306e\u5bfe\u5fdc\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u7570\u306a\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u5bfe\u3057\u3066\u306f private \u3067\u3042\u308b\u305f\u3081\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.no.static.meth.access=\ - {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306b static \u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.invalid.protected.method.use=\ - {1} \u306e protected \u30e1\u30bd\u30c3\u30c9 {0} \u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002{2} \u306f\u73fe\u5728\u306e\u30af\u30e9\u30b9\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.invalid.protected.field.use=\ - {1} \u306e protected \u30d5\u30a3\u30fc\u30eb\u30c9 {0} \u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002{2} \u306f\u73fe\u5728\u306e\u30af\u30e9\u30b9\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.invalid.protected.type.use=\ - {1} \u306e protected \u5185\u90e8\u578b {0} \u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002{2} \u306f\u73fe\u5728\u306e\u30af\u30e9\u30b9\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.invalid.protected.constructor.use=\ - {0} \u306e protected \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u751f\u6210\u306f\u3001\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u5185\u3067\u306e\u307f\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002 -javac.err.invalid.method=\ - {1} \u306e\u5909\u6570 {0} \u3092\u30e1\u30bd\u30c3\u30c9\u3068\u3057\u3066\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 -javac.err.invalid.var=\ - {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u3092\u5909\u6570\u3068\u3057\u3066\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 -javac.err.synchronized.null=\ - null \u306e\u30ea\u30c6\u30e9\u30eb\u306f\u3001synchronized \u69cb\u6587\u3067\u306f\u6b63\u3057\u3044\u5f15\u6570\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +javac.err.no.override.access=\u6CE8\u610F: {1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306F{2}\u306E\u5BFE\u5FDC\u3059\u308B\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u7570\u306A\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u5BFE\u3057\u3066\u306Fprivate\u3067\u3042\u308B\u305F\u3081\u3001\u3053\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.no.static.meth.access={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306Bstatic\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.invalid.protected.method.use={1}\u306Eprotected\u30E1\u30BD\u30C3\u30C9{0}\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002{2}\u306F\u73FE\u5728\u306E\u30AF\u30E9\u30B9\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.invalid.protected.field.use={1}\u306Eprotected\u30D5\u30A3\u30FC\u30EB\u30C9{0}\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002{2}\u306F\u73FE\u5728\u306E\u30AF\u30E9\u30B9\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.invalid.protected.type.use={1}\u306Eprotected\u5185\u90E8\u578B{0}\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002{2}\u306F\u73FE\u5728\u306E\u30AF\u30E9\u30B9\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.invalid.protected.constructor.use={0}\u306Eprotected\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u306E\u751F\u6210\u306F\u3001\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u5185\u3067\u306E\u307F\u8A31\u53EF\u3055\u308C\u307E\u3059\u3002 +javac.err.invalid.method={1}\u306E\u5909\u6570{0}\u3092\u30E1\u30BD\u30C3\u30C9\u3068\u3057\u3066\u53C2\u7167\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002 +javac.err.invalid.var={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3092\u5909\u6570\u3068\u3057\u3066\u53C2\u7167\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002 +javac.err.synchronized.null=null\u306E\u30EA\u30C6\u30E9\u30EB\u306F\u3001synchronized\u69CB\u6587\u3067\u306F\u6B63\u3057\u3044\u5F15\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 #all messages related to deprecation are warnings: -javac.err.class.is.deprecated=\ - \u6ce8: {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002 -javac.err.meth.is.deprecated=\ - \u6ce8: {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002 -javac.err.constr.is.deprecated=\ - \u6ce8: \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002 -javac.err.field.is.deprecated=\ - \u6ce8: {1} \u306e\u5909\u6570 {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002 -javac.err.note.deprecations=\ - \u6ce8: \u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u308b\u30d5\u30a1\u30a4\u30eb\u304c {0} \u500b\u3042\u308a\u307e\u3059\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u4ed6\u306e\u65b9\u6cd5\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.note.1deprecation=\ - \u6ce8: {0} \u306f\u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u3059\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u4ed6\u306e\u65b9\u6cd5\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.note.deprecations.silent=\ - \u6ce8: \u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u308b\u30d5\u30a1\u30a4\u30eb\u304c {0} \u500b\u3042\u308a\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001"javac -deprecation" \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.note.1deprecation.silent=\ - \u6ce8: {0} \u306f\u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001"javac -deprecation" \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.invalid.array.dim=\ - \u914d\u5217\u306e\u5927\u304d\u3055\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.ambig.constr=\ - \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf {0}, {1} \u306f\u3042\u3044\u307e\u3044\u3067\u3059\u3002 -javac.err.explicit.cast.needed=\ - \u3053\u306e\u578b\u306f {0} \u306b\u306f\u4e0d\u9069\u5408\u3067\u3059\u3002{1} \u304b\u3089 {2} \u3078\u306e\u5909\u63db\u306b\u306f\u660e\u793a\u7684\u306a\u30ad\u30e3\u30b9\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002 -javac.err.incompatible.type=\ - \u3053\u306e\u578b\u306f {0} \u306b\u306f\u4e0d\u9069\u5408\u3067\u3059\u3002{1} \u304b\u3089 {2} \u306b\u306f\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.invalid.term=\ - \u7121\u52b9\u306a\u9805\u3067\u3059\u3002 -javac.err.abstract.class=\ - {0} \u306f abstract \u30af\u30e9\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u30af\u30e9\u30b9\u3067\u306f\u3001{2} \u304b\u3089\u6d3e\u751f\u3059\u308b {1} \u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u305b\u3093\u3002 -javac.err.abstract.class.cannot.override=\ - {0} \u306f abstract \u3068\u3057\u3066\u5ba3\u8a00\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9 {2} \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u5bfe\u3057\u3066 private \u3067\u3042\u308b abstract \u30e1\u30bd\u30c3\u30c9 {1} \u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u305a\u3001\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.new.intf=\ - {0} \u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.invoke.abstract=\ - {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f abstract \u3067\u3042\u308a\u3001\u76f4\u63a5\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.unmatched.meth=\ - {0} \u306b\u9069\u5408\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u304c {1} \u306b\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.unmatched.constr=\ - {0} \u306b\u9069\u5408\u3059\u308b\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u304c {1} \u306b\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.wrong.number.args=\ - {0} \u306e\u5f15\u6570\u306e\u6570\u304c\u4e0d\u6b63\u3067\u3059\u3002 -javac.err.forward.ref=\ - {1} \u3067\u306f {0} \u306b\u524d\u65b9\u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.array.dim.missing=\ - \u914d\u5217\u306e\u5927\u304d\u3055\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -javac.err.new.abstract=\ - {0} \u306f abstract \u30af\u30e9\u30b9\u3067\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.label.not.found=\ - {0} \u306e\u30e9\u30d9\u30eb\u5b9a\u7fa9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -javac.err.invalid.break=\ - ''break'' \u306f\u30eb\u30fc\u30d7\u5185\u304b switch \u6587\u5185\u306b\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.invalid.continue=\ - ''continue'' \u306f\u30eb\u30fc\u30d7\u5185\u306b\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.branch.to.uplevel=\ - ''break'' \u6587\u304a\u3088\u3073 ''continue'' \u6587\u306f\u540c\u4e00\u30e1\u30bd\u30c3\u30c9\u5185\u306b\u306e\u307f\u5206\u5c90\u3067\u304d\u307e\u3059\u3002 -javac.err.invalid.decl=\ - \u7121\u52b9\u306a\u5ba3\u8a00\u3067\u3059\u3002 -javac.err.return.with.value=\ - \u30e1\u30bd\u30c3\u30c9 {0} \u3067\u5024\u4ed8\u304d\u306e ''return'' \u3092\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 -javac.err.return.without.value=\ - \u30e1\u30bd\u30c3\u30c9 {0} \u3067\u5024\u306a\u3057\u306e ''return'' \u3092\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 -javac.err.return.inside.static.initializer=\ - static \u521d\u671f\u5316\u5b50\u306e\u4e2d\u306b ''return'' \u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.invalid.label=\ - \u7121\u52b9\u306a\u30e9\u30d9\u30eb\u3067\u3059\u3002 -javac.err.return.required.at.end=\ - \u30e1\u30bd\u30c3\u30c9 {0} \u306e\u7d42\u308f\u308a\u306b return \u304c\u5fc5\u8981\u3067\u3059\u3002 -javac.err.duplicate.label=\ - case \u30e9\u30d9\u30eb {0} \u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 -javac.err.switch.overflow=\ - case \u30e9\u30d9\u30eb {0} \u306f\u578b {1} \u306e switch \u6587\u306e\u7bc4\u56f2\u3092\u8d8a\u3048\u3066\u3044\u307e\u3059\u3002 -javac.err.nested.duplicate.label=\ - \u6587\u306b\u306f\u3001\u305d\u308c\u3092\u56f2\u3080\u6587\u3068\u540c\u3058\u8b58\u5225\u5b50 {0} \u3067\u30e9\u30d9\u30eb\u3092\u4ed8\u3051\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.declaration.with.label=\ - \u5ba3\u8a00\u306b\u306f\u30e9\u30d9\u30eb {0} \u3092\u4ed8\u3051\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.const.expr.required=\ - \u5b9a\u6570\u5f0f\u304c\u5fc5\u8981\u3067\u3059\u3002 -javac.err.duplicate.default=\ - ''default'' \u30e9\u30d9\u30eb\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 -javac.err.not.supported=\ - ''{0}'' \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -javac.err.return.with.value.constr=\ - \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf {0} \u3067\u5024\u4ed8\u304d\u306e ''return'' \u3092\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 -javac.err.package.repeated=\ - \u30d1\u30c3\u30b1\u30fc\u30b8\u5ba3\u8a00\u306f 1 \u56de\u3057\u304b\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.class.multidef=\ - \u30af\u30e9\u30b9 {0} \u306f\u3059\u3067\u306b {1} \u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.class.multidef.import=\ - \u30af\u30e9\u30b9\u540d {0} \u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u305f\u30af\u30e9\u30b9 {1} \u3068\u7af6\u5408\u3057\u307e\u3059\u3002 -javac.err.intf.constructor=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.constr.modifier=\ - \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf {0} \u3092 native\u3001abstract\u3001static\u3001synchronized\u3001\u307e\u305f\u306f final \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.intf.initializer=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f static \u521d\u671f\u5316\u5b50\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.intf.modifier.method=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306e\u30e1\u30bd\u30c3\u30c9 {0} \u3092 native\u3001static\u3001synchronized\u3001final\u3001private\u3001\u307e\u305f\u306f protected \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.intf.modifier.field=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306e\u30d5\u30a3\u30fc\u30eb\u30c9 {0} \u3092 private \u307e\u305f\u306f protected \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.transient.meth=\ - \u30e1\u30bd\u30c3\u30c9 {0} \u3092 transient \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002transient \u306f\u5909\u6570\u306b\u306e\u307f\u9069\u7528\u3055\u308c\u307e\u3059\u3002 -javac.err.volatile.meth=\ - \u30e1\u30bd\u30c3\u30c9 {0} \u3092 volatile \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002volatile \u306f\u5909\u6570\u306b\u306e\u307f\u9069\u7528\u3055\u308c\u307e\u3059\u3002 -javac.err.abstract.private.modifier=\ - abstract \u30e1\u30bd\u30c3\u30c9 {0} \u3092 private \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.abstract.static.modifier=\ - abstract \u30e1\u30bd\u30c3\u30c9 {0} \u3092 static \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.abstract.final.modifier=\ - abstract \u30e1\u30bd\u30c3\u30c9 {0} \u3092 final \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.abstract.native.modifier=\ - abstract \u30e1\u30bd\u30c3\u30c9 {0} \u3092 native \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.abstract.synchronized.modifier=\ - abstract \u30e1\u30bd\u30c3\u30c9 {0} \u3092 synchronized \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.invalid.meth.body=\ - {0} \u306f abstract \u30e1\u30bd\u30c3\u30c9\u304b native \u30e1\u30bd\u30c3\u30c9\u306a\u306e\u3067\u3001\u672c\u4f53\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.var.modifier=\ - \u5909\u6570 {0} \u3092 synchronized\u3001abstract\u3001\u307e\u305f\u306f native \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.var.floatmodifier=\ - \u5909\u6570 {0} \u3092 strict \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.inner.modifier=\ - \u5185\u90e8\u30af\u30e9\u30b9 {0} \u3092 volatile\u3001transient\u3001native\u3001\u307e\u305f\u306f synchronized \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.transient.modifier=\ - transient \u5909\u6570 {0} \u3092\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u30e1\u30f3\u30d0\u30fc\u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.volatile.modifier=\ - volatile \u5909\u6570 {0} \u3092 final \u307e\u305f\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u30e1\u30f3\u30d0\u30fc\u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.initializer.needed=\ - final \u5909\u6570 {0} \u306f\u521d\u671f\u5316\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.meth.multidef=\ - \u30e1\u30bd\u30c3\u30c9\u5ba3\u8a00 {0} \u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 -javac.err.meth.redef.rettype=\ - \u540c\u3058\u5f15\u6570\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u7570\u306a\u308b\u623b\u308a\u5024\u306e\u578b\u3067\u518d\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002{0} \u306f\u4ee5\u524d {1} \u3068\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u3002 -javac.err.var.multidef=\ - \u5909\u6570\u5ba3\u8a00\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002{0} \u306f\u4ee5\u524d {1} \u3068\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u3002 -javac.err.inner.class.multidef=\ - \u5185\u90e8\u30af\u30e9\u30b9\u5ba3\u8a00\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002{0} \u306f\u3053\u306e\u30b9\u30b3\u30fc\u30d7\u3067\u3059\u3067\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.intf.super.class=\ - {0} \u306e\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9 {1} \u3092\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.cant.access.class=\ - {0} \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\u30af\u30e9\u30b9\u307e\u305f\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u3001\u540c\u3058\u30d1\u30c3\u30b1\u30fc\u30b8\u307e\u305f\u306f\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u30e1\u30f3\u30d0\u30fc\u30af\u30e9\u30b9\u3067\u306f public \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.unqualified.name.required=\ - \u4fee\u98fe\u3055\u308c\u305f new \u5f0f\u306b\u304a\u3051\u308b\u578b\u540d\u306f\u3001\u4fee\u98fe\u3055\u308c\u3066\u3044\u306a\u3044\u8b58\u5225\u5b50\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.repeated.modifier=\ - \u4fee\u98fe\u5b50\u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.inconsistent.modifier=\ - \u30e1\u30f3\u30d0\u30fc\u5ba3\u8a00\u306b\u4e00\u8cab\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002public\u3001private\u3001protected \u306e\u3046\u3061\u306e 1 \u3064\u3057\u304b\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.super.is.final=\ - \u30d5\u30a1\u30a4\u30ca\u30eb\u30af\u30e9\u30b9 {0} \u304b\u3089\u30b5\u30d6\u30af\u30e9\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.super.is.intf=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {0} \u304b\u3089\u30b5\u30d6\u30af\u30e9\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.cyclic.super=\ - \u30af\u30e9\u30b9\u7d99\u627f\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002 -javac.err.super.is.inner=\ - \u30af\u30e9\u30b9\u7d99\u627f\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002\u30b5\u30d6\u30af\u30e9\u30b9\u306f\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u3092\u56f2\u3080\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.cyclic.intf=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u7d99\u627f\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002 -javac.err.cyclic.scoping=\ - \u30af\u30e9\u30b9\u7d99\u627f\u307e\u305f\u306f\u30b9\u30b3\u30fc\u30d7\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002 -javac.err.not.intf=\ - {0} \u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.final.intf=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {0} \u3092\u30d5\u30a1\u30a4\u30ca\u30eb\u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.intf.impl.intf=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f implements \u7bc0\u3092\u542b\u3080\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002extends \u7bc0\u306b\u3088\u308a\u4ed6\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u62e1\u5f35\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u3059\u3002 -javac.err.multiple.inherit=\ - \u591a\u91cd\u7d99\u627f\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -javac.err.intf.repeated=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {0} \u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.class.format=\ - {0} \u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {1} \u306e\u5f62\u5f0f\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.truncated.class=\ - \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002 -javac.err.no.meth.body=\ - \u30e1\u30bd\u30c3\u30c9 {0} \u306b\u306f\u672c\u4f53\u304c\u5fc5\u8981\u3067\u3059\u3002\u3042\u308b\u3044\u306f abstract \u3068\u3057\u3066\u5ba3\u8a00\u3057\u307e\u3059\u3002 -javac.err.no.constructor.body=\ - \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf {0} \u306b\u306f\u30e1\u30bd\u30c3\u30c9\u672c\u4f53\u304c\u5fc5\u8981\u3067\u3059\u3002 -javac.err.bad.constructor.modifier=\ - \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306f strictfp \u3067\u4fee\u98fe\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.void.inst.var=\ - \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570 {0} \u3092 void \u578b\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.invalid.method.decl=\ - \u7121\u52b9\u306a\u30e1\u30bd\u30c3\u30c9\u5ba3\u8a00\u3067\u3059\u3002\u623b\u308a\u5024\u306e\u578b\u304c\u5fc5\u8981\u3067\u3059\u3002 -javac.err.invalid.method.decl.name=\ - \u7121\u52b9\u306a\u30e1\u30bd\u30c3\u30c9\u5ba3\u8a00\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9\u540d\u304c\u5fc5\u8981\u3067\u3059\u3002 -javac.err.invalid.method.decl.qual=\ - \u4fee\u98fe\u3055\u308c\u305f\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u540d\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.super.not.found=\ - {1} \u306e\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -javac.err.intf.not.found=\ - {1} \u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -javac.err.final.abstract=\ - \u30af\u30e9\u30b9 {0} \u3092 abstract \u3068 final \u306e\u4e21\u65b9\u306b\u5ba3\u8a00\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.void.array=\ - void \u306e\u914d\u5217\u306e\u578b\u304c\u7121\u52b9\u3067\u3059\u3002 -javac.err.void.argument=\ - \u5f15\u6570 {0} \u3092 void \u578b\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.invalid.expr=\ - \u7121\u52b9\u306a\u5f0f\u6587\u3067\u3059\u3002 -javac.err.catch.not.reached=\ - \u3053\u306e catch \u7bc0\u306b\u5236\u5fa1\u304c\u79fb\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.stat.not.reached=\ - \u3053\u306e\u6587\u306b\u5236\u5fa1\u304c\u79fb\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.init.no.normal.completion=\ - \u521d\u671f\u5316\u5b50\u306f\u6b63\u5e38\u306b\u5b8c\u4e86\u3067\u304d\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.arithmetic.exception=\ - \u6f14\u7b97\u4e0a\u306e\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +javac.err.class.is.deprecated=\u6CE8\u610F: {0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093\u3002 +javac.err.meth.is.deprecated=\u6CE8\u610F: {1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093\u3002 +javac.err.constr.is.deprecated=\u6CE8\u610F: \u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093\u3002 +javac.err.field.is.deprecated=\u6CE8\u610F: {1}\u306E\u5909\u6570{0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093\u3002 +javac.err.note.deprecations=\u6CE8\u610F: \u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u304C{0}\u500B\u3042\u308A\u307E\u3059\u3002\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u4ED6\u306E\u65B9\u6CD5\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.note.1deprecation=\u6CE8\u610F: {0}\u306F\u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u4ED6\u306E\u65B9\u6CD5\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.note.deprecations.silent=\u6CE8\u610F: \u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u304C{0}\u500B\u3042\u308A\u307E\u3059\u3002\u8A73\u7D30\u306F\u3001"-deprecation"\u3092\u6307\u5B9A\u3057\u3066\u518D\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.note.1deprecation.silent=\u6CE8\u610F: {0}\u306F\u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002\u8A73\u7D30\u306F\u3001"-deprecation"\u3092\u6307\u5B9A\u3057\u3066\u518D\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.invalid.array.dim=\u914D\u5217\u306E\u5927\u304D\u3055\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.ambig.constr=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0},{1}\u306F\u3042\u3044\u307E\u3044\u3067\u3059\u3002 +javac.err.explicit.cast.needed=\u3053\u306E\u578B\u306F{0}\u306B\u306F\u4E0D\u9069\u5408\u3067\u3059\u3002{1}\u304B\u3089{2}\u3078\u306E\u5909\u63DB\u306B\u306F\u660E\u793A\u7684\u306A\u30AD\u30E3\u30B9\u30C8\u304C\u5FC5\u8981\u3067\u3059\u3002 +javac.err.incompatible.type=\u3053\u306E\u578B\u306F{0}\u306B\u306F\u4E0D\u9069\u5408\u3067\u3059\u3002{1}\u304B\u3089{2}\u306B\u306F\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.invalid.term=\u7121\u52B9\u306A\u9805\u3067\u3059\u3002 +javac.err.abstract.class={0}\u306Fabstract\u30AF\u30E9\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u3053\u306E\u30AF\u30E9\u30B9\u3067\u306F\u3001{2}\u304B\u3089\u6D3E\u751F\u3059\u308B{1}\u3092\u5B9A\u7FA9\u3057\u3066\u3044\u307E\u305B\u3093\u3002 +javac.err.abstract.class.cannot.override={0}\u306Fabstract\u3068\u3057\u3066\u5BA3\u8A00\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9{2}\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u5BFE\u3057\u3066private\u3067\u3042\u308Babstract\u30E1\u30BD\u30C3\u30C9{1}\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u305A\u3001\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.new.intf={0}\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.invoke.abstract={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306Fabstract\u3067\u3042\u308A\u3001\u76F4\u63A5\u547C\u3073\u51FA\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.unmatched.meth={0}\u306B\u9069\u5408\u3059\u308B\u30E1\u30BD\u30C3\u30C9\u304C{1}\u306B\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.unmatched.constr={0}\u306B\u9069\u5408\u3059\u308B\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u304C{1}\u306B\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.wrong.number.args={0}\u306E\u5F15\u6570\u306E\u6570\u304C\u4E0D\u6B63\u3067\u3059\u3002 +javac.err.forward.ref={1}\u3067\u306F{0}\u306B\u524D\u65B9\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.array.dim.missing=\u914D\u5217\u306E\u5927\u304D\u3055\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +javac.err.new.abstract={0}\u306Fabstract\u30AF\u30E9\u30B9\u3067\u3059\u3002\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.label.not.found={0}\u306E\u30E9\u30D9\u30EB\u5B9A\u7FA9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +javac.err.invalid.break=''break''\u306F\u30EB\u30FC\u30D7\u5185\u304Bswitch\u6587\u5185\u306B\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.invalid.continue=''continue''\u306F\u30EB\u30FC\u30D7\u5185\u306B\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.branch.to.uplevel=''break''\u6587\u304A\u3088\u3073''continue''\u6587\u306F\u540C\u4E00\u30E1\u30BD\u30C3\u30C9\u5185\u306B\u306E\u307F\u5206\u5C90\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.invalid.decl=\u7121\u52B9\u306A\u5BA3\u8A00\u3067\u3059\u3002 +javac.err.return.with.value=\u30E1\u30BD\u30C3\u30C9{0}\u3067\u5024\u4ED8\u304D\u306E''return''\u3092\u5B9F\u884C\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002 +javac.err.return.without.value=\u30E1\u30BD\u30C3\u30C9{0}\u3067\u5024\u306A\u3057\u306E''return''\u3092\u5B9F\u884C\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002 +javac.err.return.inside.static.initializer=static\u521D\u671F\u5316\u5B50\u306E\u4E2D\u306B''return''\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.invalid.label=\u7121\u52B9\u306A\u30E9\u30D9\u30EB\u3067\u3059\u3002 +javac.err.return.required.at.end=\u30E1\u30BD\u30C3\u30C9{0}\u306E\u7D42\u308F\u308A\u306Breturn\u304C\u5FC5\u8981\u3067\u3059\u3002 +javac.err.duplicate.label=case\u30E9\u30D9\u30EB{0}\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059 +javac.err.switch.overflow=case\u30E9\u30D9\u30EB{0}\u306F{1}\u306Eswitch\u6587\u306E\u7BC4\u56F2\u3092\u8D85\u3048\u3066\u3044\u307E\u3059 +javac.err.nested.duplicate.label=\u6587\u306B\u306F\u3001\u305D\u308C\u3092\u56F2\u3080\u6587\u3068\u540C\u3058\u8B58\u5225\u5B50{0}\u3067\u30E9\u30D9\u30EB\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.declaration.with.label=\u5BA3\u8A00\u306B\u306F\u30E9\u30D9\u30EB{0}\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.const.expr.required=\u5B9A\u6570\u5F0F\u304C\u5FC5\u8981\u3067\u3059\u3002 +javac.err.duplicate.default=''default''\u30E9\u30D9\u30EB\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002 +javac.err.not.supported=''{0}''\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +javac.err.return.with.value.constr=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0}\u3067\u5024\u4ED8\u304D\u306E''return''\u3092\u5B9F\u884C\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F +javac.err.package.repeated=\u30D1\u30C3\u30B1\u30FC\u30B8\u5BA3\u8A00\u306F1\u56DE\u306E\u307F\u53EF\u80FD\u3067\u3059\u3002 +javac.err.class.multidef=\u30AF\u30E9\u30B9{0}\u306F\u3059\u3067\u306B{1}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.class.multidef.import=\u30AF\u30E9\u30B9\u540D{0}\u306F\u30A4\u30F3\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9{1}\u3068\u7AF6\u5408\u3057\u307E\u3059\u3002 +javac.err.intf.constructor=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.constr.modifier=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0}\u3092native\u3001abstract\u3001static\u3001synchronized\u307E\u305F\u306Ffinal\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.intf.initializer=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306Fstatic\u521D\u671F\u5316\u5B50\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.intf.modifier.method=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3092native\u3001static\u3001synchronized\u3001final\u3001private\u307E\u305F\u306Fprotected\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.intf.modifier.field=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306E\u30D5\u30A3\u30FC\u30EB\u30C9{0}\u3092private\u307E\u305F\u306Fprotected\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.transient.meth=\u30E1\u30BD\u30C3\u30C9{0}\u3092transient\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002transient\u306F\u5909\u6570\u306B\u306E\u307F\u9069\u7528\u3055\u308C\u307E\u3059\u3002 +javac.err.volatile.meth=\u30E1\u30BD\u30C3\u30C9{0}\u3092volatile\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002volatile\u306F\u5909\u6570\u306B\u306E\u307F\u9069\u7528\u3055\u308C\u307E\u3059\u3002 +javac.err.abstract.private.modifier=abstract\u30E1\u30BD\u30C3\u30C9{0}\u3092private\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.abstract.static.modifier=abstract\u30E1\u30BD\u30C3\u30C9{0}\u3092static\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.abstract.final.modifier=abstract\u30E1\u30BD\u30C3\u30C9{0}\u3092final\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.abstract.native.modifier=abstract\u30E1\u30BD\u30C3\u30C9{0}\u3092native\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.abstract.synchronized.modifier=abstract\u30E1\u30BD\u30C3\u30C9{0}\u3092synchronized\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.invalid.meth.body={0}\u306Fabstract\u30E1\u30BD\u30C3\u30C9\u304Bnative\u30E1\u30BD\u30C3\u30C9\u306A\u306E\u3067\u3001\u672C\u4F53\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.var.modifier=\u5909\u6570{0}\u3092synchronized\u3001abstract\u307E\u305F\u306Fnative\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.var.floatmodifier=\u5909\u6570{0}\u3092strict\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.inner.modifier=\u5185\u90E8\u30AF\u30E9\u30B9{0}\u3092volatile\u3001transient\u3001native\u307E\u305F\u306Fsynchronized\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.transient.modifier=transient\u5909\u6570{0}\u3092\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30F3\u30D0\u30FC\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.volatile.modifier=volatile\u5909\u6570{0}\u3092final\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30F3\u30D0\u30FC\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.initializer.needed=final\u5909\u6570{0}\u306F\u521D\u671F\u5316\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +javac.err.meth.multidef=\u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00{0}\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059 +javac.err.meth.redef.rettype=\u540C\u3058\u5F15\u6570\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u7570\u306A\u308B\u623B\u308A\u5024\u306E\u578B\u3067\u518D\u5B9A\u7FA9\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002{0}\u306F\u4EE5\u524D{1}\u3068\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3057\u305F +javac.err.var.multidef=\u5909\u6570\u5BA3\u8A00\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002{0}\u306F\u4EE5\u524D{1}\u3068\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3057\u305F +javac.err.inner.class.multidef=\u5185\u90E8\u30AF\u30E9\u30B9\u5BA3\u8A00\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002{0}\u306F\u3053\u306E\u30B9\u30B3\u30FC\u30D7\u3067\u3059\u3067\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.intf.super.class={0}\u306E\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9{1}\u3092\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.cant.access.class={0}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F\u3001\u540C\u3058\u30D1\u30C3\u30B1\u30FC\u30B8\u307E\u305F\u306F\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u30E1\u30F3\u30D0\u30FC\u30FB\u30AF\u30E9\u30B9\u3067\u306Fpublic\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.unqualified.name.required=\u4FEE\u98FE\u3055\u308C\u305Fnew\u5F0F\u306B\u304A\u3051\u308B\u578B\u540D\u306F\u3001\u4FEE\u98FE\u3055\u308C\u3066\u3044\u306A\u3044\u8B58\u5225\u5B50\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.repeated.modifier=\u4FEE\u98FE\u5B50\u304C\u7E70\u308A\u8FD4\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.inconsistent.modifier=\u30E1\u30F3\u30D0\u30FC\u5BA3\u8A00\u306B\u4E00\u8CAB\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002public\u3001private\u307E\u305F\u306Fprotected\u306E\u3046\u3061\u306E1\u3064\u306E\u307F\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002 +javac.err.super.is.final=final\u30AF\u30E9\u30B9{0}\u304B\u3089\u30B5\u30D6\u30AF\u30E9\u30B9\u3092\u751F\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.super.is.intf=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304B\u3089\u30B5\u30D6\u30AF\u30E9\u30B9\u3092\u751F\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.cyclic.super=\u30AF\u30E9\u30B9\u7D99\u627F\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059\u3002 +javac.err.super.is.inner=\u30AF\u30E9\u30B9\u7D99\u627F\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059\u3002\u30B5\u30D6\u30AF\u30E9\u30B9\u306F\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u3092\u56F2\u3080\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.cyclic.intf=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u7D99\u627F\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059\u3002 +javac.err.cyclic.scoping=\u30AF\u30E9\u30B9\u7D99\u627F\u307E\u305F\u306F\u30B9\u30B3\u30FC\u30D7\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059\u3002 +javac.err.not.intf={0}\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.final.intf=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u3092final\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.intf.impl.intf=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306Fimplements\u7BC0\u3092\u542B\u3080\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002extends\u7BC0\u306B\u3088\u308A\u4ED6\u306E\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u62E1\u5F35\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u3059\u3002 +javac.err.multiple.inherit=\u591A\u91CD\u7D99\u627F\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +javac.err.intf.repeated=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304C\u7E70\u308A\u8FD4\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.class.format={0}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{1}\u306E\u5F62\u5F0F\u304C\u7121\u52B9\u3067\u3059 +javac.err.truncated.class=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u306E\u8AAD\u8FBC\u307F\u4E2D\u306B\u4E88\u671F\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002 +javac.err.no.meth.body=\u30E1\u30BD\u30C3\u30C9{0}\u306B\u306F\u672C\u4F53\u304C\u5FC5\u8981\u3067\u3059\u3002\u3042\u308B\u3044\u306Fabstract\u3068\u3057\u3066\u5BA3\u8A00\u3057\u307E\u3059\u3002 +javac.err.no.constructor.body=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0}\u306B\u306F\u30E1\u30BD\u30C3\u30C9\u672C\u4F53\u304C\u5FC5\u8981\u3067\u3059\u3002 +javac.err.bad.constructor.modifier=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306Fstrictfp\u3067\u4FEE\u98FE\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.void.inst.var=\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5909\u6570{0}\u3092void\u578B\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.invalid.method.decl=\u7121\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00\u3067\u3059\u3002\u623B\u308A\u5024\u306E\u578B\u304C\u5FC5\u8981\u3067\u3059\u3002 +javac.err.invalid.method.decl.name=\u7121\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9\u540D\u304C\u5FC5\u8981\u3067\u3059\u3002 +javac.err.invalid.method.decl.qual=\u4FEE\u98FE\u3055\u308C\u305F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u540D\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.super.not.found={1}\u306E\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +javac.err.intf.not.found={1}\u306E\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +javac.err.final.abstract=\u30AF\u30E9\u30B9{0}\u3092abstract\u3068final\u306E\u4E21\u65B9\u306B\u5BA3\u8A00\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.void.array=void\u306E\u914D\u5217\u306E\u578B\u304C\u7121\u52B9\u3067\u3059\u3002 +javac.err.void.argument=\u5F15\u6570{0}\u3092void\u578B\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +javac.err.invalid.expr=\u7121\u52B9\u306A\u5F0F\u6587\u3067\u3059\u3002 +javac.err.catch.not.reached=\u3053\u306Ecatch\u7BC0\u306B\u5236\u5FA1\u304C\u79FB\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.stat.not.reached=\u3053\u306E\u6587\u306B\u5236\u5FA1\u304C\u79FB\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.init.no.normal.completion=\u521D\u671F\u5316\u5B50\u306F\u6B63\u5E38\u306B\u5B8C\u4E86\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.arithmetic.exception=\u6F14\u7B97\u4E0A\u306E\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 javac.err.generic={0} -javac.err.public.class.file=\ - public \u306a\u30af\u30e9\u30b9 {0} \u306f\u3001\u30d5\u30a1\u30a4\u30eb "{1}" \u3067\u5b9a\u7fa9\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.package.class.file=\ - {0} \u306f {1} \u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u5916\u3067\u5229\u7528\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u30d5\u30a1\u30a4\u30eb "{2}" \u3067\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.lose.precision=\ - \u7cbe\u5ea6\u304c\u843d\u3061\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002{0} \u304b\u3089 {1} \u3078\u306e\u5909\u63db\u306b\u306f\u3001\u660e\u793a\u7684\u306a\u30ad\u30e3\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 -javac.err.duplicate.argument=\ - \u5909\u6570\u540d ''{0}'' \u304c\u30e1\u30bd\u30c3\u30c9\u5f15\u6570\u3067 2 \u56de\u4ee5\u4e0a\u4f7f\u308f\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.local.redefined=\ - \u5909\u6570 ''{0}'' \u306f\u3059\u3067\u306b\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.local.class.redefined=\ - \u5c40\u6240\u30af\u30e9\u30b9 ''{0}'' \u306f\u3059\u3067\u306b\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.inner.redefined=\ - \u30af\u30e9\u30b9\u540d ''{0}'' \u306f\u3059\u3067\u306b\u3053\u306e\u30b9\u30b3\u30fc\u30d7\u5185\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5185\u90e8\u30af\u30e9\u30b9\u306f\u305d\u308c\u3092\u56f2\u3080\u30af\u30e9\u30b9\u3068\u540c\u3058\u5358\u7d14\u540d\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.inherited.hides.field=\ - \u5909\u6570 ''{0}'' \u306f {1} \u3067\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001{2} \u306e\u540c\u540d\u306e\u5909\u6570\u3092\u8986\u3044\u96a0\u3057\u3066\u3044\u307e\u3059\u3002\u660e\u793a\u7684\u306b ''this'' \u3092\u4f7f\u3063\u3066\u76ee\u7684\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.inherited.hides.local=\ - \u5909\u6570 ''{0}'' \u306f {1} \u3067\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u540c\u540d\u306e\u5c40\u6240\u5909\u6570\u3092\u8986\u3044\u96a0\u3057\u3066\u3044\u307e\u3059\u3002\u660e\u793a\u7684\u306b ''this'' \u3092\u4f7f\u3063\u3066\u3069\u3061\u3089\u306e\u5909\u6570\u3067\u3042\u308b\u304b\u3092\u6307\u5b9a\u3059\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u5c40\u6240\u5909\u6570\u306e\u540d\u524d\u3092\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.inherited.hides.method=\ - \u30e1\u30bd\u30c3\u30c9 ''{0}'' \u306f {1} \u3067\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001{2} \u306e\u540c\u540d\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u8986\u3044\u96a0\u3057\u3066\u3044\u307e\u3059\u3002\u660e\u793a\u7684\u306b ''this'' \u3092\u4f7f\u3063\u3066\u3069\u3061\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3067\u3042\u308b\u304b\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.inherited.hides.type=\ - \u578b ''{0}'' \u306f {1} \u3067\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u30af\u30e9\u30b9\u5b9a\u7fa9\u3092\u56f2\u3080\u30b9\u30b3\u30fc\u30d7\u306b\u3042\u308b\u540c\u540d\u306e\u578b\u3092\u8986\u3044\u96a0\u3057\u3066\u3044\u307e\u3059\u3002\u660e\u793a\u7684\u306b\u524d\u7f6e\u4fee\u98fe\u5b50\u3092\u4f7f\u3063\u3066\u3069\u3061\u3089\u306e\u578b\u3067\u3042\u308b\u304b\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.private.class=\ - \u578b {0} \u3092 private \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30e1\u30f3\u30d0\u30fc\u306f\u5e38\u306b\u305d\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u5185\u304b\u3089\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u3067\u3059\u3002 -javac.err.static.class=\ - \u578b {0} \u3092 static \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u578b\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30e1\u30f3\u30d0\u30fc\u306a\u306e\u3067\u3001\u3059\u3067\u306b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u306b\u3042\u308a\u307e\u3059\u3002 -javac.err.protected.class=\ - \u578b {0} \u3092 protected \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30e1\u30f3\u30d0\u30fc\u306f\u3001public \u3067\u3042\u308b\u304b\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u5c40\u6240\u7684\u3067\u3042\u308b\u304b\u306e\u3069\u3061\u3089\u304b\u3067\u3059\u3002 -javac.err.recursive.constr=\ - \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u547c\u3073\u51fa\u3057\u304c\u518d\u5e30\u7684\u3067\u3059: {0} -javac.err.wrong.class=\ - \u30d5\u30a1\u30a4\u30eb {0} \u306b\u306f {1} \u304c\u542b\u307e\u308c\u308b\u3068\u307f\u306a\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u542b\u307e\u308c\u3066\u3044\u305f\u306e\u306f {2} \u3067\u3057\u305f\u3002\u30d5\u30a1\u30a4\u30eb\u3092\u6d88\u53bb\u3059\u308b\u304b\u3001\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u542b\u307e\u308c\u308b\u9069\u5207\u306a\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.wrong.source=\ - \u30d5\u30a1\u30a4\u30eb {0} \u306b\u306f {1} \u306f\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30af\u30e9\u30b9\u30d1\u30b9\u3092\u5909\u66f4\u3057\u3066\u3001{1} \u304c {2} \u306b\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.class.not.found=\ - \u30af\u30e9\u30b9 {0} \u304c {1} \u306b\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -javac.err.class.not.found.no.context=\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -javac.err.package.not.found=\ - \u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u304c {1} \u306b\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -javac.err.package.not.found.strong=\ - \u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u304c\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306b\u306a\u308b\u3088\u3046\u306b\u30af\u30e9\u30b9\u30d1\u30b9\u3092\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.class.package.conflict=\ - \u578b\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u540c\u3058\u540d\u524d\u3092\u4ed8\u3051\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306f\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u3067\u3059\u304c\u3001\u30af\u30e9\u30b9\u540d\u306b {0} \u3092\u4f7f\u3046\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.package.class.conflict=\ - \u578b\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u540c\u3058\u540d\u524d\u3092\u4ed8\u3051\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30af\u30e9\u30b9 {0} \u306f\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u3067\u3059\u304c\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306b {0} \u3092\u4f7f\u3046\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.package.class.conflict.strong=\ - \u540d\u524d {0} \u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u53c2\u7167\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u578b\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u306f\u540c\u3058\u540d\u524d\u3092\u4ed8\u3051\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u305f\u3081\u3001{1} \u3068\u3044\u3046\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u30af\u30e9\u30b9\u306e\u540d\u524d\u306f\u7121\u52b9\u3067\u3059\u3002\u30af\u30e9\u30b9 {1} \u306e\u540d\u524d\u3092\u5909\u66f4\u3059\u308b\u304b\u3001\u30af\u30e9\u30b9\u30d1\u30b9\u304b\u3089\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.illegal.mangled.name=\ - {1} \u306b\u5bfe\u3057\u3066\u540d\u524d {0} \u306f\u4e0d\u6b63\u3067\u3059\u3002 -javac.err.class.and.package=\ - {0} \u306f\u30af\u30e9\u30b9\u304b\u30d1\u30c3\u30b1\u30fc\u30b8\u304b\u306e\u533a\u5225\u304c\u3064\u304d\u307e\u305b\u3093\u3002 -javac.err.throws.not.throwable=\ - throws \u7bc0\u306e\u4f8b\u5916 {0} \u306f\u30af\u30e9\u30b9 java.lang.Throwable \u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.throw.not.throwable=\ - \u4f8b\u5916 {0} \u306f\u30b9\u30ed\u30fc\u3067\u304d\u307e\u305b\u3093\u3002\u4f8b\u5916\u306f\u30af\u30e9\u30b9 java.lang.Throwable \u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.catch.not.throwable=\ - \u4f8b\u5916 {0} \u306f\u30ad\u30e3\u30c3\u30c1\u3067\u304d\u307e\u305b\u3093\u3002\u4f8b\u5916\u306f\u30af\u30e9\u30b9 java.lang.Throwable \u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.initializer.exception=\ - \u521d\u671f\u5316\u5b50\u5185\u3067\u306f\u4f8b\u5916 {0} \u3092\u30b9\u30ed\u30fc\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.cant.read=\ - {0} \u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.cant.write=\ - {0} \u304c\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3002 -javac.err.fatal.error=\ - \u30b3\u30f3\u30d1\u30a4\u30e9\u5185\u90e8\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002http://java.sun.com/cgi-bin/bugreport.cgi \u3067\u30d0\u30b0\u5831\u544a\u3092\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.fatal.exception=\ - \u30b3\u30f3\u30d1\u30a4\u30e9\u5185\u90e8\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002http://java.sun.com/cgi-bin/bugreport.cgi \u3067\u30d0\u30b0\u5831\u544a\u3092\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.no.inner.classes=\ - \u5185\u90e8\u30af\u30e9\u30b9\u306e\u30b5\u30dd\u30fc\u30c8\u306f\u4e2d\u6b62\u3055\u308c\u307e\u3057\u305f\u3002 -javac.err.uncaught.exception=\ - \u4f8b\u5916 {0} \u306f\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306e throws \u7bc0\u3067\u5ba3\u8a00\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.constructor.exception=\ - \u4f8b\u5916 {0} \u306f\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u3053\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e throws \u7bc0\u3067\u5ba3\u8a00\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.def.constructor.exception=\ - \u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u304c\u4f8b\u5916 {0} \u3092\u30b9\u30ed\u30fc\u3059\u308b\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u3053\u306e\u30af\u30e9\u30b9\u7528\u306b\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u30af\u30e9\u30b9\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u660e\u793a\u7684\u306b\u5b9a\u7fa9\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -javac.err.catch.not.thrown=\ - \u4f8b\u5916 {0} \u306f\u5bfe\u5fdc\u3059\u308b try \u6587\u306e\u672c\u4f53\u3067\u30b9\u30ed\u30fc\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +javac.err.public.class.file=public\u306A\u30AF\u30E9\u30B9{0}\u306F\u3001\u30D5\u30A1\u30A4\u30EB"{1}"\u3067\u5B9A\u7FA9\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.package.class.file={0}\u306F{1}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u3053\u306E\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u5916\u3067\u5229\u7528\u3055\u308C\u3066\u3044\u308B\u306E\u3067\u3001\u30D5\u30A1\u30A4\u30EB"{2}"\u3067\u5B9A\u7FA9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.lose.precision=\u7CBE\u5EA6\u304C\u843D\u3061\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002{0}\u304B\u3089{1}\u3078\u306E\u5909\u63DB\u306B\u306F\u3001\u660E\u793A\u7684\u306A\u30AD\u30E3\u30B9\u30C8\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002 +javac.err.duplicate.argument=\u5909\u6570\u540D''{0}''\u304C\u30E1\u30BD\u30C3\u30C9\u5F15\u6570\u30672\u56DE\u4EE5\u4E0A\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.local.redefined=\u5909\u6570''{0}''\u306F\u3059\u3067\u306B\u3053\u306E\u30E1\u30BD\u30C3\u30C9\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.local.class.redefined=\u5C40\u6240\u30AF\u30E9\u30B9''{0}''\u306F\u3059\u3067\u306B\u3053\u306E\u30E1\u30BD\u30C3\u30C9\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.inner.redefined=\u30AF\u30E9\u30B9\u540D''{0}''\u306F\u3059\u3067\u306B\u3053\u306E\u30B9\u30B3\u30FC\u30D7\u5185\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5185\u90E8\u30AF\u30E9\u30B9\u306F\u305D\u308C\u3092\u56F2\u3080\u30AF\u30E9\u30B9\u3068\u540C\u3058\u5358\u7D14\u540D\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.inherited.hides.field=\u5909\u6570''{0}''\u306F{1}\u3067\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001{2}\u306E\u540C\u540D\u306E\u5909\u6570\u3092\u8986\u3044\u96A0\u3057\u3066\u3044\u307E\u3059\u3002\u660E\u793A\u7684\u306B''this''\u4FEE\u98FE\u5B50\u3092\u4F7F\u7528\u3057\u3066\u76EE\u7684\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.inherited.hides.local=\u5909\u6570''{0}''\u306F{1}\u3067\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u540C\u540D\u306E\u5C40\u6240\u5909\u6570\u3092\u8986\u3044\u96A0\u3057\u3066\u3044\u307E\u3059\u3002\u660E\u793A\u7684\u306B''this''\u4FEE\u98FE\u5B50\u3092\u4F7F\u7528\u3057\u3066\u3069\u3061\u3089\u306E\u5909\u6570\u3067\u3042\u308B\u304B\u3092\u6307\u5B9A\u3059\u308B\u304B\u3001\u3042\u308B\u3044\u306F\u5C40\u6240\u5909\u6570\u306E\u540D\u524D\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.inherited.hides.method=\u30E1\u30BD\u30C3\u30C9''{0}''\u306F{1}\u3067\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001{2}\u306E\u540C\u540D\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u8986\u3044\u96A0\u3057\u3066\u3044\u307E\u3059\u3002\u660E\u793A\u7684\u306B''this''\u4FEE\u98FE\u5B50\u3092\u4F7F\u7528\u3057\u3066\u3069\u3061\u3089\u306E\u30E1\u30BD\u30C3\u30C9\u3067\u3042\u308B\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.inherited.hides.type=\u578B''{0}''\u306F{1}\u3067\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u30AF\u30E9\u30B9\u5B9A\u7FA9\u3092\u56F2\u3080\u30B9\u30B3\u30FC\u30D7\u306B\u3042\u308B\u540C\u540D\u306E\u578B\u3092\u8986\u3044\u96A0\u3057\u3066\u3044\u307E\u3059\u3002\u660E\u793A\u7684\u306B\u524D\u7F6E\u4FEE\u98FE\u5B50\u3092\u4F7F\u7528\u3057\u3066\u3069\u3061\u3089\u306E\u578B\u3067\u3042\u308B\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.private.class=\u578B{0}\u3092private\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30E1\u30F3\u30D0\u30FC\u306F\u5E38\u306B\u305D\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u5185\u304B\u3089\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u3067\u3059\u3002 +javac.err.static.class=\u578B{0}\u3092static\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u578B\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30E1\u30F3\u30D0\u30FC\u306A\u306E\u3067\u3001\u3059\u3067\u306B\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u306B\u3042\u308A\u307E\u3059\u3002 +javac.err.protected.class=\u578B{0}\u3092protected\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30E1\u30F3\u30D0\u30FC\u306F\u3001public\u3067\u3042\u308B\u304B\u3001\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u5C40\u6240\u7684\u3067\u3042\u308B\u304B\u306E\u3069\u3061\u3089\u304B\u3067\u3059\u3002 +javac.err.recursive.constr=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u547C\u51FA\u3057\u304C\u518D\u5E30\u7684\u3067\u3059: {0}\u3002 +javac.err.wrong.class=\u30D5\u30A1\u30A4\u30EB{0}\u306B\u306F{1}\u304C\u542B\u307E\u308C\u308B\u3068\u307F\u306A\u3055\u308C\u3066\u3044\u307E\u3057\u305F\u304C\u3001\u542B\u307E\u308C\u3066\u3044\u305F\u306E\u306F{2}\u3067\u3057\u305F\u3002\u30D5\u30A1\u30A4\u30EB\u3092\u30AF\u30EA\u30A2\u3059\u308B\u304B\u3001\u30AF\u30E9\u30B9\u30D1\u30B9\u306B\u542B\u307E\u308C\u308B\u9069\u5207\u306A\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u79FB\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.wrong.source=\u30D5\u30A1\u30A4\u30EB{0}\u306B\u306F{1}\u306F\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30AF\u30E9\u30B9\u30D1\u30B9\u3092\u5909\u66F4\u3057\u3066\u3001\u30D5\u30A1\u30A4\u30EB\u304C{2}\u306B\u306A\u3044\u3088\u3046\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.class.not.found=\u30AF\u30E9\u30B9{0}\u304C{1}\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +javac.err.class.not.found.no.context=\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +javac.err.package.not.found=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u304C{1}\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +javac.err.package.not.found.strong=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u304C\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306B\u306A\u308B\u3088\u3046\u306B\u30AF\u30E9\u30B9\u30D1\u30B9\u3092\u8ABF\u6574\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.class.package.conflict=\u578B\u3068\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u540C\u3058\u540D\u524D\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u3067\u3059\u304C\u3001\u30AF\u30E9\u30B9\u540D\u306B{0}\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.package.class.conflict=\u578B\u3068\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u540C\u3058\u540D\u524D\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30AF\u30E9\u30B9{1}\u306F\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u3067\u3059\u304C\u3001\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u306B{0}\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.package.class.conflict.strong=\u540D\u524D{0}\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u53C2\u7167\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u578B\u3068\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u306F\u540C\u3058\u540D\u524D\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u306A\u3044\u305F\u3081\u3001{1}\u3068\u3044\u3046\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u30AF\u30E9\u30B9\u306E\u540D\u524D\u306F\u7121\u52B9\u3067\u3059\u3002\u30AF\u30E9\u30B9{1}\u306E\u540D\u524D\u3092\u5909\u66F4\u3059\u308B\u304B\u3001\u30AF\u30E9\u30B9\u30D1\u30B9\u304B\u3089\u524A\u9664\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.illegal.mangled.name={1}\u306B\u5BFE\u3057\u3066\u540D\u524D{0}\u306F\u4E0D\u6B63\u3067\u3059\u3002 +javac.err.class.and.package={0}\u306F\u30AF\u30E9\u30B9\u304B\u30D1\u30C3\u30B1\u30FC\u30B8\u304B\u306E\u533A\u5225\u304C\u3064\u304D\u307E\u305B\u3093\u3002 +javac.err.throws.not.throwable=throws\u7BC0\u306E\u4F8B\u5916{0}\u306F\u30AF\u30E9\u30B9java.lang.Throwable\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.throw.not.throwable=\u4F8B\u5916{0}\u306F\u30B9\u30ED\u30FC\u3067\u304D\u307E\u305B\u3093\u3002\u4F8B\u5916\u306F\u30AF\u30E9\u30B9java.lang.Throwable\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.catch.not.throwable=\u4F8B\u5916{0}\u306F\u6355\u6349\u3067\u304D\u307E\u305B\u3093\u3002\u4F8B\u5916\u306F\u30AF\u30E9\u30B9java.lang.Throwable\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.initializer.exception=\u521D\u671F\u5316\u5B50\u5185\u3067\u306F\u4F8B\u5916{0}\u3092\u30B9\u30ED\u30FC\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.cant.read={0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093 +javac.err.cant.write={0}\u304C\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093 +javac.err.fatal.error=\u30B3\u30F3\u30D1\u30A4\u30E9\u5185\u90E8\u3067\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002http://java.sun.com/cgi-bin/bugreport.cgi\u3067\u30D0\u30B0\u5831\u544A\u3092\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.fatal.exception=\u30B3\u30F3\u30D1\u30A4\u30E9\u5185\u90E8\u3067\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002http://java.sun.com/cgi-bin/bugreport.cgi\u3067\u30D0\u30B0\u5831\u544A\u3092\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.no.inner.classes=\u5185\u90E8\u30AF\u30E9\u30B9\u306E\u30B5\u30DD\u30FC\u30C8\u306F\u4E2D\u6B62\u3055\u308C\u307E\u3057\u305F\u3002 +javac.err.uncaught.exception=\u4F8B\u5916{0}\u306F\u6355\u6349\u3055\u308C\u308B\u304B\u3001\u3042\u308B\u3044\u306F\u3053\u306E\u30E1\u30BD\u30C3\u30C9\u306Ethrows\u7BC0\u3067\u5BA3\u8A00\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.constructor.exception=\u4F8B\u5916{0}\u306F\u6355\u6349\u3055\u308C\u308B\u304B\u3001\u307E\u305F\u306F\u3053\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306Ethrows\u7BC0\u3067\u5BA3\u8A00\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.def.constructor.exception=\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u304C\u4F8B\u5916{0}\u3092\u30B9\u30ED\u30FC\u3059\u308B\u305F\u3081\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u3053\u306E\u30AF\u30E9\u30B9\u7528\u306B\u751F\u6210\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u30AF\u30E9\u30B9\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u660E\u793A\u7684\u306B\u5B9A\u7FA9\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.catch.not.thrown=\u4F8B\u5916{0}\u306F\u5BFE\u5FDC\u3059\u308Btry\u6587\u306E\u672C\u4F53\u3067\u30B9\u30ED\u30FC\u3055\u308C\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002 #warning: -javac.err.array.clone.supported=\ - \u6ce8: \u914d\u5217\u306e\u8907\u88fd\u306f\u78ba\u8a8d\u6e08\u307f\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\u3059\u308b\u3053\u3068\u306f\u306a\u3044\u306e\u3067\u3001catch \u7bc0\u306f\u4e0d\u8981\u3067\u3059\u3002\u4e0d\u8981\u306a catch \u7bc0\u3092\u524a\u9664\u3059\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u4ee5\u524d\u306e\u30b3\u30f3\u30d1\u30a4\u30e9\u3068\u306e\u4e92\u63db\u6027\u3092\u4fdd\u3061\u305f\u3044\u5834\u5408\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u64ec\u4f3c\u7684\u306a throw \u6587\u3092\u633f\u5165\u3057\u3066\u304f\u3060\u3055\u3044: if (false) throw new CloneNotSupportedException(); -javac.err.no.outer.arg=\ - \u5185\u90e8\u30af\u30e9\u30b9\u3092\u56f2\u3080 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u30b9\u30b3\u30fc\u30d7\u5185\u306b\u3042\u308a\u307e\u305b\u3093\u3002\ - \u5185\u90e8\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002\ - {1} \u3092\u751f\u6210\u3059\u308b\u5834\u5408\u306b\u306f\u3001"outer. new Inner()" \u307e\u305f\u306f\ - "outer. super()" \u306e\u3088\u3046\u306b\u660e\u793a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.no.default.outer.arg=\ - \u5185\u90e8\u30af\u30e9\u30b9\u3092\u56f2\u3080 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u30b9\u30b3\u30fc\u30d7\u5185\u306b\u3042\u308a\u307e\u305b\u3093\u3002\ - {1} \u306b\u3064\u3044\u3066\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.no.outer.base=\ - \u5185\u90e8\u30af\u30e9\u30b9\u3092\u56f2\u3080 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u30b9\u30b3\u30fc\u30d7\u5185\u306b\u3042\u308a\u307e\u305b\u3093\u3002\ - {1} \u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5834\u5408\u306f\u3001"outer.member" \u306a\u3069\u306e\u3088\u3046\u306b\u660e\u793a\u3059\u308b\ - \u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -javac.err.inner.interface=\ - \u30e1\u30f3\u30d0\u30fc\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30af\u30e9\u30b9\u306b\u306e\u307f\u8a31\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.static.inner.class=\ - \u578b {0} \u3092 static \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002static \u30e1\u30f3\u30d0\u30fc\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30af\u30e9\u30b9\u306b\u306e\u307f\u8a31\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.static.inner.field=\ - \u5909\u6570 {0} \u306f {1} \u3067 static \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002static \u30e1\u30f3\u30d0\u30fc\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30af\u30e9\u30b9\u306b\u306e\u307f\u8a31\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.static.inner.method=\ - \u30e1\u30bd\u30c3\u30c9 {0} \u306f {1} \u3067 static \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002static \u30e1\u30f3\u30d0\u30fc\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30af\u30e9\u30b9\u306b\u306e\u307f\u8a31\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -javac.err.too.many.errors=\ - \u30a8\u30e9\u30fc\u6570\u304c\u4e0a\u9650\u3092\u8d85\u3048\u307e\u3057\u305f\u3002(\u5831\u544a\u3059\u308b\u30a8\u30e9\u30fc\u306e\u4e0a\u9650\u306f {0} \u3067\u3059\u3002) -javac.err.override.static.with.instance=\ - {1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058 \ - \u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e static \u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002static \ - \u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059\u3002 -javac.err.hide.instance.with.static=\ - {1} \u3067\u5ba3\u8a00\u3055\u308c\u305f static \u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058 \ - \u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e static \u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002static \ - \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30e1\u30bd\u30c3\u30c9\u3092\u8986\u3044\u96a0\u3059\u306e\u306f\u7121\u52b9\u3067\u3059\u3002 -javac.err.override.final.method=\ - {1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e \ - \u30d5\u30a1\u30a4\u30ca\u30eb\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002\u30d5\u30a1\u30a4\u30ca\u30eb\u30e1\u30bd\u30c3\u30c9\u306f \ - \u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.override.is.deprecated=\ - {1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u63a8\u5968\u3055\u308c\u306a\u3044\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\ - {2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e\u63a8\u5968\u3055\u308c\u306a\u3044\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\ - \u30e9\u30a4\u30c9\u3057\u307e\u3059\u3002 -javac.err.override.more.restrictive=\ - {1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e \ - \u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002\u30a2\u30af\u30bb\u30b9\u4fee\u98fe\u5b50\u306f\u3055\u3089\u306b\u5236\u9650\u3055\u308c\u3066 \ - \u4f5c\u6210\u3055\u308c\u307e\u3059\u3002 -javac.err.override.different.return=\ - {1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e \ - \u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002\u540c\u3058\u578b\u306e\u623b\u308a\u5024\u3092\u6301\u305f\u306a\u3051\u308c\u3070 \ - \u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.override.incompatible.exceptions=\ - {1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e \ - \u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002\u305d\u308c\u3089\u306e throws \u7bc0\u306b\u306f\u4e92\u63db\u6027\u304c \ - \u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.meet.different.return=\ - {1} \u304b\u3089\u7d99\u627f\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u304b\u3089\u7d99\u627f\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc \ - \u306e\u30e1\u30bd\u30c3\u30c9\u3068\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u540c\u3058\u578b\u306e\u623b\u308a\u5024\u3092\u6301\u305f\u306a\u3051\u308c\u3070 \ - \u306a\u308a\u307e\u305b\u3093\u3002 -javac.err.nontrivial.meet=\ - {1} \u3068 {2} \u304b\u3089\u7d99\u627f\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306e\u5b9a\u7fa9\u306f\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u3059\u304c\u3001 \ - \u305d\u308c\u3089\u306e\u7d44\u307f\u5408\u308f\u305b\u306f\u5f71\u97ff\u304c\u5927\u304d\u3044\u305f\u3081\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u56de\u907f\u65b9\u6cd5\u3068 \ - \u3057\u3066\u306f\u3001\u3053\u306e\u30af\u30e9\u30b9\u3067\u660e\u793a\u7684\u306b {0} \u3092\u5ba3\u8a00\u3057\u3066\u304f\u3060\u3055\u3044\u3002\ - -javac.err.method.too.long=\ - \u3053\u306e\u30b3\u30fc\u30c9\u306f 64K \u30d0\u30a4\u30c8\u3092\u8d85\u3048\u308b\u30b5\u30a4\u30ba\u306e\u30e1\u30bd\u30c3\u30c9\u306e\u751f\u6210\u3092\u5fc5\u8981\u3068 \ - \u3057\u307e\u3059\u3002Virtual Machine \u306f\u751f\u6210\u3055\u308c\u308b\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u62d2\u5426\u3057\u307e\u3059\u3002 +javac.err.array.clone.supported=\u6CE8\u610F: \u914D\u5217\u306E\u8907\u88FD\u306F\u78BA\u8A8D\u6E08\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3059\u308B\u3053\u3068\u306F\u306A\u3044\u306E\u3067\u3001catch\u7BC0\u306F\u4E0D\u8981\u3067\u3059\u3002\u4E0D\u8981\u306Acatch\u7BC0\u3092\u524A\u9664\u3059\u308B\u304B\u3001\u3042\u308B\u3044\u306F\u4EE5\u524D\u306E\u30B3\u30F3\u30D1\u30A4\u30E9\u3068\u306E\u4E92\u63DB\u6027\u3092\u4FDD\u3061\u305F\u3044\u5834\u5408\u306F\u3001\u6B21\u306E\u3088\u3046\u306A\u64EC\u4F3C\u7684\u306Athrow\u6587\u3092\u633F\u5165\u3057\u3066\u304F\u3060\u3055\u3044: if(false)throw new CloneNotSupportedException()\u3002 +javac.err.no.outer.arg=\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u56F2\u3080{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u30B9\u30B3\u30FC\u30D7\u5185\u306B\u3042\u308A\u307E\u305B\u3093\u3002\u5185\u90E8\u30AF\u30E9\u30B9\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093\u3002{1}\u3092\u751F\u6210\u3059\u308B\u5834\u5408\u306B\u306F\u3001"outer. new Inner()"\u307E\u305F\u306F"outer. super()"\u306E\u3088\u3046\u306B\u660E\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.no.default.outer.arg=\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u56F2\u3080{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u30B9\u30B3\u30FC\u30D7\u5185\u306B\u3042\u308A\u307E\u305B\u3093\u3002{1}\u306B\u3064\u3044\u3066\u306F\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.no.outer.base=\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u56F2\u3080{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u30B9\u30B3\u30FC\u30D7\u5185\u306B\u3042\u308A\u307E\u305B\u3093\u3002{1}\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u5834\u5408\u306F\u3001"outer.member"\u306A\u3069\u306E\u3088\u3046\u306B\u660E\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.inner.interface=\u30E1\u30F3\u30D0\u30FC\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u30FB\u30AF\u30E9\u30B9\u306B\u306E\u307F\u8A31\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.static.inner.class=\u578B{0}\u3092static\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002static\u30E1\u30F3\u30D0\u30FC\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u30FB\u30AF\u30E9\u30B9\u306B\u306E\u307F\u8A31\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.static.inner.field=\u5909\u6570{0}\u306F{1}\u3067static\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002static\u30E1\u30F3\u30D0\u30FC\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u30FB\u30AF\u30E9\u30B9\u306B\u306E\u307F\u8A31\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.static.inner.method=\u30E1\u30BD\u30C3\u30C9{0}\u306F{1}\u3067static\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002static\u30E1\u30F3\u30D0\u30FC\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u30FB\u30AF\u30E9\u30B9\u306B\u306E\u307F\u8A31\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +javac.err.too.many.errors=\u30A8\u30E9\u30FC\u6570\u304C\u4E0A\u9650\u3092\u8D85\u3048\u307E\u3057\u305F\u3002(\u5831\u544A\u3059\u308B\u30A8\u30E9\u30FC\u306E\u4E0A\u9650\u306F{0}\u3067\u3059\u3002) +javac.err.override.static.with.instance={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306Estatic\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002static\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u306E\u306F\u7121\u52B9\u3067\u3059\u3002 +javac.err.hide.instance.with.static={1}\u3067\u5BA3\u8A00\u3055\u308C\u305Fstatic\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306Estatic\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002static\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u8986\u3044\u96A0\u3059\u306E\u306F\u7121\u52B9\u3067\u3059\u3002 +javac.err.override.final.method={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306Efinal\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002final\u30E1\u30BD\u30C3\u30C9\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.override.is.deprecated={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u63A8\u5968\u3055\u308C\u306A\u3044\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u304C\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306E\u63A8\u5968\u3055\u308C\u306A\u3044\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059\u3002 +javac.err.override.more.restrictive={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002\u30A2\u30AF\u30BB\u30B9\u4FEE\u98FE\u5B50\u306F\u3055\u3089\u306B\u5236\u9650\u3055\u308C\u3066\u4F5C\u6210\u3055\u308C\u307E\u3059\u3002 +javac.err.override.different.return={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002\u540C\u3058\u578B\u306E\u623B\u308A\u5024\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\t +javac.err.override.incompatible.exceptions={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002\u305D\u308C\u3089\u306Ethrows\u7BC0\u306B\u306F\u4E92\u63DB\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002 +javac.err.meet.different.return={1}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306E\u30E1\u30BD\u30C3\u30C9\u3068\u4E92\u63DB\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u540C\u3058\u578B\u306E\u623B\u308A\u5024\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 +javac.err.nontrivial.meet={1}\u3068{2}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306E\u5B9A\u7FA9\u306F\u4E92\u63DB\u6027\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u305D\u308C\u3089\u306E\u7D44\u5408\u305B\u306F\u5F71\u97FF\u304C\u5927\u304D\u3044\u305F\u3081\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u56DE\u907F\u65B9\u6CD5\u3068\u3057\u3066\u306F\u3001\u3053\u306E\u30AF\u30E9\u30B9\u3067\u660E\u793A\u7684\u306B{0}\u3092\u5BA3\u8A00\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +javac.err.method.too.long=\u3053\u306E\u30B3\u30FC\u30C9\u306F64KB\u3092\u8D85\u3048\u308B\u30B5\u30A4\u30BA\u306E\u30E1\u30BD\u30C3\u30C9\u306E\u751F\u6210\u3092\u5FC5\u8981\u3068\u3057\u307E\u3059\u3002Virtual Machine\u306F\u751F\u6210\u3055\u308C\u308B\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u62D2\u5426\u3057\u307E\u3059\u3002 # -javac.err.version.too.old=\ - \u30e1\u30b8\u30e3\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3 ''{0}'' \u306f\u53e4\u3044\u305f\u3081\u3001\u3053\u306e\u30c4\u30fc\u30eb\u3067\u306f\u8a8d\u8b58\u3067\u304d\u307e\u305b\u3093\u3002 -javac.err.version.too.recent=\ - \u30e1\u30b8\u30e3\u30fc.\u30de\u30a4\u30ca\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3 ''{0}'' \u306f\u65b0\u3057\u3044\u305f\u3081\u3001\u3053\u306e\u30c4\u30fc\u30eb\u3067\u306f \ - \u8a8d\u8b58\u3067\u304d\u307e\u305b\u3093\u3002 +javac.err.version.too.old=\u30E1\u30B8\u30E3\u30FC\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3''{0}''\u306F\u53E4\u3044\u305F\u3081\u3001\u3053\u306E\u30C4\u30FC\u30EB\u3067\u306F\u8A8D\u8B58\u3067\u304D\u307E\u305B\u3093\u3002 +javac.err.version.too.recent=\u30E1\u30B8\u30E3\u30FC.\u30DE\u30A4\u30CA\u30FC\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3''{0}''\u306F\u65B0\u3057\u3044\u305F\u3081\u3001\u3053\u306E\u30C4\u30FC\u30EB\u3067\u306F\u8A8D\u8B58\u3067\u304D\u307E\u305B\u3093\u3002 # -benv.parsed_in=[{0}\u3092 {1} ms \u3067\u51e6\u7406\u3057\u307e\u3057\u305f] -benv.loaded_in=[{0}\u3092 {1} ms \u3067\u8aad\u307f\u8fbc\u307f\u307e\u3057\u305f] -benv.failed_to_close_class_path=\u30af\u30e9\u30b9\u30d1\u30b9: {0} \u3092\u9589\u3058\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +benv.parsed_in=[{0}\u3092{1}\u30DF\u30EA\u79D2\u3067\u69CB\u6587\u89E3\u6790\u3057\u307E\u3057\u305F] +benv.loaded_in=[{0}\u3092{1}\u30DF\u30EA\u79D2\u3067\u8AAD\u307F\u8FBC\u307F\u307E\u3057\u305F] +benv.failed_to_close_class_path=\u30AF\u30E9\u30B9\u30D1\u30B9: {0}\u3092\u9589\u3058\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F # -main.usage=\ -\u4f7f\u3044\u65b9: {0} \n\ -\n\ - \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n\ -\ \ -g \u3059\u3079\u3066\u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u751f\u6210\u3059\u308b\n\ -\ \ -g:none \u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u751f\u6210\u3057\u306a\u3044\n\ -\ \ -g:'{'lines,vars,source'}' \u3044\u304f\u3064\u304b\u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3060\u3051\u3092\u751f\u6210\u3059\u308b\n\ -\ \ -O \u6700\u9069\u5316; \u30c7\u30d0\u30c3\u30b0\u3092\u6291\u5236\u3057\u3001\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u5927\u304d\u304f\u3059\u308b\n\ -\ \ -nowarn \u8b66\u544a\u3092\u767a\u751f\u3055\u305b\u306a\u3044\n\ -\ \ -verbose \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u52d5\u4f5c\u306b\u3064\u3044\u3066\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\u3059\u308b\n\ -\ \ -deprecation \u63a8\u5968\u3055\u308c\u306a\u3044 API \u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30bd\u30fc\u30b9\u306e\u4f4d\u7f6e\u3092\u51fa\u529b\u3059\u308b\n\ -\ \ -classpath \u30e6\u30fc\u30b6\u30fc\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b\n\ -\ \ -sourcepath \u5165\u529b\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b\n\ -\ \ -bootclasspath \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u4f4d\u7f6e\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\n\ -\ \ -extdirs \u62e1\u5f35\u6a5f\u80fd\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u4f4d\u7f6e\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\n\ -\ \ -d \u751f\u6210\u3055\u308c\u305f\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u5834\u6240\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\n\ -\ \ -encoding \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u4f7f\u7528\u3059\u308b\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6307\u5b9a\u3059\u308b\n\ -\ \ -target \u7279\u5b9a\u306e VM \u30d0\u30fc\u30b8\u30e7\u30f3\u7528\u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3059\u308b +main.usage=\u4F7F\u7528\u65B9\u6CD5: {0} \n\n\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n\\ -g \u3059\u3079\u3066\u306E\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n\\ -g:none \u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u3092\u751F\u6210\u3057\u306A\u3044\n\\ -g:''{''lines,vars,source''}''\u3044\u304F\u3064\u304B\u306E\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u306E\u307F\u3092\u751F\u6210\u3059\u308B\n\\ -O \u6700\u9069\u5316;\u30C7\u30D0\u30C3\u30B0\u3092\u6291\u5236\u3057\u3001\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u5927\u304D\u304F\u3059\u308B\n\\ -nowarn \u8B66\u544A\u3092\u767A\u751F\u3055\u305B\u306A\u3044\n\\ -verbose \u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u52D5\u4F5C\u306B\u3064\u3044\u3066\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n\\ -deprecation \u63A8\u5968\u3055\u308C\u306A\u3044API\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u30BD\u30FC\u30B9\u306E\u4F4D\u7F6E\u3092\u51FA\u529B\u3059\u308B\n\\ -classpath \u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n\\ -sourcepath \u5165\u529B\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n\\ -bootclasspath \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u4F4D\u7F6E\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n\\ -extdirs \u62E1\u5F35\u6A5F\u80FD\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u305F\u4F4D\u7F6E\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n\\ -d \u751F\u6210\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u683C\u7D0D\u3059\u308B\u5834\u6240\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n\\ -encoding \u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u4F7F\u7528\u3059\u308B\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3059\u308B\n\\ -target \u7279\u5B9A\u306EVM\u30D0\u30FC\u30B8\u30E7\u30F3\u7528\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3059\u308B # -main.unsupported.usage=\ -\ \ -Xdepend \u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u305f\u3081\u306e\u3055\u3089\u306b\u65b0\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u3092\u518d\u5e30\u7684\u306b\u691c\u7d22\u3059\u308b\n\ -\ \ -Xstdout \u30e1\u30c3\u30bb\u30fc\u30b8\u3092 System.out \u306b\u9001\u308b\n\ -\ \ -Xverbosepath \u30d1\u30b9\u3068\u6a19\u6e96\u62e1\u5f35\u6a5f\u80fd\u306e\u691c\u7d22\u65b9\u6cd5\u3092\u8a18\u8ff0\u3059\u308b\n\ -\ \ -J \u5f15\u6570\u3092 Java \u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u306b\u6e21\u3059\n\ -\n\ --X \u304a\u3088\u3073 -J \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u6a19\u6e96\u3067\u306f\u306a\u304f\u3001\u4e88\u544a\u306a\u3057\u306b\u5909\u66f4\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +main.unsupported.usage=\ \ -Xdepend \u518D\u30B3\u30F3\u30D1\u30A4\u30EB\u306E\u305F\u3081\u306E\u3055\u3089\u306B\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u518D\u5E30\u7684\u306B\u691C\u7D22\u3059\u308B\n\\ -Xstdout \u30E1\u30C3\u30BB\u30FC\u30B8\u3092System.out\u306B\u9001\u308B\n\\ -Xverbosepath \u30D1\u30B9\u3068\u6A19\u6E96\u62E1\u5F35\u6A5F\u80FD\u306E\u691C\u7D22\u65B9\u6CD5\u3092\u8A18\u8FF0\u3059\u308B\n\\ -J \u5F15\u6570\u3092Java\u30A4\u30F3\u30BF\u30FC\u30D7\u30EA\u30BF\u306B\u6E21\u3059\n\n-X\u304A\u3088\u3073-J\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u6A19\u6E96\u3067\u306F\u306A\u304F\u3001\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002 # -main.conflicting.options=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u3068 {1} \u306f\u540c\u6642\u306b\u306f\u4f7f\u7528\u3057\u307e\u305b\u3093\u3002 -main.option.already.seen={0} \u30aa\u30d7\u30b7\u30e7\u30f3\u306f 1 \u56de\u3057\u304b\u6307\u5b9a\u3057\u307e\u305b\u3093\u3002 -main.option.requires.argument={0} \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002 -main.bad.debug.option={0} \u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002\u6307\u5b9a\u3067\u304d\u308b\u306e\u306f lines\u3001vars\u3001source \u3060\u3051\u3067\u3001\u30b3\u30f3\u30de\u3067\u533a\u5207\u308a\u307e\u3059\u3002 -main.no.such.directory=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 -main.no.such.option={0} \u306f\u7121\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u307e\u305f\u306f\u5f15\u6570\u3067\u3059\u3002 -main.unknown.release=\u30ea\u30ea\u30fc\u30b9 ''{0}'' \u306f\u3053\u306e\u30b3\u30f3\u30d1\u30a4\u30e9\u3067\u306f\u8a8d\u8b58\u3055\u308c\u307e\u305b\u3093\u3002 -main.wrote=[\u66f8\u304d\u8fbc\u307f {0}] -main.errors=\u30a8\u30e9\u30fc {0} \u500b -main.1error=\u30a8\u30e9\u30fc 1 \u500b -main.warnings=\u8b66\u544a {0} \u500b -main.1warning=\u8b66\u544a 1 \u500b -main.done_in=[{0} ms \u3067\u5b8c\u4e86] -main.no.memory=\ - \u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u30e1\u30e2\u30ea\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002"-J-mx" \u30b3\u30de\u30f3\u30c9\u884c\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3001\u6700\u5927\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba\u3092\u5897\u3084\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -main.stack.overflow=\ - \u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u30b9\u30bf\u30c3\u30af\u7a7a\u9593\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002"-J-oss" \u30b3\u30de\u30f3\u30c9\u884c\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3001Java \u30b9\u30bf\u30c3\u30af\u306b\u5272\u308a\u5f53\u3066\u308b\u30e1\u30e2\u30ea\u3092\u5897\u3084\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -main.path.msg=\ - [\u30bd\u30fc\u30b9\u30af\u30e9\u30b9\u30d1\u30b9\u306f "{0}" \u3067\u3059]\n\ - [\u30e9\u30a4\u30d6\u30e9\u30ea\u30af\u30e9\u30b9\u30d1\u30b9\u306f "{1}" \u3067\u3059] -javac.err.invalid.encoding.char=\ - \u3053\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u304c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u3082\u306e\u3068\u7570\u306a\u3063\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002-encoding \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6307\u5b9a\u3059\u308b\u304b\u3001\u3042\u308b\u3044\u306f native2ascii \u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092 ASCII \u6587\u5b57\u3060\u3051\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +main.conflicting.options=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u3068{1}\u306F\u540C\u6642\u306B\u306F\u4F7F\u7528\u3057\u307E\u305B\u3093\u3002 +main.option.already.seen={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8907\u6570\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +main.option.requires.argument={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059\u3002 +main.bad.debug.option={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F"lines"\u3001"vars"\u3001"source"\u306E\u307F\u3067\u3001\u30AB\u30F3\u30DE\u3067\u533A\u5207\u308A\u307E\u3059\u3002 +main.no.such.directory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002 +main.no.such.option={0}\u306F\u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u307E\u305F\u306F\u5F15\u6570\u3067\u3059\u3002 +main.unknown.release=\u30EA\u30EA\u30FC\u30B9''{0}''\u306F\u3053\u306E\u30B3\u30F3\u30D1\u30A4\u30E9\u3067\u306F\u8A8D\u8B58\u3055\u308C\u307E\u305B\u3093\u3002 +main.wrote=[{0}\u3092\u66F8\u8FBC\u307F\u5B8C\u4E86] +main.errors=\u30A8\u30E9\u30FC{0}\u500B +main.1error=\u30A8\u30E9\u30FC1\u500B +main.warnings=\u8B66\u544A{0}\u500B +main.1warning=\u8B66\u544A1\u500B +main.done_in=[{0}\u30DF\u30EA\u79D2\u3067\u5B8C\u4E86] +main.no.memory=\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u30E1\u30E2\u30EA\u30FC\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002"-J-mx"\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u3001\u6700\u5927\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u5897\u3084\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +main.stack.overflow=\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u30B9\u30BF\u30C3\u30AF\u7A7A\u9593\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002"-J-oss"\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u3001Java\u30B9\u30BF\u30C3\u30AF\u306B\u5272\u308A\u5F53\u3066\u308B\u30E1\u30E2\u30EA\u30FC\u3092\u5897\u3084\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +main.path.msg=[\u30BD\u30FC\u30B9\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9\u306F"{0}"\u3067\u3059]\n[\u30E9\u30A4\u30D6\u30E9\u30EA\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9\u306F "{1}"\u3067\u3059] +javac.err.invalid.encoding.char=\u3053\u306E\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u304C\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306E\u3082\u306E\u3068\u7570\u306A\u3063\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002-encoding\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3057\u3066\u30D5\u30A1\u30A4\u30EB\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3059\u308B\u304B\u3001\u307E\u305F\u306Fnative2ascii\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3\u3092\u4F7F\u7528\u3057\u3066\u30BD\u30FC\u30B9\u30FB\u30B3\u30FC\u30C9\u3092ASCII\u6587\u5B57\u306E\u307F\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002 diff --git a/jdk/src/share/classes/sun/tools/javac/resources/javac_zh_CN.properties b/jdk/src/share/classes/sun/tools/javac/resources/javac_zh_CN.properties index c0e48eae9b9..787d0d6263a 100644 --- a/jdk/src/share/classes/sun/tools/javac/resources/javac_zh_CN.properties +++ b/jdk/src/share/classes/sun/tools/javac/resources/javac_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1996, 1999, 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 @@ -23,613 +23,292 @@ # questions. # -javac.err.internal=\ - \u5185\u90e8\u9519\u8bef\u3002 -javac.err.eof.in.comment=\ - \u8f93\u5165\u7ed3\u5c3e\u5904\u672a\u4ee5\u6ce8\u91ca\u7ed3\u675f\u3002 -javac.err.eof.in.string=\ - \u8f93\u5165\u7ed3\u5c3e\u5904\u672a\u4ee5\u5b57\u7b26\u4e32\u7ed3\u675f\u3002 -javac.err.newline.in.string=\ - \u884c\u7ed3\u5c3e\u5904\u672a\u4ee5\u5b57\u7b26\u4e32\u7ed3\u675f\u3002 -javac.err.invalid.char.constant=\ - \u5b57\u7b26\u5e38\u91cf\u65e0\u6548\u3002 -javac.err.unbalanced.paren=\ - \u62ec\u53f7\u591a\u4f59\u6216\u7f3a\u5c11\u3002 -javac.err.invalid.escape.char=\ - \u6362\u7801\u7b26\u65e0\u6548\u3002 -javac.err.invalid.hex.number=\ - \u5341\u516d\u8fdb\u5236\u6570\u5b57\u5fc5\u987b\u5305\u542b\u81f3\u5c11\u4e00\u4f4d\u5341\u516d\u8fdb\u5236\u6570\u5b57\u3002 -javac.err.invalid.octal.number=\ - \u4ee5\u516b\u8fdb\u5236\u6570\u5b57\u8868\u793a\u7684\u5b57\u7b26\u65e0\u6548\u3002 -javac.err.invalid.number=\ - \u4ee5\u6570\u5b57\u8868\u793a\u7684\u5b57\u7b26\u65e0\u6548\u3002 -javac.err.funny.char=\ - \u8f93\u5165\u7684\u5b57\u7b26\u65e0\u6548\u3002 -javac.err.float.format=\ - \u6d6e\u70b9\u6570\u683c\u5f0f\u65e0\u6548\u3002 -javac.err.overflow.int.oct=\ - \u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u516b\u8fdb\u5236\u6574\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\ - 00 \u81f3 037777777777 \u8303\u56f4\u4e4b\u95f4\u3002 -javac.err.overflow.int.dec=\ - \u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u5341\u8fdb\u5236\u6574\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\ - -2147483648 \u81f3 2147483647 \u8303\u56f4\u4e4b\u95f4\u3002 -javac.err.overflow.int.hex=\ - \u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u5341\u516d\u8fdb\u5236\u6574\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\ - 0x0 \u81f3 0xffffffff \u8303\u56f4\u4e4b\u95f4\u3002 -javac.err.overflow.long.oct=\ - \u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u516b\u8fdb\u5236\u957f\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\ - 00L \u81f3 01777777777777777777777L \u8303\u56f4\u4e4b\u95f4\u3002 -javac.err.overflow.long.dec=\ - \u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u5341\u8fdb\u5236\u957f\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\ - -9223372036854775808L \u81f3 9223372036854775807L \u8303\u56f4\u4e4b\u95f4\u3002 -javac.err.overflow.long.hex=\ - \u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u5341\u516d\u8fdb\u5236\u957f\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\ - 0x0L \u81f3 0xffffffffffffffffL \u8303\u56f4\u4e4b\u95f4\u3002 -javac.err.overflow.float=\ - \u6570\u5b57\u6ea2\u51fa\uff1a\u6d6e\u70b9\u5b57\u9762\u503c\u8fc7\u5927\u3002 -javac.err.overflow.double=\ - \u6570\u5b57\u6ea2\u51fa\uff1a\u53cc\u7cbe\u5ea6\u578b\u5b57\u9762\u503c\u8fc7\u5927\u3002 -javac.err.underflow.float=\ - \u6570\u5b57\u4e0b\u6ea2\uff1a\u6d6e\u70b9\u5b57\u9762\u503c\u8fc7\u5c0f\u3002 -javac.err.underflow.double=\ - \u6570\u5b57\u4e0b\u6ea2\uff1a\u53cc\u7cbe\u5ea6\u578b\u5b57\u9762\u503c\u8fc7\u5c0f\u3002 -javac.err.token.expected=\ - \u9700\u8981 "{0}"\u3002 -javac.err.statement.expected=\ - \u9700\u8981\u8bed\u53e5\u3002 -javac.err.type.expected=\ - \u9700\u8981\u7c7b\u578b\u3002 -javac.err.identifier.expected=\ - \u9700\u8981\u6807\u8bc6\u7b26\u3002 -javac.err.class.expected=\ - \u9700\u8981 "class" \u6216 "interface" \u5173\u952e\u5b57\u3002 -javac.err.toplevel.expected=\ - \u9700\u8981\u7c7b\u58f0\u660e\u6216\u63a5\u53e3\u58f0\u660e\u3002 -javac.err.missing.term=\ - \u7f3a\u5c11\u6761\u4ef6\u3002 -javac.err.assign.in.conditionalexpr=\ - \u4e0d\u5141\u8bb8\u5c06\u8d4b\u503c\u8868\u8fbe\u5f0f\u7528\u4f5c\u6761\u4ef6\u8868\u8fbe\u5f0f\u7684\u7b2c\u4e09\u4e2a\u5b50\u8868\u8fbe\u5f0f\ - \uff08\u5373 ?: \u8868\u8fbe\u5f0f\uff09\u3002 \ - \u8bf7\u5c1d\u8bd5\u5c06\u6b64\u8d4b\u503c\u8868\u8fbe\u5f0f\u52a0\u4e0a\u62ec\u53f7\u3002 -javac.err.else.without.if=\ - \u6709 "if"\uff0c\u4f46\u662f\u6ca1\u6709 "else"\u3002 -javac.err.catch.without.try=\ - \u6709 "catch"\uff0c\u4f46\u662f\u6ca1\u6709 "try"\u3002 -javac.err.finally.without.try=\ - \u6709 "finally"\uff0c\u4f46\u662f\u6ca1\u6709 "try"\u3002 -javac.err.try.without.catch.finally=\ - \u6709 "try"\uff0c\u4f46\u662f\u6ca1\u6709 "catch" \u6216 "finally"\u3002 -javac.err.case.without.switch=\ - "case" \u4e0d\u5728 switch \u8bed\u53e5\u4e2d\u3002 -javac.err.default.without.switch=\ - "default" \u4e0d\u5728 switch \u8bed\u53e5\u4e2d\u3002 -javac.err.io.exception=\ - {0} \u4e2d\u51fa\u73b0 I/O \u9519\u8bef\u3002 -javac.err.io.exception.package=\ - \u68c0\u67e5\u8f6f\u4ef6\u5305 {0} \u662f\u5426\u5b58\u5728\u65f6\u51fa\u73b0 I/O \u9519\u8bef\u3002 -javac.err.malformed.attribute=\ - \u5305\u542b {0} \u7684\u7c7b\u6587\u4ef6\u7684 "{1}" \u5c5e\u6027\u4e0d\u89c4\u5219\u3002 -javac.err.array.index.required=\ - \u9700\u8981\u6570\u7ec4\u7d22\u5f15\u3002 -javac.err.not.array=\ - [] \u53ea\u80fd\u5e94\u7528\u4e8e\u6570\u7ec4\uff0c\u800c\u4e0d\u80fd\u5e94\u7528\u4e8e {0}\u3002 -javac.err.array.dim.in.decl=\ - \u65e0\u6cd5\u5728\u58f0\u660e\u4e2d\u6307\u5b9a\u6570\u7ec4\u7ef4\u6570\u3002 -javac.err.array.dim.in.type=\ - \u65e0\u6cd5\u5728\u7c7b\u578b\u8868\u8fbe\u5f0f\u4e2d\u6307\u5b9a\u6570\u7ec4\u7ef4\u6570\u3002 -javac.err.invalid.array.expr=\ - \u6570\u7ec4\u5e38\u91cf\u53ea\u80fd\u7528\u4e8e\u521d\u59cb\u5316\u7a0b\u5e8f\u4e2d\u3002 -javac.err.invalid.array.init=\ - \u7c7b\u578b {0} \u7684\u521d\u59cb\u5316\u7a0b\u5e8f\u65e0\u6548\u3002 -javac.err.invalid.lhs.assignment=\ - \u8d4b\u503c\u8868\u8fbe\u5f0f\u7684\u5de6\u4fa7\u65e0\u6548\u3002 -javac.err.invalid.args=\ - {0} \u7684\u53c2\u6570\u65e0\u6548\u3002 -javac.err.invalid.cast=\ - \u4ece {0} \u5230 {1} \u7684\u8f6c\u6362\u65e0\u6548\u3002 -javac.err.invalid.instanceof=\ - {0} \u65e0\u6cd5\u6210\u4e3a {1} \u7684\u5b9e\u4f8b\u3002 -javac.err.invalid.type.expr=\ - \u7c7b\u578b\u8868\u8fbe\u5f0f\u65e0\u6548\u3002 -javac.err.anonymous.extends=\ - \u53ea\u6709\u5df2\u547d\u540d\u7684\u7c7b\u624d\u80fd\u6709 "extends" \u6216 "implements" \u5b50\u53e5\u3002 -javac.err.invalid.field.reference=\ - \u5c1d\u8bd5\u5728 {1} \u4e2d\u5f15\u7528\u5b57\u6bb5 {0}\u3002 -javac.err.no.such.field=\ - {1} \u4e2d\u672a\u5b9a\u4e49\u53d8\u91cf {0}\u3002 -javac.err.no.field.access=\ - \u65e0\u6cd5\u4ece {2} \u4e2d\u8bbf\u95ee {1} \u4e2d\u7684\u53d8\u91cf {0}\u3002 -javac.err.no.type.access=\ - \u65e0\u6cd5\u4ece {2} \u4e2d\u8bbf\u95ee {1} \u4e2d\u7684\u5185\u90e8\u7c7b\u578b {0}\u3002 -javac.err.cant.access.member.type=\ - \u65e0\u6cd5\u4ece {2} \u4e2d\u8bbf\u95ee\u6210\u5458 {0} \u6240\u5c5e\u7684\u7c7b\u578b {1}\u3002 -javac.err.inner.class.expected=\ - \u5728 {1} \u4e2d\u672a\u627e\u5230\u5185\u90e8\u7c7b {0}\u3002 -javac.err.no.static.field.access=\ - \u65e0\u6cd5\u9759\u6001\u5f15\u7528 {1} \u4e2d\u7684\u975e\u9759\u6001\u53d8\u91cf {0}\u3002 -javac.err.inner.static.ref=\ - \u65e0\u6cd5\u9759\u6001\u5f15\u7528\u5185\u90e8\u7c7b {0}\u3002 -javac.err.ambig.field=\ - \u5bf9 {0} \u7684\u5f15\u7528\u4e0d\u660e\u786e\u3002\u5728 {1} \u548c {2} \u4e2d\u90fd\u5bf9\u5176\u8fdb\u884c\u4e86\u5b9a\u4e49\u3002 -javac.err.invalid.field=\ - \u5c1d\u8bd5\u5c06 {1} \u4e2d\u7684\u65b9\u6cd5 {0} \u4f5c\u4e3a\u5b9e\u4f8b\u53d8\u91cf\u8fdb\u884c\u5f15\u7528\u3002 -javac.err.assign.to.final=\ - \u65e0\u6cd5\u4e3a\u6700\u7ec8\u53d8\u91cf\u6307\u5b9a\u503c\uff1a{0} -javac.err.assign.to.blank.final=\ - \u65e0\u6cd5\u4e3a\u7a7a\u6700\u7ec8\u53d8\u91cf\u6307\u5b9a\u7b2c\u4e8c\u4e2a\u503c\uff1a{0} -javac.err.qualified.static.final.assign=\ - \u4e3a\u7a7a\u9759\u6001\u6700\u7ec8\u53d8\u91cf\u6307\u5b9a\u7684\u53d8\u91cf\u5fc5\u987b\u4e3a\u7b80\u540d\uff08\u5176\u540e\u4e0d\u80fd\u52a0\u70b9 "."\uff09\u3002 -javac.err.bad.qualified.final.assign=\ - \u4e3a\u7a7a\u6700\u7ec8\u53d8\u91cf\u6307\u5b9a\u7684\u53d8\u91cf\u5fc5\u987b\u4e3a\u7b80\u540d\u6216\u7531 "this" \u9650\u5b9a\u7684\u7b80\u540d\uff1a"{0}" \u6216 "this.{0}"\u3002 -javac.err.assign.to.blank.final.in.loop=\ - \u5c1d\u8bd5\u5728 loop \u4e2d\u6307\u5b9a\u7a7a\u6700\u7ec8\u53d8\u91cf {0}\u3002\u53ea\u80fd\u8fdb\u884c\u4e00\u6b21\u521d\u59cb\u5316\u3002 -javac.err.assign.to.uplevel=\ - \u5c1d\u8bd5\u4ee5\u5176\u4ed6\u65b9\u6cd5\u6307\u5b9a\u503c\u7ed9\u53d8\u91cf {0}\u3002\u5c01\u95ed\u5757\u4e2d\u53ea\u6709\u6700\u7ec8\u5c40\u90e8\u53d8\u91cf\u53ef\u7528\u3002 -javac.err.invalid.uplevel=\ - \u5c1d\u8bd5\u4ee5\u5176\u4ed6\u65b9\u6cd5\u4f7f\u7528\u975e\u6700\u7ec8\u53d8\u91cf {0}\u3002\u5c01\u95ed\u5757\u4e2d\u53ea\u6709\u6700\u7ec8\u5c40\u90e8\u53d8\u91cf\u53ef\u7528\u3002 -javac.err.undef.var=\ - \u672a\u5b9a\u4e49\u7684\u53d8\u91cf\uff1a{0} -javac.err.undef.var.super=\ - \u672a\u5b9a\u4e49\u7684\u53d8\u91cf\uff1a{0}\u3002 "super" \u5173\u952e\u5b57\u53ea\u80fd\u7528\u4e8e\u6210\u5458\u8bbf\u95ee\u548c\u6784\u9020\u51fd\u6570\u8c03\u7528\u3002 -javac.err.undef.var.or.package=\ - \u672a\u5b9a\u4e49\u7684\u53d8\u91cf\u6216\u8f6f\u4ef6\u5305\u540d\u79f0\uff1a{0} -javac.err.undef.class.or.package=\ - \u672a\u5b9a\u4e49\u7684\u7c7b\u6216\u8f6f\u4ef6\u5305\u540d\u79f0\uff1a{0} -javac.err.undef.var.class.or.package=\ - \u672a\u5b9a\u4e49\u7684\u53d8\u91cf\u3001\u7c7b\u6216\u8f6f\u4ef6\u5305\u540d\u79f0\uff1a{0} -javac.err.undef.class=\ - \u672a\u5b9a\u4e49\u7684\u7c7b\u540d\uff1a{0} -javac.err.undef.var.or.class=\ - \u672a\u5b9a\u4e49\u7684\u53d8\u91cf\u6216\u7c7b\u540d\uff1a{0} -javac.err.var.not.initialized=\ - \u53ef\u80fd\u5c1a\u672a\u521d\u59cb\u5316\u53d8\u91cf {0}\u3002 -javac.err.final.var.not.initialized=\ - \u53ef\u80fd\u5c1a\u672a\u521d\u59cb\u5316\u7a7a\u6700\u7ec8\u53d8\u91cf "{0}"\u3002\u5fc5\u987b\u5728\u521d\u59cb\u5316\u7a0b\u5e8f\u6216\u5728\u6bcf\u4e2a\u6784\u9020\u51fd\u6570\u4e2d\u5bf9\u5176\u6307\u5b9a\u503c\u3002 -javac.err.access.inst.before.super=\ - \u65e0\u6cd5\u5728\u8c03\u7528\u7236\u7c7b\u6784\u9020\u51fd\u6570\u4e4b\u524d\u5f15\u7528 {0}\u3002 -javac.err.ambig.class=\ - \u4e0d\u660e\u786e\u7684\u7c7b\uff1a{0} \u548c {1} -javac.err.invalid.arg=\ - {0} \u7684\u53c2\u6570\u65e0\u6548\u3002 -javac.err.invalid.arg.type=\ - {1} \u7684\u53c2\u6570\u7c7b\u578b {0} \u65e0\u6548\u3002 -javac.err.invalid.length=\ - "length" \u5e94\u7528\u5230\u4e0d\u662f\u6570\u7ec4\u7684 {0}\u3002 -javac.err.invalid.constr.invoke=\ - \u53ea\u6709\u6784\u9020\u51fd\u6570\u624d\u80fd\u8c03\u7528\u6784\u9020\u51fd\u6570\u3002 -javac.err.constr.invoke.not.first=\ - \u5728\u65b9\u6cd5\u4e2d\u5fc5\u987b\u9996\u5148\u8c03\u7528\u6784\u9020\u51fd\u6570\u3002 -javac.err.invalid.method.invoke=\ - \u65e0\u6cd5\u5728 {0} \u4e0a\u8c03\u7528\u65b9\u6cd5\u3002 -javac.err.undef.meth=\ - \u5728 {1} \u4e2d\u672a\u627e\u5230\u65b9\u6cd5 {0}\u3002 -javac.err.no.meth.access=\ - \u65e0\u6cd5\u4ece {2} \u4e2d\u8bbf\u95ee {1} \u4e2d\u7684\u65b9\u6cd5 {0}\u3002 +javac.err.internal=\u5185\u90E8\u9519\u8BEF\u3002 +javac.err.eof.in.comment=\u8F93\u5165\u7ED3\u5C3E\u5904\u672A\u4EE5\u6CE8\u91CA\u7EC8\u6B62\u3002 +javac.err.eof.in.string=\u8F93\u5165\u7ED3\u5C3E\u5904\u672A\u4EE5\u5B57\u7B26\u4E32\u7EC8\u6B62\u3002 +javac.err.newline.in.string=\u884C\u7ED3\u5C3E\u5904\u672A\u4EE5\u5B57\u7B26\u4E32\u7EC8\u6B62\u3002 +javac.err.invalid.char.constant=\u5B57\u7B26\u5E38\u91CF\u65E0\u6548\u3002 +javac.err.unbalanced.paren=\u62EC\u53F7\u4E0D\u914D\u5BF9\u3002 +javac.err.invalid.escape.char=\u8F6C\u4E49\u7B26\u65E0\u6548\u3002 +javac.err.invalid.hex.number=\u5341\u516D\u8FDB\u5236\u6570\u5B57\u5FC5\u987B\u5305\u542B\u81F3\u5C11\u4E00\u4F4D\u5341\u516D\u8FDB\u5236\u6570\u5B57\u3002 +javac.err.invalid.octal.number=\u4EE5\u516B\u8FDB\u5236\u6570\u5B57\u8868\u793A\u7684\u5B57\u7B26\u65E0\u6548\u3002 +javac.err.invalid.number=\u4EE5\u6570\u5B57\u8868\u793A\u7684\u5B57\u7B26\u65E0\u6548\u3002 +javac.err.funny.char=\u8F93\u5165\u7684\u5B57\u7B26\u65E0\u6548\u3002 +javac.err.float.format=\u6D6E\u70B9\u6570\u683C\u5F0F\u65E0\u6548\u3002 +javac.err.overflow.int.oct=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u516B\u8FDB\u5236\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 00 \u81F3 037777777777 \u8303\u56F4\u4E4B\u95F4\u3002 +javac.err.overflow.int.dec=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u5341\u8FDB\u5236\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 -2147483648 \u81F3 2147483647 \u8303\u56F4\u4E4B\u95F4\u3002 +javac.err.overflow.int.hex=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u5341\u516D\u8FDB\u5236\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 0x0 \u81F3 0xffffffff \u8303\u56F4\u4E4B\u95F4\u3002 +javac.err.overflow.long.oct=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u516B\u8FDB\u5236\u957F\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 00L \u81F3 01777777777777777777777L \u8303\u56F4\u4E4B\u95F4\u3002 +javac.err.overflow.long.dec=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u5341\u8FDB\u5236\u957F\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 -9223372036854775808L \u81F3 9223372036854775807L \u8303\u56F4\u4E4B\u95F4\u3002 +javac.err.overflow.long.hex=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u5341\u516D\u8FDB\u5236\u957F\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 0x0L \u81F3 0xffffffffffffffffL \u8303\u56F4\u4E4B\u95F4\u3002 +javac.err.overflow.float=\u6570\u5B57\u6EA2\u51FA: \u6D6E\u70B9\u6587\u5B57\u8FC7\u5927\u3002 +javac.err.overflow.double=\u6570\u5B57\u6EA2\u51FA: \u53CC\u7CBE\u5EA6\u578B\u6587\u5B57\u8FC7\u5927\u3002 +javac.err.underflow.float=\u6570\u5B57\u4E0B\u6EA2: \u6D6E\u70B9\u6587\u5B57\u8FC7\u5C0F\u3002 +javac.err.underflow.double=\u6570\u5B57\u4E0B\u6EA2: \u53CC\u7CBE\u5EA6\u578B\u6587\u5B57\u8FC7\u5C0F\u3002 +javac.err.token.expected=\u9700\u8981 ''{0}''\u3002 +javac.err.statement.expected=\u9700\u8981\u8BED\u53E5\u3002 +javac.err.type.expected=\u9700\u8981\u7C7B\u578B\u3002 +javac.err.identifier.expected=\u9700\u8981\u6807\u8BC6\u7B26\u3002 +javac.err.class.expected=\u9700\u8981 ''class'' \u6216 ''interface'' \u5173\u952E\u5B57\u3002 +javac.err.toplevel.expected=\u9700\u8981\u7C7B\u58F0\u660E\u6216\u63A5\u53E3\u58F0\u660E\u3002 +javac.err.missing.term=\u7F3A\u5C11\u6761\u4EF6\u3002 +javac.err.assign.in.conditionalexpr=\u4E0D\u5141\u8BB8\u5C06\u8D4B\u503C\u8868\u8FBE\u5F0F\u7528\u4F5C\u6761\u4EF6\u8868\u8FBE\u5F0F\u7684\u7B2C\u4E09\u4E2A\u5B50\u8868\u8FBE\u5F0F (\u5373 ?: \u8868\u8FBE\u5F0F)\u3002\u8BF7\u5C1D\u8BD5\u5BF9\u6B64\u8D4B\u503C\u8868\u8FBE\u5F0F\u52A0\u62EC\u53F7\u3002 +javac.err.else.without.if=\u6709 ''if'', \u4F46\u662F\u6CA1\u6709 ''else''\u3002 +javac.err.catch.without.try=\u6709 ''catch'', \u4F46\u662F\u6CA1\u6709 ''try''\u3002 +javac.err.finally.without.try=\u6709 ''finally'', \u4F46\u662F\u6CA1\u6709 ''try''\u3002 +javac.err.try.without.catch.finally=\u6709 ''try'', \u4F46\u662F\u6CA1\u6709 ''catch'' \u6216 ''finally''\u3002 +javac.err.case.without.switch=''case'' \u4E0D\u5728 switch \u8BED\u53E5\u4E2D\u3002 +javac.err.default.without.switch=''default'' \u4E0D\u5728 switch \u8BED\u53E5\u4E2D\u3002 +javac.err.io.exception={0}\u4E2D\u51FA\u73B0 I/O \u9519\u8BEF\u3002 +javac.err.io.exception.package=\u68C0\u67E5\u7A0B\u5E8F\u5305{0}\u662F\u5426\u5B58\u5728\u65F6\u51FA\u73B0 I/O \u9519\u8BEF\u3002 +javac.err.malformed.attribute=\u5305\u542B{0}\u7684\u7C7B\u6587\u4EF6\u5177\u6709\u683C\u5F0F\u9519\u8BEF\u7684 ''{1}'' \u5C5E\u6027\u3002 +javac.err.array.index.required=\u9700\u8981\u6570\u7EC4\u7D22\u5F15\u3002 +javac.err.not.array=[] \u53EA\u80FD\u5E94\u7528\u4E8E\u6570\u7EC4, \u800C\u4E0D\u80FD\u5E94\u7528\u4E8E{0}\u3002 +javac.err.array.dim.in.decl=\u65E0\u6CD5\u5728\u58F0\u660E\u4E2D\u6307\u5B9A\u6570\u7EC4\u7EF4\u3002 +javac.err.array.dim.in.type=\u65E0\u6CD5\u5728\u7C7B\u578B\u8868\u8FBE\u5F0F\u4E2D\u6307\u5B9A\u6570\u7EC4\u7EF4\u3002 +javac.err.invalid.array.expr=\u6570\u7EC4\u5E38\u91CF\u53EA\u80FD\u7528\u4E8E\u521D\u59CB\u5316\u7A0B\u5E8F\u4E2D\u3002 +javac.err.invalid.array.init=\u7C7B\u578B{0}\u7684\u521D\u59CB\u5316\u7A0B\u5E8F\u65E0\u6548\u3002 +javac.err.invalid.lhs.assignment=\u8D4B\u503C\u8868\u8FBE\u5F0F\u7684\u5DE6\u4FA7\u65E0\u6548\u3002 +javac.err.invalid.args={0}\u7684\u53C2\u6570\u65E0\u6548\u3002 +javac.err.invalid.cast=\u4ECE{0}\u5230{1}\u7684\u8F6C\u6362\u65E0\u6548\u3002 +javac.err.invalid.instanceof={0}\u65E0\u6CD5\u6210\u4E3A{1}\u7684\u5B9E\u4F8B\u3002 +javac.err.invalid.type.expr=\u7C7B\u578B\u8868\u8FBE\u5F0F\u65E0\u6548\u3002 +javac.err.anonymous.extends=\u53EA\u6709\u5DF2\u547D\u540D\u7684\u7C7B\u624D\u80FD\u6709 ''extends'' \u6216 ''implements'' \u5B50\u53E5\u3002 +javac.err.invalid.field.reference=\u5C1D\u8BD5\u5728{1}\u4E2D\u5F15\u7528\u5B57\u6BB5{0}\u3002 +javac.err.no.such.field={1}\u4E2D\u672A\u5B9A\u4E49\u53D8\u91CF{0}\u3002 +javac.err.no.field.access=\u65E0\u6CD5\u4ECE{2}\u8BBF\u95EE{1}\u4E2D\u7684\u53D8\u91CF{0}\u3002 +javac.err.no.type.access=\u65E0\u6CD5\u4ECE{2}\u8BBF\u95EE{1}\u4E2D\u7684\u5185\u90E8\u7C7B\u578B {0}\u3002 +javac.err.cant.access.member.type=\u65E0\u6CD5\u4ECE{2}\u8BBF\u95EE\u6210\u5458{0}\u6240\u5C5E\u7684\u7C7B\u578B {1}\u3002 +javac.err.inner.class.expected=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u5185\u90E8\u7C7B{0}\u3002 +javac.err.no.static.field.access=\u65E0\u6CD5\u9759\u6001\u5F15\u7528{1}\u4E2D\u7684\u975E\u9759\u6001\u53D8\u91CF{0}\u3002 +javac.err.inner.static.ref=\u65E0\u6CD5\u9759\u6001\u5F15\u7528\u5185\u90E8\u7C7B{0}\u3002 +javac.err.ambig.field=\u5BF9{0}\u7684\u5F15\u7528\u4E0D\u660E\u786E\u3002\u5728{1}\u548C{2}\u4E2D\u90FD\u5BF9\u5176\u8FDB\u884C\u4E86\u5B9A\u4E49\u3002 +javac.err.invalid.field=\u5C1D\u8BD5\u5C06{1}\u4E2D\u7684\u65B9\u6CD5{0}\u4F5C\u4E3A\u5B9E\u4F8B\u53D8\u91CF\u8FDB\u884C\u5F15\u7528\u3002 +javac.err.assign.to.final=\u65E0\u6CD5\u4E3A\u6700\u7EC8\u53D8\u91CF\u5206\u914D\u503C: {0} +javac.err.assign.to.blank.final=\u65E0\u6CD5\u4E3A\u7A7A\u6700\u7EC8\u53D8\u91CF\u5206\u914D\u7B2C\u4E8C\u4E2A\u503C: {0} +javac.err.qualified.static.final.assign=\u4E3A\u7A7A\u9759\u6001\u6700\u7EC8\u53D8\u91CF\u5206\u914D\u7684\u53D8\u91CF\u5FC5\u987B\u4E3A\u7B80\u540D (\u540E\u9762\u4E0D\u80FD\u52A0\u70B9 ''.'')\u3002 +javac.err.bad.qualified.final.assign=\u4E3A\u7A7A\u6700\u7EC8\u53D8\u91CF\u5206\u914D\u7684\u53D8\u91CF\u5FC5\u987B\u4E3A\u7B80\u540D\u6216\u7531 ''this'' \u9650\u5B9A\u7684\u7B80\u540D: ''{0}'' \u6216 ''this.{0}''\u3002 +javac.err.assign.to.blank.final.in.loop=\u5C1D\u8BD5\u5728 loop \u4E2D\u5206\u914D\u7A7A\u6700\u7EC8\u53D8\u91CF{0}\u3002\u53EA\u80FD\u8FDB\u884C\u4E00\u6B21\u521D\u59CB\u5316\u3002 +javac.err.assign.to.uplevel=\u5C1D\u8BD5\u4EE5\u5176\u4ED6\u65B9\u6CD5\u5C06\u503C\u5206\u914D\u7ED9\u53D8\u91CF{0}\u3002\u5C01\u95ED\u5757\u4E2D\u53EA\u6709\u6700\u7EC8\u672C\u5730\u53D8\u91CF\u53EF\u7528\u3002 +javac.err.invalid.uplevel=\u5C1D\u8BD5\u4EE5\u5176\u4ED6\u65B9\u6CD5\u4F7F\u7528\u975E\u6700\u7EC8\u53D8\u91CF{0}\u3002\u5C01\u95ED\u5757\u4E2D\u53EA\u6709\u6700\u7EC8\u672C\u5730\u53D8\u91CF\u53EF\u7528\u3002 +javac.err.undef.var=\u672A\u5B9A\u4E49\u7684\u53D8\u91CF: {0} +javac.err.undef.var.super=\u672A\u5B9A\u4E49\u7684\u53D8\u91CF: {0}\u3002 "super" \u5173\u952E\u5B57\u53EA\u80FD\u7528\u4E8E\u6210\u5458\u8BBF\u95EE\u548C\u6784\u9020\u5668\u8C03\u7528\u3002 +javac.err.undef.var.or.package=\u672A\u5B9A\u4E49\u7684\u53D8\u91CF\u6216\u7A0B\u5E8F\u5305\u540D\u79F0: {0} +javac.err.undef.class.or.package=\u672A\u5B9A\u4E49\u7684\u7C7B\u6216\u7A0B\u5E8F\u5305\u540D\u79F0: {0} +javac.err.undef.var.class.or.package=\u672A\u5B9A\u4E49\u7684\u53D8\u91CF, \u7C7B\u6216\u7A0B\u5E8F\u5305\u540D\u79F0: {0} +javac.err.undef.class=\u672A\u5B9A\u4E49\u7684\u7C7B\u540D: {0} +javac.err.undef.var.or.class=\u672A\u5B9A\u4E49\u7684\u53D8\u91CF\u6216\u7C7B\u540D: {0} +javac.err.var.not.initialized=\u53EF\u80FD\u5C1A\u672A\u521D\u59CB\u5316\u53D8\u91CF{0}\u3002 +javac.err.final.var.not.initialized=\u53EF\u80FD\u5C1A\u672A\u521D\u59CB\u5316\u7A7A\u6700\u7EC8\u53D8\u91CF ''{0}''\u3002\u5FC5\u987B\u5728\u521D\u59CB\u5316\u7A0B\u5E8F\u6216\u5728\u6BCF\u4E2A\u6784\u9020\u5668\u4E2D\u5206\u914D\u503C\u3002 +javac.err.access.inst.before.super=\u65E0\u6CD5\u5728\u8C03\u7528\u8D85\u7C7B\u6784\u9020\u5668\u4E4B\u524D\u5F15\u7528{0}\u3002 +javac.err.ambig.class=\u4E0D\u660E\u786E\u7684\u7C7B: {0}\u548C{1} +javac.err.invalid.arg={0}\u7684\u53C2\u6570\u65E0\u6548\u3002 +javac.err.invalid.arg.type={1}\u7684\u53C2\u6570\u7C7B\u578B{0}\u65E0\u6548\u3002 +javac.err.invalid.length=''length'' \u5E94\u7528\u5230\u4E0D\u662F\u6570\u7EC4\u7684{0}\u3002 +javac.err.invalid.constr.invoke=\u53EA\u6709\u6784\u9020\u5668\u624D\u80FD\u8C03\u7528\u6784\u9020\u5668\u3002 +javac.err.constr.invoke.not.first=\u5728\u65B9\u6CD5\u4E2D\u5FC5\u987B\u9996\u5148\u8C03\u7528\u6784\u9020\u5668\u3002 +javac.err.invalid.method.invoke=\u65E0\u6CD5\u5728{0}\u4E0A\u8C03\u7528\u65B9\u6CD5\u3002 +javac.err.undef.meth=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u65B9\u6CD5{0}\u3002 +javac.err.no.meth.access=\u65E0\u6CD5\u4ECE{2}\u8BBF\u95EE{1}\u4E2D\u7684\u65B9\u6CD5{0}\u3002 #warning: -javac.err.no.override.access=\ - \u6ce8\u610f\uff1a{1} \u4e2d\u7684\u65b9\u6cd5 {0} \u4e0d\u4f1a\u8986\u76d6 {2} \u4e2d\u76f8\u5bf9\u5e94\u7684\u65b9\u6cd5\u3002\u5982\u679c\u6b63\u5c1d\u8bd5\u8986\u76d6\u6b64\u65b9\u6cd5\uff0c\u5219\u65e0\u6cd5\u8fbe\u5230\u76ee\u7684\uff0c\u56e0\u4e3a\u8be5\u65b9\u6cd5\u662f\u5176\u4ed6\u8f6f\u4ef6\u5305\u7684\u4e13\u7528\u65b9\u6cd5\u3002 -javac.err.no.static.meth.access=\ - \u65e0\u6cd5\u9759\u6001\u5f15\u7528 {1} \u4e2d\u7684\u65b9\u6cd5 {0}\u3002 -javac.err.invalid.protected.method.use=\ - \u65e0\u6cd5\u8bbf\u95ee {1} \u4e2d\u7684\u53d7\u4fdd\u62a4\u65b9\u6cd5 {0}\u3002{2} \u4e0d\u662f\u5f53\u524d\u7c7b\u7684\u5b50\u7c7b\u3002 -javac.err.invalid.protected.field.use=\ - \u65e0\u6cd5\u8bbf\u95ee {1} \u4e2d\u7684\u53d7\u4fdd\u62a4\u5b57\u6bb5 {0}\u3002{2} \u4e0d\u662f\u5f53\u524d\u7c7b\u7684\u5b50\u7c7b\u3002 -javac.err.invalid.protected.type.use=\ - \u65e0\u6cd5\u8bbf\u95ee {1} \u4e2d\u7684\u53d7\u4fdd\u62a4\u5185\u90e8\u7c7b\u578b {0}\u3002{2} \u4e0d\u662f\u5f53\u524d\u7c7b\u7684\u5b50\u7c7b\u3002 -javac.err.invalid.protected.constructor.use=\ - \u65e0\u6cd5\u8bbf\u95ee {0} \u7684\u53d7\u4fdd\u62a4\u6784\u9020\u51fd\u6570\u3002\u53ea\u5141\u8bb8\u5728\u5b9a\u4e49\u4e86\u6784\u9020\u51fd\u6570\u7684\u8f6f\u4ef6\u5305\u5185\u521b\u5efa\u5b9e\u4f8b\u3002 -javac.err.invalid.method=\ - \u5728 {1} \u4e2d\u5c06\u53d8\u91cf {0} \u4f5c\u4e3a\u4e00\u4e2a\u65b9\u6cd5\u8fdb\u884c\u5f15\u7528\u3002 -javac.err.invalid.var=\ - \u5728 {1} \u4e2d\u5c06\u65b9\u6cd5 {0} \u4f5c\u4e3a\u4e00\u4e2a\u53d8\u91cf\u8fdb\u884c\u5f15\u7528\u3002 -javac.err.synchronized.null=\ - \u7a7a\u5b57\u9762\u503c\u4e0d\u662f\u540c\u6b65\u8bed\u53e5\u7684\u5408\u6cd5\u53c2\u6570\u3002 +javac.err.no.override.access=\u6CE8: {1}\u4E2D\u7684\u65B9\u6CD5{0}\u4E0D\u4F1A\u8986\u76D6{2}\u4E2D\u76F8\u5BF9\u5E94\u7684\u65B9\u6CD5\u3002\u5982\u679C\u6B63\u5C1D\u8BD5\u8986\u76D6\u6B64\u65B9\u6CD5, \u5219\u65E0\u6CD5\u8FBE\u5230\u76EE\u7684, \u56E0\u4E3A\u8BE5\u65B9\u6CD5\u662F\u5176\u4ED6\u7A0B\u5E8F\u5305\u7684\u4E13\u7528\u65B9\u6CD5\u3002 +javac.err.no.static.meth.access=\u65E0\u6CD5\u9759\u6001\u5F15\u7528{1}\u4E2D\u7684\u65B9\u6CD5{0}\u3002 +javac.err.invalid.protected.method.use=\u65E0\u6CD5\u8BBF\u95EE{1}\u4E2D\u7684\u53D7\u4FDD\u62A4\u65B9\u6CD5{0}\u3002{2}\u4E0D\u662F\u5F53\u524D\u7C7B\u7684\u5B50\u7C7B\u3002 +javac.err.invalid.protected.field.use=\u65E0\u6CD5\u8BBF\u95EE{1}\u4E2D\u7684\u53D7\u4FDD\u62A4\u5B57\u6BB5{0}\u3002{2}\u4E0D\u662F\u5F53\u524D\u7C7B\u7684\u5B50\u7C7B\u3002 +javac.err.invalid.protected.type.use=\u65E0\u6CD5\u8BBF\u95EE{1}\u4E2D\u7684\u53D7\u4FDD\u62A4\u5185\u90E8\u7C7B\u578B {0}\u3002{2}\u4E0D\u662F\u5F53\u524D\u7C7B\u7684\u5B50\u7C7B\u3002 +javac.err.invalid.protected.constructor.use=\u65E0\u6CD5\u8BBF\u95EE{0}\u7684\u53D7\u4FDD\u62A4\u6784\u9020\u5668\u3002\u53EA\u5141\u8BB8\u5728\u5B9A\u4E49\u4E86\u6784\u9020\u5668\u7684\u7A0B\u5E8F\u5305\u5185\u521B\u5EFA\u5B9E\u4F8B\u3002 +javac.err.invalid.method=\u5728{1}\u4E2D\u5C06\u53D8\u91CF{0}\u4F5C\u4E3A\u4E00\u4E2A\u65B9\u6CD5\u8FDB\u884C\u5F15\u7528\u3002 +javac.err.invalid.var=\u5728{1}\u4E2D\u5C06\u65B9\u6CD5{0}\u4F5C\u4E3A\u4E00\u4E2A\u53D8\u91CF\u8FDB\u884C\u5F15\u7528\u3002 +javac.err.synchronized.null=\u7A7A\u503C\u6587\u5B57\u4E0D\u662F\u540C\u6B65\u8BED\u53E5\u7684\u5408\u6CD5\u53C2\u6570\u3002 #all messages related to deprecation are warnings: -javac.err.class.is.deprecated=\ - \u6ce8\u610f\uff1a{0} \u5df2\u8fc7\u65f6\u3002 -javac.err.meth.is.deprecated=\ - \u6ce8\u610f\uff1a{1} \u4e2d\u7684\u65b9\u6cd5 {0} \u5df2\u8fc7\u65f6\u3002 -javac.err.constr.is.deprecated=\ - \u6ce8\u610f\uff1a\u6784\u9020\u51fd\u6570 {0} \u5df2\u8fc7\u65f6\u3002 -javac.err.field.is.deprecated=\ - \u6ce8\u610f\uff1a{1} \u4e2d\u7684\u53d8\u91cf {0} \u5df2\u8fc7\u65f6\u3002 -javac.err.note.deprecations=\ - \u6ce8\u610f\uff1a{0} \u6587\u4ef6\u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002\u8bf7\u53c2\u9605\u6587\u6863\u4ee5\u83b7\u5f97\u9488\u5bf9\u6bcf\u79cd\u60c5\u51b5\u7684\u66f4\u597d\u7684\u66ff\u4ee3\u65b9\u6cd5\u3002 -javac.err.note.1deprecation=\ - \u6ce8\u610f\uff1a{0} \u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002\u8bf7\u53c2\u9605\u6587\u6863\u4ee5\u83b7\u5f97\u66f4\u597d\u7684\u66ff\u4ee3\u65b9\u6cd5\u3002 -javac.err.note.deprecations.silent=\ - \u6ce8\u610f\uff1a{0} \u6587\u4ef6\u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 "-deprecation" \u91cd\u65b0\u7f16\u8bd1\u3002 -javac.err.note.1deprecation.silent=\ - \u6ce8\u610f\uff1a{0} \u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 "-deprecation" \u91cd\u65b0\u7f16\u8bd1\u3002 -javac.err.invalid.array.dim=\ - \u6570\u7ec4\u7ef4\u6570\u65e0\u6548\u3002 -javac.err.ambig.constr=\ - \u6784\u9020\u51fd\u6570\u4e0d\u660e\u786e\uff1a{0}, {1} -javac.err.explicit.cast.needed=\ - {0} \u7684\u4e0d\u517c\u5bb9\u7c7b\u578b\u3002\u9700\u8981\u4f7f\u7528\u663e\u5f0f\u8f6c\u6362\u5c06 {1} \u8f6c\u6362\u4e3a {2}\u3002 -javac.err.incompatible.type=\ - {0} \u7684\u4e0d\u517c\u5bb9\u7c7b\u578b\u3002\u65e0\u6cd5\u5c06 {1} \u8f6c\u6362\u4e3a {2}\u3002 -javac.err.invalid.term=\ - \u6761\u4ef6\u65e0\u6548\u3002 -javac.err.abstract.class=\ - \u5fc5\u987b\u5c06 {0} \u58f0\u660e\u4e3a\u62bd\u8c61\u3002{0} \u672a\u4ece {2} \u4e2d\u5b9a\u4e49 {1}\u3002 -javac.err.abstract.class.cannot.override=\ - \u5fc5\u987b\u5c06 {0} \u58f0\u660e\u4e3a\u62bd\u8c61\u3002\u65e0\u6cd5\u8bbf\u95ee\u4e14\u65e0\u6cd5\u8986\u76d6\u7236\u7c7b {2} \u4e2d\u7684\u8f6f\u4ef6\u5305\u4e13\u7528\u62bd\u8c61\u65b9\u6cd5 {1}\u3002 -javac.err.new.intf=\ - {0} \u662f\u63a5\u53e3\u3002\u65e0\u6cd5\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316\u3002 -javac.err.invoke.abstract=\ - \u65e0\u6cd5\u5728 {1} \u4e2d\u76f4\u63a5\u8c03\u7528\u62bd\u8c61\u65b9\u6cd5 {0}\u3002 -javac.err.unmatched.meth=\ - \u5728 {1} \u4e2d\u672a\u627e\u5230\u4e0e {0} \u5339\u914d\u7684\u65b9\u6cd5\u3002 -javac.err.unmatched.constr=\ - \u5728 {1} \u4e2d\u672a\u627e\u5230\u4e0e {0} \u5339\u914d\u7684\u6784\u9020\u51fd\u6570\u3002 -javac.err.wrong.number.args=\ - {0} \u4e2d\u7684\u53c2\u6570\u6570\u76ee\u9519\u8bef\u3002 -javac.err.forward.ref=\ - \u65e0\u6cd5\u5411\u524d\u5f15\u7528 {1} \u4e2d\u7684 {0}\u3002 -javac.err.array.dim.missing=\ - \u7f3a\u5c11\u6570\u7ec4\u7ef4\u6570\u3002 -javac.err.new.abstract=\ - {0} \u662f\u62bd\u8c61\u7c7b\u3002\u65e0\u6cd5\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316\u3002 -javac.err.label.not.found=\ - \u672a\u627e\u5230 {0} \u7684\u6807\u7b7e\u5b9a\u4e49\u3002 -javac.err.invalid.break=\ - loop \u6216 switch \u4e2d\u5fc5\u987b\u6709 "break"\u3002 -javac.err.invalid.continue=\ - loop \u4e2d\u5fc5\u987b\u6709 "continue"\u3002 -javac.err.branch.to.uplevel=\ - "break" \u6216 "continue" \u5fc5\u987b\u5728\u540c\u4e00\u65b9\u6cd5\u5185\u8f6c\u79fb\u63a7\u5236\u3002 -javac.err.invalid.decl=\ - \u58f0\u660e\u65e0\u6548\u3002 -javac.err.return.with.value=\ - \u5bf9\u4e8e {0} \u4f7f\u7528 "return" \u8fd4\u56de\u503c\u3002 -javac.err.return.without.value=\ - \u5bf9\u4e8e {0} \u4f7f\u7528 "return" \u672a\u8fd4\u56de\u503c\u3002 -javac.err.return.inside.static.initializer=\ - \u9759\u6001\u521d\u59cb\u5316\u7a0b\u5e8f\u5185\u7684 "return"\u3002 -javac.err.invalid.label=\ - \u6807\u7b7e\u65e0\u6548\u3002 -javac.err.return.required.at.end=\ - \u5728 {0} \u7684\u7ed3\u5c3e\u5904\u8fd4\u56de\u6240\u9700\u5185\u5bb9\u3002 -javac.err.duplicate.label=\ - case \u6807\u7b7e\u91cd\u590d\uff1a{0} -javac.err.switch.overflow=\ - \u5728 {1} \u4e0a\u7528\u4e8e "switch" \u7684 case \u6807\u7b7e {0} \u8fc7\u5927 -javac.err.nested.duplicate.label=\ - \u8bed\u53e5\u4e0d\u80fd\u4e0e\u5176\u5c01\u95ed\u8bed\u53e5\u4e4b\u4e00\u4f7f\u7528\u540c\u4e00\u6807\u8bc6\u7b26\u6807\u8bb0\uff1a{0} -javac.err.declaration.with.label=\ - \u65e0\u6cd5\u6807\u8bb0\u58f0\u660e\uff1a{0} -javac.err.const.expr.required=\ - \u9700\u8981\u5e38\u91cf\u8868\u8fbe\u5f0f\u3002 -javac.err.duplicate.default=\ - "default" \u6807\u7b7e\u91cd\u590d\u3002 -javac.err.not.supported=\ - \u4e0d\u652f\u6301 "{0}"\u3002 -javac.err.return.with.value.constr=\ - \u5bf9\u4e8e\u6784\u9020\u51fd\u6570\u4f7f\u7528 "return" \u8fd4\u56de\u503c\uff1a{0} -javac.err.package.repeated=\ - \u4ec5\u5141\u8bb8\u4e00\u4e2a\u8f6f\u4ef6\u5305\u58f0\u660e\u3002 -javac.err.class.multidef=\ - \u5df2\u5728 {1} \u4e2d\u5b9a\u4e49\u7c7b {0}\u3002 -javac.err.class.multidef.import=\ - \u7c7b\u540d {0} \u4e0e\u5bfc\u5165\u7c7b {1} \u51b2\u7a81\u3002 -javac.err.intf.constructor=\ - \u63a5\u53e3\u4e0d\u80fd\u6709\u6784\u9020\u51fd\u6570\u3002 -javac.err.constr.modifier=\ - \u6784\u9020\u51fd\u6570\u7684\u7c7b\u578b\u4e0d\u80fd\u4e3a\u672c\u673a\u3001\u62bd\u8c61\u3001\u9759\u6001\u3001\u540c\u6b65\u6216\u6700\u7ec8\uff1a{0} -javac.err.intf.initializer=\ - \u63a5\u53e3\u4e0d\u80fd\u6709\u9759\u6001\u521d\u59cb\u5316\u7a0b\u5e8f\u3002 -javac.err.intf.modifier.method=\ - \u63a5\u53e3\u65b9\u6cd5\u7c7b\u578b\u4e0d\u80fd\u4e3a\u672c\u673a\u3001\u9759\u6001\u3001\u540c\u6b65\u3001\u6700\u7ec8\u3001\u4e13\u7528\u6216\u53d7\u4fdd\u62a4\uff1a{0} -javac.err.intf.modifier.field=\ - \u63a5\u53e3\u5b57\u6bb5\u7c7b\u578b\u4e0d\u80fd\u4e3a\u4e13\u7528\u6216\u53d7\u4fdd\u62a4\uff1a{0} -javac.err.transient.meth=\ - \u65b9\u6cd5 {0} \u4e0d\u80fd\u4e3a\u77ac\u6001\u65b9\u6cd5\u3002\u53ea\u6709\u53d8\u91cf\u624d\u80fd\u662f\u77ac\u6001\u7684\u3002 -javac.err.volatile.meth=\ - \u65b9\u6cd5 {0} \u4e0d\u80fd\u4e3a\u6613\u5931\u65b9\u6cd5\u3002\u53ea\u6709\u53d8\u91cf\u624d\u80fd\u662f\u6613\u5931\u7684\u3002 -javac.err.abstract.private.modifier=\ - \u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u4e3a\u4e13\u7528\u65b9\u6cd5\uff1a{0} -javac.err.abstract.static.modifier=\ - \u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u4e3a\u9759\u6001\u65b9\u6cd5\uff1a{0} -javac.err.abstract.final.modifier=\ - \u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u4e3a\u6700\u7ec8\u65b9\u6cd5\uff1a{0} -javac.err.abstract.native.modifier=\ - \u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u4e3a\u672c\u673a\u65b9\u6cd5\uff1a{0} -javac.err.abstract.synchronized.modifier=\ - \u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u4e3a\u540c\u6b65\u65b9\u6cd5\uff1a{0} -javac.err.invalid.meth.body=\ - \u62bd\u8c61\u65b9\u6cd5\u548c\u672c\u673a\u65b9\u6cd5\u4e0d\u80fd\u5e26\u6709\u4e3b\u4f53\uff1a{0} -javac.err.var.modifier=\ - \u53d8\u91cf\u7c7b\u578b\u4e0d\u80fd\u4e3a\u540c\u6b65\u3001\u62bd\u8c61\u6216\u672c\u673a\uff1a{0} -javac.err.var.floatmodifier=\ - \u4e0d\u80fd\u4e25\u683c\u58f0\u660e\u53d8\u91cf\uff1a{0} -javac.err.inner.modifier=\ - \u5185\u90e8\u7c7b\u7c7b\u578b\u4e0d\u80fd\u4e3a\u6613\u5931\u3001\u77ac\u6001\u3001\u672c\u673a\u6216\u540c\u6b65\uff1a{0} -javac.err.transient.modifier=\ - \u77ac\u6001\u53d8\u91cf\u4e0d\u80fd\u4e3a\u63a5\u53e3\u7684\u6210\u5458\uff1a{0} -javac.err.volatile.modifier=\ - \u6613\u5931\u53d8\u91cf\u4e0d\u80fd\u4e3a\u6700\u7ec8\u53d8\u91cf\u6216\u63a5\u53e3\u7684\u6210\u5458\uff1a{0} -javac.err.initializer.needed=\ - \u5fc5\u987b\u521d\u59cb\u5316\u6b64\u6700\u7ec8\u53d8\u91cf\uff1a{0} -javac.err.meth.multidef=\ - \u65b9\u6cd5\u58f0\u660e\u91cd\u590d\uff1a{0} -javac.err.meth.redef.rettype=\ - \u4e0d\u80fd\u4f7f\u7528\u5176\u4ed6\u8fd4\u56de\u7c7b\u578b\u91cd\u65b0\u5b9a\u4e49\u65b9\u6cd5\uff1a{0} \u662f {1} -javac.err.var.multidef=\ - \u53d8\u91cf\u58f0\u660e\u91cd\u590d\uff1a{0} \u662f {1} -javac.err.inner.class.multidef=\ - \u5185\u90e8\u7c7b\u58f0\u660e\u91cd\u590d\uff1a\u5df2\u5728\u6b64\u8303\u56f4\u5185\u5b9a\u4e49\u4e86 {0}\u3002 -javac.err.intf.super.class=\ - {0} \u7684\u7236\u7c7b\u4e0d\u80fd\u662f\u63a5\u53e3\uff1a{1} -javac.err.cant.access.class=\ - \u65e0\u6cd5\u8bbf\u95ee {0}\u3002\u7c7b\u6216\u63a5\u53e3\u5fc5\u987b\u662f\u516c\u5171\u7684\u3001\u5728\u540c\u4e00\u8f6f\u4ef6\u5305\u4e2d\u6216\u4e3a\u53ef\u8bbf\u95ee\u6210\u5458\u7c7b\u3002 -javac.err.unqualified.name.required=\ - \u9650\u5b9a\u7684 "new" \u8868\u8fbe\u5f0f\u4e2d\u7684\u7c7b\u578b\u540d\u79f0\u5fc5\u987b\u4e3a\u975e\u9650\u5b9a\u6807\u8bc6\u7b26\u3002 -javac.err.repeated.modifier=\ - \u4fee\u9970\u7b26\u91cd\u590d\u3002 -javac.err.inconsistent.modifier=\ - \u6210\u5458\u58f0\u660e\u4e0d\u4e00\u81f4\u3002\u6700\u591a\u53ea\u80fd\u6307\u5b9a\u4e00\u4e2a\u516c\u5171\u7684\u3001\u4e13\u7528\u7684\u6216\u53d7\u4fdd\u62a4\u7684\u6210\u5458\u3002 -javac.err.super.is.final=\ - \u4e0d\u80fd\u5c06\u6700\u7ec8\u7c7b\u7528\u4f5c\u5b50\u7c7b\uff1a{0} -javac.err.super.is.intf=\ - \u4e0d\u80fd\u5c06\u63a5\u53e3\u7528\u4f5c\u5b50\u7c7b\uff1a{0} -javac.err.cyclic.super=\ - \u5faa\u73af\u7c7b\u7ee7\u627f\u3002 -javac.err.super.is.inner=\ - \u5faa\u73af\u7c7b\u7ee7\u627f\uff1a\u5b50\u7c7b\u4e0d\u80fd\u5c01\u95ed\u7236\u7c7b\u3002 -javac.err.cyclic.intf=\ - \u5faa\u73af\u63a5\u53e3\u7ee7\u627f\u3002 -javac.err.cyclic.scoping=\ - \u5faa\u73af\u7c7b\u7ee7\u627f\u6216\u786e\u5b9a\u4f5c\u7528\u57df\u3002 -javac.err.not.intf=\ - {0} \u5fc5\u987b\u4e3a\u63a5\u53e3\u3002 -javac.err.final.intf=\ - \u63a5\u53e3\u4e0d\u80fd\u4e3a\u6700\u7ec8\u63a5\u53e3\uff1a{0} -javac.err.intf.impl.intf=\ - \u63a5\u53e3\u4e0d\u80fd\u5b9e\u73b0\u4efb\u4f55\u65b9\u6cd5\uff0c\u5b83\u53ea\u80fd\u6269\u5c55\u5176\u4ed6\u63a5\u53e3\u3002 -javac.err.multiple.inherit=\ - \u4e0d\u652f\u6301\u591a\u91cd\u7ee7\u627f\u3002 -javac.err.intf.repeated=\ - \u63a5\u53e3 {0} \u91cd\u590d\u3002 -javac.err.class.format=\ - {0} \u4e2d\u7684\u7c7b\u6587\u4ef6\u683c\u5f0f\u65e0\u6548\u3002 {1} -javac.err.truncated.class=\ - \u8bfb\u53d6\u7c7b\u6587\u4ef6 {0} \u65f6\u9047\u5230\u610f\u5916\u7684\u6587\u4ef6\u7ed3\u5c3e\u3002 -javac.err.no.meth.body=\ - \u65b9\u6cd5 {0} \u9700\u8981\u65b9\u6cd5\u4e3b\u4f53\u3002\u5426\u5219\u5c06\u5176\u58f0\u660e\u4e3a\u62bd\u8c61\u65b9\u6cd5\u3002 -javac.err.no.constructor.body=\ - \u6784\u9020\u51fd\u6570 {0} \u9700\u8981\u65b9\u6cd5\u4e3b\u4f53\u3002 -javac.err.bad.constructor.modifier=\ - \u6784\u9020\u51fd\u6570\u4e0d\u80fd\u7531 strictfp \u6765\u4fee\u6539\u3002 -javac.err.void.inst.var=\ - \u5b9e\u4f8b\u53d8\u91cf\u4e0d\u80fd\u4e3a\u7a7a\uff1a{0} -javac.err.invalid.method.decl=\ - \u65b9\u6cd5\u58f0\u660e\u65e0\u6548\uff1b\u9700\u8981\u8fd4\u56de\u7c7b\u578b\u3002 -javac.err.invalid.method.decl.name=\ - \u65b9\u6cd5\u58f0\u660e\u65e0\u6548\uff1b\u9700\u8981\u65b9\u6cd5\u540d\u79f0\u3002 -javac.err.invalid.method.decl.qual=\ - \u5168\u9650\u5b9a\u6784\u9020\u51fd\u6570\u540d\u79f0\u65e0\u6548\u3002 -javac.err.super.not.found=\ - \u672a\u627e\u5230 {1} \u7684\u7236\u7c7b {0}\u3002 -javac.err.intf.not.found=\ - \u672a\u627e\u5230 {1} \u7684\u63a5\u53e3 {0}\u3002 -javac.err.final.abstract=\ - \u4e0d\u80fd\u5c06\u7c7b {0} \u540c\u65f6\u58f0\u660e\u4e3a\u62bd\u8c61\u7c7b\u548c\u6700\u7ec8\u7c7b\u3002 -javac.err.void.array=\ - \u7a7a\u6570\u7ec4\u4e3a\u65e0\u6548\u7c7b\u578b\u3002 -javac.err.void.argument=\ - \u53c2\u6570\u7684\u7c7b\u578b\u4e0d\u80fd\u4e3a\u7a7a\uff1a{0} -javac.err.invalid.expr=\ - \u8868\u8fbe\u5f0f\u8bed\u53e5\u65e0\u6548\u3002 -javac.err.catch.not.reached=\ - \u65e0\u6cd5\u8bbf\u95ee catch\u3002 -javac.err.stat.not.reached=\ - \u65e0\u6cd5\u8bbf\u95ee\u8bed\u53e5\u3002 -javac.err.init.no.normal.completion=\ - \u521d\u59cb\u5316\u7a0b\u5e8f\u5fc5\u987b\u6b63\u5e38\u5b8c\u6210\u3002 -javac.err.arithmetic.exception=\ - \u7b97\u6cd5\u5f02\u5e38\u3002 -javac.err.generic=\ - {0} -javac.err.public.class.file=\ - \u5fc5\u987b\u5728\u540d\u4e3a "{1}" \u7684\u6587\u4ef6\u4e2d\u5b9a\u4e49\u516c\u5171 {0}\u3002 -javac.err.package.class.file=\ - {0} \u5728 {1} \u4e2d\u5b9a\u4e49\u3002\u7531\u4e8e\u5b83\u662f\u5728\u5176\u6e90\u6587\u4ef6\u4e4b\u5916\u4f7f\u7528\u7684\uff0c\u56e0\u6b64\u5e94\u5728\u540d\u4e3a "{2}" \u7684\u6587\u4ef6\u4e2d\u5bf9\u5176\u8fdb\u884c\u5b9a\u4e49\u3002 -javac.err.lose.precision=\ - \u53ef\u80fd\u635f\u5931\u7cbe\u5ea6\u3002\u4f7f\u7528\u663e\u5f0f\u8f6c\u6362\u5c06 {0} \u8f6c\u6362\u4e3a {1}\u3002 -javac.err.duplicate.argument=\ - \u5728\u6b64\u65b9\u6cd5\u7684\u53c2\u6570\u5217\u8868\u4e2d\u4e24\u6b21\u4f7f\u7528\u53d8\u91cf "{0}"\u3002 -javac.err.local.redefined=\ - \u5df2\u5728\u6b64\u65b9\u6cd5\u4e2d\u5b9a\u4e49\u4e86\u53d8\u91cf "{0}"\u3002 -javac.err.local.class.redefined=\ - \u5df2\u5728\u6b64\u65b9\u6cd5\u4e2d\u5b9a\u4e49\u4e86\u5c40\u90e8\u7c7b "{0}"\u3002 -javac.err.inner.redefined=\ - \u5df2\u5728\u6b64\u8303\u56f4\u5185\u5b9a\u4e49\u4e86\u7c7b\u540d "{0}"\u3002\u5185\u90e8\u7c7b\u4e0d\u80fd\u4e0e\u5176\u4efb\u4e00\u5c01\u95ed\u7c7b\u5177\u6709\u76f8\u540c\u7684\u7b80\u540d\u3002 -javac.err.inherited.hides.field=\ - \u53d8\u91cf "{0}" \u662f\u5728 {1} \u4e2d\u7ee7\u627f\u7684\uff0c\u5e76\u5728 {2} \u4e2d\u9690\u85cf\u4e86\u4e00\u4e2a\u540c\u540d\u53d8\u91cf\u3002\u5fc5\u987b\u4f7f\u7528\u663e\u5f0f "this" \u9650\u5b9a\u7b26\u9009\u62e9\u6240\u9700\u5b9e\u4f8b\u3002 -javac.err.inherited.hides.local=\ - \u53d8\u91cf "{0}" \u662f\u5728 {1} \u4e2d\u7ee7\u627f\u7684\uff0c\u5e76\u4e14\u9690\u85cf\u4e86\u4e00\u4e2a\u540c\u540d\u5c40\u90e8\u53d8\u91cf\u3002\u5fc5\u987b\u4f7f\u7528\u663e\u5f0f "this" \u9650\u5b9a\u7b26\u9009\u62e9\u53d8\u91cf\uff0c\u5426\u5219\u5fc5\u987b\u91cd\u547d\u540d\u5c40\u90e8\u53d8\u91cf\u3002 -javac.err.inherited.hides.method=\ - \u65b9\u6cd5 "{0}" \u662f\u5728 {1} \u4e2d\u7ee7\u627f\u7684\uff0c\u5e76\u5728 {2} \u4e2d\u9690\u85cf\u4e86\u4e00\u4e2a\u540c\u540d\u65b9\u6cd5\u3002\u5fc5\u987b\u4f7f\u7528\u663e\u5f0f "this" \u9650\u5b9a\u7b26\u9009\u62e9\u6240\u9700\u5b9e\u4f8b\u3002 -javac.err.inherited.hides.type=\ - \u7c7b\u578b "{0}" \u662f\u5728 {1} \u4e2d\u7ee7\u627f\u7684\uff0c\u5e76\u5728\u5c01\u95ed\u8303\u56f4\u5185\u9690\u85cf\u4e86\u4e00\u4e2a\u540c\u540d\u7c7b\u578b\u3002\u5fc5\u987b\u4f7f\u7528\u663e\u5f0f\u9650\u5b9a\u7b26\u524d\u7f00\u547d\u540d\u6b64\u7c7b\u578b\u3002 -javac.err.private.class=\ - \u7c7b\u578b {0} \u4e0d\u80fd\u4e3a\u4e13\u7528\u7c7b\u578b\u3002\u5728\u5f53\u524d\u8f6f\u4ef6\u5305\u4e2d\u59cb\u7ec8\u53ef\u4ee5\u8bbf\u95ee\u8f6f\u4ef6\u5305\u6210\u5458\u3002 -javac.err.static.class=\ - \u7c7b\u578b {0} \u4e0d\u80fd\u58f0\u660e\u4e3a\u9759\u6001\u7c7b\u578b\u3002\u7531\u4e8e\u5b83\u662f\u8f6f\u4ef6\u5305\u6210\u5458\uff0c\u56e0\u6b64\u5b83\u5df2\u81f3\u9876\u5c42\u3002 -javac.err.protected.class=\ - \u7c7b\u578b {0} \u4e0d\u80fd\u4e3a\u53d7\u4fdd\u62a4\u7c7b\u578b\u3002\u8f6f\u4ef6\u5305\u6210\u5458\u53ef\u4ee5\u662f\u5f53\u524d\u8f6f\u4ef6\u5305\u7684\u516c\u5171\u8f6f\u4ef6\u5305\u6210\u5458\u6216\u5c40\u90e8\u8f6f\u4ef6\u5305\u6210\u5458\u3002 -javac.err.recursive.constr=\ - \u9012\u5f52\u6784\u9020\u51fd\u6570\u8c03\u7528\uff1a{0}\u3002 -javac.err.wrong.class=\ - \u6587\u4ef6 {0} \u672a\u6309\u9884\u671f\u5305\u542b {1} \u800c\u662f\u5305\u542b\u4e86 {2}\u3002\u8bf7\u5220\u9664\u8be5\u6587\u4ef6\u6216\u786e\u4fdd\u8be5\u6587\u4ef6\u4f4d\u4e8e\u6b63\u786e\u7684\u7c7b\u8def\u5f84\u5b50\u76ee\u5f55\u4e2d\u3002 -javac.err.wrong.source=\ - \u6587\u4ef6 {0} \u672a\u6309\u9884\u671f\u5305\u542b {1}\u3002\u8bf7\u8c03\u6574\u7c7b\u8def\u5f84\uff0c\u4ee5\u4f7f\u8be5\u6587\u4ef6\u4e0d\u51fa\u73b0\u5728 {2} \u4e2d\u3002 -javac.err.class.not.found=\ - \u5728 {1} \u4e2d\u672a\u627e\u5230\u7c7b {0}\u3002 -javac.err.class.not.found.no.context=\ - \u672a\u627e\u5230\u7c7b {0}\u3002 -javac.err.package.not.found=\ - \u5728 {1} \u4e2d\u672a\u627e\u5230\u8f6f\u4ef6\u5305 {0}\u3002 -javac.err.package.not.found.strong=\ - \u672a\u627e\u5230\u8f6f\u4ef6\u5305 {0}\u3002\u8bf7\u8c03\u6574\u7c7b\u8def\u5f84\uff0c\u4ee5\u4fbf\u53ef\u4ee5\u8bbf\u95ee\u8f6f\u4ef6\u5305 {0}\u3002 -javac.err.class.package.conflict=\ - \u7c7b\u578b\u548c\u8f6f\u4ef6\u5305\u4e0d\u80fd\u540c\u540d\u3002\u53ef\u4ee5\u8bbf\u95ee\u8f6f\u4ef6\u5305 {0} \u65f6\uff0c\u4e0d\u80fd\u4f7f\u7528\u540d\u79f0 {0} \u6765\u547d\u540d\u7c7b\u3002 -javac.err.package.class.conflict=\ - \u7c7b\u578b\u548c\u8f6f\u4ef6\u5305\u4e0d\u80fd\u540c\u540d\u3002\u53ef\u4ee5\u8bbf\u95ee\u7c7b {1} \u65f6\uff0c\u4e0d\u80fd\u4f7f\u7528\u540d\u79f0 {0} \u6765\u547d\u540d\u8f6f\u4ef6\u5305\u3002 -javac.err.package.class.conflict.strong=\ - \u540d\u79f0 {0} \u5fc5\u987b\u53c2\u8003\u8f6f\u4ef6\u5305\u3002\u7531\u4e8e\u7c7b\u578b\u548c\u8f6f\u4ef6\u5305\u4e0d\u80fd\u540c\u540d\uff0c\u5982\u679c\u53ef\u8bbf\u95ee\u7c7b\u540d\u4e3a {1} \u5219\u4e3a\u975e\u6cd5\u3002\u5e94\u91cd\u547d\u540d\u7c7b {1} \u6216\u5c06\u5176\u4ece\u7c7b\u8def\u5f84\u4e2d\u5220\u9664\u3002 -javac.err.illegal.mangled.name=\ - {1} \u7684\u540d\u79f0 {0} \u65e0\u6548\u3002 -javac.err.class.and.package=\ - \u4e0d\u660e\u786e\u7684\u540d\u79f0\uff1a{0} \u65e2\u662f\u7c7b\u53c8\u662f\u8f6f\u4ef6\u5305\u3002 -javac.err.throws.not.throwable=\ - throws \u5b50\u53e5\u4e2d\u7684 {0} \u5fc5\u987b\u662f\u7c7b java.lang.Throwable \u7684\u5b50\u7c7b\u3002 -javac.err.throw.not.throwable=\ - \u65e0\u6cd5\u629b\u51fa {0}\uff1b\u5b83\u5fc5\u987b\u4e3a\u7c7b java.lang.Throwable \u7684\u5b50\u7c7b\u3002 -javac.err.catch.not.throwable=\ - \u65e0\u6cd5\u6355\u6349 {0}\uff1b\u5b83\u5fc5\u987b\u4e3a\u7c7b java.lang.Throwable \u7684\u5b50\u7c7b\u3002 -javac.err.initializer.exception=\ - \u4e0d\u80fd\u5728\u521d\u59cb\u5316\u7a0b\u5e8f\u4e2d\u629b\u51fa\u5f02\u5e38 {0}\u3002 -javac.err.cant.read=\ - \u65e0\u6cd5\u8bfb\u53d6\uff1a{0} -javac.err.cant.write=\ - \u65e0\u6cd5\u5199\u5165\uff1a{0} -javac.err.fatal.error=\ - \u7f16\u8bd1\u5668\u51fa\u9519\uff1b\u8bf7\u5f52\u6863\u9519\u8bef\u62a5\u544a (http://java.sun.com/cgi-bin/bugreport.cgi)\u3002 -javac.err.fatal.exception=\ - \u7f16\u8bd1\u5668\u4e2d\u51fa\u73b0\u5f02\u5e38\uff1b\u8bf7\u5f52\u6863\u9519\u8bef\u62a5\u544a (http://java.sun.com/cgi-bin/bugreport.cgi)\u3002 -javac.err.no.inner.classes=\ - \u5df2\u7981\u7528\u5bf9\u5185\u90e8\u7c7b\u7684\u652f\u6301\u3002 -javac.err.uncaught.exception=\ - \u5fc5\u987b\u6355\u6349\u5f02\u5e38 {0}\uff0c\u5426\u5219\u5fc5\u987b\u5728\u6b64\u65b9\u6cd5\u7684 throws \u5b50\u53e5\u4e2d\u5bf9\u5176\u8fdb\u884c\u58f0\u660e\u3002 -javac.err.constructor.exception=\ - \u5fc5\u987b\u6355\u6349\u5f02\u5e38 {0}\uff0c\u5426\u5219\u5fc5\u987b\u5728\u6b64\u6784\u9020\u51fd\u6570\u7684 throws \u5b50\u53e5\u4e2d\u5bf9\u5176\u8fdb\u884c\u58f0\u660e\u3002 -javac.err.def.constructor.exception=\ - \u7531\u4e8e\u7c7b\u7684\u7236\u7c7b\u7684\u6784\u9020\u51fd\u6570\u629b\u51fa\u5f02\u5e38 {0}\uff0c\u56e0\u6b64\u65e0\u6cd5\u4e3a\u6b64\u7c7b\u521b\u5efa\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\u3002\u4e3a\u6b64\u7c7b\u663e\u5f0f\u5b9a\u4e49\u6784\u9020\u51fd\u6570\u3002 -javac.err.catch.not.thrown=\ - \u4ece\u672a\u5728\u76f8\u5e94\u7684 try \u8bed\u53e5\u4e3b\u4f53\u4e2d\u629b\u51fa\u5f02\u5e38 {0}\u3002 +javac.err.class.is.deprecated=\u6CE8: {0}\u5DF2\u8FC7\u65F6\u3002 +javac.err.meth.is.deprecated=\u6CE8: {1}\u4E2D\u7684\u65B9\u6CD5{0}\u5DF2\u8FC7\u65F6\u3002 +javac.err.constr.is.deprecated=\u6CE8: \u6784\u9020\u5668{0}\u5DF2\u8FC7\u65F6\u3002 +javac.err.field.is.deprecated=\u6CE8: {1}\u4E2D\u7684\u53D8\u91CF{0}\u5DF2\u8FC7\u65F6\u3002 +javac.err.note.deprecations=\u6CE8: {0}\u6587\u4EF6\u4F7F\u7528\u6216\u8986\u76D6\u4E86\u5DF2\u8FC7\u65F6\u7684 API\u3002\u8BF7\u53C2\u9605\u6587\u6863\u4EE5\u83B7\u5F97\u9488\u5BF9\u6BCF\u79CD\u60C5\u51B5\u7684\u66F4\u597D\u7684\u66FF\u4EE3\u65B9\u6CD5\u3002 +javac.err.note.1deprecation=\u6CE8: {0}\u4F7F\u7528\u6216\u8986\u76D6\u4E86\u5DF2\u8FC7\u65F6\u7684 API\u3002\u8BF7\u53C2\u9605\u6587\u6863\u4EE5\u83B7\u5F97\u66F4\u597D\u7684\u66FF\u4EE3\u65B9\u6CD5\u3002 +javac.err.note.deprecations.silent=\u6CE8: {0}\u6587\u4EF6\u4F7F\u7528\u6216\u8986\u76D6\u4E86\u5DF2\u8FC7\u65F6\u7684 API\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 "-deprecation" \u91CD\u65B0\u7F16\u8BD1\u3002 +javac.err.note.1deprecation.silent=\u6CE8: {0}\u4F7F\u7528\u6216\u8986\u76D6\u4E86\u5DF2\u8FC7\u65F6\u7684 API\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 "-deprecation" \u91CD\u65B0\u7F16\u8BD1\u3002 +javac.err.invalid.array.dim=\u6570\u7EC4\u7EF4\u65E0\u6548\u3002 +javac.err.ambig.constr=\u6784\u9020\u5668\u4E0D\u660E\u786E: {0}, {1} +javac.err.explicit.cast.needed={0}\u7684\u4E0D\u517C\u5BB9\u7C7B\u578B\u3002\u9700\u8981\u4F7F\u7528\u663E\u5F0F\u8F6C\u6362\u5C06{1}\u8F6C\u6362\u4E3A{2}\u3002 +javac.err.incompatible.type={0}\u7684\u4E0D\u517C\u5BB9\u7C7B\u578B\u3002\u65E0\u6CD5\u5C06{1}\u8F6C\u6362\u4E3A{2}\u3002 +javac.err.invalid.term=\u6761\u4EF6\u65E0\u6548\u3002 +javac.err.abstract.class=\u5FC5\u987B\u5C06{0}\u58F0\u660E\u4E3A\u62BD\u8C61\u3002\u5B83\u672A\u4ECE{2}\u5B9A\u4E49{1}\u3002 +javac.err.abstract.class.cannot.override=\u5FC5\u987B\u5C06{0}\u58F0\u660E\u4E3A\u62BD\u8C61\u3002\u65E0\u6CD5\u8BBF\u95EE\u4E14\u65E0\u6CD5\u8986\u76D6\u8D85\u7C7B{2}\u4E2D\u7684\u7A0B\u5E8F\u5305\u4E13\u7528\u62BD\u8C61\u65B9\u6CD5{1}\u3002 +javac.err.new.intf={0}\u662F\u63A5\u53E3\u3002\u65E0\u6CD5\u5B9E\u4F8B\u5316\u3002 +javac.err.invoke.abstract=\u65E0\u6CD5\u5728{1}\u4E2D\u76F4\u63A5\u8C03\u7528\u62BD\u8C61\u65B9\u6CD5{0}\u3002 +javac.err.unmatched.meth=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u4E0E{0}\u5339\u914D\u7684\u65B9\u6CD5\u3002 +javac.err.unmatched.constr=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u4E0E{0}\u5339\u914D\u7684\u6784\u9020\u5668\u3002 +javac.err.wrong.number.args={0}\u4E2D\u7684\u53C2\u6570\u6570\u76EE\u9519\u8BEF\u3002 +javac.err.forward.ref=\u65E0\u6CD5\u524D\u5411\u5F15\u7528{1}\u4E2D\u7684{0}\u3002 +javac.err.array.dim.missing=\u7F3A\u5C11\u6570\u7EC4\u7EF4\u3002 +javac.err.new.abstract={0}\u662F\u62BD\u8C61\u7C7B\u3002\u65E0\u6CD5\u5B9E\u4F8B\u5316\u3002 +javac.err.label.not.found=\u627E\u4E0D\u5230{0}\u7684\u6807\u7B7E\u5B9A\u4E49\u3002 +javac.err.invalid.break=loop \u6216 switch \u4E2D\u5FC5\u987B\u6709 ''break''\u3002 +javac.err.invalid.continue=loop \u4E2D\u5FC5\u987B\u6709 ''continue''\u3002 +javac.err.branch.to.uplevel=''break'' \u6216 ''continue'' \u5FC5\u987B\u5728\u540C\u4E00\u65B9\u6CD5\u5185\u8F6C\u79FB\u63A7\u5236\u3002 +javac.err.invalid.decl=\u58F0\u660E\u65E0\u6548\u3002 +javac.err.return.with.value=\u5BF9\u4E8E{0}\u4F7F\u7528 ''return'' \u8FD4\u56DE\u503C\u3002 +javac.err.return.without.value=\u5BF9\u4E8E{0}\u4F7F\u7528 ''return'' \u672A\u8FD4\u56DE\u503C\u3002 +javac.err.return.inside.static.initializer=\u9759\u6001\u521D\u59CB\u5316\u7A0B\u5E8F\u5185\u90E8\u7684 ''return''\u3002 +javac.err.invalid.label=\u6807\u7B7E\u65E0\u6548\u3002 +javac.err.return.required.at.end=\u5728{0}\u7684\u7ED3\u5C3E\u5904\u8FD4\u56DE\u6240\u9700\u5185\u5BB9\u3002 +javac.err.duplicate.label=case \u6807\u7B7E\u91CD\u590D: {0} +javac.err.switch.overflow=\u5728{1}\u4E0A\u7528\u4E8E ''switch'' \u7684 case \u6807\u7B7E{0}\u8FC7\u5927 +javac.err.nested.duplicate.label=\u8BED\u53E5\u4E0D\u80FD\u4E0E\u5176\u5C01\u95ED\u8BED\u53E5\u4E4B\u4E00\u4F7F\u7528\u540C\u4E00\u6807\u8BC6\u7B26\u6807\u8BB0: {0} +javac.err.declaration.with.label=\u65E0\u6CD5\u6807\u8BB0\u58F0\u660E: {0} +javac.err.const.expr.required=\u9700\u8981\u5E38\u91CF\u8868\u8FBE\u5F0F\u3002 +javac.err.duplicate.default=''default'' \u6807\u7B7E\u91CD\u590D\u3002 +javac.err.not.supported=\u4E0D\u652F\u6301 ''{0}''\u3002 +javac.err.return.with.value.constr=\u5BF9\u4E8E\u6784\u9020\u5668\u4F7F\u7528 ''return'' \u8FD4\u56DE\u503C: {0} +javac.err.package.repeated=\u4EC5\u5141\u8BB8\u4E00\u4E2A\u7A0B\u5E8F\u5305\u58F0\u660E\u3002 +javac.err.class.multidef=\u5DF2\u5728{1}\u4E2D\u5B9A\u4E49\u7C7B{0}\u3002 +javac.err.class.multidef.import=\u7C7B\u540D{0}\u4E0E\u5BFC\u5165\u7C7B{1}\u51B2\u7A81\u3002 +javac.err.intf.constructor=\u63A5\u53E3\u4E0D\u80FD\u6709\u6784\u9020\u5668\u3002 +javac.err.constr.modifier=\u6784\u9020\u5668\u7684\u7C7B\u578B\u4E0D\u80FD\u4E3A\u672C\u673A, \u62BD\u8C61, \u9759\u6001, \u540C\u6B65\u6216\u6700\u7EC8: {0} +javac.err.intf.initializer=\u63A5\u53E3\u4E0D\u80FD\u6709\u9759\u6001\u521D\u59CB\u5316\u7A0B\u5E8F\u3002 +javac.err.intf.modifier.method=\u63A5\u53E3\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u672C\u673A, \u9759\u6001, \u540C\u6B65, \u6700\u7EC8, \u4E13\u7528\u6216\u53D7\u4FDD\u62A4: {0} +javac.err.intf.modifier.field=\u63A5\u53E3\u5B57\u6BB5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u4E13\u7528\u6216\u53D7\u4FDD\u62A4: {0} +javac.err.transient.meth=\u65B9\u6CD5{0}\u4E0D\u80FD\u4E3A\u77AC\u6001\u65B9\u6CD5\u3002\u53EA\u6709\u53D8\u91CF\u624D\u80FD\u662F\u77AC\u6001\u7684\u3002 +javac.err.volatile.meth=\u65B9\u6CD5{0}\u4E0D\u80FD\u4E3A\u6613\u5931\u65B9\u6CD5\u3002\u53EA\u6709\u53D8\u91CF\u624D\u80FD\u662F\u6613\u5931\u7684\u3002 +javac.err.abstract.private.modifier=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u4E3A\u4E13\u7528\u65B9\u6CD5: {0} +javac.err.abstract.static.modifier=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u4E3A\u9759\u6001\u65B9\u6CD5: {0} +javac.err.abstract.final.modifier=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u4E3A\u6700\u7EC8\u65B9\u6CD5: {0} +javac.err.abstract.native.modifier=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u4E3A\u672C\u673A\u65B9\u6CD5: {0} +javac.err.abstract.synchronized.modifier=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u4E3A\u540C\u6B65\u65B9\u6CD5: {0} +javac.err.invalid.meth.body=\u62BD\u8C61\u65B9\u6CD5\u548C\u672C\u673A\u65B9\u6CD5\u4E0D\u80FD\u5E26\u6709\u4E3B\u4F53: {0} +javac.err.var.modifier=\u53D8\u91CF\u7C7B\u578B\u4E0D\u80FD\u4E3A\u540C\u6B65, \u62BD\u8C61\u6216\u672C\u673A: {0} +javac.err.var.floatmodifier=\u4E0D\u80FD\u4E25\u683C\u58F0\u660E\u53D8\u91CF: {0} +javac.err.inner.modifier=\u5185\u90E8\u7C7B\u4E0D\u80FD\u4E3A\u6613\u5931, \u77AC\u6001, \u672C\u673A\u6216\u540C\u6B65\u7C7B: {0} +javac.err.transient.modifier=\u77AC\u6001\u53D8\u91CF\u4E0D\u80FD\u4E3A\u63A5\u53E3\u7684\u6210\u5458: {0} +javac.err.volatile.modifier=\u6613\u5931\u53D8\u91CF\u4E0D\u80FD\u4E3A\u6700\u7EC8\u53D8\u91CF\u6216\u63A5\u53E3\u7684\u6210\u5458: {0} +javac.err.initializer.needed=\u5FC5\u987B\u521D\u59CB\u5316\u6B64\u6700\u7EC8\u53D8\u91CF: {0} +javac.err.meth.multidef=\u65B9\u6CD5\u58F0\u660E\u91CD\u590D: {0} +javac.err.meth.redef.rettype=\u4E0D\u80FD\u4F7F\u7528\u5176\u4ED6\u8FD4\u56DE\u7C7B\u578B\u91CD\u65B0\u5B9A\u4E49\u65B9\u6CD5: {0}\u662F{1} +javac.err.var.multidef=\u53D8\u91CF\u58F0\u660E\u91CD\u590D: {0}\u662F{1} +javac.err.inner.class.multidef=\u5185\u90E8\u7C7B\u58F0\u660E\u91CD\u590D: \u5DF2\u5728\u6B64\u8303\u56F4\u5185\u5B9A\u4E49\u4E86{0}\u3002 +javac.err.intf.super.class={0}\u7684\u8D85\u7C7B\u4E0D\u80FD\u662F\u63A5\u53E3: {1} +javac.err.cant.access.class=\u65E0\u6CD5\u8BBF\u95EE{0}\u3002\u7C7B\u6216\u63A5\u53E3\u5FC5\u987B\u662F\u516C\u5171\u7684, \u5728\u540C\u4E00\u7A0B\u5E8F\u5305\u4E2D\u6216\u4E3A\u53EF\u8BBF\u95EE\u6210\u5458\u7C7B\u3002 +javac.err.unqualified.name.required=\u9650\u5B9A\u7684 'new' \u8868\u8FBE\u5F0F\u4E2D\u7684\u7C7B\u578B\u540D\u79F0\u5FC5\u987B\u4E3A\u975E\u9650\u5B9A\u6807\u8BC6\u7B26\u3002 +javac.err.repeated.modifier=\u4FEE\u9970\u7B26\u91CD\u590D\u3002 +javac.err.inconsistent.modifier=\u6210\u5458\u58F0\u660E\u4E0D\u4E00\u81F4\u3002\u6700\u591A\u53EA\u80FD\u6307\u5B9A\u4E00\u4E2A\u516C\u5171\u7684, \u4E13\u7528\u7684\u6216\u53D7\u4FDD\u62A4\u7684\u6210\u5458\u3002 +javac.err.super.is.final=\u4E0D\u80FD\u5C06\u6700\u7EC8\u7C7B\u7528\u4F5C\u5B50\u7C7B: {0} +javac.err.super.is.intf=\u4E0D\u80FD\u5C06\u63A5\u53E3\u7528\u4F5C\u5B50\u7C7B: {0} +javac.err.cyclic.super=\u5FAA\u73AF\u7C7B\u7EE7\u627F\u3002 +javac.err.super.is.inner=\u5FAA\u73AF\u7C7B\u7EE7\u627F: \u5B50\u7C7B\u4E0D\u80FD\u5C01\u95ED\u8D85\u7C7B\u3002 +javac.err.cyclic.intf=\u5FAA\u73AF\u63A5\u53E3\u7EE7\u627F\u3002 +javac.err.cyclic.scoping=\u5FAA\u73AF\u7C7B\u7EE7\u627F\u6216\u786E\u5B9A\u4F5C\u7528\u57DF\u3002 +javac.err.not.intf={0}\u5FC5\u987B\u4E3A\u63A5\u53E3\u3002 +javac.err.final.intf=\u63A5\u53E3\u4E0D\u80FD\u4E3A\u6700\u7EC8\u63A5\u53E3: {0} +javac.err.intf.impl.intf=\u63A5\u53E3\u4E0D\u80FD\u5B9E\u73B0\u4EFB\u4F55\u65B9\u6CD5, \u5B83\u53EA\u80FD\u6269\u5C55\u5176\u4ED6\u63A5\u53E3\u3002 +javac.err.multiple.inherit=\u4E0D\u652F\u6301\u591A\u91CD\u7EE7\u627F\u3002 +javac.err.intf.repeated=\u63A5\u53E3{0}\u91CD\u590D\u3002 +javac.err.class.format={0}\u4E2D\u7684\u7C7B\u6587\u4EF6\u683C\u5F0F\u65E0\u6548\u3002{1} +javac.err.truncated.class=\u8BFB\u53D6\u7C7B\u6587\u4EF6{0}\u65F6\u9047\u5230\u610F\u5916\u7684\u6587\u4EF6\u7ED3\u5C3E\u3002 +javac.err.no.meth.body=\u65B9\u6CD5{0}\u9700\u8981\u65B9\u6CD5\u4E3B\u4F53\u3002\u5426\u5219\u5C06\u5176\u58F0\u660E\u4E3A\u62BD\u8C61\u65B9\u6CD5\u3002 +javac.err.no.constructor.body=\u6784\u9020\u5668{0}\u9700\u8981\u65B9\u6CD5\u4E3B\u4F53\u3002 +javac.err.bad.constructor.modifier=\u6784\u9020\u5668\u4E0D\u80FD\u7531 strictfp \u6765\u4FEE\u6539\u3002 +javac.err.void.inst.var=\u5B9E\u4F8B\u53D8\u91CF\u4E0D\u80FD\u4E3A\u7A7A: {0} +javac.err.invalid.method.decl=\u65B9\u6CD5\u58F0\u660E\u65E0\u6548; \u9700\u8981\u8FD4\u56DE\u7C7B\u578B\u3002 +javac.err.invalid.method.decl.name=\u65B9\u6CD5\u58F0\u660E\u65E0\u6548; \u9700\u8981\u65B9\u6CD5\u540D\u79F0\u3002 +javac.err.invalid.method.decl.qual=\u5168\u9650\u5B9A\u6784\u9020\u5668\u540D\u79F0\u65E0\u6548\u3002 +javac.err.super.not.found=\u627E\u4E0D\u5230{1}\u7684\u8D85\u7C7B{0}\u3002 +javac.err.intf.not.found=\u627E\u4E0D\u5230{1}\u7684\u63A5\u53E3{0}\u3002 +javac.err.final.abstract=\u4E0D\u80FD\u5C06\u7C7B{0}\u540C\u65F6\u58F0\u660E\u4E3A\u62BD\u8C61\u7C7B\u548C\u6700\u7EC8\u7C7B\u3002 +javac.err.void.array=\u7A7A\u6570\u7EC4\u4E3A\u65E0\u6548\u7C7B\u578B\u3002 +javac.err.void.argument=\u53C2\u6570\u7684\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A: {0} +javac.err.invalid.expr=\u8868\u8FBE\u5F0F\u8BED\u53E5\u65E0\u6548\u3002 +javac.err.catch.not.reached=\u65E0\u6CD5\u8BBF\u95EE catch\u3002 +javac.err.stat.not.reached=\u65E0\u6CD5\u8BBF\u95EE\u8BED\u53E5\u3002 +javac.err.init.no.normal.completion=\u521D\u59CB\u5316\u7A0B\u5E8F\u5FC5\u987B\u80FD\u591F\u6B63\u5E38\u5B8C\u6210\u3002 +javac.err.arithmetic.exception=\u7B97\u6CD5\u5F02\u5E38\u9519\u8BEF\u3002 +javac.err.generic={0} +javac.err.public.class.file=\u5FC5\u987B\u5728\u540D\u4E3A "{1}" \u7684\u6587\u4EF6\u4E2D\u5B9A\u4E49\u516C\u5171{0}\u3002 +javac.err.package.class.file={0}\u5728{1}\u4E2D\u5B9A\u4E49\u3002\u7531\u4E8E\u5B83\u662F\u5728\u5176\u6E90\u6587\u4EF6\u4E4B\u5916\u4F7F\u7528\u7684, \u56E0\u6B64\u5E94\u5728\u540D\u4E3A "{2}" \u7684\u6587\u4EF6\u4E2D\u5BF9\u5176\u8FDB\u884C\u5B9A\u4E49\u3002 +javac.err.lose.precision=\u53EF\u80FD\u635F\u5931\u7CBE\u5EA6\u3002\u4F7F\u7528\u663E\u5F0F\u8F6C\u6362\u5C06{0}\u8F6C\u6362\u4E3A{1}\u3002 +javac.err.duplicate.argument=\u5728\u6B64\u65B9\u6CD5\u7684\u53C2\u6570\u5217\u8868\u4E2D\u4E24\u6B21\u4F7F\u7528\u53D8\u91CF ''{0}''\u3002 +javac.err.local.redefined=\u5DF2\u5728\u6B64\u65B9\u6CD5\u4E2D\u5B9A\u4E49\u4E86\u53D8\u91CF ''{0}''\u3002 +javac.err.local.class.redefined=\u5DF2\u5728\u6B64\u65B9\u6CD5\u4E2D\u5B9A\u4E49\u4E86\u672C\u5730\u7C7B ''{0}''\u3002 +javac.err.inner.redefined=\u5DF2\u5728\u6B64\u8303\u56F4\u5185\u5B9A\u4E49\u4E86\u7C7B\u540D ''{0}''\u3002\u5185\u90E8\u7C7B\u4E0D\u80FD\u4E0E\u5176\u4EFB\u4E00\u5C01\u95ED\u7C7B\u5177\u6709\u76F8\u540C\u7684\u7B80\u540D\u3002 +javac.err.inherited.hides.field=\u53D8\u91CF ''{0}'' \u662F\u5728{1}\u4E2D\u7EE7\u627F\u7684, \u5E76\u5728{2}\u4E2D\u9690\u85CF\u4E86\u4E00\u4E2A\u540C\u540D\u53D8\u91CF\u3002\u5FC5\u987B\u4F7F\u7528\u663E\u5F0F ''this'' \u9650\u5B9A\u7B26\u9009\u62E9\u6240\u9700\u5B9E\u4F8B\u3002 +javac.err.inherited.hides.local=\u53D8\u91CF ''{0}'' \u662F\u5728{1}\u4E2D\u7EE7\u627F\u7684, \u5E76\u4E14\u9690\u85CF\u4E86\u4E00\u4E2A\u540C\u540D\u672C\u5730\u53D8\u91CF\u3002\u5FC5\u987B\u4F7F\u7528\u663E\u5F0F ''this'' \u9650\u5B9A\u7B26\u9009\u62E9\u53D8\u91CF, \u5426\u5219\u5FC5\u987B\u91CD\u547D\u540D\u672C\u5730\u53D8\u91CF\u3002 +javac.err.inherited.hides.method=\u65B9\u6CD5 ''{0}'' \u662F\u5728{1}\u4E2D\u7EE7\u627F\u7684, \u5E76\u5728{2}\u4E2D\u9690\u85CF\u4E86\u4E00\u4E2A\u540C\u540D\u65B9\u6CD5\u3002\u5FC5\u987B\u4F7F\u7528\u663E\u5F0F ''this'' \u9650\u5B9A\u7B26\u9009\u62E9\u6240\u9700\u5B9E\u4F8B\u3002 +javac.err.inherited.hides.type=\u7C7B\u578B ''{0}'' \u662F\u5728{1}\u4E2D\u7EE7\u627F\u7684, \u5E76\u5728\u5C01\u95ED\u8303\u56F4\u5185\u9690\u85CF\u4E86\u4E00\u4E2A\u540C\u540D\u7C7B\u578B\u3002\u5FC5\u987B\u4F7F\u7528\u663E\u5F0F\u9650\u5B9A\u7B26\u524D\u7F00\u547D\u540D\u6B64\u7C7B\u578B\u3002 +javac.err.private.class=\u7C7B\u578B{0}\u4E0D\u80FD\u4E3A\u4E13\u7528\u7C7B\u578B\u3002\u5728\u5F53\u524D\u7A0B\u5E8F\u5305\u4E2D\u59CB\u7EC8\u53EF\u4EE5\u8BBF\u95EE\u7A0B\u5E8F\u5305\u6210\u5458\u3002 +javac.err.static.class=\u7C7B\u578B{0}\u4E0D\u80FD\u58F0\u660E\u4E3A\u9759\u6001\u7C7B\u578B\u3002\u7531\u4E8E\u5B83\u662F\u7A0B\u5E8F\u5305\u6210\u5458, \u56E0\u6B64\u5B83\u5DF2\u81F3\u9876\u5C42\u3002 +javac.err.protected.class=\u7C7B\u578B{0}\u4E0D\u80FD\u4E3A\u53D7\u4FDD\u62A4\u7C7B\u578B\u3002\u7A0B\u5E8F\u5305\u6210\u5458\u53EF\u4EE5\u662F\u5F53\u524D\u7A0B\u5E8F\u5305\u7684\u516C\u5171\u7A0B\u5E8F\u5305\u6210\u5458\u6216\u672C\u5730\u7A0B\u5E8F\u5305\u6210\u5458\u3002 +javac.err.recursive.constr=\u9012\u5F52\u6784\u9020\u5668\u8C03\u7528: {0}\u3002 +javac.err.wrong.class=\u6587\u4EF6{0}\u672A\u6309\u9884\u671F\u5305\u542B{1}\u800C\u662F\u5305\u542B\u4E86{2}\u3002\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u6216\u786E\u4FDD\u8BE5\u6587\u4EF6\u4F4D\u4E8E\u6B63\u786E\u7684\u7C7B\u8DEF\u5F84\u5B50\u76EE\u5F55\u4E2D\u3002 +javac.err.wrong.source=\u6587\u4EF6{0}\u672A\u6309\u9884\u671F\u5305\u542B{1}\u3002\u8BF7\u8C03\u6574\u7C7B\u8DEF\u5F84, \u4EE5\u4F7F\u8BE5\u6587\u4EF6\u4E0D\u51FA\u73B0\u5728{2}\u4E2D\u3002 +javac.err.class.not.found=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u7C7B{0}\u3002 +javac.err.class.not.found.no.context=\u627E\u4E0D\u5230\u7C7B{0}\u3002 +javac.err.package.not.found=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u7A0B\u5E8F\u5305{0}\u3002 +javac.err.package.not.found.strong=\u627E\u4E0D\u5230\u7A0B\u5E8F\u5305{0}\u3002\u8BF7\u8C03\u6574\u7C7B\u8DEF\u5F84, \u4EE5\u4FBF\u53EF\u4EE5\u8BBF\u95EE\u7A0B\u5E8F\u5305{0}\u3002 +javac.err.class.package.conflict=\u7C7B\u578B\u548C\u7A0B\u5E8F\u5305\u4E0D\u80FD\u540C\u540D\u3002\u53EF\u4EE5\u8BBF\u95EE\u7A0B\u5E8F\u5305{0}\u65F6, \u4E0D\u80FD\u4F7F\u7528\u540D\u79F0{0}\u6765\u547D\u540D\u7C7B\u3002 +javac.err.package.class.conflict=\u7C7B\u578B\u548C\u7A0B\u5E8F\u5305\u4E0D\u80FD\u540C\u540D\u3002\u53EF\u4EE5\u8BBF\u95EE\u7C7B{1}\u65F6, \u4E0D\u80FD\u4F7F\u7528\u540D\u79F0{0}\u6765\u547D\u540D\u7A0B\u5E8F\u5305\u3002 +javac.err.package.class.conflict.strong=\u540D\u79F0{0}\u5FC5\u987B\u53C2\u8003\u7A0B\u5E8F\u5305\u3002\u7531\u4E8E\u7C7B\u578B\u548C\u7A0B\u5E8F\u5305\u4E0D\u80FD\u540C\u540D, \u5982\u679C\u53EF\u8BBF\u95EE\u7C7B\u540D\u4E3A{1}\u5219\u4E3A\u975E\u6CD5\u3002\u5E94\u91CD\u547D\u540D\u7C7B{1}\u6216\u5C06\u5176\u4ECE\u7C7B\u8DEF\u5F84\u4E2D\u5220\u9664\u3002 +javac.err.illegal.mangled.name={1}\u7684\u540D\u79F0{0}\u65E0\u6548\u3002 +javac.err.class.and.package=\u4E0D\u660E\u786E\u7684\u540D\u79F0: {0}\u65E2\u662F\u7C7B\u53C8\u662F\u7A0B\u5E8F\u5305\u3002 +javac.err.throws.not.throwable=throws \u5B50\u53E5\u4E2D\u7684{0}\u5FC5\u987B\u662F\u7C7B java.lang.Throwable \u7684\u5B50\u7C7B\u3002 +javac.err.throw.not.throwable=\u65E0\u6CD5\u629B\u51FA{0}; \u5B83\u5FC5\u987B\u4E3A\u7C7B java.lang.Throwable \u7684\u5B50\u7C7B\u3002 +javac.err.catch.not.throwable=\u65E0\u6CD5\u6355\u83B7{0}; \u5B83\u5FC5\u987B\u4E3A\u7C7B java.lang.Throwable \u7684\u5B50\u7C7B\u3002 +javac.err.initializer.exception=\u4E0D\u80FD\u5728\u521D\u59CB\u5316\u7A0B\u5E8F\u4E2D\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{0}\u3002 +javac.err.cant.read=\u65E0\u6CD5\u8BFB\u53D6: {0} +javac.err.cant.write=\u65E0\u6CD5\u5199\u5165: {0} +javac.err.fatal.error=\u7F16\u8BD1\u5668\u51FA\u9519; \u8BF7\u5EFA\u7ACB Bug \u62A5\u544A (http://java.sun.com/cgi-bin/bugreport.cgi)\u3002 +javac.err.fatal.exception=\u7F16\u8BD1\u5668\u4E2D\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF; \u8BF7\u5EFA\u7ACB Bug \u62A5\u544A (http://java.sun.com/cgi-bin/bugreport.cgi)\u3002 +javac.err.no.inner.classes=\u5DF2\u7981\u7528\u5BF9\u5185\u90E8\u7C7B\u7684\u652F\u6301\u3002 +javac.err.uncaught.exception=\u5FC5\u987B\u6355\u83B7\u5F02\u5E38\u9519\u8BEF{0}, \u5426\u5219\u5FC5\u987B\u5728\u6B64\u65B9\u6CD5\u7684 throws \u5B50\u53E5\u4E2D\u5BF9\u5176\u8FDB\u884C\u58F0\u660E\u3002 +javac.err.constructor.exception=\u5FC5\u987B\u6355\u83B7\u5F02\u5E38\u9519\u8BEF{0}, \u5426\u5219\u5FC5\u987B\u5728\u6B64\u6784\u9020\u5668\u7684 throws \u5B50\u53E5\u4E2D\u5BF9\u5176\u8FDB\u884C\u58F0\u660E\u3002 +javac.err.def.constructor.exception=\u7531\u4E8E\u7C7B\u7684\u8D85\u7C7B\u7684\u6784\u9020\u5668\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{0}, \u56E0\u6B64\u65E0\u6CD5\u4E3A\u6B64\u7C7B\u521B\u5EFA\u9ED8\u8BA4\u6784\u9020\u5668\u3002\u4E3A\u6B64\u7C7B\u663E\u5F0F\u5B9A\u4E49\u6784\u9020\u5668\u3002 +javac.err.catch.not.thrown=\u4ECE\u672A\u5728\u76F8\u5E94\u7684 try \u8BED\u53E5\u4E3B\u4F53\u4E2D\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{0}\u3002 #warning: -javac.err.array.clone.supported=\ - \u6ce8\u610f\uff1a\u6570\u7ec4\u7684\u514b\u9686\u4e0d\u4f1a\u629b\u51fa\u4efb\u4f55\u68c0\u67e5\u8fc7\u7684\u5f02\u5e38\uff0c\u56e0\u6b64\u4e0d\u9700\u8981\u4f7f\u7528\u4efb\u4f55 catch \u5b50\u53e5\u3002\u8bf7\u5220\u9664\u672a\u4f7f\u7528\u7684 catch \u5b50\u53e5\uff0c\u6216\u8005\u5982\u679c\u8981\u4fdd\u6301\u4e0e\u65e7\u7248\u7f16\u8bd1\u5668\u7684\u517c\u5bb9\u6027\uff0c\u53ef\u4ee5\u6309\u5982\u4e0b\u6240\u793a\u63d2\u5165\u4eba\u5de5\u629b\u51fa\uff1aif (false) throw new CloneNotSupportedException(); -javac.err.no.outer.arg=\ - \u8303\u56f4\u5185\u6ca1\u6709 {0} \u7684\u5c01\u95ed\u5b9e\u4f8b\uff1b\ - \u521b\u5efa {1} \u65f6\u5fc5\u987b\u63d0\u4f9b\u4e00\u4e2a\u663e\u5f0f\u5c01\u95ed\u5b9e\u4f8b\uff0c\ - \u5982 "outer. new Inner()" \u6216 "outer. super()" \u4e2d\u6240\u793a\u3002 -javac.err.no.default.outer.arg=\ - \u8303\u56f4\u5185\u6ca1\u6709 {0} \u7684\u5c01\u95ed\u5b9e\u4f8b\uff1b\ - \u65e0\u6cd5\u4e3a {1} \u521b\u5efa\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\u3002 -javac.err.no.outer.base=\ - \u8303\u56f4\u5185\u6ca1\u6709 {0} \u7684\u5c01\u95ed\u5b9e\u4f8b\uff1b\ - \u8bbf\u95ee {1} \u65f6\u5fc5\u987b\u63d0\u4f9b\u4e00\u4e2a\u663e\u5f0f\u5c01\u95ed\u5b9e\u4f8b\uff0c\ - \u5982 "outer.member" \u4e2d\u6240\u793a\u3002 -javac.err.inner.interface=\ - \u6210\u5458\u63a5\u53e3\u53ea\u80fd\u51fa\u73b0\u5728\u63a5\u53e3\u548c\u9876\u5c42\u7c7b\u4e2d\u3002 -javac.err.static.inner.class=\ - \u7c7b\u578b {0} \u4e0d\u80fd\u4e3a\u9759\u6001\u7c7b\u578b\u3002\u9759\u6001\u6210\u5458\u53ea\u80fd\u51fa\u73b0\u5728\u63a5\u53e3\u548c\u9876\u5c42\u7c7b\u4e2d\u3002 -javac.err.static.inner.field=\ - \u53d8\u91cf {0} \u5728 {1} \u4e2d\u4e0d\u80fd\u4e3a\u9759\u6001\u53d8\u91cf\u3002\u53ea\u6709\u63a5\u53e3\u548c\u9876\u5c42\u7c7b\u7684\u6210\u5458\u624d\u80fd\u4e3a\u9759\u6001\u53d8\u91cf\u3002 -javac.err.static.inner.method=\ - \u65b9\u6cd5 {0} \u5728 {1} \u4e2d\u4e0d\u80fd\u4e3a\u9759\u6001\u65b9\u6cd5\u3002\u53ea\u6709\u63a5\u53e3\u548c\u9876\u5c42\u7c7b\u7684\u6210\u5458\u624d\u80fd\u4e3a\u9759\u6001\u65b9\u6cd5\u3002 -javac.err.too.many.errors=\ - \u9519\u8bef\u592a\u591a\u3002\uff08\u5bf9\u62a5\u544a\u7684\u9519\u8bef\u7684\u9650\u5236\u503c\u4e3a {0}\u3002\uff09 -javac.err.override.static.with.instance=\ - \u5728 {1} \u4e2d\u58f0\u660e\u7684\u5b9e\u4f8b\u65b9\u6cd5 {0} \u4e0d\u80fd\u8986\u76d6\ - \u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u9759\u6001\u65b9\u6cd5\u3002\u8986\u76d6\u9759\u6001\u65b9\u6cd5\ - \u662f\u975e\u6cd5\u7684\u3002 -javac.err.hide.instance.with.static=\ - \u5728 {1} \u4e2d\u58f0\u660e\u7684\u9759\u6001\u65b9\u6cd5 {0} \u4e0d\u80fd\u9690\u85cf\ - \u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u5b9e\u4f8b\u65b9\u6cd5\u3002\u9690\u85cf\u5b9e\u4f8b\u65b9\u6cd5\ - \u662f\u975e\u6cd5\u7684\u3002 -javac.err.override.final.method=\ - \u5728 {1} \u4e2d\u58f0\u660e\u7684\u65b9\u6cd5 {0} \u4e0d\u80fd\u8986\u76d6\ - \u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u6700\u7ec8\u65b9\u6cd5\u3002\u4e0d\u80fd\u8986\u76d6\u6700\u7ec8\ - \u65b9\u6cd5\u3002 -javac.err.override.is.deprecated=\ - \u5728 {1} \u4e2d\u58f0\u660e\u7684\u65b9\u6cd5 {0} \u672a\u8fc7\u65f6\uff0c\u4f46\u662f\ - \u5c06\u8986\u76d6\u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\ - \u5df2\u8fc7\u65f6\u65b9\u6cd5\u3002 -javac.err.override.more.restrictive=\ - \u5728 {1} \u4e2d\u58f0\u660e\u7684\u65b9\u6cd5 {0} \u4e0d\u80fd\u8986\u76d6\ - \u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u65b9\u6cd5\u3002\u5df2\u5bf9\u8bbf\u95ee\u4fee\u9970\u7b26\u8fdb\u884c\u4e86\u66f4\u591a\ - \u9650\u5236\u3002 -javac.err.override.different.return=\ - \u5728 {1} \u4e2d\u58f0\u660e\u7684\u65b9\u6cd5 {0} \u4e0d\u80fd\u8986\u76d6\ - \u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u65b9\u6cd5\u3002\u5b83\u4eec\u7684\u8fd4\u56de\u7c7b\u578b\u5fc5\u987b\ - \u76f8\u540c\u3002 -javac.err.override.incompatible.exceptions=\ - \u5728 {1} \u4e2d\u58f0\u660e\u7684\u65b9\u6cd5 {0} \u4e0d\u80fd\u8986\u76d6\ - \u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u65b9\u6cd5\u3002\u5b83\u4eec\u7684 throws \u5b50\u53e5\ - \u4e0d\u517c\u5bb9\u3002 -javac.err.meet.different.return=\ - \u4ece {1} \u7ee7\u627f\u7684\u65b9\u6cd5 {0} \u4e0e\u4ece {2} \u7ee7\u627f\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\ - \u7684\u65b9\u6cd5\u4e0d\u517c\u5bb9\u3002\u5b83\u4eec\u7684\u8fd4\u56de\u7c7b\u578b\u5fc5\u987b\ - \u76f8\u540c\u3002 -javac.err.nontrivial.meet=\ - \u4ece {1} \u548c {2} \u7ee7\u627f\u7684\u65b9\u6cd5 {0} \u7684\u5b9a\u4e49\u662f\u517c\u5bb9\u7684\uff0c\ - \u4f46\u4e24\u8005\u7684\u7ec4\u5408\u662f\u975e\u51e1\u7684\u5e76\u4e14\u5c1a\u672a\ - \u5b9e\u73b0\u3002\u89e3\u51b3\u65b9\u6cd5\u662f\uff1a\u5728\u6b64\u7c7b\u4e2d\u663e\u5f0f\ - \u58f0\u660e {0}\u3002 -javac.err.method.too.long=\ - \u6b64\u4ee3\u7801\u8981\u6c42\u751f\u6210\u5927\u4e8e 64K \u5b57\u8282\u7684\ - \u65b9\u6cd5\u3002\u865a\u62df\u673a\u53ef\u80fd\u4f1a\u62d2\u7edd\u7ed3\u679c\u7c7b\u6587\u4ef6\u3002 +javac.err.array.clone.supported=\u6CE8: \u6570\u7EC4\u7684\u514B\u9686\u4E0D\u4F1A\u629B\u51FA\u4EFB\u4F55\u53D7\u63A7\u5F02\u5E38\u9519\u8BEF, \u56E0\u6B64\u4E0D\u9700\u8981\u4F7F\u7528\u4EFB\u4F55 catch \u5B50\u53E5\u3002\u8BF7\u5220\u9664\u672A\u4F7F\u7528\u7684 catch \u5B50\u53E5, \u6216\u8005\u5982\u679C\u8981\u4FDD\u6301\u4E0E\u65E7\u7248\u7F16\u8BD1\u5668\u7684\u517C\u5BB9\u6027, \u53EF\u4EE5\u6309\u5982\u4E0B\u6240\u793A\u63D2\u5165\u4EBA\u5DE5\u629B\u51FA: if (false) throw new CloneNotSupportedException(); +javac.err.no.outer.arg=\u8303\u56F4\u5185\u6CA1\u6709{0}\u7684\u5C01\u95ED\u5B9E\u4F8B; \u521B\u5EFA{1}\u65F6\u5FC5\u987B\u63D0\u4F9B\u4E00\u4E2A\u663E\u5F0F\u5C01\u95ED\u5B9E\u4F8B, \u4F8B\u5982 "outer. new Inner()" \u6216 "outer. super()" \u4E2D\u6240\u793A\u3002 +javac.err.no.default.outer.arg=\u8303\u56F4\u5185\u6CA1\u6709{0}\u7684\u5C01\u95ED\u5B9E\u4F8B; \u65E0\u6CD5\u4E3A{1}\u521B\u5EFA\u9ED8\u8BA4\u6784\u9020\u5668\u3002 +javac.err.no.outer.base=\u8303\u56F4\u5185\u6CA1\u6709{0}\u7684\u5C01\u95ED\u5B9E\u4F8B; \u8BBF\u95EE{1}\u65F6\u5FC5\u987B\u63D0\u4F9B\u4E00\u4E2A\u663E\u5F0F\u5C01\u95ED\u5B9E\u4F8B, \u5982 "outer.member" \u4E2D\u6240\u793A\u3002 +javac.err.inner.interface=\u6210\u5458\u63A5\u53E3\u53EA\u80FD\u51FA\u73B0\u5728\u63A5\u53E3\u548C\u9876\u5C42\u7C7B\u4E2D\u3002 +javac.err.static.inner.class=\u7C7B\u578B{0}\u4E0D\u80FD\u4E3A\u9759\u6001\u7C7B\u578B\u3002\u9759\u6001\u6210\u5458\u53EA\u80FD\u51FA\u73B0\u5728\u63A5\u53E3\u548C\u9876\u5C42\u7C7B\u4E2D\u3002 +javac.err.static.inner.field=\u53D8\u91CF{0}\u5728{1}\u4E2D\u4E0D\u80FD\u4E3A\u9759\u6001\u53D8\u91CF\u3002\u53EA\u6709\u63A5\u53E3\u548C\u9876\u5C42\u7C7B\u7684\u6210\u5458\u624D\u80FD\u4E3A\u9759\u6001\u53D8\u91CF\u3002 +javac.err.static.inner.method=\u65B9\u6CD5{0}\u5728{1}\u4E2D\u4E0D\u80FD\u4E3A\u9759\u6001\u65B9\u6CD5\u3002\u53EA\u6709\u63A5\u53E3\u548C\u9876\u5C42\u7C7B\u7684\u6210\u5458\u624D\u80FD\u4E3A\u9759\u6001\u65B9\u6CD5\u3002 +javac.err.too.many.errors=\u9519\u8BEF\u592A\u591A\u3002(\u5BF9\u62A5\u544A\u7684\u9519\u8BEF\u7684\u9650\u5236\u503C\u4E3A {0}\u3002) +javac.err.override.static.with.instance=\u5728{1}\u4E2D\u58F0\u660E\u7684\u5B9E\u4F8B\u65B9\u6CD5{0}\u4E0D\u80FD\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u9759\u6001\u65B9\u6CD5\u3002\u8986\u76D6\u9759\u6001\u65B9\u6CD5\u662F\u975E\u6CD5\u7684\u3002 +javac.err.hide.instance.with.static=\u5728{1}\u4E2D\u58F0\u660E\u7684\u9759\u6001\u65B9\u6CD5{0}\u4E0D\u80FD\u9690\u85CF\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u5B9E\u4F8B\u65B9\u6CD5\u3002\u9690\u85CF\u5B9E\u4F8B\u65B9\u6CD5\u662F\u975E\u6CD5\u7684\u3002 +javac.err.override.final.method=\u5728{1}\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5{0}\u4E0D\u80FD\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u6700\u7EC8\u65B9\u6CD5\u3002\u4E0D\u80FD\u8986\u76D6\u6700\u7EC8\u65B9\u6CD5\u3002 +javac.err.override.is.deprecated=\u5728{1}\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5{0}\u672A\u8FC7\u65F6, \u4F46\u662F\u5C06\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u5DF2\u8FC7\u65F6\u65B9\u6CD5\u3002 +javac.err.override.more.restrictive=\u5728{1}\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5{0}\u4E0D\u80FD\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u65B9\u6CD5\u3002\u5DF2\u5BF9\u8BBF\u95EE\u4FEE\u9970\u7B26\u8FDB\u884C\u4E86\u66F4\u591A\u9650\u5236\u3002 +javac.err.override.different.return=\u5728{1}\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5{0}\u4E0D\u80FD\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u65B9\u6CD5\u3002\u5B83\u4EEC\u7684\u8FD4\u56DE\u7C7B\u578B\u5FC5\u987B\u76F8\u540C\u3002\t +javac.err.override.incompatible.exceptions=\u5728{1}\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5{0}\u4E0D\u80FD\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u65B9\u6CD5\u3002\u5B83\u4EEC\u7684 throws \u5B50\u53E5\u4E0D\u517C\u5BB9\u3002 +javac.err.meet.different.return=\u4ECE{1}\u7EE7\u627F\u7684\u65B9\u6CD5{0}\u4E0E\u4ECE{2}\u7EE7\u627F\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u65B9\u6CD5\u4E0D\u517C\u5BB9\u3002\u5B83\u4EEC\u7684\u8FD4\u56DE\u7C7B\u578B\u5FC5\u987B\u76F8\u540C\u3002 +javac.err.nontrivial.meet=\u4ECE{1}\u548C{2}\u7EE7\u627F\u7684\u65B9\u6CD5{0}\u7684\u5B9A\u4E49\u662F\u517C\u5BB9\u7684, \u4F46\u4E24\u8005\u7684\u7EC4\u5408\u662F\u975E\u51E1\u7684\u5E76\u4E14\u5C1A\u672A\u5B9E\u73B0\u3002\u89E3\u51B3\u65B9\u6CD5\u662F: \u5728\u6B64\u7C7B\u4E2D\u663E\u5F0F\u58F0\u660E{0}\u3002 +javac.err.method.too.long=\u6B64\u4EE3\u7801\u8981\u6C42\u751F\u6210\u5927\u4E8E 64K \u5B57\u8282\u7684\u65B9\u6CD5\u3002\u865A\u62DF\u673A\u53EF\u80FD\u4F1A\u62D2\u7EDD\u7ED3\u679C\u7C7B\u6587\u4EF6\u3002 # -javac.err.version.too.old=\ - major \u7248\u672c "{0}" \u592a\u65e7\uff0c\u6b64\u5de5\u5177\u65e0\u6cd5\u8bc6\u522b\u3002 -javac.err.version.too.recent=\ - major.minor \u7248\u672c "{0}" \u592a\u65b0\uff0c\u6b64\u5de5\u5177\u65e0\u6cd5\ - \u8bc6\u522b\u3002 +javac.err.version.too.old=\u4E3B\u7248\u672C ''{0}'' \u592A\u65E7, \u6B64\u5DE5\u5177\u65E0\u6CD5\u8BC6\u522B\u3002 +javac.err.version.too.recent=major.minor \u7248\u672C ''{0}'' \u592A\u65B0, \u6B64\u5DE5\u5177\u65E0\u6CD5\u8BC6\u522B\u3002 # -benv.parsed_in=[\u5728 {1} \u6beb\u79d2\u5185\u89e3\u6790 {0}] -benv.loaded_in=[\u5728 {1} \u6beb\u79d2\u5185\u88c5\u5165 {0}] -benv.failed_to_close_class_path=\u65e0\u6cd5\u5173\u95ed\u7c7b\u8def\u5f84\uff1a{0} +benv.parsed_in=[\u5DF2\u5728 {1} \u6BEB\u79D2\u5185\u5BF9{0}\u8FDB\u884C\u8BED\u6CD5\u5206\u6790] +benv.loaded_in=[\u5DF2\u5728 {1} \u6BEB\u79D2\u5185\u52A0\u8F7D{0}] +benv.failed_to_close_class_path=\u65E0\u6CD5\u5173\u95ED\u7C7B\u8DEF\u5F84: {0} # -main.usage=\ -\u7528\u6cd5\uff1a{0} <\u9009\u9879> <\u6e90\u6587\u4ef6>\n\ -\n\ -\u5176\u4e2d <\u9009\u9879> \u5305\u62ec\uff1a\n\ -\ \ -g \u751f\u6210\u6240\u6709\u8c03\u8bd5\u4fe1\u606f\n\ -\ \ -g:none \u4e0d\u751f\u6210\u4efb\u4f55\u8c03\u8bd5\u4fe1\u606f\n\ -\ \ -g:'{'lines,vars,source'}' \u53ea\u751f\u6210\u67d0\u4e9b\u8c03\u8bd5\u4fe1\u606f\n\ -\ \ -O \u4f18\u5316\uff1b\u53ef\u4ee5\u963b\u788d\u8c03\u8bd5\u6216\u6269\u5927\u7c7b\u6587\u4ef6\n\ -\ \ -nowarn \u4e0d\u751f\u6210\u4efb\u4f55\u8b66\u544a\n\ -\ \ -verbose \u8f93\u51fa\u6709\u5173\u7f16\u8bd1\u5668\u6b63\u5728\u6267\u884c\u7684\u64cd\u4f5c\u7684\u6d88\u606f\n\ -\ \ -deprecation \u8f93\u51fa\u4f7f\u7528\u5df2\u8fc7\u65f6\u7684 API \u7684\u6e90\u4f4d\u7f6e\n\ -\ \ -classpath <\u8def\u5f84> \u6307\u5b9a\u67e5\u627e\u7528\u6237\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\n\ -\ \ -sourcepath <\u8def\u5f84> \u6307\u5b9a\u67e5\u627e\u8f93\u5165\u6e90\u6587\u4ef6\u7684\u4f4d\u7f6e\n\ -\ \ -bootclasspath <\u8def\u5f84> \u8986\u76d6\u5f15\u5bfc\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\n\ -\ \ -extdirs <\u76ee\u5f55> \u8986\u76d6\u5b89\u88c5\u7684\u6269\u5c55\u76ee\u5f55\u7684\u4f4d\u7f6e\n\ -\ \ -d <\u76ee\u5f55> \u6307\u5b9a\u5b58\u653e\u751f\u6210\u7684\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\n\ -\ \ -encoding <\u7f16\u7801> \u6307\u5b9a\u6e90\u6587\u4ef6\u6240\u4f7f\u7528\u7684\u5b57\u7b26\u7f16\u7801\n\ -\ \ -target <\u7248\u672c> \u751f\u6210\u7279\u5b9a VM \u7248\u672c\u7684\u7c7b\u6587\u4ef6 +main.usage=\u7528\u6CD5: {0} \n\n\u5176\u4E2D \u5305\u62EC:\n\ \ -g \u751F\u6210\u6240\u6709\u8C03\u8BD5\u4FE1\u606F\n\ \ -g:none \u4E0D\u751F\u6210\u4EFB\u4F55\u8C03\u8BD5\u4FE1\u606F\n\ \ -g:''{''lines,vars,source''}'' \u53EA\u751F\u6210\u67D0\u4E9B\u8C03\u8BD5\u4FE1\u606F\n\ \ -O \u4F18\u5316; \u53EF\u4EE5\u963B\u788D\u8C03\u8BD5\u6216\u6269\u5927\u7C7B\u6587\u4EF6\n\ \ -nowarn \u4E0D\u751F\u6210\u4EFB\u4F55\u8B66\u544A\n\ \ -verbose \u8F93\u51FA\u6709\u5173\u7F16\u8BD1\u5668\u6B63\u5728\u6267\u884C\u7684\u64CD\u4F5C\u7684\u6D88\u606F\n\ \ -deprecation \u8F93\u51FA\u4F7F\u7528\u5DF2\u8FC7\u65F6\u7684 API \u7684\u6E90\u4F4D\u7F6E\n\ \ -classpath \u6307\u5B9A\u67E5\u627E\u7528\u6237\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ -sourcepath \u6307\u5B9A\u67E5\u627E\u8F93\u5165\u6E90\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ -bootclasspath \u8986\u76D6\u5F15\u5BFC\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ -extdirs \u8986\u76D6\u6240\u5B89\u88C5\u6269\u5C55\u7684\u4F4D\u7F6E\n\ \ -d \u6307\u5B9A\u653E\u7F6E\u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ -encoding \u6307\u5B9A\u6E90\u6587\u4EF6\u4F7F\u7528\u7684\u5B57\u7B26\u7F16\u7801\n\ \ -target \u751F\u6210\u7279\u5B9A VM \u7248\u672C\u7684\u7C7B\u6587\u4EF6 # -main.unsupported.usage=\ -\ \ -Xdepend \u9012\u5f52\u641c\u7d22\u6700\u65b0\u6e90\u6587\u4ef6\u4ee5\u8fdb\u884c\u91cd\u65b0\u7f16\u8bd1\n\ -\ \ -Xstdout \u5c06\u6d88\u606f\u53d1\u9001\u5230 System.out\n\ -\ \ -Xverbosepath \u8bf4\u660e\u641c\u7d22\u8def\u7ecf\u548c\u6807\u51c6\u6269\u5c55\u76ee\u5f55\u7684\u65b9\u6cd5\n\ -\ \ -J<\u8fd0\u884c\u65f6\u6807\u5fd7> \u5411 java \u89e3\u91ca\u7a0b\u5e8f\u4f20\u9012\u53c2\u6570\n\ -\n\ --X \u548c -J \u9009\u9879\u90fd\u662f\u975e\u6807\u51c6\u9009\u9879\uff0c\u5982\u6709\u66f4\u6539\uff0c\u6055\u4e0d\u53e6\u884c\u901a\u77e5\u3002 +main.unsupported.usage=\ \ -Xdepend \u9012\u5F52\u641C\u7D22\u6700\u65B0\u6E90\u6587\u4EF6\u4EE5\u8FDB\u884C\u91CD\u65B0\u7F16\u8BD1\n\ \ -Xstdout \u5C06\u6D88\u606F\u53D1\u9001\u5230 System.out\n\ \ -Xverbosepath \u8BF4\u660E\u641C\u7D22\u8DEF\u5F84\u548C\u6807\u51C6\u6269\u5C55\u7684\u65B9\u6CD5\n\ \ -J<\u8FD0\u884C\u65F6\u6807\u8BB0> \u5411 java \u89E3\u91CA\u5668\u4F20\u9012\u53C2\u6570\n\n-X \u548C -J \u9009\u9879\u90FD\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002 # -main.conflicting.options=\u4e0d\u80fd\u540c\u65f6\u4f7f\u7528\u9009\u9879 {0} \u548c {1}\u3002 -main.option.already.seen={0} \u9009\u9879\u53ea\u80fd\u88ab\u6307\u5b9a\u4e00\u6b21\u3002 -main.option.requires.argument={0} \u9009\u9879\u9700\u8981\u53c2\u6570\u3002 -main.bad.debug.option={0} \u9009\u9879\u7684\u683c\u5f0f\u4e0d\u5bf9\u3002\u53ea\u80fd\u4ee5\u9017\u53f7\u5206\u9694\u7684\u5f62\u5f0f\u6307\u5b9a "lines"\u3001"vars" \u548c "source"\u3002 -main.no.such.directory={0} \u76ee\u5f55\u4e0d\u5b58\u5728\u3002 -main.no.such.option={0} \u4e3a\u65e0\u6548\u9009\u9879\u6216\u53c2\u6570\u3002 -main.unknown.release=\u6b64\u7f16\u8bd1\u5668\u4e0d\u8bc6\u522b\u7248\u672c "{0}"\u3002 -main.wrote=[\u5199\u5165 {0}] -main.errors={0} \u4e2a\u9519\u8bef -main.1error=1 \u4e2a\u9519\u8bef -main.warnings={0} \u4e2a\u8b66\u544a -main.1warning=1 \u4e2a\u8b66\u544a -main.done_in=[\u5728 {0} \u6beb\u79d2\u5185\u5b8c\u6210] -main.no.memory=\ - \u7f16\u8bd1\u5668\u6240\u7528\u5185\u5b58\u4e0d\u8db3\u3002\u8bf7\u8003\u8651\u4f7f\u7528 "-J-mx<\u6570\u5b57>" \u547d\u4ee4\u884c\u9009\u9879\u6765\u63d0\u9ad8\u5806\u5927\u5c0f\u7684\u6700\u5927\u503c\u3002 -main.stack.overflow=\ - \u7f16\u8bd1\u5668\u6240\u7528\u5806\u6808\u7a7a\u95f4\u4e0d\u8db3\u3002\u8bf7\u8003\u8651\u4f7f\u7528 "-J-oss<\u6570\u5b57>" \u547d\u4ee4\u884c\u9009\u9879\u6765\u63d0\u9ad8\u5206\u914d\u7ed9 Java \u5806\u6808\u7684\u5185\u5b58\u5927\u5c0f\u3002 -main.path.msg=\ - [\u6e90\u7c7b\u8def\u5f84\u4e3a "{0}"]\n\ - [\u5e93\u7c7b\u8def\u5f84\u4e3a "{1}"] -javac.err.invalid.encoding.char=\ - \u6e90\u6587\u4ef6\u7f16\u7801\u4e0e\u6b64\u5e73\u53f0\u7f16\u7801\u4e0d\u540c\u3002\u8bf7\u4f7f\u7528 -encoding \u9009\u9879\u6765\u8c03\u6574\u6587\u4ef6\u7f16\u7801\uff0c\u6216\u5e94\u7528 native2ascii \u5b9e\u7528\u7a0b\u5e8f\u6765\u5c06\u6e90\u6587\u4ef6\u8f6c\u6362\u4e3a ASCII \u7f16\u7801\u3002 +main.conflicting.options=\u4E0D\u80FD\u540C\u65F6\u4F7F\u7528\u9009\u9879{0}\u548C{1}\u3002 +main.option.already.seen={0}\u9009\u9879\u53EA\u80FD\u6307\u5B9A\u4E00\u6B21\u3002 +main.option.requires.argument=\u9009\u9879{0}\u9700\u8981\u53C2\u6570\u3002 +main.bad.debug.option={0}\u9009\u9879\u7684\u683C\u5F0F\u4E0D\u5BF9\u3002\u53EA\u80FD\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5F62\u5F0F\u6307\u5B9A "lines", "vars" \u548C "source"\u3002 +main.no.such.directory={0} \u76EE\u5F55\u4E0D\u5B58\u5728\u3002 +main.no.such.option={0}\u662F\u65E0\u6548\u9009\u9879\u6216\u53C2\u6570\u3002 +main.unknown.release=\u6B64\u7F16\u8BD1\u5668\u4E0D\u8BC6\u522B\u53D1\u884C\u7248 ''{0}''\u3002 +main.wrote=[\u5DF2\u5199\u5165{0}] +main.errors={0} \u4E2A\u9519\u8BEF +main.1error=1 \u4E2A\u9519\u8BEF +main.warnings={0} \u4E2A\u8B66\u544A +main.1warning=1 \u4E2A\u8B66\u544A +main.done_in=[\u5728 {0} \u6BEB\u79D2\u5185\u5B8C\u6210] +main.no.memory=\u7F16\u8BD1\u5668\u6240\u7528\u5185\u5B58\u4E0D\u8DB3\u3002\u8BF7\u8003\u8651\u4F7F\u7528 "-J-mx<\u6570\u5B57>" \u547D\u4EE4\u884C\u9009\u9879\u6765\u63D0\u9AD8\u5806\u5927\u5C0F\u7684\u6700\u5927\u503C\u3002 +main.stack.overflow=\u7F16\u8BD1\u5668\u6240\u7528\u5806\u6808\u7A7A\u95F4\u4E0D\u8DB3\u3002\u8BF7\u8003\u8651\u4F7F\u7528 "-J-oss<\u6570\u5B57>" \u547D\u4EE4\u884C\u9009\u9879\u6765\u63D0\u9AD8\u5206\u914D\u7ED9 Java \u5806\u6808\u7684\u5185\u5B58\u5927\u5C0F\u3002 +main.path.msg=[\u6E90\u7C7B\u8DEF\u5F84\u4E3A "{0}"]\n[\u5E93\u7C7B\u8DEF\u5F84\u4E3A "{1}"] +javac.err.invalid.encoding.char=\u6E90\u6587\u4EF6\u7F16\u7801\u4E0E\u6B64\u5E73\u53F0\u7F16\u7801\u4E0D\u540C\u3002\u8BF7\u4F7F\u7528 -encoding \u9009\u9879\u6765\u8C03\u6574\u6587\u4EF6\u7F16\u7801, \u6216\u5E94\u7528 native2ascii \u5B9E\u7528\u7A0B\u5E8F\u6765\u5C06\u6E90\u6587\u4EF6\u8F6C\u6362\u4E3A ASCII \u7F16\u7801\u3002 diff --git a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java index a1d34a41c3b..35e7286db22 100644 --- a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java +++ b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java @@ -44,7 +44,7 @@ import static java.awt.event.KeyEvent.*; * or if the keys ends with ".mnemonic", an element * representing a mnemomic keycode int or char. */ -public class JConsoleResources_ja extends JConsoleResources { +public class JConsoleResources_ja extends ListResourceBundle { /** * Returns the contents of this ResourceBundle. @@ -55,7 +55,7 @@ public class JConsoleResources_ja extends JConsoleResources { */ protected Object[][] getContents0() { Object[][] temp = new Object[][] { - // NOTE 1: The value strings in this file containing "{0}" are + // NOTE 1: The value strings in this file containing "{0}" are // processed by the java.text.MessageFormat class. Any // single quotes appearing in these strings need to be // doubled up. @@ -65,21 +65,21 @@ public class JConsoleResources_ja extends JConsoleResources { // message key. // // LOCALIZE THIS - {" 1 day"," 1 \u65e5"}, - {" 1 hour"," 1 \u6642\u9593"}, - {" 1 min"," 1 \u5206"}, - {" 1 month"," 1 \u304b\u6708"}, - {" 1 year"," 1 \u5e74"}, - {" 2 hours"," 2 \u6642\u9593"}, - {" 3 hours"," 3 \u6642\u9593"}, - {" 3 months"," 3 \u304b\u6708"}, - {" 5 min"," 5 \u5206"}, - {" 6 hours"," 6 \u6642\u9593"}, - {" 6 months"," 6 \u304b\u6708"}, - {" 7 days"," 7 \u65e5"}, - {"10 min","10 \u5206"}, - {"12 hours","12 \u6642\u9593"}, - {"30 min","30 \u5206"}, + {" 1 day"," 1\u65E5"}, + {" 1 hour"," 1\u6642\u9593"}, + {" 1 min"," 1\u5206"}, + {" 1 month"," 1\u304B\u6708"}, + {" 1 year"," 1\u5E74"}, + {" 2 hours"," 2\u6642\u9593"}, + {" 3 hours"," 3\u6642\u9593"}, + {" 3 months"," 3\u304B\u6708"}, + {" 5 min"," 5\u5206"}, + {" 6 hours"," 6\u6642\u9593"}, + {" 6 months"," 6\u304B\u6708"}, + {" 7 days"," 7\u65E5"}, + {"10 min","10\u5206"}, + {"12 hours","12\u6642\u9593"}, + {"30 min","30\u5206"}, {"<","<"}, {"<<","<<"}, {">",">"}, @@ -87,267 +87,264 @@ public class JConsoleResources_ja extends JConsoleResources { {"ACTION_INFO","ACTION_INFO"}, {"All","\u3059\u3079\u3066"}, {"Apply","\u9069\u7528"}, - {"Architecture","\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3"}, - {"Array, OpenType", "\u914d\u5217\u3001OpenType"}, - {"Array, OpenType, Numeric value viewer","\u914d\u5217\u3001OpenType\u3001\u6570\u5024\u306e\u30d3\u30e5\u30fc\u30a2"}, - {"Attribute","\u5c5e\u6027"}, - {"Attribute value","\u5c5e\u6027\u5024"}, - {"Attribute values","\u5c5e\u6027\u5024"}, - {"Attributes","\u5c5e\u6027"}, - {"Blank", "\u30d6\u30e9\u30f3\u30af"}, + {"Architecture","\u30A2\u30FC\u30AD\u30C6\u30AF\u30C1\u30E3"}, + {"Array, OpenType", "\u914D\u5217\u3001OpenType"}, + {"Array, OpenType, Numeric value viewer","\u914D\u5217\u3001OpenType\u3001\u6570\u5024\u30D3\u30E5\u30FC\u30A2"}, + {"Attribute","\u5C5E\u6027"}, + {"Attribute value","\u5C5E\u6027\u5024"}, + {"Attribute values","\u5C5E\u6027\u5024"}, + {"Attributes","\u5C5E\u6027"}, + {"Blank", "\u30D6\u30E9\u30F3\u30AF"}, {"BlockedCount WaitedCount", - "\u7dcf\u30d6\u30ed\u30c3\u30af\u6570 : {0} \u7dcf\u5f85\u6a5f\u6570 : {1}\n"}, - {"Boot class path","\u30d6\u30fc\u30c8\u30af\u30e9\u30b9\u30d1\u30b9"}, - {"BorderedComponent.moreOrLessButton.toolTip", "\u8a73\u7d30\u60c5\u5831\u3092\u8868\u793a\u3059\u308b\u304b\u3069\u3046\u304b\u5207\u308a\u66ff\u3048\u308b"}, - {"CPU Usage","CPU \u4f7f\u7528\u72b6\u6cc1"}, - {"CPUUsageFormat","CPU \u4f7f\u7528\u72b6\u6cc1: {0}%"}, - {"Cancel","\u53d6\u6d88\u3057"}, - {"Cascade", "\u91cd\u306d\u3066\u8868\u793a(C)"}, - {"Cascade.mnemonic", 'C'}, - {"Chart:", "\u56f3(C):"}, - {"Chart:.mnemonic", 'C'}, - {"Class path","\u30af\u30e9\u30b9\u30d1\u30b9"}, - {"Class","\u30af\u30e9\u30b9"}, + "\u30D6\u30ED\u30C3\u30AF\u6E08\u5408\u8A08: {0} \u5F85\u6A5F\u6E08\u5408\u8A08: {1}\n"}, + {"Boot class path","\u30D6\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9"}, + {"BorderedComponent.moreOrLessButton.toolTip", "\u8868\u793A\u3059\u308B\u60C5\u5831\u91CF\u3092\u5897\u6E1B\u3059\u308B\u30C8\u30B0\u30EB"}, + {"CPU Usage","CPU\u4F7F\u7528\u7387"}, + {"CPUUsageFormat","CPU\u4F7F\u7528\u7387: {0}%"}, + {"Cancel","\u53D6\u6D88"}, + {"Cascade", "\u91CD\u306D\u3066\u8868\u793A"}, + {"Cascade.mnemonic", "C"}, + {"Chart:", "\u30C1\u30E3\u30FC\u30C8:"}, + {"Chart:.mnemonic", "C"}, + {"Class path","\u30AF\u30E9\u30B9\u30D1\u30B9"}, + {"Class","\u30AF\u30E9\u30B9"}, {"ClassName","ClassName"}, - {"ClassTab.infoLabelFormat", "\u30ed\u30fc\u30c9: {0} \u30a2\u30f3\u30ed\u30fc\u30c9: {1} \u7dcf\u6570: {2}"}, - {"ClassTab.loadedClassesPlotter.accessibleName", "\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30af\u30e9\u30b9\u306e\u56f3\u3002"}, - {"Classes","\u30af\u30e9\u30b9"}, - {"Close","\u9589\u3058\u308b"}, - {"Column.Name", "\u540d\u524d"}, + {"ClassTab.infoLabelFormat", "\u30ED\u30FC\u30C9\u6E08: {0} \u672A\u30ED\u30FC\u30C9: {1} \u5408\u8A08: {2}"}, + {"ClassTab.loadedClassesPlotter.accessibleName", "\u30ED\u30FC\u30C9\u6E08\u30AF\u30E9\u30B9\u306E\u30C1\u30E3\u30FC\u30C8\u3002"}, + {"Classes","\u30AF\u30E9\u30B9"}, + {"Close","\u9589\u3058\u308B"}, + {"Column.Name", "\u540D\u524D"}, {"Column.PID", "PID"}, - {"Committed memory","\u78ba\u5b9a\u30e1\u30e2\u30ea"}, - {"Committed virtual memory","\u78ba\u5b9a\u4eee\u60f3\u30e1\u30e2\u30ea"}, - {"Committed", "\u78ba\u5b9a"}, - {"Compiler","\u30b3\u30f3\u30d1\u30a4\u30e9"}, + {"Committed memory","\u30B3\u30DF\u30C3\u30C8\u6E08\u30E1\u30E2\u30EA\u30FC"}, + {"Committed virtual memory","\u30B3\u30DF\u30C3\u30C8\u6E08\u4EEE\u60F3\u30E1\u30E2\u30EA\u30FC"}, + {"Committed", "\u30B3\u30DF\u30C3\u30C8\u6E08"}, + {"Compiler","\u30B3\u30F3\u30D1\u30A4\u30E9"}, {"CompositeData","CompositeData"}, - {"Config","\u69cb\u6210"}, - {"Connect", "\u63a5\u7d9a(C)"}, - {"Connect.mnemonic", 'C'}, - {"Connect...","\u63a5\u7d9a..."}, - {"ConnectDialog.connectButton.toolTip", "Java \u4eee\u60f3\u30de\u30b7\u30f3\u306b\u63a5\u7d9a\u3059\u308b"}, - {"ConnectDialog.accessibleDescription", "\u30ed\u30fc\u30ab\u30eb\u307e\u305f\u306f\u30ea\u30e2\u30fc\u30c8\u306e Java \u4eee\u60f3\u30de\u30b7\u30f3\u306b\u65b0\u898f\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e\u30c0\u30a4\u30a2\u30ed\u30b0"}, - {"ConnectDialog.masthead.accessibleName", "\u30de\u30b9\u30c8\u30d8\u30c3\u30c9\u306e\u30b0\u30e9\u30d5\u30a3\u30c3\u30af"}, - {"ConnectDialog.masthead.title", "\u65b0\u898f\u63a5\u7d9a"}, - {"ConnectDialog.statusBar.accessibleName", "\u30b9\u30c6\u30fc\u30bf\u30b9\u30d0\u30fc"}, - {"ConnectDialog.title", "JConsole: \u65b0\u898f\u63a5\u7d9a"}, - {"Connected. Click to disconnect.","\u63a5\u7d9a\u3055\u308c\u307e\u3057\u305f\u3002\u5207\u65ad\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Connection failed","\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f"}, - {"Connection", "\u63a5\u7d9a(C)"}, - {"Connection.mnemonic", 'C'}, - {"Connection name", "\u63a5\u7d9a\u540d"}, - {"ConnectionName (disconnected)","{0} (\u63a5\u7d9a\u89e3\u9664)"}, - {"Constructor","\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf"}, - {"Current classes loaded", "\u73fe\u5728\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u30af\u30e9\u30b9"}, - {"Current heap size","\u73fe\u5728\u306e\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba"}, - {"Current value","\u73fe\u5728\u306e\u5024: {0}"}, - {"Create", "\u4f5c\u6210"}, - {"Daemon threads","\u30c7\u30fc\u30e2\u30f3\u30b9\u30ec\u30c3\u30c9"}, - {"Disconnected. Click to connect.","\u5207\u65ad\u3055\u308c\u307e\u3057\u305f\u3002\u63a5\u7d9a\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, - {"Double click to expand/collapse","\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u5c55\u958b/\u6298\u308a\u305f\u305f\u307f"}, - {"Double click to visualize", "\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u8868\u793a"}, - {"Description", "\u8aac\u660e"}, - {"Description: ", "\u8aac\u660e: "}, - {"Descriptor", "\u8a18\u8ff0\u5b50"}, - {"Details", "\u8a73\u7d30"}, - {"Detect Deadlock", "\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3092\u691c\u51fa\u3059\u308b(D)"}, - {"Detect Deadlock.mnemonic", 'D'}, - {"Detect Deadlock.toolTip", "\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3057\u305f\u30b9\u30ec\u30c3\u30c9\u3092\u691c\u51fa\u3059\u308b"}, - {"Dimension is not supported:","\u5927\u304d\u3055\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093:"}, - {"Discard chart", "\u56f3\u3092\u7834\u68c4\u3059\u308b"}, - {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} \u65e5 |1.0<{0,number,integer} \u65e5 }{1,choice,0<{1,number,integer} \u6642\u9593 |1#{1,number,integer} \u6642\u9593 |1<{1,number,integer} \u6642\u9593 }{2,choice,0<{2,number,integer} \u5206 |1#{2,number,integer} \u5206 |1.0<{2,number,integer} \u5206}"}, + {"Config","\u69CB\u6210"}, + {"Connect", "\u63A5\u7D9A"}, + {"Connect.mnemonic", "C"}, + {"Connect...","\u63A5\u7D9A..."}, + {"ConnectDialog.connectButton.toolTip", "Java\u4EEE\u60F3\u30DE\u30B7\u30F3\u306B\u63A5\u7D9A"}, + {"ConnectDialog.accessibleDescription", "\u30ED\u30FC\u30AB\u30EB\u307E\u305F\u306F\u30EA\u30E2\u30FC\u30C8\u306EJava\u4EEE\u60F3\u30DE\u30B7\u30F3\u3078\u306E\u65B0\u898F\u63A5\u7D9A\u3092\u884C\u3046\u30C0\u30A4\u30A2\u30ED\u30B0"}, + {"ConnectDialog.masthead.accessibleName", "\u30DE\u30B9\u30C8\u30D8\u30C3\u30C9\u56F3\u5F62"}, + {"ConnectDialog.masthead.title", "\u65B0\u898F\u63A5\u7D9A"}, + {"ConnectDialog.statusBar.accessibleName", "\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u30D0\u30FC"}, + {"ConnectDialog.title", "JConsole: \u65B0\u898F\u63A5\u7D9A"}, + {"Connected. Click to disconnect.","\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u5207\u65AD\u3057\u307E\u3059\u3002"}, + {"Connection failed","\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F"}, + {"Connection", "\u63A5\u7D9A"}, + {"Connection.mnemonic", "C"}, + {"Connection name", "\u63A5\u7D9A\u540D"}, + {"ConnectionName (disconnected)","{0} (\u5207\u65AD\u6E08)"}, + {"Constructor","\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF"}, + {"Current classes loaded", "\u30ED\u30FC\u30C9\u6E08\u306E\u73FE\u5728\u306E\u30AF\u30E9\u30B9"}, + {"Current heap size","\u73FE\u5728\u306E\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA"}, + {"Current value","\u73FE\u5728\u5024: {0}"}, + {"Create", "\u4F5C\u6210"}, + {"Daemon threads","\u30C7\u30FC\u30E2\u30F3\u30FB\u30B9\u30EC\u30C3\u30C9"}, + {"Disconnected. Click to connect.","\u5207\u65AD\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u63A5\u7D9A\u3057\u307E\u3059\u3002"}, + {"Double click to expand/collapse","\u5C55\u958B\u307E\u305F\u306F\u7E2E\u5C0F\u3059\u308B\u306B\u306F\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Double click to visualize", "\u8996\u899A\u5316\u3059\u308B\u306B\u306F\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044"}, + {"Description", "\u8AAC\u660E"}, + {"Description: ", "\u8AAC\u660E: "}, + {"Descriptor", "\u8A18\u8FF0\u5B50"}, + {"Details", "\u8A73\u7D30"}, + {"Detect Deadlock", "\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u306E\u691C\u51FA"}, + {"Detect Deadlock.mnemonic", "D"}, + {"Detect Deadlock.toolTip", "\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u6E08\u30B9\u30EC\u30C3\u30C9\u306E\u691C\u51FA"}, + {"Dimension is not supported:","\u6B21\u5143\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093:"}, + {"Discard chart", "\u30C1\u30E3\u30FC\u30C8\u306E\u7834\u68C4"}, + {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer}\u65E5|1.0<{0,number,integer}\u65E5}{1,choice,0<{1,number,integer}\u6642\u9593|1#{1,number,integer}\u6642\u9593|1<{1,number,integer}\u6642\u9593}{2,choice,0<{2,number,integer}\u5206|1#{2,number,integer}\u5206|1.0<{2,number,integer}\u5206}"}, - {"DurationHoursMinutes","{0,choice,1#{0,number,integer} \u6642\u9593 |1<{0,number,integer} \u6642\u9593 }{1,choice,0<{1,number,integer} \u5206 |1#{1,number,integer} \u5206 |1.0<{1,number,integer} \u5206}"}, + {"DurationHoursMinutes","{0,choice,1#{0,number,integer}\u6642\u9593|1<{0,number,integer}\u6642\u9593}{1,choice,0<{1,number,integer}\u5206|1#{1,number,integer}\u5206|1.0<{1,number,integer}\u5206}"}, - {"DurationMinutes","{0,choice,1#{0,number,integer} \u5206 |1.0<{0,number,integer} \u5206}"}, - {"DurationSeconds","{0} \u79d2"}, - {"Empty array", "\u914d\u5217\u3092\u7a7a\u306b\u3059\u308b"}, - {"Empty opentype viewer", "OpenType \u30d3\u30e5\u30fc\u30a2\u3092\u7a7a\u306b\u3059\u308b"}, - {"Error","\u30a8\u30e9\u30fc"}, - {"Error: MBeans already exist","\u30a8\u30e9\u30fc : MBean \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059"}, - {"Error: MBeans do not exist","\u30a8\u30e9\u30fc : MBean \u306f\u5b58\u5728\u3057\u307e\u305b\u3093"}, - {"Error:","\u30a8\u30e9\u30fc:"}, - {"Event","\u30a4\u30d9\u30f3\u30c8"}, - {"Exit", "\u7d42\u4e86(X)"}, - {"Exit.mnemonic", 'x'}, - {"Fail to load plugin", "\u8b66\u544a: \u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}"}, - {"FileChooser.fileExists.cancelOption", "\u30ad\u30e3\u30f3\u30bb\u30eb"}, - {"FileChooser.fileExists.message", "

    \u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059:
    {0}
    \u7f6e\u63db\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?"}, - {"FileChooser.fileExists.okOption", "\u7f6e\u63db"}, - {"FileChooser.fileExists.title", "\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u3059"}, - {"FileChooser.savedFile", "\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3057\u307e\u3057\u305f:
    {0}
    ({1} \u30d0\u30a4\u30c8)"}, - {"FileChooser.saveFailed.message", "
    \u30d5\u30a1\u30a4\u30eb\u3078\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f:
    {0}
    {1}"}, - {"FileChooser.saveFailed.title", "\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f"}, - {"Free physical memory","\u7a7a\u304d\u7269\u7406\u30e1\u30e2\u30ea"}, - {"Free swap space","\u7a7a\u304d\u30b9\u30ef\u30c3\u30d7\u30b9\u30da\u30fc\u30b9"}, - {"Garbage collector","\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30bf"}, + {"DurationMinutes","{0,choice,1#{0,number,integer}\u5206|1.0<{0,number,integer}\u5206}"}, + {"DurationSeconds","{0}\u79D2"}, + {"Empty array", "\u7A7A\u306E\u914D\u5217"}, + {"Empty opentype viewer", "\u7A7A\u306Eopentype\u30D3\u30E5\u30FC\u30A2"}, + {"Error","\u30A8\u30E9\u30FC"}, + {"Error: MBeans already exist","\u30A8\u30E9\u30FC: MBeans\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"}, + {"Error: MBeans do not exist","\u30A8\u30E9\u30FC: MBeans\u306F\u5B58\u5728\u3057\u307E\u305B\u3093"}, + {"Error:","\u30A8\u30E9\u30FC:"}, + {"Event","\u30A4\u30D9\u30F3\u30C8"}, + {"Exit", "\u7D42\u4E86"}, + {"Exit.mnemonic", "X"}, + {"Fail to load plugin", "\u8B66\u544A: \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {0}"}, + {"FileChooser.fileExists.cancelOption", "\u53D6\u6D88"}, + {"FileChooser.fileExists.message", "
    \u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059:
    {0}
    \u7F6E\u63DB\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\u3002"}, + {"FileChooser.fileExists.okOption", "\u7F6E\u63DB"}, + {"FileChooser.fileExists.title", "\u30D5\u30A1\u30A4\u30EB\u304C\u5B58\u5728\u3057\u3066\u3044\u307E\u3059"}, + {"FileChooser.savedFile", "\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3057\u305F:
    {0}
    ({1}\u30D0\u30A4\u30C8)"}, + {"FileChooser.saveFailed.message", "
    \u30D5\u30A1\u30A4\u30EB\u3078\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F:
    {0}
    {1}"}, + {"FileChooser.saveFailed.title", "\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F"}, + {"Free physical memory","\u7A7A\u304D\u7269\u7406\u30E1\u30E2\u30EA\u30FC"}, + {"Free swap space","\u7A7A\u304D\u30B9\u30EF\u30C3\u30D7\u30FB\u30B9\u30DA\u30FC\u30B9"}, + {"Garbage collector","\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30BF"}, {"GTK","GTK"}, - {"GcInfo","\u540d\u524d = ''{0}'', \u30b3\u30ec\u30af\u30b7\u30e7\u30f3 = {1,choice,-1#\u5229\u7528\u4e0d\u53ef|0#{1,number,integer}}, \u7dcf\u7d4c\u904e\u6642\u9593 = {2}"}, - {"GC time","GC \u6642\u9593"}, - {"GC time details","{1} \u306e {0} ({2} \u30b3\u30ec\u30af\u30b7\u30e7\u30f3)"}, - {"Heap Memory Usage","\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u306e\u4f7f\u7528\u72b6\u6cc1"}, - {"Heap", "\u30d2\u30fc\u30d7"}, - {"Help.AboutDialog.accessibleDescription", "JConsole \u304a\u3088\u3073 JDK \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u3092\u542b\u3080\u30c0\u30a4\u30a2\u30ed\u30b0"}, - {"Help.AboutDialog.jConsoleVersion", "JConsole \u30d0\u30fc\u30b8\u30e7\u30f3:
    {0}"}, - {"Help.AboutDialog.javaVersion", "Java VM \u30d0\u30fc\u30b8\u30e7\u30f3:
    {0}"}, - {"Help.AboutDialog.masthead.accessibleName", "\u30de\u30b9\u30c8\u30d8\u30c3\u30c9\u306e\u30b0\u30e9\u30d5\u30a3\u30c3\u30af"}, - {"Help.AboutDialog.masthead.title", "JConsole \u306b\u3064\u3044\u3066"}, - {"Help.AboutDialog.title", "JConsole: \u88fd\u54c1\u60c5\u5831"}, - {"Help.AboutDialog.userGuideLink", "JConsole \u30e6\u30fc\u30b6\u30fc\u30ac\u30a4\u30c9:
    {0}"}, - {"Help.AboutDialog.userGuideLink.mnemonic", 'U'}, - {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/MonitoringGuide/toc.html"}, - {"HelpMenu.About.title", "JConsole \u306b\u3064\u3044\u3066(A)"}, - {"HelpMenu.About.title.mnemonic", 'A'}, - {"HelpMenu.UserGuide.title", "\u30aa\u30f3\u30e9\u30a4\u30f3\u30e6\u30fc\u30b6\u30fc\u30ac\u30a4\u30c9(U)"}, - {"HelpMenu.UserGuide.title.mnemonic", 'U'}, - {"HelpMenu.title", "\u30d8\u30eb\u30d7(H)"}, - {"HelpMenu.title.mnemonic", 'H'}, - {"Hotspot MBeans...", "Hotspot MBean..."}, - {"Hotspot MBeans....mnemonic", 'H'}, - {"Hotspot MBeans.dialog.accessibleDescription", "Hotspot MBean \u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30c0\u30a4\u30a2\u30ed\u30b0"}, - {"Impact","\u5f71\u97ff"}, - {"Info","\u60c5\u5831"}, - {"INFO","\u60c5\u5831"}, - {"Invalid plugin path", "\u8b66\u544a: \u30d7\u30e9\u30b0\u30a4\u30f3\u30d1\u30b9\u304c\u7121\u52b9\u3067\u3059: {0}"}, - {"Invalid URL", "\u7121\u52b9\u306a URL: {0}"}, - {"Is","Is"}, + {"GcInfo","\u540D\u524D= ''{0}''\u3001\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3= {1,choice,-1#\u3042\u308A\u307E\u305B\u3093|0#{1,number,integer}\u500B}\u3001\u5408\u8A08\u6D88\u8CBB\u6642\u9593= {2}"}, + {"GC time","GC\u6642\u9593"}, + {"GC time details","{1}\u3067{0} ({2}\u500B\u306E\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3)"}, + {"Heap Memory Usage","\u30D2\u30FC\u30D7\u30FB\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387"}, + {"Heap", "\u30D2\u30FC\u30D7"}, + {"Help.AboutDialog.accessibleDescription", "JConsole\u3068JDK\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u3064\u3044\u3066\u306E\u60C5\u5831\u3092\u542B\u3080\u30C0\u30A4\u30A2\u30ED\u30B0"}, + {"Help.AboutDialog.jConsoleVersion", "JConsole\u30D0\u30FC\u30B8\u30E7\u30F3:
    {0}"}, + {"Help.AboutDialog.javaVersion", "Java VM\u30D0\u30FC\u30B8\u30E7\u30F3:
    {0}"}, + {"Help.AboutDialog.masthead.accessibleName", "\u30DE\u30B9\u30C8\u30D8\u30C3\u30C9\u56F3\u5F62"}, + {"Help.AboutDialog.masthead.title", "JConsole\u306B\u3064\u3044\u3066"}, + {"Help.AboutDialog.title", "JConsole: \u8A73\u7D30"}, + {"Help.AboutDialog.userGuideLink", "JConsole\u30E6\u30FC\u30B6\u30FC\u30FB\u30AC\u30A4\u30C9:
    {0}"}, + {"Help.AboutDialog.userGuideLink.mnemonic", "U"}, + {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"}, + {"HelpMenu.About.title", "JConsole\u306B\u3064\u3044\u3066"}, + {"HelpMenu.About.title.mnemonic", "A"}, + {"HelpMenu.UserGuide.title", "\u30AA\u30F3\u30E9\u30A4\u30F3\u30FB\u30E6\u30FC\u30B6\u30FC\u30FB\u30AC\u30A4\u30C9"}, + {"HelpMenu.UserGuide.title.mnemonic", "U"}, + {"HelpMenu.title", "\u30D8\u30EB\u30D7"}, + {"HelpMenu.title.mnemonic", "H"}, + {"Hotspot MBeans...", "Hotspot MBeans..."}, + {"Hotspot MBeans....mnemonic", "H"}, + {"Hotspot MBeans.dialog.accessibleDescription", "Hotspot MBeans\u306E\u7BA1\u7406\u7528\u30C0\u30A4\u30A2\u30ED\u30B0"}, + {"Impact","\u5F71\u97FF"}, + {"Info","\u60C5\u5831"}, + {"INFO","\u60C5\u5831"}, + {"Invalid plugin path", "\u8B66\u544A: \u7121\u52B9\u306A\u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30D1\u30B9: {0}"}, + {"Invalid URL", "\u7121\u52B9\u306AURL: {0}"}, + {"Is","\u6B21\u306B\u4E00\u81F4\u3059\u308B"}, {"Java Monitoring & Management Console", "Java Monitoring & Management Console"}, {"JConsole: ","JConsole: {0}"}, - {"JConsole version","JConsole \u30d0\u30fc\u30b8\u30e7\u30f3 \"{0}\""}, + {"JConsole version","JConsole\u30D0\u30FC\u30B8\u30E7\u30F3\"{0}\""}, {"JConsole.accessibleDescription", "Java Monitoring & Management Console"}, - {"JIT compiler","JIT \u30b3\u30f3\u30d1\u30a4\u30e9"}, - {"Java Virtual Machine","Java \u4eee\u60f3\u30de\u30b7\u30f3"}, + {"JIT compiler","JIT\u30B3\u30F3\u30D1\u30A4\u30E9"}, + {"Java Virtual Machine","Java\u4EEE\u60F3\u30DE\u30B7\u30F3"}, {"Java","Java"}, - {"Library path","\u30e9\u30a4\u30d6\u30e9\u30ea\u30d1\u30b9"}, - {"Listeners","\u30ea\u30b9\u30ca\u30fc"}, - {"Live Threads","\u30e9\u30a4\u30d6\u30b9\u30ec\u30c3\u30c9"}, - {"Loaded", "\u30ed\u30fc\u30c9\u6e08\u307f"}, - {"Local Process:", "\u30ed\u30fc\u30ab\u30eb\u30d7\u30ed\u30bb\u30b9(L):"}, - {"Local Process:.mnemonic", 'L'}, - {"Look and Feel","Look & Feel"}, + {"Library path","\u30E9\u30A4\u30D6\u30E9\u30EA\u30FB\u30D1\u30B9"}, + {"Listeners","\u30EA\u30B9\u30CA\u30FC"}, + {"Live Threads","\u5B9F\u884C\u4E2D\u306E\u30B9\u30EC\u30C3\u30C9"}, + {"Loaded", "\u30ED\u30FC\u30C9\u6E08"}, + {"Local Process:", "\u30ED\u30FC\u30AB\u30EB\u30FB\u30D7\u30ED\u30BB\u30B9:"}, + {"Local Process:.mnemonic", "L"}, + {"Look and Feel","Look&Feel"}, {"Masthead.font", "Dialog-PLAIN-25"}, - {"Management Not Enabled","\u6ce8: \u7ba1\u7406\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002"}, - {"Management Will Be Enabled","\u6ce8: \u7ba1\u7406\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002"}, + {"Management Not Enabled","\u6CE8\u610F: \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306F\u3053\u306E\u30D7\u30ED\u30BB\u30B9\u3067\u306F\u6709\u52B9\u5316\u3055\u308C\u307E\u305B\u3093\u3002"}, + {"Management Will Be Enabled","\u6CE8\u610F: \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306F\u3053\u306E\u30D7\u30ED\u30BB\u30B9\u3067\u6709\u52B9\u5316\u3055\u308C\u307E\u3059\u3002"}, {"MBeanAttributeInfo","MBeanAttributeInfo"}, {"MBeanInfo","MBeanInfo"}, {"MBeanNotificationInfo","MBeanNotificationInfo"}, {"MBeanOperationInfo","MBeanOperationInfo"}, - {"MBeans","MBean"}, - {"MBeansTab.clearNotificationsButton", "\u6d88\u53bb(C)"}, - {"MBeansTab.clearNotificationsButton.mnemonic", 'C'}, - {"MBeansTab.clearNotificationsButton.toolTip", "\u901a\u77e5\u3092\u6d88\u53bb\u3059\u308b"}, - {"MBeansTab.compositeNavigationMultiple", "\u8907\u5408\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 {0}/{1}"}, - {"MBeansTab.compositeNavigationSingle", "\u8907\u5408\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3"}, - {"MBeansTab.refreshAttributesButton", "\u66f4\u65b0(R)"}, - {"MBeansTab.refreshAttributesButton.mnemonic", 'R'}, - {"MBeansTab.refreshAttributesButton.toolTip", "\u5c5e\u6027\u3092\u66f4\u65b0\u3059\u308b"}, - {"MBeansTab.subscribeNotificationsButton", "\u767b\u9332(S)"}, - {"MBeansTab.subscribeNotificationsButton.mnemonic", 'S'}, - {"MBeansTab.subscribeNotificationsButton.toolTip", "\u901a\u77e5\u306e\u5f85\u6a5f\u3092\u958b\u59cb"}, - {"MBeansTab.tabularNavigationMultiple", "\u8868\u5f62\u5f0f\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 {0}/{1}"}, - {"MBeansTab.tabularNavigationSingle", "\u8868\u5f62\u5f0f\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3"}, - {"MBeansTab.unsubscribeNotificationsButton", "\u767b\u9332\u89e3\u9664(U)"}, - {"MBeansTab.unsubscribeNotificationsButton.mnemonic", 'U'}, - {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u901a\u77e5\u306e\u5f85\u6a5f\u3092\u505c\u6b62"}, - {"Manage Hotspot MBeans in: ", "Hotspot MBean \u3092\u7ba1\u7406: "}, + {"MBeans","MBeans"}, + {"MBeansTab.clearNotificationsButton", "\u30AF\u30EA\u30A2"}, + {"MBeansTab.clearNotificationsButton.mnemonic", "C"}, + {"MBeansTab.clearNotificationsButton.toolTip", "\u901A\u77E5\u306E\u30AF\u30EA\u30A2"}, + {"MBeansTab.compositeNavigationMultiple", "\u30B3\u30F3\u30DD\u30B8\u30C3\u30C8\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3{0}/{1}"}, + {"MBeansTab.compositeNavigationSingle", "\u30B3\u30F3\u30DD\u30B8\u30C3\u30C8\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3"}, + {"MBeansTab.refreshAttributesButton", "\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5"}, + {"MBeansTab.refreshAttributesButton.mnemonic", "R"}, + {"MBeansTab.refreshAttributesButton.toolTip", "\u5C5E\u6027\u306E\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5"}, + {"MBeansTab.subscribeNotificationsButton", "\u30B5\u30D6\u30B9\u30AF\u30E9\u30A4\u30D6"}, + {"MBeansTab.subscribeNotificationsButton.mnemonic", "S"}, + {"MBeansTab.subscribeNotificationsButton.toolTip", "\u901A\u77E5\u30EA\u30B9\u30CB\u30F3\u30B0\u306E\u958B\u59CB"}, + {"MBeansTab.tabularNavigationMultiple", "\u30BF\u30D6\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3{0}/{1}"}, + {"MBeansTab.tabularNavigationSingle", "\u30BF\u30D6\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3"}, + {"MBeansTab.unsubscribeNotificationsButton", "\u30B5\u30D6\u30B9\u30AF\u30E9\u30A4\u30D6\u89E3\u9664"}, + {"MBeansTab.unsubscribeNotificationsButton.mnemonic", "U"}, + {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u901A\u77E5\u30EA\u30B9\u30CB\u30F3\u30B0\u306E\u505C\u6B62"}, + {"Manage Hotspot MBeans in: ", "Hotspot MBeans\u306E\u7BA1\u7406: "}, {"Max","\u6700\u5927"}, - {"Maximum heap size","\u6700\u5927\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba"}, - {"Memory","\u30e1\u30e2\u30ea"}, - {"MemoryPoolLabel", "\u30e1\u30e2\u30ea\u30d7\u30fc\u30eb \"{0}\""}, - {"MemoryTab.heapPlotter.accessibleName", "\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u30fc\u306e\u4f7f\u7528\u72b6\u6cc1\u306e\u56f3\u3002"}, - {"MemoryTab.infoLabelFormat", "\u4f7f\u7528\u6e08\u307f: {0} \u78ba\u5b9a: {1} \u6700\u5927: {2}"}, - {"MemoryTab.nonHeapPlotter.accessibleName", "\u975e\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u30fc\u306e\u4f7f\u7528\u72b6\u6cc1\u306e\u56f3\u3002"}, - {"MemoryTab.poolChart.aboveThreshold", "{0} \u306e\u3057\u304d\u3044\u5024\u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002\n"}, - {"MemoryTab.poolChart.accessibleName", "\u30e1\u30e2\u30ea\u30fc\u30d7\u30fc\u30eb\u306e\u4f7f\u7528\u72b6\u6cc1\u306e\u56f3\u3002"}, - {"MemoryTab.poolChart.belowThreshold", "{0} \u306e\u3057\u304d\u3044\u5024\u3092\u4e0b\u56de\u3063\u3066\u3044\u307e\u3059\u3002\n"}, - {"MemoryTab.poolPlotter.accessibleName", "{0} \u30e1\u30e2\u30ea\u30fc\u306e\u4f7f\u7528\u72b6\u6cc1\u306e\u56f3\u3002"}, - {"Message","\u30e1\u30c3\u30bb\u30fc\u30b8"}, - {"Method successfully invoked", "\u30e1\u30bd\u30c3\u30c9\u306f\u6b63\u5e38\u306b\u8d77\u52d5\u3055\u308c\u307e\u3057\u305f"}, - {"Minimize All", "\u3059\u3079\u3066\u3092\u30a2\u30a4\u30b3\u30f3\u5316(M)"}, - {"Minimize All.mnemonic", 'M'}, - {"Minus Version", "\u3053\u308c\u306f {0} \u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u3067\u3059"}, + {"Maximum heap size","\u6700\u5927\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA"}, + {"Memory","\u30E1\u30E2\u30EA\u30FC"}, + {"MemoryPoolLabel", "\u30E1\u30E2\u30EA\u30FC\u30FB\u30D7\u30FC\u30EB\"{0}\""}, + {"MemoryTab.heapPlotter.accessibleName", "\u30D2\u30FC\u30D7\u7528\u306E\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387\u30C1\u30E3\u30FC\u30C8\u3002"}, + {"MemoryTab.infoLabelFormat", "\u4F7F\u7528\u6E08: {0} \u30B3\u30DF\u30C3\u30C8\u6E08: {1} \u6700\u5927: {2}"}, + {"MemoryTab.nonHeapPlotter.accessibleName", "\u975E\u30D2\u30FC\u30D7\u7528\u306E\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387\u30C1\u30E3\u30FC\u30C8\u3002"}, + {"MemoryTab.poolChart.aboveThreshold", "{0}\u306E\u3057\u304D\u3044\u5024\u3088\u308A\u4E0A\u3067\u3059\u3002\n"}, + {"MemoryTab.poolChart.accessibleName", "\u30E1\u30E2\u30EA\u30FC\u30FB\u30D7\u30FC\u30EB\u4F7F\u7528\u7387\u30C1\u30E3\u30FC\u30C8\u3002"}, + {"MemoryTab.poolChart.belowThreshold", "{0}\u306E\u3057\u304D\u3044\u5024\u3088\u308A\u4E0B\u3067\u3059\u3002\n"}, + {"MemoryTab.poolPlotter.accessibleName", "{0}\u306E\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387\u30C1\u30E3\u30FC\u30C8\u3002"}, + {"Message","\u30E1\u30C3\u30BB\u30FC\u30B8"}, + {"Method successfully invoked", "\u30E1\u30BD\u30C3\u30C9\u304C\u6B63\u5E38\u306B\u8D77\u52D5\u3055\u308C\u307E\u3057\u305F"}, + {"Minimize All", "\u3059\u3079\u3066\u6700\u5C0F\u5316"}, + {"Minimize All.mnemonic", "M"}, + {"Minus Version", "\u3053\u308C\u306F{0}\u306E\u30D0\u30FC\u30B8\u30E7\u30F3{1}\u3067\u3059"}, {"Monitor locked", - " - \u30ed\u30c3\u30af\u3055\u308c\u305f {0}\n"}, + " - \u30ED\u30C3\u30AF\u6E08{0}\n"}, {"Motif","Motif"}, - {"Name Build and Mode","{0} (\u30d3\u30eb\u30c9 {1}, {2})"}, - {"Name and Build","{0} (\u30d3\u30eb\u30c9 {1})"}, - {"Name","\u540d\u524d"}, - {"Name: ","\u540d\u524d: "}, + {"Name Build and Mode","{0} (\u30D3\u30EB\u30C9{1}, {2})"}, + {"Name and Build","{0} (\u30D3\u30EB\u30C9{1})"}, + {"Name","\u540D\u524D"}, + {"Name: ","\u540D\u524D: "}, {"Name State", - "\u540d\u524d: {0}\n" + - "\u72b6\u614b: {1}\n"}, + "\u540D\u524D: {0}\n\u72B6\u614B: {1}\n"}, {"Name State LockName", - "\u540d\u524d: {0}\n" + - "\u72b6\u614b: {1} ({2} \u4e0a)\n"}, + "\u540D\u524D: {0}\n\u72B6\u614B: {2}\u306E{1}\n"}, {"Name State LockName LockOwner", - "\u540d\u524d: {0}\n" + - "\u72b6\u614b: {1} ({2} \u4e0a) \u6240\u6709\u8005: {3}\n"}, - {"New Connection...", "\u65b0\u898f\u63a5\u7d9a(N)..."}, - {"New Connection....mnemonic", 'N'}, - {"New value applied","\u65b0\u3057\u3044\u5024\u304c\u9069\u7528\u3055\u308c\u307e\u3057\u305f"}, - {"No attribute selected","\u5c5e\u6027\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"No deadlock detected","\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u306f\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f"}, - {"No value selected","\u5024\u304c\u9078\u629e\u3055\u308c\u3066\u307e\u305b\u3093"}, - {"Non-Heap Memory Usage","\u975e\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u306e\u4f7f\u7528\u72b6\u6cc1"}, - {"Non-Heap", "\u975e\u30d2\u30fc\u30d7"}, - {"Not Yet Implemented","\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"Not a valid event broadcaster", "\u6709\u52b9\u306a\u30a4\u30d9\u30f3\u30c8\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8\u5143\u3067\u306f\u3042\u308a\u307e\u305b\u3093"}, - {"Notification","\u901a\u77e5"}, - {"Notification buffer","\u901a\u77e5\u30d0\u30c3\u30d5\u30a1\u30fc"}, - {"Notifications","\u901a\u77e5"}, + "\u540D\u524D: {0}\n\u72B6\u614B: {2}\u306E{1}\u3001\u6240\u6709\u8005: {3}\n"}, + {"New Connection...", "\u65B0\u898F\u63A5\u7D9A..."}, + {"New Connection....mnemonic", "N"}, + {"New value applied","\u9069\u7528\u3055\u308C\u305F\u65B0\u898F\u5024"}, + {"No attribute selected","\u5C5E\u6027\u304C\u9078\u629E\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"}, + {"No deadlock detected","\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u304C\u691C\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"}, + {"No value selected","\u5024\u304C\u9078\u629E\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"}, + {"Non-Heap Memory Usage","\u975E\u30D2\u30FC\u30D7\u30FB\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387"}, + {"Non-Heap", "\u975E\u30D2\u30FC\u30D7"}, + {"Not Yet Implemented","\u307E\u3060\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"Not a valid event broadcaster", "\u6709\u52B9\u306A\u30A4\u30D9\u30F3\u30C8\u30FB\u30D6\u30ED\u30FC\u30C9\u30AD\u30E3\u30B9\u30BF\u3067\u306F\u3042\u308A\u307E\u305B\u3093"}, + {"Notification","\u901A\u77E5"}, + {"Notification buffer","\u901A\u77E5\u30D0\u30C3\u30D5\u30A1"}, + {"Notifications","\u901A\u77E5"}, {"NotifTypes", "NotifTypes"}, - {"Number of Threads","\u30b9\u30ec\u30c3\u30c9\u6570"}, - {"Number of Loaded Classes","\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30af\u30e9\u30b9\u306e\u6570"}, - {"Number of processors","\u30d7\u30ed\u30bb\u30c3\u30b5\u306e\u6570"}, + {"Number of Threads","\u30B9\u30EC\u30C3\u30C9\u6570"}, + {"Number of Loaded Classes","\u30ED\u30FC\u30C9\u6E08\u30AF\u30E9\u30B9\u6570"}, + {"Number of processors","\u30D7\u30ED\u30BB\u30C3\u30B5\u6570"}, {"ObjectName","ObjectName"}, - {"Operating System","\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0"}, - {"Operation","\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3"}, - {"Operation invocation","\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u547c\u3073\u51fa\u3057"}, - {"Operation return value", "\u64cd\u4f5c\u306e\u623b\u308a\u5024"}, - {"Operations","\u64cd\u4f5c"}, + {"Operating System","\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30FB\u30B7\u30B9\u30C6\u30E0"}, + {"Operation","\u64CD\u4F5C"}, + {"Operation invocation","\u64CD\u4F5C\u306E\u547C\u51FA\u3057"}, + {"Operation return value", "\u64CD\u4F5C\u306E\u623B\u308A\u5024"}, + {"Operations","\u64CD\u4F5C"}, {"Overview","\u6982\u8981"}, - {"OverviewPanel.plotter.accessibleName", "{0} \u306e\u56f3\u3002"}, - {"Parameter", "\u30d1\u30e9\u30e1\u30fc\u30bf"}, - {"Password: ", "\u30d1\u30b9\u30ef\u30fc\u30c9(P): "}, - {"Password: .mnemonic", 'P'}, - {"Password.accessibleName", "\u30d1\u30b9\u30ef\u30fc\u30c9"}, - {"Peak","\u30d4\u30fc\u30af"}, - {"Perform GC", "GC \u306e\u5b9f\u884c"}, - {"Perform GC.mnemonic", 'G'}, - {"Perform GC.toolTip", "\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u8981\u6c42\u3059\u308b"}, - {"Plotter.accessibleName", "\u56f3"}, + {"OverviewPanel.plotter.accessibleName", "{0}\u306E\u30C1\u30E3\u30FC\u30C8\u3002"}, + {"Parameter", "\u30D1\u30E9\u30E1\u30FC\u30BF"}, + {"Password: ", "\u30D1\u30B9\u30EF\u30FC\u30C9: "}, + {"Password: .mnemonic", "P"}, + {"Password.accessibleName", "\u30D1\u30B9\u30EF\u30FC\u30C9"}, + {"Peak","\u30D4\u30FC\u30AF"}, + {"Perform GC", "GC\u306E\u5B9F\u884C"}, + {"Perform GC.mnemonic", "G"}, + {"Perform GC.toolTip", "\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u306E\u30EA\u30AF\u30A8\u30B9\u30C8"}, + {"Plotter.accessibleName", "\u30C1\u30E3\u30FC\u30C8"}, {"Plotter.accessibleName.keyAndValue", "{0}={1}\n"}, - {"Plotter.accessibleName.noData", "\u30d7\u30ed\u30c3\u30c8\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, - {"Plotter.saveAsMenuItem", "\u30c7\u30fc\u30bf\u3092\u5225\u540d\u3067\u4fdd\u5b58(a)..."}, - {"Plotter.saveAsMenuItem.mnemonic", 'a'}, - {"Plotter.timeRangeMenu", "\u6642\u9593\u7bc4\u56f2(T)"}, - {"Plotter.timeRangeMenu.mnemonic", 'T'}, - {"Problem adding listener","\u30ea\u30b9\u30ca\u30fc\u8ffd\u52a0\u6642\u306e\u554f\u984c"}, - {"Problem displaying MBean", "MBean \u8868\u793a\u6642\u306e\u554f\u984c"}, - {"Problem invoking", "\u547c\u3073\u51fa\u3057\u6642\u306e\u554f\u984c"}, - {"Problem removing listener","\u30ea\u30b9\u30ca\u30fc\u524a\u9664\u6642\u306e\u554f\u984c"}, - {"Problem setting attribute","\u5c5e\u6027\u8a2d\u5b9a\u6642\u306e\u554f\u984c"}, - {"Process CPU time","\u30d7\u30ed\u30bb\u30b9 CPU \u6642\u9593"}, + {"Plotter.accessibleName.noData", "\u30C7\u30FC\u30BF\u304C\u30D7\u30ED\u30C3\u30C8\u3055\u308C\u307E\u305B\u3093\u3002"}, + {"Plotter.saveAsMenuItem", "\u540D\u524D\u3092\u4ED8\u3051\u3066\u30C7\u30FC\u30BF\u3092\u4FDD\u5B58..."}, + {"Plotter.saveAsMenuItem.mnemonic", "A"}, + {"Plotter.timeRangeMenu", "\u6642\u9593\u7BC4\u56F2"}, + {"Plotter.timeRangeMenu.mnemonic", "T"}, + {"Problem adding listener","\u30EA\u30B9\u30CA\u30FC\u8FFD\u52A0\u4E2D\u306E\u554F\u984C"}, + {"Problem displaying MBean", "MBean\u8868\u793A\u4E2D\u306E\u554F\u984C"}, + {"Problem invoking", "\u547C\u51FA\u3057\u4E2D\u306E\u554F\u984C"}, + {"Problem removing listener","\u30EA\u30B9\u30CA\u30FC\u524A\u9664\u4E2D\u306E\u554F\u984C"}, + {"Problem setting attribute","\u5C5E\u6027\u8A2D\u5B9A\u4E2D\u306E\u554F\u984C"}, + {"Process CPU time","\u30D7\u30ED\u30BB\u30B9CPU\u6642\u9593"}, {"R/W","R/W"}, - {"Readable","\u8aad\u307f\u8fbc\u307f\u53ef\u80fd"}, - {"Received","\u53d7\u4fe1\u6e08\u307f"}, - {"Reconnect","\u518d\u63a5\u7d9a"}, - {"Remote Process:", "\u30ea\u30e2\u30fc\u30c8\u30d7\u30ed\u30bb\u30b9(R):"}, - {"Remote Process:.mnemonic", 'R'}, - {"Remote Process.textField.accessibleName", "\u30ea\u30e2\u30fc\u30c8\u30d7\u30ed\u30bb\u30b9"}, - {"Remove","\u524a\u9664"}, - {"Restore All", "\u3059\u3079\u3066\u3092\u5fa9\u5143(R)"}, - {"Restore All.mnemonic", 'R'}, - {"Return value", "\u623b\u308a\u5024"}, + {"Readable","\u8AAD\u53D6\u308A\u53EF\u80FD"}, + {"Received","\u53D7\u4FE1\u6E08"}, + {"Reconnect","\u518D\u63A5\u7D9A"}, + {"Remote Process:", "\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9:"}, + {"Remote Process:.mnemonic", "R"}, + {"Remote Process.textField.accessibleName", "\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9"}, + {"Remove","\u524A\u9664"}, + {"Restore All", "\u3059\u3079\u3066\u5FA9\u5143"}, + {"Restore All.mnemonic", "R"}, + {"Return value", "\u623B\u308A\u5024"}, {"ReturnType", "ReturnType"}, - {"SeqNum","\u30b7\u30fc\u30b1\u30f3\u30b9\u756a\u53f7"}, - {"Size Bytes", "{0,number,integer} \u30d0\u30a4\u30c8"}, - {"Size Gb","{0} G \u30d0\u30a4\u30c8"}, - {"Size Kb","{0} K \u30d0\u30a4\u30c8"}, - {"Size Mb","{0} M \u30d0\u30a4\u30c8"}, - {"Source","\u30bd\u30fc\u30b9"}, + {"SeqNum","SeqNum"}, + {"Size Bytes", "{0,number,integer}\u30D0\u30A4\u30C8"}, + {"Size Gb","{0} Gb"}, + {"Size Kb","{0} Kb"}, + {"Size Mb","{0} Mb"}, + {"Source","\u30BD\u30FC\u30B9"}, {"Stack trace", - "\n\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9: \n"}, - {"Success:","\u6210\u529f:"}, + "\n\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9: \n"}, + {"Success:","\u6210\u529F:"}, // Note: SummaryTab.headerDateTimeFormat can be one the following: // 1. A combination of two styles for date and time, using the // constants from class DateFormat: SHORT, MEDIUM, LONG, FULL. @@ -356,85 +353,75 @@ public class JConsoleResources_ja extends JConsoleResources { // of the class SimpleDateFormat. // Example: "yyyy-MM-dd HH:mm:ss" or "M/d/yyyy h:mm:ss a" {"SummaryTab.headerDateTimeFormat", "FULL,FULL"}, - {"SummaryTab.pendingFinalization.label", "\u4fdd\u7559\u72b6\u614b\u306e\u30d5\u30a1\u30a4\u30ca\u30e9\u30a4\u30ba"}, - {"SummaryTab.pendingFinalization.value", "{0} \u30aa\u30d6\u30b8\u30a7\u30af\u30c8"}, - {"SummaryTab.tabName", "VM \u306e\u6982\u8981"}, - {"SummaryTab.vmVersion","{0} \u30d0\u30fc\u30b8\u30e7\u30f3 {1}"}, - {"TabularData are not supported", "TabularData \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, - {"Threads","\u30b9\u30ec\u30c3\u30c9"}, - {"ThreadTab.infoLabelFormat", "\u30e9\u30a4\u30d6: {0} \u30d4\u30fc\u30af: {1} \u7dcf\u6570: {2}"}, - {"ThreadTab.threadInfo.accessibleName", "\u30b9\u30ec\u30c3\u30c9\u60c5\u5831"}, - {"ThreadTab.threadPlotter.accessibleName", "\u30b9\u30ec\u30c3\u30c9\u6570\u306e\u56f3\u3002"}, - {"Threshold","\u3057\u304d\u3044\u5024"}, - {"Tile", "\u4e26\u3079\u3066\u8868\u793a(T)"}, - {"Tile.mnemonic", 'T'}, - {"Time Range:", "\u6642\u9593\u7bc4\u56f2(T):"}, - {"Time Range:.mnemonic", 'T'}, + {"SummaryTab.pendingFinalization.label", "\u30D5\u30A1\u30A4\u30CA\u30E9\u30A4\u30BA\u306E\u30DA\u30F3\u30C7\u30A3\u30F3\u30B0"}, + {"SummaryTab.pendingFinalization.value", "{0}\u500B\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8"}, + {"SummaryTab.tabName", "VM\u30B5\u30DE\u30EA\u30FC"}, + {"SummaryTab.vmVersion","{0}\u30D0\u30FC\u30B8\u30E7\u30F3{1}"}, + {"TabularData are not supported", "TabularData \u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"}, + {"Threads","\u30B9\u30EC\u30C3\u30C9"}, + {"ThreadTab.infoLabelFormat", "\u5B9F\u884C\u4E2D: {0} \u30D4\u30FC\u30AF: {1} \u5408\u8A08: {2}"}, + {"ThreadTab.threadInfo.accessibleName", "\u30B9\u30EC\u30C3\u30C9\u60C5\u5831"}, + {"ThreadTab.threadPlotter.accessibleName", "\u30B9\u30EC\u30C3\u30C9\u6570\u306E\u30C1\u30E3\u30FC\u30C8\u3002"}, + {"Threshold","\u3057\u304D\u3044\u5024"}, + {"Tile", "\u4E26\u3079\u3066\u8868\u793A"}, + {"Tile.mnemonic", "T"}, + {"Time Range:", "\u6642\u9593\u7BC4\u56F2:"}, + {"Time Range:.mnemonic", "T"}, {"Time", "\u6642\u9593"}, - {"TimeStamp","\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7"}, - {"Total Loaded", "\u7dcf\u30ed\u30fc\u30c9\u6570"}, - {"Total classes loaded","\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30af\u30e9\u30b9\u306e\u7dcf\u6570"}, - {"Total classes unloaded","\u30a2\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30af\u30e9\u30b9\u306e\u7dcf\u6570"}, - {"Total compile time","\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u7dcf\u6642\u9593"}, - {"Total physical memory","\u7dcf\u7269\u7406\u30e1\u30e2\u30ea"}, - {"Total threads started","\u958b\u59cb\u3057\u305f\u30b9\u30ec\u30c3\u30c9\u306e\u7dcf\u6570"}, - {"Total swap space","\u7dcf\u30b9\u30ef\u30c3\u30d7\u30b9\u30da\u30fc\u30b9"}, - {"Type","\u578b"}, - {"Unavailable","\u4f7f\u7528\u4e0d\u53ef\u80fd"}, + {"TimeStamp","TimeStamp"}, + {"Total Loaded", "\u30ED\u30FC\u30C9\u6E08\u5408\u8A08"}, + {"Total classes loaded","\u30ED\u30FC\u30C9\u6E08\u30AF\u30E9\u30B9\u5408\u8A08"}, + {"Total classes unloaded","\u30A2\u30F3\u30ED\u30FC\u30C9\u6E08\u30AF\u30E9\u30B9\u5408\u8A08"}, + {"Total compile time","\u5408\u8A08\u30B3\u30F3\u30D1\u30A4\u30EB\u6642\u9593"}, + {"Total physical memory","\u5408\u8A08\u7269\u7406\u30E1\u30E2\u30EA\u30FC"}, + {"Total threads started","\u958B\u59CB\u6E08\u5408\u8A08\u30B9\u30EC\u30C3\u30C9"}, + {"Total swap space","\u5408\u8A08\u30B9\u30EF\u30C3\u30D7\u30FB\u30B9\u30DA\u30FC\u30B9"}, + {"Type","\u578B"}, + {"Unavailable","\u5229\u7528\u4E0D\u53EF"}, {"UNKNOWN","UNKNOWN"}, - {"Unknown Host","\u672a\u77e5\u306e\u30db\u30b9\u30c8: {0}"}, - {"Unregister", "\u767b\u9332\u89e3\u9664"}, - {"Uptime","\u30a2\u30c3\u30d7\u30bf\u30a4\u30e0"}, - {"Uptime: ","\u30a2\u30c3\u30d7\u30bf\u30a4\u30e0: "}, - {"Usage Threshold","\u4f7f\u7528\u91cf\u306e\u3057\u304d\u3044\u5024"}, - {"remoteTF.usage","\u4f7f\u3044\u65b9: <\u30db\u30b9\u30c8\u540d>:<\u30dd\u30fc\u30c8> \u307e\u305f\u306f service:jmx:<\u30d7\u30ed\u30c8\u30b3\u30eb>:<sap>"}, - {"Used","\u4f7f\u7528\u6e08\u307f"}, - {"Username: ", "\u30e6\u30fc\u30b6\u30fc\u540d(U): "}, - {"Username: .mnemonic", 'U'}, - {"Username.accessibleName", "\u30e6\u30fc\u30b6\u30fc\u540d"}, + {"Unknown Host","\u4E0D\u660E\u306A\u30DB\u30B9\u30C8: {0}"}, + {"Unregister", "\u767B\u9332\u89E3\u9664"}, + {"Uptime","\u7A3C\u50CD\u6642\u9593"}, + {"Uptime: ","\u7A3C\u50CD\u6642\u9593: "}, + {"Usage Threshold","\u4F7F\u7528\u3057\u304D\u3044\u5024"}, + {"remoteTF.usage","\u4F7F\u7528\u65B9\u6CD5: <hostname>:<port>\u307E\u305F\u306Fservice:jmx:<protocol>:<sap>"}, + {"Used","\u4F7F\u7528\u6E08"}, + {"Username: ", "\u30E6\u30FC\u30B6\u30FC\u540D: "}, + {"Username: .mnemonic", "U"}, + {"Username.accessibleName", "\u30E6\u30FC\u30B6\u30FC\u540D"}, {"UserData","UserData"}, - {"Virtual Machine","\u4eee\u60f3\u30de\u30b7\u30f3"}, - {"VM arguments","VM \u306e\u5f15\u6570"}, + {"Virtual Machine","\u4EEE\u60F3\u30DE\u30B7\u30F3"}, + {"VM arguments","VM\u5F15\u6570"}, {"VM","VM"}, - {"VMInternalFrame.accessibleDescription", "Java \u4eee\u60f3\u30de\u30b7\u30f3\u3092\u76e3\u8996\u3059\u308b\u305f\u3081\u306e\u5185\u90e8\u30d5\u30ec\u30fc\u30e0"}, + {"VMInternalFrame.accessibleDescription", "Java\u4EEE\u60F3\u30DE\u30B7\u30F3\u306E\u30E2\u30CB\u30BF\u30FC\u7528\u306E\u5185\u90E8\u30D5\u30EC\u30FC\u30E0"}, {"Value","\u5024"}, - {"Vendor", "\u30d9\u30f3\u30c0"}, - {"Verbose Output","\u8a73\u7d30\u51fa\u529b"}, - {"Verbose Output.toolTip", "\u30af\u30e9\u30b9\u30ed\u30fc\u30c7\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u306e\u8a73\u7d30\u51fa\u529b\u3092\u6709\u52b9\u306b\u3059\u308b"}, - {"View value", "\u5024\u3092\u8868\u793a\u3059\u308b"}, - {"View","\u8868\u793a"}, - {"Window", "\u30a6\u30a3\u30f3\u30c9\u30a6(W)"}, - {"Window.mnemonic", 'W'}, - {"Windows","\u30a6\u30a3\u30f3\u30c9\u30a6"}, - {"Writable","\u66f8\u304d\u8fbc\u307f\u53ef\u80fd"}, - {"You cannot drop a class here", "\u30af\u30e9\u30b9\u3092\u3053\u3053\u306b\u30c9\u30ed\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093"}, - {"collapse", "\u6298\u308a\u305f\u305f\u307f"}, - {"connectionFailed1","\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \u518d\u8a66\u884c\u3057\u307e\u3059\u304b?"}, - {"connectionFailed2","{0} \u3078\u306e\u63a5\u7d9a\u304c\u6210\u529f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002
    \u3082\u3046\u4e00\u5ea6\u8a66\u3057\u307e\u3059\u304b?"}, - {"connectionLost1","\u63a5\u7d9a\u304c\u5931\u308f\u308c\u307e\u3057\u305f: \u518d\u63a5\u7d9a\u3057\u307e\u3059\u304b?"}, - {"connectionLost2","\u30ea\u30e2\u30fc\u30c8\u30d7\u30ed\u30bb\u30b9\u304c\u7d42\u4e86\u3057\u305f\u305f\u3081\u3001{0} \u3078\u306e\u63a5\u7d9a\u304c\u5931\u308f\u308c\u307e\u3057\u305f\u3002
    \u518d\u63a5\u7d9a\u3057\u307e\u3059\u304b?"}, - {"connectingTo1","{0} \u306b\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059"}, - {"connectingTo2","\u73fe\u5728 {0} \u306b\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059\u3002
    \u3053\u308c\u306b\u306f\u5c11\u3057\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002"}, + {"Vendor", "\u30D9\u30F3\u30C0\u30FC"}, + {"Verbose Output","\u8A73\u7D30\u51FA\u529B"}, + {"Verbose Output.toolTip", "\u30AF\u30E9\u30B9\u8AAD\u8FBC\u307F\u30B7\u30B9\u30C6\u30E0\u3067\u8A73\u7D30\u51FA\u529B\u3092\u6709\u52B9\u306B\u3059\u308B"}, + {"View value", "\u5024\u306E\u8868\u793A"}, + {"View","\u8868\u793A"}, + {"Window", "\u30A6\u30A3\u30F3\u30C9\u30A6"}, + {"Window.mnemonic", "W"}, + {"Windows","\u30A6\u30A3\u30F3\u30C9\u30A6"}, + {"Writable","\u66F8\u8FBC\u307F\u53EF\u80FD"}, + {"You cannot drop a class here", "\u30AF\u30E9\u30B9\u3092\u3053\u3053\u306B\u30C9\u30ED\u30C3\u30D7\u3067\u304D\u307E\u305B\u3093"}, + {"collapse", "\u7E2E\u5C0F"}, + {"connectionFailed1","\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F: \u518D\u8A66\u884C\u3057\u307E\u3059\u304B\u3002"}, + {"connectionFailed2","{0}\u3078\u306E\u63A5\u7D9A\u304C\u6210\u529F\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
    \u3082\u3046\u4E00\u5EA6\u8A66\u3057\u307E\u3059\u304B\u3002"}, + {"connectionLost1","\u63A5\u7D9A\u304C\u5931\u308F\u308C\u307E\u3057\u305F: \u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B\u3002"}, + {"connectionLost2","\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9\u304C\u7D42\u4E86\u3057\u305F\u305F\u3081{0}\u3078\u306E\u63A5\u7D9A\u304C\u5931\u308F\u308C\u307E\u3057\u305F\u3002
    \u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B\u3002"}, + {"connectingTo1","{0}\u306B\u63A5\u7D9A\u4E2D"}, + {"connectingTo2","{0}\u306B\u73FE\u5728\u63A5\u7D9A\u4E2D\u3067\u3059\u3002
    \u3053\u308C\u306B\u306F\u6570\u5206\u304B\u304B\u308A\u307E\u3059\u3002"}, {"deadlockAllTab","\u3059\u3079\u3066"}, - {"deadlockTab","\u30c7\u30c3\u30c9\u30ed\u30c3\u30af"}, - {"deadlockTabN","\u30c7\u30c3\u30c9\u30ed\u30c3\u30af {0}"}, - {"expand", "\u5c55\u958b"}, - {"kbytes","{0} k \u30d0\u30a4\u30c8"}, - {"operation","\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3"}, - {"plot", "\u30d7\u30ed\u30c3\u30c8"}, - {"visualize","\u8868\u793a"}, + {"deadlockTab","\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF"}, + {"deadlockTabN","\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF{0}"}, + {"expand", "\u5C55\u958B"}, + {"kbytes","{0} KB"}, + {"operation","\u64CD\u4F5C"}, + {"plot", "\u30D7\u30ED\u30C3\u30C8"}, + {"visualize","\u8996\u899A\u5316"}, {"zz usage text", - "\u4f7f\u3044\u65b9: {0} [ -interval=n ] [ -notile ] [ -pluginpath ] [ -version ] [ connection ... ]\n\n" + - " -interval \u66f4\u65b0\u9593\u9694\u3092 n \u79d2\u306b\u8a2d\u5b9a\u3059\u308b (\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 4 \u79d2)\n" + - " -notile \u521d\u671f\u72b6\u614b\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u30bf\u30a4\u30eb\u72b6\u306b\u4e26\u3079\u306a\u3044 (\u63a5\u7d9a\u304c\u8907\u6570\u3042\u308b\u5834\u5408)\n" + - " -pluginpath JConsole \u3067\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u63a2\u3059\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u3092\u6307\u5b9a\u3059\u308b\n" + - " -version \u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u51fa\u529b\u3059\u308b\n\n" + - " connection = pid || host:port || JMX URL (service:jmx:://...)\n" + - " pid \u30bf\u30fc\u30b2\u30c3\u30c8\u30d7\u30ed\u30bb\u30b9\u306e\u30d7\u30ed\u30bb\u30b9 ID\n" + - " host \u30ea\u30e2\u30fc\u30c8\u30db\u30b9\u30c8\u306e\u540d\u524d\u307e\u305f\u306f IP \u30a2\u30c9\u30ec\u30b9\n" + - " port \u30ea\u30e2\u30fc\u30c8\u63a5\u7d9a\u7528\u306e\u30dd\u30fc\u30c8\u756a\u53f7\n\n" + - " -J JConsole \u3092\u5b9f\u884c\u3059\u308b Java \u4eee\u60f3\u30de\u30b7\u30f3\u3078\u306e\n" + - " \u5165\u529b\u5f15\u6570\u3092\u6307\u5b9a\u3059\u308b"}, + "\u4F7F\u7528\u65B9\u6CD5: {0} [ -interval=n ] [ -notile ] [ -pluginpath ] [ -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:://...)\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"}, // END OF MATERIAL TO LOCALIZE }; diff --git a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java index 6c2183200a3..a29aaaf4032 100644 --- a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java +++ b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java @@ -44,7 +44,7 @@ import static java.awt.event.KeyEvent.*; * or if the keys ends with ".mnemonic", an element * representing a mnemomic keycode int or char. */ -public class JConsoleResources_zh_CN extends JConsoleResources { +public class JConsoleResources_zh_CN extends ListResourceBundle { /** * Returns the contents of this ResourceBundle. @@ -55,7 +55,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { */ protected Object[][] getContents0() { Object[][] temp = new Object[][] { - // NOTE 1: The value strings in this file containing "{0}" are + // NOTE 1: The value strings in this file containing "{0}" are // processed by the java.text.MessageFormat class. Any // single quotes appearing in these strings need to be // doubled up. @@ -66,288 +66,285 @@ public class JConsoleResources_zh_CN extends JConsoleResources { // // LOCALIZE THIS {" 1 day"," 1 \u5929"}, - {" 1 hour"," 1 \u5c0f\u65f6"}, - {" 1 min"," 1 \u5206\u949f"}, - {" 1 month"," 1 \u4e2a\u6708"}, - {" 1 year"," 1 \u5e74"}, - {" 2 hours"," 2 \u5c0f\u65f6"}, - {" 3 hours"," 3 \u5c0f\u65f6"}, - {" 3 months"," 3 \u4e2a\u6708"}, - {" 5 min"," 5 \u5206\u949f"}, - {" 6 hours"," 6 \u5c0f\u65f6"}, - {" 6 months"," 6 \u4e2a\u6708"}, + {" 1 hour"," 1 \u5C0F\u65F6"}, + {" 1 min"," 1 \u5206\u949F"}, + {" 1 month"," 1 \u4E2A\u6708"}, + {" 1 year"," 1 \u5E74"}, + {" 2 hours"," 2 \u5C0F\u65F6"}, + {" 3 hours"," 3 \u5C0F\u65F6"}, + {" 3 months"," 3 \u4E2A\u6708"}, + {" 5 min"," 5 \u5206\u949F"}, + {" 6 hours"," 6 \u5C0F\u65F6"}, + {" 6 months"," 6 \u4E2A\u6708"}, {" 7 days"," 7 \u5929"}, - {"10 min","10 \u5206\u949f"}, - {"12 hours","12 \u5c0f\u65f6"}, - {"30 min","30 \u5206\u949f"}, + {"10 min","10 \u5206\u949F"}, + {"12 hours","12 \u5C0F\u65F6"}, + {"30 min","30 \u5206\u949F"}, {"<","<"}, {"<<","<<"}, {">",">"}, {"ACTION","ACTION"}, {"ACTION_INFO","ACTION_INFO"}, - {"All","\u5168\u90e8"}, - {"Apply","\u5e94\u7528"}, - {"Architecture","\u4f53\u7cfb\u7ed3\u6784"}, - {"Array, OpenType", "\u6570\u7ec4, OpenType"}, - {"Array, OpenType, Numeric value viewer","\u6570\u7ec4, OpenType, \u6570\u503c\u67e5\u770b\u5668"}, - {"Attribute","\u5c5e\u6027"}, - {"Attribute value","\u5c5e\u6027\u503c"}, - {"Attribute values","\u5c5e\u6027\u503c"}, - {"Attributes","\u5c5e\u6027"}, - {"Blank", "\u7a7a\u767d"}, + {"All","\u5168\u90E8"}, + {"Apply","\u5E94\u7528"}, + {"Architecture","\u4F53\u7CFB\u7ED3\u6784"}, + {"Array, OpenType", "\u6570\u7EC4, OpenType"}, + {"Array, OpenType, Numeric value viewer","\u6570\u7EC4, OpenType, \u6570\u503C\u67E5\u770B\u5668"}, + {"Attribute","\u5C5E\u6027"}, + {"Attribute value","\u5C5E\u6027\u503C"}, + {"Attribute values","\u5C5E\u6027\u503C"}, + {"Attributes","\u5C5E\u6027"}, + {"Blank", "\u7A7A\u767D"}, {"BlockedCount WaitedCount", - "\u963b\u585e\u603b\u6570\uff1a{0} \u7b49\u5f85\u603b\u6570\uff1a {1}\n"}, - {"Boot class path","\u5f15\u5bfc\u7c7b\u8def\u5f84"}, - {"BorderedComponent.moreOrLessButton.toolTip", "\u5207\u6362\u4ee5\u663e\u793a\u8f83\u591a\u4fe1\u606f\u6216\u8f83\u5c11\u4fe1\u606f"}, - {"CPU Usage","CPU \u4f7f\u7528\u60c5\u51b5"}, - {"CPUUsageFormat","CPU \u4f7f\u7528\u60c5\u51b5: {0}%"}, - {"Cancel","\u53d6\u6d88"}, - {"Cascade", "\u5c42\u53e0"}, - {"Cascade.mnemonic", 'C'}, - {"Chart:", "\u56fe\u8868\uff1a"}, - {"Chart:.mnemonic", 'C'}, - {"Class path","\u7c7b\u8def\u5f84"}, - {"Class","\u7c7b"}, - {"ClassName","\u7c7b\u540d\u79f0"}, - {"ClassTab.infoLabelFormat", "\u5df2\u52a0\u8f7d: {0} \u672a\u52a0\u8f7d: {1} \u603b\u8ba1: {2}"}, - {"ClassTab.loadedClassesPlotter.accessibleName", "\u5df2\u88c5\u5165\u7c7b\u7684\u56fe\u8868\u3002"}, - {"Classes","\u7c7b"}, - {"Close","\u5173\u95ed"}, - {"Column.Name", "\u540d\u79f0"}, + "\u603B\u963B\u6B62\u6570: {0}, \u603B\u7B49\u5F85\u6570: {1}\n"}, + {"Boot class path","\u5F15\u5BFC\u7C7B\u8DEF\u5F84"}, + {"BorderedComponent.moreOrLessButton.toolTip", "\u5207\u6362\u4EE5\u663E\u793A\u66F4\u591A\u6216\u66F4\u5C11\u4FE1\u606F"}, + {"CPU Usage","CPU \u5360\u7528\u7387"}, + {"CPUUsageFormat","CPU \u5360\u7528\u7387: {0}%"}, + {"Cancel","\u53D6\u6D88"}, + {"Cascade", "\u7EA7\u8054"}, + {"Cascade.mnemonic", "C"}, + {"Chart:", "\u56FE\u8868:"}, + {"Chart:.mnemonic", "C"}, + {"Class path","\u7C7B\u8DEF\u5F84"}, + {"Class","\u7C7B"}, + {"ClassName","ClassName"}, + {"ClassTab.infoLabelFormat", "\u5DF2\u52A0\u8F7D: {0} \u5DF2\u5378\u8F7D: {1} \u603B\u8BA1: {2}"}, + {"ClassTab.loadedClassesPlotter.accessibleName", "\u5DF2\u52A0\u8F7D\u7C7B\u7684\u56FE\u8868\u3002"}, + {"Classes","\u7C7B"}, + {"Close","\u5173\u95ED"}, + {"Column.Name", "\u540D\u79F0"}, {"Column.PID", "PID"}, - {"Committed memory","\u5206\u914d\u7684\u5185\u5b58"}, - {"Committed virtual memory","\u5206\u914d\u7684\u865a\u62df\u5185\u5b58"}, - {"Committed", "\u5206\u914d"}, - {"Compiler","\u7f16\u8bd1\u5668"}, - {"CompositeData","\u590d\u5408\u6570\u636e"}, - {"Config","\u914d\u7f6e"}, - {"Connect", "\u8fde\u63a5"}, - {"Connect.mnemonic", 'C'}, - {"Connect...","\u8fde\u63a5..."}, - {"ConnectDialog.connectButton.toolTip", "\u8fde\u63a5\u81f3 Java \u865a\u62df\u673a"}, - {"ConnectDialog.accessibleDescription", "\u7528\u4e8e\u4e0e\u672c\u5730\u6216\u8fdc\u7a0b Java \u865a\u62df\u673a\u5efa\u7acb\u65b0\u8fde\u63a5\u7684\u5bf9\u8bdd\u6846"}, - {"ConnectDialog.masthead.accessibleName", "\u6807\u9898\u56fe\u5f62"}, - {"ConnectDialog.masthead.title", "\u65b0\u5efa\u8fde\u63a5"}, - {"ConnectDialog.statusBar.accessibleName", "\u72b6\u6001\u6761"}, - {"ConnectDialog.title", "JConsole\uff1a\u65b0\u5efa\u8fde\u63a5"}, - {"Connected. Click to disconnect.","\u5df2\u8fde\u63a5\u3002\u8bf7\u5355\u51fb\u4ee5\u65ad\u5f00\u8fde\u63a5\u3002"}, - {"Connection failed","\u8fde\u63a5\u5931\u8d25"}, - {"Connection", "\u8fde\u63a5"}, - {"Connection.mnemonic", 'C'}, - {"Connection name", "\u8fde\u63a5\u540d\u79f0"}, - {"ConnectionName (disconnected)","{0}\uff08\u5df2\u65ad\u5f00\u8fde\u63a5\uff09"}, - {"Constructor","\u6784\u9020\u51fd\u6570"}, - {"Current classes loaded", "\u5f53\u524d\u7c7b\u5df2\u88c5\u5165"}, - {"Current heap size","\u5f53\u524d\u5806\u5927\u5c0f"}, - {"Current value","\u5f53\u524d\u503c\uff1a {0}"}, - {"Create", "\u521b\u5efa"}, - {"Daemon threads","\u5b88\u62a4\u7ebf\u7a0b"}, - {"Disconnected. Click to connect.","\u5df2\u65ad\u5f00\u8fde\u63a5\u3002\u8bf7\u5355\u51fb\u4ee5\u8fde\u63a5\u3002"}, - {"Double click to expand/collapse","\u53cc\u51fb\u4ee5\u5c55\u5f00/\u6298\u53e0"}, - {"Double click to visualize", "\u53cc\u51fb\u4ee5\u663e\u793a"}, - {"Description", "\u63cf\u8ff0"}, - {"Description: ", "\u63cf\u8ff0\uff1a "}, - {"Descriptor", "\u63cf\u8ff0\u7b26"}, - {"Details", "\u8be6\u7ec6\u4fe1\u606f"}, - {"Detect Deadlock", "\u68c0\u6d4b\u5230\u6b7b\u9501"}, - {"Detect Deadlock.mnemonic", 'D'}, - {"Detect Deadlock.toolTip", "\u68c0\u6d4b\u5230\u6b7b\u9501\u7684\u7ebf\u7a0b"}, - {"Dimension is not supported:","\u4e0d\u652f\u6301\u7ef4\uff1a"}, - {"Discard chart", "\u653e\u5f03\u56fe\u8868"}, - {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} day |1.0<{0,number,integer} days }{1,choice,0<{1,number,integer} hours |1#{1,number,integer} hour |1<{1,number,integer} hours }{2,choice,0<{2,number,integer} minutes|1#{2,number,integer} minute|1.0<{2,number,integer} minutes}"}, + {"Committed memory","\u63D0\u4EA4\u7684\u5185\u5B58"}, + {"Committed virtual memory","\u63D0\u4EA4\u7684\u865A\u62DF\u5185\u5B58"}, + {"Committed", "\u5DF2\u63D0\u4EA4"}, + {"Compiler","\u7F16\u8BD1\u5668"}, + {"CompositeData","CompositeData"}, + {"Config","\u914D\u7F6E"}, + {"Connect", "\u8FDE\u63A5"}, + {"Connect.mnemonic", "C"}, + {"Connect...","\u8FDE\u63A5..."}, + {"ConnectDialog.connectButton.toolTip", "\u8FDE\u63A5\u5230 Java \u865A\u62DF\u673A"}, + {"ConnectDialog.accessibleDescription", "\u7528\u4E8E\u4E0E\u672C\u5730\u6216\u8FDC\u7A0B Java \u865A\u62DF\u673A\u5EFA\u7ACB\u65B0\u8FDE\u63A5\u7684\u5BF9\u8BDD\u6846"}, + {"ConnectDialog.masthead.accessibleName", "\u62A5\u5934\u56FE"}, + {"ConnectDialog.masthead.title", "\u65B0\u5EFA\u8FDE\u63A5"}, + {"ConnectDialog.statusBar.accessibleName", "\u72B6\u6001\u680F"}, + {"ConnectDialog.title", "JConsole: \u65B0\u5EFA\u8FDE\u63A5"}, + {"Connected. Click to disconnect.","\u5DF2\u8FDE\u63A5\u3002\u5355\u51FB\u53EF\u65AD\u5F00\u8FDE\u63A5\u3002"}, + {"Connection failed","\u8FDE\u63A5\u5931\u8D25"}, + {"Connection", "\u8FDE\u63A5"}, + {"Connection.mnemonic", "C"}, + {"Connection name", "\u8FDE\u63A5\u540D\u79F0"}, + {"ConnectionName (disconnected)","{0} (\u5DF2\u65AD\u5F00\u8FDE\u63A5)"}, + {"Constructor","\u6784\u9020\u5668"}, + {"Current classes loaded", "\u5DF2\u52A0\u88C5\u5F53\u524D\u7C7B"}, + {"Current heap size","\u5F53\u524D\u5806\u5927\u5C0F"}, + {"Current value","\u5F53\u524D\u503C: {0}"}, + {"Create", "\u521B\u5EFA"}, + {"Daemon threads","\u5B88\u62A4\u7A0B\u5E8F\u7EBF\u7A0B"}, + {"Disconnected. Click to connect.","\u5DF2\u65AD\u5F00\u8FDE\u63A5\u3002\u5355\u51FB\u53EF\u8FDE\u63A5\u3002"}, + {"Double click to expand/collapse","\u53CC\u51FB\u4EE5\u5C55\u5F00/\u9690\u85CF"}, + {"Double click to visualize", "\u53CC\u51FB\u4EE5\u4F7F\u5176\u53EF\u89C1"}, + {"Description", "\u8BF4\u660E"}, + {"Description: ", "\u8BF4\u660E: "}, + {"Descriptor", "\u63CF\u8FF0\u7B26"}, + {"Details", "\u8BE6\u7EC6\u8D44\u6599"}, + {"Detect Deadlock", "\u68C0\u6D4B\u6B7B\u9501"}, + {"Detect Deadlock.mnemonic", "D"}, + {"Detect Deadlock.toolTip", "\u68C0\u6D4B\u5904\u4E8E\u6B7B\u9501\u72B6\u6001\u7684\u7EBF\u7A0B"}, + {"Dimension is not supported:","\u4E0D\u652F\u6301\u7EF4:"}, + {"Discard chart", "\u653E\u5F03\u56FE\u8868"}, + {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} \u5929 |1.0<{0,number,integer} \u5929 }{1,choice,0<{1,number,integer} \u5C0F\u65F6 |1#{1,number,integer} \u5C0F\u65F6 |1<{1,number,integer} \u5C0F\u65F6 }{2,choice,0<{2,number,integer} \u5206\u949F|1#{2,number,integer} \u5206\u949F|1.0<{2,number,integer} \u5206\u949F}"}, - {"DurationHoursMinutes","{0,choice,1#{0,number,integer} hour |1<{0,number,integer} hours }{1,choice,0<{1,number,integer} minutes|1#{1,number,integer} minute|1.0<{1,number,integer} minutes}"}, + {"DurationHoursMinutes","{0,choice,1#{0,number,integer} \u5C0F\u65F6 |1<{0,number,integer} \u5C0F\u65F6 }{1,choice,0<{1,number,integer} \u5206\u949F|1#{1,number,integer} \u5206\u949F|1.0<{1,number,integer} \u5206\u949F}"}, - {"DurationMinutes","{0,choice,1#{0,number,integer} minute|1.0<{0,number,integer} minutes}"}, - {"DurationSeconds","{0} \u79d2"}, - {"Empty array", "\u7a7a\u6570\u7ec4"}, - {"Empty opentype viewer", "\u7a7a OpenType \u67e5\u770b\u5668"}, - {"Error","\u9519\u8bef"}, - {"Error: MBeans already exist","\u9519\u8bef\uff1aMBean \u5df2\u5b58\u5728"}, - {"Error: MBeans do not exist","\u9519\u8bef\uff1aMBean \u4e0d\u5b58\u5728"}, - {"Error:","\u9519\u8bef\uff1a"}, - {"Event","\u4e8b\u4ef6"}, - {"Exit", "\u9000\u51fa"}, - {"Exit.mnemonic", 'x'}, - {"Fail to load plugin", "\u8b66\u544a: \u65e0\u6cd5\u88c5\u5165\u63d2\u4ef6: {0}"}, - {"FileChooser.fileExists.cancelOption", "\u53d6\u6d88"}, - {"FileChooser.fileExists.message", "
    \u6587\u4ef6\u5df2\u5b58\u5728:
    {0}
    \u662f\u5426\u8981\u66ff\u6362\uff1f"}, - {"FileChooser.fileExists.okOption", "\u66ff\u6362"}, - {"FileChooser.fileExists.title", "\u6587\u4ef6\u5df2\u5b58\u5728"}, - {"FileChooser.savedFile", "\u5df2\u4fdd\u5b58\u5230\u6587\u4ef6:
    {0}
    \uff08{1} \u5b57\u8282\uff09"}, - {"FileChooser.saveFailed.message", "
    \u4fdd\u5b58\u5230\u6587\u4ef6\u5931\u8d25:
    {0}
    {1}"}, - {"FileChooser.saveFailed.title", "\u4fdd\u5b58\u5931\u8d25"}, - {"Free physical memory","\u53ef\u7528\u7269\u7406\u5185\u5b58"}, - {"Free swap space","\u53ef\u7528\u4ea4\u6362\u7a7a\u95f4"}, - {"Garbage collector","\u5783\u573e\u6536\u96c6\u5668"}, + {"DurationMinutes","{0,choice,1#{0,number,integer} \u5206\u949F|1.0<{0,number,integer} \u5206\u949F}"}, + {"DurationSeconds","{0} \u79D2"}, + {"Empty array", "\u7A7A\u6570\u7EC4"}, + {"Empty opentype viewer", "\u7A7A opentype \u67E5\u770B\u5668"}, + {"Error","\u9519\u8BEF"}, + {"Error: MBeans already exist","\u9519\u8BEF: MBean \u5DF2\u5B58\u5728"}, + {"Error: MBeans do not exist","\u9519\u8BEF: MBean \u4E0D\u5B58\u5728"}, + {"Error:","\u9519\u8BEF:"}, + {"Event","\u4E8B\u4EF6"}, + {"Exit", "\u9000\u51FA"}, + {"Exit.mnemonic", "X"}, + {"Fail to load plugin", "\u8B66\u544A: \u65E0\u6CD5\u52A0\u8F7D\u63D2\u4EF6: {0}"}, + {"FileChooser.fileExists.cancelOption", "\u53D6\u6D88"}, + {"FileChooser.fileExists.message", "
    \u6587\u4EF6\u5DF2\u5B58\u5728:
    {0}
    \u662F\u5426\u8981\u66FF\u6362?"}, + {"FileChooser.fileExists.okOption", "\u66FF\u6362"}, + {"FileChooser.fileExists.title", "\u6587\u4EF6\u5DF2\u5B58\u5728"}, + {"FileChooser.savedFile", "\u5DF2\u4FDD\u5B58\u5230\u6587\u4EF6:
    {0}
    ({1} \u5B57\u8282)"}, + {"FileChooser.saveFailed.message", "
    \u672A\u80FD\u4FDD\u5B58\u5230\u6587\u4EF6:
    {0}
    {1}"}, + {"FileChooser.saveFailed.title", "\u4FDD\u5B58\u5931\u8D25"}, + {"Free physical memory","\u7A7A\u95F2\u7269\u7406\u5185\u5B58"}, + {"Free swap space","\u7A7A\u95F2\u4EA4\u6362\u7A7A\u95F4"}, + {"Garbage collector","\u5783\u573E\u6536\u96C6\u5668"}, {"GTK","GTK"}, - {"GcInfo","Name = ''{0}'', Collections = {1,choice,-1#Unavailable|0#{1,number,integer}}, Total time spent = {2}"}, - {"GC time","GC \u65f6\u95f4"}, - {"GC time details","{1}\uff08{2} \u9879\u6536\u96c6\uff09\u6240\u7528\u7684\u65f6\u95f4\u4e3a {0}"}, - {"Heap Memory Usage","\u5806\u5185\u5b58\u4f7f\u7528\u60c5\u51b5"}, + {"GcInfo","\u540D\u79F0 = ''{0}'', \u6536\u96C6 = {1,choice,-1#Unavailable|0#{1,number,integer}}, \u603B\u82B1\u8D39\u65F6\u95F4 = {2}"}, + {"GC time","GC \u65F6\u95F4"}, + {"GC time details","{1}\u4E0A\u7684{0} ({2}\u6536\u96C6)"}, + {"Heap Memory Usage","\u5806\u5185\u5B58\u4F7F\u7528\u91CF"}, {"Heap", "\u5806"}, - {"Help.AboutDialog.accessibleDescription", "\u5305\u542b\u6709\u5173 JConsole \u548c JDK \u7248\u672c\u4fe1\u606f\u7684\u5bf9\u8bdd\u6846"}, - {"Help.AboutDialog.jConsoleVersion", "JConsole \u7248\u672c:
    {0}"}, - {"Help.AboutDialog.javaVersion", "Java VM \u7248\u672c:
    {0}"}, - {"Help.AboutDialog.masthead.accessibleName", "\u6807\u9898\u56fe\u5f62"}, - {"Help.AboutDialog.masthead.title", "\u5173\u4e8e JConsole"}, - {"Help.AboutDialog.title", "JConsole\uff1a\u5173\u4e8e"}, + {"Help.AboutDialog.accessibleDescription", "\u5305\u542B\u6709\u5173 JConsole \u548C JDK \u7248\u672C\u4FE1\u606F\u7684\u5BF9\u8BDD\u6846"}, + {"Help.AboutDialog.jConsoleVersion", "JConsole \u7248\u672C:
    {0}"}, + {"Help.AboutDialog.javaVersion", "Java VM \u7248\u672C:
    {0}"}, + {"Help.AboutDialog.masthead.accessibleName", "\u62A5\u5934\u56FE"}, + {"Help.AboutDialog.masthead.title", "\u5173\u4E8E JConsole"}, + {"Help.AboutDialog.title", "JConsole: \u5173\u4E8E"}, {"Help.AboutDialog.userGuideLink", "JConsole \u7528\u6237\u6307\u5357:
    {0}"}, - {"Help.AboutDialog.userGuideLink.mnemonic", 'U'}, - {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/MonitoringGuide/toc.html"}, - {"HelpMenu.About.title", "\u5173\u4e8e JConsole"}, - {"HelpMenu.About.title.mnemonic", 'A'}, - {"HelpMenu.UserGuide.title", "\u8054\u673a\u7528\u6237\u6307\u5357"}, - {"HelpMenu.UserGuide.title.mnemonic", 'U'}, - {"HelpMenu.title", "\u5e2e\u52a9"}, - {"HelpMenu.title.mnemonic", 'H'}, - {"Hotspot MBeans...", "Hotspot MBean..."}, - {"Hotspot MBeans....mnemonic", 'H'}, - {"Hotspot MBeans.dialog.accessibleDescription", "\u7528\u4e8e\u7ba1\u7406 Hotspot Mbean \u7684\u5bf9\u8bdd\u6846"}, - {"Impact","\u5f71\u54cd"}, - {"Info","\u4fe1\u606f"}, + {"Help.AboutDialog.userGuideLink.mnemonic", "U"}, + {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"}, + {"HelpMenu.About.title", "\u5173\u4E8E JConsole"}, + {"HelpMenu.About.title.mnemonic", "A"}, + {"HelpMenu.UserGuide.title", "\u8054\u673A\u7528\u6237\u6307\u5357"}, + {"HelpMenu.UserGuide.title.mnemonic", "U"}, + {"HelpMenu.title", "\u5E2E\u52A9"}, + {"HelpMenu.title.mnemonic", "H"}, + {"Hotspot MBeans...", "\u70ED\u70B9 MBean..."}, + {"Hotspot MBeans....mnemonic", "H"}, + {"Hotspot MBeans.dialog.accessibleDescription", "\u7528\u4E8E\u7BA1\u7406\u70ED\u70B9 MBean \u7684\u5BF9\u8BDD\u6846"}, + {"Impact","\u5F71\u54CD"}, + {"Info","\u4FE1\u606F"}, {"INFO","INFO"}, - {"Invalid plugin path", "\u8b66\u544a: \u65e0\u6548\u7684\u63d2\u4ef6\u8def\u5f84: {0}"}, - {"Invalid URL", "\u65e0\u6548\u7684 URL: {0}"}, - {"Is","\u4e3a"}, - {"Java Monitoring & Management Console", "Java \u76d1\u89c6\u548c\u7ba1\u7406\u63a7\u5236\u53f0"}, + {"Invalid plugin path", "\u8B66\u544A: \u63D2\u4EF6\u8DEF\u5F84\u65E0\u6548: {0}"}, + {"Invalid URL", "URL \u65E0\u6548: {0}"}, + {"Is","\u662F"}, + {"Java Monitoring & Management Console", "Java \u76D1\u89C6\u548C\u7BA1\u7406\u63A7\u5236\u53F0"}, {"JConsole: ","JConsole: {0}"}, - {"JConsole version","JConsole \u7248\u672c \"{0}\""}, - {"JConsole.accessibleDescription", "Java \u76d1\u89c6\u548c\u7ba1\u7406\u63a7\u5236\u53f0"}, - {"JIT compiler","JIT \u7f16\u8bd1\u5668"}, - {"Java Virtual Machine","Java \u865a\u62df\u673a"}, + {"JConsole version","JConsole \u7248\u672C \"{0}\""}, + {"JConsole.accessibleDescription", "Java \u76D1\u89C6\u548C\u7BA1\u7406\u63A7\u5236\u53F0"}, + {"JIT compiler","JIT \u7F16\u8BD1\u5668"}, + {"Java Virtual Machine","Java \u865A\u62DF\u673A"}, {"Java","Java"}, - {"Library path","\u5e93\u8def\u5f84"}, - {"Listeners","\u4fa6\u542c\u5668"}, - {"Live Threads","\u6d3b\u52a8\u7ebf\u7a0b"}, - {"Loaded", "\u5df2\u88c5\u5165"}, - {"Local Process:", "\u672c\u5730\u8fdb\u7a0b:"}, - {"Local Process:.mnemonic", 'L'}, - {"Look and Feel","\u5916\u89c2"}, + {"Library path","\u5E93\u8DEF\u5F84"}, + {"Listeners","\u76D1\u542C\u7A0B\u5E8F"}, + {"Live Threads","\u6D3B\u52A8\u7EBF\u7A0B"}, + {"Loaded", "\u5DF2\u52A0\u8F7D"}, + {"Local Process:", "\u672C\u5730\u8FDB\u7A0B:"}, + {"Local Process:.mnemonic", "L"}, + {"Look and Feel","\u5916\u89C2"}, {"Masthead.font", "Dialog-PLAIN-25"}, - {"Management Not Enabled","\u6ce8\u610f\uff1a\u5728\u6b64\u8fdb\u7a0b\u4e2d\u672a\u542f\u7528\u7ba1\u7406\u4ee3\u7406\u3002"}, - {"Management Will Be Enabled","\u6ce8\u610f\uff1a\u5728\u6b64\u8fdb\u7a0b\u4e2d\u5c06\u542f\u7528\u7ba1\u7406\u4ee3\u7406\u3002"}, + {"Management Not Enabled","\u6CE8: \u672A\u5BF9\u6B64\u8FDB\u7A0B\u542F\u7528\u7BA1\u7406\u4EE3\u7406\u3002"}, + {"Management Will Be Enabled","\u6CE8: \u5C06\u5BF9\u6B64\u8FDB\u7A0B\u542F\u7528\u7BA1\u7406\u4EE3\u7406\u3002"}, {"MBeanAttributeInfo","MBeanAttributeInfo"}, {"MBeanInfo","MBeanInfo"}, {"MBeanNotificationInfo","MBeanNotificationInfo"}, {"MBeanOperationInfo","MBeanOperationInfo"}, {"MBeans","MBean"}, - {"MBeansTab.clearNotificationsButton", "\u6e05\u9664(C)"}, - {"MBeansTab.clearNotificationsButton.mnemonic", 'C'}, - {"MBeansTab.clearNotificationsButton.toolTip", "\u6e05\u9664\u901a\u77e5"}, - {"MBeansTab.compositeNavigationMultiple", "\u590d\u5408\u5bfc\u822a {0}/{1}"}, - {"MBeansTab.compositeNavigationSingle", "\u590d\u5408\u5bfc\u822a"}, - {"MBeansTab.refreshAttributesButton", "\u5237\u65b0(R)"}, - {"MBeansTab.refreshAttributesButton.mnemonic", 'R'}, - {"MBeansTab.refreshAttributesButton.toolTip", "\u5237\u65b0\u5c5e\u6027"}, - {"MBeansTab.subscribeNotificationsButton", "\u8ba2\u9605(S)"}, - {"MBeansTab.subscribeNotificationsButton.mnemonic", 'S'}, - {"MBeansTab.subscribeNotificationsButton.toolTip", "\u5f00\u59cb\u4fa6\u542c\u901a\u77e5"}, - {"MBeansTab.tabularNavigationMultiple", "\u8868\u683c\u5bfc\u822a {0}/{1}"}, - {"MBeansTab.tabularNavigationSingle", "\u8868\u683c\u5bfc\u822a"}, - {"MBeansTab.unsubscribeNotificationsButton", "\u53d6\u6d88\u8ba2\u9605(U)"}, - {"MBeansTab.unsubscribeNotificationsButton.mnemonic", 'U'}, - {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u505c\u6b62\u4fa6\u542c\u901a\u77e5"}, - {"Manage Hotspot MBeans in: ", "\u7ba1\u7406 Hotspot MBean \u4e8e\uff1a "}, - {"Max","\u6700\u5927\u503c"}, - {"Maximum heap size","\u5806\u5927\u5c0f\u7684\u6700\u5927\u503c"}, - {"Memory","\u5185\u5b58"}, - {"MemoryPoolLabel", "\u5185\u5b58\u6c60 \"{0}\""}, - {"MemoryTab.heapPlotter.accessibleName", "\u5806\u7684\u5185\u5b58\u4f7f\u7528\u60c5\u51b5\u56fe\u8868\u3002"}, - {"MemoryTab.infoLabelFormat", "\u5df2\u4f7f\u7528: {0} \u5df2\u63d0\u4ea4: {1} \u6700\u5927\u503c: {2}"}, - {"MemoryTab.nonHeapPlotter.accessibleName", "\u975e\u5806\u7684\u5185\u5b58\u4f7f\u7528\u60c5\u51b5\u56fe\u8868\u3002"}, - {"MemoryTab.poolChart.aboveThreshold", "\u5927\u4e8e\u9608\u503c {0}\u3002\n"}, - {"MemoryTab.poolChart.accessibleName", "\u5185\u5b58\u6c60\u4f7f\u7528\u60c5\u51b5\u56fe\u8868\u3002"}, - {"MemoryTab.poolChart.belowThreshold", "\u5c0f\u4e8e\u9608\u503c {0}\u3002\n"}, - {"MemoryTab.poolPlotter.accessibleName", "{0} \u7684\u5185\u5b58\u4f7f\u7528\u60c5\u51b5\u56fe\u8868\u3002"}, - {"Message","\u6d88\u606f"}, - {"Method successfully invoked", "\u6210\u529f\u8c03\u7528\u65b9\u6cd5"}, - {"Minimize All", "\u5168\u90e8\u6700\u5c0f\u5316"}, - {"Minimize All.mnemonic", 'M'}, - {"Minus Version", "\u8fd9\u662f {0} \u7248\u672c {1}"}, + {"MBeansTab.clearNotificationsButton", "\u6E05\u9664"}, + {"MBeansTab.clearNotificationsButton.mnemonic", "C"}, + {"MBeansTab.clearNotificationsButton.toolTip", "\u6E05\u9664\u901A\u77E5"}, + {"MBeansTab.compositeNavigationMultiple", "\u7EC4\u5408\u5BFC\u822A{0}/{1}"}, + {"MBeansTab.compositeNavigationSingle", "\u7EC4\u5408\u5BFC\u822A"}, + {"MBeansTab.refreshAttributesButton", "\u5237\u65B0"}, + {"MBeansTab.refreshAttributesButton.mnemonic", "R"}, + {"MBeansTab.refreshAttributesButton.toolTip", "\u5237\u65B0\u5C5E\u6027"}, + {"MBeansTab.subscribeNotificationsButton", "\u8BA2\u9605"}, + {"MBeansTab.subscribeNotificationsButton.mnemonic", "S"}, + {"MBeansTab.subscribeNotificationsButton.toolTip", "\u5F00\u59CB\u76D1\u542C\u901A\u77E5"}, + {"MBeansTab.tabularNavigationMultiple", "\u8868\u683C\u5F0F\u5BFC\u822A{0}/{1}"}, + {"MBeansTab.tabularNavigationSingle", "\u8868\u683C\u5F0F\u5BFC\u822A"}, + {"MBeansTab.unsubscribeNotificationsButton", "\u53D6\u6D88\u8BA2\u9605"}, + {"MBeansTab.unsubscribeNotificationsButton.mnemonic", "U"}, + {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u505C\u6B62\u76D1\u542C\u901A\u77E5"}, + {"Manage Hotspot MBeans in: ", "\u7BA1\u7406\u4EE5\u4E0B\u4F4D\u7F6E\u7684\u70ED\u70B9 MBean: "}, + {"Max","\u6700\u5927\u503C"}, + {"Maximum heap size","\u6700\u5927\u5806\u5927\u5C0F"}, + {"Memory","\u5185\u5B58"}, + {"MemoryPoolLabel", "\u5185\u5B58\u6C60 \"{0}\""}, + {"MemoryTab.heapPlotter.accessibleName", "\u5806\u7684\u5185\u5B58\u4F7F\u7528\u91CF\u56FE\u8868\u3002"}, + {"MemoryTab.infoLabelFormat", "\u5DF2\u7528: {0} \u5DF2\u63D0\u4EA4: {1} \u6700\u5927: {2}"}, + {"MemoryTab.nonHeapPlotter.accessibleName", "\u975E\u5806\u7684\u5185\u5B58\u4F7F\u7528\u91CF\u56FE\u8868\u3002"}, + {"MemoryTab.poolChart.aboveThreshold", "\u5927\u4E8E{0}\u7684\u9608\u503C\u3002\n"}, + {"MemoryTab.poolChart.accessibleName", "\u5185\u5B58\u6C60\u4F7F\u7528\u91CF\u56FE\u8868\u3002"}, + {"MemoryTab.poolChart.belowThreshold", "\u4F4E\u4E8E{0}\u7684\u9608\u503C\u3002\n"}, + {"MemoryTab.poolPlotter.accessibleName", "{0}\u7684\u5185\u5B58\u4F7F\u7528\u91CF\u56FE\u8868\u3002"}, + {"Message","\u6D88\u606F"}, + {"Method successfully invoked", "\u5DF2\u6210\u529F\u8C03\u7528\u65B9\u6CD5"}, + {"Minimize All", "\u5168\u90E8\u6700\u5C0F\u5316"}, + {"Minimize All.mnemonic", "M"}, + {"Minus Version", "\u8FD9\u662F{0}\u7248\u672C {1}"}, {"Monitor locked", - " - \u5df2\u9501\u5b9a {0}\n"}, - {"Motif","\u4fee\u6539"}, - {"Name Build and Mode","{0}\uff08\u5185\u90e8\u7248\u672c {1}\u3001{2}\uff09"}, - {"Name and Build","{0}\uff08\u5185\u90e8\u7248\u672c {1}\uff09"}, - {"Name","\u540d\u79f0"}, - {"Name: ","\u540d\u79f0\uff1a "}, + " - \u5DF2\u9501\u5B9A{0}\n"}, + {"Motif","Motif"}, + {"Name Build and Mode","{0} (\u5DE5\u4F5C\u7248\u672C {1}, {2})"}, + {"Name and Build","{0} (\u5DE5\u4F5C\u7248\u672C {1})"}, + {"Name","\u540D\u79F0"}, + {"Name: ","\u540D\u79F0: "}, {"Name State", - "\u540d\u79f0\uff1a {0}\n" + - "\u72b6\u6001\uff1a {1}\n"}, + "\u540D\u79F0: {0}\n\u72B6\u6001: {1}\n"}, {"Name State LockName", - "\u540d\u79f0\uff1a {0}\n" + - "\u72b6\u6001\uff1a{1} \u5728 {2} \u4e0a\n"}, + "\u540D\u79F0: {0}\n\u72B6\u6001: {2}\u4E0A\u7684{1}\n"}, {"Name State LockName LockOwner", - "\u540d\u79f0\uff1a {0}\n" + - "\u72b6\u6001\uff1a{1} \u5728 {2} \u4e0a\uff0c\u62e5\u6709\u8005\uff1a {3}\n"}, - {"New Connection...", "\u65b0\u5efa\u8fde\u63a5..."}, - {"New Connection....mnemonic", 'N'}, - {"New value applied","\u5df2\u5e94\u7528\u65b0\u503c"}, - {"No attribute selected","\u672a\u9009\u62e9\u5c5e\u6027"}, - {"No deadlock detected","\u672a\u68c0\u6d4b\u5230\u6b7b\u9501"}, - {"No value selected","\u672a\u9009\u62e9\u503c"}, - {"Non-Heap Memory Usage","\u975e\u5806\u5185\u5b58\u4f7f\u7528\u60c5\u51b5"}, - {"Non-Heap", "\u975e\u5806"}, - {"Not Yet Implemented","\u5c1a\u672a\u5b9e\u73b0"}, - {"Not a valid event broadcaster", "\u4e0d\u662f\u6709\u6548\u7684\u4e8b\u4ef6\u5e7f\u64ad\u5668"}, - {"Notification","\u901a\u77e5"}, - {"Notification buffer","\u901a\u77e5\u7f13\u51b2\u533a"}, - {"Notifications","\u901a\u77e5"}, + "\u540D\u79F0: {0}\n\u72B6\u6001: {2}\u4E0A\u7684{1}, \u62E5\u6709\u8005: {3}\n"}, + {"New Connection...", "\u65B0\u5EFA\u8FDE\u63A5..."}, + {"New Connection....mnemonic", "N"}, + {"New value applied","\u5DF2\u5E94\u7528\u65B0\u503C"}, + {"No attribute selected","\u672A\u9009\u62E9\u5C5E\u6027"}, + {"No deadlock detected","\u672A\u68C0\u6D4B\u5230\u6B7B\u9501"}, + {"No value selected","\u672A\u9009\u62E9\u503C"}, + {"Non-Heap Memory Usage","\u975E\u5806\u5185\u5B58\u4F7F\u7528\u91CF"}, + {"Non-Heap", "\u975E\u5806"}, + {"Not Yet Implemented","\u5C1A\u672A\u5B9E\u73B0"}, + {"Not a valid event broadcaster", "\u4E0D\u662F\u6709\u6548\u7684\u4E8B\u4EF6\u5E7F\u64AD\u8005"}, + {"Notification","\u901A\u77E5"}, + {"Notification buffer","\u901A\u77E5\u7F13\u51B2\u533A"}, + {"Notifications","\u901A\u77E5"}, {"NotifTypes", "NotifTypes"}, - {"Number of Threads","\u7ebf\u7a0b\u7684\u6570\u76ee"}, - {"Number of Loaded Classes","\u5df2\u88c5\u5165\u7c7b\u7684\u6570\u76ee"}, - {"Number of processors","\u5904\u7406\u5668\u7684\u6570\u76ee"}, + {"Number of Threads","\u7EBF\u7A0B\u6570"}, + {"Number of Loaded Classes","\u5DF2\u52A0\u8F7D\u7C7B\u6570"}, + {"Number of processors","\u5904\u7406\u7A0B\u5E8F\u6570"}, {"ObjectName","ObjectName"}, - {"Operating System","\u64cd\u4f5c\u7cfb\u7edf"}, - {"Operation","\u64cd\u4f5c"}, - {"Operation invocation","\u64cd\u4f5c\u8c03\u7528"}, - {"Operation return value", "\u64cd\u4f5c\u8fd4\u56de\u503c"}, - {"Operations","\u64cd\u4f5c"}, - {"Overview","\u6982\u8ff0"}, - {"OverviewPanel.plotter.accessibleName", "{0} \u7684\u56fe\u8868\u3002"}, - {"Parameter", "\u53c2\u6570"}, - {"Password: ", "\u53e3\u4ee4\uff1a "}, - {"Password: .mnemonic", 'P'}, - {"Password.accessibleName", "\u5bc6\u7801"}, - {"Peak","\u5cf0"}, - {"Perform GC", "\u6267\u884c GC"}, - {"Perform GC.mnemonic", 'G'}, - {"Perform GC.toolTip", "\u8bf7\u6c42\u5783\u573e\u6536\u96c6"}, - {"Plotter.accessibleName", "\u56fe\u8868"}, + {"Operating System","\u64CD\u4F5C\u7CFB\u7EDF"}, + {"Operation","\u64CD\u4F5C"}, + {"Operation invocation","\u64CD\u4F5C\u8C03\u7528"}, + {"Operation return value", "\u64CD\u4F5C\u8FD4\u56DE\u503C"}, + {"Operations","\u64CD\u4F5C"}, + {"Overview","\u6982\u89C8"}, + {"OverviewPanel.plotter.accessibleName", "{0}\u7684\u56FE\u8868\u3002"}, + {"Parameter", "\u53C2\u6570"}, + {"Password: ", "\u53E3\u4EE4: "}, + {"Password: .mnemonic", "P"}, + {"Password.accessibleName", "\u53E3\u4EE4"}, + {"Peak","\u5CF0\u503C"}, + {"Perform GC", "\u6267\u884C GC"}, + {"Perform GC.mnemonic", "G"}, + {"Perform GC.toolTip", "\u8BF7\u6C42\u5783\u573E\u6536\u96C6"}, + {"Plotter.accessibleName", "\u56FE\u8868"}, {"Plotter.accessibleName.keyAndValue", "{0}={1}\n"}, - {"Plotter.accessibleName.noData", "\u672a\u7ed8\u5236\u6570\u636e\u3002"}, - {"Plotter.saveAsMenuItem", "\u5c06\u6570\u636e\u53e6\u5b58\u4e3a..."}, - {"Plotter.saveAsMenuItem.mnemonic", 'a'}, - {"Plotter.timeRangeMenu", "\u65f6\u95f4\u8303\u56f4"}, - {"Plotter.timeRangeMenu.mnemonic", 'T'}, - {"Problem adding listener","\u6dfb\u52a0\u4fa6\u542c\u5668\u65f6\u51fa\u73b0\u95ee\u9898"}, - {"Problem displaying MBean", "\u663e\u793a MBean \u65f6\u51fa\u73b0\u95ee\u9898"}, - {"Problem invoking", "\u8c03\u7528\u65f6\u51fa\u73b0\u95ee\u9898"}, - {"Problem removing listener","\u5220\u9664\u4fa6\u542c\u5668\u65f6\u51fa\u73b0\u95ee\u9898"}, - {"Problem setting attribute","\u8bbe\u7f6e\u5c5e\u6027\u65f6\u51fa\u73b0\u95ee\u9898"}, - {"Process CPU time","\u5904\u7406 CPU \u65f6\u95f4"}, - {"R/W","R/W"}, - {"Readable","\u53ef\u8bfb"}, - {"Received","\u5df2\u6536\u5230"}, - {"Reconnect","\u91cd\u65b0\u8fde\u63a5"}, - {"Remote Process:", "\u8fdc\u7a0b\u8fdb\u7a0b:"}, - {"Remote Process:.mnemonic", 'R'}, - {"Remote Process.textField.accessibleName", "\u8fdc\u7a0b\u8fdb\u7a0b"}, + {"Plotter.accessibleName.noData", "\u672A\u7ED8\u5236\u6570\u636E\u3002"}, + {"Plotter.saveAsMenuItem", "\u5C06\u6570\u636E\u53E6\u5B58\u4E3A..."}, + {"Plotter.saveAsMenuItem.mnemonic", "A"}, + {"Plotter.timeRangeMenu", "\u65F6\u95F4\u8303\u56F4"}, + {"Plotter.timeRangeMenu.mnemonic", "T"}, + {"Problem adding listener","\u6DFB\u52A0\u76D1\u542C\u7A0B\u5E8F\u65F6\u51FA\u73B0\u95EE\u9898"}, + {"Problem displaying MBean", "\u663E\u793A MBean \u65F6\u51FA\u73B0\u95EE\u9898"}, + {"Problem invoking", "\u8C03\u7528\u65F6\u51FA\u73B0\u95EE\u9898"}, + {"Problem removing listener","\u5220\u9664\u76D1\u542C\u7A0B\u5E8F\u65F6\u51FA\u73B0\u95EE\u9898"}, + {"Problem setting attribute","\u8BBE\u7F6E\u5C5E\u6027\u65F6\u51FA\u73B0\u95EE\u9898"}, + {"Process CPU time","\u8FDB\u7A0B CPU \u65F6\u95F4"}, + {"R/W","\u8BFB\u5199"}, + {"Readable","\u53EF\u8BFB"}, + {"Received","\u6536\u5230"}, + {"Reconnect","\u91CD\u65B0\u8FDE\u63A5"}, + {"Remote Process:", "\u8FDC\u7A0B\u8FDB\u7A0B:"}, + {"Remote Process:.mnemonic", "R"}, + {"Remote Process.textField.accessibleName", "\u8FDC\u7A0B\u8FDB\u7A0B"}, {"Remove","\u5220\u9664"}, - {"Restore All", "\u5168\u90e8\u6062\u590d"}, - {"Restore All.mnemonic", 'R'}, - {"Return value", "\u8fd4\u56de\u503c"}, + {"Restore All", "\u5168\u90E8\u8FD8\u539F"}, + {"Restore All.mnemonic", "R"}, + {"Return value", "\u8FD4\u56DE\u503C"}, {"ReturnType", "ReturnType"}, - {"SeqNum","\u5e8f\u5217\u53f7"}, - {"Size Bytes", "{0,number,integer} \u5b57\u8282"}, - {"Size Gb","{0} Gb"}, - {"Size Kb","{0} Kb"}, - {"Size Mb","{0} Mb"}, - {"Source","\u6e90"}, + {"SeqNum","SeqNum"}, + {"Size Bytes", "{0,number,integer} \u5B57\u8282"}, + {"Size Gb","{0} GB"}, + {"Size Kb","{0} KB"}, + {"Size Mb","{0} MB"}, + {"Source","\u6E90"}, {"Stack trace", - "\n\u5806\u6808\u8ffd\u8e2a\uff1a \n"}, - {"Success:","\u6210\u529f\uff1a"}, + "\n\u5806\u6808\u8DDF\u8E2A: \n"}, + {"Success:","\u6210\u529F:"}, // Note: SummaryTab.headerDateTimeFormat can be one the following: // 1. A combination of two styles for date and time, using the // constants from class DateFormat: SHORT, MEDIUM, LONG, FULL. @@ -356,85 +353,75 @@ public class JConsoleResources_zh_CN extends JConsoleResources { // of the class SimpleDateFormat. // Example: "yyyy-MM-dd HH:mm:ss" or "M/d/yyyy h:mm:ss a" {"SummaryTab.headerDateTimeFormat", "FULL,FULL"}, - {"SummaryTab.pendingFinalization.label", "\u6682\u6302\u7ed3\u675f\u64cd\u4f5c"}, - {"SummaryTab.pendingFinalization.value", "{0} \u4e2a\u5bf9\u8c61"}, - {"SummaryTab.tabName", "VM \u6458\u8981"}, - {"SummaryTab.vmVersion","{0} \u7248\u672c {1}"}, - {"TabularData are not supported", "\u4e0d\u652f\u6301\u8868\u683c\u5f0f\u6570\u636e"}, - {"Threads","\u7ebf\u7a0b"}, - {"ThreadTab.infoLabelFormat", "\u6d3b\u52a8: {0} \u5cf0\u503c: {1} \u603b\u8ba1: {2}"}, - {"ThreadTab.threadInfo.accessibleName", "\u7ebf\u7a0b\u4fe1\u606f"}, - {"ThreadTab.threadPlotter.accessibleName", "\u7ebf\u7a0b\u6570\u76ee\u56fe\u8868\u3002"}, - {"Threshold","\u9608\u503c"}, - {"Tile", "\u5e73\u94fa"}, - {"Tile.mnemonic", 'T'}, - {"Time Range:", "\u65f6\u95f4\u8303\u56f4\uff1a"}, - {"Time Range:.mnemonic", 'T'}, - {"Time", "\u65f6\u95f4"}, - {"TimeStamp","\u65f6\u95f4\u6233"}, - {"Total Loaded", "\u5df2\u88c5\u5165\u7684\u603b\u6570"}, - {"Total classes loaded","\u5df2\u88c5\u5165\u7c7b\u7684\u603b\u6570"}, - {"Total classes unloaded","\u5df2\u5378\u8f7d\u7c7b\u7684\u603b\u6570"}, - {"Total compile time","\u7f16\u8bd1\u603b\u65f6\u95f4"}, - {"Total physical memory","\u7269\u7406\u5185\u5b58\u603b\u91cf"}, - {"Total threads started","\u5df2\u542f\u52a8\u7684\u7ebf\u7a0b\u603b\u6570"}, - {"Total swap space","\u4ea4\u6362\u7a7a\u95f4\u603b\u91cf"}, - {"Type","\u7c7b\u578b"}, - {"Unavailable","\u4e0d\u53ef\u7528"}, - {"UNKNOWN","\u672a\u77e5"}, - {"Unknown Host","\u672a\u77e5\u4e3b\u673a: {0}"}, - {"Unregister", "\u672a\u6ce8\u518c"}, - {"Uptime","\u6b63\u5e38\u8fd0\u884c\u65f6\u95f4"}, - {"Uptime: ","\u6b63\u5e38\u8fd0\u884c\u65f6\u95f4\uff1a "}, - {"Usage Threshold","\u4f7f\u7528\u9608\u503c"}, - {"remoteTF.usage","\u7528\u6cd5: <hostname>:<port> \u6216 service:jmx:<protocol>:<sap>"}, - {"Used","\u5df2\u4f7f\u7528"}, - {"Username: ", "\u7528\u6237\u540d: "}, - {"Username: .mnemonic", 'U'}, - {"Username.accessibleName", "\u7528\u6237\u540d"}, - {"UserData","\u7528\u6237\u6570\u636e"}, - {"Virtual Machine","\u865a\u62df\u673a"}, - {"VM arguments","VM \u53c2\u6570"}, + {"SummaryTab.pendingFinalization.label", "\u6682\u6302\u6700\u7EC8\u5904\u7406"}, + {"SummaryTab.pendingFinalization.value", "{0}\u5BF9\u8C61"}, + {"SummaryTab.tabName", "VM \u6982\u8981"}, + {"SummaryTab.vmVersion","{0}\u7248\u672C {1}"}, + {"TabularData are not supported", "\u4E0D\u652F\u6301 TabularData"}, + {"Threads","\u7EBF\u7A0B"}, + {"ThreadTab.infoLabelFormat", "\u6D3B\u52A8: {0} \u5CF0\u503C: {1} \u603B\u8BA1: {2}"}, + {"ThreadTab.threadInfo.accessibleName", "\u7EBF\u7A0B\u4FE1\u606F"}, + {"ThreadTab.threadPlotter.accessibleName", "\u8868\u793A\u7EBF\u7A0B\u6570\u7684\u56FE\u8868\u3002"}, + {"Threshold","\u9608\u503C"}, + {"Tile", "\u5E73\u94FA"}, + {"Tile.mnemonic", "T"}, + {"Time Range:", "\u65F6\u95F4\u8303\u56F4:"}, + {"Time Range:.mnemonic", "T"}, + {"Time", "\u65F6\u95F4"}, + {"TimeStamp","TimeStamp"}, + {"Total Loaded", "\u52A0\u8F7D\u603B\u6570"}, + {"Total classes loaded","\u5DF2\u52A0\u8F7D\u7C7B\u603B\u6570"}, + {"Total classes unloaded","\u5DF2\u5378\u8F7D\u7C7B\u603B\u6570"}, + {"Total compile time","\u603B\u7F16\u8BD1\u65F6\u95F4"}, + {"Total physical memory","\u603B\u7269\u7406\u5185\u5B58"}, + {"Total threads started","\u542F\u52A8\u7684\u7EBF\u7A0B\u603B\u6570"}, + {"Total swap space","\u603B\u4EA4\u6362\u7A7A\u95F4"}, + {"Type","\u7C7B\u578B"}, + {"Unavailable","\u4E0D\u53EF\u7528"}, + {"UNKNOWN","UNKNOWN"}, + {"Unknown Host","\u672A\u77E5\u4E3B\u673A: {0}"}, + {"Unregister", "\u6CE8\u9500"}, + {"Uptime","\u8FD0\u884C\u65F6\u95F4"}, + {"Uptime: ","\u8FD0\u884C\u65F6\u95F4: "}, + {"Usage Threshold","\u7528\u6CD5\u9608\u503C"}, + {"remoteTF.usage","\u7528\u6CD5: <hostname>:<port> \u6216 service:jmx:<protocol>:<sap>"}, + {"Used","\u5DF2\u7528"}, + {"Username: ", "\u7528\u6237\u540D: "}, + {"Username: .mnemonic", "U"}, + {"Username.accessibleName", "\u7528\u6237\u540D"}, + {"UserData","UserData"}, + {"Virtual Machine","\u865A\u62DF\u673A"}, + {"VM arguments","VM \u53C2\u6570"}, {"VM","VM"}, - {"VMInternalFrame.accessibleDescription", "\u7528\u4e8e\u76d1\u89c6 Java \u865a\u62df\u673a\u7684\u5185\u90e8\u6846\u67b6"}, - {"Value","\u503c"}, - {"Vendor", "\u4f9b\u5e94\u5546"}, - {"Verbose Output","\u8be6\u7ec6\u8f93\u51fa"}, - {"Verbose Output.toolTip", "\u4e3a\u7c7b\u88c5\u5165\u7cfb\u7edf\u542f\u7528\u8be6\u7ec6\u8f93\u51fa"}, - {"View value", "\u67e5\u770b\u503c"}, - {"View","\u89c6\u56fe"}, - {"Window", "\u7a97\u53e3"}, - {"Window.mnemonic", 'W'}, - {"Windows","\u7a97\u53e3"}, - {"Writable","\u53ef\u5199"}, - {"You cannot drop a class here", "\u60a8\u4e0d\u80fd\u5c06\u7c7b\u653e\u5728\u6b64\u5904"}, - {"collapse", "\u6298\u53e0"}, - {"connectionFailed1","\u8fde\u63a5\u5931\u8d25\uff1a\u662f\u5426\u91cd\u8bd5\uff1f"}, - {"connectionFailed2","\u4e0e {0} \u7684\u8fde\u63a5\u672a\u6210\u529f\u3002
    \u662f\u5426\u8981\u91cd\u8bd5\uff1f"}, - {"connectionLost1","\u8fde\u63a5\u65ad\u5f00\uff1a\u662f\u5426\u91cd\u65b0\u8fde\u63a5\uff1f"}, - {"connectionLost2","\u4e0e {0} \u7684\u8fde\u63a5\u5df2\u65ad\u5f00\u539f\u56e0\u662f\u5df2\u7ec8\u6b62\u8fdc\u7a0b\u8fdb\u7a0b\u3002
    \u662f\u5426\u8981\u91cd\u65b0\u8fde\u63a5\uff1f"}, - {"connectingTo1","\u6b63\u5728\u8fde\u63a5\u81f3 {0}"}, - {"connectingTo2","\u5f53\u524d\u6b63\u5728\u8fde\u63a5\u81f3 {0}\u3002
    \u8fd9\u5c06\u4f1a\u82b1\u8d39\u4e00\u4e9b\u65f6\u95f4\u3002"}, - {"deadlockAllTab","\u5168\u90e8"}, - {"deadlockTab","\u6b7b\u9501"}, - {"deadlockTabN","\u6b7b\u9501 {0}"}, - {"expand", "\u5c55\u5f00"}, - {"kbytes","{0} Kb"}, - {"operation","\u64cd\u4f5c"}, - {"plot", "\u7ed8\u56fe"}, - {"visualize","\u663e\u793a"}, + {"VMInternalFrame.accessibleDescription", "\u7528\u4E8E\u76D1\u89C6 Java \u865A\u62DF\u673A\u7684\u5185\u90E8\u6846\u67B6"}, + {"Value","\u503C"}, + {"Vendor", "\u5382\u5546"}, + {"Verbose Output","\u8BE6\u7EC6\u8F93\u51FA"}, + {"Verbose Output.toolTip", "\u4E3A\u7C7B\u52A0\u8F7D\u7CFB\u7EDF\u542F\u7528\u8BE6\u7EC6\u8F93\u51FA"}, + {"View value", "\u89C6\u56FE\u503C"}, + {"View","\u89C6\u56FE"}, + {"Window", "\u7A97\u53E3"}, + {"Window.mnemonic", "W"}, + {"Windows","Windows"}, + {"Writable","\u53EF\u5199"}, + {"You cannot drop a class here", "\u65E0\u6CD5\u5220\u9664\u6B64\u5904\u7684\u7C7B"}, + {"collapse", "\u9690\u85CF"}, + {"connectionFailed1","\u8FDE\u63A5\u5931\u8D25: \u662F\u5426\u91CD\u8BD5?"}, + {"connectionFailed2","\u672A\u6210\u529F\u8FDE\u63A5\u5230{0}\u3002
    \u662F\u5426\u8981\u91CD\u8BD5?"}, + {"connectionLost1","\u8FDE\u63A5\u4E22\u5931: \u662F\u5426\u91CD\u65B0\u8FDE\u63A5?"}, + {"connectionLost2","\u7531\u4E8E\u8FDC\u7A0B\u8FDB\u7A0B\u5DF2\u7EC8\u6B62, \u4E0E{0}\u7684\u8FDE\u63A5\u4E22\u5931\u3002
    \u662F\u5426\u8981\u91CD\u65B0\u8FDE\u63A5?"}, + {"connectingTo1","\u6B63\u5728\u8FDE\u63A5\u5230{0}"}, + {"connectingTo2","\u60A8\u5F53\u524D\u6B63\u5728\u8FDE\u63A5\u5230{0}\u3002
    \u8FD9\u5C06\u9700\u8981\u51E0\u5206\u949F\u7684\u65F6\u95F4\u3002"}, + {"deadlockAllTab","\u5168\u90E8"}, + {"deadlockTab","\u6B7B\u9501"}, + {"deadlockTabN","\u6B7B\u9501{0}"}, + {"expand", "\u5C55\u5F00"}, + {"kbytes","{0} KB"}, + {"operation","\u64CD\u4F5C"}, + {"plot", "\u7ED8\u56FE"}, + {"visualize","\u53EF\u89C6\u5316"}, {"zz usage text", - "\u7528\u6cd5: {0} [ -interval=n ] [ -notile ] [ -pluginpath ] [ -version ] [ connection ...]\n\n" + - " -interval \u5c06\u66f4\u65b0\u95f4\u9694\u65f6\u95f4\u8bbe\u7f6e\u4e3a n \u79d2\uff08\u9ed8\u8ba4\u503c\u4e3a 4 \u79d2\uff09\n" + - " -notile \u6700\u521d\u4e0d\u5e73\u94fa\u663e\u793a\u7a97\u53e3\uff08\u5bf9\u4e8e\u4e24\u4e2a\u6216\u66f4\u591a\u8fde\u63a5\uff09\n" + - " -pluginpath \u6307\u5b9a jconsole \u7528\u4e8e\u67e5\u627e\u63d2\u4ef6\u7684\u8def\u5f84\n" + - " -version \u8f93\u51fa\u7a0b\u5e8f\u7248\u672c\n\n" + - " connection = pid || host:port || JMX URL (service:jmx:://...)\n" + - " pid \u76ee\u6807\u8fdb\u7a0b\u7684\u8fdb\u7a0b ID\n" + - " host \u8fdc\u7a0b\u4e3b\u673a\u540d\u6216 IP \u5730\u5740\n" + - " port \u7528\u4e8e\u8fdc\u7a0b\u8fde\u63a5\u7684\u7aef\u53e3\u53f7\n\n" + - " -J \u5bf9\u6b63\u5728\u8fd0\u884c jconsole \u7684 Java \u865a\u62df\u673a\u6307\u5b9a\n" + - " \u8f93\u5165\u53c2\u6570"}, + "\u7528\u6CD5: {0} [ -interval=n ] [ -notile ] [ -pluginpath ] [ -version ] [ connection ... ]\n\n -interval \u5C06\u66F4\u65B0\u95F4\u9694\u8BBE\u7F6E\u4E3A n \u79D2 (\u9ED8\u8BA4\u503C\u4E3A 4 \u79D2)\n -notile \u521D\u59CB\u4E0D\u5E73\u94FA\u7A97\u53E3 (\u5BF9\u4E8E\u4E24\u4E2A\u6216\u591A\u4E2A\u8FDE\u63A5)\n -pluginpath \u6307\u5B9A jconsole \u7528\u4E8E\u67E5\u627E\u63D2\u4EF6\u7684\u8DEF\u5F84\n -version \u8F93\u51FA\u7A0B\u5E8F\u7248\u672C\n\n connection = pid || host:port || JMX URL (service:jmx:<\u534F\u8BAE>://...)\n pid \u76EE\u6807\u8FDB\u7A0B\u7684\u8FDB\u7A0B ID\n host \u8FDC\u7A0B\u4E3B\u673A\u540D\u6216 IP \u5730\u5740\n port \u8FDC\u7A0B\u8FDE\u63A5\u7684\u7AEF\u53E3\u53F7\n\n -J \u6307\u5B9A\u8FD0\u884C jconsole \u7684 Java \u865A\u62DF\u673A\n \u7684\u8F93\u5165\u53C2\u6570"}, // END OF MATERIAL TO LOCALIZE }; diff --git a/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_ja.java b/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_ja.java index 284e393816c..e1d3fda8f83 100644 --- a/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_ja.java +++ b/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_ja.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2010, 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 @@ -30,12 +30,13 @@ import java.util.ListResourceBundle; public class MsgNative2ascii_ja extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"err.bad.arg", "-encoding \u306b\u306f\u3001\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002"}, - {"err.cannot.read", "{0} \u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"err.cannot.write", "{0} \u306b\u66f8\u304d\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002"}, - {"usage", "\u4f7f\u3044\u65b9: native2ascii" + - " [-reverse] [-encoding encoding] [inputfile [outputfile]]"}, + Object[][] temp = new Object[][] { + {"err.bad.arg", "-encoding\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059"}, + {"err.cannot.read", "{0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002"}, + {"err.cannot.write", "{0}\u3092\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002"}, + {"usage", "\u4F7F\u7528\u65B9\u6CD5: native2ascii [-reverse] [-encoding encoding] [inputfile [outputfile]]"}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_zh_CN.java b/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_zh_CN.java index 276224c7d45..f4af21d0dc4 100644 --- a/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_zh_CN.java +++ b/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_zh_CN.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2010, 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 @@ -30,12 +30,13 @@ import java.util.ListResourceBundle; public class MsgNative2ascii_zh_CN extends ListResourceBundle { public Object[][] getContents() { - return new Object[][] { - {"err.bad.arg", "-encoding \u9700\u8981\u53c2\u6570"}, - {"err.cannot.read", "\u65e0\u6cd5\u8bfb\u53d6 {0}\u3002"}, - {"err.cannot.write", "\u65e0\u6cd5\u5199\u5165 {0}\u3002"}, - {"usage", "\u7528\u6cd5\uff1anative2ascii" + - " [-reverse] [-encoding \u7f16\u7801] [\u8f93\u5165\u6587\u4ef6 [\u8f93\u51fa\u6587\u4ef6]]"}, + Object[][] temp = new Object[][] { + {"err.bad.arg", "-encoding \u9700\u8981\u53C2\u6570"}, + {"err.cannot.read", "\u65E0\u6CD5\u8BFB\u53D6{0}\u3002"}, + {"err.cannot.write", "\u65E0\u6CD5\u5199\u5165{0}\u3002"}, + {"usage", "\u7528\u6CD5: native2ascii [-reverse] [-encoding encoding] [inputfile [outputfile]]"}, }; + + return temp; } } diff --git a/jdk/src/share/classes/sun/tools/serialver/serialver_ja.properties b/jdk/src/share/classes/sun/tools/serialver/serialver_ja.properties index bec892ddc8e..0feef1009ce 100644 --- a/jdk/src/share/classes/sun/tools/serialver/serialver_ja.properties +++ b/jdk/src/share/classes/sun/tools/serialver/serialver_ja.properties @@ -1,19 +1,13 @@ -SerialVersionInspector=\u30b7\u30ea\u30a2\u30eb\u30d0\u30fc\u30b8\u30e7\u30f3\u30a4\u30f3\u30b9\u30da\u30af\u30bf -File=\u30d5\u30a1\u30a4\u30eb -Exit=\u7d42\u4e86 -Show=\u8868\u793a -FullClassName=\u5b8c\u5168\u30af\u30e9\u30b9\u540d: -SerialVersion=\u30b7\u30ea\u30a2\u30eb\u30d0\u30fc\u30b8\u30e7\u30f3 -NotSerializable=\ - \u30af\u30e9\u30b9 {0} \u306f\u76f4\u5217\u5316\u3067\u304d\u307e\u305b\u3093\u3002 -ClassNotFound=\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -error.parsing.classpath=\ - \u30af\u30e9\u30b9\u30d1\u30b9 {0} \u306e\u89e3\u6790\u30a8\u30e9\u30fc\u3067\u3059\u3002 -error.missing.classpath=\ - -classpath \u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5f15\u6570\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 -invalid.flag=\ - \u7121\u52b9\u306a\u30d5\u30e9\u30b0 {0} -ignoring.classes=\ - -show \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6301\u3064\u30af\u30e9\u30b9\u5f15\u6570\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093 -usage=\ - \u4f7f\u3044\u65b9: serialver [-classpath classpath] [-show] [classname...] +SerialVersionInspector=\u30B7\u30EA\u30A2\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u30FB\u30A4\u30F3\u30B9\u30DA\u30AF\u30BF +File=\u30D5\u30A1\u30A4\u30EB +Exit=\u7D42\u4E86 +Show=\u8868\u793A +FullClassName=\u5B8C\u5168\u30AF\u30E9\u30B9\u540D: +SerialVersion=\u30B7\u30EA\u30A2\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3: +NotSerializable=\u30AF\u30E9\u30B9{0}\u306F\u76F4\u5217\u5316\u3067\u304D\u307E\u305B\u3093\u3002 +ClassNotFound=\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +error.parsing.classpath=\u30AF\u30E9\u30B9\u30D1\u30B9{0}\u306E\u89E3\u6790\u30A8\u30E9\u30FC\u3067\u3059\u3002 +error.missing.classpath=-classpath\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +invalid.flag=\u7121\u52B9\u306A\u30D5\u30E9\u30B0{0}\u3002 +ignoring.classes=-show\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6301\u3064\u30AF\u30E9\u30B9\u5F15\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093 +usage=\u4F7F\u7528\u65B9\u6CD5: serialver [-classpath classpath] [-show] [classname...] diff --git a/jdk/src/share/classes/sun/tools/serialver/serialver_zh_CN.properties b/jdk/src/share/classes/sun/tools/serialver/serialver_zh_CN.properties index 9c45aec7885..978e29a69ca 100644 --- a/jdk/src/share/classes/sun/tools/serialver/serialver_zh_CN.properties +++ b/jdk/src/share/classes/sun/tools/serialver/serialver_zh_CN.properties @@ -1,20 +1,13 @@ -SerialVersionInspector=\u5e8f\u5217\u7248\u672c\u68c0\u67e5\u5668 -File=\u6587\u4ef6 -Exit=\u9000\u51fa -Show=\u663e\u793a -FullClassName=\u5b8c\u6574\u7684\u7c7b\u540d\uff1a -SerialVersion=\u5e8f\u5217\u7248\u672c\uff1a -NotSerializable=\ - \u7c7b {0} \u65e0\u6cd5\u5e8f\u5217\u5316\u3002 -ClassNotFound=\ - \u672a\u627e\u5230\u7c7b {0}\u3002 -error.parsing.classpath=\ - \u89e3\u6790\u7c7b\u8def\u5f84 {0} \u65f6\u51fa\u9519\u3002 -error.missing.classpath=\ - \u7f3a\u5c11 -classpath \u9009\u9879\u7684\u53c2\u6570 -invalid.flag=\ - \u65e0\u6548\u6807\u5fd7 {0}\u3002 -ignoring.classes=\ - \u65e0\u6cd5\u4f7f\u7528 -show \u9009\u9879\u6307\u5b9a\u7c7b\u53c2\u6570 -usage=\ - \u7528\u6cd5\uff1aserialver [-classpath \u7c7b\u8def\u5f84] [-show] [\u7c7b\u540d\u79f0...] +SerialVersionInspector=\u5E8F\u5217\u7248\u672C\u68C0\u67E5\u5668 +File=\u6587\u4EF6 +Exit=\u9000\u51FA +Show=\u663E\u793A +FullClassName=\u5B8C\u6574\u7684\u7C7B\u540D: +SerialVersion=\u5E8F\u5217\u7248\u672C: +NotSerializable=\u7C7B{0}\u65E0\u6CD5\u5E8F\u5217\u5316\u3002 +ClassNotFound=\u627E\u4E0D\u5230\u7C7B{0}\u3002 +error.parsing.classpath=\u5BF9\u7C7B\u8DEF\u5F84 {0} \u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u65F6\u51FA\u9519\u3002 +error.missing.classpath=\u7F3A\u5C11 -classpath \u9009\u9879\u7684\u53C2\u6570 +invalid.flag=\u65E0\u6548\u6807\u8BB0{0}\u3002 +ignoring.classes=\u65E0\u6CD5\u4F7F\u7528 -show \u9009\u9879\u6307\u5B9A\u7C7B\u53C2\u6570 +usage=\u7528\u6CD5: serialver [-classpath \u7C7B\u8DEF\u5F84] [-show] [\u7C7B\u540D\u79F0...] diff --git a/jdk/src/share/classes/sun/util/locale/LanguageTag.java b/jdk/src/share/classes/sun/util/locale/LanguageTag.java index 653bb8e05fb..cf35e18e144 100644 --- a/jdk/src/share/classes/sun/util/locale/LanguageTag.java +++ b/jdk/src/share/classes/sun/util/locale/LanguageTag.java @@ -421,11 +421,11 @@ public class LanguageTag { String region = baseLocale.getRegion(); String variant = baseLocale.getVariant(); + boolean hasSubtag = false; + String privuseVar = null; // store ill-formed variant subtags - if (language.length() == 0 || !isLanguage(language)) { - tag._language = UNDETERMINED; - } else { + if (language.length() > 0 && isLanguage(language)) { // Convert a deprecated language code used by Java to // a new code if (language.equals("iw")) { @@ -440,10 +440,12 @@ public class LanguageTag { if (script.length() > 0 && isScript(script)) { tag._script = canonicalizeScript(script); + hasSubtag = true; } if (region.length() > 0 && isRegion(region)) { tag._region = canonicalizeRegion(region); + hasSubtag = true; } // Special handling for no_NO_NY - use nn_NO for language tag @@ -468,6 +470,7 @@ public class LanguageTag { } if (variants != null) { tag._variants = variants; + hasSubtag = true; } if (!varitr.isDone()) { // ill-formed variant subtags @@ -508,6 +511,7 @@ public class LanguageTag { if (extensions != null) { tag._extensions = extensions; + hasSubtag = true; } // append ill-formed variant subtags to private use @@ -521,8 +525,12 @@ public class LanguageTag { if (privateuse != null) { tag._privateuse = privateuse; - } else if (tag._language.length() == 0) { - // use "und" if neither language nor privateuse is available + } + + if (tag._language.length() == 0 && (hasSubtag || privateuse == null)) { + // use lang "und" when 1) no language is available AND + // 2) any of other subtags other than private use are available or + // no private use tag is available tag._language = UNDETERMINED; } diff --git a/jdk/src/share/classes/sun/util/logging/resources/logging_de.properties b/jdk/src/share/classes/sun/util/logging/resources/logging_de.properties index 8999ca32074..2cd2bf53ae7 100644 --- a/jdk/src/share/classes/sun/util/logging/resources/logging_de.properties +++ b/jdk/src/share/classes/sun/util/logging/resources/logging_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2001, 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 @@ -25,13 +25,13 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -ALL=ALLE -SEVERE=SCHWERWIEGEND -WARNING=WARNUNG +ALL=ALL +SEVERE=SEVERE +WARNING=WARNING INFO=INFO -CONFIG= KONFIG -FINE=FEIN -FINER=FEINER -FINEST=AM FEINSTEN +CONFIG= CONFIG +FINE=FINE +FINER=FINER +FINEST=FINEST OFF=OFF diff --git a/jdk/src/share/classes/sun/util/logging/resources/logging_es.properties b/jdk/src/share/classes/sun/util/logging/resources/logging_es.properties index 9f128a17941..2cd2bf53ae7 100644 --- a/jdk/src/share/classes/sun/util/logging/resources/logging_es.properties +++ b/jdk/src/share/classes/sun/util/logging/resources/logging_es.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2001, 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 @@ -25,13 +25,13 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -ALL=TODO -SEVERE=GRAVE -WARNING=ADVERTENCIA +ALL=ALL +SEVERE=SEVERE +WARNING=WARNING INFO=INFO CONFIG= CONFIG -FINE=FINA -FINER=M\u00c1S FINA -FINEST=LA M\u00c1S FINA -OFF=APAGADO +FINE=FINE +FINER=FINER +FINEST=FINEST +OFF=OFF diff --git a/jdk/src/share/classes/sun/util/logging/resources/logging_fr.properties b/jdk/src/share/classes/sun/util/logging/resources/logging_fr.properties index 10451feba7d..2cd2bf53ae7 100644 --- a/jdk/src/share/classes/sun/util/logging/resources/logging_fr.properties +++ b/jdk/src/share/classes/sun/util/logging/resources/logging_fr.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2001, 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 @@ -25,13 +25,13 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -ALL=TOUS -SEVERE=GRAVE -WARNING=ATTENTION +ALL=ALL +SEVERE=SEVERE +WARNING=WARNING INFO=INFO CONFIG= CONFIG -FINE=FIN -FINER=PLUS FIN -FINEST=LE PLUS FIN -OFF=AUCUN +FINE=FINE +FINER=FINER +FINEST=FINEST +OFF=OFF diff --git a/jdk/src/share/classes/sun/util/logging/resources/logging_it.properties b/jdk/src/share/classes/sun/util/logging/resources/logging_it.properties index 82287412292..2cd2bf53ae7 100644 --- a/jdk/src/share/classes/sun/util/logging/resources/logging_it.properties +++ b/jdk/src/share/classes/sun/util/logging/resources/logging_it.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2001, 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 @@ -25,13 +25,13 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -ALL=TUTTO -SEVERE=GRAVE -WARNING=AVVERTENZA +ALL=ALL +SEVERE=SEVERE +WARNING=WARNING INFO=INFO CONFIG= CONFIG FINE=FINE -FINER=MOLTO FINE -FINEST=FINISSIMO +FINER=FINER +FINEST=FINEST OFF=OFF diff --git a/jdk/src/share/classes/sun/util/logging/resources/logging_ja.properties b/jdk/src/share/classes/sun/util/logging/resources/logging_ja.properties index 766353baa69..56e3b238072 100644 --- a/jdk/src/share/classes/sun/util/logging/resources/logging_ja.properties +++ b/jdk/src/share/classes/sun/util/logging/resources/logging_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2001, 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 @@ -26,12 +26,12 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. ALL=\u3059\u3079\u3066 -SEVERE=\u81f4\u547d\u7684 -WARNING=\u8b66\u544a -INFO=\u60c5\u5831 -CONFIG= \u8a2d\u5b9a -FINE=\u8a73\u7d30\u30ec\u30d9\u30eb (\u4f4e) -FINER=\u8a73\u7d30\u30ec\u30d9\u30eb (\u4e2d) -FINEST=\u8a73\u7d30\u30ec\u30d9\u30eb (\u9ad8) -OFF=\u30aa\u30d5 +SEVERE=SEVERE +WARNING=WARNING +INFO=\u60C5\u5831 +CONFIG= CONFIG +FINE=\u8A73\u7D30\u30EC\u30D9\u30EB(\u4F4E) +FINER=FINER +FINEST=FINEST +OFF=\u30AA\u30D5 diff --git a/jdk/src/share/classes/sun/util/logging/resources/logging_ko.properties b/jdk/src/share/classes/sun/util/logging/resources/logging_ko.properties index beedcef3977..2cd2bf53ae7 100644 --- a/jdk/src/share/classes/sun/util/logging/resources/logging_ko.properties +++ b/jdk/src/share/classes/sun/util/logging/resources/logging_ko.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2001, 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 @@ -25,13 +25,13 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -ALL=\ubaa8\ub450 -SEVERE=\uc2ec\uac01 -WARNING=\uacbd\uace0 -INFO=\uc815\ubcf4 -CONFIG= \uad6c\uc131 -FINE=\uc790\uc138\ud788 -FINER=\ub354 \uc790\uc138\ud788 -FINEST=\uc544\uc8fc \uc790\uc138\ud788 -OFF=\uc124\uc815\ud574\uc81c +ALL=ALL +SEVERE=SEVERE +WARNING=WARNING +INFO=INFO +CONFIG= CONFIG +FINE=FINE +FINER=FINER +FINEST=FINEST +OFF=OFF diff --git a/jdk/src/share/classes/sun/util/logging/resources/logging_pt_BR.properties b/jdk/src/share/classes/sun/util/logging/resources/logging_pt_BR.properties index 03fab157a1c..a5ad5a77c76 100644 --- a/jdk/src/share/classes/sun/util/logging/resources/logging_pt_BR.properties +++ b/jdk/src/share/classes/sun/util/logging/resources/logging_pt_BR.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2001, 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 @@ -25,13 +25,13 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -ALL=TODOS -SEVERE=GRAVE -WARNING=AVISO +ALL=TUDO +SEVERE=SEVERE +WARNING=WARNING INFO=INFO CONFIG= CONFIG -FINE=BOM -FINER=MUITO BOM -FINEST=EXCELENTE +FINE=FINE +FINER=FINER +FINEST=FINEST OFF=OFF diff --git a/jdk/src/share/classes/sun/util/logging/resources/logging_sv.properties b/jdk/src/share/classes/sun/util/logging/resources/logging_sv.properties index c1e77f6244b..29caa85d0e9 100644 --- a/jdk/src/share/classes/sun/util/logging/resources/logging_sv.properties +++ b/jdk/src/share/classes/sun/util/logging/resources/logging_sv.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2001, 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 @@ -26,12 +26,12 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. ALL=ALLA -SEVERE=ALLVARLIG -WARNING=VARNING +SEVERE=SEVERE +WARNING=WARNING INFO=INFO -CONFIG= KONFIG +CONFIG= CONFIG FINE=FIN -FINER=FINARE -FINEST=FINAST +FINER=FINER +FINEST=FINEST OFF=AV diff --git a/jdk/src/share/classes/sun/util/logging/resources/logging_zh_CN.properties b/jdk/src/share/classes/sun/util/logging/resources/logging_zh_CN.properties index 581366b6c63..2cd2bf53ae7 100644 --- a/jdk/src/share/classes/sun/util/logging/resources/logging_zh_CN.properties +++ b/jdk/src/share/classes/sun/util/logging/resources/logging_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2001, 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 @@ -25,13 +25,13 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. -ALL=\u5168\u90e8 -SEVERE=\u4e25\u91cd -WARNING=\u8b66\u544a -INFO=\u4fe1\u606f -CONFIG= \u914d\u7f6e -FINE=\u826f\u597d -FINER=\u8f83\u597d -FINEST=\u6700\u597d -OFF=\u5173\u95ed +ALL=ALL +SEVERE=SEVERE +WARNING=WARNING +INFO=INFO +CONFIG= CONFIG +FINE=FINE +FINER=FINER +FINEST=FINEST +OFF=OFF diff --git a/jdk/src/share/classes/sun/util/logging/resources/logging_zh_TW.properties b/jdk/src/share/classes/sun/util/logging/resources/logging_zh_TW.properties index f7371f6510d..d49763c7ea4 100644 --- a/jdk/src/share/classes/sun/util/logging/resources/logging_zh_TW.properties +++ b/jdk/src/share/classes/sun/util/logging/resources/logging_zh_TW.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2001, 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 @@ -26,12 +26,12 @@ # Localizations for Level names. For the US locale # these are the same as the non-localized level name. ALL=\u6240\u6709 -SEVERE=\u56b4\u91cd\u7684 -WARNING=\u8b66\u544a -INFO=\u8cc7\u8a0a -CONFIG= \u914d\u7f6e -FINE=\u7d30\u7dfb -FINER=\u66f4\u7d30\u7dfb -FINEST=\u6700\u7d30\u7dfb -OFF=\u95dc\u9589 +SEVERE=SEVERE +WARNING=WARNING +INFO=\u8CC7\u8A0A +CONFIG= CONFIG +FINE=\u7D30\u7DFB +FINER=FINER +FINEST=FINEST +OFF=\u95DC\u9589 diff --git a/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_ja.properties b/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_ja.properties index e638f74d958..8b2da7a1ee3 100644 --- a/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_ja.properties +++ b/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_ja.properties @@ -2,8 +2,5 @@ # Resource strings for CodePointIM # -warning=\ -\u3053\u308c\u306f\u30c7\u30e2\u7528\u306e\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u3067\u3059\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u3057\u3066\u5358\u4f53\u3067\u5b9f\u884c\u3059\u308b\n\ -\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u306e\u4f7f\u3044\u65b9\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\n\ -\u306b\u3042\u308b README_ja.html \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002 +warning=\u3053\u308C\u306F\u30C7\u30E2\u7528\u306E\u5165\u529B\u30E1\u30BD\u30C3\u30C9\u3067\u3059\u3002\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3068\u3057\u3066\u5358\u4F53\u3067\u5B9F\u884C\u3059\u308B\n\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u5165\u529B\u30E1\u30BD\u30C3\u30C9\u306E\u4F7F\u7528\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306F\u3001\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n\u306B\u3042\u308BREADME.html\u3092\u3054\u89A7\u304F\u3060\u3055\u3044\u3002 diff --git a/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_zh_CN.properties b/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_zh_CN.properties index 0f594e56887..3e6bde74c70 100644 --- a/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_zh_CN.properties +++ b/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_zh_CN.properties @@ -2,8 +2,5 @@ # Resource strings for CodePointIM # -warning=\ -\u8fd9\u662f\u6f14\u793a\u8f93\u5165\u6cd5\uff1b\u4e0d\u80fd\u5c06\u5176\u76f4\u63a5\u4f5c\u4e3a\u5e94\u7528\u7a0b\u5e8f\u6765\u8fd0\u884c\u3002\n\ -\u8bf7\u9605\u8bfb\u6b64\u76ee\u5f55\u4e2d\u7684 README_zh_CN.html \u6587\u4ef6\u4ee5\u4e86\u89e3\u5982\u4f55\u4f7f\u7528\n\ -\u6b64\u8f93\u5165\u6cd5\u3002 +warning=\u8FD9\u662F\u6F14\u793A\u8F93\u5165\u6CD5; \u4E0D\u80FD\u5C06\u5176\u76F4\u63A5\u4F5C\u4E3A\u5E94\u7528\u7A0B\u5E8F\u6765\u8FD0\u884C\u3002\n\u8BF7\u9605\u8BFB\u6B64\u76EE\u5F55\u4E2D\u7684 README.html \u6587\u4EF6\u4EE5\u4E86\u89E3\u5982\u4F55\u4F7F\u7528\n\u6B64\u8F93\u5165\u6CD5\u3002 diff --git a/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_ja.properties b/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_ja.properties index 302b33a7c3c..f5cb9d735a0 100644 --- a/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_ja.properties +++ b/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_ja.properties @@ -1 +1 @@ -string=Java 2D \u3067\u3059\u3002(\u30c7\u30d5\u30a9\u30eb\u30c8) +string=Java 2D\u3067\u3059\u3002(\u30C7\u30D5\u30A9\u30EB\u30C8) diff --git a/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_zh_CN.properties b/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_zh_CN.properties index 61b51006059..7f7fa0d51d1 100644 --- a/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_zh_CN.properties +++ b/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_zh_CN.properties @@ -1 +1 @@ -string=\u8fd9\u662f Java 2D\uff01\uff08\u9ed8\u8ba4\u503c\uff09 +string=\u8FD9\u662F Java 2D! (\u9ED8\u8BA4\u503C) diff --git a/jdk/src/share/demo/jfc/Notepad/resources/Notepad_ja.properties b/jdk/src/share/demo/jfc/Notepad/resources/Notepad_ja.properties index 0ec7ce0fcf5..8a40242b9ec 100644 --- a/jdk/src/share/demo/jfc/Notepad/resources/Notepad_ja.properties +++ b/jdk/src/share/demo/jfc/Notepad/resources/Notepad_ja.properties @@ -1,15 +1,15 @@ # # Resource strings for Notepad example -Title=\u30e1\u30e2\u5e33 -ElementTreeFrameTitle=\u8981\u7d20 +Title=\u30E1\u30E2\u5E33 +ElementTreeFrameTitle=\u8981\u7D20 ViewportBackingStore=false # menubar definition # # Each of the strings that follow form a key to be # used to the actual menu definition. -menubar=file edit debug +menubar=\u30D5\u30A1\u30A4\u30EB \u7DE8\u96C6 \u30C7\u30D0\u30C3\u30B0 # file Menu definition # @@ -20,15 +20,15 @@ menubar=file edit debug # new -> Notepad.newAction # save -> Notepad.saveAction # exit -> Notepad.exitAction -file=new open save - exit -fileLabel=\u30d5\u30a1\u30a4\u30eb -openLabel=\u958b\u304f +file=\u65B0\u898F \u958B\u304F \u4FDD\u5B58 - \u7D42\u4E86 +fileLabel=\u30D5\u30A1\u30A4\u30EB +openLabel=\u958B\u304F openImage=resources/open.gif -newLabel=\u65b0\u898f +newLabel=\u65B0\u898F newImage=resources/new.gif -saveLabel=\u4fdd\u5b58 +saveLabel=\u4FDD\u5B58 saveImage=resources/save.gif -exitLabel=\u7d42\u4e86 +exitLabel=\u7D42\u4E86 # # edit Menu definition @@ -36,30 +36,30 @@ exitLabel=\u7d42\u4e86 # cut -> JTextComponent.cutAction # copy -> JTextComponent.copyAction # paste -> JTextComponent.pasteAction -edit=cut copy paste - undo redo -editLabel=\u7de8\u96c6 -cutLabel=\u30ab\u30c3\u30c8 +edit=\u5207\u53D6\u308A \u30B3\u30D4\u30FC \u8CBC\u4ED8\u3051 - \u5143\u306B\u623B\u3059 \u518D\u5B9F\u884C +editLabel=\u7DE8\u96C6 +cutLabel=\u5207\u53D6\u308A cutAction=cut-to-clipboard cutImage=resources/cut.gif -copyLabel=\u30b3\u30d4\u30fc +copyLabel=\u30B3\u30D4\u30FC copyAction=copy-to-clipboard copyImage=resources/copy.gif -pasteLabel=\u30da\u30fc\u30b9\u30c8 +pasteLabel=\u8CBC\u4ED8\u3051 pasteAction=paste-from-clipboard pasteImage=resources/paste.gif -undoLabel=\u5143\u306b\u623b\u3059 -undoAction=Undo -redoLabel=\u518d\u5b9f\u884c -redoAction=Redo +undoLabel=\u5143\u306B\u623B\u3059 +undoAction=\u5143\u306B\u623B\u3059 +redoLabel=\u518D\u5B9F\u884C +redoAction=\u518D\u5B9F\u884C # # debug Menu definition # -debug=dump showElementTree -debugLabel=\u30c7\u30d0\u30c3\u30b0 -dumpLabel=\u30e2\u30c7\u30eb\u3092 System.err \u306b\u30c0\u30f3\u30d7 +debug=showElementTree\u306E\u30C0\u30F3\u30D7 +debugLabel=\u30C7\u30D0\u30C3\u30B0 +dumpLabel=\u30E2\u30C7\u30EB\u3092System.err\u306B\u30C0\u30F3\u30D7 dumpAction=dump-model -showElementTreeLabel=\u8981\u7d20\u3092\u8868\u793a +showElementTreeLabel=\u8981\u7D20\u306E\u8868\u793A # toolbar definition # @@ -67,10 +67,10 @@ showElementTreeLabel=\u8981\u7d20\u3092\u8868\u793a # used as the basis of the tool definition. Actions # are of course sharable, and in this case are shared # with the menu items. -toolbar=new open save - cut copy paste -newTooltip=\u30d5\u30a1\u30a4\u30eb\u3092\u65b0\u898f\u4f5c\u6210\u3059\u308b -openTooltip=\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f -saveTooltip=\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58 -cutTooltip=\u9078\u629e\u3092\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u79fb\u52d5 -copyTooltip=\u9078\u629e\u3092\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc -pasteTooltip=\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u3092\u9078\u629e\u306b\u30da\u30fc\u30b9\u30c8 +toolbar=\u65B0\u898F \u958B\u304F \u4FDD\u5B58 - \u5207\u53D6\u308A \u30B3\u30D4\u30FC \u8CBC\u4ED8\u3051 +newTooltip=\u30D5\u30A1\u30A4\u30EB\u3092\u65B0\u898F\u4F5C\u6210\u3059\u308B +openTooltip=\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F +saveTooltip=\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58 +cutTooltip=\u9078\u629E\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u79FB\u52D5 +copyTooltip=\u9078\u629E\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC +pasteTooltip=\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u3092\u9078\u629E\u306B\u8CBC\u4ED8\u3051 diff --git a/jdk/src/share/demo/jfc/Notepad/resources/Notepad_zh_CN.properties b/jdk/src/share/demo/jfc/Notepad/resources/Notepad_zh_CN.properties index 61e9baadd36..9706f903dad 100644 --- a/jdk/src/share/demo/jfc/Notepad/resources/Notepad_zh_CN.properties +++ b/jdk/src/share/demo/jfc/Notepad/resources/Notepad_zh_CN.properties @@ -1,8 +1,8 @@ # # Resource strings for Notepad example -Title=\u5199\u5b57\u677f -ElementTreeFrameTitle=\u5143\u7d20 +Title=\u8BB0\u4E8B\u672C +ElementTreeFrameTitle=\u5143\u7D20 ViewportBackingStore=false # menubar definition @@ -21,14 +21,14 @@ menubar=file edit debug # save -> Notepad.saveAction # exit -> Notepad.exitAction file=new open save - exit -fileLabel=\u6587\u4ef6 -openLabel=\u6253\u5f00 +fileLabel=\u6587\u4EF6 +openLabel=\u6253\u5F00 openImage=resources/open.gif -newLabel=\u65b0\u5efa +newLabel=\u65B0\u5EFA newImage=resources/new.gif -saveLabel=\u4fdd\u5b58 +saveLabel=\u4FDD\u5B58 saveImage=resources/save.gif -exitLabel=\u9000\u51fa +exitLabel=\u9000\u51FA # # edit Menu definition @@ -37,29 +37,29 @@ exitLabel=\u9000\u51fa # copy -> JTextComponent.copyAction # paste -> JTextComponent.pasteAction edit=cut copy paste - undo redo -editLabel=\u7f16\u8f91 -cutLabel=\u526a\u5207 +editLabel=\u7F16\u8F91 +cutLabel=\u526A\u5207 cutAction=cut-to-clipboard cutImage=resources/cut.gif -copyLabel=\u62f7\u8d1d +copyLabel=\u590D\u5236 copyAction=copy-to-clipboard copyImage=resources/copy.gif -pasteLabel=\u7c98\u8d34 +pasteLabel=\u7C98\u8D34 pasteAction=paste-from-clipboard pasteImage=resources/paste.gif -undoLabel=\u64a4\u6d88 -undoAction=Undo -redoLabel=\u91cd\u505a -redoAction=Redo +undoLabel=\u64A4\u6D88 +undoAction=\u64A4\u6D88 +redoLabel=\u91CD\u505A +redoAction=\u91CD\u505A # # debug Menu definition # debug=dump showElementTree -debugLabel=\u8c03\u8bd5 -dumpLabel=\u5c06\u6a21\u5f0f\u8f6c\u50a8\u5230System.err +debugLabel=\u8C03\u8BD5 +dumpLabel=\u5C06\u6A21\u578B\u8F6C\u50A8\u5230 System.err dumpAction=dump-model -showElementTreeLabel=\u663e\u793a\u5143\u7d20 +showElementTreeLabel=\u663E\u793A\u5143\u7D20 # toolbar definition # @@ -68,9 +68,9 @@ showElementTreeLabel=\u663e\u793a\u5143\u7d20 # are of course sharable, and in this case are shared # with the menu items. toolbar=new open save - cut copy paste -newTooltip=\u521b\u5efa\u65b0\u6587\u4ef6 -openTooltip=\u6253\u5f00\u6587\u4ef6 -saveTooltip=\u4fdd\u5b58\u6587\u4ef6 -cutTooltip=\u526a\u5207\u9009\u62e9\u7684\u5185\u5bb9\u5230\u526a\u5e16\u677f\u4e2d -copyTooltip=\u62f7\u8d1d\u9009\u62e9\u7684\u5185\u5bb9\u5230\u526a\u5e16\u677f\u4e2d -pasteTooltip=\u7c98\u8d34\u9009\u62e9\u7684\u5185\u5bb9\u5230\u526a\u5e16\u677f\u4e2d +newTooltip=\u521B\u5EFA\u65B0\u6587\u4EF6 +openTooltip=\u6253\u5F00\u6587\u4EF6 +saveTooltip=\u4FDD\u5B58\u6587\u4EF6 +cutTooltip=\u526A\u5207\u9009\u5B9A\u5185\u5BB9\u5230\u526A\u5E16\u677F\u4E2D +copyTooltip=\u590D\u5236\u9009\u5B9A\u5185\u5BB9\u5230\u526A\u5E16\u677F\u4E2D +pasteTooltip=\u7C98\u8D34\u9009\u5B9A\u5185\u5BB9\u5230\u526A\u5E16\u677F\u4E2D diff --git a/jdk/src/share/demo/nio/zipfs/Demo.java b/jdk/src/share/demo/nio/zipfs/Demo.java index fd2ba7311b1..dfe77b877ed 100644 --- a/jdk/src/share/demo/nio/zipfs/Demo.java +++ b/jdk/src/share/demo/nio/zipfs/Demo.java @@ -33,6 +33,7 @@ import java.io.*; import java.nio.*; import java.nio.channels.*; import java.nio.file.*; +import java.nio.file.spi.*; import java.nio.file.attribute.*; import java.net.*; import java.text.DateFormat; @@ -144,78 +145,76 @@ public class Demo { } public static void main(String[] args) throws Throwable { + FileSystemProvider provider = getZipFSProvider(); + if (provider == null) { + System.err.println("ZIP filesystem provider is not installed"); + System.exit(1); + } Action action = Action.valueOf(args[0]); Map env = env = new HashMap<>(); if (action == Action.create) env.put("create", "true"); - if (action == Action.tlist || action == Action.twalk) - env.put("buildDirTree", true); - FileSystem fs = FileSystems.newFileSystem(Paths.get(args[1]), env, null); - - try { - FileSystem fs2; + try (FileSystem fs = provider.newFileSystem(Paths.get(args[1]), env)) { Path path, src, dst; boolean isRename = false; switch (action) { case rename: src = fs.getPath(args[2]); dst = fs.getPath(args[3]); - src.moveTo(dst); + Files.move(src, dst); break; case moveout: src = fs.getPath(args[2]); dst = Paths.get(args[3]); - src.moveTo(dst); + Files.move(src, dst); break; case movein: src = Paths.get(args[2]); dst = fs.getPath(args[3]); - src.moveTo(dst); + Files.move(src, dst); break; case copy: src = fs.getPath(args[2]); dst = fs.getPath(args[3]); - src.copyTo(dst); + Files.copy(src, dst); break; case copyout: src = fs.getPath(args[2]); dst = Paths.get(args[3]); - src.copyTo(dst); + Files.copy(src, dst); break; case copyin: src = Paths.get(args[2]); dst = fs.getPath(args[3]); - src.copyTo(dst); + Files.copy(src, dst); break; case copyin_attrs: src = Paths.get(args[2]); dst = fs.getPath(args[3]); - src.copyTo(dst, COPY_ATTRIBUTES); + Files.copy(src, dst, COPY_ATTRIBUTES); break; case copyout_attrs: src = fs.getPath(args[2]); dst = Paths.get(args[3]); - src.copyTo(dst, COPY_ATTRIBUTES); + Files.copy(src, dst, COPY_ATTRIBUTES); break; case zzmove: - fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null); - //sf1.getPath(args[3]).moveTo(fs2.getPath(args[3])); - z2zmove(fs, fs2, args[3]); - fs2.close(); + try (FileSystem fs2 = provider.newFileSystem(Paths.get(args[2]), env)) { + z2zmove(fs, fs2, args[3]); + } break; case zzcopy: - fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null); - //sf1.getPath(args[3]).copyTo(fs2.getPath(args[3])); - z2zcopy(fs, fs2, args[3]); - fs2.close(); + try (FileSystem fs2 = provider.newFileSystem(Paths.get(args[2]), env)) { + z2zcopy(fs, fs2, args[3]); + } break; case attrs: for (int i = 2; i < args.length; i++) { path = fs.getPath(args[i]); System.out.println(path); System.out.println( - Attributes.readBasicFileAttributes(path).toString()); + Files.readAttributes(path, BasicFileAttributes.class).toString()); } break; case setmtime: @@ -223,10 +222,10 @@ public class Demo { Date newDatetime = df.parse(args[2]); for (int i = 3; i < args.length; i++) { path = fs.getPath(args[i]); - path.setAttribute("lastModifiedTime", - FileTime.fromMillis(newDatetime.getTime())); + Files.setAttribute(path, "lastModifiedTime", + FileTime.fromMillis(newDatetime.getTime())); System.out.println( - Attributes.readBasicFileAttributes(path).toString()); + Files.readAttributes(path, BasicFileAttributes.class).toString()); } break; case setctime: @@ -234,10 +233,10 @@ public class Demo { newDatetime = df.parse(args[2]); for (int i = 3; i < args.length; i++) { path = fs.getPath(args[i]); - path.setAttribute("creationTime", - FileTime.fromMillis(newDatetime.getTime())); + Files.setAttribute(path, "creationTime", + FileTime.fromMillis(newDatetime.getTime())); System.out.println( - Attributes.readBasicFileAttributes(path).toString()); + Files.readAttributes(path, BasicFileAttributes.class).toString()); } break; case setatime: @@ -245,25 +244,22 @@ public class Demo { newDatetime = df.parse(args[2]); for (int i = 3; i < args.length; i++) { path = fs.getPath(args[i]); - path.setAttribute("lastAccessTime", - FileTime.fromMillis(newDatetime.getTime())); + Files.setAttribute(path, "lastAccessTime", + FileTime.fromMillis(newDatetime.getTime())); System.out.println( - Attributes.readBasicFileAttributes(path).toString()); + Files.readAttributes(path, BasicFileAttributes.class).toString()); } break; case attrsspace: path = fs.getPath("/"); - FileStore fstore = path.getFileStore(); - //System.out.println(fstore.getFileStoreAttributeView(FileStoreSpaceAttributeView.class) - // .readAttributes()); - // or + FileStore fstore = Files.getFileStore(path); System.out.printf("filestore[%s]%n", fstore.name()); System.out.printf(" totalSpace: %d%n", - (Long)fstore.getAttribute("space:totalSpace")); + (Long)fstore.getAttribute("totalSpace")); System.out.printf(" usableSpace: %d%n", - (Long)fstore.getAttribute("space:usableSpace")); + (Long)fstore.getAttribute("usableSpace")); System.out.printf(" unallocSpace: %d%n", - (Long)fstore.getAttribute("space:unallocatedSpace")); + (Long)fstore.getAttribute("unallocatedSpace")); break; case list: case tlist: @@ -293,7 +289,7 @@ public class Demo { break; case delete: for (int i = 2; i < args.length; i++) - fs.getPath(args[i]).delete(); + Files.delete(fs.getPath(args[i])); break; case create: case add: @@ -305,17 +301,19 @@ public class Demo { case lsdir: path = fs.getPath(args[2]); final String fStr = (args.length > 3)?args[3]:""; - DirectoryStream ds = path.newDirectoryStream( + try (DirectoryStream ds = Files.newDirectoryStream(path, new DirectoryStream.Filter() { public boolean accept(Path path) { return path.toString().contains(fStr); } - }); - for (Path p : ds) - System.out.println(p); + })) + { + for (Path p : ds) + System.out.println(p); + } break; case mkdir: - fs.getPath(args[2]).createDirectory(); + Files.createDirectory(fs.getPath(args[2])); break; case mkdirs: mkdirs(fs.getPath(args[2])); @@ -326,14 +324,14 @@ public class Demo { System.out.printf("%n%s%n", path); System.out.println("-------(1)---------"); System.out.println( - Attributes.readBasicFileAttributes(path).toString()); + Files.readAttributes(path, BasicFileAttributes.class).toString()); System.out.println("-------(2)---------"); - Map map = path.readAttributes("zip:*"); - for (Map.Entry e : map.entrySet()) { + Map map = Files.readAttributes(path, "zip:*"); + for (Map.Entry e : map.entrySet()) { System.out.printf(" %s : %s%n", e.getKey(), e.getValue()); } System.out.println("-------(3)---------"); - map = path.readAttributes("size,lastModifiedTime,isDirectory"); + map = Files.readAttributes(path, "size,lastModifiedTime,isDirectory"); for (Map.Entry e : map.entrySet()) { System.out.printf(" %s : %s%n", e.getKey(), e.getValue()); } @@ -349,12 +347,17 @@ public class Demo { } } catch (Exception x) { x.printStackTrace(); - } finally { - if (fs != null) - fs.close(); } } + private static FileSystemProvider getZipFSProvider() { + for (FileSystemProvider provider : FileSystemProvider.installedProviders()) { + if ("jar".equals(provider.getScheme())) + return provider; + } + return null; + } + private static byte[] getBytes(String name) { return name.getBytes(); } @@ -380,7 +383,7 @@ public class Demo { BasicFileAttributes attrs) { indent(); - System.out.printf("%s%n", file.getName().toString()); + System.out.printf("%s%n", file.getFileName().toString()); return FileVisitResult.CONTINUE; } @@ -406,35 +409,35 @@ public class Demo { private static void update(FileSystem fs, String path) throws Throwable{ Path src = FileSystems.getDefault().getPath(path); - if (Boolean.TRUE.equals(src.getAttribute("isDirectory"))) { - DirectoryStream ds = src.newDirectoryStream(); - for (Path child : ds) - update(fs, child.toString()); - ds.close(); + if (Files.isDirectory(src)) { + try (DirectoryStream ds = Files.newDirectoryStream(src)) { + for (Path child : ds) + update(fs, child.toString()); + } } else { Path dst = fs.getPath(path); Path parent = dst.getParent(); - if (parent != null && parent.notExists()) + if (parent != null && Files.notExists(parent)) mkdirs(parent); - src.copyTo(dst, REPLACE_EXISTING); + Files.copy(src, dst, REPLACE_EXISTING); } } private static void extract(FileSystem fs, String path) throws Throwable{ Path src = fs.getPath(path); - if (Boolean.TRUE.equals(src.getAttribute("isDirectory"))) { - DirectoryStream ds = src.newDirectoryStream(); - for (Path child : ds) - extract(fs, child.toString()); - ds.close(); + if (Files.isDirectory(src)) { + try (DirectoryStream ds = Files.newDirectoryStream(src)) { + for (Path child : ds) + extract(fs, child.toString()); + } } else { if (path.startsWith("/")) path = path.substring(1); Path dst = FileSystems.getDefault().getPath(path); Path parent = dst.getParent(); - if (parent.notExists()) + if (Files.notExists(parent)) mkdirs(parent); - src.copyTo(dst, REPLACE_EXISTING); + Files.copy(src, dst, REPLACE_EXISTING); } } @@ -445,21 +448,21 @@ public class Demo { Path srcPath = src.getPath(path); Path dstPath = dst.getPath(path); - if (Boolean.TRUE.equals(srcPath.getAttribute("isDirectory"))) { - if (!dstPath.exists()) { + if (Files.isDirectory(srcPath)) { + if (!Files.exists(dstPath)) { try { mkdirs(dstPath); } catch (FileAlreadyExistsException x) {} } - DirectoryStream ds = srcPath.newDirectoryStream(); - for (Path child : ds) { - z2zcopy(src, dst, - path + (path.endsWith("/")?"":"/") + child.getName()); + try (DirectoryStream ds = Files.newDirectoryStream(srcPath)) { + for (Path child : ds) { + z2zcopy(src, dst, + path + (path.endsWith("/")?"":"/") + child.getFileName()); + } } - ds.close(); } else { //System.out.println("copying..." + path); - srcPath.copyTo(dstPath); + Files.copy(srcPath, dstPath); } } @@ -480,9 +483,9 @@ public class Demo { dst = dstPath.resolve(dst); try { Path parent = dstPath.getParent(); - if (parent != null && parent.notExists()) + if (parent != null && Files.notExists(parent)) mkdirs(parent); - file.moveTo(dst); + Files.move(file, dst); } catch (IOException x) { x.printStackTrace(); } @@ -497,7 +500,7 @@ public class Demo { dst = dstPath.resolve(dst); try { - if (dst.notExists()) + if (Files.notExists(dst)) mkdirs(dst); } catch (IOException x) { x.printStackTrace(); @@ -511,7 +514,7 @@ public class Demo { throws IOException { try { - dir.delete(); + Files.delete(dir); } catch (IOException x) { //x.printStackTrace(); } @@ -525,15 +528,15 @@ public class Demo { path = path.toAbsolutePath(); Path parent = path.getParent(); if (parent != null) { - if (parent.notExists()) + if (Files.notExists(parent)) mkdirs(parent); } - path.createDirectory(); + Files.createDirectory(path); } private static void rmdirs(Path path) throws IOException { while (path != null && path.getNameCount() != 0) { - path.delete(); + Files.delete(path); path = path.getParent(); } } @@ -542,15 +545,15 @@ public class Demo { if (!"/".equals(path.toString())) { System.out.printf(" %s%n", path.toString()); if (verbose) - System.out.println(Attributes.readBasicFileAttributes(path).toString()); + System.out.println(Files.readAttributes(path, BasicFileAttributes.class).toString()); } - if (path.notExists()) + if (Files.notExists(path)) return; - if (Attributes.readBasicFileAttributes(path).isDirectory()) { - DirectoryStream ds = path.newDirectoryStream(); - for (Path child : ds) - list(child, verbose); - ds.close(); + if (Files.isDirectory(path)) { + try (DirectoryStream ds = Files.newDirectoryStream(path)) { + for (Path child : ds) + list(child, verbose); + } } } @@ -561,12 +564,11 @@ public class Demo { // src.toString(), dst.toString()); //streams - InputStream isSrc = src.newInputStream(); - InputStream isDst = dst.newInputStream(); byte[] bufSrc = new byte[8192]; byte[] bufDst = new byte[8192]; - - try { + try (InputStream isSrc = Files.newInputStream(src); + InputStream isDst = Files.newInputStream(dst)) + { int nSrc = 0; while ((nSrc = isSrc.read(bufSrc)) != -1) { int nDst = 0; @@ -588,24 +590,22 @@ public class Demo { nSrc--; } } - } finally { - isSrc.close(); - isDst.close(); } // channels - SeekableByteChannel chSrc = src.newByteChannel(); - SeekableByteChannel chDst = dst.newByteChannel(); - if (chSrc.size() != chDst.size()) { - System.out.printf("src[%s].size=%d, dst[%s].size=%d%n", - chSrc.toString(), chSrc.size(), - chDst.toString(), chDst.size()); - throw new RuntimeException("CHECK FAILED!"); - } - ByteBuffer bbSrc = ByteBuffer.allocate(8192); - ByteBuffer bbDst = ByteBuffer.allocate(8192); - try { + try (SeekableByteChannel chSrc = Files.newByteChannel(src); + SeekableByteChannel chDst = Files.newByteChannel(dst)) + { + if (chSrc.size() != chDst.size()) { + System.out.printf("src[%s].size=%d, dst[%s].size=%d%n", + chSrc.toString(), chSrc.size(), + chDst.toString(), chDst.size()); + throw new RuntimeException("CHECK FAILED!"); + } + ByteBuffer bbSrc = ByteBuffer.allocate(8192); + ByteBuffer bbDst = ByteBuffer.allocate(8192); + int nSrc = 0; while ((nSrc = chSrc.read(bbSrc)) != -1) { int nDst = chDst.read(bbDst); @@ -627,9 +627,6 @@ public class Demo { } } catch (IOException x) { x.printStackTrace(); - } finally { - chSrc.close(); - chDst.close(); } } @@ -641,23 +638,15 @@ public class Demo { openwrite.add(CREATE_NEW); openwrite.add(WRITE); - FileChannel srcFc = src.getFileSystem() - .provider() - .newFileChannel(src, read); - FileChannel dstFc = dst.getFileSystem() - .provider() - .newFileChannel(dst, openwrite); - - try { + try (FileChannel srcFc = src.getFileSystem().provider().newFileChannel(src, read); + FileChannel dstFc = dst.getFileSystem().provider().newFileChannel(dst, openwrite)) + { ByteBuffer bb = ByteBuffer.allocate(8192); while (srcFc.read(bb) >= 0) { bb.flip(); dstFc.write(bb); bb.clear(); } - } finally { - srcFc.close(); - dstFc.close(); } } @@ -669,35 +658,28 @@ public class Demo { openwrite.add(CREATE_NEW); openwrite.add(WRITE); - SeekableByteChannel srcCh = src.newByteChannel(read); - SeekableByteChannel dstCh = dst.newByteChannel(openwrite); - - try { + try (SeekableByteChannel srcCh = Files.newByteChannel(src, read); + SeekableByteChannel dstCh = Files.newByteChannel(dst, openwrite)) + { ByteBuffer bb = ByteBuffer.allocate(8192); while (srcCh.read(bb) >= 0) { bb.flip(); dstCh.write(bb); bb.clear(); } - } finally { - srcCh.close(); - dstCh.close(); } } private static void streamCopy(Path src, Path dst) throws IOException { - InputStream isSrc = src.newInputStream(); - OutputStream osDst = dst.newOutputStream(); byte[] buf = new byte[8192]; - try { + try (InputStream isSrc = Files.newInputStream(src); + OutputStream osDst = Files.newOutputStream(dst)) + { int n = 0; while ((n = isSrc.read(buf)) != -1) { osDst.write(buf, 0, n); } - } finally { - isSrc.close(); - osDst.close(); } } } diff --git a/jdk/src/share/demo/nio/zipfs/README.txt b/jdk/src/share/demo/nio/zipfs/README.txt index 9a216e48d70..e147b2900ec 100644 --- a/jdk/src/share/demo/nio/zipfs/README.txt +++ b/jdk/src/share/demo/nio/zipfs/README.txt @@ -5,9 +5,8 @@ The factory methods defined by the java.nio.file.FileSystems class can be used to create a FileSystem, eg: // use file type detection - Map env = Collections.emptyMap(); Path jarfile = Paths.get("foo.jar"); - FileSystem fs = FileSystems.newFileSystem(jarfile, env, null); + FileSystem fs = FileSystems.newFileSystem(jarfile, null); -or diff --git a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java index 5c31ebe7ba6..22b183d97a7 100644 --- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java +++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java @@ -32,11 +32,10 @@ package com.sun.nio.zipfs; -import java.nio.file.attribute.BasicFileAttributeView; -import java.nio.file.attribute.FileAttributeView; -import java.nio.file.attribute.FileTime; +import java.nio.file.attribute.*; import java.io.IOException; import java.util.LinkedHashMap; +import java.util.Map; /* * @author Xueming Shen, Rajendra Gutupalli, Jaya Hangal @@ -122,25 +121,19 @@ public class ZipFileAttributeView implements BasicFileAttributeView "' is unknown or read-only attribute"); } - public Object getAttribute(String attribute, boolean domap) + Map readAttributes(String attributes) throws IOException { ZipFileAttributes zfas = readAttributes(); - if (!domap) { - try { - return attribute(AttrID.valueOf(attribute), zfas); - } catch (IllegalArgumentException x) {} - return null; - } LinkedHashMap map = new LinkedHashMap<>(); - if ("*".equals(attribute)) { + if ("*".equals(attributes)) { for (AttrID id : AttrID.values()) { try { map.put(id.name(), attribute(id, zfas)); } catch (IllegalArgumentException x) {} } } else { - String[] as = attribute.split(","); + String[] as = attributes.split(","); for (String a : as) { try { map.put(a, attribute(AttrID.valueOf(a), zfas)); diff --git a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileStore.java b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileStore.java index 681509719e7..05719072de3 100644 --- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileStore.java +++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileStore.java @@ -32,14 +32,13 @@ package com.sun.nio.zipfs; import java.io.IOException; +import java.nio.file.Files; import java.nio.file.FileStore; import java.nio.file.FileSystems; import java.nio.file.Path; +import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.FileAttributeView; import java.nio.file.attribute.FileStoreAttributeView; -import java.nio.file.attribute.FileStoreSpaceAttributeView; -import java.nio.file.attribute.FileStoreSpaceAttributes; -import java.nio.file.attribute.Attributes; import java.nio.file.attribute.BasicFileAttributeView; import java.util.Formatter; @@ -87,71 +86,61 @@ public class ZipFileStore extends FileStore { public V getFileStoreAttributeView(Class type) { if (type == null) throw new NullPointerException(); - if (type == FileStoreSpaceAttributeView.class) - return (V) new ZipFileStoreAttributeView(this); - return null; + return (V)null; + } + + @Override + public long getTotalSpace() throws IOException { + return new ZipFileStoreAttributes(this).totalSpace(); + } + + @Override + public long getUsableSpace() throws IOException { + return new ZipFileStoreAttributes(this).usableSpace(); + } + + @Override + public long getUnallocatedSpace() throws IOException { + return new ZipFileStoreAttributes(this).unallocatedSpace(); } @Override public Object getAttribute(String attribute) throws IOException { - if (attribute.equals("space:totalSpace")) - return new ZipFileStoreAttributeView(this).readAttributes().totalSpace(); - if (attribute.equals("space:usableSpace")) - return new ZipFileStoreAttributeView(this).readAttributes().usableSpace(); - if (attribute.equals("space:unallocatedSpace")) - return new ZipFileStoreAttributeView(this).readAttributes().unallocatedSpace(); + if (attribute.equals("totalSpace")) + return getTotalSpace(); + if (attribute.equals("usableSpace")) + return getUsableSpace(); + if (attribute.equals("unallocatedSpace")) + return getUnallocatedSpace(); throw new UnsupportedOperationException("does not support the given attribute"); } - private static class ZipFileStoreAttributeView implements FileStoreSpaceAttributeView { + private static class ZipFileStoreAttributes { + final FileStore fstore; + final long size; - private final ZipFileStore fileStore; - - public ZipFileStoreAttributeView(ZipFileStore fileStore) { - this.fileStore = fileStore; + public ZipFileStoreAttributes(ZipFileStore fileStore) + throws IOException + { + Path path = FileSystems.getDefault().getPath(fileStore.name()); + this.size = Files.size(path); + this.fstore = Files.getFileStore(path); } - @Override - public String name() { - return "space"; + public long totalSpace() { + return size; } - @Override - public FileStoreSpaceAttributes readAttributes() throws IOException { - final String file = fileStore.name(); - Path path = FileSystems.getDefault().getPath(file); - final long size = Attributes.readBasicFileAttributes(path).size(); - final FileStore fstore = path.getFileStore(); - final FileStoreSpaceAttributes fstoreAttrs = - Attributes.readFileStoreSpaceAttributes(fstore); - return new FileStoreSpaceAttributes() { - public long totalSpace() { - return size; - } + public long usableSpace() throws IOException { + if (!fstore.isReadOnly()) + return fstore.getUsableSpace(); + return 0; + } - public long usableSpace() { - if (!fstore.isReadOnly()) - return fstoreAttrs.usableSpace(); - return 0; - } - - public long unallocatedSpace() { - if (!fstore.isReadOnly()) - return fstoreAttrs.unallocatedSpace(); - return 0; - } - - public String toString() { - StringBuilder sb = new StringBuilder(); - Formatter fm = new Formatter(sb); - fm.format("FileStoreSpaceAttributes[%s]%n", file); - fm.format(" totalSpace: %d%n", totalSpace()); - fm.format(" usableSpace: %d%n", usableSpace()); - fm.format(" unallocSpace: %d%n", unallocatedSpace()); - fm.close(); - return sb.toString(); - } - }; + public long unallocatedSpace() throws IOException { + if (!fstore.isReadOnly()) + return fstore.getUnallocatedSpace(); + return 0; } } } diff --git a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java index 1cd59db8bc1..40afd8afb84 100644 --- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java +++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java @@ -101,24 +101,25 @@ public class ZipFileSystem extends FileSystem { this.provider = provider; this.zfpath = zfpath; - if (zfpath.notExists()) { + if (Files.notExists(zfpath)) { if (createNew) { - OutputStream os = zfpath.newOutputStream(CREATE_NEW, WRITE); - new END().write(os, 0); - os.close(); + try (OutputStream os = Files.newOutputStream(zfpath, CREATE_NEW, WRITE)) { + new END().write(os, 0); + } } else { throw new FileSystemNotFoundException(zfpath.toString()); } } - zfpath.checkAccess(AccessMode.READ); // sm and existence check + // sm and existence check + zfpath.getFileSystem().provider().checkAccess(zfpath, AccessMode.READ); try { - zfpath.checkAccess(AccessMode.WRITE); + zfpath.getFileSystem().provider().checkAccess(zfpath, AccessMode.WRITE); } catch (AccessDeniedException x) { this.readOnly = true; } this.zc = ZipCoder.get(nameEncoding); this.defaultdir = new ZipPath(this, getBytes(defaultDir)); - this.ch = zfpath.newByteChannel(READ); + this.ch = Files.newByteChannel(zfpath, READ); this.cen = initCEN(); } @@ -159,9 +160,22 @@ public class ZipFileSystem extends FileSystem { } @Override - public ZipPath getPath(String path) { - if (path.length() == 0) - throw new InvalidPathException(path, "path should not be empty"); + public ZipPath getPath(String first, String... more) { + String path; + if (more.length == 0) { + path = first; + } else { + StringBuilder sb = new StringBuilder(); + sb.append(first); + for (String segment: more) { + if (segment.length() > 0) { + if (sb.length() > 0) + sb.append('/'); + sb.append(segment); + } + } + path = sb.toString(); + } return new ZipPath(this, getBytes(path)); } @@ -268,16 +282,22 @@ public class ZipFileSystem extends FileSystem { def.end(); } + IOException ioe = null; synchronized (tmppaths) { for (Path p: tmppaths) { try { - p.deleteIfExists(); + Files.deleteIfExists(p); } catch (IOException x) { - x.printStackTrace(); + if (ioe == null) + ioe = x; + else + ioe.addSuppressed(x); } } } - provider.removeFileSystem(zfpath); + provider.removeFileSystem(zfpath, this); + if (ioe != null) + throw ioe; } ZipFileAttributes getFileAttributes(byte[] path) @@ -444,7 +464,7 @@ public class ZipFileSystem extends FileSystem { u.bytes = Arrays.copyOf(eSrc.bytes, eSrc.bytes.length); else if (eSrc.file != null) { u.file = getTempPathForEntry(null); - eSrc.file.copyTo(u.file, REPLACE_EXISTING); + Files.copy(eSrc.file, u.file, REPLACE_EXISTING); } } } @@ -778,7 +798,8 @@ public class ZipFileSystem extends FileSystem { fch.close(); if (forWrite) { u.mtime = System.currentTimeMillis(); - u.size = Attributes.readBasicFileAttributes(u.file).size(); + u.size = Files.size(u.file); + update(u); } else { if (!isFCH) // if this is a new fch for reading @@ -805,13 +826,8 @@ public class ZipFileSystem extends FileSystem { if (path != null) { Entry e = getEntry0(path); if (e != null) { - InputStream is = newInputStream(path); - OutputStream os = tmpPath.newOutputStream(WRITE); - try { - copyStream(is, os); - } finally { - is.close(); - os.close(); + try (InputStream is = newInputStream(path)) { + Files.copy(is, tmpPath, REPLACE_EXISTING); } } } @@ -819,7 +835,7 @@ public class ZipFileSystem extends FileSystem { } private void removeTempPathForEntry(Path path) throws IOException { - path.delete(); + Files.delete(path); tmppaths.remove(path); } @@ -1073,11 +1089,11 @@ public class ZipFileSystem extends FileSystem { // shared key. consumer guarantees the "writeLock" before use it. private final IndexNode LOOKUPKEY = IndexNode.keyOf(null); - private void updateDelete(Entry e) { + private void updateDelete(IndexNode inode) { beginWrite(); try { - removeFromTree(e); - inodes.remove(e); + removeFromTree(inode); + inodes.remove(inode); hasUpdate = true; } finally { endWrite(); @@ -1158,7 +1174,7 @@ public class ZipFileSystem extends FileSystem { for (ExChannelCloser ecc : exChClosers) { if (ecc.streams.isEmpty()) { ecc.ch.close(); - ecc.path.delete(); + Files.delete(ecc.path); exChClosers.remove(ecc); } } @@ -1166,7 +1182,7 @@ public class ZipFileSystem extends FileSystem { if (!hasUpdate) return; Path tmpFile = createTempFileInSameDirectoryAs(zfpath); - OutputStream os = tmpFile.newOutputStream(WRITE); + OutputStream os = Files.newOutputStream(tmpFile, WRITE); ArrayList elist = new ArrayList<>(inodes.size()); long written = 0; byte[] buf = new byte[8192]; @@ -1191,26 +1207,26 @@ public class ZipFileSystem extends FileSystem { os.write(e.bytes); // already written += e.bytes.length; } else if (e.file != null) { // tmp file - InputStream is = e.file.newInputStream(); - int n; - if (e.type == Entry.NEW) { // deflated already - while ((n = is.read(buf)) != -1) { - os.write(buf, 0, n); - written += n; + try (InputStream is = Files.newInputStream(e.file)) { + int n; + if (e.type == Entry.NEW) { // deflated already + while ((n = is.read(buf)) != -1) { + os.write(buf, 0, n); + written += n; + } + } else if (e.type == Entry.FILECH) { + // the data are not deflated, use ZEOS + try (OutputStream os2 = new EntryOutputStream(e, os)) { + while ((n = is.read(buf)) != -1) { + os2.write(buf, 0, n); + } + } + written += e.csize; + if ((e.flag & FLAG_DATADESCR) != 0) + written += e.writeEXT(os); } - } else if (e.type == Entry.FILECH) { - // the data are not deflated, use ZEOS - OutputStream os2 = new EntryOutputStream(e, os); - while ((n = is.read(buf)) != -1) { - os2.write(buf, 0, n); - } - os2.close(); - written += e.csize; - if ((e.flag & FLAG_DATADESCR) != 0) - written += e.writeEXT(os); } - is.close(); - e.file.delete(); + Files.delete(e.file); tmppaths.remove(e.file); } else { // dir, 0-length data @@ -1257,15 +1273,15 @@ public class ZipFileSystem extends FileSystem { createTempFileInSameDirectoryAs(zfpath), ch, streams); - zfpath.moveTo(ecc.path, REPLACE_EXISTING); + Files.move(zfpath, ecc.path, REPLACE_EXISTING); exChClosers.add(ecc); streams = Collections.synchronizedSet(new HashSet()); } else { ch.close(); - zfpath.delete(); + Files.delete(zfpath); } - tmpFile.moveTo(zfpath, REPLACE_EXISTING); + Files.move(tmpFile, zfpath, REPLACE_EXISTING); hasUpdate = false; // clear /* if (isOpen) { @@ -1304,16 +1320,17 @@ public class ZipFileSystem extends FileSystem { throws IOException { checkWritable(); - Entry e = getEntry0(path); - if (e == null) { + + IndexNode inode = getInode(path); + if (inode == null) { if (path != null && path.length == 0) throw new ZipException("root directory can't not be delete"); if (failIfNotExists) throw new NoSuchFileException(getString(path)); } else { - if (e.isDir() && e.child != null) + if (inode.isDir() && inode.child != null) throw new DirectoryNotEmptyException(getString(path)); - updateDelete(e); + updateDelete(inode); } } @@ -1343,7 +1360,7 @@ public class ZipFileSystem extends FileSystem { OutputStream os; if (useTempFile) { e.file = getTempPathForEntry(null); - os = e.file.newOutputStream(WRITE); + os = Files.newOutputStream(e.file, WRITE); } else { os = new ByteArrayOutputStream((e.size > 0)? (int)e.size : 8192); } @@ -1359,12 +1376,12 @@ public class ZipFileSystem extends FileSystem { if (e.bytes != null) eis = new ByteArrayInputStream(e.bytes); else if (e.file != null) - eis = e.file.newInputStream(); + eis = Files.newInputStream(e.file); else throw new ZipException("update entry data is missing"); } else if (e.type == Entry.FILECH) { // FILECH result is un-compressed. - eis = e.file.newInputStream(); + eis = Files.newInputStream(e.file); // TBD: wrap to hook close() // streams.add(eis); return eis; diff --git a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java index cf39b07cae7..60c8fed9291 100644 --- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java +++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java @@ -31,23 +31,18 @@ package com.sun.nio.zipfs; -import java.io.IOException; -import java.nio.channels.FileChannel; -import java.nio.file.FileRef; -import java.nio.file.FileSystem; -import java.nio.file.FileSystemNotFoundException; -import java.nio.file.FileSystemAlreadyExistsException; -import java.nio.file.OpenOption; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.ProviderMismatchException; -import java.nio.file.attribute.FileAttribute; +import java.io.*; +import java.nio.channels.*; +import java.nio.file.*; +import java.nio.file.DirectoryStream.Filter; +import java.nio.file.attribute.*; import java.nio.file.spi.FileSystemProvider; import java.net.URI; import java.net.URISyntaxException; import java.util.HashMap; import java.util.Map; import java.util.Set; +import java.util.concurrent.ExecutorService; /* * @@ -87,28 +82,25 @@ public class ZipFileSystemProvider extends FileSystemProvider { public FileSystem newFileSystem(URI uri, Map env) throws IOException { - return newFileSystem(uriToPath(uri), env); + return newFileSystem(uriToPath(uri), env, true); } @Override - public FileSystem newFileSystem(FileRef file, Map env) + public FileSystem newFileSystem(Path path, Map env) throws IOException { - if (!(file instanceof Path)) - throw new UnsupportedOperationException(); - Path path = (Path)file; if (!path.toUri().getScheme().equalsIgnoreCase("file")) { throw new UnsupportedOperationException(); } - return newFileSystem(path, env); + return newFileSystem(path, env, false); } - private FileSystem newFileSystem(Path path, Map env) + private FileSystem newFileSystem(Path path, Map env, boolean checkIfFSExists) throws IOException { synchronized(filesystems) { Path realPath = null; - if (path.exists()) { + if (checkIfFSExists && Files.exists(path)) { realPath = path.toRealPath(true); if (filesystems.containsKey(realPath)) throw new FileSystemAlreadyExistsException(); @@ -116,7 +108,8 @@ public class ZipFileSystemProvider extends FileSystemProvider { ZipFileSystem zipfs = new ZipFileSystem(this, path, env); if (realPath == null) realPath = path.toRealPath(true); - filesystems.put(realPath, zipfs); + if (!filesystems.containsKey(realPath)) + filesystems.put(realPath, zipfs); return zipfs; } } @@ -133,18 +126,6 @@ public class ZipFileSystemProvider extends FileSystemProvider { return getFileSystem(uri).getPath(spec.substring(sep + 1)); } - @Override - public FileChannel newFileChannel(Path path, - Set options, - FileAttribute... attrs) - throws IOException - { - if (path == null) - throw new NullPointerException("path is null"); - if (path instanceof ZipPath) - return ((ZipPath)path).newFileChannel(options, attrs); - throw new ProviderMismatchException(); - } @Override public FileSystem getFileSystem(URI uri) { @@ -161,9 +142,155 @@ public class ZipFileSystemProvider extends FileSystemProvider { } } - void removeFileSystem(Path zfpath) throws IOException { + // Checks that the given file is a UnixPath + static final ZipPath toZipPath(Path path) { + if (path == null) + throw new NullPointerException(); + if (!(path instanceof ZipPath)) + throw new ProviderMismatchException(); + return (ZipPath)path; + } + + @Override + public void checkAccess(Path path, AccessMode... modes) throws IOException { + toZipPath(path).checkAccess(modes); + } + + @Override + public void copy(Path src, Path target, CopyOption... options) + throws IOException + { + toZipPath(src).copy(toZipPath(target), options); + } + + @Override + public void createDirectory(Path path, FileAttribute... attrs) + throws IOException + { + toZipPath(path).createDirectory(attrs); + } + + @Override + public final void delete(Path path) throws IOException { + toZipPath(path).delete(); + } + + @Override + @SuppressWarnings("unchecked") + public V + getFileAttributeView(Path path, Class type, LinkOption... options) + { + return (V)ZipFileAttributeView.get(toZipPath(path), type); + } + + @Override + public FileStore getFileStore(Path path) throws IOException { + return toZipPath(path).getFileStore(); + } + + @Override + public boolean isHidden(Path path) { + return toZipPath(path).isHidden(); + } + + @Override + public boolean isSameFile(Path path, Path other) throws IOException { + return toZipPath(path).isSameFile(other); + } + + @Override + public void move(Path src, Path target, CopyOption... options) + throws IOException + { + toZipPath(src).move(toZipPath(target), options); + } + + @Override + public AsynchronousFileChannel newAsynchronousFileChannel(Path path, + Set options, + ExecutorService exec, + FileAttribute... attrs) + throws IOException + { + throw new UnsupportedOperationException(); + } + + @Override + public SeekableByteChannel newByteChannel(Path path, + Set options, + FileAttribute... attrs) + throws IOException + { + return toZipPath(path).newByteChannel(options, attrs); + } + + @Override + public DirectoryStream newDirectoryStream( + Path path, Filter filter) throws IOException + { + return toZipPath(path).newDirectoryStream(filter); + } + + @Override + public FileChannel newFileChannel(Path path, + Set options, + FileAttribute... attrs) + throws IOException + { + return toZipPath(path).newFileChannel(options, attrs); + } + + @Override + public InputStream newInputStream(Path path, OpenOption... options) + throws IOException + { + return toZipPath(path).newInputStream(options); + } + + @Override + public OutputStream newOutputStream(Path path, OpenOption... options) + throws IOException + { + return toZipPath(path).newOutputStream(options); + } + + @Override + public A + readAttributes(Path path, Class type, LinkOption... options) + throws IOException + { + if (type == BasicFileAttributes.class || type == ZipFileAttributes.class) + return (A)toZipPath(path).getAttributes(); + return null; + } + + @Override + public Map + readAttributes(Path path, String attribute, LinkOption... options) + throws IOException + { + return toZipPath(path).readAttributes(attribute, options); + } + + @Override + public Path readSymbolicLink(Path link) throws IOException { + throw new UnsupportedOperationException("Not supported."); + } + + @Override + public void setAttribute(Path path, String attribute, + Object value, LinkOption... options) + throws IOException + { + toZipPath(path).setAttribute(attribute, value, options); + } + + ////////////////////////////////////////////////////////////// + void removeFileSystem(Path zfpath, ZipFileSystem zfs) throws IOException { synchronized (filesystems) { - filesystems.remove(zfpath.toRealPath(true)); + zfpath = zfpath.toRealPath(true); + if (filesystems.get(zfpath) == zfs) + filesystems.remove(zfpath); } } } diff --git a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipPath.java b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipPath.java index f1617db40d2..b03ba2929eb 100644 --- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipPath.java +++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipPath.java @@ -31,29 +31,23 @@ package com.sun.nio.zipfs; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; +import java.io.*; import java.net.URI; -import java.nio.channels.FileChannel; -import java.nio.channels.SeekableByteChannel; +import java.nio.channels.*; import java.nio.file.*; import java.nio.file.DirectoryStream.Filter; -import java.nio.file.attribute.BasicFileAttributeView; -import java.nio.file.attribute.FileAttribute; -import java.nio.file.attribute.FileAttributeView; -import java.nio.file.attribute.FileTime; +import java.nio.file.attribute.*; import java.util.*; import static java.nio.file.StandardOpenOption.*; import static java.nio.file.StandardCopyOption.*; + /** * * @author Xueming Shen, Rajendra Gutupalli,Jaya Hangal */ -public class ZipPath extends Path { +public class ZipPath implements Path { private final ZipFileSystem zfs; private final byte[] path; @@ -82,7 +76,7 @@ public class ZipPath extends Path { } @Override - public Path getName() { + public Path getFileName() { initOffsets(); int count = offsets.length; if (count == 0) @@ -162,8 +156,7 @@ public class ZipPath extends Path { return realPath; } - @Override - public boolean isHidden() { + boolean isHidden() { return false; } @@ -230,7 +223,7 @@ public class ZipPath extends Path { public Path relativize(Path other) { final ZipPath o = checkPath(other); if (o.equals(this)) - return null; + return new ZipPath(getFileSystem(), new byte[0], true); if (/* this.getFileSystem() != o.getFileSystem() || */ this.isAbsolute() != o.isAbsolute()) { throw new IllegalArgumentException(); @@ -272,13 +265,11 @@ public class ZipPath extends Path { @Override public boolean isAbsolute() { - return (this.path[0] == '/'); + return (this.path.length > 0 && path[0] == '/'); } @Override public ZipPath resolve(Path other) { - if (other == null) - return this; final ZipPath o = checkPath(other); if (o.isAbsolute()) return o; @@ -297,39 +288,70 @@ public class ZipPath extends Path { } @Override - public ZipPath resolve(String other) { - return resolve(getFileSystem().getPath(other)); + public Path resolveSibling(Path other) { + if (other == null) + throw new NullPointerException(); + Path parent = getParent(); + return (parent == null) ? other : parent.resolve(other); } @Override public boolean startsWith(Path other) { final ZipPath o = checkPath(other); - if (o.isAbsolute() != this.isAbsolute()) + if (o.isAbsolute() != this.isAbsolute() || + o.path.length > this.path.length) return false; - final int oCount = o.getNameCount(); - if (getNameCount() < oCount) - return false; - for (int i = 0; i < oCount; i++) { - if (!o.getName(i).equals(getName(i))) + int olast = o.path.length; + for (int i = 0; i < olast; i++) { + if (o.path[i] != this.path[i]) return false; } - return true; + olast--; + return o.path.length == this.path.length || + o.path[olast] == '/' || + this.path[olast + 1] == '/'; } @Override public boolean endsWith(Path other) { final ZipPath o = checkPath(other); - if (o.isAbsolute()) - return this.isAbsolute() ? this.equals(o) : false; - int i = o.getNameCount(); - int j = this.getNameCount(); - if (j < i) + int olast = o.path.length - 1; + if (olast > 0 && o.path[olast] == '/') + olast--; + int last = this.path.length - 1; + if (last > 0 && this.path[last] == '/') + last--; + if (olast == -1) // o.path.length == 0 + return last == -1; + if ((o.isAbsolute() &&(!this.isAbsolute() || olast != last)) || + (last < olast)) return false; - for (--i, --j; i >= 0; i--, j--) { - if (!o.getName(i).equals(this.getName(j))) + for (; olast >= 0; olast--, last--) { + if (o.path[olast] != this.path[last]) return false; } - return true; + return o.path[olast + 1] == '/' || + last == -1 || this.path[last] == '/'; + } + + @Override + public ZipPath resolve(String other) { + return resolve(getFileSystem().getPath(other)); + } + + @Override + public final Path resolveSibling(String other) { + return resolveSibling(getFileSystem().getPath(other)); + } + + @Override + public final boolean startsWith(String other) { + return startsWith(getFileSystem().getPath(other)); + } + + @Override + public final boolean endsWith(String other) { + return endsWith(getFileSystem().getPath(other)); } @Override @@ -337,8 +359,6 @@ public class ZipPath extends Path { byte[] resolved = getResolved(); if (resolved == path) // no change return this; - if (resolved.length == 0) - return null; return new ZipPath(zfs, resolved, true); } @@ -548,198 +568,6 @@ public class ZipPath extends Path { return len1 - len2; } - @Override - public Path createSymbolicLink( - Path target, FileAttribute... attrs) throws IOException { - throw new UnsupportedOperationException("Not supported."); - } - - @Override - public Path createLink( - Path existing) throws IOException { - throw new UnsupportedOperationException("Not supported."); - } - - @Override - public Path readSymbolicLink() throws IOException { - throw new UnsupportedOperationException("Not supported."); - } - - @Override - public Path createDirectory(FileAttribute... attrs) - throws IOException - { - zfs.createDirectory(getResolvedPath(), attrs); - return this; - } - - public final Path createFile(FileAttribute... attrs) - throws IOException - { - OutputStream os = newOutputStream(CREATE_NEW, WRITE); - try { - os.close(); - } catch (IOException x) {} - return this; - } - - @Override - public InputStream newInputStream(OpenOption... options) - throws IOException { - if (options.length > 0) { - for (OpenOption opt : options) { - if (opt != READ) - throw new UnsupportedOperationException("'" + opt + "' not allowed"); - } - } - return zfs.newInputStream(getResolvedPath()); - } - - private static final DirectoryStream.Filter acceptAllFilter = - new DirectoryStream.Filter<>() { - @Override public boolean accept(Path entry) { return true; } - }; - - @Override - public final DirectoryStream newDirectoryStream() throws IOException { - return newDirectoryStream(acceptAllFilter); - } - - @Override - public DirectoryStream newDirectoryStream(Filter filter) - throws IOException - { - return new ZipDirectoryStream(this, filter); - } - - @Override - public final DirectoryStream newDirectoryStream(String glob) - throws IOException - { - // avoid creating a matcher if all entries are required. - if (glob.equals("*")) - return newDirectoryStream(); - - // create a matcher and return a filter that uses it. - final PathMatcher matcher = getFileSystem().getPathMatcher("glob:" + glob); - DirectoryStream.Filter filter = new DirectoryStream.Filter<>() { - @Override - public boolean accept(Path entry) { - return matcher.matches(entry.getName()); - } - }; - return newDirectoryStream(filter); - } - - @Override - public final void delete() throws IOException { - zfs.deleteFile(getResolvedPath(), true); - } - - @Override - public final void deleteIfExists() throws IOException { - zfs.deleteFile(getResolvedPath(), false); - } - - ZipFileAttributes getAttributes() throws IOException - { - ZipFileAttributes zfas = zfs.getFileAttributes(getResolvedPath()); - if (zfas == null) - throw new NoSuchFileException(toString()); - return zfas; - } - - @Override - @SuppressWarnings("unchecked") - public V getFileAttributeView(Class type, - LinkOption... options) - { - return (V)ZipFileAttributeView.get(this, type); - } - - @Override - public void setAttribute(String attribute, - Object value, - LinkOption... options) - throws IOException - { - String type = null; - String attr = null; - int colonPos = attribute.indexOf(':'); - if (colonPos == -1) { - type = "basic"; - attr = attribute; - } else { - type = attribute.substring(0, colonPos++); - attr = attribute.substring(colonPos); - } - ZipFileAttributeView view = ZipFileAttributeView.get(this, type); - if (view == null) - throw new UnsupportedOperationException("view <" + view + "> is not supported"); - view.setAttribute(attr, value); - } - - void setTimes(FileTime mtime, FileTime atime, FileTime ctime) - throws IOException - { - zfs.setTimes(getResolvedPath(), mtime, atime, ctime); - } - - private Object getAttributesImpl(String attribute, boolean domap) - throws IOException - { - String view = null; - String attr = null; - int colonPos = attribute.indexOf(':'); - if (colonPos == -1) { - view = "basic"; - attr = attribute; - } else { - view = attribute.substring(0, colonPos++); - attr = attribute.substring(colonPos); - } - ZipFileAttributeView zfv = ZipFileAttributeView.get(this, view); - if (zfv == null) { - throw new UnsupportedOperationException("view not supported"); - } - return zfv.getAttribute(attr, domap); - } - - @Override - public Object getAttribute(String attribute, LinkOption... options) - throws IOException - { - return getAttributesImpl(attribute, false); - } - - @Override - public Map readAttributes(String attribute, LinkOption... options) - throws IOException - { - return (Map)getAttributesImpl(attribute, true); - } - - @Override - public FileStore getFileStore() throws IOException { - // each ZipFileSystem only has one root (as requested for now) - if (exists()) - return zfs.getFileStore(this); - throw new NoSuchFileException(zfs.getString(path)); - } - - @Override - public boolean isSameFile(Path other) throws IOException { - if (this.equals(other)) - return true; - if (other == null || - this.getFileSystem() != other.getFileSystem()) - return false; - this.checkAccess(); - other.checkAccess(); - return Arrays.equals(this.getResolvedPath(), - ((ZipPath)other).getResolvedPath()); - } - public WatchKey register( WatchService watcher, WatchEvent.Kind[] events, @@ -755,6 +583,11 @@ public class ZipPath extends Path { return register(watcher, events, new WatchEvent.Modifier[0]); } + @Override + public final File toFile() { + throw new UnsupportedOperationException(); + } + @Override public Iterator iterator() { return new Iterator<>() { @@ -783,9 +616,115 @@ public class ZipPath extends Path { }; } - @Override - public SeekableByteChannel newByteChannel(Set options, - FileAttribute... attrs) + ///////////////////////////////////////////////////////////////////// + + + void createDirectory(FileAttribute... attrs) + throws IOException + { + zfs.createDirectory(getResolvedPath(), attrs); + } + + InputStream newInputStream(OpenOption... options) throws IOException + { + if (options.length > 0) { + for (OpenOption opt : options) { + if (opt != READ) + throw new UnsupportedOperationException("'" + opt + "' not allowed"); + } + } + return zfs.newInputStream(getResolvedPath()); + } + + DirectoryStream newDirectoryStream(Filter filter) + throws IOException + { + return new ZipDirectoryStream(this, filter); + } + + void delete() throws IOException { + zfs.deleteFile(getResolvedPath(), true); + } + + void deleteIfExists() throws IOException { + zfs.deleteFile(getResolvedPath(), false); + } + + ZipFileAttributes getAttributes() throws IOException + { + ZipFileAttributes zfas = zfs.getFileAttributes(getResolvedPath()); + if (zfas == null) + throw new NoSuchFileException(toString()); + return zfas; + } + + void setAttribute(String attribute, Object value, LinkOption... options) + throws IOException + { + String type = null; + String attr = null; + int colonPos = attribute.indexOf(':'); + if (colonPos == -1) { + type = "basic"; + attr = attribute; + } else { + type = attribute.substring(0, colonPos++); + attr = attribute.substring(colonPos); + } + ZipFileAttributeView view = ZipFileAttributeView.get(this, type); + if (view == null) + throw new UnsupportedOperationException("view <" + view + "> is not supported"); + view.setAttribute(attr, value); + } + + void setTimes(FileTime mtime, FileTime atime, FileTime ctime) + throws IOException + { + zfs.setTimes(getResolvedPath(), mtime, atime, ctime); + } + + Map readAttributes(String attributes, LinkOption... options) + throws IOException + + { + String view = null; + String attrs = null; + int colonPos = attributes.indexOf(':'); + if (colonPos == -1) { + view = "basic"; + attrs = attributes; + } else { + view = attributes.substring(0, colonPos++); + attrs = attributes.substring(colonPos); + } + ZipFileAttributeView zfv = ZipFileAttributeView.get(this, view); + if (zfv == null) { + throw new UnsupportedOperationException("view not supported"); + } + return zfv.readAttributes(attrs); + } + + FileStore getFileStore() throws IOException { + // each ZipFileSystem only has one root (as requested for now) + if (exists()) + return zfs.getFileStore(this); + throw new NoSuchFileException(zfs.getString(path)); + } + + boolean isSameFile(Path other) throws IOException { + if (this.equals(other)) + return true; + if (other == null || + this.getFileSystem() != other.getFileSystem()) + return false; + this.checkAccess(); + ((ZipPath)other).checkAccess(); + return Arrays.equals(this.getResolvedPath(), + ((ZipPath)other).getResolvedPath()); + } + + SeekableByteChannel newByteChannel(Set options, + FileAttribute... attrs) throws IOException { return zfs.newByteChannel(getResolvedPath(), options, attrs); @@ -799,16 +738,7 @@ public class ZipPath extends Path { return zfs.newFileChannel(getResolvedPath(), options, attrs); } - @Override - public SeekableByteChannel newByteChannel(OpenOption... options) - throws IOException { - Set set = new HashSet<>(options.length); - Collections.addAll(set, options); - return newByteChannel(set); - } - - @Override - public void checkAccess(AccessMode... modes) throws IOException { + void checkAccess(AccessMode... modes) throws IOException { boolean w = false; boolean x = false; for (AccessMode mode : modes) { @@ -834,11 +764,9 @@ public class ZipPath extends Path { } if (x) throw new AccessDeniedException(toString()); - } - @Override - public boolean exists() { + boolean exists() { if (path.length == 1 && path[0] == '/') return true; try { @@ -847,15 +775,7 @@ public class ZipPath extends Path { return false; } - @Override - public boolean notExists() { - return !exists(); - } - - - @Override - public OutputStream newOutputStream(OpenOption... options) - throws IOException + OutputStream newOutputStream(OpenOption... options) throws IOException { if (options.length == 0) return zfs.newOutputStream(getResolvedPath(), @@ -863,42 +783,32 @@ public class ZipPath extends Path { return zfs.newOutputStream(getResolvedPath(), options); } - @Override - public Path moveTo(Path target, CopyOption... options) + void move(ZipPath target, CopyOption... options) throws IOException { - if (this.zfs.provider() == target.getFileSystem().provider() && - this.zfs.getZipFile().isSameFile(((ZipPath)target).zfs.getZipFile())) + if (Files.isSameFile(this.zfs.getZipFile(), target.zfs.getZipFile())) { zfs.copyFile(true, - getResolvedPath(), - ((ZipPath)target).getResolvedPath(), + getResolvedPath(), target.getResolvedPath(), options); } else { copyToTarget(target, options); delete(); } - return target; } - @Override - public Path copyTo(Path target, CopyOption... options) + void copy(ZipPath target, CopyOption... options) throws IOException { - if (this.zfs.provider() == target.getFileSystem().provider() && - this.zfs.getZipFile().isSameFile(((ZipPath)target).zfs.getZipFile())) - { + if (Files.isSameFile(this.zfs.getZipFile(), target.zfs.getZipFile())) zfs.copyFile(false, - getResolvedPath(), - ((ZipPath)target).getResolvedPath(), + getResolvedPath(), target.getResolvedPath(), options); - } else { + else copyToTarget(target, options); - } - return target; } - private void copyToTarget(Path target, CopyOption... options) + private void copyToTarget(ZipPath target, CopyOption... options) throws IOException { boolean replaceExisting = false; @@ -948,7 +858,7 @@ public class ZipPath extends Path { } if (copyAttrs) { BasicFileAttributeView view = - target.getFileAttributeView(BasicFileAttributeView.class); + ZipFileAttributeView.get(target, BasicFileAttributeView.class); try { view.setTimes(zfas.lastModifiedTime(), zfas.lastAccessTime(), diff --git a/jdk/src/share/demo/zipfs b/jdk/src/share/demo/zipfs deleted file mode 100644 index fd2ba7311b1..00000000000 --- a/jdk/src/share/demo/zipfs +++ /dev/null @@ -1,703 +0,0 @@ -/* - * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * - Neither the name of Oracle nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -import java.io.*; -import java.nio.*; -import java.nio.channels.*; -import java.nio.file.*; -import java.nio.file.attribute.*; -import java.net.*; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.*; - -import static java.nio.file.StandardOpenOption.*; -import static java.nio.file.StandardCopyOption.*; - -/* - * ZipFileSystem usage demo - * - * java Demo action ZipfileName [...] - * - * @author Xueming Shen - */ - -public class Demo { - - static enum Action { - rename, // - // rename entry src to dst inside zipfile - - movein, // - // move an external src file into zipfile - // as entry dst - - moveout, // - // move a zipfile entry src out to dst - - copy, // - // copy entry src to dst inside zipfile - - copyin, // - // copy an external src file into zipfile - // as entry dst - - copyin_attrs, // - // copy an external src file into zipfile - // as entry dst, with attributes (timestamp) - - copyout, // - // copy zipfile entry src" out to file dst - - copyout_attrs, // - - zzmove, // - // move entry path/dir from zfsrc to zfdst - - zzcopy, // - // copy path from zipfile zfsrc to zipfile - // zfdst - - attrs, // - // printout the attributes of entry path - - attrsspace, // - // printout the storespace attrs of entry path - - setmtime, // - // set the lastModifiedTime of entry path - - setatime, // - setctime, // - - lsdir, // - // list dir's direct child files/dirs - - mkdir, // - - mkdirs, // - - rmdirs, // - - list, // - // recursively list all entries of dir - // via DirectoryStream - - tlist, // - // list with buildDirTree=true - - vlist, // - // recursively verbose list all entries of - // dir via DirectoryStream - - walk, // - // recursively walk all entries of dir - // via Files.walkFileTree - - twalk, // - // walk with buildDirTree=true - - extract, // - - update, // - - delete, // - - add, // - - create, // - // create a new zipfile if it doesn't exit - // and then add the file(s) into it. - - attrs2, // - // test different ways to print attrs - - prof, - } - - public static void main(String[] args) throws Throwable { - - Action action = Action.valueOf(args[0]); - Map env = env = new HashMap<>(); - if (action == Action.create) - env.put("create", "true"); - if (action == Action.tlist || action == Action.twalk) - env.put("buildDirTree", true); - FileSystem fs = FileSystems.newFileSystem(Paths.get(args[1]), env, null); - - try { - FileSystem fs2; - Path path, src, dst; - boolean isRename = false; - switch (action) { - case rename: - src = fs.getPath(args[2]); - dst = fs.getPath(args[3]); - src.moveTo(dst); - break; - case moveout: - src = fs.getPath(args[2]); - dst = Paths.get(args[3]); - src.moveTo(dst); - break; - case movein: - src = Paths.get(args[2]); - dst = fs.getPath(args[3]); - src.moveTo(dst); - break; - case copy: - src = fs.getPath(args[2]); - dst = fs.getPath(args[3]); - src.copyTo(dst); - break; - case copyout: - src = fs.getPath(args[2]); - dst = Paths.get(args[3]); - src.copyTo(dst); - break; - case copyin: - src = Paths.get(args[2]); - dst = fs.getPath(args[3]); - src.copyTo(dst); - break; - case copyin_attrs: - src = Paths.get(args[2]); - dst = fs.getPath(args[3]); - src.copyTo(dst, COPY_ATTRIBUTES); - break; - case copyout_attrs: - src = fs.getPath(args[2]); - dst = Paths.get(args[3]); - src.copyTo(dst, COPY_ATTRIBUTES); - break; - case zzmove: - fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null); - //sf1.getPath(args[3]).moveTo(fs2.getPath(args[3])); - z2zmove(fs, fs2, args[3]); - fs2.close(); - break; - case zzcopy: - fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null); - //sf1.getPath(args[3]).copyTo(fs2.getPath(args[3])); - z2zcopy(fs, fs2, args[3]); - fs2.close(); - break; - case attrs: - for (int i = 2; i < args.length; i++) { - path = fs.getPath(args[i]); - System.out.println(path); - System.out.println( - Attributes.readBasicFileAttributes(path).toString()); - } - break; - case setmtime: - DateFormat df = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss"); - Date newDatetime = df.parse(args[2]); - for (int i = 3; i < args.length; i++) { - path = fs.getPath(args[i]); - path.setAttribute("lastModifiedTime", - FileTime.fromMillis(newDatetime.getTime())); - System.out.println( - Attributes.readBasicFileAttributes(path).toString()); - } - break; - case setctime: - df = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss"); - newDatetime = df.parse(args[2]); - for (int i = 3; i < args.length; i++) { - path = fs.getPath(args[i]); - path.setAttribute("creationTime", - FileTime.fromMillis(newDatetime.getTime())); - System.out.println( - Attributes.readBasicFileAttributes(path).toString()); - } - break; - case setatime: - df = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss"); - newDatetime = df.parse(args[2]); - for (int i = 3; i < args.length; i++) { - path = fs.getPath(args[i]); - path.setAttribute("lastAccessTime", - FileTime.fromMillis(newDatetime.getTime())); - System.out.println( - Attributes.readBasicFileAttributes(path).toString()); - } - break; - case attrsspace: - path = fs.getPath("/"); - FileStore fstore = path.getFileStore(); - //System.out.println(fstore.getFileStoreAttributeView(FileStoreSpaceAttributeView.class) - // .readAttributes()); - // or - System.out.printf("filestore[%s]%n", fstore.name()); - System.out.printf(" totalSpace: %d%n", - (Long)fstore.getAttribute("space:totalSpace")); - System.out.printf(" usableSpace: %d%n", - (Long)fstore.getAttribute("space:usableSpace")); - System.out.printf(" unallocSpace: %d%n", - (Long)fstore.getAttribute("space:unallocatedSpace")); - break; - case list: - case tlist: - if (args.length < 3) - list(fs.getPath("/"), false); - else - list(fs.getPath(args[2]), false); - break; - case vlist: - if (args.length < 3) - list(fs.getPath("/"), true); - else - list(fs.getPath(args[2]), true); - break; - case twalk: - case walk: - walk(fs.getPath((args.length > 2)? args[2] : "/")); - break; - case extract: - if (args.length == 2) { - extract(fs, "/"); - } else { - for (int i = 2; i < args.length; i++) { - extract(fs, args[i]); - } - } - break; - case delete: - for (int i = 2; i < args.length; i++) - fs.getPath(args[i]).delete(); - break; - case create: - case add: - case update: - for (int i = 2; i < args.length; i++) { - update(fs, args[i]); - } - break; - case lsdir: - path = fs.getPath(args[2]); - final String fStr = (args.length > 3)?args[3]:""; - DirectoryStream ds = path.newDirectoryStream( - new DirectoryStream.Filter() { - public boolean accept(Path path) { - return path.toString().contains(fStr); - } - }); - for (Path p : ds) - System.out.println(p); - break; - case mkdir: - fs.getPath(args[2]).createDirectory(); - break; - case mkdirs: - mkdirs(fs.getPath(args[2])); - break; - case attrs2: - for (int i = 2; i < args.length; i++) { - path = fs.getPath(args[i]); - System.out.printf("%n%s%n", path); - System.out.println("-------(1)---------"); - System.out.println( - Attributes.readBasicFileAttributes(path).toString()); - System.out.println("-------(2)---------"); - Map map = path.readAttributes("zip:*"); - for (Map.Entry e : map.entrySet()) { - System.out.printf(" %s : %s%n", e.getKey(), e.getValue()); - } - System.out.println("-------(3)---------"); - map = path.readAttributes("size,lastModifiedTime,isDirectory"); - for (Map.Entry e : map.entrySet()) { - System.out.printf(" %s : %s%n", e.getKey(), e.getValue()); - } - } - break; - case prof: - list(fs.getPath("/"), false); - while (true) { - Thread.sleep(10000); - //list(fs.getPath("/"), true); - System.out.println("sleeping..."); - } - } - } catch (Exception x) { - x.printStackTrace(); - } finally { - if (fs != null) - fs.close(); - } - } - - private static byte[] getBytes(String name) { - return name.getBytes(); - } - - private static String getString(byte[] name) { - return new String(name); - } - - private static void walk(Path path) throws IOException - { - Files.walkFileTree( - path, - new SimpleFileVisitor() { - private int indent = 0; - private void indent() { - int n = 0; - while (n++ < indent) - System.out.printf(" "); - } - - @Override - public FileVisitResult visitFile(Path file, - BasicFileAttributes attrs) - { - indent(); - System.out.printf("%s%n", file.getName().toString()); - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult preVisitDirectory(Path dir, - BasicFileAttributes attrs) - { - indent(); - System.out.printf("[%s]%n", dir.toString()); - indent += 2; - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult postVisitDirectory(Path dir, - IOException ioe) - { - indent -= 2; - return FileVisitResult.CONTINUE; - } - }); - } - - private static void update(FileSystem fs, String path) throws Throwable{ - Path src = FileSystems.getDefault().getPath(path); - if (Boolean.TRUE.equals(src.getAttribute("isDirectory"))) { - DirectoryStream ds = src.newDirectoryStream(); - for (Path child : ds) - update(fs, child.toString()); - ds.close(); - } else { - Path dst = fs.getPath(path); - Path parent = dst.getParent(); - if (parent != null && parent.notExists()) - mkdirs(parent); - src.copyTo(dst, REPLACE_EXISTING); - } - } - - private static void extract(FileSystem fs, String path) throws Throwable{ - Path src = fs.getPath(path); - if (Boolean.TRUE.equals(src.getAttribute("isDirectory"))) { - DirectoryStream ds = src.newDirectoryStream(); - for (Path child : ds) - extract(fs, child.toString()); - ds.close(); - } else { - if (path.startsWith("/")) - path = path.substring(1); - Path dst = FileSystems.getDefault().getPath(path); - Path parent = dst.getParent(); - if (parent.notExists()) - mkdirs(parent); - src.copyTo(dst, REPLACE_EXISTING); - } - } - - // use DirectoryStream - private static void z2zcopy(FileSystem src, FileSystem dst, String path) - throws IOException - { - Path srcPath = src.getPath(path); - Path dstPath = dst.getPath(path); - - if (Boolean.TRUE.equals(srcPath.getAttribute("isDirectory"))) { - if (!dstPath.exists()) { - try { - mkdirs(dstPath); - } catch (FileAlreadyExistsException x) {} - } - DirectoryStream ds = srcPath.newDirectoryStream(); - for (Path child : ds) { - z2zcopy(src, dst, - path + (path.endsWith("/")?"":"/") + child.getName()); - } - ds.close(); - } else { - //System.out.println("copying..." + path); - srcPath.copyTo(dstPath); - } - } - - // use TreeWalk to move - private static void z2zmove(FileSystem src, FileSystem dst, String path) - throws IOException - { - final Path srcPath = src.getPath(path).toAbsolutePath(); - final Path dstPath = dst.getPath(path).toAbsolutePath(); - - Files.walkFileTree(srcPath, new SimpleFileVisitor() { - - @Override - public FileVisitResult visitFile(Path file, - BasicFileAttributes attrs) - { - Path dst = srcPath.relativize(file); - dst = dstPath.resolve(dst); - try { - Path parent = dstPath.getParent(); - if (parent != null && parent.notExists()) - mkdirs(parent); - file.moveTo(dst); - } catch (IOException x) { - x.printStackTrace(); - } - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult preVisitDirectory(Path dir, - BasicFileAttributes attrs) - { - Path dst = srcPath.relativize(dir); - dst = dstPath.resolve(dst); - try { - - if (dst.notExists()) - mkdirs(dst); - } catch (IOException x) { - x.printStackTrace(); - } - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult postVisitDirectory(Path dir, - IOException ioe) - throws IOException - { - try { - dir.delete(); - } catch (IOException x) { - //x.printStackTrace(); - } - return FileVisitResult.CONTINUE; - } - }); - - } - - private static void mkdirs(Path path) throws IOException { - path = path.toAbsolutePath(); - Path parent = path.getParent(); - if (parent != null) { - if (parent.notExists()) - mkdirs(parent); - } - path.createDirectory(); - } - - private static void rmdirs(Path path) throws IOException { - while (path != null && path.getNameCount() != 0) { - path.delete(); - path = path.getParent(); - } - } - - private static void list(Path path, boolean verbose ) throws IOException { - if (!"/".equals(path.toString())) { - System.out.printf(" %s%n", path.toString()); - if (verbose) - System.out.println(Attributes.readBasicFileAttributes(path).toString()); - } - if (path.notExists()) - return; - if (Attributes.readBasicFileAttributes(path).isDirectory()) { - DirectoryStream ds = path.newDirectoryStream(); - for (Path child : ds) - list(child, verbose); - ds.close(); - } - } - - // check the content of two paths are equal - private static void checkEqual(Path src, Path dst) throws IOException - { - //System.out.printf("checking <%s> vs <%s>...%n", - // src.toString(), dst.toString()); - - //streams - InputStream isSrc = src.newInputStream(); - InputStream isDst = dst.newInputStream(); - byte[] bufSrc = new byte[8192]; - byte[] bufDst = new byte[8192]; - - try { - int nSrc = 0; - while ((nSrc = isSrc.read(bufSrc)) != -1) { - int nDst = 0; - while (nDst < nSrc) { - int n = isDst.read(bufDst, nDst, nSrc - nDst); - if (n == -1) { - System.out.printf("checking <%s> vs <%s>...%n", - src.toString(), dst.toString()); - throw new RuntimeException("CHECK FAILED!"); - } - nDst += n; - } - while (--nSrc >= 0) { - if (bufSrc[nSrc] != bufDst[nSrc]) { - System.out.printf("checking <%s> vs <%s>...%n", - src.toString(), dst.toString()); - throw new RuntimeException("CHECK FAILED!"); - } - nSrc--; - } - } - } finally { - isSrc.close(); - isDst.close(); - } - - // channels - SeekableByteChannel chSrc = src.newByteChannel(); - SeekableByteChannel chDst = dst.newByteChannel(); - if (chSrc.size() != chDst.size()) { - System.out.printf("src[%s].size=%d, dst[%s].size=%d%n", - chSrc.toString(), chSrc.size(), - chDst.toString(), chDst.size()); - throw new RuntimeException("CHECK FAILED!"); - } - ByteBuffer bbSrc = ByteBuffer.allocate(8192); - ByteBuffer bbDst = ByteBuffer.allocate(8192); - - try { - int nSrc = 0; - while ((nSrc = chSrc.read(bbSrc)) != -1) { - int nDst = chDst.read(bbDst); - if (nSrc != nDst) { - System.out.printf("checking <%s> vs <%s>...%n", - src.toString(), dst.toString()); - throw new RuntimeException("CHECK FAILED!"); - } - while (--nSrc >= 0) { - if (bbSrc.get(nSrc) != bbDst.get(nSrc)) { - System.out.printf("checking <%s> vs <%s>...%n", - src.toString(), dst.toString()); - throw new RuntimeException("CHECK FAILED!"); - } - nSrc--; - } - bbSrc.flip(); - bbDst.flip(); - } - } catch (IOException x) { - x.printStackTrace(); - } finally { - chSrc.close(); - chDst.close(); - } - } - - private static void fchCopy(Path src, Path dst) throws IOException - { - Set read = new HashSet<>(); - read.add(READ); - Set openwrite = new HashSet<>(); - openwrite.add(CREATE_NEW); - openwrite.add(WRITE); - - FileChannel srcFc = src.getFileSystem() - .provider() - .newFileChannel(src, read); - FileChannel dstFc = dst.getFileSystem() - .provider() - .newFileChannel(dst, openwrite); - - try { - ByteBuffer bb = ByteBuffer.allocate(8192); - while (srcFc.read(bb) >= 0) { - bb.flip(); - dstFc.write(bb); - bb.clear(); - } - } finally { - srcFc.close(); - dstFc.close(); - } - } - - private static void chCopy(Path src, Path dst) throws IOException - { - Set read = new HashSet<>(); - read.add(READ); - Set openwrite = new HashSet<>(); - openwrite.add(CREATE_NEW); - openwrite.add(WRITE); - - SeekableByteChannel srcCh = src.newByteChannel(read); - SeekableByteChannel dstCh = dst.newByteChannel(openwrite); - - try { - ByteBuffer bb = ByteBuffer.allocate(8192); - while (srcCh.read(bb) >= 0) { - bb.flip(); - dstCh.write(bb); - bb.clear(); - } - } finally { - srcCh.close(); - dstCh.close(); - } - } - - private static void streamCopy(Path src, Path dst) throws IOException - { - InputStream isSrc = src.newInputStream(); - OutputStream osDst = dst.newOutputStream(); - byte[] buf = new byte[8192]; - try { - int n = 0; - while ((n = isSrc.read(buf)) != -1) { - osDst.write(buf, 0, n); - } - } finally { - isSrc.close(); - osDst.close(); - } - } -} diff --git a/jdk/src/share/native/java/io/io_util.c b/jdk/src/share/native/java/io/io_util.c index 4689ef72afa..68a24bbab53 100644 --- a/jdk/src/share/native/java/io/io_util.c +++ b/jdk/src/share/native/java/io/io_util.c @@ -44,7 +44,7 @@ readSingle(JNIEnv *env, jobject this, jfieldID fid) { JNU_ThrowIOException(env, "Stream Closed"); return -1; } - nread = IO_Read(fd, &ret, 1); + nread = (jint)IO_Read(fd, &ret, 1); if (nread == 0) { /* EOF */ return -1; } else if (nread == JVM_IO_ERR) { /* error */ @@ -108,7 +108,7 @@ readBytes(JNIEnv *env, jobject this, jbyteArray bytes, JNU_ThrowIOException(env, "Stream Closed"); nread = -1; } else { - nread = IO_Read(fd, buf, len); + nread = (jint)IO_Read(fd, buf, len); if (nread > 0) { (*env)->SetByteArrayRegion(env, bytes, off, nread, (jbyte *)buf); } else if (nread == JVM_IO_ERR) { @@ -137,9 +137,9 @@ writeSingle(JNIEnv *env, jobject this, jint byte, jboolean append, jfieldID fid) return; } if (append == JNI_TRUE) { - n = IO_Append(fd, &c, 1); + n = (jint)IO_Append(fd, &c, 1); } else { - n = IO_Write(fd, &c, 1); + n = (jint)IO_Write(fd, &c, 1); } if (n == JVM_IO_ERR) { JNU_ThrowIOExceptionWithLastError(env, "Write error"); @@ -190,9 +190,9 @@ writeBytes(JNIEnv *env, jobject this, jbyteArray bytes, break; } if (append == JNI_TRUE) { - n = IO_Append(fd, buf+off, len); + n = (jint)IO_Append(fd, buf+off, len); } else { - n = IO_Write(fd, buf+off, len); + n = (jint)IO_Write(fd, buf+off, len); } if (n == JVM_IO_ERR) { JNU_ThrowIOExceptionWithLastError(env, "Write error"); diff --git a/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp b/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp index 457fb058082..249d2e74ed1 100644 --- a/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp +++ b/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp @@ -38,7 +38,7 @@ extern "C" { /* * Throws an arbitrary Java exception. */ -void ThrowException(JNIEnv *env, char *exceptionName) +void ThrowException(JNIEnv *env, const char *exceptionName) { jclass exceptionClazz = env->FindClass(exceptionName); env->ThrowNew(exceptionClazz, NULL); @@ -89,7 +89,7 @@ JNICALL Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair // Fill a new ECParams using the supplied OID if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) { /* bad curve OID */ - ThrowException(env, (char *) INVALID_ALGORITHM_PARAMETER_EXCEPTION); + ThrowException(env, INVALID_ALGORITHM_PARAMETER_EXCEPTION); goto cleanup; } @@ -101,7 +101,7 @@ JNICALL Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair // Generate the new keypair (using the supplied seed) if (EC_NewKey(ecparams, &privKey, (unsigned char *) pSeedBuffer, jSeedLength, 0) != SECSuccess) { - ThrowException(env, (char *) KEY_EXCEPTION); + ThrowException(env, KEY_EXCEPTION); goto cleanup; } diff --git a/jdk/src/share/native/sun/security/ec/impl/ec.c b/jdk/src/share/native/sun/security/ec/impl/ec.c index 65a9b388e14..11777de8746 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ec.c +++ b/jdk/src/share/native/sun/security/ec/impl/ec.c @@ -51,12 +51,10 @@ * *********************************************************************** */ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "mplogic.h" #include "ec.h" #include "ecl.h" @@ -67,6 +65,7 @@ #include #ifndef _WIN32 +#include #include #endif /* _WIN32 */ @@ -116,7 +115,7 @@ ec_points_mul(const ECParams *params, const mp_int *k1, const mp_int *k2, ECGroup *group = NULL; SECStatus rv = SECFailure; mp_err err = MP_OKAY; - int len; + unsigned int len; #if EC_DEBUG int i; @@ -278,10 +277,6 @@ ec_NewKey(ECParams *ecParams, ECPrivateKey **privKey, printf("ec_NewKey called\n"); #endif -#ifndef _WIN32 -int printf(); -#endif /* _WIN32 */ - if (!ecParams || !privKey || !privKeyBytes || (privKeyLen < 0)) { PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; @@ -361,8 +356,9 @@ int printf(); cleanup: mp_clear(&k); - if (rv) + if (rv) { PORT_FreeArena(arena, PR_TRUE); + } #if EC_DEBUG printf("ec_NewKey returning %s\n", @@ -504,7 +500,7 @@ EC_ValidatePublicKey(ECParams *ecParams, SECItem *publicValue, int kmflag) ECGroup *group = NULL; SECStatus rv = SECFailure; mp_err err = MP_OKAY; - int len; + unsigned int len; if (!ecParams || !publicValue) { PORT_SetError(SEC_ERROR_INVALID_ARGS); @@ -778,7 +774,7 @@ ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature, /* In the definition of EC signing, digests are truncated * to the length of n in bits. * (see SEC 1 "Elliptic Curve Digit Signature Algorithm" section 4.1.*/ - if (digest->len*8 > ecParams->fieldID.size) { + if (digest->len*8 > (unsigned int)ecParams->fieldID.size) { mpl_rsh(&s,&s,digest->len*8 - ecParams->fieldID.size); } @@ -993,7 +989,8 @@ ECDSA_VerifyDigest(ECPublicKey *key, const SECItem *signature, /* In the definition of EC signing, digests are truncated * to the length of n in bits. * (see SEC 1 "Elliptic Curve Digit Signature Algorithm" section 4.1.*/ - if (digest->len*8 > ecParams->fieldID.size) { /* u1 = HASH(M') */ + /* u1 = HASH(M') */ + if (digest->len*8 > (unsigned int)ecParams->fieldID.size) { mpl_rsh(&u1,&u1,digest->len*8- ecParams->fieldID.size); } diff --git a/jdk/src/share/native/sun/security/ec/impl/ec.h b/jdk/src/share/native/sun/security/ec/impl/ec.h index e8d034ca493..f5f3d356e26 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ec.h +++ b/jdk/src/share/native/sun/security/ec/impl/ec.h @@ -57,8 +57,6 @@ #ifndef __ec_h_ #define __ec_h_ -#pragma ident "%Z%%M% %I% %E% SMI" - #define EC_DEBUG 0 #define EC_POINT_FORM_COMPRESSED_Y0 0x02 #define EC_POINT_FORM_COMPRESSED_Y1 0x03 diff --git a/jdk/src/share/native/sun/security/ec/impl/ec2.h b/jdk/src/share/native/sun/security/ec/impl/ec2.h index 6541f039d4c..e297a309218 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ec2.h +++ b/jdk/src/share/native/sun/security/ec/impl/ec2.h @@ -57,8 +57,6 @@ #ifndef _EC2_H #define _EC2_H -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecl-priv.h" /* Checks if point P(px, py) is at infinity. Uses affine coordinates. */ diff --git a/jdk/src/share/native/sun/security/ec/impl/ec2_163.c b/jdk/src/share/native/sun/security/ec/impl/ec2_163.c index 4aadc4e8d37..c1dc55dea35 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ec2_163.c +++ b/jdk/src/share/native/sun/security/ec/impl/ec2_163.c @@ -56,8 +56,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ec2.h" #include "mp_gf2m.h" #include "mp_gf2m-priv.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/ec2_193.c b/jdk/src/share/native/sun/security/ec/impl/ec2_193.c index ddaf97323f0..aa7f29f0823 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ec2_193.c +++ b/jdk/src/share/native/sun/security/ec/impl/ec2_193.c @@ -56,8 +56,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ec2.h" #include "mp_gf2m.h" #include "mp_gf2m-priv.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/ec2_233.c b/jdk/src/share/native/sun/security/ec/impl/ec2_233.c index 8e81c81ebb5..485b104ce2a 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ec2_233.c +++ b/jdk/src/share/native/sun/security/ec/impl/ec2_233.c @@ -56,8 +56,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ec2.h" #include "mp_gf2m.h" #include "mp_gf2m-priv.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/ec2_aff.c b/jdk/src/share/native/sun/security/ec/impl/ec2_aff.c index 2865b2826d3..f77eba3f499 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ec2_aff.c +++ b/jdk/src/share/native/sun/security/ec/impl/ec2_aff.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ec2.h" #include "mplogic.h" #include "mp_gf2m.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/ec2_mont.c b/jdk/src/share/native/sun/security/ec/impl/ec2_mont.c index 3f5faec42b4..eda921f3ff6 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ec2_mont.c +++ b/jdk/src/share/native/sun/security/ec/impl/ec2_mont.c @@ -56,8 +56,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ec2.h" #include "mplogic.h" #include "mp_gf2m.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/ec_naf.c b/jdk/src/share/native/sun/security/ec/impl/ec_naf.c index 2827d459b1a..e6307f0d108 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ec_naf.c +++ b/jdk/src/share/native/sun/security/ec/impl/ec_naf.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecl-priv.h" /* Returns 2^e as an integer. This is meant to be used for small powers of diff --git a/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h b/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h index 7d50aa199bb..23357ae8c42 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h +++ b/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h @@ -51,15 +51,13 @@ * *********************************************************************** */ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ #ifndef _ECC_IMPL_H #define _ECC_IMPL_H -#pragma ident "%Z%%M% %I% %E% SMI" - #ifdef __cplusplus extern "C" { #endif @@ -82,6 +80,7 @@ typedef enum { B_FALSE, B_TRUE } boolean_t; typedef unsigned char uint8_t; typedef unsigned long ulong_t; typedef enum boolean { B_FALSE, B_TRUE } boolean_t; +#define strdup _strdup /* Replace POSIX name with ISO C++ name */ #endif /* _WIN32 */ #ifndef _KERNEL diff --git a/jdk/src/share/native/sun/security/ec/impl/ecdecode.c b/jdk/src/share/native/sun/security/ec/impl/ecdecode.c index 19c62403c64..826192161ee 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecdecode.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecdecode.c @@ -55,8 +55,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include #ifndef _WIN32 @@ -90,7 +88,7 @@ hexString2SECItem(PRArenaPool *arena, SECItem *item, const char *str, { int i = 0; int byteval = 0; - int tmp = strlen(str); + int tmp = (int)strlen(str); if ((tmp % 2) != 0) return NULL; @@ -134,7 +132,8 @@ gf_populate_params(ECCurveName name, ECFieldType field_type, ECParams *params, /* 2 ['0'+'4'] + MAX_ECKEY_LEN * 2 [x,y] * 2 [hex string] + 1 ['\0'] */ char genenc[3 + 2 * 2 * MAX_ECKEY_LEN]; - if ((name < ECCurve_noName) || (name > ECCurve_pastLastCurve)) goto cleanup; + if (((int)name < ECCurve_noName) || (name > ECCurve_pastLastCurve)) + goto cleanup; params->name = name; curveParams = ecCurve_map[params->name]; CHECK_OK(curveParams); diff --git a/jdk/src/share/native/sun/security/ec/impl/ecl-curve.h b/jdk/src/share/native/sun/security/ec/impl/ecl-curve.h index c7683031c4a..865c3d49feb 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecl-curve.h +++ b/jdk/src/share/native/sun/security/ec/impl/ecl-curve.h @@ -57,8 +57,6 @@ #ifndef _ECL_CURVE_H #define _ECL_CURVE_H -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecl-exp.h" #ifndef _KERNEL #include diff --git a/jdk/src/share/native/sun/security/ec/impl/ecl-exp.h b/jdk/src/share/native/sun/security/ec/impl/ecl-exp.h index 4c7698d7b0c..51ed43fdbc2 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecl-exp.h +++ b/jdk/src/share/native/sun/security/ec/impl/ecl-exp.h @@ -57,8 +57,6 @@ #ifndef _ECL_EXP_H #define _ECL_EXP_H -#pragma ident "%Z%%M% %I% %E% SMI" - /* Curve field type */ typedef enum { ECField_GFp, diff --git a/jdk/src/share/native/sun/security/ec/impl/ecl-priv.h b/jdk/src/share/native/sun/security/ec/impl/ecl-priv.h index 5b744c0917c..6b032eabecc 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecl-priv.h +++ b/jdk/src/share/native/sun/security/ec/impl/ecl-priv.h @@ -58,8 +58,6 @@ #ifndef _ECL_PRIV_H #define _ECL_PRIV_H -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecl.h" #include "mpi.h" #include "mplogic.h" @@ -90,6 +88,10 @@ s = ACCUM(w); \ cout = CARRYOUT(w); } +/* Handle case when carry-in value is zero */ +#define MP_ADD_CARRY_ZERO(a1, a2, s, cout) \ + MP_ADD_CARRY(a1, a2, s, 0, cout); + #define MP_SUB_BORROW(a1, a2, s, bin, bout) \ { mp_word w; \ w = ((mp_word)(a1)) - (a2) - (bin); \ @@ -111,6 +113,15 @@ s = sum += (cin); \ cout = tmp + (sum < (cin)); } +/* Handle case when carry-in value is zero */ +#define MP_ADD_CARRY_ZERO(a1, a2, s, cout) \ + { mp_digit tmp,sum; \ + tmp = (a1); \ + sum = tmp + (a2); \ + tmp = (sum < tmp); /* detect overflow */ \ + s = sum; \ + cout = tmp; } + #define MP_SUB_BORROW(a1, a2, s, bin, bout) \ { mp_digit tmp; \ tmp = (a1); \ diff --git a/jdk/src/share/native/sun/security/ec/impl/ecl.c b/jdk/src/share/native/sun/security/ec/impl/ecl.c index 3c609ead783..79c5467cf07 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecl.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecl.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "mpi.h" #include "mplogic.h" #include "ecl.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/ecl.h b/jdk/src/share/native/sun/security/ec/impl/ecl.h index d5143ad6673..ab956d89fbc 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecl.h +++ b/jdk/src/share/native/sun/security/ec/impl/ecl.h @@ -57,8 +57,6 @@ #ifndef _ECL_H #define _ECL_H -#pragma ident "%Z%%M% %I% %E% SMI" - /* Although this is not an exported header file, code which uses elliptic * curve point operations will need to include it. */ diff --git a/jdk/src/share/native/sun/security/ec/impl/ecl_curve.c b/jdk/src/share/native/sun/security/ec/impl/ecl_curve.c index f25732a9c46..a253a363f6a 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecl_curve.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecl_curve.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecl.h" #include "ecl-curve.h" #include "ecl-priv.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/ecl_gf.c b/jdk/src/share/native/sun/security/ec/impl/ecl_gf.c index a478b58236f..46b8dff0295 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecl_gf.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecl_gf.c @@ -55,8 +55,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "mpi.h" #include "mp_gf2m.h" #include "ecl-priv.h" @@ -307,7 +305,7 @@ ec_GFp_add_3(const mp_int *a, const mp_int *b, mp_int *r, } #ifndef MPI_AMD64_ADD - MP_ADD_CARRY(a0, r0, r0, 0, carry); + MP_ADD_CARRY_ZERO(a0, r0, r0, carry); MP_ADD_CARRY(a1, r1, r1, carry, carry); MP_ADD_CARRY(a2, r2, r2, carry, carry); #else @@ -394,7 +392,7 @@ ec_GFp_add_4(const mp_int *a, const mp_int *b, mp_int *r, } #ifndef MPI_AMD64_ADD - MP_ADD_CARRY(a0, r0, r0, 0, carry); + MP_ADD_CARRY_ZERO(a0, r0, r0, carry); MP_ADD_CARRY(a1, r1, r1, carry, carry); MP_ADD_CARRY(a2, r2, r2, carry, carry); MP_ADD_CARRY(a3, r3, r3, carry, carry); @@ -491,7 +489,7 @@ ec_GFp_add_5(const mp_int *a, const mp_int *b, mp_int *r, r0 = MP_DIGIT(b,0); } - MP_ADD_CARRY(a0, r0, r0, 0, carry); + MP_ADD_CARRY_ZERO(a0, r0, r0, carry); MP_ADD_CARRY(a1, r1, r1, carry, carry); MP_ADD_CARRY(a2, r2, r2, carry, carry); MP_ADD_CARRY(a3, r3, r3, carry, carry); @@ -572,7 +570,7 @@ ec_GFp_add_6(const mp_int *a, const mp_int *b, mp_int *r, r0 = MP_DIGIT(b,0); } - MP_ADD_CARRY(a0, r0, r0, 0, carry); + MP_ADD_CARRY_ZERO(a0, r0, r0, carry); MP_ADD_CARRY(a1, r1, r1, carry, carry); MP_ADD_CARRY(a2, r2, r2, carry, carry); MP_ADD_CARRY(a3, r3, r3, carry, carry); @@ -675,7 +673,7 @@ ec_GFp_sub_3(const mp_int *a, const mp_int *b, mp_int *r, b1 = MP_DIGIT(&meth->irr,1); b0 = MP_DIGIT(&meth->irr,0); #ifndef MPI_AMD64_ADD - MP_ADD_CARRY(b0, r0, r0, 0, borrow); + MP_ADD_CARRY_ZERO(b0, r0, r0, borrow); MP_ADD_CARRY(b1, r1, r1, borrow, borrow); MP_ADD_CARRY(b2, r2, r2, borrow, borrow); #else @@ -766,7 +764,7 @@ ec_GFp_sub_4(const mp_int *a, const mp_int *b, mp_int *r, b1 = MP_DIGIT(&meth->irr,1); b0 = MP_DIGIT(&meth->irr,0); #ifndef MPI_AMD64_ADD - MP_ADD_CARRY(b0, r0, r0, 0, borrow); + MP_ADD_CARRY_ZERO(b0, r0, r0, borrow); MP_ADD_CARRY(b1, r1, r1, borrow, borrow); MP_ADD_CARRY(b2, r2, r2, borrow, borrow); MP_ADD_CARRY(b3, r3, r3, borrow, borrow); @@ -850,7 +848,7 @@ ec_GFp_sub_5(const mp_int *a, const mp_int *b, mp_int *r, b2 = MP_DIGIT(&meth->irr,2); b1 = MP_DIGIT(&meth->irr,1); b0 = MP_DIGIT(&meth->irr,0); - MP_ADD_CARRY(b0, r0, r0, 0, borrow); + MP_ADD_CARRY_ZERO(b0, r0, r0, borrow); MP_ADD_CARRY(b1, r1, r1, borrow, borrow); MP_ADD_CARRY(b2, r2, r2, borrow, borrow); MP_ADD_CARRY(b3, r3, r3, borrow, borrow); @@ -924,7 +922,7 @@ ec_GFp_sub_6(const mp_int *a, const mp_int *b, mp_int *r, b2 = MP_DIGIT(&meth->irr,2); b1 = MP_DIGIT(&meth->irr,1); b0 = MP_DIGIT(&meth->irr,0); - MP_ADD_CARRY(b0, r0, r0, 0, borrow); + MP_ADD_CARRY_ZERO(b0, r0, r0, borrow); MP_ADD_CARRY(b1, r1, r1, borrow, borrow); MP_ADD_CARRY(b2, r2, r2, borrow, borrow); MP_ADD_CARRY(b3, r3, r3, borrow, borrow); diff --git a/jdk/src/share/native/sun/security/ec/impl/ecl_mult.c b/jdk/src/share/native/sun/security/ec/impl/ecl_mult.c index 4393c82fcf3..5c43ae8cf0e 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecl_mult.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecl_mult.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "mpi.h" #include "mplogic.h" #include "ecl.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/ecp.h b/jdk/src/share/native/sun/security/ec/impl/ecp.h index f9d8b01241a..97220f3d39f 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecp.h +++ b/jdk/src/share/native/sun/security/ec/impl/ecp.h @@ -57,8 +57,6 @@ #ifndef _ECP_H #define _ECP_H -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecl-priv.h" /* Checks if point P(px, py) is at infinity. Uses affine coordinates. */ diff --git a/jdk/src/share/native/sun/security/ec/impl/ecp_192.c b/jdk/src/share/native/sun/security/ec/impl/ecp_192.c index 23f49eadaf9..dcdd9dbe618 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecp_192.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecp_192.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecp.h" #include "mpi.h" #include "mplogic.h" @@ -210,15 +208,15 @@ ec_GFp_nistp192_mod(const mp_int *a, mp_int *r, const GFMethod *meth) /* implement r = (a2,a1,a0)+(a5,a5,a5)+(a4,a4,0)+(0,a3,a3) */ #ifndef MPI_AMD64_ADD - MP_ADD_CARRY(r0, a3, r0, 0, carry); + MP_ADD_CARRY_ZERO(r0, a3, r0, carry); MP_ADD_CARRY(r1, a3, r1, carry, carry); MP_ADD_CARRY(r2, a4, r2, carry, carry); r3 = carry; - MP_ADD_CARRY(r0, a5, r0, 0, carry); + MP_ADD_CARRY_ZERO(r0, a5, r0, carry); MP_ADD_CARRY(r1, a5, r1, carry, carry); MP_ADD_CARRY(r2, a5, r2, carry, carry); r3 += carry; - MP_ADD_CARRY(r1, a4, r1, 0, carry); + MP_ADD_CARRY_ZERO(r1, a4, r1, carry); MP_ADD_CARRY(r2, 0, r2, carry, carry); r3 += carry; @@ -251,7 +249,7 @@ ec_GFp_nistp192_mod(const mp_int *a, mp_int *r, const GFMethod *meth) /* reduce out the carry */ while (r3) { #ifndef MPI_AMD64_ADD - MP_ADD_CARRY(r0, r3, r0, 0, carry); + MP_ADD_CARRY_ZERO(r0, r3, r0, carry); MP_ADD_CARRY(r1, r3, r1, carry, carry); MP_ADD_CARRY(r2, 0, r2, carry, carry); r3 = carry; @@ -335,7 +333,7 @@ ec_GFp_nistp192_add(const mp_int *a, const mp_int *b, mp_int *r, } #ifndef MPI_AMD64_ADD - MP_ADD_CARRY(a0, r0, r0, 0, carry); + MP_ADD_CARRY_ZERO(a0, r0, r0, carry); MP_ADD_CARRY(a1, r1, r1, carry, carry); MP_ADD_CARRY(a2, r2, r2, carry, carry); #else @@ -357,7 +355,7 @@ ec_GFp_nistp192_add(const mp_int *a, const mp_int *b, mp_int *r, ((r1 == MP_DIGIT_MAX) || ((r1 == (MP_DIGIT_MAX-1)) && (r0 == MP_DIGIT_MAX))))) { #ifndef MPI_AMD64_ADD - MP_ADD_CARRY(r0, 1, r0, 0, carry); + MP_ADD_CARRY_ZERO(r0, 1, r0, carry); MP_ADD_CARRY(r1, 1, r1, carry, carry); MP_ADD_CARRY(r2, 0, r2, carry, carry); #else diff --git a/jdk/src/share/native/sun/security/ec/impl/ecp_224.c b/jdk/src/share/native/sun/security/ec/impl/ecp_224.c index 7d802383553..96d775f9e87 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecp_224.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecp_224.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecp.h" #include "mpi.h" #include "mplogic.h" @@ -251,10 +249,10 @@ ec_GFp_nistp224_mod(const mp_int *a, mp_int *r, const GFMethod *meth) +( 0, a6,a5b, 0) -( 0 0, 0|a6b, a6a|a5b ) -( a6b, a6a|a5b, a5a|a4b, a4a|a3b ) */ - MP_ADD_CARRY (r1, a3b, r1, 0, carry); + MP_ADD_CARRY_ZERO (r1, a3b, r1, carry); MP_ADD_CARRY (r2, a4 , r2, carry, carry); MP_ADD_CARRY (r3, a5a, r3, carry, carry); - MP_ADD_CARRY (r1, a5b, r1, 0, carry); + MP_ADD_CARRY_ZERO (r1, a5b, r1, carry); MP_ADD_CARRY (r2, a6 , r2, carry, carry); MP_ADD_CARRY (r3, 0, r3, carry, carry); @@ -275,7 +273,7 @@ ec_GFp_nistp224_mod(const mp_int *a, mp_int *r, const GFMethod *meth) r3b = (int)(r3 >>32); while (r3b > 0) { r3 &= 0xffffffff; - MP_ADD_CARRY(r1,((mp_digit)r3b) << 32, r1, 0, carry); + MP_ADD_CARRY_ZERO(r1,((mp_digit)r3b) << 32, r1, carry); if (carry) { MP_ADD_CARRY(r2, 0, r2, carry, carry); MP_ADD_CARRY(r3, 0, r3, carry, carry); @@ -290,7 +288,7 @@ ec_GFp_nistp224_mod(const mp_int *a, mp_int *r, const GFMethod *meth) } while (r3b < 0) { - MP_ADD_CARRY (r0, 1, r0, 0, carry); + MP_ADD_CARRY_ZERO (r0, 1, r0, carry); MP_ADD_CARRY (r1, MP_DIGIT_MAX <<32, r1, carry, carry); MP_ADD_CARRY (r2, MP_DIGIT_MAX, r2, carry, carry); MP_ADD_CARRY (r3, MP_DIGIT_MAX >> 32, r3, carry, carry); diff --git a/jdk/src/share/native/sun/security/ec/impl/ecp_256.c b/jdk/src/share/native/sun/security/ec/impl/ecp_256.c index f8c5720ac85..ef829085663 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecp_256.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecp_256.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecp.h" #include "mpi.h" #include "mplogic.h" @@ -303,32 +301,32 @@ ec_GFp_nistp256_mod(const mp_int *a, mp_int *r, const GFMethod *meth) r0 = MP_DIGIT(a,0); /* sum 1 */ - MP_ADD_CARRY(r1, a5h << 32, r1, 0, carry); + MP_ADD_CARRY_ZERO(r1, a5h << 32, r1, carry); MP_ADD_CARRY(r2, a6, r2, carry, carry); MP_ADD_CARRY(r3, a7, r3, carry, carry); r4 = carry; - MP_ADD_CARRY(r1, a5h << 32, r1, 0, carry); + MP_ADD_CARRY_ZERO(r1, a5h << 32, r1, carry); MP_ADD_CARRY(r2, a6, r2, carry, carry); MP_ADD_CARRY(r3, a7, r3, carry, carry); r4 += carry; /* sum 2 */ - MP_ADD_CARRY(r1, a6l, r1, 0, carry); + MP_ADD_CARRY_ZERO(r1, a6l, r1, carry); MP_ADD_CARRY(r2, a6h | a7l, r2, carry, carry); MP_ADD_CARRY(r3, a7h, r3, carry, carry); r4 += carry; - MP_ADD_CARRY(r1, a6l, r1, 0, carry); + MP_ADD_CARRY_ZERO(r1, a6l, r1, carry); MP_ADD_CARRY(r2, a6h | a7l, r2, carry, carry); MP_ADD_CARRY(r3, a7h, r3, carry, carry); r4 += carry; /* sum 3 */ - MP_ADD_CARRY(r0, a4, r0, 0, carry); + MP_ADD_CARRY_ZERO(r0, a4, r0, carry); MP_ADD_CARRY(r1, a5l >> 32, r1, carry, carry); MP_ADD_CARRY(r2, 0, r2, carry, carry); MP_ADD_CARRY(r3, a7, r3, carry, carry); r4 += carry; /* sum 4 */ - MP_ADD_CARRY(r0, a4h | a5l, r0, 0, carry); + MP_ADD_CARRY_ZERO(r0, a4h | a5l, r0, carry); MP_ADD_CARRY(r1, a5h|(a6h<<32), r1, carry, carry); MP_ADD_CARRY(r2, a7, r2, carry, carry); MP_ADD_CARRY(r3, a6h | a4l, r3, carry, carry); @@ -362,7 +360,7 @@ ec_GFp_nistp256_mod(const mp_int *a, mp_int *r, const GFMethod *meth) while (r4 > 0) { mp_digit r4_long = r4; mp_digit r4l = (r4_long << 32); - MP_ADD_CARRY(r0, r4_long, r0, 0, carry); + MP_ADD_CARRY_ZERO(r0, r4_long, r0, carry); MP_ADD_CARRY(r1, -r4l, r1, carry, carry); MP_ADD_CARRY(r2, MP_DIGIT_MAX, r2, carry, carry); MP_ADD_CARRY(r3, r4l-r4_long-1,r3, carry, carry); diff --git a/jdk/src/share/native/sun/security/ec/impl/ecp_384.c b/jdk/src/share/native/sun/security/ec/impl/ecp_384.c index c9d9d0f05a2..263fecb888f 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecp_384.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecp_384.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecp.h" #include "mpi.h" #include "mplogic.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/ecp_521.c b/jdk/src/share/native/sun/security/ec/impl/ecp_521.c index b76436a43ed..239b1289372 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecp_521.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecp_521.c @@ -50,12 +50,10 @@ * *********************************************************************** */ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecp.h" #include "mpi.h" #include "mplogic.h" @@ -74,7 +72,7 @@ ec_GFp_nistp521_mod(const mp_int *a, mp_int *r, const GFMethod *meth) { mp_err res = MP_OKAY; int a_bits = mpl_significant_bits(a); - int i; + unsigned int i; /* m1, m2 are statically-allocated mp_int of exactly the size we need */ mp_int m1; diff --git a/jdk/src/share/native/sun/security/ec/impl/ecp_aff.c b/jdk/src/share/native/sun/security/ec/impl/ecp_aff.c index c987a8887d2..a3a97f62570 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecp_aff.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecp_aff.c @@ -59,8 +59,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecp.h" #include "mplogic.h" #ifndef _KERNEL diff --git a/jdk/src/share/native/sun/security/ec/impl/ecp_jac.c b/jdk/src/share/native/sun/security/ec/impl/ecp_jac.c index 2ff3e4d57c8..8b35dae8e99 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecp_jac.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecp_jac.c @@ -59,8 +59,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecp.h" #include "mplogic.h" #ifndef _KERNEL diff --git a/jdk/src/share/native/sun/security/ec/impl/ecp_jm.c b/jdk/src/share/native/sun/security/ec/impl/ecp_jm.c index 572ed062800..b85615be7ad 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecp_jm.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecp_jm.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "ecp.h" #include "ecl-priv.h" #include "mplogic.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/ecp_mont.c b/jdk/src/share/native/sun/security/ec/impl/ecp_mont.c index ff51d90bb88..6519eda7bc0 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecp_mont.c +++ b/jdk/src/share/native/sun/security/ec/impl/ecp_mont.c @@ -54,8 +54,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* Uses Montgomery reduction for field arithmetic. See mpi/mpmontg.c for * code implementation. */ diff --git a/jdk/src/share/native/sun/security/ec/impl/logtab.h b/jdk/src/share/native/sun/security/ec/impl/logtab.h index bcc13ebb107..f4b40008b4a 100644 --- a/jdk/src/share/native/sun/security/ec/impl/logtab.h +++ b/jdk/src/share/native/sun/security/ec/impl/logtab.h @@ -57,8 +57,6 @@ #ifndef _LOGTAB_H #define _LOGTAB_H -#pragma ident "%Z%%M% %I% %E% SMI" - const float s_logv_2[] = { 0.000000000f, 0.000000000f, 1.000000000f, 0.630929754f, /* 0 1 2 3 */ 0.500000000f, 0.430676558f, 0.386852807f, 0.356207187f, /* 4 5 6 7 */ diff --git a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h index 7cdacc7751b..889bfd1bed0 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h +++ b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h @@ -58,8 +58,6 @@ #ifndef _MP_GF2M_PRIV_H_ #define _MP_GF2M_PRIV_H_ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "mpi-priv.h" extern const mp_digit mp_gf2m_sqr_tb[16]; diff --git a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.c b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.c index beb798c10b2..2c021c88a24 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.c +++ b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.c @@ -55,8 +55,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "mp_gf2m.h" #include "mp_gf2m-priv.h" #include "mplogic.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.h b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.h index dff8094f507..f689ba35358 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.h +++ b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.h @@ -58,8 +58,6 @@ #ifndef _MP_GF2M_H_ #define _MP_GF2M_H_ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "mpi.h" mp_err mp_badd(const mp_int *a, const mp_int *b, mp_int *c); diff --git a/jdk/src/share/native/sun/security/ec/impl/mpi-config.h b/jdk/src/share/native/sun/security/ec/impl/mpi-config.h index c892fbecf3c..4c2b22b9f12 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mpi-config.h +++ b/jdk/src/share/native/sun/security/ec/impl/mpi-config.h @@ -57,8 +57,6 @@ #ifndef _MPI_CONFIG_H #define _MPI_CONFIG_H -#pragma ident "%Z%%M% %I% %E% SMI" - /* $Id: mpi-config.h,v 1.5 2004/04/25 15:03:10 gerv%gerv.net Exp $ */ /* diff --git a/jdk/src/share/native/sun/security/ec/impl/mpi-priv.h b/jdk/src/share/native/sun/security/ec/impl/mpi-priv.h index a5fccf153cc..9a80f23d02f 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mpi-priv.h +++ b/jdk/src/share/native/sun/security/ec/impl/mpi-priv.h @@ -63,8 +63,6 @@ #ifndef _MPI_PRIV_H #define _MPI_PRIV_H -#pragma ident "%Z%%M% %I% %E% SMI" - /* $Id: mpi-priv.h,v 1.20 2005/11/22 07:16:43 relyea%netscape.com Exp $ */ #include "mpi.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/mpi.c b/jdk/src/share/native/sun/security/ec/impl/mpi.c index e3558a26e81..a495b998598 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mpi.c +++ b/jdk/src/share/native/sun/security/ec/impl/mpi.c @@ -54,12 +54,10 @@ * *********************************************************************** */ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* $Id: mpi.c,v 1.45 2006/09/29 20:12:21 alexei.volkov.bugs%sun.com Exp $ */ #include "mpi-priv.h" @@ -1148,7 +1146,7 @@ mp_err mp_expt(mp_int *a, mp_int *b, mp_int *c) mp_int s, x; mp_err res; mp_digit d; - int dig, bit; + unsigned int dig, bit; ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG); @@ -1523,7 +1521,7 @@ mp_err s_mp_exptmod(const mp_int *a, const mp_int *b, const mp_int *m, mp_int *c mp_int s, x, mu; mp_err res; mp_digit d; - int dig, bit; + unsigned int dig, bit; ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG); @@ -2057,7 +2055,7 @@ mp_size mp_trailing_zeros(const mp_int *mp) { mp_digit d; mp_size n = 0; - int ix; + unsigned int ix; if (!mp || !MP_DIGITS(mp) || !mp_cmp_z(mp)) return n; @@ -2900,9 +2898,9 @@ void s_mp_copy(const mp_digit *sp, mp_digit *dp, mp_size count) /* Allocate ni records of nb bytes each, and return a pointer to that */ void *s_mp_alloc(size_t nb, size_t ni, int kmflag) { - mp_int *mp; ++mp_allocs; #ifdef _KERNEL + mp_int *mp; mp = kmem_zalloc(nb * ni, kmflag); if (mp != NULL) FLAG(mp) = kmflag; @@ -3112,7 +3110,7 @@ void s_mp_div_2(mp_int *mp) mp_err s_mp_mul_2(mp_int *mp) { mp_digit *pd; - int ix, used; + unsigned int ix, used; mp_digit kin = 0; /* Shift digits leftward by 1 bit */ @@ -4663,7 +4661,7 @@ char s_mp_todigit(mp_digit val, int r, int low) { char ch; - if(val >= r) + if(val >= (unsigned int)r) return 0; ch = s_dmap_1[val]; @@ -4778,7 +4776,7 @@ mp_err mp_to_unsigned_octets(const mp_int *mp, unsigned char *str, mp_size maxlen) { int ix, pos = 0; - int bytes; + unsigned int bytes; ARGCHK(mp != NULL && str != NULL && !SIGN(mp), MP_BADARG); @@ -4810,7 +4808,7 @@ mp_err mp_to_signed_octets(const mp_int *mp, unsigned char *str, mp_size maxlen) { int ix, pos = 0; - int bytes; + unsigned int bytes; ARGCHK(mp != NULL && str != NULL && !SIGN(mp), MP_BADARG); @@ -4850,7 +4848,7 @@ mp_err mp_to_fixlen_octets(const mp_int *mp, unsigned char *str, mp_size length) { int ix, pos = 0; - int bytes; + unsigned int bytes; ARGCHK(mp != NULL && str != NULL && !SIGN(mp), MP_BADARG); diff --git a/jdk/src/share/native/sun/security/ec/impl/mpi.h b/jdk/src/share/native/sun/security/ec/impl/mpi.h index 4933033d571..d80657e5657 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mpi.h +++ b/jdk/src/share/native/sun/security/ec/impl/mpi.h @@ -60,8 +60,6 @@ #ifndef _MPI_H #define _MPI_H -#pragma ident "%Z%%M% %I% %E% SMI" - /* $Id: mpi.h,v 1.22 2004/04/27 23:04:36 gerv%gerv.net Exp $ */ #include "mpi-config.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/mplogic.c b/jdk/src/share/native/sun/security/ec/impl/mplogic.c index 531a682a8e4..8de8306ea9e 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mplogic.c +++ b/jdk/src/share/native/sun/security/ec/impl/mplogic.c @@ -56,8 +56,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* $Id: mplogic.c,v 1.15 2004/04/27 23:04:36 gerv%gerv.net Exp $ */ #include "mpi-priv.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/mplogic.h b/jdk/src/share/native/sun/security/ec/impl/mplogic.h index d384ea7f395..a2f7714bffb 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mplogic.h +++ b/jdk/src/share/native/sun/security/ec/impl/mplogic.h @@ -59,8 +59,6 @@ #ifndef _MPLOGIC_H #define _MPLOGIC_H -#pragma ident "%Z%%M% %I% %E% SMI" - /* $Id: mplogic.h,v 1.7 2004/04/27 23:04:36 gerv%gerv.net Exp $ */ #include "mpi.h" diff --git a/jdk/src/share/native/sun/security/ec/impl/mpmontg.c b/jdk/src/share/native/sun/security/ec/impl/mpmontg.c index a6713751a29..c1762847a5e 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mpmontg.c +++ b/jdk/src/share/native/sun/security/ec/impl/mpmontg.c @@ -56,8 +56,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* $Id: mpmontg.c,v 1.20 2006/08/29 02:41:38 nelson%bolyard.com Exp $ */ /* This file implements moduluar exponentiation using Montgomery's diff --git a/jdk/src/share/native/sun/security/ec/impl/mpprime.h b/jdk/src/share/native/sun/security/ec/impl/mpprime.h index a648b0bbfef..b9012af4b31 100644 --- a/jdk/src/share/native/sun/security/ec/impl/mpprime.h +++ b/jdk/src/share/native/sun/security/ec/impl/mpprime.h @@ -60,8 +60,6 @@ #ifndef _MP_PRIME_H #define _MP_PRIME_H -#pragma ident "%Z%%M% %I% %E% SMI" - #include "mpi.h" extern const int prime_tab_size; /* number of primes available */ diff --git a/jdk/src/share/native/sun/security/ec/impl/oid.c b/jdk/src/share/native/sun/security/ec/impl/oid.c index 9fc2798f418..e5a76992bf9 100644 --- a/jdk/src/share/native/sun/security/ec/impl/oid.c +++ b/jdk/src/share/native/sun/security/ec/impl/oid.c @@ -50,12 +50,10 @@ * *********************************************************************** */ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include #ifndef _WIN32 @@ -433,8 +431,7 @@ SECOidData * SECOID_FindOID(const SECItem *oid) { SECOidData *po; - SECOidData *ret; - int i; + SECOidData *ret = NULL; if (oid->len == 8) { if (oid->data[6] == 0x00) { @@ -454,8 +451,6 @@ SECOID_FindOID(const SECItem *oid) po = &SECG_oids[oid->data[4]]; if (memcmp(oid->data, po->oid.data, 5) == 0) ret = po; - } else { - ret = NULL; } return(ret); } diff --git a/jdk/src/share/native/sun/security/ec/impl/secitem.c b/jdk/src/share/native/sun/security/ec/impl/secitem.c index 45d255fda74..6cfa5dea4b2 100644 --- a/jdk/src/share/native/sun/security/ec/impl/secitem.c +++ b/jdk/src/share/native/sun/security/ec/impl/secitem.c @@ -53,8 +53,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * Support routines for SECItem data structure. * diff --git a/jdk/src/share/native/sun/security/ec/impl/secoidt.h b/jdk/src/share/native/sun/security/ec/impl/secoidt.h index b63df8c4e46..ea5da257ad7 100644 --- a/jdk/src/share/native/sun/security/ec/impl/secoidt.h +++ b/jdk/src/share/native/sun/security/ec/impl/secoidt.h @@ -57,8 +57,6 @@ #ifndef _SECOIDT_H_ #define _SECOIDT_H_ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * secoidt.h - public data structures for ASN.1 OID functions * diff --git a/jdk/src/share/sample/nio/file/AclEdit.java b/jdk/src/share/sample/nio/file/AclEdit.java index c0088ca0990..0910e888a70 100644 --- a/jdk/src/share/sample/nio/file/AclEdit.java +++ b/jdk/src/share/sample/nio/file/AclEdit.java @@ -239,7 +239,7 @@ public class AclEdit { // read file's ACL AclFileAttributeView view = - file.getFileAttributeView(AclFileAttributeView.class); + Files.getFileAttributeView(file, AclFileAttributeView.class); if (view == null) { System.err.println("ACLs not supported on this platform"); System.exit(-1); diff --git a/jdk/src/share/sample/nio/file/Chmod.java b/jdk/src/share/sample/nio/file/Chmod.java index ae8feeeae04..7c4d50e93ef 100644 --- a/jdk/src/share/sample/nio/file/Chmod.java +++ b/jdk/src/share/sample/nio/file/Chmod.java @@ -264,11 +264,10 @@ public class Chmod { /** * Changes the permissions of the file using the given Changer. */ - static void chmod(FileRef file, Changer changer) { + static void chmod(Path file, Changer changer) { try { - Set perms = Attributes - .readPosixFileAttributes(file).permissions(); - Attributes.setPosixFilePermissions(file, changer.change(perms)); + Set perms = Files.getPosixFilePermissions(file); + Files.setPosixFilePermissions(file, changer.change(perms)); } catch (IOException x) { System.err.println(x); } @@ -277,7 +276,7 @@ public class Chmod { /** * Changes the permission of each file and directory visited */ - static class TreeVisitor implements FileVisitor { + static class TreeVisitor implements FileVisitor { private final Changer changer; TreeVisitor(Changer changer) { @@ -285,26 +284,26 @@ public class Chmod { } @Override - public FileVisitResult preVisitDirectory(FileRef dir, BasicFileAttributes attrs) { + public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) { chmod(dir, changer); return CONTINUE; } @Override - public FileVisitResult visitFile(FileRef file, BasicFileAttributes attrs) { + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { chmod(file, changer); return CONTINUE; } @Override - public FileVisitResult postVisitDirectory(FileRef dir, IOException exc) { + public FileVisitResult postVisitDirectory(Path dir, IOException exc) { if (exc != null) System.err.println("WARNING: " + exc); return CONTINUE; } @Override - public FileVisitResult visitFileFailed(FileRef file, IOException exc) { + public FileVisitResult visitFileFailed(Path file, IOException exc) { System.err.println("WARNING: " + exc); return CONTINUE; } diff --git a/jdk/src/share/sample/nio/file/Copy.java b/jdk/src/share/sample/nio/file/Copy.java index eb3d5a06d03..38062c4b875 100644 --- a/jdk/src/share/sample/nio/file/Copy.java +++ b/jdk/src/share/sample/nio/file/Copy.java @@ -45,7 +45,7 @@ public class Copy { /** * Returns {@code true} if okay to overwrite a file ("cp -i") */ - static boolean okayToOverwrite(FileRef file) { + static boolean okayToOverwrite(Path file) { String answer = System.console().readLine("overwrite %s (yes/no)? ", file); return (answer.equalsIgnoreCase("y") || answer.equalsIgnoreCase("yes")); } @@ -59,9 +59,9 @@ public class Copy { CopyOption[] options = (preserve) ? new CopyOption[] { COPY_ATTRIBUTES, REPLACE_EXISTING } : new CopyOption[] { REPLACE_EXISTING }; - if (!prompt || target.notExists() || okayToOverwrite(target)) { + if (!prompt || Files.notExists(target) || okayToOverwrite(target)) { try { - source.copyTo(target, options); + Files.copy(source, target, options); } catch (IOException x) { System.err.format("Unable to copy: %s: %s%n", source, x); } @@ -93,7 +93,7 @@ public class Copy { Path newdir = target.resolve(source.relativize(dir)); try { - dir.copyTo(newdir, options); + Files.copy(dir, newdir, options); } catch (FileAlreadyExistsException x) { // ignore } catch (IOException x) { @@ -116,8 +116,8 @@ public class Copy { if (exc == null && preserve) { Path newdir = target.resolve(source.relativize(dir)); try { - BasicFileAttributes attrs = Attributes.readBasicFileAttributes(dir); - Attributes.setLastModifiedTime(newdir, attrs.lastModifiedTime()); + FileTime time = Files.getLastModifiedTime(dir); + Files.setLastModifiedTime(newdir, time); } catch (IOException x) { System.err.format("Unable to copy all attributes to: %s: %s%n", newdir, x); } @@ -180,16 +180,11 @@ public class Copy { Path target = Paths.get(args[argi]); // check if target is a directory - boolean isDir = false; - try { - isDir = Attributes.readBasicFileAttributes(target).isDirectory(); - } catch (IOException x) { - // ignore (probably target does not exist) - } + boolean isDir = Files.isDirectory(target); // copy each source file/directory to target for (i=0; i 20) { @@ -66,7 +64,7 @@ public class DiskUsage { } } else { for (String file: args) { - FileStore store = Paths.get(file).getFileStore(); + FileStore store = Files.getFileStore(Paths.get(file)); printFileStore(store); } } diff --git a/jdk/src/share/sample/nio/file/FileType.java b/jdk/src/share/sample/nio/file/FileType.java index c4713f1a532..71451614b07 100644 --- a/jdk/src/share/sample/nio/file/FileType.java +++ b/jdk/src/share/sample/nio/file/FileType.java @@ -30,7 +30,6 @@ */ import java.nio.file.*; -import java.nio.file.attribute.*; import java.io.IOException; public class FileType { @@ -41,10 +40,8 @@ public class FileType { } for (String arg: args) { Path file = Paths.get(arg); - BasicFileAttributes attrs = Attributes.readBasicFileAttributes(file); - String type; - if (attrs.isDirectory()) { + if (Files.isDirectory(file)) { type = "directory"; } else { type = Files.probeContentType(file); diff --git a/jdk/src/share/sample/nio/file/WatchDir.java b/jdk/src/share/sample/nio/file/WatchDir.java index f2017256e9e..33c15dd0c04 100644 --- a/jdk/src/share/sample/nio/file/WatchDir.java +++ b/jdk/src/share/sample/nio/file/WatchDir.java @@ -58,7 +58,7 @@ public class WatchDir { private void register(Path dir) throws IOException { WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY); if (trace) { - FileRef prev = keys.get(key); + Path prev = keys.get(key); if (prev == null) { System.out.format("register: %s\n", dir); } else { @@ -147,7 +147,7 @@ public class WatchDir { // register it and its sub-directories if (recursive && (kind == ENTRY_CREATE)) { try { - if (Attributes.readBasicFileAttributes(child, NOFOLLOW_LINKS).isDirectory()) { + if (Files.isDirectory(child, NOFOLLOW_LINKS)) { registerAll(child); } } catch (IOException x) { diff --git a/jdk/src/share/sample/nio/file/Xdd.java b/jdk/src/share/sample/nio/file/Xdd.java index 8796a174049..7551121a924 100644 --- a/jdk/src/share/sample/nio/file/Xdd.java +++ b/jdk/src/share/sample/nio/file/Xdd.java @@ -58,14 +58,14 @@ public class Xdd { Paths.get(args[0]) : Paths.get(args[2]); // check that user defined attributes are supported by the file store - FileStore store = file.getFileStore(); + FileStore store = Files.getFileStore(file); if (!store.supportsFileAttributeView(UserDefinedFileAttributeView.class)) { System.err.format("UserDefinedFileAttributeView not supported on %s\n", store); System.exit(-1); } - UserDefinedFileAttributeView view = file. - getFileAttributeView(UserDefinedFileAttributeView.class); + UserDefinedFileAttributeView view = + Files.getFileAttributeView(file, UserDefinedFileAttributeView.class); // list user defined attributes if (args.length == 1) { diff --git a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java index a369a7f6831..6e425513c1c 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java @@ -725,7 +725,21 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget XGlobalCursorManager.getCursorManager().updateCursorImmediately(); } - public void pSetCursor(Cursor cursor) { + public final void pSetCursor(Cursor cursor) { + this.pSetCursor(cursor, true); + } + + /* + * The method changes the cursor. + * @param cursor - a new cursor to change to. + * @param ignoreSubComponents - if {@code true} is passed then + * the new cursor will be installed on window. + * if {@code false} is passed then + * subsequent components will try to handle + * this request and install their cursor. + */ + //ignoreSubComponents not used here + public void pSetCursor(Cursor cursor, boolean ignoreSubComponents) { XToolkit.awtLock(); try { long xcursor = XGlobalCursorManager.getCursor(cursor); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java b/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java index 579586ae047..c28d9d03e11 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java @@ -104,7 +104,9 @@ public final class XGlobalCursorManager extends GlobalCursorManager { nativeContainer = new WeakReference(nc); } - ((XComponentPeer)nc_peer).pSetCursor(cur); + //6431076. A subcomponents (a XTextArea in particular) + //may want to override the cursor over some of their parts. + ((XComponentPeer)nc_peer).pSetCursor(cur, false); // in case of grab we do for Swing we need to update keep cursor updated // (we don't need this in case of AWT menus). Window Manager consider // the grabber as a current window and use its cursor. So we need to diff --git a/jdk/src/solaris/classes/sun/awt/X11/XSelection.java b/jdk/src/solaris/classes/sun/awt/X11/XSelection.java index ea055bf4b64..1ffd1346361 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XSelection.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XSelection.java @@ -301,13 +301,8 @@ public final class XSelection { } finally { XToolkit.awtUnlock(); } - if (!dataGetter.isExecuted()) { - throw new IOException("Owner timed out"); - } - if (dataGetter.isDisposed()) { - throw new IOException("Owner failed to convert data"); - } + validateDataGetter(dataGetter); // Handle incremental transfer. if (dataGetter.getActualType() == @@ -380,14 +375,7 @@ public final class XSelection { XToolkit.awtUnlock(); } - // The owner didn't respond - terminate the transfer. - if (!incrDataGetter.isExecuted()) { - throw new IOException("Owner timed out"); - } - - if (incrDataGetter.isDisposed()) { - throw new IOException("Owner failed to convert data"); - } + validateDataGetter(dataGetter); if (incrDataGetter.getActualFormat() != 8) { throw new IOException("Unsupported data format: " + @@ -445,6 +433,23 @@ public final class XSelection { return data != null ? data : new byte[0]; } + void validateDataGetter(WindowPropertyGetter propertyGetter) + throws IOException + { + // The order of checks is important because a property getter + // has not been executed in case of timeout as well as in case of + // changed selection owner. + + if (propertyGetter.isDisposed()) { + throw new IOException("Owner failed to convert data"); + } + + // The owner didn't respond - terminate the transfer. + if (!propertyGetter.isExecuted()) { + throw new IOException("Owner timed out"); + } + } + // To be MT-safe this method should be called under awtLock. boolean isOwner() { return isOwner; diff --git a/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java index 4cbca44224d..d9cc3033a3b 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java @@ -175,6 +175,34 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { super.dispose(); } + + /* + * The method overrides one from XComponentPeer + * If ignoreSubComponents=={@code true} it calls super. + * If ignoreSubComponents=={@code false} it uses the XTextArea machinery + * to change cursor appropriately. In particular it changes the cursor to + * default if over scrollbars. + */ + @Override + public void pSetCursor(Cursor cursor, boolean ignoreSubComponents) { + Point onScreen = getLocationOnScreen(); + if (ignoreSubComponents || + javaMouseEventHandler == null || + onScreen == null) + { + super.pSetCursor(cursor, true); + return; + } + + Point cursorPos = new Point(); + ((XGlobalCursorManager)XGlobalCursorManager.getCursorManager()).getCursorPos(cursorPos); + + Point localPoint = new Point(cursorPos.x - onScreen.x, cursorPos.y - onScreen.y ); + + javaMouseEventHandler.setPointerToUnderPoint(localPoint); + javaMouseEventHandler.setCursor(); + } + void setScrollBarVisibility() { int visibility = ((TextArea)target).getScrollbarVisibility(); jtext.setLineWrap(false); @@ -1264,13 +1292,13 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { void handle( MouseEvent event ) { if ( ! grabbed ) { // dispatch() needs up-to-date pointer in ungrabbed case. - setPointerToUnderEventPoint( event ); + setPointerToUnderPoint( event.getPoint() ); } dispatch( event ); boolean wasGrabbed = grabbed; grabbed_update( event ); if ( wasGrabbed && ! grabbed ) { - setPointerToUnderEventPoint( event ); + setPointerToUnderPoint( event.getPoint() ); } setCursor(); } @@ -1338,7 +1366,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { // 'target.getCursor()' is also applied from elsewhere // (at least now), but only when mouse "entered", and // before 'XTextAreaPeer.handleJavaMouseEvent' is invoked. - outer.pSetCursor( outer.target.getCursor() ); + outer.pSetCursor( outer.target.getCursor(), true ); } else { // We can write here a more intelligent cursor selection @@ -1346,7 +1374,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { // However, I see no point in doing so now. But if you feel // like implementing it, you'll probably need to introduce // 'Pointer.Type.PANEL'. - outer.pSetCursor( outer.textPane.getCursor() ); + outer.pSetCursor( outer.textPane.getCursor(), true ); } } @@ -1391,8 +1419,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { return l; } - private void setPointerToUnderEventPoint( MouseEvent event ) { - Point point = event.getPoint(); + private void setPointerToUnderPoint( Point point ) { if ( outer.textPane.getViewport().getBounds().contains( point ) ) { current.setText(); } diff --git a/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java b/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java index 3b1925b8697..8e06835570f 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java +++ b/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java @@ -25,7 +25,7 @@ package sun.nio.fs; -import java.nio.file.FileRef; +import java.nio.file.Path; import java.io.IOException; import java.security.AccessController; import java.security.PrivilegedAction; @@ -57,7 +57,7 @@ public class GnomeFileTypeDetector } @Override - public String implProbeContentType(FileRef obj) throws IOException { + public String implProbeContentType(Path obj) throws IOException { if (!gioAvailable && !gnomeVfsAvailable) return null; if (!(obj instanceof UnixPath)) diff --git a/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java b/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java index c51fe6b959d..4499a08924c 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java +++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java @@ -66,19 +66,6 @@ class LinuxDosFileAttributeView return "dos"; } - @Override - public Object getAttribute(String attribute) throws IOException { - if (attribute.equals(READONLY_NAME)) - return readAttributes().isReadOnly(); - if (attribute.equals(ARCHIVE_NAME)) - return readAttributes().isArchive(); - if (attribute.equals(SYSTEM_NAME)) - return readAttributes().isSystem(); - if (attribute.equals(HIDDEN_NAME)) - return readAttributes().isHidden(); - return super.getAttribute(attribute); - } - @Override public void setAttribute(String attribute, Object value) throws IOException @@ -103,7 +90,7 @@ class LinuxDosFileAttributeView } @Override - public Map readAttributes(String[] attributes) + public Map readAttributes(String[] attributes) throws IOException { AttributesBuilder builder = AttributesBuilder.create(attributes); diff --git a/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java index 225c5abab35..b8b8c30f936 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java +++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java @@ -26,7 +26,6 @@ package sun.nio.fs; import java.nio.file.*; -import java.nio.file.attribute.*; import java.io.IOException; import java.util.*; import java.security.AccessController; @@ -76,39 +75,14 @@ class LinuxFileSystem extends UnixFileSystem { } } - @Override - @SuppressWarnings("unchecked") - public V newFileAttributeView(Class view, - UnixPath file, - LinkOption... options) - { - if (view == DosFileAttributeView.class) - return (V) new LinuxDosFileAttributeView(file, followLinks(options)); - if (view == UserDefinedFileAttributeView.class) - return (V) new LinuxUserDefinedFileAttributeView(file, followLinks(options)); - return super.newFileAttributeView(view, file, options); - } - - @Override - @SuppressWarnings("unchecked") - public DynamicFileAttributeView newFileAttributeView(String name, - UnixPath file, - LinkOption... options) - { - if (name.equals("dos")) - return new LinuxDosFileAttributeView(file, followLinks(options)); - if (name.equals("user")) - return new LinuxUserDefinedFileAttributeView(file, followLinks(options)); - return super.newFileAttributeView(name, file, options); - } // lazy initialization of the list of supported attribute views private static class SupportedFileFileAttributeViewsHolder { static final Set supportedFileAttributeViews = supportedFileAttributeViews(); private static Set supportedFileAttributeViews() { - Set result = new HashSet(); - result.addAll(UnixFileSystem.standardFileAttributeViews()); + Set result = new HashSet<>(); + result.addAll(standardFileAttributeViews()); // additional Linux-specific views result.add("dos"); result.add("user"); @@ -130,7 +104,7 @@ class LinuxFileSystem extends UnixFileSystem { * Returns object to iterate over the mount entries in the given fstab file. */ Iterable getMountEntries(String fstab) { - ArrayList entries = new ArrayList(); + ArrayList entries = new ArrayList<>(); try { long fp = setmntent(fstab.getBytes(), "r".getBytes()); try { @@ -159,10 +133,7 @@ class LinuxFileSystem extends UnixFileSystem { return getMountEntries("/etc/mtab"); } - @Override - FileStore getFileStore(UnixPath path) throws IOException { - return new LinuxFileStore(path); - } + @Override FileStore getFileStore(UnixMountEntry entry) throws IOException { diff --git a/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java index 1cb2772be30..6659ff5ede4 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java +++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java @@ -25,6 +25,10 @@ package sun.nio.fs; +import java.nio.file.*; +import java.nio.file.attribute.*; +import java.io.IOException; + /** * Linux implementation of FileSystemProvider */ @@ -38,4 +42,58 @@ public class LinuxFileSystemProvider extends UnixFileSystemProvider { LinuxFileSystem newFileSystem(String dir) { return new LinuxFileSystem(this, dir); } + + @Override + LinuxFileStore getFileStore(UnixPath path) throws IOException { + return new LinuxFileStore(path); + } + + @Override + @SuppressWarnings("unchecked") + public V getFileAttributeView(Path obj, + Class type, + LinkOption... options) + { + if (type == DosFileAttributeView.class) { + return (V) new LinuxDosFileAttributeView(UnixPath.toUnixPath(obj), + followLinks(options)); + } + if (type == UserDefinedFileAttributeView.class) { + return (V) new LinuxUserDefinedFileAttributeView(UnixPath.toUnixPath(obj), + followLinks(options)); + } + return super.getFileAttributeView(obj, type, options); + } + + @Override + public DynamicFileAttributeView getFileAttributeView(Path obj, + String name, + LinkOption... options) + { + if (name.equals("dos")) { + return new LinuxDosFileAttributeView(UnixPath.toUnixPath(obj), + followLinks(options)); + } + if (name.equals("user")) { + return new LinuxUserDefinedFileAttributeView(UnixPath.toUnixPath(obj), + followLinks(options)); + } + return super.getFileAttributeView(obj, name, options); + } + + @Override + @SuppressWarnings("unchecked") + public A readAttributes(Path file, + Class type, + LinkOption... options) + throws IOException + { + if (type == DosFileAttributes.class) { + DosFileAttributeView view = + getFileAttributeView(file, DosFileAttributeView.class, options); + return (A) view.readAttributes(); + } else { + return super.readAttributes(file, type, options); + } + } } diff --git a/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java b/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java index dfe19ea570e..14bfbcc2e1e 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java +++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java @@ -63,7 +63,7 @@ class LinuxUserDefinedFileAttributeView // Parses buffer as array of NULL-terminated C strings. private List asList(long address, int size) { - final List list = new ArrayList(); + List list = new ArrayList<>(); int start = 0; int pos = 0; while (pos < size) { diff --git a/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java b/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java index 9127a372d43..bca96756325 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java +++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java @@ -102,8 +102,8 @@ class LinuxWatchService // watch descriptor private volatile int wd; - LinuxWatchKey(LinuxWatchService watcher, int ifd, int wd) { - super(watcher); + LinuxWatchKey(UnixPath dir, LinuxWatchService watcher, int ifd, int wd) { + super(dir, watcher); this.ifd = ifd; this.wd = wd; } @@ -266,7 +266,7 @@ class LinuxWatchService // ensure watch descriptor is in map LinuxWatchKey key = wdToKey.get(wd); if (key == null) { - key = new LinuxWatchKey(watcher, ifd, wd); + key = new LinuxWatchKey(dir, watcher, ifd, wd); wdToKey.put(wd, key); } return key; diff --git a/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java b/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java index 285aeca4619..5fa71242b81 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java +++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java @@ -198,7 +198,7 @@ class SolarisAclFileAttributeView * Decode the buffer, returning an ACL */ private static List decode(long address, int n) { - ArrayList acl = new ArrayList(n); + ArrayList acl = new ArrayList<>(n); for (int i=0; i aceMask = new HashSet(); + Set aceMask = EnumSet.noneOf(AclEntryPermission.class); if ((mask & ACE_READ_DATA) > 0) aceMask.add(AclEntryPermission.READ_DATA); if ((mask & ACE_WRITE_DATA) > 0) @@ -274,7 +274,7 @@ class SolarisAclFileAttributeView if ((mask & ACE_SYNCHRONIZE) > 0) aceMask.add(AclEntryPermission.SYNCHRONIZE); - HashSet aceFlags = new HashSet(); + Set aceFlags = EnumSet.noneOf(AclEntryFlag.class); if ((flags & ACE_FILE_INHERIT_ACE) > 0) aceFlags.add(AclEntryFlag.FILE_INHERIT); if ((flags & ACE_DIRECTORY_INHERIT_ACE) > 0) diff --git a/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java b/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java index 9618e42812c..516d983c259 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java +++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java @@ -26,7 +26,6 @@ package sun.nio.fs; import java.nio.file.*; -import java.nio.file.attribute.*; import java.io.IOException; import java.util.*; import java.security.AccessController; @@ -71,38 +70,14 @@ class SolarisFileSystem extends UnixFileSystem { } } - @Override - @SuppressWarnings("unchecked") - public V newFileAttributeView(Class view, - UnixPath file, LinkOption... options) - { - if (view == AclFileAttributeView.class) - return (V) new SolarisAclFileAttributeView(file, followLinks(options)); - if (view == UserDefinedFileAttributeView.class) { - return(V) new SolarisUserDefinedFileAttributeView(file, followLinks(options)); - } - return super.newFileAttributeView(view, file, options); - } - - @Override - protected DynamicFileAttributeView newFileAttributeView(String name, - UnixPath file, - LinkOption... options) - { - if (name.equals("acl")) - return new SolarisAclFileAttributeView(file, followLinks(options)); - if (name.equals("user")) - return new SolarisUserDefinedFileAttributeView(file, followLinks(options)); - return super.newFileAttributeView(name, file, options); - } // lazy initialization of the list of supported attribute views private static class SupportedFileFileAttributeViewsHolder { static final Set supportedFileAttributeViews = supportedFileAttributeViews(); private static Set supportedFileAttributeViews() { - Set result = new HashSet(); - result.addAll(UnixFileSystem.standardFileAttributeViews()); + Set result = new HashSet<>(); + result.addAll(standardFileAttributeViews()); // additional Solaris-specific views result.add("acl"); result.add("user"); @@ -126,7 +101,7 @@ class SolarisFileSystem extends UnixFileSystem { */ @Override Iterable getMountEntries() { - ArrayList entries = new ArrayList(); + ArrayList entries = new ArrayList<>(); try { UnixPath mnttab = new UnixPath(this, "/etc/mnttab"); long fp = fopen(mnttab, "r"); @@ -147,11 +122,6 @@ class SolarisFileSystem extends UnixFileSystem { return entries; } - @Override - FileStore getFileStore(UnixPath path) throws IOException { - return new SolarisFileStore(path); - } - @Override FileStore getFileStore(UnixMountEntry entry) throws IOException { return new SolarisFileStore(this, entry); diff --git a/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java b/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java index 70f5577fc8b..98c3ae8699c 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java +++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java @@ -25,6 +25,10 @@ package sun.nio.fs; +import java.nio.file.*; +import java.nio.file.attribute.*; +import java.io.IOException; + /** * Solaris implementation of FileSystemProvider */ @@ -38,4 +42,41 @@ public class SolarisFileSystemProvider extends UnixFileSystemProvider { SolarisFileSystem newFileSystem(String dir) { return new SolarisFileSystem(this, dir); } + + @Override + SolarisFileStore getFileStore(UnixPath path) throws IOException { + return new SolarisFileStore(path); + } + + + @Override + @SuppressWarnings("unchecked") + public V getFileAttributeView(Path obj, + Class type, + LinkOption... options) + { + if (type == AclFileAttributeView.class) { + return (V) new SolarisAclFileAttributeView(UnixPath.toUnixPath(obj), + followLinks(options)); + } + if (type == UserDefinedFileAttributeView.class) { + return(V) new SolarisUserDefinedFileAttributeView(UnixPath.toUnixPath(obj), + followLinks(options)); + } + return super.getFileAttributeView(obj, type, options); + } + + @Override + public DynamicFileAttributeView getFileAttributeView(Path obj, + String name, + LinkOption... options) + { + if (name.equals("acl")) + return new SolarisAclFileAttributeView(UnixPath.toUnixPath(obj), + followLinks(options)); + if (name.equals("user")) + return new SolarisUserDefinedFileAttributeView(UnixPath.toUnixPath(obj), + followLinks(options)); + return super.getFileAttributeView(obj, name, options); + } } diff --git a/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java b/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java index 60c9da167dc..6148f4109f2 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java +++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java @@ -83,7 +83,7 @@ class SolarisUserDefinedFileAttributeView } // read list of extended attributes - final List list = new ArrayList(); + List list = new ArrayList<>(); try { byte[] name; while ((name = readdir(dp)) != null) { diff --git a/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java b/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java index 5b9f98134b6..68296bc34e5 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java +++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java @@ -128,7 +128,6 @@ class SolarisWatchService private class SolarisWatchKey extends AbstractWatchKey implements DirectoryNode { - private final UnixPath dir; private final UnixFileKey fileKey; // pointer to native file_obj object @@ -147,15 +146,14 @@ class SolarisWatchService long object, Set> events) { - super(watcher); - this.dir = dir; + super(dir, watcher); this.fileKey = fileKey; this.object = object; this.events = events; } - UnixPath getFileRef() { - return dir; + UnixPath getDirectory() { + return (UnixPath)watchable(); } UnixFileKey getFileKey() { @@ -487,7 +485,7 @@ class SolarisWatchService */ void processDirectoryEvents(SolarisWatchKey key, int mask) { if ((mask & (FILE_MODIFIED | FILE_ATTRIB)) != 0) { - registerChildren(key.getFileRef(), key, + registerChildren(key.getDirectory(), key, key.events().contains(StandardWatchEventKind.ENTRY_CREATE)); } } @@ -524,7 +522,7 @@ class SolarisWatchService boolean removed = true; try { UnixFileAttributes - .get(key.getFileRef().resolve(node.name()), false); + .get(key.getDirectory().resolve(node.name()), false); removed = false; } catch (UnixException x) { } @@ -554,14 +552,14 @@ class SolarisWatchService DirectoryStream stream = null; try { - stream = dir.newDirectoryStream(); + stream = Files.newDirectoryStream(dir); } catch (IOException x) { // nothing we can do return; } try { for (Path entry: stream) { - Path name = entry.getName(); + Path name = entry.getFileName(); // skip entry if already registered if (parent.getChild(name) != null) @@ -582,9 +580,9 @@ class SolarisWatchService } // create node - EntryNode node = new EntryNode(object, entry.getName(), parent); + EntryNode node = new EntryNode(object, entry.getFileName(), parent); // tell the parent about it - parent.addChild(entry.getName(), node); + parent.addChild(entry.getFileName(), node); object2Node.put(object, node); } } catch (ConcurrentModificationException x) { diff --git a/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java b/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java index ecb7e189923..9a666c167ee 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java +++ b/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java @@ -237,7 +237,7 @@ class UnixCopyFile { fo = open(target, (O_WRONLY | O_CREAT | - O_TRUNC), + O_EXCL), attrs.mode()); } catch (UnixException x) { x.rethrowAsIOException(target); @@ -435,10 +435,8 @@ class UnixCopyFile { if (targetAttrs.isDirectory() && (x.errno() == EEXIST || x.errno() == ENOTEMPTY)) { - throw new FileAlreadyExistsException( - source.getPathForExecptionMessage(), - target.getPathForExecptionMessage(), - x.getMessage()); + throw new DirectoryNotEmptyException( + target.getPathForExecptionMessage()); } x.rethrowAsIOException(target); } @@ -556,10 +554,8 @@ class UnixCopyFile { if (targetAttrs.isDirectory() && (x.errno() == EEXIST || x.errno() == ENOTEMPTY)) { - throw new FileAlreadyExistsException( - source.getPathForExecptionMessage(), - target.getPathForExecptionMessage(), - x.getMessage()); + throw new DirectoryNotEmptyException( + target.getPathForExecptionMessage()); } x.rethrowAsIOException(target); } diff --git a/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java b/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java index 69f3cc52d15..c21a17707a8 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java +++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java @@ -148,17 +148,6 @@ class UnixFileAttributeViews { return "posix"; } - @Override - public Object getAttribute(String attribute) throws IOException { - if (attribute.equals(PERMISSIONS_NAME)) - return readAttributes().permissions(); - if (attribute.equals(OWNER_NAME)) - return readAttributes().owner(); - if (attribute.equals(GROUP_NAME)) - return readAttributes().group(); - return super.getAttribute(attribute); - } - @Override @SuppressWarnings("unchecked") public void setAttribute(String attribute, Object value) @@ -195,7 +184,7 @@ class UnixFileAttributeViews { } @Override - public Map readAttributes(String[] attributes) + public Map readAttributes(String[] attributes) throws IOException { AttributesBuilder builder = AttributesBuilder.create(attributes); @@ -307,27 +296,6 @@ class UnixFileAttributeViews { return "unix"; } - @Override - public Object getAttribute(String attribute) throws IOException { - if (attribute.equals(MODE_NAME)) - return readAttributes().mode(); - if (attribute.equals(INO_NAME)) - return readAttributes().ino(); - if (attribute.equals(DEV_NAME)) - return readAttributes().dev(); - if (attribute.equals(RDEV_NAME)) - return readAttributes().rdev(); - if (attribute.equals(NLINK_NAME)) - return readAttributes().nlink(); - if (attribute.equals(UID_NAME)) - return readAttributes().uid(); - if (attribute.equals(GID_NAME)) - return readAttributes().gid(); - if (attribute.equals(CTIME_NAME)) - return readAttributes().ctime(); - return super.getAttribute(attribute); - } - @Override public void setAttribute(String attribute, Object value) throws IOException @@ -348,7 +316,7 @@ class UnixFileAttributeViews { } @Override - public Map readAttributes(String[] attributes) + public Map readAttributes(String[] attributes) throws IOException { AttributesBuilder builder = AttributesBuilder.create(attributes); diff --git a/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java b/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java index b9a81f0315e..966712e0cf1 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java +++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java @@ -124,7 +124,7 @@ class UnixFileAttributes @Override public FileTime creationTime() { - return null; + return lastModifiedTime(); } @Override @@ -194,7 +194,7 @@ class UnixFileAttributes @Override public Set permissions() { int bits = (st_mode & UnixConstants.S_IAMB); - HashSet perms = new HashSet(); + HashSet perms = new HashSet<>(); if ((bits & UnixConstants.S_IRUSR) > 0) perms.add(PosixFilePermission.OWNER_READ); diff --git a/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java b/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java index 46e09c6d7b1..080c2c0c2fd 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java +++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java @@ -103,28 +103,50 @@ abstract class UnixFileStore return entry.isReadOnly(); } + // uses statvfs to read the file system information + private UnixFileStoreAttributes readAttributes() throws IOException { + try { + return UnixFileStoreAttributes.get(file); + } catch (UnixException x) { + x.rethrowAsIOException(file); + return null; // keep compile happy + } + } + + @Override + public long getTotalSpace() throws IOException { + UnixFileStoreAttributes attrs = readAttributes(); + return attrs.blockSize() * attrs.totalBlocks(); + } + + @Override + public long getUsableSpace() throws IOException { + UnixFileStoreAttributes attrs = readAttributes(); + return attrs.blockSize() * attrs.availableBlocks(); + } + + @Override + public long getUnallocatedSpace() throws IOException { + UnixFileStoreAttributes attrs = readAttributes(); + return attrs.blockSize() * attrs.freeBlocks(); + } + @Override - @SuppressWarnings("unchecked") public V getFileStoreAttributeView(Class view) { if (view == null) throw new NullPointerException(); - if (view == FileStoreSpaceAttributeView.class) - return (V) new UnixFileStoreSpaceAttributeView(this); return (V) null; } @Override public Object getAttribute(String attribute) throws IOException { - if (attribute.equals("space:totalSpace")) - return new UnixFileStoreSpaceAttributeView(this) - .readAttributes().totalSpace(); - if (attribute.equals("space:usableSpace")) - return new UnixFileStoreSpaceAttributeView(this) - .readAttributes().usableSpace(); - if (attribute.equals("space:unallocatedSpace")) - return new UnixFileStoreSpaceAttributeView(this) - .readAttributes().unallocatedSpace(); + if (attribute.equals("totalSpace")) + return getTotalSpace(); + if (attribute.equals("usableSpace")) + return getUsableSpace(); + if (attribute.equals("unallocatedSpace")) + return getUnallocatedSpace(); throw new UnsupportedOperationException("'" + attribute + "' not recognized"); } @@ -181,50 +203,6 @@ abstract class UnixFileStore return sb.toString(); } - private static class UnixFileStoreSpaceAttributeView - implements FileStoreSpaceAttributeView - { - private final UnixFileStore fs; - - UnixFileStoreSpaceAttributeView(UnixFileStore fs) { - this.fs = fs; - } - - @Override - public String name() { - return "space"; - } - - @Override - public FileStoreSpaceAttributes readAttributes() - throws IOException - { - UnixPath file = fs.file(); - final UnixFileStoreAttributes attrs; - try { - attrs = UnixFileStoreAttributes.get(file); - } catch (UnixException x) { - x.rethrowAsIOException(file); - return null; // keep compile happy - } - - return new FileStoreSpaceAttributes() { - @Override - public long totalSpace() { - return attrs.blockSize() * attrs.totalBlocks(); - } - @Override - public long usableSpace() { - return attrs.blockSize() * attrs.availableBlocks(); - } - @Override - public long unallocatedSpace() { - return attrs.blockSize() * attrs.freeBlocks(); - } - }; - } - } - // -- fstypes.properties -- private static final Object loadLock = new Object(); @@ -277,11 +255,8 @@ abstract class UnixFileStore String fstypes = System.getProperty("java.home") + "/lib/fstypes.properties"; Path file = Paths.get(fstypes); try { - ReadableByteChannel rbc = file.newByteChannel(); - try { + try (ReadableByteChannel rbc = Files.newByteChannel(file)) { result.load(Channels.newReader(rbc, "UTF-8")); - } finally { - rbc.close(); } } catch (IOException x) { } diff --git a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java index 7068a25fc83..96c6e4a4cce 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java +++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java @@ -98,6 +98,10 @@ abstract class UnixFileSystem return false; } + static List standardFileAttributeViews() { + return Arrays.asList("basic", "posix", "unix", "owner"); + } + @Override public final FileSystemProvider provider() { return provider; @@ -168,12 +172,6 @@ abstract class UnixFileSystem */ abstract Iterable getMountEntries(); - /** - * Returns a FileStore to represent the file system where the given file - * reside. - */ - abstract FileStore getFileStore(UnixPath path) throws IOException; - /** * Returns a FileStore to represent the file system for the given mount * mount. @@ -264,7 +262,22 @@ abstract class UnixFileSystem } @Override - public final UnixPath getPath(String path) { + public final Path getPath(String first, String... more) { + String path; + if (more.length == 0) { + path = first; + } else { + StringBuilder sb = new StringBuilder(); + sb.append(first); + for (String segment: more) { + if (segment.length() > 0) { + if (sb.length() > 0) + sb.append('/'); + sb.append(segment); + } + } + path = sb.toString(); + } return new UnixPath(this, path); } @@ -300,77 +313,30 @@ abstract class UnixFileSystem private static final String GLOB_SYNTAX = "glob"; private static final String REGEX_SYNTAX = "regex"; - protected boolean followLinks(LinkOption... options) { - boolean followLinks = true; - for (LinkOption option: options) { - if (option == LinkOption.NOFOLLOW_LINKS) { - followLinks = false; - continue; - } - if (option == null) - throw new NullPointerException(); - throw new AssertionError("Should not get here"); - } - return followLinks; - } - @SuppressWarnings("unchecked") - protected V newFileAttributeView(Class view, - UnixPath file, - LinkOption... options) - { - if (view == null) - throw new NullPointerException(); - boolean followLinks = followLinks(options); - Class c = view; - if (c == BasicFileAttributeView.class) - return (V) UnixFileAttributeViews.createBasicView(file, followLinks); - if (c == PosixFileAttributeView.class) - return (V) UnixFileAttributeViews.createPosixView(file, followLinks); - if (c == FileOwnerAttributeView.class) - return (V) UnixFileAttributeViews.createOwnerView(file, followLinks); - return (V) null; - } - - static List standardFileAttributeViews() { - return Arrays.asList("basic", "posix", "unix", "owner"); - } - - protected DynamicFileAttributeView newFileAttributeView(String name, - UnixPath file, - LinkOption... options) - { - boolean followLinks = followLinks(options); - if (name.equals("basic")) - return UnixFileAttributeViews.createBasicView(file, followLinks); - if (name.equals("posix")) - return UnixFileAttributeViews.createPosixView(file, followLinks); - if (name.equals("unix")) - return UnixFileAttributeViews.createUnixView(file, followLinks); - if (name.equals("owner")) - return UnixFileAttributeViews.createOwnerView(file, followLinks); - return null; - } @Override public final UserPrincipalLookupService getUserPrincipalLookupService() { - return theLookupService; + return LookupService.instance; } - private static final UserPrincipalLookupService theLookupService = - new UserPrincipalLookupService() { - @Override - public UserPrincipal lookupPrincipalByName(String name) - throws IOException - { - return UnixUserPrincipals.lookupUser(name); - } + private static class LookupService { + static final UserPrincipalLookupService instance = + new UserPrincipalLookupService() { + @Override + public UserPrincipal lookupPrincipalByName(String name) + throws IOException + { + return UnixUserPrincipals.lookupUser(name); + } + + @Override + public GroupPrincipal lookupPrincipalByGroupName(String group) + throws IOException + { + return UnixUserPrincipals.lookupGroup(group); + } + }; + } - @Override - public GroupPrincipal lookupPrincipalByGroupName(String group) - throws IOException - { - return UnixUserPrincipals.lookupGroup(group); - } - }; } diff --git a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java index aae884aa340..8ec672a306b 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java +++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java @@ -27,21 +27,25 @@ package sun.nio.fs; import java.nio.file.*; import java.nio.file.attribute.*; -import java.nio.file.spi.FileSystemProvider; import java.nio.channels.*; import java.net.URI; import java.util.concurrent.ExecutorService; import java.io.IOException; +import java.io.FilePermission; import java.util.*; +import java.security.AccessController; import sun.nio.ch.ThreadPool; +import sun.security.util.SecurityConstants; +import static sun.nio.fs.UnixNativeDispatcher.*; +import static sun.nio.fs.UnixConstants.*; /** * Base implementation of FileSystemProvider */ public abstract class UnixFileSystemProvider - extends FileSystemProvider + extends AbstractFileSystemProvider { private static final String USER_DIR = "user.dir"; private final UnixFileSystem theFileSystem; @@ -93,7 +97,7 @@ public abstract class UnixFileSystemProvider return UnixUriUtils.fromUri(theFileSystem, uri); } - protected UnixPath checkPath(Path obj) { + UnixPath checkPath(Path obj) { if (obj == null) throw new NullPointerException(); if (!(obj instanceof UnixPath)) @@ -101,6 +105,76 @@ public abstract class UnixFileSystemProvider return (UnixPath)obj; } + boolean followLinks(LinkOption... options) { + boolean followLinks = true; + for (LinkOption option: options) { + if (option == LinkOption.NOFOLLOW_LINKS) { + followLinks = false; + continue; + } + if (option == null) + throw new NullPointerException(); + throw new AssertionError("Should not get here"); + } + return followLinks; + } + + @Override + @SuppressWarnings("unchecked") + public V getFileAttributeView(Path obj, + Class type, + LinkOption... options) + { + UnixPath file = UnixPath.toUnixPath(obj); + boolean followLinks = followLinks(options); + if (type == BasicFileAttributeView.class) + return (V) UnixFileAttributeViews.createBasicView(file, followLinks); + if (type == PosixFileAttributeView.class) + return (V) UnixFileAttributeViews.createPosixView(file, followLinks); + if (type == FileOwnerAttributeView.class) + return (V) UnixFileAttributeViews.createOwnerView(file, followLinks); + if (type == null) + throw new NullPointerException(); + return (V) null; + } + + @Override + @SuppressWarnings("unchecked") + public A readAttributes(Path file, + Class type, + LinkOption... options) + throws IOException + { + Class view; + if (type == BasicFileAttributes.class) + view = BasicFileAttributeView.class; + else if (type == PosixFileAttributes.class) + view = PosixFileAttributeView.class; + else if (type == null) + throw new NullPointerException(); + else + throw new UnsupportedOperationException(); + return (A) getFileAttributeView(file, view, options).readAttributes(); + } + + @Override + protected DynamicFileAttributeView getFileAttributeView(Path obj, + String name, + LinkOption... options) + { + UnixPath file = UnixPath.toUnixPath(obj); + boolean followLinks = followLinks(options); + if (name.equals("basic")) + return UnixFileAttributeViews.createBasicView(file, followLinks); + if (name.equals("posix")) + return UnixFileAttributeViews.createPosixView(file, followLinks); + if (name.equals("unix")) + return UnixFileAttributeViews.createUnixView(file, followLinks); + if (name.equals("owner")) + return UnixFileAttributeViews.createOwnerView(file, followLinks); + return null; + } + @Override public FileChannel newFileChannel(Path obj, Set options, @@ -136,4 +210,303 @@ public abstract class UnixFileSystemProvider return null; } } + + + @Override + public SeekableByteChannel newByteChannel(Path obj, + Set options, + FileAttribute... attrs) + throws IOException + { + UnixPath file = UnixPath.toUnixPath(obj); + int mode = UnixFileModeAttribute + .toUnixMode(UnixFileModeAttribute.ALL_READWRITE, attrs); + try { + return UnixChannelFactory.newFileChannel(file, options, mode); + } catch (UnixException x) { + x.rethrowAsIOException(file); + return null; // keep compiler happy + } + } + + @Override + boolean implDelete(Path obj, boolean failIfNotExists) throws IOException { + UnixPath file = UnixPath.toUnixPath(obj); + file.checkDelete(); + + // need file attributes to know if file is directory + UnixFileAttributes attrs = null; + try { + attrs = UnixFileAttributes.get(file, false); + if (attrs.isDirectory()) { + rmdir(file); + } else { + unlink(file); + } + return true; + } catch (UnixException x) { + // no-op if file does not exist + if (!failIfNotExists && x.errno() == ENOENT) + return false; + + // DirectoryNotEmptyException if not empty + if (attrs != null && attrs.isDirectory() && + (x.errno() == EEXIST || x.errno() == ENOTEMPTY)) + throw new DirectoryNotEmptyException(file.getPathForExecptionMessage()); + + x.rethrowAsIOException(file); + return false; + } + } + + @Override + public void copy(Path source, Path target, CopyOption... options) + throws IOException + { + UnixCopyFile.copy(UnixPath.toUnixPath(source), + UnixPath.toUnixPath(target), + options); + } + + @Override + public void move(Path source, Path target, CopyOption... options) + throws IOException + { + UnixCopyFile.move(UnixPath.toUnixPath(source), + UnixPath.toUnixPath(target), + options); + } + + @Override + public void checkAccess(Path obj, AccessMode... modes) throws IOException { + UnixPath file = UnixPath.toUnixPath(obj); + boolean e = false; + boolean r = false; + boolean w = false; + boolean x = false; + + if (modes.length == 0) { + e = true; + } else { + for (AccessMode mode: modes) { + switch (mode) { + case READ : r = true; break; + case WRITE : w = true; break; + case EXECUTE : x = true; break; + default: throw new AssertionError("Should not get here"); + } + } + } + + int mode = 0; + if (e || r) { + file.checkRead(); + mode |= (r) ? R_OK : F_OK; + } + if (w) { + file.checkWrite(); + mode |= W_OK; + } + if (x) { + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + // not cached + sm.checkExec(file.getPathForPermissionCheck()); + } + mode |= X_OK; + } + try { + access(file, mode); + } catch (UnixException exc) { + exc.rethrowAsIOException(file); + } + } + + @Override + public boolean isSameFile(Path obj1, Path obj2) throws IOException { + UnixPath file1 = UnixPath.toUnixPath(obj1); + if (file1.equals(obj2)) + return true; + if (obj2 == null) + throw new NullPointerException(); + if (!(obj2 instanceof UnixPath)) + return false; + UnixPath file2 = (UnixPath)obj2; + + // check security manager access to both files + file1.checkRead(); + file2.checkRead(); + + UnixFileAttributes attrs1; + UnixFileAttributes attrs2; + try { + attrs1 = UnixFileAttributes.get(file1, true); + } catch (UnixException x) { + x.rethrowAsIOException(file1); + return false; // keep compiler happy + } + try { + attrs2 = UnixFileAttributes.get(file2, true); + } catch (UnixException x) { + x.rethrowAsIOException(file2); + return false; // keep compiler happy + } + return attrs1.isSameFile(attrs2); + } + + @Override + public boolean isHidden(Path obj) { + UnixPath file = UnixPath.toUnixPath(obj); + file.checkRead(); + UnixPath name = file.getFileName(); + if (name == null) + return false; + return (name.asByteArray()[0] == '.'); + } + + /** + * Returns a FileStore to represent the file system where the given file + * reside. + */ + abstract FileStore getFileStore(UnixPath path) throws IOException; + + @Override + public FileStore getFileStore(Path obj) throws IOException { + UnixPath file = UnixPath.toUnixPath(obj); + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + sm.checkPermission(new RuntimePermission("getFileStoreAttributes")); + file.checkRead(); + } + return getFileStore(file); + } + + @Override + public void createDirectory(Path obj, FileAttribute... attrs) + throws IOException + { + UnixPath dir = UnixPath.toUnixPath(obj); + dir.checkWrite(); + + int mode = UnixFileModeAttribute + .toUnixMode(UnixFileModeAttribute.ALL_PERMISSIONS, attrs); + try { + mkdir(dir, mode); + } catch (UnixException x) { + x.rethrowAsIOException(dir); + } + } + + + @Override + public DirectoryStream newDirectoryStream(Path obj, DirectoryStream.Filter filter) + throws IOException + { + UnixPath dir = UnixPath.toUnixPath(obj); + dir.checkRead(); + if (filter == null) + throw new NullPointerException(); + + // can't return SecureDirectoryStream on kernels that don't support + // openat, etc. + if (!supportsAtSysCalls()) { + try { + long ptr = opendir(dir); + return new UnixDirectoryStream(dir, ptr, filter); + } catch (UnixException x) { + if (x.errno() == ENOTDIR) + throw new NotDirectoryException(dir.getPathForExecptionMessage()); + x.rethrowAsIOException(dir); + } + } + + // open directory and dup file descriptor for use by + // opendir/readdir/closedir + int dfd1 = -1; + int dfd2 = -1; + long dp = 0L; + try { + dfd1 = open(dir, O_RDONLY, 0); + dfd2 = dup(dfd1); + dp = fdopendir(dfd1); + } catch (UnixException x) { + if (dfd1 != -1) + UnixNativeDispatcher.close(dfd1); + if (dfd2 != -1) + UnixNativeDispatcher.close(dfd2); + if (x.errno() == UnixConstants.ENOTDIR) + throw new NotDirectoryException(dir.getPathForExecptionMessage()); + x.rethrowAsIOException(dir); + } + return new UnixSecureDirectoryStream(dir, dp, dfd2, filter); + } + + @Override + public void createSymbolicLink(Path obj1, Path obj2, FileAttribute... attrs) + throws IOException + { + UnixPath link = UnixPath.toUnixPath(obj1); + UnixPath target = UnixPath.toUnixPath(obj2); + + // no attributes supported when creating links + if (attrs.length > 0) { + UnixFileModeAttribute.toUnixMode(0, attrs); // may throw NPE or UOE + throw new UnsupportedOperationException("Initial file attributes" + + "not supported when creating symbolic link"); + } + + // permission check + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + sm.checkPermission(new LinkPermission("symbolic")); + link.checkWrite(); + } + + // create link + try { + symlink(target.asByteArray(), link); + } catch (UnixException x) { + x.rethrowAsIOException(link); + } + } + + @Override + public void createLink(Path obj1, Path obj2) throws IOException { + UnixPath link = UnixPath.toUnixPath(obj1); + UnixPath existing = UnixPath.toUnixPath(obj2); + + // permission check + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + sm.checkPermission(new LinkPermission("hard")); + link.checkWrite(); + existing.checkWrite(); + } + try { + link(existing, link); + } catch (UnixException x) { + x.rethrowAsIOException(link, existing); + } + } + + @Override + public Path readSymbolicLink(Path obj1) throws IOException { + UnixPath link = UnixPath.toUnixPath(obj1); + // permission check + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + FilePermission perm = new FilePermission(link.getPathForPermissionCheck(), + SecurityConstants.FILE_READLINK_ACTION); + AccessController.checkPermission(perm); + } + try { + byte[] target = readlink(link); + return new UnixPath(link.getFileSystem(), target); + } catch (UnixException x) { + if (x.errno() == UnixConstants.EINVAL) + throw new NotLinkException(link.getPathForExecptionMessage()); + x.rethrowAsIOException(link); + return null; // keep compiler happy + } + } } diff --git a/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java b/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java index 1667263c222..9ec49b8d37a 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java +++ b/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java @@ -27,15 +27,11 @@ package sun.nio.fs; import java.nio.*; import java.nio.file.*; -import java.nio.file.attribute.*; import java.nio.charset.*; -import java.nio.channels.*; -import java.security.AccessController; import java.io.*; import java.net.URI; import java.util.*; import java.lang.ref.SoftReference; -import sun.security.util.SecurityConstants; import static sun.nio.fs.UnixNativeDispatcher.*; import static sun.nio.fs.UnixConstants.*; @@ -79,8 +75,6 @@ class UnixPath // removes redundant slashes and check input for invalid characters static String normalizeAndCheck(String input) { int n = input.length(); - if (n == 0) - throw new InvalidPathException(input, "Path is empty"); char prevChar = 0; for (int i=0; i < n; i++) { char c = input.charAt(i); @@ -174,7 +168,13 @@ class UnixPath if (getFileSystem().needToResolveAgainstDefaultDirectory()) { return resolve(getFileSystem().defaultDirectory(), path); } else { - return path; + if (!isEmpty()) { + return path; + } else { + // empty path case will access current directory + byte[] here = { '.' }; + return here; + } } } @@ -193,7 +193,7 @@ class UnixPath } // Checks that the given file is a UnixPath - private UnixPath checkPath(FileRef obj) { + static UnixPath toUnixPath(Path obj) { if (obj == null) throw new NullPointerException(); if (!(obj instanceof UnixPath)) @@ -209,12 +209,17 @@ class UnixPath // count names count = 0; index = 0; - while (index < path.length) { - byte c = path[index++]; - if (c != '/') { - count++; - while (index < path.length && path[index] != '/') - index++; + if (isEmpty()) { + // empty path has one name + count = 1; + } else { + while (index < path.length) { + byte c = path[index++]; + if (c != '/') { + count++; + while (index < path.length && path[index] != '/') + index++; + } } } @@ -239,6 +244,16 @@ class UnixPath } } + // returns {@code true} if this path is an empty path + private boolean isEmpty() { + return path.length == 0; + } + + // returns an empty path + private UnixPath emptyPath() { + return new UnixPath(getFileSystem(), new byte[0]); + } + @Override public UnixFileSystem getFileSystem() { return fs; @@ -246,7 +261,7 @@ class UnixPath @Override public UnixPath getRoot() { - if (path[0] == '/') { + if (path.length > 0 && path[0] == '/') { return getFileSystem().rootDirectory(); } else { return null; @@ -254,14 +269,17 @@ class UnixPath } @Override - public UnixPath getName() { + public UnixPath getFileName() { initOffsets(); int count = offsets.length; - if (count == 0) - return null; // no elements so no name - if (count == 1 && path[0] != '/') + // no elements so no name + if (count == 0) + return null; + + // one name element and no root component + if (count == 1 && path.length > 0 && path[0] != '/') return this; int lastOffset = offsets[count-1]; @@ -349,57 +367,58 @@ class UnixPath @Override public boolean isAbsolute() { - return (path[0] == '/'); + return (path.length > 0 && path[0] == '/'); } // Resolve child against given base private static byte[] resolve(byte[] base, byte[] child) { - if (child[0] == '/') + int baseLength = base.length; + int childLength = child.length; + if (childLength == 0) + return base; + if (baseLength == 0 || child[0] == '/') return child; byte[] result; - if (base.length == 1 && base[0] == '/') { - result = new byte[child.length + 1]; + if (baseLength == 1 && base[0] == '/') { + result = new byte[childLength + 1]; result[0] = '/'; - System.arraycopy(child, 0, result, 1, child.length); + System.arraycopy(child, 0, result, 1, childLength); } else { - result = new byte[base.length + 1 + child.length]; - System.arraycopy(base, 0, result, 0, base.length); + result = new byte[baseLength + 1 + childLength]; + System.arraycopy(base, 0, result, 0, baseLength); result[base.length] = '/'; - System.arraycopy(child, 0, result, base.length+1, child.length); + System.arraycopy(child, 0, result, baseLength+1, childLength); } return result; } @Override public UnixPath resolve(Path obj) { - if (obj == null) - return this; - byte[] other = checkPath(obj).path; - if (other[0] == '/') + byte[] other = toUnixPath(obj).path; + if (other.length > 0 && other[0] == '/') return ((UnixPath)obj); byte[] result = resolve(path, other); return new UnixPath(getFileSystem(), result); } - @Override - public UnixPath resolve(String other) { - return resolve(new UnixPath(getFileSystem(), other)); - } - UnixPath resolve(byte[] other) { return resolve(new UnixPath(getFileSystem(), other)); } @Override public UnixPath relativize(Path obj) { - UnixPath other = checkPath(obj); + UnixPath other = toUnixPath(obj); if (other.equals(this)) - return null; + return emptyPath(); // can only relativize paths of the same type if (this.isAbsolute() != other.isAbsolute()) throw new IllegalArgumentException("'other' is different type of Path"); + // this path is the empty path + if (this.isEmpty()) + return other; + int bn = this.getNameCount(); int cn = other.getNameCount(); @@ -419,14 +438,27 @@ class UnixPath if (dotdots == 0) return remainder; + // other is the empty path + boolean isOtherEmpty = other.isEmpty(); + // result is a "../" for each remaining name in base - // followed by the remaining names in other - byte[] result = new byte[dotdots*3 + remainder.path.length]; + // followed by the remaining names in other. If the remainder is + // the empty path then we don't add the final trailing slash. + int len = dotdots*3 + remainder.path.length; + if (isOtherEmpty) { + assert remainder.isEmpty(); + len--; + } + byte[] result = new byte[len]; int pos = 0; while (dotdots > 0) { result[pos++] = (byte)'.'; result[pos++] = (byte)'.'; - result[pos++] = (byte)'/'; + if (isOtherEmpty) { + if (dotdots > 1) result[pos++] = (byte)'/'; + } else { + result[pos++] = (byte)'/'; + } dotdots--; } System.arraycopy(remainder.path, 0, result, pos, remainder.path.length); @@ -457,7 +489,7 @@ class UnixPath int[] size = new int[count]; // length of name int remaining = count; // number of names remaining boolean hasDotDot = false; // has at least one .. - boolean isAbsolute = path[0] == '/'; + boolean isAbsolute = isAbsolute(); // first pass: // 1. compute length of names @@ -542,7 +574,7 @@ class UnixPath // corner case - all names removed if (remaining == 0) { - return isAbsolute ? getFileSystem().rootDirectory() : null; + return isAbsolute ? getFileSystem().rootDirectory() : emptyPath(); } // compute length of result @@ -574,7 +606,7 @@ class UnixPath @Override public boolean startsWith(Path other) { - UnixPath that = checkPath(other); + UnixPath that = toUnixPath(other); // other path is longer if (that.path.length > path.length) @@ -584,8 +616,9 @@ class UnixPath int thatOffsetCount = that.getNameCount(); // other path has no name elements - if (thatOffsetCount == 0 && this.isAbsolute()) - return true; + if (thatOffsetCount == 0 && this.isAbsolute()) { + return that.isEmpty() ? false : true; + } // given path has more elements that this path if (thatOffsetCount > thisOffsetCount) @@ -622,7 +655,7 @@ class UnixPath @Override public boolean endsWith(Path other) { - UnixPath that = checkPath(other); + UnixPath that = toUnixPath(other); int thisLen = path.length; int thatLen = that.path.length; @@ -631,6 +664,10 @@ class UnixPath if (thatLen > thisLen) return false; + // other path is the empty path + if (thisLen > 0 && thatLen == 0) + return false; + // other path is absolute so this path must be absolute if (that.isAbsolute() && !this.isAbsolute()) return false; @@ -721,32 +758,6 @@ class UnixPath return stringValue; } - @Override - public Iterator iterator() { - initOffsets(); - return new Iterator() { - int i = 0; - @Override - public boolean hasNext() { - return (i < offsets.length); - } - @Override - public Path next() { - if (i < offsets.length) { - Path result = getName(i); - i++; - return result; - } else { - throw new NoSuchElementException(); - } - } - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - // -- file operations -- // package-private @@ -770,7 +781,6 @@ class UnixPath } } - void checkRead() { SecurityManager sm = System.getSecurityManager(); if (sm != null) @@ -789,296 +799,6 @@ class UnixPath sm.checkDelete(getPathForPermissionCheck()); } - @Override - public FileStore getFileStore() - throws IOException - { - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - sm.checkPermission(new RuntimePermission("getFileStoreAttributes")); - checkRead(); - } - return getFileSystem().getFileStore(this); - } - - @Override - public void checkAccess(AccessMode... modes) throws IOException { - boolean e = false; - boolean r = false; - boolean w = false; - boolean x = false; - - if (modes.length == 0) { - e = true; - } else { - for (AccessMode mode: modes) { - switch (mode) { - case READ : r = true; break; - case WRITE : w = true; break; - case EXECUTE : x = true; break; - default: throw new AssertionError("Should not get here"); - } - } - } - - int mode = 0; - if (e || r) { - checkRead(); - mode |= (r) ? R_OK : F_OK; - } - if (w) { - checkWrite(); - mode |= W_OK; - } - if (x) { - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - // not cached - sm.checkExec(getPathForPermissionCheck()); - } - mode |= X_OK; - } - try { - access(this, mode); - } catch (UnixException exc) { - exc.rethrowAsIOException(this); - } - } - - @Override - void implDelete(boolean failIfNotExists) throws IOException { - checkDelete(); - - // need file attributes to know if file is directory - UnixFileAttributes attrs = null; - try { - attrs = UnixFileAttributes.get(this, false); - if (attrs.isDirectory()) { - rmdir(this); - } else { - unlink(this); - } - } catch (UnixException x) { - // no-op if file does not exist - if (!failIfNotExists && x.errno() == ENOENT) - return; - - // DirectoryNotEmptyException if not empty - if (attrs != null && attrs.isDirectory() && - (x.errno() == EEXIST || x.errno() == ENOTEMPTY)) - throw new DirectoryNotEmptyException(getPathForExecptionMessage()); - - x.rethrowAsIOException(this); - } - } - - @Override - public DirectoryStream newDirectoryStream(DirectoryStream.Filter filter) - throws IOException - { - if (filter == null) - throw new NullPointerException(); - checkRead(); - - // can't return SecureDirectoryStream on kernels that don't support - // openat, etc. - if (!supportsAtSysCalls()) { - try { - long ptr = opendir(this); - return new UnixDirectoryStream(this, ptr, filter); - } catch (UnixException x) { - if (x.errno() == ENOTDIR) - throw new NotDirectoryException(getPathForExecptionMessage()); - x.rethrowAsIOException(this); - } - } - - // open directory and dup file descriptor for use by - // opendir/readdir/closedir - int dfd1 = -1; - int dfd2 = -1; - long dp = 0L; - try { - dfd1 = open(this, O_RDONLY, 0); - dfd2 = dup(dfd1); - dp = fdopendir(dfd1); - } catch (UnixException x) { - if (dfd1 != -1) - close(dfd1); - if (dfd2 != -1) - close(dfd2); - if (x.errno() == UnixConstants.ENOTDIR) - throw new NotDirectoryException(getPathForExecptionMessage()); - x.rethrowAsIOException(this); - } - return new UnixSecureDirectoryStream(this, dp, dfd2, filter); - } - - // invoked by AbstractPath#copyTo - @Override - public void implCopyTo(Path obj, CopyOption... options) - throws IOException - { - UnixPath target = (UnixPath)obj; - UnixCopyFile.copy(this, target, options); - } - - @Override - public void implMoveTo(Path obj, CopyOption... options) - throws IOException - { - UnixPath target = (UnixPath)obj; - UnixCopyFile.move(this, target, options); - } - - @Override - @SuppressWarnings("unchecked") - public V - getFileAttributeView(Class type, LinkOption... options) - { - FileAttributeView view = getFileSystem() - .newFileAttributeView(type, this, options); - if (view == null) - return null; - return (V) view; - } - - @Override - public DynamicFileAttributeView getFileAttributeView(String name, - LinkOption... options) - { - return getFileSystem().newFileAttributeView(name, this, options); - } - - @Override - public Path createDirectory(FileAttribute... attrs) - throws IOException - { - checkWrite(); - - int mode = UnixFileModeAttribute - .toUnixMode(UnixFileModeAttribute.ALL_PERMISSIONS, attrs); - try { - mkdir(this, mode); - } catch (UnixException x) { - x.rethrowAsIOException(this); - } - return this; - } - - @Override - public SeekableByteChannel newByteChannel(Set options, - FileAttribute... attrs) - throws IOException - { - int mode = UnixFileModeAttribute - .toUnixMode(UnixFileModeAttribute.ALL_READWRITE, attrs); - try { - return UnixChannelFactory.newFileChannel(this, options, mode); - } catch (UnixException x) { - x.rethrowAsIOException(this); - return null; // keep compiler happy - } - } - - @Override - public boolean isSameFile(Path obj) throws IOException { - if (this.equals(obj)) - return true; - if (!(obj instanceof UnixPath)) // includes null check - return false; - UnixPath other = (UnixPath)obj; - - // check security manager access to both files - this.checkRead(); - other.checkRead(); - - UnixFileAttributes thisAttrs; - UnixFileAttributes otherAttrs; - try { - thisAttrs = UnixFileAttributes.get(this, true); - } catch (UnixException x) { - x.rethrowAsIOException(this); - return false; // keep compiler happy - } - try { - otherAttrs = UnixFileAttributes.get(other, true); - } catch (UnixException x) { - x.rethrowAsIOException(other); - return false; // keep compiler happy - } - return thisAttrs.isSameFile(otherAttrs); - } - - @Override - public Path createSymbolicLink(Path obj, FileAttribute... attrs) - throws IOException - { - UnixPath target = checkPath(obj); - - // no attributes supported when creating links - if (attrs.length > 0) { - UnixFileModeAttribute.toUnixMode(0, attrs); // may throw NPE or UOE - throw new UnsupportedOperationException("Initial file attributes" + - "not supported when creating symbolic link"); - } - - // permission check - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - sm.checkPermission(new LinkPermission("symbolic")); - checkWrite(); - } - - // create link - try { - symlink(target.asByteArray(), this); - } catch (UnixException x) { - x.rethrowAsIOException(this); - } - - return this; - } - - @Override - public Path createLink(Path obj) throws IOException { - UnixPath existing = checkPath(obj); - - // permission check - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - sm.checkPermission(new LinkPermission("hard")); - this.checkWrite(); - existing.checkWrite(); - } - try { - link(existing, this); - } catch (UnixException x) { - x.rethrowAsIOException(this, existing); - } - return this; - } - - @Override - public Path readSymbolicLink() throws IOException { - // permission check - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - FilePermission perm = new FilePermission(getPathForPermissionCheck(), - SecurityConstants.FILE_READLINK_ACTION); - AccessController.checkPermission(perm); - } - try { - byte[] target = readlink(this); - return new UnixPath(getFileSystem(), target); - } catch (UnixException x) { - if (x.errno() == UnixConstants.EINVAL) - throw new NotLinkException(getPathForExecptionMessage()); - x.rethrowAsIOException(this); - return null; // keep compiler happy - } - } - @Override public UnixPath toAbsolutePath() { if (isAbsolute()) { @@ -1095,7 +815,7 @@ class UnixPath } @Override - public UnixPath toRealPath(boolean resolveLinks) throws IOException { + public Path toRealPath(boolean resolveLinks) throws IOException { checkRead(); UnixPath absolute = toAbsolutePath(); @@ -1112,8 +832,7 @@ class UnixPath // if resolveLinks is false then eliminate "." and also ".." // where the previous element is not a link. - UnixPath root = getFileSystem().rootDirectory(); - UnixPath result = root; + UnixPath result = fs.rootDirectory(); for (int i=0; i + implements SecureDirectoryStream { private final UnixDirectoryStream ds; private final int dfd; @@ -81,6 +81,20 @@ class UnixSecureDirectoryStream return (UnixPath)obj; } + private boolean followLinks(LinkOption... options) { + boolean followLinks = true; + for (LinkOption option: options) { + if (option == LinkOption.NOFOLLOW_LINKS) { + followLinks = false; + continue; + } + if (option == null) + throw new NullPointerException(); + throw new AssertionError("Should not get here"); + } + return followLinks; + } + /** * Opens sub-directory in this directory */ @@ -91,7 +105,7 @@ class UnixSecureDirectoryStream { UnixPath file = getName(obj); UnixPath child = ds.directory().resolve(file); - boolean followLinks = file.getFileSystem().followLinks(options); + boolean followLinks = followLinks(options); // permission check using name resolved against original path of directory SecurityManager sm = System.getSecurityManager(); @@ -302,7 +316,7 @@ class UnixSecureDirectoryStream LinkOption... options) { UnixPath file = getName(obj); - boolean followLinks = file.getFileSystem().followLinks(options); + boolean followLinks = followLinks(options); return getFileAttributeViewImpl(file, type, followLinks); } @@ -336,7 +350,11 @@ class UnixSecureDirectoryStream private void checkWriteAccess() { SecurityManager sm = System.getSecurityManager(); if (sm != null) { - ds.directory().resolve(file).checkWrite(); + if (file == null) { + ds.directory().checkWrite(); + } else { + ds.directory().resolve(file).checkWrite(); + } } } diff --git a/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java b/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java index d86431efc08..bd1e36a9025 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java +++ b/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java @@ -25,8 +25,11 @@ package sun.nio.fs; +import java.nio.file.Path; +import java.io.File; import java.net.URI; import java.net.URISyntaxException; +import java.util.Arrays; /** * Unix specific Path <--> URI conversion @@ -38,7 +41,7 @@ class UnixUriUtils { /** * Converts URI to Path */ - static UnixPath fromUri(UnixFileSystem fs, URI uri) { + static Path fromUri(UnixFileSystem fs, URI uri) { if (!uri.isAbsolute()) throw new IllegalArgumentException("URI is not absolute"); if (uri.isOpaque()) @@ -53,22 +56,41 @@ class UnixUriUtils { if (uri.getQuery() != null) throw new IllegalArgumentException("URI has a query component"); - String path = uri.getPath(); - if (path.equals("")) - throw new IllegalArgumentException("URI path component is empty"); - if (path.endsWith("/") && (path.length() > 1)) { - // "/foo/" --> "/foo", but "/" --> "/" - path = path.substring(0, path.length() - 1); - } + // compatability with java.io.File + if (!uri.toString().startsWith("file:///")) + return new File(uri).toPath(); - // preserve bytes - byte[] result = new byte[path.length()]; - for (int i=0; i 1) + len--; + byte[] result = new byte[len]; + int rlen = 0; + int pos = 0; + while (pos < len) { + char c = p.charAt(pos++); + byte b; + if (c == '%') { + assert (pos+2) <= len; + char c1 = p.charAt(pos++); + char c2 = p.charAt(pos++); + b = (byte)((decode(c1) << 4) | decode(c2)); + if (b == 0) + throw new IllegalArgumentException("Nul character not allowed"); + } else { + assert c < 0x80; + b = (byte)c; + } + result[rlen++] = b; } + if (rlen != result.length) + result = Arrays.copyOf(result, rlen); + return new UnixPath(fs, result); } @@ -86,7 +108,7 @@ class UnixUriUtils { } else { sb.append('%'); sb.append(hexDigits[(c >> 4) & 0x0f]); - sb.append(hexDigits[(c >> 0) & 0x0f]); + sb.append(hexDigits[(c) & 0x0f]); } } @@ -164,6 +186,17 @@ class UnixUriUtils { return false; } + // decode + private static int decode(char c) { + if ((c >= '0') && (c <= '9')) + return c - '0'; + if ((c >= 'a') && (c <= 'f')) + return c - 'a' + 10; + if ((c >= 'A') && (c <= 'F')) + return c - 'A' + 10; + throw new AssertionError(); + } + // digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | // "8" | "9" private static final long L_DIGIT = lowMask('0', '9'); diff --git a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c index 5c6a2baee47..d01f09e3c64 100644 --- a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c +++ b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c @@ -55,12 +55,23 @@ #include "sun_nio_fs_UnixNativeDispatcher.h" +/** + * Size of password or group entry when not available via sysconf + */ +#define ENT_BUF_SIZE 1024 + #define RESTARTABLE(_cmd, _result) do { \ do { \ _result = _cmd; \ } while((_result == -1) && (errno == EINTR)); \ } while(0) +#define RESTARTABLE_RETURN_PTR(_cmd, _result) do { \ + do { \ + _result = _cmd; \ + } while((_result == NULL) && (errno == EINTR)); \ +} while(0) + static jfieldID attrs_st_mode; static jfieldID attrs_st_ino; static jfieldID attrs_st_dev; @@ -858,37 +869,41 @@ Java_sun_nio_fs_UnixNativeDispatcher_getpwuid(JNIEnv* env, jclass this, jint uid { jbyteArray result = NULL; int buflen; + char* pwbuf; + /* allocate buffer for password record */ buflen = (int)sysconf(_SC_GETPW_R_SIZE_MAX); - if (buflen == -1) { - throwUnixException(env, errno); + if (buflen == -1) + buflen = ENT_BUF_SIZE; + pwbuf = (char*)malloc(buflen); + if (pwbuf == NULL) { + JNU_ThrowOutOfMemoryError(env, "native heap"); } else { - char* pwbuf = (char*)malloc(buflen); - if (pwbuf == NULL) { - JNU_ThrowOutOfMemoryError(env, "native heap"); - } else { - struct passwd pwent; - struct passwd* p; - int res = 0; + struct passwd pwent; + struct passwd* p = NULL; + int res = 0; -#ifdef __solaris__ - p = getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen); -#else - res = getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen, &p); -#endif + errno = 0; + #ifdef __solaris__ + RESTARTABLE_RETURN_PTR(getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen), p); + #else + RESTARTABLE(getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen, &p), res); + #endif - if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') { + if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') { + /* not found or error */ + if (errno != 0 && errno != ENOENT) throwUnixException(env, errno); - } else { - jsize len = strlen(p->pw_name); - result = (*env)->NewByteArray(env, len); - if (result != NULL) { - (*env)->SetByteArrayRegion(env, result, 0, len, (jbyte*)(p->pw_name)); - } + } else { + jsize len = strlen(p->pw_name); + result = (*env)->NewByteArray(env, len); + if (result != NULL) { + (*env)->SetByteArrayRegion(env, result, 0, len, (jbyte*)(p->pw_name)); } - free(pwbuf); } + free(pwbuf); } + return result; } @@ -898,36 +913,55 @@ Java_sun_nio_fs_UnixNativeDispatcher_getgrgid(JNIEnv* env, jclass this, jint gid { jbyteArray result = NULL; int buflen; + int retry; + /* initial size of buffer for group record */ buflen = (int)sysconf(_SC_GETGR_R_SIZE_MAX); - if (buflen == -1) { - throwUnixException(env, errno); - } else { + if (buflen == -1) + buflen = ENT_BUF_SIZE; + + do { + struct group grent; + struct group* g = NULL; + int res = 0; + char* grbuf = (char*)malloc(buflen); if (grbuf == NULL) { JNU_ThrowOutOfMemoryError(env, "native heap"); - } else { - struct group grent; - struct group* g; - int res = 0; + return NULL; + } -#ifdef __solaris__ - g = getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen); -#else - res = getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen, &g); -#endif - if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') { - throwUnixException(env, errno); - } else { - jsize len = strlen(g->gr_name); - result = (*env)->NewByteArray(env, len); - if (result != NULL) { - (*env)->SetByteArrayRegion(env, result, 0, len, (jbyte*)(g->gr_name)); + errno = 0; + #ifdef __solaris__ + RESTARTABLE_RETURN_PTR(getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen), g); + #else + RESTARTABLE(getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen, &g), res); + #endif + + retry = 0; + if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') { + /* not found or error */ + if (errno != 0 && errno != ENOENT) { + if (errno == ERANGE) { + /* insufficient buffer size so need larger buffer */ + buflen += ENT_BUF_SIZE; + retry = 1; + } else { + throwUnixException(env, errno); } } - free(grbuf); + } else { + jsize len = strlen(g->gr_name); + result = (*env)->NewByteArray(env, len); + if (result != NULL) { + (*env)->SetByteArrayRegion(env, result, 0, len, (jbyte*)(g->gr_name)); + } } - } + + free(grbuf); + + } while (retry); + return result; } @@ -938,35 +972,36 @@ Java_sun_nio_fs_UnixNativeDispatcher_getpwnam0(JNIEnv* env, jclass this, jint uid = -1; int buflen; char* pwbuf; - struct passwd pwent; - struct passwd* p; - int res = 0; - const char* name = (const char*)jlong_to_ptr(nameAddress); + /* allocate buffer for password record */ buflen = (int)sysconf(_SC_GETPW_R_SIZE_MAX); - if (buflen == -1) { - throwUnixException(env, errno); - return -1; - } + if (buflen == -1) + buflen = ENT_BUF_SIZE; pwbuf = (char*)malloc(buflen); if (pwbuf == NULL) { JNU_ThrowOutOfMemoryError(env, "native heap"); - return -1; - } - -#ifdef __solaris__ - p = getpwnam_r(name, &pwent, pwbuf, (size_t)buflen); -#else - res = getpwnam_r(name, &pwent, pwbuf, (size_t)buflen, &p); -#endif - - if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') { - /* not found or error */ } else { - uid = p->pw_uid; - } + struct passwd pwent; + struct passwd* p = NULL; + int res = 0; + const char* name = (const char*)jlong_to_ptr(nameAddress); - free(pwbuf); + errno = 0; + #ifdef __solaris__ + RESTARTABLE_RETURN_PTR(getpwnam_r(name, &pwent, pwbuf, (size_t)buflen), p); + #else + RESTARTABLE(getpwnam_r(name, &pwent, pwbuf, (size_t)buflen, &p), res); + #endif + + if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') { + /* not found or error */ + if (errno != 0 && errno != ENOENT) + throwUnixException(env, errno); + } else { + uid = p->pw_uid; + } + free(pwbuf); + } return uid; } @@ -976,36 +1011,52 @@ Java_sun_nio_fs_UnixNativeDispatcher_getgrnam0(JNIEnv* env, jclass this, jlong nameAddress) { jint gid = -1; - int buflen; - char* grbuf; - struct group grent; - struct group* g; - int res = 0; - const char* name = (const char*)jlong_to_ptr(nameAddress); + int buflen, retry; + /* initial size of buffer for group record */ buflen = (int)sysconf(_SC_GETGR_R_SIZE_MAX); - if (buflen == -1) { - throwUnixException(env, errno); - return -1; - } - grbuf = (char*)malloc(buflen); - if (grbuf == NULL) { - JNU_ThrowOutOfMemoryError(env, "native heap"); - return -1; - } + if (buflen == -1) + buflen = ENT_BUF_SIZE; -#ifdef __solaris__ - g = getgrnam_r(name, &grent, grbuf, (size_t)buflen); -#else - res = getgrnam_r(name, &grent, grbuf, (size_t)buflen, &g); -#endif + do { + struct group grent; + struct group* g = NULL; + int res = 0; + char *grbuf; + const char* name = (const char*)jlong_to_ptr(nameAddress); - if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') { - /* not found or error */ - } else { - gid = g->gr_gid; - } - free(grbuf); + grbuf = (char*)malloc(buflen); + if (grbuf == NULL) { + JNU_ThrowOutOfMemoryError(env, "native heap"); + return -1; + } + + errno = 0; + #ifdef __solaris__ + RESTARTABLE_RETURN_PTR(getgrnam_r(name, &grent, grbuf, (size_t)buflen), g); + #else + RESTARTABLE(getgrnam_r(name, &grent, grbuf, (size_t)buflen, &g), res); + #endif + + retry = 0; + if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') { + /* not found or error */ + if (errno != 0 && errno != ENOENT) { + if (errno == ERANGE) { + /* insufficient buffer size so need larger buffer */ + buflen += ENT_BUF_SIZE; + retry = 1; + } else { + throwUnixException(env, errno); + } + } + } else { + gid = g->gr_gid; + } + + free(grbuf); + + } while (retry); return gid; } diff --git a/jdk/src/windows/bin/java_md.c b/jdk/src/windows/bin/java_md.c index 97e4a803657..dfa50ac8af8 100644 --- a/jdk/src/windows/bin/java_md.c +++ b/jdk/src/windows/bin/java_md.c @@ -49,7 +49,6 @@ static jboolean GetPublicJREHome(char *path, jint pathsize); static jboolean GetJVMPath(const char *jrepath, const char *jvmtype, char *jvmpath, jint jvmpathsize); static jboolean GetJREPath(char *path, jint pathsize); -static void EnsureJreInstallation(const char *jrepath); /* We supports warmup for UI stack that is performed in parallel * to VM initialization. @@ -201,9 +200,6 @@ CreateExecutionEnvironment(int *pargc, char ***pargv, exit(2); } - /* Do this before we read jvm.cfg and after jrepath is initialized */ - EnsureJreInstallation(jrepath); - /* Find the specified JVM type */ if (ReadKnownVMs(jrepath, (char*)GetArch(), JNI_FALSE) < 1) { JLI_ReportErrorMessage(CFG_ERROR7); @@ -296,68 +292,6 @@ LoadMSVCRT() return JNI_TRUE; } -/* - * The preJVMStart is a function in the jkernel.dll, which - * performs the final step of synthesizing back the decomposed - * modules (partial install) to the full JRE. Any tool which - * uses the JRE must peform this step to ensure the complete synthesis. - * The EnsureJreInstallation function calls preJVMStart based on - * the conditions outlined below, noting that the operation - * will fail silently if any of conditions are not met. - * NOTE: this call must be made before jvm.dll is loaded, or jvm.cfg - * is read, since jvm.cfg will be modified by the preJVMStart. - * 1. Are we on a supported platform. - * 2. Find the location of the JRE or the Kernel JRE. - * 3. check existence of JREHOME/lib/bundles - * 4. check jkernel.dll and invoke the entry-point - */ -typedef VOID (WINAPI *PREJVMSTART)(); - -static void -EnsureJreInstallation(const char* jrepath) -{ - HINSTANCE handle; - char tmpbuf[MAXPATHLEN]; - PREJVMSTART PreJVMStart; - struct stat s; - - /* Make sure the jrepath contains something */ - if ((void*)jrepath[0] == NULL) { - return; - } - /* 32 bit windows only please */ - if (JLI_StrCmp(GetArch(), "i386") != 0 ) { - return; - } - /* Does our bundle directory exist ? */ - JLI_Snprintf(tmpbuf, sizeof(tmpbuf), "%s\\lib\\bundles", jrepath); - JLI_TraceLauncher("EnsureJreInstallation: %s\n", tmpbuf); - if (stat(tmpbuf, &s) != 0) { - return; - } - /* Does our jkernel dll exist ? */ - JLI_Snprintf(tmpbuf, sizeof(tmpbuf), "%s\\bin\\jkernel.dll", jrepath); - if (stat(tmpbuf, &s) != 0) { - return; - } - /* The Microsoft C Runtime Library needs to be loaded first. */ - if (!LoadMSVCRT()) { - return; - } - /* Load the jkernel.dll */ - if ((handle = LoadLibrary(tmpbuf)) == 0) { - return; - } - /* Get the function address */ - PreJVMStart = (PREJVMSTART)GetProcAddress(handle, "preJVMStart"); - if (PreJVMStart == NULL) { - FreeLibrary(handle); - return; - } - PreJVMStart(); - FreeLibrary(handle); - return; -} /* * Find path to JRE based on .exe's location or registry settings. diff --git a/jdk/src/windows/classes/java/net/PlainSocketImpl.java b/jdk/src/windows/classes/java/net/PlainSocketImpl.java index 3a963627425..cc25c39dc72 100644 --- a/jdk/src/windows/classes/java/net/PlainSocketImpl.java +++ b/jdk/src/windows/classes/java/net/PlainSocketImpl.java @@ -138,6 +138,9 @@ class PlainSocketImpl extends AbstractPlainSocketImpl protected synchronized void create(boolean stream) throws IOException { impl.create(stream); + + // set fd to delegate's fd to be compatible with older releases + this.fd = impl.fd; } protected void connect(String host, int port) @@ -166,7 +169,7 @@ class PlainSocketImpl extends AbstractPlainSocketImpl impl.doConnect(address, port, timeout); } - protected synchronized void bind(InetAddress address, int lport) + protected synchronized void bind(InetAddress address, int lport) throws IOException { impl.bind(address, lport); @@ -174,9 +177,13 @@ class PlainSocketImpl extends AbstractPlainSocketImpl protected synchronized void accept(SocketImpl s) throws IOException { // pass in the real impl not the wrapper. - ((PlainSocketImpl)s).impl.address = new InetAddress(); - ((PlainSocketImpl)s).impl.fd = new FileDescriptor(); - impl.accept(((PlainSocketImpl)s).impl); + SocketImpl delegate = ((PlainSocketImpl)s).impl; + delegate.address = new InetAddress(); + delegate.fd = new FileDescriptor(); + impl.accept(delegate); + + // set fd to delegate's fd to be compatible with older releases + s.fd = delegate.fd; } void setFileDescriptor(FileDescriptor fd) { @@ -208,11 +215,21 @@ class PlainSocketImpl extends AbstractPlainSocketImpl } protected void close() throws IOException { - impl.close(); + try { + impl.close(); + } finally { + // set fd to delegate's fd to be compatible with older releases + this.fd = null; + } } void reset() throws IOException { - impl.reset(); + try { + impl.reset(); + } finally { + // set fd to delegate's fd to be compatible with older releases + this.fd = null; + } } protected void shutdownInput() throws IOException { diff --git a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_es.properties b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_es.properties index 432aafb9c3f..ad1f6ef4568 100644 --- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_es.properties +++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_es.properties @@ -7,4 +7,4 @@ menuFont=SansSerif-plain-11 # Value for "All files" for FileDialog -allFiles=Todos los archivos +allFiles=Todos los Archivos diff --git a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ja.properties b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ja.properties index 6cedc8a4a02..492975597c9 100644 --- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ja.properties +++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ja.properties @@ -4,7 +4,7 @@ # # Default font size for Menus and MenuItems -menuFont=SansSerif-plain-12 +menuFont=SansSerif-plain-11 # Value for "All files" for FileDialog -allFiles=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb +allFiles=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB diff --git a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ko.properties b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ko.properties index fd32f7c2876..4ccb7b9fe68 100644 --- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ko.properties +++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ko.properties @@ -4,7 +4,7 @@ # # Default font size for Menus and MenuItems -menuFont=SansSerif-plain-12 +menuFont=SansSerif-plain-11 # Value for "All files" for FileDialog -allFiles=\ubaa8\ub4e0 \ud30c\uc77c +allFiles=\uBAA8\uB4E0 \uD30C\uC77C diff --git a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_pt_BR.properties b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_pt_BR.properties index 86e0905dce9..ab3459fc3fc 100644 --- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_pt_BR.properties +++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_pt_BR.properties @@ -7,4 +7,4 @@ menuFont=SansSerif-plain-11 # Value for "All files" for FileDialog -allFiles=Todos os arquivos +allFiles=Todos os Arquivos diff --git a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_CN.properties b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_CN.properties index 57875e0cfaa..ab0d7768345 100644 --- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_CN.properties +++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_CN.properties @@ -4,7 +4,7 @@ # # Default font size for Menus and MenuItems -menuFont=SansSerif-plain-12 +menuFont=SansSerif-plain-11 # Value for "All files" for FileDialog -allFiles=\u6240\u6709\u6587\u4ef6 +allFiles=\u6240\u6709\u6587\u4EF6 diff --git a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_TW.properties b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_TW.properties index 5c7dd9dfe14..17f40734d57 100644 --- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_TW.properties +++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_TW.properties @@ -7,4 +7,4 @@ menuFont=SansSerif-plain-12 # Value for "All files" for FileDialog -allFiles=\u6240\u6709\u6a94\u6848 +allFiles=\u6240\u6709\u6A94\u6848 diff --git a/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java b/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java index 9d0beb50a13..8c846c1c219 100644 --- a/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java +++ b/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java @@ -42,12 +42,12 @@ public class RegistryFileTypeDetector } @Override - public String implProbeContentType(FileRef file) throws IOException { + public String implProbeContentType(Path file) throws IOException { if (!(file instanceof Path)) return null; // get file extension - Path name = ((Path)file).getName(); + Path name = file.getFileName(); if (name == null) return null; String filename = name.toString(); diff --git a/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java b/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java index 20beff15474..8a81b87a0ab 100644 --- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java +++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java @@ -166,22 +166,6 @@ class WindowsFileAttributeViews { return "dos"; } - @Override - public Object getAttribute(String attribute) throws IOException { - if (attribute.equals(READONLY_NAME)) - return readAttributes().isReadOnly(); - if (attribute.equals(ARCHIVE_NAME)) - return readAttributes().isArchive(); - if (attribute.equals(SYSTEM_NAME)) - return readAttributes().isSystem(); - if (attribute.equals(HIDDEN_NAME)) - return readAttributes().isHidden(); - // implementation specific - if (attribute.equals(ATTRIBUTES_NAME)) - return readAttributes().attributes(); - return super.getAttribute(attribute); - } - @Override public void setAttribute(String attribute, Object value) throws IOException @@ -206,7 +190,7 @@ class WindowsFileAttributeViews { } @Override - public Map readAttributes(String[] attributes) + public Map readAttributes(String[] attributes) throws IOException { AttributesBuilder builder = AttributesBuilder.create(attributes); diff --git a/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java b/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java index d35752b8ee1..ed3421fb90e 100644 --- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java +++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java @@ -158,7 +158,7 @@ class WindowsFileCopy { if (x.lastError() == ERROR_DIR_NOT_EMPTY || x.lastError() == ERROR_ALREADY_EXISTS) { - throw new FileAlreadyExistsException( + throw new DirectoryNotEmptyException( target.getPathForExceptionMessage()); } } @@ -369,7 +369,7 @@ class WindowsFileCopy { if (x.lastError() == ERROR_DIR_NOT_EMPTY || x.lastError() == ERROR_ALREADY_EXISTS) { - throw new FileAlreadyExistsException( + throw new DirectoryNotEmptyException( target.getPathForExceptionMessage()); } } diff --git a/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java b/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java index 30446bb4ae9..8b3c2fb4b19 100644 --- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java +++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java @@ -117,28 +117,47 @@ class WindowsFileStore return ((volInfo.flags() & FILE_READ_ONLY_VOLUME) != 0); } + // read the free space info + private DiskFreeSpace readDiskFreeSpace() throws IOException { + try { + return GetDiskFreeSpaceEx(root); + } catch (WindowsException x) { + x.rethrowAsIOException(root); + return null; + } + } + + @Override + public long getTotalSpace() throws IOException { + return readDiskFreeSpace().totalNumberOfBytes(); + } + + @Override + public long getUsableSpace() throws IOException { + return readDiskFreeSpace().freeBytesAvailable(); + } + + @Override + public long getUnallocatedSpace() throws IOException { + return readDiskFreeSpace().freeBytesAvailable(); + } + @Override - @SuppressWarnings("unchecked") public V getFileStoreAttributeView(Class type) { if (type == null) throw new NullPointerException(); - if (type == FileStoreSpaceAttributeView.class) - return (V) new WindowsFileStoreAttributeView(this); return (V) null; } @Override public Object getAttribute(String attribute) throws IOException { // standard - if (attribute.equals("space:totalSpace")) - return new WindowsFileStoreAttributeView(this) - .readAttributes().totalSpace(); - if (attribute.equals("space:usableSpace")) - return new WindowsFileStoreAttributeView(this) - .readAttributes().usableSpace(); - if (attribute.equals("space:unallocatedSpace")) - return new WindowsFileStoreAttributeView(this) - .readAttributes().unallocatedSpace(); + if (attribute.equals("totalSpace")) + return getTotalSpace(); + if (attribute.equals("usableSpace")) + return getUsableSpace(); + if (attribute.equals("unallocatedSpace")) + return getUnallocatedSpace(); // windows specific for testing purposes if (attribute.equals("volume:vsn")) return volInfo.volumeSerialNumber(); @@ -202,48 +221,4 @@ class WindowsFileStore sb.append(")"); return sb.toString(); } - - static class WindowsFileStoreAttributeView - implements FileStoreSpaceAttributeView - { - private final WindowsFileStore fs; - - WindowsFileStoreAttributeView(WindowsFileStore fs) { - this.fs = fs; - } - - @Override - public String name() { - return "space"; - } - - @Override - public FileStoreSpaceAttributes readAttributes() - throws IOException - { - // read the free space info - DiskFreeSpace info = null; - try { - info = GetDiskFreeSpaceEx(fs.root); - } catch (WindowsException x) { - x.rethrowAsIOException(fs.root); - } - - final DiskFreeSpace result = info; - return new FileStoreSpaceAttributes() { - @Override - public long totalSpace() { - return result.totalNumberOfBytes(); - } - @Override - public long usableSpace() { - return result.freeBytesAvailable(); - } - @Override - public long unallocatedSpace() { - return result.totalNumberOfFreeBytes(); - } - }; - } - } } diff --git a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java index a543623ee4a..59891ec51d5 100644 --- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java +++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java @@ -127,7 +127,7 @@ class WindowsFileSystem } // iterate over roots, ignoring those that the security manager denies - ArrayList result = new ArrayList(); + ArrayList result = new ArrayList<>(); SecurityManager sm = System.getSecurityManager(); for (int i = 0; i <= 25; i++) { // 0->A, 1->B, 2->C... if ((drives & (1 << i)) != 0) { @@ -235,33 +235,50 @@ class WindowsFileSystem } @Override - public Path getPath(String path) { + public final Path getPath(String first, String... more) { + String path; + if (more.length == 0) { + path = first; + } else { + StringBuilder sb = new StringBuilder(); + sb.append(first); + for (String segment: more) { + if (segment.length() > 0) { + if (sb.length() > 0) + sb.append('\\'); + sb.append(segment); + } + } + path = sb.toString(); + } return WindowsPath.parse(this, path); } @Override public UserPrincipalLookupService getUserPrincipalLookupService() { - return theLookupService; + return LookupService.instance; } - private static final UserPrincipalLookupService theLookupService = - new UserPrincipalLookupService() { - @Override - public UserPrincipal lookupPrincipalByName(String name) - throws IOException - { - return WindowsUserPrincipals.lookup(name); - } - @Override - public GroupPrincipal lookupPrincipalByGroupName(String group) - throws IOException - { - UserPrincipal user = WindowsUserPrincipals.lookup(group); - if (!(user instanceof GroupPrincipal)) - throw new UserPrincipalNotFoundException(group); - return (GroupPrincipal)user; - } - }; + private static class LookupService { + static final UserPrincipalLookupService instance = + new UserPrincipalLookupService() { + @Override + public UserPrincipal lookupPrincipalByName(String name) + throws IOException + { + return WindowsUserPrincipals.lookup(name); + } + @Override + public GroupPrincipal lookupPrincipalByGroupName(String group) + throws IOException + { + UserPrincipal user = WindowsUserPrincipals.lookup(group); + if (!(user instanceof GroupPrincipal)) + throw new UserPrincipalNotFoundException(group); + return (GroupPrincipal)user; + } + }; + } @Override public PathMatcher getPathMatcher(String syntaxAndInput) { diff --git a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java index 81193d25b9a..6d6a4db89b2 100644 --- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java +++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java @@ -26,19 +26,25 @@ package sun.nio.fs; import java.nio.file.*; -import java.nio.file.spi.*; import java.nio.file.attribute.*; import java.nio.channels.*; import java.net.URI; import java.util.concurrent.ExecutorService; -import java.io.IOException; +import java.io.*; import java.util.*; - +import java.security.AccessController; +import sun.misc.Unsafe; import sun.nio.ch.ThreadPool; +import sun.security.util.SecurityConstants; + +import static sun.nio.fs.WindowsNativeDispatcher.*; +import static sun.nio.fs.WindowsConstants.*; public class WindowsFileSystemProvider - extends FileSystemProvider + extends AbstractFileSystemProvider { + private static final Unsafe unsafe = Unsafe.getUnsafe(); + private static final String USER_DIR = "user.dir"; private final WindowsFileSystem theFileSystem; @@ -143,4 +149,505 @@ public class WindowsFileSystemProvider sd.release(); } } + + private boolean followLinks(LinkOption... options) { + boolean followLinks = true; + for (LinkOption option: options) { + if (option == LinkOption.NOFOLLOW_LINKS) { + followLinks = false; + continue; + } + if (option == null) + throw new NullPointerException(); + throw new AssertionError("Should not get here"); + } + return followLinks; + } + + @Override + @SuppressWarnings("unchecked") + public V + getFileAttributeView(Path obj, Class view, LinkOption... options) + { + WindowsPath file = WindowsPath.toWindowsPath(obj); + if (view == null) + throw new NullPointerException(); + boolean followLinks = followLinks(options); + if (view == BasicFileAttributeView.class) + return (V) WindowsFileAttributeViews.createBasicView(file, followLinks); + if (view == DosFileAttributeView.class) + return (V) WindowsFileAttributeViews.createDosView(file, followLinks); + if (view == AclFileAttributeView.class) + return (V) new WindowsAclFileAttributeView(file, followLinks); + if (view == FileOwnerAttributeView.class) + return (V) new FileOwnerAttributeViewImpl( + new WindowsAclFileAttributeView(file, followLinks)); + if (view == UserDefinedFileAttributeView.class) + return (V) new WindowsUserDefinedFileAttributeView(file, followLinks); + return (V) null; + } + + @Override + @SuppressWarnings("unchecked") + public A readAttributes(Path file, + Class type, + LinkOption... options) + throws IOException + { + Class view; + if (type == BasicFileAttributes.class) + view = BasicFileAttributeView.class; + else if (type == DosFileAttributes.class) + view = DosFileAttributeView.class; + else if (type == null) + throw new NullPointerException(); + else + throw new UnsupportedOperationException(); + return (A) getFileAttributeView(file, view, options).readAttributes(); + } + + @Override + public DynamicFileAttributeView getFileAttributeView(Path obj, String name, LinkOption... options) { + WindowsPath file = WindowsPath.toWindowsPath(obj); + boolean followLinks = followLinks(options); + if (name.equals("basic")) + return WindowsFileAttributeViews.createBasicView(file, followLinks); + if (name.equals("dos")) + return WindowsFileAttributeViews.createDosView(file, followLinks); + if (name.equals("acl")) + return new WindowsAclFileAttributeView(file, followLinks); + if (name.equals("owner")) + return new FileOwnerAttributeViewImpl( + new WindowsAclFileAttributeView(file, followLinks)); + if (name.equals("user")) + return new WindowsUserDefinedFileAttributeView(file, followLinks); + return null; + } + + @Override + public SeekableByteChannel newByteChannel(Path obj, + Set options, + FileAttribute... attrs) + throws IOException + { + WindowsPath file = WindowsPath.toWindowsPath(obj); + WindowsSecurityDescriptor sd = + WindowsSecurityDescriptor.fromAttribute(attrs); + try { + return WindowsChannelFactory + .newFileChannel(file.getPathForWin32Calls(), + file.getPathForPermissionCheck(), + options, + sd.address()); + } catch (WindowsException x) { + x.rethrowAsIOException(file); + return null; // keep compiler happy + } finally { + sd.release(); + } + } + + @Override + boolean implDelete(Path obj, boolean failIfNotExists) throws IOException { + WindowsPath file = WindowsPath.toWindowsPath(obj); + file.checkDelete(); + + WindowsFileAttributes attrs = null; + try { + // need to know if file is a directory or junction + attrs = WindowsFileAttributes.get(file, false); + if (attrs.isDirectory() || attrs.isDirectoryLink()) { + RemoveDirectory(file.getPathForWin32Calls()); + } else { + DeleteFile(file.getPathForWin32Calls()); + } + return true; + } catch (WindowsException x) { + + // no-op if file does not exist + if (!failIfNotExists && + (x.lastError() == ERROR_FILE_NOT_FOUND || + x.lastError() == ERROR_PATH_NOT_FOUND)) return false; + + if (attrs != null && attrs.isDirectory()) { + // ERROR_ALREADY_EXISTS is returned when attempting to delete + // non-empty directory on SAMBA servers. + if (x.lastError() == ERROR_DIR_NOT_EMPTY || + x.lastError() == ERROR_ALREADY_EXISTS) + { + throw new DirectoryNotEmptyException( + file.getPathForExceptionMessage()); + } + } + x.rethrowAsIOException(file); + return false; + } + } + + @Override + public void copy(Path source, Path target, CopyOption... options) + throws IOException + { + WindowsFileCopy.copy(WindowsPath.toWindowsPath(source), + WindowsPath.toWindowsPath(target), + options); + } + + @Override + public void move(Path source, Path target, CopyOption... options) + throws IOException + { + WindowsFileCopy.move(WindowsPath.toWindowsPath(source), + WindowsPath.toWindowsPath(target), + options); + } + + /** + * Returns buffer with SID_AND_ATTRIBUTES structure representing the user + * associated with the current thread access token. + * FIXME - this should be cached. + */ + private static NativeBuffer getUserInfo(WindowsPath file) throws IOException { + try { + long hToken = WindowsSecurity.processTokenWithQueryAccess; + int size = GetTokenInformation(hToken, TokenUser, 0L, 0); + assert size > 0; + + NativeBuffer buffer = NativeBuffers.getNativeBuffer(size); + try { + int newsize = GetTokenInformation(hToken, TokenUser, + buffer.address(), size); + if (newsize != size) + throw new AssertionError(); + return buffer; + } catch (WindowsException x) { + buffer.release(); + throw x; + } + } catch (WindowsException x) { + throw new IOException(x.getMessage()); + } + } + + /** + * Reads the file ACL and return the effective access as ACCESS_MASK + */ + private static int getEffectiveAccess(WindowsPath file) throws IOException { + // read security descriptor continaing ACL (symlinks are followed) + String target = WindowsLinkSupport.getFinalPath(file, true); + NativeBuffer aclBuffer = WindowsAclFileAttributeView + .getFileSecurity(target, DACL_SECURITY_INFORMATION); + + // retrieves DACL from security descriptor + long pAcl = GetSecurityDescriptorDacl(aclBuffer.address()); + + // Use GetEffectiveRightsFromAcl to get effective access to file + try { + NativeBuffer userBuffer = getUserInfo(file); + try { + try { + // SID_AND_ATTRIBUTES->pSid + long pSid = unsafe.getAddress(userBuffer.address()); + long pTrustee = BuildTrusteeWithSid(pSid); + try { + return GetEffectiveRightsFromAcl(pAcl, pTrustee); + } finally { + LocalFree(pTrustee); + } + } catch (WindowsException x) { + throw new IOException("Unable to get effective rights from ACL: " + + x.getMessage()); + } + } finally { + userBuffer.release(); + } + } finally { + aclBuffer.release(); + } + } + + @Override + public void checkAccess(Path obj, AccessMode... modes) throws IOException { + WindowsPath file = WindowsPath.toWindowsPath(obj); + // if no access modes then simply file attributes + if (modes.length == 0) { + file.checkRead(); + try { + WindowsFileAttributes.get(file, true); + } catch (WindowsException exc) { + exc.rethrowAsIOException(file); + } + return; + } + + boolean r = false; + boolean w = false; + boolean x = false; + for (AccessMode mode: modes) { + switch (mode) { + case READ : r = true; break; + case WRITE : w = true; break; + case EXECUTE : x = true; break; + default: throw new AssertionError("Should not get here"); + } + } + + int mask = 0; + if (r) { + file.checkRead(); + mask |= FILE_READ_DATA; + } + if (w) { + file.checkWrite(); + mask |= FILE_WRITE_DATA; + } + if (x) { + SecurityManager sm = System.getSecurityManager(); + if (sm != null) + sm.checkExec(file.getPathForPermissionCheck()); + mask |= FILE_EXECUTE; + } + + if ((getEffectiveAccess(file) & mask) == 0) + throw new AccessDeniedException( + file.getPathForExceptionMessage(), null, + "Effective permissions does not allow requested access"); + + // for write access we neeed to check if the DOS readonly attribute + // and if the volume is read-only + if (w) { + try { + WindowsFileAttributes attrs = WindowsFileAttributes.get(file, true); + if (!attrs.isDirectory() && attrs.isReadOnly()) + throw new AccessDeniedException( + file.getPathForExceptionMessage(), null, + "DOS readonly attribute is set"); + } catch (WindowsException exc) { + exc.rethrowAsIOException(file); + } + + if (WindowsFileStore.create(file).isReadOnly()) { + throw new AccessDeniedException( + file.getPathForExceptionMessage(), null, "Read-only file system"); + } + return; + } + } + + @Override + public boolean isSameFile(Path obj1, Path obj2) throws IOException { + WindowsPath file1 = WindowsPath.toWindowsPath(obj1); + if (file1.equals(obj2)) + return true; + if (obj2 == null) + throw new NullPointerException(); + if (!(obj2 instanceof WindowsPath)) + return false; + WindowsPath file2 = (WindowsPath)obj2; + + // check security manager access to both files + file1.checkRead(); + file2.checkRead(); + + // open both files and see if they are the same + long h1 = 0L; + try { + h1 = file1.openForReadAttributeAccess(true); + } catch (WindowsException x) { + x.rethrowAsIOException(file1); + } + try { + WindowsFileAttributes attrs1 = null; + try { + attrs1 = WindowsFileAttributes.readAttributes(h1); + } catch (WindowsException x) { + x.rethrowAsIOException(file1); + } + long h2 = 0L; + try { + h2 = file2.openForReadAttributeAccess(true); + } catch (WindowsException x) { + x.rethrowAsIOException(file2); + } + try { + WindowsFileAttributes attrs2 = null; + try { + attrs2 = WindowsFileAttributes.readAttributes(h2); + } catch (WindowsException x) { + x.rethrowAsIOException(file2); + } + return WindowsFileAttributes.isSameFile(attrs1, attrs2); + } finally { + CloseHandle(h2); + } + } finally { + CloseHandle(h1); + } + } + + @Override + public boolean isHidden(Path obj) throws IOException { + WindowsPath file = WindowsPath.toWindowsPath(obj); + file.checkRead(); + WindowsFileAttributes attrs = null; + try { + attrs = WindowsFileAttributes.get(file, true); + } catch (WindowsException x) { + x.rethrowAsIOException(file); + } + // DOS hidden attribute not meaningful when set on directories + if (attrs.isDirectory()) + return false; + return attrs.isHidden(); + } + + @Override + public FileStore getFileStore(Path obj) throws IOException { + WindowsPath file = WindowsPath.toWindowsPath(obj); + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + sm.checkPermission(new RuntimePermission("getFileStoreAttributes")); + file.checkRead(); + } + return WindowsFileStore.create(file); + } + + + @Override + public void createDirectory(Path obj, FileAttribute... attrs) + throws IOException + { + WindowsPath dir = WindowsPath.toWindowsPath(obj); + dir.checkWrite(); + WindowsSecurityDescriptor sd = WindowsSecurityDescriptor.fromAttribute(attrs); + try { + CreateDirectory(dir.getPathForWin32Calls(), sd.address()); + } catch (WindowsException x) { + x.rethrowAsIOException(dir); + } finally { + sd.release(); + } + } + + @Override + public DirectoryStream newDirectoryStream(Path obj, DirectoryStream.Filter filter) + throws IOException + { + WindowsPath dir = WindowsPath.toWindowsPath(obj); + dir.checkRead(); + if (filter == null) + throw new NullPointerException(); + return new WindowsDirectoryStream(dir, filter); + } + + @Override + public void createSymbolicLink(Path obj1, Path obj2, FileAttribute... attrs) + throws IOException + { + WindowsPath link = WindowsPath.toWindowsPath(obj1); + WindowsPath target = WindowsPath.toWindowsPath(obj2); + + if (!link.getFileSystem().supportsLinks()) { + throw new UnsupportedOperationException("Symbolic links not supported " + + "on this operating system"); + } + + // no attributes allowed + if (attrs.length > 0) { + WindowsSecurityDescriptor.fromAttribute(attrs); // may throw NPE or UOE + throw new UnsupportedOperationException("Initial file attributes" + + "not supported when creating symbolic link"); + } + + // permission check + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + sm.checkPermission(new LinkPermission("symbolic")); + link.checkWrite(); + } + + /** + * Throw I/O exception for the drive-relative case because Windows + * creates a link with the resolved target for this case. + */ + if (target.type() == WindowsPathType.DRIVE_RELATIVE) { + throw new IOException("Cannot create symbolic link to working directory relative target"); + } + + /* + * Windows treates symbolic links to directories differently than it + * does to other file types. For that reason we need to check if the + * target is a directory (or a directory junction). + */ + WindowsPath resolvedTarget; + if (target.type() == WindowsPathType.RELATIVE) { + WindowsPath parent = link.getParent(); + resolvedTarget = (parent == null) ? target : parent.resolve(target); + } else { + resolvedTarget = link.resolve(target); + } + int flags = 0; + try { + WindowsFileAttributes wattrs = WindowsFileAttributes.get(resolvedTarget, false); + if (wattrs.isDirectory() || wattrs.isDirectoryLink()) + flags |= SYMBOLIC_LINK_FLAG_DIRECTORY; + } catch (WindowsException x) { + // unable to access target so assume target is not a directory + } + + // create the link + try { + CreateSymbolicLink(link.getPathForWin32Calls(), + WindowsPath.addPrefixIfNeeded(target.toString()), + flags); + } catch (WindowsException x) { + if (x.lastError() == ERROR_INVALID_REPARSE_DATA) { + x.rethrowAsIOException(link, target); + } else { + x.rethrowAsIOException(link); + } + } + } + + @Override + public void createLink(Path obj1, Path obj2) throws IOException { + WindowsPath link = WindowsPath.toWindowsPath(obj1); + WindowsPath existing = WindowsPath.toWindowsPath(obj2); + + // permission check + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + sm.checkPermission(new LinkPermission("hard")); + link.checkWrite(); + existing.checkWrite(); + } + + // create hard link + try { + CreateHardLink(link.getPathForWin32Calls(), + existing.getPathForWin32Calls()); + } catch (WindowsException x) { + x.rethrowAsIOException(link, existing); + } + } + + @Override + public Path readSymbolicLink(Path obj1) throws IOException { + WindowsPath link = WindowsPath.toWindowsPath(obj1); + WindowsFileSystem fs = link.getFileSystem(); + if (!fs.supportsLinks()) { + throw new UnsupportedOperationException("symbolic links not supported"); + } + + // permission check + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + FilePermission perm = new FilePermission(link.getPathForPermissionCheck(), + SecurityConstants.FILE_READLINK_ACTION); + AccessController.checkPermission(perm); + } + + String target = WindowsLinkSupport.readLink(link); + return WindowsPath.createFromNormalizedPath(fs, target); + } } diff --git a/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java b/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java index 3e79ab43ab6..26c2b26ce8e 100644 --- a/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java +++ b/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java @@ -27,18 +27,13 @@ package sun.nio.fs; import java.nio.file.*; import java.nio.file.attribute.*; -import java.nio.channels.*; import java.io.*; import java.net.URI; -import java.security.AccessController; import java.util.*; import java.lang.ref.WeakReference; import com.sun.nio.file.ExtendedWatchEventModifier; -import sun.security.util.SecurityConstants; -import sun.misc.Unsafe; - import static sun.nio.fs.WindowsNativeDispatcher.*; import static sun.nio.fs.WindowsConstants.*; @@ -47,7 +42,6 @@ import static sun.nio.fs.WindowsConstants.*; */ class WindowsPath extends AbstractPath { - private static final Unsafe unsafe = Unsafe.getUnsafe(); // The maximum path that does not require long path prefix. On Windows // the maximum path is 260 minus 1 (NUL) but for directories it is 260 @@ -229,6 +223,8 @@ class WindowsPath extends AbstractPath { // Relative path ("foo" for example) if (type == WindowsPathType.RELATIVE) { String defaultDirectory = getFileSystem().defaultDirectory(); + if (isEmpty()) + return defaultDirectory; if (defaultDirectory.endsWith("\\")) { return defaultDirectory + path; } else { @@ -286,7 +282,7 @@ class WindowsPath extends AbstractPath { } // Add long path prefix to path if required - private static String addPrefixIfNeeded(String path) { + static String addPrefixIfNeeded(String path) { if (path.length() > 248) { if (path.startsWith("\\\\")) { path = "\\\\?\\UNC" + path.substring(1, path.length()); @@ -304,10 +300,22 @@ class WindowsPath extends AbstractPath { // -- Path operations -- + private boolean isEmpty() { + return path.length() == 0; + } + + private WindowsPath emptyPath() { + return new WindowsPath(getFileSystem(), WindowsPathType.RELATIVE, "", ""); + } + @Override - public Path getName() { + public Path getFileName() { + int len = path.length(); + // represents empty path + if (len == 0) + return this; // represents root component only - if (root.length() == path.length()) + if (root.length() == len) return null; int off = path.lastIndexOf('\\'); if (off < root.length()) @@ -339,6 +347,11 @@ class WindowsPath extends AbstractPath { return new WindowsPath(getFileSystem(), type, root, root); } + // package-private + WindowsPathType type() { + return type; + } + // package-private boolean isUnc() { return type == WindowsPathType.UNC; @@ -355,7 +368,7 @@ class WindowsPath extends AbstractPath { return type == WindowsPathType.ABSOLUTE || type == WindowsPathType.UNC; } - private WindowsPath checkPath(FileRef path) { + static WindowsPath toWindowsPath(Path path) { if (path == null) throw new NullPointerException(); if (!(path instanceof WindowsPath)) { @@ -366,9 +379,9 @@ class WindowsPath extends AbstractPath { @Override public WindowsPath relativize(Path obj) { - WindowsPath other = checkPath(obj); + WindowsPath other = toWindowsPath(obj); if (this.equals(other)) - return null; + return emptyPath(); // can only relativize paths of the same type if (this.type != other.type) @@ -410,7 +423,7 @@ class WindowsPath extends AbstractPath { @Override public Path normalize() { final int count = getNameCount(); - if (count == 0) + if (count == 0 || isEmpty()) return this; boolean[] ignore = new boolean[count]; // true => ignore name @@ -488,7 +501,7 @@ class WindowsPath extends AbstractPath { // corner case - all names removed if (remaining == 0) { - return getRoot(); + return (root.length() == 0) ? emptyPath() : getRoot(); } // re-constitute the path from the remaining names. @@ -497,7 +510,7 @@ class WindowsPath extends AbstractPath { result.append(root); for (int i=0; i list = new ArrayList(); - int start = root.length(); - int off = root.length(); - while (off < path.length()) { - if (path.charAt(off) != '\\') { - off++; - } else { - list.add(start); - start = ++off; + ArrayList list = new ArrayList<>(); + if (isEmpty()) { + // empty path considered to have one name element + list.add(0); + } else { + int start = root.length(); + int off = root.length(); + while (off < path.length()) { + if (path.charAt(off) != '\\') { + off++; + } else { + list.add(start); + start = ++off; + } } + if (start != off) + list.add(start); } - if (start != off) - list.add(start); synchronized (this) { if (offsets == null) offsets = list.toArray(new Integer[list.size()]); @@ -633,11 +646,16 @@ class WindowsPath extends AbstractPath { @Override public boolean startsWith(Path obj) { - WindowsPath other = checkPath(obj); + WindowsPath other = toWindowsPath(obj); // if this path has a root component the given path's root must match - if (!this.root.equalsIgnoreCase(other.root)) + if (!this.root.equalsIgnoreCase(other.root)) { return false; + } + + // empty path starts with itself + if (other.isEmpty()) + return this.isEmpty(); // roots match so compare elements int thisCount = getNameCount(); @@ -657,13 +675,18 @@ class WindowsPath extends AbstractPath { @Override public boolean endsWith(Path obj) { - WindowsPath other = checkPath(obj); + WindowsPath other = toWindowsPath(obj); // other path is longer - if (other.path.length() > path.length()) { + if (other.path.length() > this.path.length()) { return false; } + // empty path ends in itself + if (other.isEmpty()) { + return this.isEmpty(); + } + int thisCount = this.getNameCount(); int otherCount = other.getNameCount(); @@ -742,31 +765,6 @@ class WindowsPath extends AbstractPath { return path; } - @Override - public Iterator iterator() { - return new Iterator() { - private int i = 0; - @Override - public boolean hasNext() { - return (i < getNameCount()); - } - @Override - public Path next() { - if (i < getNameCount()) { - Path result = getName(i); - i++; - return result; - } else { - throw new NoSuchElementException(); - } - } - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - // -- file operations -- // package-private @@ -805,453 +803,6 @@ class WindowsPath extends AbstractPath { } } - @Override - public FileStore getFileStore() - throws IOException - { - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - sm.checkPermission(new RuntimePermission("getFileStoreAttributes")); - checkRead(); - } - return WindowsFileStore.create(this); - } - - /** - * Returns buffer with SID_AND_ATTRIBUTES structure representing the user - * associated with the current thread access token. - * FIXME - this should be cached. - */ - private NativeBuffer getUserInfo() throws IOException { - try { - long hToken = WindowsSecurity.processTokenWithQueryAccess; - int size = GetTokenInformation(hToken, TokenUser, 0L, 0); - assert size > 0; - - NativeBuffer buffer = NativeBuffers.getNativeBuffer(size); - try { - int newsize = GetTokenInformation(hToken, TokenUser, - buffer.address(), size); - if (newsize != size) - throw new AssertionError(); - return buffer; - } catch (WindowsException x) { - buffer.release(); - throw x; - } - } catch (WindowsException x) { - throw new IOException(x.getMessage()); - } - } - - /** - * Reads the file ACL and return the effective access as ACCESS_MASK - */ - private int getEffectiveAccess() throws IOException { - // read security descriptor continaing ACL (symlinks are followed) - String target = WindowsLinkSupport.getFinalPath(this, true); - NativeBuffer aclBuffer = WindowsAclFileAttributeView - .getFileSecurity(target, DACL_SECURITY_INFORMATION); - - // retrieves DACL from security descriptor - long pAcl = GetSecurityDescriptorDacl(aclBuffer.address()); - - // Use GetEffectiveRightsFromAcl to get effective access to file - try { - NativeBuffer userBuffer = getUserInfo(); - try { - try { - // SID_AND_ATTRIBUTES->pSid - long pSid = unsafe.getAddress(userBuffer.address()); - long pTrustee = BuildTrusteeWithSid(pSid); - try { - return GetEffectiveRightsFromAcl(pAcl, pTrustee); - } finally { - LocalFree(pTrustee); - } - } catch (WindowsException x) { - throw new IOException("Unable to get effective rights from ACL: " + - x.getMessage()); - } - } finally { - userBuffer.release(); - } - } finally { - aclBuffer.release(); - } - } - - @Override - public void checkAccess(AccessMode... modes) throws IOException { - // if no access modes then simply file attributes - if (modes.length == 0) { - checkRead(); - try { - WindowsFileAttributes.get(this, true); - } catch (WindowsException exc) { - exc.rethrowAsIOException(this); - } - return; - } - - boolean r = false; - boolean w = false; - boolean x = false; - for (AccessMode mode: modes) { - switch (mode) { - case READ : r = true; break; - case WRITE : w = true; break; - case EXECUTE : x = true; break; - default: throw new AssertionError("Should not get here"); - } - } - - int mask = 0; - if (r) { - checkRead(); - mask |= FILE_READ_DATA; - } - if (w) { - checkWrite(); - mask |= FILE_WRITE_DATA; - } - if (x) { - SecurityManager sm = System.getSecurityManager(); - if (sm != null) - sm.checkExec(getPathForPermissionCheck()); - mask |= FILE_EXECUTE; - } - - if ((getEffectiveAccess() & mask) == 0) - throw new AccessDeniedException( - this.getPathForExceptionMessage(), null, - "Effective permissions does not allow requested access"); - - // for write access we neeed to check if the DOS readonly attribute - // and if the volume is read-only - if (w) { - try { - WindowsFileAttributes attrs = WindowsFileAttributes.get(this, true); - if (!attrs.isDirectory() && attrs.isReadOnly()) - throw new AccessDeniedException( - this.getPathForExceptionMessage(), null, - "DOS readonly attribute is set"); - } catch (WindowsException exc) { - exc.rethrowAsIOException(this); - } - - if (WindowsFileStore.create(this).isReadOnly()) { - throw new AccessDeniedException( - this.getPathForExceptionMessage(), null, "Read-only file system"); - } - return; - } - } - - @Override - void implDelete(boolean failIfNotExists) throws IOException { - checkDelete(); - - WindowsFileAttributes attrs = null; - try { - // need to know if file is a directory or junction - attrs = WindowsFileAttributes.get(this, false); - if (attrs.isDirectory() || attrs.isDirectoryLink()) { - RemoveDirectory(getPathForWin32Calls()); - } else { - DeleteFile(getPathForWin32Calls()); - } - } catch (WindowsException x) { - - // no-op if file does not exist - if (!failIfNotExists && - (x.lastError() == ERROR_FILE_NOT_FOUND || - x.lastError() == ERROR_PATH_NOT_FOUND)) return; - - if (attrs != null && attrs.isDirectory()) { - // ERROR_ALREADY_EXISTS is returned when attempting to delete - // non-empty directory on SAMBA servers. - if (x.lastError() == ERROR_DIR_NOT_EMPTY || - x.lastError() == ERROR_ALREADY_EXISTS) - { - throw new DirectoryNotEmptyException( - getPathForExceptionMessage()); - } - } - x.rethrowAsIOException(this); - } - } - - @Override - public DirectoryStream newDirectoryStream(DirectoryStream.Filter filter) - throws IOException - { - checkRead(); - if (filter == null) - throw new NullPointerException(); - return new WindowsDirectoryStream(this, filter); - } - - @Override - public void implCopyTo(Path obj, CopyOption... options) throws IOException { - WindowsPath target = (WindowsPath)obj; - WindowsFileCopy.copy(this, target, options); - } - - @Override - public void implMoveTo(Path obj, CopyOption... options) throws IOException { - WindowsPath target = (WindowsPath)obj; - WindowsFileCopy.move(this, target, options); - } - - private boolean followLinks(LinkOption... options) { - boolean followLinks = true; - for (LinkOption option: options) { - if (option == LinkOption.NOFOLLOW_LINKS) { - followLinks = false; - continue; - } - if (option == null) - throw new NullPointerException(); - throw new AssertionError("Should not get here"); - } - return followLinks; - } - - @Override - @SuppressWarnings("unchecked") - public V - getFileAttributeView(Class view, LinkOption... options) - { - if (view == null) - throw new NullPointerException(); - boolean followLinks = followLinks(options); - if (view == BasicFileAttributeView.class) - return (V) WindowsFileAttributeViews.createBasicView(this, followLinks); - if (view == DosFileAttributeView.class) - return (V) WindowsFileAttributeViews.createDosView(this, followLinks); - if (view == AclFileAttributeView.class) - return (V) new WindowsAclFileAttributeView(this, followLinks); - if (view == FileOwnerAttributeView.class) - return (V) new FileOwnerAttributeViewImpl( - new WindowsAclFileAttributeView(this, followLinks)); - if (view == UserDefinedFileAttributeView.class) - return (V) new WindowsUserDefinedFileAttributeView(this, followLinks); - return (V) null; - } - - @Override - public DynamicFileAttributeView getFileAttributeView(String name, LinkOption... options) { - boolean followLinks = followLinks(options); - if (name.equals("basic")) - return WindowsFileAttributeViews.createBasicView(this, followLinks); - if (name.equals("dos")) - return WindowsFileAttributeViews.createDosView(this, followLinks); - if (name.equals("acl")) - return new WindowsAclFileAttributeView(this, followLinks); - if (name.equals("owner")) - return new FileOwnerAttributeViewImpl( - new WindowsAclFileAttributeView(this, followLinks)); - if (name.equals("user")) - return new WindowsUserDefinedFileAttributeView(this, followLinks); - return null; - } - - @Override - public WindowsPath createDirectory(FileAttribute... attrs) - throws IOException - { - checkWrite(); - WindowsSecurityDescriptor sd = WindowsSecurityDescriptor.fromAttribute(attrs); - try { - CreateDirectory(getPathForWin32Calls(), sd.address()); - } catch (WindowsException x) { - x.rethrowAsIOException(this); - } finally { - sd.release(); - } - return this; - } - - @Override - public SeekableByteChannel newByteChannel(Set options, - FileAttribute... attrs) - throws IOException - { - WindowsSecurityDescriptor sd = - WindowsSecurityDescriptor.fromAttribute(attrs); - try { - return WindowsChannelFactory - .newFileChannel(getPathForWin32Calls(), - getPathForPermissionCheck(), - options, - sd.address()); - } catch (WindowsException x) { - x.rethrowAsIOException(this); - return null; // keep compiler happy - } finally { - sd.release(); - } - } - - @Override - public boolean isSameFile(Path obj) throws IOException { - if (this.equals(obj)) - return true; - if (!(obj instanceof WindowsPath)) // includes null check - return false; - WindowsPath other = (WindowsPath)obj; - - // check security manager access to both files - this.checkRead(); - other.checkRead(); - - // open both files and see if they are the same - long h1 = 0L; - try { - h1 = this.openForReadAttributeAccess(true); - } catch (WindowsException x) { - x.rethrowAsIOException(this); - } - try { - WindowsFileAttributes attrs1 = null; - try { - attrs1 = WindowsFileAttributes.readAttributes(h1); - } catch (WindowsException x) { - x.rethrowAsIOException(this); - } - long h2 = 0L; - try { - h2 = other.openForReadAttributeAccess(true); - } catch (WindowsException x) { - x.rethrowAsIOException(other); - } - try { - WindowsFileAttributes attrs2 = null; - try { - attrs2 = WindowsFileAttributes.readAttributes(h2); - } catch (WindowsException x) { - x.rethrowAsIOException(other); - } - return WindowsFileAttributes.isSameFile(attrs1, attrs2); - } finally { - CloseHandle(h2); - } - } finally { - CloseHandle(h1); - } - } - - @Override - public WindowsPath createSymbolicLink(Path obj, FileAttribute... attrs) - throws IOException - { - if (!getFileSystem().supportsLinks()) { - throw new UnsupportedOperationException("Symbolic links not supported " - + "on this operating system"); - } - - WindowsPath target = checkPath(obj); - - // no attributes allowed - if (attrs.length > 0) { - WindowsSecurityDescriptor.fromAttribute(attrs); // may throw NPE or UOE - throw new UnsupportedOperationException("Initial file attributes" + - "not supported when creating symbolic link"); - } - - // permission check - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - sm.checkPermission(new LinkPermission("symbolic")); - this.checkWrite(); - } - - /** - * Throw I/O exception for the drive-relative case because Windows - * creates a link with the resolved target for this case. - */ - if (target.type == WindowsPathType.DRIVE_RELATIVE) { - throw new IOException("Cannot create symbolic link to working directory relative target"); - } - - /* - * Windows treates symbolic links to directories differently than it - * does to other file types. For that reason we need to check if the - * target is a directory (or a directory junction). - */ - WindowsPath resolvedTarget; - if (target.type == WindowsPathType.RELATIVE) { - WindowsPath parent = getParent(); - resolvedTarget = (parent == null) ? target : parent.resolve(target); - } else { - resolvedTarget = resolve(target); - } - int flags = 0; - try { - WindowsFileAttributes wattrs = WindowsFileAttributes.get(resolvedTarget, false); - if (wattrs.isDirectory() || wattrs.isDirectoryLink()) - flags |= SYMBOLIC_LINK_FLAG_DIRECTORY; - } catch (WindowsException x) { - // unable to access target so assume target is not a directory - } - - // create the link - try { - CreateSymbolicLink(getPathForWin32Calls(), - addPrefixIfNeeded(target.toString()), - flags); - } catch (WindowsException x) { - if (x.lastError() == ERROR_INVALID_REPARSE_DATA) { - x.rethrowAsIOException(this, target); - } else { - x.rethrowAsIOException(this); - } - } - return this; - } - - @Override - public Path createLink(Path obj) throws IOException { - WindowsPath existing = checkPath(obj); - - // permission check - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - sm.checkPermission(new LinkPermission("hard")); - this.checkWrite(); - existing.checkWrite(); - } - - // create hard link - try { - CreateHardLink(this.getPathForWin32Calls(), - existing.getPathForWin32Calls()); - } catch (WindowsException x) { - x.rethrowAsIOException(this, existing); - } - - return this; - } - - @Override - public WindowsPath readSymbolicLink() throws IOException { - if (!getFileSystem().supportsLinks()) { - throw new UnsupportedOperationException("symbolic links not supported"); - } - - // permission check - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - FilePermission perm = new FilePermission(getPathForPermissionCheck(), - SecurityConstants.FILE_READLINK_ACTION); - AccessController.checkPermission(perm); - } - - String target = WindowsLinkSupport.readLink(this); - return createFromNormalizedPath(getFileSystem(), target); - } - @Override public URI toUri() { return WindowsUriSupport.toUri(this); @@ -1282,21 +833,6 @@ class WindowsPath extends AbstractPath { return createFromNormalizedPath(getFileSystem(), rp); } - @Override - public boolean isHidden() throws IOException { - checkRead(); - WindowsFileAttributes attrs = null; - try { - attrs = WindowsFileAttributes.get(this, true); - } catch (WindowsException x) { - x.rethrowAsIOException(this); - } - // DOS hidden attribute not meaningful when set on directories - if (attrs.isDirectory()) - return false; - return attrs.isHidden(); - } - @Override public WatchKey register(WatchService watcher, WatchEvent.Kind[] events, diff --git a/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java b/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java index b985d136f71..e898fd55fd2 100644 --- a/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java +++ b/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java @@ -74,8 +74,6 @@ class WindowsPathParser { * Parses the given input as a Windows path */ static Result parse(String input) { - if (input == null || input.length() == 0) - throw new InvalidPathException(input, "Empty or null path"); return parse(input, true); } @@ -135,7 +133,7 @@ class WindowsPathParser { } } if (off == 0) { - if (isSlash(input.charAt(0))) { + if (len > 0 && isSlash(input.charAt(0))) { type = WindowsPathType.DIRECTORY_RELATIVE; root = "\\"; } else { diff --git a/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java b/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java index f0c458761ac..7d9464e0ce4 100644 --- a/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java +++ b/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java @@ -214,7 +214,7 @@ class WindowsSecurityDescriptor { // map flags byte aceFlags = unsafe.getByte(aceAddress + OFFSETOF_FLAGS); - Set flags = new HashSet(); + Set flags = EnumSet.noneOf(AclEntryFlag.class); if ((aceFlags & OBJECT_INHERIT_ACE) != 0) flags.add(AclEntryFlag.FILE_INHERIT); if ((aceFlags & CONTAINER_INHERIT_ACE) != 0) @@ -226,7 +226,7 @@ class WindowsSecurityDescriptor { // map access mask int mask = unsafe.getInt(aceAddress + OFFSETOF_ACCESS_MASK); - Set perms = new HashSet(); + Set perms = EnumSet.noneOf(AclEntryPermission.class); if ((mask & FILE_READ_DATA) > 0) perms.add(AclEntryPermission.READ_DATA); if ((mask & FILE_WRITE_DATA) > 0) @@ -378,7 +378,7 @@ class WindowsSecurityDescriptor { AclInformation aclInfo = GetAclInformation(aclAddress); aceCount = aclInfo.aceCount(); } - ArrayList result = new ArrayList(aceCount); + ArrayList result = new ArrayList<>(aceCount); // decode each of the ACEs to AclEntry objects for (int i=0; i listUsingStreamEnumeration() throws IOException { - List list = new ArrayList(); + List list = new ArrayList<>(); try { FirstStream first = FindFirstStream(file.getPathForWin32Calls()); if (first != null) { @@ -114,7 +114,7 @@ class WindowsUserDefinedFileAttributeView NativeBuffer buffer = null; // result with names of alternative data streams - final List list = new ArrayList(); + final List list = new ArrayList<>(); try { buffer = NativeBuffers.getNativeBuffer(BUFFER_SIZE); @@ -216,7 +216,7 @@ class WindowsUserDefinedFileAttributeView // wrap with channel FileChannel fc = null; try { - Set opts = new HashSet(); + Set opts = new HashSet<>(); opts.add(READ); if (!followLinks) opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT); @@ -243,7 +243,7 @@ class WindowsUserDefinedFileAttributeView // wrap with channel FileChannel fc = null; try { - Set opts = new HashSet(); + Set opts = new HashSet<>(); opts.add(READ); if (!followLinks) opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT); @@ -298,7 +298,7 @@ class WindowsUserDefinedFileAttributeView x.rethrowAsIOException(file); } try { - Set opts = new HashSet(); + Set opts = new HashSet<>(); if (!followLinks) opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT); opts.add(CREATE); diff --git a/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java b/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java index d86673cf134..53f2fa2af56 100644 --- a/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java +++ b/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java @@ -106,8 +106,11 @@ class WindowsWatchService // completion key (used to map I/O completion to WatchKey) private int completionKey; - WindowsWatchKey(AbstractWatchService watcher, FileKey fileKey) { - super(watcher); + WindowsWatchKey(Path dir, + AbstractWatchService watcher, + FileKey fileKey) + { + super(dir, watcher); this.fileKey = fileKey; } @@ -405,7 +408,7 @@ class WindowsWatchService WindowsWatchKey watchKey; if (existing == null) { // not registered so create new watch key - watchKey = new WindowsWatchKey(watcher, fk) + watchKey = new WindowsWatchKey(dir, watcher, fk) .init(handle, events, watchSubtree, buffer, countAddress, overlappedAddress, completionKey); // map file key to watch key diff --git a/jdk/src/windows/native/java/io/WinNTFileSystem_md.c b/jdk/src/windows/native/java/io/WinNTFileSystem_md.c index 23ff9e5dfec..566b697eb8f 100644 --- a/jdk/src/windows/native/java/io/WinNTFileSystem_md.c +++ b/jdk/src/windows/native/java/io/WinNTFileSystem_md.c @@ -220,19 +220,19 @@ Java_java_io_WinNTFileSystem_canonicalize0(JNIEnv *env, jobject this, /*we estimate the max length of memory needed as "currentDir. length + pathname.length" */ - int len = wcslen(path); + int len = (int)wcslen(path); len += currentDirLength(path, len); if (len > MAX_PATH_LENGTH - 1) { WCHAR *cp = (WCHAR*)malloc(len * sizeof(WCHAR)); if (cp != NULL) { if (wcanonicalize(path, cp, len) >= 0) { - rv = (*env)->NewString(env, cp, wcslen(cp)); + rv = (*env)->NewString(env, cp, (jsize)wcslen(cp)); } free(cp); } } else if (wcanonicalize(path, canonicalPath, MAX_PATH_LENGTH) >= 0) { - rv = (*env)->NewString(env, canonicalPath, wcslen(canonicalPath)); + rv = (*env)->NewString(env, canonicalPath, (jsize)wcslen(canonicalPath)); } } END_UNICODE_STRING(env, path); if (rv == NULL) { @@ -251,14 +251,14 @@ Java_java_io_WinNTFileSystem_canonicalizeWithPrefix0(JNIEnv *env, jobject this, WCHAR canonicalPath[MAX_PATH_LENGTH]; WITH_UNICODE_STRING(env, canonicalPrefixString, canonicalPrefix) { WITH_UNICODE_STRING(env, pathWithCanonicalPrefixString, pathWithCanonicalPrefix) { - int len = wcslen(canonicalPrefix) + MAX_PATH; + int len = (int)wcslen(canonicalPrefix) + MAX_PATH; if (len > MAX_PATH_LENGTH) { WCHAR *cp = (WCHAR*)malloc(len * sizeof(WCHAR)); if (cp != NULL) { if (wcanonicalizeWithPrefix(canonicalPrefix, pathWithCanonicalPrefix, cp, len) >= 0) { - rv = (*env)->NewString(env, cp, wcslen(cp)); + rv = (*env)->NewString(env, cp, (jsize)wcslen(cp)); } free(cp); } @@ -266,7 +266,7 @@ Java_java_io_WinNTFileSystem_canonicalizeWithPrefix0(JNIEnv *env, jobject this, if (wcanonicalizeWithPrefix(canonicalPrefix, pathWithCanonicalPrefix, canonicalPath, MAX_PATH_LENGTH) >= 0) { - rv = (*env)->NewString(env, canonicalPath, wcslen(canonicalPath)); + rv = (*env)->NewString(env, canonicalPath, (jsize)wcslen(canonicalPath)); } } END_UNICODE_STRING(env, pathWithCanonicalPrefix); } END_UNICODE_STRING(env, canonicalPrefix); @@ -358,7 +358,7 @@ Java_java_io_WinNTFileSystem_getBooleanAttributes(JNIEnv *env, jobject this, } else { /* pagefile.sys is a special case */ if (GetLastError() == ERROR_SHARING_VIOLATION) { rv = java_io_FileSystem_BA_EXISTS; - if ((pathlen = wcslen(pathbuf)) >= SPECIALFILE_NAMELEN && + if ((pathlen = (jint)wcslen(pathbuf)) >= SPECIALFILE_NAMELEN && (_wcsicmp(pathbuf + pathlen - SPECIALFILE_NAMELEN, L"pagefile.sys") == 0) || (_wcsicmp(pathbuf + pathlen - SPECIALFILE_NAMELEN, @@ -625,7 +625,7 @@ Java_java_io_WinNTFileSystem_list(JNIEnv *env, jobject this, jobject file) } /* Remove trailing space chars from directory name */ - len = wcslen(search_path); + len = (int)wcslen(search_path); while (search_path[len-1] == ' ') { len--; } @@ -668,7 +668,7 @@ Java_java_io_WinNTFileSystem_list(JNIEnv *env, jobject this, jobject file) || !wcscmp(find_data.cFileName, L"..")) continue; name = (*env)->NewString(env, find_data.cFileName, - wcslen(find_data.cFileName)); + (jsize)wcslen(find_data.cFileName)); if (name == NULL) return NULL; // error; if (len == maxlen) { @@ -819,7 +819,7 @@ Java_java_io_WinNTFileSystem_getDriveDirectory(JNIEnv *env, jobject this, jchar *pf = p; if (p == NULL) return NULL; if (iswalpha(*p) && (p[1] == L':')) p += 2; - ret = (*env)->NewString(env, p, wcslen(p)); + ret = (*env)->NewString(env, p, (jsize)wcslen(p)); free (pf); return ret; } diff --git a/jdk/src/windows/native/java/io/canonicalize_md.c b/jdk/src/windows/native/java/io/canonicalize_md.c index f829ce3371f..e0eadb6b82f 100644 --- a/jdk/src/windows/native/java/io/canonicalize_md.c +++ b/jdk/src/windows/native/java/io/canonicalize_md.c @@ -479,7 +479,7 @@ wcanonicalize(WCHAR *orig_path, WCHAR *result, int size) assert(*src == L'\\'); /* Invariant */ *p = L'\0'; /* Temporarily clear separator */ - if ((pathlen = wcslen(path)) > MAX_PATH - 1) { + if ((pathlen = (int)wcslen(path)) > MAX_PATH - 1) { pathbuf = getPrefixed(path, pathlen); h = FindFirstFileW(pathbuf, &fd); /* Look up prefix */ free(pathbuf); @@ -538,7 +538,7 @@ wcanonicalizeWithPrefix(WCHAR *canonicalPrefix, WCHAR *pathWithCanonicalPrefix, dend = dst + size; /* Don't go to or past here */ - if ((pathlen=wcslen(pathWithCanonicalPrefix)) > MAX_PATH - 1) { + if ((pathlen=(int)wcslen(pathWithCanonicalPrefix)) > MAX_PATH - 1) { pathbuf = getPrefixed(pathWithCanonicalPrefix, pathlen); h = FindFirstFileW(pathbuf, &fd); /* Look up prefix */ free(pathbuf); diff --git a/jdk/src/windows/native/java/io/io_util_md.c b/jdk/src/windows/native/java/io/io_util_md.c index 3b6723eed6b..81a69392096 100644 --- a/jdk/src/windows/native/java/io/io_util_md.c +++ b/jdk/src/windows/native/java/io/io_util_md.c @@ -104,7 +104,7 @@ currentDirLength(const WCHAR* ps, int pathlen) { else return 0; /* invalid drive name. */ dir = currentDir(di); if (dir != NULL){ - dirlen = wcslen(dir); + dirlen = (int)wcslen(dir); free(dir); } return dirlen; @@ -115,7 +115,7 @@ currentDirLength(const WCHAR* ps, int pathlen) { int dirlen = -1; dir = _wgetcwd(NULL, MAX_PATH); if (dir != NULL) { - curDirLenCached = wcslen(dir); + curDirLenCached = (int)wcslen(dir); free(dir); } } @@ -165,7 +165,7 @@ pathToNTPath(JNIEnv *env, jstring path, jboolean throwFNFE) { int max_path = 248; /* CreateDirectoryW() has the limit of 248 */ WITH_UNICODE_STRING(env, path, ps) { - pathlen = wcslen(ps); + pathlen = (int)wcslen(ps); if (pathlen != 0) { if (pathlen > 2 && (ps[0] == L'\\' && ps[1] == L'\\' || //UNC diff --git a/jdk/src/windows/native/sun/jkernel/DownloadDialog.cpp b/jdk/src/windows/native/sun/jkernel/DownloadDialog.cpp deleted file mode 100644 index fabcd0468b8..00000000000 --- a/jdk/src/windows/native/sun/jkernel/DownloadDialog.cpp +++ /dev/null @@ -1,894 +0,0 @@ -/* - * Copyright (c) 2008, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#define STRICT -#ifndef _WIN32_WINNT -/* REMIND : 0x500 means Windows 2000 .. seems like we can update - * for Windows XP when we move the SDK and build platform - */ -#define _WIN32_WINNT 0x0500 -#endif -#define _ATL_APARTMENT_THREADED - -#include -//You may derive a class from CComModule and use it if you want to override -//something, but do not change the name of _Module -extern CComModule _Module; -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "DownloadDialog.h" - -#define UPDATE_INTERVAL 500 -#define INITIAL_DELAY 2000 -#define POST_DELAY 1000 - -///////////////////////////////////////////////////////////////////////////// -// CDownloadDialog - -typedef BOOL (WINAPI * InitCommonControlsType)(); - -CDownloadDialog::CDownloadDialog() -{ - m_numDownloadThreadsRunning = 0; - - m_destroyWindowTimerStarted = FALSE; - m_pszFileName = NULL; - m_jvm = NULL; - - m_ulProgress = 0; - m_ulProgressMax = 0; - m_iProgressFactor = 0; - m_iMaxProgressFactor = 1; - - - m_hCancelEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL); - m_hDownloadThreadExitEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL); - m_hDialogInitializedEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL); - - // Load up commctrl.dll - // Loading dll dynamically we can use latest available version - // (i.e. latest native components and extended API) - HMODULE hModComCtl32 = ::LoadLibrary(TEXT("comctl32.dll")); - if (hModComCtl32 != NULL) { - /* Initialize controls to ensure proper appearance */ - InitCommonControlsType fn_InitCommonControls = (InitCommonControlsType) - ::GetProcAddress(hModComCtl32, "InitCommonControls"); - fn_InitCommonControls(); - - /* MessageBox replacement introduced in Vista */ - taskDialogFn = (TaskDialogIndirectFn) - ::GetProcAddress(hModComCtl32, "TaskDialogIndirect"); - } -} - - -CDownloadDialog::~CDownloadDialog() -{ - ::CloseHandle(m_hCancelEvent); - ::CloseHandle(m_hDownloadThreadExitEvent); - ::CloseHandle(m_hDialogInitializedEvent); -} - -void CDownloadDialog::addToTotalContentLength(DWORD contentLength) { - __try - { - m_csDownload.Lock(); - if (m_ulProgressMax == 0) { - // first download this session, initialize start time - time(&m_startTime); - } - - m_ulProgressMax = m_ulProgressMax + contentLength; - logProgress(); - } - __finally - { - m_csDownload.Unlock(); - } -} - - - -void CDownloadDialog::initDialogText(LPCTSTR downloadURL, LPCTSTR bundleName) { - - // reset status text - HWND hStatusWnd = GetDlgItem(IDC_TIME_REMAINING); - ::SetWindowText(hStatusWnd, ""); - - // reset progress bar - HWND hProgressWnd = GetDlgItem(IDC_DOWNLOAD_PROGRESS); - - ::PostMessage(hProgressWnd, PBM_SETPOS, (WPARAM) 0, NULL); - - m_hMastheadFont = NULL; - m_hDialogFont = NULL; - m_hSixPointFont = NULL; - - m_hMemDC = NULL; - - TCHAR szDownloadText[BUFFER_SIZE]; - - HWND hWndDownloadText = GetDlgItem(IDC_DOWNLOAD_TEXT); - ::LoadString(_Module.GetModuleInstance(), IDS_DOWNLOAD_TEXT, szDownloadText, BUFFER_SIZE); - ::SetWindowText(hWndDownloadText, szDownloadText); - - TCHAR szMasthead[BUFFER_SIZE]; - - HWND hWndMastheadText = GetDlgItem(IDC_MASTHEAD_TEXT); - ::LoadString(_Module.GetModuleInstance(), IDS_DOWNLOAD, szMasthead, BUFFER_SIZE); - ::SetWindowText(hWndMastheadText, szMasthead); - - -} - -BOOL CDownloadDialog::isDownloading() { - return m_numDownloadThreadsRunning > 0; -} - - -void CDownloadDialog::bundleInstallStart() { - __try - { - m_csNumDownloadThreads.Lock(); - m_numDownloadThreadsRunning++; - // another download request has came in, kill the destroyWindowTimer - KillTimer(destroyWindowTimerID); - m_destroyWindowTimerStarted = FALSE; - } - __finally - { - m_csNumDownloadThreads.Unlock(); - } -} - -void CDownloadDialog::bundleInstallComplete() { - __try - { - m_csNumDownloadThreads.Lock(); - m_numDownloadThreadsRunning = max(m_numDownloadThreadsRunning - 1, 0); - if (m_numDownloadThreadsRunning == 0) { - m_ulProgress = m_ulProgressMax; - logProgress(); - } - // Signal main thread - ::SetEvent(m_hDownloadThreadExitEvent); - } - __finally - { - m_csNumDownloadThreads.Unlock(); - } -} - - -//=--------------------------------------------------------------------------= -// CDownloadDialog::OnInitDialog -//=--------------------------------------------------------------------------= -// Message handler for WM_INITDIALOG -// -// Parameters: -// uMsg Windows Message -// wParam WPARAM -// lParam LPARAM -// bHandled FALSE if not handled -// -// Output: -// LRESULT -// -// Notes: -// -LRESULT CDownloadDialog::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) -{ - __try - { - m_csDownload.Lock(); - } - __finally - { - m_csDownload.Unlock(); - } - // Set timer - SetTimer(iTimerID, UPDATE_INTERVAL); - - m_hMastheadFont = NULL; - m_hDialogFont = NULL; - m_hSixPointFont = NULL; - m_feedbackOnCancel = TRUE; - - m_hMemDC = NULL; - - TCHAR szDownloadText[BUFFER_SIZE]; - - HWND hWndDownloadText = GetDlgItem(IDC_DOWNLOAD_TEXT); - ::LoadString(_Module.GetModuleInstance(), IDS_DOWNLOAD_TEXT, szDownloadText, BUFFER_SIZE); - ::SetWindowText(hWndDownloadText, szDownloadText); - - TCHAR szMasthead[BUFFER_SIZE]; - - HWND hWndMastheadText = GetDlgItem(IDC_MASTHEAD_TEXT); - ::LoadString(_Module.GetModuleInstance(), IDS_DOWNLOAD, szMasthead, BUFFER_SIZE); - ::SetWindowText(hWndMastheadText, szMasthead); - - HICON javaCupIcon = ::LoadIcon(_Module.GetModuleInstance(), MAKEINTRESOURCE(IDI_JAVA)); - SetIcon(javaCupIcon, FALSE); - - ::SetEvent(m_hDialogInitializedEvent); - - return 0; // do not set initial focus to cancel button -} - - -//=--------------------------------------------------------------------------= -// CDownloadDialog::OnOK -//=--------------------------------------------------------------------------= -// Message handler for WM_COMMAND with IDOK -// -// Parameters: -// wNotifyCode Notify Code -// wID ID of control -// hWndCtl HWND of control -// bHandled FALSE if not handled -// -// Output: -// LRESULT -// -// Notes: -// -LRESULT CDownloadDialog::OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) -{ - // do nothing for now - return 0; -} - - - -//=--------------------------------------------------------------------------= -// CDownloadDialog::OnCancel -//=--------------------------------------------------------------------------= -// Message handler for WM_COMMAND with IDCANCEL -// -// Parameters: -// wNotifyCode Notify Code -// wID ID of control -// hWndCtl HWND of control -// bHandled FALSE if not handled -// -// Output: -// LRESULT -// -// Notes: -// -LRESULT CDownloadDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) -{ - // Disable window first to avoid any keyboard input - EnableWindow(FALSE); - - if (m_feedbackOnCancel) { - int r = SafeMessageBox(IDS_DOWNLOAD_CANCEL_MESSAGE, - IDS_DOWNLOAD_CANCEL_INSTRUCTION, - IDS_DOWNLOAD_CANCEL_CAPTION, - DIALOG_WARNING_CANCELOK, - NULL, NULL); - if (!::IsWindow(hWndCtl)) { - /* It is possible that download was finished and download - window hidden by the time user close this message box. - If such case we should simply return. */ - return 0; - } - if (r == IDCANCEL) { - EnableWindow(TRUE); - return 0; - } - } - - __try - { - m_csDownload.Lock(); - // if we are downloading, signal download thread to stop downloading - if (m_numDownloadThreadsRunning > 0) { - SetEvent(m_hCancelEvent); - } - } - __finally - { - m_csDownload.Unlock(); - } - - // Kill timer - KillTimer(iTimerID); - KillTimer(destroyWindowTimerID); - - FreeGDIResources(); - - // Destroy dialog - EndDialog(wID); - - return 0; -} - -void CDownloadDialog::destroyDialog() { - m_feedbackOnCancel = FALSE; - ::PostMessage(m_hWnd, WM_COMMAND, IDCANCEL, NULL); -} - - -void CDownloadDialog::delayedDoModal() { - __try - { - __try - { - m_csMessageBox.Lock(); - m_dialogUp = true; - Sleep(INITIAL_DELAY); - } - __finally - { - m_csMessageBox.Unlock(); - } - - if (isDownloading()) - DoModal(); - } - __finally - { - m_dialogUp = false; - } -} - - -//=--------------------------------------------------------------------------= -// CDownloadDialog::SafeMessageBox -//=--------------------------------------------------------------------------= -// Helper method that uses best availble API to show native error/information -// dialog. In particular, it uses TaskDialog if availble (Vista specific) -// and MessageBox otherwise. -// -// It also ensures that the message box is always displayed on top of -// the progress dialog instead of underneath -// - -//helper structures to define XP vs Vista style differences -static TASKDIALOG_COMMON_BUTTON_FLAGS vistaDialogButtons[] = { - TDCBF_RETRY_BUTTON | TDCBF_CANCEL_BUTTON, - TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON -}; -static PCWSTR vistaIcons[] = { - TD_ERROR_ICON, - TD_WARNING_ICON -}; - -static UINT xpStyle[] = { - MB_ICONERROR | MB_RETRYCANCEL, - MB_ICONWARNING | MB_OKCANCEL | MB_DEFBUTTON2 -}; - -int CDownloadDialog::SafeMessageBox(UINT details, UINT mainInstruction, UINT caption, DialogType type, LPCWSTR instructionArg, LPCWSTR detailsArg) { - WCHAR textCaption[BUFFER_SIZE+1]; - WCHAR textDetails[BUFFER_SIZE+1]; - WCHAR textInstruction[BUFFER_SIZE+1]; - WCHAR tmpBuffer[BUFFER_SIZE+1]; - - /* make sure buffers are terminated */ - textCaption[BUFFER_SIZE] = textDetails[BUFFER_SIZE] = 0; - textInstruction[BUFFER_SIZE] = tmpBuffer[BUFFER_SIZE] = 0; - - if (detailsArg != NULL) { - ::LoadStringW(_Module.GetResourceInstance(), - details, - tmpBuffer, - BUFFER_SIZE); - _snwprintf(textDetails, BUFFER_SIZE, tmpBuffer, detailsArg); - } else { - ::LoadStringW(_Module.GetResourceInstance(), - details, - textDetails, - BUFFER_SIZE); - } - - if (instructionArg != NULL) { - ::LoadStringW(_Module.GetResourceInstance(), - mainInstruction, - tmpBuffer, - BUFFER_SIZE); - _snwprintf(textInstruction, BUFFER_SIZE, tmpBuffer, instructionArg); - } else { - ::LoadStringW(_Module.GetResourceInstance(), - mainInstruction, - textInstruction, - BUFFER_SIZE); - } - - ::LoadStringW(_Module.GetResourceInstance(), - caption, - textCaption, - BUFFER_SIZE); - - __try - { - m_csMessageBox.Lock(); - if (m_dialogUp) { - waitUntilInitialized(); - } - /* If TaskDialog availble - use it! */ - if (taskDialogFn != NULL) { - TASKDIALOGCONFIG tc = { 0 }; - int nButton; - - tc.cbSize = sizeof(tc); - tc.hwndParent = ::IsWindow(m_hWnd) ? m_hWnd : NULL; - tc.dwCommonButtons = vistaDialogButtons[type]; - tc.pszWindowTitle = textCaption; - tc.pszMainInstruction = textInstruction; - tc.pszContent = textDetails; - tc.pszMainIcon = vistaIcons[type]; - /* workaround: we need to make sure Cancel is default - for this type of Dialog */ - if (type == DIALOG_WARNING_CANCELOK) { - tc.nDefaultButton = IDCANCEL; - } - - taskDialogFn(&tc, &nButton, NULL, NULL); - return nButton; - } else { /* default: use MessageBox */ - /* Note that MessageBox API expects content as single string - and therefore we need to concatenate instruction - and details as 2 paragraphs. - - The only exception is empty instruction. */ - if (wcslen(textInstruction) > 0) { - wcsncat(textInstruction, L"\n\n", - BUFFER_SIZE - wcslen(textInstruction)); - } - wcsncat(textInstruction, textDetails, - BUFFER_SIZE - wcslen(textInstruction)); - - return ::MessageBoxW(::IsWindow(m_hWnd) ? m_hWnd : NULL, - textInstruction, textCaption, xpStyle[type]); - } - } - __finally - { - m_csMessageBox.Unlock(); - } -} - - -//=--------------------------------------------------------------------------= -// CDownloadDialog::OnTimer -//=--------------------------------------------------------------------------= -// Message handler for WM_TIMER -// -// Parameters: -// uMsg Windows Message -// wParam WPARAM -// lParam LPARAM -// bHandled FALSE if not handled -// -// Output: -// LRESULT -// -// Notes: -// -LRESULT CDownloadDialog::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) -{ - if (destroyWindowTimerID == (int)wParam) { - KillTimer(destroyWindowTimerID); - m_destroyWindowTimerStarted = FALSE; - m_ulProgressMax = max(0, m_ulProgressMax - m_ulProgress); - logProgress(); - m_ulProgress = 0; - logProgress(); - m_feedbackOnCancel = FALSE; - ::PostMessage(m_hWnd, WM_COMMAND, IDCANCEL, NULL); - } - - if (iTimerID == (int)wParam) - { - - __try - { - m_csDownload.Lock(); - - HWND hStatusWnd = GetDlgItem(IDC_TIME_REMAINING); - HWND hProgressWnd = GetDlgItem(IDC_DOWNLOAD_PROGRESS); - - if (m_ulProgress && m_ulProgressMax) - { - ::PostMessage(hProgressWnd, PBM_SETPOS, - (WPARAM) (m_ulProgress * 100 - / m_ulProgressMax), NULL); - - time_t currentTime; - time(¤tTime); - - double elapsed_time = difftime(currentTime, m_startTime); - double remain_time = (elapsed_time / m_ulProgress) * - (m_ulProgressMax - m_ulProgress); - int hr = 0, min = 0; - - if (remain_time > 60 * 60) - { - hr = int(remain_time / (60 * 60)); - remain_time = remain_time - hr * 60 * 60; - } - - if (remain_time > 60) - { - min = int(remain_time / 60); - remain_time = remain_time - min * 60; - } - - TCHAR szBuffer[BUFFER_SIZE]; - TCHAR szTimeBuffer[BUFFER_SIZE]; - - if (hr > 0) - { - if (hr > 1) - LoadString(_Module.GetResourceInstance(), IDS_HOURSMINUTESECOND, - szTimeBuffer, BUFFER_SIZE); - else - LoadString(_Module.GetResourceInstance(), IDS_HOURMINUTESECOND, - szTimeBuffer, BUFFER_SIZE); - - sprintf(szBuffer, szTimeBuffer, hr, min, remain_time); - } - else - { - if (min > 0) - { - LoadString(_Module.GetResourceInstance(), IDS_MINUTESECOND, - szTimeBuffer, BUFFER_SIZE); - sprintf(szBuffer, szTimeBuffer, min, remain_time); - - } - else - { - LoadString(_Module.GetResourceInstance(), IDS_SECOND, - szTimeBuffer, BUFFER_SIZE); - sprintf(szBuffer, szTimeBuffer, remain_time); - - } - } - - if (m_ulProgress == m_ulProgressMax) { - // download is done, unpacking bundle now, and waiting - // for another download to take place - ::LoadString(_Module.GetResourceInstance(), - IDS_DOWNLOAD_UNPACKING, szBuffer, BUFFER_SIZE); - __try - { - m_csNumDownloadThreads.Lock(); - // both download and unpacking is done, start - // timer to destroy the progress window in 500ms - if (!m_destroyWindowTimerStarted && - m_numDownloadThreadsRunning == 0) { - SetTimer(destroyWindowTimerID, POST_DELAY); - m_destroyWindowTimerStarted = TRUE; - } - } - __finally - { - m_csNumDownloadThreads.Unlock(); - } - } - - // Update status message - ::SetWindowText(hStatusWnd, szBuffer); - } - } - __finally - { - m_csDownload.Unlock(); - } - } - - return 0; -} - -// Message handler for WM_ONCTLCOLORSTATIC. -// this message is sent each time a static control is drawn. -// we get the Control ID and then set background color and font -// as appropriate for that control. -LRESULT CDownloadDialog::OnCtlColorStatic(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) -{ - HDC hdc = (HDC) wParam; - HWND hwnd = (HWND) lParam; - - int DlgCtrlID = ::GetDlgCtrlID(hwnd); - - if (DlgCtrlID == IDC_DOWNLOAD_TEXT ) - { - if (m_hDialogFont == NULL) - { - m_hDialogFont = CreateDialogFont(hdc, TEXT("MS Shell Dlg"), 8); - } - - ::SelectObject(hdc, m_hDialogFont); - return 0; - } - else if (DlgCtrlID == IDC_TIME_REMAINING) - { - if (m_hSixPointFont == NULL) - { - m_hSixPointFont = CreateDialogFont(hdc, TEXT("MS Shell Dlg"), 8); - } - - ::SelectObject(hdc, m_hSixPointFont); - return 0; - } - else if (DlgCtrlID == IDC_MASTHEAD_TEXT) - { - if (m_hMastheadFont == NULL) - { - m_hMastheadFont = CreateDialogFont(hdc, TEXT("MS Shell Dlg"), 12, 1); - } - - ::SelectObject(hdc, m_hMastheadFont); - return (LRESULT) GetStockObject(WHITE_BRUSH); - } - else if (DlgCtrlID == IDC_DOWNLOAD_MASTHEAD) - { - if (m_hMemDC == NULL) - { - m_hBitmap = LoadBitmap(_Module.GetModuleInstance(), - MAKEINTRESOURCE(IDI_MASTHEAD)); - GetObject(m_hBitmap, sizeof(BITMAP), &m_bmMasthead); - m_hMemDC = CreateCompatibleDC(NULL); - SelectObject(m_hMemDC, m_hBitmap); - } - - RECT rect; - ::GetClientRect(hwnd, &rect); - - StretchBlt(hdc, rect.left, rect.top, (rect.right - rect.left), (rect.bottom - rect.top), - m_hMemDC, 0, 0, m_bmMasthead.bmWidth, m_bmMasthead.bmHeight, SRCCOPY); - - return (LRESULT) GetStockObject(NULL_BRUSH); - } - - - return 0; -} - - -//=--------------------------------------------------------------------------= -// CDownloadDialog::OnStartBinding -//=--------------------------------------------------------------------------= -// Called when download is started -// -// Parameters: -// -// Output: -// HRESULT -// -// Notes: -// -STDMETHODIMP CDownloadDialog::OnStartBinding() -{ - __try - { - m_csDownload.Lock(); - time(&m_startTime); - } - __finally - { - m_csDownload.Unlock(); - } - - return S_OK; -} - - -//=--------------------------------------------------------------------------= -// CDownloadDialog::OnProgress -//=--------------------------------------------------------------------------= -// Called when download is in progress -// -// Parameters: ULONG ulProgress -// -// Output: -// HRESULT -// -// Notes: -// -STDMETHODIMP CDownloadDialog::OnProgress(ULONG ulProgress) -{ - __try - { - m_csDownload.Lock(); - m_ulProgress = m_ulProgress + ulProgress; - logProgress(); - - } - __finally - { - m_csDownload.Unlock(); - } - - return S_OK; -} - -void CDownloadDialog::decrementProgressMax(ULONG contentLength, ULONG readSoFar) { - __try - { - m_csDownload.Lock(); - m_ulProgressMax = m_ulProgressMax - contentLength; - m_ulProgress = m_ulProgress - readSoFar; - logProgress(); - } - __finally - { - m_csDownload.Unlock(); - } - -} - -void CDownloadDialog::waitUntilInitialized() { - // wait until download progress dialog is initialized and ready to show - WaitForSingleObject(m_hDialogInitializedEvent, INFINITE); - ResetEvent(m_hDialogInitializedEvent); - -} - -// Check if download has been cancelled -BOOL CDownloadDialog::isDownloadCancelled() { - if (WAIT_OBJECT_0 == WaitForSingleObject(m_hCancelEvent, 0)) { - return TRUE; - } - return FALSE; -} - - - -// Create the fonts we need for the download and -// install UE -HFONT CDownloadDialog::CreateDialogFont(HDC hdc, LPCTSTR lpszFaceName, int ptSize, int isBold) -{ - POINT pt; - FLOAT cxDPI, cyDPI; - HFONT hFont; - LOGFONT lf; - - int iDeciPtWidth = 0; - int iDeciPtHeight = 10 * ptSize; - - int iSavedDC = SaveDC(hdc); - - SetGraphicsMode (hdc, GM_ADVANCED); - ModifyWorldTransform(hdc, NULL, MWT_IDENTITY); - SetViewportOrgEx (hdc, 0,0, NULL); - SetWindowOrgEx (hdc, 0,0, NULL); - - cxDPI = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSX); - cyDPI = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSY); - - pt.x = (int) (iDeciPtWidth * cxDPI / 72); - pt.y = (int) (iDeciPtHeight * cyDPI / 72); - - DPtoLP(hdc, &pt, 1); - - lf.lfHeight = - (int) (fabs ((double) pt.y) / 10.0 + 0.5); - lf.lfWidth = 0; - lf.lfEscapement = 0; - lf.lfOrientation = 0; - lf.lfWeight = (isBold > 0) ? FW_BOLD : 0; - lf.lfItalic = 0; - lf.lfUnderline = 0; - lf.lfStrikeOut = 0; - lf.lfCharSet = 0; - lf.lfOutPrecision = 0; - lf.lfClipPrecision = 0; - lf.lfQuality = 0; - lf.lfPitchAndFamily = 0; - - TCHAR szLocaleData[BUFFER_SIZE]; - GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SENGCOUNTRY, - szLocaleData, BUFFER_SIZE); - - if (strncmp(szLocaleData, "Japan", 5) == 0) { - // need special font for _ja locale - strcpy (lf.lfFaceName, TEXT("MS UI Gothic")); - } else { - strcpy (lf.lfFaceName, lpszFaceName); - } - - hFont = CreateFontIndirect(&lf); - - RestoreDC (hdc, iSavedDC); - return hFont; -} - -void CDownloadDialog::FreeGDIResources () -{ - ::DeleteObject(m_hMastheadFont); - m_hMastheadFont = NULL; - - ::DeleteObject(m_hDialogFont); - m_hDialogFont = NULL; - - ::DeleteObject(m_hSixPointFont); - m_hSixPointFont = NULL; - - ::DeleteObject(m_hBitmap); - m_hBitmap = NULL; - - ::DeleteDC(m_hMemDC); - m_hMemDC = NULL; -} - - -JNIEnv* CDownloadDialog::getJNIEnv() { - if (m_jvm == NULL) - return NULL; - JNIEnv *env; - m_jvm->AttachCurrentThread((void**) &env, NULL); - return env; -} - - -void CDownloadDialog::log(char *msg) { - JNIEnv *env = getJNIEnv(); - if (env != NULL) { - jclass dm = env->FindClass("sun/jkernel/DownloadManager"); - if (dm == NULL) { - printf("Cound not find class sun.jkernel.DownloadManager\n"); - return; - } - jmethodID log = env->GetStaticMethodID(dm, "log", "(Ljava/lang/String;)V"); - if (log == NULL) { - printf("Could not find method sun.jkernel.DownloadManager.log(String)\n"); - return; - } - jstring string = env->NewStringUTF(msg); - if (string == NULL) { - printf("Error creating log string\n"); - return; - } - env->CallStaticVoidMethod(dm, log, string); - } -} - - -void CDownloadDialog::logProgress() { - char msg[256]; - sprintf(msg, "Progress: %d / %d", m_ulProgress, m_ulProgressMax); - log(msg); -} diff --git a/jdk/src/windows/native/sun/jkernel/DownloadDialog.h b/jdk/src/windows/native/sun/jkernel/DownloadDialog.h deleted file mode 100644 index a8f68f6f1cc..00000000000 --- a/jdk/src/windows/native/sun/jkernel/DownloadDialog.h +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -// -// DownloadDialog.h : Declaration of the CDownloadDialog -// - -#ifndef __DOWNLOADDIALOG_H_ -#define __DOWNLOADDIALOG_H_ - -#include "resource.h" // main symbols -#include -#include "jni.h" - -#ifndef BUFFER_SIZE -#define BUFFER_SIZE 2048 -#endif - -#define iTimerID 1000 -#define destroyWindowTimerID 2000 - -#define E_JDHELPER_TIMEOUT 12002 -#define E_JDHELPER_NAME_NOT_RESOLVED 12007 -#define E_JDHELPER_CANNOT_CONNECT 12029 - -/* Following lines were copied from the new version of commctrl.h - These definitions are not available in default version of - this header file in VS 2003 but they are needed to use - new Vista task dialog API. -*/ -#ifndef TD_ERROR_ICON - -/* These modifiers have sense with new VS only, - reset them to get code to compile */ -#define __in -#define __in_opt -#define __out_opt - -#ifdef _WIN32 -#include -#endif - - -typedef HRESULT (CALLBACK *PFTASKDIALOGCALLBACK)(HWND hwnd, __in UINT msg, __in WPARAM wParam, __in LPARAM lParam, __in LONG_PTR lpRefData); - -enum _TASKDIALOG_FLAGS -{ - TDF_ENABLE_HYPERLINKS = 0x0001, - TDF_USE_HICON_MAIN = 0x0002, - TDF_USE_HICON_FOOTER = 0x0004, - TDF_ALLOW_DIALOG_CANCELLATION = 0x0008, - TDF_USE_COMMAND_LINKS = 0x0010, - TDF_USE_COMMAND_LINKS_NO_ICON = 0x0020, - TDF_EXPAND_FOOTER_AREA = 0x0040, - TDF_EXPANDED_BY_DEFAULT = 0x0080, - TDF_VERIFICATION_FLAG_CHECKED = 0x0100, - TDF_SHOW_PROGRESS_BAR = 0x0200, - TDF_SHOW_MARQUEE_PROGRESS_BAR = 0x0400, - TDF_CALLBACK_TIMER = 0x0800, - TDF_POSITION_RELATIVE_TO_WINDOW = 0x1000, - TDF_RTL_LAYOUT = 0x2000, - TDF_NO_DEFAULT_RADIO_BUTTON = 0x4000, - TDF_CAN_BE_MINIMIZED = 0x8000 -}; -typedef int TASKDIALOG_FLAGS; // Note: _TASKDIALOG_FLAGS is an int - -typedef enum _TASKDIALOG_MESSAGES -{ - TDM_NAVIGATE_PAGE = WM_USER+101, - TDM_CLICK_BUTTON = WM_USER+102, // wParam = Button ID - TDM_SET_MARQUEE_PROGRESS_BAR = WM_USER+103, // wParam = 0 (nonMarque) wParam != 0 (Marquee) - TDM_SET_PROGRESS_BAR_STATE = WM_USER+104, // wParam = new progress state - TDM_SET_PROGRESS_BAR_RANGE = WM_USER+105, // lParam = MAKELPARAM(nMinRange, nMaxRange) - TDM_SET_PROGRESS_BAR_POS = WM_USER+106, // wParam = new position - TDM_SET_PROGRESS_BAR_MARQUEE = WM_USER+107, // wParam = 0 (stop marquee), wParam != 0 (start marquee), lparam = speed (milliseconds between repaints) - TDM_SET_ELEMENT_TEXT = WM_USER+108, // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR) - TDM_CLICK_RADIO_BUTTON = WM_USER+110, // wParam = Radio Button ID - TDM_ENABLE_BUTTON = WM_USER+111, // lParam = 0 (disable), lParam != 0 (enable), wParam = Button ID - TDM_ENABLE_RADIO_BUTTON = WM_USER+112, // lParam = 0 (disable), lParam != 0 (enable), wParam = Radio Button ID - TDM_CLICK_VERIFICATION = WM_USER+113, // wParam = 0 (unchecked), 1 (checked), lParam = 1 (set key focus) - TDM_UPDATE_ELEMENT_TEXT = WM_USER+114, // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR) - TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER+115, // wParam = Button ID, lParam = 0 (elevation not required), lParam != 0 (elevation required) - TDM_UPDATE_ICON = WM_USER+116 // wParam = icon element (TASKDIALOG_ICON_ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise) -} TASKDIALOG_MESSAGES; - -typedef enum _TASKDIALOG_NOTIFICATIONS -{ - TDN_CREATED = 0, - TDN_NAVIGATED = 1, - TDN_BUTTON_CLICKED = 2, // wParam = Button ID - TDN_HYPERLINK_CLICKED = 3, // lParam = (LPCWSTR)pszHREF - TDN_TIMER = 4, // wParam = Milliseconds since dialog created or timer reset - TDN_DESTROYED = 5, - TDN_RADIO_BUTTON_CLICKED = 6, // wParam = Radio Button ID - TDN_DIALOG_CONSTRUCTED = 7, - TDN_VERIFICATION_CLICKED = 8, // wParam = 1 if checkbox checked, 0 if not, lParam is unused and always 0 - TDN_HELP = 9, - TDN_EXPANDO_BUTTON_CLICKED = 10 // wParam = 0 (dialog is now collapsed), wParam != 0 (dialog is now expanded) -} TASKDIALOG_NOTIFICATIONS; - -typedef struct _TASKDIALOG_BUTTON -{ - int nButtonID; - PCWSTR pszButtonText; -} TASKDIALOG_BUTTON; - -typedef enum _TASKDIALOG_ELEMENTS -{ - TDE_CONTENT, - TDE_EXPANDED_INFORMATION, - TDE_FOOTER, - TDE_MAIN_INSTRUCTION -} TASKDIALOG_ELEMENTS; - -typedef enum _TASKDIALOG_ICON_ELEMENTS -{ - TDIE_ICON_MAIN, - TDIE_ICON_FOOTER -} TASKDIALOG_ICON_ELEMENTS; - -#define TD_WARNING_ICON MAKEINTRESOURCEW(-1) -#define TD_ERROR_ICON MAKEINTRESOURCEW(-2) -#define TD_INFORMATION_ICON MAKEINTRESOURCEW(-3) -#define TD_SHIELD_ICON MAKEINTRESOURCEW(-4) - - -enum _TASKDIALOG_COMMON_BUTTON_FLAGS -{ - TDCBF_OK_BUTTON = 0x0001, // selected control return value IDOK - TDCBF_YES_BUTTON = 0x0002, // selected control return value IDYES - TDCBF_NO_BUTTON = 0x0004, // selected control return value IDNO - TDCBF_CANCEL_BUTTON = 0x0008, // selected control return value IDCANCEL - TDCBF_RETRY_BUTTON = 0x0010, // selected control return value IDRETRY - TDCBF_CLOSE_BUTTON = 0x0020 // selected control return value IDCLOSE -}; -typedef int TASKDIALOG_COMMON_BUTTON_FLAGS; // Note: _TASKDIALOG_COMMON_BUTTON_FLAGS is an int - -typedef struct _TASKDIALOGCONFIG -{ - UINT cbSize; - HWND hwndParent; - HINSTANCE hInstance; // used for MAKEINTRESOURCE() strings - TASKDIALOG_FLAGS dwFlags; // TASKDIALOG_FLAGS (TDF_XXX) flags - TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons; // TASKDIALOG_COMMON_BUTTON (TDCBF_XXX) flags - PCWSTR pszWindowTitle; // string or MAKEINTRESOURCE() - union - { - HICON hMainIcon; - PCWSTR pszMainIcon; - }; - PCWSTR pszMainInstruction; - PCWSTR pszContent; - UINT cButtons; - const TASKDIALOG_BUTTON *pButtons; - int nDefaultButton; - UINT cRadioButtons; - const TASKDIALOG_BUTTON *pRadioButtons; - int nDefaultRadioButton; - PCWSTR pszVerificationText; - PCWSTR pszExpandedInformation; - PCWSTR pszExpandedControlText; - PCWSTR pszCollapsedControlText; - union - { - HICON hFooterIcon; - PCWSTR pszFooterIcon; - }; - PCWSTR pszFooter; - PFTASKDIALOGCALLBACK pfCallback; - LONG_PTR lpCallbackData; - UINT cxWidth; // width of the Task Dialog's client area in DLU's. If 0, Task Dialog will calculate the ideal width. -} TASKDIALOGCONFIG; - -WINCOMMCTRLAPI HRESULT WINAPI TaskDialogIndirect(const TASKDIALOGCONFIG *pTaskConfig, __out_opt int *pnButton, __out_opt int *pnRadioButton, __out_opt BOOL *pfVerificationFlagChecked); -WINCOMMCTRLAPI HRESULT WINAPI TaskDialog(__in_opt HWND hwndParent, __in_opt HINSTANCE hInstance, __in_opt PCWSTR pszWindowTitle, __in_opt PCWSTR pszMainInstruction, __in_opt PCWSTR pszContent, TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons, __in_opt PCWSTR pszIcon, __out_opt int *pnButton); - -#ifdef _WIN32 -#include -#endif - -#endif /* end of copy from commctrl.h */ - -typedef HRESULT (WINAPI *TaskDialogIndirectFn) (const TASKDIALOGCONFIG *pTaskConfig, __out_opt int *pnButton, __out_opt int *pnRadioButton, __out_opt BOOL *pfVerificationFlagChecked); - -typedef enum { - DIALOG_ERROR_RETRYCANCEL = 0, - DIALOG_WARNING_CANCELOK -} DialogType; - - -///////////////////////////////////////////////////////////////////////////// -// CDownloadDialog -class CDownloadDialog : - public CAxDialogImpl -{ -public: - CDownloadDialog(); - ~CDownloadDialog(); - - enum { IDD = IDD_DOWNLOAD_DIALOG }; - -BEGIN_MSG_MAP(CDownloadDialog) - MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) - MESSAGE_HANDLER(WM_TIMER, OnTimer) - MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnCtlColorStatic) - COMMAND_ID_HANDLER(IDOK, OnOK) - COMMAND_ID_HANDLER(IDCANCEL, OnCancel) -END_MSG_MAP() - - LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); - LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); - LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); - LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); - LRESULT OnCtlColorStatic(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); - - STDMETHODIMP OnStartBinding(); - - STDMETHODIMP OnProgress(ULONG ulProgress); - - void initDialogText(LPCTSTR pszDownloadURL, LPCTSTR pszBundleName); - - BOOL isDownloading(); - BOOL isDownloadCancelled(); - - void addToTotalContentLength(DWORD contentLength); - - void decrementProgressMax(ULONG contentLength, ULONG readSoFar); - - void bundleInstallStart(); - void bundleInstallComplete(); - - void waitUntilInitialized(); - - void log(char *msg); - void logProgress(); - - void setFile(LPCTSTR pszFileName) - { - m_pszFileName = pszFileName; - } - - void setURL(LPCTSTR pszURL) - { - m_pszURL = pszURL; - } - - void setNameText(LPTSTR pszNameText) - { - m_pszNameText = pszNameText; - } - - - JNIEnv* getJNIEnv(); - - - void setJavaVM(JavaVM *jvm) - { - m_jvm = jvm; - } - - - HRESULT DownloadConfiguration(LPTSTR pszConfigURL, LPTSTR pszConfigFile); - - void delayedDoModal(); - - int SafeMessageBox(UINT details, UINT mainInstruction, UINT caption, - DialogType type, LPCWSTR instructionArg = NULL, - LPCWSTR detailsArg = NULL); - - void destroyDialog(); - - private: - - HFONT CreateDialogFont (HDC hdc, LPCTSTR lpszFaceName, int ptSize, int isBold = 0); - void FreeGDIResources (); - - BOOL m_feedbackOnCancel; - TaskDialogIndirectFn taskDialogFn; - LPCTSTR m_pszFileName; - LPCTSTR m_pszURL; - time_t m_startTime; - ULONG m_ulProgress; - ULONG m_ulProgressMax; - int m_iProgressFactor; - int m_iMaxProgressFactor; - int m_numDownloadThreadsRunning; - BOOL m_destroyWindowTimerStarted; - volatile BOOL m_dialogUp; - CComAutoCriticalSection m_csDownload; - CComAutoCriticalSection m_csNumDownloadThreads; - HANDLE m_hCancelEvent; - HANDLE m_hDownloadThreadExitEvent; - HANDLE m_hDialogInitializedEvent; - HFONT m_hMastheadFont; - HFONT m_hDialogFont; - HFONT m_hSixPointFont; - LPTSTR m_pszNameText; - BITMAP m_bmMasthead; - HBITMAP m_hBitmap; - HDC m_hMemDC; - TCHAR m_szUrlPath[BUFFER_SIZE]; - TCHAR m_szHostName[BUFFER_SIZE]; - JavaVM* m_jvm; - CComAutoCriticalSection m_csMessageBox; -}; - -#endif //__DOWNLOADDIALOG_H_ diff --git a/jdk/src/windows/native/sun/jkernel/DownloadHelper.cpp b/jdk/src/windows/native/sun/jkernel/DownloadHelper.cpp deleted file mode 100644 index e61ed4851fe..00000000000 --- a/jdk/src/windows/native/sun/jkernel/DownloadHelper.cpp +++ /dev/null @@ -1,655 +0,0 @@ -/* - * Copyright (c) 2008, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#define STRICT -#ifndef _WIN32_WINNT -/* REMIND : 0x500 means Windows 2000 .. seems like we can update - * for Windows XP when we move the SDK and build platform - */ -#define _WIN32_WINNT 0x0500 -#endif -#define _ATL_APARTMENT_THREADED - - -#include -//You may derive a class from CComModule and use it if you want to override -//something, but do not change the name of _Module -extern CComModule _Module; -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "resource.h" // main symbols -#include "DownloadHelper.h" - -DownloadHelper::DownloadHelper() { - - m_showProgressDialog = TRUE; - m_pszURL = NULL; - m_pszFileName = NULL; - m_pszNameText = NULL; -} - -DownloadHelper::~DownloadHelper() { - -} - -HRESULT DownloadHelper::doDownload() { - return DownloadFile(m_pszURL, m_pszFileName, FALSE, m_showProgressDialog); -} - -HRESULT DownloadHelper::DownloadFile(const TCHAR* szURL, - const TCHAR* szLocalFile, BOOL bResumable, BOOL bUIFeedback) { - HINTERNET hOpen = NULL; - HINTERNET hConnect = NULL; - HINTERNET hRequest = NULL; - HANDLE hFile = INVALID_HANDLE_VALUE; - DWORD dwDownloadError = 0; - DWORD nContentLength = 0; - - /* Some of error messages use drive letter. - Result is something like "(C:)". - NB: Parentheses are added here because in some other places - we same message but can not provide disk label info */ - TCHAR drivePath[5]; - /* assuming szLocalFile is not NULL */ - _sntprintf(drivePath, 5, "(%c:)", szLocalFile[0]); - WCHAR* wName = CT2CW(drivePath); - - __try { - m_csDownload.Lock(); - - time(&m_startTime); - - } - __finally { - m_csDownload.Unlock(); - } - - __try { - // block potential security hole - if (strstr(szURL, TEXT("file://")) != NULL) { - dwDownloadError = 1; - __leave; - } - - HWND hProgressInfo = NULL; - TCHAR szStatus[BUFFER_SIZE]; - - if (bUIFeedback) { - // init download dialg text - m_dlg->initDialogText(m_pszURL, m_pszNameText); - } - - // Open Internet Call - hOpen = ::InternetOpen("deployHelper", INTERNET_OPEN_TYPE_PRECONFIG, - NULL, NULL, NULL); - - if (hOpen == NULL) { - dwDownloadError = 1; - __leave; - } - - // URL components - URL_COMPONENTS url_components; - ::ZeroMemory(&url_components, sizeof(URL_COMPONENTS)); - - TCHAR szHostName[BUFFER_SIZE], szUrlPath[BUFFER_SIZE], - szExtraInfo[BUFFER_SIZE]; - url_components.dwStructSize = sizeof(URL_COMPONENTS); - url_components.lpszHostName = szHostName; - url_components.dwHostNameLength = BUFFER_SIZE; - url_components.nPort = NULL; - url_components.lpszUrlPath = szUrlPath; - url_components.dwUrlPathLength = BUFFER_SIZE; - url_components.lpszExtraInfo = szExtraInfo; - url_components.dwExtraInfoLength = BUFFER_SIZE; - - // Crack the URL into pieces - ::InternetCrackUrl(szURL, lstrlen(szURL), NULL, &url_components); - - // Open Internet Connection - hConnect = ::InternetConnect(hOpen, url_components.lpszHostName, - url_components.nPort, "", "", INTERNET_SERVICE_HTTP, NULL, - NULL); - - if (hConnect == NULL) { - dwDownloadError = 1; - __leave; - } - - // Determine the relative URL path by combining - // Path and ExtraInfo - char szURL[4096]; - - if (url_components.dwUrlPathLength != 0) - lstrcpy(szURL, url_components.lpszUrlPath); - else - lstrcpy(szURL, "/"); - - if (url_components.dwExtraInfoLength != 0) - lstrcat(szURL, url_components.lpszExtraInfo); - - BOOL bRetryHttpRequest = FALSE; - int numberOfRetry = 0; - long secondsToWait = 60; - - do { - bRetryHttpRequest = FALSE; - - // Make a HTTP GET request - hRequest = ::HttpOpenRequest(hConnect, "GET", szURL, "HTTP/1.1", - "", NULL, - INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_DONT_CACHE, - 0); - - if (hRequest == NULL) { - dwDownloadError = 1; - __leave; - } - - // Create or open existing destination file - hFile = ::CreateFile(szLocalFile, GENERIC_WRITE, 0, NULL, - OPEN_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL); - - if (hFile == INVALID_HANDLE_VALUE) { - if (bUIFeedback) { - if (IDRETRY == m_dlg->SafeMessageBox( - IDS_DISK_WRITE_ERROR, - IDS_DISK_WRITE_ERROR_CAPTION, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL, - wName)) { - bRetryHttpRequest = TRUE; - continue; - } - } - dwDownloadError = 1; - __leave; - } - DWORD fileSize = GetFileSize(hFile, NULL); - - // Check if resumable download is enabled - if (bResumable == FALSE) { - // Start from scratch - fileSize = 0; - } - - FILETIME tWrite; - BOOL rangereq = FALSE; - if ((fileSize != 0) && (fileSize != 0xFFFFFFFF) && - GetFileTime(hFile, NULL, NULL, &tWrite)) { - char szHead[100]; - SYSTEMTIME tLocal; - char buf[INTERNET_RFC1123_BUFSIZE]; - - FileTimeToSystemTime(&tWrite, &tLocal); - InternetTimeFromSystemTime(&tLocal, INTERNET_RFC1123_FORMAT, - buf, INTERNET_RFC1123_BUFSIZE); - sprintf(szHead, "Range: bytes=%d-\r\nIf-Range: %s\r\n", - fileSize, buf); - HttpAddRequestHeaders(hRequest, szHead, lstrlen(szHead), - HTTP_ADDREQ_FLAG_ADD|HTTP_ADDREQ_FLAG_REPLACE); - rangereq = TRUE; - } - - // This is a loop to handle various potential error when the - // connection is made - BOOL bCont = TRUE; - - while ((FALSE == ::HttpSendRequest(hRequest, NULL, NULL, NULL, NULL)) - && bCont ) { - // We might have an invalid CA. - DWORD dwErrorCode = GetLastError(); - - switch(dwErrorCode) { - case E_JDHELPER_TIMEOUT: - case E_JDHELPER_NAME_NOT_RESOLVED: - case E_JDHELPER_CANNOT_CONNECT: { - bCont = FALSE; - // Display the information dialog - if (bUIFeedback) { - // decrement download counter to prevent progress - // dialog from popping up while the message box is - // up - m_dlg->bundleInstallComplete(); - if (dwErrorCode == E_JDHELPER_TIMEOUT) { - bRetryHttpRequest = - (IDRETRY == m_dlg->SafeMessageBox( - IDS_HTTP_STATUS_REQUEST_TIMEOUT, - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL)); - } else { - bRetryHttpRequest = - (IDRETRY == m_dlg->SafeMessageBox( - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE, - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL)); - } - // re-increment counter because it will be decremented - // again upon return - m_dlg->bundleInstallStart(); - bCont = bRetryHttpRequest; - } - break; - } - case ERROR_INTERNET_INVALID_CA: - case ERROR_INTERNET_SEC_CERT_CN_INVALID: - case ERROR_INTERNET_SEC_CERT_DATE_INVALID: - case ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR: - case ERROR_INTERNET_INCORRECT_PASSWORD: - case ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED: - default: { - // Unless the user agrees to continue, we just - // abandon now ! - bCont = FALSE; - - // Make sure to test the return code from - // InternetErrorDlg user may click OK or Cancel. In - // case of Cancel, request should not be resubmitted - if (bUIFeedback) { - if (ERROR_SUCCESS == ::InternetErrorDlg( - NULL, hRequest, - dwErrorCode, - FLAGS_ERROR_UI_FILTER_FOR_ERRORS | - FLAGS_ERROR_UI_FLAGS_GENERATE_DATA | - FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS, - NULL)) - bCont = TRUE; - } - } - } - } - - if (bCont == FALSE) { - // User has denied the request - dwDownloadError = 1; - __leave; - } - - // - // Read HTTP status code - // - DWORD dwErrorCode = GetLastError(); - DWORD dwStatus=0; - DWORD dwStatusSize = sizeof(DWORD); - - if (FALSE == ::HttpQueryInfo(hRequest, HTTP_QUERY_FLAG_NUMBER | - HTTP_QUERY_STATUS_CODE, &dwStatus, &dwStatusSize, NULL)) { - dwErrorCode = GetLastError(); - } - - bCont = TRUE; - while ((dwStatus == HTTP_STATUS_PROXY_AUTH_REQ || - dwStatus == HTTP_STATUS_DENIED) && - bCont) { - int result = ::InternetErrorDlg(GetDesktopWindow(), hRequest, ERROR_INTERNET_INCORRECT_PASSWORD, - FLAGS_ERROR_UI_FILTER_FOR_ERRORS | - FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS | - FLAGS_ERROR_UI_FLAGS_GENERATE_DATA, - NULL); - if (ERROR_CANCELLED == result) { - bCont = FALSE; - } - else { - ::HttpSendRequest(hRequest, NULL, 0, NULL, 0); - - // Reset buffer length - dwStatusSize = sizeof(DWORD); - - ::HttpQueryInfo(hRequest, HTTP_QUERY_FLAG_NUMBER | - HTTP_QUERY_STATUS_CODE, &dwStatus, &dwStatusSize, - NULL); - } - } - - if (dwStatus == HTTP_STATUS_OK || - dwStatus == HTTP_STATUS_PARTIAL_CONTENT) { - // Determine content length, so we may show the progress bar - // meaningfully - // - nContentLength = 0; - DWORD nLengthSize = sizeof(DWORD); - ::HttpQueryInfo(hRequest, - HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, - &nContentLength, &nLengthSize, NULL); - - if (nContentLength <= 0) { - // If can't estimate content length, estimate it - // to be 6MB - nContentLength = 15000000; - } - else if (rangereq && (fileSize != 0) && - (nContentLength == fileSize)) { - // If the file is already downloaded completely and then - // we send a range request, the whole file is sent instead - // of nothing. So avoid downloading again. - // Some times return value is 206, even when whole file - // is sent. So check if "Content-range:" is present in the - // reply - char buffer[256]; - DWORD length = sizeof(buffer); - if(!HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_RANGE, - buffer, &length, NULL)) { - if(HttpQueryInfo(hRequest, HTTP_QUERY_LAST_MODIFIED, - buffer, &length, NULL)) { - SYSTEMTIME systime; - FILETIME filtime; - InternetTimeToSystemTime(buffer, &systime, NULL); - SystemTimeToFileTime(&systime, &filtime); - if ((CompareFileTime(&tWrite, &filtime)) == 1) { - // no need to download - dwDownloadError = 0; - __leave; - } - } - else { - ::SetFilePointer(hFile, 0, 0, FILE_BEGIN); - ::SetEndOfFile(hFile); // truncate the file - } - } - - } - - TCHAR szBuffer[8096]; - DWORD dwBufferSize = 8096; - - // Read from HTTP connection and write into - // destination file - // - DWORD nRead = 0; - DWORD dwTotalRead = 0; - BOOL bCancel = FALSE; - - if (dwStatus == HTTP_STATUS_PARTIAL_CONTENT) { - // If we are using resumable download, fake - // start time so it looks like we have begun - // the download several minutes again. - // - m_startTime = m_startTime - 100; - - ::SetFilePointer(hFile, 0, 0, FILE_END); // seek to end - } - else { - ::SetFilePointer(hFile, 0, 0, FILE_BEGIN); - ::SetEndOfFile(hFile); // truncate the file - } - - do { - nRead=0; - - if (::InternetReadFile(hRequest, szBuffer, dwBufferSize, - &nRead)) { - if (nRead) { - DWORD dwNumberOfBytesWritten = NULL; - - BOOL ret = WriteFile(hFile, szBuffer, nRead, - &dwNumberOfBytesWritten, NULL); - - if (!ret) { - // WriteFile failed - if (bUIFeedback) { - if (GetLastError() == ERROR_DISK_FULL) { - bRetryHttpRequest = - (IDRETRY == m_dlg->SafeMessageBox( - IDS_DISK_FULL_ERROR, - IDS_DISK_FULL_ERROR_CAPTION, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL, - wName)); - } else { - bRetryHttpRequest = - (IDRETRY == m_dlg->SafeMessageBox( - IDS_DISK_WRITE_ERROR, - IDS_DISK_WRITE_ERROR_CAPTION, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL, - wName)); - } - if (!bRetryHttpRequest) { - dwDownloadError = 1; - break; - } - } - continue; - } - } - - dwTotalRead += nRead; - - // update download progress dialog - m_dlg->OnProgress(nRead); - // Check if download has been cancelled - if (m_dlg->isDownloadCancelled()) { - m_dlg->decrementProgressMax(nContentLength, - dwTotalRead); - bCancel = TRUE; - break; - } - - } - else { - bCancel = TRUE; - break; - } - } - while (nRead); - - - if (bCancel) { - // User has cancelled the operation or InternetRead failed - // don't do return here, we need to cleanup - dwDownloadError = 1; - __leave; - } - } - else if (dwStatus == 416 && (fileSize != 0) && - (fileSize != 0xFFFFFFFF)) { - // This error could be returned, When the full file exists - // and a range request is sent with range beyond filessize. - // The best way to fix this is in future is, to send HEAD - // request and get filelength before sending range request. - dwDownloadError = 0; - __leave; - } - else if (dwStatus == 403) { // Forbidden from Akamai means we need to get a new download token - JNIEnv *env = m_dlg->getJNIEnv(); - jclass exceptionClass = env->FindClass("java/net/HttpRetryException"); - if (exceptionClass == NULL) { - /* Unable to find the exception class, give up. */ - __leave; - } - jmethodID constructor; - constructor = env->GetMethodID(exceptionClass, - "", "(Ljava/lang/String;I)V"); - if (constructor != NULL) { - jobject exception = env->NewObject(exceptionClass, - constructor, env->NewStringUTF("Forbidden"), - 403); - env->Throw((jthrowable) exception); - } - __leave; - } - else if(dwStatus >= 400 && dwStatus < 600) { - /* NB: Following case seems to be never used! - - HTTP_STATUS_FORBIDDEN is the same as 403 and - 403 was specially handled few lines above! */ - if (dwStatus == HTTP_STATUS_FORBIDDEN) { - if (bUIFeedback) { - bRetryHttpRequest = (IDRETRY == m_dlg->SafeMessageBox( - IDS_HTTP_STATUS_FORBIDDEN, - IDS_HTTP_INSTRUCTION_FORBIDDEN, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL, - L"403")); - } - } - else if (dwStatus == HTTP_STATUS_SERVER_ERROR) { - if (bUIFeedback) { - bRetryHttpRequest = (IDRETRY == m_dlg->SafeMessageBox( - IDS_HTTP_STATUS_SERVER_ERROR, - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL, - L"500")); - } - } - else if (dwStatus == HTTP_STATUS_SERVICE_UNAVAIL) { - if (numberOfRetry < 5) { - // If the server is busy, automatically retry - - // We wait couple seconds before retry to avoid - // congestion - for (long i = (long) secondsToWait; i >= 0; i--) { - // Update status - if (bUIFeedback) { - char szBuffer[BUFFER_SIZE]; - ::LoadString(_Module.GetResourceInstance(), - IDS_DOWNLOAD_STATUS_RETRY, szStatus, - BUFFER_SIZE); - wsprintf(szBuffer, szStatus, i); - - ::SetWindowText(hProgressInfo, szBuffer); - } - - // Sleep 1 second - ::Sleep(1000); - } - - // We use a semi-binary backoff algorithm to - // determine seconds to wait - numberOfRetry += 1; - secondsToWait = secondsToWait + 30; - bRetryHttpRequest = TRUE; - - continue; - } - else { - if (bUIFeedback) { - bRetryHttpRequest = (IDRETRY == m_dlg->SafeMessageBox( - IDS_HTTP_STATUS_SERVICE_UNAVAIL, - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL, - L"503")); - - if (bRetryHttpRequest) { - numberOfRetry = 0; - secondsToWait = 60; - continue; - } - } - } - } - else { - if (bUIFeedback) { - WCHAR szBuffer[10]; - _snwprintf(szBuffer, 10, L"%d", dwStatus); - bRetryHttpRequest = (IDRETRY == m_dlg->SafeMessageBox( - IDS_HTTP_STATUS_OTHER, - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL, - szBuffer)); - } - } - if (!bRetryHttpRequest) { - dwDownloadError = 1; - } - } - else { - if (bUIFeedback) { - WCHAR szBuffer[10]; - _snwprintf(szBuffer, 10, L"%d", dwStatus); - bRetryHttpRequest = (IDRETRY == m_dlg->SafeMessageBox( - IDS_HTTP_STATUS_OTHER, - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL, - szBuffer)); - } - if (!bRetryHttpRequest) { - dwDownloadError = 1; - } - } - - - - // Close HTTP request - // - // This is necessary if the HTTP request - // is retried - if (hRequest) - ::InternetCloseHandle(hRequest); - if (hFile != INVALID_HANDLE_VALUE) { - ::CloseHandle(hFile); - hFile = INVALID_HANDLE_VALUE; - } - } - while (bRetryHttpRequest); - } - __finally { - if (hRequest) - ::InternetCloseHandle(hRequest); - - if (hConnect) - ::InternetCloseHandle(hConnect); - - if (hOpen) - ::InternetCloseHandle(hOpen); - - if (hFile != INVALID_HANDLE_VALUE) - ::CloseHandle(hFile); - } - - - - // Exit dialog - if (dwDownloadError == 0) { - return S_OK; - } else { - DeleteFile(szLocalFile); - return E_FAIL; - } -} diff --git a/jdk/src/windows/native/sun/jkernel/DownloadHelper.h b/jdk/src/windows/native/sun/jkernel/DownloadHelper.h deleted file mode 100644 index ab7466b9813..00000000000 --- a/jdk/src/windows/native/sun/jkernel/DownloadHelper.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -#ifndef BUFFER_SIZE -#define BUFFER_SIZE 2048 -#endif - -#define E_JDHELPER_TIMEOUT 12002 -#define E_JDHELPER_NAME_NOT_RESOLVED 12007 -#define E_JDHELPER_CANNOT_CONNECT 12029 - -#include -#include "DownloadDialog.h" - -class DownloadHelper { -public: - DownloadHelper(); - ~DownloadHelper(); - - HRESULT doDownload(); - - void setFile(LPCTSTR pszFileName) { - m_pszFileName = pszFileName; - } - - void setURL(LPCTSTR pszURL) { - m_pszURL = pszURL; - } - - void setNameText(LPTSTR pszNameText) { - m_pszNameText = pszNameText; - } - - void setShowProgressDialog(BOOL showProgress) { - m_showProgressDialog = showProgress; - } - - void setDownloadDialog(CDownloadDialog* dialog) { - m_dlg = dialog; - } - - void setJavaVM(JavaVM *jvm) { - m_jvm = jvm; - } - -private: - HRESULT DownloadFile(const TCHAR* szURL, const TCHAR* szLocalFile, - BOOL bResumable, BOOL bUIFeedback); - - BOOL m_showProgressDialog; - LPCTSTR m_pszURL; - LPCTSTR m_pszFileName; - LPTSTR m_pszNameText; - time_t m_startTime; - CComAutoCriticalSection m_csDownload; - CDownloadDialog* m_dlg; - JavaVM* m_jvm; -}; diff --git a/jdk/src/windows/native/sun/jkernel/graphics/bullet.bmp b/jdk/src/windows/native/sun/jkernel/graphics/bullet.bmp deleted file mode 100644 index f54142bcf19..00000000000 Binary files a/jdk/src/windows/native/sun/jkernel/graphics/bullet.bmp and /dev/null differ diff --git a/jdk/src/windows/native/sun/jkernel/graphics/cautionshield32.bmp b/jdk/src/windows/native/sun/jkernel/graphics/cautionshield32.bmp deleted file mode 100644 index 01f82f4dfff..00000000000 Binary files a/jdk/src/windows/native/sun/jkernel/graphics/cautionshield32.bmp and /dev/null differ diff --git a/jdk/src/windows/native/sun/jkernel/graphics/java-icon.ico b/jdk/src/windows/native/sun/jkernel/graphics/java-icon.ico deleted file mode 100644 index f98f7808939..00000000000 Binary files a/jdk/src/windows/native/sun/jkernel/graphics/java-icon.ico and /dev/null differ diff --git a/jdk/src/windows/native/sun/jkernel/graphics/masthead.bmp b/jdk/src/windows/native/sun/jkernel/graphics/masthead.bmp deleted file mode 100644 index f4fa2a8f1a8..00000000000 Binary files a/jdk/src/windows/native/sun/jkernel/graphics/masthead.bmp and /dev/null differ diff --git a/jdk/src/windows/native/sun/jkernel/graphics/warningmasthead.bmp b/jdk/src/windows/native/sun/jkernel/graphics/warningmasthead.bmp deleted file mode 100644 index 65b2a3246ae..00000000000 Binary files a/jdk/src/windows/native/sun/jkernel/graphics/warningmasthead.bmp and /dev/null differ diff --git a/jdk/src/windows/native/sun/jkernel/kernel.cpp b/jdk/src/windows/native/sun/jkernel/kernel.cpp deleted file mode 100644 index 6ccf4addd2a..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel.cpp +++ /dev/null @@ -1,1621 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -#define _WIN32_WINNT 0x0500 -#define WINVER 0x0500 - -#include "stdafx.h" -#include -#include -#include - -CComModule _Module; - -#include -#include -#include -#include "Windows.h" -#include "WinNT.h" -#include -#include "DownloadDialog.h" -#include "DownloadHelper.h" -#include "kernel.h" -#include "sun_jkernel_DownloadManager.h" -#include "sun_jkernel_Bundle.h" -#include "sun_jkernel_Mutex.h" -#include "sun_jkernel_BackgroundDownloader.h" -#include -#include -#include -#include -#include -#include -#include -#include - -BOOL IsPlatformWindowsVista(); - -#define BUFSIZE 4096 - -#define JBROKERPIPE "\\\\.\\pipe\\jbrokerpipe" -#define JREMAINKEY "SOFTWARE\\JavaSoft\\Java Runtime Environment" -#define JRE_VERSION_REGISTRY_KEY JREMAINKEY "\\" VERSION -#define ReleaseAndClose(mutex) \ - if (mutex != NULL) { \ - ReleaseMutex(mutex); \ - CloseHandle(mutex); \ - mutex = NULL; \ - } - -#define KERNEL_DEBUG false - -// used to inform kernel that we believe it is running in high integrity -#define JBROKER_KEY "-Dkernel.spawned.from.jbroker=true -Dkernel.background.download=false" - -// this is only available on Vista SDK, hard code it here for now -#define LABEL_SECURITY_INFORMATION (0x00000010L) - -// The LABEL_SECURITY_INFORMATION SDDL SACL to be set for low integrity -LPCSTR LOW_INTEGRITY_SDDL_SACL = "S:(ML;;NW;;;LW)"; - -CDownloadDialog dlg; -BOOL createDialog = TRUE; - -CComAutoCriticalSection m_csCreateDialog; - -typedef BOOL (WINAPI *LPFNInitializeSecurityDescriptor)( - PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision); -typedef BOOL (WINAPI *LPFNSetSecurityDescriptorDacl)( - PSECURITY_DESCRIPTOR pSecurityDescriptor, BOOL bDaclPresent, PACL pDacl, - BOOL bDaclDefaulted); - -typedef BOOL (WINAPI *LPFNConvertStringSecurityDescriptorToSecurityDescriptorA)( - LPCSTR StringSecurityDescriptor, DWORD StringSDRevision, - PSECURITY_DESCRIPTOR* SecurityDescriptor, - PULONG SecurityDescriptorSize); - -typedef BOOL (WINAPI *LPFNGetSecurityDescriptorSacl)( - PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbSaclPresent, - PACL* pSacl, LPBOOL lpbSaclDefaulted); - -typedef DWORD (WINAPI *LPFNSetSecurityInfo)(HANDLE handle, - SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, - PSID psidOwner, PSID psidGroup, PACL pDacl, PACL pSacl); - -BOOL APIENTRY DllMain( HANDLE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved - ) -{ - return TRUE; -} - -char* getStringPlatformChars(JNIEnv* env, jstring jstr) { - char *result = NULL; - size_t len; - const jchar* utf16 = env->GetStringChars(jstr, NULL); - len = wcstombs(NULL, (const wchar_t*)utf16, env->GetStringLength(jstr) * 4) + 1; - if (len == -1) - return NULL; - result = (char*) malloc(len); - if (wcstombs(result, (const wchar_t*)utf16, len) == -1) - return NULL; - env->ReleaseStringChars(jstr, utf16); - return result; -} - -bool SetObjectToLowIntegrity ( HANDLE hObject, - SE_OBJECT_TYPE type = SE_KERNEL_OBJECT ) { - - bool bRet = false; - DWORD dwErr = ERROR_SUCCESS; - PSECURITY_DESCRIPTOR pSD = NULL; - PACL pSacl = NULL; - BOOL fSaclPresent = FALSE; - BOOL fSaclDefaulted = FALSE; - - // initialize function pointers - HMODULE hModule = LoadLibrary("Advapi32.dll"); - - // ConvertStringSecurityDescriptorToSecurityDescriptorA - LPFNConvertStringSecurityDescriptorToSecurityDescriptorA - lpfnConvertStringSecurityDescriptorToSecurityDescriptorA = - (LPFNConvertStringSecurityDescriptorToSecurityDescriptorA)GetProcAddress( - hModule, - "ConvertStringSecurityDescriptorToSecurityDescriptorA"); - - // GetSecurityDescriptorSacl - LPFNGetSecurityDescriptorSacl lpfnGetSecurityDescriptorSacl = - (LPFNGetSecurityDescriptorSacl)GetProcAddress(hModule, - "GetSecurityDescriptorSacl"); - - // SetSecurityInfo - LPFNSetSecurityInfo lpfnSetSecurityInfo = - (LPFNSetSecurityInfo)GetProcAddress(hModule, - "SetSecurityInfo"); - - if (lpfnConvertStringSecurityDescriptorToSecurityDescriptorA == NULL || - lpfnGetSecurityDescriptorSacl == NULL || - lpfnSetSecurityInfo == NULL) { - if (KERNEL_DEBUG) { - printf("Fail to initialize function pointer\n"); - } - FreeLibrary(hModule); - return FALSE; - } - - // Set object to lower integrity - if ( lpfnConvertStringSecurityDescriptorToSecurityDescriptorA( - LOW_INTEGRITY_SDDL_SACL, SDDL_REVISION_1, &pSD, NULL ) ) { - if ( lpfnGetSecurityDescriptorSacl( - pSD, &fSaclPresent, &pSacl, &fSaclDefaulted ) ) { - dwErr = lpfnSetSecurityInfo( - hObject, type, LABEL_SECURITY_INFORMATION, - NULL, NULL, NULL, pSacl ); - - bRet = (ERROR_SUCCESS == dwErr); - } - - LocalFree( pSD ); - } - - FreeLibrary(hModule); - return bRet; -} - - -JNIEXPORT jlong JNICALL Java_sun_jkernel_Mutex_createNativeMutex - (JNIEnv *env , jclass cls, jstring id) { - SECURITY_ATTRIBUTES sa; - PSECURITY_DESCRIPTOR pSD = NULL; - BOOL saInitialized = FALSE; - - // initialize function pointers - HMODULE hModule = LoadLibrary("Advapi32.dll"); - - // InitializeSecurityDescriptor - LPFNInitializeSecurityDescriptor lpfnInitializeSecurityDescriptor = - (LPFNInitializeSecurityDescriptor)GetProcAddress(hModule, - "InitializeSecurityDescriptor"); - - // SetSecurityDescriptorDacl - LPFNSetSecurityDescriptorDacl lpfnSetSecurityDescriptorDacl = - (LPFNSetSecurityDescriptorDacl)GetProcAddress(hModule, - "SetSecurityDescriptorDacl"); - - if (lpfnInitializeSecurityDescriptor != NULL && - lpfnSetSecurityDescriptorDacl != NULL) { - - // Initialize a security descriptor. - pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR, - SECURITY_DESCRIPTOR_MIN_LENGTH); - if (NULL == pSD) { - if (KERNEL_DEBUG) { - printf("LocalAlloc Error %u\n", GetLastError()); - } - FreeLibrary(hModule); - return NULL; - } - - if (!lpfnInitializeSecurityDescriptor(pSD, - SECURITY_DESCRIPTOR_REVISION)) { - if (KERNEL_DEBUG) { - printf("InitializeSecurityDescriptor Error %u\n", GetLastError()); - } - FreeLibrary(hModule); - return NULL; - - } - // Add the ACL to the security descriptor. - if (!lpfnSetSecurityDescriptorDacl(pSD, - TRUE, // bDaclPresent flag - NULL, // NULL DACL is assigned to the security descriptor, - // which allows all access to the object. - // This is to allow the mutex to be accessbile by - // all users; The background downloader launched - // by the installer will be running as SYSTEM user; - // while other java process started by the current - // user will be running as the current username. - FALSE)) // not a default DACL - { - if (KERNEL_DEBUG) { - printf("SetSecurityDescriptorDacl Error %u\n", - GetLastError()); - } - FreeLibrary(hModule); - return NULL; - } - - // Initialize a security attributes structure. - sa.nLength = sizeof (SECURITY_ATTRIBUTES); - sa.lpSecurityDescriptor = pSD; - sa.bInheritHandle = FALSE; - - saInitialized = TRUE; - FreeLibrary(hModule); - } - - HANDLE m = CreateMutex(saInitialized ? &sa : NULL, FALSE, - (LPCSTR) getStringPlatformChars(env, id)); - if (m == NULL) { - if (KERNEL_DEBUG) { - printf("CreateMutex Error %u\n", GetLastError()); - } - } - - // set the mutex object to low integrity on vista, so the mutex - // can be accessed by different integrity level - if (IsPlatformWindowsVista()) { - if (!SetObjectToLowIntegrity(m)) { - if (KERNEL_DEBUG) { - printf("Fail to set Mutex object to low integrity\n"); - } - } - } - return (jlong)m ; -} - - -HANDLE getMutexHandle(JNIEnv *env, jobject mutex) { - jfieldID handle = env->GetFieldID(env->GetObjectClass(mutex), "handle", "J"); - return (HANDLE) env->GetLongField(mutex, handle); -} - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_Mutex_acquire__I - (JNIEnv *env, jobject mutex, jint timeout) { - HANDLE hmutex = getMutexHandle(env, mutex); - if (hmutex != NULL) { - int result = WaitForSingleObject(hmutex, timeout); - if (result == WAIT_ABANDONED) - result = WaitForSingleObject(hmutex, timeout); - return (result == WAIT_OBJECT_0); - } - else - return false; -} - -void ThrowByName(JNIEnv *env, const char *name, const char *msg) { - jclass cls = env->FindClass(name); - /* if cls is NULL, an exception has already been thrown */ - if (cls != NULL) { - env->ThrowNew(cls, msg); - } - /* free the local ref */ - env->DeleteLocalRef(cls); -} - -JNIEXPORT void JNICALL Java_sun_jkernel_Mutex_acquire__ - (JNIEnv *env, jobject mutex) { - if (!Java_sun_jkernel_Mutex_acquire__I(env, mutex, INFINITE)) { - // failed to acquire mutex, most likely because it was already disposed - ThrowByName(env, "java/lang/IllegalStateException", - "error acquiring mutex"); - } -} - -JNIEXPORT void JNICALL Java_sun_jkernel_Mutex_release - (JNIEnv *env, jobject mutex) { - HANDLE hmutex = getMutexHandle(env, mutex); - if (hmutex != NULL) - ReleaseMutex(hmutex); - else - ThrowByName(env, "java/lang/IllegalStateException", - "releasing disposed mutex"); -} - -JNIEXPORT void JNICALL Java_sun_jkernel_Mutex_destroyNativeMutex - (JNIEnv *env, jobject mutex) { - HANDLE hmutex = getMutexHandle(env, mutex); - if (hmutex != NULL) { - Java_sun_jkernel_Mutex_release(env, mutex); - CloseHandle(hmutex); - } -} - -void createDownloadWindowProc(LPVOID lpParameter) { - CDownloadDialog* pDlg = (CDownloadDialog *) lpParameter; - - pDlg->delayedDoModal(); - - // dialog destroyed, need to create a new one next time - createDialog = TRUE; -} - - -void createDownloadWindow(LPVOID lpParameter) { - // Create a new thread for download window - DWORD dwThreadId = NULL; - ::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) createDownloadWindowProc, lpParameter, 0, &dwThreadId); -} - -JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_bundleInstallComplete - (JNIEnv *env, jclass dm) { - dlg.bundleInstallComplete(); -} - -JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_bundleInstallStart - (JNIEnv *env, jclass dm) { - - dlg.bundleInstallStart(); -} - -typedef HRESULT (WINAPI *LPFNIEIsProtectedModeProcess)(BOOL *pbResult); - -BOOL isRunningIEProtectedMode() { - - HMODULE hModule = NULL; - LPFNIEIsProtectedModeProcess lpfnIEIsProtectedModeProcess; - - __try { - hModule = LoadLibrary("ieframe.dll"); - if (hModule != NULL) { - - lpfnIEIsProtectedModeProcess = (LPFNIEIsProtectedModeProcess) - GetProcAddress(hModule, "IEIsProtectedModeProcess"); - - if (lpfnIEIsProtectedModeProcess != NULL) { - BOOL bProtectedMode = FALSE; - HRESULT hr = lpfnIEIsProtectedModeProcess(&bProtectedMode); - if ( SUCCEEDED(hr) && bProtectedMode ) { - // IE is running in protected mode - return TRUE; - } else { - // IE isn't running in protected mode - return FALSE; - } - } - } - } __finally { - if (hModule != NULL) { - FreeLibrary(hModule); - } - } - return FALSE; -} - -/* Return TRUE if current running platform is Windows Vista, FALSE otherwise */ -BOOL IsPlatformWindowsVista() { - static BOOL initialized = FALSE; - static BOOL isVista = FALSE; - OSVERSIONINFO osvi; - - if (initialized) { - return isVista; - } - - // Initialize the OSVERSIONINFO structure. - ZeroMemory( &osvi, sizeof( osvi ) ); - osvi.dwOSVersionInfoSize = sizeof( osvi ); - - GetVersionEx( &osvi ); // Assume this function succeeds. - - if ( osvi.dwPlatformId == VER_PLATFORM_WIN32_NT && - osvi.dwMajorVersion == 6 ) { - isVista = TRUE; - } else { - isVista = FALSE; - } - - initialized = TRUE; - - return isVista; -} - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_isIEProtectedMode - (JNIEnv *env, jclass dm) { - - if (isRunningIEProtectedMode()) { - return TRUE; - } - return FALSE; -} - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_isWindowsVista - (JNIEnv *env, jclass dm) { - - if (IsPlatformWindowsVista()) { - return TRUE; - } - return FALSE; -} - -int sendMessageToBroker(const char * message) { - char ackString[1024]; - HANDLE hp = INVALID_HANDLE_VALUE; - - while (hp == INVALID_HANDLE_VALUE) { - hp = CreateNamedPipe(_T(JBROKERPIPE), - PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE , - PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, - 1, // number of pipes that can exist - 1024, // output buffer - 1024, // input buffer - 0, // timeout - NULL); // security attributes - - if (hp == INVALID_HANDLE_VALUE) { - DWORD err = GetLastError(); - // we only allow one instance of the pipe; if the instance - // already exists, we will get ERROR_ACCESS_DENIED, which means - // some other process is using the pipe, so let's try again - if (err != ERROR_ACCESS_DENIED && err != ERROR_PIPE_BUSY) { - // create pipe failed - return 0; - } - // pipe instance might be in use, keep trying - } - } - - // Wait for the client to connect; if it succeeds, - // the function returns a nonzero value. If the function - // returns zero, GetLastError returns ERROR_PIPE_CONNECTED. - BOOL fConnected = ConnectNamedPipe(hp, NULL) ? - TRUE : (GetLastError() == ERROR_PIPE_CONNECTED); - - if (fConnected) - { - // Send message to the pipe server. - DWORD cbWritten; - - BOOL fSuccess = WriteFile( - hp, // pipe handle - message, // message - (strlen(message)+1)*sizeof(char), // message length - &cbWritten, // bytes written - NULL); // not overlapped - - if (!fSuccess) - { - // WriteFile failed - CloseHandle(hp); - return 0; - } - - // wait for ack from server - DWORD cbRead; - TCHAR chBuf[BUFSIZE]; - - do - { - // Read from the pipe. - fSuccess = ReadFile( - hp, // pipe handle - chBuf, // buffer to receive reply - BUFSIZE*sizeof(TCHAR), // size of buffer - &cbRead, // number of bytes read - NULL); // not overlapped - - if (! fSuccess && GetLastError() != ERROR_MORE_DATA) - break; - - sprintf(ackString, "%s", chBuf); - - - } while (!fSuccess); // repeat loop if ERROR_MORE_DATA - } - - CloseHandle(hp); - - if (strcmp(ackString, "SUCCESS") == 0) { - // server completed move command successfully - return 1; - } - - return 0; -} - -int sendMoveMessageToBroker(const char * fromPath, const char * userHome) { - // Send move message - char * movecmd = "MOVEFILE"; - - char * msg = (char*)malloc((strlen(fromPath) + strlen(movecmd) + - strlen(userHome) + 3) * sizeof(char)); - - sprintf(msg, "%s*%s*%s", movecmd, fromPath, userHome); - - return sendMessageToBroker(msg); -} - -int sendMoveDirMessageToBroker(const char * fromPath, const char * userHome) { - // Send move dir message - char * movecmd = "MOVEDIR"; - - char * msg = (char*)malloc((strlen(fromPath) + strlen(movecmd) + - strlen(userHome) + 3) * sizeof(char)); - - sprintf(msg, "%s*%s*%s", movecmd, fromPath, userHome); - - return sendMessageToBroker(msg); -} - - -int sendKillMessageToBroker() { - // Send move message - char * killcmd = "KILLBROKER"; - return sendMessageToBroker(killcmd); -} - - -int sendPerformCompletionMessageToBroker(const char *javaHome) { - const char *cmd = "PERFORMCOMPLETION"; - - int result = sendMessageToBroker(cmd); - - if (result) - sendKillMessageToBroker(); - return result; -} - -int getConstantInt(JNIEnv *env, jclass cls, const char *name) { - jfieldID handle = env->GetStaticFieldID(cls, name, "I"); - return env->GetStaticIntField(cls, handle); -} - -JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_displayError - (JNIEnv *env, jclass dm, jint code, jstring arg) { - int messageId = IDS_FATAL_ERROR; - int titleId = IDS_ERROR_CAPTION; - if (code == getConstantInt(env, dm, "ERROR_MALFORMED_BUNDLE_PROPERTIES")) - messageId = IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES; - else if (code == getConstantInt(env, dm, "ERROR_DOWNLOADING_BUNDLE_PROPERTIES")) - messageId = IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES; - else if (code == getConstantInt(env, dm, "ERROR_MALFORMED_URL")) - messageId = IDS_ERROR_MALFORMED_URL; - char message[BUFFER_SIZE]; - char rawMessage[BUFFER_SIZE]; - char title[BUFFER_SIZE]; - ::LoadString(_Module.GetModuleInstance(), titleId, title, BUFFER_SIZE); - ::LoadString(_Module.GetModuleInstance(), messageId, rawMessage, BUFFER_SIZE); - if (arg != NULL) { - char *chars = getStringPlatformChars(env, arg); - sprintf(message, rawMessage, chars); - } - else - strcpy(message, rawMessage); - - MessageBox(NULL, message, title, MB_OK|MB_TASKMODAL); -} - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_askUserToRetryDownloadOrQuit - (JNIEnv *env, jclass dm, jint code) { - - int ret; - if (code == getConstantInt(env, dm, "ERROR_DISK_FULL")) { - ret = dlg.SafeMessageBox(IDS_DISK_FULL_ERROR, - IDS_DISK_FULL_ERROR_CAPTION, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL); - } else { - ret = dlg.SafeMessageBox(IDS_DOWNLOAD_RETRY_TEXT, - IDS_DOWNLOAD_RETRY, - IDS_ERROR_CAPTION, - DIALOG_ERROR_RETRYCANCEL); - } - if (ret != IDRETRY) { - // user choose to exit, return 0 - return JNI_FALSE; - } - - // return 1 (retry the download) - return JNI_TRUE; -} - -JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_startBackgroundDownloadWithBrokerImpl -(JNIEnv *env, jclass dm, jstring command) { - - char* szCommand = getStringPlatformChars(env, command); - - // Send createprocess message - char * createproccmd = "STARTBACKGROUNDDOWNLOAD"; - - char * msg = (char*)malloc((strlen(createproccmd) + strlen(szCommand) + 2) * sizeof(char)); - - sprintf(msg, "%s*%s", createproccmd, szCommand); - - sendMessageToBroker(msg); - - free(szCommand); -} - - -void getParent(TCHAR *path, TCHAR *dest) { - char* lastSlash = max(strrchr(path, '\\'), strrchr(path, '/')); - if (lastSlash == NULL) { - *dest = NULL; - return; - } - if (path != dest) - strcpy(dest, path); - *lastSlash = NULL; -} - - -bool createProcess(const TCHAR *path, const TCHAR *args) { - SHELLEXECUTEINFOA shInfo; - - shInfo.cbSize = sizeof(SHELLEXECUTEINFOA); - shInfo.fMask = 0; - shInfo.hwnd = NULL; - shInfo.lpVerb = "runas"; - shInfo.lpFile = path; - shInfo.lpParameters = args; - shInfo.lpDirectory = NULL; - shInfo.nShow = SW_NORMAL; - shInfo.hInstApp = NULL; - - int result = (int) ::ShellExecuteExA(&shInfo); - // ShellExecute is documented to return >32 on success, but I'm consistently - // getting a return of 1 despite obviously successful results. 1 is not a - // documented return code from ShellExecute, and this may have something to - // do with the fact that we're using an undocumented verb in the first place - // ("runas"). - return result > 32 || result == 1; -} - - -bool launchJBroker(const char *szJavaHome) { - char szPath[2048]; - wsprintf(szPath, "%s\\bin\\jbroker.exe", szJavaHome); - return createProcess(szPath, NULL); -} - - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_launchJBroker -(JNIEnv *env, jclass dm, jstring javaHomePath) { - char* szJavaHome = getStringPlatformChars(env, javaHomePath); - bool result = launchJBroker(szJavaHome); - free(szJavaHome); - return result ? TRUE : FALSE; -} - - -bool isJBrokerRunning() { - HANDLE hMutex = NULL; - DWORD ret = 0; - - if (isRunningIEProtectedMode()) { - - // check if jbroker process is running - // Use OpenMutex since we have limited access rights. - // CreateMutex function will fail with ERROR_ACCESS_DENIED in protected mode - hMutex = OpenMutex(SYNCHRONIZE, FALSE, "SunJavaBrokerMutex"); - - ret = ::GetLastError(); - - if (hMutex != NULL) { - CloseHandle(hMutex); - } - - if (ret == ERROR_FILE_NOT_FOUND) - { - // jbroker not running yet, launch it - return FALSE; - } - - return TRUE; - - } else { - hMutex = ::CreateMutex(NULL, TRUE, "SunJavaBrokerMutex"); - - if ( (hMutex == NULL) || (::GetLastError() == ERROR_ALREADY_EXISTS)) { - // jbroker already running - if (hMutex != NULL) ::CloseHandle(hMutex); - return TRUE; - } - - if (hMutex != NULL) ::CloseHandle(hMutex); - - return FALSE; - } -} - - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_isJBrokerRunning -(JNIEnv *env, jclass dm) { - return isJBrokerRunning() ? TRUE : FALSE; -} - - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_moveDirWithBrokerImpl - (JNIEnv *env, jclass dm, jstring fromPath, jstring userHome) { - - char* fromPathChars = getStringPlatformChars(env, fromPath); - - char* userHomeChars = getStringPlatformChars(env, userHome); - - int ret = sendMoveDirMessageToBroker(fromPathChars, userHomeChars); - - free(fromPathChars); - - free(userHomeChars); - - if (ret == 0) { - return FALSE; - } - return TRUE; -} - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_moveFileWithBrokerImpl - (JNIEnv *env, jclass dm, jstring fromPath, jstring userHome) { - - char* fromPathChars = getStringPlatformChars(env, fromPath); - - char* userHomeChars = getStringPlatformChars(env, userHome); - - int ret = sendMoveMessageToBroker(fromPathChars, userHomeChars); - - free(fromPathChars); - - free(userHomeChars); - - if (ret == 0) { - return FALSE; - } - return TRUE; -} - -/** - * Throw an exception with the last Windows error code if available. - */ - -void ThrowByNameWithLastError(JNIEnv *env, char *exception, char* msg) { - char fullMsg[1024] = {0}; - if (StringCbPrintf(fullMsg, 1024, "%s. Windows error: %d\n", - msg, GetLastError()) != S_OK) { - - // Formatting failed: fall back to msg w/o error code - ThrowByName(env, exception, msg); - } else { - ThrowByName(env, exception, fullMsg); - } -} - -/** - * Common code for "extra" compression or uncompression. If extra code - * not available do nothing but return false. If available, return true - * after locating the extra compression library at ".." and the defined - * path relative to the native library containing this method's code. - * If enabled, compress or uncompress the srcPath file into destpath, - * throwing exceptions for errors (see JNI routine docs below for details). - */ - -jboolean extraCommon(BOOL docompress, - JNIEnv *env, jclass dm, jstring srcPath, jstring destPath) { -#ifdef EXTRA_COMP_INSTALL_PATH - const char *operation = (docompress == true) ? "e" : "d"; - - // This should be shared with the deploy tree and should be defined - // in an implementation like LzmaAlone.h. However the deploy build - // doesn't exit yet wrt to this function pointer type. - - typedef int (*EXTRACOMPTRTYPE) (int, const char**); - - // Function pointer for invoking the encoder/decoder (uncompressor) - static volatile EXTRACOMPTRTYPE mptr = NULL; - // Volatile boolean becomes true when mptr init is finished - -// Stringifier macros to get the relative library path - -#define K_STRING(x) #x -#define K_GETSTRING(x) K_STRING(x) - - char *srcPathChars = getStringPlatformChars(env, srcPath); - - if (srcPathChars == NULL) { - // TODO (for all throw calls). If the class&method are *reliably* - // reported to the user these message prefixes are silly. - ThrowByName(env, "java/io/IOException", - "Bundle.uncompress: GetStringPlatformChars failed"); - return true; - } - - char *destPathChars = getStringPlatformChars(env, destPath); - if (destPathChars == NULL) { - free(srcPathChars); - ThrowByName(env, "java/io/IOException", - "Bundle.uncompress: GetStringPlatformChars failed"); - return true; - } - if (KERNEL_DEBUG) { - printf("LZMA: %s %s to %s\n", operation, srcPathChars, destPathChars); - } - - - // This loop avoids a lot of repetitious code for exception handling. - // If any loops are put inside this one be careful to properly - // handle exceptions within the inner loops. - - do { - - if (mptr == NULL) { - - // Need to locate and link to the extra compression lib, which - // has a pathname relative to the directory containing the library - // containing this code, which is assumed to be one directory - // "below" the JRE base path. That is, the JRE base path is - // assumed to be ".." from the path of this library and then - // EXTRA_COMP_INSTALL_PATH from the JRE base path is expected to - // be the compression lib path. - // But this code is defensive and tries not to fail if the - // currently executing library is in ".". It will fail in a - // case like this if the extra compression lib path isn't - // "./EXTRA_CMP_INSTALL_PATH" (or just "EXTRA_CMP_INSTALL_PATH"). - // Use macro magic to get the path macro as a string value. - - const char *libRelativePath = K_GETSTRING(EXTRA_COMP_INSTALL_PATH); - - // The max length the base JRE path can be to safely concatenate - // libRelativePath, a (possible) separator, and a null terminator. - int jreMaxPathLength = MAX_PATH - sizeof(libRelativePath) - 2; - - TCHAR extraLibPath[MAX_PATH] = {0}; - HMODULE kernel = GetModuleHandle("jkernel"); - if (kernel != NULL) { - DWORD result = GetModuleFileName(kernel, extraLibPath, - MAX_PATH-1); - if (result > 0) { - // remove the name of this library (and maybe a - // separator) - getParent(extraLibPath, extraLibPath); - if (extraLibPath[0] != NULL) { - // There was a directory containing the library - // (probably "bin"), so - // remove that to go up to the assumed JRE base path - getParent(extraLibPath, extraLibPath); - } else { - ThrowByName(env, "java/io/IOException", - "bundle uncompression: expected lib path component not found"); - break; - } - // This is effectively an assertion that the concat - // below cannot overflow - if (extraLibPath[0] != NULL) { - // Current dir is not ".", so add a separator - strcat(extraLibPath, "\\"); - } - if ((strlen(extraLibPath) + 1) > jreMaxPathLength) { - ThrowByName(env, "java/io/IOException", - "bundle uncompression: JRE base pathname too long"); - break; - } - strcat(extraLibPath, libRelativePath); - } else { - ThrowByName(env, "java/io/IOException", - "bundle uncompression: GetModuleFileName failed"); - break; - } - } else { - ThrowByNameWithLastError(env, "java/io/IOException", - "bundle uncompression: GetModuleHandle failed"); - break; - } - - // Load the library and develop a pointer to the decoder routine - - if (KERNEL_DEBUG) { - printf("bundle uncompression: extra library path %s\n", - extraLibPath); - } - - HMODULE handle = LoadLibrary(extraLibPath); - if (handle == NULL) { - ThrowByNameWithLastError(env, "java/io/IOException", - "bundle uncompression: LoadLibrary failed"); - break; - } - - // find the extra uncompression routine - - mptr = (EXTRACOMPTRTYPE) GetProcAddress(handle, - "ExtraCompressionMain"); - - if (mptr == NULL) { - ThrowByNameWithLastError(env, "java/io/IOException", - "bundle uncompression: GetProcAddress failed"); - break; - } - } - - // Create the arguments for the decoder - // Decoder options must go *between* the "d" argument and the - // source path arguments and don't forget to keep the 1st arg to - // (*mptr) the same as the number of elements of args. - const char *args[] = { - "", // the shared lib makes no attempt access it's "command name" - operation, - - // Special decoder/encoder switch strings would go here - - // For example: "-d24", to set the dictionary size to 16MB - - "-q", // Suppress banner msg output - - // No special option switch strings after here - - srcPathChars, - destPathChars - }; - int argc = sizeof(args) / sizeof(const char *); - if ((*mptr)(argc, args) != 0) { - if (KERNEL_DEBUG) { - printf("uncompress lib call failed with args: "); - for (int i = 0; i < argc; i++) { - printf("%s", args[i]); - } - printf("\n"); - } - ThrowByName(env, "java/io/IOException", - "bundle uncompression: uncompression failed"); - break; - } - } while (false); - - free(srcPathChars); - free(destPathChars); - return TRUE; -#else - if (KERNEL_DEBUG) { - printf("LZMA not compiled in!\n"); - } - - return FALSE; -#endif // EXTRA_COMP_INSTALL_PATH -} - -/** - * Compress file sourcePath with "extra" algorithm (e.g. 7-Zip LZMA) - * if available, put the compressed data into file destPath and - * return true. If extra compression is not available do nothing - * with destPath and return false; - * @param srcPath the path of the uncompressed file - * @param destPath the path of the compressed file, if used - * @return true if the extra algorithm was used and destPath created - * - * @throws IOException if the extra compression code should be available - * but cannot be located or linked to, the destination file already - * exists or cannot be opened for writing, or the compression fails - */ -JNIEXPORT jboolean JNICALL Java_sun_jkernel_Bundle_extraCompress - (JNIEnv *env, jclass dm, jstring srcPath, jstring destPath) { - return extraCommon(true, env, dm, srcPath, destPath); -} - -/** - * Uncompress file sourcePath with "extra" algorithm (e.g. 7-Zip LZMA) - * if available, put the uncompressed data into file destPath and - * return true. If if the extra algorithm is not available, leave the - * destination path unchanged and return false; - * @param srcPath the path of the file having extra compression - * @param destPath the path of the uncompressed file - * @return true if the extra algorithm was used - * - * @throws IOException if the extra uncompression code should be available - * but cannot be located or linked to, the destination file already - * exists or cannot be opened for writing, or the uncompression fails - */ - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_Bundle_extraUncompress - (JNIEnv *env, jclass dm, jstring srcPath, jstring destPath) { - return extraCommon(false, env, dm, srcPath, destPath); -} - - -JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_addToTotalDownloadSize - (JNIEnv *env, jclass dm, jint size) { - dlg.addToTotalContentLength(size); -} - -JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_downloadFromURLImpl - (JNIEnv *env, jclass dm, jstring url, jobject file, jstring name, - jboolean showProgress) { - jclass object = env->FindClass("java/lang/Object"); - jmethodID toString = env->GetMethodID(object, "toString", "()Ljava/lang/String;"); - jstring urlString = (jstring) env->CallObjectMethod(url, toString); - char* urlChars = getStringPlatformChars(env, urlString); - if (KERNEL_DEBUG) { - printf("Kernel downloadFromURL: %s\n", urlChars); - } - jstring fileString = (jstring) env->CallObjectMethod(file, toString); - char* fileChars = getStringPlatformChars(env, fileString); - char* nameChars = getStringPlatformChars(env, name); - - JavaVM *jvm; - env->GetJavaVM(&jvm); - - __try - { - - m_csCreateDialog.Lock(); - if (createDialog && showProgress) { - // create download progress dialog in a new thread - dlg.setJavaVM(jvm); - createDownloadWindow(&dlg); - createDialog = FALSE; - } - - } - __finally - { - m_csCreateDialog.Unlock(); - } - - DownloadHelper dh; - - dh.setJavaVM(jvm); - dh.setURL(urlChars); - dh.setFile(fileChars); - dh.setNameText((char*) nameChars); - dh.setShowProgressDialog(showProgress); - dh.setDownloadDialog(&dlg); - - if (dh.doDownload() != S_OK) { - // remove incomplete file - int ret = DeleteFile(fileChars); - } - - free(urlChars); - free(fileChars); - free(nameChars); -} - - -void error(char* msg) { - MessageBox(NULL, msg, "Java Error", MB_OK); -} - - -// Replace the dest file with the src file. Returns zero on success, Windows -// error code otherwise. -int replace(TCHAR* fullDest, TCHAR* fullSrc) { - struct _stat stat; - int result = _stat(fullSrc, &stat); - if (result == 0) { - DeleteFile(fullDest); - if (MoveFile(fullSrc, fullDest)) - return 0; - else - return GetLastError(); - } - else - return ENOENT; // src file not found -} - - -// Replace the dest file with the src file, where both paths are relative to -// the specified root. Returns zero on success, Windows error code otherwise. -int replaceRelative(TCHAR* root, TCHAR* dest, TCHAR* src) { - TCHAR fullDest[MAX_PATH]; - TCHAR fullSrc[MAX_PATH]; - strcpy(fullDest, root); - strcat(fullDest, dest); - strcpy(fullSrc, root); - strcat(fullSrc, src); - return replace(fullDest, fullSrc); -} - - -// Atomically deletes a file tree. Returns zero on success, Windows -// error code otherwise. -int deleteAll(TCHAR* root) { - TCHAR tmp[MAX_PATH]; - if (strlen(root) + 5 > MAX_PATH) - return ERROR_BUFFER_OVERFLOW; - strcpy(tmp, root); - strcat(tmp, ".tmp"); - struct _stat stat; - int result = _stat(tmp, &stat); - if (result == 0) { - result = !deleteAll(tmp); - if (result) - return result; - } - if (!MoveFile(root, tmp)) - return GetLastError(); - struct _SHFILEOPSTRUCTA fileOp; - memset(&fileOp, NULL, sizeof(fileOp)); - fileOp.wFunc = FO_DELETE; - TCHAR pFrom[MAX_PATH + 1]; - strcpy(pFrom, tmp); - pFrom[strlen(pFrom) + 1] = NULL; // extra null to signify that there is only one file in the list - fileOp.pFrom = pFrom; - fileOp.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI; - return SHFileOperation(&fileOp); -} - - -// moves all file with "wait='true'" specified in bundles.xml into their final -// locations. These files are stored under lib/bundles/tmp, e.g. lib/meta-index -// is stored at lib/bundles/tmp/lib/meta-index. -// relativePath is the current relative path we are searching (e.g. "lib" for the -// example above), which begins as the empty string. -int moveDelayedFiles(TCHAR* javaHome, TCHAR* relativePath) { - TCHAR src[MAX_PATH]; - TCHAR* tmp = "lib\\bundles\\tmp"; - if (strlen(javaHome) + strlen(relativePath) + strlen(tmp) > MAX_PATH) { - error("Path too long."); - return ERROR_BUFFER_OVERFLOW; - } - strcpy(src, javaHome); - strcat(src, tmp); - if (relativePath[0] != NULL) { - strcat(src, "\\"); - strcat(src, relativePath); - } - - struct _stat stat; - int result = _stat(src, &stat); - if (result == 0) { - if (stat.st_mode & _S_IFDIR) { // is a directory, loop through contents - strcat(src, "\\*"); - struct _WIN32_FIND_DATAA file; - HANDLE findHandle = FindFirstFile(src, &file); - if (findHandle != INVALID_HANDLE_VALUE) { - do { - if (file.cFileName[0] != '.') { - char child[MAX_PATH]; - strcpy(child, relativePath); - strcat(child, "\\"); - strcat(child, file.cFileName); - moveDelayedFiles(javaHome, child); - } - } - while (FindNextFile(findHandle, &file) != 0); - FindClose(findHandle); - } - } - else { // normal file, move into place - if (strcmp(relativePath, "\\finished")) { - TCHAR dest[MAX_PATH]; - strcpy(dest, javaHome); - strcat(dest, relativePath); - - DeleteFile(dest); // just in case; ignore failures - if (MoveFile(src, dest)) - return 0; - else - return GetLastError(); - } - } - } - return result; -} - - -// activates Class Data Sharing -void activateCDS(const char *javaHome) { - char java[MAX_PATH]; - strcpy(java, javaHome); - strcat(java, "bin\\javaw.exe"); - - STARTUPINFO si; - PROCESS_INFORMATION pi; - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); - const char *args = " -Xshare:dump"; - const int argLength = 13; - char commandLine[MAX_PATH + argLength + 2]; - strcpy(commandLine, "\""); - strcat(commandLine, java); - strcat(commandLine, "\""); - strcat(commandLine, args); - if (KERNEL_DEBUG) - printf("Exec: %s\n", commandLine); - if (CreateProcess(java, commandLine, NULL, NULL, FALSE, 0, - NULL, NULL, &si, &pi)) { - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - } - else - printf("Error initializing Class Data Sharing: %d", GetLastError()); -} - -typedef BOOL (*LPFNInstallJQS)(); - -// activates the Java Quickstart Service -void activateJQS(HMODULE hModule) { - LPFNInstallJQS lpfnInstallJQS; - - if (hModule != NULL) { - lpfnInstallJQS = (LPFNInstallJQS)GetProcAddress(hModule, "InstallJQS"); - if (lpfnInstallJQS != NULL) { - if ((lpfnInstallJQS)() == false && KERNEL_DEBUG) { - printf("InstallJQS returned FALSE\n"); - } - } - } -} - -// determines JAVA_HOME and stores it in the specified buffer. Returns true on success. -BOOL getJavaHome(char* buffer, int bufferSize) { - HMODULE kernel = GetModuleHandle("jkernel"); - if (kernel != NULL) { - DWORD result = GetModuleFileName(kernel, buffer, bufferSize); - if (result > 0) { - getParent(buffer, buffer); // remove "jkernel.dll" - if (buffer[0] != NULL) - getParent(buffer, buffer); // remove "bin" - if (buffer[0] != NULL) { - strcat(buffer, "\\"); - return TRUE; - } - } - } - return FALSE; -} - -typedef unsigned int (WINAPI *LPFNPostPing)(LPVOID err); -HANDLE PostPing(HMODULE hModule, char* fname, DWORD err) -{ - LPFNPostPing lpfnPostPing; - HANDLE hThread = NULL; - lpfnPostPing = (LPFNPostPing)GetProcAddress(hModule, fname); - if (lpfnPostPing != NULL) { - printf("############# ERROR CODE: %d\n", err); - hThread = (HANDLE)_beginthreadex(NULL, 0, lpfnPostPing, - (LPVOID)err, 0, NULL); - if (hThread == NULL) - lpfnPostPing((LPVOID)err); - } - return hThread; -} - -void postPingAndWait(char* fname, DWORD err) { - TCHAR path[MAX_PATH]; - if (getJavaHome(path, MAX_PATH)) { - strcat(path, "bin\\regutils.dll"); - HANDLE hThread = NULL; - HMODULE hModule = LoadLibrary(path); - if (hModule != NULL) { - hThread = PostPing(hModule, fname, err); - if (hThread != NULL) { - DWORD dwRet = 0; - WaitForSingleObject(hThread, 60*1000); - GetExitCodeThread(hThread, &dwRet); - CloseHandle(hThread); - } - } - } - else - printf("error determining JAVA_HOME for ping\n"); -} - -JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_postDownloadError - (JNIEnv *env, jclass dm, jint error) { - postPingAndWait("PostKernelDLComp", error); -} - -JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_postDownloadComplete - (JNIEnv *env, jclass dm) { - Java_sun_jkernel_DownloadManager_postDownloadError(env, dm, ERROR_SUCCESS); -} - -bool spawnedFromJBroker() { - return strstr(GetCommandLine(), JBROKER_KEY) != NULL; -} - - -// Determines if we have sufficient access to go ahead and perform completion. -// This is true either if we are not on Vista (in which case we can't elevate -// privileges anyway and have to hope for the best) or if we are on Vista and -// running at High integrity level. -bool highIntegrity() { - if (!IsPlatformWindowsVista()) - return TRUE; - else { - // directly determining this would require access to Vista-specific - // APIs, which aren't supported by our current build configurations. - // Instead we look for the presence of a flag on the command line to - // indicate that we were launched by the jbroker process. This is - // actually safer, as it prevents us from re-launching another JRE in - // the event that we somehow didn't end up with high integrity. - return spawnedFromJBroker(); - } -} - -JNIEXPORT jint JNICALL Java_sun_jkernel_DownloadManager_getCurrentProcessId - (JNIEnv *env, jclass dm) { - return (jint) GetCurrentProcessId(); -} - -JNIEXPORT jstring JNICALL Java_sun_jkernel_DownloadManager_getVisitorId0 - (JNIEnv *env, jclass dm) { - CRegKey swKey, jsKey, juKey, pKey; - if (swKey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE", KEY_READ) != ERROR_SUCCESS){ - return NULL; - } - - if (jsKey.Open(swKey, "JavaSoft", KEY_READ) != ERROR_SUCCESS){ - return NULL; - } - - if (juKey.Open(jsKey, "Java Update", KEY_READ) != ERROR_SUCCESS){ - return NULL; - } - - if (pKey.Open(juKey, "Policy", KEY_READ) != ERROR_SUCCESS){ - return NULL; - } - - DWORD dwCount = BUFSIZE; - char* keyValue = new char[BUFSIZE]; - if (pKey.QueryValue(keyValue, "VisitorId", &dwCount) != ERROR_SUCCESS){ - return NULL; - } - jstring visitorId = env->NewStringUTF(keyValue); - - return visitorId; -} - - -JNIEXPORT jstring JNICALL Java_sun_jkernel_DownloadManager_getUrlFromRegistry - (JNIEnv *env, jclass dm) { - - CRegKey swKey, jsKey; - if (swKey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE", KEY_READ) != ERROR_SUCCESS){ - return NULL; - } - - if (jsKey.Open(swKey, "JavaSoft", KEY_READ) != ERROR_SUCCESS){ - return NULL; - } - - DWORD dwCount = BUFSIZE; - char * keyValue = new char[BUFSIZE]; - if (jsKey.QueryValue(keyValue, "KernelDownloadUrl", &dwCount) != ERROR_SUCCESS){ - return NULL; - } - - jstring downloadKeyValue = env->NewStringUTF(keyValue); - - return downloadKeyValue; -} - - - -jboolean getBooleanRegistryKey(char *name, jboolean defaultValue) { - // Check DWORD registry key - // HKEY_LOCAL_MACHINE/Software/JavaSoft/ - - CRegKey swKey, jsKey; - if (swKey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE", KEY_READ) != ERROR_SUCCESS){ - return NULL; - } - - if (jsKey.Open(swKey, "JavaSoft", KEY_READ) != ERROR_SUCCESS){ - return NULL; - } - - DWORD dwValue = 0; - if (jsKey.QueryValue(dwValue, name) != ERROR_SUCCESS){ - - // Key does not exist, will return default value - return defaultValue; - } - - return dwValue != 0; -} - - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_BackgroundDownloader_getBackgroundDownloadKey - (JNIEnv *env, jclass dm) { - return getBooleanRegistryKey("KernelBackgroundDownload", TRUE); -} - - -JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_getDebugKey - (JNIEnv *env, jclass dm) { - return getBooleanRegistryKey("KernelDebug", FALSE); -} - - -// Called by the launcher before the JVM starts. If all kernel bundles have been -// downloaded, this function performs various post-download cleanups such as -// moving the merged rt.jar into place. At the end of cleanup, the JRE should -// be indistinguishable from the non-kernel JRE. -void preJVMStart() { - char rawMsg[BUFFER_SIZE]; - char msg[BUFFER_SIZE]; - HMODULE kernel = GetModuleHandle("jkernel"); - if (kernel != NULL) { - TCHAR javaHome[MAX_PATH]; - DWORD result = GetModuleFileName(kernel, javaHome, MAX_PATH); - if (result > 0) { - getParent(javaHome, javaHome); // remove "jkernel.dll" - if (javaHome[0] != NULL) - getParent(javaHome, javaHome); // remove "bin" - if (javaHome[0] != NULL) { - // should now be pointing to correct java.home - strcat(javaHome, "\\"); - bool jbroker = spawnedFromJBroker(); - HANDLE file; - TCHAR rt[MAX_PATH]; - strcpy(rt, javaHome); - strcat(rt, "lib\\rt.jar"); - HANDLE startMutex = CreateMutex(NULL, FALSE, "jvmStart"); - if (!jbroker) { // else mutex is already held by the pre-jbroker JVM - if (KERNEL_DEBUG) - printf("Locking startMutex\n"); - WaitForSingleObject(startMutex, INFINITE); - if (KERNEL_DEBUG) - printf("Locked startMutex\n"); - // open rt.jar for reading. This prevents other JREs from being - // able to acquire a write lock on rt.jar, which is used as a test - // to ensure that no other JREs are running. - // The failure to close the file handle is intentional -- if we - // close it, there will be a brief window between the close and - // when the JRE reopens it during which another jre could get - // a write lock on it, hosing us. - file = CreateFile(rt, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL); - if (file == INVALID_HANDLE_VALUE) { - ReleaseAndClose(startMutex); - return; - } - if (KERNEL_DEBUG) - printf("Opened rt.jar for reading\n"); - } - TCHAR finished[MAX_PATH]; - TCHAR* finishedPath = "lib\\bundles\\tmp\\finished"; - if (strlen(javaHome) + strlen(finishedPath) < MAX_PATH) { - strcpy(finished, javaHome); - strcat(finished, finishedPath); - struct _stat finishedStat; - result = _stat(finished, &finishedStat); - if (result == 0) { // JRE has been fully downloaded but not yet cleaned up - if (KERNEL_DEBUG) - printf("Beginning completion.\n"); - if (!jbroker) - CloseHandle(file); - if (highIntegrity()) { - // attempt to open rt.jar for exclusive write access -- if this succeeds, - // we know no other JREs are running - file = CreateFile(rt, GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, NULL, NULL); - if (file == INVALID_HANDLE_VALUE) { - // must be another JRE running... - ReleaseAndClose(startMutex); - return; - } - if (KERNEL_DEBUG) - printf("Opened rt.jar for writing.\n"); - CloseHandle(file); - if (KERNEL_DEBUG) - printf("Closed rt.jar.\n"); - int result = replaceRelative(javaHome, "lib\\rt.jar", - "lib\\bundles\\tmp\\merged-rt.jar"); - if (result != 0 && result != ENOENT) { - ::LoadString(_Module.GetModuleInstance(), IDS_FILE_UPDATE_ERROR, rawMsg, BUFFER_SIZE); - wsprintf(msg, rawMsg, javaHome, "lib\\rt.jar"); - error(msg); - ReleaseAndClose(startMutex); - return; - } - result = replaceRelative(javaHome, "lib\\resources.jar", - "lib\\bundles\\tmp\\merged-resources.jar"); - if (result != 0 && result != ENOENT) { - ::LoadString(_Module.GetModuleInstance(), IDS_FILE_UPDATE_ERROR, rawMsg, BUFFER_SIZE); - wsprintf(msg, rawMsg, javaHome, "lib\\resources.jar"); - error(msg); - ReleaseAndClose(startMutex); - return; - } - - TCHAR bundles[MAX_PATH]; - strcpy(bundles, javaHome); - strcat(bundles, "lib\\bundles"); - if (moveDelayedFiles(javaHome, "")) { - ::LoadString(_Module.GetModuleInstance(), IDS_FILE_UPDATE_ERROR, msg, BUFFER_SIZE); - error(msg); - ReleaseAndClose(startMutex); - return; - } - - TCHAR kernel[MAX_PATH]; - strcpy(kernel, javaHome); - strcat(kernel, "bin\\kernel"); - result = deleteAll(kernel); - if (result != 0 && result != ENOENT) { - ::LoadString(_Module.GetModuleInstance(), IDS_FILE_DELETE_ERROR, rawMsg, BUFFER_SIZE); - wsprintf(msg, rawMsg, kernel); - error(msg); - ReleaseAndClose(startMutex); - return; - } - - if (deleteAll(bundles)) { - // fail silently, CR #6643218 - printf("deleteAll failed!\n"); - ReleaseAndClose(startMutex); - return; - } - - TCHAR kernelMap[MAX_PATH]; - strcpy(kernelMap, javaHome); - strcat(kernelMap, "lib\\kernel.map"); - result = deleteAll(kernelMap); - if (result != 0 && result != ENOENT) { - ::LoadString(_Module.GetModuleInstance(), IDS_FILE_DELETE_ERROR, rawMsg, BUFFER_SIZE); - wsprintf(msg, rawMsg, kernelMap); - error(msg); - ReleaseAndClose(startMutex); - return; - } - - strcpy(rt, javaHome); - strcat(rt, "bin\\regutils.dll"); - HANDLE hThread = NULL; - HMODULE hModule = LoadLibrary(rt); - if (hModule != NULL) - hThread = PostPing(hModule, "PostKernelComp", ERROR_SUCCESS); - if (KERNEL_DEBUG) - printf("Activating JQS.\n"); - activateJQS(hModule); - - if (KERNEL_DEBUG) - printf("Activating CDS.\n"); - activateCDS(javaHome); - - if (hThread != NULL) { - DWORD dwRet = 0; - WaitForSingleObject(hThread, 60*1000); - GetExitCodeThread(hThread, &dwRet); - CloseHandle(hThread); - } - if (hModule != NULL) - FreeLibrary(hModule); - } else { - bool jbroker = isJBrokerRunning(); - if (!jbroker) { - // remove trailing slash - javaHome[strlen(javaHome) - 1] = 0; - jbroker = launchJBroker(javaHome); - if (!jbroker) { - ::LoadString(_Module.GetModuleInstance(), - IDS_JBROKER_ERROR, - msg, - BUFFER_SIZE); - error(msg); - } - } - if (jbroker) - sendPerformCompletionMessageToBroker(javaHome); - } - } - } - if (KERNEL_DEBUG) - printf("Releasing startMutex.\n"); - ReleaseAndClose(startMutex); - } else { - ::LoadString(_Module.GetModuleInstance(), IDS_JAVA_HOME_ERROR, msg, BUFFER_SIZE); - error(msg); - } - } else { - ::LoadString(_Module.GetModuleInstance(), IDS_KERNEL_HOME_ERROR, msg, BUFFER_SIZE); - error(msg); - } - } else { - ::LoadString(_Module.GetModuleInstance(), IDS_KERNEL_HOME_ERROR, msg, BUFFER_SIZE); - error(msg); - } -} diff --git a/jdk/src/windows/native/sun/jkernel/kernel.def b/jdk/src/windows/native/sun/jkernel/kernel.def deleted file mode 100644 index 5eb29e92faf..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel.def +++ /dev/null @@ -1,28 +0,0 @@ -; -; Copyright 2008 - 2009 Sun Microsystems, Inc. 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. Oracle designates this -; particular file as subject to the "Classpath" exception as provided -; by Oracle in the LICENSE file that accompanied this code. -; -; 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. -; - -LIBRARY jkernel -EXPORTS - preJVMStart @1 diff --git a/jdk/src/windows/native/sun/jkernel/kernel.rc b/jdk/src/windows/native/sun/jkernel/kernel.rc deleted file mode 100644 index 943d7cbbec4..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel.rc +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (c) 2008, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ -#include "version.rc" - -#include "resource.h" -#define APSTUDIO_READONLY_SYMBOLS -#include "afxres.h" -#undef APSTUDIO_READONLY_SYMBOLS - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -IDI_JAVA ICON DISCARDABLE "graphics\\java-icon.ico" -IDI_MASTHEAD BITMAP DISCARDABLE "graphics\\masthead.bmp" - -///////////////////////////////////////////////////////////////////////////// -// Include foreign resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// Japanese resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) -#ifdef _WIN32 -LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT -#pragma code_page(932) -#endif //_WIN32 -#include "kernel_ja.rc" -#endif // Japanese resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// Chinese (P.R.C.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) -#ifdef _WIN32 -LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED -#pragma code_page(936) -#endif //_WIN32 -#include "kernel_zh.rc" -#endif // Chinese (P.R.C.) resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// Korean resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR) -#ifdef _WIN32 -LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT -#pragma code_page(949) -#endif //_WIN32 -#include "kernel_ko.rc" -#endif // Korean resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// Chinese (Taiwan) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHT) -#ifdef _WIN32 -LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL -#pragma code_page(950) -#endif //_WIN32 -#include "kernel_zh_TW.rc" -#endif // Chinese (Taiwan) resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// German (Germany) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) -#ifdef _WIN32 -LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL -#pragma code_page(1252) -#endif //_WIN32 -#include "kernel_de.rc" -#endif // German (Germany) resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// Spanish (Castilian) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESP) -#ifdef _WIN32 -LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL -#pragma code_page(1252) -#endif //_WIN32 -#include "kernel_es.rc" -#endif // Spanish (Castilian) resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// French (France) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) -#ifdef _WIN32 -LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL -#pragma code_page(1252) -#endif //_WIN32 -#include "kernel_fr.rc" -#endif // French (France) resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// Italian (Italy) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ITA) -#ifdef _WIN32 -LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL -#pragma code_page(1252) -#endif //_WIN32 -#include "kernel_it.rc" -#endif // Italian (Italy) resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// Swedish resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SVE) -#ifdef _WIN32 -LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL -#pragma code_page(1252) -#endif //_WIN32 -#include "kernel_sv.rc" -#endif // Swedish resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// Brazilian Portuguese resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_PTB) -#ifdef _WIN32 -LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN -#pragma code_page(1252) -#endif //_WIN32 -#include "kernel_pt_BR.rc" -#endif // Brazilian Portuguese resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 -#include "kernel_en.rc" -#endif // English resources - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED diff --git a/jdk/src/windows/native/sun/jkernel/kernel_de.rc b/jdk/src/windows/native/sun/jkernel/kernel_de.rc deleted file mode 100644 index eef147534b6..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_de.rc +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Zusätzliche Komponenten erforderlich" -EXSTYLE WS_EX_APPWINDOW -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39 - LTEXT "", IDC_MASTHEAD_TEXT, 60, 4, 220, 30 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN, - 0, 39, 340, 1 - LTEXT "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20 - LTEXT "", IDC_TIME_REMAINING, 12, 90, 316, 10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH, - 12, 100, 265, 14 - PUSHBUTTON "Abbrechen", 2, 285, 100, 46, 14 -END -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "Wenn Sie die Installation zusätzlicher Komponenten, die für die Anwendung erforderlich sind, abbrechen, wird die Anwendung möglicherweise geschlossen.\n\nMöchten Sie die Installation zusätzlicher Komponenten wirklich abbrechen?" - IDS_DOWNLOAD_CANCEL_CAPTION "Abbrechen - Zusätzliche Komponenten" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "Verbindungszeitüberschreitung" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Internetverbindung kann nicht hergestellt werden" - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "Serverfehler (Fehler %s)" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "Der Dienst nicht verfügbar (Fehler %s)" - IDS_HTTP_INSTRUCTION_FORBIDDEN "Zugriff verweigert oder verboten (Fehler %s)" - IDS_HTTP_STATUS_OTHER "Bei der Anfrage ist ein Fehler aufgetreten. Möchten Sie die Anfrage wiederholen?" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "Während der Server auf die Anforderung wartete, kam es zu einer Zeitüberschreitung." - IDS_HTTP_STATUS_FORBIDDEN "Der Server hat die Anforderung verstanden, verweigert jedoch deren Ausführung." - IDS_HTTP_STATUS_SERVER_ERROR "Der Server stieß auf eine unerwartete Bedingung, die das Ausführen der Anforderung verhinderte." - IDS_HTTP_STATUS_SERVICE_UNAVAIL "Der Dienst ist vorübergehend überlastet." - - - IDS_DOWNLOAD_STATUS_RETRY "Server beschäftigt. Erneuter Versuch in %ld Sekunden ..." - - IDS_ERROR_CAPTION "Fehler - Java Kernel" - IDS_HOURSMINUTESECOND "Verbleibende Zeit (geschätzt): %d Stunden, %d Minuten und %.0f Sekunden" - IDS_HOURMINUTESECOND "Verbleibende Zeit (geschätzt): %d Stunde, %d Minuten und %.0f Sekunden" - IDS_MINUTESECOND "Verbleibende Zeit (geschätzt): %d Minuten %.0f Sekunden" - IDS_SECOND "Verbleibende Zeit (geschätzt): %.0f Sekunden" - IDS_DISK_FULL_ERROR_CAPTION "Festplatte voll" - IDS_DISK_FULL_ERROR "Java Kernel konnte erforderliche Komponenten nicht herunterladen, da der Datenträger voll ist. Noch einmal versuchen?" - IDS_DISK_WRITE_ERROR_CAPTION "Fehler beim Schreiben auf Datenträger" - IDS_DISK_WRITE_ERROR "Java Kernel hat beim Schreiben uf den Datenträger einen Fehler verursacht Noch einmal versuchen?" - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java Kernel kann aufgrund der aktuellen Internetverbindungseinstellungen Ihres Systems nicht fortfahren. Überprüfen Sie in der Windows-Systemsteuerung unter 'Internetoptionen -> Verbindungen' die Einstellungen und Proxy-Angaben." - - IDS_DOWNLOAD_RETRY "Downloadfehler" - IDS_DOWNLOAD_RETRY_TEXT "Beim Herunterladen einiger benötigter Komponenten ist ein Fehler aufgetreten. Möchten Sie noch einmal versuchen, diese Komponenten herunterzuladen?" - - IDS_DOWNLOAD "Zusätzliche Komponenten werden installiert." - IDS_DOWNLOAD_UNPACKING "Entpacken des Pakets" - IDS_DOWNLOAD_TEXT "Die Java-Anwendung wird starten, sobald zusätzliche Komponenten heruntergeladen und installiert sind." - - IDS_FILE_UPDATE_ERROR "Beim Aktualisieren von %s%s ist ein Fehler aufgetreten." - IDS_FILE_DELETE_ERROR "Beim Entfernen von %s ist ein Fehler aufgetreten." - IDS_JAVA_HOME_ERROR "Java-Verzeichnis kann nicht ermittelt werden." - IDS_KERNEL_HOME_ERROR "Pfad der jkernel.dll kann nicht ermittelt werden." - IDS_JBROKER_ERROR "jbroker.exe kann nicht gestartet werden." - IDS_FATAL_ERROR "Java konnte einige erforderliche Komponenten nicht herunterladen. Das Programm wird geschlossen." - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java konnte keine Verbindung zum Downloadserver herstellen. Das Programm wird geschlossen." - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Bei der Verbindung mit dem Downloadserver ist ein Fehler aufgetreten. Das Programm wird geschlossen." - IDS_ERROR_MALFORMED_URL "Java konnte von URL '%s' keinen Dowload ausführen. Das Programm wird geschlossen." -END diff --git a/jdk/src/windows/native/sun/jkernel/kernel_en.rc b/jdk/src/windows/native/sun/jkernel/kernel_en.rc deleted file mode 100644 index b57e4e78fbc..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_en.rc +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Additional Components Needed" -EXSTYLE WS_EX_APPWINDOW -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39 - LTEXT "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN, - 0, 39, 340, 1 - LTEXT "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20 - LTEXT "", IDC_TIME_REMAINING, 12, 90, 316, 10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH, - 12, 100, 265, 14 - PUSHBUTTON "Cancel", 2, 285, 100, 46, 14 -END - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "Canceling the installation of additional components which the application needs may cause the application to exit.\n\nAre you sure you want to cancel the installation of additional components?" - IDS_DOWNLOAD_CANCEL_CAPTION "Cancel - Additional Components" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "Connection Timed Out" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Unable to connect to the Internet" - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "Server error (Error %s)" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "Service Unavailable (Error %s)" - IDS_HTTP_INSTRUCTION_FORBIDDEN "Access Denied or Forbidden (Error %s)" - IDS_HTTP_STATUS_OTHER "An error has occured during this request. Do you want to try the request again?" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "The server used to download the requested components is not responding and the connection has timed out. Do you want to try to connect again?" - IDS_HTTP_STATUS_FORBIDDEN "You do not have permission to access the server to download the components requested by the application. Retry your access to the server?" - IDS_HTTP_STATUS_SERVER_ERROR "An error occured on the server and it could not complete the request. Do you want to try the request again?" - IDS_HTTP_STATUS_SERVICE_UNAVAIL "The requested service is temporarily unavailable. Do you want to try the request again?" - - - IDS_DOWNLOAD_STATUS_RETRY "Server is currently busy, retry in %ld seconds ..." - - IDS_ERROR_CAPTION "Java Installer" - IDS_HOURSMINUTESECOND "Estimated time remaining: %d hours %d minutes %.0f seconds" - IDS_HOURMINUTESECOND "Estimated time remaining: %d hour %d minutes %.0f seconds" - IDS_MINUTESECOND "Estimated time remaining: %d minutes %.0f seconds" - IDS_SECOND "Estimated time remaining: %.0f seconds" - IDS_DISK_FULL_ERROR_CAPTION "Disk Full %s" - IDS_DISK_FULL_ERROR "There is not enough space on the disk to download the requested components. Clear space on the disk and then Retry." - IDS_DISK_WRITE_ERROR_CAPTION "Can't write to the disk %s" - IDS_DISK_WRITE_ERROR "An error occurred during writing to the disk. Please check that the disk is not write protected." - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java cannot connect to the Internet. Please check that the Internet Connection settings are correct (these can be found in the Windows Control Panel under Internet Options > Connection) and that your firewall allows java.exe to access the Internet." - - IDS_DOWNLOAD_RETRY "Download error" - IDS_DOWNLOAD_RETRY_TEXT "An error occurred during the download of some requested components. Do you want to try the download of these components again?" - - IDS_DOWNLOAD "Installing Additional Components" - IDS_DOWNLOAD_UNPACKING "Unpacking bundle" - IDS_DOWNLOAD_TEXT "The Java application will start when additional components that it requires are downloaded and installed." - - IDS_FILE_UPDATE_ERROR "An error occurred while updating %s%s." - IDS_FILE_DELETE_ERROR "An error occurred while removing %s." - IDS_JAVA_HOME_ERROR "Unable to determine Java home directory." - IDS_KERNEL_HOME_ERROR "Unable to determine path to jkernel.dll." - IDS_JBROKER_ERROR "Unable to launch jbroker.exe." - IDS_FATAL_ERROR "Java was unable to download required components. The program will now exit." - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java was unable to communicate with the download server. The program will now exit." - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java encountered an error communicating with the download server. The program will now exit." - IDS_ERROR_MALFORMED_URL "Java was unable to download from the URL '%s'. The program will now exit." -END diff --git a/jdk/src/windows/native/sun/jkernel/kernel_es.rc b/jdk/src/windows/native/sun/jkernel/kernel_es.rc deleted file mode 100644 index 6f3183bd291..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_es.rc +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Componentes adicionales necesarios" -EXSTYLE WS_EX_APPWINDOW -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39 - LTEXT "", IDC_MASTHEAD_TEXT, 60, 8, 225, 20 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN, - 0, 39, 340, 1 - LTEXT "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20 - LTEXT "", IDC_TIME_REMAINING, 12, 90, 316, 10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH, - 12, 100, 265, 14 - PUSHBUTTON "Cancelar", 2, 285, 100, 46, 14 -END -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "Cancelar la instalación de los componentes adicionales que necesita la aplicación puede hacer que se cierre la aplicación.\n\n¿Seguro que desea cancelar la instalación de componentes adicionales?" - IDS_DOWNLOAD_CANCEL_CAPTION "Cancelar - Componentes adicionales" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "Se ha agotado el tiempo de espera de la conexión" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "No es posible conectarse a Internet" - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "Ha habido un error en el servidor (error %s)" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "El servicio no está disponible (error %s)" - IDS_HTTP_INSTRUCTION_FORBIDDEN "El acceso se ha denegado o está prohibido (error %s)" - IDS_HTTP_STATUS_OTHER "Ha habido un error en el transcurso de esta solicitud. ¿Desea ejecutar de nuevo la solicitud?" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "El servidor ha agotado el tiempo de espera de la solicitud." - IDS_HTTP_STATUS_FORBIDDEN "El servidor ha podido interpretar la solicitud, pero la rechaza." - IDS_HTTP_STATUS_SERVER_ERROR "El servidor ha encontrado una condición inesperada que le ha impedido satisfacer la solicitud." - IDS_HTTP_STATUS_SERVICE_UNAVAIL "El servicio está temporalmente sobrecargado." - - - IDS_DOWNLOAD_STATUS_RETRY "El servidor está ocupado en este momento, se volverá a intentar la conexión en %ld segundos..." - - IDS_ERROR_CAPTION "Error - Java Kernel" - IDS_HOURSMINUTESECOND "Tiempo restante estimado: %d horas %d minutos %.0f segundos" - IDS_HOURMINUTESECOND "Tiempo restante estimado: %d hora %d minutos %.0f segundos" - IDS_MINUTESECOND "Tiempo restante estimado: %d minutos %.0f segundos" - IDS_SECOND "Tiempo restante estimado: %.0f segundos" - IDS_DISK_FULL_ERROR_CAPTION "Disco lleno" - IDS_DISK_FULL_ERROR "Java Kernel no puede descargar los componentes necesarios porque el disco está lleno. ¿Desea volver a intentarlo?" - IDS_DISK_WRITE_ERROR_CAPTION "Error de escritura en disco" - IDS_DISK_WRITE_ERROR "Se ha producido un error cuando Java Kernel intentaba escribir en el disco. ¿Desea volver a intentarlo?" - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java Kernel no puede continuar con la configuración actual de conexión a Internet del sistema. En el Panel de control de Windows, compruebe Opciones de Internet -> Conexiones para verificar que la información de la configuración y de proxy sea la correcta." - - IDS_DOWNLOAD_RETRY "Error de descarga" - IDS_DOWNLOAD_RETRY_TEXT "Se ha producido un error durante la descarga de algunos componentes solicitados. ¿Quiere volver a intentar descargar estos componentes?" - - IDS_DOWNLOAD "Instalación de componentes adicionales" - IDS_DOWNLOAD_UNPACKING "Desempaquetando paquete" - IDS_DOWNLOAD_TEXT "La aplicación Java se iniciará cuando los componentes adicionales necesarios se hayan descargado e instalado." - - IDS_FILE_UPDATE_ERROR "Se ha producido un error al actualizar %s%s." - IDS_FILE_DELETE_ERROR "Se ha producido un error al eliminar %s." - IDS_JAVA_HOME_ERROR "Imposible determinar el directorio de inicio Java." - IDS_KERNEL_HOME_ERROR "Imposible determinar la ruta a jkernel.dll." - IDS_JBROKER_ERROR "Imposible iniciar jbroker.exe." - IDS_FATAL_ERROR "Java no ha podido descargar los componentes necesarios. El programa se cerrará." - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java no ha podido comunicarse con el servidor de descarga. El programa se cerrará." - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Se ha producido un error en la comunicación entre Java y el servidor de descarga. El programa se cerrará." - IDS_ERROR_MALFORMED_URL "Java no ha podido realizar la descarga desde el URL '%s'. El programa se cerrará." -END diff --git a/jdk/src/windows/native/sun/jkernel/kernel_fr.rc b/jdk/src/windows/native/sun/jkernel/kernel_fr.rc deleted file mode 100644 index 3e494a3683d..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_fr.rc +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Composants supplémentaires requis" -EXSTYLE WS_EX_APPWINDOW -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39 - LTEXT "", IDC_MASTHEAD_TEXT, 60, 4, 220, 30 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN, - 0, 39, 340, 1 - LTEXT "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20 - LTEXT "", IDC_TIME_REMAINING, 12, 90, 316, 10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH, - 12, 100, 265, 14 - PUSHBUTTON "Annuler", 2, 285, 100, 46, 14 -END -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "L'annulation de l'installation de composants supplémentaires nécessaires à l'application risque d'entraîner la fermeture de celle-ci.\n\nVoulez-vous vraiment annuler l'installation des composants supplémentaires ?" - IDS_DOWNLOAD_CANCEL_CAPTION "Annuler : composants supplémentaires" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "Délai de connexion dépassé" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Connexion à Internet impossible" - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "Erreur de serveur (erreur %s)" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "Service non disponible (erreur %s)" - IDS_HTTP_INSTRUCTION_FORBIDDEN "Accès refusé ou interdit (erreur %s)" - IDS_HTTP_STATUS_OTHER "Une erreur s'est produite lors de cette demande. Voulez-vous effectuer à nouveau la demande ?" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "Temporisation du serveur lors de l'attente de la requête." - IDS_HTTP_STATUS_FORBIDDEN "Le serveur a compris la requête mais refuse de la satisfaire." - IDS_HTTP_STATUS_SERVER_ERROR "Le serveur a rencontré une condition inattendue l'empêchant de satisfaire la requête." - IDS_HTTP_STATUS_SERVICE_UNAVAIL "Le service est temporairement surchargé." - - - IDS_DOWNLOAD_STATUS_RETRY "Le serveur est occupé ; veuillez réessayer dans %ld secondes..." - - IDS_ERROR_CAPTION "Erreur - Java Kernel" - IDS_HOURSMINUTESECOND "Temps restant prévu : %d heures %d minutes %.0f secondes" - IDS_HOURMINUTESECOND "Temps restant prévu : %d heure %d minutes %.0f secondes" - IDS_MINUTESECOND "Temps restant prévu : %d minutes %.0f secondes" - IDS_SECOND "Temps restant prévu : %.0f secondes" - IDS_DISK_FULL_ERROR_CAPTION "Disque saturé" - IDS_DISK_FULL_ERROR "En raison de la saturation du disque, Java Kernel n'a pas été en mesure de télécharger les composants requis. Voulez-vous réessayer ?" - IDS_DISK_WRITE_ERROR_CAPTION "Erreur d'écriture sur le disque" - IDS_DISK_WRITE_ERROR "Java Kernel a rencontré une erreur lors de l'écriture sur le disque. Voulez-vous réessayer ?" - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java Kernel ne peut pas s'exécuter avec les paramètres de connexion Internet actuels de votre système. Dans le Panneau de configuration de Windows, cliquez sur Options Internet -> Connexions pour vérifier les paramètres et informations de proxy." - - IDS_DOWNLOAD_RETRY "Erreur de téléchargement" - IDS_DOWNLOAD_RETRY_TEXT "Une erreur s'est produite lors du téléchargement de certains composants requis. Souhaitez-vous réessayer de télécharger ces composants ?" - - IDS_DOWNLOAD "Installation de composants supplémentaires" - IDS_DOWNLOAD_UNPACKING "Décompression du bundle" - IDS_DOWNLOAD_TEXT "L'application Java démarre lorsque des composants supplémentaires requis sont téléchargés et installés." - - IDS_FILE_UPDATE_ERROR "Une erreur s'est produite lors de la mise à jour de %s%s." - IDS_FILE_DELETE_ERROR "Une erreur s'est produite lors de la suppression de %s." - IDS_JAVA_HOME_ERROR "Le répertoire d'accueil Java est introuvable." - IDS_KERNEL_HOME_ERROR "Le chemin de jkernel.dll est introuvable." - IDS_JBROKER_ERROR "Impossible de lancer jbroker.exe." - IDS_FATAL_ERROR "Java n'a pas été en mesure de télécharger les composants requis. Fermeture imminente du programme." - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java n'a pas été en mesure de communiquer avec le serveur de téléchargement. Fermeture imminente du programme." - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java a rencontré une erreur lors de la communication avec le serveur de téléchargement. Fermeture imminente du programme." - IDS_ERROR_MALFORMED_URL "Java n'a pas été en mesure de réaliser le téléchargement à partir de l'URL '%s'. Fermeture imminente du programme." -END diff --git a/jdk/src/windows/native/sun/jkernel/kernel_it.rc b/jdk/src/windows/native/sun/jkernel/kernel_it.rc deleted file mode 100644 index d8fdf0b4e6a..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_it.rc +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Componenti aggiuntivi richiesti" -EXSTYLE WS_EX_APPWINDOW -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39 - LTEXT "", IDC_MASTHEAD_TEXT, 60, 4, 220, 30 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN, - 0, 39, 340, 1 - LTEXT "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20 - LTEXT "", IDC_TIME_REMAINING, 12, 90, 316, 10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH, - 12, 100, 265, 14 - PUSHBUTTON "Annulla", 2, 285, 100, 46, 14 -END -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "Se si annulla l'installazione di componenti aggiuntivi necessari per l'applicazione, quest'ultima potrebbe chiudersi.\n\nAnnullare l'installazione di componenti aggiuntivi?" - IDS_DOWNLOAD_CANCEL_CAPTION "Annulla - Componenti aggiuntivi" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "Timeout della connessione" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Impossibile stabilire una connessione a Internet" - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "Errore del server (errore %s)" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "Servizio non disponibile (errore %s)" - IDS_HTTP_INSTRUCTION_FORBIDDEN "Accesso negato o vietato (errore %s)" - IDS_HTTP_STATUS_OTHER "Errore durante la richiesta. Provare a reinviare la richiesta?" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "Tempo scaduto del server in attesa della richiesta." - IDS_HTTP_STATUS_FORBIDDEN "Il server ha ricevuto la richiesta ma non ne consente l'elaborazione." - IDS_HTTP_STATUS_SERVER_ERROR "Il server ha rilevato una condizione imprevista che ha impedito di soddisfare la richiesta." - IDS_HTTP_STATUS_SERVICE_UNAVAIL "Il servizio è temporaneamente sovraccarico." - - - IDS_DOWNLOAD_STATUS_RETRY "Server occupato, riprovare tra %ld secondi..." - - IDS_ERROR_CAPTION "Errore - Java Kernel" - IDS_HOURSMINUTESECOND "Tempo rimanente previsto: %d ore %d minuti %.0f secondi" - IDS_HOURMINUTESECOND "Tempo rimanente previsto: %d ora %d minuti %.0f secondi" - IDS_MINUTESECOND "Tempo rimanente previsto: %d minuti %.0f secondi" - IDS_SECOND "Tempo rimanente previsto: %.0f secondi" - IDS_DISK_FULL_ERROR_CAPTION "Disco pieno" - IDS_DISK_FULL_ERROR "Java Kernel non ha effettuato il download dei componenti necessari perché il disco è pieno. Riprovare?" - IDS_DISK_WRITE_ERROR_CAPTION "Errore di scrittura sul disco" - IDS_DISK_WRITE_ERROR "Java Kernel ha rilevato un errore durante la scrittura sul disco. Riprovare?" - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Non è possibile utilizzare Java Kernel con le impostazioni di connessione Internet attive nel sistema. Nel Pannello di controllo di Windows, selezionare Opzioni Internet -> Connessioni per controllare che le impostazioni e le informazioni sul proxy siano corrette." - - IDS_DOWNLOAD_RETRY "Errore di download" - IDS_DOWNLOAD_RETRY_TEXT "Si è verificato un errore durante il download di alcuni componenti richiesti. Ritentare il download di tali componenti?" - - IDS_DOWNLOAD "Installazione di componenti aggiuntivi in corso" - IDS_DOWNLOAD_UNPACKING "Decompressione del bundle in corso" - IDS_DOWNLOAD_TEXT "L'applicazione Java verrà avviata dopo il download e l'installazione dei componenti richiesti." - - IDS_FILE_UPDATE_ERROR "Errore durante l'aggiornamento di %s%s." - IDS_FILE_DELETE_ERROR "Errore durante la rimozione di %s." - IDS_JAVA_HOME_ERROR "Impossibile determinare la directory home di Java." - IDS_KERNEL_HOME_ERROR "Impossibile determinare il percorso di jkernel.dll." - IDS_JBROKER_ERROR "Impossibile avviare jbroker.exe." - IDS_FATAL_ERROR "Java non è in grado di scaricare i componenti necessari. Il programma verrà terminato." - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java non è in grado di comunicare con il server di download. Il programma verrà terminato." - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java ha rilevato un errore durante la comunicazione con il server di download. Il programma verrà terminato." - IDS_ERROR_MALFORMED_URL "Java non è in grado di eseguire il download dall'URL '%s'. Il programma verrà terminato." -END diff --git a/jdk/src/windows/native/sun/jkernel/kernel_ja.rc b/jdk/src/windows/native/sun/jkernel/kernel_ja.rc deleted file mode 100644 index 3179110db2f..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_ja.rc +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "’ljÁƒRƒ“ƒ|[ƒlƒ“ƒg‚ª•K—v" -EXSTYLE WS_EX_APPWINDOW -FONT 10, "MS UI Gothic" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39 - LTEXT "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN, - 0, 39, 340, 1 - LTEXT "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20 - LTEXT "", IDC_TIME_REMAINING, 12, 90, 316, 10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH, - 12, 100, 265, 14 - PUSHBUTTON "ŽæÁ‚µ", 2, 285, 100, 46, 14 -END -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª•K—v‚Æ‚·‚é’ljÁƒRƒ“ƒ|[ƒlƒ“ƒg‚̃Cƒ“ƒXƒg[ƒ‹‚ðƒLƒƒƒ“ƒZƒ‹‚·‚邯AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªI—¹‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B\n\n’ljÁƒRƒ“ƒ|[ƒlƒ“ƒg‚̃Cƒ“ƒXƒg[ƒ‹‚ðƒLƒƒƒ“ƒZƒ‹‚µ‚Ä‚æ‚낵‚¢‚Å‚·‚©H" - IDS_DOWNLOAD_CANCEL_CAPTION "ƒLƒƒƒ“ƒZƒ‹ - ’ljÁƒRƒ“ƒ|[ƒlƒ“ƒg" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "Ú‘±‚ªƒ^ƒCƒ€ƒAƒEƒg‚µ‚Ü‚µ‚½" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "ƒCƒ“ƒ^[ƒlƒbƒg‚ÉÚ‘±‚Å‚«‚Ü‚¹‚ñ" - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "ƒT[ƒo[ƒGƒ‰[ (ƒGƒ‰[ %s)" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "ƒT[ƒrƒX—˜—p•s‰Â (ƒGƒ‰[ %s)" - IDS_HTTP_INSTRUCTION_FORBIDDEN "ƒAƒNƒZƒX‚ª‹‘”Û‚Ü‚½‚͋֎~‚³‚ê‚Ä‚¢‚Ü‚· (ƒGƒ‰[ %s)" - IDS_HTTP_STATUS_OTHER "‚±‚Ì—v‹‚̈—’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½B—v‹‚ðÄŽŽs‚µ‚Ü‚·‚©?" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "—v‹‚ð‘Ò‹@’†‚ɃT[ƒo[‚ªƒ^ƒCƒ€ƒAƒEƒg‚µ‚Ü‚µ‚½B" - IDS_HTTP_STATUS_FORBIDDEN "ƒT[ƒo[‚ÍA—v‹‚ð”Fޝ‚µ‚Ä‚¢‚Ü‚·‚ªAŽÀs‚ð‹‘”Û‚µ‚Ä‚¢‚Ü‚·B" - IDS_HTTP_STATUS_SERVER_ERROR "ƒT[ƒo[‚ÍA—v‹‚ÌŽÀs‚ð–W‚°‚é—\Šú‚µ‚È‚¢ó‹µ‚É‘˜‹ö‚µ‚Ü‚µ‚½B" - IDS_HTTP_STATUS_SERVICE_UNAVAIL "ƒT[ƒrƒX‚ªˆêŽž“I‚ɃI[ƒo[ƒ[ƒh‚µ‚Ä‚¢‚Ü‚·B" - - - IDS_DOWNLOAD_STATUS_RETRY "ƒT[ƒo[‚ÍŒ»ÝƒrƒW[‚Å‚·B%ld •bŒã‚ÉÄŽŽs‚µ‚Ü‚· ..." - - IDS_ERROR_CAPTION "ƒGƒ‰[ - Java ƒJ[ƒlƒ‹" - IDS_HOURSMINUTESECOND "—\‘zŽc‚莞ŠÔ: %d ŽžŠÔ %d •ª %.0f •b" - IDS_HOURMINUTESECOND "—\‘zŽc‚莞ŠÔ: %d ŽžŠÔ %d •ª %.0f •b" - IDS_MINUTESECOND "—\‘zŽc‚莞ŠÔ: %d •ª %.0f •b" - IDS_SECOND "—\‘zŽc‚莞ŠÔ: %.0f •b" - IDS_DISK_FULL_ERROR_CAPTION "ƒfƒBƒXƒN‚ª‚¢‚Á‚Ï‚¢‚Å‚·" - IDS_DISK_FULL_ERROR "ƒfƒBƒXƒN‚ª‚¢‚Á‚Ï‚¢‚Ì‚½‚ßAJava ƒJ[ƒlƒ‹‚ª•K—v‚ȃRƒ“ƒ|[ƒlƒ“ƒg‚ðƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B‚à‚¤ˆê“xŽŽ‚µ‚Ü‚·‚©?" - IDS_DISK_WRITE_ERROR_CAPTION "ƒfƒBƒXƒN‘‚«ž‚݃Gƒ‰[" - IDS_DISK_WRITE_ERROR "Java ƒJ[ƒlƒ‹‚ªƒfƒBƒXƒN‚Ö‚Ì‘‚«ž‚ÝŽž‚ɃGƒ‰[‚ðŒŸo‚µ‚Ü‚µ‚½B‚à‚¤ˆê“xŽŽ‚µ‚Ü‚·‚©?" - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java ƒJ[ƒlƒ‹‚ÍA‚¨Žg‚¢‚̃VƒXƒeƒ€‚ÌŒ»Ý‚̃Cƒ“ƒ^[ƒlƒbƒgÚ‘±Ý’è‚ł͓®ì‚µ‚Ü‚¹‚ñBWindows ‚̃Rƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹‚ÅAuƒCƒ“ƒ^[ƒlƒbƒgƒIƒvƒVƒ‡ƒ“v -> uÚ‘±v‚ð‘I‘ð‚µ‚ÄAݒ肨‚æ‚уvƒƒLƒVî•ñ‚ª³‚µ‚¢‚±‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B" - - IDS_DOWNLOAD_RETRY "ƒ_ƒEƒ“ƒ[ƒhƒGƒ‰[" - IDS_DOWNLOAD_RETRY_TEXT "—v‹‚³‚ꂽƒRƒ“ƒ|[ƒlƒ“ƒg‚̈ꕔ‚ðƒ_ƒEƒ“ƒ[ƒh’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½B‚±‚ê‚ç‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚̃_ƒEƒ“ƒ[ƒh‚ðÄ“xŽŽ‚݂܂·‚© ?" - - IDS_DOWNLOAD "’ljÁƒRƒ“ƒ|[ƒlƒ“ƒg‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚Ü‚·" - IDS_DOWNLOAD_UNPACKING "ƒoƒ“ƒhƒ‹‚ð“WŠJ‚µ‚Ä‚¢‚Ü‚·" - IDS_DOWNLOAD_TEXT "Java ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍA•K{‚̒ljÁƒRƒ“ƒ|[ƒlƒ“ƒg‚̃_ƒEƒ“ƒ[ƒh‚¨‚æ‚уCƒ“ƒXƒg[ƒ‹Œã‚É‹N“®‚µ‚Ü‚·B" - - IDS_FILE_UPDATE_ERROR "%s%s ‚ÌXV’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½B" - IDS_FILE_DELETE_ERROR "%s ‚Ì휒†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½B" - IDS_JAVA_HOME_ERROR "Java ƒz[ƒ€ƒfƒBƒŒƒNƒgƒŠ‚ð”»’è‚Å‚«‚Ü‚¹‚ñB" - IDS_KERNEL_HOME_ERROR "jkernel.dll ‚̃pƒX‚ð”»’è‚Å‚«‚Ü‚¹‚ñB" - IDS_JBROKER_ERROR "jbroker.exe ‚ð‹N“®‚Å‚«‚Ü‚¹‚ñB" - IDS_FATAL_ERROR "Java ‚ª•K—v‚ȃRƒ“ƒ|[ƒlƒ“ƒg‚ðƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒvƒƒOƒ‰ƒ€‚ÍI—¹‚µ‚Ü‚·B" - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java ‚ªƒ_ƒEƒ“ƒ[ƒhƒT[ƒo[‚Æ’ÊM‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒvƒƒOƒ‰ƒ€‚ÍI—¹‚µ‚Ü‚·B" - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java ‚ªƒ_ƒEƒ“ƒ[ƒhƒT[ƒo[‚Ƃ̒ÊM’†‚ɃGƒ‰[‚ðŒŸo‚µ‚Ü‚µ‚½BƒvƒƒOƒ‰ƒ€‚ÍI—¹‚µ‚Ü‚·B" - IDS_ERROR_MALFORMED_URL "Java ‚ª URL '%s' ‚©‚çƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒvƒƒOƒ‰ƒ€‚ÍI—¹‚µ‚Ü‚·B" -END diff --git a/jdk/src/windows/native/sun/jkernel/kernel_ko.rc b/jdk/src/windows/native/sun/jkernel/kernel_ko.rc deleted file mode 100644 index 6a6911d3a4c..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_ko.rc +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Ãß°¡ ±¸¼º ¿ä¼Ò ÇÊ¿ä" -EXSTYLE WS_EX_APPWINDOW -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39 - LTEXT "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN, - 0, 39, 340, 1 - LTEXT "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20 - LTEXT "", IDC_TIME_REMAINING, 12, 90, 316, 10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH, - 12, 100, 265, 14 - PUSHBUTTON "Ãë¼Ò", 2, 285, 100, 46, 14 -END -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ÇÊ¿äÇÑ Ãß°¡ ±¸¼º ¿ä¼ÒÀÇ ¼³Ä¡¸¦ Ãë¼ÒÇϸé ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ ¼ö ÀÖ½À´Ï´Ù.\n\nÃß°¡ ±¸¼º ¿ä¼ÒÀÇ ¼³Ä¡¸¦ Ãë¼ÒÇϽðڽÀ´Ï±î?" - IDS_DOWNLOAD_CANCEL_CAPTION "Ãë¼Ò - Ãß°¡ ±¸¼º ¿ä¼Ò" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "¿¬°á ½Ã°£ Ãʰú" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "ÀÎÅͳݿ¡ ¿¬°áÇÒ ¼ö ¾ø½À´Ï´Ù." - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "¼­¹ö ¿À·ù(¿À·ù %s)" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "¼­ºñ½º¸¦ »ç¿ëÇÒ ¼ö ¾øÀ½(¿À·ù %s)" - IDS_HTTP_INSTRUCTION_FORBIDDEN "¾×¼¼½º°¡ °ÅºÎµÇ¾ú°Å³ª ±ÝÁöµÊ(¿À·ù %s)" - IDS_HTTP_STATUS_OTHER "ÀÌ ¿äû µ¿¾È ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù. ¿äûÀ» ´Ù½Ã ½ÃµµÇϽðڽÀ´Ï±î?" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "¼­¹ö°¡ ¿äûÀ» ±â´Ù¸®´Â µ¿¾È ½Ã°£ÀÌ ÃʰúµÇ¾ú½À´Ï´Ù." - IDS_HTTP_STATUS_FORBIDDEN "¼­¹ö°¡ ¿äûÀ» ÀÌÇØÇßÁö¸¸ ÀÌÇàÇϱ⸦ °ÅºÎÇÕ´Ï´Ù." - IDS_HTTP_STATUS_SERVER_ERROR "¼­¹ö¿¡¼­ ¿äû ÀÌÇàÀ» ¹æÇØÇÏ´Â ¿¹»óÄ¡ ¸øÇÑ Á¶°ÇÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù." - IDS_HTTP_STATUS_SERVICE_UNAVAIL "¼­¹ö°¡ ÀϽÃÀûÀ¸·Î °úºÎÇϵǾú½À´Ï´Ù." - - - IDS_DOWNLOAD_STATUS_RETRY "ÇöÀç ¼­¹ö°¡ »ç¿ë ÁßÀ̹ǷΠ%ldÃÊ ÈÄ¿¡ ´Ù½Ã ½ÃµµÇϽʽÿÀ." - - IDS_ERROR_CAPTION "¿À·ù - Java Ä¿³Î" - IDS_HOURSMINUTESECOND "¿¹»óµÈ ³²Àº ½Ã°£: %d½Ã°£ %dºÐ %.0fÃÊ" - IDS_HOURMINUTESECOND "¿¹»óµÈ ³²Àº ½Ã°£: %d½Ã°£ %dºÐ %.0fÃÊ" - IDS_MINUTESECOND "¿¹»óµÈ ³²Àº ½Ã°£: %dºÐ %.0fÃÊ" - IDS_SECOND "¿¹»óµÈ ³²Àº ½Ã°£: %.0fÃÊ" - IDS_DISK_FULL_ERROR_CAPTION "µð½ºÅ©°¡ °¡µæ Âü" - IDS_DISK_FULL_ERROR "µð½ºÅ©°¡ °¡µæ Â÷¼­ Java Kernel¿¡¼­ ÇÊ¿äÇÑ ±¸¼º ¿ä¼Ò¸¦ ´Ù¿î·ÎµåÇÏÁö ¸øÇß½À´Ï´Ù. ´Ù½Ã ½ÃµµÇϽðڽÀ´Ï±î?" - IDS_DISK_WRITE_ERROR_CAPTION "µð½ºÅ© ¾²±â ¿À·ù" - IDS_DISK_WRITE_ERROR "µð½ºÅ©¿¡ ¾²´Â µ¿¾È Java Kernel¿¡¼­ ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù. ´Ù½Ã ½ÃµµÇϽðڽÀ´Ï±î?" - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "½Ã½ºÅÛÀÇ ÇöÀç ÀÎÅÍ³Ý ¿¬°á ¼³Á¤À¸·Î´Â Java KernelÀ» °è¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù. Windows Á¦¾îÆÇ¿¡¼­ ÀÎÅÍ³Ý ¿É¼Ç -> ¿¬°áÀ» ¼±ÅÃÇÏ¿© ¼³Á¤ ¹× ÇÁ·Ï½Ã Á¤º¸°¡ ¿Ã¹Ù¸¥Áö È®ÀÎÇϽʽÿÀ." - - IDS_DOWNLOAD_RETRY "´Ù¿î·Îµå ¿À·ù" - IDS_DOWNLOAD_RETRY_TEXT "¿äûµÈ ±¸¼º ¿ä¼Ò¸¦ ´Ù¿î·ÎµåÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù. ÀÌ ±¸¼º ¿ä¼Ò¸¦ ´Ù½Ã ´Ù¿î·ÎµåÇϽðڽÀ´Ï±î?" - - IDS_DOWNLOAD "Ãß°¡ ±¸¼º ¿ä¼Ò ¼³Ä¡" - IDS_DOWNLOAD_UNPACKING "¹øµé ¾ÐÃà Ç®±â" - IDS_DOWNLOAD_TEXT "ÇÊ¿äÇÑ Ãß°¡ ±¸¼º ¿ä¼Ò°¡ ´Ù¿î·ÎµåµÇ¾î ¼³Ä¡µÇ¸é Java ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ½ÃÀ۵˴ϴÙ." - - IDS_FILE_UPDATE_ERROR "%s%sÀ»(¸¦) ¾÷µ¥ÀÌÆ®ÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù." - IDS_FILE_DELETE_ERROR "%sÀ»(¸¦) Á¦°ÅÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù." - IDS_JAVA_HOME_ERROR "Java Ȩ µð·ºÅ丮¸¦ È®ÀÎÇÒ ¼ö ¾ø½À´Ï´Ù." - IDS_KERNEL_HOME_ERROR "jkernel.dllÀÇ °æ·Î¸¦ È®ÀÎÇÒ ¼ö ¾ø½À´Ï´Ù." - IDS_JBROKER_ERROR "jbroker.exe¸¦ ½ÃÀÛÇÒ ¼ö ¾ø½À´Ï´Ù." - IDS_FATAL_ERROR "ÇÊ¿äÇÑ ±¸¼º ¿ä¼Ò¸¦ ´Ù¿î·ÎµåÇÏÁö ¸øÇß½À´Ï´Ù. ÇÁ·Î±×·¥ÀÌ Á¾·áµË´Ï´Ù." - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "´Ù¿î·Îµå ¼­¹ö¿Í Åë½ÅÇÏÁö ¸øÇß½À´Ï´Ù. ÇÁ·Î±×·¥ÀÌ Á¾·áµË´Ï´Ù." - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "´Ù¿î·Îµå ¼­¹ö¿ÍÀÇ Åë½Å ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù. ÇÁ·Î±×·¥ÀÌ Á¾·áµË´Ï´Ù." - IDS_ERROR_MALFORMED_URL "URL '%s'¿¡¼­ ´Ù¿î·ÎµåÇÏÁö ¸øÇß½À´Ï´Ù. ÇÁ·Î±×·¥ÀÌ Á¾·áµË´Ï´Ù." -END diff --git a/jdk/src/windows/native/sun/jkernel/kernel_pt_BR.rc b/jdk/src/windows/native/sun/jkernel/kernel_pt_BR.rc deleted file mode 100644 index 550847691de..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_pt_BR.rc +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2008, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0,0,340,120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Componentes adicionais necessários" -EXSTYLE WS_EX_APPWINDOW -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD,0,0,340,39 - LTEXT "", IDC_MASTHEAD_TEXT,60,8,225,12 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,0,39,340,1 - LTEXT "", IDC_DOWNLOAD_TEXT,12,60,316,20 - LTEXT "", IDC_TIME_REMAINING,12,90,316,10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH,12,100,265,14 - PUSHBUTTON "Cancelar", 2,285,100,46,14 -END - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "O cancelamento da instalação dos componentes adicionais necessários ao aplicativo pode fazer com que o aplicativo se feche.\n\nTem certeza que deseja cancelar a instalação dos componentes adicionais?" - IDS_DOWNLOAD_CANCEL_CAPTION "Cancelar - Componentes adicionais" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "Tempo limite de conexão excedido" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Não é possível se conectar à Internet" - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "Erro de servidor (Erro %s)" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "Serviço não disponível (Erro %s)" - IDS_HTTP_INSTRUCTION_FORBIDDEN "Acesso negado ou proibido (Erro %s)" - IDS_HTTP_STATUS_OTHER "Ocorreu um erro durante esta solicitação. Deseja tentar a solicitação novamente?" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "O servidor usado para baixar os componentes necessários não está respondendo e o tempo limite da conexão foi excedido. Deseja tentar se conectar novamente?" - IDS_HTTP_STATUS_FORBIDDEN "Você não tem permissão para acessar o servidor para baixar os componentes necessários ao aplicativo. Tentar acessar o servidor novamente?" - IDS_HTTP_STATUS_SERVER_ERROR "Ocorreu um erro no servidor e não foi possível concluir a solicitação. Deseja tentar a solicitação novamente?" - IDS_HTTP_STATUS_SERVICE_UNAVAIL "O serviço solicitado não está disponível temporariamente. Deseja tentar a solicitação novamente?" - - - IDS_DOWNLOAD_STATUS_RETRY "O servidor está ocupado atualmente, tente novamente em %ld segundos ..." - - IDS_ERROR_CAPTION "Instalador Java" - IDS_HOURSMINUTESECOND "Tempo restante estimado: %d horas %d minutos %.0f segundos" - IDS_HOURMINUTESECOND "Tempo restante estimado: %d hora %d minutos %.0f segundos" - IDS_MINUTESECOND "Tempo restante estimado: %d minutos %.0f segundos" - IDS_SECOND "Tempo restante estimado: %.0f segundos" - IDS_DISK_FULL_ERROR_CAPTION "Disco cheio %s" - IDS_DISK_FULL_ERROR "Não há espaço em disco suficiente para baixar os componentes solicitados. Libere espaço em disco e, a seguir, tente novamente." - IDS_DISK_WRITE_ERROR_CAPTION "Não é possível gravar no disco %s" - IDS_DISK_WRITE_ERROR "Ocorreu um erro durante a gravação no disco. Verifique se o disco não está protegido contra gravação." - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "O Java não pode se conectar à Internet. Verifique se as configurações de conexão à Internet estão corretas (isso pode ser encontrado no painel de controle do Windows em Opções de Internet > Conexão) e se o firewall permite que java.exe acesse a Internet." - - IDS_DOWNLOAD_RETRY "Erro de download" - IDS_DOWNLOAD_RETRY_TEXT "Ocorreu um erro durante o download de alguns componentes solicitados. Deseja tentar o download destes componentes novamente?" - - IDS_DOWNLOAD "Instalando componentes adicionais" - IDS_DOWNLOAD_UNPACKING "Descompactando pacotes" - IDS_DOWNLOAD_TEXT "O aplicativo Java se iniciará quando os componentes adicionais que ele precisa tiverem sido baixados e instalados." - - IDS_FILE_UPDATE_ERROR "Ocorreu um erro durante a atualização de %s%s." - IDS_FILE_DELETE_ERROR "Ocorreu um erro durante a remoção de %s%s." - IDS_JAVA_HOME_ERROR "Não é possível determinar o diretório base Java." - IDS_KERNEL_HOME_ERROR "Não é possível determinar o caminho para o jkernel.dll." - IDS_JBROKER_ERROR "Não é possível iniciar jbroker.exe" - IDS_FATAL_ERROR "O Java não pôde baixar os componentes necessários. O programa se fechará agora." - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "O Java não pôde estabelecer comunicação com o servidor de downloads. O programa se fechará agora." - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "O Java encontrou um erro ao estabelecer comunicação com o servidor de downloads. O programa se fechará agora." - IDS_ERROR_MALFORMED_URL "O Java não pôde baixar da URL '%s'. O programa se fechará agora." -END diff --git a/jdk/src/windows/native/sun/jkernel/kernel_sv.rc b/jdk/src/windows/native/sun/jkernel/kernel_sv.rc deleted file mode 100644 index 4fc5832caea..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_sv.rc +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Ytterligare komponenter behövs" -EXSTYLE WS_EX_APPWINDOW -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39 - LTEXT "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN, - 0, 39, 340, 1 - LTEXT "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20 - LTEXT "", IDC_TIME_REMAINING, 12, 90, 316, 10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH, - 12, 100, 265, 14 - PUSHBUTTON "Avbryt", 2, 285, 100, 46, 14 -END -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "Programmet kan avslutas om du avbryter installationen av ytterligare komponenter som är nödvändiga för programmet.\n\nVill du avbryta installationen av ytterligare komponenter?" - IDS_DOWNLOAD_CANCEL_CAPTION "Avbryt - Ytterligare komponenter" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "Anslutningen avbröts på grund av timeout" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Det går inte att ansluta till Internet." - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "Serverfel (Fel %s)" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "Tjänsten är inte tillgänglig (Fel %s)" - IDS_HTTP_INSTRUCTION_FORBIDDEN "Åtkomst nekad eller förbjuden (Fel %s)" - IDS_HTTP_STATUS_OTHER "Ett fel inträffade i samband med begäran. Vill du försöka skicka begäran igen?" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "Ett tidsfel inträffade medan servern väntade på begäran." - IDS_HTTP_STATUS_FORBIDDEN "Servern förstod begäran men vägrar uppfylla den." - IDS_HTTP_STATUS_SERVER_ERROR "Ett oväntat tillstånd som innebär att begäran inte kan uppfyllas påträffades." - IDS_HTTP_STATUS_SERVICE_UNAVAIL "Tjänsten är tillfälligt överbelastad." - - - IDS_DOWNLOAD_STATUS_RETRY "Servern är upptagen för närvarande. Försök igen om %ld sekund(er) ..." - - IDS_ERROR_CAPTION "Fel - Java Kernel" - IDS_HOURSMINUTESECOND "Återstående tid: %d timmar %d minuter %.0f sekunder" - IDS_HOURMINUTESECOND "Återstående tid: %d timme %d minuter %.0f sekunder" - IDS_MINUTESECOND "Återstående tid: %d minuter %.0f sekunder" - IDS_SECOND "Återstående tid: %.0f sekunder" - IDS_DISK_FULL_ERROR_CAPTION "Disken är full" - IDS_DISK_FULL_ERROR "Java Kernel kunde inte ladda ned nödvändiga komponenter därför att disken är full. Försöka igen?" - IDS_DISK_WRITE_ERROR_CAPTION "Fel vid skrivning till disk" - IDS_DISK_WRITE_ERROR "Java Kernel stötte på ett fel vid skrivning till disken. Försöka igen?" - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java Kernel kan inte fortsätta med systemets aktuella inställningar för Internetanslutning. Öppna Kontrollpanelen, Internet-alternativ > Anslutningar och kontrollera att inställningarna och proxyinformationen stämmer." - - IDS_DOWNLOAD_RETRY "Nedladdningsfel" - IDS_DOWNLOAD_RETRY_TEXT "Ett fel uppstod under nedladdning av vissa begärda komponenter. Vill du försöka ladda ned dessa komponenter igen?" - - IDS_DOWNLOAD "Ytterligare komponenter installeras" - IDS_DOWNLOAD_UNPACKING "Uppackning av paket" - IDS_DOWNLOAD_TEXT "Java-applikationen startar när ytterligare komponenter som krävs är nedladdade och installerade." - - IDS_FILE_UPDATE_ERROR "Ett fel uppstod när %s%s uppdaterades." - IDS_FILE_DELETE_ERROR "Ett fel uppstod när %s skulle tas bort." - IDS_JAVA_HOME_ERROR "Det går inte att avgöra Javas hemkatalog" - IDS_KERNEL_HOME_ERROR "Det går inte att avgöra sökvägen till jkernell.dll." - IDS_JBROKER_ERROR "Det går inte att starta jbroker.exe." - IDS_FATAL_ERROR "Det gick inte att ladda ned de nödvändiga komponenterna med Java. Programmet avslutas." - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Det gick inte att upprätta någon kommunikation mellan Java och nedladdningsservern. Programmet avslutas." - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Det uppstod ett fel i kommunikationen mellan Java och nedladdningsservern. Programmet avslutas." - IDS_ERROR_MALFORMED_URL "Det gick inte att ladda ned från webbadressen '%s'. Programmet avslutas." -END diff --git a/jdk/src/windows/native/sun/jkernel/kernel_zh.rc b/jdk/src/windows/native/sun/jkernel/kernel_zh.rc deleted file mode 100644 index e1f0620fb8f..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_zh.rc +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "ËùÐèµÄÆäËû×é¼þ" -EXSTYLE WS_EX_APPWINDOW -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39 - LTEXT "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN, - 0, 39, 340, 1 - LTEXT "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20 - LTEXT "", IDC_TIME_REMAINING, 12, 90, 316, 10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH, - 12, 100, 265, 14 - PUSHBUTTON "È¡Ïû", 2, 285, 100, 46, 14 -END -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "È¡Ïû°²×°Ó¦ÓóÌÐòËùÐèµÄ¶îÍâ×é¼þ¿ÉÄܻᵼÖ¸ÃÓ¦ÓóÌÐòÍ˳ö¡£\n\nÊÇ·ñÈ·¶¨ÒªÈ¡Ïû°²×°¶îÍâ×é¼þ£¿" - IDS_DOWNLOAD_CANCEL_CAPTION "È¡Ïû - ¶îÍâ×é¼þ" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "Á¬½ÓÒѳ¬Ê±" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "ÎÞ·¨Á¬½Óµ½ Internet" - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "·þÎñÆ÷´íÎ󣨴íÎó %s£©" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "·þÎñ²»¿ÉÓ㨴íÎó %s£©" - IDS_HTTP_INSTRUCTION_FORBIDDEN "¾Ü¾ø·ÃÎÊ»ò½ûÖ¹·ÃÎÊ£¨´íÎó %s£©" - IDS_HTTP_STATUS_OTHER "ÔÚ´ËÇëÇóÆÚ¼ä³öÏÖ´íÎó¡£ÄúÊÇ·ñÒªÖØÊÔÇëÇó£¿" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "·þÎñÆ÷µÈ´ýÇëÇóʱ³¬Ê±¡£" - IDS_HTTP_STATUS_FORBIDDEN "·þÎñÆ÷ÒѽÓÊÜÇëÇ󣬵«¾Ü¾øÖ´ÐС£" - IDS_HTTP_STATUS_SERVER_ERROR "·þÎñÆ÷Óöµ½ÒâÍâÇé¿ö£¬ÎÞ·¨Íê³ÉÇëÇó¡£" - IDS_HTTP_STATUS_SERVICE_UNAVAIL "·þÎñÔÝʱ¹ýÔØ¡£" - - - IDS_DOWNLOAD_STATUS_RETRY "·þÎñÆ÷Õý棬ÇëÔÚ %ld ÃëºóÖØÊÔ..." - - IDS_ERROR_CAPTION "´íÎó - Java Kernel" - IDS_HOURSMINUTESECOND "¹À¼ÆÊ£Óàʱ¼ä:%d Сʱ %d ·ÖÖÓ %.0f Ãë" - IDS_HOURMINUTESECOND "¹À¼ÆÊ£Óàʱ¼ä:%d Сʱ %d ·ÖÖÓ %.0f Ãë" - IDS_MINUTESECOND "¹À¼ÆÊ£Óàʱ¼ä:%d ·ÖÖÓ %.0f Ãë" - IDS_SECOND "¹À¼ÆÊ£Óàʱ¼ä:%.0f Ãë" - IDS_DISK_FULL_ERROR_CAPTION "´ÅÅÌÒÑÂú" - IDS_DISK_FULL_ERROR "ÓÉÓÚ´ÅÅÌÒÑÂú£¬Java Kernel ÎÞ·¨ÏÂÔØËùÐèµÄ×é¼þ¡£ÊÇ·ñÖØÊÔ£¿" - IDS_DISK_WRITE_ERROR_CAPTION "´ÅÅÌдÈë´íÎó" - IDS_DISK_WRITE_ERROR "ÔÚÏò´ÅÅÌÖ´ÐÐдÈë²Ù×÷ʱ Java Kernel Óöµ½´íÎó¡£ÊÇ·ñÖØÊÔ£¿" - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "ÔÚʹÓÃϵͳµ±Ç°µÄ Internet Á¬½ÓÉèÖõÄÇé¿öÏ£¬Java Kernel ÎÞ·¨¼ÌÐøÖ´ÐС£ÔÚ Windows""¿ØÖÆÃæ°å""ÖУ¬Çë¼ì²é""Internet Ñ¡Ïî""->""Á¬½Ó""ÒÔÈ·±£ÉèÖúʹúÀíÐÅÏ¢ÕýÈ·¡£" - - IDS_DOWNLOAD_RETRY "ÏÂÔØ´íÎó" - IDS_DOWNLOAD_RETRY_TEXT "ÔÚÏÂÔØÄ³Ð©ÇëÇóµÄ×é¼þÆÚ¼ä·¢Éú´íÎó¡£ÊÇ·ñÒªÔÙÊÔÒ»´ÎÏÂÔØÕâЩ×é¼þ£¿" - - IDS_DOWNLOAD "°²×°ÆäËû×é¼þ" - IDS_DOWNLOAD_UNPACKING "ÕýÔÚ½âѹËõ°ü" - IDS_DOWNLOAD_TEXT "ÏÂÔØ²¢°²×° Java Ó¦ÓóÌÐòËùÐèµÄÆäËû×é¼þºó£¬¸ÃÓ¦ÓóÌÐò½«Æô¶¯¡£" - - IDS_FILE_UPDATE_ERROR "¸üР%s%s ʱ·¢Éú´íÎó¡£" - IDS_FILE_DELETE_ERROR "ɾ³ý %s ʱ·¢Éú´íÎó¡£" - IDS_JAVA_HOME_ERROR "ÎÞ·¨È·¶¨ Java Ö÷Ŀ¼¡£" - IDS_KERNEL_HOME_ERROR "ÎÞ·¨È·¶¨ jkernel.dll µÄ·¾¶¡£" - IDS_JBROKER_ERROR "ÎÞ·¨Æô¶¯ jbroker.exe¡£" - IDS_FATAL_ERROR "Java ÎÞ·¨ÏÂÔØËùÐèµÄ×é¼þ¡£ÏÖÔÚ³ÌÐò½«Í˳ö¡£" - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java ÎÞ·¨ÓëÏÂÔØ·þÎñÆ÷½øÐÐͨÐÅ¡£ÏÖÔÚ³ÌÐò½«Í˳ö¡£" - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java ÔÚÓëÏÂÔØ·þÎñÆ÷½øÐÐͨÐÅʱÓöµ½´íÎó¡£ÏÖÔÚ³ÌÐò½«Í˳ö¡£" - IDS_ERROR_MALFORMED_URL "Java ÎÞ·¨´Ó URL '%s' Ö´ÐÐÏÂÔØ¡£ÏÖÔÚ³ÌÐò½«Í˳ö¡£" -END diff --git a/jdk/src/windows/native/sun/jkernel/kernel_zh_TW.rc b/jdk/src/windows/native/sun/jkernel/kernel_zh_TW.rc deleted file mode 100644 index 6bae5a15113..00000000000 --- a/jdk/src/windows/native/sun/jkernel/kernel_zh_TW.rc +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120 -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "©Ò»Ýªº¨ä¥L¤¸¥ó" -EXSTYLE WS_EX_APPWINDOW -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39 - LTEXT "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12 - CONTROL "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN, - 0, 39, 340, 1 - LTEXT "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20 - LTEXT "", IDC_TIME_REMAINING, 12, 90, 316, 10 - CONTROL "Progress1",1006,"msctls_progress32",PBS_SMOOTH, - 12, 100, 265, 14 - PUSHBUTTON "¨ú®ø", 2, 285, 100, 46, 14 -END -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - 105, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 236 - TOPMARGIN, 7 - BOTTOMMARGIN, 63 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DOWNLOAD_CANCEL_MESSAGE "¨ú®ø¦w¸ËÀ³¥Îµ{¦¡©Ò»Ýªº¨ä¥L¤¸¥ó¡A¥i¯à·|¾É­PÀ³¥Îµ{¦¡µ²§ô¡C\n\n±z½T©w­n¨ú®ø¦w¸Ë¨ä¥L¤¸¥ó¡H" - IDS_DOWNLOAD_CANCEL_CAPTION "¨ú®ø - ¨ä¥L¤¸¥ó" - IDS_DOWNLOAD_CANCEL_INSTRUCTION "" - IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT "³s½u¹O®É" - IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "µLªk³s½u¦Üºô»Úºô¸ô" - IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR "¦øªA¾¹¿ù»~ (¿ù»~ %s)" - IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL "µLªk¨Ï¥ÎªA°È (¿ù»~ %s)" - IDS_HTTP_INSTRUCTION_FORBIDDEN "©Úµ´©Î¸T¤î¦s¨ú (¿ù»~ %s)" - IDS_HTTP_STATUS_OTHER "¦b¦¹½Ð¨D´Á¶¡µo¥Í¿ù»~¡C¬O§_­n­«¸Õ½Ð¨D¡H" - -// HTTP status code - IDS_HTTP_STATUS_REQUEST_TIMEOUT "¦øªA¾¹µ¥«Ý½Ð¨D®É¥X²{¹O®É¡C" - IDS_HTTP_STATUS_FORBIDDEN "¦øªA¾¹ÁA¸Ñ¸Ó½Ð¨D¡A¦ý¥¿¦b©Úµ´¹ê²{¥¦¡C" - IDS_HTTP_STATUS_SERVER_ERROR "¦øªA¾¹¹J¨ìªý¤î¨ä¹ê²{½Ð¨Dªº¥¼¹w´Á±ø¥ó¡C" - IDS_HTTP_STATUS_SERVICE_UNAVAIL "ªA°È¼È®É¶W¸ü¡C" - - - IDS_DOWNLOAD_STATUS_RETRY "¦øªA¾¹¥Ø«e³B©ó¦£¸Lª¬ºA¡A½Ð¦b %ld ¬í«á­«¸Õ..." - - IDS_ERROR_CAPTION "¿ù»~ - Java Kernel" - IDS_HOURSMINUTESECOND "¹w¦ô³Ñ¾l®É¶¡¡G%d ¤p®É %d ¤À %.0f ¬í" - IDS_HOURMINUTESECOND "¹w¦ô³Ñ¾l®É¶¡¡G%d ¤p®É %d ¤À %.0f ¬í" - IDS_MINUTESECOND "¹w¦ô³Ñ¾l®É¶¡¡G%d ¤À %.0f ¬í" - IDS_SECOND "¹w¦ô³Ñ¾l®É¶¡¡G%.0f ¬í" - IDS_DISK_FULL_ERROR_CAPTION "ºÏºÐ¤wº¡" - IDS_DISK_FULL_ERROR "¥Ñ©óºÏºÐ¤wº¡¡AJava Kernel µLªk¤U¸ü©Ò»Ýªº¤¸¥ó¡C¬O§_­n­«¸Õ¡H" - IDS_DISK_WRITE_ERROR_CAPTION "ºÏºÐ¼g¤J¿ù»~" - IDS_DISK_WRITE_ERROR "Java Kernel ¦b¼g¤J¦ÜºÏºÐ®É¹J¨ì¿ù»~¡C¬O§_­n­«¸Õ¡H" - IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "¦b¨t²Î¥Ø«eªººô»Úºô¸ô³s½u³]©w¤U¡AJava Kernel µLªkÄ~Äò°õ¦æ¡C¦b Windows¡u±±¨î¥x¡v¤¤¡A½Ð®Ö¹ï¡uºô»Úºô¸ô¿ï¶µ¡v->¡u³s½u¡v¡A¥H½T©w³]©w©M¥N²z¦øªA¾¹¸ê°T¥¿½T¡C" - - IDS_DOWNLOAD_RETRY "¤U¸ü¿ù»~" - IDS_DOWNLOAD_RETRY_TEXT "¤U¸ü¬Y¨Ç©Ò»Ý¤¸¥ó®Éµo¥Í¿ù»~¡C¬O§_­n­«¸Õ¤U¸ü³o¨Ç¤¸¥ó¡H" - - IDS_DOWNLOAD "¥¿¦b¦w¸Ë¨ä¥L¤¸¥ó" - IDS_DOWNLOAD_UNPACKING "¥¿¦b¸ÑÀ£ÁY§ô" - IDS_DOWNLOAD_TEXT "¤U¸ü¨Ã¦w¸Ë¨ä¥L©Ò»Ý¤¸¥ó«á¡AJava À³¥Îµ{¦¡±N±Ò°Ê¡C" - - IDS_FILE_UPDATE_ERROR "§ó·s %s%s ®Éµo¥Í¿ù»~¡C" - IDS_FILE_DELETE_ERROR "²¾°£ %s ®Éµo¥Í¿ù»~¡C" - IDS_JAVA_HOME_ERROR "µLªk½T©w Java ¥D¥Ø¿ý¡C" - IDS_KERNEL_HOME_ERROR "µLªk½T©w jkernel.dll ªº¸ô®|¡C" - IDS_JBROKER_ERROR "µLªk±Ò°Ê jbroker.exe¡C" - IDS_FATAL_ERROR "Java µLªk¤U¸ü©Ò»Ýªº¤¸¥ó¡Cµ{¦¡±N¥ß§Yµ²§ô¡C" - IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java µLªk»P¤U¸ü¦øªA¾¹¶i¦æ³q°T¡Cµ{¦¡±N¥ß§Yµ²§ô¡C" - IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java ¦b»P¤U¸ü¦øªA¾¹¶i¦æ³q°T®É¹J¨ì¤F¤@­Ó¿ù»~¡Cµ{¦¡±N¥ß§Yµ²§ô¡C" - IDS_ERROR_MALFORMED_URL "Java µLªk±q URL¡u%s¡v¤U¸ü¡Cµ{¦¡±N¥ß§Yµ²§ô¡C" -END diff --git a/jdk/src/windows/native/sun/jkernel/resource.h b/jdk/src/windows/native/sun/jkernel/resource.h deleted file mode 100644 index b5563206132..00000000000 --- a/jdk/src/windows/native/sun/jkernel/resource.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// -// - - -// HTTP status code -#define IDS_HTTP_STATUS_FORBIDDEN 403 -#define IDS_HTTP_STATUS_REQUEST_TIMEOUT 408 -#define IDS_HTTP_STATUS_SERVER_ERROR 500 -#define IDS_HTTP_STATUS_SERVICE_UNAVAIL 503 - - - -#define IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT 2408 -#define IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL 2503 -#define IDS_HTTP_INSTRUCTION_FORBIDDEN 2403 -#define IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE 2035 -#define IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR 2036 -#define IDS_HTTP_STATUS_OTHER 2037 - -#define IDS_DOWNLOAD_STATUS_RETRY 3004 - -#define IDD_DOWNLOAD_DIALOG 105 -#define IDI_JAVA 114 -#define IDI_MASTHEAD 115 -#define IDC_DOWNLOAD_PROGRESS 1006 -#define IDC_DOWNLOAD_INFO 1007 -#define IDC_DOWNLOAD_STATUS 1008 -#define IDC_DOWNLOAD_ANIMATE 1009 -#define IDS_ERROR_CAPTION 2004 -#define IDS_HOURSMINUTESECOND 2007 -#define IDS_HOURMINUTESECOND 2008 -#define IDS_MINUTESECOND 2009 -#define IDS_SECOND 2010 -#define IDS_DISK_FULL_ERROR 2023 -#define IDS_DISK_FULL_ERROR_CAPTION 2024 -#define IDS_DISK_WRITE_ERROR 2025 -#define IDS_DISK_WRITE_ERROR_CAPTION 2026 -#define IDS_HTTP_STATUS_SERVER_NOT_REACHABLE 2028 -#define IDS_FATAL_ERROR 2029 -#define IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES 2030 -#define IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES 2031 -#define IDS_ERROR_MALFORMED_URL 2032 - -#define IDS_DOWNLOAD_CANCEL_CAPTION 2038 -#define IDS_DOWNLOAD_CANCEL_INSTRUCTION 2039 -#define IDS_DOWNLOAD_CANCEL_MESSAGE 2040 - -// codes for download and install dialog -#define IDC_MASTHEAD_TEXT 116 -#define IDC_DOWNLOAD_MASTHEAD 121 -#define IDC_TIME_REMAINING 122 -#define IDC_DOWNLOAD_TEXT 123 - -// codes for download retry dialog -#define IDS_DOWNLOAD_RETRY 130 -#define IDS_DOWNLOAD_RETRY_TEXT 131 - -#define IDS_DOWNLOAD_UNPACKING 3900 -#define IDS_DOWNLOAD 4000 -#define IDS_DOWNLOAD_TEXT 4001 - -// codes for completion cleanup -#define IDS_FILE_UPDATE_ERROR 4101 -#define IDS_FILE_DELETE_ERROR 4103 -#define IDS_JAVA_HOME_ERROR 4104 -#define IDS_KERNEL_HOME_ERROR 4105 -#define IDS_JBROKER_ERROR 4106 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 128 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1016 -#define _APS_NEXT_SYMED_VALUE 103 -#endif -#endif diff --git a/jdk/src/windows/native/sun/jkernel/stdafx.cpp b/jdk/src/windows/native/sun/jkernel/stdafx.cpp deleted file mode 100644 index 65bb96520da..00000000000 --- a/jdk/src/windows/native/sun/jkernel/stdafx.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -// stdafx.cpp : source file that includes just the standard includes -// stdafx.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -#ifdef _ATL_STATIC_REGISTRY -#include -#include -#endif - -#include diff --git a/jdk/src/windows/native/sun/jkernel/stdafx.h b/jdk/src/windows/native/sun/jkernel/stdafx.h deleted file mode 100644 index f25b5115ca3..00000000000 --- a/jdk/src/windows/native/sun/jkernel/stdafx.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2008, 2010, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, -// but are changed infrequently - -#if !defined(AFX_STDAFX_H__FBC6C744_18F8_11D6_9DF1_0001023B10AA__INCLUDED_) -#define AFX_STDAFX_H__FBC6C744_18F8_11D6_9DF1_0001023B10AA__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#define STRICT -#ifndef _WIN32_WINNT -/* REMIND : 0x500 means Windows 2000 .. seems like we can update - * for Windows XP when we move the SDK and build platform - */ -#define _WIN32_WINNT 0x0500 -#endif -#define _ATL_APARTMENT_THREADED - -#include -//You may derive a class from CComModule and use it if you want to override -//something, but do not change the name of _Module -extern CComModule _Module; -#include -#include - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_STDAFX_H__FBC6C744_18F8_11D6_9DF1_0001023B10AA__INCLUDED) diff --git a/jdk/src/windows/native/sun/jkernel/version.rc b/jdk/src/windows/native/sun/jkernel/version.rc deleted file mode 100644 index f2df9e56e30..00000000000 --- a/jdk/src/windows/native/sun/jkernel/version.rc +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * 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. - */ - -#include "afxres.h" - -// Need 2 defines so macro argument to XSTR will get expanded before quoting. -#define XSTR(x) STR(x) -#define STR(x) #x - -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION JDK_FVER - PRODUCTVERSION JDK_FVER - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - // FILEOS 0x4 is Win32, 0x40004 is Win32 NT only - FILEOS 0x4L - // FILETYPE should be 0x1 for .exe and 0x2 for .dll - FILETYPE JDK_FTYPE - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "CompanyName", XSTR(JDK_COMPANY) "\0" - VALUE "FileDescription", XSTR(JDK_COMPONENT) "\0" - VALUE "FileVersion", XSTR(JDK_VER) "\0" - VALUE "Full Version", XSTR(JDK_BUILD_ID) "\0" - VALUE "InternalName", XSTR(JDK_INTERNAL_NAME) "\0" - VALUE "LegalCopyright", XSTR(JDK_COPYRIGHT) "\0" - VALUE "OriginalFilename", XSTR(JDK_FNAME) "\0" - VALUE "ProductName", XSTR(JDK_NAME) "\0" - VALUE "ProductVersion", XSTR(JDK_VER) "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200 - END -END diff --git a/jdk/src/windows/native/sun/nio/ch/Iocp.c b/jdk/src/windows/native/sun/nio/ch/Iocp.c index d962c166caa..773a870ca2b 100644 --- a/jdk/src/windows/native/sun/nio/ch/Iocp.c +++ b/jdk/src/windows/native/sun/nio/ch/Iocp.c @@ -72,9 +72,10 @@ JNIEXPORT jlong JNICALL Java_sun_nio_ch_Iocp_createIoCompletionPort(JNIEnv* env, jclass this, jlong handle, jlong existingPort, jint completionKey, jint concurrency) { + ULONG_PTR ck = completionKey; HANDLE port = CreateIoCompletionPort((HANDLE)jlong_to_ptr(handle), (HANDLE)jlong_to_ptr(existingPort), - (DWORD)completionKey, + ck, (DWORD)concurrency); if (port == NULL) { JNU_ThrowIOExceptionWithLastError(env, "CreateIoCompletionPort failed"); @@ -96,7 +97,7 @@ Java_sun_nio_ch_Iocp_getQueuedCompletionStatus(JNIEnv* env, jclass this, jlong completionPort, jobject obj) { DWORD bytesTransferred; - DWORD completionKey; + ULONG_PTR completionKey; OVERLAPPED *lpOverlapped; BOOL res; diff --git a/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c b/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c index a07718e480d..6d082271015 100644 --- a/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c +++ b/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c @@ -51,7 +51,7 @@ Java_sun_nio_fs_RegistryFileTypeDetector_queryStringValue(JNIEnv* env, jclass th res = RegQueryValueExW(hKey, lpValueName, NULL, &type, (LPBYTE)&data, &size); if (res == ERROR_SUCCESS) { if (type == REG_SZ) { - jsize len = wcslen((WCHAR*)data); + jsize len = (jsize)wcslen((WCHAR*)data); result = (*env)->NewString(env, (const jchar*)&data, len); } } diff --git a/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c b/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c index 61a63b484e5..d9d8a9d7cb2 100644 --- a/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c +++ b/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c @@ -368,7 +368,7 @@ Java_sun_nio_fs_WindowsNativeDispatcher_FindFirstFile0(JNIEnv* env, jclass this, HANDLE handle = FindFirstFileW(lpFileName, &data); if (handle != INVALID_HANDLE_VALUE) { - jstring name = (*env)->NewString(env, data.cFileName, wcslen(data.cFileName)); + jstring name = (*env)->NewString(env, data.cFileName, (jsize)wcslen(data.cFileName)); if (name == NULL) return; (*env)->SetLongField(env, obj, findFirst_handle, ptr_to_jlong(handle)); @@ -401,7 +401,7 @@ Java_sun_nio_fs_WindowsNativeDispatcher_FindNextFile(JNIEnv* env, jclass this, WIN32_FIND_DATAW* data = (WIN32_FIND_DATAW*)jlong_to_ptr(dataAddress); if (FindNextFileW(h, data) != 0) { - return (*env)->NewString(env, data->cFileName, wcslen(data->cFileName)); + return (*env)->NewString(env, data->cFileName, (jsize)wcslen(data->cFileName)); } else { if (GetLastError() != ERROR_NO_MORE_FILES) throwWindowsException(env, GetLastError()); @@ -424,7 +424,7 @@ Java_sun_nio_fs_WindowsNativeDispatcher_FindFirstStream0(JNIEnv* env, jclass thi handle = (*FindFirstStream_func)(lpFileName, FindStreamInfoStandard, &data, 0); if (handle != INVALID_HANDLE_VALUE) { - jstring name = (*env)->NewString(env, data.cStreamName, wcslen(data.cStreamName)); + jstring name = (*env)->NewString(env, data.cStreamName, (jsize)wcslen(data.cStreamName)); if (name == NULL) return; (*env)->SetLongField(env, obj, findStream_handle, ptr_to_jlong(handle)); @@ -452,7 +452,7 @@ Java_sun_nio_fs_WindowsNativeDispatcher_FindNextStream(JNIEnv* env, jclass this, } if ((*FindNextStream_func)(h, &data) != 0) { - return (*env)->NewString(env, data.cStreamName, wcslen(data.cStreamName)); + return (*env)->NewString(env, data.cStreamName, (jsize)wcslen(data.cStreamName)); } else { if (GetLastError() != ERROR_HANDLE_EOF) throwWindowsException(env, GetLastError()); @@ -1224,9 +1224,10 @@ JNIEXPORT jlong JNICALL Java_sun_nio_fs_WindowsNativeDispatcher_CreateIoCompletionPort(JNIEnv* env, jclass this, jlong fileHandle, jlong existingPort, jint completionKey) { + ULONG_PTR ck = completionKey; HANDLE port = CreateIoCompletionPort((HANDLE)jlong_to_ptr(fileHandle), (HANDLE)jlong_to_ptr(existingPort), - (DWORD)completionKey, + ck, 0); if (port == NULL) { throwWindowsException(env, GetLastError()); @@ -1239,7 +1240,7 @@ Java_sun_nio_fs_WindowsNativeDispatcher_GetQueuedCompletionStatus0(JNIEnv* env, jlong completionPort, jobject obj) { DWORD bytesTransferred; - DWORD completionKey; + ULONG_PTR completionKey; OVERLAPPED *lpOverlapped; BOOL res; diff --git a/jdk/test/com/sun/jndi/ldap/LdapName/Case.java b/jdk/test/com/sun/jndi/ldap/LdapName/Case.java index 774d93bdf29..e37b8d9ff86 100644 --- a/jdk/test/com/sun/jndi/ldap/LdapName/Case.java +++ b/jdk/test/com/sun/jndi/ldap/LdapName/Case.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2011, 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 4278094 diff --git a/jdk/test/com/sun/jndi/ldap/LdapName/EmptyNameSearch.java b/jdk/test/com/sun/jndi/ldap/LdapName/EmptyNameSearch.java new file mode 100644 index 00000000000..8a69abdc82f --- /dev/null +++ b/jdk/test/com/sun/jndi/ldap/LdapName/EmptyNameSearch.java @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2011, 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 6997561 + * @summary A request for better error handling in JNDI + */ + +import java.net.Socket; +import java.net.ServerSocket; +import java.io.*; +import javax.naming.*; +import javax.naming.directory.*; +import javax.naming.ldap.*; +import java.util.Collections; +import java.util.Hashtable; + +public class EmptyNameSearch { + + public static void main(String[] args) throws Exception { + + // Start the LDAP server + Server s = new Server(); + s.start(); + Thread.sleep(3000); + + // Setup JNDI parameters + Hashtable env = new Hashtable(); + env.put(Context.INITIAL_CONTEXT_FACTORY, + "com.sun.jndi.ldap.LdapCtxFactory"); + env.put(Context.PROVIDER_URL, "ldap://localhost:" + s.getPortNumber()); + + try { + + // Create initial context + System.out.println("Client: connecting..."); + DirContext ctx = new InitialDirContext(env); + + System.out.println("Client: performing search..."); + ctx.search(new LdapName(Collections.EMPTY_LIST), "cn=*", null); + ctx.close(); + + // Exit + throw new RuntimeException(); + + } catch (NamingException e) { + System.err.println("Passed: caught the expected Exception - " + e); + + } catch (Exception e) { + System.err.println("Failed: caught an unexpected Exception - " + e); + throw e; + } + } + + static class Server extends Thread { + + private int serverPort = 0; + private byte[] bindResponse = { + 0x30, 0x0C, 0x02, 0x01, 0x01, 0x61, 0x07, 0x0A, + 0x01, 0x00, 0x04, 0x00, 0x04, 0x00 + }; + private byte[] searchResponse = { + 0x30, 0x0C, 0x02, 0x01, 0x02, 0x65, 0x07, 0x0A, + 0x01, 0x02, 0x04, 0x00, 0x04, 0x00 + }; + + Server() { + } + + public int getPortNumber() { + return serverPort; + } + + public void run() { + try { + ServerSocket serverSock = new ServerSocket(0); + serverPort = serverSock.getLocalPort(); + System.out.println("Server: listening on port " + serverPort); + + Socket socket = serverSock.accept(); + System.out.println("Server: connection accepted"); + + InputStream in = socket.getInputStream(); + OutputStream out = socket.getOutputStream(); + + // Read the LDAP BindRequest + System.out.println("Server: reading request..."); + while (in.read() != -1) { + in.skip(in.available()); + break; + } + + // Write an LDAP BindResponse + System.out.println("Server: writing response..."); + out.write(bindResponse); + out.flush(); + + // Read the LDAP SearchRequest + System.out.println("Server: reading request..."); + while (in.read() != -1) { + in.skip(in.available()); + break; + } + + // Write an LDAP SearchResponse + System.out.println("Server: writing response..."); + out.write(searchResponse); + out.flush(); + + in.close(); + out.close(); + socket.close(); + serverSock.close(); + + } catch (IOException e) { + // ignore + } + } + } +} diff --git a/jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java b/jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java index a2f2821dd23..75ded9c80cb 100644 --- a/jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java +++ b/jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2011, 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 4892070 diff --git a/jdk/test/com/sun/jndi/ldap/ReadTimeoutTest.java b/jdk/test/com/sun/jndi/ldap/ReadTimeoutTest.java index bf21c10ad52..b5349da69c2 100644 --- a/jdk/test/com/sun/jndi/ldap/ReadTimeoutTest.java +++ b/jdk/test/com/sun/jndi/ldap/ReadTimeoutTest.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2011, 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 6176036 diff --git a/jdk/test/demo/zipfs/Basic.java b/jdk/test/demo/zipfs/Basic.java index 8341b939273..c0e478bc8f2 100644 --- a/jdk/test/demo/zipfs/Basic.java +++ b/jdk/test/demo/zipfs/Basic.java @@ -48,9 +48,9 @@ public class Basic { if (!found) throw new RuntimeException("'jar' provider not installed"); - // Test: FileSystems#newFileSystem(FileRef) + // Test: FileSystems#newFileSystem(Path) Map env = new HashMap(); - FileSystems.newFileSystem(zipfile, env, null).close(); + FileSystems.newFileSystem(zipfile, null).close(); // Test: FileSystems#newFileSystem(URI) URI uri = new URI("jar", zipfile.toUri().toString(), null); @@ -69,14 +69,11 @@ public class Basic { // Test: DirectoryStream found = false; - DirectoryStream stream = fs.getPath("/").newDirectoryStream(); - try { + try (DirectoryStream stream = Files.newDirectoryStream(fs.getPath("/"))) { for (Path entry: stream) { found = entry.toString().equals("/META-INF/"); if (found) break; } - } finally { - stream.close(); } if (!found) @@ -84,21 +81,21 @@ public class Basic { // Test: copy file from zip file to current (scratch) directory Path source = fs.getPath("/META-INF/services/java.nio.file.spi.FileSystemProvider"); - if (source.exists()) { - Path target = Paths.get(source.getName().toString()); - source.copyTo(target, StandardCopyOption.REPLACE_EXISTING); + if (Files.exists(source)) { + Path target = Paths.get(source.getFileName().toString()); + Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING); try { - long s1 = Attributes.readBasicFileAttributes(source).size(); - long s2 = Attributes.readBasicFileAttributes(target).size(); + long s1 = Files.readAttributes(source, BasicFileAttributes.class).size(); + long s2 = Files.readAttributes(target, BasicFileAttributes.class).size(); if (s2 != s1) throw new RuntimeException("target size != source size"); } finally { - target.delete(); + Files.delete(target); } } // Test: FileStore - FileStore store = fs.getPath("/").getFileStore(); + FileStore store = Files.getFileStore(fs.getPath("/")); if (!store.supportsFileAttributeView("basic")) throw new RuntimeException("BasicFileAttributeView should be supported"); @@ -107,7 +104,7 @@ public class Basic { if (fs.isOpen()) throw new RuntimeException("FileSystem should be closed"); try { - fs.getPath("/missing").checkAccess(AccessMode.READ); + fs.provider().checkAccess(fs.getPath("/missing"), AccessMode.READ); } catch (ClosedFileSystemException x) { } } @@ -125,9 +122,9 @@ public class Basic { public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) { - if (dir.getName() != null) { + if (dir.getFileName() != null) { indent(); - System.out.println(dir.getName() + "/"); + System.out.println(dir.getFileName() + "/"); indent++; } return FileVisitResult.CONTINUE; @@ -138,7 +135,7 @@ public class Basic { BasicFileAttributes attrs) { indent(); - System.out.print(file.getName()); + System.out.print(file.getFileName()); if (attrs.isRegularFile()) System.out.format(" (%d)", attrs.size()); System.out.println(); @@ -151,7 +148,7 @@ public class Basic { { if (exc != null) super.postVisitDirectory(dir, exc); - if (dir.getName() != null) + if (dir.getFileName() != null) indent--; return FileVisitResult.CONTINUE; } diff --git a/jdk/test/demo/zipfs/PathOps.java b/jdk/test/demo/zipfs/PathOps.java index 64b78e64ce4..ea097396dbb 100644 --- a/jdk/test/demo/zipfs/PathOps.java +++ b/jdk/test/demo/zipfs/PathOps.java @@ -100,7 +100,7 @@ public class PathOps { PathOps name(String expected) { out.println("check name"); checkPath(); - check(path.getName(), expected); + check(path.getFileName(), expected); return this; } @@ -197,7 +197,7 @@ public class PathOps { try { out.println("check two paths are same"); checkPath(); - check(path.isSameFile(test(target).path()), true); + check(Files.isSameFile(path, test(target).path()), true); } catch (IOException ioe) { fail(); } @@ -252,31 +252,41 @@ public class PathOps { .name("foo"); // startsWith + test("") + .starts("") + .notStarts("/"); test("/") .starts("/") .notStarts("/foo"); test("/foo") .starts("/") .starts("/foo") - .notStarts("/f"); + .notStarts("/f") + .notStarts(""); test("/foo/bar") .starts("/") .starts("/foo") + .starts("/foo/") .starts("/foo/bar") .notStarts("/f") .notStarts("foo") - .notStarts("foo/bar"); + .notStarts("foo/bar") + .notStarts(""); test("foo") .starts("foo") .notStarts("f"); test("foo/bar") .starts("foo") + .starts("foo/") .starts("foo/bar") .notStarts("f") .notStarts("/foo") .notStarts("/foo/bar"); // endsWith + test("") + .ends("") + .notEnds("/"); test("/") .ends("/") .notEnds("foo") @@ -288,14 +298,24 @@ public class PathOps { test("/foo/bar") .ends("bar") .ends("foo/bar") + .ends("foo/bar/") + .ends("/foo/bar") + .notEnds("/bar"); + test("/foo/bar/") + .ends("bar") + .ends("foo/bar") + .ends("foo/bar/") .ends("/foo/bar") .notEnds("/bar"); test("foo") .ends("foo"); test("foo/bar") .ends("bar") + .ends("bar/") + .ends("foo/bar/") .ends("foo/bar"); + // elements test("a/b/c") .element(0,"a") @@ -309,6 +329,8 @@ public class PathOps { .absolute(); test("tmp") .notAbsolute(); + test("") + .notAbsolute(); // resolve test("/tmp") @@ -320,7 +342,7 @@ public class PathOps { // relativize test("/a/b/c") - .relativize("/a/b/c", null) + .relativize("/a/b/c", "") .relativize("/a/b/c/d/e", "d/e") .relativize("/a/x", "../../x"); @@ -332,7 +354,7 @@ public class PathOps { test("/foo") .normalize("/foo"); test(".") - .normalize(null); + .normalize(""); test("..") .normalize(".."); test("/..") @@ -344,7 +366,7 @@ public class PathOps { test("./foo") .normalize("foo"); test("foo/..") - .normalize(null); + .normalize(""); test("../foo") .normalize("../foo"); test("../../foo") @@ -411,13 +433,13 @@ public class PathOps { } try { - path.startsWith(null); + path.startsWith((Path)null); throw new RuntimeException("NullPointerException not thrown"); } catch (NullPointerException npe) { } try { - path.endsWith(null); + path.endsWith((Path)null); throw new RuntimeException("NullPointerException not thrown"); } catch (NullPointerException npe) { } @@ -427,8 +449,7 @@ public class PathOps { public static void main(String[] args) throws Throwable { Path zipfile = Paths.get(args[0]); - Map env = new HashMap(); - fs = FileSystems.newFileSystem(zipfile, env, null); + fs = FileSystems.newFileSystem(zipfile, null); npes(); doPathOpTests(); fs.close(); diff --git a/jdk/test/demo/zipfs/ZipFSTester.java b/jdk/test/demo/zipfs/ZipFSTester.java index d4c5b44007b..14aebbdf685 100644 --- a/jdk/test/demo/zipfs/ZipFSTester.java +++ b/jdk/test/demo/zipfs/ZipFSTester.java @@ -25,6 +25,7 @@ import java.io.*; import java.nio.*; import java.nio.channels.*; import java.nio.file.*; +import java.nio.file.spi.*; import java.nio.file.attribute.*; import java.net.*; import java.util.*; @@ -40,15 +41,13 @@ import static java.nio.file.StandardCopyOption.*; public class ZipFSTester { public static void main(String[] args) throws Throwable { - FileSystem fs = null; - try { - fs = newZipFileSystem(Paths.get(args[0]), new HashMap()); + + try (FileSystem fs = newZipFileSystem(Paths.get(args[0]), + new HashMap())) + { test0(fs); test1(fs); test2(fs); // more tests - } finally { - if (fs != null) - fs.close(); } } @@ -63,17 +62,17 @@ public class ZipFSTester { } for (String pname : list) { Path path = fs.getPath(pname); - if (!path.exists()) + if (!Files.exists(path)) throw new RuntimeException("path existence check failed!"); while ((path = path.getParent()) != null) { - if (!path.exists()) + if (!Files.exists(path)) throw new RuntimeException("parent existence check failed!"); } } } } - static void test1(FileSystem fs) + static void test1(FileSystem fs0) throws Exception { Random rdm = new Random(); @@ -81,16 +80,26 @@ public class ZipFSTester { Path tmpfsPath = getTempPath(); Map env = new HashMap(); env.put("create", "true"); - FileSystem fs0 = newZipFileSystem(tmpfsPath, env); - z2zcopy(fs, fs0, "/", 0); - fs0.close(); // sync to file + try (FileSystem copy = newZipFileSystem(tmpfsPath, env)) { + z2zcopy(fs0, copy, "/", 0); + } + + try (FileSystem fs = newZipFileSystem(tmpfsPath, new HashMap())) { + + FileSystemProvider provider = fs.provider(); + // newFileSystem(path...) should not throw exception + try (FileSystem fsPath = provider.newFileSystem(tmpfsPath, new HashMap())){} + try (FileSystem fsUri = provider.newFileSystem( + new URI("jar", tmpfsPath.toUri().toString(), null), + new HashMap())) + { + throw new RuntimeException("newFileSystem(uri...) does not throw exception"); + } catch (FileSystemAlreadyExistsException fsaee) {} - fs = newZipFileSystem(tmpfsPath, new HashMap()); - try { // prepare a src Path src = getTempPath(); String tmpName = src.toString(); - OutputStream os = src.newOutputStream(); + OutputStream os = Files.newOutputStream(src); byte[] bits = new byte[12345]; rdm.nextBytes(bits); os.write(bits); @@ -98,37 +107,37 @@ public class ZipFSTester { // copyin Path dst = getPathWithParents(fs, tmpName); - src.copyTo(dst); + Files.copy(src, dst); checkEqual(src, dst); // copy Path dst2 = getPathWithParents(fs, "/xyz" + rdm.nextInt(100) + "/efg" + rdm.nextInt(100) + "/foo.class"); - dst.copyTo(dst2); + Files.copy(dst, dst2); //dst.moveTo(dst2); checkEqual(src, dst2); // delete - dst.delete(); - if (dst.exists()) + Files.delete(dst); + if (Files.exists(dst)) throw new RuntimeException("Failed!"); // moveout Path dst3 = Paths.get(tmpName + "_Tmp"); - dst2.moveTo(dst3); + Files.move(dst2, dst3); checkEqual(src, dst3); // delete - if (dst2.exists()) + if (Files.exists(dst2)) throw new RuntimeException("Failed!"); - dst3.delete(); - if (dst3.exists()) + Files.delete(dst3); + if (Files.exists(dst3)) throw new RuntimeException("Failed!"); // newInputStream on dir Path parent = dst2.getParent(); try { - parent.newInputStream(); + Files.newInputStream(parent); throw new RuntimeException("Failed"); } catch (FileSystemException e) { e.printStackTrace(); // expected fse @@ -147,17 +156,15 @@ public class ZipFSTester { Path tmp = Paths.get(tmpName + "_Tmp"); fchCopy(dst, tmp); // out checkEqual(src, tmp); - tmp.delete(); + Files.delete(tmp); // test channels channel(fs, dst); - dst.delete(); - src.delete(); + Files.delete(dst); + Files.delete(src); } finally { - if (fs != null) - fs.close(); - if (tmpfsPath.exists()) - tmpfsPath.delete(); + if (Files.exists(tmpfsPath)) + Files.delete(tmpfsPath); } } @@ -242,7 +249,7 @@ public class ZipFSTester { while (itr.hasNext()) { String path = itr.next(); try { - if (fs2.getPath(path).exists()) { + if (Files.exists(fs2.getPath(path))) { z2zmove(fs2, fs3, path); itr.remove(); } @@ -296,15 +303,16 @@ public class ZipFSTester { fs4.close(); System.out.printf("failed=%d%n", failed); - fs1Path.delete(); - fs2Path.delete(); - fs3Path.delete(); + Files.delete(fs1Path); + Files.delete(fs2Path); + Files.delete(fs3Path); } private static FileSystem newZipFileSystem(Path path, Map env) - throws IOException + throws Exception { - return FileSystems.newFileSystem(path, env, null); + return FileSystems.newFileSystem( + new URI("jar", path.toUri().toString(), null), env, null); } private static Path getTempPath() throws IOException @@ -317,11 +325,11 @@ public class ZipFSTester { private static void list(Path path, List files, List dirs ) throws IOException { - if (Attributes.readBasicFileAttributes(path).isDirectory()) { - DirectoryStream ds = path.newDirectoryStream(); - for (Path child : ds) - list(child, files, dirs); - ds.close(); + if (Files.isDirectory(path)) { + try (DirectoryStream ds = Files.newDirectoryStream(path)) { + for (Path child : ds) + list(child, files, dirs); + } dirs.add(path.toString()); } else { files.add(path.toString()); @@ -335,26 +343,26 @@ public class ZipFSTester { Path srcPath = src.getPath(path); Path dstPath = dst.getPath(path); - if (Boolean.TRUE.equals(srcPath.getAttribute("isDirectory"))) { - if (!dstPath.exists()) { + if (Files.isDirectory(srcPath)) { + if (!Files.exists(dstPath)) { try { mkdirs(dstPath); } catch (FileAlreadyExistsException x) {} } - DirectoryStream ds = srcPath.newDirectoryStream(); - for (Path child : ds) { - z2zcopy(src, dst, - path + (path.endsWith("/")?"":"/") + child.getName(), - method); + try (DirectoryStream ds = Files.newDirectoryStream(srcPath)) { + for (Path child : ds) { + z2zcopy(src, dst, + path + (path.endsWith("/")?"":"/") + child.getFileName(), + method); + } } - ds.close(); } else { try { - if (dstPath.exists()) + if (Files.exists(dstPath)) return; switch (method) { case 0: - srcPath.copyTo(dstPath); + Files.copy(srcPath, dstPath); break; case 1: chCopy(srcPath, dstPath); @@ -374,21 +382,21 @@ public class ZipFSTester { Path srcPath = src.getPath(path); Path dstPath = dst.getPath(path); - if (Boolean.TRUE.equals(srcPath.getAttribute("isDirectory"))) { - if (!dstPath.exists()) + if (Files.isDirectory(srcPath)) { + if (!Files.exists(dstPath)) mkdirs(dstPath); - DirectoryStream ds = srcPath.newDirectoryStream(); - for (Path child : ds) { - z2zmove(src, dst, - path + (path.endsWith("/")?"":"/") + child.getName()); + try (DirectoryStream ds = Files.newDirectoryStream(srcPath)) { + for (Path child : ds) { + z2zmove(src, dst, + path + (path.endsWith("/")?"":"/") + child.getFileName()); + } } - ds.close(); } else { //System.out.println("moving..." + path); Path parent = dstPath.getParent(); - if (parent != null && parent.notExists()) + if (parent != null && Files.notExists(parent)) mkdirs(parent); - srcPath.moveTo(dstPath); + Files.move(srcPath, dstPath); } } @@ -409,7 +417,7 @@ public class ZipFSTester { BasicFileAttributes attrs) { indent(); - System.out.printf("%s%n", file.getName().toString()); + System.out.printf("%s%n", file.getFileName().toString()); return FileVisitResult.CONTINUE; } @@ -435,20 +443,20 @@ public class ZipFSTester { } private static void mkdirs(Path path) throws IOException { - if (path.exists()) + if (Files.exists(path)) return; path = path.toAbsolutePath(); Path parent = path.getParent(); if (parent != null) { - if (parent.notExists()) + if (Files.notExists(parent)) mkdirs(parent); } - path.createDirectory(); + Files.createDirectory(path); } private static void rmdirs(Path path) throws IOException { while (path != null && path.getNameCount() != 0) { - path.delete(); + Files.delete(path); path = path.getParent(); } } @@ -460,12 +468,11 @@ public class ZipFSTester { // src.toString(), dst.toString()); //streams - InputStream isSrc = src.newInputStream(); - InputStream isDst = dst.newInputStream(); byte[] bufSrc = new byte[8192]; byte[] bufDst = new byte[8192]; - - try { + try (InputStream isSrc = Files.newInputStream(src); + InputStream isDst = Files.newInputStream(dst)) + { int nSrc = 0; while ((nSrc = isSrc.read(bufSrc)) != -1) { int nDst = 0; @@ -487,24 +494,21 @@ public class ZipFSTester { nSrc--; } } - } finally { - isSrc.close(); - isDst.close(); } // channels - SeekableByteChannel chSrc = src.newByteChannel(); - SeekableByteChannel chDst = dst.newByteChannel(); - if (chSrc.size() != chDst.size()) { - System.out.printf("src[%s].size=%d, dst[%s].size=%d%n", - chSrc.toString(), chSrc.size(), - chDst.toString(), chDst.size()); - throw new RuntimeException("CHECK FAILED!"); - } - ByteBuffer bbSrc = ByteBuffer.allocate(8192); - ByteBuffer bbDst = ByteBuffer.allocate(8192); + try (SeekableByteChannel chSrc = Files.newByteChannel(src); + SeekableByteChannel chDst = Files.newByteChannel(dst)) + { + if (chSrc.size() != chDst.size()) { + System.out.printf("src[%s].size=%d, dst[%s].size=%d%n", + chSrc.toString(), chSrc.size(), + chDst.toString(), chDst.size()); + throw new RuntimeException("CHECK FAILED!"); + } + ByteBuffer bbSrc = ByteBuffer.allocate(8192); + ByteBuffer bbDst = ByteBuffer.allocate(8192); - try { int nSrc = 0; while ((nSrc = chSrc.read(bbSrc)) != -1) { int nDst = chDst.read(bbDst); @@ -526,9 +530,6 @@ public class ZipFSTester { } } catch (IOException x) { x.printStackTrace(); - } finally { - chSrc.close(); - chDst.close(); } } @@ -540,23 +541,19 @@ public class ZipFSTester { openwrite.add(CREATE_NEW); openwrite.add(WRITE); - FileChannel srcFc = src.getFileSystem() - .provider() - .newFileChannel(src, read); - FileChannel dstFc = dst.getFileSystem() - .provider() - .newFileChannel(dst, openwrite); - - try { + try (FileChannel srcFc = src.getFileSystem() + .provider() + .newFileChannel(src, read); + FileChannel dstFc = dst.getFileSystem() + .provider() + .newFileChannel(dst, openwrite)) + { ByteBuffer bb = ByteBuffer.allocate(8192); while (srcFc.read(bb) >= 0) { bb.flip(); dstFc.write(bb); bb.clear(); } - } finally { - srcFc.close(); - dstFc.close(); } } @@ -568,35 +565,29 @@ public class ZipFSTester { openwrite.add(CREATE_NEW); openwrite.add(WRITE); - SeekableByteChannel srcCh = src.newByteChannel(read); - SeekableByteChannel dstCh = dst.newByteChannel(openwrite); + try (SeekableByteChannel srcCh = Files.newByteChannel(src, read); + SeekableByteChannel dstCh = Files.newByteChannel(dst, openwrite)) + { - try { ByteBuffer bb = ByteBuffer.allocate(8192); while (srcCh.read(bb) >= 0) { bb.flip(); dstCh.write(bb); bb.clear(); } - } finally { - srcCh.close(); - dstCh.close(); } } private static void streamCopy(Path src, Path dst) throws IOException { - InputStream isSrc = src.newInputStream(); - OutputStream osDst = dst.newOutputStream(); byte[] buf = new byte[8192]; - try { + try (InputStream isSrc = Files.newInputStream(src); + OutputStream osDst = Files.newOutputStream(dst)) + { int n = 0; while ((n = isSrc.read(buf)) != -1) { osDst.write(buf, 0, n); } - } finally { - isSrc.close(); - osDst.close(); } } @@ -604,31 +595,35 @@ public class ZipFSTester { throws Exception { System.out.println("test ByteChannel..."); - SeekableByteChannel sbc = path.newByteChannel(); Set read = new HashSet<>(); read.add(READ); - System.out.printf(" sbc[0]: pos=%d, size=%d%n", sbc.position(), sbc.size()); - ByteBuffer bb = ByteBuffer.allocate((int)sbc.size()); - int n = sbc.read(bb); - System.out.printf(" sbc[1]: read=%d, pos=%d, size=%d%n", - n, sbc.position(), sbc.size()); - ByteBuffer bb2 = ByteBuffer.allocate((int)sbc.size()); + int n = 0; + ByteBuffer bb = null; + ByteBuffer bb2 = null; int N = 120; - sbc.close(); + + try (SeekableByteChannel sbc = Files.newByteChannel(path)) { + System.out.printf(" sbc[0]: pos=%d, size=%d%n", sbc.position(), sbc.size()); + bb = ByteBuffer.allocate((int)sbc.size()); + n = sbc.read(bb); + System.out.printf(" sbc[1]: read=%d, pos=%d, size=%d%n", + n, sbc.position(), sbc.size()); + bb2 = ByteBuffer.allocate((int)sbc.size()); + } // sbc.position(pos) is not supported in current version // try the FileChannel - sbc = fs.provider().newFileChannel(path, read); - sbc.position(N); - System.out.printf(" sbc[2]: pos=%d, size=%d%n", - sbc.position(), sbc.size()); - bb2.limit(100); - n = sbc.read(bb2); - System.out.printf(" sbc[3]: read=%d, pos=%d, size=%d%n", - n, sbc.position(), sbc.size()); - System.out.printf(" sbc[4]: bb[%d]=%d, bb1[0]=%d%n", - N, bb.get(N) & 0xff, bb2.get(0) & 0xff); - sbc.close(); + try (SeekableByteChannel sbc = fs.provider().newFileChannel(path, read)) { + sbc.position(N); + System.out.printf(" sbc[2]: pos=%d, size=%d%n", + sbc.position(), sbc.size()); + bb2.limit(100); + n = sbc.read(bb2); + System.out.printf(" sbc[3]: read=%d, pos=%d, size=%d%n", + n, sbc.position(), sbc.size()); + System.out.printf(" sbc[4]: bb[%d]=%d, bb1[0]=%d%n", + N, bb.get(N) & 0xff, bb2.get(0) & 0xff); + } } // create parents if does not exist @@ -637,7 +632,7 @@ public class ZipFSTester { { Path path = fs.getPath(name); Path parent = path.getParent(); - if (parent != null && parent.notExists()) + if (parent != null && Files.notExists(parent)) mkdirs(parent); return path; } diff --git a/jdk/test/demo/zipfs/basic.sh b/jdk/test/demo/zipfs/basic.sh index a79cce34b6f..832a75d4fb4 100644 --- a/jdk/test/demo/zipfs/basic.sh +++ b/jdk/test/demo/zipfs/basic.sh @@ -21,7 +21,7 @@ # questions. # # @test -# @bug 6990846 7009092 7009085 +# @bug 6990846 7009092 7009085 7015391 7014948 7005986 7017840 # @summary Test ZipFileSystem demo # @build Basic PathOps ZipFSTester # @run shell basic.sh diff --git a/jdk/test/java/awt/Container/CheckZOrderChange/CheckZOrderChange.java b/jdk/test/java/awt/Container/CheckZOrderChange/CheckZOrderChange.java index 0814b52b25d..3c06a523b29 100644 --- a/jdk/test/java/awt/Container/CheckZOrderChange/CheckZOrderChange.java +++ b/jdk/test/java/awt/Container/CheckZOrderChange/CheckZOrderChange.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2008, 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 %I% %E% @bug 2161766 diff --git a/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java new file mode 100644 index 00000000000..34b52f0bea0 --- /dev/null +++ b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java @@ -0,0 +1,44 @@ +/* + @test + @bug 6741526 + @summary KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy) affects created components + @library ../../regtesthelpers + @build Sysout + @author Andrei Dmitriev : area=awt-focus + @run main DefaultPolicyChange_AWT +*/ + +import java.awt.*; +import test.java.awt.regtesthelpers.Sysout; + +public class DefaultPolicyChange_AWT { + public static void main(String []s) { + DefaultPolicyChange_AWT.runTestAWT(); + } + + private static void runTestAWT(){ + KeyboardFocusManager currentKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager(); + FocusTraversalPolicy defaultFTP = currentKFM.getDefaultFocusTraversalPolicy(); + ContainerOrderFocusTraversalPolicy newFTP = new ContainerOrderFocusTraversalPolicy(); + + Frame frame = new Frame(); + Window window = new Window(frame); + + FocusTraversalPolicy resultFTP = window.getFocusTraversalPolicy(); + Sysout.println("FocusTraversalPolicy on window = " + resultFTP); + /** + * Note: this call doesn't affect already created components as they have + * their policy initialized. Only new components will use this policy as + * their default policy. + **/ + Sysout.println("Now will set another policy."); + currentKFM.setDefaultFocusTraversalPolicy(newFTP); + resultFTP = window.getFocusTraversalPolicy(); + if (!resultFTP.equals(defaultFTP)) { + Sysout.println("Failure! FocusTraversalPolicy should not change"); + Sysout.println("Was: " + defaultFTP); + Sysout.println("Become: " + resultFTP); + throw new RuntimeException("Failure! FocusTraversalPolicy should not change"); + } + } +} diff --git a/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java new file mode 100644 index 00000000000..f0680433644 --- /dev/null +++ b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java @@ -0,0 +1,69 @@ +/* + @test + @bug 6741526 + @summary KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy) affects created components + @library ../../regtesthelpers + @build Sysout + @author Andrei Dmitriev : area=awt-focus + @run main DefaultPolicyChange_Swing +*/ + +import java.awt.*; +import javax.swing.*; +import javax.swing.table.DefaultTableModel; +import test.java.awt.regtesthelpers.Sysout; + +public class DefaultPolicyChange_Swing { + public static void main(String []s) { + EventQueue.invokeLater(new Runnable(){ + public void run (){ + DefaultPolicyChange_Swing.runTestSwing(); + } + }); + } + private static void runTestSwing(){ + KeyboardFocusManager currentKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager(); + FocusTraversalPolicy defaultFTP = currentKFM.getDefaultFocusTraversalPolicy(); + ContainerOrderFocusTraversalPolicy newFTP = new ContainerOrderFocusTraversalPolicy(); + + + JFrame jf = new JFrame("Test1"); + JWindow jw = new JWindow(jf); + JDialog jd = new JDialog(jf); + JPanel jp1 = new JPanel(); + JButton jb1 = new JButton("jb1"); + JTable jt1 = new JTable(new DefaultTableModel()); + + jf.add(jb1); + jf.add(jt1); + jf.add(jp1); + System.out.println("FTP current on jf= " + jf.getFocusTraversalPolicy()); + System.out.println("FTP current on jw= " + jw.getFocusTraversalPolicy()); + System.out.println("FTP current on jd= " + jd.getFocusTraversalPolicy()); + + if (!(jf.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy) || + !(jw.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy) || + !(jd.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy)) + { + throw new RuntimeException("Failure! Swing toplevel must have LayoutFocusTraversalPolicy installed"); + } + + jf.setVisible(true); + + System.out.println("Now will set another policy."); + currentKFM.setDefaultFocusTraversalPolicy(newFTP); + + FocusTraversalPolicy resultFTP = jw.getFocusTraversalPolicy(); + + System.out.println("FTP current on jf= " + jf.getFocusTraversalPolicy()); + System.out.println("FTP current on jw= " + jw.getFocusTraversalPolicy()); + System.out.println("FTP current on jd= " + jd.getFocusTraversalPolicy()); + + if (!resultFTP.equals(defaultFTP)) { + Sysout.println("Failure! FocusTraversalPolicy should not change"); + Sysout.println("Was: " + defaultFTP); + Sysout.println("Become: " + resultFTP); + throw new RuntimeException("Failure! FocusTraversalPolicy should not change"); + } + } +} diff --git a/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test.java b/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test.java new file mode 100644 index 00000000000..098fdac7e8c --- /dev/null +++ b/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test.java @@ -0,0 +1,385 @@ +/* + @test + @bug 6431076 + @summary Mouse cursor must remain DEFAULT over scrollbar when text is typed + @author Andrei Dmitriev: area=TextArea + @run main/manual Test +*/ + +import java.awt.*; +import java.awt.event.*; + +public class Test { + private static void init() { + Frame f = new Frame("Test for cursor"); + final int dim = 100; + String line = ""; + for( int i=0; i 0 ) + { + //if longer than max then chop off first max chars to print + if( remainingStr.length() >= maxStringLength ) + { + //Try to chop on a word boundary + int posOfSpace = remainingStr. + lastIndexOf( ' ', maxStringLength - 1 ); + + if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1; + + printStr = remainingStr.substring( 0, posOfSpace + 1 ); + remainingStr = remainingStr.substring( posOfSpace + 1 ); + } + //else just print + else + { + printStr = remainingStr; + remainingStr = ""; + } + + instructionsText.append( printStr + "\n" ); + + }// while + + }// for + + }//printInstructions() + + //DO NOT call this directly, go through Sysout + public void displayMessage( String messageIn ) + { + messageText.append( messageIn + "\n" ); + System.out.println(messageIn); + } + + //catch presses of the passed and failed buttons. + //simply call the standard pass() or fail() static methods of + //ManualMainTest + public void actionPerformed( ActionEvent e ) + { + if( e.getActionCommand() == "pass" ) + { + Test.pass(); + } + else + { + Test.fail(); + } + } + +}// TestDialog class diff --git a/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test1.java b/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test1.java new file mode 100644 index 00000000000..24d0670b4c2 --- /dev/null +++ b/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test1.java @@ -0,0 +1,386 @@ +/* + @test + @bug 6431076 + @summary Mouse cursor must remain DEFAULT over scrollbar when text is typed + @author Andrei Dmitriev: area=TextArea + @run main/manual Test1 +*/ + +import java.awt.*; +import java.awt.event.*; + +public class Test1 { + private static void init() { + Frame f = new Frame("Test1 for cursor"); + final int dim = 100; + String line = ""; + for( int i=0; i 0 ) + { + //if longer than max then chop off first max chars to print + if( remainingStr.length() >= maxStringLength ) + { + //Try to chop on a word boundary + int posOfSpace = remainingStr. + lastIndexOf( ' ', maxStringLength - 1 ); + + if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1; + + printStr = remainingStr.substring( 0, posOfSpace + 1 ); + remainingStr = remainingStr.substring( posOfSpace + 1 ); + } + //else just print + else + { + printStr = remainingStr; + remainingStr = ""; + } + + instructionsText.append( printStr + "\n" ); + + }// while + + }// for + + }//printInstructions() + + //DO NOT call this directly, go through Sysout + public void displayMessage( String messageIn ) + { + messageText.append( messageIn + "\n" ); + System.out.println(messageIn); + } + + //catch presses of the passed and failed buttons. + //simply call the standard pass() or fail() static methods of + //ManualMainTest + public void actionPerformed( ActionEvent e ) + { + if( e.getActionCommand() == "pass" ) + { + Test1.pass(); + } + else + { + Test1.fail(); + } + } + +}// TestDialog class diff --git a/jdk/test/java/io/File/IsHidden.java b/jdk/test/java/io/File/IsHidden.java index 9e062fe61e3..d2b43c5b641 100644 --- a/jdk/test/java/io/File/IsHidden.java +++ b/jdk/test/java/io/File/IsHidden.java @@ -27,6 +27,7 @@ */ import java.io.*; +import java.nio.file.Files; import java.nio.file.attribute.DosFileAttributeView; public class IsHidden { @@ -42,7 +43,7 @@ public class IsHidden { } private static void setHidden(File f, boolean value) throws IOException { - f.toPath().getFileAttributeView(DosFileAttributeView.class).setHidden(value); + Files.getFileAttributeView(f.toPath(), DosFileAttributeView.class).setHidden(value); } private static void testWin32() throws Exception { diff --git a/jdk/test/java/io/File/SetAccess.java b/jdk/test/java/io/File/SetAccess.java index bb88ec46258..745deab1f7b 100644 --- a/jdk/test/java/io/File/SetAccess.java +++ b/jdk/test/java/io/File/SetAccess.java @@ -27,6 +27,7 @@ */ import java.io.*; +import java.nio.file.*; import java.nio.file.attribute.*; public class SetAccess { @@ -178,7 +179,7 @@ public class SetAccess { } private static String permission(File f) throws Exception { - PosixFileAttributes attrs = Attributes.readPosixFileAttributes(f.toPath()); + PosixFileAttributes attrs = Files.readAttributes(f.toPath(), PosixFileAttributes.class); String type = attrs.isDirectory() ? "d" : " "; return type + PosixFilePermissions.toString(attrs.permissions()); } diff --git a/jdk/test/java/io/File/SymLinks.java b/jdk/test/java/io/File/SymLinks.java index 36306f98d7a..355b28875d4 100644 --- a/jdk/test/java/io/File/SymLinks.java +++ b/jdk/test/java/io/File/SymLinks.java @@ -27,7 +27,7 @@ */ import java.io.*; -import java.nio.file.Path; +import java.nio.file.*; import java.nio.file.attribute.*; import static java.nio.file.LinkOption.*; @@ -80,39 +80,33 @@ public class SymLinks { if (file != null) file.delete(); if (link2file != null) - link2file.toPath().deleteIfExists(); + Files.deleteIfExists(link2file.toPath()); if (link2link2file != null) - link2link2file.toPath().deleteIfExists(); + Files.deleteIfExists(link2link2file.toPath()); if (dir != null) dir.delete(); if (link2dir != null) - link2dir.toPath().deleteIfExists(); + Files.deleteIfExists(link2dir.toPath()); if (link2link2dir != null) - link2link2dir.toPath().deleteIfExists(); + Files.deleteIfExists(link2link2dir.toPath()); if (link2nobody != null) - link2nobody.toPath().deleteIfExists(); + Files.deleteIfExists(link2nobody.toPath()); if (link2link2nobody != null) - link2link2nobody.toPath().deleteIfExists(); + Files.deleteIfExists(link2link2nobody.toPath()); } /** * Creates a sym link source->target */ static void mklink(File source, File target) throws IOException { - source.toPath().createSymbolicLink(target.toPath()); + Files.createSymbolicLink(source.toPath(), target.toPath()); } /** * Returns true if the "link" exists and is a sym link. */ static boolean isSymLink(File link) { - try { - BasicFileAttributes attrs = - Attributes.readBasicFileAttributes(link.toPath(), NOFOLLOW_LINKS); - return attrs.isSymbolicLink(); - } catch (IOException x) { - return false; - } + return Files.isSymbolicLink(link.toPath()); } /** @@ -120,7 +114,7 @@ public class SymLinks { */ static long lastModifiedOfSymLink(File link) throws IOException { BasicFileAttributes attrs = - Attributes.readBasicFileAttributes(link.toPath(), NOFOLLOW_LINKS); + Files.readAttributes(link.toPath(), BasicFileAttributes.class, NOFOLLOW_LINKS); assertTrue(attrs.isSymbolicLink()); return attrs.lastModifiedTime().toMillis(); } @@ -133,8 +127,8 @@ public class SymLinks { Path link = dir.toPath().resolve("link"); Path target = dir.toPath().resolve("target"); try { - link.createSymbolicLink(target); - link.delete(); + Files.createSymbolicLink(link, target); + Files.delete(link); return true; } catch (UnsupportedOperationException x) { return false; @@ -224,7 +218,7 @@ public class SymLinks { assertTrue(isSymLink(link2nobody)); } finally { - link.toPath().deleteIfExists(); + Files.deleteIfExists(link.toPath()); } header("renameTo"); @@ -287,8 +281,8 @@ public class SymLinks { // on Windows we test with the DOS hidden attribute set if (System.getProperty("os.name").startsWith("Windows")) { - DosFileAttributeView view = file.toPath() - .getFileAttributeView(DosFileAttributeView.class); + DosFileAttributeView view = Files + .getFileAttributeView(file.toPath(), DosFileAttributeView.class); view.setHidden(true); try { assertTrue(file.isHidden()); diff --git a/jdk/test/java/io/FileInputStream/LargeFileAvailable.java b/jdk/test/java/io/FileInputStream/LargeFileAvailable.java index 35c9ce47483..0e33d9a969f 100644 --- a/jdk/test/java/io/FileInputStream/LargeFileAvailable.java +++ b/jdk/test/java/io/FileInputStream/LargeFileAvailable.java @@ -31,6 +31,7 @@ import java.io.*; import java.nio.ByteBuffer; import java.nio.channels.*; +import java.nio.file.Files; import static java.nio.file.StandardOpenOption.*; public class LargeFileAvailable { @@ -85,7 +86,7 @@ public class LargeFileAvailable { // Create a large file as a sparse file if possible File largefile = File.createTempFile("largefile", null); // re-create as a sparse file - largefile.toPath().delete(); + Files.delete(largefile.toPath()); try (FileChannel fc = FileChannel.open(largefile.toPath(), CREATE_NEW, WRITE, SPARSE)) { diff --git a/jdk/test/java/lang/Double/ParseDouble.java b/jdk/test/java/lang/Double/ParseDouble.java index 161177a5faa..669d078c029 100644 --- a/jdk/test/java/lang/Double/ParseDouble.java +++ b/jdk/test/java/lang/Double/ParseDouble.java @@ -23,11 +23,12 @@ /* * @test - * @bug 4160406 4705734 4707389 4826774 4895911 + * @bug 4160406 4705734 4707389 4826774 4895911 4421494 * @summary Test for Double.parseDouble method and acceptance regex */ import java.util.regex.*; +import java.math.BigDecimal; public class ParseDouble { @@ -416,7 +417,15 @@ public class ParseDouble { "0x00100p1", "0x00.100p1", - "0x001.100p1" + "0x001.100p1", + + // Limits + + "1.7976931348623157E308", // Double.MAX_VALUE + "4.9e-324", // Double.MIN_VALUE + "2.2250738585072014e-308", // Double.MIN_NORMAL + + "2.2250738585072012e-308", // near Double.MIN_NORMAL }; static String paddedBadStrings[]; @@ -546,6 +555,32 @@ public class ParseDouble { } + /** + * For each subnormal power of two, test at boundaries of + * region that should convert to that value. + */ + private static void testSubnormalPowers() { + BigDecimal TWO = BigDecimal.valueOf(2); + // An ulp is the same for all subnormal values + BigDecimal ulp_BD = new BigDecimal(Double.MIN_VALUE); + + // Test subnormal powers of two + for(int i = -1074; i <= -1022; i++) { + double d = Math.scalb(1.0, i); + + /* + * The region [d - ulp/2, d + ulp/2] should round to d. + */ + BigDecimal d_BD = new BigDecimal(d); + + BigDecimal lowerBound = d_BD.subtract(ulp_BD.divide(TWO)); + BigDecimal upperBound = d_BD.add(ulp_BD.divide(TWO)); + + double convertedLowerBound = Double.parseDouble(lowerBound.toString()); + double convertedUpperBound = Double.parseDouble(upperBound.toString()); + } + } + public static void main(String[] args) throws Exception { rudimentaryTest(); @@ -558,5 +593,7 @@ public class ParseDouble { testRegex(paddedGoodStrings, false); testRegex(badStrings, true); testRegex(paddedBadStrings, true); + + testSubnormalPowers(); } } diff --git a/jdk/test/java/lang/Runtime/exec/Duped.java b/jdk/test/java/lang/Runtime/exec/Duped.java index c8e7aa9dcb8..2788b77e48c 100644 --- a/jdk/test/java/lang/Runtime/exec/Duped.java +++ b/jdk/test/java/lang/Runtime/exec/Duped.java @@ -38,8 +38,7 @@ public class Duped { public static void main(String args[]) throws Exception { StringBuffer s = new StringBuffer(); int c; - while ((System.in.available() != 0) - && ((c = System.in.read()) != -1)) + while ((c = System.in.read()) != -1) s.append((char)c); System.out.println(s); } diff --git a/jdk/test/java/net/Socks/SocksProxyVersion.java b/jdk/test/java/net/Socks/SocksProxyVersion.java index 19298e59c6b..fe4f1c65b72 100644 --- a/jdk/test/java/net/Socks/SocksProxyVersion.java +++ b/jdk/test/java/net/Socks/SocksProxyVersion.java @@ -36,15 +36,22 @@ import java.io.DataInputStream; import java.io.IOException; public class SocksProxyVersion implements Runnable { - ServerSocket ss; + final ServerSocket ss; volatile boolean failed; public static void main(String[] args) throws Exception { new SocksProxyVersion(); } + @SuppressWarnings("try") public SocksProxyVersion() throws Exception { ss = new ServerSocket(0); + try (ServerSocket socket = ss) { + runTest(); + } + } + + void runTest() throws Exception { int port = ss.getLocalPort(); Thread serverThread = new Thread(this); serverThread.start(); @@ -75,22 +82,21 @@ public class SocksProxyVersion implements Runnable { } public void run() { - try (ss) { - Socket s = ss.accept(); - int version = (s.getInputStream()).read(); - if (version != 4) { - System.out.println("Got " + version + ", expected 4"); - failed = true; + try { + try (Socket s = ss.accept()) { + int version = (s.getInputStream()).read(); + if (version != 4) { + System.out.println("Got " + version + ", expected 4"); + failed = true; + } } - s.close(); - - s = ss.accept(); - version = (s.getInputStream()).read(); - if (version != 5) { - System.out.println("Got " + version + ", expected 5"); - failed = true; + try (Socket s = ss.accept()) { + int version = (s.getInputStream()).read(); + if (version != 5) { + System.out.println("Got " + version + ", expected 5"); + failed = true; + } } - s.close(); } catch (IOException e) { e.printStackTrace(); } diff --git a/jdk/test/java/nio/MappedByteBuffer/Force.java b/jdk/test/java/nio/MappedByteBuffer/Force.java index bd66a31ff21..81f908bacee 100644 --- a/jdk/test/java/nio/MappedByteBuffer/Force.java +++ b/jdk/test/java/nio/MappedByteBuffer/Force.java @@ -37,14 +37,17 @@ public class Force { Random random = new Random(); long filesize = random.nextInt(3*1024*1024); int cut = random.nextInt((int)filesize); - File file = new File("Blah"); - RandomAccessFile raf = new RandomAccessFile(file, "rw"); - raf.setLength(filesize); - FileChannel fc = raf.getChannel(); - MappedByteBuffer buf1 = fc.map( - FileChannel.MapMode.READ_WRITE, cut, filesize-cut); - buf1.force(); - fc.close(); - raf.close(); + File file = File.createTempFile("Blah", null); + file.deleteOnExit(); + try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) { + raf.setLength(filesize); + FileChannel fc = raf.getChannel(); + MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, cut, filesize-cut); + mbb.force(); + } + + // improve chance that mapped buffer will be unmapped + System.gc(); + Thread.sleep(500); } } diff --git a/jdk/test/java/nio/MappedByteBuffer/ZeroMap.java b/jdk/test/java/nio/MappedByteBuffer/ZeroMap.java index f80e72f803d..81cd3532d13 100644 --- a/jdk/test/java/nio/MappedByteBuffer/ZeroMap.java +++ b/jdk/test/java/nio/MappedByteBuffer/ZeroMap.java @@ -37,16 +37,19 @@ public class ZeroMap { Random random = new Random(); long filesize = random.nextInt(1024*1024); int cut = random.nextInt((int)filesize); - File file = new File("Blah"); - RandomAccessFile raf = new RandomAccessFile(file, "rw"); - raf.setLength(filesize); - FileChannel fc = raf.getChannel(); - MappedByteBuffer buf1 = fc.map( - FileChannel.MapMode.READ_WRITE, cut, 0); - buf1.force(); - buf1.load(); - buf1.isLoaded(); - fc.close(); - raf.close(); + File file = File.createTempFile("Blah", null); + file.deleteOnExit(); + try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) { + raf.setLength(filesize); + FileChannel fc = raf.getChannel(); + MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, cut, 0); + mbb.force(); + mbb.load(); + mbb.isLoaded(); + } + + // improve chance that mapped buffer will be unmapped + System.gc(); + Thread.sleep(500); } } diff --git a/jdk/test/java/nio/channels/FileChannel/AtomicAppend.java b/jdk/test/java/nio/channels/FileChannel/AtomicAppend.java index 1420318d5d7..60bd746f123 100644 --- a/jdk/test/java/nio/channels/FileChannel/AtomicAppend.java +++ b/jdk/test/java/nio/channels/FileChannel/AtomicAppend.java @@ -36,6 +36,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; +import java.nio.file.Files; import static java.nio.file.StandardOpenOption.*; public class AtomicAppend { @@ -55,7 +56,7 @@ public class AtomicAppend { if (rand.nextBoolean()) { return new FileOutputStream(file, true); } else { - return file.toPath().newOutputStream(APPEND); + return Files.newOutputStream(file.toPath(), APPEND); } } diff --git a/jdk/test/java/nio/channels/FileChannel/Transfer.java b/jdk/test/java/nio/channels/FileChannel/Transfer.java index f0507b5249f..565f8ff1007 100644 --- a/jdk/test/java/nio/channels/FileChannel/Transfer.java +++ b/jdk/test/java/nio/channels/FileChannel/Transfer.java @@ -276,7 +276,7 @@ public class Transfer { while (fc == null) { sink = File.createTempFile("sink", null); // re-create as a sparse file - sink.toPath().delete(); + sink.delete(); try { fc = FileChannel.open(sink.toPath(), StandardOpenOption.CREATE_NEW, diff --git a/jdk/test/java/nio/channels/FileChannel/Truncate.java b/jdk/test/java/nio/channels/FileChannel/Truncate.java index b0a1ffa0f98..bc81ffb2278 100644 --- a/jdk/test/java/nio/channels/FileChannel/Truncate.java +++ b/jdk/test/java/nio/channels/FileChannel/Truncate.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, 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 @@ -58,30 +58,31 @@ public class Truncate { for(int i=0; i<100; i++) { long testSize = generator.nextInt(1000) + 10; initTestFile(blah, testSize); - FileChannel fc = (i < 50) ? - new RandomAccessFile(blah, "rw").getChannel() : - FileChannel.open(blah.toPath(), READ, WRITE); - try (fc) { - if (fc.size() != testSize) - throw new RuntimeException("Size failed"); - long position = generator.nextInt((int)testSize); - fc.position(position); + try (FileChannel fc = (i < 50) ? + new RandomAccessFile(blah, "rw").getChannel() : + FileChannel.open(blah.toPath(), READ, WRITE)) + { + if (fc.size() != testSize) + throw new RuntimeException("Size failed"); - long newSize = generator.nextInt((int)testSize); - fc.truncate(newSize); + long position = generator.nextInt((int)testSize); + fc.position(position); - if (fc.size() != newSize) - throw new RuntimeException("Truncate failed"); + long newSize = generator.nextInt((int)testSize); + fc.truncate(newSize); - if (position > newSize) { - if (fc.position() != newSize) - throw new RuntimeException("Position greater than size"); - } else { - if (fc.position() != position) - throw new RuntimeException("Truncate changed position"); - }; - } + if (fc.size() != newSize) + throw new RuntimeException("Truncate failed"); + + if (position > newSize) { + if (fc.position() != newSize) + throw new RuntimeException("Position greater than size"); + } else { + if (fc.position() != position) + throw new RuntimeException("Truncate changed position"); + }; + } } } @@ -92,24 +93,24 @@ public class Truncate { for (int i=0; i<10; i++) { long testSize = generator.nextInt(1000) + 10; initTestFile(blah, testSize); - FileChannel fc = (i < 5) ? - new FileOutputStream(blah, true).getChannel() : - FileChannel.open(blah.toPath(), APPEND); - try (fc) { - // truncate file - long newSize = generator.nextInt((int)testSize); - fc.truncate(newSize); - if (fc.size() != newSize) - throw new RuntimeException("Truncate failed"); + try (FileChannel fc = (i < 5) ? + new FileOutputStream(blah, true).getChannel() : + FileChannel.open(blah.toPath(), APPEND)) + { + // truncate file + long newSize = generator.nextInt((int)testSize); + fc.truncate(newSize); + if (fc.size() != newSize) + throw new RuntimeException("Truncate failed"); - // write one byte - ByteBuffer buf = ByteBuffer.allocate(1); - buf.put((byte)'x'); - buf.flip(); - fc.write(buf); - if (fc.size() != (newSize+1)) - throw new RuntimeException("Unexpected size"); - } + // write one byte + ByteBuffer buf = ByteBuffer.allocate(1); + buf.put((byte)'x'); + buf.flip(); + fc.write(buf); + if (fc.size() != (newSize+1)) + throw new RuntimeException("Unexpected size"); + } } } diff --git a/jdk/test/java/nio/file/DirectoryStream/Basic.java b/jdk/test/java/nio/file/DirectoryStream/Basic.java index 75d66280147..69f5d18f656 100644 --- a/jdk/test/java/nio/file/DirectoryStream/Basic.java +++ b/jdk/test/java/nio/file/DirectoryStream/Basic.java @@ -28,6 +28,7 @@ */ import java.nio.file.*; +import static java.nio.file.Files.*; import java.util.*; import java.io.IOException; @@ -38,29 +39,26 @@ public class Basic { DirectoryStream stream; // test that directory is empty - stream = dir.newDirectoryStream(); - try { - if (stream.iterator().hasNext()) + try (DirectoryStream ds = newDirectoryStream(dir)) { + if (ds.iterator().hasNext()) throw new RuntimeException("directory not empty"); - } finally { - stream.close(); } // create file in directory final Path foo = Paths.get("foo"); - dir.resolve(foo).createFile(); + createFile(dir.resolve(foo)); // iterate over directory and check there is one entry - stream = dir.newDirectoryStream(); + stream = newDirectoryStream(dir); found = false; try { for (Path entry: stream) { - if (entry.getName().equals(foo)) { + if (entry.getFileName().equals(foo)) { if (found) throw new RuntimeException("entry already found"); found = true; } else { - throw new RuntimeException("entry " + entry.getName() + + throw new RuntimeException("entry " + entry.getFileName() + " not expected"); } } @@ -71,21 +69,18 @@ public class Basic { throw new RuntimeException("entry not found"); // check filtering: f* should match foo - DirectoryStream.Filter filter = new DirectoryStream.Filter() { + DirectoryStream.Filter filter = new DirectoryStream.Filter<>() { private PathMatcher matcher = dir.getFileSystem().getPathMatcher("glob:f*"); public boolean accept(Path file) { return matcher.matches(file); } }; - stream = dir.newDirectoryStream(filter); - try { - for (Path entry: stream) { - if (!entry.getName().equals(foo)) + try (DirectoryStream ds = newDirectoryStream(dir, filter)) { + for (Path entry: ds) { + if (!entry.getFileName().equals(foo)) throw new RuntimeException("entry not expected"); } - } finally { - stream.close(); } // check filtering: z* should not match any files @@ -96,12 +91,9 @@ public class Basic { return matcher.matches(file); } }; - stream = dir.newDirectoryStream(filter); - try { - if (stream.iterator().hasNext()) + try (DirectoryStream ds = newDirectoryStream(dir, filter)) { + if (ds.iterator().hasNext()) throw new RuntimeException("no matching entries expected"); - } finally { - stream.close(); } // check that an IOException thrown by a filter is propagated @@ -110,7 +102,7 @@ public class Basic { throw new java.util.zip.ZipException(); } }; - stream = dir.newDirectoryStream(filter); + stream = newDirectoryStream(dir, filter); try { stream.iterator().hasNext(); throw new RuntimeException("DirectoryIteratorException expected"); @@ -124,7 +116,7 @@ public class Basic { // check that exception or error thrown by filter is not thrown // by newDirectoryStream or iterator method. - stream = dir.newDirectoryStream(new DirectoryStream.Filter() { + stream = newDirectoryStream(dir, new DirectoryStream.Filter() { public boolean accept(Path file) { throw new RuntimeException("Should not be visible"); } @@ -137,13 +129,13 @@ public class Basic { // test NotDirectoryException try { - dir.resolve(foo).newDirectoryStream(); + newDirectoryStream(dir.resolve(foo)); throw new RuntimeException("NotDirectoryException not thrown"); } catch (NotDirectoryException x) { } // test UnsupportedOperationException - stream = dir.newDirectoryStream(); + stream = newDirectoryStream(dir); Iterator i = stream.iterator(); i.next(); try { @@ -153,7 +145,7 @@ public class Basic { } // test IllegalStateException - stream = dir.newDirectoryStream(); + stream = newDirectoryStream(dir); stream.iterator(); try { // attempt to obtain second iterator @@ -163,7 +155,7 @@ public class Basic { } stream.close(); - stream = dir.newDirectoryStream(); + stream = newDirectoryStream(dir); stream.close(); try { // attempt to obtain iterator after stream is closed @@ -173,13 +165,13 @@ public class Basic { } // test that iterator reads to end of stream when closed - stream = dir.newDirectoryStream(); + stream = newDirectoryStream(dir); i = stream.iterator(); stream.close(); while (i.hasNext()) i.next(); - stream = dir.newDirectoryStream(); + stream = newDirectoryStream(dir); i = stream.iterator(); stream.close(); try { diff --git a/jdk/test/java/nio/file/DirectoryStream/DriveLetter.java b/jdk/test/java/nio/file/DirectoryStream/DriveLetter.java index e692a7ec55f..a629a027d39 100644 --- a/jdk/test/java/nio/file/DirectoryStream/DriveLetter.java +++ b/jdk/test/java/nio/file/DirectoryStream/DriveLetter.java @@ -52,16 +52,14 @@ public class DriveLetter { Path expected = Paths.get(drive).resolve(tempFile.getName()); boolean found = false; - DirectoryStream stream = Paths.get(drive).newDirectoryStream(); - try { + Path dir = Paths.get(drive); + try (DirectoryStream stream = Files.newDirectoryStream(dir)) { for (Path file : stream) { if (file.equals(expected)) { found = true; break; } } - } finally { - stream.close(); } if (!found) throw new RuntimeException("Temporary file not found???"); diff --git a/jdk/test/java/nio/file/DirectoryStream/SecureDS.java b/jdk/test/java/nio/file/DirectoryStream/SecureDS.java index e776c8b31ad..fdfcfd9fdfe 100644 --- a/jdk/test/java/nio/file/DirectoryStream/SecureDS.java +++ b/jdk/test/java/nio/file/DirectoryStream/SecureDS.java @@ -28,6 +28,7 @@ */ import java.nio.file.*; +import static java.nio.file.Files.*; import static java.nio.file.StandardOpenOption.*; import static java.nio.file.LinkOption.*; import java.nio.file.attribute.*; @@ -41,7 +42,7 @@ public class SecureDS { public static void main(String[] args) throws IOException { Path dir = TestUtil.createTemporaryDirectory(); try { - DirectoryStream stream = dir.newDirectoryStream(); + DirectoryStream stream = newDirectoryStream(dir); stream.close(); if (!(stream instanceof SecureDirectoryStream)) { System.out.println("SecureDirectoryStream not supported."); @@ -62,28 +63,28 @@ public class SecureDS { // Exercise each of SecureDirectoryStream's method (except move) static void doBasicTests(Path dir) throws IOException { - Path dir1 = dir.resolve("dir1").createDirectory(); + Path dir1 = createDirectory(dir.resolve("dir1")); Path dir2 = dir.resolve("dir2"); // create a file, directory, and two sym links in the directory Path fileEntry = Paths.get("myfile"); - dir1.resolve(fileEntry).createFile(); + createFile(dir1.resolve(fileEntry)); Path dirEntry = Paths.get("mydir"); - dir1.resolve(dirEntry).createDirectory(); + createDirectory(dir1.resolve(dirEntry)); // myfilelink -> myfile Path link1Entry = Paths.get("myfilelink"); if (supportsLinks) - dir1.resolve(link1Entry).createSymbolicLink(fileEntry); + createSymbolicLink(dir1.resolve(link1Entry), fileEntry); // mydirlink -> mydir Path link2Entry = Paths.get("mydirlink"); if (supportsLinks) - dir1.resolve(link2Entry).createSymbolicLink(dirEntry); + createSymbolicLink(dir1.resolve(link2Entry), dirEntry); // open directory and then move it so that it is no longer accessible // via its original path. SecureDirectoryStream stream = - (SecureDirectoryStream)dir1.newDirectoryStream(); - dir1.moveTo(dir2); + (SecureDirectoryStream)newDirectoryStream(dir1); + move(dir1, dir2); // Test: iterate over all entries int count = 0; @@ -138,7 +139,7 @@ public class SecureDS { if (supportsLinks) { stream.newByteChannel(link1Entry, opts).close(); try { - Set mixed = new HashSet(); + Set mixed = new HashSet<>(); mixed.add(READ); mixed.add(NOFOLLOW_LINKS); stream.newByteChannel(link1Entry, mixed).close(); @@ -168,51 +169,48 @@ public class SecureDS { // clean-up stream.close(); - dir2.delete(); + delete(dir2); } // Exercise SecureDirectoryStream's move method static void doMoveTests(Path dir) throws IOException { - Path dir1 = dir.resolve("dir1").createDirectory(); - Path dir2 = dir.resolve("dir2").createDirectory(); + Path dir1 = createDirectory(dir.resolve("dir1")); + Path dir2 = createDirectory(dir.resolve("dir2")); // create dir1/myfile, dir1/mydir, dir1/mylink Path fileEntry = Paths.get("myfile"); - dir1.resolve(fileEntry).createFile(); + createFile(dir1.resolve(fileEntry)); Path dirEntry = Paths.get("mydir"); - dir1.resolve(dirEntry).createDirectory(); + createDirectory(dir1.resolve(dirEntry)); Path linkEntry = Paths.get("mylink"); if (supportsLinks) - dir1.resolve(linkEntry).createSymbolicLink(Paths.get("missing")); + createSymbolicLink(dir1.resolve(linkEntry), Paths.get("missing")); // target name Path target = Paths.get("newfile"); // open stream to both directories SecureDirectoryStream stream1 = - (SecureDirectoryStream)dir1.newDirectoryStream(); + (SecureDirectoryStream)newDirectoryStream(dir1); SecureDirectoryStream stream2 = - (SecureDirectoryStream)dir2.newDirectoryStream(); + (SecureDirectoryStream)newDirectoryStream(dir2); // Test: move dir1/myfile -> dir2/newfile stream1.move(fileEntry, stream2, target); - assertTrue(dir1.resolve(fileEntry).notExists()); - assertTrue(dir2.resolve(target).exists()); + assertTrue(notExists(dir1.resolve(fileEntry))); + assertTrue(exists(dir2.resolve(target))); stream2.deleteFile(target); // Test: move dir1/mydir -> dir2/newfile stream1.move(dirEntry, stream2, target); - assertTrue(dir1.resolve(dirEntry).notExists()); - assertTrue(dir2.resolve(target).exists()); + assertTrue(notExists(dir1.resolve(dirEntry))); + assertTrue(exists(dir2.resolve(target))); stream2.deleteDirectory(target); // Test: move dir1/mylink -> dir2/newfile if (supportsLinks) { stream1.move(linkEntry, stream2, target); - assertTrue(dir2.resolve(target) - .getFileAttributeView(BasicFileAttributeView.class, NOFOLLOW_LINKS) - .readAttributes() - .isSymbolicLink()); + assertTrue(isSymbolicLink(dir2.resolve(target))); stream2.deleteFile(target); } @@ -220,10 +218,10 @@ public class SecureDS { String testDirAsString = System.getProperty("test.dir"); if (testDirAsString != null) { Path testDir = Paths.get(testDirAsString); - if (!dir1.getFileStore().equals(testDir.getFileStore())) { + if (!getFileStore(dir1).equals(getFileStore(testDir))) { SecureDirectoryStream ts = - (SecureDirectoryStream)testDir.newDirectoryStream(); - dir1.resolve(fileEntry).createFile(); + (SecureDirectoryStream)newDirectoryStream(testDir); + createFile(dir1.resolve(fileEntry)); try { stream1.move(fileEntry, ts, target); shouldNotGetHere(); @@ -234,17 +232,17 @@ public class SecureDS { } // clean-up - dir1.delete(); - dir2.delete(); + delete(dir1); + delete(dir2); } // null and ClosedDirectoryStreamException static void miscTests(Path dir) throws IOException { Path file = Paths.get("file"); - dir.resolve(file).createFile(); + createFile(dir.resolve(file)); SecureDirectoryStream stream = - (SecureDirectoryStream)dir.newDirectoryStream(); + (SecureDirectoryStream)newDirectoryStream(dir); // NullPointerException try { @@ -319,7 +317,7 @@ public class SecureDS { } catch (ClosedDirectoryStreamException x) { } // clean-up - dir.resolve(file).delete(); + delete(dir.resolve(file)); } static void assertTrue(boolean b) { diff --git a/jdk/test/java/nio/file/FileStore/Basic.java b/jdk/test/java/nio/file/FileStore/Basic.java index 0b43109d3a0..f49bc6552bb 100644 --- a/jdk/test/java/nio/file/FileStore/Basic.java +++ b/jdk/test/java/nio/file/FileStore/Basic.java @@ -22,18 +22,21 @@ */ /* @test - * @bug 4313887 6873621 6979526 + * @bug 4313887 6873621 6979526 7006126 * @summary Unit test for java.nio.file.FileStore * @library .. */ import java.nio.file.*; import java.nio.file.attribute.*; +import java.io.File; import java.io.IOException; import java.util.*; public class Basic { + static final long G = 1024L * 1024L * 1024L; + public static void main(String[] args) throws IOException { Path dir = TestUtil.createTemporaryDirectory(); try { @@ -48,17 +51,25 @@ public class Basic { throw new RuntimeException("Assertion failed"); } + static void checkWithin1GB(long value1, long value2) { + long diff = Math.abs(value1 - value2); + if (diff > G) + throw new RuntimeException("values differ by more than 1GB"); + } + static void doTests(Path dir) throws IOException { /** * Test: Directory should be on FileStore that is writable */ - assertTrue(!dir.getFileStore().isReadOnly()); + assertTrue(!Files.getFileStore(dir).isReadOnly()); /** * Test: Two files should have the same FileStore */ - FileStore store1 = dir.resolve("foo").createFile().getFileStore(); - FileStore store2 = dir.resolve("bar").createFile().getFileStore(); + Path file1 = Files.createFile(dir.resolve("foo")); + Path file2 = Files.createFile(dir.resolve("bar")); + FileStore store1 = Files.getFileStore(file1); + FileStore store2 = Files.getFileStore(file2); assertTrue(store1.equals(store2)); assertTrue(store2.equals(store1)); assertTrue(store1.hashCode() == store2.hashCode()); @@ -77,6 +88,24 @@ public class Basic { assertTrue(store1.supportsFileAttributeView("user") == store1.supportsFileAttributeView(UserDefinedFileAttributeView.class)); + /** + * Test: Space atributes + */ + File f = file1.toFile(); + long total = f.getTotalSpace(); + long free = f.getFreeSpace(); + long usable = f.getUsableSpace(); + + // check values are "close" + checkWithin1GB(total, store1.getTotalSpace()); + checkWithin1GB(free, store1.getUnallocatedSpace()); + checkWithin1GB(usable, store1.getUsableSpace()); + + // get values by name + checkWithin1GB(total, (Long)store1.getAttribute("totalSpace")); + checkWithin1GB(free, (Long)store1.getAttribute("unallocatedSpace")); + checkWithin1GB(usable, (Long)store1.getAttribute("usableSpace")); + /** * Test: Enumerate all FileStores */ @@ -85,8 +114,10 @@ public class Basic { System.out.format("%s (name=%s type=%s)\n", store, store.name(), store.type()); - // check space attributes - Attributes.readFileStoreSpaceAttributes(store); + // check space attributes are accessible + store.getTotalSpace(); + store.getUnallocatedSpace(); + store.getUsableSpace(); // two distinct FileStores should not be equal assertTrue(!store.equals(prev)); diff --git a/jdk/test/java/nio/file/Files/BytesAndLines.java b/jdk/test/java/nio/file/Files/BytesAndLines.java new file mode 100644 index 00000000000..2833c99cb73 --- /dev/null +++ b/jdk/test/java/nio/file/Files/BytesAndLines.java @@ -0,0 +1,252 @@ +/* + * Copyright (c) 2011, 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 7006126 + * @summary Unit test for methods for Files readAllBytes, readAllLines and + * and write methods. + */ + +import java.nio.file.*; +import static java.nio.file.Files.*; +import java.io.*; +import java.util.*; +import java.nio.charset.*; + +public class BytesAndLines { + static final Random rand = new Random(); + + static final Charset US_ASCII = Charset.forName("US-ASCII"); + + public static void main(String[] args) throws IOException { + testReadAndWriteBytes(); + testReadLines(); + testWriteLines(); + } + + /** + * Test readAllBytes(Path) and write(Path, byte[], OpenOption...) + */ + static void testReadAndWriteBytes() throws IOException { + // exercise methods with various sizes + testReadAndWriteBytes(0); + for (int i=0; i<100; i++) { + testReadAndWriteBytes(rand.nextInt(32000)); + } + + // NullPointerException + Path file = Paths.get("foo"); + List lines = Collections.emptyList(); + try { + readAllBytes(null); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + write(null, lines, Charset.defaultCharset()); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + write(file, null, Charset.defaultCharset()); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + write(file, lines, null); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + write(file, lines, Charset.defaultCharset(), (OpenOption[])null); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + OpenOption[] opts = { null }; + write(file, lines, Charset.defaultCharset(), opts); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + } + + + static void testReadAndWriteBytes(int size) throws IOException { + Path path = createTempFile("blah", null); + try { + boolean append = rand.nextBoolean(); + + byte[] b1 = new byte[size]; + rand.nextBytes(b1); + + byte[] b2 = (append) ? new byte[size] : new byte[0]; + rand.nextBytes(b2); + + // write method should create file if it doesn't exist + if (rand.nextBoolean()) + delete(path); + + // write bytes to file + Path target = write(path, b1); + assertTrue(target==path, "Unexpected path"); + assertTrue(size(path) == b1.length, "Unexpected file size"); + + // append bytes to file (might be 0 bytes) + write(path, b2, StandardOpenOption.APPEND); + assertTrue(size(path) == b1.length + b2.length, "Unexpected file size"); + + // read entire file + byte[] read = readAllBytes(path); + + // check bytes are correct + byte[] expected; + if (append) { + expected = new byte[b1.length + b2.length]; + System.arraycopy(b1, 0, expected, 0, b1.length); + System.arraycopy(b2, 0, expected, b1.length, b2.length); + } else { + expected = b1; + } + assertTrue(Arrays.equals(read, expected), + "Bytes read not the same as bytes written"); + } finally { + deleteIfExists(path); + } + } + + /** + * Test readAllLines(Path,Charset) + */ + static void testReadLines() throws IOException { + Path tmpfile = createTempFile("blah", "txt"); + try { + List lines; + + // zero lines + assertTrue(size(tmpfile) == 0, "File should be empty"); + lines = readAllLines(tmpfile, US_ASCII); + assertTrue(lines.isEmpty(), "No line expected"); + + // one line + byte[] hi = { (byte)'h', (byte)'i' }; + write(tmpfile, hi); + lines = readAllLines(tmpfile, US_ASCII); + assertTrue(lines.size() == 1, "One line expected"); + assertTrue(lines.get(0).equals("hi"), "'Hi' expected"); + + // two lines using platform's line separator + List expected = Arrays.asList("hi", "there"); + write(tmpfile, expected, US_ASCII); + assertTrue(size(tmpfile) > 0, "File is empty"); + lines = readAllLines(tmpfile, US_ASCII); + assertTrue(lines.equals(expected), "Unexpected lines"); + + // MalformedInputException + byte[] bad = { (byte)0xff, (byte)0xff }; + write(tmpfile, bad); + try { + readAllLines(tmpfile, US_ASCII); + throw new RuntimeException("MalformedInputException expected"); + } catch (MalformedInputException ignore) { } + + + // NullPointerException + try { + readAllLines(null, US_ASCII); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + readAllLines(tmpfile, null); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + + } finally { + delete(tmpfile); + } + } + + /** + * Test write(Path,Iterable,Charset,OpenOption...) + */ + static void testWriteLines() throws IOException { + Path tmpfile = createTempFile("blah", "txt"); + try { + // write method should create file if it doesn't exist + if (rand.nextBoolean()) + delete(tmpfile); + + // zero lines + Path result = write(tmpfile, Collections.emptyList(), US_ASCII); + assert(size(tmpfile) == 0); + assert(result == tmpfile); + + // two lines + List lines = Arrays.asList("hi", "there"); + write(tmpfile, lines, US_ASCII); + List actual = readAllLines(tmpfile, US_ASCII); + assertTrue(actual.equals(lines), "Unexpected lines"); + + // append two lines + write(tmpfile, lines, US_ASCII, StandardOpenOption.APPEND); + List expected = new ArrayList(); + expected.addAll(lines); + expected.addAll(lines); + assertTrue(expected.size() == 4, "List should have 4 elements"); + actual = readAllLines(tmpfile, US_ASCII); + assertTrue(actual.equals(expected), "Unexpected lines"); + + // UnmappableCharacterException + try { + String s = "\u00A0\u00A1"; + write(tmpfile, Arrays.asList(s), US_ASCII); + throw new RuntimeException("UnmappableCharacterException expected"); + } catch (UnmappableCharacterException ignore) { } + + // NullPointerException + try { + write(null, lines, US_ASCII); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + write(tmpfile, null, US_ASCII); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + write(tmpfile, lines, null); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + write(tmpfile, lines, US_ASCII, (OpenOption[])null); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + OpenOption[] opts = { (OpenOption)null }; + write(tmpfile, lines, US_ASCII, opts); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + + } finally { + delete(tmpfile); + } + + } + + static void assertTrue(boolean expr, String errmsg) { + if (!expr) + throw new RuntimeException(errmsg); + } +} diff --git a/jdk/test/java/nio/file/Path/CheckPermissions.java b/jdk/test/java/nio/file/Files/CheckPermissions.java similarity index 70% rename from jdk/test/java/nio/file/Path/CheckPermissions.java rename to jdk/test/java/nio/file/Files/CheckPermissions.java index 9996ac7490f..8137a358d42 100644 --- a/jdk/test/java/nio/file/Path/CheckPermissions.java +++ b/jdk/test/java/nio/file/Files/CheckPermissions.java @@ -22,8 +22,8 @@ */ /* @test - * @bug 6866804 - * @summary Unit test for java.nio.file.Path + * @bug 6866804 7006126 + * @summary Unit test for java.nio.file.Files * @library .. * @build CheckPermissions * @run main/othervm CheckPermissions @@ -31,6 +31,8 @@ import java.nio.ByteBuffer; import java.nio.file.*; +import static java.nio.file.Files.*; +import static java.nio.file.StandardOpenOption.*; import java.nio.file.attribute.*; import java.nio.channels.SeekableByteChannel; import java.security.Permission; @@ -45,12 +47,12 @@ import java.util.*; public class CheckPermissions { static class Checks { - private List permissionsChecked = new ArrayList(); - private Set propertiesChecked = new HashSet(); - private List readsChecked = new ArrayList(); - private List writesChecked = new ArrayList(); - private List deletesChecked = new ArrayList(); - private List execsChecked = new ArrayList(); + private List permissionsChecked = new ArrayList<>(); + private Set propertiesChecked = new HashSet<>(); + private List readsChecked = new ArrayList<>(); + private List writesChecked = new ArrayList<>(); + private List deletesChecked = new ArrayList<>(); + private List execsChecked = new ArrayList<>(); List permissionsChecked() { return permissionsChecked; } Set propertiesChecked() { return propertiesChecked; } @@ -78,7 +80,7 @@ public class CheckPermissions { if (type.isInstance(perm) && perm.getName().equals(name)) return; } - throw new RuntimeException(type.getName() + "\"" + name + "\") not checked"); + throw new RuntimeException(type.getName() + "(\"" + name + "\") not checked"); } static void assertCheckPropertyAccess(String key) { @@ -103,6 +105,17 @@ public class CheckPermissions { assertChecked(file, myChecks.get().writesChecked()); } + static void assertCheckWriteToDirectory(Path dir) { + String s = dir.toString(); + List list = myChecks.get().writesChecked(); + for (String f: list) { + if (f.startsWith(s)) { + return; + } + } + throw new RuntimeException("Access not checked"); + } + static void assertCheckDelete(Path file) { assertChecked(file, myChecks.get().deletesChecked()); } @@ -197,215 +210,240 @@ public class CheckPermissions { } public static void main(String[] args) throws IOException { - Path dir = Paths.get(System.getProperty("test.dir", ".")); - Path file = dir.resolve("file1234").createFile(); + final Path testdir = Paths.get(System.getProperty("test.dir", ".")).toAbsolutePath(); + final Path tmpdir = Paths.get(System.getProperty("java.io.tmpdir")); + + Path file = createFile(testdir.resolve("file1234")); try { LoggingSecurityManager.install(); - // -- checkAccess -- + // -- check access -- prepare(); - file.checkAccess(); + exists(file); assertCheckRead(file); prepare(); - file.checkAccess(AccessMode.READ); + isReadable(file); assertCheckRead(file); prepare(); - file.checkAccess(AccessMode.WRITE); + isWritable(file); assertCheckWrite(file); prepare(); - try { - file.checkAccess(AccessMode.EXECUTE); - } catch (AccessDeniedException x) { } + isExecutable(file); assertCheckExec(file); - prepare(); - try { - file.checkAccess(AccessMode.READ, AccessMode.WRITE, AccessMode.EXECUTE); - } catch (AccessDeniedException x) { } - assertCheckRead(file); - assertCheckWrite(file); - assertCheckExec(file); + // -- copy -- - // -- copyTo -- - - Path target = dir.resolve("target1234"); + Path target = testdir.resolve("target1234"); prepare(); - file.copyTo(target); + copy(file, target); try { assertCheckRead(file); assertCheckWrite(target); } finally { - target.delete(); + delete(target); } - if (TestUtil.supportsLinks(dir)) { - Path link = dir.resolve("link1234").createSymbolicLink(file); + if (TestUtil.supportsLinks(testdir)) { + Path link = testdir.resolve("link1234"); + createSymbolicLink(link, file); try { prepare(); - link.copyTo(target, LinkOption.NOFOLLOW_LINKS); + copy(link, target, LinkOption.NOFOLLOW_LINKS); try { assertCheckRead(link); assertCheckWrite(target); assertCheckPermission(LinkPermission.class, "symbolic"); } finally { - target.delete(); + delete(target); } } finally { - link.delete(); + delete(link); } } // -- createDirectory -- - Path subdir = dir.resolve("subdir1234"); + Path subdir = testdir.resolve("subdir1234"); prepare(); - subdir.createDirectory(); + createDirectory(subdir); try { assertCheckWrite(subdir); } finally { - subdir.delete(); + delete(subdir); } // -- createFile -- - Path fileToCreate = dir.resolve("file7890"); + Path fileToCreate = testdir.resolve("file7890"); prepare(); + createFile(fileToCreate); try { - fileToCreate.createFile(); assertCheckWrite(fileToCreate); } finally { - fileToCreate.delete(); + delete(fileToCreate); } // -- createSymbolicLink -- - if (TestUtil.supportsLinks(dir)) { + if (TestUtil.supportsLinks(testdir)) { prepare(); - Path link = dir.resolve("link1234").createSymbolicLink(file); + Path link = testdir.resolve("link1234"); + createSymbolicLink(link, file); try { assertCheckWrite(link); assertCheckPermission(LinkPermission.class, "symbolic"); } finally { - link.delete(); + delete(link); } } + // -- createLink -- + + if (TestUtil.supportsLinks(testdir)) { + prepare(); + Path link = testdir.resolve("entry234"); + createLink(link, file); + try { + assertCheckWrite(link); + assertCheckPermission(LinkPermission.class, "hard"); + } finally { + delete(link); + } + } + + // -- createTempFile -- + + prepare(); + Path tmpfile1 = createTempFile("foo", null); + try { + assertCheckWriteToDirectory(tmpdir); + } finally { + delete(tmpfile1); + } + prepare(); + Path tmpfile2 = createTempFile(testdir, "foo", ".tmp"); + try { + assertCheckWriteToDirectory(testdir); + } finally { + delete(tmpfile2); + } + + // -- createTempDirectory -- + + prepare(); + Path tmpdir1 = createTempDirectory("foo"); + try { + assertCheckWriteToDirectory(tmpdir); + } finally { + delete(tmpdir1); + } + prepare(); + Path tmpdir2 = createTempDirectory(testdir, "foo"); + try { + assertCheckWriteToDirectory(testdir); + } finally { + delete(tmpdir2); + } + // -- delete/deleteIfExists -- - Path fileToDelete = dir.resolve("file7890"); + Path fileToDelete = testdir.resolve("file7890"); - fileToDelete.createFile(); + createFile(fileToDelete); prepare(); - fileToDelete.delete(); + delete(fileToDelete); assertCheckDelete(fileToDelete); - fileToDelete.createFile(); + createFile(fileToDelete); prepare(); - fileToDelete.deleteIfExists(); + deleteIfExists(fileToDelete); // file exists + assertCheckDelete(fileToDelete); + + prepare(); + deleteIfExists(fileToDelete); // file does not exist assertCheckDelete(fileToDelete); // -- exists/notExists -- prepare(); - file.exists(); + exists(file); assertCheckRead(file); prepare(); - file.notExists(); + notExists(file); assertCheckRead(file); // -- getFileStore -- prepare(); - file.getFileStore(); + getFileStore(file); assertCheckRead(file); assertCheckPermission(RuntimePermission.class, "getFileStoreAttributes"); // -- isSameFile -- prepare(); - file.isSameFile(dir); + isSameFile(file, testdir); assertCheckRead(file); - assertCheckRead(dir); + assertCheckRead(testdir); - // -- moveTo -- + // -- move -- - Path target2 = dir.resolve("target1234"); + Path target2 = testdir.resolve("target1234"); prepare(); - file.moveTo(target2); + move(file, target2); try { assertCheckWrite(file); assertCheckWrite(target2); } finally { // restore file - target2.moveTo(file); + move(target2, file); } // -- newByteChannel -- - SeekableByteChannel sbc; - prepare(); - sbc = file.newByteChannel(); - try { + try (SeekableByteChannel sbc = newByteChannel(file)) { assertCheckRead(file); - } finally { - sbc.close(); } prepare(); - sbc = file.newByteChannel(StandardOpenOption.WRITE); - try { + try (SeekableByteChannel sbc = newByteChannel(file, WRITE)) { assertCheckWrite(file); - } finally { - sbc.close(); } prepare(); - sbc = file.newByteChannel(StandardOpenOption.READ, StandardOpenOption.WRITE); - try { + try (SeekableByteChannel sbc = newByteChannel(file, READ, WRITE)) { assertCheckRead(file); assertCheckWrite(file); - } finally { - sbc.close(); } prepare(); - sbc = file.newByteChannel(StandardOpenOption.DELETE_ON_CLOSE); - try { + try (SeekableByteChannel sbc = newByteChannel(file, DELETE_ON_CLOSE)) { assertCheckRead(file); assertCheckDelete(file); - } finally { - sbc.close(); } - file.createFile(); // restore file + createFile(file); // restore file // -- newInputStream/newOutptuStream -- prepare(); - InputStream in = file.newInputStream(); - try { + try (InputStream in = newInputStream(file)) { assertCheckRead(file); - } finally { - in.close(); } prepare(); - OutputStream out = file.newOutputStream(); - try { + try (OutputStream out = newOutputStream(file)) { assertCheckWrite(file); - } finally { - out.close(); } // -- newDirectoryStream -- prepare(); - DirectoryStream stream = dir.newDirectoryStream(); - try { - assertCheckRead(dir); + try (DirectoryStream stream = newDirectoryStream(testdir)) { + assertCheckRead(testdir); if (stream instanceof SecureDirectoryStream) { Path entry; @@ -413,63 +451,57 @@ public class CheckPermissions { (SecureDirectoryStream)stream; // newByteChannel - entry = file.getName(); + entry = file.getFileName(); prepare(); - sbc = sds.newByteChannel(entry, EnumSet.of(StandardOpenOption.READ)); - try { + try (SeekableByteChannel sbc = sds.newByteChannel(entry, EnumSet.of(READ))) { assertCheckRead(file); - } finally { - sbc.close(); } prepare(); - sbc = sds.newByteChannel(entry, EnumSet.of(StandardOpenOption.WRITE)); - try { + try (SeekableByteChannel sbc = sds.newByteChannel(entry, EnumSet.of(WRITE))) { assertCheckWrite(file); - } finally { - sbc.close(); } // deleteFile - entry = file.getName(); + entry = file.getFileName(); prepare(); sds.deleteFile(entry); assertCheckDelete(file); - dir.resolve(entry).createFile(); // restore file + createFile(testdir.resolve(entry)); // restore file // deleteDirectory entry = Paths.get("subdir1234"); - dir.resolve(entry).createDirectory(); + createDirectory(testdir.resolve(entry)); prepare(); sds.deleteDirectory(entry); - assertCheckDelete(dir.resolve(entry)); + assertCheckDelete(testdir.resolve(entry)); // move entry = Paths.get("tempname1234"); prepare(); - sds.move(file.getName(), sds, entry); + sds.move(file.getFileName(), sds, entry); assertCheckWrite(file); - assertCheckWrite(dir.resolve(entry)); - sds.move(entry, sds, file.getName()); // restore file + assertCheckWrite(testdir.resolve(entry)); + sds.move(entry, sds, file.getFileName()); // restore file // newDirectoryStream entry = Paths.get("subdir1234"); - dir.resolve(entry).createDirectory(); + createDirectory(testdir.resolve(entry)); try { prepare(); sds.newDirectoryStream(entry).close(); - assertCheckRead(dir.resolve(entry)); + assertCheckRead(testdir.resolve(entry)); } finally { - dir.resolve(entry).delete(); + delete(testdir.resolve(entry)); } // getFileAttributeView to access attributes of directory testBasicFileAttributeView(sds - .getFileAttributeView(BasicFileAttributeView.class), dir); + .getFileAttributeView(BasicFileAttributeView.class), testdir); testPosixFileAttributeView(sds - .getFileAttributeView(PosixFileAttributeView.class), dir); + .getFileAttributeView(PosixFileAttributeView.class), testdir); // getFileAttributeView to access attributes of entry - entry = file.getName(); + entry = file.getFileName(); testBasicFileAttributeView(sds .getFileAttributeView(entry, BasicFileAttributeView.class), file); testPosixFileAttributeView(sds @@ -478,15 +510,12 @@ public class CheckPermissions { } else { System.out.println("SecureDirectoryStream not tested"); } - - } finally { - stream.close(); } // -- toAbsolutePath -- prepare(); - file.getName().toAbsolutePath(); + file.getFileName().toAbsolutePath(); assertCheckPropertyAccess("user.dir"); // -- toRealPath -- @@ -509,41 +538,38 @@ public class CheckPermissions { // -- register -- - WatchService watcher = FileSystems.getDefault().newWatchService(); - try { + try (WatchService watcher = FileSystems.getDefault().newWatchService()) { prepare(); - dir.register(watcher, StandardWatchEventKind.ENTRY_DELETE); - assertCheckRead(dir); - } finally { - watcher.close(); + testdir.register(watcher, StandardWatchEventKind.ENTRY_DELETE); + assertCheckRead(testdir); } // -- getAttribute/setAttribute/readAttributes -- prepare(); - file.getAttribute("size"); + getAttribute(file, "size"); assertCheckRead(file); prepare(); - file.setAttribute("lastModifiedTime", + setAttribute(file, "lastModifiedTime", FileTime.fromMillis(System.currentTimeMillis())); assertCheckWrite(file); prepare(); - file.readAttributes("*"); + readAttributes(file, "*"); assertCheckRead(file); // -- BasicFileAttributeView -- - testBasicFileAttributeView(file - .getFileAttributeView(BasicFileAttributeView.class), file); + testBasicFileAttributeView( + getFileAttributeView(file, BasicFileAttributeView.class), file); // -- PosixFileAttributeView -- { PosixFileAttributeView view = - file.getFileAttributeView(PosixFileAttributeView.class); + getFileAttributeView(file, PosixFileAttributeView.class); if (view != null && - file.getFileStore().supportsFileAttributeView(PosixFileAttributeView.class)) + getFileStore(file).supportsFileAttributeView(PosixFileAttributeView.class)) { testPosixFileAttributeView(view, file); } else { @@ -555,9 +581,9 @@ public class CheckPermissions { { DosFileAttributeView view = - file.getFileAttributeView(DosFileAttributeView.class); + getFileAttributeView(file, DosFileAttributeView.class); if (view != null && - file.getFileStore().supportsFileAttributeView(DosFileAttributeView.class)) + getFileStore(file).supportsFileAttributeView(DosFileAttributeView.class)) { prepare(); view.readAttributes(); @@ -587,9 +613,9 @@ public class CheckPermissions { { FileOwnerAttributeView view = - file.getFileAttributeView(FileOwnerAttributeView.class); + getFileAttributeView(file, FileOwnerAttributeView.class); if (view != null && - file.getFileStore().supportsFileAttributeView(FileOwnerAttributeView.class)) + getFileStore(file).supportsFileAttributeView(FileOwnerAttributeView.class)) { prepare(); UserPrincipal owner = view.getOwner(); @@ -610,9 +636,9 @@ public class CheckPermissions { { UserDefinedFileAttributeView view = - file.getFileAttributeView(UserDefinedFileAttributeView.class); + getFileAttributeView(file, UserDefinedFileAttributeView.class); if (view != null && - file.getFileStore().supportsFileAttributeView(UserDefinedFileAttributeView.class)) + getFileStore(file).supportsFileAttributeView(UserDefinedFileAttributeView.class)) { prepare(); view.write("test", ByteBuffer.wrap(new byte[100])); @@ -651,9 +677,9 @@ public class CheckPermissions { // -- AclFileAttributeView -- { AclFileAttributeView view = - file.getFileAttributeView(AclFileAttributeView.class); + getFileAttributeView(file, AclFileAttributeView.class); if (view != null && - file.getFileStore().supportsFileAttributeView(AclFileAttributeView.class)) + getFileStore(file).supportsFileAttributeView(AclFileAttributeView.class)) { prepare(); List acl = view.getAcl(); @@ -672,7 +698,7 @@ public class CheckPermissions { UserPrincipalLookupService lookupService = FileSystems.getDefault().getUserPrincipalLookupService(); - UserPrincipal owner = Attributes.getOwner(file); + UserPrincipal owner = getOwner(file); prepare(); lookupService.lookupPrincipalByName(owner.getName()); @@ -680,7 +706,7 @@ public class CheckPermissions { "lookupUserInformation"); try { - UserPrincipal group = Attributes.readPosixFileAttributes(file).group(); + UserPrincipal group = readAttributes(file, PosixFileAttributes.class).group(); prepare(); lookupService.lookupPrincipalByGroupName(group.getName()); assertCheckPermission(RuntimePermission.class, @@ -691,7 +717,7 @@ public class CheckPermissions { } finally { - file.deleteIfExists(); + deleteIfExists(file); } } } diff --git a/jdk/test/java/nio/file/Path/CopyAndMove.java b/jdk/test/java/nio/file/Files/CopyAndMove.java similarity index 63% rename from jdk/test/java/nio/file/Path/CopyAndMove.java rename to jdk/test/java/nio/file/Files/CopyAndMove.java index 17e3cab38e0..c0d2ba6dd8f 100644 --- a/jdk/test/java/nio/file/Path/CopyAndMove.java +++ b/jdk/test/java/nio/file/Files/CopyAndMove.java @@ -22,8 +22,8 @@ */ /* @test - * @bug 4313887 6838333 6917021 - * @summary Unit test for java.nio.file.Path copyTo/moveTo methods + * @bug 4313887 6838333 6917021 7006126 + * @summary Unit test for java.nio.file.Files copy and move methods * @library .. * @build CopyAndMove PassThroughFileSystem * @run main/othervm CopyAndMove @@ -31,6 +31,7 @@ import java.nio.ByteBuffer; import java.nio.file.*; +import static java.nio.file.Files.*; import static java.nio.file.StandardCopyOption.*; import static java.nio.file.LinkOption.*; import java.nio.file.attribute.*; @@ -44,9 +45,10 @@ public class CopyAndMove { public static void main(String[] args) throws Exception { Path dir1 = TestUtil.createTemporaryDirectory(); try { + // Same directory - doCopyTests(dir1, dir1, TestUtil.supportsLinks(dir1)); - doMoveTests(dir1, dir1, TestUtil.supportsLinks(dir1)); + testCopyFileToFile(dir1, dir1, TestUtil.supportsLinks(dir1)); + testMove(dir1, dir1, TestUtil.supportsLinks(dir1)); // Different directories. Use test.dir if possible as it might be // a different volume/file system and so improve test coverage. @@ -55,16 +57,20 @@ public class CopyAndMove { try { boolean testSymbolicLinks = TestUtil.supportsLinks(dir1) && TestUtil.supportsLinks(dir2); - doCopyTests(dir1, dir2, testSymbolicLinks); - doMoveTests(dir1, dir2, testSymbolicLinks); + testCopyFileToFile(dir1, dir2, testSymbolicLinks); + testMove(dir1, dir2, testSymbolicLinks); } finally { TestUtil.removeAll(dir2); } // Target is location associated with custom provider Path dir3 = PassThroughFileSystem.create().getPath(dir1.toString()); - doCopyTests(dir1, dir3, false); - doMoveTests(dir1, dir3, false); + testCopyFileToFile(dir1, dir3, false); + testMove(dir1, dir3, false); + + // Test copy(InputStream,Path) and copy(Path,OutputStream) + testCopyInputStreamToFile(); + testCopyFileToOuputStream(); } finally { TestUtil.removeAll(dir1); @@ -121,9 +127,9 @@ public class CopyAndMove { static Map readUserDefinedFileAttributes(Path file) throws IOException { - UserDefinedFileAttributeView view = file - .getFileAttributeView(UserDefinedFileAttributeView.class); - Map result = new HashMap(); + UserDefinedFileAttributeView view = + getFileAttributeView(file, UserDefinedFileAttributeView.class); + Map result = new HashMap<>(); for (String name: view.list()) { int size = view.size(name); ByteBuffer bb = ByteBuffer.allocate(size); @@ -148,15 +154,15 @@ public class CopyAndMove { // get file attributes of source file String os = System.getProperty("os.name"); if (os.equals("SunOS") || os.equals("Linux")) { - posixAttributes = Attributes.readPosixFileAttributes(source, NOFOLLOW_LINKS); + posixAttributes = readAttributes(source, PosixFileAttributes.class, NOFOLLOW_LINKS); basicAttributes = posixAttributes; } if (os.startsWith("Windows")) { - dosAttributes = Attributes.readDosFileAttributes(source, NOFOLLOW_LINKS); + dosAttributes = readAttributes(source, DosFileAttributes.class, NOFOLLOW_LINKS); basicAttributes = dosAttributes; } if (basicAttributes == null) - basicAttributes = Attributes.readBasicFileAttributes(source, NOFOLLOW_LINKS); + basicAttributes = readAttributes(source, BasicFileAttributes.class, NOFOLLOW_LINKS); // hash file contents if regular file int hash = (basicAttributes.isRegularFile()) ? computeHash(source) : 0; @@ -164,20 +170,21 @@ public class CopyAndMove { // record link target if symbolic link Path linkTarget = null; if (basicAttributes.isSymbolicLink()) - linkTarget = source.readSymbolicLink(); + linkTarget = readSymbolicLink(source); // read named attributes if available (and file is not a sym link) if (!basicAttributes.isSymbolicLink() && - source.getFileStore().supportsFileAttributeView("xattr")) + getFileStore(source).supportsFileAttributeView("xattr")) { namedAttributes = readUserDefinedFileAttributes(source); } // move file - source.moveTo(target, options); + Path result = move(source, target, options); + assertTrue(result == target); // verify source does not exist - assertTrue(source.notExists()); + assertTrue(notExists(source)); // verify file contents if (basicAttributes.isRegularFile()) { @@ -187,13 +194,13 @@ public class CopyAndMove { // verify link target if (basicAttributes.isSymbolicLink()) { - if (!target.readSymbolicLink().equals(linkTarget)) + if (!readSymbolicLink(target).equals(linkTarget)) throw new RuntimeException("Failed to verify move of symbolic link"); } // verify basic attributes checkBasicAttributes(basicAttributes, - Attributes.readBasicFileAttributes(target, NOFOLLOW_LINKS)); + readAttributes(target, BasicFileAttributes.class, NOFOLLOW_LINKS)); // verify other attributes when same provider if (source.getFileSystem().provider() == target.getFileSystem().provider()) { @@ -201,18 +208,19 @@ public class CopyAndMove { // verify POSIX attributes if (posixAttributes != null && !basicAttributes.isSymbolicLink()) { checkPosixAttributes(posixAttributes, - Attributes.readPosixFileAttributes(target, NOFOLLOW_LINKS)); + readAttributes(target, PosixFileAttributes.class, NOFOLLOW_LINKS)); } // verify DOS attributes if (dosAttributes != null && !basicAttributes.isSymbolicLink()) { - checkDosAttributes(dosAttributes, - Attributes.readDosFileAttributes(target, NOFOLLOW_LINKS)); + DosFileAttributes attrs = + readAttributes(target, DosFileAttributes.class, NOFOLLOW_LINKS); + checkDosAttributes(dosAttributes, attrs); } // verify named attributes if (namedAttributes != null && - target.getFileStore().supportsFileAttributeView("xattr")) + getFileStore(target).supportsFileAttributeView("xattr")) { checkUserDefinedFileAttributes(namedAttributes, readUserDefinedFileAttributes(target)); @@ -221,14 +229,14 @@ public class CopyAndMove { } /** - * Tests all possible ways to invoke moveTo + * Tests all possible ways to invoke move */ - static void doMoveTests(Path dir1, Path dir2, boolean supportsLinks) + static void testMove(Path dir1, Path dir2, boolean supportsLinks) throws IOException { Path source, target, entry; - boolean sameDevice = dir1.getFileStore().equals(dir2.getFileStore()); + boolean sameDevice = getFileStore(dir1).equals(getFileStore(dir2)); // -- regular file -- @@ -238,27 +246,28 @@ public class CopyAndMove { source = createSourceFile(dir1); target = getTargetFile(dir2); moveAndVerify(source, target); - target.delete(); + delete(target); /** * Test: move regular file, target exists */ source = createSourceFile(dir1); - target = getTargetFile(dir2).createFile(); + target = getTargetFile(dir2); + createFile(target); try { moveAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - target.delete(); - target.createDirectory(); + delete(target); + createDirectory(target); try { moveAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: move regular file, target does not exist @@ -266,38 +275,42 @@ public class CopyAndMove { source = createSourceFile(dir1); target = getTargetFile(dir2); moveAndVerify(source, target, REPLACE_EXISTING); - target.delete(); + delete(target); /** * Test: move regular file, target exists */ source = createSourceFile(dir1); - target = getTargetFile(dir2).createFile(); + target = getTargetFile(dir2); + createFile(target); moveAndVerify(source, target, REPLACE_EXISTING); - target.delete(); + delete(target); /** * Test: move regular file, target exists and is empty directory */ source = createSourceFile(dir1); - target = getTargetFile(dir2).createDirectory(); + target = getTargetFile(dir2); + createDirectory(target); moveAndVerify(source, target, REPLACE_EXISTING); - target.delete(); + delete(target); /** * Test: move regular file, target exists and is non-empty directory */ source = createSourceFile(dir1); - target = getTargetFile(dir2).createDirectory(); - entry = target.resolve("foo").createFile(); + target = getTargetFile(dir2); + createDirectory(target); + entry = target.resolve("foo"); + createFile(entry); try { moveAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - entry.delete(); - source.delete(); - target.delete(); + delete(entry); + delete(source); + delete(target); /** * Test atomic move of regular file (same file store) @@ -305,7 +318,7 @@ public class CopyAndMove { source = createSourceFile(dir1); target = getTargetFile(dir1); moveAndVerify(source, target, ATOMIC_MOVE); - target.delete(); + delete(target); /** * Test atomic move of regular file (different file store) @@ -318,7 +331,7 @@ public class CopyAndMove { throw new RuntimeException("AtomicMoveNotSupportedException expected"); } catch (AtomicMoveNotSupportedException x) { } - source.delete(); + delete(source); } // -- directories -- @@ -329,27 +342,28 @@ public class CopyAndMove { source = createSourceDirectory(dir1); target = getTargetFile(dir2); moveAndVerify(source, target); - target.delete(); + delete(target); /** * Test: move empty directory, target exists */ source = createSourceDirectory(dir1); - target = getTargetFile(dir2).createFile(); + target = getTargetFile(dir2); + createFile(target); try { moveAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - target.delete(); - target.createDirectory(); + delete(target); + createDirectory(target); try { moveAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: move empty directory, target does not exist @@ -357,74 +371,78 @@ public class CopyAndMove { source = createSourceDirectory(dir1); target = getTargetFile(dir2); moveAndVerify(source, target, REPLACE_EXISTING); - target.delete(); + delete(target); /** * Test: move empty directory, target exists */ source = createSourceDirectory(dir1); - target = getTargetFile(dir2).createFile(); + target = getTargetFile(dir2); + createFile(target); moveAndVerify(source, target, REPLACE_EXISTING); - target.delete(); + delete(target); /** * Test: move empty, target exists and is empty directory */ source = createSourceDirectory(dir1); - target = getTargetFile(dir2).createDirectory(); + target = getTargetFile(dir2); + createDirectory(target); moveAndVerify(source, target, REPLACE_EXISTING); - target.delete(); + delete(target); /** * Test: move empty directory, target exists and is non-empty directory */ source = createSourceDirectory(dir1); - target = getTargetFile(dir2).createDirectory(); - entry = target.resolve("foo").createFile(); + target = getTargetFile(dir2); + createDirectory(target); + entry = target.resolve("foo"); + createFile(entry); try { moveAndVerify(source, target, REPLACE_EXISTING); - throw new RuntimeException("FileAlreadyExistsException expected"); - } catch (FileAlreadyExistsException x) { + throw new RuntimeException("DirectoryNotEmptyException expected"); + } catch (DirectoryNotEmptyException x) { } - entry.delete(); - source.delete(); - target.delete(); + delete(entry); + delete(source); + delete(target); /** * Test: move non-empty directory (same file system) */ source = createSourceDirectory(dir1); - source.resolve("foo").createFile(); + createFile(source.resolve("foo")); target = getTargetFile(dir1); moveAndVerify(source, target); - target.resolve("foo").delete(); - target.delete(); + delete(target.resolve("foo")); + delete(target); /** * Test: move non-empty directory (different file store) */ if (!sameDevice) { source = createSourceDirectory(dir1); - source.resolve("foo").createFile(); + createFile(source.resolve("foo")); target = getTargetFile(dir2); try { moveAndVerify(source, target); throw new RuntimeException("IOException expected"); } catch (IOException x) { } - source.resolve("foo").delete(); - source.delete(); + delete(source.resolve("foo")); + delete(source); } /** * Test atomic move of directory (same file store) */ source = createSourceDirectory(dir1); - source.resolve("foo").createFile(); + createFile(source.resolve("foo")); target = getTargetFile(dir1); moveAndVerify(source, target, ATOMIC_MOVE); - target.resolve("foo").delete(); - target.delete(); + delete(target.resolve("foo")); + delete(target); // -- symbolic links -- @@ -433,21 +451,23 @@ public class CopyAndMove { */ if (supportsLinks) { Path tmp = createSourceFile(dir1); - source = dir1.resolve("link").createSymbolicLink(tmp); + source = dir1.resolve("link"); + createSymbolicLink(source, tmp); target = getTargetFile(dir2); moveAndVerify(source, target); - target.delete(); - tmp.delete(); + delete(target); + delete(tmp); } /** * Test: Move symbolic link to directory, target does not exist */ if (supportsLinks) { - source = dir1.resolve("link").createSymbolicLink(dir2); + source = dir1.resolve("link"); + createSymbolicLink(source, dir2); target = getTargetFile(dir2); moveAndVerify(source, target); - target.delete(); + delete(target); } /** @@ -455,72 +475,84 @@ public class CopyAndMove { */ if (supportsLinks) { Path tmp = Paths.get("doesnotexist"); - source = dir1.resolve("link").createSymbolicLink(tmp); + source = dir1.resolve("link"); + createSymbolicLink(source, tmp); target = getTargetFile(dir2); moveAndVerify(source, target); - target.delete(); + delete(target); } /** * Test: Move symbolic link, target exists */ if (supportsLinks) { - source = dir1.resolve("link").createSymbolicLink(dir2); - target = getTargetFile(dir2).createFile(); + source = dir1.resolve("link"); + createSymbolicLink(source, dir2); + target = getTargetFile(dir2); + createFile(target); try { moveAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - source.delete(); - target.delete(); + delete(source); + delete(target); } /** * Test: Move regular file, target exists */ if (supportsLinks) { - source = dir1.resolve("link").createSymbolicLink(dir2); - target = getTargetFile(dir2).createFile(); + source = dir1.resolve("link"); + createSymbolicLink(source, dir2); + target = getTargetFile(dir2); + createFile(target); moveAndVerify(source, target, REPLACE_EXISTING); - target.delete(); + delete(target); } /** * Test: move symbolic link, target exists and is empty directory */ if (supportsLinks) { - source = dir1.resolve("link").createSymbolicLink(dir2); - target = getTargetFile(dir2).createDirectory(); + source = dir1.resolve("link"); + createSymbolicLink(source, dir2); + target = getTargetFile(dir2); + createDirectory(target); moveAndVerify(source, target, REPLACE_EXISTING); - target.delete(); + delete(target); } /** * Test: symbolic link, target exists and is non-empty directory */ if (supportsLinks) { - source = dir1.resolve("link").createSymbolicLink(dir2); - target = getTargetFile(dir2).createDirectory(); - entry = target.resolve("foo").createFile(); + source = dir1.resolve("link"); + createSymbolicLink(source, dir2); + target = getTargetFile(dir2); + createDirectory(target); + entry = target.resolve("foo"); + createFile(entry); try { moveAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - entry.delete(); - source.delete(); - target.delete(); + delete(entry); + delete(source); + delete(target); } /** * Test atomic move of symbolic link (same file store) */ if (supportsLinks) { - source = dir1.resolve("link").createSymbolicLink(dir1); - target = getTargetFile(dir2).createFile(); + source = dir1.resolve("link"); + createSymbolicLink(source, dir1); + target = getTargetFile(dir2); + createFile(target); moveAndVerify(source, target, REPLACE_EXISTING); - target.delete(); + delete(target); } // -- misc. tests -- @@ -531,19 +563,23 @@ public class CopyAndMove { source = createSourceFile(dir1); target = getTargetFile(dir2); try { - source.moveTo(null); + move(null, target); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } try { - source.moveTo(target, (CopyOption[])null); + move(source, null); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException x) { } + try { + move(source, target, (CopyOption[])null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } try { CopyOption[] opts = { REPLACE_EXISTING, null }; - source.moveTo(target, opts); + move(source, target, opts); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } - source.delete(); + delete(source); /** * Test UOE @@ -551,19 +587,20 @@ public class CopyAndMove { source = createSourceFile(dir1); target = getTargetFile(dir2); try { - source.moveTo(target, new CopyOption() { }); + move(source, target, new CopyOption() { }); } catch (UnsupportedOperationException x) { } try { - source.moveTo(target, REPLACE_EXISTING, new CopyOption() { }); + move(source, target, REPLACE_EXISTING, new CopyOption() { }); } catch (UnsupportedOperationException x) { } - source.delete(); + delete(source); } // copy source to target with verification static void copyAndVerify(Path source, Path target, CopyOption... options) throws IOException { - source.copyTo(target, options); + Path result = copy(source, target, options); + assertTrue(result == target); // get attributes of source and target file to verify copy boolean followLinks = true; @@ -577,8 +614,8 @@ public class CopyAndMove { if (opt == COPY_ATTRIBUTES) copyAttributes = true; } - BasicFileAttributes basicAttributes = Attributes - .readBasicFileAttributes(source, linkOptions); + BasicFileAttributes basicAttributes = + readAttributes(source, BasicFileAttributes.class, linkOptions); // check hash if regular file if (basicAttributes.isRegularFile()) @@ -586,12 +623,12 @@ public class CopyAndMove { // check link target if symbolic link if (basicAttributes.isSymbolicLink()) - assert( source.readSymbolicLink().equals(target.readSymbolicLink())); + assert(readSymbolicLink(source).equals(readSymbolicLink(target))); // check that attributes are copied if (copyAttributes && followLinks) { checkBasicAttributes(basicAttributes, - Attributes.readBasicFileAttributes(source, linkOptions)); + readAttributes(source, BasicFileAttributes.class, linkOptions)); // verify other attributes when same provider if (source.getFileSystem().provider() == target.getFileSystem().provider()) { @@ -600,21 +637,21 @@ public class CopyAndMove { String os = System.getProperty("os.name"); if (os.equals("SunOS") || os.equals("Linux")) { checkPosixAttributes( - Attributes.readPosixFileAttributes(source, linkOptions), - Attributes.readPosixFileAttributes(target, linkOptions)); + readAttributes(source, PosixFileAttributes.class, linkOptions), + readAttributes(target, PosixFileAttributes.class, linkOptions)); } // check DOS attributes are copied if (os.startsWith("Windows")) { checkDosAttributes( - Attributes.readDosFileAttributes(source, linkOptions), - Attributes.readDosFileAttributes(target, linkOptions)); + readAttributes(source, DosFileAttributes.class, linkOptions), + readAttributes(target, DosFileAttributes.class, linkOptions)); } // check named attributes are copied if (followLinks && - source.getFileStore().supportsFileAttributeView("xattr") && - target.getFileStore().supportsFileAttributeView("xattr")) + getFileStore(source).supportsFileAttributeView("xattr") && + getFileStore(target).supportsFileAttributeView("xattr")) { checkUserDefinedFileAttributes(readUserDefinedFileAttributes(source), readUserDefinedFileAttributes(target)); @@ -624,9 +661,9 @@ public class CopyAndMove { } /** - * Tests all possible ways to invoke copyTo + * Tests all possible ways to invoke copy to copy a file to a file */ - static void doCopyTests(Path dir1, Path dir2, boolean supportsLinks) + static void testCopyFileToFile(Path dir1, Path dir2, boolean supportsLinks) throws IOException { Path source, target, link, entry; @@ -639,28 +676,29 @@ public class CopyAndMove { source = createSourceFile(dir1); target = getTargetFile(dir2); copyAndVerify(source, target); - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: copy regular file, target exists */ source = createSourceFile(dir1); - target = getTargetFile(dir2).createFile(); + target = getTargetFile(dir2); + createFile(target); try { copyAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - target.delete(); - target.createDirectory(); + delete(target); + createDirectory(target); try { copyAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: copy regular file, target does not exist @@ -668,41 +706,45 @@ public class CopyAndMove { source = createSourceFile(dir1); target = getTargetFile(dir2); copyAndVerify(source, target, REPLACE_EXISTING); - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: copy regular file, target exists */ source = createSourceFile(dir1); - target = getTargetFile(dir2).createFile(); + target = getTargetFile(dir2); + createFile(target); copyAndVerify(source, target, REPLACE_EXISTING); - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: copy regular file, target exists and is empty directory */ source = createSourceFile(dir1); - target = getTargetFile(dir2).createDirectory(); + target = getTargetFile(dir2); + createDirectory(target); copyAndVerify(source, target, REPLACE_EXISTING); - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: copy regular file, target exists and is non-empty directory */ source = createSourceFile(dir1); - target = getTargetFile(dir2).createDirectory(); - entry = target.resolve("foo").createFile(); + target = getTargetFile(dir2); + createDirectory(target); + entry = target.resolve("foo"); + createFile(entry); try { copyAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - entry.delete(); - source.delete(); - target.delete(); + delete(entry); + delete(source); + delete(target); /** * Test: copy regular file + attributes @@ -710,8 +752,8 @@ public class CopyAndMove { source = createSourceFile(dir1); target = getTargetFile(dir2); copyAndVerify(source, target, COPY_ATTRIBUTES); - source.delete(); - target.delete(); + delete(source); + delete(target); // -- directory -- @@ -722,28 +764,29 @@ public class CopyAndMove { source = createSourceDirectory(dir1); target = getTargetFile(dir2); copyAndVerify(source, target); - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: copy directory, target exists */ source = createSourceDirectory(dir1); - target = getTargetFile(dir2).createFile(); + target = getTargetFile(dir2); + createFile(target); try { copyAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - target.delete(); - target.createDirectory(); + delete(target); + createDirectory(target); try { copyAndVerify(source, target); throw new RuntimeException("FileAlreadyExistsException expected"); } catch (FileAlreadyExistsException x) { } - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: copy directory, target does not exist @@ -751,41 +794,45 @@ public class CopyAndMove { source = createSourceDirectory(dir1); target = getTargetFile(dir2); copyAndVerify(source, target, REPLACE_EXISTING); - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: copy directory, target exists */ source = createSourceDirectory(dir1); - target = getTargetFile(dir2).createFile(); + target = getTargetFile(dir2); + createFile(target); copyAndVerify(source, target, REPLACE_EXISTING); - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: copy directory, target exists and is empty directory */ source = createSourceDirectory(dir1); - target = getTargetFile(dir2).createDirectory(); + target = getTargetFile(dir2); + createDirectory(target); copyAndVerify(source, target, REPLACE_EXISTING); - source.delete(); - target.delete(); + delete(source); + delete(target); /** * Test: copy directory, target exists and is non-empty directory */ source = createSourceDirectory(dir1); - target = getTargetFile(dir2).createDirectory(); - entry = target.resolve("foo").createFile(); + target = getTargetFile(dir2); + createDirectory(target); + entry = target.resolve("foo"); + createFile(entry); try { copyAndVerify(source, target, REPLACE_EXISTING); - throw new RuntimeException("FileAlreadyExistsException expected"); - } catch (FileAlreadyExistsException x) { + throw new RuntimeException("DirectoryNotEmptyException expected"); + } catch (DirectoryNotEmptyException x) { } - entry.delete(); - source.delete(); - target.delete(); + delete(entry); + delete(source); + delete(target); /* * Test: copy directory + attributes @@ -793,8 +840,8 @@ public class CopyAndMove { source = createSourceDirectory(dir1); target = getTargetFile(dir2); copyAndVerify(source, target, COPY_ATTRIBUTES); - source.delete(); - target.delete(); + delete(source); + delete(target); // -- symbolic links -- @@ -803,11 +850,12 @@ public class CopyAndMove { */ if (supportsLinks) { source = createSourceFile(dir1); - link = dir1.resolve("link").createSymbolicLink(source); + link = dir1.resolve("link"); + createSymbolicLink(link, source); target = getTargetFile(dir2); copyAndVerify(link, target); - link.delete(); - source.delete(); + delete(link); + delete(source); } /** @@ -815,34 +863,38 @@ public class CopyAndMove { */ if (supportsLinks) { source = createSourceFile(dir1); - link = dir1.resolve("link").createSymbolicLink(source); + link = dir1.resolve("link"); + createSymbolicLink(link, source); target = getTargetFile(dir2); copyAndVerify(link, target, NOFOLLOW_LINKS); - link.delete(); - source.delete(); + delete(link); + delete(source); } /** * Test: Copy link (to directory) */ if (supportsLinks) { - source = dir1.resolve("mydir").createDirectory(); - link = dir1.resolve("link").createSymbolicLink(source); + source = dir1.resolve("mydir"); + createDirectory(source); + link = dir1.resolve("link"); + createSymbolicLink(link, source); target = getTargetFile(dir2); copyAndVerify(link, target, NOFOLLOW_LINKS); - link.delete(); - source.delete(); + delete(link); + delete(source); } /** * Test: Copy broken link */ if (supportsLinks) { - assertTrue(source.notExists()); - link = dir1.resolve("link").createSymbolicLink(source); + assertTrue(notExists(source)); + link = dir1.resolve("link"); + createSymbolicLink(link, source); target = getTargetFile(dir2); copyAndVerify(link, target, NOFOLLOW_LINKS); - link.delete(); + delete(link); } /** @@ -852,10 +904,11 @@ public class CopyAndMove { System.getProperty("os.name").startsWith("Windows")) { Path unc = Paths.get("\\\\rialto\\share\\file"); - link = dir1.resolve("link").createSymbolicLink(unc); + link = dir1.resolve("link"); + createSymbolicLink(link, unc); target = getTargetFile(dir2); copyAndVerify(link, target, NOFOLLOW_LINKS); - link.delete(); + delete(link); } // -- misc. tests -- @@ -866,19 +919,19 @@ public class CopyAndMove { source = createSourceFile(dir1); target = getTargetFile(dir2); try { - source.copyTo(null); + copy(source, null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } try { - source.copyTo(target, (CopyOption[])null); + copy(source, target, (CopyOption[])null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } try { CopyOption[] opts = { REPLACE_EXISTING, null }; - source.copyTo(target, opts); + copy(source, target, opts); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } - source.delete(); + delete(source); /** * Test UOE @@ -886,14 +939,154 @@ public class CopyAndMove { source = createSourceFile(dir1); target = getTargetFile(dir2); try { - source.copyTo(target, new CopyOption() { }); + copy(source, target, new CopyOption() { }); } catch (UnsupportedOperationException x) { } try { - source.copyTo(target, REPLACE_EXISTING, new CopyOption() { }); + copy(source, target, REPLACE_EXISTING, new CopyOption() { }); } catch (UnsupportedOperationException x) { } - source.delete(); + delete(source); } + /** + * Test copy from an input stream to a file + */ + static void testCopyInputStreamToFile() throws IOException { + testCopyInputStreamToFile(0); + for (int i=0; i<100; i++) { + testCopyInputStreamToFile(rand.nextInt(32000)); + } + + // FileAlreadyExistsException + Path target = createTempFile("blah", null); + try { + InputStream in = new ByteArrayInputStream(new byte[0]); + try { + copy(in, target); + throw new RuntimeException("FileAlreadyExistsException expected"); + } catch (FileAlreadyExistsException ignore) { } + } finally { + delete(target); + } + Path tmpdir = createTempDirectory("blah"); + try { + if (TestUtil.supportsLinks(tmpdir)) { + Path link = createSymbolicLink(tmpdir.resolve("link"), + tmpdir.resolve("target")); + try { + InputStream in = new ByteArrayInputStream(new byte[0]); + try { + copy(in, link); + throw new RuntimeException("FileAlreadyExistsException expected"); + } catch (FileAlreadyExistsException ignore) { } + } finally { + delete(link); + } + } + } finally { + delete(tmpdir); + } + + + // nulls + try { + copy((InputStream)null, target); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + copy(new ByteArrayInputStream(new byte[0]), (Path)null); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + } + + static void testCopyInputStreamToFile(int size) throws IOException { + Path tmpdir = createTempDirectory("blah"); + Path source = tmpdir.resolve("source"); + Path target = tmpdir.resolve("target"); + try { + boolean testReplaceExisting = rand.nextBoolean(); + + // create source file + byte[] b = new byte[size]; + rand.nextBytes(b); + write(source, b); + + // target file might already exist + if (testReplaceExisting && rand.nextBoolean()) { + write(target, new byte[rand.nextInt(512)]); + } + + // copy from stream to file + InputStream in = new FileInputStream(source.toFile()); + try { + long n; + if (testReplaceExisting) { + n = copy(in, target, StandardCopyOption.REPLACE_EXISTING); + } else { + n = copy(in, target); + } + assertTrue(in.read() == -1); // EOF + assertTrue(n == size); + assertTrue(size(target) == size); + } finally { + in.close(); + } + + // check file + byte[] read = readAllBytes(target); + assertTrue(Arrays.equals(read, b)); + + } finally { + deleteIfExists(source); + deleteIfExists(target); + delete(tmpdir); + } + } + + /** + * Test copy from file to output stream + */ + static void testCopyFileToOuputStream() throws IOException { + testCopyFileToOuputStream(0); + for (int i=0; i<100; i++) { + testCopyFileToOuputStream(rand.nextInt(32000)); + } + + // nulls + try { + copy((Path)null, new ByteArrayOutputStream()); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + Path source = createTempFile("blah", null); + delete(source); + copy(source, (OutputStream)null); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + } + + static void testCopyFileToOuputStream(int size) throws IOException { + Path source = createTempFile("blah", null); + try { + byte[] b = new byte[size]; + rand.nextBytes(b); + write(source, b); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + + long n = copy(source, out); + assertTrue(n == size); + assertTrue(out.size() == size); + + byte[] read = out.toByteArray(); + assertTrue(Arrays.equals(read, b)); + + // check output stream is open + out.write(0); + assertTrue(out.size() == size+1); + } finally { + delete(source); + } + } static void assertTrue(boolean value) { if (!value) @@ -904,8 +1097,7 @@ public class CopyAndMove { static int computeHash(Path file) throws IOException { int h = 0; - InputStream in = file.newInputStream(); - try { + try (InputStream in = newInputStream(file)) { byte[] buf = new byte[1024]; int n; do { @@ -914,8 +1106,6 @@ public class CopyAndMove { h = 31*h + (buf[i] & 0xff); } } while (n > 0); - } finally { - in.close(); } return h; } @@ -923,14 +1113,12 @@ public class CopyAndMove { // create file of random size in given directory static Path createSourceFile(Path dir) throws IOException { String name = "source" + Integer.toString(rand.nextInt()); - Path file = dir.resolve(name).createFile(); + Path file = dir.resolve(name); + createFile(file); byte[] bytes = new byte[rand.nextInt(128*1024)]; rand.nextBytes(bytes); - OutputStream out = file.newOutputStream(); - try { + try (OutputStream out = newOutputStream(file)) { out.write(bytes); - } finally { - out.close(); } randomizeAttributes(file); return file; @@ -939,7 +1127,8 @@ public class CopyAndMove { // create directory in the given directory static Path createSourceDirectory(Path dir) throws IOException { String name = "sourcedir" + Integer.toString(rand.nextInt()); - Path subdir = dir.resolve(name).createDirectory(); + Path subdir = dir.resolve(name); + createDirectory(subdir); randomizeAttributes(subdir); return subdir; } @@ -949,12 +1138,11 @@ public class CopyAndMove { String os = System.getProperty("os.name"); boolean isWindows = os.startsWith("Windows"); boolean isUnix = os.equals("SunOS") || os.equals("Linux"); - boolean isDirectory = Attributes.readBasicFileAttributes(file, NOFOLLOW_LINKS) - .isDirectory(); + boolean isDirectory = isDirectory(file, NOFOLLOW_LINKS); if (isUnix) { - Set perms = Attributes - .readPosixFileAttributes(file, NOFOLLOW_LINKS).permissions(); + Set perms = + getPosixFilePermissions(file, NOFOLLOW_LINKS); PosixFilePermission[] toChange = { PosixFilePermission.GROUP_READ, PosixFilePermission.GROUP_WRITE, @@ -970,25 +1158,25 @@ public class CopyAndMove { perms.remove(perm); } } - Attributes.setPosixFilePermissions(file, perms); + setPosixFilePermissions(file, perms); } if (isWindows) { - DosFileAttributeView view = file - .getFileAttributeView(DosFileAttributeView.class, NOFOLLOW_LINKS); + DosFileAttributeView view = + getFileAttributeView(file, DosFileAttributeView.class, NOFOLLOW_LINKS); // only set or unset the hidden attribute view.setHidden(heads()); } boolean addUserDefinedFileAttributes = heads() && - file.getFileStore().supportsFileAttributeView("xattr"); + getFileStore(file).supportsFileAttributeView("xattr"); // remove this when copying a direcory copies its named streams if (isWindows && isDirectory) addUserDefinedFileAttributes = false; if (addUserDefinedFileAttributes) { - UserDefinedFileAttributeView view = file - .getFileAttributeView(UserDefinedFileAttributeView.class); + UserDefinedFileAttributeView view = + getFileAttributeView(file, UserDefinedFileAttributeView.class); int n = rand.nextInt(16); while (n > 0) { byte[] value = new byte[1 + rand.nextInt(100)]; diff --git a/jdk/test/java/nio/file/Path/DeleteOnClose.java b/jdk/test/java/nio/file/Files/DeleteOnClose.java similarity index 73% rename from jdk/test/java/nio/file/Path/DeleteOnClose.java rename to jdk/test/java/nio/file/Files/DeleteOnClose.java index 506c848f627..9b50a30b0be 100644 --- a/jdk/test/java/nio/file/Path/DeleteOnClose.java +++ b/jdk/test/java/nio/file/Files/DeleteOnClose.java @@ -31,44 +31,43 @@ public class DeleteOnClose { public static void main(String[] args) throws IOException { // open file but do not close it. Its existance will be checked by // the calling script. - Paths.get(args[0]).newByteChannel(READ, WRITE, DELETE_ON_CLOSE); + Files.newByteChannel(Paths.get(args[0]), READ, WRITE, DELETE_ON_CLOSE); // check temporary file has been deleted after closing it - Path file = File.createTempFile("blah", "tmp").toPath(); - file.newByteChannel(READ, WRITE, DELETE_ON_CLOSE).close(); - if (file.exists()) + Path file = Files.createTempFile("blah", "tmp"); + Files.newByteChannel(file, READ, WRITE, DELETE_ON_CLOSE).close(); + if (Files.exists(file)) throw new RuntimeException("Temporary file was not deleted"); - Path dir = TestUtil.createTemporaryDirectory(); + Path dir = Files.createTempDirectory("blah"); try { // check that DELETE_ON_CLOSE fails when file is a sym link if (TestUtil.supportsLinks(dir)) { - file = dir.resolve("foo").createFile(); - Path link = dir.resolve("link").createSymbolicLink(file); + file = dir.resolve("foo"); + Files.createFile(file); + Path link = dir.resolve("link"); + Files.createSymbolicLink(link, file); try { - link.newByteChannel(READ, WRITE, DELETE_ON_CLOSE); + Files.newByteChannel(link, READ, WRITE, DELETE_ON_CLOSE); throw new RuntimeException("IOException expected"); } catch (IOException ignore) { } } // check that DELETE_ON_CLOSE works with files created via open // directories - DirectoryStream stream = dir.newDirectoryStream(); - try { + try (DirectoryStream stream = Files.newDirectoryStream(dir)) { if (stream instanceof SecureDirectoryStream) { - SecureDirectoryStream secure = (SecureDirectoryStream)stream; + SecureDirectoryStream secure = (SecureDirectoryStream)stream; file = Paths.get("foo"); - Set opts = new HashSet(); + Set opts = new HashSet<>(); opts.add(WRITE); opts.add(DELETE_ON_CLOSE); secure.newByteChannel(file, opts).close(); - if (dir.resolve(file).exists()) + if (Files.exists(dir.resolve(file))) throw new RuntimeException("File not deleted"); } - } finally { - stream.close(); } } finally { TestUtil.removeAll(dir); diff --git a/jdk/test/java/nio/file/Path/FileAttributes.java b/jdk/test/java/nio/file/Files/FileAttributes.java similarity index 51% rename from jdk/test/java/nio/file/Path/FileAttributes.java rename to jdk/test/java/nio/file/Files/FileAttributes.java index 5300beb77f5..bd799dc6b1e 100644 --- a/jdk/test/java/nio/file/Path/FileAttributes.java +++ b/jdk/test/java/nio/file/Files/FileAttributes.java @@ -23,7 +23,7 @@ /* @test * @bug 4313887 6838333 - * @summary Unit test for java.nio.file.Path + * @summary Unit test for java.nio.file.Files * @library .. */ @@ -59,43 +59,43 @@ public class FileAttributes { } // Exercise getAttribute/setAttribute/readAttributes on basic attributes - static void checkBasicAttributes(FileRef file, BasicFileAttributes attrs) + static void checkBasicAttributes(Path file, BasicFileAttributes attrs) throws IOException { // getAttribute - checkEqual(attrs.size(), file.getAttribute("size")); - checkEqual(attrs.lastModifiedTime(), file.getAttribute("basic:lastModifiedTime")); - checkEqual(attrs.lastAccessTime(), file.getAttribute("lastAccessTime")); - checkEqual(attrs.creationTime(), file.getAttribute("basic:creationTime")); - assertTrue((Boolean)file.getAttribute("isRegularFile")); - assertTrue(!(Boolean)file.getAttribute("basic:isDirectory")); - assertTrue(!(Boolean)file.getAttribute("isSymbolicLink")); - assertTrue(!(Boolean)file.getAttribute("basic:isOther")); - checkEqual(attrs.fileKey(), file.getAttribute("basic:fileKey")); + checkEqual(attrs.size(), Files.getAttribute(file, "size")); + checkEqual(attrs.lastModifiedTime(), Files.getAttribute(file, "basic:lastModifiedTime")); + checkEqual(attrs.lastAccessTime(), Files.getAttribute(file, "lastAccessTime")); + checkEqual(attrs.creationTime(), Files.getAttribute(file, "basic:creationTime")); + assertTrue((Boolean)Files.getAttribute(file, "isRegularFile")); + assertTrue(!(Boolean)Files.getAttribute(file, "basic:isDirectory")); + assertTrue(!(Boolean)Files.getAttribute(file, "isSymbolicLink")); + assertTrue(!(Boolean)Files.getAttribute(file, "basic:isOther")); + checkEqual(attrs.fileKey(), Files.getAttribute(file, "basic:fileKey")); // setAttribute FileTime modTime = attrs.lastModifiedTime(); - file.setAttribute("basic:lastModifiedTime", FileTime.fromMillis(0L)); - checkEqual(Attributes.readBasicFileAttributes(file).lastModifiedTime(), + Files.setAttribute(file, "basic:lastModifiedTime", FileTime.fromMillis(0L)); + checkEqual(Files.getLastModifiedTime(file), FileTime.fromMillis(0L)); - file.setAttribute("lastModifiedTime", modTime); - checkEqual(Attributes.readBasicFileAttributes(file).lastModifiedTime(), modTime); + Files.setAttribute(file, "lastModifiedTime", modTime); + checkEqual(Files.getLastModifiedTime(file), modTime); - Map map; - map = file.readAttributes("*"); + Map map; + map = Files.readAttributes(file, "*"); assertTrue(map.size() >= 9); checkEqual(attrs.isRegularFile(), map.get("isRegularFile")); // check one - map = file.readAttributes("basic:*"); + map = Files.readAttributes(file, "basic:*"); assertTrue(map.size() >= 9); checkEqual(attrs.lastAccessTime(), map.get("lastAccessTime")); // check one - map = file.readAttributes("size,lastModifiedTime"); + map = Files.readAttributes(file, "size,lastModifiedTime"); assertTrue(map.size() == 2); checkEqual(attrs.size(), map.get("size")); checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime")); - map = file.readAttributes( + map = Files.readAttributes(file, "basic:lastModifiedTime,lastAccessTime,ShouldNotExist"); assertTrue(map.size() == 2); checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime")); @@ -103,110 +103,110 @@ public class FileAttributes { } // Exercise getAttribute/setAttribute/readAttributes on posix attributes - static void checkPosixAttributes(FileRef file, PosixFileAttributes attrs) + static void checkPosixAttributes(Path file, PosixFileAttributes attrs) throws IOException { checkBasicAttributes(file, attrs); // getAttribute - checkEqual(attrs.permissions(), file.getAttribute("posix:permissions")); - checkEqual(attrs.owner(), file.getAttribute("posix:owner")); - checkEqual(attrs.group(), file.getAttribute("posix:group")); + checkEqual(attrs.permissions(), Files.getAttribute(file, "posix:permissions")); + checkEqual(attrs.owner(), Files.getAttribute(file, "posix:owner")); + checkEqual(attrs.group(), Files.getAttribute(file, "posix:group")); // setAttribute Set orig = attrs.permissions(); - Set newPerms = new HashSet(orig); + Set newPerms = new HashSet<>(orig); newPerms.remove(PosixFilePermission.OTHERS_READ); newPerms.remove(PosixFilePermission.OTHERS_WRITE); newPerms.remove(PosixFilePermission.OTHERS_EXECUTE); - file.setAttribute("posix:permissions", newPerms); - checkEqual(Attributes.readPosixFileAttributes(file).permissions(), newPerms); - file.setAttribute("posix:permissions", orig); - checkEqual(Attributes.readPosixFileAttributes(file).permissions(), orig); - file.setAttribute("posix:owner", attrs.owner()); - file.setAttribute("posix:group", attrs.group()); + Files.setAttribute(file, "posix:permissions", newPerms); + checkEqual(Files.getPosixFilePermissions(file), newPerms); + Files.setAttribute(file, "posix:permissions", orig); + checkEqual(Files.getPosixFilePermissions(file), orig); + Files.setAttribute(file, "posix:owner", attrs.owner()); + Files.setAttribute(file, "posix:group", attrs.group()); // readAttributes - Map map; - map = file.readAttributes("posix:*"); + Map map; + map = Files.readAttributes(file, "posix:*"); assertTrue(map.size() >= 12); checkEqual(attrs.permissions(), map.get("permissions")); // check one - map = file.readAttributes("posix:size,owner,ShouldNotExist"); + map = Files.readAttributes(file, "posix:size,owner,ShouldNotExist"); assertTrue(map.size() == 2); checkEqual(attrs.size(), map.get("size")); checkEqual(attrs.owner(), map.get("owner")); } // Exercise getAttribute/readAttributes on unix attributes - static void checkUnixAttributes(FileRef file) throws IOException { + static void checkUnixAttributes(Path file) throws IOException { // getAttribute - int mode = (Integer)file.getAttribute("unix:mode"); - long ino = (Long)file.getAttribute("unix:ino"); - long dev = (Long)file.getAttribute("unix:dev"); - long rdev = (Long)file.getAttribute("unix:rdev"); - int nlink = (Integer)file.getAttribute("unix:nlink"); - int uid = (Integer)file.getAttribute("unix:uid"); - int gid = (Integer)file.getAttribute("unix:gid"); - FileTime ctime = (FileTime)file.getAttribute("unix:ctime"); + int mode = (Integer)Files.getAttribute(file, "unix:mode"); + long ino = (Long)Files.getAttribute(file, "unix:ino"); + long dev = (Long)Files.getAttribute(file, "unix:dev"); + long rdev = (Long)Files.getAttribute(file, "unix:rdev"); + int nlink = (Integer)Files.getAttribute(file, "unix:nlink"); + int uid = (Integer)Files.getAttribute(file, "unix:uid"); + int gid = (Integer)Files.getAttribute(file, "unix:gid"); + FileTime ctime = (FileTime)Files.getAttribute(file, "unix:ctime"); // readAttributes - Map map; - map = file.readAttributes("unix:*"); + Map map; + map = Files.readAttributes(file, "unix:*"); assertTrue(map.size() >= 20); - map = file.readAttributes("unix:size,uid,gid,ShouldNotExist"); + map = Files.readAttributes(file, "unix:size,uid,gid,ShouldNotExist"); assertTrue(map.size() == 3); checkEqual(map.get("size"), - Attributes.readBasicFileAttributes(file).size()); + Files.readAttributes(file, BasicFileAttributes.class).size()); } // Exercise getAttribute/setAttribute on dos attributes - static void checkDosAttributes(FileRef file, DosFileAttributes attrs) + static void checkDosAttributes(Path file, DosFileAttributes attrs) throws IOException { checkBasicAttributes(file, attrs); // getAttribute - checkEqual(attrs.isReadOnly(), file.getAttribute("dos:readonly")); - checkEqual(attrs.isHidden(), file.getAttribute("dos:hidden")); - checkEqual(attrs.isSystem(), file.getAttribute("dos:system")); - checkEqual(attrs.isArchive(), file.getAttribute("dos:archive")); + checkEqual(attrs.isReadOnly(), Files.getAttribute(file, "dos:readonly")); + checkEqual(attrs.isHidden(), Files.getAttribute(file, "dos:hidden")); + checkEqual(attrs.isSystem(), Files.getAttribute(file, "dos:system")); + checkEqual(attrs.isArchive(), Files.getAttribute(file, "dos:archive")); // setAttribute boolean value; value = attrs.isReadOnly(); - file.setAttribute("dos:readonly", !value); - checkEqual(Attributes.readDosFileAttributes(file).isReadOnly(), !value); - file.setAttribute("dos:readonly", value); - checkEqual(Attributes.readDosFileAttributes(file).isReadOnly(), value); + Files.setAttribute(file, "dos:readonly", !value); + checkEqual(Files.readAttributes(file, DosFileAttributes.class).isReadOnly(), !value); + Files.setAttribute(file, "dos:readonly", value); + checkEqual(Files.readAttributes(file, DosFileAttributes.class).isReadOnly(), value); value = attrs.isHidden(); - file.setAttribute("dos:hidden", !value); - checkEqual(Attributes.readDosFileAttributes(file).isHidden(), !value); - file.setAttribute("dos:hidden", value); - checkEqual(Attributes.readDosFileAttributes(file).isHidden(), value); + Files.setAttribute(file, "dos:hidden", !value); + checkEqual(Files.readAttributes(file, DosFileAttributes.class).isHidden(), !value); + Files.setAttribute(file, "dos:hidden", value); + checkEqual(Files.readAttributes(file, DosFileAttributes.class).isHidden(), value); value = attrs.isSystem(); - file.setAttribute("dos:system", !value); - checkEqual(Attributes.readDosFileAttributes(file).isSystem(), !value); - file.setAttribute("dos:system", value); - checkEqual(Attributes.readDosFileAttributes(file).isSystem(), value); + Files.setAttribute(file, "dos:system", !value); + checkEqual(Files.readAttributes(file, DosFileAttributes.class).isSystem(), !value); + Files.setAttribute(file, "dos:system", value); + checkEqual(Files.readAttributes(file, DosFileAttributes.class).isSystem(), value); value = attrs.isArchive(); - file.setAttribute("dos:archive", !value); - checkEqual(Attributes.readDosFileAttributes(file).isArchive(), !value); - file.setAttribute("dos:archive", value); - checkEqual(Attributes.readDosFileAttributes(file).isArchive(), value); + Files.setAttribute(file, "dos:archive", !value); + checkEqual(Files.readAttributes(file, DosFileAttributes.class).isArchive(), !value); + Files.setAttribute(file, "dos:archive", value); + checkEqual(Files.readAttributes(file, DosFileAttributes.class).isArchive(), value); // readAttributes - Map map; - map = file.readAttributes("dos:*"); + Map map; + map = Files.readAttributes(file, "dos:*"); assertTrue(map.size() >= 13); checkEqual(attrs.isReadOnly(), map.get("readonly")); // check one - map = file.readAttributes("dos:size,hidden,ShouldNotExist"); + map = Files.readAttributes(file, "dos:size,hidden,ShouldNotExist"); assertTrue(map.size() == 2); checkEqual(attrs.size(), map.get("size")); checkEqual(attrs.isHidden(), map.get("hidden")); @@ -215,40 +215,41 @@ public class FileAttributes { static void miscTests(Path file) throws IOException { // NPE tests try { - file.getAttribute(null); + Files.getAttribute(file, null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException npe) { } try { - file.getAttribute("isRegularFile", (LinkOption[])null); + Files.getAttribute(file, "isRegularFile", (LinkOption[])null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException npe) { } try { - file.setAttribute(null, 0L); + Files.setAttribute(file, null, 0L); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException npe) { } } static void doTests(Path dir) throws IOException { - Path file = dir.resolve("foo").createFile(); - FileStore store = file.getFileStore(); + Path file = dir.resolve("foo"); + Files.createFile(file); + FileStore store = Files.getFileStore(file); try { checkBasicAttributes(file, - Attributes.readBasicFileAttributes(file)); + Files.readAttributes(file, BasicFileAttributes.class)); if (store.supportsFileAttributeView("posix")) checkPosixAttributes(file, - Attributes.readPosixFileAttributes(file)); + Files.readAttributes(file, PosixFileAttributes.class)); if (store.supportsFileAttributeView("unix")) checkUnixAttributes(file); if (store.supportsFileAttributeView("dos")) checkDosAttributes(file, - Attributes.readDosFileAttributes(file)); + Files.readAttributes(file, DosFileAttributes.class)); miscTests(file); } finally { - file.delete(); + Files.delete(file); } } diff --git a/jdk/test/java/nio/file/Path/InterruptCopy.java b/jdk/test/java/nio/file/Files/InterruptCopy.java similarity index 90% rename from jdk/test/java/nio/file/Path/InterruptCopy.java rename to jdk/test/java/nio/file/Files/InterruptCopy.java index 11be5a2e198..1502d9e824e 100644 --- a/jdk/test/java/nio/file/Path/InterruptCopy.java +++ b/jdk/test/java/nio/file/Files/InterruptCopy.java @@ -29,7 +29,6 @@ */ import java.nio.file.*; -import java.nio.file.attribute.Attributes; import java.io.*; import java.util.concurrent.*; import com.sun.nio.file.ExtendedCopyOption; @@ -43,10 +42,9 @@ public class InterruptCopy { public static void main(String[] args) throws Exception { Path dir = TestUtil.createTemporaryDirectory(); try { - FileStore store = dir.getFileStore(); + FileStore store = Files.getFileStore(dir); System.out.format("Checking space (%s)\n", store); - long usableSpace = Attributes - .readFileStoreSpaceAttributes(store).usableSpace(); + long usableSpace = store.getUsableSpace(); if (usableSpace < 2*FILE_SIZE_TO_COPY) { System.out.println("Insufficient disk space to run test."); return; @@ -66,14 +64,11 @@ public class InterruptCopy { System.out.println("Creating source file..."); byte[] buf = new byte[32*1024]; long total = 0; - OutputStream out = source.newOutputStream(); - try { + try (OutputStream out = Files.newOutputStream(source)) { do { out.write(buf); total += buf.length; } while (total < FILE_SIZE_TO_COPY); - } finally { - out.close(); } System.out.println("Source file created."); @@ -89,7 +84,7 @@ public class InterruptCopy { System.out.println("Copying file..."); try { long start = System.currentTimeMillis(); - source.copyTo(target, ExtendedCopyOption.INTERRUPTIBLE); + Files.copy(source, target, ExtendedCopyOption.INTERRUPTIBLE); long duration = System.currentTimeMillis() - start; if (duration > DURATION_MAX_IN_MS) throw new RuntimeException("Copy was not interrupted"); @@ -109,7 +104,7 @@ public class InterruptCopy { Future result = pool.submit(new Callable() { public Void call() throws IOException { System.out.println("Copying file..."); - source.copyTo(target, ExtendedCopyOption.INTERRUPTIBLE, + Files.copy(source, target, ExtendedCopyOption.INTERRUPTIBLE, StandardCopyOption.REPLACE_EXISTING); return null; } diff --git a/jdk/test/java/nio/file/Path/Links.java b/jdk/test/java/nio/file/Files/Links.java similarity index 72% rename from jdk/test/java/nio/file/Path/Links.java rename to jdk/test/java/nio/file/Files/Links.java index ced18e1cd28..0c19a0c92b5 100644 --- a/jdk/test/java/nio/file/Path/Links.java +++ b/jdk/test/java/nio/file/Files/Links.java @@ -23,7 +23,7 @@ /* @test * @bug 4313887 6838333 6863864 - * @summary Unit test for java.nio.file.Path createSymbolicLink, + * @summary Unit test for java.nio.file.Files createSymbolicLink, * readSymbolicLink, and createLink methods * @library .. * @build Links @@ -52,8 +52,8 @@ public class Links { // Check if sym links are supported try { - link.createSymbolicLink(Paths.get("foo")); - link.delete(); + Files.createSymbolicLink(link, Paths.get("foo")); + Files.delete(link); } catch (UnsupportedOperationException x) { // sym links not supported return; @@ -70,11 +70,11 @@ public class Links { String[] targets = (isWindows) ? windowsTargets : otherTargets; for (String s: targets) { Path target = Paths.get(s); - link.createSymbolicLink(target); + Files.createSymbolicLink(link, target); try { - assertTrue(link.readSymbolicLink().equals(target)); + assertTrue(Files.readSymbolicLink(link).equals(target)); } finally { - link.delete(); + Files.delete(link); } } @@ -82,57 +82,54 @@ public class Links { Path mydir = dir.resolve("mydir"); Path myfile = mydir.resolve("myfile"); try { - mydir.createDirectory(); - myfile.createFile(); + Files.createDirectory(mydir); + Files.createFile(myfile); // link -> "mydir" - link.createSymbolicLink(mydir.getName()); - assertTrue(link.readSymbolicLink().equals(mydir.getName())); + Files.createSymbolicLink(link, mydir.getFileName()); + assertTrue(Files.readSymbolicLink(link).equals(mydir.getFileName())); // Test access to directory via link - DirectoryStream stream = link.newDirectoryStream(); - try { + try (DirectoryStream stream = Files.newDirectoryStream(link)) { boolean found = false; for (Path entry: stream) { - if (entry.getName().equals(myfile.getName())) { + if (entry.getFileName().equals(myfile.getFileName())) { found = true; break; } } assertTrue(found); - } finally { - stream.close(); } // Test link2 -> link -> mydir final Path link2 = dir.resolve("link2"); - Path target2 = link.getName(); - link2.createSymbolicLink(target2); + Path target2 = link.getFileName(); + Files.createSymbolicLink(link2, target2); try { - assertTrue(link2.readSymbolicLink().equals(target2)); - link2.newDirectoryStream().close(); + assertTrue(Files.readSymbolicLink(link2).equals(target2)); + Files.newDirectoryStream(link2).close(); } finally { - link2.delete(); + Files.delete(link2); } // Remove mydir and re-create link2 before re-creating mydir // (This is a useful test on Windows to ensure that creating a // sym link to a directory sym link creates the right type of link). - myfile.delete(); - mydir.delete(); - link2.createSymbolicLink(target2); + Files.delete(myfile); + Files.delete(mydir); + Files.createSymbolicLink(link2, target2); try { - assertTrue(link2.readSymbolicLink().equals(target2)); - mydir.createDirectory(); - link2.newDirectoryStream().close(); + assertTrue(Files.readSymbolicLink(link2).equals(target2)); + Files.createDirectory(mydir); + Files.newDirectoryStream(link2).close(); } finally { - link2.delete(); + Files.delete(link2); } } finally { - myfile.deleteIfExists(); - mydir.deleteIfExists(); - link.deleteIfExists(); + Files.deleteIfExists(myfile); + Files.deleteIfExists(mydir); + Files.deleteIfExists(link); } } @@ -140,11 +137,12 @@ public class Links { * Exercise createLink method */ static void testHardLinks(Path dir) throws IOException { - Path foo = dir.resolve("foo").createFile(); + Path foo = dir.resolve("foo"); + Files.createFile(foo); try { - Path bar; + Path bar = dir.resolve("bar"); try { - bar = dir.resolve("bar").createLink(foo); + Files.createLink(bar, foo); } catch (UnsupportedOperationException x) { return; } catch (IOException x) { @@ -152,18 +150,16 @@ public class Links { return; } try { - Object key1 = Attributes - .readBasicFileAttributes(foo).fileKey(); - Object key2 = Attributes - .readBasicFileAttributes(bar).fileKey(); + Object key1 = Files.readAttributes(foo, BasicFileAttributes.class).fileKey(); + Object key2 = Files.readAttributes(bar, BasicFileAttributes.class).fileKey(); assertTrue((key1 == null) || (key1.equals(key2))); } finally { - bar.delete(); + Files.delete(bar); } } finally { - foo.delete(); + Files.delete(foo); } } diff --git a/jdk/test/java/nio/file/Files/Misc.java b/jdk/test/java/nio/file/Files/Misc.java index 621b95981ff..1ff9d0af190 100644 --- a/jdk/test/java/nio/file/Files/Misc.java +++ b/jdk/test/java/nio/file/Files/Misc.java @@ -22,122 +22,335 @@ */ /* @test - * @bug 4313887 6838333 6865748 - * @summary Unit test for java.nio.file.Files for miscellenous cases not - * covered by other tests + * @bug 4313887 6838333 + * @summary Unit test for miscellenous methods in java.nio.file.Files * @library .. */ import java.nio.file.*; -import java.nio.file.attribute.Attributes; -import java.nio.file.attribute.BasicFileAttributes; +import static java.nio.file.Files.*; +import static java.nio.file.LinkOption.*; +import java.nio.file.attribute.*; import java.io.IOException; import java.util.*; public class Misc { - static void npeExpected() { - throw new RuntimeException("NullPointerException expected"); - } - public static void main(String[] args) throws IOException { - - // -- Files.createDirectories -- - Path dir = TestUtil.createTemporaryDirectory(); try { - // no-op - Files.createDirectories(dir); + testCreateDirectories(dir); + testIsHidden(dir); + testIsSameFile(dir); + testFileTypeMethods(dir); + testAccessMethods(dir); + } finally { + TestUtil.removeAll(dir); + } + } - // create one directory - Path subdir = dir.resolve("a"); - Files.createDirectories(subdir); - if (!subdir.exists()) - throw new RuntimeException("directory not created"); + /** + * Tests createDirectories + */ + static void testCreateDirectories(Path tmpdir) throws IOException { + // a no-op + createDirectories(tmpdir); - // create parents - subdir = subdir.resolve("b/c/d"); - Files.createDirectories(subdir); - if (!subdir.exists()) - throw new RuntimeException("directory not created"); + // create one directory + Path subdir = tmpdir.resolve("a"); + createDirectories(subdir); + assertTrue(exists(subdir)); - // existing file is not a directory - Path file = dir.resolve("x").createFile(); + // create parents + subdir = subdir.resolve("b/c/d"); + createDirectories(subdir); + assertTrue(exists(subdir)); + + // existing file is not a directory + Path file = createFile(tmpdir.resolve("x")); + try { + createDirectories(file); + throw new RuntimeException("failure expected"); + } catch (FileAlreadyExistsException x) { } + try { + createDirectories(file.resolve("y")); + throw new RuntimeException("failure expected"); + } catch (IOException x) { } + } + + /** + * Tests isHidden + */ + static void testIsHidden(Path tmpdir) throws IOException { + assertTrue(!isHidden(tmpdir)); + + Path file = tmpdir.resolve(".foo"); + if (System.getProperty("os.name").startsWith("Windows")) { + createFile(file); try { - Files.createDirectories(file); - throw new RuntimeException("failure expected"); - } catch (FileAlreadyExistsException x) { } + setAttribute(file, "dos:hidden", true); + try { + assertTrue(isHidden(file)); + } finally { + setAttribute(file, "dos:hidden", false); + } + } finally { + delete(file); + } + } else { + assertTrue(isHidden(file)); + } + } + + /** + * Tests isSameFile + */ + static void testIsSameFile(Path tmpdir) throws IOException { + Path thisFile = tmpdir.resolve("thisFile"); + Path thatFile = tmpdir.resolve("thatFile"); + + /** + * Test: isSameFile for self + */ + assertTrue(isSameFile(thisFile, thisFile)); + + /** + * Test: Neither files exist + */ + try { + isSameFile(thisFile, thatFile); + throw new RuntimeException("IOException not thrown"); + } catch (IOException x) { + } + try { + isSameFile(thatFile, thisFile); + throw new RuntimeException("IOException not thrown"); + } catch (IOException x) { + } + + createFile(thisFile); + try { + /** + * Test: One file exists + */ try { - Files.createDirectories(file.resolve("y")); - throw new RuntimeException("failure expected"); - } catch (IOException x) { } + isSameFile(thisFile, thatFile); + throw new RuntimeException("IOException not thrown"); + } catch (IOException x) { + } + try { + isSameFile(thatFile, thisFile); + throw new RuntimeException("IOException not thrown"); + } catch (IOException x) { + } + + /** + * Test: Both file exists + */ + createFile(thatFile); + try { + assertTrue(!isSameFile(thisFile, thatFile)); + assertTrue(!isSameFile(thatFile, thisFile)); + } finally { + delete(thatFile); + } + + /** + * Test: Symbolic links + */ + if (TestUtil.supportsLinks(tmpdir)) { + createSymbolicLink(thatFile, thisFile); + try { + assertTrue(isSameFile(thisFile, thatFile)); + assertTrue(isSameFile(thatFile, thisFile)); + } finally { + TestUtil.deleteUnchecked(thatFile); + } + } + } finally { + delete(thisFile); + } + + // nulls + try { + isSameFile(thisFile, null); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + try { + isSameFile(null, thatFile); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + } + + /** + * Exercise isRegularFile, isDirectory, isSymbolicLink + */ + static void testFileTypeMethods(Path tmpdir) throws IOException { + assertTrue(!isRegularFile(tmpdir)); + assertTrue(!isRegularFile(tmpdir, NOFOLLOW_LINKS)); + assertTrue(isDirectory(tmpdir)); + assertTrue(isDirectory(tmpdir, NOFOLLOW_LINKS)); + assertTrue(!isSymbolicLink(tmpdir)); + + Path file = createFile(tmpdir.resolve("foo")); + try { + assertTrue(isRegularFile(file)); + assertTrue(isRegularFile(file, NOFOLLOW_LINKS)); + assertTrue(!isDirectory(file)); + assertTrue(!isDirectory(file, NOFOLLOW_LINKS)); + assertTrue(!isSymbolicLink(file)); + + if (TestUtil.supportsLinks(tmpdir)) { + Path link = tmpdir.resolve("link"); + + createSymbolicLink(link, tmpdir); + try { + assertTrue(!isRegularFile(link)); + assertTrue(!isRegularFile(link, NOFOLLOW_LINKS)); + assertTrue(isDirectory(link)); + assertTrue(!isDirectory(link, NOFOLLOW_LINKS)); + assertTrue(isSymbolicLink(link)); + } finally { + delete(link); + } + + createSymbolicLink(link, file); + try { + assertTrue(isRegularFile(link)); + assertTrue(!isRegularFile(link, NOFOLLOW_LINKS)); + assertTrue(!isDirectory(link)); + assertTrue(!isDirectory(link, NOFOLLOW_LINKS)); + assertTrue(isSymbolicLink(link)); + } finally { + delete(link); + } + + createLink(link, file); + try { + assertTrue(isRegularFile(link)); + assertTrue(isRegularFile(link, NOFOLLOW_LINKS)); + assertTrue(!isDirectory(link)); + assertTrue(!isDirectory(link, NOFOLLOW_LINKS)); + assertTrue(!isSymbolicLink(link)); + } finally { + delete(link); + } + } } finally { - TestUtil.removeAll(dir); + delete(file); } + } - // --- NullPointerException -- + /** + * Exercise isReadbale, isWritable, isExecutable, exists, notExists + */ + static void testAccessMethods(Path tmpdir) throws IOException { + // should return false when file does not exist + Path doesNotExist = tmpdir.resolve("doesNotExist"); + assertTrue(!isReadable(doesNotExist)); + assertTrue(!isWritable(doesNotExist)); + assertTrue(!isExecutable(doesNotExist)); + assertTrue(!exists(doesNotExist)); + assertTrue(notExists(doesNotExist)); + Path file = createFile(tmpdir.resolve("foo")); try { - Files.probeContentType(null); - npeExpected(); - } catch (NullPointerException e) { - } - try { - Files.walkFileTree(null, EnumSet.noneOf(FileVisitOption.class), - Integer.MAX_VALUE, new SimpleFileVisitor(){}); - npeExpected(); - } catch (NullPointerException e) { - } - try { - Files.walkFileTree(Paths.get("."), null, Integer.MAX_VALUE, - new SimpleFileVisitor(){}); - npeExpected(); - } catch (NullPointerException e) { - } - try { - Files.walkFileTree(Paths.get("."), EnumSet.noneOf(FileVisitOption.class), - -1, new SimpleFileVisitor(){}); - throw new RuntimeException("IllegalArgumentExpected expected"); - } catch (IllegalArgumentException e) { - } - try { - Set opts = new HashSet(1); - opts.add(null); - Files.walkFileTree(Paths.get("."), opts, Integer.MAX_VALUE, - new SimpleFileVisitor(){}); - npeExpected(); - } catch (NullPointerException e) { - } - try { - Files.walkFileTree(Paths.get("."), EnumSet.noneOf(FileVisitOption.class), - Integer.MAX_VALUE, null); - npeExpected(); - } catch (NullPointerException e) { - } + // files exist + assertTrue(isReadable(file)); + assertTrue(isWritable(file)); + assertTrue(exists(file)); + assertTrue(!notExists(file)); + assertTrue(isReadable(tmpdir)); + assertTrue(isWritable(tmpdir)); + assertTrue(exists(tmpdir)); + assertTrue(!notExists(tmpdir)); - SimpleFileVisitor visitor = new SimpleFileVisitor() { }; - boolean ranTheGauntlet = false; - BasicFileAttributes attrs = Attributes.readBasicFileAttributes(Paths.get(".")); - try { visitor.preVisitDirectory(null, attrs); - } catch (NullPointerException x0) { - try { visitor.preVisitDirectory(dir, null); - } catch (NullPointerException x1) { - try { visitor.visitFile(null, attrs); - } catch (NullPointerException x2) { - try { visitor.visitFile(dir, null); - } catch (NullPointerException x3) { - try { visitor.visitFileFailed(null, new IOException()); - } catch (NullPointerException x4) { - try { visitor.visitFileFailed(dir, null); - } catch (NullPointerException x5) { - try { visitor.postVisitDirectory(null, new IOException()); - } catch (NullPointerException x6) { - // if we get here then all visit* methods threw NPE as expected - ranTheGauntlet = true; - }}}}}}} - if (!ranTheGauntlet) - throw new RuntimeException("A visit method did not throw NPE"); + // sym link exists + if (TestUtil.supportsLinks(tmpdir)) { + Path link = tmpdir.resolve("link"); + + createSymbolicLink(link, file); + try { + assertTrue(isReadable(link)); + assertTrue(isWritable(link)); + assertTrue(exists(link)); + assertTrue(!notExists(link)); + } finally { + delete(link); + } + + createSymbolicLink(link, doesNotExist); + try { + assertTrue(!isReadable(link)); + assertTrue(!isWritable(link)); + assertTrue(!exists(link)); + assertTrue(exists(link, NOFOLLOW_LINKS)); + assertTrue(notExists(link)); + assertTrue(!notExists(link, NOFOLLOW_LINKS)); + } finally { + delete(link); + } + } + + /** + * Test: Edit ACL to deny WRITE and EXECUTE + */ + if (getFileStore(file).supportsFileAttributeView("acl")) { + AclFileAttributeView view = + getFileAttributeView(file, AclFileAttributeView.class); + UserPrincipal owner = view.getOwner(); + List acl = view.getAcl(); + + // Insert entry to deny WRITE and EXECUTE + AclEntry entry = AclEntry.newBuilder() + .setType(AclEntryType.DENY) + .setPrincipal(owner) + .setPermissions(AclEntryPermission.WRITE_DATA, + AclEntryPermission.EXECUTE) + .build(); + acl.add(0, entry); + view.setAcl(acl); + try { + assertTrue(!isWritable(file)); + assertTrue(!isExecutable(file)); + } finally { + // Restore ACL + acl.remove(0); + view.setAcl(acl); + } + } + + /** + * Test: Windows DOS read-only attribute + */ + if (System.getProperty("os.name").startsWith("Windows")) { + setAttribute(file, "dos:readonly", true); + try { + assertTrue(!isWritable(file)); + } finally { + setAttribute(file, "dos:readonly", false); + } + + // Read-only attribute does not make direcory read-only + DosFileAttributeView view = + getFileAttributeView(tmpdir, DosFileAttributeView.class); + boolean save = view.readAttributes().isReadOnly(); + view.setReadOnly(true); + try { + assertTrue(isWritable(file)); + } finally { + view.setReadOnly(save); + } + } + } finally { + delete(file); + } + } + + static void assertTrue(boolean okay) { + if (!okay) + throw new RuntimeException("Assertion Failed"); } } diff --git a/jdk/test/java/nio/file/Path/PassThroughFileSystem.java b/jdk/test/java/nio/file/Files/PassThroughFileSystem.java similarity index 74% rename from jdk/test/java/nio/file/Path/PassThroughFileSystem.java rename to jdk/test/java/nio/file/Files/PassThroughFileSystem.java index 4e77d12aba3..31345a8bf36 100644 --- a/jdk/test/java/nio/file/Path/PassThroughFileSystem.java +++ b/jdk/test/java/nio/file/Files/PassThroughFileSystem.java @@ -54,6 +54,14 @@ class PassThroughFileSystem extends FileSystem { return provider.newFileSystem(uri, env); } + static Path unwrap(Path wrapper) { + if (wrapper == null) + throw new NullPointerException(); + if (!(wrapper instanceof PassThroughPath)) + throw new ProviderMismatchException(); + return ((PassThroughPath)wrapper).delegate; + } + @Override public FileSystemProvider provider() { return provider; @@ -117,8 +125,8 @@ class PassThroughFileSystem extends FileSystem { } @Override - public Path getPath(String path) { - return new PassThroughPath(this, delegate.getPath(path)); + public Path getPath(String first, String... more) { + return new PassThroughPath(this, delegate.getPath(first, more)); } @Override @@ -127,7 +135,7 @@ class PassThroughFileSystem extends FileSystem { return new PathMatcher() { @Override public boolean matches(Path path) { - return matcher.matches(PassThroughPath.unwrap(path)); + return matcher.matches(unwrap(path)); } }; } @@ -199,9 +207,154 @@ class PassThroughFileSystem extends FileSystem { uri.getSchemeSpecificPart()); return new PassThroughPath(delegate, delegate.provider().getPath(uri)); } + + @Override + public void setAttribute(Path file, String attribute, Object value, LinkOption... options) + throws IOException + { + Files.setAttribute(unwrap(file), attribute, value, options); + } + + @Override + public Map readAttributes(Path file, String attributes, LinkOption... options) + throws IOException + { + return Files.readAttributes(unwrap(file), attributes, options); + } + + @Override + public V getFileAttributeView(Path file, + Class type, + LinkOption... options) + { + return Files.getFileAttributeView(unwrap(file), type, options); + } + + @Override + public A readAttributes(Path file, + Class type, + LinkOption... options) + throws IOException + { + return Files.readAttributes(unwrap(file), type, options); + } + + @Override + public void delete(Path file) throws IOException { + Files.delete(unwrap(file)); + } + + @Override + public void createSymbolicLink(Path link, Path target, FileAttribute... attrs) + throws IOException + { + Files.createSymbolicLink(unwrap(link), unwrap(target), attrs); + } + + @Override + public void createLink(Path link, Path existing) throws IOException { + Files.createLink(unwrap(link), unwrap(existing)); + } + + @Override + public Path readSymbolicLink(Path link) throws IOException { + Path target = Files.readSymbolicLink(unwrap(link)); + return new PassThroughPath(delegate, target); + } + + + @Override + public void copy(Path source, Path target, CopyOption... options) throws IOException { + Files.copy(unwrap(source), unwrap(target), options); + } + + @Override + public void move(Path source, Path target, CopyOption... options) throws IOException { + Files.move(unwrap(source), unwrap(target), options); + } + + private DirectoryStream wrap(final DirectoryStream stream) { + return new DirectoryStream() { + @Override + public Iterator iterator() { + final Iterator itr = stream.iterator(); + return new Iterator() { + @Override + public boolean hasNext() { + return itr.hasNext(); + } + @Override + public Path next() { + return new PassThroughPath(delegate, itr.next()); + } + @Override + public void remove() { + itr.remove(); + } + }; + } + @Override + public void close() throws IOException { + stream.close(); + } + }; + } + + @Override + public DirectoryStream newDirectoryStream(Path dir, DirectoryStream.Filter filter) + throws IOException + { + return wrap(Files.newDirectoryStream(dir, filter)); + } + + @Override + public void createDirectory(Path dir, FileAttribute... attrs) + throws IOException + { + Files.createDirectory(unwrap(dir), attrs); + } + + @Override + public SeekableByteChannel newByteChannel(Path file, + Set options, + FileAttribute... attrs) + throws IOException + { + return Files.newByteChannel(unwrap(file), options, attrs); + } + + + @Override + public boolean isHidden(Path file) throws IOException { + return Files.isHidden(unwrap(file)); + } + + @Override + public FileStore getFileStore(Path file) throws IOException { + return Files.getFileStore(unwrap(file)); + } + + @Override + public boolean isSameFile(Path file, Path other) throws IOException { + return Files.isSameFile(unwrap(file), unwrap(other)); + } + + @Override + public void checkAccess(Path file, AccessMode... modes) + throws IOException + { + // hack + if (modes.length == 0) { + if (Files.exists(unwrap(file))) + return; + else + throw new NoSuchFileException(file.toString()); + } + throw new RuntimeException("not implemented yet"); + } } - static class PassThroughPath extends Path { + static class PassThroughPath implements Path { private final FileSystem fs; private final Path delegate; @@ -214,12 +367,6 @@ class PassThroughFileSystem extends FileSystem { return (path != null) ? new PassThroughPath(fs, path) : null; } - static Path unwrap(Path wrapper) { - if (!(wrapper instanceof PassThroughPath)) - throw new ProviderMismatchException(); - return ((PassThroughPath)wrapper).delegate; - } - @Override public FileSystem getFileSystem() { return fs; @@ -235,12 +382,6 @@ class PassThroughFileSystem extends FileSystem { return wrap(delegate.getRoot()); } - - @Override - public Path getName() { - return wrap(delegate.getName()); - } - @Override public Path getParent() { return wrap(delegate.getParent()); @@ -251,6 +392,11 @@ class PassThroughFileSystem extends FileSystem { return delegate.getNameCount(); } + @Override + public Path getFileName() { + return wrap(delegate.getFileName()); + } + @Override public Path getName(int index) { return wrap(delegate.getName(index)); @@ -266,11 +412,21 @@ class PassThroughFileSystem extends FileSystem { return delegate.startsWith(unwrap(other)); } + @Override + public boolean startsWith(String other) { + return delegate.startsWith(other); + } + @Override public boolean endsWith(Path other) { return delegate.endsWith(unwrap(other)); } + @Override + public boolean endsWith(String other) { + return delegate.endsWith(other); + } + @Override public Path normalize() { return wrap(delegate.normalize()); @@ -286,68 +442,36 @@ class PassThroughFileSystem extends FileSystem { return wrap(delegate.resolve(other)); } + @Override + public Path resolveSibling(Path other) { + return wrap(delegate.resolveSibling(unwrap(other))); + } + + @Override + public Path resolveSibling(String other) { + return wrap(delegate.resolveSibling(other)); + } + @Override public Path relativize(Path other) { return wrap(delegate.relativize(unwrap(other))); } @Override - public void setAttribute(String attribute, Object value, LinkOption... options) - throws IOException - { - delegate.setAttribute(attribute, value, options); + public boolean equals(Object other) { + if (!(other instanceof PassThroughPath)) + return false; + return delegate.equals(unwrap((PassThroughPath)other)); } @Override - public Object getAttribute(String attribute, LinkOption... options) - throws IOException - { - // assume that unwrapped objects aren't exposed - return delegate.getAttribute(attribute, options); + public int hashCode() { + return delegate.hashCode(); } @Override - public Map readAttributes(String attributes, LinkOption... options) - throws IOException - { - // assume that unwrapped objects aren't exposed - return delegate.readAttributes(attributes, options); - } - - @Override - public V getFileAttributeView(Class type, - LinkOption... options) - { - return delegate.getFileAttributeView(type, options); - } - - @Override - public void delete() throws IOException { - delegate.delete(); - } - - @Override - public void deleteIfExists() throws IOException { - delegate.deleteIfExists(); - } - - @Override - public Path createSymbolicLink(Path target, FileAttribute... attrs) - throws IOException - { - delegate.createSymbolicLink(unwrap(target), attrs); - return this; - } - - @Override - public Path createLink(Path existing) throws IOException { - delegate.createLink(unwrap(existing)); - return this; - } - - @Override - public Path readSymbolicLink() throws IOException { - return wrap(delegate.readSymbolicLink()); + public String toString() { + return delegate.toString(); } @Override @@ -367,143 +491,10 @@ class PassThroughFileSystem extends FileSystem { } @Override - public Path copyTo(Path target, CopyOption... options) throws IOException { - return wrap(delegate.copyTo(unwrap(target), options)); + public File toFile() { + return delegate.toFile(); } - @Override - public Path moveTo(Path target, CopyOption... options) throws IOException { - return wrap(delegate.copyTo(unwrap(target), options)); - } - - private DirectoryStream wrap(final DirectoryStream stream) { - return new DirectoryStream() { - @Override - public Iterator iterator() { - final Iterator itr = stream.iterator(); - return new Iterator() { - @Override - public boolean hasNext() { - return itr.hasNext(); - } - @Override - public Path next() { - return wrap(itr.next()); - } - @Override - public void remove() { - itr.remove(); - } - }; - } - @Override - public void close() throws IOException { - stream.close(); - } - }; - } - - @Override - public DirectoryStream newDirectoryStream() throws IOException { - return wrap(delegate.newDirectoryStream()); - } - - @Override - public DirectoryStream newDirectoryStream(String glob) - throws IOException - { - return wrap(delegate.newDirectoryStream(glob)); - } - - @Override - public DirectoryStream newDirectoryStream(DirectoryStream.Filter filter) - throws IOException - { - return wrap(delegate.newDirectoryStream(filter)); - } - - @Override - public Path createFile(FileAttribute... attrs) throws IOException { - delegate.createFile(attrs); - return this; - } - - @Override - public Path createDirectory(FileAttribute... attrs) - throws IOException - { - delegate.createDirectory(attrs); - return this; - } - - @Override - public SeekableByteChannel newByteChannel(Set options, - FileAttribute... attrs) - throws IOException - { - return delegate.newByteChannel(options, attrs); - } - - @Override - public SeekableByteChannel newByteChannel(OpenOption... options) - throws IOException - { - return delegate.newByteChannel(options); - } - - @Override - public InputStream newInputStream(OpenOption... options) throws IOException { - return delegate.newInputStream(); - } - - @Override - public OutputStream newOutputStream(OpenOption... options) - throws IOException - { - return delegate.newOutputStream(options); - } - - @Override - public boolean isHidden() throws IOException { - return delegate.isHidden(); - } - - @Override - public void checkAccess(AccessMode... modes) throws IOException { - delegate.checkAccess(modes); - } - - @Override - public boolean exists() { - return delegate.exists(); - } - - @Override - public boolean notExists() { - return delegate.notExists(); - } - - @Override - public FileStore getFileStore() throws IOException { - return delegate.getFileStore(); - } - - @Override - public WatchKey register(WatchService watcher, - WatchEvent.Kind[] events, - WatchEvent.Modifier... modifiers) - { - throw new UnsupportedOperationException(); - } - - @Override - public WatchKey register(WatchService watcher, - WatchEvent.Kind... events) - { - throw new UnsupportedOperationException(); - } - - @Override public Iterator iterator() { final Iterator itr = delegate.iterator(); @@ -529,26 +520,18 @@ class PassThroughFileSystem extends FileSystem { } @Override - public boolean isSameFile(Path other) throws IOException { - return delegate.isSameFile(unwrap(other)); - } - - - @Override - public boolean equals(Object other) { - if (!(other instanceof PassThroughPath)) - return false; - return delegate.equals(unwrap((PassThroughPath)other)); + public WatchKey register(WatchService watcher, + WatchEvent.Kind[] events, + WatchEvent.Modifier... modifiers) + { + throw new UnsupportedOperationException(); } @Override - public int hashCode() { - return delegate.hashCode(); - } - - @Override - public String toString() { - return delegate.toString(); + public WatchKey register(WatchService watcher, + WatchEvent.Kind... events) + { + throw new UnsupportedOperationException(); } } } diff --git a/jdk/test/java/nio/file/Path/SBC.java b/jdk/test/java/nio/file/Files/SBC.java similarity index 74% rename from jdk/test/java/nio/file/Path/SBC.java rename to jdk/test/java/nio/file/Files/SBC.java index 8a5501b3549..6dcf1a92fc0 100644 --- a/jdk/test/java/nio/file/Path/SBC.java +++ b/jdk/test/java/nio/file/Files/SBC.java @@ -23,7 +23,7 @@ /* @test * @bug 4313887 - * @summary Unit test for java.nio.file.Path.newByteChannel + * @summary Unit test for java.nio.file.Files.newByteChannel * @library .. */ @@ -75,24 +75,24 @@ public class SBC { // CREATE try { // create file (no existing file) - file.newByteChannel(CREATE, WRITE).close(); - if (file.notExists()) + Files.newByteChannel(file, CREATE, WRITE).close(); + if (Files.notExists(file)) throw new RuntimeException("File not created"); // create file (existing file) - file.newByteChannel(CREATE, WRITE).close(); + Files.newByteChannel(file, CREATE, WRITE).close(); // create file where existing file is a sym link if (supportsLinks) { - Path link = dir.resolve("link").createSymbolicLink(file); + Path link = Files.createSymbolicLink(dir.resolve("link"), file); try { // file already exists - link.newByteChannel(CREATE, WRITE).close(); + Files.newByteChannel(link, CREATE, WRITE).close(); // file does not exist - file.delete(); - link.newByteChannel(CREATE, WRITE).close(); - if (file.notExists()) + Files.delete(file); + Files.newByteChannel(link, CREATE, WRITE).close(); + if (Files.notExists(file)) throw new RuntimeException("File not created"); } finally { @@ -107,14 +107,14 @@ public class SBC { // CREATE_NEW try { // create file - file.newByteChannel(CREATE_NEW, WRITE).close(); - if (file.notExists()) + Files.newByteChannel(file, CREATE_NEW, WRITE).close(); + if (Files.notExists(file)) throw new RuntimeException("File not created"); // create should fail try { SeekableByteChannel sbc = - file.newByteChannel(CREATE_NEW, WRITE); + Files.newByteChannel(file, CREATE_NEW, WRITE); sbc.close(); throw new RuntimeException("FileAlreadyExistsException not thrown"); } catch (FileAlreadyExistsException x) { } @@ -123,12 +123,12 @@ public class SBC { if (supportsLinks) { Path link = dir.resolve("link"); Path target = dir.resolve("thisDoesNotExist"); - link.createSymbolicLink(target); + Files.createSymbolicLink(link, target); try { try { SeekableByteChannel sbc = - file.newByteChannel(CREATE_NEW, WRITE); + Files.newByteChannel(file, CREATE_NEW, WRITE); sbc.close(); throw new RuntimeException("FileAlreadyExistsException not thrown"); } catch (FileAlreadyExistsException x) { } @@ -145,17 +145,13 @@ public class SBC { // CREATE_NEW + SPARSE try { - SeekableByteChannel sbc = file - .newByteChannel(CREATE_NEW, WRITE, SPARSE); - try { + try (SeekableByteChannel sbc = Files.newByteChannel(file, CREATE_NEW, WRITE, SPARSE)) { final long hole = 2L * 1024L * 1024L * 1024L; sbc.position(hole); write(sbc, "hello"); long size = sbc.size(); if (size != (hole + 5)) throw new RuntimeException("Unexpected size"); - } finally { - sbc.close(); } } finally { TestUtil.deleteUnchecked(file); @@ -167,33 +163,23 @@ public class SBC { Path file = dir.resolve("foo"); try { // "hello there" should be written to file - SeekableByteChannel sbc = file - .newByteChannel(CREATE_NEW, WRITE, APPEND); - try { + try (SeekableByteChannel sbc = Files.newByteChannel(file, CREATE_NEW, WRITE, APPEND)) { write(sbc, "hello "); sbc.position(0L); write(sbc, "there"); - } finally { - sbc.close(); } // check file - Scanner s = new Scanner(file); - try { + try (Scanner s = new Scanner(file)) { String line = s.nextLine(); if (!line.equals("hello there")) throw new RuntimeException("Unexpected file contents"); - } finally { - s.close(); } // check that read is not allowed - sbc = file.newByteChannel(APPEND); - try { + try (SeekableByteChannel sbc = Files.newByteChannel(file, APPEND)) { sbc.read(ByteBuffer.allocate(100)); } catch (NonReadableChannelException x) { - } finally { - sbc.close(); } } finally { // clean-up @@ -205,40 +191,27 @@ public class SBC { static void truncateExistingTests(Path dir) throws Exception { Path file = dir.resolve("foo"); try { - SeekableByteChannel sbc = - file.newByteChannel(CREATE_NEW, WRITE); - try { + try (SeekableByteChannel sbc = Files.newByteChannel(file, CREATE_NEW, WRITE)) { write(sbc, "Have a nice day!"); - } finally { - sbc.close(); } // re-open with truncate option // write short message and check - sbc = file.newByteChannel(WRITE, TRUNCATE_EXISTING); - try { + try (SeekableByteChannel sbc = Files.newByteChannel(file, WRITE, TRUNCATE_EXISTING)) { write(sbc, "Hello there!"); - } finally { - sbc.close(); } - Scanner s = new Scanner(file); - try { + try (Scanner s = new Scanner(file)) { String line = s.nextLine(); if (!line.equals("Hello there!")) throw new RuntimeException("Unexpected file contents"); - } finally { - s.close(); } // re-open with create + truncate option // check file is of size 0L - sbc = file.newByteChannel(WRITE, CREATE, TRUNCATE_EXISTING); - try { + try (SeekableByteChannel sbc = Files.newByteChannel(file, WRITE, CREATE, TRUNCATE_EXISTING)) { long size = ((FileChannel)sbc).size(); if (size != 0L) throw new RuntimeException("File not truncated"); - } finally { - sbc.close(); } } finally { @@ -252,14 +225,15 @@ public class SBC { static void noFollowLinksTests(Path dir) throws Exception { if (!supportsLinks) return; - Path file = dir.resolve("foo").createFile(); + Path file = Files.createFile(dir.resolve("foo")); try { // ln -s foo link - Path link = dir.resolve("link").createSymbolicLink(file); + Path link = dir.resolve("link"); + Files.createSymbolicLink(link, file); // open with NOFOLLOW_LINKS option try { - link.newByteChannel(READ, LinkOption.NOFOLLOW_LINKS); + Files.newByteChannel(link, READ, LinkOption.NOFOLLOW_LINKS); throw new RuntimeException(); } catch (IOException x) { } finally { @@ -276,9 +250,7 @@ public class SBC { static void sizeTruncatePositionTests(Path dir) throws Exception { Path file = dir.resolve("foo"); try { - SeekableByteChannel sbc = file - .newByteChannel(CREATE_NEW, READ, WRITE); - try { + try (SeekableByteChannel sbc = Files.newByteChannel(file, CREATE_NEW, READ, WRITE)) { if (sbc.size() != 0L) throw new RuntimeException("Unexpected size"); @@ -300,8 +272,6 @@ public class SBC { throw new RuntimeException("Unexpected size"); if (sbc.position() != 2L) throw new RuntimeException("Unexpected position"); - } finally { - sbc.close(); } } finally { TestUtil.deleteUnchecked(file); @@ -311,76 +281,63 @@ public class SBC { // Windows specific options for the use by applications that really want // to use legacy DOS sharing options static void dosSharingOptionTests(Path dir) throws Exception { - Path file = dir.resolve("foo").createFile(); + Path file = Files.createFile(dir.resolve("foo")); try { - SeekableByteChannel ch; - // no sharing - ch = file.newByteChannel(READ, - NOSHARE_READ, NOSHARE_WRITE, NOSHARE_DELETE); - try { + try (SeekableByteChannel ch = Files.newByteChannel(file, READ, NOSHARE_READ, + NOSHARE_WRITE, NOSHARE_DELETE)) + { try { - file.newByteChannel(READ); + Files.newByteChannel(file, READ); throw new RuntimeException("Sharing violation expected"); } catch (IOException ignore) { } try { - file.newByteChannel(WRITE); + Files.newByteChannel(file, WRITE); throw new RuntimeException("Sharing violation expected"); } catch (IOException ignore) { } try { - file.delete(); + Files.delete(file); throw new RuntimeException("Sharing violation expected"); } catch (IOException ignore) { } - } finally { - ch.close(); } // read allowed - ch = file.newByteChannel(READ, NOSHARE_WRITE, NOSHARE_DELETE); - try { - file.newByteChannel(READ).close(); + try (SeekableByteChannel ch = Files.newByteChannel(file, READ, NOSHARE_WRITE, NOSHARE_DELETE)) { + Files.newByteChannel(file, READ).close(); try { - file.newByteChannel(WRITE); + Files.newByteChannel(file, WRITE); throw new RuntimeException("Sharing violation expected"); } catch (IOException ignore) { } try { - file.delete(); + Files.delete(file); throw new RuntimeException("Sharing violation expected"); } catch (IOException ignore) { } - } finally { - ch.close(); } // write allowed - ch = file.newByteChannel(READ, NOSHARE_READ, NOSHARE_DELETE); - try { + try (SeekableByteChannel ch = Files.newByteChannel(file, READ, NOSHARE_READ, NOSHARE_DELETE)) { try { - file.newByteChannel(READ); + Files.newByteChannel(file, READ); throw new RuntimeException("Sharing violation expected"); } catch (IOException ignore) { } - file.newByteChannel(WRITE).close(); + Files.newByteChannel(file, WRITE).close(); try { - file.delete(); + Files.delete(file); throw new RuntimeException("Sharing violation expected"); } catch (IOException ignore) { } - } finally { - ch.close(); } // delete allowed - ch = file.newByteChannel(READ, NOSHARE_READ, NOSHARE_WRITE); - try { + try (SeekableByteChannel ch = Files.newByteChannel(file, READ, NOSHARE_READ, NOSHARE_WRITE)) { try { - file.newByteChannel(READ); + Files.newByteChannel(file, READ); throw new RuntimeException("Sharing violation expected"); } catch (IOException ignore) { } try { - file.newByteChannel(WRITE); + Files.newByteChannel(file, WRITE); throw new RuntimeException("Sharing violation expected"); } catch (IOException ignore) { } - file.delete(); - } finally { - ch.close(); + Files.delete(file); } } finally { @@ -393,12 +350,12 @@ public class SBC { Path file = dir.resolve("bad"); try { - file.newByteChannel(READ, APPEND); + Files.newByteChannel(file, READ, APPEND); throw new RuntimeException("IllegalArgumentException expected"); } catch (IllegalArgumentException x) { } try { - file.newByteChannel(WRITE, APPEND, TRUNCATE_EXISTING); + Files.newByteChannel(file, WRITE, APPEND, TRUNCATE_EXISTING); throw new RuntimeException("IllegalArgumentException expected"); } catch (IllegalArgumentException x) { } } @@ -409,11 +366,11 @@ public class SBC { OpenOption badOption = new OpenOption() { }; try { - file.newByteChannel(badOption); + Files.newByteChannel(file, badOption); throw new RuntimeException("UnsupportedOperationException expected"); } catch (UnsupportedOperationException e) { } try { - file.newByteChannel(READ, WRITE, badOption); + Files.newByteChannel(file, READ, WRITE, badOption); throw new RuntimeException("UnsupportedOperationException expected"); } catch (UnsupportedOperationException e) { } } @@ -423,39 +380,45 @@ public class SBC { Path file = dir.resolve("foo"); try { - file.newByteChannel((OpenOption[])null); + OpenOption[] opts = { READ, null }; + Files.newByteChannel((Path)null, opts); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException x) { } + + try { + Files.newByteChannel(file, (OpenOption[])null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } try { OpenOption[] opts = { READ, null }; - file.newByteChannel(opts); + Files.newByteChannel(file, opts); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } try { - file.newByteChannel((Set)null); + Files.newByteChannel(file, (Set)null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } try { - Set opts = new HashSet(); + Set opts = new HashSet<>(); opts.add(READ); opts.add(null); - file.newByteChannel(opts); + Files.newByteChannel(file, opts); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } try { EnumSet opts = EnumSet.of(READ); - file.newByteChannel(opts, (FileAttribute[])null); + Files.newByteChannel(file, opts, (FileAttribute[])null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } try { EnumSet opts = EnumSet.of(READ); FileAttribute[] attrs = { null }; - file.newByteChannel(opts, attrs); + Files.newByteChannel(file, opts, attrs); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException x) { } } diff --git a/jdk/test/java/nio/file/Files/TemporaryFiles.java b/jdk/test/java/nio/file/Files/TemporaryFiles.java new file mode 100644 index 00000000000..3c1087e4e53 --- /dev/null +++ b/jdk/test/java/nio/file/Files/TemporaryFiles.java @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2008, 2009, 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 4313887 6838333 7006126 + * @summary Unit test for Files.createTempXXX + * @library .. + */ + +import java.nio.file.*; +import static java.nio.file.StandardOpenOption.*; +import java.nio.file.attribute.*; +import java.io.IOException; +import java.util.Set; + +public class TemporaryFiles { + + static void checkInDirectory(Path file, Path dir) { + if (dir == null) + dir = Paths.get(System.getProperty("java.io.tmpdir")); + if (!file.getParent().equals(dir)) + throw new RuntimeException("Not in expected directory"); + } + + static void testTempFile(String prefix, String suffix, Path dir) + throws IOException + { + Path file = (dir == null) ? + Files.createTempFile(prefix, suffix) : + Files.createTempFile(dir, prefix, suffix); + try { + // check file name + String name = file.getFileName().toString(); + if (prefix != null && !name.startsWith(prefix)) + throw new RuntimeException("Should start with " + prefix); + if (suffix == null && !name.endsWith(".tmp")) + throw new RuntimeException("Should end with .tmp"); + if (suffix != null && !name.endsWith(suffix)) + throw new RuntimeException("Should end with " + suffix); + + // check file is in expected directory + checkInDirectory(file, dir); + + // check that file can be opened for reading and writing + Files.newByteChannel(file, READ).close(); + Files.newByteChannel(file, WRITE).close(); + Files.newByteChannel(file, READ,WRITE).close(); + + // check file permissions are 0600 or more secure + if (Files.getFileStore(file).supportsFileAttributeView("posix")) { + Set perms = Files.getPosixFilePermissions(file); + perms.remove(PosixFilePermission.OWNER_READ); + perms.remove(PosixFilePermission.OWNER_WRITE); + if (!perms.isEmpty()) + throw new RuntimeException("Temporary file is not secure"); + } + } finally { + Files.delete(file); + } + } + + static void testTempFile(String prefix, String suffix) + throws IOException + { + testTempFile(prefix, suffix, null); + } + + static void testTempDirectory(String prefix, Path dir) throws IOException { + Path subdir = (dir == null) ? + Files.createTempDirectory(prefix) : + Files.createTempDirectory(dir, prefix); + try { + // check file name + String name = subdir.getFileName().toString(); + if (prefix != null && !name.startsWith(prefix)) + throw new RuntimeException("Should start with " + prefix); + + // check directory is in expected directory + checkInDirectory(subdir, dir); + + // check directory is empty + DirectoryStream stream = Files.newDirectoryStream(subdir); + try { + if (stream.iterator().hasNext()) + throw new RuntimeException("Tempory directory not empty"); + } finally { + stream.close(); + } + + // check that we can create file in directory + Path file = Files.createFile(subdir.resolve("foo")); + try { + Files.newByteChannel(file, READ,WRITE).close(); + } finally { + Files.delete(file); + } + + // check file permissions are 0700 or more secure + if (Files.getFileStore(subdir).supportsFileAttributeView("posix")) { + Set perms = Files.getPosixFilePermissions(subdir); + perms.remove(PosixFilePermission.OWNER_READ); + perms.remove(PosixFilePermission.OWNER_WRITE); + perms.remove(PosixFilePermission.OWNER_EXECUTE); + if (!perms.isEmpty()) + throw new RuntimeException("Temporary directory is not secure"); + } + } finally { + Files.delete(subdir); + } + } + + static void testTempDirectory(String prefix) throws IOException { + testTempDirectory(prefix, null); + } + + static void testInvalidFileTemp(String prefix, String suffix) throws IOException { + try { + Path file = Files.createTempFile(prefix, suffix); + Files.delete(file); + throw new RuntimeException("IllegalArgumentException expected"); + } catch (IllegalArgumentException expected) { } + } + + public static void main(String[] args) throws IOException { + // temporary-file directory + testTempFile("blah", ".dat"); + testTempFile("blah", null); + testTempFile(null, ".dat"); + testTempFile(null, null); + testTempDirectory("blah"); + testTempDirectory(null); + + // a given directory + Path dir = Files.createTempDirectory("tmpdir"); + try { + testTempFile("blah", ".dat", dir); + testTempFile("blah", null, dir); + testTempFile(null, ".dat", dir); + testTempFile(null, null, dir); + testTempDirectory("blah", dir); + testTempDirectory(null, dir); + } finally { + Files.delete(dir); + } + + // invalid prefix and suffix + testInvalidFileTemp("../blah", null); + testInvalidFileTemp("dir/blah", null); + testInvalidFileTemp("blah", ".dat/foo"); + } +} diff --git a/jdk/test/java/nio/file/Path/delete_on_close.sh b/jdk/test/java/nio/file/Files/delete_on_close.sh similarity index 100% rename from jdk/test/java/nio/file/Path/delete_on_close.sh rename to jdk/test/java/nio/file/Files/delete_on_close.sh diff --git a/jdk/test/java/nio/file/Files/ContentType.java b/jdk/test/java/nio/file/Files/probeContentType/Basic.java similarity index 85% rename from jdk/test/java/nio/file/Files/ContentType.java rename to jdk/test/java/nio/file/Files/probeContentType/Basic.java index 33a0aeb6e14..ce692121d1c 100644 --- a/jdk/test/java/nio/file/Files/ContentType.java +++ b/jdk/test/java/nio/file/Files/probeContentType/Basic.java @@ -24,9 +24,9 @@ /* @test * @bug 4313887 * @summary Unit test for probeContentType method - * @library .. - * @build ContentType SimpleFileTypeDetector - * @run main/othervm ContentType + * @library ../.. + * @build Basic SimpleFileTypeDetector + * @run main/othervm Basic */ import java.nio.file.*; @@ -36,22 +36,19 @@ import java.io.*; * Uses Files.probeContentType to probe html file and custom file type. */ -public class ContentType { +public class Basic { static Path createHtmlFile() throws IOException { - Path file = File.createTempFile("foo", ".html").toPath(); - OutputStream out = file.newOutputStream(); - try { + Path file = Files.createTempFile("foo", ".html"); + try (OutputStream out = Files.newOutputStream(file)) { out.write("foo".getBytes()); - } finally { - out.close(); } return file; } static Path createGrapeFile() throws IOException { - return File.createTempFile("red", ".grape").toPath(); + return Files.createTempFile("red", ".grape"); } public static void main(String[] args) throws IOException { @@ -67,7 +64,7 @@ public class ContentType { throw new RuntimeException("Unexpected type: " + type); } } finally { - file.delete(); + Files.delete(file); } // exercise custom file type detector @@ -79,7 +76,7 @@ public class ContentType { if (!type.equals("grape/unknown")) throw new RuntimeException("Unexpected type: " + type); } finally { - file.delete(); + Files.delete(file); } } diff --git a/jdk/test/java/nio/file/Files/ForceLoad.java b/jdk/test/java/nio/file/Files/probeContentType/ForceLoad.java similarity index 100% rename from jdk/test/java/nio/file/Files/ForceLoad.java rename to jdk/test/java/nio/file/Files/probeContentType/ForceLoad.java diff --git a/jdk/test/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector b/jdk/test/java/nio/file/Files/probeContentType/META-INF/services/java.nio.file.spi.FileTypeDetector similarity index 100% rename from jdk/test/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector rename to jdk/test/java/nio/file/Files/probeContentType/META-INF/services/java.nio.file.spi.FileTypeDetector diff --git a/jdk/test/java/nio/file/Files/SimpleFileTypeDetector.java b/jdk/test/java/nio/file/Files/probeContentType/SimpleFileTypeDetector.java similarity index 81% rename from jdk/test/java/nio/file/Files/SimpleFileTypeDetector.java rename to jdk/test/java/nio/file/Files/probeContentType/SimpleFileTypeDetector.java index 590d9a474c1..a6b0e76ecd8 100644 --- a/jdk/test/java/nio/file/Files/SimpleFileTypeDetector.java +++ b/jdk/test/java/nio/file/Files/probeContentType/SimpleFileTypeDetector.java @@ -30,18 +30,9 @@ public class SimpleFileTypeDetector extends FileTypeDetector { public SimpleFileTypeDetector() { } - public String probeContentType(FileRef file) throws IOException { - + public String probeContentType(Path file) throws IOException { System.out.println("probe " + file + "..."); - - if (file instanceof Path) { - String name = ((Path)file).toString(); - if (name.endsWith(".grape")) { - return "grape/unknown"; - } - } - - // unknown - return null; + String name = file.toString(); + return name.endsWith(".grape") ? "grape/unknown" : null; } } diff --git a/jdk/test/java/nio/file/Files/CreateFileTree.java b/jdk/test/java/nio/file/Files/walkFileTree/CreateFileTree.java similarity index 81% rename from jdk/test/java/nio/file/Files/CreateFileTree.java rename to jdk/test/java/nio/file/Files/walkFileTree/CreateFileTree.java index 1ff7aa6e91b..c00f058152d 100644 --- a/jdk/test/java/nio/file/Files/CreateFileTree.java +++ b/jdk/test/java/nio/file/Files/walkFileTree/CreateFileTree.java @@ -34,21 +34,8 @@ public class CreateFileTree { static final Random rand = new Random(); - public static Path createTemporaryDirectory() throws IOException { - Path tmpdir = Paths.get(System.getProperty("java.io.tmpdir")); - Path dir; - do { - dir = tmpdir.resolve("name" + rand.nextInt()); - } while (dir.exists()); - dir.createDirectory(); - return dir; - } - public static void main(String[] args) throws IOException { - Path top = createTemporaryDirectory(); - if (!top.isAbsolute()) - top = top.toAbsolutePath(); - + Path top = Files.createTempDirectory("tree"); List dirs = new ArrayList(); // create tree @@ -61,7 +48,7 @@ public class CreateFileTree { int r = Math.min((total-n), (1+rand.nextInt(3))); for (int i=0; i(){}); + npeExpected(); + } catch (NullPointerException e) { + } + try { + Files.walkFileTree(Paths.get("."), null, Integer.MAX_VALUE, + new SimpleFileVisitor(){}); + npeExpected(); + } catch (NullPointerException e) { + } + try { + Files.walkFileTree(Paths.get("."), EnumSet.noneOf(FileVisitOption.class), + -1, new SimpleFileVisitor(){}); + throw new RuntimeException("IllegalArgumentExpected expected"); + } catch (IllegalArgumentException e) { + } + try { + Set opts = new HashSet<>(1); + opts.add(null); + Files.walkFileTree(Paths.get("."), opts, Integer.MAX_VALUE, + new SimpleFileVisitor(){}); + npeExpected(); + } catch (NullPointerException e) { + } + try { + Files.walkFileTree(Paths.get("."), EnumSet.noneOf(FileVisitOption.class), + Integer.MAX_VALUE, null); + npeExpected(); + } catch (NullPointerException e) { + } + + SimpleFileVisitor visitor = new SimpleFileVisitor() { }; + boolean ranTheGauntlet = false; + Path dir = Paths.get("."); + BasicFileAttributes attrs = Files.readAttributes(dir, BasicFileAttributes.class); + + try { visitor.preVisitDirectory(null, attrs); + } catch (NullPointerException x0) { + try { visitor.preVisitDirectory(dir, null); + } catch (NullPointerException x1) { + try { visitor.visitFile(null, attrs); + } catch (NullPointerException x2) { + try { visitor.visitFile(dir, null); + } catch (NullPointerException x3) { + try { visitor.visitFileFailed(null, new IOException()); + } catch (NullPointerException x4) { + try { visitor.visitFileFailed(dir, null); + } catch (NullPointerException x5) { + try { visitor.postVisitDirectory(null, new IOException()); + } catch (NullPointerException x6) { + // if we get here then all visit* methods threw NPE as expected + ranTheGauntlet = true; + }}}}}}} + if (!ranTheGauntlet) + throw new RuntimeException("A visit method did not throw NPE"); + } +} diff --git a/jdk/test/java/nio/file/Files/PrintFileTree.java b/jdk/test/java/nio/file/Files/walkFileTree/PrintFileTree.java similarity index 89% rename from jdk/test/java/nio/file/Files/PrintFileTree.java rename to jdk/test/java/nio/file/Files/walkFileTree/PrintFileTree.java index 41ddb95a317..83d554dc689 100644 --- a/jdk/test/java/nio/file/Files/PrintFileTree.java +++ b/jdk/test/java/nio/file/Files/walkFileTree/PrintFileTree.java @@ -55,20 +55,20 @@ public class PrintFileTree { options.add(FileVisitOption.FOLLOW_LINKS); final boolean reportCycles = printCycles; - Files.walkFileTree(dir, options, Integer.MAX_VALUE, new FileVisitor() { + Files.walkFileTree(dir, options, Integer.MAX_VALUE, new FileVisitor() { @Override - public FileVisitResult preVisitDirectory(FileRef dir, BasicFileAttributes attrs) { + public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) { System.out.println(dir); return FileVisitResult.CONTINUE; } @Override - public FileVisitResult visitFile(FileRef file, BasicFileAttributes attrs) { + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { if (!attrs.isDirectory() || reportCycles) System.out.println(file); return FileVisitResult.CONTINUE; } @Override - public FileVisitResult postVisitDirectory(FileRef dir, IOException exc) + public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { if (exc != null) @@ -76,7 +76,7 @@ public class PrintFileTree { return FileVisitResult.CONTINUE; } @Override - public FileVisitResult visitFileFailed(FileRef file, IOException exc) + public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { if (reportCycles && (exc instanceof FileSystemLoopException)) { diff --git a/jdk/test/java/nio/file/Files/SkipSiblings.java b/jdk/test/java/nio/file/Files/walkFileTree/SkipSiblings.java similarity index 100% rename from jdk/test/java/nio/file/Files/SkipSiblings.java rename to jdk/test/java/nio/file/Files/walkFileTree/SkipSiblings.java diff --git a/jdk/test/java/nio/file/Files/TerminateWalk.java b/jdk/test/java/nio/file/Files/walkFileTree/TerminateWalk.java similarity index 100% rename from jdk/test/java/nio/file/Files/TerminateWalk.java rename to jdk/test/java/nio/file/Files/walkFileTree/TerminateWalk.java diff --git a/jdk/test/java/nio/file/Files/WalkWithSecurity.java b/jdk/test/java/nio/file/Files/walkFileTree/WalkWithSecurity.java similarity index 94% rename from jdk/test/java/nio/file/Files/WalkWithSecurity.java rename to jdk/test/java/nio/file/Files/walkFileTree/WalkWithSecurity.java index 2a1f67f492e..91e61c476be 100644 --- a/jdk/test/java/nio/file/Files/WalkWithSecurity.java +++ b/jdk/test/java/nio/file/Files/walkFileTree/WalkWithSecurity.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 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,14 +47,11 @@ public class WalkWithSecurity { Path dir = Paths.get(testSrc); // Sanity check the environment - if (Paths.get(here).isSameFile(dir)) + if (Files.isSameFile(Paths.get(here), dir)) throw new RuntimeException("Working directory cannot be " + dir); - DirectoryStream stream = dir.newDirectoryStream(); - try { + try (DirectoryStream stream = Files.newDirectoryStream(dir)) { if (!stream.iterator().hasNext()) throw new RuntimeException(testSrc + " is empty"); - } finally { - stream.close(); } // Install security manager with the given policy file diff --git a/jdk/test/java/nio/file/Files/denyAll.policy b/jdk/test/java/nio/file/Files/walkFileTree/denyAll.policy similarity index 100% rename from jdk/test/java/nio/file/Files/denyAll.policy rename to jdk/test/java/nio/file/Files/walkFileTree/denyAll.policy diff --git a/jdk/test/java/nio/file/Files/grantAll.policy b/jdk/test/java/nio/file/Files/walkFileTree/grantAll.policy similarity index 100% rename from jdk/test/java/nio/file/Files/grantAll.policy rename to jdk/test/java/nio/file/Files/walkFileTree/grantAll.policy diff --git a/jdk/test/java/nio/file/Files/grantTopOnly.policy b/jdk/test/java/nio/file/Files/walkFileTree/grantTopOnly.policy similarity index 100% rename from jdk/test/java/nio/file/Files/grantTopOnly.policy rename to jdk/test/java/nio/file/Files/walkFileTree/grantTopOnly.policy diff --git a/jdk/test/java/nio/file/Files/walk_file_tree.sh b/jdk/test/java/nio/file/Files/walkFileTree/walk_file_tree.sh similarity index 100% rename from jdk/test/java/nio/file/Files/walk_file_tree.sh rename to jdk/test/java/nio/file/Files/walkFileTree/walk_file_tree.sh diff --git a/jdk/test/java/nio/file/Path/Misc.java b/jdk/test/java/nio/file/Path/Misc.java index dba06f1dd06..b2bf03e3510 100644 --- a/jdk/test/java/nio/file/Path/Misc.java +++ b/jdk/test/java/nio/file/Path/Misc.java @@ -22,17 +22,13 @@ */ /* @test - * @bug 4313887 6838333 6867101 - * @summary Unit test for java.nio.file.Path for miscellenous methods not - * covered by other tests + * @bug 4313887 6838333 + * @summary Unit test for miscellenous java.nio.file.Path methods * @library .. */ import java.nio.file.*; -import static java.nio.file.LinkOption.*; -import java.nio.file.attribute.*; import java.io.*; -import java.util.*; public class Misc { static final boolean isWindows = @@ -45,22 +41,14 @@ public class Misc { supportsLinks = TestUtil.supportsLinks(dir); // equals and hashCode methods - equalsAndHashCode(); + testEqualsAndHashCode(); - // checkAccess method - checkAccessTests(dir); - - // getFileAttributeView methods - getFileAttributeViewTests(dir); + // toFile method + testToFile(dir); // toRealPath method - toRealPathTests(dir); + testToRealPath(dir); - // isSameFile method - isSameFileTests(dir); - - // isHidden method - isHiddenTests(dir); } finally { TestUtil.removeAll(dir); @@ -70,8 +58,7 @@ public class Misc { /** * Exercise equals and hashCode methods */ - static void equalsAndHashCode() { - + static void testEqualsAndHashCode() { Path thisFile = Paths.get("this"); Path thatFile = Paths.get("that"); @@ -93,172 +80,25 @@ public class Misc { } /** - * Exercise checkAccess method + * Exercise toFile method */ - static void checkAccessTests(Path dir) throws IOException { - final Path file = dir.resolve("foo").createFile(); - - /** - * Test: This directory should readable and writable - */ - dir.checkAccess(); - dir.checkAccess(AccessMode.READ); - dir.checkAccess(AccessMode.WRITE); - dir.checkAccess(AccessMode.READ, AccessMode.WRITE); - - /** - * Test: Check access to all files in all root directories. - * (A useful test on Windows for special files such as pagefile.sys) - */ - for (Path root: FileSystems.getDefault().getRootDirectories()) { - DirectoryStream stream; - try { - stream = root.newDirectoryStream(); - } catch (IOException x) { - continue; // skip root directories that aren't accessible - } - try { - for (Path entry: stream) { - try { - entry.checkAccess(); - } catch (AccessDeniedException ignore) { } - } - } finally { - stream.close(); - } - } - - /** - * Test: File does not exist - */ - Path doesNotExist = dir.resolve("thisDoesNotExists"); - try { - doesNotExist.checkAccess(); - throw new RuntimeException("NoSuchFileException expected"); - } catch (NoSuchFileException x) { - } - try { - doesNotExist.checkAccess(AccessMode.READ); - throw new RuntimeException("NoSuchFileException expected"); - } catch (NoSuchFileException x) { - } - try { - doesNotExist.checkAccess(AccessMode.WRITE); - throw new RuntimeException("NoSuchFileException expected"); - } catch (NoSuchFileException x) { - } - try { - doesNotExist.checkAccess(AccessMode.EXECUTE); - throw new RuntimeException("NoSuchFileException expected"); - } catch (NoSuchFileException x) { - } - - /** - * Test: Edit ACL to deny WRITE and EXECUTE - */ - AclFileAttributeView view = file - .getFileAttributeView(AclFileAttributeView.class); - if (view != null && - file.getFileStore().supportsFileAttributeView("acl")) - { - UserPrincipal owner = view.getOwner(); - List acl = view.getAcl(); - - // Insert entry to deny WRITE and EXECUTE - AclEntry entry = AclEntry.newBuilder() - .setType(AclEntryType.DENY) - .setPrincipal(owner) - .setPermissions(AclEntryPermission.WRITE_DATA, - AclEntryPermission.EXECUTE) - .build(); - acl.add(0, entry); - view.setAcl(acl); - - try { - file.checkAccess(AccessMode.WRITE); - throw new RuntimeException("AccessDeniedException expected"); - } catch (AccessDeniedException x) { - } - - try { - file.checkAccess(AccessMode.EXECUTE); - throw new RuntimeException("AccessDeniedException expected"); - } catch (AccessDeniedException x) { - } - - - // Restore ACL - acl.remove(0); - view.setAcl(acl); - } - - /** - * Test: Windows DOS read-only attribute - */ - if (isWindows) { - DosFileAttributeView dview = - file.getFileAttributeView(DosFileAttributeView.class); - dview.setReadOnly(true); - try { - file.checkAccess(AccessMode.WRITE); - throw new RuntimeException("AccessDeniedException expected"); - } catch (AccessDeniedException x) { - } - dview.setReadOnly(false); - - // Read-only attribute does not make direcory read-only - dview = dir.getFileAttributeView(DosFileAttributeView.class); - boolean save = dview.readAttributes().isReadOnly(); - dview.setReadOnly(true); - dir.checkAccess(AccessMode.WRITE); - dview.setReadOnly(save); - } - - /** - * Test: null - */ - try { - file.checkAccess((AccessMode)null); - throw new RuntimeException("NullPointerException expected"); - } catch (NullPointerException ignore) { } - - // clean-up - file.delete(); + static void testToFile(Path dir) throws IOException { + File d = dir.toFile(); + assertTrue(d.toString().equals(dir.toString())); + assertTrue(d.toPath().equals(dir)); } - /** - * Exercise getFileAttributeFile methods - */ - static void getFileAttributeViewTests(Path dir) { - assertTrue(dir.getFileAttributeView(BasicFileAttributeView.class) - instanceof BasicFileAttributeView); - assertTrue(dir.getFileAttributeView(BasicFileAttributeView.class, NOFOLLOW_LINKS) - instanceof BasicFileAttributeView); - assertTrue(dir.getFileAttributeView(BogusFileAttributeView.class) == null); - try { - dir.getFileAttributeView((Class)null); - } catch (NullPointerException ignore) { } - try { - dir.getFileAttributeView(BasicFileAttributeView.class, (LinkOption[])null); - } catch (NullPointerException ignore) { } - try { - dir.getFileAttributeView(BasicFileAttributeView.class, (LinkOption)null); - } catch (NullPointerException ignore) { } - - } - interface BogusFileAttributeView extends FileAttributeView { } - /** * Exercise toRealPath method */ - static void toRealPathTests(Path dir) throws IOException { - final Path file = dir.resolve("foo").createFile(); + static void testToRealPath(Path dir) throws IOException { + final Path file = Files.createFile(dir.resolve("foo")); final Path link = dir.resolve("link"); /** - * Test: toRealPath(true) will access same file as toRealPath(false) + * Test: totRealPath(true) will access same file as toRealPath(false) */ - assertTrue(file.toRealPath(true).isSameFile(file.toRealPath(false))); + assertTrue(Files.isSameFile(file.toRealPath(true), file.toRealPath(false))); /** * Test: toRealPath should fail if file does not exist @@ -279,29 +119,27 @@ public class Misc { * Test: toRealPath(true) should resolve links */ if (supportsLinks) { - link.createSymbolicLink(file.toAbsolutePath()); + Files.createSymbolicLink(link, file.toAbsolutePath()); assertTrue(link.toRealPath(true).equals(file.toRealPath(true))); - link.delete(); + Files.delete(link); } - /** * Test: toRealPath(false) should not resolve links */ if (supportsLinks) { - link.createSymbolicLink(file.toAbsolutePath()); - assertTrue(link.toRealPath(false).getName().equals(link.getName())); - link.delete(); + Files.createSymbolicLink(link, file.toAbsolutePath()); + assertTrue(link.toRealPath(false).getFileName().equals(link.getFileName())); + Files.delete(link); } /** * Test: toRealPath(false) with broken link */ if (supportsLinks) { - Path broken = dir.resolve("doesNotExist"); - link.createSymbolicLink(broken); - assertTrue(link.toRealPath(false).getName().equals(link.getName())); - link.delete(); + Path broken = Files.createSymbolicLink(link, doesNotExist); + assertTrue(link.toRealPath(false).getFileName().equals(link.getFileName())); + Files.delete(link); } /** @@ -314,105 +152,13 @@ public class Misc { * Test: toRealPath should eliminate ".." when it doesn't follow a * symbolic link */ - Path subdir = dir.resolve("subdir").createDirectory(); + Path subdir = Files.createDirectory(dir.resolve("subdir")); assertTrue(subdir.resolve("..").toRealPath(true).equals(dir.toRealPath(true))); assertTrue(subdir.resolve("..").toRealPath(false).equals(dir.toRealPath(false))); - subdir.delete(); + Files.delete(subdir); // clean-up - file.delete(); - } - - /** - * Exercise isSameFile method - */ - static void isSameFileTests(Path dir) throws IOException { - Path thisFile = dir.resolve("thisFile"); - Path thatFile = dir.resolve("thatFile"); - - /** - * Test: isSameFile for self and null - */ - assertTrue(thisFile.isSameFile(thisFile)); - assertTrue(!thisFile.isSameFile(null)); - - /** - * Test: Neither files exist - */ - try { - thisFile.isSameFile(thatFile); - throw new RuntimeException("IOException not thrown"); - } catch (IOException x) { - } - try { - thatFile.isSameFile(thisFile); - throw new RuntimeException("IOException not thrown"); - } catch (IOException x) { - } - - thisFile.createFile(); - try { - /** - * Test: One file exists - */ - try { - thisFile.isSameFile(thatFile); - throw new RuntimeException("IOException not thrown"); - } catch (IOException x) { - } - try { - thatFile.isSameFile(thisFile); - throw new RuntimeException("IOException not thrown"); - } catch (IOException x) { - } - - thatFile.createFile(); - - /** - * Test: Both file exists - */ - try { - assertTrue(!thisFile.isSameFile(thatFile)); - assertTrue(!thatFile.isSameFile(thisFile)); - } finally { - TestUtil.deleteUnchecked(thatFile); - } - - /** - * Test: Symbolic links - */ - if (supportsLinks) { - thatFile.createSymbolicLink(thisFile); - try { - assertTrue(thisFile.isSameFile(thatFile)); - assertTrue(thatFile.isSameFile(thisFile)); - } finally { - TestUtil.deleteUnchecked(thatFile); - } - } - } finally { - thisFile.delete(); - } - } - - /** - * Exercise isHidden method - */ - static void isHiddenTests(Path dir) throws IOException { - assertTrue(!dir.isHidden()); - - Path file = dir.resolve(".foo"); - if (isWindows) { - file.createFile(); - try { - file.setAttribute("dos:hidden", true); - assertTrue(file.isHidden()); - } finally { - file.delete(); - } - } else { - assertTrue(file.isHidden()); - } + Files.delete(file); } static void assertTrue(boolean okay) { diff --git a/jdk/test/java/nio/file/Path/PathOps.java b/jdk/test/java/nio/file/Path/PathOps.java index fcc02e61a44..00264201201 100644 --- a/jdk/test/java/nio/file/Path/PathOps.java +++ b/jdk/test/java/nio/file/Path/PathOps.java @@ -22,7 +22,7 @@ */ /* @test - * @bug 4313887 6838333 6925932 + * @bug 4313887 6838333 6925932 7006126 * @summary Unit test for java.nio.file.Path path operations */ @@ -36,15 +36,15 @@ public class PathOps { private Path path; private Exception exc; - private PathOps(String s) { + private PathOps(String first, String... more) { out.println(); - input = s; + input = first; try { - path = FileSystems.getDefault().getPath(s); - out.format("%s -> %s", s, path); + path = FileSystems.getDefault().getPath(first, more); + out.format("%s -> %s", first, path); } catch (Exception x) { exc = x; - out.format("%s -> %s", s, x); + out.format("%s -> %s", first, x); } out.println(); } @@ -97,7 +97,7 @@ public class PathOps { PathOps name(String expected) { out.println("check name"); checkPath(); - check(path.getName(), expected); + check(path.getFileName(), expected); return this; } @@ -168,6 +168,13 @@ public class PathOps { return this; } + PathOps resolveSibling(String other, String expected) { + out.format("test resolveSibling %s\n", other); + checkPath(); + check(path.resolveSibling(other), expected); + return this; + } + PathOps relativize(String other, String expected) { out.format("test relativize %s\n", other); checkPath(); @@ -198,8 +205,8 @@ public class PathOps { return this; } - static PathOps test(String s) { - return new PathOps(s); + static PathOps test(String first, String... more) { + return new PathOps(first, more); } // -- PathOpss -- @@ -213,6 +220,26 @@ public class PathOps { static void doWindowsTests() { header("Windows specific tests"); + // construction + test("C:\\") + .string("C:\\"); + test("C:\\", "") + .string("C:\\"); + test("C:\\", "foo") + .string("C:\\foo"); + test("C:\\", "\\foo") + .string("C:\\foo"); + test("C:\\", "foo\\") + .string("C:\\foo"); + test("foo", "bar", "gus") + .string("foo\\bar\\gus"); + test("") + .string(""); + test("", "C:\\") + .string("C:\\"); + test("", "foo", "", "bar", "", "\\gus") + .string("foo\\bar\\gus"); + // all components present test("C:\\a\\b\\c") .root("C:\\") @@ -252,17 +279,23 @@ public class PathOps { .root(null) .parent(null) .name("foo"); + test("") + .root(null) + .parent(null) + .name(""); // startsWith test("C:\\") .starts("C:\\") .starts("c:\\") .notStarts("C") - .notStarts("C:"); + .notStarts("C:") + .notStarts(""); test("C:") .starts("C:") .starts("c:") - .notStarts("C"); + .notStarts("C") + .notStarts(""); test("\\") .starts("\\"); test("C:\\foo\\bar") @@ -273,7 +306,8 @@ public class PathOps { .starts("C:\\Foo\\Bar") .notStarts("C:") .notStarts("C") - .notStarts("C:foo"); + .notStarts("C:foo") + .notStarts(""); test("\\foo\\bar") .starts("\\") .starts("\\foo") @@ -281,26 +315,35 @@ public class PathOps { .starts("\\foo\\bar") .starts("\\fOo\\BaR") .notStarts("foo") - .notStarts("foo\\bar"); + .notStarts("foo\\bar") + .notStarts(""); test("foo\\bar") .starts("foo") .starts("foo\\bar") - .notStarts("\\"); + .notStarts("\\") + .notStarts(""); test("\\\\server\\share") .starts("\\\\server\\share") .starts("\\\\server\\share\\") + .notStarts("\\") + .notStarts(""); + test("") + .starts("") .notStarts("\\"); // endsWith test("C:\\") .ends("C:\\") .ends("c:\\") - .notEnds("\\"); + .notEnds("\\") + .notEnds(""); test("C:") .ends("C:") - .ends("c:"); + .ends("c:") + .notEnds(""); test("\\") - .ends("\\"); + .ends("\\") + .notEnds(""); test("C:\\foo\\bar") .ends("bar") .ends("BAR") @@ -309,7 +352,8 @@ public class PathOps { .ends("C:\\foo\\bar") .ends("c:\\foO\\baR") .notEnds("r") - .notEnds("\\foo\\bar"); + .notEnds("\\foo\\bar") + .notEnds(""); test("\\foo\\bar") .ends("bar") .ends("BaR") @@ -317,17 +361,23 @@ public class PathOps { .ends("foO\\baR") .ends("\\foo\\bar") .ends("\\Foo\\Bar") - .notEnds("oo\\bar"); + .notEnds("oo\\bar") + .notEnds(""); test("foo\\bar") .ends("bar") .ends("BAR") .ends("foo\\bar") .ends("Foo\\Bar") - .notEnds("ar"); + .notEnds("ar") + .notEnds(""); test("\\\\server\\share") .ends("\\\\server\\share") .ends("\\\\server\\share\\") .notEnds("shared") + .notEnds("\\") + .notEnds(""); + test("") + .ends("") .notEnds("\\"); // elements @@ -338,6 +388,8 @@ public class PathOps { test("foo.bar\\gus.alice") .element(0, "foo.bar") .element(1, "gus.alice"); + test("") + .element(0, ""); // subpath test("C:\\foo") @@ -355,6 +407,8 @@ public class PathOps { .subpath(2, 3, "gus"); test("\\\\server\\share\\foo") .subpath(0, 1, "foo"); + test("") + .subpath(0, 1, ""); // isAbsolute test("foo").notAbsolute(); @@ -362,6 +416,7 @@ public class PathOps { test("C:\\").absolute(); test("C:\\abc").absolute(); test("\\\\server\\share\\").absolute(); + test("").notAbsolute(); // resolve test("C:\\") @@ -369,42 +424,99 @@ public class PathOps { .resolve("D:\\bar", "D:\\bar") .resolve("\\\\server\\share\\bar", "\\\\server\\share\\bar") .resolve("C:foo", "C:\\foo") - .resolve("D:foo", "D:foo"); + .resolve("D:foo", "D:foo") + .resolve("", "C:\\"); test("\\") .resolve("foo", "\\foo") .resolve("D:bar", "D:bar") .resolve("C:\\bar", "C:\\bar") .resolve("\\\\server\\share\\bar", "\\\\server\\share\\bar") - .resolve("\\foo", "\\foo"); + .resolve("\\foo", "\\foo") + .resolve("", "\\"); test("\\foo") .resolve("bar", "\\foo\\bar") .resolve("D:bar", "D:bar") .resolve("C:\\bar", "C:\\bar") .resolve("\\\\server\\share\\bar", "\\\\server\\share\\bar") - .resolve("\\bar", "\\bar"); + .resolve("\\bar", "\\bar") + .resolve("", "\\foo"); test("foo") .resolve("bar", "foo\\bar") .resolve("D:\\bar", "D:\\bar") .resolve("\\\\server\\share\\bar", "\\\\server\\share\\bar") .resolve("C:bar", "C:bar") - .resolve("D:foo", "D:foo"); + .resolve("D:foo", "D:foo") + .resolve("", "foo"); test("C:") - .resolve("foo", "C:foo"); + .resolve("foo", "C:foo") + .resolve("", "C:"); test("\\\\server\\share\\foo") .resolve("bar", "\\\\server\\share\\foo\\bar") .resolve("\\bar", "\\\\server\\share\\bar") .resolve("D:\\bar", "D:\\bar") .resolve("\\\\other\\share\\bar", "\\\\other\\share\\bar") - .resolve("D:bar", "D:bar"); + .resolve("D:bar", "D:bar") + .resolve("", "\\\\server\\share\\foo"); + test("") + .resolve("", "") + .resolve("foo", "foo") + .resolve("C:\\", "C:\\") + .resolve("C:foo", "C:foo") + .resolve("\\\\server\\share\\bar", "\\\\server\\share\\bar"); + + // resolveSibling + test("foo") + .resolveSibling("bar", "bar") + .resolveSibling("D:\\bar", "D:\\bar") + .resolveSibling("\\\\server\\share\\bar", "\\\\server\\share\\bar") + .resolveSibling("C:bar", "C:bar") + .resolveSibling("D:foo", "D:foo") + .resolveSibling("", ""); + test("foo\\bar") + .resolveSibling("gus", "foo\\gus") + .resolveSibling("D:\\bar", "D:\\bar") + .resolveSibling("\\\\server\\share\\bar", "\\\\server\\share\\bar") + .resolveSibling("C:bar", "C:bar") + .resolveSibling("D:foo", "D:foo") + .resolveSibling("", "foo"); + test("C:\\foo") + .resolveSibling("gus", "C:\\gus") + .resolveSibling("D:\\bar", "D:\\bar") + .resolveSibling("\\\\server\\share\\bar", "\\\\server\\share\\bar") + .resolveSibling("C:bar", "C:\\bar") + .resolveSibling("D:foo", "D:foo") + .resolveSibling("", "C:\\"); + test("C:\\foo\\bar") + .resolveSibling("gus", "C:\\foo\\gus") + .resolveSibling("D:\\bar", "D:\\bar") + .resolveSibling("\\\\server\\share\\bar", "\\\\server\\share\\bar") + .resolveSibling("C:bar", "C:\\foo\\bar") + .resolveSibling("D:foo", "D:foo") + .resolveSibling("", "C:\\foo"); + test("\\\\server\\share\\foo") + .resolveSibling("bar", "\\\\server\\share\\bar") + .resolveSibling("\\bar", "\\\\server\\share\\bar") + .resolveSibling("D:\\bar", "D:\\bar") + .resolveSibling("\\\\other\\share\\bar", "\\\\other\\share\\bar") + .resolveSibling("D:bar", "D:bar") + .resolveSibling("", "\\\\server\\share\\"); + test("") + .resolveSibling("", "") + .resolveSibling("foo", "foo") + .resolveSibling("C:\\", "C:\\"); // relativize test("foo\\bar") - .relativize("foo\\bar", null) + .relativize("foo\\bar", "") .relativize("foo", ".."); test("C:\\a\\b\\c") - .relativize("C:\\a", "..\\.."); + .relativize("C:\\a", "..\\..") + .relativize("C:\\a\\b\\c", ""); test("\\\\server\\share\\foo") - .relativize("\\\\server\\share\\bar", "..\\bar"); + .relativize("\\\\server\\share\\bar", "..\\bar") + .relativize("\\\\server\\share\\foo", ""); + test("") + .relativize("", ""); // normalize test("C:\\") @@ -436,7 +548,7 @@ public class PathOps { test("foo\\.") .normalize("foo"); test("foo\\..") - .normalize(null); + .normalize(""); test("C:\\foo") .normalize("C:\\foo"); test("C:\\foo\\.") @@ -478,7 +590,7 @@ public class PathOps { test("\\..\\foo") .normalize("\\foo"); test(".") - .normalize(null); + .normalize(""); test("..") .normalize(".."); test("\\..\\..") @@ -493,6 +605,8 @@ public class PathOps { .normalize("foo"); test(".\\foo\\.\\bar\\.\\gus\\..\\.\\..") .normalize("foo"); + test("") + .normalize(""); // UNC corner cases test("\\\\server\\share\\") @@ -557,6 +671,26 @@ public class PathOps { static void doUnixTests() { header("Unix specific tests"); + // construction + test("/") + .string("/"); + test("/", "") + .string("/"); + test("/", "foo") + .string("/foo"); + test("/", "/foo") + .string("/foo"); + test("/", "foo/") + .string("/foo"); + test("foo", "bar", "gus") + .string("foo/bar/gus"); + test("") + .string(""); + test("", "/") + .string("/"); + test("", "foo", "", "bar", "", "/gus") + .string("foo/bar/gus"); + // all components test("/a/b/c") .root("/") @@ -580,10 +714,15 @@ public class PathOps { .root(null) .parent(null) .name("foo"); + test("") + .root(null) + .parent(null) + .name(""); // startsWith test("/") .starts("/") + .notStarts("") .notStarts("/foo"); test("/foo") .starts("/") @@ -598,6 +737,7 @@ public class PathOps { .notStarts("foo/bar"); test("foo") .starts("foo") + .notStarts("") .notStarts("f"); test("foo/bar") .starts("foo") @@ -605,10 +745,14 @@ public class PathOps { .notStarts("f") .notStarts("/foo") .notStarts("/foo/bar"); + test("") + .starts("") + .notStarts("/"); // endsWith test("/") .ends("/") + .notEnds("") .notEnds("foo") .notEnds("/foo"); test("/foo") @@ -625,6 +769,7 @@ public class PathOps { .notEnds("o/bar"); test("foo") .ends("foo") + .notEnds("") .notEnds("oo") .notEnds("oola"); test("foo/bar") @@ -642,12 +787,47 @@ public class PathOps { .notEnds("r/gus") .notEnds("barack/gus") .notEnds("bar/gust"); + test("") + .ends("") + .notEnds("/"); // elements test("a/b/c") - .element(0,"a") - .element(1,"b") - .element(2,"c"); + .element(0, "a") + .element(1, "b") + .element(2, "c"); + test("") + .element(0, ""); + + // subpath + test("/foo") + .subpath(0, 1, "foo"); + test("foo") + .subpath(0, 1, "foo"); + test("/foo/bar") + .subpath(0, 1, "foo") + .subpath(1, 2, "bar") + .subpath(0, 2, "foo/bar"); + test("foo/bar") + .subpath(0, 1, "foo") + .subpath(1, 2, "bar") + .subpath(0, 2, "foo/bar"); + test("/foo/bar/gus") + .subpath(0, 1, "foo") + .subpath(1, 2, "bar") + .subpath(2, 3, "gus") + .subpath(0, 2, "foo/bar") + .subpath(1, 3, "bar/gus") + .subpath(0, 3, "foo/bar/gus"); + test("foo/bar/gus") + .subpath(0, 1, "foo") + .subpath(1, 2, "bar") + .subpath(2, 3, "gus") + .subpath(0, 2, "foo/bar") + .subpath(1, 3, "bar/gus") + .subpath(0, 3, "foo/bar/gus"); + test("") + .subpath(0, 1, ""); // isAbsolute test("/") @@ -656,20 +836,61 @@ public class PathOps { .absolute(); test("tmp") .notAbsolute(); + test("") + .notAbsolute(); + // resolve test("/tmp") .resolve("foo", "/tmp/foo") - .resolve("/foo", "/foo"); + .resolve("/foo", "/foo") + .resolve("", "/tmp"); test("tmp") .resolve("foo", "tmp/foo") + .resolve("/foo", "/foo") + .resolve("", "tmp"); + test("") + .resolve("", "") + .resolve("foo", "foo") .resolve("/foo", "/foo"); + // resolveSibling + test("foo") + .resolveSibling("bar", "bar") + .resolveSibling("/bar", "/bar") + .resolveSibling("", ""); + test("foo/bar") + .resolveSibling("gus", "foo/gus") + .resolveSibling("/gus", "/gus") + .resolveSibling("", "foo"); + test("/foo") + .resolveSibling("gus", "/gus") + .resolveSibling("/gus", "/gus") + .resolveSibling("", "/"); + test("/foo/bar") + .resolveSibling("gus", "/foo/gus") + .resolveSibling("/gus", "/gus") + .resolveSibling("", "/foo"); + test("") + .resolveSibling("foo", "foo") + .resolveSibling("/foo", "/foo") + .resolve("", ""); + // relativize test("/a/b/c") - .relativize("/a/b/c", null) + .relativize("/a/b/c", "") .relativize("/a/b/c/d/e", "d/e") - .relativize("/a/x", "../../x"); + .relativize("/a/x", "../../x") + .relativize("/x", "../../../x"); + test("a/b/c") + .relativize("a/b/c/d", "d") + .relativize("a/x", "../../x") + .relativize("x", "../../../x") + .relativize("", "../../.."); + test("") + .relativize("a", "a") + .relativize("a/b/c", "a/b/c") + .relativize("", ""); // normalize test("/") @@ -679,7 +900,7 @@ public class PathOps { test("/foo") .normalize("/foo"); test(".") - .normalize(null); + .normalize(""); test("..") .normalize(".."); test("/..") @@ -691,7 +912,7 @@ public class PathOps { test("./foo") .normalize("foo"); test("foo/..") - .normalize(null); + .normalize(""); test("../foo") .normalize("../foo"); test("../../foo") @@ -717,7 +938,7 @@ public class PathOps { test("//bar\u0000") .invalid(); - // normalization + // normalization of input test("//foo//bar") .string("/foo/bar") .root("/") @@ -749,13 +970,13 @@ public class PathOps { } try { - path.startsWith(null); + path.startsWith((Path)null); throw new RuntimeException("NullPointerException not thrown"); } catch (NullPointerException npe) { } try { - path.endsWith(null); + path.endsWith((Path)null); throw new RuntimeException("NullPointerException not thrown"); } catch (NullPointerException npe) { } diff --git a/jdk/test/java/nio/file/Path/TemporaryFiles.java b/jdk/test/java/nio/file/Path/TemporaryFiles.java deleted file mode 100644 index e7603bf630e..00000000000 --- a/jdk/test/java/nio/file/Path/TemporaryFiles.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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 4313887 6838333 - * @summary Unit test for File.createTemporaryXXX (to be be moved to test/java/io/File) - * @library .. - */ - -import java.nio.file.*; -import static java.nio.file.StandardOpenOption.*; -import java.nio.file.attribute.*; -import java.io.File; -import java.io.IOException; -import java.util.Set; - -public class TemporaryFiles { - - static void checkInTempDirectory(Path file) { - Path tmpdir = Paths.get(System.getProperty("java.io.tmpdir")); - if (!file.getParent().equals(tmpdir)) - throw new RuntimeException("Not in temporary directory"); - } - - static void checkFile(Path file) throws IOException { - // check file is in temporary directory - checkInTempDirectory(file); - - // check that file can be opened for reading and writing - file.newByteChannel(READ).close(); - file.newByteChannel(WRITE).close(); - file.newByteChannel(READ,WRITE).close(); - - // check file permissions are 0600 or more secure - if (file.getFileStore().supportsFileAttributeView("posix")) { - Set perms = Attributes - .readPosixFileAttributes(file).permissions(); - perms.remove(PosixFilePermission.OWNER_READ); - perms.remove(PosixFilePermission.OWNER_WRITE); - if (!perms.isEmpty()) - throw new RuntimeException("Temporary file is not secure"); - } - } - - static void checkDirectory(Path dir) throws IOException { - // check directory is in temporary directory - checkInTempDirectory(dir); - - // check directory is empty - DirectoryStream stream = dir.newDirectoryStream(); - try { - if (stream.iterator().hasNext()) - throw new RuntimeException("Tempory directory not empty"); - } finally { - stream.close(); - } - - // check file permissions are 0700 or more secure - if (dir.getFileStore().supportsFileAttributeView("posix")) { - Set perms = Attributes - .readPosixFileAttributes(dir).permissions(); - perms.remove(PosixFilePermission.OWNER_READ); - perms.remove(PosixFilePermission.OWNER_WRITE); - perms.remove(PosixFilePermission.OWNER_EXECUTE); - if (!perms.isEmpty()) - throw new RuntimeException("Temporary directory is not secure"); - } - } - - public static void main(String[] args) throws IOException { - Path file = File.createTemporaryFile("blah", null).toPath(); - try { - checkFile(file); - } finally { - TestUtil.deleteUnchecked(file); - } - } -} diff --git a/jdk/test/java/nio/file/Path/UriImportExport.java b/jdk/test/java/nio/file/Path/UriImportExport.java index c6a9dbf23f4..1db4d85d19e 100644 --- a/jdk/test/java/nio/file/Path/UriImportExport.java +++ b/jdk/test/java/nio/file/Path/UriImportExport.java @@ -22,7 +22,7 @@ */ /* @test - * @bug 4313887 + * @bug 4313887 7003155 * @summary Unit test for java.nio.file.Path */ @@ -36,42 +36,105 @@ public class UriImportExport { static final PrintStream log = System.out; static int failures = 0; - static void test(String fn, String expected) { + /** + * Test Path -> URI -> Path + */ + static void testPath(String s) { + Path path = Paths.get(s); + log.println(path); + URI uri = path.toUri(); + log.println(" --> " + uri); + Path result = Paths.get(uri); + log.println(" --> " + result); + if (!result.equals(path.toAbsolutePath())) { + log.println("FAIL: Expected " + path + ", got " + result); + failures++; + } log.println(); - Path p = Paths.get(fn); - log.println(p); - URI u = p.toUri(); - log.println(" --> " + u); - if (expected != null && !(u.toString().equals(expected))) { - log.println("FAIL: Expected " + expected); - failures++; - return; - } - Path q = Paths.get(u); - log.println(" --> " + q); - if (!p.toAbsolutePath().equals(q)) { - log.println("FAIL: Expected " + p + ", got " + q); - failures++; - return; - } } - static void test(String fn) { - test(fn, null); + /** + * Test Path -> (expected) URI -> Path + */ + static void testPath(String s, String expectedUri) { + Path path = Paths.get(s); + log.println(path); + URI uri = path.toUri(); + log.println(" --> " + uri); + if (!uri.toString().equals(expectedUri)) { + log.println("FAILED: Expected " + expectedUri + ", got " + uri); + failures++; + return; + } + Path result = Paths.get(uri); + log.println(" --> " + result); + if (!result.equals(path.toAbsolutePath())) { + log.println("FAIL: Expected " + path + ", got " + result); + failures++; + } + log.println(); + } + + /** + * Test URI -> Path -> URI + */ + static void testUri(String s) throws Exception { + URI uri = URI.create(s); + log.println(uri); + Path path = Paths.get(uri); + log.println(" --> " + path); + URI result = path.toUri(); + log.println(" --> " + result); + if (!result.equals(uri)) { + log.println("FAIL: Expected " + uri + ", got " + result); + failures++; + } + log.println(); + } + + /** + * Test URI -> Path fails with IllegalArgumentException + */ + static void testBadUri(String s) throws Exception { + URI uri = URI.create(s); + log.println(uri); + try { + Path path = Paths.get(uri); + log.format(" --> %s FAIL: Expected IllegalArgumentException\n", path); + failures++; + } catch (IllegalArgumentException expected) { + log.println(" --> IllegalArgumentException (expected)"); + } + log.println(); } public static void main(String[] args) throws Exception { - test("foo"); - test("/foo"); - test("/foo bar"); + testBadUri("file:foo"); + testBadUri("file:/foo?q"); + testBadUri("file:/foo#f"); String osname = System.getProperty("os.name"); if (osname.startsWith("Windows")) { - test("C:\\foo"); - test("C:foo"); - test("\\\\rialto.dublin.com\\share\\"); - test("\\\\fe80--203-baff-fe5a-749ds1.ipv6-literal.net\\share\\missing", + testPath("C:\\doesnotexist"); + testPath("C:doesnotexist"); + testPath("\\\\server.nowhere.oracle.com\\share\\"); + testPath("\\\\fe80--203-baff-fe5a-749ds1.ipv6-literal.net\\share\\missing", "file://[fe80::203:baff:fe5a:749d%1]/share/missing"); + } else { + testPath("doesnotexist"); + testPath("/doesnotexist"); + testPath("/does not exist"); + testUri("file:///"); + testUri("file:///foo/bar/doesnotexist"); + testUri("file:/foo/bar/doesnotexist"); + + // file:///foo/bar/\u0440\u0443\u0441\u0441\u043A\u0438\u0439 (Russian) + testUri("file:///foo/bar/%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9"); + + // invalid + testBadUri("file:foo"); + testBadUri("file://server/foo"); + testBadUri("file:///foo%00"); } if (failures > 0) diff --git a/jdk/test/java/nio/file/TestUtil.java b/jdk/test/java/nio/file/TestUtil.java index b0fdd2a1f9d..f77d8f1adb3 100644 --- a/jdk/test/java/nio/file/TestUtil.java +++ b/jdk/test/java/nio/file/TestUtil.java @@ -31,17 +31,12 @@ public class TestUtil { } static Path createTemporaryDirectory(String where) throws IOException { - Path top = FileSystems.getDefault().getPath(where); - Random r = new Random(); - Path dir; - do { - dir = top.resolve("name" + r.nextInt()); - } while (dir.exists()); - return dir.createDirectory(); + Path dir = FileSystems.getDefault().getPath(where); + return Files.createTempDirectory(dir, "name"); } static Path createTemporaryDirectory() throws IOException { - return createTemporaryDirectory(System.getProperty("java.io.tmpdir")); + return Files.createTempDirectory("name"); } static void removeAll(Path dir) throws IOException { @@ -53,7 +48,7 @@ public class TestUtil { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { try { - file.delete(); + Files.delete(file); } catch (IOException x) { System.err.format("Unable to delete %s: %s\n", file, x); } @@ -62,7 +57,7 @@ public class TestUtil { @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) { try { - dir.delete(); + Files.delete(dir); } catch (IOException x) { System.err.format("Unable to delete %s: %s\n", dir, x); } @@ -78,7 +73,7 @@ public class TestUtil { static void deleteUnchecked(Path file) { try { - file.delete(); + Files.delete(file); } catch (IOException exc) { System.err.format("Unable to delete %s: %s\n", file, exc); } @@ -99,7 +94,7 @@ public class TestUtil { String name = sb.toString(); do { dir = dir.resolve(name).resolve("."); - dir.createDirectory(); + Files.createDirectory(dir); } while (dir.toString().length() < 2048); return dir; } @@ -111,8 +106,8 @@ public class TestUtil { Path link = dir.resolve("testlink"); Path target = dir.resolve("testtarget"); try { - link.createSymbolicLink(target); - link.delete(); + Files.createSymbolicLink(link, target); + Files.delete(link); return true; } catch (UnsupportedOperationException x) { return false; diff --git a/jdk/test/java/nio/file/WatchService/Basic.java b/jdk/test/java/nio/file/WatchService/Basic.java index 104781410ae..2869a519f37 100644 --- a/jdk/test/java/nio/file/WatchService/Basic.java +++ b/jdk/test/java/nio/file/WatchService/Basic.java @@ -41,8 +41,9 @@ import java.util.concurrent.TimeUnit; public class Basic { - static void createFile(Path file) throws IOException { - file.newOutputStream().close(); + static void checkKey(WatchKey key, Path dir) { + if (!key.isValid()) + throw new RuntimeException("Key is not valid"); } static void takeExpectedKey(WatchService watcher, WatchKey expected) { @@ -80,19 +81,19 @@ public class Basic { FileSystem fs = FileSystems.getDefault(); Path name = fs.getPath("foo"); - WatchService watcher = fs.newWatchService(); - try { + try (WatchService watcher = fs.newWatchService()) { // --- ENTRY_CREATE --- // register for event System.out.format("register %s for ENTRY_CREATE\n", dir); WatchKey myKey = dir.register(watcher, new WatchEvent.Kind[]{ ENTRY_CREATE }); + checkKey(myKey, dir); // create file Path file = dir.resolve("foo"); System.out.format("create %s\n", file); - createFile(file); + Files.createFile(file); // remove key and check that we got the ENTRY_CREATE event takeExpectedKey(watcher, myKey); @@ -112,9 +113,10 @@ public class Basic { new WatchEvent.Kind[]{ ENTRY_DELETE }); if (deleteKey != myKey) throw new RuntimeException("register did not return existing key"); + checkKey(deleteKey, dir); System.out.format("delete %s\n", file); - file.delete(); + Files.delete(file); takeExpectedKey(watcher, myKey); checkExpectedEvent(myKey.pollEvents(), StandardWatchEventKind.ENTRY_DELETE, name); @@ -126,7 +128,7 @@ public class Basic { System.out.println("OKAY"); // create the file for the next test - createFile(file); + Files.createFile(file); // --- ENTRY_MODIFY --- @@ -135,13 +137,11 @@ public class Basic { new WatchEvent.Kind[]{ ENTRY_MODIFY }); if (newKey != myKey) throw new RuntimeException("register did not return existing key"); + checkKey(newKey, dir); System.out.format("update: %s\n", file); - OutputStream out = file.newOutputStream(StandardOpenOption.APPEND); - try { + try (OutputStream out = Files.newOutputStream(file, StandardOpenOption.APPEND)) { out.write("I am a small file".getBytes("UTF-8")); - } finally { - out.close(); } // remove key and check that we got the ENTRY_MODIFY event @@ -151,10 +151,7 @@ public class Basic { System.out.println("OKAY"); // done - file.delete(); - - } finally { - watcher.close(); + Files.delete(file); } } @@ -164,12 +161,12 @@ public class Basic { static void testCancel(Path dir) throws IOException { System.out.println("-- Cancel --"); - WatchService watcher = FileSystems.getDefault().newWatchService(); - try { + try (WatchService watcher = FileSystems.getDefault().newWatchService()) { System.out.format("register %s for events\n", dir); WatchKey myKey = dir.register(watcher, new WatchEvent.Kind[]{ ENTRY_CREATE }); + checkKey(myKey, dir); System.out.println("cancel key"); myKey.cancel(); @@ -177,7 +174,7 @@ public class Basic { // create a file in the directory Path file = dir.resolve("mars"); System.out.format("create: %s\n", file); - createFile(file); + Files.createFile(file); // poll for keys - there will be none System.out.println("poll..."); @@ -190,12 +187,9 @@ public class Basic { } // done - file.delete(); + Files.delete(file); System.out.println("OKAY"); - - } finally { - watcher.close(); } } @@ -206,17 +200,16 @@ public class Basic { static void testAutomaticCancel(Path dir) throws IOException { System.out.println("-- Automatic Cancel --"); - Path subdir = dir.resolve("bar").createDirectory(); + Path subdir = Files.createDirectory(dir.resolve("bar")); - WatchService watcher = FileSystems.getDefault().newWatchService(); - try { + try (WatchService watcher = FileSystems.getDefault().newWatchService()) { System.out.format("register %s for events\n", subdir); WatchKey myKey = subdir.register(watcher, new WatchEvent.Kind[]{ ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY }); System.out.format("delete: %s\n", subdir); - subdir.delete(); + Files.delete(subdir); takeExpectedKey(watcher, myKey); System.out.println("reset key"); @@ -227,8 +220,6 @@ public class Basic { System.out.println("OKAY"); - } finally { - watcher.close(); } } @@ -411,7 +402,7 @@ public class Basic { // create gus1 Path file1 = dir.resolve(name1); System.out.format("create %s\n", file1); - createFile(file1); + Files.createFile(file1); // register with both watch services (different events) System.out.println("register for different events"); @@ -426,7 +417,7 @@ public class Basic { // create gus2 Path file2 = dir.resolve(name2); System.out.format("create %s\n", file2); - createFile(file2); + Files.createFile(file2); // check that key1 got ENTRY_CREATE takeExpectedKey(watcher1, key1); @@ -439,7 +430,7 @@ public class Basic { throw new RuntimeException("key not expected"); // delete gus1 - file1.delete(); + Files.delete(file1); // check that key2 got ENTRY_DELETE takeExpectedKey(watcher2, key2); @@ -462,7 +453,7 @@ public class Basic { // create file and key2 should be queued System.out.format("create %s\n", file1); - createFile(file1); + Files.createFile(file1); takeExpectedKey(watcher2, key2); checkExpectedEvent(key2.pollEvents(), StandardWatchEventKind.ENTRY_CREATE, name1); diff --git a/jdk/test/java/nio/file/WatchService/FileTreeModifier.java b/jdk/test/java/nio/file/WatchService/FileTreeModifier.java index 01db8b97a40..cde17db1124 100644 --- a/jdk/test/java/nio/file/WatchService/FileTreeModifier.java +++ b/jdk/test/java/nio/file/WatchService/FileTreeModifier.java @@ -62,10 +62,7 @@ public class FileTreeModifier { WatchService watcher = fs.newWatchService(); // create directories - Path subdir = top - .resolve("a").createDirectory() - .resolve("b").createDirectory() - .resolve("c").createDirectory(); + Path subdir = Files.createDirectories(top.resolve("a").resolve("b").resolve("c")); // Test ENTRY_CREATE with FILE_TREE modifier. @@ -73,7 +70,7 @@ public class FileTreeModifier { new WatchEvent.Kind[]{ ENTRY_CREATE }, FILE_TREE); // create file in a/b/c and check we get create event - Path file = subdir.resolve("foo").createFile(); + Path file = Files.createFile(subdir.resolve("foo")); checkExpectedEvent(watcher, ENTRY_CREATE, top.relativize(file)); key.reset(); @@ -85,7 +82,7 @@ public class FileTreeModifier { throw new RuntimeException("Existing key not returned"); // delete a/b/c/foo and check we get delete event - file.delete(); + Files.delete(file); checkExpectedEvent(watcher, ENTRY_DELETE, top.relativize(file)); key.reset(); @@ -96,19 +93,20 @@ public class FileTreeModifier { throw new RuntimeException("Existing key not returned"); // create a/b/c/foo - file.createFile(); + Files.createFile(file); // check that key is not queued + WatchKey nextKey; try { - k = watcher.poll(3, TimeUnit.SECONDS); + nextKey = watcher.poll(3, TimeUnit.SECONDS); } catch (InterruptedException e) { throw new RuntimeException(); } - if (k != null) + if (nextKey != null) throw new RuntimeException("WatchKey not expected to be polled"); // create bar and check we get create event - file = top.resolve("bar").createFile(); + file = Files.createFile(top.resolve("bar")); checkExpectedEvent(watcher, ENTRY_CREATE, top.relativize(file)); key.reset(); @@ -121,11 +119,8 @@ public class FileTreeModifier { throw new RuntimeException("Existing key not returned"); // modify bar and check we get modify event - OutputStream out = file.newOutputStream(); - try { + try (OutputStream out = Files.newOutputStream(file)) { out.write("Double shot expresso please".getBytes("UTF-8")); - } finally { - out.close(); } checkExpectedEvent(watcher, ENTRY_MODIFY, top.relativize(file)); key.reset(); diff --git a/jdk/test/java/nio/file/WatchService/LotsOfEvents.java b/jdk/test/java/nio/file/WatchService/LotsOfEvents.java index c19e7d50a0a..96fb4d81783 100644 --- a/jdk/test/java/nio/file/WatchService/LotsOfEvents.java +++ b/jdk/test/java/nio/file/WatchService/LotsOfEvents.java @@ -55,15 +55,14 @@ public class LotsOfEvents { static void testOverflowEvent(Path dir) throws IOException, InterruptedException { - WatchService watcher = dir.getFileSystem().newWatchService(); - try { + try (WatchService watcher = dir.getFileSystem().newWatchService()) { dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE); // create a lot of files int n = 1024; Path[] files = new Path[n]; for (int i=0; i modified = new HashSet(); + Set modified = new HashSet<>(); for (WatchEvent event: key.pollEvents()) { WatchEvent.Kind kind = event.kind(); Path file = (kind == OVERFLOW) ? null : (Path)event.context(); @@ -188,9 +184,6 @@ public class LotsOfEvents { key = watcher.poll(2, TimeUnit.SECONDS); } } - - } finally { - watcher.close(); } } @@ -200,20 +193,17 @@ public class LotsOfEvents { this.file = file; } void create() throws IOException { - if (file.notExists()) - file.createFile(); + if (Files.notExists(file)) + Files.createFile(file); } void deleteIfExists() throws IOException { - file.deleteIfExists(); + Files.deleteIfExists(file); } void modifyIfExists() throws IOException { - if (file.exists()) { - OutputStream out = file.newOutputStream(StandardOpenOption.APPEND); - try { + if (Files.exists(file)) { + try (OutputStream out = Files.newOutputStream(file, StandardOpenOption.APPEND)) { out.write("message".getBytes()); - } finally { - out.close(); } } } diff --git a/jdk/test/java/nio/file/WatchService/SensitivityModifier.java b/jdk/test/java/nio/file/WatchService/SensitivityModifier.java index 63b26f9d51f..47ff2b69bcf 100644 --- a/jdk/test/java/nio/file/WatchService/SensitivityModifier.java +++ b/jdk/test/java/nio/file/WatchService/SensitivityModifier.java @@ -51,6 +51,7 @@ public class SensitivityModifier { } } + @SuppressWarnings("unchecked") static void doTest(Path top) throws Exception { FileSystem fs = top.getFileSystem(); WatchService watcher = fs.newWatchService(); @@ -61,11 +62,11 @@ public class SensitivityModifier { Path[] dirs = new Path[nDirs]; Path[] files = new Path[nFiles]; for (int i=0; i)event).context(); - if (!name.equals(file.getName())) + if (!name.equals(file.getFileName())) throw new RuntimeException("Unexpected context: " + name); System.out.println("Event OK"); diff --git a/jdk/test/java/nio/file/attribute/AclFileAttributeView/Basic.java b/jdk/test/java/nio/file/attribute/AclFileAttributeView/Basic.java index 03a0e48e783..bc32699cbfa 100644 --- a/jdk/test/java/nio/file/attribute/AclFileAttributeView/Basic.java +++ b/jdk/test/java/nio/file/attribute/AclFileAttributeView/Basic.java @@ -47,11 +47,11 @@ public class Basic { // sanity check read and writing ACL static void testReadWrite(Path dir) throws IOException { Path file = dir.resolve("foo"); - if (file.notExists()) - file.createFile(); + if (Files.notExists(file)) + Files.createFile(file); - AclFileAttributeView view = file - .getFileAttributeView(AclFileAttributeView.class); + AclFileAttributeView view = + Files.getFileAttributeView(file, AclFileAttributeView.class); // print existing ACL List acl = view.getAcl(); @@ -79,7 +79,7 @@ public class Basic { } // if PosixFileAttributeView then repeat test with OWNER@ - if (file.getFileStore().supportsFileAttributeView("posix")) { + if (Files.getFileStore(file).supportsFileAttributeView("posix")) { owner = file.getFileSystem().getUserPrincipalLookupService() .lookupPrincipalByName("OWNER@"); entry = AclEntry.newBuilder(entry).setPrincipal(owner).build(); @@ -115,7 +115,8 @@ public class Basic { // sanity check create a file or directory with initial ACL static void testCreateFile(Path dir) throws IOException { - UserPrincipal user = Attributes.getOwner(dir); + UserPrincipal user = Files.getOwner(dir); + AclFileAttributeView view; // create file with initial ACL System.out.println("-- create file with initial ACL --"); @@ -127,8 +128,9 @@ public class Basic { .setPermissions(SYNCHRONIZE, READ_DATA, WRITE_DATA, READ_ATTRIBUTES, READ_ACL, WRITE_ATTRIBUTES, DELETE) .build()); - file.createFile(asAclAttribute(fileAcl)); - assertEquals(Attributes.getAcl(file), fileAcl); + Files.createFile(file, asAclAttribute(fileAcl)); + view = Files.getFileAttributeView(file, AclFileAttributeView.class); + assertEquals(view.getAcl(), fileAcl); // create directory with initial ACL System.out.println("-- create directory with initial ACL --"); @@ -142,17 +144,18 @@ public class Basic { AclEntry.newBuilder(fileAcl.get(0)) .setFlags(FILE_INHERIT) .build()); - subdir.createDirectory(asAclAttribute(dirAcl)); - assertEquals(Attributes.getAcl(subdir), dirAcl); + Files.createDirectory(subdir, asAclAttribute(dirAcl)); + view = Files.getFileAttributeView(subdir, AclFileAttributeView.class); + assertEquals(view.getAcl(), dirAcl); } public static void main(String[] args) throws IOException { // use work directory rather than system temporary directory to // improve chances that ACLs are supported - Path dir = Paths.get("./work" + new Random().nextInt()) - .createDirectory(); + Path dir = Paths.get("./work" + new Random().nextInt()); + Files.createDirectory(dir); try { - if (!dir.getFileStore().supportsFileAttributeView("acl")) { + if (!Files.getFileStore(dir).supportsFileAttributeView("acl")) { System.out.println("ACLs not supported - test skipped!"); return; } diff --git a/jdk/test/java/nio/file/attribute/BasicFileAttributeView/Basic.java b/jdk/test/java/nio/file/attribute/BasicFileAttributeView/Basic.java index c2cb23a4ff6..794a42c1c46 100644 --- a/jdk/test/java/nio/file/attribute/BasicFileAttributeView/Basic.java +++ b/jdk/test/java/nio/file/attribute/BasicFileAttributeView/Basic.java @@ -43,7 +43,7 @@ public class Basic { static void checkAttributesOfDirectory(Path dir) throws IOException { - BasicFileAttributes attrs = Attributes.readBasicFileAttributes(dir); + BasicFileAttributes attrs = Files.readAttributes(dir, BasicFileAttributes.class); check(attrs.isDirectory(), "is a directory"); check(!attrs.isRegularFile(), "is not a regular file"); check(!attrs.isSymbolicLink(), "is not a link"); @@ -58,7 +58,7 @@ public class Basic { static void checkAttributesOfFile(Path dir, Path file) throws IOException { - BasicFileAttributes attrs = Attributes.readBasicFileAttributes(file); + BasicFileAttributes attrs = Files.readAttributes(file, BasicFileAttributes.class); check(attrs.isRegularFile(), "is a regular file"); check(!attrs.isDirectory(), "is not a directory"); check(!attrs.isSymbolicLink(), "is not a link"); @@ -73,8 +73,8 @@ public class Basic { // copy last-modified time and file create time from directory to file, // re-read attribtues, and check they match BasicFileAttributeView view = - file.getFileAttributeView(BasicFileAttributeView.class); - BasicFileAttributes dirAttrs = Attributes.readBasicFileAttributes(dir); + Files.getFileAttributeView(file, BasicFileAttributeView.class); + BasicFileAttributes dirAttrs = Files.readAttributes(dir, BasicFileAttributes.class); view.setTimes(dirAttrs.lastModifiedTime(), null, null); if (dirAttrs.creationTime() != null) { view.setTimes(null, null, dirAttrs.creationTime()); @@ -95,8 +95,8 @@ public class Basic { static void checkAttributesOfLink(Path link) throws IOException { - BasicFileAttributes attrs = Attributes - .readBasicFileAttributes(link, LinkOption.NOFOLLOW_LINKS); + BasicFileAttributes attrs = + Files.readAttributes(link, BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS); check(attrs.isSymbolicLink(), "is a link"); check(!attrs.isDirectory(), "is a directory"); check(!attrs.isRegularFile(), "is not a regular file"); @@ -108,11 +108,8 @@ public class Basic { { // create file Path file = dir.resolve("foo"); - OutputStream out = file.newOutputStream(); - try { + try (OutputStream out = Files.newOutputStream(file)) { out.write("this is not an empty file".getBytes("UTF-8")); - } finally { - out.close(); } // check attributes of directory and file @@ -122,7 +119,7 @@ public class Basic { // symbolic links may be supported Path link = dir.resolve("link"); try { - link.createSymbolicLink( file ); + Files.createSymbolicLink(link, file); } catch (UnsupportedOperationException x) { return; } catch (IOException x) { diff --git a/jdk/test/java/nio/file/attribute/DosFileAttributeView/Basic.java b/jdk/test/java/nio/file/attribute/DosFileAttributeView/Basic.java index bac02d22dfc..702c95050cc 100644 --- a/jdk/test/java/nio/file/attribute/DosFileAttributeView/Basic.java +++ b/jdk/test/java/nio/file/attribute/DosFileAttributeView/Basic.java @@ -74,27 +74,25 @@ public class Basic { static void readWriteTests(Path dir) throws IOException { // create "foo" and test that we can read/write each FAT attribute - Path file = dir.resolve("foo"); - file.createFile(); + Path file = Files.createFile(dir.resolve("foo")); try { - testAttributes(file - .getFileAttributeView(DosFileAttributeView.class)); + testAttributes(Files.getFileAttributeView(file, DosFileAttributeView.class)); // Following tests use a symbolic link so skip if not supported if (!TestUtil.supportsLinks(dir)) return; - Path link = dir.resolve("link").createSymbolicLink(file); + Path link = dir.resolve("link"); + Files.createSymbolicLink(link, file); // test following links - testAttributes(link - .getFileAttributeView(DosFileAttributeView.class)); + testAttributes(Files.getFileAttributeView(link, DosFileAttributeView.class)); // test not following links try { try { - testAttributes(link - .getFileAttributeView(DosFileAttributeView.class, NOFOLLOW_LINKS)); + testAttributes(Files + .getFileAttributeView(link, DosFileAttributeView.class, NOFOLLOW_LINKS)); } catch (IOException x) { // access to link attributes not supported return; @@ -103,32 +101,32 @@ public class Basic { // set all attributes on link // run test on target of link (which leaves them all un-set) // check that attributes of link remain all set - setAll(link - .getFileAttributeView(DosFileAttributeView.class, NOFOLLOW_LINKS), true); - testAttributes(link - .getFileAttributeView(DosFileAttributeView.class)); - DosFileAttributes attrs = Attributes.readDosFileAttributes(link, NOFOLLOW_LINKS); + setAll(Files + .getFileAttributeView(link, DosFileAttributeView.class, NOFOLLOW_LINKS), true); + testAttributes(Files + .getFileAttributeView(link, DosFileAttributeView.class)); + DosFileAttributes attrs = + Files.getFileAttributeView(link, DosFileAttributeView.class, NOFOLLOW_LINKS) + .readAttributes(); check(attrs.isReadOnly()); check(attrs.isHidden()); check(attrs.isArchive()); check(attrs.isSystem()); - setAll(link - .getFileAttributeView(DosFileAttributeView.class, NOFOLLOW_LINKS), false); + setAll(Files + .getFileAttributeView(link, DosFileAttributeView.class, NOFOLLOW_LINKS), false); // set all attributes on target // run test on link (which leaves them all un-set) // check that attributes of target remain all set - setAll(link - .getFileAttributeView(DosFileAttributeView.class), true); - testAttributes(link - .getFileAttributeView(DosFileAttributeView.class, NOFOLLOW_LINKS)); - attrs = Attributes.readDosFileAttributes(link); + setAll(Files.getFileAttributeView(link, DosFileAttributeView.class), true); + testAttributes(Files + .getFileAttributeView(link, DosFileAttributeView.class, NOFOLLOW_LINKS)); + attrs = Files.getFileAttributeView(link, DosFileAttributeView.class).readAttributes(); check(attrs.isReadOnly()); check(attrs.isHidden()); check(attrs.isArchive()); check(attrs.isSystem()); - setAll(link - .getFileAttributeView(DosFileAttributeView.class), false); + setAll(Files.getFileAttributeView(link, DosFileAttributeView.class), false); } finally { TestUtil.deleteUnchecked(link); } @@ -143,7 +141,7 @@ public class Basic { try { // skip test if DOS file attributes not supported - if (!dir.getFileStore().supportsFileAttributeView("dos")) { + if (!Files.getFileStore(dir).supportsFileAttributeView("dos")) { System.out.println("DOS file attribute not supported."); return; } diff --git a/jdk/test/java/nio/file/attribute/FileStoreAttributeView/Basic.java b/jdk/test/java/nio/file/attribute/FileStoreAttributeView/Basic.java deleted file mode 100644 index 8307bac54bb..00000000000 --- a/jdk/test/java/nio/file/attribute/FileStoreAttributeView/Basic.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (c) 2008, 2009, 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 4313887 6838333 - * @summary Unit test for java.nio.file.attribute.FileStoreAttributeView - * @library ../.. - */ - -import java.nio.file.*; -import java.nio.file.attribute.*; -import java.io.File; -import java.io.IOException; -import java.util.*; - -/** - * Simple unit test for FileStoreAttributeView that checks that the disk space - * attribtues are "close" to the equivalent values reported by java.io.File. - */ - -public class Basic { - - static final long K = 1024L; - static final long G = 1024L * 1024L * 1024L; - - /** - * Print out the disk space information for the given file system - */ - static void printFileStore(FileStore fs) throws IOException { - FileStoreSpaceAttributeView view = - fs.getFileStoreAttributeView(FileStoreSpaceAttributeView.class); - FileStoreSpaceAttributes attrs = view.readAttributes(); - - long total = attrs.totalSpace() / K; - long used = (attrs.totalSpace() - attrs.unallocatedSpace()) / K; - long avail = attrs.usableSpace() / K; - - String s = fs.toString(); - if (s.length() > 20) { - System.out.println(s); - s = ""; - } - System.out.format("%-20s %12d %12d %12d\n", s, total, used, avail); - } - - /** - * Check that two values are within 1GB of each other - */ - static void checkWithin1GB(long value1, long value2) { - long diff = Math.abs(value1 - value2); - if (diff > G) - throw new RuntimeException("values differ by more than 1GB"); - } - - /** - * Check disk space on the file system of the given file - */ - static void checkSpace(Path file) throws IOException { - System.out.println(" -- check space -- "); - System.out.println(file); - - FileStore fs = file.getFileStore(); - System.out.format("Filesystem: %s\n", fs); - - // get values reported by java.io.File - File f = new File(file.toString()); - long total = f.getTotalSpace(); - long free = f.getFreeSpace(); - long usable = f.getUsableSpace(); - System.out.println("java.io.File"); - System.out.format(" Total: %d\n", total); - System.out.format(" Free: %d\n", free); - System.out.format(" Usable: %d\n", usable); - - // get values reported by the FileStoreSpaceAttributeView - FileStoreSpaceAttributes attrs = fs - .getFileStoreAttributeView(FileStoreSpaceAttributeView.class) - .readAttributes(); - System.out.println("java.nio.file.FileStoreSpaceAttributeView:"); - System.out.format(" Total: %d\n", attrs.totalSpace()); - System.out.format(" Free: %d\n", attrs.unallocatedSpace()); - System.out.format(" Usable: %d\n", attrs.usableSpace()); - - // check values are "close" - checkWithin1GB(total, attrs.totalSpace()); - checkWithin1GB(free, attrs.unallocatedSpace()); - checkWithin1GB(usable, attrs.usableSpace()); - - // get values by name - checkWithin1GB(total, (Long)fs.getAttribute("space:totalSpace")); - checkWithin1GB(free, (Long)fs.getAttribute("space:unallocatedSpace")); - checkWithin1GB(usable, (Long)fs.getAttribute("space:usableSpace")); - } - - public static void main(String[] args) throws IOException { - // print out the disk space information for all file systems - FileSystem fs = FileSystems.getDefault(); - for (FileStore store: fs.getFileStores()) { - printFileStore(store); - } - - Path dir = TestUtil.createTemporaryDirectory(); - try { - // check space using directory - checkSpace(dir); - - // check space using file - Path file = dir.resolve("foo").createFile(); - checkSpace(file); - - } finally { - TestUtil.removeAll(dir); - } - } -} diff --git a/jdk/test/java/nio/file/attribute/FileTime/Basic.java b/jdk/test/java/nio/file/attribute/FileTime/Basic.java index 2a79a1a6d7e..f907c00f871 100644 --- a/jdk/test/java/nio/file/attribute/FileTime/Basic.java +++ b/jdk/test/java/nio/file/attribute/FileTime/Basic.java @@ -29,13 +29,16 @@ import java.nio.file.attribute.FileTime; import java.util.concurrent.TimeUnit; import static java.util.concurrent.TimeUnit.*; -import java.io.IOException; +import java.util.Random; public class Basic { - public static void main(String[] args) throws IOException { + static final Random rand = new Random(); + + public static void main(String[] args) { long now = System.currentTimeMillis(); long tomorrowInDays = TimeUnit.DAYS.convert(now, MILLISECONDS) + 1; + long yesterdayInDays = TimeUnit.DAYS.convert(now, MILLISECONDS) - 1; // equals eq(now, MILLISECONDS, now, MILLISECONDS); @@ -50,6 +53,29 @@ public class Basic { cmp(now, MILLISECONDS, now+1234, MILLISECONDS, -1); cmp(tomorrowInDays, DAYS, now, MILLISECONDS, 1); cmp(now, MILLISECONDS, tomorrowInDays, DAYS, -1); + cmp(yesterdayInDays, DAYS, now, MILLISECONDS, -1); + cmp(now, MILLISECONDS, yesterdayInDays, DAYS, 1); + cmp(yesterdayInDays, DAYS, now, MILLISECONDS, -1); + cmp(Long.MAX_VALUE, DAYS, Long.MAX_VALUE, NANOSECONDS, 1); + cmp(Long.MAX_VALUE, DAYS, Long.MIN_VALUE, NANOSECONDS, 1); + cmp(Long.MIN_VALUE, DAYS, Long.MIN_VALUE, NANOSECONDS, -1); + cmp(Long.MIN_VALUE, DAYS, Long.MAX_VALUE, NANOSECONDS, -1); + + // to(TimeUnit) + to(MILLISECONDS.convert(1, DAYS) - 1, MILLISECONDS); + to(MILLISECONDS.convert(1, DAYS) + 0, MILLISECONDS); + to(MILLISECONDS.convert(1, DAYS) + 1, MILLISECONDS); + to(1, MILLISECONDS); + to(0, MILLISECONDS); + to(1, MILLISECONDS); + to(MILLISECONDS.convert(-1, DAYS) - 1, MILLISECONDS); + to(MILLISECONDS.convert(-1, DAYS) + 0, MILLISECONDS); + to(MILLISECONDS.convert(-1, DAYS) + 1, MILLISECONDS); + for (TimeUnit unit: TimeUnit.values()) { + for (int i=0; i<100; i++) { to(rand.nextLong(), unit); } + to(Long.MIN_VALUE, unit); + to(Long.MAX_VALUE, unit); + } // toString ts(1L, DAYS, "1970-01-02T00:00:00Z"); @@ -59,6 +85,8 @@ public class Basic { ts(1L, MILLISECONDS, "1970-01-01T00:00:00.001Z"); ts(1L, MICROSECONDS, "1970-01-01T00:00:00.000001Z"); ts(1L, NANOSECONDS, "1970-01-01T00:00:00.000000001Z"); + ts(999999999L, NANOSECONDS, "1970-01-01T00:00:00.999999999Z"); + ts(9999999999L, NANOSECONDS, "1970-01-01T00:00:09.999999999Z"); ts(-1L, DAYS, "1969-12-31T00:00:00Z"); ts(-1L, HOURS, "1969-12-31T23:00:00Z"); @@ -67,6 +95,8 @@ public class Basic { ts(-1L, MILLISECONDS, "1969-12-31T23:59:59.999Z"); ts(-1L, MICROSECONDS, "1969-12-31T23:59:59.999999Z"); ts(-1L, NANOSECONDS, "1969-12-31T23:59:59.999999999Z"); + ts(-999999999L, NANOSECONDS, "1969-12-31T23:59:59.000000001Z"); + ts(-9999999999L, NANOSECONDS, "1969-12-31T23:59:50.000000001Z"); ts(-62135596799999L, MILLISECONDS, "0001-01-01T00:00:00.001Z"); ts(-62135596800000L, MILLISECONDS, "0001-01-01T00:00:00Z"); @@ -114,9 +144,24 @@ public class Basic { throw new RuntimeException("should not be equal"); } - static void ts(long v, TimeUnit y, String expected) { - String s = FileTime.from(v, y).toString(); - if (!s.equals(expected)) - throw new RuntimeException("unexpected format"); + static void to(long v, TimeUnit unit) { + FileTime t = FileTime.from(v, unit); + for (TimeUnit u: TimeUnit.values()) { + long result = t.to(u); + long expected = u.convert(v, unit); + if (result != expected) { + throw new RuntimeException("unexpected result"); + } + } + } + + static void ts(long v, TimeUnit unit, String expected) { + String result = FileTime.from(v, unit).toString(); + if (!result.equals(expected)) { + System.err.format("FileTime.from(%d, %s).toString() failed\n", v, unit); + System.err.format("Expected: %s\n", expected); + System.err.format(" Got: %s\n", result); + throw new RuntimeException(); + } } } diff --git a/jdk/test/java/nio/file/attribute/PosixFileAttributeView/Basic.java b/jdk/test/java/nio/file/attribute/PosixFileAttributeView/Basic.java index f3ff3584964..7d948b9bd3e 100644 --- a/jdk/test/java/nio/file/attribute/PosixFileAttributeView/Basic.java +++ b/jdk/test/java/nio/file/attribute/PosixFileAttributeView/Basic.java @@ -49,9 +49,8 @@ public class Basic { Set perms = PosixFilePermissions.fromString(mode); // change permissions and re-read them. - Attributes.setPosixFilePermissions(file, perms); - Set current = Attributes - .readPosixFileAttributes(file).permissions(); + Files.setPosixFilePermissions(file, perms); + Set current = Files.getPosixFilePermissions(file); if (!current.equals(perms)) { throw new RuntimeException("Actual permissions: " + PosixFilePermissions.toString(current) + ", expected: " + @@ -59,8 +58,8 @@ public class Basic { } // repeat test using setAttribute/getAttribute - file.setAttribute("posix:permissions", perms); - current = (Set)file.getAttribute("posix:permissions"); + Files.setAttribute(file, "posix:permissions", perms); + current = (Set)Files.getAttribute(file, "posix:permissions"); if (!current.equals(perms)) { throw new RuntimeException("Actual permissions: " + PosixFilePermissions.toString(current) + ", expected: " + @@ -97,25 +96,25 @@ public class Basic { FileAttribute> attr = PosixFilePermissions.asFileAttribute(requested); System.out.format("create file with mode: %s\n", mode); - file.createFile(attr); + Files.createFile(file, attr); try { - checkSecure(requested, file - .getFileAttributeView(PosixFileAttributeView.class) - .readAttributes() - .permissions()); + checkSecure(requested, + Files.getFileAttributeView(file, PosixFileAttributeView.class) + .readAttributes() + .permissions()); } finally { - file.delete(); + Files.delete(file); } System.out.format("create directory with mode: %s\n", mode); - file.createDirectory(attr); + Files.createDirectory(file, attr); try { - checkSecure(requested, file - .getFileAttributeView(PosixFileAttributeView.class) - .readAttributes() - .permissions()); + checkSecure(requested, + Files.getFileAttributeView(file, PosixFileAttributeView.class) + .readAttributes() + .permissions()); } finally { - file.delete(); + Files.delete(file); } } @@ -130,11 +129,11 @@ public class Basic { // create file and test updating and reading its permissions Path file = dir.resolve("foo"); System.out.format("create %s\n", file); - file.createFile(); + Files.createFile(file); try { // get initial permissions so that we can restore them later - PosixFileAttributeView view = file - .getFileAttributeView(PosixFileAttributeView.class); + PosixFileAttributeView view = + Files.getFileAttributeView(file, PosixFileAttributeView.class); Set save = view.readAttributes() .permissions(); @@ -165,7 +164,7 @@ public class Basic { view.setPermissions(save); } } finally { - file.delete(); + Files.delete(file); } // create link (to file that doesn't exist) and test reading of @@ -173,15 +172,18 @@ public class Basic { if (TestUtil.supportsLinks(dir)) { Path link = dir.resolve("link"); System.out.format("create link %s\n", link); - link.createSymbolicLink(file); + Files.createSymbolicLink(link, file); try { - PosixFileAttributes attrs = Attributes - .readPosixFileAttributes(link, NOFOLLOW_LINKS); + PosixFileAttributes attrs = + Files.getFileAttributeView(link, + PosixFileAttributeView.class, + NOFOLLOW_LINKS) + .readAttributes(); if (!attrs.isSymbolicLink()) { throw new RuntimeException("not a link"); } } finally { - link.delete(); + Files.delete(link); } } @@ -235,12 +237,12 @@ public class Basic { Path file = dir.resolve("gus"); System.out.format("create %s\n", file); - file.createFile(); + Files.createFile(file); try { // read attributes of directory to get owner/group - PosixFileAttributeView view = file - .getFileAttributeView(PosixFileAttributeView.class); + PosixFileAttributeView view = + Files.getFileAttributeView(file, PosixFileAttributeView.class); PosixFileAttributes attrs = view.readAttributes(); // set to existing owner/group @@ -248,13 +250,13 @@ public class Basic { view.setGroup(attrs.group()); // repeat test using set/getAttribute - UserPrincipal owner = (UserPrincipal)file.getAttribute("posix:owner"); - file.setAttribute("posix:owner", owner); - UserPrincipal group = (UserPrincipal)file.getAttribute("posix:group"); - file.setAttribute("posix:group", group); + UserPrincipal owner = (UserPrincipal)Files.getAttribute(file, "posix:owner"); + Files.setAttribute(file, "posix:owner", owner); + UserPrincipal group = (UserPrincipal)Files.getAttribute(file, "posix:group"); + Files.setAttribute(file, "posix:group", group); } finally { - file.delete(); + Files.delete(file); } System.out.println("OKAY"); @@ -272,7 +274,7 @@ public class Basic { .getUserPrincipalLookupService(); // read attributes of directory to get owner/group - PosixFileAttributes attrs = Attributes.readPosixFileAttributes(dir); + PosixFileAttributes attrs = Files.readAttributes(dir, PosixFileAttributes.class); // lookup owner and check it matches file's owner System.out.format("lookup: %s\n", attrs.owner().getName()); @@ -322,8 +324,8 @@ public class Basic { { System.out.println("-- Exceptions --"); - PosixFileAttributeView view = dir - .getFileAttributeView(PosixFileAttributeView.class); + PosixFileAttributeView view = + Files.getFileAttributeView(dir,PosixFileAttributeView.class); // NullPointerException try { @@ -355,7 +357,7 @@ public class Basic { } catch (NullPointerException x) { } try { - Set perms = new HashSet(); + Set perms = new HashSet<>(); perms.add(null); view.setPermissions(perms); throw new RuntimeException("NullPointerException not thrown"); @@ -377,7 +379,7 @@ public class Basic { public static void main(String[] args) throws IOException { Path dir = TestUtil.createTemporaryDirectory(); try { - if (!dir.getFileStore().supportsFileAttributeView("posix")) { + if (!Files.getFileStore(dir).supportsFileAttributeView("posix")) { System.out.println("PosixFileAttributeView not supported"); return; } diff --git a/jdk/test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java b/jdk/test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java index c6a807a45ec..a6af4192234 100644 --- a/jdk/test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java +++ b/jdk/test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java @@ -79,8 +79,8 @@ public class Basic { } static void test(Path file, LinkOption... options) throws IOException { - final UserDefinedFileAttributeView view = file - .getFileAttributeView(UserDefinedFileAttributeView.class, options); + final UserDefinedFileAttributeView view = + Files.getFileAttributeView(file, UserDefinedFileAttributeView.class, options); ByteBuffer buf = rand.nextBoolean() ? ByteBuffer.allocate(100) : ByteBuffer.allocateDirect(100); @@ -131,24 +131,24 @@ public class Basic { // Test: dynamic access String name = "user:" + ATTR_NAME; byte[] valueAsBytes = ATTR_VALUE.getBytes(); - file.setAttribute(name, valueAsBytes); - byte[] actualAsBytes = (byte[])file.getAttribute(name); + Files.setAttribute(file, name, valueAsBytes); + byte[] actualAsBytes = (byte[])Files.getAttribute(file, name); if (!Arrays.equals(valueAsBytes, actualAsBytes)) throw new RuntimeException("Unexpected attribute value"); - Map map = file.readAttributes(name); + Map map = Files.readAttributes(file, name); if (!Arrays.equals(valueAsBytes, (byte[])map.get(ATTR_NAME))) throw new RuntimeException("Unexpected attribute value"); - map = file.readAttributes("user:*"); + map = Files.readAttributes(file, "user:*"); if (!Arrays.equals(valueAsBytes, (byte[])map.get(ATTR_NAME))) throw new RuntimeException("Unexpected attribute value"); - map = file.readAttributes("user:DoesNotExist"); + map = Files.readAttributes(file, "user:DoesNotExist"); if (!map.isEmpty()) throw new RuntimeException("Map expected to be empty"); } static void miscTests(final Path file) throws IOException { - final UserDefinedFileAttributeView view = file - .getFileAttributeView(UserDefinedFileAttributeView.class); + final UserDefinedFileAttributeView view = + Files.getFileAttributeView(file, UserDefinedFileAttributeView.class); view.write(ATTR_NAME, ByteBuffer.wrap(ATTR_VALUE.getBytes())); // NullPointerException @@ -180,31 +180,31 @@ public class Basic { }}); expectNullPointerException(new Task() { public void run() throws IOException { - file.getAttribute(null); + Files.getAttribute(file, null); }}); expectNullPointerException(new Task() { public void run() throws IOException { - file.getAttribute("user:" + ATTR_NAME, (LinkOption[])null); + Files.getAttribute(file, "user:" + ATTR_NAME, (LinkOption[])null); }}); expectNullPointerException(new Task() { public void run() throws IOException { - file.setAttribute("user:" + ATTR_NAME, null); + Files.setAttribute(file, "user:" + ATTR_NAME, null); }}); expectNullPointerException(new Task() { public void run() throws IOException { - file.setAttribute(null, new byte[0]); + Files.setAttribute(file, null, new byte[0]); }}); expectNullPointerException(new Task() { public void run() throws IOException { - file.setAttribute("user: " + ATTR_NAME, new byte[0], (LinkOption[])null); + Files.setAttribute(file, "user: " + ATTR_NAME, new byte[0], (LinkOption[])null); }}); expectNullPointerException(new Task() { public void run() throws IOException { - file.readAttributes((String)null); + Files.readAttributes(file, (String)null); }}); expectNullPointerException(new Task() { public void run() throws IOException { - file.readAttributes("*", (LinkOption[])null); + Files.readAttributes(file, "*", (LinkOption[])null); }}); // Read-only buffer @@ -229,46 +229,50 @@ public class Basic { // create temporary directory to run tests Path dir = TestUtil.createTemporaryDirectory(); try { - if (!dir.getFileStore().supportsFileAttributeView("user")) { + if (!Files.getFileStore(dir).supportsFileAttributeView("user")) { System.out.println("UserDefinedFileAttributeView not supported - skip test"); return; } // test access to user defined attributes of regular file - Path file = dir.resolve("foo.html").createFile(); + Path file = dir.resolve("foo.html"); + Files.createFile(file); try { test(file); } finally { - file.delete(); + Files.delete(file); } - // test access to user define attributes of directory - file = dir.resolve("foo").createDirectory(); + // test access to user defined attributes of directory + Path subdir = dir.resolve("foo"); + Files.createDirectory(subdir); try { - test(file); + test(subdir); } finally { - file.delete(); + Files.delete(subdir); } // test access to user defined attributes of sym link if (TestUtil.supportsLinks(dir)) { Path target = dir.resolve("doesnotexist"); - Path link = dir.resolve("link").createSymbolicLink(target); + Path link = dir.resolve("link"); + Files.createSymbolicLink(link, target); try { test(link, NOFOLLOW_LINKS); } catch (IOException x) { // access to attributes of sym link may not be supported } finally { - link.delete(); + Files.delete(link); } } // misc. tests try { - file = dir.resolve("foo.txt").createFile(); + file = dir.resolve("foo.txt"); + Files.createFile(file); miscTests(dir); } finally { - file.delete(); + Files.delete(file); } } finally { diff --git a/jdk/test/java/nio/file/spi/SetDefaultProvider.java b/jdk/test/java/nio/file/spi/SetDefaultProvider.java index 7852edb717d..e21be72985a 100644 --- a/jdk/test/java/nio/file/spi/SetDefaultProvider.java +++ b/jdk/test/java/nio/file/spi/SetDefaultProvider.java @@ -22,14 +22,13 @@ */ /* @test - * @bug 4313887 + * @bug 4313887 7006126 * @summary Unit test for java.nio.file.spi.FileSystemProvider * @build TestProvider SetDefaultProvider * @run main/othervm -Djava.nio.file.spi.DefaultFileSystemProvider=TestProvider SetDefaultProvider */ import java.nio.file.*; -import java.nio.file.spi.*; public class SetDefaultProvider { public static void main(String[] args) throws Exception { diff --git a/jdk/test/java/nio/file/spi/TestProvider.java b/jdk/test/java/nio/file/spi/TestProvider.java index 248b568858f..a604b6dfe7e 100644 --- a/jdk/test/java/nio/file/spi/TestProvider.java +++ b/jdk/test/java/nio/file/spi/TestProvider.java @@ -24,6 +24,7 @@ import java.nio.file.spi.FileSystemProvider; import java.nio.file.*; import java.nio.file.attribute.*; +import java.nio.channels.SeekableByteChannel; import java.net.URI; import java.util.*; import java.io.IOException; @@ -34,7 +35,6 @@ public class TestProvider extends FileSystemProvider { public TestProvider(FileSystemProvider defaultProvider) { theFileSystem = new TestFileSystem(this); - } @Override @@ -57,6 +57,124 @@ public class TestProvider extends FileSystemProvider { throw new RuntimeException("not implemented"); } + @Override + public void setAttribute(Path file, String attribute, Object value, + LinkOption... options) + throws IOException + { + throw new RuntimeException("not implemented"); + } + + @Override + public Map readAttributes(Path file, String attributes, + LinkOption... options) + throws IOException + { + throw new RuntimeException("not implemented"); + } + + @Override + public A readAttributes(Path file, + Class type, + LinkOption... options) + throws IOException + { + throw new RuntimeException("not implemented"); + } + + @Override + public V getFileAttributeView(Path file, + Class type, + LinkOption... options) + { + throw new RuntimeException("not implemented"); + } + + + @Override + public void delete(Path file) throws IOException { + throw new RuntimeException("not implemented"); + } + + @Override + public void createSymbolicLink(Path link, Path target, FileAttribute... attrs) + throws IOException + { + throw new RuntimeException("not implemented"); + } + + @Override + public void createLink(Path link, Path existing) throws IOException { + throw new RuntimeException("not implemented"); + } + + @Override + public Path readSymbolicLink(Path link) throws IOException { + throw new RuntimeException("not implemented"); + } + + + @Override + public void copy(Path source, Path target, CopyOption... options) + throws IOException + { + throw new RuntimeException("not implemented"); + } + + @Override + public void move(Path source, Path target, CopyOption... options) + throws IOException + { + throw new RuntimeException("not implemented"); + } + + @Override + public DirectoryStream newDirectoryStream(Path dir, + DirectoryStream.Filter filter) + throws IOException + { + throw new RuntimeException("not implemented"); + } + + @Override + public void createDirectory(Path dir, FileAttribute... attrs) + throws IOException + { + throw new RuntimeException("not implemented"); + } + + @Override + public SeekableByteChannel newByteChannel(Path file, + Set options, + FileAttribute... attrs) + throws IOException + { + throw new RuntimeException("not implemented"); + } + + + @Override + public boolean isHidden(Path file) throws IOException { + throw new RuntimeException("not implemented"); + } + + @Override + public FileStore getFileStore(Path file) throws IOException { + throw new RuntimeException("not implemented"); + } + + @Override + public boolean isSameFile(Path file, Path other) throws IOException { + throw new RuntimeException("not implemented"); + } + + @Override + public void checkAccess(Path file, AccessMode... modes) + throws IOException + { + throw new RuntimeException("not implemented"); + } + static class TestFileSystem extends FileSystem { private final TestProvider provider; @@ -105,7 +223,7 @@ public class TestProvider extends FileSystemProvider { } @Override - public Path getPath(String path) { + public Path getPath(String first, String... more) { throw new RuntimeException("not implemented"); } @@ -124,5 +242,4 @@ public class TestProvider extends FileSystemProvider { throw new RuntimeException("not implemented"); } } - } diff --git a/jdk/test/java/util/Arrays/Sorting.java b/jdk/test/java/util/Arrays/Sorting.java index a2c4ed98e04..9eac7989e12 100644 --- a/jdk/test/java/util/Arrays/Sorting.java +++ b/jdk/test/java/util/Arrays/Sorting.java @@ -23,7 +23,7 @@ /* * @test - * @bug 6880672 6896573 6899694 6976036 + * @bug 6880672 6896573 6899694 6976036 7013585 7018258 * @summary Exercise Arrays.sort * @build Sorting * @run main Sorting -shortrun @@ -66,7 +66,7 @@ public class Sorting { } long end = System.currentTimeMillis(); - out.format("\nPASSED in %d sec.\n", Math.round((end - start) / 1E3)); + out.format("PASSED in %d sec.\n", Math.round((end - start) / 1E3)); } private static void testAndCheck(int[] lengths, long[] randoms) { @@ -78,46 +78,19 @@ public class Sorting { testEmptyAndNullFloatArray(); testEmptyAndNullDoubleArray(); - for (long random : randoms) { - reset(random); - + for (int length : lengths) { + testMergeSort(length); + testAndCheckRange(length); + testAndCheckSubArray(length); + } + for (long seed : randoms) { for (int length : lengths) { - testAndCheckWithInsertionSort(length, random); - } - reset(random); - - for (int length : lengths) { - testAndCheckWithCheckSum(length, random); - } - reset(random); - - for (int length : lengths) { - testAndCheckWithScrambling(length, random); - } - reset(random); - - for (int length : lengths) { - testAndCheckFloat(length, random); - } - reset(random); - - for (int length : lengths) { - testAndCheckDouble(length, random); - } - reset(random); - - for (int length : lengths) { - testAndCheckRange(length, random); - } - reset(random); - - for (int length : lengths) { - testAndCheckSubArray(length, random); - } - reset(random); - - for (int length : lengths) { - testStable(length, random); + testAndCheckWithInsertionSort(length, new MyRandom(seed)); + testAndCheckWithCheckSum(length, new MyRandom(seed)); + testAndCheckWithScrambling(length, new MyRandom(seed)); + testAndCheckFloat(length, new MyRandom(seed)); + testAndCheckDouble(length, new MyRandom(seed)); + testStable(length, new MyRandom(seed)); } } } @@ -255,7 +228,7 @@ public class Sorting { failed("Arrays.sort(double[]) shouldn't catch null array"); } - private static void testAndCheckSubArray(int length, long random) { + private static void testAndCheckSubArray(int length) { ourDescription = "Check sorting of subarray"; int[] golden = new int[length]; boolean newLine = false; @@ -282,7 +255,7 @@ public class Sorting { } } - private static void testAndCheckRange(int length, long random) { + private static void testAndCheckRange(int length) { ourDescription = "Check range check"; int[] golden = new int[length]; @@ -300,15 +273,16 @@ public class Sorting { out.println(); } - private static void testStable(int length, long random) { + private static void testStable(int length, MyRandom random) { ourDescription = "Check if sorting is stable"; - Pair[] a = build(length); + Pair[] a = build(length, random); - out.println("Test 'stable': " + "random = " + random + + out.println("Test 'stable': " + "random = " + random.getSeed() + ", length = " + length); Arrays.sort(a); checkSorted(a); checkStable(a); + out.println(); } private static void checkSorted(Pair[] a) { @@ -342,11 +316,11 @@ public class Sorting { } } - private static Pair[] build(int length) { + private static Pair[] build(int length, Random random) { Pair[] a = new Pair[length * 4]; for (int i = 0; i < a.length; ) { - int key = ourRandom.nextInt(); + int key = random.nextInt(); a[i++] = new Pair(key, 1); a[i++] = new Pair(key, 2); a[i++] = new Pair(key, 3); @@ -389,7 +363,7 @@ public class Sorting { } - private static void testAndCheckWithInsertionSort(int length, long random) { + private static void testAndCheckWithInsertionSort(int length, MyRandom random) { if (length > 1000) { return; } @@ -398,13 +372,13 @@ public class Sorting { for (int m = 1; m < 2 * length; m *= 2) { for (UnsortedBuilder builder : UnsortedBuilder.values()) { - builder.build(golden, m); + builder.build(golden, m, random); int[] test = golden.clone(); for (TypeConverter converter : TypeConverter.values()) { - out.println("Test 'insertion sort': " + converter + " " + - builder + "random = " + random + ", length = " + - length + ", m = " + m); + out.println("Test 'insertion sort': " + converter + + " " + builder + "random = " + random.getSeed() + + ", length = " + length + ", m = " + m); Object convertedGolden = converter.convert(golden); Object convertedTest1 = converter.convert(test); Object convertedTest2 = converter.convert(test); @@ -417,19 +391,44 @@ public class Sorting { out.println(); } - private static void testAndCheckWithCheckSum(int length, long random) { + private static void testMergeSort(int length) { + if (length < 1000) { + return; + } + ourDescription = "Check merge sorting"; + int[] golden = new int[length]; + int period = 67; // java.util.DualPivotQuicksort.MAX_RUN_COUNT + + for (int m = period - 2; m <= period + 2; m++) { + for (MergeBuilder builder : MergeBuilder.values()) { + builder.build(golden, m); + int[] test = golden.clone(); + + for (TypeConverter converter : TypeConverter.values()) { + out.println("Test 'merge sort': " + converter + " " + + builder + "length = " + length + ", m = " + m); + Object convertedGolden = converter.convert(golden); + sort(convertedGolden); + checkSorted(convertedGolden); + } + } + } + out.println(); + } + + private static void testAndCheckWithCheckSum(int length, MyRandom random) { ourDescription = "Check sorting with check sum"; int[] golden = new int[length]; for (int m = 1; m < 2 * length; m *= 2) { for (UnsortedBuilder builder : UnsortedBuilder.values()) { - builder.build(golden, m); + builder.build(golden, m, random); int[] test = golden.clone(); for (TypeConverter converter : TypeConverter.values()) { - out.println("Test 'check sum': " + converter + " " + - builder + "random = " + random + ", length = " + - length + ", m = " + m); + out.println("Test 'check sum': " + converter + + " " + builder + "random = " + random.getSeed() + + ", length = " + length + ", m = " + m); Object convertedGolden = converter.convert(golden); Object convertedTest = converter.convert(test); sort(convertedTest); @@ -440,7 +439,7 @@ public class Sorting { out.println(); } - private static void testAndCheckWithScrambling(int length, long random) { + private static void testAndCheckWithScrambling(int length, MyRandom random) { ourDescription = "Check sorting with scrambling"; int[] golden = new int[length]; @@ -451,12 +450,12 @@ public class Sorting { for (SortedBuilder builder : SortedBuilder.values()) { builder.build(golden, m); int[] test = golden.clone(); - scramble(test); + scramble(test, random); for (TypeConverter converter : TypeConverter.values()) { - out.println("Test 'scrambling': " + converter + " " + - builder + "random = " + random + ", length = " + - length + ", m = " + m); + out.println("Test 'scrambling': " + converter + + " " + builder + "random = " + random.getSeed() + + ", length = " + length + ", m = " + m); Object convertedGolden = converter.convert(golden); Object convertedTest = converter.convert(test); sort(convertedTest); @@ -467,7 +466,7 @@ public class Sorting { out.println(); } - private static void testAndCheckFloat(int length, long random) { + private static void testAndCheckFloat(int length, MyRandom random) { ourDescription = "Check float sorting"; float[] golden = new float[length]; final int MAX = 10; @@ -485,13 +484,12 @@ public class Sorting { continue; } for (FloatBuilder builder : FloatBuilder.values()) { - out.println("Test 'float': random = " + random + - ", length = " + length + ", a = " + a + - ", g = " + g + ", z = " + z + ", n = " + n + - ", p = " + p); - builder.build(golden, a, g, z, n, p); + out.println("Test 'float': random = " + random.getSeed() + + ", length = " + length + ", a = " + a + ", g = " + + g + ", z = " + z + ", n = " + n + ", p = " + p); + builder.build(golden, a, g, z, n, p, random); float[] test = golden.clone(); - scramble(test); + scramble(test, random); sort(test); compare(test, golden, a, n, g); } @@ -506,7 +504,7 @@ public class Sorting { } } - private static void testAndCheckDouble(int length, long random) { + private static void testAndCheckDouble(int length, MyRandom random) { ourDescription = "Check double sorting"; double[] golden = new double[length]; final int MAX = 10; @@ -524,12 +522,12 @@ public class Sorting { continue; } for (DoubleBuilder builder : DoubleBuilder.values()) { - out.println("Test 'double': random = " + random + + out.println("Test 'double': random = " + random.getSeed() + ", length = " + length + ", a = " + a + ", g = " + g + ", z = " + z + ", n = " + n + ", p = " + p); - builder.build(golden, a, g, z, n, p); + builder.build(golden, a, g, z, n, p, random); double[] test = golden.clone(); - scramble(test); + scramble(test, random); sort(test); compare(test, golden, a, n, g); } @@ -546,31 +544,37 @@ public class Sorting { private static void prepareSubArray(int[] a, int fromIndex, int toIndex, int m) { for (int i = 0; i < fromIndex; i++) { - a[i] = 0xBABA; - } - for (int i = fromIndex; i < toIndex; i++) { - a[i] = -i + m; - } - for (int i = toIndex; i < a.length; i++) { a[i] = 0xDEDA; } - } + int middle = (fromIndex + toIndex) >>> 1; + int k = 0; - private static void scramble(int[] a) { - for (int i = 0; i < a.length * 7; i++) { - swap(a, ourRandom.nextInt(a.length), ourRandom.nextInt(a.length)); + for (int i = fromIndex; i < middle; i++) { + a[i] = k++; + } + for (int i = middle; i < toIndex; i++) { + a[i] = k--; + } + for (int i = toIndex; i < a.length; i++) { + a[i] = 0xBABA; } } - private static void scramble(float[] a) { + private static void scramble(int[] a, Random random) { for (int i = 0; i < a.length * 7; i++) { - swap(a, ourRandom.nextInt(a.length), ourRandom.nextInt(a.length)); + swap(a, random.nextInt(a.length), random.nextInt(a.length)); } } - private static void scramble(double[] a) { + private static void scramble(float[] a, Random random) { for (int i = 0; i < a.length * 7; i++) { - swap(a, ourRandom.nextInt(a.length), ourRandom.nextInt(a.length)); + swap(a, random.nextInt(a.length), random.nextInt(a.length)); + } + } + + private static void scramble(double[] a, Random random) { + for (int i = 0; i < a.length * 7; i++) { + swap(a, random.nextInt(a.length), random.nextInt(a.length)); } } @@ -683,10 +687,10 @@ public class Sorting { private static enum FloatBuilder { SIMPLE { - void build(float[] x, int a, int g, int z, int n, int p) { + void build(float[] x, int a, int g, int z, int n, int p, Random random) { int fromIndex = 0; - float negativeValue = -ourRandom.nextFloat(); - float positiveValue = ourRandom.nextFloat(); + float negativeValue = -random.nextFloat(); + float positiveValue = random.nextFloat(); writeValue(x, negativeValue, fromIndex, n); fromIndex += n; @@ -704,15 +708,15 @@ public class Sorting { } }; - abstract void build(float[] x, int a, int g, int z, int n, int p); + abstract void build(float[] x, int a, int g, int z, int n, int p, Random random); } private static enum DoubleBuilder { SIMPLE { - void build(double[] x, int a, int g, int z, int n, int p) { + void build(double[] x, int a, int g, int z, int n, int p, Random random) { int fromIndex = 0; - double negativeValue = -ourRandom.nextFloat(); - double positiveValue = ourRandom.nextFloat(); + double negativeValue = -random.nextFloat(); + double positiveValue = random.nextFloat(); writeValue(x, negativeValue, fromIndex, n); fromIndex += n; @@ -730,7 +734,7 @@ public class Sorting { } }; - abstract void build(double[] x, int a, int g, int z, int n, int p); + abstract void build(double[] x, int a, int g, int z, int n, int p, Random random); } private static void writeValue(float[] a, float value, int fromIndex, int count) { @@ -806,7 +810,6 @@ public class Sorting { } } }, - ORGAN_PIPES { void build(int[] a, int m) { int i = 0; @@ -835,37 +838,85 @@ public class Sorting { } } + private static enum MergeBuilder { + ASCENDING { + void build(int[] a, int m) { + int period = a.length / m; + int v = 1, i = 0; + + for (int k = 0; k < m; k++) { + v = 1; + for (int p = 0; p < period; p++) { + a[i++] = v++; + } + } + for (int j = i; j < a.length - 1; j++) { + a[j] = v++; + } + a[a.length - 1] = 0; + } + }, + DESCENDING { + void build(int[] a, int m) { + int period = a.length / m; + int v = -1, i = 0; + + for (int k = 0; k < m; k++) { + v = -1; + for (int p = 0; p < period; p++) { + a[i++] = v--; + } + } + for (int j = i; j < a.length - 1; j++) { + a[j] = v--; + } + a[a.length - 1] = 0; + } + }; + + abstract void build(int[] a, int m); + + @Override public String toString() { + String name = name(); + + for (int i = name.length(); i < 12; i++) { + name += " "; + } + return name; + } + } + private static enum UnsortedBuilder { RANDOM { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { for (int i = 0; i < a.length; i++) { - a[i] = ourRandom.nextInt(); + a[i] = random.nextInt(); } } }, ASCENDING { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { for (int i = 0; i < a.length; i++) { a[i] = m + i; } } }, DESCENDING { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { for (int i = 0; i < a.length; i++) { a[i] = a.length - m - i; } } }, ALL_EQUAL { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { for (int i = 0; i < a.length; i++) { a[i] = m; } } }, SAW { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { int incCount = 1; int decCount = a.length; int i = 0; @@ -891,21 +942,21 @@ public class Sorting { } }, REPEATED { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { for (int i = 0; i < a.length; i++) { a[i] = i % m; } } }, DUPLICATED { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { for (int i = 0; i < a.length; i++) { - a[i] = ourRandom.nextInt(m); + a[i] = random.nextInt(m); } } }, ORGAN_PIPES { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { int middle = a.length / (m + 1); for (int i = 0; i < middle; i++) { @@ -917,28 +968,29 @@ public class Sorting { } }, STAGGER { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { for (int i = 0; i < a.length; i++) { a[i] = (i * m + i) % a.length; } } }, PLATEAU { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { for (int i = 0; i < a.length; i++) { a[i] = Math.min(i, m); } } }, SHUFFLE { - void build(int[] a, int m) { + void build(int[] a, int m, Random random) { + int x = 0, y = 0; for (int i = 0; i < a.length; i++) { - a[i] = ourRandom.nextBoolean() ? (ourFirst += 2) : (ourSecond += 2); + a[i] = random.nextBoolean() ? (x += 2) : (y += 2); } } }; - abstract void build(int[] a, int m); + abstract void build(int[] a, int m, Random random); @Override public String toString() { String name = name(); @@ -1518,9 +1570,9 @@ public class Sorting { private static void checkSubArray(Integer[] a, int fromIndex, int toIndex, int m) { for (int i = 0; i < fromIndex; i++) { - if (a[i].intValue() != 0xBABA) { + if (a[i].intValue() != 0xDEDA) { failed("Range sort changes left element on position " + i + - ": " + a[i] + ", must be " + 0xBABA); + ": " + a[i] + ", must be " + 0xDEDA); } } @@ -1531,18 +1583,18 @@ public class Sorting { } for (int i = toIndex; i < a.length; i++) { - if (a[i].intValue() != 0xDEDA) { + if (a[i].intValue() != 0xBABA) { failed("Range sort changes right element on position " + i + - ": " + a[i] + ", must be " + 0xDEDA); + ": " + a[i] + ", must be " + 0xBABA); } } } private static void checkSubArray(int[] a, int fromIndex, int toIndex, int m) { for (int i = 0; i < fromIndex; i++) { - if (a[i] != 0xBABA) { + if (a[i] != 0xDEDA) { failed("Range sort changes left element on position " + i + - ": " + a[i] + ", must be " + 0xBABA); + ": " + a[i] + ", must be " + 0xDEDA); } } @@ -1553,18 +1605,18 @@ public class Sorting { } for (int i = toIndex; i < a.length; i++) { - if (a[i] != 0xDEDA) { + if (a[i] != 0xBABA) { failed("Range sort changes right element on position " + i + - ": " + a[i] + ", must be " + 0xDEDA); + ": " + a[i] + ", must be " + 0xBABA); } } } private static void checkSubArray(byte[] a, int fromIndex, int toIndex, int m) { for (int i = 0; i < fromIndex; i++) { - if (a[i] != (byte) 0xBABA) { + if (a[i] != (byte) 0xDEDA) { failed("Range sort changes left element on position " + i + - ": " + a[i] + ", must be " + 0xBABA); + ": " + a[i] + ", must be " + 0xDEDA); } } @@ -1575,18 +1627,18 @@ public class Sorting { } for (int i = toIndex; i < a.length; i++) { - if (a[i] != (byte) 0xDEDA) { + if (a[i] != (byte) 0xBABA) { failed("Range sort changes right element on position " + i + - ": " + a[i] + ", must be " + 0xDEDA); + ": " + a[i] + ", must be " + 0xBABA); } } } private static void checkSubArray(long[] a, int fromIndex, int toIndex, int m) { for (int i = 0; i < fromIndex; i++) { - if (a[i] != (long) 0xBABA) { + if (a[i] != (long) 0xDEDA) { failed("Range sort changes left element on position " + i + - ": " + a[i] + ", must be " + 0xBABA); + ": " + a[i] + ", must be " + 0xDEDA); } } @@ -1597,18 +1649,18 @@ public class Sorting { } for (int i = toIndex; i < a.length; i++) { - if (a[i] != (long) 0xDEDA) { + if (a[i] != (long) 0xBABA) { failed("Range sort changes right element on position " + i + - ": " + a[i] + ", must be " + 0xDEDA); + ": " + a[i] + ", must be " + 0xBABA); } } } private static void checkSubArray(char[] a, int fromIndex, int toIndex, int m) { for (int i = 0; i < fromIndex; i++) { - if (a[i] != (char) 0xBABA) { + if (a[i] != (char) 0xDEDA) { failed("Range sort changes left element on position " + i + - ": " + a[i] + ", must be " + 0xBABA); + ": " + a[i] + ", must be " + 0xDEDA); } } @@ -1619,18 +1671,18 @@ public class Sorting { } for (int i = toIndex; i < a.length; i++) { - if (a[i] != (char) 0xDEDA) { + if (a[i] != (char) 0xBABA) { failed("Range sort changes right element on position " + i + - ": " + a[i] + ", must be " + 0xDEDA); + ": " + a[i] + ", must be " + 0xBABA); } } } private static void checkSubArray(short[] a, int fromIndex, int toIndex, int m) { for (int i = 0; i < fromIndex; i++) { - if (a[i] != (short) 0xBABA) { + if (a[i] != (short) 0xDEDA) { failed("Range sort changes left element on position " + i + - ": " + a[i] + ", must be " + 0xBABA); + ": " + a[i] + ", must be " + 0xDEDA); } } @@ -1641,18 +1693,18 @@ public class Sorting { } for (int i = toIndex; i < a.length; i++) { - if (a[i] != (short) 0xDEDA) { + if (a[i] != (short) 0xBABA) { failed("Range sort changes right element on position " + i + - ": " + a[i] + ", must be " + 0xDEDA); + ": " + a[i] + ", must be " + 0xBABA); } } } private static void checkSubArray(float[] a, int fromIndex, int toIndex, int m) { for (int i = 0; i < fromIndex; i++) { - if (a[i] != (float) 0xBABA) { + if (a[i] != (float) 0xDEDA) { failed("Range sort changes left element on position " + i + - ": " + a[i] + ", must be " + 0xBABA); + ": " + a[i] + ", must be " + 0xDEDA); } } @@ -1663,18 +1715,18 @@ public class Sorting { } for (int i = toIndex; i < a.length; i++) { - if (a[i] != (float) 0xDEDA) { + if (a[i] != (float) 0xBABA) { failed("Range sort changes right element on position " + i + - ": " + a[i] + ", must be " + 0xDEDA); + ": " + a[i] + ", must be " + 0xBABA); } } } private static void checkSubArray(double[] a, int fromIndex, int toIndex, int m) { for (int i = 0; i < fromIndex; i++) { - if (a[i] != (double) 0xBABA) { + if (a[i] != (double) 0xDEDA) { failed("Range sort changes left element on position " + i + - ": " + a[i] + ", must be " + 0xBABA); + ": " + a[i] + ", must be " + 0xDEDA); } } @@ -1685,9 +1737,9 @@ public class Sorting { } for (int i = toIndex; i < a.length; i++) { - if (a[i] != (double) 0xDEDA) { + if (a[i] != (double) 0xBABA) { failed("Range sort changes right element on position " + i + - ": " + a[i] + ", must be " + 0xDEDA); + ": " + a[i] + ", must be " + 0xBABA); } } } @@ -1947,18 +1999,6 @@ public class Sorting { } } - private static void prepareRandom(int[] a) { - for (int i = 0; i < a.length; i++) { - a[i] = ourRandom.nextInt(); - } - } - - private static void reset(long seed) { - ourRandom = new Random(seed); - ourFirst = 0; - ourSecond = 0; - } - private static void outArray(Object[] a) { for (int i = 0; i < a.length; i++) { out.print(a[i] + " "); @@ -1987,8 +2027,18 @@ public class Sorting { out.println(); } - private static int ourFirst; - private static int ourSecond; - private static Random ourRandom; + private static class MyRandom extends Random { + MyRandom(long seed) { + super(seed); + mySeed = seed; + } + + long getSeed() { + return mySeed; + } + + private long mySeed; + } + private static String ourDescription; } diff --git a/jdk/test/java/util/Locale/LocaleEnhanceTest.java b/jdk/test/java/util/Locale/LocaleEnhanceTest.java index f7ed5ab3dfb..5d816bc2eee 100644 --- a/jdk/test/java/util/Locale/LocaleEnhanceTest.java +++ b/jdk/test/java/util/Locale/LocaleEnhanceTest.java @@ -478,6 +478,23 @@ public class LocaleEnhanceTest extends LocaleTestFmwk { Locale locale = new Locale(test[0], test[1], test[2]); assertEquals("case " + i, test[3], locale.toLanguageTag()); } + + // test locales created from forLanguageTag + String[][] tests1 = { + // case is normalized during the round trip + { "EN-us", "en-US" }, + { "en-Latn-US", "en-Latn-US" }, + // reordering Unicode locale extensions + { "de-u-co-phonebk-ca-gregory", "de-u-ca-gregory-co-phonebk" }, + // private use only language tag is preserved (no extra "und") + { "x-elmer", "x-elmer" }, + { "x-lvariant-JP", "x-lvariant-JP" }, + }; + for (String[] test : tests1) { + Locale locale = Locale.forLanguageTag(test[0]); + assertEquals("case " + test[0], test[1], locale.toLanguageTag()); + } + } public void testForLanguageTag() { @@ -488,9 +505,9 @@ public class LocaleEnhanceTest extends LocaleTestFmwk { String[][] tests = { // private use tags only - { "x-abc", "und-x-abc" }, - { "x-a-b-c", "und-x-a-b-c" }, - { "x-a-12345678", "und-x-a-12345678" }, + { "x-abc", "x-abc" }, + { "x-a-b-c", "x-a-b-c" }, + { "x-a-12345678", "x-a-12345678" }, // grandfathered tags with preferred mappings { "i-ami", "ami" }, @@ -517,7 +534,7 @@ public class LocaleEnhanceTest extends LocaleTestFmwk { // grandfathered irregular tags, no preferred mappings, drop illegal fields // from end. If no subtag is mappable, fallback to 'und' { "i-default", "en-x-i-default" }, - { "i-enochian", "und-x-i-enochian" }, + { "i-enochian", "x-i-enochian" }, { "i-mingo", "see-x-i-mingo" }, { "en-GB-oed", "en-GB-x-oed" }, { "zh-min", "nan-x-zh-min" }, diff --git a/jdk/test/java/util/Objects/BasicObjectsTest.java b/jdk/test/java/util/Objects/BasicObjectsTest.java index 7584d2cffc2..bf025a8ad2c 100644 --- a/jdk/test/java/util/Objects/BasicObjectsTest.java +++ b/jdk/test/java/util/Objects/BasicObjectsTest.java @@ -164,7 +164,7 @@ public class BasicObjectsTest { // Test 1-arg variant try { - s = Objects.nonNull("pants"); + s = Objects.requireNonNull("pants"); if (s != "pants") { System.err.printf("1-arg non-null failed to return its arg"); errors++; @@ -175,7 +175,7 @@ public class BasicObjectsTest { } try { - s = Objects.nonNull(null); + s = Objects.requireNonNull(null); System.err.printf("1-arg nonNull failed to throw NPE"); errors++; } catch (NullPointerException e) { @@ -184,7 +184,7 @@ public class BasicObjectsTest { // Test 2-arg variant try { - s = Objects.nonNull("pants", "trousers"); + s = Objects.requireNonNull("pants", "trousers"); if (s != "pants") { System.err.printf("2-arg nonNull failed to return its arg"); errors++; @@ -195,7 +195,7 @@ public class BasicObjectsTest { } try { - s = Objects.nonNull(null, "pantaloons"); + s = Objects.requireNonNull(null, "pantaloons"); System.err.printf("2-arg nonNull failed to throw NPE"); errors++; } catch (NullPointerException e) { diff --git a/jdk/test/java/util/regex/RegExTest.java b/jdk/test/java/util/regex/RegExTest.java index 0e8470c4c11..e323066c3a2 100644 --- a/jdk/test/java/util/regex/RegExTest.java +++ b/jdk/test/java/util/regex/RegExTest.java @@ -32,7 +32,7 @@ * 4872664 4803179 4892980 4900747 4945394 4938995 4979006 4994840 4997476 * 5013885 5003322 4988891 5098443 5110268 6173522 4829857 5027748 6376940 * 6358731 6178785 6284152 6231989 6497148 6486934 6233084 6504326 6635133 - * 6350801 6676425 6878475 6919132 6931676 6948903 + * 6350801 6676425 6878475 6919132 6931676 6948903 7014645 */ import java.util.regex.*; @@ -136,6 +136,7 @@ public class RegExTest { namedGroupCaptureTest(); nonBmpClassComplementTest(); unicodePropertiesTest(); + unicodeHexNotationTest(); if (failure) throw new RuntimeException("Failure in the RE handling."); else @@ -161,18 +162,19 @@ public class RegExTest { private static void check(Matcher m, String result, boolean expected) { m.find(); - if (m.group().equals(result)) - failCount += (expected) ? 0 : 1; - else - failCount += (expected) ? 1 : 0; + if (m.group().equals(result) != expected) + failCount++; } private static void check(Pattern p, String s, boolean expected) { - Matcher matcher = p.matcher(s); - if (matcher.find()) - failCount += (expected) ? 0 : 1; - else - failCount += (expected) ? 1 : 0; + if (p.matcher(s).find() != expected) + failCount++; + } + + private static void check(String p, String s, boolean expected) { + Matcher matcher = Pattern.compile(p).matcher(s); + if (matcher.find() != expected) + failCount++; } private static void check(String p, char c, boolean expected) { @@ -3614,4 +3616,45 @@ public class RegExTest { } report("unicodeProperties"); } + + private static void unicodeHexNotationTest() throws Exception { + + // negative + checkExpectedFail("\\x{-23}"); + checkExpectedFail("\\x{110000}"); + checkExpectedFail("\\x{}"); + checkExpectedFail("\\x{AB[ef]"); + + // codepoint + check("^\\x{1033c}$", "\uD800\uDF3C", true); + check("^\\xF0\\x90\\x8C\\xBC$", "\uD800\uDF3C", false); + check("^\\x{D800}\\x{DF3c}+$", "\uD800\uDF3C", false); + check("^\\xF0\\x90\\x8C\\xBC$", "\uD800\uDF3C", false); + + // in class + check("^[\\x{D800}\\x{DF3c}]+$", "\uD800\uDF3C", false); + check("^[\\xF0\\x90\\x8C\\xBC]+$", "\uD800\uDF3C", false); + check("^[\\x{D800}\\x{DF3C}]+$", "\uD800\uDF3C", false); + check("^[\\x{DF3C}\\x{D800}]+$", "\uD800\uDF3C", false); + check("^[\\x{D800}\\x{DF3C}]+$", "\uDF3C\uD800", true); + check("^[\\x{DF3C}\\x{D800}]+$", "\uDF3C\uD800", true); + + for (int cp = 0; cp <= 0x10FFFF; cp++) { + String s = "A" + new String(Character.toChars(cp)) + "B"; + String hexUTF16 = (cp <= 0xFFFF)? String.format("\\u%04x", cp) + : String.format("\\u%04x\\u%04x", + (int) Character.toChars(cp)[0], + (int) Character.toChars(cp)[1]); + String hexCodePoint = "\\x{" + Integer.toHexString(cp) + "}"; + if (!Pattern.matches("A" + hexUTF16 + "B", s)) + failCount++; + if (!Pattern.matches("A[" + hexUTF16 + "]B", s)) + failCount++; + if (!Pattern.matches("A" + hexCodePoint + "B", s)) + failCount++; + if (!Pattern.matches("A[" + hexCodePoint + "]B", s)) + failCount++; + } + report("unicodeHexNotation"); + } } diff --git a/jdk/test/javax/script/CauseExceptionTest.java b/jdk/test/javax/script/CauseExceptionTest.java index 535717609e9..f1ff708bc1e 100644 --- a/jdk/test/javax/script/CauseExceptionTest.java +++ b/jdk/test/javax/script/CauseExceptionTest.java @@ -34,6 +34,10 @@ public class CauseExceptionTest { public static void main(String[] args) throws ScriptException, NoSuchMethodException { ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine engine = sem.getEngineByName("js"); + if (engine == null) { + System.out.println("Warning: No js engine found; test vacuously passes."); + return; + } engine.eval("function hello_world() { println('hello world'); throw 'out of here'; } "); Invocable invocable = (Invocable) engine; try { diff --git a/jdk/test/javax/script/StringWriterPrintTest.java b/jdk/test/javax/script/StringWriterPrintTest.java index 65b401ce637..42345791878 100644 --- a/jdk/test/javax/script/StringWriterPrintTest.java +++ b/jdk/test/javax/script/StringWriterPrintTest.java @@ -34,6 +34,10 @@ public class StringWriterPrintTest { public static void main(String[] args) throws ScriptException { ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine engine = sem.getEngineByName("js"); + if (engine == null) { + System.out.println("Warning: No js engine found; test vacuously passes."); + return; + } StringWriter sw = new StringWriter(); engine.eval("print(\"hello world 1\\n\")"); engine.getContext().setWriter(sw); diff --git a/jdk/test/javax/script/UnescapedBracketRegExTest.java b/jdk/test/javax/script/UnescapedBracketRegExTest.java index d444ec74aaa..f2a807065f7 100644 --- a/jdk/test/javax/script/UnescapedBracketRegExTest.java +++ b/jdk/test/javax/script/UnescapedBracketRegExTest.java @@ -34,6 +34,10 @@ public class UnescapedBracketRegExTest { public static void main(String[] args) throws ScriptException { ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine engine = sem.getEngineByName("js"); + if (engine == null) { + System.out.println("Warning: No js engine found; test vacuously passes."); + return; + } // the following throws exception engine.eval("var x = /[a-zA-Z+/=]/;"); } diff --git a/jdk/test/javax/swing/RepaintManager/7013453/bug7013453.java b/jdk/test/javax/swing/RepaintManager/7013453/bug7013453.java new file mode 100644 index 00000000000..2314e3d749b --- /dev/null +++ b/jdk/test/javax/swing/RepaintManager/7013453/bug7013453.java @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2011, 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 7013453 + @summary BufferStrategyPaintManager.dispose will cause IllegalMonitorStateException in event thread + @author Pavel Porvatov +*/ + +import javax.swing.*; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +public class bug7013453 { + public static void main(String[] args) throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + try { + Method getPaintManagerMethod = RepaintManager.class.getDeclaredMethod("getPaintManager"); + + getPaintManagerMethod.setAccessible(true); + + final Object paintManager = getPaintManagerMethod.invoke(RepaintManager.currentManager(new JLabel())); + + String paintManagerName = paintManager.getClass().getCanonicalName(); + + if (!paintManagerName.equals("javax.swing.BufferStrategyPaintManager")) { + System.out.println("The test is not suitable for the " + paintManagerName + + " paint manager. The test skipped."); + + return; + } + + final Field showingField = paintManager.getClass().getDeclaredField("showing"); + + showingField.setAccessible(true); + + synchronized (paintManager) { + showingField.setBoolean(paintManager, true); + } + + // Postpone reset the showing field + Thread thread = new Thread(new Runnable() { + public void run() { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + synchronized (paintManager) { + try { + showingField.setBoolean(paintManager, false); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + } + }); + + thread.start(); + + Method disposeMethod = paintManager.getClass().getDeclaredMethod("dispose"); + + disposeMethod.setAccessible(true); + + disposeMethod.invoke(paintManager); + + System.out.println("The test passed."); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } catch (NoSuchFieldException e) { + throw new RuntimeException(e); + } + } + }); + } +} diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java b/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java new file mode 100644 index 00000000000..27b1f3f51d7 --- /dev/null +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java @@ -0,0 +1,464 @@ +/* + * Copyright (c) 2011, 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 6887710 + * @summary Verify the impact of sun.misc.JarIndex.metaInfFilenames on Service loaders + * @run main/othervm Basic + */ + +import java.io.IOException; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.InetSocketAddress; +import java.net.URI; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.Arrays; +import java.util.Iterator; +import java.util.ServiceLoader; +import com.sun.net.httpserver.Headers; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpServer; + +/** + * Verifies the impact of sun.misc.JarIndex.metaInfFilenames on service loaders + * (sun.misc.Service & java.util.ServiceLoader), as well as finding resources + * through Class.getResouce. + * + * 1) Compile the test sources: + * jarA: + * META-INF/services/my.happy.land + * com/message/spi/MessageService.java + * a/A.java + * jarB: + * META-INF/JAVA2.DS + * META-INF/services/no.name.service + * b/B.java + * jarC: + * META-INF/fonts.mf + * META-INF/fonts/Company-corporate.ttf + * META-INF/fonts/kidpr.ttf + * META-INF/services/com.message.spi.MessageService + * my/impl/StandardMessageService.java + * + * 2) Build three jar files a.jar, b.jar, c.jar + * + * 3) Create an index in a.jar (jar -i a.jar b.jar c.jar) + * with sun.misc.JarIndex.metaInfFilenames=true + * + * 4) Start a HTTP server serving out the three jars. + * + * The test then tries to locate services/resources within the jars using + * URLClassLoader. Each request to the HTTP server is recorded to ensure + * only the correct amount of requests are being made. + * + * Note: Needs jdk/lib/tools.jar in the classpath to compile and run. + */ + +public class Basic { + static final String slash = File.separator; + static final String[] testSources = { + "jarA" + slash + "a" + slash + "A.java", + "jarA" + slash + "com" + slash + "message" + slash + "spi" + slash + "MessageService.java", + "jarB" + slash + "b" + slash + "B.java", + "jarC" + slash + "my" + slash + "impl" + slash + "StandardMessageService.java"}; + + static final String testSrc = System.getProperty("test.src"); + static final String testSrcDir = testSrc != null ? testSrc : "."; + static final String testClasses = System.getProperty("test.classes"); + static final String testClassesDir = testClasses != null ? testClasses : "."; + + static JarHttpServer httpServer; + + public static void main(String[] args) throws Exception { + + // Set global url cache to false so that we can track every jar request. + (new URL("http://localhost/")).openConnection().setDefaultUseCaches(false); + + buildTest(); + + try { + httpServer = new JarHttpServer(testClassesDir); + httpServer.start(); + + doTest(httpServer.getAddress()); + + } catch (IOException ioe) { + ioe.printStackTrace(); + } finally { + if (httpServer != null) { httpServer.stop(2); } + } + } + + static void buildTest() { + /* compile the source that will be used to generate the jars */ + for (int i=0; i */ + static void jar(String... args) { + debug("Running: jar " + Arrays.toString(args)); + sun.tools.jar.Main jar = new sun.tools.jar.Main(System.out, System.err, "jar"); + if (!jar.run(args)) { + throw new RuntimeException("jar failed: args=" + Arrays.toString(args)); + } + } + + /* run javac */ + static void compile(String... args) { + debug("Running: javac " + Arrays.toString(args)); + com.sun.tools.javac.main.Main compiler = new com.sun.tools.javac.main.Main("javac"); + if (compiler.compile(args) != 0) { + throw new RuntimeException("javac failed: args=" + Arrays.toString(args)); + } + } + + static String jar; + static { + String javaHome = System.getProperty("java.home"); + if (javaHome.endsWith("jre")) { + int index = javaHome.lastIndexOf(slash); + if (index != -1) + javaHome = javaHome.substring(0, index); + } + + jar = javaHome + slash+ "bin" + slash + "jar"; + } + + /* create the index */ + static void createIndex(String workingDir) { + // ProcessBuilder is used so that the current directory can be set + // to the directory that directly contains the jars. + debug("Running jar to create the index"); + ProcessBuilder pb = new ProcessBuilder( + jar, "-J-Dsun.misc.JarIndex.metaInfFilenames=true", "-i", "a.jar", "b.jar", "c.jar"); + pb.directory(new File(workingDir)); + //pd.inheritIO(); + try { + Process p = pb.start(); + if(p.waitFor() != 0) + throw new RuntimeException("jar indexing failed"); + + if(debug && p != null) { + String line = null; + BufferedReader reader = + new BufferedReader(new InputStreamReader(p.getInputStream())); + while((line = reader.readLine()) != null) + debug(line); + reader = new BufferedReader(new InputStreamReader(p.getErrorStream())); + while((line = reader.readLine()) != null) + debug(line); + } + } catch(InterruptedException ie) { throw new RuntimeException(ie); + } catch(IOException e) { throw new RuntimeException(e); } + } + + static final boolean debug = true; + + static void debug(Object message) { if (debug) System.out.println(message); } + + /* service define in c.jar */ + static final String messageService = "com.message.spi.MessageService"; + + /* a service that is not defined in any of the jars */ + static final String unknownService = "java.lang.Object"; + + static void doTest(InetSocketAddress serverAddress) throws IOException { + URL baseURL = new URL("http://localhost:" + serverAddress.getPort() + "/"); + + int failed = 0; + + // Tests using sun.misc.Service + if (!sunMiscServiceTest(baseURL, messageService, true, false, true)) { + System.out.println("Test: sun.misc.Service looking for " + messageService + ", failed"); + failed++; + } + if (!sunMiscServiceTest(baseURL, unknownService, false, false, false)) { + System.out.println("Test: sun.misc.Service looking for " + unknownService + " failed"); + failed++; + } + + // Tests using java.util.SerivceLoader + if (!javaUtilServiceLoaderTest(baseURL, messageService, true, false, true)) { + System.out.println("Test: sun.misc.Service looking for " + messageService + ", failed"); + failed++; + } + if (!javaUtilServiceLoaderTest(baseURL, unknownService, false, false, false)) { + System.out.println("Test: sun.misc.Service looking for " + unknownService + " failed"); + failed++; + } + + // Tests using java.lang.Class (similar to the FontManager in javafx) + if (!klassLoader(baseURL, "/META-INF/fonts.mf", true, false, true)) { + System.out.println("Test: klassLoader looking for /META-INF/fonts.mf failed"); + failed++; + } + if (!klassLoader(baseURL, "/META-INF/unknown.mf", false, false, false)) { + System.out.println("Test: klassLoader looking for /META-INF/unknown.mf failed"); + failed++; + } + + if (failed > 0) + throw new RuntimeException("Failed: " + failed + " tests"); + } + + static boolean sunMiscServiceTest(URL baseURL, + String serviceClass, + boolean expectToFind, + boolean expectbDotJar, + boolean expectcDotJar) throws IOException { + debug("----------------------------------"); + debug("Running test with sun.misc.Service looking for " + serviceClass); + URLClassLoader loader = getLoader(baseURL); + httpServer.reset(); + + Class messageServiceClass = null; + try { + messageServiceClass = loader.loadClass(serviceClass); + } catch (ClassNotFoundException cnfe) { + System.err.println(cnfe); + throw new RuntimeException("Error in test: " + cnfe); + } + + Iterator> iterator = sun.misc.Service.providers(messageServiceClass, loader); + if (expectToFind && !iterator.hasNext()) { + debug(messageServiceClass + " NOT found."); + return false; + } + + while (iterator.hasNext()) { + debug("found " + iterator.next() + " " + messageService); + } + + debug("HttpServer: " + httpServer); + + if (!expectbDotJar && httpServer.bDotJar > 0) { + debug("Unexpeced request sent to the httpserver for b.jar"); + return false; + } + if (!expectcDotJar && httpServer.cDotJar > 0) { + debug("Unexpeced request sent to the httpserver for c.jar"); + return false; + } + + return true; + } + + static boolean javaUtilServiceLoaderTest(URL baseURL, + String serviceClass, + boolean expectToFind, + boolean expectbDotJar, + boolean expectcDotJar) throws IOException { + debug("----------------------------------"); + debug("Running test with java.util.ServiceLoader looking for " + serviceClass); + URLClassLoader loader = getLoader(baseURL); + httpServer.reset(); + + Class messageServiceClass = null; + try { + messageServiceClass = loader.loadClass(serviceClass); + } catch (ClassNotFoundException cnfe) { + System.err.println(cnfe); + throw new RuntimeException("Error in test: " + cnfe); + } + + Iterator> iterator = (ServiceLoader.load(messageServiceClass, loader)).iterator(); + if (expectToFind && !iterator.hasNext()) { + debug(messageServiceClass + " NOT found."); + return false; + } + + while (iterator.hasNext()) { + debug("found " + iterator.next() + " " + messageService); + } + + debug("HttpServer: " + httpServer); + + if (!expectbDotJar && httpServer.bDotJar > 0) { + debug("Unexpeced request sent to the httpserver for b.jar"); + return false; + } + if (!expectcDotJar && httpServer.cDotJar > 0) { + debug("Unexpeced request sent to the httpserver for c.jar"); + return false; + } + + return true; + } + + /* Tries to find a resource in a similar way to the font manager in javafx + * com.sun.javafx.scene.text.FontManager */ + static boolean klassLoader(URL baseURL, + String resource, + boolean expectToFind, + boolean expectbDotJar, + boolean expectcDotJar) throws IOException { + debug("----------------------------------"); + debug("Running test looking for " + resource); + URLClassLoader loader = getLoader(baseURL); + httpServer.reset(); + + Class ADotAKlass = null; + try { + ADotAKlass = loader.loadClass("a.A"); + } catch (ClassNotFoundException cnfe) { + System.err.println(cnfe); + throw new RuntimeException("Error in test: " + cnfe); + } + + URL u = ADotAKlass.getResource(resource); + if (expectToFind && u == null) { + System.out.println("Expected to find " + resource + " but didn't"); + return false; + } + + debug("HttpServer: " + httpServer); + + if (!expectbDotJar && httpServer.bDotJar > 0) { + debug("Unexpeced request sent to the httpserver for b.jar"); + return false; + } + if (!expectcDotJar && httpServer.cDotJar > 0) { + debug("Unexpeced request sent to the httpserver for c.jar"); + return false; + } + + return true; + } + + static URLClassLoader getLoader(URL baseURL) throws IOException { + ClassLoader loader = Basic.class.getClassLoader(); + + while (loader.getParent() != null) + loader = loader.getParent(); + + return new URLClassLoader( new URL[]{ + new URL(baseURL, "a.jar"), + new URL(baseURL, "b.jar"), + new URL(baseURL, "c.jar")}, loader ); + } + + /** + * HTTP Server to server the jar files. + */ + static class JarHttpServer implements HttpHandler { + final String docsDir; + final HttpServer httpServer; + int aDotJar, bDotJar, cDotJar; + + JarHttpServer(String docsDir) throws IOException { + this.docsDir = docsDir; + + httpServer = HttpServer.create(new InetSocketAddress(0), 0); + httpServer.createContext("/", this); + } + + void start() throws IOException { + httpServer.start(); + } + + void stop(int delay) { + httpServer.stop(delay); + } + + InetSocketAddress getAddress() { + return httpServer.getAddress(); + } + + void reset() { + aDotJar = bDotJar = cDotJar = 0; + } + + @Override + public String toString() { + return "aDotJar=" + aDotJar + ", bDotJar=" + bDotJar + ", cDotJar=" + cDotJar; + } + + public void handle(HttpExchange t) throws IOException { + InputStream is = t.getRequestBody(); + Headers map = t.getRequestHeaders(); + Headers rmap = t.getResponseHeaders(); + URI uri = t.getRequestURI(); + + debug("Server: received request for " + uri); + String path = uri.getPath(); + if (path.endsWith("a.jar")) + aDotJar++; + else if (path.endsWith("b.jar")) + bDotJar++; + else if (path.endsWith("c.jar")) + cDotJar++; + else + System.out.println("Unexpected resource request" + path); + + while (is.read() != -1); + is.close(); + + File file = new File(docsDir, path); + if (!file.exists()) + throw new RuntimeException("Error: request for " + file); + long clen = file.length(); + t.sendResponseHeaders (200, clen); + OutputStream os = t.getResponseBody(); + FileInputStream fis = new FileInputStream(file); + try { + byte[] buf = new byte [16 * 1024]; + int len; + while ((len=fis.read(buf)) != -1) { + os.write (buf, 0, len); + } + } catch (IOException e) { + e.printStackTrace(); + } + fis.close(); + os.close(); + } + } +} diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/META-INF/services/my.happy.land b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/META-INF/services/my.happy.land new file mode 100644 index 00000000000..c109150a938 --- /dev/null +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/META-INF/services/my.happy.land @@ -0,0 +1,23 @@ +# Copyright (c) 2011, 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. + +# The contents of this file do not matter. It exists +# simply to have a service defined in META-INF/services. diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/a/A.java b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/a/A.java new file mode 100644 index 00000000000..e22921b7cef --- /dev/null +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/a/A.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2011, 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. + */ + +package a; + +public class A { + public static void hello() throws Exception { + System.out.println("Hello from a.A"); + } +} diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/com/message/spi/MessageService.java b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/com/message/spi/MessageService.java new file mode 100644 index 00000000000..5030191791c --- /dev/null +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/com/message/spi/MessageService.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2011, 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. + */ + +package com.message.spi; + +public interface MessageService { + String message(); +} diff --git a/jdk/make/sun/jkernel/FILES_c_windows.gmk b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/META-INF/JAVA2.DS similarity index 60% rename from jdk/make/sun/jkernel/FILES_c_windows.gmk rename to jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/META-INF/JAVA2.DS index 08592254123..17f1906ccd0 100644 --- a/jdk/make/sun/jkernel/FILES_c_windows.gmk +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/META-INF/JAVA2.DS @@ -1,12 +1,9 @@ -# -# Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 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. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. +# 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 @@ -21,22 +18,6 @@ # 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. -# -FILES_cpp = \ - stdafx.cpp \ - kernel.cpp \ - DownloadDialog.cpp \ - DownloadHelper.cpp \ - DownloadHelper.cpp - - -FILES_rc = kernel.rc - -# FILES_export definitions for Win32 - -FILES_export = \ - sun/jkernel/DownloadManager.java \ - sun/jkernel/Mutex.java \ - sun/jkernel/Bundle.java \ - sun/jkernel/BackgroundDownloader.java \ +# The contents of this file do not matter. It exists +# simply to have a file under META-INF. diff --git a/jdk/make/sun/jkernel/FILES_java.gmk b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/META-INF/services/no.name.service similarity index 50% rename from jdk/make/sun/jkernel/FILES_java.gmk rename to jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/META-INF/services/no.name.service index 2bdc8c9e69f..6c23e062166 100644 --- a/jdk/make/sun/jkernel/FILES_java.gmk +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/META-INF/services/no.name.service @@ -1,12 +1,9 @@ -# -# Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 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. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. +# 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 @@ -21,21 +18,6 @@ # 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. -# -FILES_java = \ - $(TARGDIR)sun/jkernel/BackgroundDownloader.java \ - $(TARGDIR)sun/jkernel/Bundle.java \ - $(TARGDIR)sun/jkernel/ByteArrayToFromHexDigits.java \ - $(TARGDIR)sun/jkernel/BundleCheck.java \ - $(TARGDIR)sun/jkernel/DownloadManager.java \ - $(TARGDIR)sun/jkernel/Mutex.java \ - $(TARGDIR)sun/jkernel/StandaloneByteArrayAccess.java \ - $(TARGDIR)sun/jkernel/StandaloneMessageDigest.java \ - $(TARGDIR)sun/jkernel/StandaloneSHA.java \ - -FILES_export = \ - sun/jkernel/DownloadManager.java \ - sun/jkernel/Mutex.java \ - sun/jkernel/Bundle.java \ - sun/jkernel/BackgroundDownloader.java +# The contents of this file do not matter. It exists +# simply to have a service defined in META-INF/services. diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/b/B.java b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/b/B.java new file mode 100644 index 00000000000..a977889e4d8 --- /dev/null +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/b/B.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2011, 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. + */ + +package b; + +public class B { + public static void hello() { + System.out.println("Hello from b.B"); + } +} diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts.mf b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts.mf new file mode 100644 index 00000000000..11fd7cef264 --- /dev/null +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts.mf @@ -0,0 +1,23 @@ +# Copyright (c) 2011, 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. + +corporate=/fonts/Company-corporate.ttf +crazy-looking=/fonts/kidpr.ttf diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts/Company-corporate.ttf b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts/Company-corporate.ttf new file mode 100644 index 00000000000..b21dd812254 --- /dev/null +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts/Company-corporate.ttf @@ -0,0 +1,22 @@ +# Copyright (c) 2011, 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. + +This is not a real font. diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts/kidpr.ttf b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts/kidpr.ttf new file mode 100644 index 00000000000..b21dd812254 --- /dev/null +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts/kidpr.ttf @@ -0,0 +1,22 @@ +# Copyright (c) 2011, 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. + +This is not a real font. diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/services/com.message.spi.MessageService b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/services/com.message.spi.MessageService new file mode 100644 index 00000000000..1d36cb068cc --- /dev/null +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/services/com.message.spi.MessageService @@ -0,0 +1,22 @@ +# Copyright (c) 2011, 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. + +my.impl.StandardMessageService diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/my/impl/StandardMessageService.java b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/my/impl/StandardMessageService.java new file mode 100644 index 00000000000..f16b295b0de --- /dev/null +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/my/impl/StandardMessageService.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2011, 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. + */ + +package my.impl; + +public class StandardMessageService implements com.message.spi.MessageService { + @Override + public String message() { + return "This is a message from the standard message service"; + } +} diff --git a/jdk/test/sun/security/provider/SeedGenerator/SeedGeneratorChoice.java b/jdk/test/sun/security/provider/SeedGenerator/SeedGeneratorChoice.java index ba49c6564b7..d91ce78db4b 100644 --- a/jdk/test/sun/security/provider/SeedGenerator/SeedGeneratorChoice.java +++ b/jdk/test/sun/security/provider/SeedGenerator/SeedGeneratorChoice.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * Copyright (c) 2010, 2011, 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 diff --git a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorEndEntity.java b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorEndEntity.java index 05e7cc5ad2c..725ed6b5d99 100644 --- a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorEndEntity.java +++ b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorEndEntity.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2011, 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 @@ -24,8 +24,10 @@ /** * @test * - * @bug 6861062 - * @summary Disable MD2 support + * @bug 6861062 7011497 + * @summary Disable MD2 support. + * New CertPathValidatorException.BasicReason enum constant for + * constrained algorithm. * * @author Xuelei Fan */ @@ -35,6 +37,7 @@ import java.net.SocketException; import java.util.*; import java.security.Security; import java.security.cert.*; +import java.security.cert.CertPathValidatorException.*; public class CPValidatorEndEntity { @@ -329,6 +332,13 @@ public class CPValidatorEndEntity { intermediate_SHA1withRSA_1024_1024); throw new Exception("expected algorithm disabled exception"); } catch (CertPathValidatorException cpve) { + // we may get ClassCastException here + BasicReason reason = (BasicReason)cpve.getReason(); + if (reason != BasicReason.ALGORITHM_CONSTRAINED) { + throw new Exception( + "Expect to get ALGORITHM_CONSTRAINED CPVE", cpve); + } + System.out.println("Get the expected exception " + cpve); } @@ -337,6 +347,13 @@ public class CPValidatorEndEntity { intermediate_SHA1withRSA_512_1024); throw new Exception("expected algorithm disabled exception"); } catch (CertPathValidatorException cpve) { + // we may get ClassCastException here + BasicReason reason = (BasicReason)cpve.getReason(); + if (reason != BasicReason.ALGORITHM_CONSTRAINED) { + throw new Exception( + "Expect to get ALGORITHM_CONSTRAINED CPVE", cpve); + } + System.out.println("Get the expected exception " + cpve); } } diff --git a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorIntermediate.java b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorIntermediate.java index 871afe35483..6b4f3cdc126 100644 --- a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorIntermediate.java +++ b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorIntermediate.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2011, 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 @@ -24,8 +24,10 @@ /** * @test * - * @bug 6861062 + * @bug 6861062 7011497 * @summary Disable MD2 support + * new CertPathValidatorException.BasicReason enum constant for + * constrained algorithm * * @author Xuelei Fan */ @@ -35,6 +37,7 @@ import java.net.SocketException; import java.util.*; import java.security.Security; import java.security.cert.*; +import java.security.cert.CertPathValidatorException.*; public class CPValidatorIntermediate { @@ -223,6 +226,13 @@ public class CPValidatorIntermediate { validate(intermediate_MD2withRSA_1024_1024); throw new Exception("expected algorithm disabled exception"); } catch (CertPathValidatorException cpve) { + // we may get ClassCastException here + BasicReason reason = (BasicReason)cpve.getReason(); + if (reason != BasicReason.ALGORITHM_CONSTRAINED) { + throw new Exception( + "Expect to get ALGORITHM_CONSTRAINED CPVE", cpve); + } + System.out.println("Get the expected exception " + cpve); } @@ -230,6 +240,13 @@ public class CPValidatorIntermediate { validate(intermediate_MD2withRSA_1024_512); throw new Exception("expected algorithm disabled exception"); } catch (CertPathValidatorException cpve) { + // we may get ClassCastException here + BasicReason reason = (BasicReason)cpve.getReason(); + if (reason != BasicReason.ALGORITHM_CONSTRAINED) { + throw new Exception( + "Expect to get ALGORITHM_CONSTRAINED CPVE", cpve); + } + System.out.println("Get the expected exception " + cpve); } } diff --git a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorTrustAnchor.java b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorTrustAnchor.java index 94f7f288a1c..e1a70002073 100644 --- a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorTrustAnchor.java +++ b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorTrustAnchor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2011, 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 @@ -24,8 +24,10 @@ /** * @test * - * @bug 6861062 + * @bug 6861062 7011497 * @summary Disable MD2 support + * new CertPathValidatorException.BasicReason enum constant for + * constrained algorithm * * @author Xuelei Fan */ @@ -35,6 +37,7 @@ import java.net.SocketException; import java.util.*; import java.security.Security; import java.security.cert.*; +import java.security.cert.CertPathValidatorException.*; public class CPValidatorTrustAnchor { @@ -142,6 +145,13 @@ public class CPValidatorTrustAnchor { validate(trustAnchor_MD2withRSA_2048); throw new Exception("expected algorithm disabled exception"); } catch (CertPathValidatorException cpve) { + // we may get ClassCastException here + BasicReason reason = (BasicReason)cpve.getReason(); + if (reason != BasicReason.ALGORITHM_CONSTRAINED) { + throw new Exception( + "Expect to get ALGORITHM_CONSTRAINED CPVE", cpve); + } + System.out.println("Get the expected exception " + cpve); } } diff --git a/jdk/test/tools/launcher/Arrrghs.java b/jdk/test/tools/launcher/Arrrghs.java index de3dbe20112..1db933833ea 100644 --- a/jdk/test/tools/launcher/Arrrghs.java +++ b/jdk/test/tools/launcher/Arrrghs.java @@ -24,7 +24,7 @@ /** * @test * @bug 5030233 6214916 6356475 6571029 6684582 6742159 4459600 6758881 6753938 - * 6894719 + * 6894719 6968053 * @summary Argument parsing validation. * @compile -XDignore.symbol.file Arrrghs.java TestHelper.java * @run main Arrrghs @@ -250,13 +250,11 @@ public class Arrrghs { TestHelper.createJar("MIA", new File("some.jar"), new File("Foo"), (String[])null); tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar"); - tr.contains("Error: Could not find main class MIA"); - tr.contains("java.lang.NoClassDefFoundError: MIA"); + tr.contains("Error: Could not find or load main class MIA"); System.out.println(tr); // use classpath to check tr = TestHelper.doExec(TestHelper.javaCmd, "-cp", "some.jar", "MIA"); - tr.contains("Error: Could not find main class MIA"); - tr.contains("java.lang.NoClassDefFoundError: MIA"); + tr.contains("Error: Could not find or load main class MIA"); System.out.println(tr); // incorrect method access @@ -305,12 +303,12 @@ public class Arrrghs { // amongst a potpourri of kindred main methods, is the right one chosen ? TestHelper.createJar(new File("some.jar"), new File("Foo"), - "void main(Object[] args){}", - "int main(Float[] args){return 1;}", - "private void main() {}", - "private static void main(int x) {}", - "public int main(int argc, String[] argv) {return 1;}", - "public static void main(String[] args) {System.out.println(\"THE_CHOSEN_ONE\");}"); + "void main(Object[] args){}", + "int main(Float[] args){return 1;}", + "private void main() {}", + "private static void main(int x) {}", + "public int main(int argc, String[] argv) {return 1;}", + "public static void main(String[] args) {System.out.println(\"THE_CHOSEN_ONE\");}"); tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar"); tr.contains("THE_CHOSEN_ONE"); System.out.println(tr); @@ -326,6 +324,30 @@ public class Arrrghs { tr.checkPositive(); System.out.println(tr); } + // tests 6968053, ie. we turn on the -Xdiag (for now) flag and check if + // the suppressed stack traces are exposed. + static void runDiagOptionTests() throws FileNotFoundException { + TestHelper.TestResult tr = null; + // a missing class + TestHelper.createJar("MIA", new File("some.jar"), new File("Foo"), + (String[])null); + tr = TestHelper.doExec(TestHelper.javaCmd, "-Xdiag", "-jar", "some.jar"); + tr.contains("Error: Could not find or load main class MIA"); + tr.contains("java.lang.ClassNotFoundException: MIA"); + System.out.println(tr); + + // use classpath to check + tr = TestHelper.doExec(TestHelper.javaCmd, "-Xdiag", "-cp", "some.jar", "MIA"); + tr.contains("Error: Could not find or load main class MIA"); + tr.contains("java.lang.ClassNotFoundException: MIA"); + System.out.println(tr); + + // a missing class on the classpath + tr = TestHelper.doExec(TestHelper.javaCmd, "-Xdiag", "NonExistentClass"); + tr.contains("Error: Could not find or load main class NonExistentClass"); + tr.contains("java.lang.ClassNotFoundException: NonExistentClass"); + System.out.println(tr); + } static void test6894719() { // test both arguments to ensure they exist @@ -352,6 +374,7 @@ public class Arrrghs { runBasicErrorMessageTests(); runMainMethodTests(); test6894719(); + runDiagOptionTests(); if (TestHelper.testExitValue > 0) { System.out.println("Total of " + TestHelper.testExitValue + " failed"); System.exit(1); diff --git a/langtools/.hgtags b/langtools/.hgtags index fc81571c856..93db802a2a6 100644 --- a/langtools/.hgtags +++ b/langtools/.hgtags @@ -102,3 +102,5 @@ a3b5b531542a372f30e014b1543a619a15a90780 jdk7-b123 4b0560c72b529d4b952924b2da94d8436af79d05 jdk7-b125 438a8ad60f7ae7aa897663148fd43fe85ef05e5b jdk7-b126 1e6094c33187f6c3dca55ced3701ee1f9d73a77d jdk7-b127 +d7225b476a5d1aebffb8827e7c72ba2e1651f4e7 jdk7-b128 +1383d1ee8b5db13d5df9523d1760df17b9d228d4 jdk7-b129 diff --git a/langtools/make/build.xml b/langtools/make/build.xml index aaa4d728a4c..e2cc6547ef4 100644 --- a/langtools/make/build.xml +++ b/langtools/make/build.xml @@ -1,6 +1,6 @@