Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 5012884
Votes 0
Synopsis (cl) classloading failed due to "NoClassDefFoundError: IllegalName:"
Category java:classes_lang
Reported Against tiger-beta
Release Fixed
State 11-Closed, duplicate of 4986512, bug
Priority: 3-Medium
Related Bugs 4986512
Submit Date 12-MAR-2004
Description




FULL PRODUCT VERSION :
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b32c, mixed mode)

ADDITIONAL OS VERSION INFORMATION :
Gentoo Linux - Kernel 2.6.3

EXTRA RELEVANT SYSTEM CONFIGURATION :
not important

A DESCRIPTION OF THE PROBLEM :
I cannot use the JInput linux plugins with JDK1.5.0 (beta) due to the following exception:
Examining file : net/java/games/input/LinuxEnvironmentPlugin.class
Found candidate class: net/java/games/input/LinuxEnvironmentPlugin.class
Exception in thread "main" java.lang.NoClassDefFoundError: IllegalName: net/java/games/input/LinuxEnvironmentPlugin
   at java.lang.ClassLoader.preDefineClass(ClassLoader.java:459)
 
With 1.4.2.03 and same classpath, file layout whatever it works without problems.

I reported this problem here http://www.javagaming.org/cgi-bin/JGNetForums/YaBB.cgi?board=jinput;action=display;num=1064924636


STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Install JInput & JUtils (from javagaming.org)
2. Install linux controller plugin for jinput (~/controller/* or .../lib/controller/*)
3. Invoke ControllerEnvironment.getDefaultEnvironment().getControllers();


EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Class LinuxEnvironmentPlugin should be loaded successfully.
ACTUAL -
 java.lang.NoClassDefFoundError is thrown.

ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.lang.NoClassDefFoundError: IllegalName: net/java/games/input/LinuxEnvironmentPlugin
        at java.lang.ClassLoader.preDefineClass(ClassLoader.java:459)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:598)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access+100(URLClassLoader.java:56)
        at java.net.URLClassLoader+1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at net.java.games.util.plugins.Plugins.processJar(Plugins.java:115)
        at net.java.games.util.plugins.Plugins.scanPlugins(Plugins.java:88)
        at net.java.games.util.plugins.Plugins.<init>(Plugins.java:76)
        at net.java.games.input.DefaultControllerEnvironment.scanControllersAt(DefaultControllerEnvironment.java:199)
        at net.java.games.input.DefaultControllerEnvironment.scanControllers(DefaultControllerEnvironment.java:189)
        at net.java.games.input.DefaultControllerEnvironment.access$000(DefaultControllerEnvironment.java:58)
        at net.java.games.input.DefaultControllerEnvironment$1.run(DefaultControllerEnvironment.java:109)
        at java.security.AccessController.doPrivileged(Native Method)
        at net.java.games.input.DefaultControllerEnvironment.getControllers(DefaultControllerEnvironment.java:107)
        at robs.jinput.JInputTester.<init>(JInputTester.java:25)
        at robs.jinput.JInputTester.main(JInputTester.java:52)

Last two lines are user code:  JInputTester.java:25 is
controllers = ControllerEnvironment.getDefaultEnvironment().getControllers();

REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
// JInput & JUtils should have been installed => accessible via classpath
// Linux-Plugin files should have been copied to ~/controller or .../jre/lib/controller

import net.java.games.input.*;

public class JInputBug{
public static void main(String... args){
            controllers = ControllerEnvironment.getDefaultEnvironment().getControllers();

             for(Controller c : controllers){
                 System.out.printf("controller found: %s\n", c.getName());
              }
}
}

---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
No workaround available.

Release Regression From : 1.4.2_03
The above release value was the last known release where this 
bug was known to work. Since then there has been a regression.

(Incident Review ID: 242438) 
======================================================================
Work Around
N/A
Evaluation
Duplicate of 4986512.  The provided class name does not conform to the
specification for ClassLoader.defineClass().  Based on the provided stacktrace,
it appears that the code which calls ClassLoader.loadClass needs to be modified.

--   xxxxx@xxxxx   2004-03-15
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang