Mercurial > hg > release > icedtea7-forest-2.6 > jdk
changeset 5074:c929e96aa059 jdk7u4-b13
Merge
author | lana |
---|---|
date | Sun, 19 Feb 2012 22:03:12 -0800 |
parents | 2e965f5943c3 (current diff) 7c50ad220359 (diff) |
children | 907555f6191a 09f612bac047 |
files | src/macosx/bin/universal/jvm.cfg src/share/classes/com/sun/management/DiagnosticCommandArgumentInfo.java src/share/classes/com/sun/management/DiagnosticCommandInfo.java test/com/sun/management/HotSpotDiagnosticMXBean/ExecuteDiagnosticCommand.java test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticCommandInfo.java test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticCommands.java |
diffstat | 122 files changed, 5166 insertions(+), 1291 deletions(-) [+] |
line wrap: on
line diff
--- a/make/common/Defs-macosx.gmk Fri Feb 17 10:04:03 2012 -0800 +++ b/make/common/Defs-macosx.gmk Sun Feb 19 22:03:12 2012 -0800 @@ -53,6 +53,8 @@ PLATFORM_SRC = $(BUILDDIR)/../src/solaris endif # PLATFORM_SRC +PLATFORM_SRC_MACOS = $(BUILDDIR)/../src/macosx + # BSD build pulls its platform sources from the solaris tree. JAVA_SRCDIR_LIST = src/$(PLATFORM) src/solaris src/share NATIVE_SRCDIR_LIST = src/$(PLATFORM) src/solaris src/share
--- a/make/common/Release-macosx.gmk Fri Feb 17 10:04:03 2012 -0800 +++ b/make/common/Release-macosx.gmk Sun Feb 19 22:03:12 2012 -0800 @@ -38,16 +38,16 @@ BUNLDE_ID_JRE ?= $(BUNDLE_ID).jre BUNLDE_ID_JDK ?= $(BUNDLE_ID).jdk -BUNDLE_NAME ?= OpenJDK 7 +BUNDLE_NAME ?= OpenJDK $(JDK_MINOR_VERSION) BUNDLE_NAME_JRE ?= $(BUNDLE_NAME) BUNDLE_NAME_JDK ?= $(BUNDLE_NAME) -BUNDLE_INFO ?= OpenJDK (1.7.0) +BUNDLE_INFO ?= OpenJDK ($(JDK_VERSION)) BUNDLE_INFO_JRE ?= $(BUNDLE_INFO) BUNDLE_INFO_JDK ?= $(BUNDLE_INFO) -BUNDLE_PLATFORM_VERSION ?= 1.7 -BUNDLE_VERSION ?= 1.7.0 +BUNDLE_PLATFORM_VERSION ?= $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION) +BUNDLE_VERSION ?= $(JDK_VERSION) BUNDLE_VENDOR ?= UNDEFINED jre-bundle-setup: @@ -59,18 +59,16 @@ jre-bundle-files: $(MKDIR) -p $(JRE_BUNDLE_DIR)/MacOS ln -s ../Home/lib/jli/libjli.dylib $(JRE_BUNDLE_DIR)/MacOS/ - $(MV) $(JRE_IMAGE_DIR) $(JRE_BUNDLE_DIR)/Home + $(CP) -r $(JRE_IMAGE_DIR) $(JRE_BUNDLE_DIR)/Home $(SED) -e "s/@@ID@@/$(BUNDLE_ID_JRE)/g" -e "s/@@NAME@@/$(BUNDLE_NAME_JRE)/g" -e "s/@@INFO@@/$(BUNDLE_INFO_JRE)/g" -e "s/@@PLATFORM_VERSION@@/$(BUNDLE_PLATFORM_VERSION)/g" -e "s/@@VERSION@@/$(BUNDLE_VERSION)/g" -e "s/@@VENDOR@@/$(BUNDLE_VENDOR)/g" < $(MACOSX_SRC)/bundle/JRE-Info.plist > $(JRE_BUNDLE_DIR)/Info.plist /usr/bin/SetFile -a B $(JRE_BUNDLE_DIR)/../ - $(MV) $(ABS_OUTPUTDIR)/j2re-bundle $(JRE_IMAGE_DIR) jdk-bundle-files: $(MKDIR) -p $(JDK_BUNDLE_DIR)/MacOS ln -s ../Home/jre/lib/jli/libjli.dylib $(JDK_BUNDLE_DIR)/MacOS/ - $(MV) $(JDK_IMAGE_DIR) $(JDK_BUNDLE_DIR)/Home + $(CP) -r $(JDK_IMAGE_DIR) $(JDK_BUNDLE_DIR)/Home $(SED) -e "s/@@ID@@/$(BUNDLE_ID_JDK)/g" -e "s/@@NAME@@/$(BUNDLE_NAME_JDK)/g" -e "s/@@INFO@@/$(BUNDLE_INFO_JDK)/g" -e "s/@@PLATFORM_VERSION@@/$(BUNDLE_PLATFORM_VERSION)/g" -e "s/@@VERSION@@/$(BUNDLE_VERSION)/g" -e "s/@@VENDOR@@/$(BUNDLE_VENDOR)/g" < $(MACOSX_SRC)/bundle/JDK-Info.plist > $(JDK_BUNDLE_DIR)/Info.plist /usr/bin/SetFile -a B $(JDK_BUNDLE_DIR)/../ - $(MV) $(ABS_OUTPUTDIR)/j2sdk-bundle $(JDK_IMAGE_DIR) EXTRA_IMAGE_TARGETS += jre-bundle-setup jdk-bundle-setup jre-bundle-files jdk-bundle-files
--- a/make/java/fdlibm/Makefile Fri Feb 17 10:04:03 2012 -0800 +++ b/make/java/fdlibm/Makefile Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ # -# Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -60,6 +60,12 @@ FASTDEBUG_OPTIMIZATION_LEVEL = NONE endif +ifeq ($(PLATFORM),macosx) + # Turn all optimizations off + OPTIMIZATION_LEVEL = NONE + FASTDEBUG_OPTIMIZATION_LEVEL = NONE +endif + # # Include path. #
--- a/make/java/jobjc/Makefile Fri Feb 17 10:04:03 2012 -0800 +++ b/make/java/jobjc/Makefile Sun Feb 19 22:03:12 2012 -0800 @@ -59,10 +59,13 @@ $(STABLE_METADATA_FILES): stabilize +ABS_OUTPUTDIR=$(realpath $(OUTPUTDIR)) +ABS_STABLE_GEN_DIR=$(realpath $(STABLE_GEN_DIR)) + $(BUILT_DYLIB) $(BUILT_JAR): $(STABLE_METADATA_FILES) $(CORE_SRC) $(GENERATOR_SRC) $(ADDITIONS_SRC) $(BUILD_SRC) @echo JObjC dylib or jar out of data wrt FRAMEWORKS '(' $(FRAMEWORKS) ')' or JObjC source '(' core, generator, additions, build ')' @echo Running ant with java_home set to ${ALT_BOOTDIR} - (cd $(SRCDIR); OBJROOT="$(OUTPUTDIR)/JObjC.build" DSTROOT="$(OUTPUTDIR)/JObjC.dst" JAVA_HOME=${ALT_BOOTDIR} STABLE_GEN_DIR="$(STABLE_GEN_DIR)" /usr/bin/ant -verbose all) + (cd $(SRCDIR); OBJROOT="$(ABS_OUTPUTDIR)/JObjC.build" DSTROOT="$(ABS_OUTPUTDIR)/JObjC.dst" JAVA_HOME=${ALT_BOOTDIR} STABLE_GEN_DIR="$(ABS_STABLE_GEN_DIR)" /usr/bin/ant -verbose all) all: $(BUILD_DYLIB) $(BUILT_JAR) $(CP) $(BUILT_DYLIB) $(LIB_LOCATION)/libJObjC.dylib
--- a/make/java/jvm/Makefile Fri Feb 17 10:04:03 2012 -0800 +++ b/make/java/jvm/Makefile Sun Feb 19 22:03:12 2012 -0800 @@ -43,12 +43,6 @@ $(PLATFORM_INCLUDE)/%.h: $(PLATFORM_SRC)/javavm/export/%.h $(install-file) -ifeq ($(PLATFORM),macosx) - JVMCFG_DIR = $(LIBDIR) -else - JVMCFG_DIR = $(LIBDIR)/$(LIBARCH) -endif - JVMCFG = $(JVMCFG_DIR)/jvm.cfg # @@ -60,6 +54,14 @@ JVMCFG_ARCH = $(ARCH) endif +ifeq ($(PLATFORM),macosx) + JVMCFG_SRC = $(PLATFORM_SRC_MACOS)/bin/$(JVMCFG_ARCH)/jvm.cfg + JVMCFG_DIR = $(LIBDIR) +else + JVMCFG_SRC = $(PLATFORM_SRC)/bin/$(JVMCFG_ARCH)/jvm.cfg + JVMCFG_DIR = $(LIBDIR)/$(LIBARCH) +endif + ifdef BUILD_CLIENT_ONLY $(JVMCFG):: $(MKDIR) -p $(JVMCFG_DIR) @@ -72,7 +74,7 @@ $(ECHO) "-native ERROR">>$(JVMCFG) $(ECHO) "-green ERROR">>$(JVMCFG) else -$(JVMCFG): $(PLATFORM_SRC)/bin/$(JVMCFG_ARCH)/jvm.cfg +$(JVMCFG): $(JVMCFG_SRC) $(install-file) endif
--- a/make/java/management/mapfile-vers Fri Feb 17 10:04:03 2012 -0800 +++ b/make/java/management/mapfile-vers Sun Feb 19 22:03:12 2012 -0800 @@ -54,9 +54,6 @@ Java_sun_management_GcInfoBuilder_getLastGcInfo0; Java_sun_management_GcInfoBuilder_getNumGcExtAttributes; Java_sun_management_HotSpotDiagnostic_dumpHeap; - Java_sun_management_HotSpotDiagnostic_executeDiagnosticCommand0; - Java_sun_management_HotSpotDiagnostic_getDiagnosticCommandInfo0; - Java_sun_management_HotSpotDiagnostic_getDiagnosticCommands0; Java_sun_management_HotspotThread_getInternalThreadCount; Java_sun_management_HotspotThread_getInternalThreadTimes0; Java_sun_management_MemoryImpl_getMemoryManagers0;
--- a/make/javax/sound/Makefile Fri Feb 17 10:04:03 2012 -0800 +++ b/make/javax/sound/Makefile Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -123,7 +123,7 @@ LDFLAGS += -framework CoreAudio -framework CoreFoundation \ -framework CoreServices -framework AudioUnit -lstdc++ \ - -framework CoreMIDI + -framework CoreMIDI -framework AudioToolbox CXXFLAGS += -I`xcode-select -print-path`/Extras/CoreAudio/PublicUtility endif
--- a/make/jprt.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/make/jprt.properties Sun Feb 19 22:03:12 2012 -0800 @@ -64,19 +64,32 @@ # Default jdk test targets (testset=default) jprt.make.rule.default.test.targets= \ - ${jprt.my.test.target.set:TESTNAME=jdk_beans1}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_io}, \ ${jprt.my.test.target.set:TESTNAME=jdk_lang}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_math}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_misc}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_net}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_nio1}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_nio2}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_nio3}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_security1}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_text}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_tools1}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_util} + ${jprt.my.test.target.set:TESTNAME=jdk_math} + +# Core vm test targets (testset=core) +jprt.vm.core.test.targets= \ + ${jprt.vm.default.test.target} + +# Core jdk test targets (testset=core) +jprt.make.rule.core.test.targets= \ + ${jprt.make.rule.default.test.targets}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_util}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_io}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_net}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_nio1}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_nio2}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_nio3}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_security1}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_security2}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_security3}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_rmi}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_management1}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_management2}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_text}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_tools1}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_tools2}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_misc} # All vm test targets (testset=all) jprt.vm.all.test.targets= \ @@ -88,15 +101,10 @@ jprt.make.rule.all.test.targets= \ ${jprt.make.rule.default.test.targets}, \ ${jprt.my.test.target.set:TESTNAME=jdk_awt}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_beans1}, \ ${jprt.my.test.target.set:TESTNAME=jdk_beans2}, \ ${jprt.my.test.target.set:TESTNAME=jdk_beans3}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_management1}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_management2}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_rmi}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_security2}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_security3}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_swing}, \ - ${jprt.my.test.target.set:TESTNAME=jdk_tools2} + ${jprt.my.test.target.set:TESTNAME=jdk_swing} # JCK test targets in test/Makefile (no windows) jprt.my.jck.test.target.set= \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/bin/amd64/jvm.cfg Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,38 @@ +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# 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. +# +# List of JVMs that can be used as an option to java, javac, etc. +# Order is important -- first in this list is the default JVM. +# NOTE that this both this file and its format are UNSUPPORTED and +# WILL GO AWAY in a future release. +# +# You may also select a JVM in an arbitrary location with the +# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported +# and may not be available in a future release. +# +-server KNOWN +-client IGNORE +-hotspot ERROR +-classic WARN +-native ERROR +-green ERROR
--- a/src/macosx/bin/universal/jvm.cfg Fri Feb 17 10:04:03 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. -# 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. -# -# List of JVMs that can be used as an option to java, javac, etc. -# Order is important -- first in this list is the default JVM. -# NOTE that this both this file and its format are UNSUPPORTED and -# WILL GO AWAY in a future release. -# -# You may also select a JVM in an arbitrary location with the -# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported -# and may not be available in a future release. -# --server KNOWN --client KNOWN --hotspot ERROR --classic WARN --native ERROR --green ERROR
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/bundle/appbundler/native/main.m Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,187 @@ +/* + * Copyright 2012, Oracle and/or its affiliates. All rights reserved. + * + * 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. + */ + +#import <Cocoa/Cocoa.h> +#include <jni.h> + +#define JAVA_LAUNCH_ERROR "JavaLaunchError" + +#define JAVA_VM_KEY "JavaVM" +#define RUNTIME_KEY "Runtime" +#define MAIN_CLASS_NAME_KEY "MainClassName" +#define OPTIONS_KEY "Options" +#define ARGUMENTS_KEY "Arguments" + +// TODO Remove these; they are defined by the makefile +#define FULL_VERSION "1.7.0" +#define DOT_VERSION "1.7.0" +#define DEFAULT_POLICY 0 + +typedef int (JNICALL *JLI_Launch_t)(int argc, char ** argv, + int jargc, const char** jargv, + int appclassc, const char** appclassv, + const char* fullversion, + const char* dotversion, + const char* pname, + const char* lname, + jboolean javaargs, + jboolean cpwildcard, + jboolean javaw, + jint ergo); + +int launch(char *); +int jli_launch(char *, NSURL *, NSString *, NSString *, NSString *, NSArray *, NSArray *); + +int main(int argc, char *argv[]) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + int result; + @try { + launch(argv[0]); + result = 0; + } @catch (NSException *exception) { + NSLog(@"%@: %@", exception, [exception callStackSymbols]); + result = 1; + } + + [pool drain]; + + return result; +} + +int launch(char *commandName) { + // Get the main bundle + NSBundle *mainBundle = [NSBundle mainBundle]; + NSDictionary *infoDictionary = [mainBundle infoDictionary]; + + NSString *javaVMPath = [[mainBundle bundlePath] stringByAppendingString:@"/Contents/JavaVM"]; + + // Get the Java dictionary + NSDictionary *javaVMDictionary = [infoDictionary objectForKey:@JAVA_VM_KEY]; + if (javaVMDictionary == nil) { + [NSException raise:@JAVA_LAUNCH_ERROR format:@"%@ is required.", @JAVA_VM_KEY]; + } + + // Get the runtime bundle URL + NSString *runtime = [javaVMDictionary objectForKey:@RUNTIME_KEY]; + + // TODO If unspecified, use default runtime location + + NSURL *runtimeBundleURL = [[mainBundle builtInPlugInsURL] URLByAppendingPathComponent:runtime]; + + // Get the main class name + NSString *mainClassName = [javaVMDictionary objectForKey:@MAIN_CLASS_NAME_KEY]; + if (mainClassName == nil) { + [NSException raise:@JAVA_LAUNCH_ERROR format:@"%@ is required.", @MAIN_CLASS_NAME_KEY]; + } + + // Set the class path + NSString *classPathFormat = @"-Djava.class.path=%@/Classes"; + NSMutableString *classPath = [[NSString stringWithFormat:classPathFormat, javaVMPath] mutableCopy]; + + NSFileManager *defaultFileManager = [NSFileManager defaultManager]; + NSArray *javaDirectoryContents = [defaultFileManager contentsOfDirectoryAtPath:javaVMPath error:nil]; + if (javaDirectoryContents == nil) { + [NSException raise:@JAVA_LAUNCH_ERROR format:@"Could not enumerate Java directory contents."]; + } + + for (NSString *file in javaDirectoryContents) { + if ([file hasSuffix:@".jar"]) { + [classPath appendFormat:@":%@/%@", javaVMPath, file]; + } + } + + // Set the library path + NSString *libraryPathFormat = @"-Djava.library.path=%@"; + NSString *libraryPath = [NSString stringWithFormat:libraryPathFormat, javaVMPath]; + + // Get the VM options + NSArray *options = [javaVMDictionary objectForKey:@OPTIONS_KEY]; + if (options == nil) { + options = [NSArray array]; + } + + // Get the application arguments + NSArray *arguments = [javaVMDictionary objectForKey:@ARGUMENTS_KEY]; + if (arguments == nil) { + arguments = [NSArray array]; + } + + return jli_launch(commandName, runtimeBundleURL, + mainClassName, classPath, libraryPath, + options, arguments); +} + +int jli_launch(char *commandName, NSURL *runtimeBundleURL, + NSString *mainClassName, NSString *classPath, NSString *libraryPath, + NSArray *options, NSArray *arguments) { + // Load the runtime bundle + CFBundleRef runtimeBundle = CFBundleCreate(NULL, (CFURLRef)runtimeBundleURL); + + NSError *bundleLoadError = nil; + Boolean runtimeBundleLoaded = CFBundleLoadExecutableAndReturnError(runtimeBundle, (CFErrorRef *)&bundleLoadError); + if (bundleLoadError != nil || !runtimeBundleLoaded) { + [NSException raise:@JAVA_LAUNCH_ERROR format:@"Could not load JRE from %@.", bundleLoadError]; + } + + // Get the JLI_Launch() function pointer + JLI_Launch_t JLI_LaunchFxnPtr = CFBundleGetFunctionPointerForName(runtimeBundle, CFSTR("JLI_Launch")); + if (JLI_LaunchFxnPtr == NULL) { + [NSException raise:@JAVA_LAUNCH_ERROR format:@"Could not get function pointer for JLI_Launch."]; + } + + // Initialize the arguments to JLI_Launch() + int argc = 1 + [options count] + 2 + [arguments count] + 1; + char *argv[argc]; + + int i = 0; + argv[i++] = commandName; + argv[i++] = strdup([classPath UTF8String]); + argv[i++] = strdup([libraryPath UTF8String]); + + for (NSString *option in options) { + argv[i++] = strdup([option UTF8String]); + } + + argv[i++] = strdup([mainClassName UTF8String]); + + for (NSString *argument in arguments) { + argv[i++] = strdup([argument UTF8String]); + } + + // Invoke JLI_Launch() + return JLI_LaunchFxnPtr(argc, argv, + 0, NULL, + 0, NULL, + FULL_VERSION, + DOT_VERSION, + "java", + "java", + FALSE, + FALSE, + FALSE, + DEFAULT_POLICY); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/bundle/appbundler/src/com/oracle/appbundler/AppBundlerTask.java Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,485 @@ +/* + * Copyright 2012, Oracle and/or its affiliates. All rights reserved. + * + * 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 com.oracle.appbundler; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.Writer; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.LinkOption; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; + +import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamWriter; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.DirectoryScanner; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.types.FileSet; + +/** + * App bundler Ant task. + */ +public class AppBundlerTask extends Task { + // Output folder for generated bundle + private File outputDirectory = null; + + // General bundle properties + private String name = null; + private String displayName = null; + private String identifier = null; + private File icon = null; + + private String shortVersion = "1.0"; + private String signature = "????"; + private String copyright = ""; + + // JVM info properties + private File runtime = null; + private String mainClassName = null; + private ArrayList<File> classPath = new ArrayList<>(); + private ArrayList<File> nativeLibraries = new ArrayList<>(); + private ArrayList<String> options = new ArrayList<>(); + private ArrayList<String> arguments = new ArrayList<>(); + + public static final String EXECUTABLE_NAME = "JavaAppLauncher"; + public static final String DEFAULT_ICON_NAME = "GenericApp.icns"; + public static final String OS_TYPE_CODE = "APPL"; + public static final String CLASS_EXTENSION = ".class"; + + public static final String PLIST_DTD = "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">"; + public static final String PLIST_TAG = "plist"; + public static final String PLIST_VERSION_ATTRIBUTE = "version"; + public static final String DICT_TAG = "dict"; + public static final String KEY_TAG = "key"; + public static final String ARRAY_TAG = "array"; + public static final String STRING_TAG = "string"; + + public static final int BUFFER_SIZE = 1024; + + public void setOutputDirectory(File outputDirectory) { + this.outputDirectory = outputDirectory; + } + + public void setName(String name) { + this.name = name; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + public void setIcon(File icon) { + this.icon = icon; + } + + public void setShortVersion(String shortVersion) { + this.shortVersion = shortVersion; + } + + public void setSignature(String signature) { + this.signature = signature; + } + + public void setCopyright(String copyright) { + this.copyright = copyright; + } + + public File getRuntime() { + return runtime; + } + + public void setRuntime(File runtime) { + this.runtime = runtime; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public void addConfiguredClassPath(FileSet classPath) { + File parent = classPath.getDir(); + + DirectoryScanner directoryScanner = classPath.getDirectoryScanner(getProject()); + String[] includedFiles = directoryScanner.getIncludedFiles(); + + for (int i = 0; i < includedFiles.length; i++) { + this.classPath.add(new File(parent, includedFiles[i])); + } + } + + public void addNativeLibrary(File nativeLibrary) throws BuildException { + if (nativeLibrary.isDirectory()) { + throw new BuildException("Native library cannot be a directory."); + } + + nativeLibraries.add(nativeLibrary); + } + + public void addConfiguredOption(Option option) throws BuildException { + String value = option.getValue(); + + if (value == null) { + throw new BuildException("Value is required."); + } + + options.add(value); + } + + public void addConfiguredArgument(Argument argument) throws BuildException { + String value = argument.getValue(); + + if (value == null) { + throw new BuildException("Value is required."); + } + + arguments.add(value); + } + + @Override + public void execute() throws BuildException { + // Validate required properties + if (outputDirectory == null) { + throw new IllegalStateException("Destination directory is required."); + } + + if (!outputDirectory.exists()) { + throw new IllegalStateException("Destination directory does not exist."); + } + + if (!outputDirectory.isDirectory()) { + throw new IllegalStateException("Invalid destination directory."); + } + + if (name == null) { + throw new IllegalStateException("Name is required."); + } + + if (displayName == null) { + throw new IllegalStateException("Display name is required."); + } + + if (identifier == null) { + throw new IllegalStateException("Identifier is required."); + } + + if (icon != null) { + if (!icon.exists()) { + throw new IllegalStateException("Icon does not exist."); + } + + if (icon.isDirectory()) { + throw new IllegalStateException("Invalid icon."); + } + } + + if (shortVersion == null) { + throw new IllegalStateException("Short version is required."); + } + + if (signature == null) { + throw new IllegalStateException("Signature is required."); + } + + if (signature.length() != 4) { + throw new IllegalStateException("Invalid signature."); + } + + if (copyright == null) { + throw new IllegalStateException("Copyright is required."); + } + + if (runtime != null) { + if (!runtime.exists()) { + throw new IllegalStateException("Runtime does not exist."); + } + + if (!runtime.isDirectory()) { + throw new IllegalStateException("Invalid runtime."); + } + } + + if (mainClassName == null) { + throw new IllegalStateException("Main class name is required."); + } + + if (classPath.isEmpty()) { + throw new IllegalStateException("Class path is required."); + } + + // Create directory structure + try { + System.out.println("Creating app bundle: " + name); + + File rootDirectory = new File(outputDirectory, name + ".app"); + delete(rootDirectory); + rootDirectory.mkdir(); + + File contentsDirectory = new File(rootDirectory, "Contents"); + contentsDirectory.mkdir(); + + File macOSDirectory = new File(contentsDirectory, "MacOS"); + macOSDirectory.mkdir(); + + File javaDirectory = new File(contentsDirectory, "JavaVM"); + javaDirectory.mkdir(); + + File classesDirectory = new File(javaDirectory, "Classes"); + classesDirectory.mkdir(); + + File plugInsDirectory = new File(contentsDirectory, "PlugIns"); + plugInsDirectory.mkdir(); + + File resourcesDirectory = new File(contentsDirectory, "Resources"); + resourcesDirectory.mkdir(); + + // Generate Info.plist + File infoPlistFile = new File(contentsDirectory, "Info.plist"); + infoPlistFile.createNewFile(); + writeInfoPlist(infoPlistFile); + + // Generate PkgInfo + File pkgInfoFile = new File(contentsDirectory, "PkgInfo"); + pkgInfoFile.createNewFile(); + writePkgInfo(pkgInfoFile); + + // Copy executable to MacOS folder + File executableFile = new File(macOSDirectory, EXECUTABLE_NAME); + copy(getClass().getResource(EXECUTABLE_NAME), executableFile); + + executableFile.setExecutable(true); + + // Copy runtime to PlugIns folder (if specified) + if (runtime != null) { + copy(runtime, new File(plugInsDirectory, runtime.getName())); + } + + // Copy class path entries to Java folder + for (File entry : classPath) { + String name = entry.getName(); + + if (entry.isDirectory() || name.endsWith(CLASS_EXTENSION)) { + copy(entry, new File(classesDirectory, name)); + } else { + copy(entry, new File(javaDirectory, name)); + } + } + + // Copy native libraries to Java folder + for (File nativeLibrary : nativeLibraries) { + copy(nativeLibrary, new File(javaDirectory, nativeLibrary.getName())); + } + + // Copy icon to Resources folder + if (icon == null) { + copy(getClass().getResource(DEFAULT_ICON_NAME), new File(resourcesDirectory, + DEFAULT_ICON_NAME)); + } else { + copy(icon, new File(resourcesDirectory, icon.getName())); + } + } catch (IOException exception) { + throw new BuildException(exception); + } + } + + private void writeInfoPlist(File file) throws IOException { + Writer out = new BufferedWriter(new FileWriter(file)); + XMLOutputFactory output = XMLOutputFactory.newInstance(); + + try { + XMLStreamWriter xout = output.createXMLStreamWriter(out); + + // Write XML declaration + xout.writeStartDocument(); + xout.writeCharacters("\n"); + + // Write plist DTD declaration + xout.writeDTD(PLIST_DTD); + xout.writeCharacters("\n"); + + // Begin root element + xout.writeStartElement(PLIST_TAG); + xout.writeAttribute(PLIST_VERSION_ATTRIBUTE, "1.0"); + xout.writeCharacters("\n"); + + // Begin root dictionary + xout.writeStartElement(DICT_TAG); + xout.writeCharacters("\n"); + + // Write bundle properties + writeProperty(xout, "CFBundleDevelopmentRegion", "English"); + writeProperty(xout, "CFBundleExecutable", EXECUTABLE_NAME); + writeProperty(xout, "CFBundleIconFile", (icon == null) ? DEFAULT_ICON_NAME : icon.getName()); + writeProperty(xout, "CFBundleIdentifier", identifier); + writeProperty(xout, "CFBundleDisplayName", displayName); + writeProperty(xout, "CFBundleInfoDictionaryVersion", "6.0"); + writeProperty(xout, "CFBundleName", name); + writeProperty(xout, "CFBundlePackageType", OS_TYPE_CODE); + writeProperty(xout, "CFBundleShortVersionString", shortVersion); + writeProperty(xout, "CFBundleSignature", signature); + writeProperty(xout, "CFBundleVersion", "1"); + writeProperty(xout, "NSHumanReadableCopyright", copyright); + + // Start Java properties + writeKey(xout, "JavaVM"); + xout.writeStartElement(DICT_TAG); + + // Write runtime + writeProperty(xout, "Runtime", runtime.getName()); + + // Write main class name + writeProperty(xout, "MainClassName", mainClassName); + + // Write options + writeKey(xout, "Options"); + + xout.writeStartElement(ARRAY_TAG); + xout.writeCharacters("\n"); + + for (String option : options) { + writeString(xout, option); + } + + xout.writeEndElement(); + xout.writeCharacters("\n"); + + // Write arguments + writeKey(xout, "Arguments"); + + xout.writeStartElement(ARRAY_TAG); + xout.writeCharacters("\n"); + + for (String argument : arguments) { + writeString(xout, argument); + } + + xout.writeEndElement(); + xout.writeCharacters("\n"); + + // End Java properties + xout.writeEndElement(); + xout.writeCharacters("\n"); + + // End root dictionary + xout.writeEndElement(); + xout.writeCharacters("\n"); + + // End root element + xout.writeEndElement(); + xout.writeCharacters("\n"); + + // Close document + xout.writeEndDocument(); + xout.writeCharacters("\n"); + + out.flush(); + } catch (XMLStreamException exception) { + throw new IOException(exception); + } finally { + out.close(); + } + } + + private void writeKey(XMLStreamWriter xout, String key) throws XMLStreamException { + xout.writeStartElement(KEY_TAG); + xout.writeCharacters(key); + xout.writeEndElement(); + xout.writeCharacters("\n"); + } + + private void writeString(XMLStreamWriter xout, String value) throws XMLStreamException { + xout.writeStartElement(STRING_TAG); + xout.writeCharacters(value); + xout.writeEndElement(); + xout.writeCharacters("\n"); + } + + private void writeProperty(XMLStreamWriter xout, String key, String value) throws XMLStreamException { + writeKey(xout, key); + writeString(xout, value); + } + + private void writePkgInfo(File file) throws IOException { + Writer out = new BufferedWriter(new FileWriter(file)); + + try { + out.write(OS_TYPE_CODE + signature); + out.flush(); + } finally { + out.close(); + } + } + + private static void delete(File file) throws IOException { + Path filePath = file.toPath(); + + if (Files.exists(filePath, LinkOption.NOFOLLOW_LINKS)) { + if (Files.isDirectory(filePath, LinkOption.NOFOLLOW_LINKS)) { + File[] files = file.listFiles(); + + for (int i = 0; i < files.length; i++) { + delete(files[i]); + } + } + + Files.delete(filePath); + } + } + + private static void copy(URL location, File file) throws IOException { + try (InputStream in = location.openStream()) { + Files.copy(in, file.toPath(), StandardCopyOption.REPLACE_EXISTING); + } + } + + private static void copy(File source, File destination) throws IOException { + Path sourcePath = source.toPath(); + Path destinationPath = destination.toPath(); + + Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING, LinkOption.NOFOLLOW_LINKS); + + if (Files.isDirectory(sourcePath, LinkOption.NOFOLLOW_LINKS)) { + String[] files = source.list(); + + for (int i = 0; i < files.length; i++) { + String file = files[i]; + copy(new File(source, file), new File(destination, file)); + } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/bundle/appbundler/src/com/oracle/appbundler/Argument.java Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,48 @@ +/* + * Copyright 2012, Oracle and/or its affiliates. All rights reserved. + * + * 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 com.oracle.appbundler; + +/** + * Class representing an argument that will be passed to the Java application + * at startup. + */ +public class Argument { + private String value = null; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @Override + public String toString() { + return value; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/bundle/appbundler/src/com/oracle/appbundler/Option.java Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,47 @@ +/* + * Copyright 2012, Oracle and/or its affiliates. All rights reserved. + * + * 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 com.oracle.appbundler; + +/** + * Class representing an option that will be passed to the JVM at startup. + */ +public class Option { + private String value = null; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @Override + public String toString() { + return value; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/bundle/appbundler/test/Test.java Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,35 @@ +/* + * Copyright 2012, Oracle and/or its affiliates. All rights reserved. + * + * 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. + */ + +public class Test { + public static void main(String[] args) { + System.out.println("Hello, World!"); + + for (int i = 0; i < args.length; i++) { + System.out.println("arg[" + i + "] = " + args[i]); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/bundle/build.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,24 @@ +# Copyright 2012, Oracle and/or its affiliates. All rights reserved. +# +# 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. +version=1.0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/bundle/build.xml Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Copyright 2012, Oracle and/or its affiliates. All rights reserved. + +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. +--> + +<project name="appbundler" default="package"> + <property environment="env"/> + + <property file="build.properties"/> + + <property name="folder.src" value="src"/> + <property name="folder.test" value="test"/> + <property name="folder.native" value="native"/> + <property name="folder.bin" value="bin"/> + <property name="folder.classes" value="${folder.bin}/classes"/> + + <!-- Compile target --> + <target name="compile"> + <mkdir dir="${ant.project.name}/${folder.classes}"/> + <javac destDir="${ant.project.name}/${folder.classes}" + includejavaruntime="true" + includeantruntime="true" + deprecation="true" + debug="true" + encoding="UTF-8" + failonerror="true"> + <src> + <dirset dir="${ant.project.name}"> + <include name="${folder.src}"/> + <include name="${folder.test}"/> + </dirset> + </src> + <compilerarg line="-Xlint:all"/> + <classpath> + <dirset dir="${basedir}" includes="**/${folder.classes}"/> + <fileset dir="${ant.project.name}" includes="lib/**/*.jar"/> + </classpath> + </javac> + <copy todir="${ant.project.name}/${folder.classes}" includeEmptyDirs="false"> + <fileset dir="${ant.project.name}/${folder.src}"> + <exclude name="**/*.java"/> + <exclude name="**/package.html"/> + </fileset> + <fileset dir="${ant.project.name}/${folder.test}" erroronmissingdir="false"> + <exclude name="**/*.java"/> + <exclude name="**/package.html"/> + </fileset> + </copy> + + <!-- TODO Move this to a makefile so we can reference the defines required by JLI_Launch() --> + <exec executable="gcc"> + <arg value="-I"/> + <arg value="${env.JAVA_HOME}/include"/> + <arg value="-I"/> + <arg value="${env.JAVA_HOME}/include/darwin"/> + <arg value="-o"/> + <arg value="${ant.project.name}/${folder.classes}/com/oracle/appbundler/JavaAppLauncher"/> + <arg value="-framework"/> + <arg value="Cocoa"/> + <arg value="-F"/> + <arg value="${env.JAVA_HOME}/../.."/> + <arg value="-m64"/> + <arg value="-std=c99"/> + <arg value="appbundler/native/main.m"/> + </exec> + </target> + + <!-- Clean target --> + <target name="clean"> + <delete dir="${ant.project.name}/${folder.classes}"/> + <delete file="${ant.project.name}/${folder.bin}/${ant.project.name}-${version}.jar"/> + <delete dir="HelloWorld.app"/> + <delete dir="SwingSet2.app"/> + </target> + + <!-- Package target --> + <target name="package" depends="compile"> + <property name="destfile" value="${ant.project.name}/${folder.bin}/${ant.project.name}-${version}.jar"/> + + <delete file="${destfile}"/> + <jar destfile="${destfile}" index="true"> + <manifest> + <attribute name="Implementation-Vendor-Id" value="com.oracle"/> + <attribute name="Implementation-Vendor" value="Oracle"/> + <attribute name="Implementation-Title" value="App Bundler Ant Task"/> + <attribute name="Implementation-Version" value="${version}"/> + </manifest> + <fileset dir="${ant.project.name}/${folder.classes}"> + <exclude name="**/${folder.test}/**"/> + </fileset> + <fileset dir="${ant.project.name}/${folder.bin}"> + <include name="JavaAppLauncher"/> + </fileset> + </jar> + </target> + + <!-- Test targets --> + <target name="test-hello" depends="package"> + <taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" + classpath="${ant.project.name}/${folder.bin}/${ant.project.name}-${version}.jar"/> + + <bundleapp outputdirectory="." + name="HelloWorld" + displayname="Hello World Test" + identifier="com.oracle.appbundler.Test" + shortversion="1.0" + runtime="${env.JAVA_HOME}/../.." + mainclassname="Test"> + <classpath dir="${ant.project.name}/${folder.classes}" includes="Test.class"/> + <option value="-Xms32M"/> + <option value="-Xmx256M"/> + <argument value="foo=bar"/> + </bundleapp> + </target> + + <target name="test-swingset" depends="package"> + <taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" + classpath="${ant.project.name}/${folder.bin}/${ant.project.name}-${version}.jar"/> + + <bundleapp outputdirectory="." + name="SwingSet2" + displayname="SwingSet 2" + identifier="com.oracle.javax.swing.SwingSet2" + shortversion="1.0" + runtime="${env.JAVA_HOME}/../.." + mainclassname="SwingSet2"> + <classpath file="/Library/Java/Demos/JFC/SwingSet2/SwingSet2.jar"/> + <option value="-Xms32M"/> + <option value="-Xmx256M"/> + <option value="-Dapple.laf.useScreenMenuBar=true"/> + <argument value="foo=bar"/> + </bundleapp> + </target> + + <!-- Trim whitespace target --> + <target name="trim-whitespace"> + <fileset id="trimfiles" dir="."> + <include name="**/*.h"/> + <include name="**/*.html"/> + <include name="**/*.java"/> + <include name="**/*.m"/> + <include name="**/*.properties"/> + <include name="**/*.xml"/> + </fileset> + <replaceregexp match="[\t]" replace=" " flags="gm" byline="true"> + <fileset refid="trimfiles"/> + </replaceregexp> + <replaceregexp match="[\t ]+$" replace="" flags="gm" byline="true"> + <fileset refid="trimfiles"/> + </replaceregexp> + </target> +</project>
--- a/src/macosx/classes/com/apple/laf/AquaScrollPaneUI.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/com/apple/laf/AquaScrollPaneUI.java Sun Feb 19 22:03:12 2012 -0800 @@ -60,6 +60,10 @@ if (wasVisible) { vScrollBar.setVisible(true); } + + // Consume the event even when the scrollBar is invisible + // see #7124320 + e.consume(); } } }
--- a/src/macosx/classes/com/apple/laf/AquaSliderUI.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/com/apple/laf/AquaSliderUI.java Sun Feb 19 22:03:12 2012 -0800 @@ -344,6 +344,12 @@ public void mousePressed(final MouseEvent e) { if (!slider.isEnabled()) return; + // We should recalculate geometry just before + // calculation of the thumb movement direction. + // It is important for the case, when JSlider + // is a cell editor in JTable. See 6348946. + calculateGeometry(); + final boolean firstClick = (currentMouseX == -1) && (currentMouseY == -1); currentMouseX = e.getX();
--- a/src/macosx/classes/com/apple/laf/AquaSpinnerUI.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/com/apple/laf/AquaSpinnerUI.java Sun Feb 19 22:03:12 2012 -0800 @@ -161,6 +161,33 @@ return b; } + /** + * {@inheritDoc} + */ + public int getBaseline(JComponent c, int width, int height) { + super.getBaseline(c, width, height); + JComponent editor = spinner.getEditor(); + Insets insets = spinner.getInsets(); + width = width - insets.left - insets.right; + height = height - insets.top - insets.bottom; + if (width >= 0 && height >= 0) { + int baseline = editor.getBaseline(width, height); + if (baseline >= 0) { + return insets.top + baseline; + } + } + return -1; + } + + /** + * {@inheritDoc} + */ + public Component.BaselineResizeBehavior getBaselineResizeBehavior( + JComponent c) { + super.getBaselineResizeBehavior(c); + return spinner.getEditor().getBaselineResizeBehavior(); + } + class TransparentButton extends JButton implements SwingConstants { boolean interceptRepaints = false;
--- a/src/macosx/classes/com/apple/laf/resources/aqua.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/com/apple/laf/resources/aqua.properties Sun Feb 19 22:03:12 2012 -0800 @@ -125,9 +125,9 @@ OptionPane.noButtonText=No OptionPane.noButtonMnemonic=78 OptionPane.okButtonText=OK -OptionPane.okButtonMnemonic=0 +#OptionPane.okButtonMnemonic=0 OptionPane.cancelButtonText=Cancel -OptionPane.cancelButtonMnemonic=0 +#OptionPane.cancelButtonMnemonic=0 OptionPane.titleText=Select an 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.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/classes/com/apple/laf/resources/aqua_de.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,206 @@ +# +# 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. +# + +# This properties file is used to create a PropertyResourceBundle +# It contains Locale specific strings used in Swing +# Currently, it contains the additional strings needed for the Aqua versions of these components: +# +# FileChooser +# +# When this file is read in, the strings are put into the +# defaults table. This is an implementation detail of the current +# workings of Swing. DO NOT DEPEND ON THIS. +# This may change in future versions of Swing as we improve localization +# support. + +############ FILE CHOOSER STRINGS ############# +FileChooser.fileDescriptionText=Allgemeine Datei +FileChooser.directoryDescriptionText=Verzeichnis +FileChooser.newFolderErrorText=Bei der Erstellung des Ordners ist ein Fehler aufgetreten +FileChooser.newFolderErrorSeparator= : +FileChooser.acceptAllFileFilterText=Alle Dateien +FileChooser.cancelButtonText=Abbrechen +FileChooser.saveButtonText=Speichern +FileChooser.openButtonText=\u00D6ffnen +FileChooser.saveDialogTitleText=Speichern +FileChooser.openDialogTitleText=\u00D6ffnen +FileChooser.updateButtonText=Updaten +FileChooser.helpButtonText=Hilfe +FileChooser.directoryOpenButtonText=\u00D6ffnen + +# File Size Units +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB + +// Mac-specific strings +FileChooser.saveTitleText=Speichern +FileChooser.openTitleText=\u00D6ffnen +FileChooser.newFolderExistsErrorText=Dieser Name ist bereits vergeben +FileChooser.chooseButtonText=W\u00E4hlen + +FileChooser.newFolderButtonText=Neuer Ordner +FileChooser.newFolderTitleText=Neuer Ordner +FileChooser.fileNameLabelText=Datei: +FileChooser.saveDialogFileNameLabelText=Speichern unter: +FileChooser.filesOfTypeLabelText=Dateiformat: + +FileChooser.desktopName=Desktop +FileChooser.newFolderPromptText=Name des neuen Ordners: +FileChooser.untitledFolderName=unbenannter Ordner +FileChooser.untitledFileName=unbenannt +FileChooser.createButtonText=Erstellen + +FileChooser.byDateText=\u00C4nderungsdatum +FileChooser.byNameText=Name +FileChooser.newFolderAccessibleName=Neuer Ordner + +FileChooser.mac.newFolder=unbenannter Ordner +FileChooser.mac.newFolder.subsequent=unbenannter Ordner {0} + + +############ COLOR CHOOSER STRINGS ############# +ColorChooser.previewText=Vorschau +ColorChooser.okText=OK +ColorChooser.cancelText=Abbrechen +ColorChooser.resetText=Zur\u00FCcksetzen +# VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic +ColorChooser.resetMnemonic=90 +ColorChooser.sampleText=Beispieltext Beispieltext +ColorChooser.swatchesNameText=Muster +ColorChooser.swatchesMnemonic=77 +ColorChooser.swatchesDisplayedMnemonicIndex=0 +ColorChooser.swatchesRecentText=Aktuell: +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.rgbNameText=RGB +ColorChooser.rgbMnemonic=71 +ColorChooser.rgbDisplayedMnemonicIndex=1 +ColorChooser.rgbRedText=Rot +ColorChooser.rgbRedMnemonic=84 +ColorChooser.rgbGreenText=Gr\u00FCn +ColorChooser.rgbGreenMnemonic=78 +ColorChooser.rgbBlueText=Blau +ColorChooser.rgbBlueMnemonic=66 + +############ 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=Ja +OptionPane.yesButtonMnemonic=74 +OptionPane.noButtonText=Nein +OptionPane.noButtonMnemonic=78 +OptionPane.okButtonText=OK +#OptionPane.okButtonMnemonic=0 +OptionPane.cancelButtonText=Abbrechen +#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=Meldung + +############ Printing Dialog Strings ############ +PrintingDialog.titleProgressText=Drucken +PrintingDialog.titleAbortingText=Drucken (wird abgebrochen) + +PrintingDialog.contentInitialText=Druckvorgang l\u00E4uft... + +# The following string will be formatted by a MessageFormat +# and {0} will be replaced by page number being printed +PrintingDialog.contentProgressText=Seite {0} wurde gedruckt ... + +PrintingDialog.contentAbortingText=Druckvorgang wird abgebrochen ... + +PrintingDialog.abortButtonText=Abbruch +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 + +############ Internal Frame Title Pane Strings ############ +InternalFrameTitlePane.restoreButtonText=Wiederherstellen +InternalFrameTitlePane.moveButtonText=Verschieben +InternalFrameTitlePane.sizeButtonText=Gr\u00F6\u00DFe +InternalFrameTitlePane.minimizeButtonText=Minimieren +InternalFrameTitlePane.maximizeButtonText=Maximieren +InternalFrameTitlePane.closeButtonText=Schlie\u00DFen + +############ Text strings ############# +# Used for html forms +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.redoText=Wiederherstellen + +############ Abstract Button Strings ############ +AbstractButton.clickText=Klicken + +############ Abstract Undoable Edit Strings ############ +AbstractUndoableEdit.undoText=R\u00FCckg\u00E4ngig +AbstractUndoableEdit.redoText=Wiederherstellen + +############ Combo Box Strings ############ +ComboBox.togglePopupText=togglePopup + +############ Progress Monitor Strings ############ +ProgressMonitor.progressText=Fortschritt ... + +############ Split Pane Strings ############ +SplitPane.leftButtonText=linke Schaltfl\u00E4che +SplitPane.rightButtonText=rechte Schaltfl\u00E4che +# Used for Isindex +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 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/classes/com/apple/laf/resources/aqua_es.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,206 @@ +# +# 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. +# + +# This properties file is used to create a PropertyResourceBundle +# It contains Locale specific strings used in Swing +# Currently, it contains the additional strings needed for the Aqua versions of these components: +# +# FileChooser +# +# When this file is read in, the strings are put into the +# defaults table. This is an implementation detail of the current +# workings of Swing. DO NOT DEPEND ON THIS. +# This may change in future versions of Swing as we improve localization +# support. + +############ FILE CHOOSER STRINGS ############# +FileChooser.fileDescriptionText=Archivo Gen\u00E9rico +FileChooser.directoryDescriptionText=Directorio +FileChooser.newFolderErrorText=Se ha producido un error durante la creaci\u00F3n de carpetas +FileChooser.newFolderErrorSeparator= : +FileChooser.acceptAllFileFilterText=Todos los Archivos +FileChooser.cancelButtonText=Cancelar +FileChooser.saveButtonText=Guardar +FileChooser.openButtonText=Abrir +FileChooser.saveDialogTitleText=Guardar +FileChooser.openDialogTitleText=Abrir +FileChooser.updateButtonText=Actualizar +FileChooser.helpButtonText=Ayuda +FileChooser.directoryOpenButtonText=Abrir + +# File Size Units +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB + +// Mac-specific strings +FileChooser.saveTitleText=Guardar +FileChooser.openTitleText=Abrir +FileChooser.newFolderExistsErrorText=Ya existe ese nombre +FileChooser.chooseButtonText=Seleccionar + +FileChooser.newFolderButtonText=Nueva Carpeta +FileChooser.newFolderTitleText=Nueva Carpeta +FileChooser.fileNameLabelText=Archivo: +FileChooser.saveDialogFileNameLabelText=Guardar como: +FileChooser.filesOfTypeLabelText=Formato de Archivo: + +FileChooser.desktopName=Escritorio +FileChooser.newFolderPromptText=Nombre de la Nueva Carpeta: +FileChooser.untitledFolderName=carpeta sin t\u00EDtulo +FileChooser.untitledFileName=sin t\u00EDtulo +FileChooser.createButtonText=Crear + +FileChooser.byDateText=Fecha de Modificaci\u00F3n +FileChooser.byNameText=Nombre +FileChooser.newFolderAccessibleName=Nueva Carpeta + +FileChooser.mac.newFolder=carpeta sin t\u00EDtulo +FileChooser.mac.newFolder.subsequent=carpeta sin t\u00EDtulo {0} + + +############ COLOR CHOOSER STRINGS ############# +ColorChooser.previewText=Vista Previa +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.swatchesNameText=Muestras +ColorChooser.swatchesMnemonic=85 +ColorChooser.swatchesDisplayedMnemonicIndex=0 +ColorChooser.swatchesRecentText=Reciente: +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.rgbNameText=RGB +ColorChooser.rgbMnemonic=71 +ColorChooser.rgbDisplayedMnemonicIndex=1 +ColorChooser.rgbRedText=Rojo +ColorChooser.rgbRedMnemonic=74 +ColorChooser.rgbGreenText=Verde +ColorChooser.rgbGreenMnemonic=86 +ColorChooser.rgbBlueText=Azul +ColorChooser.rgbBlueMnemonic=90 + +############ 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.noButtonText=No +OptionPane.noButtonMnemonic=78 +OptionPane.okButtonText=OK +#OptionPane.okButtonMnemonic=0 +OptionPane.cancelButtonText=Cancelar +#OptionPane.cancelButtonMnemonic=0 +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 +# 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=Mensaje + +############ Printing Dialog Strings ############ +PrintingDialog.titleProgressText=Impresi\u00F3n +PrintingDialog.titleAbortingText=Impresi\u00F3n (Abortando) + +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 {0} impresa... + +PrintingDialog.contentAbortingText=Abortando la impresi\u00F3n... + +PrintingDialog.abortButtonText=Abortar +PrintingDialog.abortButtonMnemonic=65 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 +PrintingDialog.abortButtonToolTipText=Abortar Impresi\u00F3n + +############ Internal Frame Strings ############ +InternalFrame.iconButtonToolTip=Minimizar +InternalFrame.maxButtonToolTip=Maximizar +InternalFrame.restoreButtonToolTip=Restaurar +InternalFrame.closeButtonToolTip=Cerrar + +############ Internal Frame Title Pane Strings ############ +InternalFrameTitlePane.restoreButtonText=Restaurar +InternalFrameTitlePane.moveButtonText=Mover +InternalFrameTitlePane.sizeButtonText=Tama\u00F1o +InternalFrameTitlePane.minimizeButtonText=Minimizar +InternalFrameTitlePane.maximizeButtonText=Maximizar +InternalFrameTitlePane.closeButtonText=Cerrar + +############ Text strings ############# +# Used for html forms +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.undoText=Deshacer +AbstractDocument.redoText=Rehacer + +############ Abstract Button Strings ############ +AbstractButton.clickText=hacer clic + +############ Abstract Undoable Edit Strings ############ +AbstractUndoableEdit.undoText=Deshacer +AbstractUndoableEdit.redoText=Rehacer + +############ Combo Box Strings ############ +ComboBox.togglePopupText=togglePopup + +############ Progress Monitor Strings ############ +ProgressMonitor.progressText=Progreso... + +############ Split Pane Strings ############ +SplitPane.leftButtonText=bot\u00F3n: izquierda +SplitPane.rightButtonText=bot\u00F3n: derecha +# Used for Isindex +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.maximizeButtonAccessibleName=Maximizar +InternalFrameTitlePane.closeButtonAccessibleName=Cerrar +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/classes/com/apple/laf/resources/aqua_fr.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,206 @@ +# +# 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. +# + +# This properties file is used to create a PropertyResourceBundle +# It contains Locale specific strings used in Swing +# Currently, it contains the additional strings needed for the Aqua versions of these components: +# +# FileChooser +# +# When this file is read in, the strings are put into the +# defaults table. This is an implementation detail of the current +# workings of Swing. DO NOT DEPEND ON THIS. +# This may change in future versions of Swing as we improve localization +# support. + +############ FILE CHOOSER STRINGS ############# +FileChooser.fileDescriptionText=Fichier g\u00E9n\u00E9rique +FileChooser.directoryDescriptionText=R\u00E9pertoire +FileChooser.newFolderErrorText=Erreur lors de la cr\u00E9ation du dossier +FileChooser.newFolderErrorSeparator= : +FileChooser.acceptAllFileFilterText=Tous les fichiers +FileChooser.cancelButtonText=Annuler +FileChooser.saveButtonText=Enregistrer +FileChooser.openButtonText=Ouvrir +FileChooser.saveDialogTitleText=Enregistrer +FileChooser.openDialogTitleText=Ouvrir +FileChooser.updateButtonText=Mettre \u00E0 jour +FileChooser.helpButtonText=Aide +FileChooser.directoryOpenButtonText=Ouvrir + +# File Size Units +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB + +// Mac-specific strings +FileChooser.saveTitleText=Enregistrer +FileChooser.openTitleText=Ouvrir +FileChooser.newFolderExistsErrorText=Ce nom est d\u00E9j\u00E0 utilis\u00E9 +FileChooser.chooseButtonText=Choisir + +FileChooser.newFolderButtonText=Nouveau dossier +FileChooser.newFolderTitleText=Nouveau dossier +FileChooser.fileNameLabelText=Fichier : +FileChooser.saveDialogFileNameLabelText=Enregistrer sous : +FileChooser.filesOfTypeLabelText=Format de fichier : + +FileChooser.desktopName=Bureau +FileChooser.newFolderPromptText=Nom du nouveau dossier : +FileChooser.untitledFolderName=dossier sans titre +FileChooser.untitledFileName=sans titre +FileChooser.createButtonText=Cr\u00E9er + +FileChooser.byDateText=Date de modification +FileChooser.byNameText=Nom +FileChooser.newFolderAccessibleName=Nouveau dossier + +FileChooser.mac.newFolder=dossier sans titre +FileChooser.mac.newFolder.subsequent=dossier {0} sans titre + + +############ COLOR CHOOSER STRINGS ############# +ColorChooser.previewText=Aper\u00E7u +ColorChooser.okText=OK +ColorChooser.cancelText=Annuler +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.swatchesDisplayedMnemonicIndex=0 +ColorChooser.swatchesRecentText=Dernier : +ColorChooser.hsbNameText=TSL +# 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=84 +ColorChooser.hsbDisplayedMnemonicIndex=0 +ColorChooser.hsbHueText=T +ColorChooser.hsbSaturationText=S +ColorChooser.hsbBrightnessText=L +ColorChooser.hsbRedText=R +ColorChooser.hsbGreenText=V +ColorChooser.hsbBlueText=B +ColorChooser.rgbNameText=RVB +ColorChooser.rgbMnemonic=86 +ColorChooser.rgbDisplayedMnemonicIndex=1 +ColorChooser.rgbRedText=Rouge +ColorChooser.rgbRedMnemonic=79 +ColorChooser.rgbGreenText=Vert +ColorChooser.rgbGreenMnemonic=86 +ColorChooser.rgbBlueText=Bleu +ColorChooser.rgbBlueMnemonic=66 + +############ 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=Oui +OptionPane.yesButtonMnemonic=79 +OptionPane.noButtonText=Non +OptionPane.noButtonMnemonic=78 +OptionPane.okButtonText=OK +#OptionPane.okButtonMnemonic=0 +OptionPane.cancelButtonText=Annuler +#OptionPane.cancelButtonMnemonic=0 +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 +# 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.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 {0} imprim\u00E9e... + +PrintingDialog.contentAbortingText=Abandon de l'impression... + +PrintingDialog.abortButtonText=Abandonner +PrintingDialog.abortButtonMnemonic=65 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 +PrintingDialog.abortButtonToolTipText=Abandonner l'impression + +############ Internal Frame Strings ############ +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.sizeButtonText=Taille +InternalFrameTitlePane.minimizeButtonText=R\u00E9duire +InternalFrameTitlePane.maximizeButtonText=Agrandir +InternalFrameTitlePane.closeButtonText=Fermer + +############ Text strings ############# +# Used for html forms +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=Annuler +AbstractDocument.redoText=R\u00E9tablir + +############ Abstract Button Strings ############ +AbstractButton.clickText=cliquer + +############ Abstract Undoable Edit Strings ############ +AbstractUndoableEdit.undoText=Annuler +AbstractUndoableEdit.redoText=R\u00E9tablir + +############ Combo Box Strings ############ +ComboBox.togglePopupText=togglePopup + +############ Progress Monitor Strings ############ +ProgressMonitor.progressText=Progression... + +############ Split Pane Strings ############ +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 : + +############ InternalFrameTitlePane Strings ############ +InternalFrameTitlePane.iconifyButtonAccessibleName=R\u00E9duire +InternalFrameTitlePane.maximizeButtonAccessibleName=Agrandir +InternalFrameTitlePane.closeButtonAccessibleName=Fermer +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/classes/com/apple/laf/resources/aqua_it.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,206 @@ +# +# 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. +# + +# This properties file is used to create a PropertyResourceBundle +# It contains Locale specific strings used in Swing +# Currently, it contains the additional strings needed for the Aqua versions of these components: +# +# FileChooser +# +# When this file is read in, the strings are put into the +# defaults table. This is an implementation detail of the current +# workings of Swing. DO NOT DEPEND ON THIS. +# This may change in future versions of Swing as we improve localization +# support. + +############ FILE CHOOSER STRINGS ############# +FileChooser.fileDescriptionText=File generico +FileChooser.directoryDescriptionText=Directory +FileChooser.newFolderErrorText=Si \u00E8 verificato un errore durante la creazione della cartella +FileChooser.newFolderErrorSeparator= : +FileChooser.acceptAllFileFilterText=Tutti i file +FileChooser.cancelButtonText=Annulla +FileChooser.saveButtonText=Salva +FileChooser.openButtonText=Apri +FileChooser.saveDialogTitleText=Salva +FileChooser.openDialogTitleText=Apri +FileChooser.updateButtonText=Aggiorna +FileChooser.helpButtonText=? +FileChooser.directoryOpenButtonText=Apri + +# File Size Units +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB + +// Mac-specific strings +FileChooser.saveTitleText=Salva +FileChooser.openTitleText=Apri +FileChooser.newFolderExistsErrorText=Il nome \u00E8 gi\u00E0 stato assegnato +FileChooser.chooseButtonText=Scegli + +FileChooser.newFolderButtonText=Nuova cartella +FileChooser.newFolderTitleText=Nuova cartella +FileChooser.fileNameLabelText=File: +FileChooser.saveDialogFileNameLabelText=Salva con nome: +FileChooser.filesOfTypeLabelText=Formato file: + +FileChooser.desktopName=Desktop +FileChooser.newFolderPromptText=Nome nuova cartella: +FileChooser.untitledFolderName=cartella senza titolo +FileChooser.untitledFileName=senza titolo +FileChooser.createButtonText=Crea + +FileChooser.byDateText=Data modifica +FileChooser.byNameText=Nome +FileChooser.newFolderAccessibleName=Nuova cartella + +FileChooser.mac.newFolder=cartella senza titolo +FileChooser.mac.newFolder.subsequent=cartella senza titolo {0} + + +############ COLOR CHOOSER STRINGS ############# +ColorChooser.previewText=Anteprima +ColorChooser.okText=OK +ColorChooser.cancelText=Annulla +ColorChooser.resetText=Reimposta +# VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic +ColorChooser.resetMnemonic=69 +ColorChooser.sampleText=Testo di prova Testo di prova +ColorChooser.swatchesNameText=Colori campione +ColorChooser.swatchesMnemonic=77 +ColorChooser.swatchesDisplayedMnemonicIndex=0 +ColorChooser.swatchesRecentText=Recenti: +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.rgbNameText=RGB +ColorChooser.rgbMnemonic=71 +ColorChooser.rgbDisplayedMnemonicIndex=1 +ColorChooser.rgbRedText=Rosso +ColorChooser.rgbRedMnemonic=82 +ColorChooser.rgbGreenText=Verde +ColorChooser.rgbGreenMnemonic=68 +ColorChooser.rgbBlueText=Blu +ColorChooser.rgbBlueMnemonic=66 + +############ 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\u00EC +OptionPane.yesButtonMnemonic=83 +OptionPane.noButtonText=No +OptionPane.noButtonMnemonic=78 +OptionPane.okButtonText=OK +#OptionPane.okButtonMnemonic=0 +OptionPane.cancelButtonText=Annulla +#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. +OptionPane.inputDialogTitle=Input +# 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=Messaggio + +############ Printing Dialog Strings ############ +PrintingDialog.titleProgressText=Stampa in corso +PrintingDialog.titleAbortingText=Stampa in corso (operazione interrotta) + +PrintingDialog.contentInitialText=Stampa in corso... + +# The following string will be formatted by a MessageFormat +# and {0} will be replaced by page number being printed +PrintingDialog.contentProgressText=Pagina stampata {0}... + +PrintingDialog.contentAbortingText=Interruzione della stampa in corso... + +PrintingDialog.abortButtonText=Interrompi +PrintingDialog.abortButtonMnemonic=73 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 +PrintingDialog.abortButtonToolTipText=Interrompe la stampa + +############ Internal Frame Strings ############ +InternalFrame.iconButtonToolTip=Riduce a icona +InternalFrame.maxButtonToolTip=Ingrandisce +InternalFrame.restoreButtonToolTip=Ripristina +InternalFrame.closeButtonToolTip=Chiude + +############ Internal Frame Title Pane Strings ############ +InternalFrameTitlePane.restoreButtonText=Ripristina +InternalFrameTitlePane.moveButtonText=Sposta +InternalFrameTitlePane.sizeButtonText=Dimensiona +InternalFrameTitlePane.minimizeButtonText=Riduci a icona +InternalFrameTitlePane.maximizeButtonText=Ingrandisci +InternalFrameTitlePane.closeButtonText=Chiudi + +############ Text strings ############# +# Used for html forms +FormView.submitButtonText=Sottometti query +FormView.resetButtonText=Reimposta +FormView.browseFileButtonText=Sfoglia... + +############ Abstract Document Strings ############ +AbstractDocument.styleChangeText=modifica di stile +AbstractDocument.additionText=aggiunta +AbstractDocument.deletionText=eliminazione +AbstractDocument.undoText=Annulla +AbstractDocument.redoText=Ripeti + +############ Abstract Button Strings ############ +AbstractButton.clickText=fare clic + +############ Abstract Undoable Edit Strings ############ +AbstractUndoableEdit.undoText=Annulla +AbstractUndoableEdit.redoText=Ripeti + +############ Combo Box Strings ############ +ComboBox.togglePopupText=togglePopup + +############ Progress Monitor Strings ############ +ProgressMonitor.progressText=In corso... + +############ Split Pane Strings ############ +SplitPane.leftButtonText=pulsante sinistro +SplitPane.rightButtonText=pulsante destro +# Used for Isindex +IsindexView.prompt=Questo \u00E8 un indice di ricerca. Immettere le parole chiave: + +############ InternalFrameTitlePane Strings ############ +InternalFrameTitlePane.iconifyButtonAccessibleName=Riduci a icona +InternalFrameTitlePane.maximizeButtonAccessibleName=Ingrandisci +InternalFrameTitlePane.closeButtonAccessibleName=Chiudi +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/classes/com/apple/laf/resources/aqua_ja.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,206 @@ +# +# 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. +# + +# This properties file is used to create a PropertyResourceBundle +# It contains Locale specific strings used in Swing +# Currently, it contains the additional strings needed for the Aqua versions of these components: +# +# FileChooser +# +# When this file is read in, the strings are put into the +# defaults table. This is an implementation detail of the current +# workings of Swing. DO NOT DEPEND ON THIS. +# This may change in future versions of Swing as we improve localization +# support. + +############ FILE CHOOSER STRINGS ############# +FileChooser.fileDescriptionText=\u6C4E\u7528\u30D5\u30A1\u30A4\u30EB +FileChooser.directoryDescriptionText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA +FileChooser.newFolderErrorText=\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F +FileChooser.newFolderErrorSeparator= : +FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB +FileChooser.cancelButtonText=\u53D6\u6D88 +FileChooser.saveButtonText=\u4FDD\u5B58 +FileChooser.openButtonText=\u958B\u304F +FileChooser.saveDialogTitleText=\u4FDD\u5B58 +FileChooser.openDialogTitleText=\u958B\u304F +FileChooser.updateButtonText=\u66F4\u65B0 +FileChooser.helpButtonText=\u30D8\u30EB\u30D7 +FileChooser.directoryOpenButtonText=\u958B\u304F + +# File Size Units +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB + +// Mac-specific strings +FileChooser.saveTitleText=\u4FDD\u5B58 +FileChooser.openTitleText=\u958B\u304F +FileChooser.newFolderExistsErrorText=\u305D\u306E\u540D\u524D\u306F\u3059\u3067\u306B\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059 +FileChooser.chooseButtonText=\u9078\u629E + +FileChooser.newFolderButtonText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 +FileChooser.newFolderTitleText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 +FileChooser.fileNameLabelText=\u30D5\u30A1\u30A4\u30EB: +FileChooser.saveDialogFileNameLabelText=\u5225\u540D\u4FDD\u5B58: +FileChooser.filesOfTypeLabelText=\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F: + +FileChooser.desktopName=\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7 +FileChooser.newFolderPromptText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u540D\u524D: +FileChooser.untitledFolderName=\u7121\u984C\u306E\u30D5\u30A9\u30EB\u30C0 +FileChooser.untitledFileName=\u7121\u984C +FileChooser.createButtonText=\u4F5C\u6210 + +FileChooser.byDateText=\u5909\u66F4\u65E5 +FileChooser.byNameText=\u540D\u524D +FileChooser.newFolderAccessibleName=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0 + +FileChooser.mac.newFolder=\u7121\u984C\u306E\u30D5\u30A9\u30EB\u30C0 +FileChooser.mac.newFolder.subsequent=\u7121\u984C\u306E\u30D5\u30A9\u30EB\u30C0{0} + + +############ COLOR CHOOSER STRINGS ############# +ColorChooser.previewText=\u30D7\u30EC\u30D3\u30E5\u30FC +ColorChooser.okText=OK +ColorChooser.cancelText=\u53D6\u6D88 +ColorChooser.resetText=\u30EA\u30BB\u30C3\u30C8(R) +# VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic +ColorChooser.resetMnemonic=82 +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(S) +ColorChooser.swatchesMnemonic=83 +ColorChooser.swatchesDisplayedMnemonicIndex=0 +ColorChooser.swatchesRecentText=\u6700\u65B0: +ColorChooser.hsbNameText=HSB(H) +# 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.rgbNameText=RGB(G) +ColorChooser.rgbMnemonic=71 +ColorChooser.rgbDisplayedMnemonicIndex=1 +ColorChooser.rgbRedText=\u8D64(D) +ColorChooser.rgbRedMnemonic=68 +ColorChooser.rgbGreenText=\u7DD1(N) +ColorChooser.rgbGreenMnemonic=78 +ColorChooser.rgbBlueText=\u9752(B) +ColorChooser.rgbBlueMnemonic=66 + +############ 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.yesButtonMnemonic=89 +OptionPane.noButtonText=\u3044\u3044\u3048(N) +OptionPane.noButtonMnemonic=78 +OptionPane.okButtonText=OK +#OptionPane.okButtonMnemonic=0 +OptionPane.cancelButtonText=\u53D6\u6D88 +#OptionPane.cancelButtonMnemonic=0 +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 +# 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 + +############ 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.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.contentAbortingText=\u5370\u5237\u3092\u4E2D\u6B62\u3057\u3066\u3044\u307E\u3059... + +PrintingDialog.abortButtonText=\u4E2D\u6B62(A) +PrintingDialog.abortButtonMnemonic=65 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 +PrintingDialog.abortButtonToolTipText=\u5370\u5237\u306E\u4E2D\u6B62 + +############ Internal Frame Strings ############ +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.maximizeButtonText=\u6700\u5927\u5316 +InternalFrameTitlePane.closeButtonText=\u9589\u3058\u308B + +############ Text strings ############# +# Used for html forms +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=\u3084\u308A\u76F4\u3057 + +############ Abstract Button Strings ############ +AbstractButton.clickText=\u30AF\u30EA\u30C3\u30AF + +############ Abstract Undoable Edit Strings ############ +AbstractUndoableEdit.undoText=\u5143\u306B\u623B\u3059 +AbstractUndoableEdit.redoText=\u3084\u308A\u76F4\u3057 + +############ Combo Box Strings ############ +ComboBox.togglePopupText=\u30C8\u30B0\u30EB\u30FB\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7 + +############ Progress Monitor Strings ############ +ProgressMonitor.progressText=\u9032\u884C\u4E2D... + +############ Split Pane Strings ############ +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: + +############ InternalFrameTitlePane Strings ############ +InternalFrameTitlePane.iconifyButtonAccessibleName=\u30A2\u30A4\u30B3\u30F3\u5316 +InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316 +InternalFrameTitlePane.closeButtonAccessibleName=\u9589\u3058\u308B +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/classes/com/apple/laf/resources/aqua_ko.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,206 @@ +# +# 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. +# + +# This properties file is used to create a PropertyResourceBundle +# It contains Locale specific strings used in Swing +# Currently, it contains the additional strings needed for the Aqua versions of these components: +# +# FileChooser +# +# When this file is read in, the strings are put into the +# defaults table. This is an implementation detail of the current +# workings of Swing. DO NOT DEPEND ON THIS. +# This may change in future versions of Swing as we improve localization +# support. + +############ FILE CHOOSER STRINGS ############# +FileChooser.fileDescriptionText=\uC77C\uBC18 \uD30C\uC77C +FileChooser.directoryDescriptionText=\uB514\uB809\uD1A0\uB9AC +FileChooser.newFolderErrorText=\uD3F4\uB354 \uC0DD\uC131 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +FileChooser.newFolderErrorSeparator= : +FileChooser.acceptAllFileFilterText=\uBAA8\uB4E0 \uD30C\uC77C +FileChooser.cancelButtonText=\uCDE8\uC18C +FileChooser.saveButtonText=\uC800\uC7A5 +FileChooser.openButtonText=\uC5F4\uAE30 +FileChooser.saveDialogTitleText=\uC800\uC7A5 +FileChooser.openDialogTitleText=\uC5F4\uAE30 +FileChooser.updateButtonText=\uAC31\uC2E0 +FileChooser.helpButtonText=\uB3C4\uC6C0\uB9D0 +FileChooser.directoryOpenButtonText=\uC5F4\uAE30 + +# File Size Units +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB + +// Mac-specific strings +FileChooser.saveTitleText=\uC800\uC7A5 +FileChooser.openTitleText=\uC5F4\uAE30 +FileChooser.newFolderExistsErrorText=\uD574\uB2F9 \uC774\uB984\uC740 \uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC785\uB2C8\uB2E4. +FileChooser.chooseButtonText=\uC120\uD0DD + +FileChooser.newFolderButtonText=\uC0C8 \uD3F4\uB354 +FileChooser.newFolderTitleText=\uC0C8 \uD3F4\uB354 +FileChooser.fileNameLabelText=\uD30C\uC77C: +FileChooser.saveDialogFileNameLabelText=\uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uC800\uC7A5: +FileChooser.filesOfTypeLabelText=\uD30C\uC77C \uD615\uC2DD: + +FileChooser.desktopName=\uB370\uC2A4\uD06C\uD1B1 +FileChooser.newFolderPromptText=\uC0C8 \uD3F4\uB354\uC758 \uC774\uB984: +FileChooser.untitledFolderName=\uC81C\uBAA9 \uC5C6\uB294 \uD3F4\uB354 +FileChooser.untitledFileName=\uC81C\uBAA9 \uC5C6\uC74C +FileChooser.createButtonText=\uC0DD\uC131 + +FileChooser.byDateText=\uC218\uC815\uB41C \uB0A0\uC9DC +FileChooser.byNameText=\uC774\uB984 +FileChooser.newFolderAccessibleName=\uC0C8 \uD3F4\uB354 + +FileChooser.mac.newFolder=\uC81C\uBAA9 \uC5C6\uB294 \uD3F4\uB354 +FileChooser.mac.newFolder.subsequent=\uC81C\uBAA9 \uC5C6\uB294 \uD3F4\uB354 {0} + + +############ COLOR CHOOSER STRINGS ############# +ColorChooser.previewText=\uBBF8\uB9AC\uBCF4\uAE30 +ColorChooser.okText=\uD655\uC778 +ColorChooser.cancelText=\uCDE8\uC18C +ColorChooser.resetText=\uC7AC\uC124\uC815(R) +# 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.swatchesMnemonic=83 +ColorChooser.swatchesDisplayedMnemonicIndex=0 +ColorChooser.swatchesRecentText=\uCD5C\uADFC \uBAA9\uB85D: +ColorChooser.hsbNameText=HSB(H) +# 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.rgbNameText=RGB(G) +ColorChooser.rgbMnemonic=71 +ColorChooser.rgbDisplayedMnemonicIndex=1 +ColorChooser.rgbRedText=\uBE68\uAC04\uC0C9(D) +ColorChooser.rgbRedMnemonic=68 +ColorChooser.rgbGreenText=\uB179\uC0C9(N) +ColorChooser.rgbGreenMnemonic=78 +ColorChooser.rgbBlueText=\uD30C\uB780\uC0C9(B) +ColorChooser.rgbBlueMnemonic=66 + +############ 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.yesButtonMnemonic=89 +OptionPane.noButtonText=\uC544\uB2C8\uC624(N) +OptionPane.noButtonMnemonic=78 +OptionPane.okButtonText=OK +#OptionPane.okButtonMnemonic=0 +OptionPane.cancelButtonText=\uCDE8\uC18C +#OptionPane.cancelButtonMnemonic=0 +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 +# 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 + +############ Printing Dialog Strings ############ +PrintingDialog.titleProgressText=\uC778\uC1C4 +PrintingDialog.titleAbortingText=\uC778\uC1C4(\uC911\uB2E8 \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.contentAbortingText=\uC778\uC1C4 \uC911\uB2E8 \uC911... + +PrintingDialog.abortButtonText=\uC911\uB2E8(A) +PrintingDialog.abortButtonMnemonic=65 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 +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 + +############ 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 + +############ Text strings ############# +# Used for html forms +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 + +############ Abstract Button Strings ############ +AbstractButton.clickText=\uB204\uB974\uAE30 + +############ Abstract Undoable Edit Strings ############ +AbstractUndoableEdit.undoText=\uC2E4\uD589 \uCDE8\uC18C +AbstractUndoableEdit.redoText=\uC7AC\uC2E4\uD589 + +############ Combo Box Strings ############ +ComboBox.togglePopupText=togglePopup + +############ Progress Monitor Strings ############ +ProgressMonitor.progressText=\uC9C4\uD589... + +############ Split Pane Strings ############ +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 \uC785\uB825: + +############ InternalFrameTitlePane Strings ############ +InternalFrameTitlePane.iconifyButtonAccessibleName=\uC544\uC774\uCF58\uD654 +InternalFrameTitlePane.maximizeButtonAccessibleName=\uCD5C\uB300\uD654 +InternalFrameTitlePane.closeButtonAccessibleName=\uB2EB\uAE30 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/classes/com/apple/laf/resources/aqua_pt_BR.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,206 @@ +# +# 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. +# + +# This properties file is used to create a PropertyResourceBundle +# It contains Locale specific strings used in Swing +# Currently, it contains the additional strings needed for the Aqua versions of these components: +# +# FileChooser +# +# When this file is read in, the strings are put into the +# defaults table. This is an implementation detail of the current +# workings of Swing. DO NOT DEPEND ON THIS. +# This may change in future versions of Swing as we improve localization +# support. + +############ FILE CHOOSER STRINGS ############# +FileChooser.fileDescriptionText=Arquivo Gen\u00E9rico +FileChooser.directoryDescriptionText=Diret\u00F3rio +FileChooser.newFolderErrorText=Ocorreu um erro durante a cria\u00E7\u00E3o da pasta +FileChooser.newFolderErrorSeparator= : +FileChooser.acceptAllFileFilterText=Todos os Arquivos +FileChooser.cancelButtonText=Cancelar +FileChooser.saveButtonText=Salvar +FileChooser.openButtonText=Abrir +FileChooser.saveDialogTitleText=Salvar +FileChooser.openDialogTitleText=Abrir +FileChooser.updateButtonText=Atualizar +FileChooser.helpButtonText=Ajuda +FileChooser.directoryOpenButtonText=Abrir + +# File Size Units +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB + +// Mac-specific strings +FileChooser.saveTitleText=Salvar +FileChooser.openTitleText=Abrir +FileChooser.newFolderExistsErrorText=Este nome j\u00E1 foi utilizado +FileChooser.chooseButtonText=Escolher + +FileChooser.newFolderButtonText=Nova Pasta +FileChooser.newFolderTitleText=Nova Pasta +FileChooser.fileNameLabelText=Arquivo: +FileChooser.saveDialogFileNameLabelText=Salvar como: +FileChooser.filesOfTypeLabelText=Formato do Arquivo: + +FileChooser.desktopName=\u00C1rea de Trabalho +FileChooser.newFolderPromptText=Nome da nova pasta: +FileChooser.untitledFolderName=pasta sem t\u00EDtulo +FileChooser.untitledFileName=sem t\u00EDtulo +FileChooser.createButtonText=Criar + +FileChooser.byDateText=Data da Modifica\u00E7\u00E3o +FileChooser.byNameText=Nome +FileChooser.newFolderAccessibleName=Nova Pasta + +FileChooser.mac.newFolder=pasta sem t\u00EDtulo +FileChooser.mac.newFolder.subsequent=pasta sem t\u00EDtulo {0} + + +############ COLOR CHOOSER STRINGS ############# +ColorChooser.previewText=Visualizar +ColorChooser.okText=OK +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.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.rgbNameText=RGB +ColorChooser.rgbMnemonic=71 +ColorChooser.rgbDisplayedMnemonicIndex=1 +ColorChooser.rgbRedText=Vermelho +ColorChooser.rgbRedMnemonic=86 +ColorChooser.rgbGreenText=Verde +ColorChooser.rgbGreenMnemonic=86 +ColorChooser.rgbBlueText=Azul +ColorChooser.rgbBlueMnemonic=65 + +############ 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=Sim +OptionPane.yesButtonMnemonic=83 +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 +# 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 +# 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=Mensagem + +############ Printing Dialog Strings ############ +PrintingDialog.titleProgressText=Impress\u00E3o +PrintingDialog.titleAbortingText=Impress\u00E3o (Abortando) + +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 impressa {0}... + +PrintingDialog.contentAbortingText=Abortando impress\u00E3o... + +PrintingDialog.abortButtonText=Abortar +PrintingDialog.abortButtonMnemonic=65 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 +PrintingDialog.abortButtonToolTipText=Abortar Impress\u00E3o + +############ Internal Frame Strings ############ +InternalFrame.iconButtonToolTip=Minimizar +InternalFrame.maxButtonToolTip=Maximizar +InternalFrame.restoreButtonToolTip=Restaurar +InternalFrame.closeButtonToolTip=Fechar + +############ Internal Frame Title Pane Strings ############ +InternalFrameTitlePane.restoreButtonText=Restaurar +InternalFrameTitlePane.moveButtonText=Mover +InternalFrameTitlePane.sizeButtonText=Tamanho +InternalFrameTitlePane.minimizeButtonText=Minimizar +InternalFrameTitlePane.maximizeButtonText=Maximizar +InternalFrameTitlePane.closeButtonText=Fechar + +############ Text strings ############# +# Used for html forms +FormView.submitButtonText=Submeter Consulta +FormView.resetButtonText=Redefinir +FormView.browseFileButtonText=Procurar... + +############ Abstract Document Strings ############ +AbstractDocument.styleChangeText=altera\u00E7\u00E3o de estilo +AbstractDocument.additionText=adi\u00E7\u00E3o +AbstractDocument.deletionText=dele\u00E7\u00E3o +AbstractDocument.undoText=Desfazer +AbstractDocument.redoText=Refazer + +############ Abstract Button Strings ############ +AbstractButton.clickText=clicar + +############ Abstract Undoable Edit Strings ############ +AbstractUndoableEdit.undoText=Desfazer +AbstractUndoableEdit.redoText=Refazer + +############ Combo Box Strings ############ +ComboBox.togglePopupText=togglePopup + +############ Progress Monitor Strings ############ +ProgressMonitor.progressText=Andamento... + +############ Split Pane Strings ############ +SplitPane.leftButtonText=bot\u00E3o esquerdo +SplitPane.rightButtonText=bot\u00E3o direito +# Used for Isindex +IsindexView.prompt=Trata-se de um \u00EDndice pesquis\u00E1vel. Informe as palavras-chave de pesquisa: + +############ InternalFrameTitlePane Strings ############ +InternalFrameTitlePane.iconifyButtonAccessibleName=Iconizar +InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar +InternalFrameTitlePane.closeButtonAccessibleName=Fechar +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/classes/com/apple/laf/resources/aqua_sv.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,206 @@ +# +# 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. +# + +# This properties file is used to create a PropertyResourceBundle +# It contains Locale specific strings used in Swing +# Currently, it contains the additional strings needed for the Aqua versions of these components: +# +# FileChooser +# +# When this file is read in, the strings are put into the +# defaults table. This is an implementation detail of the current +# workings of Swing. DO NOT DEPEND ON THIS. +# This may change in future versions of Swing as we improve localization +# support. + +############ FILE CHOOSER STRINGS ############# +FileChooser.fileDescriptionText=Generisk fil +FileChooser.directoryDescriptionText=Katalog +FileChooser.newFolderErrorText=Ett fel intr\u00E4ffade n\u00E4r en mapp skulle skapas +FileChooser.newFolderErrorSeparator= : +FileChooser.acceptAllFileFilterText=Alla filer +FileChooser.cancelButtonText=Avbryt +FileChooser.saveButtonText=Spara +FileChooser.openButtonText=\u00D6ppna +FileChooser.saveDialogTitleText=Spara +FileChooser.openDialogTitleText=\u00D6ppna +FileChooser.updateButtonText=Uppdatera +FileChooser.helpButtonText=Hj\u00E4lp +FileChooser.directoryOpenButtonText=\u00D6ppna + +# File Size Units +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB + +// Mac-specific strings +FileChooser.saveTitleText=Spara +FileChooser.openTitleText=\u00D6ppna +FileChooser.newFolderExistsErrorText=Namnet finns redan +FileChooser.chooseButtonText=V\u00E4lj + +FileChooser.newFolderButtonText=Ny mapp +FileChooser.newFolderTitleText=Ny mapp +FileChooser.fileNameLabelText=Fil: +FileChooser.saveDialogFileNameLabelText=Spara som: +FileChooser.filesOfTypeLabelText=Filformat: + +FileChooser.desktopName=Klientdator +FileChooser.newFolderPromptText=Namn p\u00E5 ny mapp: +FileChooser.untitledFolderName=namnl\u00F6s mapp +FileChooser.untitledFileName=namnl\u00F6s +FileChooser.createButtonText=Skapa + +FileChooser.byDateText=\u00C4ndringsdatum +FileChooser.byNameText=Namn +FileChooser.newFolderAccessibleName=Ny mapp + +FileChooser.mac.newFolder=namnl\u00F6s mapp +FileChooser.mac.newFolder.subsequent=namnl\u00F6s mapp {0} + + +############ COLOR CHOOSER STRINGS ############# +ColorChooser.previewText=F\u00F6rhandsgranska +ColorChooser.okText=OK +ColorChooser.cancelText=Avbryt +ColorChooser.resetText=\u00C5terst\u00E4ll +# VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic +ColorChooser.resetMnemonic=84 +ColorChooser.sampleText=Exempeltext Exempeltext +ColorChooser.swatchesNameText=Prov +ColorChooser.swatchesMnemonic=80 +ColorChooser.swatchesDisplayedMnemonicIndex=0 +ColorChooser.swatchesRecentText=Senaste: +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.rgbNameText=RGB +ColorChooser.rgbMnemonic=71 +ColorChooser.rgbDisplayedMnemonicIndex=1 +ColorChooser.rgbRedText=R\u00F6d +ColorChooser.rgbRedMnemonic=68 +ColorChooser.rgbGreenText=Gr\u00F6n +ColorChooser.rgbGreenMnemonic=78 +ColorChooser.rgbBlueText=Bl\u00E5 +ColorChooser.rgbBlueMnemonic=66 + +############ 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=Ja +OptionPane.yesButtonMnemonic=74 +OptionPane.noButtonText=Nej +OptionPane.noButtonMnemonic=78 +OptionPane.okButtonText=OK +#OptionPane.okButtonMnemonic=0 +OptionPane.cancelButtonText=Avbryt +#OptionPane.cancelButtonMnemonic=0 +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 +# 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=Meddelande + +############ Printing Dialog Strings ############ +PrintingDialog.titleProgressText=Skriver ut +PrintingDialog.titleAbortingText=Skriver ut (avbryter) + +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 +PrintingDialog.contentProgressText=Utskriven sida {0}... + +PrintingDialog.contentAbortingText=Utskriften avbryts... + +PrintingDialog.abortButtonText=Avbryt +PrintingDialog.abortButtonMnemonic=65 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 +PrintingDialog.abortButtonToolTipText=Avbryt utskrift + +############ Internal Frame Strings ############ +InternalFrame.iconButtonToolTip=Minimera +InternalFrame.maxButtonToolTip=Maximera +InternalFrame.restoreButtonToolTip=\u00C5terst\u00E4ll +InternalFrame.closeButtonToolTip=St\u00E4ng + +############ Internal Frame Title Pane Strings ############ +InternalFrameTitlePane.restoreButtonText=\u00C5terst\u00E4ll +InternalFrameTitlePane.moveButtonText=Flytta +InternalFrameTitlePane.sizeButtonText=Storlek +InternalFrameTitlePane.minimizeButtonText=Minimera +InternalFrameTitlePane.maximizeButtonText=Maximera +InternalFrameTitlePane.closeButtonText=St\u00E4ng + +############ Text strings ############# +# Used for html forms +FormView.submitButtonText=Skicka fr\u00E5ga +FormView.resetButtonText=\u00C5terst\u00E4ll +FormView.browseFileButtonText=Bl\u00E4ddra... + +############ Abstract Document Strings ############ +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 + +############ Combo Box Strings ############ +ComboBox.togglePopupText=v\u00E4xlaPopup + +############ Progress Monitor Strings ############ +ProgressMonitor.progressText=P\u00E5g\u00E5r... + +############ Split Pane Strings ############ +SplitPane.leftButtonText=v\u00E4nster knapp +SplitPane.rightButtonText=h\u00F6ger knapp +# Used for Isindex +IsindexView.prompt=Detta \u00E4r ett s\u00F6kbart index. Ange s\u00F6kord: + +############ InternalFrameTitlePane Strings ############ +InternalFrameTitlePane.iconifyButtonAccessibleName=Minimera +InternalFrameTitlePane.maximizeButtonAccessibleName=Maximera +InternalFrameTitlePane.closeButtonAccessibleName=St\u00E4ng +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/classes/com/apple/laf/resources/aqua_zh_CN.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,206 @@ +# +# 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. +# + +# This properties file is used to create a PropertyResourceBundle +# It contains Locale specific strings used in Swing +# Currently, it contains the additional strings needed for the Aqua versions of these components: +# +# FileChooser +# +# When this file is read in, the strings are put into the +# defaults table. This is an implementation detail of the current +# workings of Swing. DO NOT DEPEND ON THIS. +# This may change in future versions of Swing as we improve localization +# support. + +############ FILE CHOOSER STRINGS ############# +FileChooser.fileDescriptionText=\u901A\u7528\u6587\u4EF6 +FileChooser.directoryDescriptionText=\u76EE\u5F55 +FileChooser.newFolderErrorText=\u521B\u5EFA\u6587\u4EF6\u5939\u65F6\u51FA\u9519 +FileChooser.newFolderErrorSeparator= : +FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4EF6 +FileChooser.cancelButtonText=\u53D6\u6D88 +FileChooser.saveButtonText=\u4FDD\u5B58 +FileChooser.openButtonText=\u6253\u5F00 +FileChooser.saveDialogTitleText=\u4FDD\u5B58 +FileChooser.openDialogTitleText=\u6253\u5F00 +FileChooser.updateButtonText=\u66F4\u65B0 +FileChooser.helpButtonText=\u5E2E\u52A9 +FileChooser.directoryOpenButtonText=\u6253\u5F00 + +# File Size Units +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB + +// Mac-specific strings +FileChooser.saveTitleText=\u4FDD\u5B58 +FileChooser.openTitleText=\u6253\u5F00 +FileChooser.newFolderExistsErrorText=\u8BE5\u540D\u79F0\u5DF2\u88AB\u4F7F\u7528 +FileChooser.chooseButtonText=\u9009\u62E9 + +FileChooser.newFolderButtonText=\u65B0\u5EFA\u6587\u4EF6\u5939 +FileChooser.newFolderTitleText=\u65B0\u5EFA\u6587\u4EF6\u5939 +FileChooser.fileNameLabelText=\u6587\u4EF6: +FileChooser.saveDialogFileNameLabelText=\u53E6\u5B58\u4E3A: +FileChooser.filesOfTypeLabelText=\u6587\u4EF6\u683C\u5F0F: + +FileChooser.desktopName=\u684C\u9762 +FileChooser.newFolderPromptText=\u65B0\u6587\u4EF6\u5939\u7684\u540D\u79F0: +FileChooser.untitledFolderName=\u65E0\u6807\u9898\u7684\u6587\u4EF6\u5939 +FileChooser.untitledFileName=\u65E0\u6807\u9898 +FileChooser.createButtonText=\u521B\u5EFA + +FileChooser.byDateText=\u4FEE\u6539\u65E5\u671F +FileChooser.byNameText=\u540D\u79F0 +FileChooser.newFolderAccessibleName=\u65B0\u5EFA\u6587\u4EF6\u5939 + +FileChooser.mac.newFolder=\u65E0\u6807\u9898\u7684\u6587\u4EF6\u5939 +FileChooser.mac.newFolder.subsequent=\u65E0\u6807\u9898\u7684\u6587\u4EF6\u5939 {0} + + +############ COLOR CHOOSER STRINGS ############# +ColorChooser.previewText=\u9884\u89C8 +ColorChooser.okText=\u786E\u5B9A +ColorChooser.cancelText=\u53D6\u6D88 +ColorChooser.resetText=\u91CD\u7F6E(R) +# VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic +ColorChooser.resetMnemonic=82 +ColorChooser.sampleText=\u793A\u4F8B\u6587\u672C \u793A\u4F8B\u6587\u672C +ColorChooser.swatchesNameText=\u6837\u672C(S) +ColorChooser.swatchesMnemonic=83 +ColorChooser.swatchesDisplayedMnemonicIndex=0 +ColorChooser.swatchesRecentText=\u6700\u8FD1: +ColorChooser.hsbNameText=HSB(H) +# 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.rgbNameText=RGB(G) +ColorChooser.rgbMnemonic=71 +ColorChooser.rgbDisplayedMnemonicIndex=1 +ColorChooser.rgbRedText=\u7EA2\u8272(D) +ColorChooser.rgbRedMnemonic=68 +ColorChooser.rgbGreenText=\u7EFF\u8272(N) +ColorChooser.rgbGreenMnemonic=78 +ColorChooser.rgbBlueText=\u84DD\u8272(B) +ColorChooser.rgbBlueMnemonic=66 + +############ 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.yesButtonMnemonic=89 +OptionPane.noButtonText=\u5426(N) +OptionPane.noButtonMnemonic=78 +OptionPane.okButtonText=OK +#OptionPane.okButtonMnemonic=0 +OptionPane.cancelButtonText=\u53D6\u6D88 +#OptionPane.cancelButtonMnemonic=0 +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 +# 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 + +############ Printing Dialog Strings ############ +PrintingDialog.titleProgressText=\u6253\u5370 +PrintingDialog.titleAbortingText=\u6253\u5370 (\u6B63\u5728\u4E2D\u6B62) + +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.contentAbortingText=\u6B63\u5728\u4E2D\u6B62\u6253\u5370... + +PrintingDialog.abortButtonText=\u4E2D\u6B62(A) +PrintingDialog.abortButtonMnemonic=65 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 +PrintingDialog.abortButtonToolTipText=\u4E2D\u6B62\u6253\u5370 + +############ Internal Frame Strings ############ +InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316 +InternalFrame.maxButtonToolTip=\u6700\u5927\u5316 +InternalFrame.restoreButtonToolTip=\u8FD8\u539F +InternalFrame.closeButtonToolTip=\u5173\u95ED + +############ Internal Frame Title Pane Strings ############ +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 + +############ Text strings ############# +# Used for html forms +FormView.submitButtonText=\u63D0\u4EA4\u67E5\u8BE2 +FormView.resetButtonText=\u91CD\u7F6E +FormView.browseFileButtonText=\u6D4F\u89C8... + +############ Abstract Document Strings ############ +AbstractDocument.styleChangeText=\u6837\u5F0F\u66F4\u6539 +AbstractDocument.additionText=\u6DFB\u52A0 +AbstractDocument.deletionText=\u5220\u9664 +AbstractDocument.undoText=\u64A4\u6D88 +AbstractDocument.redoText=\u91CD\u505A + +############ Abstract Button Strings ############ +AbstractButton.clickText=\u5355\u51FB + +############ Abstract Undoable Edit Strings ############ +AbstractUndoableEdit.undoText=\u64A4\u6D88 +AbstractUndoableEdit.redoText=\u91CD\u505A + +############ Combo Box Strings ############ +ComboBox.togglePopupText=togglePopup + +############ Progress Monitor Strings ############ +ProgressMonitor.progressText=\u8FDB\u5EA6... + +############ Split Pane Strings ############ +SplitPane.leftButtonText=\u5DE6\u952E +SplitPane.rightButtonText=\u53F3\u952E +# Used for Isindex +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.maximizeButtonAccessibleName=\u6700\u5927\u5316 +InternalFrameTitlePane.closeButtonAccessibleName=\u5173\u95ED +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/macosx/classes/com/apple/laf/resources/aqua_zh_TW.properties Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,206 @@ +# +# 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. +# + +# This properties file is used to create a PropertyResourceBundle +# It contains Locale specific strings used in Swing +# Currently, it contains the additional strings needed for the Aqua versions of these components: +# +# FileChooser +# +# When this file is read in, the strings are put into the +# defaults table. This is an implementation detail of the current +# workings of Swing. DO NOT DEPEND ON THIS. +# This may change in future versions of Swing as we improve localization +# support. + +############ FILE CHOOSER STRINGS ############# +FileChooser.fileDescriptionText=\u4E00\u822C\u6A94\u6848 +FileChooser.directoryDescriptionText=\u76EE\u9304 +FileChooser.newFolderErrorText=\u5EFA\u7ACB\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4 +FileChooser.newFolderErrorSeparator= : +FileChooser.acceptAllFileFilterText=\u6240\u6709\u6A94\u6848 +FileChooser.cancelButtonText=\u53D6\u6D88 +FileChooser.saveButtonText=\u5132\u5B58 +FileChooser.openButtonText=\u958B\u555F +FileChooser.saveDialogTitleText=\u5132\u5B58 +FileChooser.openDialogTitleText=\u958B\u555F +FileChooser.updateButtonText=\u66F4\u65B0 +FileChooser.helpButtonText=\u8AAA\u660E +FileChooser.directoryOpenButtonText=\u958B\u555F + +# File Size Units +FileChooser.fileSizeKiloBytes={0} KB +FileChooser.fileSizeMegaBytes={0} MB +FileChooser.fileSizeGigaBytes={0} GB + +// Mac-specific strings +FileChooser.saveTitleText=\u5132\u5B58 +FileChooser.openTitleText=\u958B\u555F +FileChooser.newFolderExistsErrorText=\u8A72\u540D\u7A31\u5DF2\u7D93\u88AB\u4F7F\u7528 +FileChooser.chooseButtonText=\u9078\u64C7 + +FileChooser.newFolderButtonText=\u65B0\u8CC7\u6599\u593E +FileChooser.newFolderTitleText=\u65B0\u8CC7\u6599\u593E +FileChooser.fileNameLabelText=\u6A94\u6848: +FileChooser.saveDialogFileNameLabelText=\u53E6\u5B58\u65B0\u6A94: +FileChooser.filesOfTypeLabelText=\u6A94\u6848\u683C\u5F0F: + +FileChooser.desktopName=\u684C\u9762 +FileChooser.newFolderPromptText=\u65B0\u8CC7\u6599\u593E\u540D\u7A31: +FileChooser.untitledFolderName=\u672A\u547D\u540D\u7684\u8CC7\u6599\u593E +FileChooser.untitledFileName=\u672A\u547D\u540D +FileChooser.createButtonText=\u5EFA\u7ACB + +FileChooser.byDateText=\u4FEE\u6539\u65E5\u671F +FileChooser.byNameText=\u540D\u7A31 +FileChooser.newFolderAccessibleName=\u65B0\u8CC7\u6599\u593E + +FileChooser.mac.newFolder=\u672A\u547D\u540D\u7684\u8CC7\u6599\u593E +FileChooser.mac.newFolder.subsequent=\u672A\u547D\u540D\u7684\u8CC7\u6599\u593E {0} + + +############ COLOR CHOOSER STRINGS ############# +ColorChooser.previewText=\u9810\u89BD +ColorChooser.okText=\u78BA\u5B9A +ColorChooser.cancelText=\u53D6\u6D88 +ColorChooser.resetText=\u91CD\u8A2D(R) +# 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.swatchesMnemonic=83 +ColorChooser.swatchesDisplayedMnemonicIndex=0 +ColorChooser.swatchesRecentText=\u6700\u65B0\u9078\u64C7: +ColorChooser.hsbNameText=HSB(H) +# 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.rgbNameText=RGB(G) +ColorChooser.rgbMnemonic=71 +ColorChooser.rgbDisplayedMnemonicIndex=1 +ColorChooser.rgbRedText=\u7D05(D) +ColorChooser.rgbRedMnemonic=68 +ColorChooser.rgbGreenText=\u7DA0(N) +ColorChooser.rgbGreenMnemonic=78 +ColorChooser.rgbBlueText=\u85CD(B) +ColorChooser.rgbBlueMnemonic=66 + +############ 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.yesButtonMnemonic=89 +OptionPane.noButtonText=\u5426(N) +OptionPane.noButtonMnemonic=78 +OptionPane.okButtonText=OK +#OptionPane.okButtonMnemonic=0 +OptionPane.cancelButtonText=\u53D6\u6D88 +#OptionPane.cancelButtonMnemonic=0 +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 +# 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 + +############ Printing Dialog Strings ############ +PrintingDialog.titleProgressText=\u5217\u5370\u4E2D +PrintingDialog.titleAbortingText=\u5217\u5370 (\u4E2D\u6B62\u4E2D) + +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\u7B2C {0} \u9801... + +PrintingDialog.contentAbortingText=\u6B63\u5728\u4E2D\u6B62\u5217\u5370... + +PrintingDialog.abortButtonText=\u4E2D\u6B62(A) +PrintingDialog.abortButtonMnemonic=65 +PrintingDialog.abortButtonDisplayedMnemonicIndex=0 +PrintingDialog.abortButtonToolTipText=\u4E2D\u6B62\u5217\u5370 + +############ Internal Frame Strings ############ +InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316 +InternalFrame.maxButtonToolTip=\u6700\u5927\u5316 +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.maximizeButtonText=\u6700\u5927\u5316 +InternalFrameTitlePane.closeButtonText=\u95DC\u9589 + +############ Text strings ############# +# Used for html forms +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 + +############ Abstract Button Strings ############ +AbstractButton.clickText=\u6309\u4E00\u4E0B + +############ Abstract Undoable Edit Strings ############ +AbstractUndoableEdit.undoText=\u9084\u539F +AbstractUndoableEdit.redoText=\u91CD\u505A + +############ Combo Box Strings ############ +ComboBox.togglePopupText=\u5207\u63DB\u5373\u73FE\u5F0F\u8996\u7A97 + +############ Progress Monitor Strings ############ +ProgressMonitor.progressText=\u9032\u5EA6... + +############ Split Pane Strings ############ +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: + +############ InternalFrameTitlePane Strings ############ +InternalFrameTitlePane.iconifyButtonAccessibleName=\u5716\u793A\u5316 +InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316 +InternalFrameTitlePane.closeButtonAccessibleName=\u95DC\u9589 +
--- a/src/macosx/classes/sun/lwawt/LWCanvasPeer.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/LWCanvasPeer.java Sun Feb 19 22:03:12 2012 -0800 @@ -26,11 +26,17 @@ package sun.lwawt; +import sun.awt.CGraphicsConfig; + import java.awt.BufferCapabilities; +import java.awt.BufferCapabilities.FlipContents; import java.awt.Canvas; import java.awt.Component; +import java.awt.Graphics; +import java.awt.Graphics2D; import java.awt.GraphicsConfiguration; import java.awt.Image; +import java.awt.image.VolatileImage; import java.awt.peer.CanvasPeer; import javax.swing.JComponent; @@ -38,32 +44,69 @@ final class LWCanvasPeer extends LWComponentPeer<Component, JComponent> implements CanvasPeer { - LWCanvasPeer(final Canvas target, PlatformComponent platformComponent) { + /** + * The back buffer provide user with a BufferStrategy. + */ + private VolatileImage backBuffer; + + LWCanvasPeer(final Canvas target, + final PlatformComponent platformComponent) { super(target, platformComponent); } - // ---- PEER METHODS ---- // - @Override - public void createBuffers(int numBuffers, BufferCapabilities caps) { - // TODO + public void createBuffers(final int numBuffers, + final BufferCapabilities caps) { + //TODO parameters should be used. + final CGraphicsConfig gc = (CGraphicsConfig) getGraphicsConfiguration(); + final VolatileImage buffer = gc.createBackBufferImage(getTarget(), 0); + synchronized (getStateLock()) { + backBuffer = buffer; + } } @Override public Image getBackBuffer() { - // TODO - return null; + synchronized (getStateLock()) { + return backBuffer; + } } @Override - public void flip(int x1, int y1, int x2, int y2, - BufferCapabilities.FlipContents flipAction) { - // TODO + public void flip(final int x1, final int y1, final int x2, final int y2, + final FlipContents flipAction) { + final VolatileImage buffer = (VolatileImage) getBackBuffer(); + if (buffer == null) { + throw new IllegalStateException("Buffers have not been created"); + } + final Graphics g = getGraphics(); + try { + g.drawImage(buffer, x1, y1, x2, y2, x1, y1, x2, y2, null); + } finally { + g.dispose(); + } + if (flipAction == FlipContents.BACKGROUND) { + final Graphics2D bg = (Graphics2D) buffer.getGraphics(); + try { + bg.setBackground(getBackground()); + bg.clearRect(0, 0, buffer.getWidth(), buffer.getHeight()); + } finally { + bg.dispose(); + } + } } @Override public void destroyBuffers() { - // TODO + final Image buffer = getBackBuffer(); + if (buffer != null) { + synchronized (getStateLock()) { + if (buffer == backBuffer) { + backBuffer = null; + } + } + buffer.flush(); + } } @Override
--- a/src/macosx/classes/sun/lwawt/LWComponentPeer.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/LWComponentPeer.java Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1141,9 +1141,9 @@ me.getModifiers(), me.getX(), me.getY(), me.getClickCount(), - false, // popupTrigger - MouseWheelEvent.WHEEL_UNIT_SCROLL, - 3, // TODO: wheel scroll amount + me.isPopupTrigger(), + me.getScrollType(), + me.getScrollAmount(), me.getWheelRotation()); } else if (e instanceof MouseEvent) { MouseEvent me = (MouseEvent) e; @@ -1199,15 +1199,14 @@ } /** - * Peers with null delegates should clear background before paint. + * All peers should clear background before paint. * * @return false on components that DO NOT require a clearRect() before * painting. */ protected final boolean shouldClearRectBeforePaint() { - // By default, just fill the entire bounds with a bg color // TODO: sun.awt.noerasebackground - return getDelegate() == null; + return true; } /**
--- a/src/macosx/classes/sun/lwawt/LWRepaintArea.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/LWRepaintArea.java Sun Feb 19 22:03:12 2012 -0800 @@ -39,12 +39,8 @@ @Override protected void updateComponent(final Component comp, final Graphics g) { if (comp != null) { - final LWComponentPeer peer = (LWComponentPeer) comp.getPeer(); - if (peer != null) { - peer.paintPeer(g); - } super.updateComponent(comp, g); - flushBuffers(peer); + flushBuffers((LWComponentPeer) comp.getPeer()); } }
--- a/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java Sun Feb 19 22:03:12 2012 -0800 @@ -31,6 +31,7 @@ import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; import java.awt.peer.TextFieldPeer; import javax.swing.JPasswordField; @@ -97,6 +98,21 @@ getText(), e.getWhen(), e.getModifiers())); } + /** + * Restoring native behavior. We should sets the selection range to zero, + * when component lost its focus. + * + * @param e the focus event + */ + @Override + protected void handleJavaFocusEvent(final FocusEvent e) { + if (e.getID() == FocusEvent.FOCUS_LOST) { + // In order to de-select the selection + setCaretPosition(0); + } + super.handleJavaFocusEvent(e); + } + private final class JTextAreaDelegate extends JPasswordField { // Empty non private constructor was added because access to this
--- a/src/macosx/classes/sun/lwawt/LWWindowPeer.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/LWWindowPeer.java Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -162,10 +162,6 @@ @Override public void initialize() { - super.initialize(); - - updateInsets(platformWindow.getInsets()); - if (getTarget() instanceof Frame) { setTitle(((Frame)getTarget()).getTitle()); setState(((Frame)getTarget()).getExtendedState()); @@ -181,8 +177,9 @@ setOpacity(getTarget().getOpacity()); setOpaque(getTarget().isOpaque()); - // Create surface data and back buffer - replaceSurfaceData(1, null); + super.initialize(); + + updateInsets(platformWindow.getInsets()); } // Just a helper method @@ -319,6 +316,7 @@ public void flip(int x1, int y1, int x2, int y2, BufferCapabilities.FlipContents flipAction) { + //Note: constraints must be applied. see applyConstrain(). platformWindow.flip(x1, y1, x2, y2, flipAction); } @@ -410,7 +408,11 @@ @Override public void setModalBlocked(Dialog blocker, boolean blocked) { synchronized (getPeerTreeLock()) { - this.blocker = blocked ? (LWWindowPeer)blocker.getPeer() : null; + if(blocked && blocker.getPeer() instanceof LWWindowPeer) { + this.blocker = (LWWindowPeer)blocker.getPeer(); + } else { + this.blocker = null; + } } } @@ -434,18 +436,20 @@ @Override public void setOpacity(float opacity) { getPlatformWindow().setOpacity(opacity); + repaintPeer(); } @Override - public void setOpaque(boolean isOpaque) { + public final void setOpaque(final boolean isOpaque) { if (this.isOpaque != isOpaque) { this.isOpaque = isOpaque; getPlatformWindow().setOpaque(isOpaque); replaceSurfaceData(); + repaintPeer(); } } - public boolean isOpaque() { + public final boolean isOpaque() { return isOpaque; } @@ -1048,6 +1052,7 @@ if (changed) { replaceSurfaceData(); + repaintPeer(); } return changed;
--- a/src/macosx/classes/sun/lwawt/macosx/CCustomCursor.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/macosx/CCustomCursor.java Sun Feb 19 22:03:12 2012 -0800 @@ -36,6 +36,7 @@ } Image fImage; + private boolean isImageOk = false; Point fHotspot; public CCustomCursor(final Image cursor, final Point hotSpot, final String name) throws IndexOutOfBoundsException, HeadlessException { @@ -64,6 +65,9 @@ // but we need to set the hotspot inside the image here. if (tracker.isErrorAny() || width < 0 || height < 0) { fHotspot.x = fHotspot.y = 0; + isImageOk = false; + } else { + isImageOk = true; } // Scale image to nearest supported size @@ -110,9 +114,20 @@ // Returns long array of [NSImage ptr, x hotspot, y hotspot] CImage fCImage; long getImageData() { - if (fCImage == null) { + if (fCImage != null) { + return fCImage.ptr; + } + + if (isImageOk) { try { fCImage = CImage.getCreator().createFromImage(fImage); + + if (fCImage == null) { + isImageOk = false; + return 0L; + } else { + return fCImage.ptr; + } } catch (IllegalArgumentException iae) { // Silently return null - we want to hide cursor by providing an empty // ByteArray or just null @@ -120,7 +135,7 @@ } } - return fCImage.ptr; + return 0L; } Point getHotSpot() {
--- a/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java Sun Feb 19 22:03:12 2012 -0800 @@ -273,8 +273,31 @@ @Override protected ByteArrayOutputStream convertFileListToBytes(ArrayList<String> fileList) throws IOException { - // TODO Auto-generated method stub - return null; + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + for (int i = 0; i < fileList.size(); i++) + { + byte[] bytes = fileList.get(i).getBytes(); + bos.write(bytes, 0, bytes.length); + bos.write(0); + } + return bos; + } + + @Override + protected boolean isURIListFormat(long format) { + String nat = getNativeForFormat(format); + if (nat == null) { + return false; + } + try { + DataFlavor df = new DataFlavor(nat); + if (df.getPrimaryType().equals("text") && df.getSubType().equals("uri-list")) { + return true; + } + } catch (Exception e) { + // Not a MIME format. + } + return false; } }
--- a/src/macosx/classes/sun/lwawt/macosx/CFileDialog.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/macosx/CFileDialog.java Sun Feb 19 22:03:12 2012 -0800 @@ -34,6 +34,7 @@ import java.io.*; import sun.awt.CausedFocusEvent.Cause; +import sun.awt.AWTAccessor; import sun.java2d.pipe.Region; class CFileDialog implements FileDialogPeer { @@ -53,33 +54,40 @@ title = " "; } - String userFileName = nativeRunFileDialog(title, - dialogMode, navigateApps, + String[] userFileNames = nativeRunFileDialog(title, + dialogMode, + target.isMultipleMode(), + navigateApps, target.getFilenameFilter() != null, target.getDirectory(), target.getFile()); - File file = null; - if (userFileName != null) { + String directory = null; + String file = null; + File[] files = null; + + if (userFileNames != null) { // the dialog wasn't cancelled - file = new File(userFileName); + int filesNumber = userFileNames.length; + files = new File[filesNumber]; + for (int i = 0; i < filesNumber; i++) { + files[i] = new File(userFileNames[i]); + } + + directory = files[0].getParent(); + // make sure directory always ends in '/' + if (!directory.endsWith(File.separator)) { + directory = directory + File.separator; + } + + file = files[0].getName(); // pick any file } - if (file != null) { - // make sure directory always ends in '/' - String parent = file.getParent(); - if (!parent.endsWith(File.separator)) { - parent = parent + File.separator; - } - - // store results back in component - target.setDirectory(parent); - target.setFile(file.getName()); - } else { - // setting file name to null is how we tell - // java client that user hit the cancel button - target.setFile(null); - } + // store results back in component + AWTAccessor.FileDialogAccessor accessor = AWTAccessor.getFileDialogAccessor(); + accessor.setDirectory(target, directory); + accessor.setFile(target, file); + accessor.setFiles(target, files); } finally { // Java2 Dialog waits for hide to let show() return target.dispose(); @@ -133,8 +141,8 @@ return ret; } - private native String nativeRunFileDialog(String title, int mode, - boolean shouldNavigateApps, boolean hasFilenameFilter, + private native String[] nativeRunFileDialog(String title, int mode, + boolean multipleMode, boolean shouldNavigateApps, boolean hasFilenameFilter, String directory, String file); @Override
--- a/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java Sun Feb 19 22:03:12 2012 -0800 @@ -34,33 +34,33 @@ import java.awt.event.MouseWheelEvent; import java.awt.event.KeyEvent; -/* +/** * Translates NSEvents/NPCocoaEvents into AWT events. */ -public class CPlatformResponder { +final class CPlatformResponder { - private LWWindowPeer peer; - private boolean isNpapiCallback; + private final LWWindowPeer peer; + private final boolean isNpapiCallback; - public CPlatformResponder(LWWindowPeer peer, boolean isNpapiCallback) { + CPlatformResponder(final LWWindowPeer peer, final boolean isNpapiCallback) { this.peer = peer; this.isNpapiCallback = isNpapiCallback; } - /* + /** * Handles mouse events. */ - public void handleMouseEvent(int eventType, int modifierFlags, int buttonNumber, - int clickCount, int x, int y, int absoluteX, int absoluteY) - { + void handleMouseEvent(int eventType, int modifierFlags, int buttonNumber, + int clickCount, int x, int y, int absoluteX, + int absoluteY) { final SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit(); if ((buttonNumber > 2 && !tk.areExtraMouseButtonsEnabled()) || buttonNumber > tk.getNumberOfButtons() - 1) { return; } - int jeventType = isNpapiCallback ? NSEvent.npEventTypeToJavaEventType(eventType) : - NSEvent.nsEventTypeToJavaEventType(eventType); + int jeventType = isNpapiCallback ? NSEvent.npToJavaEventType(eventType) : + NSEvent.nsToJavaEventType(eventType); int jbuttonNumber = MouseEvent.NOBUTTON; int jclickCount = 0; @@ -69,11 +69,12 @@ jeventType != MouseEvent.MOUSE_ENTERED && jeventType != MouseEvent.MOUSE_EXITED) { - jbuttonNumber = NSEvent.nsButtonToJavaButton(buttonNumber); + jbuttonNumber = NSEvent.nsToJavaButton(buttonNumber); jclickCount = clickCount; } - int jmodifiers = NSEvent.nsMouseModifiersToJavaMouseModifiers(buttonNumber, modifierFlags); + int jmodifiers = NSEvent.nsToJavaMouseModifiers(buttonNumber, + modifierFlags); boolean jpopupTrigger = NSEvent.isPopupTrigger(jmodifiers); peer.dispatchMouseEvent(jeventType, System.currentTimeMillis(), jbuttonNumber, @@ -81,35 +82,48 @@ jpopupTrigger, null); } - /* + /** * Handles scroll events. */ - public void handleScrollEvent(int x, int y, int modifierFlags, - double deltaX, double deltaY) - { - int buttonNumber = CocoaConstants.kCGMouseButtonCenter; - int jmodifiers = NSEvent.nsMouseModifiersToJavaMouseModifiers(buttonNumber, modifierFlags); - - double wheelDelta = deltaY; + void handleScrollEvent(final int x, final int y, final int modifierFlags, + final double deltaX, final double deltaY) { + final int buttonNumber = CocoaConstants.kCGMouseButtonCenter; + int jmodifiers = NSEvent.nsToJavaMouseModifiers(buttonNumber, + modifierFlags); + final boolean isShift = (jmodifiers & InputEvent.SHIFT_DOWN_MASK) != 0; - // Shirt+vertical wheel scroll produces horizontal scroll - if ((jmodifiers & InputEvent.SHIFT_DOWN_MASK) != 0) { - wheelDelta = deltaX; + // Vertical scroll. + if (!isShift && deltaY != 0.0) { + dispatchScrollEvent(x, y, jmodifiers, deltaY); } - // Wheel amount "oriented" inside out - wheelDelta = -wheelDelta; - - peer.dispatchMouseWheelEvent(System.currentTimeMillis(), x, y, jmodifiers, - MouseWheelEvent.WHEEL_UNIT_SCROLL, 3, // WHEEL_SCROLL_AMOUNT - (int)wheelDelta, wheelDelta, null); + // Horizontal scroll or shirt+vertical scroll. + final double delta = isShift && deltaY != 0.0 ? deltaY : deltaX; + if (delta != 0.0) { + jmodifiers |= InputEvent.SHIFT_DOWN_MASK; + dispatchScrollEvent(x, y, jmodifiers, delta); + } } - /* + private void dispatchScrollEvent(final int x, final int y, + final int modifiers, final double delta) { + final long when = System.currentTimeMillis(); + final int scrollType = MouseWheelEvent.WHEEL_UNIT_SCROLL; + final int scrollAmount = 1; + int wheelRotation = (int) delta; + int signum = (int) Math.signum(delta); + if (signum * delta < 1) { + wheelRotation = signum; + } + // invert the wheelRotation for the peer + peer.dispatchMouseWheelEvent(when, x, y, modifiers, scrollType, + scrollAmount, -wheelRotation, -delta, null); + } + + /** * Handles key events. */ - public void handleKeyEvent(int eventType, int modifierFlags, String chars, - short keyCode) - { + void handleKeyEvent(int eventType, int modifierFlags, String chars, + short keyCode) { boolean isFlagsChangedEvent = isNpapiCallback ? (eventType == CocoaConstants.NPCocoaEventFlagsChanged) : (eventType == CocoaConstants.NSFlagsChanged); @@ -139,22 +153,31 @@ int[] in = new int[] {testChar, testDeadChar, modifierFlags, keyCode}; int[] out = new int[2]; // [jkeyCode, jkeyLocation] - postsTyped = NSEvent.nsKeyInfoToJavaKeyInfo(in, out); + postsTyped = NSEvent.nsToJavaKeyInfo(in, out); if (!postsTyped) { testChar = KeyEvent.CHAR_UNDEFINED; } jkeyCode = out[0]; jkeyLocation = out[1]; - jeventType = isNpapiCallback ? NSEvent.npEventTypeToJavaEventType(eventType) : - NSEvent.nsEventTypeToJavaEventType(eventType); + jeventType = isNpapiCallback ? NSEvent.npToJavaEventType(eventType) : + NSEvent.nsToJavaEventType(eventType); } - int jmodifiers = NSEvent.nsKeyModifiersToJavaKeyModifiers(modifierFlags); + char javaChar = NSEvent.nsToJavaChar(testChar, modifierFlags); + // Some keys may generate a KEY_TYPED, but we can't determine + // what that character is. That's likely a bug, but for now we + // just check for CHAR_UNDEFINED. + if (javaChar == KeyEvent.CHAR_UNDEFINED) { + postsTyped = false; + } + + + int jmodifiers = NSEvent.nsToJavaKeyModifiers(modifierFlags); long when = System.currentTimeMillis(); peer.dispatchKeyEvent(jeventType, when, jmodifiers, - jkeyCode, testChar, jkeyLocation); + jkeyCode, javaChar, jkeyLocation); // That's the reaction on the PRESSED (not RELEASED) event as it comes to // appear in MacOSX. @@ -164,7 +187,7 @@ boolean isMetaDown = (jmodifiers & KeyEvent.META_DOWN_MASK) != 0; if (jeventType == KeyEvent.KEY_PRESSED && postsTyped && !isMetaDown) { peer.dispatchKeyEvent(KeyEvent.KEY_TYPED, when, jmodifiers, - KeyEvent.VK_UNDEFINED, testChar, + KeyEvent.VK_UNDEFINED, javaChar, KeyEvent.KEY_LOCATION_UNKNOWN); } }
--- a/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java Sun Feb 19 22:03:12 2012 -0800 @@ -588,11 +588,19 @@ @Override public void setResizable(boolean resizable) { setStyleBits(RESIZABLE, resizable); + + // Re-apply the size constraints and the size to ensure the space + // occupied by the grow box is counted properly + setMinimumSize(1, 1); // the method ignores its arguments + + Rectangle bounds = peer.getBounds(); + setBounds(bounds.x, bounds.y, bounds.width, bounds.height); } @Override public void setMinimumSize(int width, int height) { //TODO width, height should be used + //NOTE: setResizable() calls setMinimumSize(1,1) relaying on the logic below final long nsWindowPtr = getNSWindowPtr(); final Dimension min = target.getMinimumSize(); final Dimension max = target.getMaximumSize();
--- a/src/macosx/classes/sun/lwawt/macosx/event/NSEvent.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/classes/sun/lwawt/macosx/event/NSEvent.java Sun Feb 19 22:03:12 2012 -0800 @@ -28,11 +28,10 @@ import sun.lwawt.macosx.CocoaConstants; import java.awt.event.*; -/* - * A class representing Cocoa NSEvent class with - * the fields only necessary for JDK functionality. +/** + * A class representing Cocoa NSEvent class with the fields only necessary for + * JDK functionality. */ - public final class NSEvent { private int type; private int modifierFlags; @@ -132,7 +131,7 @@ /* * Converts an NSEvent button number to a MouseEvent constant. */ - public static int nsButtonToJavaButton(int buttonNumber) { + public static int nsToJavaButton(int buttonNumber) { int jbuttonNumber = buttonNumber + 1; switch (buttonNumber) { case CocoaConstants.kCGMouseButtonLeft: @@ -151,7 +150,7 @@ /* * Converts NPCocoaEvent types to AWT event types. */ - public static int npEventTypeToJavaEventType(int npEventType) { + public static int npToJavaEventType(int npEventType) { int jeventType = 0; switch (npEventType) { case CocoaConstants.NPCocoaEventMouseDown: @@ -185,7 +184,7 @@ /* * Converts NSEvent types to AWT event types. */ - public static int nsEventTypeToJavaEventType(int nsEventType) { + public static int nsToJavaEventType(int nsEventType) { int jeventType = 0; switch (nsEventType) { case CocoaConstants.NSLeftMouseDown: @@ -228,24 +227,30 @@ /* * Converts NSEvent mouse modifiers to AWT mouse modifiers. */ - public static native int nsMouseModifiersToJavaMouseModifiers(int buttonNumber, - int modifierFlags); + public static native int nsToJavaMouseModifiers(int buttonNumber, + int modifierFlags); /* * Converts NSEvent key modifiers to AWT key modifiers. */ - public static native int nsKeyModifiersToJavaKeyModifiers(int modifierFlags); + public static native int nsToJavaKeyModifiers(int modifierFlags); /* * Converts NSEvent key info to AWT key info. */ - public static native boolean nsKeyInfoToJavaKeyInfo(int[] in, int[] out); + public static native boolean nsToJavaKeyInfo(int[] in, int[] out); /* * Converts NSEvent key modifiers to AWT key info. */ public static native void nsKeyModifiersToJavaKeyInfo(int[] in, int[] out); + /* + * There is a small number of NS characters that need to be converted + * into other characters before we pass them to AWT. + */ + public static native char nsToJavaChar(char nsChar, int modifierFlags); + public static boolean isPopupTrigger(int jmodifiers) { final boolean isRightButtonDown = ((jmodifiers & InputEvent.BUTTON3_DOWN_MASK) != 0); final boolean isLeftButtonDown = ((jmodifiers & InputEvent.BUTTON1_DOWN_MASK) != 0);
--- a/src/macosx/native/apple/security/KeystoreImpl.m Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/native/apple/security/KeystoreImpl.m Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -337,7 +337,6 @@ // Call back to the Java object to create Java objects corresponding to this security object. jlong nativeKeyRef = ptr_to_jlong(privateKeyRef); JNFCallVoidMethod(env, keyStore, jm_createKeyEntry, alias, creationDate, nativeKeyRef, certRefArray, javaCertArray); - break; } } while (searchResult == noErr);
--- a/src/macosx/native/com/sun/media/sound/PLATFORM_API_MacOSX_PCM.cpp Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/native/com/sun/media/sound/PLATFORM_API_MacOSX_PCM.cpp Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. * 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,9 @@ #include <AudioUnit/AudioUnit.h> #include <CoreServices/CoreServices.h> +#include <AudioToolbox/AudioConverter.h> #include <pthread.h> +#include <math.h> /* #if !defined(__COREAUDIO_USE_FLAT_INCLUDES__) #include <CoreAudio/CoreAudioTypes.h> @@ -49,14 +51,14 @@ #ifdef USE_TRACE -static void PrintStreamDesc(AudioStreamBasicDescription *inDesc) { +static void PrintStreamDesc(const AudioStreamBasicDescription *inDesc) { TRACE4("ID='%c%c%c%c'", (char)(inDesc->mFormatID >> 24), (char)(inDesc->mFormatID >> 16), (char)(inDesc->mFormatID >> 8), (char)(inDesc->mFormatID)); TRACE2(", %f Hz, flags=0x%lX", (float)inDesc->mSampleRate, (long unsigned)inDesc->mFormatFlags); TRACE2(", %ld channels, %ld bits", (long)inDesc->mChannelsPerFrame, (long)inDesc->mBitsPerChannel); TRACE1(", %ld bytes per frame\n", (long)inDesc->mBytesPerFrame); } #else -static inline void PrintStreamDesc(AudioStreamBasicDescription *inDesc) { } +static inline void PrintStreamDesc(const AudioStreamBasicDescription *inDesc) { } #endif @@ -130,8 +132,8 @@ float hardwareSampleRate = GetSampleRate(audioDeviceID, isSource); TRACE2(" DAUDIO_GetFormats: got %d channels, sampleRate == %f\n", totalChannels, hardwareSampleRate); - // target lines support only current sample rate! - float sampleRate = isSource ? -1 : hardwareSampleRate; + // any sample rates are supported + float sampleRate = -1; static int sampleBits[] = {8, 16, 24}; static int sampleBitsCount = sizeof(sampleBits)/sizeof(sampleBits[0]); @@ -402,6 +404,202 @@ }; +class Resampler { +private: + enum { + kResamplerEndOfInputData = 1 // error to interrupt conversion (end of input data) + }; +public: + Resampler() : converter(NULL), outBuffer(NULL) { } + ~Resampler() { + if (converter != NULL) { + AudioConverterDispose(converter); + } + if (outBuffer != NULL) { + free(outBuffer); + } + } + + // inFormat & outFormat must be interleaved! + bool Init(const AudioStreamBasicDescription *inFormat, const AudioStreamBasicDescription *outFormat, + int inputBufferSizeInBytes) + { + TRACE0(">>Resampler::Init\n"); + TRACE0(" inFormat: "); + PrintStreamDesc(inFormat); + TRACE0(" outFormat: "); + PrintStreamDesc(outFormat); + TRACE1(" inputBufferSize: %d bytes\n", inputBufferSizeInBytes); + OSStatus err; + + if ((outFormat->mFormatFlags & kAudioFormatFlagIsNonInterleaved) != 0 && outFormat->mChannelsPerFrame != 1) { + ERROR0("Resampler::Init ERROR: outFormat is non-interleaved\n"); + return false; + } + if ((inFormat->mFormatFlags & kAudioFormatFlagIsNonInterleaved) != 0 && inFormat->mChannelsPerFrame != 1) { + ERROR0("Resampler::Init ERROR: inFormat is non-interleaved\n"); + return false; + } + + memcpy(&asbdIn, inFormat, sizeof(AudioStreamBasicDescription)); + memcpy(&asbdOut, outFormat, sizeof(AudioStreamBasicDescription)); + + err = AudioConverterNew(inFormat, outFormat, &converter); + + if (err || converter == NULL) { + OS_ERROR1(err, "Resampler::Init (AudioConverterNew), converter=%p", converter); + return false; + } + + // allocate buffer for output data + int maximumInFrames = inputBufferSizeInBytes / inFormat->mBytesPerFrame; + // take into account trailingFrames + AudioConverterPrimeInfo primeInfo = {0, 0}; + UInt32 sizePrime = sizeof(primeInfo); + err = AudioConverterGetProperty(converter, kAudioConverterPrimeInfo, &sizePrime, &primeInfo); + if (err) { + OS_ERROR0(err, "Resampler::Init (get kAudioConverterPrimeInfo)"); + // ignore the error + } else { + // the default primeMethod is kConverterPrimeMethod_Normal, so we need only trailingFrames + maximumInFrames += primeInfo.trailingFrames; + } + float outBufferSizeInFrames = (outFormat->mSampleRate / inFormat->mSampleRate) * ((float)maximumInFrames); + // to avoid complex calculation just set outBufferSize as double of the calculated value + outBufferSize = (int)outBufferSizeInFrames * outFormat->mBytesPerFrame * 2; + // safety check - consider 256 frame as the minimum input buffer + int minOutSize = 256 * outFormat->mBytesPerFrame; + if (outBufferSize < minOutSize) { + outBufferSize = minOutSize; + } + + outBuffer = malloc(outBufferSize); + + if (outBuffer == NULL) { + ERROR1("Resampler::Init ERROR: malloc failed (%d bytes)\n", outBufferSize); + AudioConverterDispose(converter); + converter = NULL; + return false; + } + + TRACE1(" allocated: %d bytes for output buffer\n", outBufferSize); + + TRACE0("<<Resampler::Init: OK\n"); + return true; + } + + // returns size of the internal output buffer + int GetOutBufferSize() { + return outBufferSize; + } + + // process next part of data (writes resampled data to the ringBuffer without overflow check) + int Process(void *srcBuffer, int len, RingBuffer *ringBuffer) { + int bytesWritten = 0; + TRACE2(">>Resampler::Process: %d bytes, converter = %p\n", len, converter); + if (converter == NULL) { // sanity check + bytesWritten = ringBuffer->Write(srcBuffer, len, false); + } else { + InputProcData data; + data.pThis = this; + data.data = (Byte *)srcBuffer; + data.dataSize = len; + + OSStatus err; + do { + AudioBufferList abl; // by default it contains 1 AudioBuffer + abl.mNumberBuffers = 1; + abl.mBuffers[0].mNumberChannels = asbdOut.mChannelsPerFrame; + abl.mBuffers[0].mDataByteSize = outBufferSize; + abl.mBuffers[0].mData = outBuffer; + + UInt32 packets = (UInt32)outBufferSize / asbdOut.mBytesPerPacket; + + TRACE2(">>AudioConverterFillComplexBuffer: request %d packets, provide %d bytes buffer\n", + (int)packets, (int)abl.mBuffers[0].mDataByteSize); + + err = AudioConverterFillComplexBuffer(converter, ConverterInputProc, &data, &packets, &abl, NULL); + + TRACE2("<<AudioConverterFillComplexBuffer: got %d packets (%d bytes)\n", + (int)packets, (int)abl.mBuffers[0].mDataByteSize); + if (packets > 0) { + int bytesToWrite = (int)(packets * asbdOut.mBytesPerPacket); + bytesWritten += ringBuffer->Write(abl.mBuffers[0].mData, bytesToWrite, false); + } + + // if outputBuffer is small to store all available frames, + // we get noErr here. In the case just continue the conversion + } while (err == noErr); + + if (err != kResamplerEndOfInputData) { + // unexpected error + OS_ERROR0(err, "Resampler::Process (AudioConverterFillComplexBuffer)"); + } + } + TRACE2("<<Resampler::Process: written %d bytes (converted from %d bytes)\n", bytesWritten, len); + + return bytesWritten; + } + + // resets internal bufferes + void Discontinue() { + TRACE0(">>Resampler::Discontinue\n"); + if (converter != NULL) { + AudioConverterReset(converter); + } + TRACE0("<<Resampler::Discontinue\n"); + } + +private: + AudioConverterRef converter; + + // buffer for output data + // note that there is no problem if the buffer is not big enough to store + // all converted data - it's only performance issue + void *outBuffer; + int outBufferSize; + + AudioStreamBasicDescription asbdIn; + AudioStreamBasicDescription asbdOut; + + struct InputProcData { + Resampler *pThis; + Byte *data; // data == NULL means we handle Discontinue(false) + int dataSize; // == 0 if all data was already provided to the converted of we handle Discontinue(false) + }; + + static OSStatus ConverterInputProc(AudioConverterRef inAudioConverter, UInt32 *ioNumberDataPackets, + AudioBufferList *ioData, AudioStreamPacketDescription **outDataPacketDescription, void *inUserData) + { + InputProcData *data = (InputProcData *)inUserData; + + TRACE3(" >>ConverterInputProc: requested %d packets, data contains %d bytes (%d packets)\n", + (int)*ioNumberDataPackets, (int)data->dataSize, (int)(data->dataSize / data->pThis->asbdIn.mBytesPerPacket)); + if (data->dataSize == 0) { + // already called & provided all input data + // interrupt conversion by returning error + *ioNumberDataPackets = 0; + TRACE0(" <<ConverterInputProc: returns kResamplerEndOfInputData\n"); + return kResamplerEndOfInputData; + } + + ioData->mNumberBuffers = 1; + ioData->mBuffers[0].mNumberChannels = data->pThis->asbdIn.mChannelsPerFrame; + ioData->mBuffers[0].mDataByteSize = data->dataSize; + ioData->mBuffers[0].mData = data->data; + + *ioNumberDataPackets = data->dataSize / data->pThis->asbdIn.mBytesPerPacket; + + // all data has been provided to the converter + data->dataSize = 0; + + TRACE1(" <<ConverterInputProc: returns %d packets\n", (int)(*ioNumberDataPackets)); + return noErr; + } + +}; + + struct OSX_DirectAudioDevice { AudioUnit audioUnit; RingBuffer ringBuffer; @@ -409,14 +607,21 @@ // only for target lines UInt32 inputBufferSizeInBytes; + Resampler *resampler; + // to detect discontinuity (to reset resampler) + SInt64 lastWrittenSampleTime; - OSX_DirectAudioDevice() : audioUnit(NULL), asbd() { + + OSX_DirectAudioDevice() : audioUnit(NULL), asbd(), resampler(NULL), lastWrittenSampleTime(0) { } ~OSX_DirectAudioDevice() { if (audioUnit) { CloseComponent(audioUnit); } + if (resampler) { + delete resampler; + } } }; @@ -426,15 +631,15 @@ AudioUnit unit; UInt32 size; - ComponentDescription desc; - desc.componentType = kAudioUnitType_Output; - desc.componentSubType = (deviceID == 0 && isSource) ? kAudioUnitSubType_DefaultOutput : kAudioUnitSubType_HALOutput; - desc.componentManufacturer = kAudioUnitManufacturer_Apple; - desc.componentFlags = 0; - desc.componentFlagsMask = 0; + ComponentDescription desc; + desc.componentType = kAudioUnitType_Output; + desc.componentSubType = (deviceID == 0 && isSource) ? kAudioUnitSubType_DefaultOutput : kAudioUnitSubType_HALOutput; + desc.componentManufacturer = kAudioUnitManufacturer_Apple; + desc.componentFlags = 0; + desc.componentFlagsMask = 0; Component comp = FindNextComponent(NULL, &desc); - err = OpenAComponent(comp, &unit); + err = OpenAComponent(comp, &unit); if (err) { OS_ERROR0(err, "CreateOutputUnit:OpenAComponent"); @@ -538,19 +743,54 @@ abl.mBuffers[0].mDataByteSize = device->inputBufferSizeInBytes; // assume this is == (inNumberFrames * device->asbd.mBytesPerFrame) abl.mBuffers[0].mData = NULL; // request for the audioUnit's buffer - // TODO: is it possible device->inputBufferSizeInBytes != inNumberFrames * device->asbd.mBytesPerFrame?? - OSStatus err = AudioUnitRender(device->audioUnit, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, &abl); if (err) { OS_ERROR0(err, "<<InputCallback: AudioUnitRender"); } else { - int bytesWritten = device->ringBuffer.Write(abl.mBuffers[0].mData, (int)abl.mBuffers[0].mDataByteSize, false); - TRACE2("<<InputCallback (saved %d bytes of %d)\n", bytesWritten, (int)abl.mBuffers[0].mDataByteSize); + if (device->resampler != NULL) { + // test for discontinuity + // AUHAL starts timestamps at zero, so test if the current timestamp less then the last written + SInt64 sampleTime = inTimeStamp->mSampleTime; + if (sampleTime < device->lastWrittenSampleTime) { + // discontinuity, reset the resampler + TRACE2(" InputCallback (RESAMPLED), DISCONTINUITY (%f -> %f)\n", + (float)device->lastWrittenSampleTime, (float)sampleTime); + + device->resampler->Discontinue(); + } else { + TRACE2(" InputCallback (RESAMPLED), continuous: lastWrittenSampleTime = %f, sampleTime=%f\n", + (float)device->lastWrittenSampleTime, (float)sampleTime); + } + device->lastWrittenSampleTime = sampleTime + inNumberFrames; + + int bytesWritten = device->resampler->Process(abl.mBuffers[0].mData, (int)abl.mBuffers[0].mDataByteSize, &device->ringBuffer); + TRACE2("<<InputCallback (RESAMPLED, saved %d bytes of %d)\n", bytesWritten, (int)abl.mBuffers[0].mDataByteSize); + } else { + int bytesWritten = device->ringBuffer.Write(abl.mBuffers[0].mData, (int)abl.mBuffers[0].mDataByteSize, false); + TRACE2("<<InputCallback (saved %d bytes of %d)\n", bytesWritten, (int)abl.mBuffers[0].mDataByteSize); + } } return noErr; } + +static void FillASBDForNonInterleavedPCM(AudioStreamBasicDescription& asbd, + float sampleRate, int channels, int sampleSizeInBits, bool isFloat, int isSigned, bool isBigEndian) +{ + // FillOutASBDForLPCM cannot produce unsigned integer format + asbd.mSampleRate = sampleRate; + asbd.mFormatID = kAudioFormatLinearPCM; + asbd.mFormatFlags = (isFloat ? kAudioFormatFlagIsFloat : (isSigned ? kAudioFormatFlagIsSignedInteger : 0)) + | (isBigEndian ? (kAudioFormatFlagIsBigEndian) : 0) + | kAudioFormatFlagIsPacked; + asbd.mBytesPerPacket = channels * ((sampleSizeInBits + 7) / 8); + asbd.mFramesPerPacket = 1; + asbd.mBytesPerFrame = asbd.mBytesPerPacket; + asbd.mChannelsPerFrame = channels; + asbd.mBitsPerChannel = sampleSizeInBits; +} + void* DAUDIO_Open(INT32 mixerIndex, INT32 deviceID, int isSource, int encoding, float sampleRate, int sampleSizeInBits, int frameSize, int channels, @@ -580,9 +820,6 @@ return NULL; } - // TODO: for target lines we should ensure that sampleRate == current device sample rate - // (othewise we get error -10863 (kAudioUnitErr_CannotDoInCurrentContext in AUComponent.h) from AudioUnitRender(in InputCallback)) - OSX_DirectAudioDevice *device = new OSX_DirectAudioDevice(); AudioUnitScope scope = isSource ? kAudioUnitScope_Input : kAudioUnitScope_Output; @@ -597,10 +834,24 @@ return NULL; } - FillOutASBDForLPCM(device->asbd, sampleRate, channels, sampleSizeInBits, sampleSizeInBits, 0, isBigEndian); - // Workaround for FillOutASBDForLPCM - it always set kAudioFormatFlagIsSignedInteger for non-float formats - if (!isSigned) { - device->asbd.mFormatFlags &= ~(UInt32)kAudioFormatFlagIsSignedInteger; + if (!isSource) { + AudioDeviceID actualDeviceID = deviceID != 0 ? deviceID : GetDefaultDevice(isSource); + float hardwareSampleRate = GetSampleRate(actualDeviceID, isSource); + TRACE2("--DAUDIO_Open: sampleRate = %f, hardwareSampleRate=%f\n", sampleRate, hardwareSampleRate); + + if (fabs(sampleRate - hardwareSampleRate) > 1) { + device->resampler = new Resampler(); + + // request HAL for Float32 with native endianess + FillASBDForNonInterleavedPCM(device->asbd, hardwareSampleRate, channels, 32, true, false, kAudioFormatFlagsNativeEndian != 0); + } else { + sampleRate = hardwareSampleRate; // in case sample rates are not exactly equal + } + } + + if (device->resampler == NULL) { + // no resampling, request HAL for the requested format + FillASBDForNonInterleavedPCM(device->asbd, sampleRate, channels, sampleSizeInBits, false, isSigned, isBigEndian); } err = AudioUnitSetProperty(device->audioUnit, kAudioUnitProperty_StreamFormat, scope, element, &device->asbd, sizeof(device->asbd)); @@ -633,7 +884,7 @@ } if (!isSource) { - // for target lines we need extra bytes in the buffer + // for target lines we need extra bytes in the ringBuffer // to prevent collisions when InputCallback overrides data on overflow UInt32 size; OSStatus err; @@ -646,10 +897,25 @@ delete device; return NULL; } - device->inputBufferSizeInBytes *= device->asbd.mBytesPerFrame; // convert frames by bytes + device->inputBufferSizeInBytes *= device->asbd.mBytesPerFrame; // convert frames to bytes extraBufferBytes = (int)device->inputBufferSizeInBytes; } + if (device->resampler != NULL) { + // resampler output format is a user requested format (== ringBuffer format) + AudioStreamBasicDescription asbdOut; // ringBuffer format + FillASBDForNonInterleavedPCM(asbdOut, sampleRate, channels, sampleSizeInBits, false, isSigned, isBigEndian); + + // set resampler input buffer size to the HAL buffer size + if (!device->resampler->Init(&device->asbd, &asbdOut, (int)device->inputBufferSizeInBytes)) { + ERROR0("<<DAUDIO_Open: resampler.Init() FAILED.\n"); + delete device; + return NULL; + } + // extra bytes in the ringBuffer (extraBufferBytes) should be equal resampler output buffer size + extraBufferBytes = device->resampler->GetOutBufferSize(); + } + if (!device->ringBuffer.Allocate(bufferSizeInBytes, extraBufferBytes)) { ERROR0("<<DAUDIO_Open: Ring buffer allocation error\n"); delete device;
--- a/src/macosx/native/jobjc/src/core/java/com/apple/jobjc/JObjCRuntime.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/native/jobjc/src/core/java/com/apple/jobjc/JObjCRuntime.java Sun Feb 19 22:03:12 2012 -0800 @@ -45,6 +45,7 @@ if("ppc".equals(arch)) return Arch.ppc; if("i386".equals(arch)) return Arch.i386; if("x86_64".equals(arch)) return Arch.x86_64; + if("amd64".equals(arch)) return Arch.x86_64; if("universal".equals(arch)) return Arch.x86_64; throw new RuntimeException("Did not recognize os.arch system property: '" + arch + "'"); }
--- a/src/macosx/native/sun/awt/AWTEvent.m Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/native/sun/awt/AWTEvent.m Sun Feb 19 22:03:12 2012 -0800 @@ -308,6 +308,9 @@ * Almost all unicode characters just go from NS to Java with no translation. * For the few exceptions, we handle it here with this small table. */ +#define ALL_NS_KEY_MODIFIERS_MASK \ + (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask) + static struct _char { NSUInteger modifier; unichar nsChar; @@ -315,17 +318,17 @@ } const charTable[] = { // map enter on keypad to same as return key - {0, NSEnterCharacter, NSNewlineCharacter}, + {0, NSEnterCharacter, NSNewlineCharacter}, // [3134616] return newline instead of carriage return - {0, NSCarriageReturnCharacter, NSNewlineCharacter}, + {0, NSCarriageReturnCharacter, NSNewlineCharacter}, // "delete" means backspace in Java - {0, NSDeleteCharacter, NSBackspaceCharacter}, - {0, NSDeleteFunctionKey, NSDeleteCharacter}, + {ALL_NS_KEY_MODIFIERS_MASK, NSDeleteCharacter, NSBackspaceCharacter}, + {ALL_NS_KEY_MODIFIERS_MASK, NSDeleteFunctionKey, NSDeleteCharacter}, // back-tab is only differentiated from tab by Shift flag - {NSShiftKeyMask, NSBackTabCharacter, NSTabCharacter}, + {NSShiftKeyMask, NSBackTabCharacter, NSTabCharacter}, {0, 0, 0} }; @@ -334,12 +337,8 @@ NsCharToJavaChar(unichar nsChar, NSUInteger modifiers) { const struct _char *cur; - NSUInteger keyModifierFlags = - NSShiftKeyMask | NSControlKeyMask | - NSAlternateKeyMask | NSCommandKeyMask; - // Mask off just the keyboard modifiers from the event modifier mask. - NSUInteger testableFlags = (modifiers & keyModifierFlags); + NSUInteger testableFlags = (modifiers & ALL_NS_KEY_MODIFIERS_MASK); // walk through table & find the match for (cur = charTable; cur->nsChar != 0 ; cur++) { @@ -954,11 +953,11 @@ /* * Class: sun_lwawt_macosx_event_NSEvent - * Method: nsMouseModifiersToJavaMouseModifiers + * Method: nsToJavaMouseModifiers * Signature: (II)I */ JNIEXPORT jint JNICALL -Java_sun_lwawt_macosx_event_NSEvent_nsMouseModifiersToJavaMouseModifiers +Java_sun_lwawt_macosx_event_NSEvent_nsToJavaMouseModifiers (JNIEnv *env, jclass cls, jint buttonNumber, jint modifierFlags) { jint jmodifiers = 0; @@ -974,11 +973,11 @@ /* * Class: sun_lwawt_macosx_event_NSEvent - * Method: nsKeyModifiersToJavaKeyModifiers + * Method: nsToJavaKeyModifiers * Signature: (I)I */ JNIEXPORT jint JNICALL -Java_sun_lwawt_macosx_event_NSEvent_nsKeyModifiersToJavaKeyModifiers +Java_sun_lwawt_macosx_event_NSEvent_nsToJavaKeyModifiers (JNIEnv *env, jclass cls, jint modifierFlags) { jint jmodifiers = 0; @@ -994,11 +993,11 @@ /* * Class: sun_lwawt_macosx_event_NSEvent - * Method: nsKeyInfoToJavaKeyInfo + * Method: nsToJavaKeyInfo * Signature: ([I[I)Z */ JNIEXPORT jboolean JNICALL -Java_sun_lwawt_macosx_event_NSEvent_nsKeyInfoToJavaKeyInfo +Java_sun_lwawt_macosx_event_NSEvent_nsToJavaKeyInfo (JNIEnv *env, jclass cls, jintArray inData, jintArray outData) { BOOL postsTyped = NO; @@ -1069,3 +1068,23 @@ JNF_COCOA_EXIT(env); } + +/* + * Class: sun_lwawt_macosx_event_NSEvent + * Method: nsToJavaChar + * Signature: (CI)C + */ +JNIEXPORT jint JNICALL +Java_sun_lwawt_macosx_event_NSEvent_nsToJavaChar +(JNIEnv *env, jclass cls, char nsChar, jint modifierFlags) +{ + jchar javaChar = 0; + +JNF_COCOA_ENTER(env); + + javaChar = NsCharToJavaChar(nsChar, modifierFlags); + +JNF_COCOA_EXIT(env); + + return javaChar; +}
--- a/src/macosx/native/sun/awt/AWTView.m Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/native/sun/awt/AWTView.m Sun Feb 19 22:03:12 2012 -0800 @@ -48,7 +48,6 @@ //#define IM_DEBUG TRUE //#define EXTRA_DEBUG - static BOOL shouldUsePressAndHold() { static int shouldUsePressAndHold = -1; if (shouldUsePressAndHold != -1) return shouldUsePressAndHold; @@ -373,6 +372,13 @@ } -(void) deliverJavaKeyEventHelper: (NSEvent *) event { + static id sUnretainedLastKeyEvent = nil; + if (event == sUnretainedLastKeyEvent) { + // The event is repeatedly delivered by keyDown: after performKeyEquivalent: + return; + } + sUnretainedLastKeyEvent = event; + [AWTToolkit eventCountPlusPlus]; JNIEnv *env = [ThreadUtilities getJNIEnv];
--- a/src/macosx/native/sun/awt/AWTWindow.m Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/native/sun/awt/AWTWindow.m Sun Feb 19 22:03:12 2012 -0800 @@ -40,6 +40,7 @@ #import "ThreadUtilities.h" #import "OSVersion.h" +static const float GROW_BOX_SIZE = 12.f; #define MASK(KEY) \ (sun_lwawt_macosx_CPlatformWindow_ ## KEY) @@ -50,7 +51,6 @@ #define SET(BITS, KEY, VALUE) \ BITS = VALUE ? BITS | MASK(KEY) : BITS & ~MASK(KEY) - static JNF_CLASS_CACHE(jc_CPlatformWindow, "sun/lwawt/macosx/CPlatformWindow"); @interface JavaResizeGrowBoxOverlayWindow : NSWindow { } @@ -158,13 +158,13 @@ } - (NSImage *) createGrowBoxImage { - NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize(12, 12)]; + NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize(GROW_BOX_SIZE, GROW_BOX_SIZE)]; JRSUIControlRef growBoxWidget = JRSUIControlCreate(FALSE); JRSUIControlSetWidget(growBoxWidget, kJRSUI_Widget_growBoxTextured); JRSUIControlSetWindowType(growBoxWidget, kJRSUI_WindowType_utility); JRSUIRendererRef renderer = JRSUIRendererCreate(); [image lockFocus]; // sets current graphics context to that of the image - JRSUIControlDraw(renderer, growBoxWidget, [[NSGraphicsContext currentContext] graphicsPort], CGRectMake(0, 1, 11, 11)); + JRSUIControlDraw(renderer, growBoxWidget, [[NSGraphicsContext currentContext] graphicsPort], CGRectMake(0, 1, GROW_BOX_SIZE - 1, GROW_BOX_SIZE - 1)); [image unlockFocus]; JRSUIRendererRelease(renderer); JRSUIControlRelease(growBoxWidget); @@ -547,6 +547,36 @@ } [super sendEvent:event]; } + +- (void)constrainSize:(NSSize*)size { + float minWidth = 0.f, minHeight = 0.f; + + if (IS(self.styleBits, DECORATED)) { + NSRect frame = [self frame]; + NSRect contentRect = [NSWindow contentRectForFrameRect:frame styleMask:[self styleMask]]; + + float top = frame.size.height - contentRect.size.height; + float left = contentRect.origin.x - frame.origin.x; + float bottom = contentRect.origin.y - frame.origin.y; + float right = frame.size.width - (contentRect.size.width + left); + + // Speculative estimation: 80 - enough for window decorations controls + minWidth += left + right + 80; + minHeight += top + bottom; + } + + if ([self shouldShowGrowBox]) { + minWidth = MAX(minWidth, GROW_BOX_SIZE); + minHeight += GROW_BOX_SIZE; + } + + minWidth = MAX(1.f, minWidth); + minHeight = MAX(1.f, minHeight); + + size->width = MAX(size->width, minWidth); + size->height = MAX(size->height, minHeight); +} + @end // AWTWindow @@ -702,6 +732,8 @@ AWT_ASSERT_APPKIT_THREAD; NSRect rect = ConvertNSScreenRect(NULL, jrect); + [window constrainSize:&rect.size]; + [window setFrame:rect display:YES]; // only start tracking events if pointer is above the toplevel @@ -733,13 +765,16 @@ if (maxW < 1) maxW = 1; if (maxH < 1) maxH = 1; - NSSize min = { minW, minH }; - NSSize max = { maxW, maxH }; - AWTWindow *window = OBJC(windowPtr); [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ AWT_ASSERT_APPKIT_THREAD; + NSSize min = { minW, minH }; + NSSize max = { maxW, maxH }; + + [window constrainSize:&min]; + [window constrainSize:&max]; + window.javaMinSize = min; window.javaMaxSize = max; [window updateMinMaxSize:IS(window.styleBits, RESIZABLE)];
--- a/src/macosx/native/sun/awt/CFileDialog.h Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/native/sun/awt/CFileDialog.h Sun Feb 19 22:03:12 2012 -0800 @@ -46,11 +46,14 @@ // File dialog's mode jint fMode; + // Indicates whether the user can select multiple files + BOOL fMultipleMode; + // Should we navigate into apps? BOOL fNavigateApps; - // panel's filename - NSString *fReturnedFilename; + // Contains the absolute paths of the selected files as URLs + NSArray *fURLs; } // Allocator @@ -60,6 +63,7 @@ directory:(NSString *)inPath file:(NSString *)inFile mode:(jint)inMode + multipleMode:(BOOL)inMultipleMode shouldNavigate:(BOOL)inNavigateApps withEnv:(JNIEnv*)env; @@ -69,7 +73,7 @@ // Get dialog return value - (BOOL) userClickedOK; -// Filename user chose -- (NSString *) filename; +// Returns the absolute paths of the selected files as URLs +- (NSArray *) URLs; @end
--- a/src/macosx/native/sun/awt/CFileDialog.m Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/native/sun/awt/CFileDialog.m Sun Feb 19 22:03:12 2012 -0800 @@ -41,6 +41,7 @@ directory:(NSString *)inPath file:(NSString *)inFile mode:(jint)inMode + multipleMode:(BOOL)inMultipleMode shouldNavigate:(BOOL)inNavigateApps withEnv:(JNIEnv*)env; { @@ -54,6 +55,7 @@ fTitle = inTitle; [fTitle retain]; fMode = inMode; + fMultipleMode = inMultipleMode; fNavigateApps = inNavigateApps; fPanelResult = NSCancelButton; } @@ -79,8 +81,8 @@ [fTitle release]; fTitle = nil; - [fReturnedFilename release]; - fReturnedFilename = nil; + [fURLs release]; + fURLs = nil; [super dealloc]; } @@ -105,7 +107,7 @@ if (fMode == java_awt_FileDialog_LOAD) { NSOpenPanel *openPanel = (NSOpenPanel *)thePanel; - [openPanel setAllowsMultipleSelection:NO]; + [openPanel setAllowsMultipleSelection:fMultipleMode]; [openPanel setCanChooseFiles:YES]; [openPanel setCanChooseDirectories:NO]; [openPanel setCanCreateDirectories:YES]; @@ -114,8 +116,14 @@ [thePanel setDelegate:self]; fPanelResult = [thePanel runModalForDirectory:fDirectory file:fFile]; [thePanel setDelegate:nil]; - fReturnedFilename = [thePanel filename]; - [fReturnedFilename retain]; + + if (fMode == java_awt_FileDialog_LOAD) { + NSOpenPanel *openPanel = (NSOpenPanel *)thePanel; + fURLs = [openPanel URLs]; + } else { + fURLs = [NSArray arrayWithObject:[thePanel URL]]; + } + [fURLs retain]; } [self disposer]; @@ -158,8 +166,8 @@ return fPanelResult == NSOKButton; } -- (NSString *)filename { - return [[fReturnedFilename retain] autorelease]; +- (NSArray *)URLs { + return [[fURLs retain] autorelease]; } @end @@ -167,13 +175,14 @@ * Class: sun_lwawt_macosx_CFileDialog * Method: nativeRunFileDialog * Signature: (Ljava/lang/String;ILjava/io/FilenameFilter; - * Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + * Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; */ -JNIEXPORT jstring JNICALL +JNIEXPORT jobjectArray JNICALL Java_sun_lwawt_macosx_CFileDialog_nativeRunFileDialog -(JNIEnv *env, jobject peer, jstring title, jint mode, jboolean navigateApps, jboolean hasFilter, jstring directory, jstring file) +(JNIEnv *env, jobject peer, jstring title, jint mode, jboolean multipleMode, + jboolean navigateApps, jboolean hasFilter, jstring directory, jstring file) { - jstring returnValue = NULL; + jobjectArray returnValue = NULL; JNF_COCOA_ENTER(env); NSString *dialogTitle = JNFJavaToNSString(env, title); @@ -187,6 +196,7 @@ directory:JNFJavaToNSString(env, directory) file:JNFJavaToNSString(env, file) mode:mode + multipleMode:multipleMode shouldNavigate:navigateApps withEnv:env]; @@ -196,8 +206,19 @@ waitUntilDone:YES]; if ([dialogDelegate userClickedOK]) { - NSString *filename = [dialogDelegate filename]; - returnValue = JNFNSToJavaString(env, filename); + NSArray *urls = [dialogDelegate URLs]; + jsize count = [urls count]; + + jclass stringClass = (*env)->FindClass(env, "java/lang/String"); + returnValue = (*env)->NewObjectArray(env, count, stringClass, NULL); + (*env)->DeleteLocalRef(env, stringClass); + + NSUInteger i; + for (i = 0; i < count; i++) { + jstring filename = JNFNSToJavaString(env, [[urls objectAtIndex:i] absoluteString]); + (*env)->SetObjectArrayElement(env, returnValue, i, filename); + (*env)->DeleteLocalRef(env, filename); + } } [dialogDelegate release];
--- a/src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m Fri Feb 17 10:04:03 2012 -0800 +++ b/src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m Sun Feb 19 22:03:12 2012 -0800 @@ -45,10 +45,14 @@ #include <dlfcn.h> +static NSScreen* SplashNSScreen() +{ + return [[NSScreen screens] objectAtIndex: 0]; +} + static void SplashCenter(Splash * splash) { - // otherwise could use screens[0] to select the menu-bar screen - NSRect screenFrame = [[NSScreen mainScreen] visibleFrame]; + NSRect screenFrame = [SplashNSScreen() frame]; splash->x = (screenFrame.size.width - splash->width) / 2; splash->y = (screenFrame.size.height - splash->height) / 2 + screenFrame.origin.y; @@ -337,7 +341,8 @@ initWithContentRect: NSMakeRect(splash->x, splash->y, splash->width, splash->height) styleMask: NSBorderlessWindowMask backing: NSBackingStoreBuffered - defer: NO]; + defer: NO + screen: SplashNSScreen()]; [splash->window setOpaque: NO]; [splash->window setBackgroundColor: [NSColor clearColor]];
--- a/src/share/classes/com/sun/crypto/provider/PBEKey.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/com/sun/crypto/provider/PBEKey.java Sun Feb 19 22:03:12 2012 -0800 @@ -56,9 +56,12 @@ // Should allow an empty password. passwd = new char[0]; } - for (int i=0; i<passwd.length; i++) { - if ((passwd[i] < '\u0020') || (passwd[i] > '\u007E')) { - throw new InvalidKeySpecException("Password is not ASCII"); + // Accept "\0" to signify "zero-length password with no terminator". + if (!(passwd.length == 1 && passwd[0] == 0)) { + for (int i=0; i<passwd.length; i++) { + if ((passwd[i] < '\u0020') || (passwd[i] > '\u007E')) { + throw new InvalidKeySpecException("Password is not ASCII"); + } } } this.key = new byte[passwd.length];
--- a/src/share/classes/com/sun/crypto/provider/PKCS12PBECipherCore.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/com/sun/crypto/provider/PKCS12PBECipherCore.java Sun Feb 19 22:03:12 2012 -0800 @@ -60,11 +60,16 @@ static byte[] derive(char[] chars, byte[] salt, int ic, int n, int type) { - // Add in trailing NULL terminator. + // Add in trailing NULL terminator. Special case: + // no terminator if password is "\0". int length = chars.length*2; - if (length != 0) { + if (length == 2 && chars[0] == 0) { + chars = new char[0]; + length = 0; + } else { length += 2; } + byte[] passwd = new byte[length]; for (int i = 0, j = 0; i < chars.length; i++, j+=2) { passwd[j] = (byte) ((chars[i] >>> 8) & 0xFF); @@ -133,6 +138,9 @@ } private static void concat(byte[] src, byte[] dst, int start, int len) { + if (src.length == 0) { + return; + } int loop = len / src.length; int off, i; for (i = 0, off = 0; i < loop; i++, off += src.length)
--- a/src/share/classes/com/sun/management/DiagnosticCommandArgumentInfo.java Fri Feb 17 10:04:03 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,151 +0,0 @@ -/* - * 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 com.sun.management; - -import java.beans.ConstructorProperties; - -/** - * Diagnostic Command Argument information. It contains the description - * of one parameter of the diagnostic command. A parameter can either be an - * option or an argument. Options are identified by the option name while - * arguments are identified by their position in the command line. The generic - * syntax of a diagnostic command is: - * <blockquote> - * <command name> [<option>=<value>] [<argument_value>] - * </blockquote> - * Example: - * <blockquote> - * command_name option1=value1 option2=value argumentA argumentB argumentC - * </blockquote> - * In this command line, the diagnostic command receives five parameters, two - * options named {@code option1} and {@code option2}, and three arguments. - * argumentA's position is 0, argumentB's position is 1 and argumentC's - * position is 2. - * - * @author Frederic Parain - * @since 7u4 - */ - -public class DiagnosticCommandArgumentInfo { - private final String name; - private final String description; - private final String type; - private final String defaultValue; - private final boolean mandatory; - private final boolean option; - private final int position; - - /** - * Returns the argument name - * - * @return the argument name - */ - public String getName() { - return name; - } - - /** - * Returns the argument description - * - * @return the argument description - */ - public String getDescription() { - return description; - } - - /** - * Returns the argument type - * - * @return the argument type - */ - public String getType() { - return type; - } - - /** - * Returns the default value as a String if a default value - * is defined, null otherwise. - * - * @return the default value as a String if a default value - * is defined, null otherwise. - */ - public String getDefault() { - return defaultValue; - } - - /** - * Returns {@code true} if the argument is mandatory, - * {@code false} otherwise - * - * @return {@code true} if the argument is mandatory, - * {@code false} otherwise - */ - public boolean isMandatory() { - return mandatory; - } - - /** - * Returns {@code true} if the argument is an option, - * {@code false} otherwise. Options have to be specified using the - * <key>=<value> syntax on the command line, while other - * arguments are specified with a single <value> field and are - * identified by their position on command line. - * - * @return {@code true} if the argument is an option, - * {@code false} otherwise - */ - public boolean isOption() { - return option; - } - - /** - * Returns the expected position of this argument if it is not an option, - * -1 otherwise. Argument position if defined from left to right, - * starting at zero and ignoring the diagnostic command name and - * options. - * - * @return the expected position of this argument if it is not an option, - * -1 otherwise. - */ - public int getPosition() { - return position; - } - - @ConstructorProperties({"name","description","type","default", - "mandatory","option","position"}) - public DiagnosticCommandArgumentInfo(String name, String description, - String type, String defaultValue, - boolean mandatory, boolean option, - int position) { - this.name = name; - this.description = description; - this.type = type; - this.defaultValue = defaultValue; - this.mandatory = mandatory; - this.option = option; - this.position = position; - } -}
--- a/src/share/classes/com/sun/management/DiagnosticCommandInfo.java Fri Feb 17 10:04:03 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -/* - * 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 com.sun.management; - -import java.beans.ConstructorProperties; -import java.util.List; - -/** - * Diagnostic command information. It contains the description of a - * diagnostic command. - * - * @author Frederic Parain - * @since 7u4 - */ - -public class DiagnosticCommandInfo { - private final String name; - private final String description; - private final String impact; - private final boolean enabled; - private final List<DiagnosticCommandArgumentInfo> arguments; - - /** - * Returns the diagnostic command name - * - * @return the diagnostic command name - */ - public String getName() { - return name; - } - - /** - * Returns the diagnostic command description - * - * @return the diagnostic command description - */ - public String getDescription() { - return description; - } - - /** - * Returns the potential impact of the diagnostic command execution - * on the Java virtual machine behavior - * - * @return the potential impact of the diagnostic command execution - * on the Java virtual machine behavior - */ - public String getImpact() { - return impact; - } - - /** - * Returns {@code true} if the diagnostic command is enabled, - * {@code false} otherwise. The enabled/disabled - * status of a diagnostic command can evolve during - * the lifetime of the Java virtual machine. - * - * @return {@code true} if the diagnostic command is enabled, - * {@code false} otherwise - */ - public boolean isEnabled() { - return enabled; - } - - /** - * Returns the list of the diagnostic command arguments description. - * If the diagnostic command has no arguments, it returns an empty list. - * - * @return a list of the diagnostic command arguments description - */ - public List<DiagnosticCommandArgumentInfo> getArgumentsInfo() { - return arguments; - } - - @ConstructorProperties({"name", "description","impact","enabled", - "argumentsInfo"}) - public DiagnosticCommandInfo(String name, String description, - String impact, boolean enabled, - List<DiagnosticCommandArgumentInfo> arguments) - { - this.name = name; - this.description = description; - this.impact = impact; - this.enabled = enabled; - this.arguments = arguments; - } -}
--- a/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,11 +31,6 @@ /** * Diagnostic management interface for the HotSpot Virtual Machine. * - * <p>{@linkplain #getDiagnosticCommands Diagnostic commands} - * are actions that can be invoked dynamically and - * executed in a target Java virtual machine, mainly for troubleshooting - * and diagnosis. - * * <p>The diagnostic MBean is registered to the platform MBeanServer * as are other platform MBeans. * @@ -116,108 +111,4 @@ * ManagementPermission("control"). */ public void setVMOption(String name, String value); - - /** - * Returns the {@linkplain DiagnosticCommandInfo#getName() names} - * of all diagnostic commands. - * A diagnostic command is an action that can be invoked dynamically - * mainly for troubleshooting and diagnosis. The list of diagnostic - * commands may change at runtime. A diagnostic command may be - * {@linkplain DiagnosticCommandInfo#isEnabled disabled} but will - * not be removed from a previously returned list. - * - * @return the names of all diagnostic commands. - * - * @since 7u4 - */ - public List<String> getDiagnosticCommands(); - - /** - * Returns a {@code DiagnosticCommandInfo} object describing the - * diagnostic command of the specified name {@code command} - * - * @param command a diagnostic command name - * @return a {@code DiagnosticCommandInfo} object - * @throws java.lang.IllegalArgumentException if the {@code command} - * doesn't match any diagnostic command registered in the - * targeted Java virtual machine. - * - * @since 7u4 - */ - public DiagnosticCommandInfo getDiagnosticCommandInfo(String command); - - /** - * Returns a list of {@code DiagnosticCommandInfo} object describing - * all diagnostic commands available on the targeted Java virtual machine - * - * @return a list of {@code DiagnosticCommandInfo} objects - * - * @since 7u4 - */ - public List<DiagnosticCommandInfo> getDiagnosticCommandInfo(); - - /** - * Returns a list of {@code DiagnosticCommandInfo} object describing - * all diagnostic commands specified in the {@code commands} list. - * - * @param commands {@code List} of {@code String} containing diagnostic - * command names - * @return a {@code List} of {@code DiagnosticCommandInfo} objects - * - * @throws java.lang.IllegalArgumentException if at least one - * command specified in the {@code commands } list - * doesn't match any diagnostic command registered in the - * targeted Java virtual machine. - * - * @since 7u4 - */ - public List<DiagnosticCommandInfo> getDiagnosticCommandInfo(List<String> commands); - - /** - * Executes the command line {@code commandLine}. The command line must - * start with a diagnostic command name, optionally followed by parameters. - * Each command has its own syntax but the generic syntax for a diagnostic - * command line is: - * <blockquote> - * <command name> [<option>=<value>] [<argument_value>] - * </blockquote> - * - * @param commandLine command line to execute - * @return a {@code String} object containing the diagnostic command - * output. - * - * @throws java.lang.IllegalArgumentException if the command line doesn't - * match any diagnostic command registered in the virtual machine - * of if the parameters don't match the diagnostic command syntax. - * @throws java.lang.SecurityException - * if a security manager exists and the caller does not have - * ManagementPermission("control"). - * - * @since 7u4 - */ - public String execute(String commandLine); - - /** - * Invokes the diagnostic command named {@code cmd} with the parameters - * specified in {@code args}. Each command has its own syntax but - * the generic syntax for parameters is: - * <blockquote> - * [<option>=<value>] [<argument_value>] - * </blockquote> - * - * @param cmd a diagnostic command name - * @param args the command parameters - * @return a {@code String} object containing the diagnostic command - * output. - * - * @throws java.lang.IllegalArgumentException if the command line doesn't - * match any diagnostic command registered in the virtual machine - * of if the parameters don't match the diagnostic command syntax. - * @throws java.lang.SecurityException - * if a security manager exists and the caller does not have - * ManagementPermission("control"). - * - * @since 7u4 - */ - public String execute(String cmd, String... args); }
--- a/src/share/classes/java/awt/FileDialog.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/java/awt/FileDialog.java Sun Feb 19 22:03:12 2012 -0800 @@ -147,8 +147,8 @@ static { AWTAccessor.setFileDialogAccessor( new AWTAccessor.FileDialogAccessor() { - public void setFiles(FileDialog fileDialog, String directory, String files[]) { - fileDialog.setFiles(directory, files); + public void setFiles(FileDialog fileDialog, File files[]) { + fileDialog.setFiles(files); } public void setFile(FileDialog fileDialog, String file) { fileDialog.file = ("".equals(file)) ? null : file; @@ -446,13 +446,9 @@ * @see #getFiles * @since 1.7 */ - private void setFiles(String directory, String files[]) { + private void setFiles(File files[]) { synchronized (getObjectLock()) { - int filesNumber = (files != null) ? files.length : 0; - this.files = new File[filesNumber]; - for (int i = 0; i < filesNumber; i++) { - this.files[i] = new File(directory, files[i]); - } + this.files = files; } }
--- a/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java Sun Feb 19 22:03:12 2012 -0800 @@ -330,7 +330,7 @@ remove(task)) task.cancel(false); else - prestartCoreThread(); + ensurePrestart(); } } @@ -346,7 +346,7 @@ if (!canRunInCurrentRunState(true) && remove(task)) task.cancel(false); else - prestartCoreThread(); + ensurePrestart(); } }
--- a/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java Sun Feb 19 22:03:12 2012 -0800 @@ -1546,6 +1546,18 @@ } /** + * Same as prestartCoreThread except arranges that at least one + * thread is started even if corePoolSize is 0. + */ + void ensurePrestart() { + int wc = workerCountOf(ctl.get()); + if (wc < corePoolSize) + addWorker(null, true); + else if (wc == 0) + addWorker(null, false); + } + + /** * Starts all core threads, causing them to idly wait for work. This * overrides the default policy of starting core threads only when * new tasks are executed.
--- a/src/share/classes/javax/crypto/CipherSpi.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/javax/crypto/CipherSpi.java Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -775,7 +775,7 @@ int outOfs = output.arrayOffset() + outPos; byte[] inArray = new byte[getTempArraySize(inLen)]; int total = 0; - while (inLen > 0) { + do { int chunk = Math.min(inLen, inArray.length); input.get(inArray, 0, chunk); int n; @@ -787,7 +787,7 @@ total += n; outOfs += n; inLen -= chunk; - } + } while (inLen > 0); output.position(outPos + total); return total; } else { // output is not backed by an accessible byte[] @@ -804,7 +804,7 @@ int outSize = outArray.length; int total = 0; boolean resized = false; - while (inLen > 0) { + do { int chunk = Math.min(inLen, outSize); if ((a1 == false) && (resized == false)) { input.get(inArray, 0, chunk); @@ -834,7 +834,7 @@ int newOut = engineGetOutputSize(chunk); outArray = new byte[newOut]; } - } + } while (inLen > 0); input.position(inLimit); return total; }
--- a/src/share/classes/javax/net/ssl/ExtendedSSLSession.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/javax/net/ssl/ExtendedSSLSession.java Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -43,7 +43,7 @@ * The signature algorithm name must be a standard Java Security * name (such as "SHA1withRSA", "SHA256withECDSA", and so on). * See Appendix A in the <a href= - * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA"> + * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA"> * Java Cryptography Architecture API Specification & Reference </a> * for information about standard algorithm names. * <p> @@ -71,7 +71,7 @@ * The signature algorithm name must be a standard Java Security * name (such as "SHA1withRSA", "SHA256withECDSA", and so on). * See Appendix A in the <a href= - * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA"> + * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA"> * Java Cryptography Architecture API Specification & Reference </a> * for information about standard algorithm names. *
--- a/src/share/classes/javax/net/ssl/SSLParameters.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/javax/net/ssl/SSLParameters.java Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -242,7 +242,7 @@ * * @param algorithm The standard string name of the endpoint * identification algorithm (or null). See Appendix A in the <a href= - * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA"> + * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA"> * Java Cryptography Architecture API Specification & Reference </a> * for information about standard algorithm names. *
--- a/src/share/classes/javax/swing/JOptionPane.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/javax/swing/JOptionPane.java Sun Feb 19 22:03:12 2012 -0800 @@ -34,7 +34,6 @@ import java.awt.Frame; import java.awt.Point; import java.awt.HeadlessException; -import java.awt.Toolkit; import java.awt.Window; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -994,8 +993,7 @@ // if the user closed the window without selecting a button // (newValue = null in that case). Otherwise, close the dialog. if (dialog.isVisible() && event.getSource() == JOptionPane.this && - (event.getPropertyName().equals(VALUE_PROPERTY) || - event.getPropertyName().equals(INPUT_VALUE_PROPERTY)) && + (event.getPropertyName().equals(VALUE_PROPERTY)) && event.getNewValue() != null && event.getNewValue() != JOptionPane.UNINITIALIZED_VALUE) { dialog.setVisible(false);
--- a/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java Sun Feb 19 22:03:12 2012 -0800 @@ -1236,6 +1236,7 @@ int index = list.locationToIndex(e.getPoint()); optionPane.setInputValue(list.getModel().getElementAt(index)); + optionPane.setValue(JOptionPane.OK_OPTION); } }
--- a/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java Sun Feb 19 22:03:12 2012 -0800 @@ -434,6 +434,8 @@ // Empty out the renderer pane, allowing renderers to be gc'ed. rendererPane.removeAll(); + + paintContext = null; } private void configureRenderer(SynthContext context) {
--- a/src/share/classes/sun/awt/AWTAccessor.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/awt/AWTAccessor.java Sun Feb 19 22:03:12 2012 -0800 @@ -37,6 +37,8 @@ import java.security.AccessController; import java.security.AccessControlContext; +import java.io.File; + /** * The AWTAccessor utility class. * The main purpose of this class is to enable accessing @@ -458,7 +460,7 @@ /* * Sets the files the user selects */ - void setFiles(FileDialog fileDialog, String directory, String files[]); + void setFiles(FileDialog fileDialog, File files[]); /* * Sets the file the user selects
--- a/src/share/classes/sun/java2d/opengl/OGLRenderQueue.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/java2d/opengl/OGLRenderQueue.java Sun Feb 19 22:03:12 2012 -0800 @@ -28,6 +28,8 @@ import sun.java2d.pipe.RenderBuffer; import sun.java2d.pipe.RenderQueue; import static sun.java2d.pipe.BufferedOpCodes.*; +import java.security.AccessController; +import java.security.PrivilegedAction; /** * OGL-specific implementation of RenderQueue. This class provides a @@ -41,7 +43,19 @@ private final QueueFlusher flusher; private OGLRenderQueue() { - flusher = new QueueFlusher(); + /* + * The thread must be a member of a thread group + * which will not get GCed before VM exit. + */ + flusher = AccessController.doPrivileged(new PrivilegedAction<QueueFlusher>() { + public QueueFlusher run() { + ThreadGroup rootThreadGroup = Thread.currentThread().getThreadGroup(); + while (rootThreadGroup.getParent() != null) { + rootThreadGroup = rootThreadGroup.getParent(); + } + return new QueueFlusher(rootThreadGroup); + } + }); } /** @@ -149,8 +163,8 @@ private Runnable task; private Error error; - public QueueFlusher() { - super("Java2D Queue Flusher"); + public QueueFlusher(ThreadGroup threadGroup) { + super(threadGroup, "Java2D Queue Flusher"); setDaemon(true); setPriority(Thread.MAX_PRIORITY); start();
--- a/src/share/classes/sun/launcher/resources/launcher_de.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/launcher/resources/launcher_de.properties Sun Feb 19 22:03:12 2012 -0800 @@ -34,11 +34,14 @@ java.launcher.ergo.message2 =\ weil die Ausf\u00FChrung auf einem Server-Class-Rechner erfolgt.\n # Translators please note do not translate the options themselves -java.launcher.opt.footer =\ -cp <Class-Suchpfad von Verzeichnissen und ZIP-/JAR-Dateien>\n\ -classpath <Class-Suchpfad von Verzeichnissen und ZIP-/JAR-Dateien>\n\ Eine durch {0} getrennte Liste mit Verzeichnissen, JAR-Archiven\n\ und ZIP-Archiven zur Suche nach Klassendateien.\n\ -D<name>=<value>\n\ Setzt eine Systemeigenschaft\n\ -verbose[:class|gc|jni]\n\ Aktiviert die Verbose-Ausgabe\n\ -version Druckt Produktversion und beendet das Programm\n\ -version:<value>\n\ Erfordert die angegebene Version zur Ausf\u00FChrung\n\ -showversion Druckt Produktversion und f\u00E4hrt fort\n\ -jre-restrict-search | -no-jre-restrict-search\n\ Bezieht private JREs des Benutzers in Versionssuche ein bzw. schlie\u00DFt sie aus\n\ -? -help Druckt diese Hilfemeldung\n\ -X Druckt Hilfe zu Nicht-Standardoptionen\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ Aktiviert Assertionen mit angegebener Granularit\u00E4t\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ Deaktiviert Assertionen mit angegebener Granularit\u00E4t\n\ -esa | -enablesystemassertions\n\ Aktiviert Systemassertionen\n\ -dsa | -disablesystemassertions\n\ Deaktiviert Systemassertionen\n\ -agentlib:<libname>[=<options>]\n\ L\u00E4dt native Agent Library <libname>, z.B. -agentlib:hprof\n\ siehe auch, -agentlib:jdwp=help und -agentlib:hprof=help\n\ -agentpath:<pathname>[=<options>]\n\ L\u00E4dt native Agent Library nach vollem Pfadnamen\n\ -javaagent:<jarpath>[=<options>]\n\ L\u00E4dt Java-Programmiersprachen-Agent, siehe java.lang.instrument\n\ -splash:<imagepath>\n\ Zeigt Startbildschirm mit angegebenem Bild\nWeitere Einzelheiten finden Sie unter http://java.sun.com/javase/reference. +java.launcher.opt.footer =\ -cp <Class-Suchpfad von Verzeichnissen und .zip-/.jar-Dateien>\n\\ -classpath <Class-Suchpfad von Verzeichnissen und .zip-/.jar-Dateien>\n\\ Eine durch {0} getrennte Liste mit Verzeichnissen, .jar-Archiven\n\\ und .zip-Archiven zur Suche nach Klassendateien.\n\\ -D<name>=<value>\n\\ Setzt eine Systemeigenschaft\n\\ -verbose[:class|gc|jni]\n\\ Aktiviert die Verbose-Ausgabe\n\\ -version Druckt Produktversion und beendet das Programm\n\\ -version:<value>\n\\ Erfordert die angegebene Version zur Ausf\u00FChrung\n\\ -showversion Druckt Produktversion und f\u00E4hrt fort\n\\ -jre-restrict-search | -no-jre-restrict-search\n\\ Bezieht private JREs des Benutzers in Versionssuche ein bzw. schlie\u00DFt sie aus\n\\ -? -help Druckt diese Hilfemeldung\n\\ -X Druckt Hilfe zu Nicht-Standardoptionen\n\\ -ea[:<packagename>...|:<classname>]\n\\ -enableassertions[:<packagename>...|:<classname>]\n\\ Aktiviert Assertionen mit angegebener Granularit\u00E4t\n\\ -da[:<packagename>...|:<classname>]\n\\ -disableassertions[:<packagename>...|:<classname>]\n\\ Deaktiviert Assertionen mit angegebener Granularit\u00E4t\n\\ -esa | -enablesystemassertions\n\\ Aktiviert Systemassertionen\n\\ -dsa | -disablesystemassertions\n\\ Deaktiviert Systemassertionen\n\\ -agentlib:<libname>[=<options>]\n\\ L\u00E4dt native Agent Library <libname>, z.B. -agentlib:hprof\n\\ siehe auch, -agentlib:jdwp=help und -agentlib:hprof=help\n\\ -agentpath:<pathname>[=<options>]\n\\ L\u00E4dt native Agent Library nach vollem Pfadnamen\n\\ -javaagent:<jarpath>[=<options>]\n\\ L\u00E4dt Java-Programmiersprachen-Agent, siehe java.lang.instrument\n\\ -splash:<imagepath>\n\\ Zeigt Startbildschirm mit angegebenem Bild\nWeitere Einzelheiten finden Sie unter http://www.oracle.com/technetwork/java/javase/documentation/index.html. # Translators please note do not translate the options themselves java.launcher.X.usage=\ -Xmixed Ausf\u00FChrung im gemischten Modus (Standard)\n\ -Xint Nur Ausf\u00FChrung im interpretierten Modus\n\ -Xbootclasspath:<Verzeichnisse und ZIP-/JAR-Dateien durch {0} getrennt>\n\ Legt Suchpfad f\u00FCr Bootstrap-Klassen und Ressourcen fest\n\ -Xbootclasspath/a:<Verzeichnisse und ZIP-/JAR-Dateien durch {0} getrennt>\n\ H\u00E4ngt an das Ende des Bootstrap Classpath an\n\ -Xbootclasspath/p:<Verzeichnisse und ZIP-/JAR-Dateien durch {0} getrennt>\n\ Stellt Bootstrap Classpath voran\n\ -Xdiag Zeigt zus\u00E4tzliche Diagnosemeldungen an\n\ -Xnoclassgc Deaktiviert Klassen-Garbage Collection\n\ -Xincgc Aktiviert inkrementelle Garbage Collection\n\ -Xloggc:<file> Loggt GC-Status in einer Datei mit Zeitstempeln\n\ -Xbatch Deaktiviert Hintergrundkompilierung\n\ -Xms<size> Legt anf\u00E4ngliche Java Heap-Gr\u00F6\u00DFe fest\n\ -Xmx<size> Legt maximale Java Heap-Gr\u00F6\u00DFe fest\n\ -Xss<size> Legt Java-Thread-Stack-Gr\u00F6\u00DFe fest\n\ -Xprof Gibt CPU-Profiling-Daten aus\n\ -Xfuture Aktiviert strengste Pr\u00FCfungen, antizipiert zuk\u00FCnftigen Standardwert\n\ -Xrs Reduziert Verwendung von BS-Signalen durch Java/VM (siehe Dokumentation)\n\ -Xcheck:jni F\u00FChrt zus\u00E4tzliche Pr\u00FCfungen f\u00FCr JNI-Funktionen durch\n\ -Xshare:off Kein Versuch, gemeinsame Klassendaten zu verwenden\n\ -Xshare:auto Verwendet gemeinsame Klassendaten, wenn m\u00F6glich (Standard)\n\ -Xshare:on Erfordert die Verwendung gemeinsamer Klassendaten, sonst verl\u00E4uft der Vorgang nicht erfolgreich.\n\ -XshowSettings Zeigt alle Einstellungen und f\u00E4hrt fort\n\ -XshowSettings:all\n\ Zeigt alle Einstellungen und f\u00E4hrt fort\n\ -XshowSettings:vm Zeigt alle VM-bezogenen Einstellungen und f\u00E4hrt fort\n\ -XshowSettings:properties\n\ Zeigt alle Eigenschaftseinstellungen und f\u00E4hrt fort\n\ -XshowSettings:locale\n\ Zeigt alle gebietsschemabezogenen Einstellungen und f\u00E4hrt fort\n\nDie -X-Optionen sind keine Standardoptionen und k\u00F6nnen ohne Vorank\u00FCndigung ge\u00E4ndert werden.\n +# Translators please note do not translate the options themselves +java.launcher.X.macosx.usage=\nDie folgenden Optionen sind f\u00FCr Mac OS X spezifisch:\n\\ -XstartOnFirstThread\n\\ f\u00FChrt die main()-Methode f\u00FCr den ersten (AppKit) Thread aus\n\\ -Xdock:name=<Anwendungsname>"\n\\ \u00DCberschreibt den in der Uhr angezeigten Standardanwendungsnamen\n\\ -Xdock:icon=<Pfad zu Symboldatei>\n\\ \u00DCberschreibt das in der Uhr angezeigte Standardsymbol\n\n + java.launcher.cls.error1=Fehler: Hauptklasse {0} konnte nicht gefunden oder geladen werden java.launcher.cls.error2=Fehler: Hauptmethode ist nicht {0} in Klasse {1}. Definieren Sie die Hauptmethode als:\n\ public static void main(String[] args) java.launcher.cls.error3=Fehler: Hauptmethode muss einen Wert vom Typ void in Klasse {0} zur\u00FCckgeben. Definieren Sie \ndie Hauptmethode als:\n\ public static void main(String[] args)
--- a/src/share/classes/sun/launcher/resources/launcher_es.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/launcher/resources/launcher_es.properties Sun Feb 19 22:03:12 2012 -0800 @@ -34,11 +34,14 @@ java.launcher.ergo.message2 =\ porque la ejecuci\u00F3n se est\u00E1 llevando a cabo en una m\u00E1quina de clase de servidor.\n # Translators please note do not translate the options themselves -java.launcher.opt.footer =\ -cp <ruta de acceso de b\u00FAsqueda de clases de los directorios y los archivos zip/jar>\n\ -classpath <ruta de acceso de b\u00FAsqueda de clases de los directorios y los archivos zip/jar>\n\ Una lista separada por {0} de directorios, archivos JAR,\n\ y archivos ZIP para buscar archivos de clase.\n\ -D<nombre>=<valor>\n\ definir una propiedad del sistema\n\ -verbose[:class|gc|jni]\n\ activar la salida verbose\n\ -version imprimir la versi\u00F3n del producto y salir\n\ -version:<valor>\n\ es necesario que se ejecute la versi\u00F3n especificada\n\ -showversion imprimir la versi\u00F3n del producto y continuar\n\ -jre-restrict-search | -no-jre-restrict-search\n\ incluir/excluir JRE privados de usuario en la b\u00FAsqueda de versi\u00F3n\n\ -? -help imprimir este mensaje de ayuda\n\ -X imprimir la ayuda sobre las opciones que no sean est\u00E1ndar\n\ -ea[:<nombre_paquete>...|:<nombre_clase>]\n\ -enableassertions[:<nombre_paquete>...|:<nombre_clase>]\n\ activar afirmaciones con la granularidad especificada\n\ -da[:<nombre_paquete>...|:<nombre_clase>]\n\ -disableassertions[:<nombre_paquete>...|:<nombre_clase>]\n\ desactivar afirmaciones con la granularidad especificada\n\ -esa | -enablesystemassertions\n\ activar afirmaciones del sistema\n\ -dsa | -disablesystemassertions\n\ desactivar afirmaciones del sistema\n\ -agentlib:<nombre_bib>[=<opciones>]\n\ cargar la biblioteca de agente nativa <nombre_bib>, como -agentlib:hprof\n\ v\u00E9ase tambi\u00E9n -agentlib:jdwp=help y -agentlib:hprof=help\n\ -agentpath:<nombre_ruta_acceso>[=<opciones>]\n\ cargar biblioteca de agente nativa con la ruta de acceso completa\n\ -javaagent:<ruta_acceso_jar>[=<opciones>]\n\ cargar agente de lenguaje de programaci\u00F3n Java, v\u00E9ase java.lang.instrument\n\ -splash:<ruta_acceso_imagen>\n\ mostrar una pantalla de presentaci\u00F3n con la imagen especificada\nConsulte http://java.sun.com/javase/reference para obtener m\u00E1s informaci\u00F3n. +java.launcher.opt.footer =\ -cp <ruta de acceso de b\u00FAsqueda de clases de los directorios y los archivos zip/jar>\n\\ -classpath <ruta de acceso de b\u00FAsqueda de clases de los directorios y los archivos zip/jar>\n\\ Lista separada por {0} de directorios, archivos JAR\n\\ y archivos ZIP para buscar archivos de clase.\n\\ -D<nombre>=<valor>\n\\ definir una propiedad del sistema\n\\ -verbose[:class|gc|jni]\n\\ activar la salida verbose\n\\ -version imprimir la versi\u00F3n del producto y salir\n\\ -version:<valor>\n\\ es necesario que se ejecute la versi\u00F3n especificada\n\\ -showversion imprimir la versi\u00F3n del producto y continuar\n\\ -jre-restrict-search | -no-jre-restrict-search\n\\ incluir/excluir JRE privados de usuario en la b\u00FAsqueda de versi\u00F3n\n\\ -? -help imprimir este mensaje de ayuda\n\\ -X imprimir la ayuda sobre las opciones que no sean est\u00E1ndar\n\\ -ea[:<nombre_paquete>...|:<nombre_clase>]\n\\ -enableassertions[:<nombre_paquete>...|:<nombre_clase>]\n\\ activar afirmaciones con la granularidad especificada\n\\ -da[:<nombre_paquete>...|:<nombre_clase>]\n\\ -disableassertions[:<nombre_paquete>...|:<nombre_clase>]\n\\ desactivar afirmaciones con la granularidad especificada\n\\ -esa | -enablesystemassertions\n\\ activar afirmaciones del sistema\n\\ -dsa | -disablesystemassertions\n\\ desactivar afirmaciones del sistema\n\\ -agentlib:<nombre_bib>[=<opciones>]\n\\ cargar la biblioteca de agente nativa <nombre_bib>, como -agentlib:hprof\n\\ v\u00E9ase tambi\u00E9n -agentlib:jdwp=help y -agentlib:hprof=help\n\\ -agentpath:<nombre_ruta_acceso>[=<opciones>]\n\\ cargar biblioteca de agente nativa con el nombre de la ruta de acceso completa\n\\ -javaagent:<ruta_acceso_jar>[=<opciones>]\n\\ cargar agente de lenguaje de programaci\u00F3n Java, v\u00E9ase java.lang.instrument\n\\ -splash:<ruta_acceso_imagen>\n\\ mostrar una pantalla de presentaci\u00F3n con la imagen especificada\nConsulte http://www.oracle.com/technetwork/java/javase/documentation/index.html para obtener m\u00E1s informaci\u00F3n. # Translators please note do not translate the options themselves java.launcher.X.usage=\ -Xmixed ejecuci\u00F3n de modo mixto (por defecto)\n\ -Xint s\u00F3lo ejecuci\u00F3n de modo interpretado\n\ -Xbootclasspath:<directorios y archivos zip/jar separados por {0}>\n\ definir la ruta de acceso de b\u00FAsqueda para los recursos y clases de inicializaci\u00F3n de datos\n\ -Xbootclasspath/a:<directorios y archivos zip/jar separados por {0}>\n\ agregar al final de la ruta de acceso de la clase de inicializaci\u00F3n de datos\n\ -Xbootclasspath/p:<directorios y archivos zip/jar separados por {0}>\n\ anteponer a la ruta de acceso de la clase de inicializaci\u00F3n de datos\n\ -Xdiag mostrar mensajes de diagn\u00F3stico adicionales\n\ -Xnoclassgc desactivar la recolecci\u00F3n de basura de clases\n\ -Xincgc activar la recolecci\u00F3n de basura de clases\n\ -Xloggc:<archivo> registrar el estado de GC en un archivo con registros de hora\n\ -Xbatch desactivar compilaci\u00F3n en segundo plano\n\ -Xms<tama\u00F1o> definir tama\u00F1o de pila Java inicial\n\ -Xmx<tama\u00F1o> definir tama\u00F1o de pila Java m\u00E1ximo\n\ -Xss<tama\u00F1o> definir tama\u00F1o de la pila del thread de Java\n\ -Xprof datos de salida de creaci\u00F3n de perfil de CPU\n\ -Xfuture activar las comprobaciones m\u00E1s estrictas, anticip\u00E1ndose al futuro valor por defecto\n\ -Xrs reducir el uso de se\u00F1ales de sistema operativo por parte de Java/VM (consulte la documentaci\u00F3n)\n\ -Xcheck:jni realizar comprobaciones adicionales para las funciones de JNI\n\ -Xshare:off no intentar usar datos de clase compartidos\n\ -Xshare:auto usar datos de clase compartidos si es posible (valor por defecto)\n\ -Xshare:on es obligatorio el uso de datos de clase compartidos, de lo contrario se emitir\u00E1 un fallo.\n\ -XshowSettings mostrar todos los valores y continuar\n\ -XshowSettings:all\n\ mostrar todos los valores y continuar\n\ -XshowSettings:vm mostrar todos los valores de la VM y continuar\n\ -XshowSettings:properties\n\ mostrar todos los valores de las propiedades y continuar\n\ -XshowSettings:locale\n\ mostrar todos los valores relacionados con la configuraci\u00F3n regional y continuar\n\nLas opciones -X no son est\u00E1ndar, por lo que podr\u00EDan cambiarse sin previo aviso.\n +# Translators please note do not translate the options themselves +java.launcher.X.macosx.usage=\nLas siguientes opciones son espec\u00EDficas para Mac OS X:\n\\ -XstartOnFirstThread\n\\ ejecuta el m\u00E9todo main() del primer thread (AppKit)\n\\ -Xdock:name=<nombre de aplicaci\u00F3n>"\n\\ sustituye al nombre por defecto de la aplicaci\u00F3n que se muestra en el Dock\n\\ -Xdock:icon=<ruta de acceso a archivo de icono>\n\\ sustituye al icono por defecto que se muestra en el Dock\n\n + java.launcher.cls.error1=Error: no se ha encontrado o cargado la clase principal {0} java.launcher.cls.error2=Error: el m\u00E9todo principal no es {0} en la clase {1}, defina el m\u00E9todo principal del siguiente modo:\n\ public static void main(String[] args) java.launcher.cls.error3=Error: el m\u00E9todo principal debe devolver un valor del tipo void en la clase {0}, \ndefina el m\u00E9todo principal del siguiente modo:\n\ public static void main(String[] args)
--- a/src/share/classes/sun/launcher/resources/launcher_fr.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/launcher/resources/launcher_fr.properties Sun Feb 19 22:03:12 2012 -0800 @@ -34,11 +34,14 @@ java.launcher.ergo.message2 =\ car vous ex\u00E9cutez une machine de classe de serveur.\n # Translators please note do not translate the options themselves -java.launcher.opt.footer =\ -cp <class search path of directories and zip/jar files>\n\ -classpath <class search path of directories and zip/jar files>\n\ Liste de r\u00E9pertoires, d''archives JAR et\n\ d''archives ZIP s\u00E9par\u00E9s par des {0}, dans laquelle rechercher les fichiers de classe.\n\ -D<name>=<value>\n\ d\u00E9finition d''une propri\u00E9t\u00E9 syst\u00E8me\n\ -verbose[:class|gc|jni]\n\ activation de la sortie en mode verbose\n\ -version impression de la version du produit et fin de l''op\u00E9ration\n\ -version:<value>\n\ ex\u00E9cution de la version sp\u00E9cifi\u00E9e obligatoire\n\ -showversion impression de la version du produit et poursuite de l''op\u00E9ration\n\ -jre-restrict-search | -no-jre-restrict-search\n\ inclusion/exclusion des environnements JRE priv\u00E9s de l''utilisateur dans la recherche de version\n\ -? -help impression du message d''aide\n\ -X impression de l''aide sur les options non standard\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ activation des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ d\u00E9sactivation des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n\ -esa | -enablesystemassertions\n\ activation des assertions syst\u00E8me\n\ -dsa | -disablesystemassertions\n\ d\u00E9sactivation des assertions syst\u00E8me\n\ -agentlib:<libname>[=<options>]\n\ chargement de la biblioth\u00E8que d''agent natif <libname>, par exemple -agentlib:hprof\n\ voir \u00E9galement, -agentlib:jdwp=help et -agentlib:hprof=help\n\ -agentpath:<pathname>[=<options>]\n\ chargement de la biblioth\u00E8que d''agent natif via le chemin d''acc\u00E8s complet\n\ -javaagent:<jarpath>[=<options>]\n\ chargement de l''agent du langage de programmation Java, voir java.lang.instrument\n\ -splash:<imagepath>\n\ affichage de l''\u00E9cran d''accueil avec l''image sp\u00E9cifi\u00E9e\nVoir http://java.sun.com/javase/reference pour plus de d\u00E9tails. +java.launcher.opt.footer =\ -cp <class search path of directories and zip/jar files>\n\ -classpath <class search path of directories and zip/jar files>\n\ Liste de r\u00E9pertoires, d''archives JAR et\n\ d''archives ZIP s\u00E9par\u00E9s par des {0}, dans laquelle rechercher les fichiers de classe.\n\ -D<name>=<value>\n\ d\u00E9finition d''une propri\u00E9t\u00E9 syst\u00E8me\n\ -verbose[:class|gc|jni]\n\ activation de la sortie en mode verbose\n\ -version impression de la version du produit et fin de l''op\u00E9ration\n\ -version:<value>\n\ ex\u00E9cution de la version sp\u00E9cifi\u00E9e obligatoire\n\ -showversion impression de la version du produit et poursuite de l''op\u00E9ration\n\ -jre-restrict-search | -no-jre-restrict-search\n\ inclusion/exclusion des environnements JRE priv\u00E9s de l''utilisateur dans la recherche de version\n\ -? -help impression du message d''aide\n\ -X impression de l''aide sur les options non standard\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ activation des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ d\u00E9sactivation des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n\ -esa | -enablesystemassertions\n\ activation des assertions syst\u00E8me\n\ -dsa | -disablesystemassertions\n\ d\u00E9sactivation des assertions syst\u00E8me\n\ -agentlib:<libname>[=<options>]\n\ chargement de la biblioth\u00E8que d''agent natif <libname>, par exemple -agentlib:hprof\n\ voir \u00E9galement, -agentlib:jdwp=help et -agentlib:hprof=help\n\ -agentpath:<pathname>[=<options>]\n\ chargement de la biblioth\u00E8que d''agent natif via le chemin d''acc\u00E8s complet\n\ -javaagent:<jarpath>[=<options>]\n\ chargement de l''agent du langage de programmation Java, voir java.lang.instrument\n\ -splash:<imagepath>\n\ affichage de l''\u00E9cran d''accueil avec l''image sp\u00E9cifi\u00E9e\nVoir http://www.oracle.com/technetwork/java/javase/documentation/index.html pour plus de d\u00E9tails. # Translators please note do not translate the options themselves java.launcher.X.usage=\ -Xmixed ex\u00E9cution en mode mixte (valeur par d\u00E9faut)\n\ -Xint ex\u00E9cution en mode interpr\u00E9t\u00E9 uniquement\n\ -Xbootclasspath:<directories and zip/jar files separated by {0}>\n\ d\u00E9finition du chemin de recherche pour les ressources et classes bootstrap\n\ -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n\ ajout \u00E0 la fin du chemin de classe bootstrap\n\ -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\n\ ajout au d\u00E9but du chemin de classe bootstrap\n\ -Xdiag affichage de messages de diagnostic suppl\u00E9mentaires\n\ -Xnoclassgc d\u00E9sactivation de l''op\u00E9ration de ramasse-miette (garbage collection) de la classe\n\ -Xincgc activation de l''op\u00E9ration de ramasse-miette (garbage collection) incr\u00E9mentielle\n\ -Xloggc:<file> journalisation du statut de l''op\u00E9ration de ramasse-miette (garbage collection) dans un fichier avec horodatages\n\ -Xbatch d\u00E9sactivation de la compilation en arri\u00E8re-plan\n\ -Xms<size> d\u00E9finition de la taille initiale des portions de m\u00E9moire Java\n\ -Xmx<size> d\u00E9finition de la taille maximale des portions de m\u00E9moire Java\n\ -Xss<size> d\u00E9finition de la taille de pile de thread Java\n\ -Xprof sortie des donn\u00E9es de profilage de l''unit\u00E9 centrale\n\ -Xfuture activation des contr\u00F4les les plus stricts en vue d''anticiper la future valeur par d\u00E9faut\n\ -Xrs r\u00E9duction de l''utilisation des signaux OS par Java/la machine virtuelle (voir documentation)\n\ -Xcheck:jni ex\u00E9cution de contr\u00F4les suppl\u00E9mentaires pour les fonctions JNI\n\ -Xshare:off aucune tentative d''utilisation des donn\u00E9es de classe partag\u00E9es\n\ -Xshare:auto utilisation des donn\u00E9es de classe partag\u00E9es si possible (valeur par d\u00E9faut)\n\ -Xshare:on utilisation des donn\u00E9es de classe partag\u00E9es obligatoire ou \u00E9chec de l''op\u00E9ration\n\ -XshowSettings affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n\ -XshowSettings:all\n\ affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n\ -XshowSettings:vm affichage de tous les param\u00E8tres de machine virtuelle et poursuite de l''op\u00E9ration\n\ -XshowSettings:properties\n\ affichage de tous les param\u00E8tres de propri\u00E9t\u00E9 et poursuite de l''op\u00E9ration\n\ -XshowSettings:locale\n\ affichage de tous les param\u00E8tres d''environnement local et poursuite de l''op\u00E9ration\n\nLes options -X ne sont pas des options standard et peuvent faire l''objet de modifications sans pr\u00E9avis.\n +# Translators please note do not translate the options themselves +java.launcher.X.macosx.usage=\nLes options suivantes sont propres \u00E0 Mac OS X :\n\ -XstartOnFirstThread\n\ ex\u00E9cute la m\u00E9thode main() sur le premier thread (AppKit)\n\ -Xdock:name=<application name>"\n\ remplace le nom d'application par d\u00E9faut affich\u00E9 dans l'ancrage\n\ -Xdock:icon=<path to icon file>\n\ remplace l'ic\u00F4ne par d\u00E9faut affich\u00E9e dans l'ancrage\n\n + java.launcher.cls.error1=Erreur : impossible de trouver ou charger la classe principale {0} java.launcher.cls.error2=Erreur : la m\u00E9thode principale n''est pas {0} dans la classe {1}, d\u00E9finissez la m\u00E9thode principale comme suit :\n\ public static void main(String[] args) java.launcher.cls.error3=Erreur : la m\u00E9thode principale doit renvoyer une valeur de type void dans la classe {0}, \nd\u00E9finissez la m\u00E9thode principale comme suit :\n\ public static void main(String[] args)
--- a/src/share/classes/sun/launcher/resources/launcher_it.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/launcher/resources/launcher_it.properties Sun Feb 19 22:03:12 2012 -0800 @@ -34,11 +34,14 @@ java.launcher.ergo.message2 =\ perch\u00E9 si utilizza un computer di classe server.\n # Translators please note do not translate the options themselves -java.launcher.opt.footer =\ -cp <classpath di ricerca di directory e file zip/jar>\n\ -classpath <classpath di ricerca di directory e file zip/jar>\n\ Una lista separata da {0} di directory, archivi JAR\n\ e archivi ZIP utilizzata per la ricerca di file di classe.\n\ -D<nome>=<valore>\n\ imposta una propriet\u00E0 di sistema\n\ -verbose[:class|gc|jni]\n\ abilita l''output descrittivo\n\ -version stampa la versione del prodotto ed esce\n\ -version:<valore>\n\ richiede l''esecuzione della versione specificata\n\ -showversion stampa la versione del prodotto e continua\n\ -jre-restrict-search | -no-jre-restrict-search\n\ include/esclude gli ambienti JRE privati dell''utente nella ricerca della versione\n\ -? -help stampa questo messaggio della Guida\n\ -X stampa la Guida sulle opzioni non standard\n\ -ea[:<nomepackage>...|:<nomeclasse>]\n\ -enableassertions[:<nomepackage>...|:<nomeclasse>]\n\ abilita le asserzioni con la granularit\u00E0 specificata\n\ -da[:<nomepackage>...|:<nomeclasse>]\n\ -disableassertions[:<nomepackage>...|:<nomeclasse>]\n\ disabilita le asserzioni con la granularit\u00E0 specificata\n\ -esa | -enablesystemassertions\n\ abilita le asserzioni di sistema\n\ -dsa | -disablesystemassertions\n\ disabilita le asserzioni di sistema\n\ -agentlib:<nomelib>[=<opzioni>]\n\ carica la libreria agenti nativa <nomelib>, ad esempio -agentlib:hprof\n\ vedere anche -agentlib:jdwp=help and -agentlib:hprof=help\n\ -agentpath:<nomepercorso>[=<opzioni>]\n\ carica la libreria agenti nativa con il percorso completo\n\ -javaagent:<percorsojar>[=<opzioni>]\n\ carica l''agente del linguaggio di programmazione Java. Vedere java.lang.instrument\n\ -splash:<percorsoimmagine>\n\ mostra la schermata iniziale con l''immagine specificata\nVedere http://java.sun.com/javase/reference per maggiori dettagli. +java.launcher.opt.footer =\ -cp <classpath di ricerca di directory e file zip/jar>\n\\ -classpath <classpath di ricerca di directory e file zip/jar>\n\\ Una lista separata da {0} di directory, archivi JAR\n\\ e archivi ZIP utilizzata per la ricerca di file di classe.\n\\ -D<nome>=<valore>\n\\ imposta una propriet\u00E0 di sistema\n\\ -verbose[:class|gc|jni]\n\\ abilita l''output descrittivo\n\\ -version stampa la versione del prodotto ed esce\n\\ -version:<valore>\n\\ richiede l''esecuzione della versione specificata\n\\ -showversion stampa la versione del prodotto e continua\n\\ -jre-restrict-search | -no-jre-restrict-search\n\\ include/esclude gli ambienti JRE privati dell''utente nella ricerca della versione\n\\ -? -help stampa questo messaggio della Guida\n\\ -X stampa la Guida sulle opzioni non standard\n\\ -ea[:<nomepackage>...|:<nomeclasse>]\n\\ -enableassertions[:<nomepackage>...|:<nomeclasse>]\n\\ abilita le asserzioni con la granularit\u00E0 specificata\n\\ -da[:<nomepackage>...|:<nomeclasse>]\n\\ -disableassertions[:<nomepackage>...|:<nomeclasse>]\n\\ disabilita le asserzioni con la granularit\u00E0 specificata\n\\ -esa | -enablesystemassertions\n\\ abilita le asserzioni di sistema\n\\ -dsa | -disablesystemassertions\n\\ disabilita le asserzioni di sistema\n\\ -agentlib:<nomelib>[=<opzioni>]\n\\ carica la libreria agenti nativa <nomelib>, ad esempio -agentlib:hprof\n\\ vedere anche -agentlib:jdwp=help and -agentlib:hprof=help\n\\ -agentpath:<nomepercorso>[=<opzioni>]\n\\ carica la libreria agenti nativa con il percorso completo\n\\ -javaagent:<percorsojar>[=<opzioni>]\n\\ carica l''agente del linguaggio di programmazione Java. Vedere java.lang.instrument\n\\ -splash:<percorsoimmagine>\n\\ mostra la schermata iniziale con l''immagine specificata\nVedere http://www.oracle.com/technetwork/java/javase/documentation/index.html per ulteriori dettagli. # Translators please note do not translate the options themselves java.launcher.X.usage=\ -Xmixed esecuzione in modalit\u00E0 mista (impostazione predefinita)\n\ -Xint esecuzione solo in modalit\u00E0 convertita\n\ -Xbootclasspath:<directory e file zip/jar separati da {0}>\n\ imposta il percorso di ricerca per le classi e le risorse di bootstrap\n\ -Xbootclasspath/a:<directory e file zip/jar separati da {0}>\n\ aggiunge alla fine del classpath di bootstrap\n\ -Xbootclasspath/p:<directory e file zip/jar separati da {0}>\n\ antepone al classpath di bootstrap\n\ -Xdiag mostra messaggi di diagnostica aggiuntivi\n\ -Xnoclassgc disabilita la garbage collection della classe\n\ -Xincgc abilita la garbage collection incrementale\n\ -Xloggc:<file> registra lo stato GC in un file di log con indicatori orari\n\ -Xbatch disabilita la compilazione in background\n\ -Xms<dimensione> imposta la dimensione heap Java iniziale\n\ -Xmx<dimensione> imposta la dimensione heap Java massima\n\ -Xss<dimensione> imposta la dimensione dello stack di thread Java\n\ -Xprof visualizza i dati di profilo della CPU\n\ -Xfuture abilita i controlli pi\u00F9 limitativi anticipando le impostazioni predefinite future\n\ -Xrs riduce l''uso di segnali del sistema operativo da Java/VM (vedere la documentazione)\n\ -Xcheck:jni esegue controlli aggiuntivi per le funzioni JNI\n\ -Xshare:off non tenta di utilizzare i dati della classe condivisi\n\ -Xshare:auto utilizza i dati di classe condivisi se possibile (impostazione predefinita)\n\ -Xshare:on richiede l''uso dei dati di classe condivisi, altrimenti l''esecuzione non riesce.\n\ -XshowSettings mostra tutte le impostazioni e continua\n\ -XshowSettings:all\n\ mostra tutte le impostazioni e continua\n\ -XshowSettings:vm mostra tutte le impostazioni correlate alla VM e continua\n\ -XshowSettings:properties\n\ mostra tutte le impostazioni delle propriet\u00E0 e continua\n\ -XshowSettings:locale\n\ mostra tutte le impostazioni correlate alle impostazioni nazionali e continua\n\nLe opzioni -X non sono opzioni standard e sono soggette a modifiche senza preavviso.\n +# Translators please note do not translate the options themselves +java.launcher.X.macosx.usage=\nLe opzioni riportate di seguito sono specifiche del sistema operativo Mac OS X:\n\\ -XstartOnFirstThread\n\\ Esegue il metodo main() sul primo thread (AppKit).\n\\ -Xdock:name=<nome applicazione>"\n\\ Sostituisce il nome applicazione predefinito visualizzato nel dock\n\\ -Xdock:icon=<percorso file icona>\n\\ Sostituisce l'icona predefinita visualizzata nel dock\n\n + java.launcher.cls.error1=Errore: impossibile trovare o caricare la classe principale {0} java.launcher.cls.error2=Errore: il metodo principale non \u00E8 {0} nella classe {1}. Definire il metodo principale come:\n\ public static void main(String[] args) java.launcher.cls.error3=Errore: il metodo principale deve restituire un valore di tipo void nella classe {0}. \nDefinire il metodo principale come:\n\ public static void main(String[] args)
--- a/src/share/classes/sun/launcher/resources/launcher_ja.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/launcher/resources/launcher_ja.properties Sun Feb 19 22:03:12 2012 -0800 @@ -34,11 +34,14 @@ java.launcher.ergo.message2 =\ \u3053\u308C\u306F\u30B5\u30FC\u30D0\u30FC\u30AF\u30E9\u30B9\u306E\u30DE\u30B7\u30F3\u3067\u5B9F\u884C\u3057\u3066\u3044\u308B\u305F\u3081\u3067\u3059\u3002\n # Translators please note do not translate the options themselves -java.launcher.opt.footer =\ -cp <class search path of directories and zip/jar files>\n\ -classpath <class search path of directories and zip/jar files>\n\ \u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001\n\ JAR\u30A2\u30FC\u30AB\u30A4\u30D6\u304A\u3088\u3073ZIP\u30A2\u30FC\u30AB\u30A4\u30D6\u306E{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\ -D<name>=<value>\n\ \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A2D\u5B9A\u3059\u308B\n\ -verbose[:class|gc|jni]\n\ \u8A73\u7D30\u306A\u51FA\u529B\u3092\u884C\u3046\n\ -version \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B\n\ -version:<value>\n\ \u6307\u5B9A\u3057\u305F\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u5B9F\u884C\u306B\u5FC5\u9808\u306B\u3059\u308B\n\ -showversion \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u3066\u7D9A\u884C\u3059\u308B\n\ -jre-restrict-search | -no-jre-restrict-search\n\ \u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30E9\u30A4\u30D9\u30FC\u30C8JRE\u3092\u30D0\u30FC\u30B8\u30E7\u30F3\u691C\u7D22\u306B\u542B\u3081\u308B/\u9664\u5916\u3059\u308B\n\ -? -help \u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n\ -X \u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u95A2\u3059\u308B\u30D8\u30EB\u30D7\u3092\u51FA\u529B\u3059\u308B\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n\ -esa | -enablesystemassertions\n\ \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n\ -dsa | -disablesystemassertions\n\ \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n\ -agentlib:<libname>[=<options>]\n\ \u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA<libname>\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3002\u4F8B: -agentlib:hprof\n\ -agentlib:jdwp=help\u3068-agentlib:hprof=help\u3082\u53C2\u7167\n\ -agentpath:<pathname>[=<options>]\n\ \u30D5\u30EB\u30D1\u30B9\u540D\u3067\u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u30ED\u30FC\u30C9\u3059\u308B\n\ -javaagent:<jarpath>[=<options>]\n\ Java\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3002java.lang.instrument\u3092\u53C2\u7167\n\ -splash:<imagepath>\n\ \u6307\u5B9A\u3057\u305F\u30A4\u30E1\u30FC\u30B8\u3067\u30B9\u30D7\u30E9\u30C3\u30B7\u30E5\u753B\u9762\u3092\u8868\u793A\u3059\u308B\n\u8A73\u7D30\u306Fhttp://java.sun.com/javase/reference\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +java.launcher.opt.footer =\ -cp <class search path of directories and zip/jar files>\n\ -classpath <class search path of directories and zip/jar files>\n\ \u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001\n\ JAR\u30A2\u30FC\u30AB\u30A4\u30D6\u304A\u3088\u3073ZIP\u30A2\u30FC\u30AB\u30A4\u30D6\u306E{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\ -D<name>=<value>\n\ \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A2D\u5B9A\u3059\u308B\n\ -verbose[:class|gc|jni]\n\ \u8A73\u7D30\u306A\u51FA\u529B\u3092\u884C\u3046\n\ -version \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B\n\ -version:<value>\n\ \u6307\u5B9A\u3057\u305F\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u5B9F\u884C\u306B\u5FC5\u9808\u306B\u3059\u308B\n\ -showversion \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u3066\u7D9A\u884C\u3059\u308B\n\ -jre-restrict-search | -no-jre-restrict-search\n\ \u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30E9\u30A4\u30D9\u30FC\u30C8JRE\u3092\u30D0\u30FC\u30B8\u30E7\u30F3\u691C\u7D22\u306B\u542B\u3081\u308B/\u9664\u5916\u3059\u308B\n\ -? -help \u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n\ -X \u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u95A2\u3059\u308B\u30D8\u30EB\u30D7\u3092\u51FA\u529B\u3059\u308B\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n\ -esa | -enablesystemassertions\n\ \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n\ -dsa | -disablesystemassertions\n\ \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n\ -agentlib:<libname>[=<options>]\n\ \u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA<libname>\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3002\u4F8B: -agentlib:hprof\n\ -agentlib:jdwp=help\u3068-agentlib:hprof=help\u3082\u53C2\u7167\n\ -agentpath:<pathname>[=<options>]\n\ \u30D5\u30EB\u30D1\u30B9\u540D\u3067\u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u30ED\u30FC\u30C9\u3059\u308B\n\ -javaagent:<jarpath>[=<options>]\n\ Java\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3002java.lang.instrument\u3092\u53C2\u7167\n\ -splash:<imagepath>\n\ \u6307\u5B9A\u3057\u305F\u30A4\u30E1\u30FC\u30B8\u3067\u30B9\u30D7\u30E9\u30C3\u30B7\u30E5\u753B\u9762\u3092\u8868\u793A\u3059\u308B\n\u8A73\u7D30\u306Fhttp://www.oracle.com/technetwork/java/javase/documentation/index.html\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002 # Translators please note do not translate the options themselves java.launcher.X.usage=\ -Xmixed \u6DF7\u5408\u30E2\u30FC\u30C9\u306E\u5B9F\u884C(\u30C7\u30D5\u30A9\u30EB\u30C8)\n\ -Xint \u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u30FB\u30E2\u30FC\u30C9\u306E\u5B9F\u884C\u306E\u307F\n\ -Xbootclasspath:<directories and zip/jar files separated by {0}>\n\ \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u306E\u30AF\u30E9\u30B9\u3068\u30EA\u30BD\u30FC\u30B9\u306E\u691C\u7D22\u30D1\u30B9\u3092\u8A2D\u5B9A\u3059\u308B\n\ -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n\ \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306E\u6700\u5F8C\u306B\u8FFD\u52A0\u3059\u308B\n\ -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\n\ \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306E\u524D\u306B\u4ED8\u52A0\u3059\u308B\n\ -Xdiag \u8FFD\u52A0\u306E\u8A3A\u65AD\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B\n\ -Xnoclassgc \u30AF\u30E9\u30B9\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n\ -Xincgc \u5897\u5206\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n\ -Xloggc:<file> \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u4ED8\u3044\u305F\u30D5\u30A1\u30A4\u30EB\u306BGC\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30ED\u30B0\u3092\u8A18\u9332\u3059\u308B\n\ -Xbatch \u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u3092\u7121\u52B9\u306B\u3059\u308B\n\ -Xms<size> Java\u306E\u521D\u671F\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n\ -Xmx<size> Java\u306E\u6700\u5C0F\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n\ -Xss<size> Java\u306E\u30B9\u30EC\u30C3\u30C9\u30FB\u30B9\u30BF\u30C3\u30AF\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n\ -Xprof CPU\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u30FB\u30C7\u30FC\u30BF\u3092\u51FA\u529B\u3059\u308B\n\ -Xfuture \u5C06\u6765\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u898B\u8D8A\u3057\u3066\u3001\u6700\u3082\u53B3\u5BC6\u306A\u30C1\u30A7\u30C3\u30AF\u3092\u6709\u52B9\u306B\u3059\u308B\n\ -Xrs Java/VM\u306B\u3088\u308BOS\u30B7\u30B0\u30CA\u30EB\u306E\u4F7F\u7528\u3092\u524A\u6E1B\u3059\u308B(\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167)\n\ -Xcheck:jni JNI\u95A2\u6570\u306B\u5BFE\u3059\u308B\u8FFD\u52A0\u306E\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3059\u308B\n\ -Xshare:off \u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u306A\u3044\n\ -Xshare:auto \u53EF\u80FD\u3067\u3042\u308C\u3070\u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8)\n\ -Xshare:on \u5171\u6709\u30AF\u30E9\u30B9\u30FB\u30C7\u30FC\u30BF\u306E\u4F7F\u7528\u3092\u5FC5\u9808\u306B\u3057\u3001\u3067\u304D\u306A\u3051\u308C\u3070\u5931\u6557\u3059\u308B\u3002\n\ -XshowSettings \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\ -XshowSettings:all\n\ \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\ -XshowSettings:vm \u3059\u3079\u3066\u306EVM\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\ -XshowSettings:properties\n\ \u3059\u3079\u3066\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\ -XshowSettings:locale\n\ \u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\n-X\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u975E\u6A19\u6E96\u306A\u306E\u3067\u3001\u4E88\u544A\u306A\u304F\u5909\u66F4\u3055\u308C\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\n +# Translators please note do not translate the options themselves +java.launcher.X.macosx.usage=\n\u6B21\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306FMac OS X\u56FA\u6709\u3067\u3059\u3002\n\ -XstartOnFirstThread\n\ main()\u30E1\u30BD\u30C3\u30C9\u3092\u6700\u521D(AppKit)\u306E\u30B9\u30EC\u30C3\u30C9\u3067\u5B9F\u884C\u3059\u308B\n\ -Xdock:name=<application name>"\n\ Dock\u306B\u8868\u793A\u3055\u308C\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n\ -Xdock:icon=<path to icon file>\n\ Dock\u306B\u8868\u793A\u3055\u308C\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n\n + java.launcher.cls.error1=\u30A8\u30E9\u30FC: \u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u3089\u306A\u304B\u3063\u305F\u304B\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F java.launcher.cls.error2=\u30A8\u30E9\u30FC: \u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u304C\u30AF\u30E9\u30B9{1}\u306E{0}\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u6B21\u306E\u3088\u3046\u306B\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u5B9A\u7FA9\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\ public static void main(String[] args) java.launcher.cls.error3=\u30A8\u30E9\u30FC: \u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u306F\u30AF\u30E9\u30B9{0}\u306Evoid\u578B\u306E\u5024\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\u6B21\u306E\u3088\u3046\u306B\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u5B9A\u7FA9\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\ public static void main(String[] args)
--- a/src/share/classes/sun/launcher/resources/launcher_ko.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/launcher/resources/launcher_ko.properties Sun Feb 19 22:03:12 2012 -0800 @@ -34,11 +34,14 @@ java.launcher.ergo.message2 =\ \uC11C\uBC84\uAE09 \uC2DC\uC2A4\uD15C\uC5D0\uC11C \uC2E4\uD589 \uC911\uC774\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.\n # Translators please note do not translate the options themselves -java.launcher.opt.footer =\ -cp <class search path of directories and zip/jar files>\n\ -classpath <class search path of directories and zip/jar files>\n\ \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uAC80\uC0C9\uD560 {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC,\n\ JAR \uC544\uCE74\uC774\uBE0C \uBC0F ZIP \uC544\uCE74\uC774\uBE0C \uBAA9\uB85D\uC785\uB2C8\uB2E4.\n\ -D<name>=<value>\n\ \uC2DC\uC2A4\uD15C \uC18D\uC131\uC744 \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -verbose[:class|gc|jni]\n\ \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -version \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD55C \uD6C4 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n\ -version:<value>\n\ \uC2E4\uD589\uD560 \uBC84\uC804\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.\n\ -showversion \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\ -jre-restrict-search | -no-jre-restrict-search\n\ \uBC84\uC804 \uAC80\uC0C9\uC5D0\uC11C \uC0AC\uC6A9\uC790 \uC804\uC6A9 JRE\uB97C \uD3EC\uD568/\uC81C\uC678\uD569\uB2C8\uB2E4.\n\ -? -help \uC774 \uB3C4\uC6C0\uB9D0 \uBA54\uC2DC\uC9C0\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4.\n\ -X \uBE44\uD45C\uC900 \uC635\uC158\uC5D0 \uB300\uD55C \uB3C4\uC6C0\uB9D0\uC744 \uC778\uC1C4\uD569\uB2C8\uB2E4.\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -esa | -enablesystemassertions\n\ \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -dsa | -disablesystemassertions\n\ \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -agentlib:<libname>[=<options>]\n\ <libname> \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4(\uC608: -agentlib:hprof).\n\ -agentlib:jdwp=help \uBC0F -agentlib:hprof=help\uB3C4 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n\ -agentpath:<pathname>[=<options>]\n\ \uC804\uCCB4 \uACBD\uB85C\uBA85\uC744 \uC0AC\uC6A9\uD558\uC5EC \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4.\n\ -javaagent:<jarpath>[=<options>]\n\ Java \uD504\uB85C\uADF8\uB798\uBC0D \uC5B8\uC5B4 \uC5D0\uC774\uC804\uD2B8\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4. java.lang.instrument\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n\ -splash:<imagepath>\n\ \uC774\uBBF8\uC9C0\uAC00 \uC9C0\uC815\uB41C \uC2A4\uD50C\uB798\uC2DC \uD654\uBA74\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n\uC790\uC138\uD55C \uB0B4\uC6A9\uC740 http://java.sun.com/javase/reference\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624. +java.launcher.opt.footer =\ -cp <class search path of directories and zip/jar files>\n\\ -classpath <class search path of directories and zip/jar files>\n\\ \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uAC80\uC0C9\uD560 {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC,\n\\ JAR \uC544\uCE74\uC774\uBE0C \uBC0F ZIP \uC544\uCE74\uC774\uBE0C \uBAA9\uB85D\uC785\uB2C8\uB2E4.\n\\ -D<name>=<value>\n\\ \uC2DC\uC2A4\uD15C \uC18D\uC131\uC744 \uC124\uC815\uD569\uB2C8\uB2E4.\n\\ -verbose[:class|gc|jni]\n\\ \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\\ -version \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD55C \uD6C4 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n\\ -version:<value>\n\\ \uC2E4\uD589\uD560 \uBC84\uC804\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.\n\\ -showversion \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\\ -jre-restrict-search | -no-jre-restrict-search\n\\ \uBC84\uC804 \uAC80\uC0C9\uC5D0\uC11C \uC0AC\uC6A9\uC790 \uC804\uC6A9 JRE\uB97C \uD3EC\uD568/\uC81C\uC678\uD569\uB2C8\uB2E4.\n\\ -? -help \uC774 \uB3C4\uC6C0\uB9D0 \uBA54\uC2DC\uC9C0\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4.\n\\ -X \uBE44\uD45C\uC900 \uC635\uC158\uC5D0 \uB300\uD55C \uB3C4\uC6C0\uB9D0\uC744 \uC778\uC1C4\uD569\uB2C8\uB2E4.\n\\ -ea[:<packagename>...|:<classname>]\n\\ -enableassertions[:<packagename>...|:<classname>]\n\\ \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\\ -da[:<packagename>...|:<classname>]\n\\ -disableassertions[:<packagename>...|:<classname>]\n\\ \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\\ -esa | -enablesystemassertions\n\\ \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\\ -dsa | -disablesystemassertions\n\\ \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\\ -agentlib:<libname>[=<options>]\n\\ <libname> \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4(\uC608: -agentlib:hprof).\n\\ -agentlib:jdwp=help \uBC0F -agentlib:hprof=help\uB3C4 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n\\ -agentpath:<pathname>[=<options>]\n\\ \uC804\uCCB4 \uACBD\uB85C\uBA85\uC744 \uC0AC\uC6A9\uD558\uC5EC \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4.\n\\ -javaagent:<jarpath>[=<options>]\n\\ Java \uD504\uB85C\uADF8\uB798\uBC0D \uC5B8\uC5B4 \uC5D0\uC774\uC804\uD2B8\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4. java.lang.instrument\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n\\ -splash:<imagepath>\n\\ \uC774\uBBF8\uC9C0\uAC00 \uC9C0\uC815\uB41C \uC2A4\uD50C\uB798\uC2DC \uD654\uBA74\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n\uC790\uC138\uD55C \uB0B4\uC6A9\uC740 http://www.oracle.com/technetwork/java/javase/documentation/index.html\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624. # Translators please note do not translate the options themselves java.launcher.X.usage=\ -Xmixed \uD63C\uD569 \uBAA8\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n\ -Xint \uD574\uC11D\uB41C \uBAA8\uB4DC\uB9CC \uC2E4\uD589\uD569\uB2C8\uB2E4.\n\ -Xbootclasspath:<directories and zip/jar files separated by {0}>\n\ \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uBC0F \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uAC80\uC0C9 \uACBD\uB85C\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n\ \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uACBD\uB85C \uB05D\uC5D0 \uCD94\uAC00\uD569\uB2C8\uB2E4.\n\ -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\n\ \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uACBD\uB85C \uC55E\uC5D0 \uCD94\uAC00\uD569\uB2C8\uB2E4.\n\ -Xdiag \uCD94\uAC00 \uC9C4\uB2E8 \uBA54\uC2DC\uC9C0\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n\ -Xnoclassgc \uD074\uB798\uC2A4\uC758 \uBD88\uD544\uC694\uD55C \uC815\uBCF4 \uBAA8\uC74C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -Xincgc \uC99D\uBD84\uC801\uC778 \uBD88\uD544\uC694\uD55C \uC815\uBCF4 \uBAA8\uC74C\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -Xloggc:<file> \uC2DC\uAC04 \uAE30\uB85D\uACFC \uD568\uAED8 \uD30C\uC77C\uC5D0 GC \uC0C1\uD0DC\uB97C \uAE30\uB85D\uD569\uB2C8\uB2E4.\n\ -Xbatch \uBC31\uADF8\uB77C\uC6B4\uB4DC \uCEF4\uD30C\uC77C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -Xms<size> \uCD08\uAE30 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -Xmx<size> \uCD5C\uB300 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -Xss<size> Java \uC2A4\uB808\uB4DC \uC2A4\uD0DD \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -Xprof CPU \uD504\uB85C\uD30C\uC77C \uC791\uC131 \uB370\uC774\uD130\uB97C \uCD9C\uB825\uD569\uB2C8\uB2E4.\n\ -Xfuture \uBBF8\uB798 \uAE30\uBCF8\uAC12\uC744 \uC608\uCE21\uD558\uC5EC \uAC00\uC7A5 \uC5C4\uACA9\uD55C \uAC80\uC0AC\uB97C \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\ -Xrs Java/VM\uC5D0 \uC758\uD55C OS \uC2E0\uD638 \uC0AC\uC6A9\uC744 \uC904\uC785\uB2C8\uB2E4(\uC124\uBA85\uC11C \uCC38\uC870).\n\ -Xcheck:jni JNI \uD568\uC218\uC5D0 \uB300\uD55C \uCD94\uAC00 \uAC80\uC0AC\uB97C \uC218\uD589\uD569\uB2C8\uB2E4.\n\ -Xshare:off \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130 \uC0AC\uC6A9\uC744 \uC2DC\uB3C4\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n\ -Xshare:auto \uAC00\uB2A5\uD55C \uACBD\uC6B0 \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n\ -Xshare:on \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4. \uADF8\uB807\uC9C0 \uC54A\uC744 \uACBD\uC6B0 \uC2E4\uD328\uD569\uB2C8\uB2E4.\n\ -XshowSettings \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\ -XshowSettings:all\n\ \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\ -XshowSettings:vm \uBAA8\uB4E0 VM \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\ -XshowSettings:properties\n\ \uBAA8\uB4E0 \uC18D\uC131 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\ -XshowSettings:locale\n\ \uBAA8\uB4E0 \uB85C\uCF00\uC77C \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\n-X \uC635\uC158\uC740 \uBE44\uD45C\uC900 \uC635\uC158\uC774\uBBC0\uB85C \uD1B5\uC9C0 \uC5C6\uC774 \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n +# Translators please note do not translate the options themselves +java.launcher.X.macosx.usage=\n\uB2E4\uC74C\uC740 Mac OS X\uC5D0 \uD2B9\uC815\uB41C \uC635\uC158\uC785\uB2C8\uB2E4.\n\\ -XstartOnFirstThread\n\\ \uCCAB\uBC88\uC9F8 (AppKit) \uC2A4\uB808\uB4DC\uC5D0 main() \uBA54\uC18C\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.\n\\ -Xdock:name=<application name>"\n\\ \uACE0\uC815\uC73C\uB85C \uD45C\uC2DC\uB41C \uAE30\uBCF8 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8 \uC774\uB984\uC744 \uBB34\uD6A8\uD654\uD569\uB2C8\uB2E4.\n\\ -Xdock:icon=<path to icon file>\n\\ \uACE0\uC815\uC73C\uB85C \uD45C\uC2DC\uB41C \uAE30\uBCF8 \uC544\uC774\uCF58\uC744 \uBB34\uD6A8\uD654\uD569\uB2C8\uB2E4.\n\n + java.launcher.cls.error1=\uC624\uB958: \uAE30\uBCF8 \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uCC3E\uAC70\uB098 \uB85C\uB4DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. java.launcher.cls.error2=\uC624\uB958: {1} \uD074\uB798\uC2A4\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uAC00 {0}\uC774(\uAC00) \uC544\uB2D9\uB2C8\uB2E4. \uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\n\ public static void main(String[] args) java.launcher.cls.error3=\uC624\uB958: \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB294 {0} \uD074\uB798\uC2A4\uC5D0\uC11C void \uC720\uD615\uC758 \uAC12\uC744 \uBC18\uD658\uD574\uC57C \uD569\uB2C8\uB2E4. \n\uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\n\ public static void main(String[] args)
--- a/src/share/classes/sun/launcher/resources/launcher_pt_BR.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/launcher/resources/launcher_pt_BR.properties Sun Feb 19 22:03:12 2012 -0800 @@ -34,11 +34,14 @@ java.launcher.ergo.message2 =\ porque a execu\u00E7\u00E3o est\u00E1 sendo feita em uma m\u00E1quina de classe de servidor.\n # Translators please note do not translate the options themselves -java.launcher.opt.footer =\ -cp <caminho de pesquisa da classe dos diret\u00F3rios e arquivos zip/jar>\n\ -classpath <caminho de pesquisa da classe dos diret\u00F3rios e arquivos zip/jar>\n\ Uma lista separada por {0} de diret\u00F3rios, archives JAR\n\ e archives ZIP nos quais ser\u00E3o procurados os arquivos de classe.\n\ -D<nome>=<valor>\n\ define uma propriedade do sistema\n\ -verbose[:classe|gc|jni]\n\ ativa a sa\u00EDda detalhada\n\ -version imprime a vers\u00E3o do produto e sai do programa\n\ -version:<valor>\n\ requer a execu\u00E7\u00E3o da vers\u00E3o especificada\n\ -showversion imprime a vers\u00E3o do produto e continua\n\ -jre-restrict-search | -no-jre-restrict-search\n\ inclui/exclui JREs privados do usu\u00E1rio na pesquisa de vers\u00E3o\n\ -? -help imprime esta mensagem de ajuda\n\ -X imprime a ajuda sobre op\u00E7\u00F5es n\u00E3o padronizadas\n\ -ea[:<nome do pacote>...|:<nome da classe>]\n\ -enableassertions[:<nome do pacote>...|:<nome da classe>]\n\ ativa asser\u00E7\u00F5es com granularidade especificada\n\ -da[:<nome do pacote>...|:<nome da classe>]\n\ -disableassertions[:<nome do pacote>...|:<nome da classe>]\n\ desativa asser\u00E7\u00F5es com granularidade especificada\n\ -esa | -enablesystemassertions\n\ ativa asser\u00E7\u00F5es do sistema\n\ -dsa | -disablesystemassertions\n\ desativa asser\u00E7\u00F5es do sistema\n\ -agentlib:<nome da biblioteca>[=<op\u00E7\u00F5es>]\n\ carrega a biblioteca de agentes nativa <nome da biblioteca>, por exempl: -agentlib:hprof\n\ consulte tamb\u00E9m: -agentlib:jdwp=help e -agentlib:hprof=help\n\ -agentpath:<nome do caminho>[=<op\u00E7\u00F5es>]\n\ carrega a biblioteca de agentes nativa com base no nome do caminho completo\n\ -javaagent:<caminho do arquivo jar>[=<op\u00E7\u00F5es>]\n\ carrega o agente da linguagem de programa\u00E7\u00E3o Java; consulte java.lang.instrument\n\ -splash:<caminho da imagem>\n\ mostra a tela de abertura com a imagem especificada\nConsulte http://java.sun.com/javase/reference para obter mais detalhes. +java.launcher.opt.footer =\ -cp <caminho de pesquisa da classe dos diret\u00F3rios e arquivos zip/jar>\n\\ -classpath <caminho de pesquisa da classe dos diret\u00F3rios e arquivos zip/jar>\n\\ Uma lista separada por {0} de diret\u00F3rios, archives JAR\n\\ e archives ZIP nos quais ser\u00E3o procurados os arquivos de classe.\n\\ -D<nome>=<valor>\n\\ define uma propriedade do sistema\n\\ -verbose[:class|gc|jni]\n\\ ativa a sa\u00EDda detalhada\n\\ -version imprime a vers\u00E3o do produto e sai do programa\n\\ -version:<valor>\n\\ requer a execu\u00E7\u00E3o da vers\u00E3o especificada\n\\ -showversion imprime a vers\u00E3o do produto e continua\n\\ -jre-restrict-search | -no-jre-restrict-search\n\\ inclui/exclui JREs privados do usu\u00E1rio na pesquisa de vers\u00E3o\n\\ -? -help imprime esta mensagem de ajuda\n\\ -X imprime a ajuda sobre op\u00E7\u00F5es n\u00E3o padronizadas\n\\ -ea[:<nome do pacote>...|:<nome da classe>]\n\\ -enableassertions[:<nome do pacote>...|:<nome da classe>]\n\\ ativa asser\u00E7\u00F5es com granularidade especificada\n\\ -da[:<nome do pacote>...|:<nome da classe>]\n\\ -disableassertions[:<nome do pacote>...|:<nome da classe>]\n\\ desativa asser\u00E7\u00F5es com granularidade especificada\n\\ -esa | -enablesystemassertions\n\\ ativa asser\u00E7\u00F5es do sistema\n\\ -dsa | -disablesystemassertions\n\\ desativa asser\u00E7\u00F5es do sistema\n\\ -agentlib:<nome da biblioteca>[=<op\u00E7\u00F5est>]\n\\ carrega a biblioteca de agentes nativa <nome da biblioteca>, e.g. -agentlib:hprof\n\\ consulte tamb\u00E9m, -agentlib:jdwp=help and -agentlib:hprof=help\n\\ -agentpath:<nome do caminho>[=<op\u00E7\u00F5es>]\n\\ carrega a biblioteca de agentes nativa com base no nome do caminho completo\n\\ -javaagent:<caminho do arquivo jar>[=<op\u00E7\u00F5es>]\n\\ carrega o agente da linguagem de programa\u00E7\u00E3o Java; consulte java.lang.instrument\n\\ -splash:<caminho da imagem>\n\\ mostra a tela de abertura com a imagem especificada\nConsulte http://www.oracle.com/technetwork/java/javase/documentation/index.html para ver mais detalhes. # Translators please note do not translate the options themselves java.launcher.X.usage=\ -Xmixed execu\u00E7\u00E3o no modo misto (default)\n\ -Xint execu\u00E7\u00E3o somente no modo interpretado\n\ -Xbootclasspath:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n\ define o caminho de pesquisa para classes e recursos de inicializa\u00E7\u00E3o\n\ -Xbootclasspath/a:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n\ anexa no final do caminho da classe de inicializa\u00E7\u00E3o\n\ -Xbootclasspath/p:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n\ anexa no in\u00EDcio do caminho da classe de inicializa\u00E7\u00E3o\n\ -Xdiag mostra mensagens de diagn\u00F3stico adicionais\n\ -Xnoclassgc desativa a coleta de lixo da classe\n\ -Xincgc ativa a coleta de lixo incremental\n\ -Xloggc:<arquivo> registra o status do GC status em um arquivo com marca\u00E7\u00F5es de data e hor\u00E1rio\n\ -Xbatch desativa a compila\u00E7\u00E3o em segundo plano\n\ -Xms<tamanho> define o tamanho inicial do heap Java\n\ -Xmx<tamanho> define o tamanho m\u00E1ximo do heap Java\n\ -Xss<tamanho> define o tamanho da pilha de threads java\n\ -Xprof produz dados de perfil da cpu\n\ -Xfuture ativa verifica\u00E7\u00F5es de n\u00EDvel m\u00E1ximo de exig\u00EAncia, prevendo o valor default futuro\n\ -Xrs reduz o uso de sinais do SO pelo(a) Java/VM (consulte a documenta\u00E7\u00E3o)\n\ -Xcheck:jni executa verifica\u00E7\u00F5es adicionais de fun\u00E7\u00F5es da JNI\n\ -Xshare:off n\u00E3o tenta usar dados da classe compartilhada\n\ -Xshare:auto se poss\u00EDvel, usa dados da classe compartilhada (default)\n\ -Xshare:on requer o uso de dados da classe compartilhada, caso contr\u00E1rio haver\u00E1 falha.\n\ -XshowSettings mostra todas as defini\u00E7\u00F5es e continua\n\ -XshowSettings:all\n\ mostra todas as defini\u00E7\u00F5es e continua\n\ -XshowSettings:vm mostra todas as defini\u00E7\u00F5es relacionadas \u00E0 vm e continua\n\ -XshowSettings:properties\n\ mostra todas as defini\u00E7\u00F5es da propriedade e continua\n\ -XshowSettings:locale\n\ mostra todas as defini\u00E7\u00F5es relativas \u00E0s configura\u00E7\u00F5es regionais e continua\n\nAs -X options n\u00E3o s\u00E3o padronizadas e est\u00E3o sujeitas a altera\u00E7\u00F5es sem aviso.\n +# Translators please note do not translate the options themselves +java.launcher.X.macosx.usage=\nAs op\u00E7\u00F5es a seguir s\u00E3o espec\u00EDficas para o Mac OS X:\n\\ -XstartOnFirstThread\n\\ executa o m\u00E9todo main() no primeiro thread (AppKit)\n\\ -Xdock:name=<nome da aplica\u00E7\u00E3o>"\n\\ substitui o nome da aplica\u00E7\u00E3o default exibido no encaixe\n\\ -Xdock:icon=<caminho para o arquivo do \u00EDcone>\n\\ substitui o \u00EDcone exibido no encaixe\n\n + java.launcher.cls.error1=Erro: N\u00E3o foi poss\u00EDvel localizar nem carregar a classe principal {0} java.launcher.cls.error2=Erro: O m\u00E9todo principal n\u00E3o \u00E9 {0} na classe {1}; defina o m\u00E9todo principal como:\n\ public static void main(String[] args) java.launcher.cls.error3=Erro: O m\u00E9todo principal deve retornar um valor do tipo void na classe {0}; \ndefina o m\u00E9todo principal como:\n\ public static void main(String[] args)
--- a/src/share/classes/sun/launcher/resources/launcher_sv.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/launcher/resources/launcher_sv.properties Sun Feb 19 22:03:12 2012 -0800 @@ -34,11 +34,14 @@ java.launcher.ergo.message2 =\ eftersom du k\u00F6r en serverklassmaskin.\n # Translators please note do not translate the options themselves -java.launcher.opt.footer =\ -cp <klass\u00F6kv\u00E4g f\u00F6r kataloger och zip-/jar-filer>\n\ -classpath <klass\u00F6kv\u00E4g f\u00F6r kataloger och zip-/jar-filer>\n\ En {0}-avgr\u00E4nsad lista med kataloger, JAR-arkiv,\n\ och ZIP-arkiv f\u00F6r s\u00F6kning efter klassfiler.\n\ -D<namn>=<v\u00E4rde>\n\ ange en systemegenskap\n\ -verbose[:class|gc|jni]\n\ aktivera utf\u00F6rliga utdata\n\ -version skriv ut produktversionen och avsluta\n\ -version:<v\u00E4rde>\n\ beg\u00E4r den specifika versionen som ska k\u00F6ras\n\ -showversion skriv ut produktversionen och forts\u00E4tt\n\ -jre-restrict-search | -no-jre-restrict-search\n\ inkludera/exkludera anv\u00E4ndarprivata JRE:er i versions\u00F6kningen\n\ -? -help skriv ut det h\u00E4r hj\u00E4lpmeddelandet\n\ -X skriv ut hj\u00E4lp f\u00F6r icke-standardalternativ\n\ -ea[:<paket>...|:<klass>]\n\ -enableassertions[:<paket>...|:<klass>]\n\ aktivera verifiering med angiven detaljgrad\n\ -da[:<packagename>...|:<klass>]\n\ -disableassertions[:<paket>...|:<klass>]\n\ avaktivera verifiering med angiven detaljgrad\n\ -esa | -enablesystemassertions\n\ aktivera systemverifieringar\n\ -dsa | -disablesystemassertions\n\ avaktivera systemverifieringar\n\ -agentlib:<bibliotek>[=<alternativ>]\n\ ladda ursprungligt agentbibliotek <bibliotek>, e.g. -agentlib:hprof\n\ se \u00E4ven -agentlib:jdwp=help och -agentlib:hprof=help\n\ -agentpath:<s\u00F6kv\u00E4g>[=<alternativ>]\n\ ladda ursprungligt agentbibliotek med helt s\u00F6kv\u00E4gsnamn\n\ -javaagent:<jar-s\u00F6kv\u00E4g>[=<alternativ>]\n\ ladda Java-programspr\u00E5ksagent, se java.lang.instrument\n\ -splash:<bilds\u00F6kv\u00E4g>\n\ visa v\u00E4lkomstsk\u00E4rm med angiven bild\nMer information finns p\u00E5 http://java.sun.com/javase/reference. +java.launcher.opt.footer =\ -cp <klass\u00F6kv\u00E4g f\u00F6r kataloger och zip-/jar-filer>\n\ -classpath <klass\u00F6kv\u00E4g f\u00F6r kataloger och zip-/jar-filer>\n\ En {0}-separerad lista med kataloger, JAR-arkiv,\n\ och ZIP-arkiv f\u00F6r s\u00F6kning efter klassfiler.\n\ -D<name>=<value>\n\ ange en systemegenskap\n\ -verbose[:class|gc|jni]\n\ aktivera utf\u00F6rliga utdata\n\ -version skriv ut produktversionen och avsluta\n\ -version:<value>\n\ beg\u00E4r den specifika versionen som ska k\u00F6ras\n\ -showversion skriv ut produktversionen och forts\u00E4tt\n\ -jre-restrict-search | -no-jre-restrict-search\n\ inkludera/exkludera anv\u00E4ndarprivata JRE:er i versions\u00F6kningen\n\ -? -help skriv ut det h\u00E4r hj\u00E4lpmeddelandet\n\ -X skriv ut hj\u00E4lp f\u00F6r icke-standardalternativ\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ aktivera verifiering med angiven detaljgrad\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ avaktivera verifiering med angiven detaljgrad\n\ -esa | -enablesystemassertions\n\ aktivera systemverifieringar\n\ -dsa | -disablesystemassertions\n\ avaktivera systemverifieringar\n\ -agentlib:<libname>[=<options>]\n\ ladda ursprungligt agentbibliotek <libname>, e.g. -agentlib:hprof\n\ se \u00E4ven -agentlib:jdwp=help och -agentlib:hprof=help\n\ -agentpath:<pathname>[=<options>]\n\ ladda ursprungligt agentbibliotek med helt s\u00F6kv\u00E4gsnamn\n\ -javaagent:<jarpath>[=<options>]\n\ ladda Java-programspr\u00E5ksagent, se java.lang.instrument\n\ -splash:<imagepath>\n\ visa v\u00E4lkomstsk\u00E4rm med angiven bild\nMer information finns p\u00E5 http://www.oracle.com/technetwork/java/javase/documentation/index.html. # Translators please note do not translate the options themselves java.launcher.X.usage=\ -Xmixed k\u00F6rning i blandat l\u00E4ge (standard)\n\ -Xint endast k\u00F6rning i tolkat l\u00E4ge\n\ -Xbootclasspath:<kataloger och zip-/jar-filer avgr\u00E4nsas med {0}>\n\ ange s\u00F6kv\u00E4g f\u00F6r programladdningsklasser och -resurser\n\ -Xbootclasspath/a:<kataloger och zip-/jar-filer avgr\u00E4nsas med {0}>\n\ l\u00E4gg till i slutet av programladdningsklassens s\u00F6kv\u00E4g\n\ -Xbootclasspath/p:<kataloger och zip-/jar-filer avgr\u00E4nsas med {0}>\n\ l\u00E4gg till i b\u00F6rjan av programladdningsklassens s\u00F6kv\u00E4g\n\ -Xdiag visa ytterligare diagnostiska meddelanden\n\ -Xnoclassgc avaktivera klassens skr\u00E4pinsamling\n\ -Xincgc aktivera inkrementell skr\u00E4pinsamling\n\ -Xloggc:<fil> logga GC-status till en fil med tidsst\u00E4mplar\n\ -Xbatch avaktivera bakgrundskompilering\n\ -Xms<storlek> ange ursprunglig storlek f\u00F6r Java-heap\n\ -Xmx<storlek> ange maximal storlek f\u00F6r Java-heap\n\ -Xss<storlek> ange storlek f\u00F6r java-tr\u00E5dsstack\n\ -Xprof utdata f\u00F6r processorprofilering\n\ -Xfuture aktivera str\u00E4ngaste kontroller, f\u00F6rv\u00E4ntad framtida standard\n\ -Xrs minska OS-signalanv\u00E4ndning av Java/VM (se dokumentation)\n\ -Xcheck:jni utf\u00F6r ytterligare kontroller f\u00F6r JNI-funktioner\n\ -Xshare:off anv\u00E4nd inte delade klassdata\n\ -Xshare:auto anv\u00E4nd delade klassdata om det g\u00E5r (standard)\n\ -Xshare:on kr\u00E4v att delade klassdata anv\u00E4nds, annars slutf\u00F6r inte.\n\ -XshowSettings visa alla inst\u00E4llningar och forts\u00E4tt\n\ -XshowSettings:all\n\ visa alla inst\u00E4llningar och forts\u00E4tt\n\ -XshowSettings:vm visa alla vm-relaterade inst\u00E4llningar och forts\u00E4tt\n\ -XshowSettings:properties\n\ visa alla egenskapsinst\u00E4llningar och forts\u00E4tt\n\ -XshowSettings:locale\n\ visa alla spr\u00E5krelaterade inst\u00E4llningar och forts\u00E4tt\n\n-X-alternativen \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande.\n +# Translators please note do not translate the options themselves +java.launcher.X.macosx.usage=\nF\u00F6ljande alternativ \u00E4r specifika f\u00F6r Mac OS X:\n\ -XstartOnFirstThread\n\ k\u00F6r huvudmetoden() p\u00E5 den f\u00F6rsta (AppKit) tr\u00E5den\n\ -Xdock:name=<application name>"\n\ \u00E5sidosatt standardapplikationsnamn visas i docka\n\ -Xdock:icon=<path to icon file>\n\ \u00E5sidosatt standardikon visas i docka\n\n + java.launcher.cls.error1=Fel: Hittar inte eller kan inte ladda huvudklassen {0} java.launcher.cls.error2=Fel: Huvudmetoden \u00E4r inte {0} i klassen {1}, definiera huvudmetoden som:\n\ public static void main(String[] args) java.launcher.cls.error3=Fel: Huvudmetoden m\u00E5ste returnera ett v\u00E4rde av typen void i klassen {0}, \ndefiniera huvudmetoden som:\n\ public static void main(String[] args)
--- a/src/share/classes/sun/launcher/resources/launcher_zh_CN.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/launcher/resources/launcher_zh_CN.properties Sun Feb 19 22:03:12 2012 -0800 @@ -34,11 +34,14 @@ java.launcher.ergo.message2 =\ \u56E0\u4E3A\u60A8\u662F\u5728\u670D\u52A1\u5668\u7C7B\u8BA1\u7B97\u673A\u4E0A\u8FD0\u884C\u3002\n # Translators please note do not translate the options themselves -java.launcher.opt.footer =\ -cp <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n\ -classpath <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n\ \u7528 {0} \u5206\u9694\u7684\u76EE\u5F55, JAR \u6863\u6848\n\ \u548C ZIP \u6863\u6848\u5217\u8868, \u7528\u4E8E\u641C\u7D22\u7C7B\u6587\u4EF6\u3002\n\ -D<name>=<value>\n\ \u8BBE\u7F6E\u7CFB\u7EDF\u5C5E\u6027\n\ -verbose[:class|gc|jni]\n\ \u542F\u7528\u8BE6\u7EC6\u8F93\u51FA\n\ -version \u8F93\u51FA\u4EA7\u54C1\u7248\u672C\u5E76\u9000\u51FA\n\ -version:<value>\n\ \u9700\u8981\u6307\u5B9A\u7684\u7248\u672C\u624D\u80FD\u8FD0\u884C\n\ -showversion \u8F93\u51FA\u4EA7\u54C1\u7248\u672C\u5E76\u7EE7\u7EED\n\ -jre-restrict-search | -no-jre-restrict-search\n\ \u5728\u7248\u672C\u641C\u7D22\u4E2D\u5305\u62EC/\u6392\u9664\u7528\u6237\u4E13\u7528 JRE\n\ -? -help \u8F93\u51FA\u6B64\u5E2E\u52A9\u6D88\u606F\n\ -X \u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u5E2E\u52A9\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ \u6309\u6307\u5B9A\u7684\u7C92\u5EA6\u542F\u7528\u65AD\u8A00\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ \u7981\u7528\u5177\u6709\u6307\u5B9A\u7C92\u5EA6\u7684\u65AD\u8A00\n\ -esa | -enablesystemassertions\n\ \u542F\u7528\u7CFB\u7EDF\u65AD\u8A00\n\ -dsa | -disablesystemassertions\n\ \u7981\u7528\u7CFB\u7EDF\u65AD\u8A00\n\ -agentlib:<libname>[=<options>]\n\ \u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93 <libname>, \u4F8B\u5982 -agentlib:hprof\n\ \u53E6\u8BF7\u53C2\u9605 -agentlib:jdwp=help \u548C -agentlib:hprof=help\n\ -agentpath:<pathname>[=<options>]\n\ \u6309\u5B8C\u6574\u8DEF\u5F84\u540D\u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93\n\ -javaagent:<jarpath>[=<options>]\n\ \u52A0\u8F7D Java \u7F16\u7A0B\u8BED\u8A00\u4EE3\u7406, \u8BF7\u53C2\u9605 java.lang.instrument\n\ -splash:<imagepath>\n\ \u4F7F\u7528\u6307\u5B9A\u7684\u56FE\u50CF\u663E\u793A\u542F\u52A8\u5C4F\u5E55\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605 http://java.sun.com/javase/reference\u3002 +java.launcher.opt.footer =\ -cp <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n\ -classpath <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n\ \u7528 {0} \u5206\u9694\u7684\u76EE\u5F55, JAR \u6863\u6848\n\ \u548C ZIP \u6863\u6848\u5217\u8868, \u7528\u4E8E\u641C\u7D22\u7C7B\u6587\u4EF6\u3002\n\ -D<name>=<value>\n\ \u8BBE\u7F6E\u7CFB\u7EDF\u5C5E\u6027\n\ -verbose[:class|gc|jni]\n\ \u542F\u7528\u8BE6\u7EC6\u8F93\u51FA\n\ -version \u8F93\u51FA\u4EA7\u54C1\u7248\u672C\u5E76\u9000\u51FA\n\ -version:<value>\n\ \u9700\u8981\u6307\u5B9A\u7684\u7248\u672C\u624D\u80FD\u8FD0\u884C\n\ -showversion \u8F93\u51FA\u4EA7\u54C1\u7248\u672C\u5E76\u7EE7\u7EED\n\ -jre-restrict-search | -no-jre-restrict-search\n\ \u5728\u7248\u672C\u641C\u7D22\u4E2D\u5305\u62EC/\u6392\u9664\u7528\u6237\u4E13\u7528 JRE\n\ -? -help \u8F93\u51FA\u6B64\u5E2E\u52A9\u6D88\u606F\n\ -X \u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u5E2E\u52A9\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ \u6309\u6307\u5B9A\u7684\u7C92\u5EA6\u542F\u7528\u65AD\u8A00\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ \u7981\u7528\u5177\u6709\u6307\u5B9A\u7C92\u5EA6\u7684\u65AD\u8A00\n\ -esa | -enablesystemassertions\n\ \u542F\u7528\u7CFB\u7EDF\u65AD\u8A00\n\ -dsa | -disablesystemassertions\n\ \u7981\u7528\u7CFB\u7EDF\u65AD\u8A00\n\ -agentlib:<libname>[=<options>]\n\ \u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93 <libname>, \u4F8B\u5982 -agentlib:hprof\n\ \u53E6\u8BF7\u53C2\u9605 -agentlib:jdwp=help \u548C -agentlib:hprof=help\n\ -agentpath:<pathname>[=<options>]\n\ \u6309\u5B8C\u6574\u8DEF\u5F84\u540D\u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93\n\ -javaagent:<jarpath>[=<options>]\n\ \u52A0\u8F7D Java \u7F16\u7A0B\u8BED\u8A00\u4EE3\u7406, \u8BF7\u53C2\u9605 java.lang.instrument\n\ -splash:<imagepath>\n\ \u4F7F\u7528\u6307\u5B9A\u7684\u56FE\u50CF\u663E\u793A\u542F\u52A8\u5C4F\u5E55\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605 http://www.oracle.com/technetwork/java/javase/documentation/index.html\u3002 # Translators please note do not translate the options themselves java.launcher.X.usage=\ -Xmixed \u6DF7\u5408\u6A21\u5F0F\u6267\u884C (\u9ED8\u8BA4)\n\ -Xint \u4EC5\u89E3\u91CA\u6A21\u5F0F\u6267\u884C\n\ -Xbootclasspath:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n\ \u8BBE\u7F6E\u641C\u7D22\u8DEF\u5F84\u4EE5\u5F15\u5BFC\u7C7B\u548C\u8D44\u6E90\n\ -Xbootclasspath/a:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n\ \u9644\u52A0\u5728\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u672B\u5C3E\n\ -Xbootclasspath/p:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n\ \u7F6E\u4E8E\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u4E4B\u524D\n\ -Xdiag \u663E\u793A\u9644\u52A0\u8BCA\u65AD\u6D88\u606F\n\ -Xnoclassgc \u7981\u7528\u7C7B\u5783\u573E\u6536\u96C6\n\ -Xincgc \u542F\u7528\u589E\u91CF\u5783\u573E\u6536\u96C6\n\ -Xloggc:<file> \u5C06 GC \u72B6\u6001\u8BB0\u5F55\u5728\u6587\u4EF6\u4E2D (\u5E26\u65F6\u95F4\u6233)\n\ -Xbatch \u7981\u7528\u540E\u53F0\u7F16\u8BD1\n\ -Xms<size> \u8BBE\u7F6E\u521D\u59CB Java \u5806\u5927\u5C0F\n\ -Xmx<size> \u8BBE\u7F6E\u6700\u5927 Java \u5806\u5927\u5C0F\n\ -Xss<size> \u8BBE\u7F6E Java \u7EBF\u7A0B\u5806\u6808\u5927\u5C0F\n\ -Xprof \u8F93\u51FA cpu \u914D\u7F6E\u6587\u4EF6\u6570\u636E\n\ -Xfuture \u542F\u7528\u6700\u4E25\u683C\u7684\u68C0\u67E5, \u9884\u671F\u5C06\u6765\u7684\u9ED8\u8BA4\u503C\n\ -Xrs \u51CF\u5C11 Java/VM \u5BF9\u64CD\u4F5C\u7CFB\u7EDF\u4FE1\u53F7\u7684\u4F7F\u7528 (\u8BF7\u53C2\u9605\u6587\u6863)\n\ -Xcheck:jni \u5BF9 JNI \u51FD\u6570\u6267\u884C\u5176\u4ED6\u68C0\u67E5\n\ -Xshare:off \u4E0D\u5C1D\u8BD5\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E\n\ -Xshare:auto \u5728\u53EF\u80FD\u7684\u60C5\u51B5\u4E0B\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E (\u9ED8\u8BA4)\n\ -Xshare:on \u8981\u6C42\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E, \u5426\u5219\u5C06\u5931\u8D25\u3002\n\ -XshowSettings \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\ -XshowSettings:all\n\ \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\ -XshowSettings:vm \u663E\u793A\u6240\u6709\u4E0E vm \u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\ -XshowSettings:properties\n\ \u663E\u793A\u6240\u6709\u5C5E\u6027\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\ -XshowSettings:locale\n\ \u663E\u793A\u6240\u6709\u4E0E\u533A\u57DF\u8BBE\u7F6E\u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\n-X \u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n +# Translators please note do not translate the options themselves +java.launcher.X.macosx.usage=\n\u4EE5\u4E0B\u9009\u9879\u4E3A Mac OS X \u7279\u5B9A\u7684\u9009\u9879:\n\ -XstartOnFirstThread\n\ \u5728\u7B2C\u4E00\u4E2A (AppKit) \u7EBF\u7A0B\u4E0A\u8FD0\u884C main() \u65B9\u6CD5\n\ -Xdock:name=<\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0>"\n\ \u8986\u76D6\u505C\u9760\u680F\u4E2D\u663E\u793A\u7684\u9ED8\u8BA4\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0\n\ -Xdock:icon=<\u56FE\u6807\u6587\u4EF6\u7684\u8DEF\u5F84>\n\ \u8986\u76D6\u505C\u9760\u680F\u4E2D\u663E\u793A\u7684\u9ED8\u8BA4\u56FE\u6807\n\n + java.launcher.cls.error1=\u9519\u8BEF: \u627E\u4E0D\u5230\u6216\u65E0\u6CD5\u52A0\u8F7D\u4E3B\u7C7B {0} java.launcher.cls.error2=\u9519\u8BEF: \u4E3B\u65B9\u6CD5\u4E0D\u662F\u7C7B {1} \u4E2D\u7684{0}, \u8BF7\u5C06\u4E3B\u65B9\u6CD5\u5B9A\u4E49\u4E3A:\n\ public static void main(String[] args) java.launcher.cls.error3=\u9519\u8BEF: \u4E3B\u65B9\u6CD5\u5FC5\u987B\u8FD4\u56DE\u7C7B {0} \u4E2D\u7684\u7A7A\u7C7B\u578B\u503C, \u8BF7\n\u5C06\u4E3B\u65B9\u6CD5\u5B9A\u4E49\u4E3A:\n\ public static void main(String[] args)
--- a/src/share/classes/sun/launcher/resources/launcher_zh_TW.properties Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/launcher/resources/launcher_zh_TW.properties Sun Feb 19 22:03:12 2012 -0800 @@ -34,11 +34,14 @@ java.launcher.ergo.message2 =\ \u56E0\u70BA\u60A8\u6B63\u5728\u4F3A\u670D\u5668\u985E\u5225\u6A5F\u5668\u4E0A\u57F7\u884C\u3002\n # Translators please note do not translate the options themselves -java.launcher.opt.footer =\ -cp <class search path of directories and zip/jar files>\n\ -classpath <class search path of directories and zip/jar files>\n\ \u641C\u5C0B\u985E\u5225\u6A94\u6848\u4E4B\u76EE\u9304\u3001JAR \u5B58\u6A94\n\ \u548C ZIP \u5B58\u6A94\u7684\u4EE5{0}\u5206\u9694\u7684\u6E05\u55AE\u3002\n\ -D<name>=<value>\n\ \u8A2D\u5B9A\u7CFB\u7D71\u5C6C\u6027\n\ -verbose[:class|gc|jni]\n\ \u555F\u7528\u8A73\u7D30\u8CC7\u8A0A\u8F38\u51FA\n\ -version \u5217\u5370\u7522\u54C1\u7248\u672C\u4E26\u7D50\u675F\n\ -version:<value>\n\ \u9700\u8981\u6307\u5B9A\u7684\u7248\u672C\u624D\u80FD\u57F7\u884C\n\ -showversion \u5217\u5370\u7522\u54C1\u7248\u672C\u4E26\u7E7C\u7E8C\n\ -jre-restrict-search | -no-jre-restrict-search\n\ \u5728\u7248\u672C\u641C\u5C0B\u4E2D\u5305\u62EC/\u6392\u9664\u4F7F\u7528\u8005\u5C08\u7528 JRE\n\ -? -help \u5217\u5370\u6B64\u8AAA\u660E\u8A0A\u606F\n\ -X \u5217\u5370\u975E\u6A19\u6E96\u9078\u9805\u7684\u8AAA\u660E\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ \u555F\u7528\u5177\u6709\u6307\u5B9A\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ \u505C\u7528\u5177\u6709\u6307\u5B9A\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n\ -esa | -enablesystemassertions\n\ \u555F\u7528\u7CFB\u7D71\u5BA3\u544A\n\ -dsa | -disablesystemassertions\n\ \u505C\u7528\u7CFB\u7D71\u5BA3\u544A\n\ -agentlib:<libname>[=<options>]\n\ \u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB <libname>\uFF0C\u4F8B\u5982 -agentlib:hprof\n\ \u53E6\u8ACB\u53C3\u95B1 -agentlib:jdwp=help \u8207 -agentlib:hprof=help\n\ -agentpath:<pathname>[=<options>]\n\ \u4F7F\u7528\u5B8C\u6574\u8DEF\u5F91\u540D\u7A31\u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB\n\ -javaagent:<jarpath>[=<options>]\n\ \u8F09\u5165 Java \u7A0B\u5F0F\u8A9E\u8A00\u4EE3\u7406\u7A0B\u5F0F\uFF0C\u8ACB\u53C3\u95B1 java.lang.instrument\n\ -splash:<imagepath>\n\ \u986F\u793A\u6307\u5B9A\u5F71\u50CF\u7684\u8EDF\u9AD4\u8CC7\u8A0A\u756B\u9762\n\u8ACB\u53C3\u95B1 http://java.sun.com/javase/reference\uFF0C\u66B8\u89E3\u8A73\u7D30\u8CC7\u8A0A\u3002 +java.launcher.opt.footer =\ -cp <class search path of directories and zip/jar files>\n\ -classpath <class search path of directories and zip/jar files>\n\ \u4F7F\u7528 {0} \u5340\u9694\u7684\u76EE\u9304\u3001JAR \u5B58\u6A94\u4EE5\u53CA\n\ ZIP \u5B58\u6A94\u6E05\u55AE\uFF0C\u7528\u4EE5\u641C\u5C0B\u985E\u5225\u6A94\u6848\u3002\n\ -D<name>=<value>\n\ \u8A2D\u5B9A\u7CFB\u7D71\u5C6C\u6027\n\ -verbose[:class|gc|jni]\n\ \u555F\u7528\u8A73\u7D30\u8CC7\u8A0A\u8F38\u51FA\n\ -version \u5217\u5370\u7522\u54C1\u7248\u672C\u4E26\u7D50\u675F\n\ -version:<value>\n\ \u9700\u8981\u6307\u5B9A\u7684\u7248\u672C\u624D\u80FD\u57F7\u884C\n\ -showversion \u5217\u5370\u7522\u54C1\u7248\u672C\u4E26\u7E7C\u7E8C\n\ -jre-restrict-search | -no-jre-restrict-search\n\ \u5728\u7248\u672C\u641C\u5C0B\u4E2D\u5305\u62EC/\u6392\u9664\u4F7F\u7528\u8005\u5C08\u7528 JRE\n\ -? -help \u5217\u5370\u6B64\u8AAA\u660E\u8A0A\u606F\n\ -X \u5217\u5370\u975E\u6A19\u6E96\u9078\u9805\u7684\u8AAA\u660E\n\ -ea[:<packagename>...|:<classname>]\n\ -enableassertions[:<packagename>...|:<classname>]\n\ \u555F\u7528\u542B\u6307\u5B9A\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n\ -da[:<packagename>...|:<classname>]\n\ -disableassertions[:<packagename>...|:<classname>]\n\ \u505C\u7528\u542B\u6307\u5B9A\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n\ -esa | -enablesystemassertions\n\ \u555F\u7528\u7CFB\u7D71\u5BA3\u544A\n\ -dsa | -disablesystemassertions\n\ \u505C\u7528\u7CFB\u7D71\u5BA3\u544A\n\ -agentlib:<libname>[=<options>]\n\ \u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB <libname>\uFF0C\u4F8B\u5982 -agentlib:hprof\n\ \u53E6\u8ACB\u53C3\u95B1 -agentlib:jdwp=help \u8207 -agentlib:hprof=help\n\ -agentpath:<pathname>[=<options>]\n\ \u4F7F\u7528\u5B8C\u6574\u8DEF\u5F91\u540D\u7A31\u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB\n\ -javaagent:<jarpath>[=<options>]\n\ \u8F09\u5165 Java \u7A0B\u5F0F\u8A9E\u8A00\u4EE3\u7406\u7A0B\u5F0F\uFF0C\u8ACB\u53C3\u95B1 java.lang.instrument\n\ -splash:<imagepath>\n\ \u986F\u793A\u6307\u5B9A\u5F71\u50CF\u7684\u8EDF\u9AD4\u8CC7\u8A0A\u756B\u9762\n\u8ACB\u53C3\u95B1 http://www.oracle.com/technetwork/java/javase/documentation/index.html \u66B8\u89E3\u8A73\u7D30\u8CC7\u8A0A\u3002 # Translators please note do not translate the options themselves java.launcher.X.usage=\ -Xmixed \u6DF7\u5408\u6A21\u5F0F\u57F7\u884C (\u9810\u8A2D)\n\ -Xint \u50C5\u9650\u89E3\u8B6F\u6A21\u5F0F\u57F7\u884C\n\ -Xbootclasspath:<\u4EE5 {0} \u5206\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n\ \u8A2D\u5B9A\u555F\u52D5\u5B89\u88DD\u985E\u5225\u548C\u8CC7\u6E90\u7684\u641C\u5C0B\u8DEF\u5F91\n\ -Xbootclasspath/a:<\u4EE5 {0} \u5206\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n\ \u9644\u52A0\u5728\u555F\u52D5\u5B89\u88DD\u985E\u5225\u8DEF\u5F91\u7684\u7D50\u5C3E\n\ -Xbootclasspath/p:<\u4EE5 {0} \u5206\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n\ \u9644\u52A0\u5728\u555F\u52D5\u5B89\u88DD\u985E\u5225\u8DEF\u5F91\u7684\u524D\u9762\n\ -Xdiag \u986F\u793A\u5176\u4ED6\u7684\u8A3A\u65B7\u8A0A\u606F\n\ -Xnoclassgc \u505C\u7528\u985E\u5225\u8CC7\u6E90\u56DE\u6536\n\ -Xincgc \u555F\u7528\u6F38\u9032\u8CC7\u6E90\u56DE\u6536\n\ -Xloggc:<file> \u5229\u7528\u6642\u6233\u5C07 GC \u72C0\u614B\u8A18\u9304\u81F3\u6A94\u6848\u4E2D\n\ -Xbatch \u505C\u7528\u80CC\u666F\u7DE8\u8B6F\n\ -Xms<size> \u8A2D\u5B9A\u8D77\u59CB Java \u5806\u96C6\u5927\u5C0F\n\ -Xmx<size> \u8A2D\u5B9A Java \u5806\u96C6\u5927\u5C0F\u4E0A\u9650\n\ -Xss<size> \u8A2D\u5B9A Java \u57F7\u884C\u7DD2\u5806\u758A\u5927\u5C0F\n\ -Xprof \u8F38\u51FA CPU \u5206\u6790\u8CC7\u6599\n\ -Xfuture \u555F\u7528\u6700\u56B4\u683C\u7684\u6AA2\u67E5\uFF0C\u9810\u5148\u505A\u70BA\u5C07\u4F86\u7684\u9810\u8A2D\n\ -Xrs \u6E1B\u5C11 Java/VM \u4F7F\u7528\u4F5C\u696D\u7CFB\u7D71\u4FE1\u865F (\u8ACB\u53C3\u95B1\u6587\u4EF6)\n\ -Xcheck:jni \u57F7\u884C\u5176\u4ED6\u7684 JNI \u51FD\u6578\u6AA2\u67E5\n\ -Xshare:off \u4E0D\u5617\u8A66\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\n\ -Xshare:auto \u5118\u53EF\u80FD\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599 (\u9810\u8A2D)\n\ -Xshare:on \u9700\u8981\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\uFF0C\u5426\u5247\u5931\u6557\u3002\n\ -XshowSettings \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\ -XshowSettings:all\n\ \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\ -XshowSettings:vm \u986F\u793A\u6240\u6709 VM \u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\ -XshowSettings:properties\n\ \u986F\u793A\u6240\u6709\u5C6C\u6027\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\ -XshowSettings:locale\n\ \u986F\u793A\u6240\u6709\u5730\u5340\u8A2D\u5B9A\u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\n -X \u9078\u9805\u4E0D\u662F\u6A19\u6E96\u9078\u9805\uFF0C\u82E5\u6709\u8B8A\u66F4\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n +# Translators please note do not translate the options themselves +java.launcher.X.macosx.usage=\n\u4E0B\u5217\u662F Mac OS X \u7279\u5B9A\u9078\u9805:\n\ -XstartOnFirstThread\n\ \u5728\u7B2C\u4E00\u500B (AppKit) \u57F7\u884C\u7DD2\u57F7\u884C main() \u65B9\u6CD5\n\ -Xdock:name=<application name>"\n\ \u8986\u5BEB\u7D50\u5408\u8AAA\u660E\u756B\u9762\u4E2D\u986F\u793A\u7684\u9810\u8A2D\u61C9\u7528\u7A0B\u5F0F\u540D\u7A31\n\ -Xdock:icon=<path to icon file>\n\ \u8986\u5BEB\u7D50\u5408\u8AAA\u660E\u756B\u9762\u4E2D\u986F\u793A\u7684\u9810\u8A2D\u5716\u793A\n\n + java.launcher.cls.error1=\u932F\u8AA4: \u627E\u4E0D\u5230\u6216\u7121\u6CD5\u8F09\u5165\u4E3B\u8981\u985E\u5225 {0} java.launcher.cls.error2=\u932F\u8AA4: \u4E3B\u8981\u65B9\u6CD5\u4E0D\u662F\u985E\u5225 {1} \u4E2D\u7684 {0}\uFF0C\u8ACB\u5B9A\u7FA9\u4E3B\u8981\u65B9\u6CD5\u70BA:\n\ public static void main(String[] args) java.launcher.cls.error3=\u932F\u8AA4: \u4E3B\u8981\u65B9\u6CD5\u5FC5\u9808\u50B3\u56DE\u985E\u5225 {0} \u4E2D void \u985E\u578B\u7684\u503C\uFF0C \n\u8ACB\u5B9A\u7FA9\u4E3B\u8981\u65B9\u6CD5\u70BA:\n\ public static void main(String[] args)
--- a/src/share/classes/sun/management/HotSpotDiagnostic.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/management/HotSpotDiagnostic.java Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. * 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,13 +27,9 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; import java.util.List; import javax.management.ObjectName; -import com.sun.management.DiagnosticCommandInfo; -import com.sun.management.DiagnosticCommandArgumentInfo; import com.sun.management.HotSpotDiagnosticMXBean; import com.sun.management.VMOption; @@ -120,54 +116,7 @@ } } - public List<String> getDiagnosticCommands() { - String[] commands = getDiagnosticCommands0(); - return commands == null ? Collections.<String>emptyList() : - Arrays.asList(commands); - } - - public DiagnosticCommandInfo getDiagnosticCommandInfo(String command) { - String[] array = new String[] { command }; - return getDiagnosticCommandInfo0(array)[0]; - } - - public List<DiagnosticCommandInfo> getDiagnosticCommandInfo() { - String[] commands = getDiagnosticCommands0(); - return Arrays.asList(getDiagnosticCommandInfo0(commands)); - } - - public List<DiagnosticCommandInfo> getDiagnosticCommandInfo( - List<String> commands) { - return Arrays.asList(getDiagnosticCommandInfo0( - commands.toArray(new String[commands.size()]))); - } - - public String execute(String command) { - Util.checkControlAccess(); - return executeDiagnosticCommand0(command); - } - - public String execute(String cmd, String... arguments) { - if(cmd == null) { - throw new NullPointerException("Missing command name"); - } - StringBuilder sb = new StringBuilder(); - sb.append(cmd); - sb.append(" "); - for(String arg : arguments) { - sb.append(arg); - sb.append(" "); - } - return execute(sb.toString()); - } - public ObjectName getObjectName() { return Util.newObjectName("com.sun.management:type=HotSpotDiagnostic"); } - - private native String[] getDiagnosticCommands0(); - private native DiagnosticCommandInfo[] getDiagnosticCommandInfo0( - String[] commands) throws IllegalArgumentException; - private native String executeDiagnosticCommand0(String command) - throws IllegalArgumentException; }
--- a/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Sun Feb 19 22:03:12 2012 -0800 @@ -1279,7 +1279,8 @@ } String osName = AccessController.doPrivileged( new GetPropertyAction("os.name")); - if ("SunOS".equals(osName) || "Linux".equals(osName)) { + if ("SunOS".equals(osName) || "Linux".equals(osName) + || osName.startsWith("Mac OS")) { charset("x-COMPOUND_TEXT", "COMPOUND_TEXT", new String[] { "COMPOUND_TEXT", // JDK historical
--- a/src/share/classes/sun/print/PathGraphics.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/print/PathGraphics.java Sun Feb 19 22:03:12 2012 -0800 @@ -1025,7 +1025,8 @@ continue; } glyph = font2D.charToGlyph(c); - if (glyph != missingGlyph && glyph < numGlyphs && + if (glyph != missingGlyph && + glyph >= 0 && glyph < numGlyphs && (glyphToCharMap[glyph] == CharToGlyphMapper.INVISIBLE_GLYPH_ID)) { glyphToCharMap[glyph] = c;
--- a/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java Sun Feb 19 22:03:12 2012 -0800 @@ -256,11 +256,25 @@ } try { - // Use JCE - SecretKey skey = getPBEKey(password); - Cipher cipher = Cipher.getInstance(algOid.toString()); - cipher.init(Cipher.DECRYPT_MODE, skey, algParams); - byte[] privateKeyInfo = cipher.doFinal(encryptedKey); + byte[] privateKeyInfo; + while (true) { + try { + // Use JCE + SecretKey skey = getPBEKey(password); + Cipher cipher = Cipher.getInstance(algOid.toString()); + cipher.init(Cipher.DECRYPT_MODE, skey, algParams); + privateKeyInfo = cipher.doFinal(encryptedKey); + break; + } catch (Exception e) { + if (password.length == 0) { + // Retry using an empty password + // without a NULL terminator. + password = new char[1]; + continue; + } + throw e; + } + } PKCS8EncodedKeySpec kspec = new PKCS8EncodedKeySpec(privateKeyInfo); @@ -1272,18 +1286,24 @@ ObjectIdentifier algOid = in.getOID(); AlgorithmParameters algParams = parseAlgParameters(in); - try { - // Use JCE - SecretKey skey = getPBEKey(password); - Cipher cipher = Cipher.getInstance(algOid.toString()); - cipher.init(Cipher.DECRYPT_MODE, skey, algParams); - safeContentsData = cipher.doFinal(safeContentsData); - - } catch (Exception e) { - IOException ioe = new IOException("failed to decrypt safe" - + " contents entry: " + e); - ioe.initCause(e); - throw ioe; + while (true) { + try { + // Use JCE + SecretKey skey = getPBEKey(password); + Cipher cipher = Cipher.getInstance(algOid.toString()); + cipher.init(Cipher.DECRYPT_MODE, skey, algParams); + safeContentsData = cipher.doFinal(safeContentsData); + break; + } catch (Exception e) { + if (password.length == 0) { + // Retry using an empty password + // without a NULL terminator. + password = new char[1]; + continue; + } + throw new IOException( + "failed to decrypt safe contents entry: " + e, e); + } } } else { throw new IOException("public key protected PKCS12" +
--- a/src/share/classes/sun/security/util/Resources_de.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/util/Resources_de.java Sun Feb 19 22:03:12 2012 -0800 @@ -47,8 +47,7 @@ "*******************************************\n\n"}, // keytool: Help part -// "Option" should be translated. - {".OPTION.", " [Option]..."}, + {".OPTION.", " [OPTION]..."}, {"Options.", "Optionen:"}, {"Use.keytool.help.for.all.available.commands", "\"keytool -help\" f\u00FCr alle verf\u00FCgbaren Befehle verwenden"}, @@ -68,7 +67,6 @@ "Exportiert ein Zertifikat"}, //-exportcert {"Generates.a.key.pair", "Generiert ein Schl\u00FCsselpaar"}, //-genkeypair -// translation of "secret" key should be different to "private" key. {"Generates.a.secret.key", "Generiert einen Secret Key"}, //-genseckey {"Generates.certificate.from.a.certificate.request", @@ -331,7 +329,7 @@ {"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"}, + {"YES", "JA"}, {"New.prompt.", "Neues {0}: "}, {"Passwords.must.differ", "Kennw\u00F6rter m\u00FCssen sich unterscheiden"}, {"Re.enter.new.prompt.", "Neues {0} erneut eingeben: "}, @@ -368,7 +366,7 @@ "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 *****************"}, {"Signer.d.", "Signaturgeber #%d:"}, {"Timestamp.", "Zeitstempel:"}, {"Signature.", "Signatur:"}, @@ -393,7 +391,7 @@ "Zertifikat der obersten Ebene in Antwort:\n"}, {".is.not.trusted.", "... ist nicht vertrauensw\u00FCrdig. "}, {"Install.reply.anyway.no.", "Antwort trotzdem installieren? [Nein]: "}, - {"NO", "Nein"}, + {"NO", "NEIN"}, {"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",
--- a/src/share/classes/sun/security/util/Resources_es.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/util/Resources_es.java Sun Feb 19 22:03:12 2012 -0800 @@ -47,8 +47,7 @@ "*******************************************\n\n"}, // keytool: Help part -// "Option" should be translated. - {".OPTION.", " [Opci\u00F3n]..."}, + {".OPTION.", " [OPTION]..."}, {"Options.", "Opciones:"}, {"Use.keytool.help.for.all.available.commands", "Utilice\"keytool -help\" para todos los comandos disponibles"}, @@ -68,7 +67,6 @@ "Exporta el certificado"}, //-exportcert {"Generates.a.key.pair", "Genera un par de claves"}, //-genkeypair -// translation of "secret" key should be different to "private" key. {"Generates.a.secret.key", "Genera un clave secreta"}, //-genseckey {"Generates.certificate.from.a.certificate.request", @@ -331,7 +329,7 @@ {"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\u00ED"}, + {"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}: "}, @@ -368,7 +366,7 @@ "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 *****************"}, {"Signer.d.", "#%d de Firmante:"}, {"Timestamp.", "Registro de Hora:"}, {"Signature.", "Firma:"}, @@ -393,7 +391,7 @@ "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]: "}, - {"NO", "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", @@ -640,7 +638,7 @@ // sun.security.pkcs11.SunPKCS11 {"PKCS11.Token.providerName.Password.", - "Contrase\u00F1a del Elemento PKCS11 [{0}]: "}, + "Contrase\u00F1a del Token PKCS11 [{0}]: "}, /* --- DEPRECATED --- */ // javax.security.auth.Policy
--- a/src/share/classes/sun/security/util/Resources_fr.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/util/Resources_fr.java Sun Feb 19 22:03:12 2012 -0800 @@ -47,8 +47,7 @@ "*******************************************\n\n"}, // keytool: Help part -// "Option" should be translated. - {".OPTION.", " [Option]..."}, + {".OPTION.", " [OPTION]..."}, {"Options.", "Options :"}, {"Use.keytool.help.for.all.available.commands", "Utiliser \"keytool -help\" pour toutes les commandes disponibles"}, @@ -68,7 +67,6 @@ "Exporte le certificat"}, //-exportcert {"Generates.a.key.pair", "G\u00E9n\u00E8re une paire de cl\u00E9s"}, //-genkeypair -// translation of "secret" key should be different to "private" key. {"Generates.a.secret.key", "G\u00E9n\u00E8re une cl\u00E9 secr\u00E8te"}, //-genseckey {"Generates.certificate.from.a.certificate.request", @@ -331,7 +329,7 @@ {"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"}, + {"YES", "OUI"}, {"New.prompt.", "Nouveau {0} : "}, {"Passwords.must.differ", "Les mots de passe doivent diff\u00E9rer"}, {"Re.enter.new.prompt.", "Indiquez encore le nouveau {0} : "}, @@ -368,7 +366,7 @@ "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.", - "***************** Avertissement Avertissement Avertissement *****************"}, + "***************** WARNING WARNING WARNING *****************"}, {"Signer.d.", "Signataire n\u00B0%d :"}, {"Timestamp.", "Horodatage :"}, {"Signature.", "Signature :"}, @@ -393,7 +391,7 @@ "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"}, + {"NO", "NON"}, {"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",
--- a/src/share/classes/sun/security/util/Resources_it.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/util/Resources_it.java Sun Feb 19 22:03:12 2012 -0800 @@ -47,8 +47,7 @@ "*******************************************\n\n"}, // keytool: Help part -// "Option" should be translated. - {".OPTION.", " [Opzione]..."}, + {".OPTION.", " [OPTION]..."}, {"Options.", "Opzioni:"}, {"Use.keytool.help.for.all.available.commands", "Utilizzare \"keytool -help\" per visualizzare tutti i comandi disponibili"}, @@ -68,7 +67,6 @@ "Esporta il certificato"}, //-exportcert {"Generates.a.key.pair", "Genera una coppia di chiavi"}, //-genkeypair -// translation of "secret" key should be different to "private" key. {"Generates.a.secret.key", "Genera una chiave segreta"}, //-genseckey {"Generates.certificate.from.a.certificate.request", @@ -368,7 +366,7 @@ "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.", - "***************** Avvertenza Avvertenza Avvertenza *****************"}, + "***************** WARNING WARNING WARNING *****************"}, {"Signer.d.", "Firmatario #%d:"}, {"Timestamp.", "Indicatore orario:"}, {"Signature.", "Firma:"}, @@ -393,7 +391,7 @@ "Certificato di primo livello nella risposta:\n"}, {".is.not.trusted.", "...non \u00E8 considerato sicuro. "}, {"Install.reply.anyway.no.", "Installare la risposta? [no]: "}, - {"NO", "No"}, + {"NO", "NO"}, {"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", @@ -430,7 +428,7 @@ "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]"}, + {"Usage.policytool.options.", "Uso: policytool [opzioni]"}, {".file.file.policy.file.location", " [-file <file>] posizione del file dei criteri"}, {"New", "Nuovo"},
--- a/src/share/classes/sun/security/util/Resources_ja.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/util/Resources_ja.java Sun Feb 19 22:03:12 2012 -0800 @@ -47,8 +47,7 @@ "*******************************************\n\n"}, // keytool: Help part -// "Option" should be translated. - {".OPTION.", " [\u30AA\u30D7\u30B7\u30E7\u30F3]..."}, + {".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"}, @@ -68,7 +67,6 @@ "\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 -// translation of "secret" key should be different to "private" key. {"Generates.a.secret.key", "\u79D8\u5BC6\u9375\u3092\u751F\u6210\u3057\u307E\u3059"}, //-genseckey {"Generates.certificate.from.a.certificate.request", @@ -368,7 +366,7 @@ "\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 *****************"}, {"Signer.d.", "\u7F72\u540D\u8005\u756A\u53F7%d:"}, {"Timestamp.", "\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7:"}, {"Signature.", "\u7F72\u540D:"},
--- a/src/share/classes/sun/security/util/Resources_ko.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/util/Resources_ko.java Sun Feb 19 22:03:12 2012 -0800 @@ -47,8 +47,7 @@ "*******************************************\n\n"}, // keytool: Help part -// "Option" should be translated. - {".OPTION.", " [\uC635\uC158]..."}, + {".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"}, @@ -68,7 +67,6 @@ "\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 -// translation of "secret" key should be different to "private" key. {"Generates.a.secret.key", "\uBCF4\uC548 \uD0A4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-genseckey {"Generates.certificate.from.a.certificate.request", @@ -368,7 +366,7 @@ "<{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 *****************"}, {"Signer.d.", "\uC11C\uBA85\uC790 #%d:"}, {"Timestamp.", "\uC2DC\uAC04 \uAE30\uB85D:"}, {"Signature.", "\uC11C\uBA85:"},
--- a/src/share/classes/sun/security/util/Resources_pt_BR.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/util/Resources_pt_BR.java Sun Feb 19 22:03:12 2012 -0800 @@ -47,8 +47,7 @@ "*******************************************\n\n"}, // keytool: Help part -// "Option" should be translated. - {".OPTION.", " [Op\u00E7\u00E3o]..."}, + {".OPTION.", " [OPTION]..."}, {"Options.", "Op\u00E7\u00F5es:"}, {"Use.keytool.help.for.all.available.commands", "Use \"keytool -help\" para todos os comandos dispon\u00EDveis"}, @@ -68,9 +67,8 @@ "Exporta o certificado"}, //-exportcert {"Generates.a.key.pair", "Gera um par de chaves"}, //-genkeypair -// translation of "secret" key should be different to "private" key. {"Generates.a.secret.key", - "Gera uma chave Secreta"}, //-genseckey + "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 @@ -305,14 +303,14 @@ {"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: "}, + {"Certificate.fingerprint.SHA1.", "Fingerprint (SHA1) do certificado: "}, {"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"}, + {"Failed.to.parse.input", "Falha durante o parsing 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"}, @@ -331,7 +329,7 @@ {"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"}, + {"YES", "SIM"}, {"New.prompt.", "Nova {0}: "}, {"Passwords.must.differ", "As senhas devem ser diferentes"}, {"Re.enter.new.prompt.", "Informe novamente a nova {0}: "}, @@ -368,7 +366,7 @@ "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.", - "***************** Advert\u00EAncia Advert\u00EAncia Advert\u00EAncia *****************"}, + "***************** WARNING WARNING WARNING *****************"}, {"Signer.d.", "Signat\u00E1rio #%d:"}, {"Timestamp.", "Timestamp:"}, {"Signature.", "Assinatura:"}, @@ -393,7 +391,7 @@ "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\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", @@ -599,7 +597,7 @@ // sun.security.provider.PolicyFile {"java.security.policy.error.parsing.policy.message", - "java.security.policy: erro durante o parse de {0}:\n\t{1}"}, + "java.security.policy: erro durante o parsing 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",
--- a/src/share/classes/sun/security/util/Resources_sv.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/util/Resources_sv.java Sun Feb 19 22:03:12 2012 -0800 @@ -47,8 +47,7 @@ "*******************************************\n\n"}, // keytool: Help part -// "Option" should be translated. - {".OPTION.", " [Alternativ]..."}, + {".OPTION.", " [OPTION]..."}, {"Options.", "Alternativ:"}, {"Use.keytool.help.for.all.available.commands", "L\u00E4s \"Hj\u00E4lp - Nyckelverktyg\" f\u00F6r alla tillg\u00E4ngliga kommandon"}, @@ -68,7 +67,6 @@ "Exporterar certifikat"}, //-exportcert {"Generates.a.key.pair", "Genererar nyckelpar"}, //-genkeypair -// translation of "secret" key should be different to "private" key. {"Generates.a.secret.key", "Genererar hemlig nyckel"}, //-genseckey {"Generates.certificate.from.a.certificate.request", @@ -331,7 +329,7 @@ {"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"}, + {"YES", "JA"}, {"New.prompt.", "Nytt {0}: "}, {"Passwords.must.differ", "L\u00F6senorden m\u00E5ste vara olika"}, {"Re.enter.new.prompt.", "Ange nytt {0} igen: "}, @@ -368,7 +366,7 @@ "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 *****************"}, {"Signer.d.", "Signerare #%d:"}, {"Timestamp.", "Tidsst\u00E4mpel:"}, {"Signature.", "Underskrift:"}, @@ -393,7 +391,7 @@ "Toppniv\u00E5certifikatet i svaret:\n"}, {".is.not.trusted.", "... \u00E4r inte betrott. "}, {"Install.reply.anyway.no.", "Vill du installera svaret \u00E4nd\u00E5? [nej]: "}, - {"NO", "Nej"}, + {"NO", "NEJ"}, {"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",
--- a/src/share/classes/sun/security/util/Resources_zh_CN.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/util/Resources_zh_CN.java Sun Feb 19 22:03:12 2012 -0800 @@ -47,8 +47,7 @@ "*******************************************\n\n"}, // keytool: Help part -// "Option" should be translated. - {".OPTION.", " [\u9009\u9879]..."}, + {".OPTION.", " [OPTION]..."}, {"Options.", "\u9009\u9879:"}, {"Use.keytool.help.for.all.available.commands", "\u4F7F\u7528 \"keytool -help\" \u83B7\u53D6\u6240\u6709\u53EF\u7528\u547D\u4EE4"}, @@ -68,9 +67,8 @@ "\u5BFC\u51FA\u8BC1\u4E66"}, //-exportcert {"Generates.a.key.pair", "\u751F\u6210\u5BC6\u94A5\u5BF9"}, //-genkeypair -// translation of "secret" key should be different to "private" key. {"Generates.a.secret.key", - "\u751F\u6210\u5BF9\u79F0\u5BC6\u94A5"}, //-genseckey + "\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 @@ -189,7 +187,7 @@ {"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 KeyStore \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"}, + "\u8B66\u544A: PKCS12 \u5BC6\u94A5\u5E93\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", @@ -210,13 +208,13 @@ "\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\u671F\u5FC5\u987B\u5927\u4E8E\u96F6"}, + "\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", - "'list' \u547D\u4EE4\u4E0D\u80FD\u540C\u65F6\u6307\u5B9A -v \u53CA -rfc"}, + "\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", @@ -246,7 +244,7 @@ {"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? [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"}, @@ -325,13 +323,13 @@ {"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? [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? [no]: "}, - {"Trust.this.certificate.no.", "\u662F\u5426\u4FE1\u4EFB\u6B64\u8BC1\u4E66? [no]: "}, - {"YES", "\u662F"}, + "\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}: "}, @@ -339,7 +337,7 @@ {"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.", - "\u8F93\u5165\u65B0\u7684\u522B\u540D\t(\u6309\u56DE\u8F66\u4EE5\u53D6\u6D88\u5BF9\u6B64\u6761\u76EE\u7684\u5BFC\u5165): "}, + "\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)"}, @@ -368,7 +366,7 @@ "\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 *****************"}, {"Signer.d.", "\u7B7E\u540D\u8005 #%d:"}, {"Timestamp.", "\u65F6\u95F4\u6233:"}, {"Signature.", "\u7B7E\u540D:"}, @@ -392,8 +390,8 @@ {"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? [no]: "}, - {"NO", "\u5426"}, + {"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", @@ -405,7 +403,7 @@ {"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\u5BF9\u79F0\u5BC6\u94A5"}, + "\u8BF7\u63D0\u4F9B -keysize \u4EE5\u751F\u6210\u5BC6\u94A5"}, {"Extensions.", "\u6269\u5C55: "}, {".Empty.value.", "(\u7A7A\u503C)"}, @@ -424,7 +422,7 @@ // 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\u5171\u5BC6\u94A5\u4E0D\u5B58\u5728\u3002\u8BF7\u786E\u4FDD\u5DF2\u6B63\u786E\u914D\u7F6E KeyStore\u3002"}, + "\u8B66\u544A: \u522B\u540D {0} \u7684\u516C\u5171\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\u5668\u7684\u53C2\u6570\u65E0\u6548: {0}"}, @@ -451,7 +449,7 @@ {"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"}, + {"KeyStore", "\u5BC6\u94A5\u5E93"}, {"Policy.File.", "\u7B56\u7565\u6587\u4EF6:"}, {"Could.not.open.policy.file.policyFile.e.toString.", "\u65E0\u6CD5\u6253\u5F00\u7B56\u7565\u6587\u4EF6: {0}: {1}"}, @@ -483,10 +481,10 @@ {".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:"}, + {"KeyStore.URL.", "\u5BC6\u94A5\u5E93 URL:"}, + {"KeyStore.Type.", "\u5BC6\u94A5\u5E93\u7C7B\u578B:"}, + {"KeyStore.Provider.", "\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9:"}, + {"KeyStore.Password.URL.", "\u5BC6\u94A5\u5E93\u53E3\u4EE4 URL:"}, {"Principals", "\u4E3B\u7528\u6237"}, {".Edit.Principal.", " \u7F16\u8F91\u4E3B\u7528\u6237:"}, {".Add.New.Principal.", " \u6DFB\u52A0\u65B0\u4E3B\u7528\u6237:"}, @@ -512,7 +510,7 @@ {"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}"}, + "\u65E0\u6CD5\u6253\u5F00\u5BC6\u94A5\u5E93: {0}"}, {"No.principal.selected", "\u672A\u9009\u62E9\u4E3B\u7528\u6237"}, {"No.permission.selected", "\u6CA1\u6709\u9009\u62E9\u6743\u9650"}, {"name", "\u540D\u79F0"}, @@ -525,8 +523,8 @@ {"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:"}, + {"KeyStore.U.R.L.", "\u5BC6\u94A5\u5E93 URL:"}, + {"KeyStore.Password.U.R.L.", "\u5BC6\u94A5\u5E93\u53E3\u4EE4 URL:"}, // javax.security.auth.PrivateCredentialPermission
--- a/src/share/classes/sun/security/util/Resources_zh_TW.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/classes/sun/security/util/Resources_zh_TW.java Sun Feb 19 22:03:12 2012 -0800 @@ -47,8 +47,7 @@ "*******************************************\n\n"}, // keytool: Help part -// "Option" should be translated. - {".OPTION.", " [\u9078\u9805]..."}, + {".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"}, @@ -68,7 +67,6 @@ "\u532F\u51FA\u6191\u8B49"}, //-exportcert {"Generates.a.key.pair", "\u7522\u751F\u91D1\u9470\u7D44"}, //-genkeypair -// translation of "secret" key should be different to "private" key. {"Generates.a.secret.key", "\u7522\u751F\u79D8\u5BC6\u91D1\u9470"}, //-genseckey {"Generates.certificate.from.a.certificate.request", @@ -368,7 +366,7 @@ "\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 *****************"}, {"Signer.d.", "\u7C3D\u7F72\u8005 #%d:"}, {"Timestamp.", "\u6642\u6233:"}, {"Signature.", "\u7C3D\u7AE0:"},
--- a/src/share/native/sun/management/HotSpotDiagnostic.c Fri Feb 17 10:04:03 2012 -0800 +++ b/src/share/native/sun/management/HotSpotDiagnostic.c Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. * 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,141 +34,3 @@ { jmm_interface->DumpHeap0(env, outputfile, live); } - -JNIEXPORT jobjectArray JNICALL -Java_sun_management_HotSpotDiagnostic_getDiagnosticCommands0 - (JNIEnv *env, jobject dummy) -{ - if ((jmm_version > JMM_VERSION_1_2_1) - || (jmm_version == JMM_VERSION_1_2 && ((jmm_version&0xFF)>=2))) { - return jmm_interface->GetDiagnosticCommands(env); - } - JNU_ThrowByName(env, "java/lang/UnsupportedOperationException", - "Diagnostic commands are not supported by this VM"); -} - -jobject getDiagnosticCommandArgumentInfoArray(JNIEnv *env, jstring command, - int num_arg) { - int i; - jobject obj; - jobjectArray result; - dcmdArgInfo* dcmd_arg_info_array; - jclass dcmdArgInfoCls; - jclass arraysCls; - jmethodID mid; - jobject resultList; - - dcmd_arg_info_array = (dcmdArgInfo*) malloc(num_arg * sizeof(dcmdArgInfo)); - if (dcmd_arg_info_array == NULL) { - return NULL; - } - jmm_interface->GetDiagnosticCommandArgumentsInfo(env, command, - dcmd_arg_info_array); - dcmdArgInfoCls = (*env)->FindClass(env, - "com/sun/management/DiagnosticCommandArgumentInfo"); - result = (*env)->NewObjectArray(env, num_arg, dcmdArgInfoCls, NULL); - if (result == NULL) { - free(dcmd_arg_info_array); - return NULL; - } - for (i=0; i<num_arg; i++) { - obj = JNU_NewObjectByName(env, - "com/sun/management/DiagnosticCommandArgumentInfo", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZI)V", - (*env)->NewStringUTF(env,dcmd_arg_info_array[i].name), - (*env)->NewStringUTF(env,dcmd_arg_info_array[i].description), - (*env)->NewStringUTF(env,dcmd_arg_info_array[i].type), - dcmd_arg_info_array[i].default_string == NULL ? NULL: - (*env)->NewStringUTF(env, dcmd_arg_info_array[i].default_string), - dcmd_arg_info_array[i].mandatory, - dcmd_arg_info_array[i].option, - dcmd_arg_info_array[i].position); - if (obj == NULL) { - free(dcmd_arg_info_array); - return NULL; - } - (*env)->SetObjectArrayElement(env, result, i, obj); - } - free(dcmd_arg_info_array); - arraysCls = (*env)->FindClass(env, "java/util/Arrays"); - mid = (*env)->GetStaticMethodID(env, arraysCls, - "asList", "([Ljava/lang/Object;)Ljava/util/List;"); - resultList = (*env)->CallStaticObjectMethod(env, arraysCls, mid, result); - return resultList; -} - -/* Throws IllegalArgumentException if at least one the diagnostic command - * passed in argument is not supported by the JVM - */ -JNIEXPORT jobjectArray JNICALL -Java_sun_management_HotSpotDiagnostic_getDiagnosticCommandInfo0 -(JNIEnv *env, jobject dummy, jobjectArray commands) -{ - int i; - jclass dcmdInfoCls; - jobject result; - jobjectArray args; - jobject obj; - - if (commands == NULL) { - JNU_ThrowNullPointerException(env, "Invalid String Array"); - return NULL; - } - if ((jmm_version > JMM_VERSION_1_2_1) - || (jmm_version == JMM_VERSION_1_2 && ((jmm_version&0xFF)>=2))) { - jsize num_commands = (*env)->GetArrayLength(env, commands); - dcmdInfo* dcmd_info_array = (dcmdInfo*) malloc(num_commands * - sizeof(dcmdInfo)); - if (dcmd_info_array == NULL) { - JNU_ThrowOutOfMemoryError(env, NULL); - } - jmm_interface->GetDiagnosticCommandInfo(env, commands, dcmd_info_array); - dcmdInfoCls = (*env)->FindClass(env, - "com/sun/management/DiagnosticCommandInfo"); - result = (*env)->NewObjectArray(env, num_commands, dcmdInfoCls, NULL); - if (result == NULL) { - free(dcmd_info_array); - JNU_ThrowOutOfMemoryError(env, 0); - } - for (i=0; i<num_commands; i++) { - args = getDiagnosticCommandArgumentInfoArray(env, - (*env)->GetObjectArrayElement(env,commands,i), - dcmd_info_array[i].num_arguments); - if (args == NULL) { - free(dcmd_info_array); - JNU_ThrowOutOfMemoryError(env, 0); - } - obj = JNU_NewObjectByName(env, - "com/sun/management/DiagnosticCommandInfo", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/util/List;)V", - (*env)->NewStringUTF(env,dcmd_info_array[i].name), - (*env)->NewStringUTF(env,dcmd_info_array[i].description), - (*env)->NewStringUTF(env,dcmd_info_array[i].impact), - dcmd_info_array[i].enabled, - args); - if (obj == NULL) { - free(dcmd_info_array); - JNU_ThrowOutOfMemoryError(env, 0); - } - (*env)->SetObjectArrayElement(env, result, i, obj); - } - free(dcmd_info_array); - return result; - } - JNU_ThrowByName(env, "java/lang/UnsupportedOperationException", - "Diagnostic commands are not supported by this VM"); -} - -/* Throws IllegalArgumentException if the diagnostic command - * passed in argument is not supported by the JVM - */ -JNIEXPORT jstring JNICALL -Java_sun_management_HotSpotDiagnostic_executeDiagnosticCommand0 -(JNIEnv *env, jobject dummy, jstring command) { - if((jmm_version > JMM_VERSION_1_2_1 ) - || (jmm_version == JMM_VERSION_1_2 && ((jmm_version&0xFF)>=2))) { - return jmm_interface->ExecuteDiagnosticCommand(env, command); - } - JNU_ThrowByName(env, "java/lang/UnsupportedOperationException", - "Diagnostic commands are not supported by this VM"); -}
--- a/src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java Sun Feb 19 22:03:12 2012 -0800 @@ -73,14 +73,20 @@ if (filenames == null) { accessor.setDirectory(fd, null); accessor.setFile(fd, null); - accessor.setFiles(fd, null, null); + accessor.setFiles(fd, null); } else { // Fix 6987233: add the trailing slash if it's absent accessor.setDirectory(fd, directory + (directory.endsWith(File.separator) ? "" : File.separator)); accessor.setFile(fd, filenames[0]); - accessor.setFiles(fd, directory, filenames); + + int filesNumber = (filenames != null) ? filenames.length : 0; + File[] files = new File[filesNumber]; + for (int i = 0; i < filesNumber; i++) { + files[i] = new File(directory, filenames[i]); + } + accessor.setFiles(fd, files); } }
--- a/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java Sun Feb 19 22:03:12 2012 -0800 @@ -396,11 +396,18 @@ savedFile = file.substring(index+1); } + String[] fileNames = fileList.getSelectedItems(); + int filesNumber = (fileNames != null) ? fileNames.length : 0; + File[] files = new File[filesNumber]; + for (int i = 0; i < filesNumber; i++) { + files[i] = new File(savedDir, fileNames[i]); + } + AWTAccessor.FileDialogAccessor fileDialogAccessor = AWTAccessor.getFileDialogAccessor(); fileDialogAccessor.setDirectory(target, savedDir); fileDialogAccessor.setFile(target, savedFile); - fileDialogAccessor.setFiles(target, savedDir, fileList.getSelectedItems()); + fileDialogAccessor.setFiles(target, files); } /** @@ -419,7 +426,7 @@ fileDialogAccessor.setDirectory(target, null); fileDialogAccessor.setFile(target, null); - fileDialogAccessor.setFiles(target, null, null); + fileDialogAccessor.setFiles(target, null); handleQuitButton(); }
--- a/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. * 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,8 +37,14 @@ * Bsd implementation of HotSpotVirtualMachine */ public class BsdVirtualMachine extends HotSpotVirtualMachine { - // temp directory for socket file - private static final String tmpdir = System.getProperty("java.io.tmpdir"); + // "tmpdir" is used as a global well-known location for the files + // .java_pid<pid>. and .attach_pid<pid>. It is important that this + // location is the same for all processes, otherwise the tools + // will not be able to find all Hotspot processes. + // This is intentionally not the same as java.io.tmpdir, since + // the latter can be changed by the user. + // Any changes to this needs to be synchronized with HotSpot. + private static final String tmpdir; // The patch to the socket file created by the target VM String path; @@ -243,11 +249,8 @@ } // Return the socket file for the given process. - // Checks working directory of process for .java_pid<pid>. If not - // found it looks in temp directory. + // Checks temp directory for .java_pid<pid>. private String findSocketFile(int pid) { - // First check for a .java_pid<pid> file in the working directory - // of the target process String fn = ".java_pid" + pid; File f = new File(tmpdir, fn); return f.exists() ? f.getPath() : null; @@ -291,7 +294,10 @@ static native void createAttachFile(String path); + static native String getTempDir(); + static { System.loadLibrary("attach"); + tmpdir = getTempDir(); } }
--- a/src/solaris/native/java/lang/java_props_md.c Fri Feb 17 10:04:03 2012 -0800 +++ b/src/solaris/native/java/lang/java_props_md.c Sun Feb 19 22:03:12 2012 -0800 @@ -406,7 +406,7 @@ #ifdef MACOSX break; default: - sprops.graphics_env = "sun.awt.HeadlessGraphicsEnvironment"; + sprops.graphics_env = "sun.java2d.HeadlessGraphicsEnvironment"; break; } #endif
--- a/src/solaris/native/java/net/PlainDatagramSocketImpl.c Fri Feb 17 10:04:03 2012 -0800 +++ b/src/solaris/native/java/net/PlainDatagramSocketImpl.c Sun Feb 19 22:03:12 2012 -0800 @@ -84,6 +84,7 @@ #endif extern void setDefaultScopeID(JNIEnv *env, struct sockaddr *him); +extern int getDefaultScopeID(JNIEnv *env); /* * Returns a java.lang.Integer based on 'i' @@ -2418,7 +2419,11 @@ } } #endif - +#ifdef MACOSX + if (family == AF_INET6 && index == 0) { + index = getDefaultScopeID(env); + } +#endif mname6.ipv6mr_interface = index; } else { jint idx = (*env)->GetIntField(env, niObj, ni_indexID);
--- a/src/solaris/native/java/net/net_util_md.c Fri Feb 17 10:04:03 2012 -0800 +++ b/src/solaris/native/java/net/net_util_md.c Sun Feb 19 22:03:12 2012 -0800 @@ -109,6 +109,24 @@ #endif } +int getDefaultScopeID(JNIEnv *env) { + static jclass ni_class = NULL; + static jfieldID ni_defaultIndexID; + if (ni_class == NULL) { + jclass c = (*env)->FindClass(env, "java/net/NetworkInterface"); + CHECK_NULL(c); + c = (*env)->NewGlobalRef(env, c); + CHECK_NULL(c); + ni_defaultIndexID = (*env)->GetStaticFieldID( + env, c, "defaultIndex", "I"); + ni_class = c; + } + int defaultIndex = 0; + defaultIndex = (*env)->GetStaticIntField(env, ni_class, + ni_defaultIndexID); + return defaultIndex; +} + #ifdef __solaris__ static int init_tcp_max_buf, init_udp_max_buf; static int tcp_max_buf;
--- a/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c Fri Feb 17 10:04:03 2012 -0800 +++ b/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c Sun Feb 19 22:03:12 2012 -0800 @@ -624,9 +624,12 @@ JNIEXPORT jbyteArray JNICALL Java_sun_nio_fs_UnixNativeDispatcher_readdir(JNIEnv* env, jclass this, jlong value) { - char entry[sizeof(struct dirent64) + PATH_MAX + 1]; - struct dirent64* ptr = (struct dirent64*)&entry; struct dirent64* result; + struct { + struct dirent64 buf; + char name_extra[PATH_MAX + 1 - sizeof result->d_name]; + } entry; + struct dirent64* ptr = &entry.buf; int res; DIR* dirp = jlong_to_ptr(value);
--- a/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Fri Feb 17 10:04:03 2012 -0800 +++ b/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Sun Feb 19 22:03:12 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005, 2012, Oracle and/or its affiliates. All Rights Reserved. * 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,6 +37,7 @@ #include <sys/types.h> #include <sys/socket.h> #include <sys/stat.h> +#include <sys/syslimits.h> #include <sys/un.h> #include <fcntl.h> @@ -277,3 +278,30 @@ JNU_ReleaseStringPlatformChars(env, path, _path); } } + +/* + * Class: sun_tools_attach_BSDVirtualMachine + * Method: getTempDir + * Signature: (V)Ljava.lang.String; + */ +JNIEXPORT jstring JNICALL Java_sun_tools_attach_BsdVirtualMachine_getTempDir(JNIEnv *env, jclass cls) +{ + // This must be hard coded because it's the system's temporary + // directory not the java application's temp directory, ala java.io.tmpdir. + +#ifdef __APPLE__ + // macosx has a secure per-user temporary directory + static char *temp_path = NULL; + char temp_path_storage[PATH_MAX]; + if (temp_path == NULL) { + int pathSize = confstr(_CS_DARWIN_USER_TEMP_DIR, temp_path_storage, PATH_MAX); + if (pathSize == 0 || pathSize > PATH_MAX) { + strlcpy(temp_path_storage, "/tmp", sizeof(temp_path_storage)); + } + temp_path = temp_path_storage; + } + return JNU_NewStringPlatform(env, temp_path); +#else /* __APPLE__ */ + return (*env)->NewStringUTF(env, "/tmp"); +#endif /* __APPLE__ */ +}
--- a/src/windows/classes/sun/awt/windows/WFileDialogPeer.java Fri Feb 17 10:04:03 2012 -0800 +++ b/src/windows/classes/sun/awt/windows/WFileDialogPeer.java Sun Feb 19 22:03:12 2012 -0800 @@ -139,13 +139,16 @@ String jDirectory = null; String jFile = null; - String jFiles[] = null; + File[] jFiles = null; if (multiple) { jDirectory = wFiles[0]; - jFiles = new String[wFiles.length - 1]; - System.arraycopy(wFiles, 1, jFiles, 0, jFiles.length); - jFile = jFiles[1]; // choose any file + int filesNumber = wFiles.length - 1; + jFiles = new File[filesNumber]; + for (int i = 0; i < filesNumber; i++) { + jFiles[i] = new File(jDirectory, wFiles[i + 1]); + } + jFile = wFiles[1]; // choose any file } else { int index = wFiles[0].lastIndexOf(java.io.File.separatorChar); if (index == -1) { @@ -155,7 +158,7 @@ jDirectory = wFiles[0].substring(0, index + 1); jFile = wFiles[0].substring(index + 1); } - jFiles = new String[] { jFile }; + jFiles = new File[] { new File(jDirectory, jFile) }; } final FileDialog fileDialog = (FileDialog)target; @@ -163,7 +166,7 @@ fileDialogAccessor.setDirectory(fileDialog, jDirectory); fileDialogAccessor.setFile(fileDialog, jFile); - fileDialogAccessor.setFiles(fileDialog, jDirectory, jFiles); + fileDialogAccessor.setFiles(fileDialog, jFiles); WToolkit.executeOnEventHandlerThread(fileDialog, new Runnable() { public void run() { @@ -178,7 +181,7 @@ final FileDialog fileDialog = (FileDialog)target; AWTAccessor.getFileDialogAccessor().setFile(fileDialog, null); - AWTAccessor.getFileDialogAccessor().setFiles(fileDialog, null, null); + AWTAccessor.getFileDialogAccessor().setFiles(fileDialog, null); WToolkit.executeOnEventHandlerThread(fileDialog, new Runnable() { public void run() {
--- a/src/windows/native/sun/windows/awt_Font.cpp Fri Feb 17 10:04:03 2012 -0800 +++ b/src/windows/native/sun/windows/awt_Font.cpp Sun Feb 19 22:03:12 2012 -0800 @@ -150,6 +150,7 @@ AwtFont::~AwtFont() { + delete[] m_hFont; } void AwtFont::Dispose() { @@ -160,11 +161,12 @@ /* NOTE: delete of windows HFONT happens in FontCache::Remove only when the final reference to the font is disposed */ } else if (font != NULL) { - // if font was not in cache, its not shared and we delete it now - VERIFY(::DeleteObject(font)); + // if font was not in cache, its not shared and we delete it now + DASSERT(::GetObjectType(font) == OBJ_FONT); + VERIFY(::DeleteObject(font)); } + m_hFont[i] = NULL; } - delete[] m_hFont; AwtObject::Dispose(); }
--- a/src/windows/native/sun/windows/awt_Toolkit.cpp Fri Feb 17 10:04:03 2012 -0800 +++ b/src/windows/native/sun/windows/awt_Toolkit.cpp Sun Feb 19 22:03:12 2012 -0800 @@ -534,7 +534,6 @@ D3DInitializer::GetInstance().Clean(); AwtObjectList::Cleanup(); - AwtFont::Cleanup(); awt_dnd_uninitialize(); awt_clipboard_uninitialize((JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2)); @@ -554,6 +553,8 @@ ::DispatchMessage(&msg); } + AwtFont::Cleanup(); + HWND toolkitHWndToDestroy = tk.m_toolkitHWnd; tk.m_toolkitHWnd = 0; VERIFY(::DestroyWindow(toolkitHWndToDestroy) != NULL);
--- a/test/Makefile Fri Feb 17 10:04:03 2012 -0800 +++ b/test/Makefile Sun Feb 19 22:03:12 2012 -0800 @@ -352,7 +352,7 @@ # Expect JT_HOME to be set for jtreg tests. (home for jtreg) ifndef JT_HOME - JT_HOME = $(SLASH_JAVA)/re/jtreg/4.0/promoted/latest/binaries/jtreg + JT_HOME = $(SLASH_JAVA)/re/jtreg/4.1/promoted/latest/binaries/jtreg ifdef JPRT_JTREG_HOME JT_HOME = $(JPRT_JTREG_HOME) endif @@ -363,19 +363,23 @@ TESTDIRS = demo endif -# Samevm settings (default is false) -ifndef USE_JTREG_SAMEVM - USE_JTREG_SAMEVM=false +# Agentvm settings (default is false) +ifndef USE_JTREG_AGENTVM + USE_JTREG_AGENTVM=false endif -# With samevm, you cannot use -javaoptions? -ifeq ($(USE_JTREG_SAMEVM),true) - JTREG_SAMEVM_OPTION = -samevm - EXTRA_JTREG_OPTIONS += $(JTREG_SAMEVM_OPTION) $(JAVA_ARGS) $(JAVA_ARGS:%=-vmoption:%) +# With agentvm, you cannot use -javaoptions? +ifeq ($(USE_JTREG_AGENTVM),true) + JTREG_AGENTVM_OPTION = -agentvm + EXTRA_JTREG_OPTIONS += $(JTREG_AGENTVM_OPTION) $(JAVA_ARGS) $(JAVA_ARGS:%=-vmoption:%) JTREG_TEST_OPTIONS = $(JAVA_VM_ARGS:%=-vmoption:%) else JTREG_TEST_OPTIONS = $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_VM_ARGS:%=-vmoption:%) endif +ifdef CONCURRENCY + EXTRA_JTREG_OPTIONS += -concurrency:$(CONCURRENCY) +endif + # Some tests annoy me and fail frequently PROBLEM_LIST=ProblemList.txt PROBLEM_LISTS=$(PROBLEM_LIST) $(wildcard closed/$(PROBLEM_LIST)) @@ -410,14 +414,14 @@ define TestDirs $(foreach i,$1,$(wildcard ${i})) $(foreach i,$1,$(wildcard closed/${i})) endef -# Running batches of tests with or without samevm -define RunSamevmBatch -$(ECHO) "Running tests in samevm mode: $?" -$(MAKE) TEST_DEPENDENCIES="$?" TESTDIRS="$?" USE_JTREG_SAMEVM=true UNIQUE_DIR=$@ jtreg_tests +# Running batches of tests with or without agentvm +define RunAgentvmBatch +$(ECHO) "Running tests in agentvm mode: $?" +$(MAKE) TEST_DEPENDENCIES="$?" TESTDIRS="$?" USE_JTREG_AGENTVM=true UNIQUE_DIR=$@ jtreg_tests endef define RunOthervmBatch $(ECHO) "Running tests in othervm mode: $?" -$(MAKE) TEST_DEPENDENCIES="$?" TESTDIRS="$?" USE_JTREG_SAMEVM=false UNIQUE_DIR=$@ jtreg_tests +$(MAKE) TEST_DEPENDENCIES="$?" TESTDIRS="$?" USE_JTREG_AGENTVM=false UNIQUE_DIR=$@ jtreg_tests endef define SummaryInfo $(ECHO) "########################################################" @@ -442,7 +446,7 @@ java/beans/beancontext java/beans/PropertyChangeSupport \ java/beans/Introspector java/beans/Performance \ java/beans/VetoableChangeSupport java/beans/Statement) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable othervm testruns (minus items from PROBLEM_LIST) # Using samevm has serious problems with these tests @@ -453,7 +457,7 @@ $(call RunOthervmBatch) # Stable othervm testruns (minus items from PROBLEM_LIST) -# Using samevm has serious problems with these tests +# Using agentvm has serious problems with these tests JDK_ALL_TARGETS += jdk_beans3 jdk_beans3: $(call TestDirs, java/beans/XMLEncoder) $(call RunOthervmBatch) @@ -462,24 +466,24 @@ jdk_beans: jdk_beans1 jdk_beans2 jdk_beans3 @$(SummaryInfo) -# Stable samevm testruns (minus items from PROBLEM_LIST) +# Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_io jdk_io: $(call TestDirs, java/io) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) -# Stable samevm testruns (minus items from PROBLEM_LIST) +# Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_lang jdk_lang: $(call TestDirs, java/lang) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable othervm testruns (minus items from PROBLEM_LIST) -# Using samevm has serious problems with these tests +# Using agentvm has serious problems with these tests JDK_ALL_TARGETS += jdk_management1 jdk_management1: $(call TestDirs, javax/management) $(call RunOthervmBatch) # Stable othervm testruns (minus items from PROBLEM_LIST) -# Using samevm has serious problems with these tests +# Using agentvm has serious problems with these tests JDK_ALL_TARGETS += jdk_management2 jdk_management2: $(call TestDirs, com/sun/jmx com/sun/management sun/management) $(call RunOthervmBatch) @@ -491,7 +495,7 @@ # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_math jdk_math: $(call TestDirs, java/math) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_misc @@ -499,29 +503,29 @@ demo javax/imageio javax/naming javax/print javax/script \ javax/smartcardio javax/sound com/sun/java com/sun/jndi \ com/sun/org com/sun/xml sun/misc sun/pisces) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_net jdk_net: $(call TestDirs, com/sun/net java/net sun/net) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_nio1 jdk_nio1: $(call TestDirs, java/nio/file) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_nio2 jdk_nio2: $(call TestDirs, java/nio/Buffer java/nio/ByteOrder \ java/nio/channels java/nio/MappedByteBuffer) $(call SharedLibraryPermissions,java/nio/channels) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_nio3 jdk_nio3: $(call TestDirs, sun/nio) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # All nio tests jdk_nio: jdk_nio1 jdk_nio2 jdk_nio3 @@ -529,7 +533,7 @@ # Stable samevm testruns (minus items from PROBLEM_LIST) jdk_sctp: $(call TestDirs, com/sun/nio/sctp) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable othervm testruns (minus items from PROBLEM_LIST) # Using samevm has serious problems with these tests @@ -540,7 +544,7 @@ # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_security1 jdk_security1: $(call TestDirs, java/security) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable othervm testruns (minus items from PROBLEM_LIST) # Using samevm has serious problems with these tests @@ -570,12 +574,12 @@ # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_text jdk_text: $(call TestDirs, java/text sun/text) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_tools1 jdk_tools1: $(call TestDirs, com/sun/jdi) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # Stable othervm testruns (minus items from PROBLEM_LIST) # Using samevm has serious problems with these tests @@ -584,7 +588,7 @@ com/sun/tools sun/jvmstat sun/tools tools vm \ com/sun/servicetag com/sun/tracing) $(call SharedLibraryPermissions,tools/launcher) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # All tools tests jdk_tools: jdk_tools1 jdk_tools2 @@ -593,7 +597,7 @@ # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_util jdk_util: $(call TestDirs, java/util sun/util) - $(call RunSamevmBatch) + $(call RunAgentvmBatch) # ------------------------------------------------------------------ @@ -610,7 +614,7 @@ # Default JTREG to run (win32 script works for everybody) JTREG = $(JT_HOME)/win32/bin/jtreg -# Add any extra options (samevm etc.) +# Add any extra options (agentvm etc.) JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS) # Only run automatic tests JTREG_BASIC_OPTIONS += -a
--- a/test/ProblemList.txt Fri Feb 17 10:04:03 2012 -0800 +++ b/test/ProblemList.txt Sun Feb 19 22:03:12 2012 -0800 @@ -369,6 +369,16 @@ # jdk_net +# 7122846 +java/net/MulticastSocket/NoLoopbackPackets.java macosx-all +java/net/MulticastSocket/SetLoopbackMode.java macosx-all + +# 7145658 +java/net/MulticastSocket/Test.java macosx-all + +#7143960 +java/net/DatagramSocket/SendDatagramToBadAddress.java macosx-all + ############################################################################ # jdk_io @@ -376,9 +386,6 @@ # 6962637 java/io/File/MaxPathLength.java windows-all -# 6671616 -java/io/File/BlockIsDirectory.java solaris-all - ############################################################################ # jdk_nio @@ -391,6 +398,12 @@ java/nio/channels/AsynchronousFileChannel/Lock.java macosx-all java/nio/channels/FileChannel/Transfer.java macosx-all +# 7141822 +java/nio/channels/DatagramChannel/ChangingAddress.java macosx-all + +# 7132677 +java/nio/channels/Selector/OutOfBand.java macosx-all + ############################################################################ # jdk_rmi @@ -663,12 +676,18 @@ # Filed 6952105 com/sun/jdi/SuspendThreadTest.java generic-all +# Filed 6987312 +com/sun/jdi/DoubleAgentTest.java generic-all + # Filed 6986875 sun/tools/jps/jps-Vvml.sh generic-all # Filed 6979016 sun/tools/jconsole/ResourceCheckTest.sh generic-all +# 7132203 +sun/jvmstat/monitor/MonitoredVm/CR6672135.java generic-all + ############################################################################ # jdk_util
--- a/test/com/sun/jdi/sde/MangleStepTest.java Fri Feb 17 10:04:03 2012 -0800 +++ b/test/com/sun/jdi/sde/MangleStepTest.java Sun Feb 19 22:03:12 2012 -0800 @@ -10,11 +10,11 @@ * @run build TestScaffold VMConnection TargetListener TargetAdapter InstallSDE * @run compile MangleStepTest.java * @run compile -g onion/pickle/Mangle.java - * @run main MangleStepTest unset - * @run main MangleStepTest Java - * @run main MangleStepTest XYZ - * @run main MangleStepTest Rats - * @run main MangleStepTest bogus + * @run main/othervm MangleStepTest unset + * @run main/othervm MangleStepTest Java + * @run main/othervm MangleStepTest XYZ + * @run main/othervm MangleStepTest Rats + * @run main/othervm MangleStepTest bogus */ import com.sun.jdi.*; import com.sun.jdi.event.*;
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/ExecuteDiagnosticCommand.java Fri Feb 17 10:04:03 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/* - * 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 7104647 - * @summary Basic Test for HotSpotDiagnosticMXBean.execute() - * @author Frederic Parain - * - * @run main ExecuteDiagnosticCommand - */ - -import com.sun.management.HotSpotDiagnosticMXBean; -import com.sun.management.VMOption; -import java.lang.management.ManagementFactory; -import java.util.List; -import javax.management.MBeanServer; - -public class ExecuteDiagnosticCommand { - private static String HOTSPOT_DIAGNOSTIC_MXBEAN_NAME = - "com.sun.management:type=HotSpotDiagnostic"; - - public static void main(String[] args) throws Exception { - HotSpotDiagnosticMXBean mbean = - ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class); - executeDiagnosticCommand(mbean); - - MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); - mbean = ManagementFactory.newPlatformMXBeanProxy(mbs, - HOTSPOT_DIAGNOSTIC_MXBEAN_NAME, - HotSpotDiagnosticMXBean.class); - executeDiagnosticCommand(mbean); - } - - private static void executeDiagnosticCommand(HotSpotDiagnosticMXBean mbean) { - String s = mbean.execute("help help"); - System.out.println(s); - s = mbean.execute("help", "help"); - System.out.println(s); - String tab[] = { "help"}; - s = mbean.execute("help", tab); - System.out.println(s); - } -}
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticCommandInfo.java Fri Feb 17 10:04:03 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -/* - * 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 7104647 - * @summary Basic Test for HotSpotDiagnosticMXBean.getDiagnosticCommandInfo() - * @author Frederic Parain - * - * @run main GetDiagnosticCommandInfo - */ - -import com.sun.management.HotSpotDiagnosticMXBean; -import com.sun.management.DiagnosticCommandInfo; -import com.sun.management.DiagnosticCommandArgumentInfo; -import com.sun.management.VMOption; -import java.lang.management.ManagementFactory; -import java.util.List; -import javax.management.MBeanServer; - -public class GetDiagnosticCommandInfo { - private static String HOTSPOT_DIAGNOSTIC_MXBEAN_NAME = - "com.sun.management:type=HotSpotDiagnostic"; - - public static void main(String[] args) throws Exception { - HotSpotDiagnosticMXBean mbean = - ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class); - checkDiagnosticCommandArguments(mbean); - - MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); - mbean = ManagementFactory.newPlatformMXBeanProxy(mbs, - HOTSPOT_DIAGNOSTIC_MXBEAN_NAME, - HotSpotDiagnosticMXBean.class); - checkDiagnosticCommandArguments(mbean); - } - - private static void checkDiagnosticCommandArguments(HotSpotDiagnosticMXBean mbean) { - // check getDiagnosticCommandInfo() - StringBuilder sb = new StringBuilder(); - List<DiagnosticCommandInfo> infoList = mbean.getDiagnosticCommandInfo(); - for(DiagnosticCommandInfo info : infoList) { - printCommandInfo(info,sb); - } - // check getDiagnosticCommandInfo(List<String>) - List<String> commands = mbean.getDiagnosticCommands(); - List<DiagnosticCommandInfo> list2 = - mbean.getDiagnosticCommandInfo(commands); - for(DiagnosticCommandInfo info : list2) { - printCommandInfo(info,sb); - } - // check getDiagnosticCommandInfo(String) - for(String cmd : commands) { - DiagnosticCommandInfo info2 = mbean.getDiagnosticCommandInfo(cmd); - printCommandInfo(info2,sb); - } - System.out.println(sb.toString()); - } - - private static void printCommandInfo(DiagnosticCommandInfo info, - StringBuilder sb) { - sb.append("\t").append(info.getName()).append(":\n"); - sb.append("\t\tDescription=").append(info.getDescription()).append("\n"); - sb.append("\t\tImpact=").append(info.getImpact()).append("\n"); - sb.append("\t\tStatus="); - if (info.isEnabled()) { - sb.append("Enabled\n"); - } else { - sb.append("Disbled\n"); - } - sb.append("\t\tArguments="); - for(DiagnosticCommandArgumentInfo arg : info.getArgumentsInfo()) { - printArgumentInfo(arg,sb); - } - } - - private static void printArgumentInfo(DiagnosticCommandArgumentInfo info, - StringBuilder sb) { - sb.append("\t\t\t").append(info.getName()).append(":\n"); - sb.append("\t\t\t\tType=").append(info.getType()).append("\n"); - sb.append("\t\t\t\tDescription=").append(info.getDescription()).append("\n"); - if(info.getDefault() != null) { - sb.append("\t\t\t\tDefault=").append(info.getDefault()).append("\n"); - } - if(info.isMandatory()) { - sb.append("\t\t\t\tMandatory\n"); - } else { - sb.append("\t\t\t\tOptional\n"); - } - if(info.isOption()) { - sb.append("\t\t\t\tIs an option\n"); - } else { - sb.append("\t\t\t\tIs an argument expected at position"); - sb.append(info.getPosition()); - sb.append("\n"); - } - } -}
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticCommands.java Fri Feb 17 10:04:03 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -/* - * 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 7104647 - * @summary Basic Test for HotSpotDiagnosticMXBean.getDiagnosticCommands() - * @author Frederic Parain - * - * @run main GetDiagnosticCommands - */ - -import com.sun.management.HotSpotDiagnosticMXBean; -import com.sun.management.VMOption; -import java.lang.management.ManagementFactory; -import java.util.List; -import javax.management.MBeanServer; - -public class GetDiagnosticCommands { - private static String HOTSPOT_DIAGNOSTIC_MXBEAN_NAME = - "com.sun.management:type=HotSpotDiagnostic"; - - public static void main(String[] args) throws Exception { - HotSpotDiagnosticMXBean mbean = - ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class); - checkDiagnosticCommands(mbean); - - MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); - mbean = ManagementFactory.newPlatformMXBeanProxy(mbs, - HOTSPOT_DIAGNOSTIC_MXBEAN_NAME, - HotSpotDiagnosticMXBean.class); - checkDiagnosticCommands(mbean); - } - - private static void checkDiagnosticCommands(HotSpotDiagnosticMXBean mbean) { - List<String> commands = mbean.getDiagnosticCommands(); - System.out.println("Commands:"); - for (String cmd : commands) { - System.out.println(cmd); - } - } -}
--- a/test/java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java Fri Feb 17 10:04:03 2012 -0800 +++ b/test/java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java Sun Feb 19 22:03:12 2012 -0800 @@ -94,7 +94,10 @@ // Test mouse wheel over the choice String name = Toolkit.getDefaultToolkit().getClass().getName(); - if(!name.equals("sun.awt.X11.XToolkit")) { // mouse wheel doesn't work for the choice on X11, so skip it + + // mouse wheel doesn't work for the choice on X11 and Mac, so skip it + if(!name.equals("sun.awt.X11.XToolkit") + && !name.equals("sun.lwawt.macosx.LWCToolkit")) { robot.mouseWheel(1); robot.waitForIdle();
--- a/test/java/awt/print/PaintSetEnabledDeadlock/PaintSetEnabledDeadlock.java Fri Feb 17 10:04:03 2012 -0800 +++ b/test/java/awt/print/PaintSetEnabledDeadlock/PaintSetEnabledDeadlock.java Sun Feb 19 22:03:12 2012 -0800 @@ -54,9 +54,12 @@ Util.clickOnComp(frame.button, robot); } - frame.panel.stop(); + boolean ret = frame.panel.stop(); frame.dispose(); + if (!ret) { + throw new RuntimeException("Test failed!"); + } System.out.println("Test passed."); } @@ -140,17 +143,19 @@ } } - public void stop() { + public boolean stop() { active = false; try { - synchronized (sync) { - sync.notify(); - } - synchronized (thread) { - thread.wait(); + sync(); + thread.join(1000); + if (thread.isAlive()) { + thread.interrupt(); + return false; } } catch (InterruptedException ex) { + return false; } + return true; } public void draw() {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/util/concurrent/ScheduledThreadPoolExecutor/ZeroCorePoolSize.java Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,83 @@ +/* + * 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 7091003 + * @summary ScheduledExecutorService never executes Runnable + * with corePoolSize of zero + * @author Chris Hegarty + */ + +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * Verify that tasks can be run even with a core pool size of 0. + */ +public class ZeroCorePoolSize { + + volatile boolean taskRun; + + void test(String[] args) throws Throwable { + + ScheduledThreadPoolExecutor pool = new ScheduledThreadPoolExecutor(0); + Runnable task = new Runnable() { + public void run() { + taskRun = true; + } + }; + check(pool.getCorePoolSize() == 0); + + pool.schedule(task, 1, TimeUnit.SECONDS); + + pool.shutdown(); + check(pool.awaitTermination(20L, TimeUnit.SECONDS)); + check(pool.getCorePoolSize() == 0); + check(taskRun); + } + + //--------------------- Infrastructure --------------------------- + volatile int passed = 0, failed = 0; + void pass() {passed++;} + void fail() {failed++; Thread.dumpStack();} + void fail(String msg) {System.err.println(msg); fail();} + void unexpected(Throwable t) {failed++; t.printStackTrace();} + void check(boolean cond) {if (cond) pass(); else fail();} + void equal(Object x, Object y) { + if (x == null ? y == null : x.equals(y)) pass(); + else fail(x + " not equal to " + y);} + public static void main(String[] args) throws Throwable { + new ZeroCorePoolSize().instanceMain(args);} + void instanceMain(String[] args) throws Throwable { + try {test(args);} catch (Throwable t) {unexpected(t);} + System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); + if (failed > 0) throw new AssertionError("Some tests failed");} + abstract class F {abstract void f() throws Throwable;} + void THROWS(Class<? extends Throwable> k, F... fs) { + for (F f : fs) + try {f.f(); fail("Expected " + k.getName() + " not thrown");} + catch (Throwable t) { + if (k.isAssignableFrom(t.getClass())) pass(); + else unexpected(t);}} +}
--- a/test/java/util/logging/ParentLoggersTest.java Fri Feb 17 10:04:03 2012 -0800 +++ b/test/java/util/logging/ParentLoggersTest.java Sun Feb 19 22:03:12 2012 -0800 @@ -6,7 +6,7 @@ * @author ss45998 * * @build ParentLoggersTest - * @run main ParentLoggersTest + * @run main/othervm ParentLoggersTest */ /*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/javax/crypto/CipherSpi/DirectBBRemaining.java Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * 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 7142509 + * @summary Cipher.doFinal(ByteBuffer,ByteBuffer) fails to + * process when in.remaining() == 0 + */ + +import java.nio.ByteBuffer; +import java.security.SecureRandom; +import java.util.Arrays; +import java.util.Random; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; + +/* + * Simple test case to show that Cipher.doFinal(ByteBuffer, ByteBuffer) fails to + * process the data internally buffered inBB the cipher when input.remaining() + * == 0 and at least one buffer is a direct buffer. + */ +public class DirectBBRemaining { + + private static Random random = new SecureRandom(); + private static int testSizes = 40; + private static int outputFrequency = 5; + + public static void main(String args[]) throws Exception { + boolean failedOnce = false; + Exception failedReason = null; + + byte[] keyBytes = new byte[8]; + random.nextBytes(keyBytes); + SecretKey key = new SecretKeySpec(keyBytes, "DES"); + + Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding", "SunJCE"); + cipher.init(Cipher.ENCRYPT_MODE, key); + + /* + * Iterate through various sizes to make sure that the code does empty + * blocks, single partial blocks, 1 full block, full + partial blocks, + * multiple full blocks, etc. 5 blocks (using DES) is probably overkill + * but will feel more confident the fix isn't breaking anything. + */ + System.out.println("Output test results for every " + + outputFrequency + " tests..."); + + for (int size = 0; size <= testSizes; size++) { + boolean output = (size % outputFrequency) == 0; + if (output) { + System.out.print("\nTesting buffer size: " + size + ":"); + } + + int outSize = cipher.getOutputSize(size); + + try { + encrypt(cipher, size, + ByteBuffer.allocate(size), + ByteBuffer.allocate(outSize), + ByteBuffer.allocateDirect(size), + ByteBuffer.allocateDirect(outSize), + output); + } catch (Exception e) { + System.out.print("\n Failed with size " + size); + failedOnce = true; + failedReason = e; + + // If we got an exception, let's be safe for future + // testing and reset the cipher to a known good state. + cipher.init(Cipher.ENCRYPT_MODE, key); + } + } + if (failedOnce) { + throw failedReason; + } + System.out.println("\nTest Passed..."); + } + + private enum TestVariant { + + HEAP_HEAP, HEAP_DIRECT, DIRECT_HEAP, DIRECT_DIRECT + }; + + private static void encrypt(Cipher cipher, int size, + ByteBuffer heapIn, ByteBuffer heapOut, + ByteBuffer directIn, ByteBuffer directOut, + boolean output) throws Exception { + + ByteBuffer inBB = null; + ByteBuffer outBB = null; + + // Set up data and encrypt to known/expected values. + byte[] testdata = new byte[size]; + random.nextBytes(testdata); + byte[] expected = cipher.doFinal(testdata); + + for (TestVariant tv : TestVariant.values()) { + if (output) { + System.out.print(" " + tv); + } + + switch (tv) { + case HEAP_HEAP: + inBB = heapIn; + outBB = heapOut; + break; + case HEAP_DIRECT: + inBB = heapIn; + outBB = directOut; + break; + case DIRECT_HEAP: + inBB = directIn; + outBB = heapOut; + break; + case DIRECT_DIRECT: + inBB = directIn; + outBB = directOut; + break; + } + + inBB.clear(); + outBB.clear(); + + inBB.put(testdata); + inBB.flip(); + + // Process all data in one shot, but don't call doFinal() yet. + // May store up to n-1 bytes (w/block size n) internally. + cipher.update(inBB, outBB); + if (inBB.hasRemaining()) { + throw new Exception("buffer not empty"); + } + + // finish encryption and process all data buffered + cipher.doFinal(inBB, outBB); + outBB.flip(); + + // validate output size + if (outBB.remaining() != expected.length) { + throw new Exception( + "incomplete encryption output, expected " + + expected.length + " bytes but was only " + + outBB.remaining() + " bytes"); + } + + // validate output data + byte[] encrypted = new byte[outBB.remaining()]; + outBB.get(encrypted); + if (!Arrays.equals(expected, encrypted)) { + throw new Exception("bad encryption output"); + } + + if (!Arrays.equals(cipher.doFinal(), cipher.doFinal())) { + throw new Exception("Internal buffers still held data!"); + } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/javax/swing/JOptionPane/7138665/bug7138665.java Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * 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 7138665 + @summary JOptionPane.getValue() unexpected change between JRE 1.6 and JRE 1.7 + @author Pavel Porvatov +*/ + +import sun.awt.SunToolkit; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.KeyEvent; + +public class bug7138665 { + public static void main(String[] args) throws Exception { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + JOptionPane pane = new JOptionPane("Enter value", JOptionPane.QUESTION_MESSAGE, + JOptionPane.OK_CANCEL_OPTION, null, null, null); + pane.setWantsInput(true); + + JDialog dialog = pane.createDialog(null, "My Dialog"); + dialog.setVisible(true); + + Object result = pane.getValue(); + + if (result == null || ((Integer) result).intValue() != JOptionPane.OK_OPTION) { + throw new RuntimeException("Invalid result: " + result); + } + + System.out.println("Test bug7138665 passed"); + } + }); + + SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); + + toolkit.realSync(); + + Robot robot = new Robot(); + + robot.setAutoDelay(100); + robot.keyPress(KeyEvent.VK_ENTER); + robot.keyRelease(KeyEvent.VK_ENTER); + + toolkit.realSync(); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/javax/swing/JTree/4314199/bug4314199.html Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,8 @@ +<html> +<body> +Select the last tree node (marked "Here") and click on the menu. +Look at the vertical line connecting nodes "Bug" and "Here". If +this line disappears when the menu drops down, test fails. +<applet code="bug4314199.class" width=200 height=200></applet> +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/javax/swing/JTree/4314199/bug4314199.java Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * 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 4314199 + * @summary Tests that JTree repaints correctly in a container with a JMenu + * @author Peter Zhelezniakov + * @run applet/manual=yesno bug4314199.html + */ + +import javax.swing.*; +import javax.swing.tree.*; + +public class bug4314199 extends JApplet { + + public void init() { + + try { + UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); + SwingUtilities.invokeAndWait(new Runnable() { + + public void run() { + createAndShowGUI(); + } + }); + } catch (final Exception e) { + SwingUtilities.invokeLater(new Runnable() { + + public void run() { + createAndShowMessage("Test fails because of exception: " + + e.getMessage()); + } + }); + } + + } + + private void createAndShowMessage(String message) { + getContentPane().add(new JLabel(message)); + } + + private void createAndShowGUI() { + JMenuBar mb = new JMenuBar(); + + // needed to exactly align left edge of menu and angled line of tree + mb.add(Box.createHorizontalStrut(27)); + + JMenu mn = new JMenu("Menu"); + JMenuItem mi = new JMenuItem("MenuItem"); + mn.add(mi); + mb.add(mn); + setJMenuBar(mb); + + DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("Root"); + DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("Duke"); + n1.add(n2); + DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("Bug"); + n2.add(n3); + n3.add(new DefaultMutableTreeNode("Blah")); + n3.add(new DefaultMutableTreeNode("Blah")); + n3.add(new DefaultMutableTreeNode("Blah")); + DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("Here"); + n2.add(n4); + + JTree tree = new JTree(new DefaultTreeModel(n1)); + tree.putClientProperty("JTree.lineStyle", "Angled"); + tree.expandPath(new TreePath(new Object[]{n1, n2, n3})); + setContentPane(tree); + } +}
--- a/test/sun/security/krb5/runNameEquals.sh Fri Feb 17 10:04:03 2012 -0800 +++ b/test/sun/security/krb5/runNameEquals.sh Sun Feb 19 22:03:12 2012 -0800 @@ -48,11 +48,15 @@ # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux ) PATHSEP=":" FILESEP="/" NATIVE=true ;; + Darwin ) + PATHSEP=":" + FILESEP="/" + ;; CYGWIN* ) PATHSEP=";" FILESEP="/"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/pkcs12/Bug6415637.java Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,313 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * 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 6415637 + * @summary Support PKCS#12 key stores protected with an empty password + */ + +import java.io.ByteArrayInputStream; +import java.math.BigInteger; +import java.security.KeyStore; +import java.security.cert.X509Certificate; +import java.security.interfaces.RSAPrivateCrtKey; + +public class Bug6415637 { + + public static void main(String[] args) throws Exception { + check(WITH_NULL); + check(WITHOUT_NULL); + } + + private static void check(String encodedBlob) throws Exception { + byte[] blob = new byte[encodedBlob.length() * 2]; + for (int i = 0; i < blob.length; ) { + final char ch = encodedBlob.charAt(i / 2); + blob[i++] = (byte) (ch >> 8); + blob[i++] = (byte) ch; + } + KeyStore store = KeyStore.getInstance("PKCS12"); + store.load(new ByteArrayInputStream(blob), new char[0]); + if (!store.aliases().nextElement().equals("test")) + throw new Exception("test alias not found"); + KeyStore.PrivateKeyEntry e = + (KeyStore.PrivateKeyEntry) store.getEntry("test", + new KeyStore.PasswordProtection(new char[0])); + X509Certificate cert = (X509Certificate) e.getCertificateChain()[0]; + if (!cert.getSubjectDN().toString().equals("CN=Test Key")) + throw new Exception("invalid certificate subject DN"); + RSAPrivateCrtKey key = (RSAPrivateCrtKey) e.getPrivateKey(); + if (!key.getPublicExponent().equals(BigInteger.valueOf(65537))) + throw new Exception("invalid public exponent"); + } + + private static final String WITH_NULL = + "\u3082\u097c\u0201\u0330\u8209\u3606\u092a\u8648\u86f7\u0d01" + + "\u0701\ua082\u0927\u0482\u0923\u3082\u091f\u3082\u0564\u0609" + + "\u2a86\u4886\uf70d\u0107\u01a0\u8205\u5504\u8205\u5130\u8205" + + "\u4d30\u8205\u4906\u0b2a\u8648\u86f7\u0d01\u0c0a\u0102\ua082" + + "\u04fa\u3082\u04f6\u3028\u060a\u2a86\u4886\uf70d\u010c\u0103" + + "\u301a\u0414\u8317\ucfd6\u89ab\uc03b\u79d6\u4c45\u1b10\uc3bd" + + "\u3923\ub806\u0202\u0400\u0482\u04c8\ud51d\uf953\ud79e\u92c6" + + "\u83c0\u92dc\ucd05\u69ab\ucc1b\ud538\u2ed9\u7796\ua426\uc14e" + + "\udcbf\ue541\u40be\ud264\u3b5b\uf51f\u8e1a\u892f\u2813\ucdd6" + + "\uf72e\uef55\u35ef\u4620\ude18\ued5e\ufae0\ubed4\uf84e\u276b" + + "\u3596\uc33f\ub251\ue617\u6e00\ua80f\u6c82\u4acd\u7303\u26be" + + "\uffb5\u1e49\u5fb1\uf87c\ua873\ue60a\u7415\u655c\u39f1\ucf16" + + "\u8f5c\u85c6\u4100\u4130\u565b\u649a\u60d6\u6054\u868d\u7267" + + "\u97a8\u8492\uc5a0\udb5e\u2880\udf55\ub0ee\ua641\u8224\u76d2" + + "\u9b1e\u2a67\u1e32\ue1fc\u0a77\u435b\u669f\ued00\u6c30\u963f" + + "\u7ee3\uc5c8\u198f\u8ede\u30e1\u015d\u1195\uc850\u3371\ub9e5" + + "\u6968\u84c3\ub0e4\u22b7\u2a08\u4a9d\u9166\ua9ba\ud945\u0529" + + "\ue1e7\u8aba\ub4ef\u7445\udc9a\ucf73\ud77b\ufafe\ue1df\u3180" + + "\u9585\ued73\uca40\u06b0\ufdee\u95ba\u1aa3\ubd67\ua5c1\u84b4" + + "\u4b50\uc1e1\u4547\ud837\u21bc\uac0d\u0a65\uebb5\u7281\ud9bc" + + "\u2e2c\ua9bc\u7714\u0fc0\uab41\uce09\ud5e8\u5f8c\uc35d\uba6e" + + "\u98a2\u95c3\u87ff\uba8c\u056a\udc9f\uf254\u3d38\uf40a\u77dd" + + "\u4e30\u01de\ubef7\ud288\ue59c\ua143\ub30b\ud0ae\u63b9\u138b" + + "\uc793\u3474\u18ca\udeed\u78d9\u2ae8\u63cc\ua5d1\u6779\u0229" + + "\u7b72\ucfd4\ueecb\ue167\u08c0\u7556\u181d\u8d62\uc401\ub092" + + "\u8cf5\ued71\uf29f\u843e\u13e1\u7e7b\uf589\u0329\u92bd\ud0e3" + + "\u8dcc\u7541\uf195\ueef2\u3f3a\ueb01\uf5b0\u1869\u2216\uf351" + + "\u488d\udffb\u6243\u1121\u9447\u8a3a\u006f\u008c\ue2b3\ued31" + + "\u7f57\u6492\ue02f\u6f68\u387d\u58c0\uaadf\u2ee3\uf304\u3de9" + + "\u9741\u47fa\udde8\ufe8a\u679a\u597d\u8c7c\u9c71\u570e\u1dbd" + + "\ud555\ue853\uff63\u0fcb\u4b28\u3691\u33c8\uc31f\uc510\u6cba" + + "\ud92c\u6462\u733a\u739e\uc792\ud861\u743e\u3bd3\u006b\u2276" + + "\u9fb3\u0a31\u1eb3\ub97e\u4a80\uc076\uaabc\u35a0\u678d\u17c3" + + "\ua225\ua77c\u7d9c\uef2d\u83e2\u6996\uba70\uf6f8\u79a1\u9399" + + "\uc86b\u1cc5\ub2a5\u02c1\ud676\ua274\u4933\u6c60\u6832\ub0be" + + "\u5354\u5af9\uae23\u0963\u722d\u9ad2\u4461\ub768\u2068\u0ccb" + + "\u94fd\u88ac\u0f58\u3bc0\u212d\u30c8\u8860\uf7c9\u1dde\ub6b4" + + "\u3549\u5bcd\ucf83\u9420\u3a40\u16ad\uc4d7\ucd87\ue73a\ue1c7" + + "\u21df\u7f4f\u8659\u9f79\u5b36\uf206\uac66\uc9f3\u6336\u164d" + + "\u9046\uf4d5\u285d\ufcd8\ubd55\u1fb9\ua533\u9101\u1e87\uc7b0" + + "\u64e9\u3817\u216c\u8d41\uba51\u743a\uc74e\ue4ab\u2820\u972f" + + "\ue191\u85b4\u0ea7\ud896\u23cf\u7df5\u1653\ua9f3\ub724\ucbc9" + + "\u9738\ud2f8\u464e\ucf12\u99b8\u64e0\uf03b\u8d02\u85a8\uab52" + + "\u8da3\uea34\ube99\ue5f8\u2b38\ub082\u399d\ue61e\u64a1\u7f90" + + "\u26e9\ueb74\u6107\ufe2f\u82ca\u87a5\u3028\u8e1f\ue859\u61d4" + + "\ud26d\u23a9\uaadc\u02a7\u8ab2\u43d4\uf6b9\udf7a\u8935\u45a4" + + "\ufad6\ue7e4\u92b7\u35d7\u1044\u8ed3\u74ef\uaaa9\u713f\u6ebc" + + "\u1158\u5e5c\u7522\ufe17\ua515\u59a1\u75dd\ue7ac\uafd9\u16a9" + + "\u190e\u18fc\uc041\ufc9e\u3e16\u60c4\ufe51\u6d53\ufa52\u4c08" + + "\uce2a\ue546\u017b\ud96b\ube18\u8cb9\udd50\ued40\u14b0\u7da1" + + "\u2f2c\ubf9d\uc7c7\u1b73\ua155\ucaf8\ue54d\uebb0\u160a\ubd64" + + "\u5ef7\ue1cf\u4633\u86c1\ubc91\u839d\ub148\u9f31\uf2b1\ud133" + + "\u168f\u9374\u4667\u6aa9\u0482\ua2a6\ub5c0\ud9b7\ua070\uf6bd" + + "\u16fe\u0f41\u986b\u3d33\u7cb9\u291d\u24f0\u704a\uc946\u10a2" + + "\udbcf\u6c5f\u5a83\u5507\u036e\ube9f\uf60a\u9da8\u72dd\u23c9" + + "\u8878\udd67\uf486\u1384\u751f\u4694\uee3c\udc2e\ud5d7\ud99a" + + "\u5ee2\u5455\ub82d\u1837\u336d\u5724\u635b\ubd0b\u2e7c\u92be" + + "\u2110\u9c0e\u1662\u43f6\u62ae\u32e3\uaea4\u1cc5\uadc0\u7511" + + "\u6ad4\u0228\ue399\u5741\u2050\ue31a\u7dc8\uf6db\u67bb\u994a" + + "\u5b5a\uaac6\u2210\u95b0\u462e\u0684\u335e\uac36\u7ab9\uab1e" + + "\u0b75\u0f05\u74c5\ufcb3\ua0a5\ube7e\u45f8\u92d5\u3399\u7dd6" + + "\uf96e\u7e01\u7823\u6690\u231c\u4c47\u2d10\u7e7f\u5eb8\u70dd" + + "\u98d2\u6204\u3a92\u3990\u502b\u7cdb\u952a\ufa97\uea3b\ud990" + + "\u436f\uf33a\u070d\u2aff\u7497\u2591\u37e4\ua590\ue7ba\u2c1e" + + "\u53d9\u73fa\udc53\u944f\ua3a5\u5093\u33a4\uf080\u1193\u37f2" + + "\u7642\ub033\u7f90\u9b44\uff89\ue6ef\u81be\u9e6e\u68a4\u5a00" + + "\u9232\u4372\u40aa\u2748\u229d\u534d\u316b\u6e89\ufcb7\uff2e" + + "\ub654\u1649\ucb13\u3c28\u4940\u43aa\uc07d\u247c\u313c\u3017" + + "\u0609\u2a86\u4886\uf70d\u0109\u1431\u0a1e\u0800\u7400\u6500" + + "\u7300\u7430\u2106\u092a\u8648\u86f7\u0d01\u0915\u3114\u0412" + + "\u5469\u6d65\u2031\u3330\u3833\u3132\u3234\u3236\u3437\u3082" + + "\u03b3\u0609\u2a86\u4886\uf70d\u0107\u06a0\u8203\ua430\u8203" + + "\ua002\u0100\u3082\u0399\u0609\u2a86\u4886\uf70d\u0107\u0130" + + "\u2806\u0a2a\u8648\u86f7\u0d01\u0c01\u0630\u1a04\u14de\ud8d8" + + "\ua792\uf9d9\u6875\ua51d\u98ec\udf03\uc2b6\u5100\u8a02\u0204" + + "\u0080\u8203\u6074\ub909\u3c60\ua522\ue4ac\u0f60\u2396\u7baa" + + "\ud208\ub76c\u89a5\ue4ef\u205d\u2062\u4a5b\ua684\uceae\u01b9" + + "\u1e7a\u6e03\ud996\u555a\u615b\uba70\u406f\u80a9\u901e\ua947" + + "\u5b8f\u73f3\udea3\ud8b1\u9782\uac87\u231a\udcd2\u3ef0\u3a17" + + "\u4092\u509f\u0e79\u4cd7\u8516\u5111\uebe1\u86e0\uc548\u5ffc" + + "\u9a99\u11ed\uef13\u17af\u2707\u8984\u8770\u7064\u1943\u1dd3" + + "\u45cf\u9f80\u65f8\u9b3e\u1f70\u6bd0\uc726\u5506\ufb20\u6bdc" + + "\uba8c\u0b19\ucd01\ud0f0\u7040\udf63\u48a5\udf5f\u6559\u1b33" + + "\ubdae\u8183\uc13f\ued10\ud6dc\ud0f0\u6a7f\ubc36\uc7ca\u320f" + + "\u50b8\ud422\ufd99\u8843\u65e8\ue201\u843b\u64ee\ub891\u3ba2" + + "\uecae\ufda0\u72d6\u8394\u2551\ufc44\u3778\u27c3\u061a\u6d3b" + + "\ubd80\ue010\u06df\u39e7\u3d6a\u5ae2\u93fa\u4de4\u938f\u6f27" + + "\ufd39\u4380\u60da\uf215\u79d4\uf6f1\ua02f\u959a\ua0ea\u1c38" + + "\u80e3\u2744\u7506\u54b3\u77ad\u18ce\ucfec\u555e\u7bbe\u2e2f" + + "\u9900\ub2ef\ua5b9\ubdf0\u5e15\ua681\u92c7\u4f86\u2e1a\ub893" + + "\u01fc\u01d2\ub674\uff19\u04c3\ua1a0\u2cea\u72e0\ua8f1\u1358" + + "\ube79\u7caa\u269d\u728a\ue435\u37bd\u6495\uc106\u8830\u9b17" + + "\ue16d\uef78\uae2b\u5313\u1c96\uc0ee\u3098\ud743\ucd1c\u7407" + + "\uf4f9\uee72\ub95e\u31e7\u6435\u0173\u0336\u93c5\u8a1b\u05b4" + + "\u4359\uc4be\ud92b\u8d21\u83a9\u32b7\u6433\ua9bc\u27c2\ud842" + + "\ua4f2\u81c5\ua86c\u2fd2\uba30\u53bd\uc277\u659f\u203b\u60e5" + + "\u37f7\u0984\u31c2\u838a\u2107\u5840\u6411\u1b8d\u044e\ub0b6" + + "\uf558\ue6d3\u62bb\u5464\uf83a\u4d5b\uf153\u9e18\ua353\ubd05" + + "\uf204\ud543\u037d\ue5aa\u473a\ueb13\uac19\u0494\ua08e\u76c3" + + "\ufbd7\u9f1c\u8ca9\u57ad\ud218\uc018\u67ac\u0ae9\ub559\ufe38" + + "\u5641\uec0c\ue0ee\u606c\u1989\ue5a2\uff09\u8c61\u1386\ueb51" + + "\u7cbd\u95cd\u80c5\u3532\u8605\u596d\u4cfd\u7797\u1e82\ud2fe" + + "\uad6b\ua16e\ub6cf\u8fce\ud5a9\u207f\u1d0a\udabe\uc3a6\u5633" + + "\u2023\u925f\u809f\uee7c\u5362\u5fd9\u8dfc\u6b5f\uc95b\u0ae9" + + "\u7b26\u9e5b\u97e8\u9d6e\uaf91\u6d1a\u1d19\ufc27\u0815\uccbc" + + "\u83d4\u2ce2\ue06e\u21a1\u88da\u09af\u9671\uc510\uac23\u398d" + + "\ubea2\ua9a1\uf0d3\u490d\ub94b\u7ff7\u6636\ub1fa\u9b10\u1be3" + + "\u179b\u6a8a\u4a6c\ude1f\u5da7\u7c02\u96ec\u70ac\u5045\udd2c" + + "\u9f6d\uc37d\u5ba6\u4895\ue142\u0db9\uf2dc\uba2e\ud054\ud33e" + + "\u1ed9\u144b\u5d85\u9156\u3a90\ue8cd\u0a01\u67f5\ua81b\u4f56" + + "\u99dd\u4950\ua551\uacdb\udf31\u1f05\u7169\u3231\u0071\u80ec" + + "\ua4e9\ud74e\u62cf\u8931\u11f1\uc925\u0319\uabd4\ufb86\u73c2" + + "\u1479\u005b\uf05d\u4f8d\u44e4\u942b\ud338\ud05d\u2b3b\uf6f5" + + "\udc0d\uf741\u798b\ud8e9\u36a5\u577b\u8a95\ud773\uffcb\u17b3" + + "\u7174\u9616\u9b5e\ua577\u983c\u6e7a\u6cc8\u4a04\u042b\u503e" + + "\ud744\ub65e\ue5de\ufa24\u8c71\u1127\ud47f\ud290\ufd4c\u5cbb" + + "\u0e21\u77fd\u6553\ub82b\ucb49\u41e7\u8e3d\u4539\u925d\u6ba9" + + "\uae47\u391c\ua79e\ub6e2\u7142\u7cb3\u02f5\u6495\u7a85\u2dea" + + "\u787b\u22b7\u6ec2\uea8d\uf930\u3d30\u2130\u0906\u052b\u0e03" + + "\u021a\u0500\u0414\ubfef\u99f5\u0bb0\uc9b3\uf96a\ue267\u6bc0" + + "\u0202\u6d78\ub923\u0414\u5500\u095a\u2a04\u2d7e\u708d\u9779" + + "\u9bdb\u2c4f\u82f2\uf89f\u0202\u0400"; + + private static final String WITHOUT_NULL = + "\u3082\u097c\u0201\u0330\u8209\u3606\u092a\u8648\u86f7\u0d01" + + "\u0701\ua082\u0927\u0482\u0923\u3082\u091f\u3082\u0564\u0609" + + "\u2a86\u4886\uf70d\u0107\u01a0\u8205\u5504\u8205\u5130\u8205" + + "\u4d30\u8205\u4906\u0b2a\u8648\u86f7\u0d01\u0c0a\u0102\ua082" + + "\u04fa\u3082\u04f6\u3028\u060a\u2a86\u4886\uf70d\u010c\u0103" + + "\u301a\u0414\ud258\ubbe7\ub641\ud196\u4969\u3c88\u70f1\u8c97" + + "\u95b1\u8bf3\u0202\u0400\u0482\u04c8\u096a\u4686\uf519\u61da" + + "\u1b3b\uebfd\u89b1\u044b\u3bd8\u79a7\ud022\ud880\ud173\ucde1" + + "\ud2c1\u2c5d\u8ebb\u6bd4\u46db\ub90b\u04b9\ub091\ud1f3\ud468" + + "\u3e93\u2c88\uca5a\u1c54\u5342\u1eca\u8565\ubbbd\ua022\u1ead" + + "\ud0bb\u1a8c\u69cf\uf0f4\ucbfb\u488a\ube99\uf190\ue01c\ud87d" + + "\u78ca\u9e5c\u82f9\u76ad\u811f\u37d0\u272b\u0481\u500c\u0a27" + + "\u08d3\ub637\u3e39\u6db1\ubcba\ue354\u6924\ua9d5\u3555\u20d6" + + "\u4c6b\u3189\u5f91\u382c\uf351\u4de2\ubade\u2a14\uea84\u16b6" + + "\uf7f7\u36de\ubba6\ue952\u5f5d\u8243\u2318\ucf3d\u8ac8\u33d3" + + "\u706c\ue3db\u6619\u7935\u7300\u89b3\u0bcd\uca9f\u0333\ua450" + + "\u1be1\u3e42\ub465\uced5\ub055\u5843\uf40f\ua0f2\u6fea\u94fa" + + "\ua51e\u4b5d\u93c9\ucb2e\u977e\uafd9\u2a2f\u784b\u0320\u5550" + + "\u273f\u469f\uc42b\u2ce7\uedea\u4e0d\u54a5\u1a25\u4fac\ue346" + + "\u2102\u7ab6\uea86\u554f\u7706\u8a80\uf6dd\u04f8\u3b37\u005a" + + "\u4562\u2ef8\u59f9\u32b7\u31c0\ue7dc\ucbde\ue0e1\u2fd9\u0960" + + "\u3e7a\ub4e5\u2a58\u1e2b\uef14\u9a44\u5444\u806d\uc475\u12ab" + + "\ucc3d\ua03b\ubd52\ubf1c\ua9a6\u58aa\uee8b\u96c2\ud0c9\ua029" + + "\u1db4\ub118\u4807\uecaa\ue182\uabb7\ud9ed\u66c5\u2c80\uc6a6" + + "\u3f54\ubc73\u2632\ue1b0\u0d74\u001c\u5740\uc74b\ufadb\u25b4" + + "\ua10e\u3191\u69e6\u0861\u452b\u955c\uac56\ud3c4\u86b7\u45f8" + + "\u777a\uc336\u8cc7\ud471\u76b6\u11d8\ueb84\u14e4\uf44f\uc9ff" + + "\u8929\u0d84\ubcfe\u8cc2\u9d07\u94e6\u1cf9\u19b5\u773a\u012d" + + "\u0453\u4ff3\u40f2\ub144\ufc80\u571c\u0e13\uf890\u9fed\u2045" + + "\u7baf\ufd88\u4920\u2b86\u491d\uecf8\ua5d9\u1e12\u48c7\u2c84" + + "\u3fbe\u4df5\u11ce\u7b81\u83fc\u3efa\u697d\u1f3d\u8d81\u01b0" + + "\u0bf1\u9012\u697f\u3b25\u3574\u5286\udded\u5be0\u7e92\u0a02" + + "\ua486\ud19b\ue0b5\ua05c\u5ac2\u0ad5\u0d04\ua763\ub5c8\uf7e6" + + "\u6e77\u2df3\ub9e7\uda30\ufccb\u7642\u5dc1\udf1f\uc922\uff69" + + "\u4471\u4749\u937a\ud77d\u7c0d\u917c\uf2ef\u122c\u13b2\u8943" + + "\u33aa\uad59\u86e8\u21c4\ueaa0\uf200\ue5f3\u6da0\ue8ef\uce7e" + + "\u37b2\u3ddf\u0480\u08fc\uf89a\ud927\u3f5b\u75d3\ubdfe\u6ebd" + + "\ufab1\u9f54\u1c20\u625b\u1391\u2af0\u43ba\u4395\udf22\u299e" + + "\uf3bf\u7750\u5f68\u0120\u0ee0\u6960\ud939\u621f\uf845\u0025" + + "\ue33c\u7ed9\ueadf\u0005\u6306\u7274\u5e67\ucf7a\uf3c6\u7371" + + "\u487b\u79d7\u2142\ubc1a\ubfe4\u3536\u15db\ufe23\u4352\u6321" + + "\u329d\uc251\u84c8\ufc0e\uc0ca\u5be6\uf530\u0177\ud9cb\ud132" + + "\uf752\u3f26\uda90\ud9cf\u2e46\u3e09\u5d9a\u6902\udb3e\ub06c" + + "\u722d\uf498\u3e93\u6cae\u43b5\u535a\u1cd1\uf0b2\u8d80\u9e53" + + "\ue02e\uf782\u01ce\u5063\u73d1\u5571\uf0e7\ufa22\u7e48\u0c31" + + "\u4642\u29fd\udcab\ue8d4\u7a77\u0880\u4855\u88c7\u7aa5\u0d9c" + + "\uf8b7\uc91c\u127d\u2dd7\ude53\u9d3f\u132b\u965c\ubc80\udd97" + + "\u87bf\ua0e8\ub2a2\u4e1f\u98fd\u72f3\u16ea\uc415\u5be3\ue8df" + + "\u5681\u1f11\u4e3a\uac5d\u1684\u6602\ueb14\u0a96\ufcef\uaebf" + + "\u1f2e\ud1a9\u435c\uf4e5\ub6b4\uaae2\u8244\u96a4\u0d3a\u752f" + + "\uce21\u1bc9\u219e\uf17b\ud95e\ucd12\u1b0a\ucb85\ub0cd\u4ecb" + + "\u6bb4\u5f7c\u2a93\ubb24\u9d7c\u6822\u80cd\u3f54\u78ad\u4fde" + + "\ud57f\uec1d\ub54c\u0d78\u5946\u84c1\ua9ad\u0dea\u0292\ub279" + + "\u1c76\u817e\ub910\ub1fa\ub1c0\u839d\u9eca\u6f83\u8211\u4112" + + "\u440c\u4fbd\u6ef2\u897d\udfa9\ude9e\u1aef\u0f21\u26fb\uaca4" + + "\u637e\ub072\u264f\ud24d\u9357\uc801\u0b84\u2d34\ueddf\u6063" + + "\udc5d\u90dd\u5c62\ufb48\u8c5e\u7c4e\u3bdb\ub590\u7a75\udbd1" + + "\udd78\uc8be\u5915\u7c8b\u8874\u578d\u3116\ub65a\uab8e\ud2ef" + + "\u5d35\ubf8b\u2828\u8983\ua790\uedcf\u9698\ue023\u5786\u627b" + + "\u9037\u1db7\u900e\u1f45\u0001\u7cf8\u14fd\ue437\u0dfd\ucacc" + + "\u5edf\u1742\u7f6e\u612a\ud57d\udca0\u73a4\ud601\uc7f0\uca0e" + + "\u5a44\u00b4\u233a\u84f2\u95b5\u5f16\uc291\u04fb\u369d\u6b99" + + "\ue127\u493f\u66be\u86e9\u9672\u2849\u64a7\u851b\ue420\u8491" + + "\ueb07\u6563\uc753\uc28e\ucad5\uec05\u6920\u8955\u5605\u25f6" + + "\u6193\ubee5\u7a1a\ub73d\ucc27\uc8ce\u7179\u57c1\u7a2a\u37c1" + + "\ua6c7\u2d8a\u4025\uc97d\u8c9d\u7b4b\u1ad5\uc6d7\u50fc\u246d" + + "\u91a9\ua55d\u677a\udc83\u04c7\u3e14\u9950\u420c\udf02\u749b" + + "\ude88\u5459\u2074\ua4ae\ud12d\uaf60\uba98\u630d\u313c\u3017" + + "\u0609\u2a86\u4886\uf70d\u0109\u1431\u0a1e\u0800\u7400\u6500" + + "\u7300\u7430\u2106\u092a\u8648\u86f7\u0d01\u0915\u3114\u0412" + + "\u5469\u6d65\u2031\u3330\u3833\u3132\u3431\u3138\u3238\u3082" + + "\u03b3\u0609\u2a86\u4886\uf70d\u0107\u06a0\u8203\ua430\u8203" + + "\ua002\u0100\u3082\u0399\u0609\u2a86\u4886\uf70d\u0107\u0130" + + "\u2806\u0a2a\u8648\u86f7\u0d01\u0c01\u0630\u1a04\u14af\ud4f5" + + "\u0ff4\u0ede\u0da0\u6cc5\ufd9d\u3502\uae5e\u4cef\u3102\u0204" + + "\u0080\u8203\u6028\ua7e6\u088b\u56b6\uf453\u9747\u68ec\uc064" + + "\u2254\u693f\u25c5\uaa39\u3d87\uc97c\uc558\u5194\u7553\ude3a" + + "\u4575\u9d85\ud843\u2bd0\ua2e8\u244f\u8593\uac84\u54b4\ubdc6" + + "\ucea6\uba1a\ud3da\ua510\uee9d\uaf31\ub5c2\u3329\u0fed\u0e08" + + "\u426b\u46fe\udcc5\u0979\ua9ed\u3123\u9a50\ud222\u3fc0\u771a" + + "\u6f55\u9664\ud56f\u6b03\u6020\u78a4\u63b2\ue35e\u0816\u43a7" + + "\u1909\u52e1\u8183\u1b8d\u9f5b\u19e4\uad73\u8461\ucc86\u3b49" + + "\u322e\ue9d9\u3c66\uea22\u091e\u6621\ua8bf\u0169\u72d0\u535e" + + "\u77dc\u1002\ubded\u7a91\u6cee\u58fa\uc295\uae8e\ue009\uabe9" + + "\u6638\ucaea\u8bbf\uca27\udef5\u2881\u72ec\u8aa5\u582b\u9d6e" + + "\u26bb\u3c70\u8bd6\uf5ec\u34ae\ua967\u5bb1\u22cb\u4b74\u0e50" + + "\u5062\uc6f7\u7cb4\u58a3\uf43d\u57c0\u9654\u2f9c\u9308\u4546" + + "\u6f4a\u37fe\u8d5d\u1465\u8621\u4cd8\u68d6\u0456\u96a4\ud3e2" + + "\u76d1\u2675\u7654\u7649\u10e9\u9d0e\u8b04\uffb6\u020a\u2eb4" + + "\uf24f\u150e\u7f0d\uf41b\u2c76\u538f\uc2df\u79dc\u0472\u1119" + + "\uc148\ue2e8\u1820\ucd45\u08a7\u6bcd\u6eb0\ubd0a\ufff4\uec28" + + "\u819b\u2adb\uefc8\ue8f7\ue233\u6535\uc938\u9771\u3681\u87cf" + + "\u3a24\u4c71\ue1df\u3e19\u259c\uae5b\u27ed\u8a67\uf3e6\u7af0" + + "\u48e1\uc542\uc471\ud8f4\ue317\u46e9\u0b4f\uec45\ua1d3\u2b88" + + "\u8a22\udda1\u7c1a\u273c\ua0f7\u8bac\u3771\u28d2\u6ef8\u28d2" + + "\ud83c\u196f\ue3fd\u9c79\u4305\u01b8\u3490\u0a91\ue4f3\uebc6" + + "\u25a2\u7dd2\u72db\u7531\ucfca\u432f\u2beb\uc649\uf9c5\uc533" + + "\u9f3a\ua611\u935c\ubca6\ud293\u54d6\u0dd1\u0aff\u82fb\u2d69" + + "\u3da0\u3b33\u0986\u45b3\u3353\ub968\u7348\u454f\u9117\ub3dc" + + "\ud7af\u06ca\ua34a\u9357\ue22f\uad3d\u4c76\ub386\ua8d7\u2a90" + + "\u6d17\u9321\u7b00\u21e4\u1994\u9d18\u6439\u04c8\u8282\ub269" + + "\uf786\u75c6\ua505\u983a\ua075\uffa0\ud662\u6ae5\ub126\u96d1" + + "\u9e5e\u346b\ub7ee\ub0a3\u4ee8\ud204\u77ec\u2325\u5da8\ua326" + + "\ua018\u0fd8\ue50e\u93cc\ucc40\u2d89\u2ffb\u54e0\u091a\u19fd" + + "\u45d7\uc0ab\u77a2\u66ae\u794b\u6644\u21c3\ud782\u1e9e\u53e5" + + "\u782e\u55e8\ud44e\u93e8\u379e\u5aa8\u353b\u95de\u7bc1\ucaf3" + + "\u5223\ub5e9\uacbb\ub86b\u6014\u0626\ue7ad\ufd93\ue43a\ud864" + + "\u1e6d\u14b2\ua12a\u94c5\u2ed9\ua7f7\u14f4\u0cbd\uca3b\u7c21" + + "\ua85a\uf834\u6c99\ue1aa\u3832\u2515\u8170\u3c93\u7def\u94fe" + + "\u9c3d\u4ab0\u73ed\u6c72\u8b94\ua407\uc719\uad1e\u6306\u4167" + + "\u921e\uae53\u3fd4\uf569\u6f0b\u82b0\u0ca6\ud61f\ud526\u23c9" + + "\u168d\u4baf\ucc4f\ud8a2\uc64a\ud649\u55e3\u7019\u8f20\u680c" + + "\u5581\u2cb1\ub3a4\u3e37\u5fd3\ua3ca\uc115\u979c\uf910\u3797" + + "\u05cb\u51d6\u74a4\uc5c0\u597b\uf27f\ud5e2\ue8ac\u4f3d\uc0c3" + + "\u9594\u7799\u6876\ub1a3\u059a\uff03\uc2ee\uc8c2\uf224\u3720" + + "\u9177\uabdb\u9202\u18d8\uffbe\u0516\u2a76\uedb5\ufe9e\u6d65" + + "\u4c35\ue4cb\u75aa\u02be\ud24c\ua482\ufc67\ue4f9\u70c7\u3567" + + "\ufc3f\uaa89\ue80a\u6507\u0a65\u4e18\uf919\u071d\u423c\u1756" + + "\u30e5\u37f3\u19b3\u10fb\u6c30\u3d30\u2130\u0906\u052b\u0e03" + + "\u021a\u0500\u0414\ufd05\u4444\ud347\u673c\u6da4\udb7c\u0733" + + "\ud7bf\ud263\uc6b2\u0414\udd17\u155e\u2d4c\u25cb\ua028\u1a23" + + "\ub8b0\uf6be\u925f\ude3a\u0202\u0400"; + +}
--- a/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh Fri Feb 17 10:04:03 2012 -0800 +++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh Sun Feb 19 22:03:12 2012 -0800 @@ -33,11 +33,7 @@ OS=`uname -s` case "$OS" in - SunOS ) - PS=":" - FS="/" - ;; - Linux ) + SunOS | Linux | Darwin ) PS=":" FS="/" ;;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/tools/keytool/ListKeychainStore.sh Sun Feb 19 22:03:12 2012 -0800 @@ -0,0 +1,142 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# 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 7133495 +# @summary [macosx] KeyChain KeyStore implementation retrieves only one private key entry + +if [ "${TESTJAVA}" = "" ] ; then + JAVAC_CMD=`which javac` + TESTJAVA=`dirname $JAVAC_CMD`/.. +fi + +if [ "${TESTCLASSES}" = "" ] ; then + TESTCLASSES=`pwd` +fi + +# Only run on MacOS +OS=`uname -s` +case "$OS" in + Darwin ) + ;; + * ) + echo "Will not run test on: ${OS}" + exit 0; + ;; +esac + +PWD="xxxxxx" +KEYTOOL="${TESTJAVA}/bin/keytool -storetype KeychainStore -keystore NONE -storepass $PWD" +TEMPORARY_P12="$TESTCLASSES/7133495.p12" +TEMPORARY_KC="$TESTCLASSES/7133495.keychain" +CLEANUP_P12="rm -f $TEMPORARY_P12" +CLEANUP_KC="security delete-keychain $TEMPORARY_KC" + +# Count the number of private key entries in the Keychain keystores + +COUNT=`$KEYTOOL -list | grep PrivateKeyEntry | wc -l` +echo "Found $COUNT private key entries in the Keychain keystores" + +if [ $COUNT -gt 1 ]; then + exit 0 +fi + +# Create a temporary PKCS12 keystore containing 3 public/private keypairs + +RESULT=`$CLEANUP_P12` + +for i in X Y Z +do + ${TESTJAVA}/bin/keytool -genkeypair \ + -storetype PKCS12 \ + -keystore $TEMPORARY_P12 \ + -storepass $PWD \ + -dname "CN=$i,OU=$i,O=$i,ST=$i,C=US" \ + -alias 7133495-$i + + if [ $? -ne 0 ]; then + echo "Error: cannot create keypair $i in the temporary PKCS12 keystore" + RESULT=`$CLEANUP_P12` + exit 1 + fi +done +echo "Created a temporary PKCS12 keystore: $TEMPORARY_P12" + +# Create a temporary keychain + +security create-keychain -p $PWD $TEMPORARY_KC +if [ $? -ne 0 ]; then + echo "Error: cannot create the temporary keychain" + RESULT=`$CLEANUP_P12` + exit 2 +fi +echo "Created a temporary keychain: $TEMPORARY_KC" + +# Unlock the temporary keychain + +security unlock-keychain -p $PWD $TEMPORARY_KC +if [ $? -ne 0 ]; then + echo "Error: cannot unlock the temporary keychain" + RESULT=`$CLEANUP_P12` + RESULT=`$CLEANUP_KC` + exit 3 +fi +echo "Unlocked the temporary keychain" + +# Import the keypairs from the PKCS12 keystore into the keychain + +security import $TEMPORARY_P12 -k $TEMPORARY_KC -f pkcs12 -P $PWD +if [ $? -ne 0 ]; then + echo "Error: cannot import keypairs from PKCS12 keystore into the keychain" + RESULT=`$CLEANUP_P12` + RESULT=`$CLEANUP_KC` + exit 4 +fi +echo "Imported keypairs from PKCS12 keystore into the keychain" + +# Recount the number of private key entries in the Keychain keystores + +COUNT=`$KEYTOOL -list | grep PrivateKeyEntry | wc -l` +echo "Found $COUNT private key entries in the Keychain keystore" +if [ $COUNT -lt 3 ]; then + echo "Error: expected >2 private key entries in the Keychain keystores" + RESULT=`$CLEANUP_P12` + RESULT=`$CLEANUP_KC` + exit 5 +fi + +RESULT=`$CLEANUP_P12` +if [ $? -ne 0 ]; then + echo "Error: cannot remove the temporary PKCS12 keystore" + exit 6 +fi +echo "Removed the temporary PKCS12 keystore" + +RESULT=`$CLEANUP_KC` +if [ $? -ne 0 ]; then + echo "Error: cannot remove the temporary keychain" + exit 7 +fi +echo "Removed the temporary keychain" + +exit 0