Known and Resolved Issues

This chapter lists high visibility bugs that have been addressed in these releases. It is not a complete listing of all of the bugs addressed. If you still have issues with any of these bugs, please file a new bug at http://bugreport.apple.com/ under the Java (new bugs) component, version X. Refer to the bug number indicated below in your new bug if you believe it is the same issue.

Java Accessibility

Radar #4198660

Removing tabs from JTabbedPane with accessibility screen reader running can crash.

Description:

A bug in the native accessibility bridge for JTabbedPanes could cause a crash if all tabs were removed from a JTabbedPane while the native screen reader was focused on the UI.

Resolution:

This issue has been resolved.

Java Applets

Radar #3196480

The Java applet console window minimizes instead of closing.

Description:

The Java applet and Web Start console window would minimize instead of closing when its close button was clicked. This design prevented the Java console from becoming inaccessible once closed, but was highly inconsistent with standard OS X window management.

Resolution:

This issue has been resolved. When the Java console is activated on OS X, a coffee cup icon is installed in the menu bar which is used to hide and show the console.

Radar #6426533

Applets do not receive scroll events in Safari.

Description:

The base NSView for AWT controls did not forward scroll events to their Java peers under some circumstances.

Resolution:

This issue has been resolved.

Radar #6649881

Deliver next generation applet plug-in (Plugin2) for development testing.

Description:

Developers need to be able to try out the next generation out-of-process applet plug-in. While there are a number of outstanding issues, developers should be able to try out this technology and report bugs back to Apple in a GM release.

Resolution:

This issue has been resolved. Developers can use Plugin2 by selecting "Run applets: (*) In their own process" from the Java Preferences application.

Radar #6972083

Applets in Java SE 6 were not correctly disposed in some circumstances.

Description:

An error in the internal applet lifecycle management prevented destroy() from being called on some applets, and allowing them to be properly deallocated.

Resolution:

This issue has been resolved.

Java Application Support

Radar #7032365

There is no way to create a Java application that uses Objective-C garbage collection in JNI.

Description:

The JavaApplicationStub for bundled Java applications on OS X is compiled to run in Objective-C non-garbage-collected mode. It is not generally possible to create a new JavaApplicationStub with ObjC-GC turned on.

Resolution:

This issue has been resolved. A new JavaApplicationStubGC has been added to /System/Library/Frameworks/JavaVM.framework/Resources/MacOS, which supports ObjC-GC. It is currently only for development purposes of JNI libraries and to test Java's native code under the ObjC-GC environment.

Radar #7164785

Not all Java command line tools are present in /usr/bin.

Description:

The Java command line tools present in the default /usr/bin path were only the list present in J2SE 5.0, and were not updated for Java SE 6.

Resolution:

This issue has been addressed in Java for OS X v10.6 Update 1. The jrunscript, schemagen, wsgen, wsimport, and xjc tools have been added to /usr/bin.

Radar #7192142

Applications fail to launch without a JavaVM.framework/Versions/1.4.2 present.

Description:

Certain server and education packages are known to fail if a JVM is not present at /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2. J2SE 1.4 is no longer supported by Sun or Apple and will not be introduced by or updated in future Java updates for OS X. These applications actually work fine in Java SE 6, so a symlink from 1.4.2 to CurrentJDK resolves this issue in OS X v10.6.

Resolution:

This issue has been resolved in Java for OS X v10.6 Update 1. A symlink from 1.4.2 pointing to CurrentJDK has been added for backwards compatibility.

Java Aqua LAF

Radar #3305882

JRadioButtonMenuItem is drawn inconsistently between in-window and screen menu bar.

Description:

The artwork for JRadioButtonMenuItem and JCheckBoxMenuItems rendering for in-window menus and popups was inherited from the Basic look and feel classes.

Resolution:

This issue has been resolved. The standard OS X menu check mark (and the selected-inverted variant) are used for both radio and check menu items.

Radar #5590828

JPopupMenus do not have rounded corners.

Description:

JPopupMenus, sub-menus, JComboBox popups, and the root in-window menus did not have rounded corners, like the native OS X popups.

Resolution:

This issue has been resolved. If a developer performs custom drawing in the corners of these popups, the transparent rounded corners will become squared off.

Radar #6270171

The "TitledBorder.aquaVariant" border allocates too much space at the top.

Description:

The border obtained from UIManager.getBorder("TitledBorder.aquaVariant") is designed to be used as a general replacement for titled borders. To obtain an Aqua-style inset border without space for a title, use UIManager.getBorder("InsetBorder.aquaVariant").

Resolution:

This issue has been resolved by the introduction of "InsetBorder.aquaVariant".

Radar #6994970

JComboBox popups in Java SE 6 fail to select when using a non-String list model.

Description:

In Java SE 6, using JComboBoxes with a non-String based list model would fail to select values chosen by the JComboBox popup.

Resolution:

This issue has been resolved.

Radar #7152014

JComboBox popup keybindings do not match native OS X.

Description:

JComboBox popup keybindings for Home, End, Page Up, and Page Down would both highlight and commit the highlighted value without closing the popup.

Resolution:

This issue has been resolved. The target value is now only highlighted, not committed.

Radar #7153660

JCheckBoxes used as ListCellRenderers shift alignment when selected in Java SE 6.

Description:

JCheckBoxes installed as JList cell renderers were being applied an additional set of insets when selected.

Resolution:

This issue has been resolved.

Radar #7165246

There is no way to show "prompting" text for search-field variant of JTextField.

Description:

For JTextFields set to the "search" variant, there has been no way to show "prompting" text when the field does not have focus. For more information about transforming a JTextField into a search field, see New Control Styles available within J2SE 5.0 on Mac OS X 10.5.

Resolution:

This issue has been addressed. The string value of the "JTextField.Search.Prompt" client property will be displayed when the search field does not have focus.

Radar #7276949

JCheckBoxMenuItem and JRadioButtonMenuItem have no indeterminate state.

Description:

This is an enhancement request for an indeterminate state for JCheckBoxMenuItem and JRadioButtonMenuItem. Setting the "JMenuItem.selectedState" client property for the JMenuItem to "indeterminate" causes them to be rendered with a dash instead of a check.

Resolution:

This issue has been resolved.

Java AWT

Radar #6193836

Robot.mouseWheel(int) scrolls in the opposite direction compared to MouseWheelEvent.getValue().

Description:

The scroll events synthesized from Robot.mouseWheel(int) moved the scroll pane in the opposite direction as the int value from MouseWheelEvent.getValue().

Resolution:

This issue has been resolved.

Radar #7038002

Windows throw NullPointerExceptions when dragged onto additional displays.

Description:

If a window is dragged onto a secondary display which had been attached after the Java application was launched, the window throws a NullPointerException originating from its GraphicsEnvironment.

Resolution:

This issue has been resolved in Java SE 6 (previously addressed in J2SE 5.0).

Radar #7086030

Applying "apple.awt.documentModalSheet" to non-modal windows clips the bottom of the window.

Description:

Applying the "apple.awt.documentModalSheet" client property to a window that is not a document modal dialog had the side effect of clipping the bottom of the window's contents.

Resolution:

This issue has been resolved.

Radar #7119767

Window content is not updated on hide/show In Java SE 6.

Description:

Windows hidden and then shown were not properly redrawing their content.

Resolution:

This issue has been resolved.

Radar #7145312

AWT FileDialog throws a NullPointerException when selecting root volume in "apple.awt.fileDialogForDirectories" mode.

Description:

When using an AWT FileDialog in "apple.awt.fileDialogForDirectories" mode, selecting the root volume "/" would cause a NullPointerException to be thrown from the native FileDialog peer.

Resolution:

This issue has been resolved.

Radar #7156629

AWT components in modal dialogs do not repaint, appear to lag, refresh on resize.

Description:

The Java graphics window tick flusher was not firing when the AppKit runloop was being run in a modal mode.

Resolution:

This issue has been resolved.

Radar #7173154

Frame.setIconImage() is broken and Window.setIconImages() is unimplemented in Java SE 6.

Description:

The new Window.setIconImages() API in Java SE 6 was unimplemented, and as a result accidentally regressed the existing Frame.setIconImage() API.

Resolution:

This issue has been resolved.

Radar #7361468

Momentum scrolling moves too quickly in Java scroll panes.

Description:

Momentum scrolling used by the Magic Mouse (and normal scrolling to a lesser degree) moved too quickly in Java scroll panes compared to native scroll views.

Resolution:

This issue has been resolved.

Java Core Frameworks

Radar #7276124

JavaNativeFoundation should provide date conversion.

Description:

The JavaNativeFoundation.framework now has low-level NSTimeInterval/milliseconds since epoc and NSDate/java.util.Calendar conversion functions in JNFDate.h. [JNFDefaultCoercions defaultCoercer] now also returns a date coercer as a standard coercion.

Resolution:

This issue has been resolved.

Radar #7317460

JavaNativeFoundation should provide array creation helpers.

Description:

JNFJNI.h now provides object and primitive array creation functions. These helpers will throw Objective-C exceptions if a Java exception occurs during invocation (NegativeArraySizeException, ClassNotFoundException, etc).

Resolution:

This issue has been resolved.

Radar #7354148

JNF_COCOA_EXIT does not properly pop autorelease pool on early return or exception throw.

Description:

The JNF_COCOA_EXIT macro did not properly pop the autorelease pool set up in the JNF_COCOA_ENTER macro if the intervening code threw an Objective-C exception or returned early.

Resolution:

This issue has been resolved. The JNF_COCOA_EXIT macro now performs the autorelease pool pop within a @finally clause.

Radar #7361122

JavaNativeFoundation cannot be used by Objective-C++ code.

Description:

The JNF_EXPORT macro in JNFJNI.h did not export a C++ compatible extern "C" declaration when compiled as Objective-C++.

Resolution:

This issue has been resolved.

Java Deploy

Radar #6456853

Trusting an applet needs to store origin as well as signing certificate chain.

Description:

When trusting signed Java content to run without prompting for both applets and Web Start applications, both the code origin and the signing certificate chain should be stored.

Resolution:

This issue has been resolved.

Java DnD

Radar #6923825

The first drag-enter event fails to initiate a drag-and-drop gesture.

Description:

The drag flavor types were not recognized the first time the user dragged over the window, but were later recognized on subsequent drag-enters.

Resolution:

This issue has been resolved.

Java EAWT

Radar #6731693

Java applications should be able to request the user's attention.

Description:

A new API has been added to the EAWT to allow a Java application to request the user's attention in situations like a download completing or a new instant message. The com.apple.eawt.Application.requestUserAttention(boolean) function takes an argument if the request is urgent or not. The Dock icon will only be bounced if the Java app is in the background.

Resolution:

This issue has been resolved.

Java EIO

Radar #7123115

Java applications should be able to reveal files in the Finder and move files to the trash.

Description:

The com.apple.eio.FileManager now has two new desktop interaction methods, revealInFinder(File) and moveToTrash(File). You can use revealInFinder() to open a Finder window in the parent directory of a file and select it. You can use moveToTrash() to move a file to the most appropriate Trash directory for the volume that contains that file. Both functions return a boolean if the operation succeeded, like their native Cocoa counterparts.

Resolution:

This issue has been resolved.

Java HotSpot

Radar #4409386

Using an invalid encoding causes the JVM to crash.

Description:

Passing an unknown value for the "file.encoding" system property would cause the JVM to crash.

Resolution:

This issue has been resolved. An UnsupportedEncodingException error is now printed.

Radar #6675249

Java SE 6 was not allowing ergonomics to decide on heap size with -server.

Description:

Legacy code was setting the maximum heap size to 128M with -server.

Resolution:

This issue has been resolved. Standard Java SE 6 ergonomics are now used to choose the heap size for -server invocations.

Radar #7061573

Java limits open file descriptors to OPEN_MAX (10240) even if kernel limits are higher.

Description:

The JVM was artificially limited to opening 10240 file descriptors, even if KERN_MAXFILESPERPROC is set higher.

Resolution:

This issue has been resolved.

Radar #7075389

The jmap command line tool fails with NoSuchSymbolException.

Description:

Attaching to a java process with jmap would produce the exception: Could not find symbol "heapOopSize" in any of the known library names (-).

Resolution:

This issue has been resolved. The "heapOopSize" symbol has been corrected.

Radar #7199114

Sending SIGTERM signal to parent process also kills child Java processes.

Description:

On previous releases of Java for OS X, killing a parent process via SIGTERM would also kill and Java child processes. This did not match the behavior of Java on other operating systems, nor the behavior of other runtimes or shell tools on OS X.

Resolution:

The signal SIGTERM is now ignored by child processes when sent to a parent process. This signal handling change now makes Java more consistent with other native processes.

Radar #7267505

The CMS garbage collector is unstable with -XX:+UseCompressedOops in Java SE 6.

Description:

The CMS garbage collector has several known issues with the compressed OOPs feature in Java SE 6.

Workaround:

The parallel garbage collector is automatically substituted for CMS when -XX:+UseCompressedOops is requested.

Java JavaLib

Radar #7236003

Timezone offset is calculated incorrectly for some regions (Toronto).

Description:

The offset from GMT was incorrectly calculated for some timezone regions that did not have exact matches in the tzmappings file.

Resolution:

This issue has been resolved.

Java ScreenMenuBar

Radar #5290925

Java applications need a way to define a default menu bar.

Description:

The com.apple.eawt.Application now has a setDefaultMenuBar(JMenuBar) method that sets a default menu bar when no other Frames are open. This feature requires both the Aqua Look and Feel and apple.laf.useScreenMenuBar=true property to set up the native menu bar delegates correctly.

Resolution:

This issue has been resolved. This should remove the need to create an invisible or offscreen window to simulate the appearance of a true "default" menu bar.

Radar #6981526

Dialog windows with null parents cause screen menu bar failure.

Description:

Java applications that use dialog windows without a parent frame would fail to properly restore their menu bar when they opted into the Aqua Look and Feel screen menu bar.

Resolution:

This issue has been resolved in Java for OS X v10.6 Update 1 (it was addressed in an earlier update to Java for OS X v10.5).

Radar #7276070

Sub-menus fail to generate MenuListener events on OS X v10.6.

Description:

Sub-menus of JMenus attached via the screen menu bar fail to fire MenuListener events of OS X v10.6, due to changes in the AppKit menu notification architecture.

Resolution:

This issue has been resolved in Java for OS X v10.6 Update 1.

Java Security

Radar #7011999

Kerberos 5 authentication fails in Java SE 6 in some circumstances.

Description:

A problem handling zero length salt values could prevent authentication via Kerberos 5.

Resolution:

This issue has been resolved.

Java Sound

Radar #3261490

javax.sound.midi.* API unimplemented for hardware MIDI devices.

Description:

The javax.sound.midi.* API has been unimplemented for hardware MIDI devices on OS X.

Resolution:

This issue has been resolved.

Radar #7107797

MIDI playback delays massively after system sleep.

Description:

Sleeping and waking a system with a Java application playing MIDI will cause a large delay to be introduced into the MIDI playback timing.

Resolution:

This issue has been resolved.

Radar #7264692

There is sound distortion on the right channel when using a 48000 Hz sample rate.

Description:

Setting the system to globally use the 48000 Hz sample rate caused sound played from Java to have a distortion in its right channel.

Resolution:

This issue has been resolved.

Java Swing

Radar #3017655

Discontiguous multi-selection modifier is not Command (Meta) in non-Aqua Look and Feels.

Description:

The discontiguous multi-selection modifier hardcoded into the Basic look and feel has been Control, which is the default on other platforms, but not on OS X. This also conflicts with the Ctrl-click popup trigger, and makes it impossible to invoke a contextual menu on a multiple selection.

Resolution:

This issue has been resolved. The Basic look and feel now correctly picks up the appropriate platform modifier key.

Java Text

Radar #7182998

Complex character input method fails to show intermediate composition on PPC.

Description:

Complex text (like Japanese or Chinese) composition failed to properly render the intermediate forms under composition on PPC hardware. The underlying glyph codes sent to the native rendering pipeline were not properly encoded from the character surrogate pairs.

Resolution:

This issue has been resolved.

Java Toolkit

Radar #7276165

The JavaAppleScriptEngine should coerce date types.

Description:

AppleScript date types should coerce into java.util.Calendar objects when returned by AppleScript script executions. Java Calendar and Date objects should coerce to AppleScript date objects when passed into AppleScript script executions.

Resolution:

This issue has been resolved.

Java VM Tools

Radar #7331567

jmap -histo, jmap -dump, jstack does not work against some applications.

Description:

The JVM attach API failed to receive the UNIX signal to trigger activation. This is due to the class verifier using setjmp/longjmp which had the side effect of corrupting the signal mask on the VM thread due to another bug in the OS.

Resolution:

This issue has been worked around by using non-sigmask resetting variants of setjmp/longjmp.

Radar #7384119

JVM tools (jstack, jvisualvm, etc) fail to connect to a Java process of different architecture.

Description:

When attaching to Java process, JVM tools must be launched in the same architecture as the process they are inspecting.

Workaround:

Pass an architecture flag to the JVM tool. For example, to inspect a 32-bit Java process on OS X v10.6, jstack should be launched with a "-J-d32" argument.

Java Web Start

Radar #6982739

javaws -viewer is broken.

Description:

The "javaws -viewer" or JNLP "<player/>" tag that opens the Java Cache Viewer stopped working when Java Cache Viewer was integrated into Java Preferences.

Resolution:

This issue has been resolved. Java Preferences now launches and pulls down the Java Cache Viewer sheet.

Radar #7286182

Shortcuts to Web Start applications are not downloading updates.

Description:

There was a bug in how Web Start determines if it was relaunched from the command line or launched from an app shortcut which prevented Web Start from downloading new versions of an application.

Resolution:

This issue has been resolved.

Radar #7406398

JNLPs launched as 32-bit with no architecture preference and other jvm arguments relaunch as 64-bit.

Description:

Java WebStart applications that do not specify an architecture preference, but do specify other JVM arguments, will always launch in 64-bit mode on capable hardware.

Workaround:

Specifying -d32 or -d64 in the jvm arguments or having an architecture-specific resource block will force a specific architecture.