View Issue Details

IDProjectCategoryView StatusLast Update
0001261AniDB AppletBug Reportpublic2014-05-01 20:51
Reporterspider0042 Assigned ToDvdKhl  
PrioritynormalSeverityfeatureReproducibilityalways
Status feedbackResolutionopen 
PlatformFirefox/2.0.0.16 - JRE 1.5.0_06OSWindows XP 32bitOS Version5.1
Summary0001261: Applet - JDK/JVM Version Check Skipped - Exceptions Thrown due to old JVM and new bytecode
Descriptionhttp://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 InformationI'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
TagsNo tags attached.

Activities

2008-09-05 18:20

 

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.






------------------------------------------------------------------------------------------------------




spider0042

2008-09-05 18:28

reporter   ~0002324

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).

pelican

2008-10-01 12:57

administrator   ~0002340

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.

DvdKhl

2009-09-14 18:59

developer   ~0002990

(New Version)
Are there still browser - Java runtime combinations that don't work?
And if it doesn't work, is a message properly displayed?

spider0042

2009-09-14 20:45

reporter   ~0002991

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.

Issue History

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