prims.cc (_Jv_RunMain): Use JvNewStringUTF for command-line class name, not Latin1.
authorBryce McKinlay <mckinlay@redhat.com>
Thu, 1 Jun 2006 07:45:55 +0000 (07:45 +0000)
committerBryce McKinlay <bryce@gcc.gnu.org>
Thu, 1 Jun 2006 07:45:55 +0000 (08:45 +0100)
2006-05-31  Bryce McKinlay  <mckinlay@redhat.com>

* prims.cc (_Jv_RunMain): Use JvNewStringUTF for command-line class
name, not Latin1.
* gnu/java/lang/MainThread.java (run): Allow file separator char to
be used in place of '.' as class-name separator. Don't chain
ClassNotFoundException.

From-SVN: r114300

libjava/ChangeLog
libjava/gnu/java/lang/MainThread.java
libjava/prims.cc

index c2baccfe8f654e58d9a2976708052d63d35ad09e..82a9f182ea567349c3fedb8bef83d6c2cc44152c 100644 (file)
@@ -1,3 +1,11 @@
+2006-05-31  Bryce McKinlay  <mckinlay@redhat.com>
+
+       * prims.cc (_Jv_RunMain): Use JvNewStringUTF for command-line class
+       name, not Latin1.
+       * gnu/java/lang/MainThread.java (run): Allow file separator char to
+       be used in place of '.' as class-name separator. Don't chain
+       ClassNotFoundException.
+
 2006-05-31  Thomas Fitzsimmons  <fitzsim@redhat.com>
 
        * java/lang/VMClassLoader.java (initialize): Set default library
index c35359f0e5af22a3c9792530bb2929ff38be4a7f..470de0c3a6810a045787ce28e77256458067b7f7 100644 (file)
@@ -39,6 +39,7 @@ exception statement from your version. */
 
 package gnu.java.lang;
 
+import java.io.File;
 import java.util.jar.Attributes;
 import java.util.jar.JarFile;
 
@@ -91,13 +92,14 @@ final class MainThread extends Thread
       {
         try
          {
-           klass = Class.forName(klass_name, true,
-                                 ClassLoader.getSystemClassLoader());
+            ClassLoader cl = ClassLoader.getSystemClassLoader();
+           // Permit main class name to be specified in file-system format.
+           klass_name = klass_name.replace(File.separatorChar, '.');
+            klass = cl.loadClass(klass_name);
          }
        catch (ClassNotFoundException x)
          {
            NoClassDefFoundError ncdfe = new NoClassDefFoundError(klass_name);
-           ncdfe.initCause(x);
            throw ncdfe;
          }
       }
index 1c3490e75114ed07516e5bd3b94702008e65b146..a066866c534beb9ac37db6bcdb5f173e3b2ce7ab 100644 (file)
@@ -1524,7 +1524,7 @@ _Jv_RunMain (JvVMInitArgs *vm_args, jclass klass, const char *name, int argc,
       if (klass)
        main_thread = new MainThread (klass, arg_vec);
       else
-       main_thread = new MainThread (JvNewStringLatin1 (name),
+       main_thread = new MainThread (JvNewStringUTF (name),
                                      arg_vec, is_jar);
     }
   catch (java::lang::Throwable *t)