View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001261 | AniDB Applet | Bug Report | public | 2008-09-05 18:20 | 2014-05-01 20:51 |
| Reporter | spider0042 | Assigned To | DvdKhl | ||
| Priority | normal | Severity | feature | Reproducibility | always |
| Status | feedback | Resolution | open | ||
| Platform | Firefox/2.0.0.16 - JRE 1.5.0_06 | OS | Windows XP 32bit | OS Version | 5.1 |
| Summary | 0001261: Applet - JDK/JVM Version Check Skipped - Exceptions Thrown due to old JVM and new bytecode | ||||
| Description | http://anidb.net/perl-bin/animedb.pl?show=applet Old software is old. (And surprise! Not supported...) ^_^; In the case of my old machine, the 'Applet' continues to execute, and throws a runtime Exception, resulting in a white box with 'the red x' (firefox), and lacks any form of an informative 'your shit is old' message. It might be convenient to catch the Exception, or add aditional version checking so that user can be informed that an upgrade is needed. Quick Note: This is likely a 'problem' which can be left alone, but fixing it might help avoid bit of confusion and possibly reduce false error reports. I just thought that it might be useful to note a case which has slipped by the initial version checking. =============================== [b][ Details ][/b] An older JVM will throw an [i]UnsupportedClassVersionError[/i] if a class has been compiled with a (newer) JDK - a JDK which has returned bytecode that has been flagged with a 'lowest supported/compatible JVM version'. [b]This box is running old software![/b] Firefox 2.0 and JRE 1.5.0 (Java blocking features are not enabled.) The time has come for 'The Great Exodus' of an old machine; as I am attempting to migrate everything on it to NAS and final backup media. (This 'frankenstein' of a machine has been hobbling along with WinXP Service Pack 1 ... and a half. :/ ) [ Fix/Request ] Catch the Exception, or add additional checks at runtime, so that the user can be provided the most graceful: 'upgrade your shitz' message. :D I am not familiar with Java's version checking, but there may be another way to specify the lowest supported 'JVM-JDK combo' at compile time? Or, it could be that these versions of Java and Firefox do not support any extra features which would help catch this issue without additional coding. If you happen to be using newer APIs, then backwards compatible bytecode isn't an option, but it might be a 'quick fix' if the Applet is indeed using compatible API's. [b]If the proper fix isn't simple, then no one should really need to worry about this 'feature' request.[/b] As was stated, 'old software is old'. The -current- issue should 'fix itself' as stragglers slowly update because they realize other sites are starting to require newer versions. If not, fell free to say 'screw you' >:D , because people should honestly be running newer software. | ||||
| Steps To Reproduce | [b]Old Machine - Problem Described above:[/b] Firefox/2.0.0.16 JRE 1.5.0_06 (build 1.5.0_06-b05) WinXP SP1 + 1/2 :/ Just attempt to load the applet at http://anidb.net/perl-bin/animedb.pl?show=applet [b]Another machine - which works, NO problems:[/b] Firefox/3.0.1 and specifically Java 1.6.0_05-b13 WinXP SP2 [b]Briefly tested the Applet under a 64bit Linux environment:[/b] Results in a blank box / no Applet. Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1 Firefox is using the gcj webplugin ver. 1.2 I will look further into compatibility and report any useful findings. | ||||
| Additional Information | I'm in no need to upgrade this machine, I'm willing to wait and preform any additional testing if it's so desired. I could always install Minefield, or some newer beta, which might leave the original install intact, and allow for further testing. If this won't need to be looked into, before I do whipe this machine, I'll upgrade Firefox, and run some tests, then upgrade java, and play around with it a bit. Original Machine's Debug Info: =================================== Java Plug-in 1.5.0_06 Using JRE version 1.5.0_06 Java HotSpot(TM) Client VM User home directory = C:\Documents and Settings\OldUser java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at sun.applet.AppletClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.applet.AppletClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.applet.AppletClassLoader.loadCode(Unknown Source) at sun.applet.AppletPanel.createApplet(Unknown Source) at sun.plugin.AppletViewer.createApplet(Unknown Source) at sun.applet.AppletPanel.runLoader(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at sun.applet.AppletClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.applet.AppletClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.applet.AppletClassLoader.loadCode(Unknown Source) at sun.applet.AppletPanel.createApplet(Unknown Source) at sun.plugin.AppletViewer.createApplet(Unknown Source) at sun.applet.AppletPanel.runLoader(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Exception in thread "Thread-10" java.lang.NullPointerException at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source) at sun.plugin.AppletViewer.showAppletException(Unknown Source) at sun.applet.AppletPanel.runLoader(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) java.lang.NullPointerException at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source) at sun.plugin.AppletViewer.showAppletStatus(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) [b]Additional System Environment Information can be found in the attached document.[/b] --------------------- This may not be the only issue, but heres a bit of info just in case someone wants random details. "A Java virtual machine implementation can support a class file format of version v if and only if v lies in some contiguous range Mi.0 v Mj.m. Only Sun can specify what range of versions a Java virtual machine implementation conforming to a certain release level of the Java platform may support" -_-' Other rather detailed notes in the specification here: http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#9766 Catching the exception is probably enough, but heres a bit of overkill to be informative: http://www.rgagnon.com/javadetails/java-0544.html Could be used for testing: http://www.rgagnon.com/javadetails/java-0544.html | ||||
| Tags | No tags attached. | ||||
| Attached Files | AniDB_Client_Applet_Crash_-_Old_Software.txt (12,343 bytes)
Java Plug-in 1.5.0_06
Using JRE version 1.5.0_06 Java HotSpot(TM) Client VM
User home directory = C:\Documents and Settings\OldUser
java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-10" java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
at sun.plugin.AppletViewer.showAppletException(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
at sun.plugin.AppletViewer.showAppletStatus(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Dump system properties ...
----------------------------------------------------
acl.read = +
acl.read.default =
acl.write = +
acl.write.default =
application.home = C:\PROGRA~1\Java\JRE15~1.0_0
awt.toolkit = sun.awt.windows.WToolkit
browser = sun.plugin
browser.vendor = Sun Microsystems, Inc.
browser.version = 1.1
file.encoding = Cp1252
file.encoding.pkg = sun.io
file.separator = \
file.separator.applet = true
http.agent = Mozilla/4.0 (Windows XP 5.1)
http.auth.serializeRequests = true
https.protocols = SSLv3,SSLv2Hello
java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
java.awt.printerjob = sun.awt.windows.WPrinterJob
java.class.path = C:\PROGRA~1\Java\JRE15~1.0_0\classes
java.class.version = 49.0
java.class.version.applet = true
java.endorsed.dirs = C:\PROGRA~1\Java\JRE15~1.0_0\lib\endorsed
java.ext.dirs = C:\PROGRA~1\Java\JRE15~1.0_0\lib\ext
java.home = C:\PROGRA~1\Java\JRE15~1.0_0
java.io.tmpdir = C:\DOCUME~1\OldUser\LOCALS~1\Temp\
java.library.path = C:\Program Files\Mozilla Firefox;.;C:\WINDOWS\System32;C:\WINDOWS;C:\Program Files\Mozilla Firefox;c:\ruby\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\wbem;c:\program files\sonic\mydvd;c:\program files\quicktime\qtsystem\;c:\program files\ati technologies\ati.ace\core-static;C:\Program Files\Intel\DMIX;C:\Sun\AppServer\bin;C:\PROGRA~1\F-Secure\Ssh;C:\Program Files\MKVtoolnix
java.protocol.handler.pkgs = sun.plugin.net.protocol|sun.plugin.net.protocol|com.sun.deploy.net.protocol
java.runtime.name = Java(TM) 2 Runtime Environment, Standard Edition
java.runtime.version = 1.5.0_06-b05
java.specification.name = Java Platform API Specification
java.specification.vendor = Sun Microsystems Inc.
java.specification.version = 1.5
java.vendor = Sun Microsystems Inc.
java.vendor.applet = true
java.vendor.url = http://java.sun.com/
java.vendor.url.applet = true
java.vendor.url.bug = http://java.sun.com/cgi-bin/bugreport.cgi
java.version = 1.5.0_06
java.version.applet = true
java.vm.info = mixed mode
java.vm.name = Java HotSpot(TM) Client VM
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Sun Microsystems Inc.
java.vm.specification.version = 1.0
java.vm.vendor = Sun Microsystems Inc.
java.vm.version = 1.5.0_06-b05
javaplugin.maxHeapSize = 96m
javaplugin.nodotversion = 150_06
javaplugin.proxy.config.list =
javaplugin.proxy.config.type = browser
javaplugin.version = 1.5.0_06
javaplugin.vm.options = -Djava.class.path=C:\PROGRA~1\Java\JRE15~1.0_0\classes -Xbootclasspath/a:C:\PROGRA~1\Java\JRE15~1.0_0\lib\deploy.jar;C:\PROGRA~1\Java\JRE15~1.0_0\lib\plugin.jar -Xmx96m -Djavaplugin.maxHeapSize=96m -Xverify:remote -Djavaplugin.version=1.5.0_06 -Djavaplugin.nodotversion=150_06 -Dbrowser=sun.plugin -DtrustProxy=true -Dapplication.home=C:\PROGRA~1\Java\JRE15~1.0_0 -Djava.protocol.handler.pkgs=sun.plugin.net.protocol
line.separator = \r\n
line.separator.applet = true
os.arch = x86
os.arch.applet = true
os.name = Windows XP
os.name.applet = true
os.version = 5.1
os.version.applet = true
package.restrict.access.com.sun.deploy = true
package.restrict.access.netscape = false
package.restrict.access.org.mozilla.jss = true
package.restrict.access.sun = true
package.restrict.definition.com.sun.deploy = true
package.restrict.definition.java = true
package.restrict.definition.netscape = true
package.restrict.definition.org.mozilla.jss = true
package.restrict.definition.sun = true
path.separator = ;
path.separator.applet = true
sun.arch.data.model = 32
sun.boot.class.path = C:\PROGRA~1\Java\JRE15~1.0_0\lib\rt.jar;C:\PROGRA~1\Java\JRE15~1.0_0\lib\i18n.jar;C:\PROGRA~1\Java\JRE15~1.0_0\lib\sunrsasign.jar;C:\PROGRA~1\Java\JRE15~1.0_0\lib\jsse.jar;C:\PROGRA~1\Java\JRE15~1.0_0\lib\jce.jar;C:\PROGRA~1\Java\JRE15~1.0_0\lib\charsets.jar;C:\PROGRA~1\Java\JRE15~1.0_0\classes;C:\PROGRA~1\Java\JRE15~1.0_0\lib\deploy.jar;C:\PROGRA~1\Java\JRE15~1.0_0\lib\plugin.jar
sun.boot.library.path = C:\PROGRA~1\Java\JRE15~1.0_0\bin
sun.cpu.endian = little
sun.cpu.isalist =
sun.desktop = windows
sun.io.unicode.encoding = UnicodeLittle
sun.jnu.encoding = MS932
sun.management.compiler = HotSpot Client Compiler
sun.net.client.defaultConnectTimeout = 120000
sun.net.http.errorstream.enableBuffering = true
sun.os.patch.level = Service Pack 1
trustProxy = true
user.country = US
user.dir = C:\Program Files\Mozilla Firefox
user.home = C:\Documents and Settings\OldUser
user.language = en
user.name = OldUser
user.timezone =
user.variant =
----------------------------------------------------
Dump deployment properties ...
----------------------------------------------------
deployment.browser.args = -raise -remote openURL(%u,new-window)
deployment.browser.path = C:\PROGRA~1\MOZILL~1\FIREFOX.EXE
deployment.cache.jarcompression = 0
deployment.cache.max.size = -1
deployment.capture.mime.types = true
deployment.console.startup.mode = HIDE
deployment.control.panel.log = false
deployment.home.j2se.url = http://java.sun.com/j2se/
deployment.javapi.cache.enabled = true
deployment.javapi.lifecycle.exception = false
deployment.javapi.log.filename =
deployment.javapi.runtime.type = 0
deployment.javapi.trace.filename =
deployment.javaws.associations = ASK_USER
deployment.javaws.autodownload = ALWAYS
deployment.javaws.cache.dir = C:\Documents and Settings\OldUser\.javaws\cache
deployment.javaws.cachedir = C:\Documents and Settings\OldUser\.javaws\cache
deployment.javaws.home.jnlp.url = http://java.sun.com/products/javawebstart
deployment.javaws.installURL = http://java.sun.com/products/autodl/j2se
deployment.javaws.logFileName =
deployment.javaws.muffin.max = 256
deployment.javaws.player.bounds = 113,223,400,387
deployment.javaws.player.manager = 0
deployment.javaws.player.mode = 1
deployment.javaws.shortcut = ASK_IF_HINTED
deployment.javaws.ssv.enabled = true
deployment.javaws.traceFileName =
deployment.javaws.uninstall.shortcut = false
deployment.javaws.update.timeout = 1500
deployment.javaws.version = javaws-1.4.2_04
deployment.log = false
deployment.mime.types.use.default = true
deployment.proxy.bypass.local = false
deployment.proxy.override.hosts =
deployment.proxy.same = false
deployment.proxy.type = 3
deployment.repository.askdownloaddialog.show = true
deployment.repository.enabled = true
deployment.security.SSLv2Hello = true
deployment.security.SSLv3 = true
deployment.security.TLSv1 = false
deployment.security.askgrantdialog.notinca = true
deployment.security.askgrantdialog.show = true
deployment.security.authenticator = true
deployment.security.browser.keystore.use = true
deployment.security.clientauth.keystore.auto = true
deployment.security.expired.warning = true
deployment.security.jsse.hostmismatch.warning = true
deployment.security.notinca.warning = true
deployment.security.sandbox.awtwarningwindow = true
deployment.security.sandbox.jnlp.enhanced = true
deployment.security.trusted.policy =
deployment.system.security.cacerts = C:\PROGRA~1\Java\JRE15~1.0_0\lib\security\cacerts
deployment.system.security.jssecacerts = C:\PROGRA~1\Java\JRE15~1.0_0\lib\security\jssecacerts
deployment.system.security.trusted.certs = C:\PROGRA~1\Java\JRE15~1.0_0\lib\security\trusted.certs
deployment.system.security.trusted.clientauthcerts = C:\PROGRA~1\Java\JRE15~1.0_0\lib\security\trusted.clientcerts
deployment.system.security.trusted.jssecerts = C:\PROGRA~1\Java\JRE15~1.0_0\lib\security\trusted.jssecerts
deployment.trace = false
deployment.update.mime.types = true
deployment.user.cachedir = C:\Documents and Settings\OldUser\Application Data\Sun\Java\Deployment\cache
deployment.user.extdir = C:\Documents and Settings\OldUser\Application Data\Sun\Java\Deployment\ext
deployment.user.logdir = C:\Documents and Settings\OldUser\Application Data\Sun\Java\Deployment\log
deployment.user.security.policy = file://C:/Documents%20and%20Settings/OldUser/Application%20Data/Sun/Java/Deployment/security/java.policy
deployment.user.security.trusted.cacerts = C:\Documents and Settings\OldUser\Application Data\Sun\Java\Deployment\security\trusted.cacerts
deployment.user.security.trusted.certs = C:\Documents and Settings\OldUser\Application Data\Sun\Java\Deployment\security\trusted.certs
deployment.user.security.trusted.clientauthcerts = C:\Documents and Settings\OldUser\Application Data\Sun\Java\Deployment\security\trusted.clientcerts
deployment.user.security.trusted.jssecacerts = C:\Documents and Settings\OldUser\Application Data\Sun\Java\Deployment\security\trusted.jssecacerts
deployment.user.security.trusted.jssecerts = C:\Documents and Settings\OldUser\Application Data\Sun\Java\Deployment\security\trusted.jssecerts
deployment.user.tmp = C:\Documents and Settings\OldUser\Application Data\Sun\Java\Deployment\tmp
deployment.version = 1.5.0
javaplugin.console = hide
javaplugin.exception = false
javaplugin.jre.path = Default
javaplugin.jre.type = Default
javaplugin.proxy.usebrowsersettings = true
----------------------------------------------------
Done.
Dump classloader list ...
codebase=http://anidb.net/perl-bin/, key=http://anidb.net/perl-bin/,http://static.anidb.net/files/AniAdd.jar, zombie=false, cache=true, refcount=1, info=sun.plugin.ClassLoaderInfo@73a34b
Done.
------------------------------------------------------------------------------------------------------
| ||||
|
|
IE 6 on the original (old) machine detects and reports properly: "There should be a Java applet here. Please install Sun JRE 1.6 or later and/or disable whatever retarded Java blocking extension you're running." Could be old Firefox 2.0, I'll install a beta and see if it still has issues (even with the old JVM). |
|
|
Um, yes, I discovered incompatibilities with 1.5 while testing and added the version info to the applet and tested that I got that message when I ran firefox (2.0.x like you) with JRE 1.5. I don't know why it's silently failing for you instead. |
|
|
(New Version) Are there still browser - Java runtime combinations that don't work? And if it doesn't work, is a message properly displayed? |
|
|
I currently have the flu, but I do still have a copy of the old machine that was mentioned in this ticket. I'll try to test it out and provide feedback by the end of the week. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2008-09-05 18:20 | spider0042 | New Issue | |
| 2008-09-05 18:20 | spider0042 | File Added: AniDB_Client_Applet_Crash_-_Old_Software.txt | |
| 2008-09-05 18:28 | spider0042 | Note Added: 0002324 | |
| 2008-10-01 12:57 | pelican | Note Added: 0002340 | |
| 2009-09-14 18:51 | DvdKhl | Status | new => assigned |
| 2009-09-14 18:51 | DvdKhl | Assigned To | => DvdKhl |
| 2009-09-14 18:59 | DvdKhl | Note Added: 0002990 | |
| 2009-09-14 18:59 | DvdKhl | Status | assigned => feedback |
| 2009-09-14 20:45 | spider0042 | Note Added: 0002991 | |
| 2014-05-01 20:51 | DerIdiot | Category | => Bug Report |