8017248: Compiler Diacritics Issue

Reviewed-by: naoto
This commit is contained in:
Alexander Zuev 2013-09-19 17:04:45 +04:00
parent 8290ada96c
commit 100b98aafa
3 changed files with 35 additions and 1 deletions

View File

@ -51,6 +51,7 @@ import java.nio.charset.Charset;
import java.nio.file.DirectoryStream; import java.nio.file.DirectoryStream;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.text.Normalizer;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList; import java.util.ArrayList;
@ -493,7 +494,19 @@ public enum LauncherHelper {
try { try {
mainClass = scloader.loadClass(cn); mainClass = scloader.loadClass(cn);
} catch (NoClassDefFoundError | ClassNotFoundException cnfe) { } catch (NoClassDefFoundError | ClassNotFoundException cnfe) {
abort(cnfe, "java.launcher.cls.error1", cn); if (System.getProperty("os.name", "").contains("OS X")
&& Normalizer.isNormalized(cn, Normalizer.Form.NFD)) {
try {
// On Mac OS X since all names with diacretic symbols are given as decomposed it
// is possible that main class name comes incorrectly from the command line
// and we have to re-compose it
mainClass = scloader.loadClass(Normalizer.normalize(cn, Normalizer.Form.NFC));
} catch (NoClassDefFoundError | ClassNotFoundException cnfe1) {
abort(cnfe, "java.launcher.cls.error1", cn);
}
} else {
abort(cnfe, "java.launcher.cls.error1", cn);
}
} }
// set to mainClass // set to mainClass
appClass = mainClass; appClass = mainClass;

View File

@ -0,0 +1,5 @@
public class ClassÁ {
public static void main(String args[]) {
System.out.println("Succes!");
}
}

View File

@ -0,0 +1,16 @@
#!/bin/sh
# @test test.sh
# @bug 8017248
# @summary Compiler Diacritics Issue
# @run shell test.sh
OSNAME=`uname -s`
if [ "$OSNAME" == "Darwin" ]
then
rm *.class
${TESTJAVA}/bin/javac *.java
${TESTJAVA}/bin/java `echo *.class | cut -d. -f1`
else
echo Test is specific to Mac OS X, skipping.
exit 0
fi