Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

java.lang.IllegalAccessError with OpenJ9 Java 16 in contrast to with OpenJ9 Java 15 or with HotSpot Java 16 #12460

Closed
howlger opened this issue Apr 17, 2021 · 6 comments

Comments

@howlger
Copy link

howlger commented Apr 17, 2021

Java -version output

openjdk version "16" 2021-03-16
OpenJDK Runtime Environment AdoptOpenJDK (build 16+36)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.25.0, JRE 16 Windows 10 amd64-64-Bit Compressed References 20210311_69 (JIT enabled, AOT enabled)
OpenJ9   - 022d65424
OMR      - 09514431e
JCL      - 0c11227a21a based on jdk-16+36)

Summary of problem

In the Eclipse Java IDE I'm facing a java.lang.IllegalAccessError if and only if running Eclipse with the AdoptOpenJDK OpenJ9 Java 16 VM. This did not happen before with an Openj9 Java 15 VM and cannot be reproduced with the current AdoptOpenJDK HotSpot Java 16 VM.

It can be reproduced with Eclipse SDK 4.19 on Windows 10 and on Linux by trying to open the Clean Ups profile dialog: in Window > Preferences: Java > Code Style > Clean Up hitting the Edit... button.

See Eclipse bug 572093

It might be related to using java.util.Observable in OSGi.

Diagnostic files

Stack trace:

java.lang.IllegalAccessError
	at java.base/java.lang.invoke.MethodHandleResolver.resolveInvokeDynamic(MethodHandleResolver.java:208)
	at org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpTabPage.registerSlavePreference(CleanUpTabPage.java:150)
	at org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpTabPage.registerSlavePreference(CleanUpTabPage.java:123)
	at org.eclipse.jdt.internal.ui.preferences.cleanup.CodeStyleTabPage.doCreatePreferences(CodeStyleTabPage.java:114)
	at org.eclipse.jdt.internal.ui.preferences.formatter.ModifyDialogTabPage.createContents(ModifyDialogTabPage.java:847)
	at org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpModifyDialog.addTabPage(CleanUpModifyDialog.java:145)
	at org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpModifyDialog.addPages(CleanUpModifyDialog.java:134)
	at org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpModifyDialog.createMainArea(CleanUpModifyDialog.java:104)
	at org.eclipse.jdt.internal.ui.preferences.formatter.ModifyDialog.createDialogArea(ModifyDialog.java:1242)
	at org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpModifyDialog.createDialogArea(CleanUpModifyDialog.java:151)
	at org.eclipse.jface.dialogs.Dialog.createContents(Dialog.java:767)
	at org.eclipse.jface.window.Window.create(Window.java:431)
	at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1094)
	at org.eclipse.jface.dialogs.StatusDialog.create(StatusDialog.java:130)
	at org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpModifyDialog.create(CleanUpModifyDialog.java:82)
	at org.eclipse.jface.window.Window.open(Window.java:788)
	at org.eclipse.jdt.internal.ui.preferences.formatter.ProfileConfigurationBlock$ButtonController.modifyButtonPressed(ProfileConfigurationBlock.java:230)
	at org.eclipse.jdt.internal.ui.preferences.formatter.ProfileConfigurationBlock$ButtonController.widgetSelected(ProfileConfigurationBlock.java:175)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4209)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1043)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4026)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3626)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
	at org.eclipse.jface.window.Window.open(Window.java:799)
	at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:66)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580)
	at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:414)
	at org.eclipse.jface.action.ActionContributionItem$$Lambda$348/0x0000000070d7da78.handleEvent(Unknown Source)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4209)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1043)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4026)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3626)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
	at org.eclipse.ui.internal.Workbench$$Lambda$127/0x000000006c131c60.run(Unknown Source)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1461)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1434)
Caused by: java.lang.IllegalAccessException: Class 'org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpTabPage' no access to: class '[Lorg.eclipse.jdt.internal.ui.preferences.formatter.ModifyDialogTabPage$CheckboxPreference;'
	at java.base/java.lang.invoke.MethodHandles$Lookup.checkClassAccess(MethodHandles.java:588)
	at java.base/java.lang.invoke.MethodHandles$Lookup.accessCheckArgRetTypes(MethodHandles.java:944)
	at java.base/java.lang.invoke.MethodHandleResolver.resolveInvokeDynamic(MethodHandleResolver.java:206)
	... 58 more
@pshipton
Copy link
Member

Sorry, I accidently linked the wrong builds, but I've updated the links now.

@howlger
Copy link
Author

howlger commented Apr 18, 2021

Does it still happen with this preliminary build for the next release?

No, with this preliminary build it doesn't happen anymore.

Thank you!

@howlger
Copy link
Author

howlger commented Apr 19, 2021

Is this issue a duplicate of issue #12315?

@pshipton
Copy link
Member

Is this issue a duplicate of issue #12315?

It seems unlikely. The test causes an IllegalAccessError and looks for a specific error message and didn't find it because the word "module" was repeated twice.

I was thinking it's a duplicate of #12285 (which is fixed in the build you tried) but the change which introduced that isn't in openj9-0.25.0.

If it goes according to schedule, the next release will be completed by the end of this week.

@howlger
Copy link
Author

howlger commented Apr 23, 2021

In jdk-16.0.1+9_openj9-0.26.0 the issue is fixed for me (verified with OpenJDK16U-jdk_x64_windows_openj9_16.0.1_9_openj9-0.26.0.zip).

Thanks!

@howlger howlger closed this as completed Apr 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants