Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Subclipse: Error with SVN after an update (Unable to create SVN preference page)

Good afternoon,

I have been using Eclipse and Subclipse (with JavaHL) for a few months without any problem so far. After an update of some plugins (including Subclipse) yesterday (i.e. on 13/03/19), subclipse is no longer working. For example, I am no longer able to commit or pull any file and when I get a look at window > preference > Team > SVN, eclipse displayed the following message: Unable to create the selected preference page. java.lang.reflect.InvocationTargetException

Please find below the exception stack trace:

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:206)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:934)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:246)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:63)
    at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:284)
    at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceNode.createPage(WorkbenchPreferenceNode.java:51)
    at org.eclipse.jface.preference.PreferenceDialog.createPage(PreferenceDialog.java:1279)
    at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.createPage(FilteredPreferenceDialog.java:361)
    at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1166)
    at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:675)
    at org.eclipse.jface.preference.PreferenceDialog$5.lambda$0(PreferenceDialog.java:660)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
    at org.eclipse.jface.preference.PreferenceDialog$5.selectionChanged(PreferenceDialog.java:657)
    at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:874)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.ui.internal.JFaceUtil.lambda$0(JFaceUtil.java:47)
    at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:176)
    at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:871)
    at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1240)
    at org.eclipse.jface.viewers.StructuredViewer.lambda$0(StructuredViewer.java:1263)
    at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
    at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:264)
    at org.eclipse.jface.util.OpenStrategy.access$5(OpenStrategy.java:259)
    at org.eclipse.jface.util.OpenStrategy$1.lambda$2(OpenStrategy.java:420)
    at org.eclipse.swt.widgets.Display.timerProc(Display.java:5566)
    at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
    at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1581)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4470)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:822)
    at org.eclipse.jface.window.Window.open(Window.java:798)
    at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.open(WorkbenchPreferenceDialog.java:214)
    at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:66)
    at org.eclipse.jface.action.Action.runWithEvent(Action.java:476)
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:568)
    at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:400)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5663)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1386)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4931)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4472)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1173)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1062)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:636)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:563)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:151)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:155)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:595)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1501)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1474)
Caused by: java.lang.LinkageError: Native library version must be at least 1.11.0,but is only 1.9.3 (r1718519)
    at org.apache.subversion.javahl.NativeResources.init(NativeResources.java:150)
    at org.apache.subversion.javahl.NativeResources.loadNativeLibrary(NativeResources.java:111)
    at org.apache.subversion.javahl.types.Version.<clinit>(Version.java:40)
    at org.apache.subversion.javahl.NativeResources.init(NativeResources.java:147)
    at org.apache.subversion.javahl.NativeResources.loadNativeLibrary(NativeResources.java:111)
    at org.apache.subversion.javahl.SVNClient.<clinit>(SVNClient.java:52)
    at org.tigris.subversion.svnclientadapter.javahl.JhlClientAdapterFactory.isAvailable(JhlClientAdapterFactory.java:184)
    at org.tigris.subversion.clientadapter.javahl.Activator.isAvailable(Activator.java:83)
    at org.tigris.subversion.clientadapter.javahl.Activator.getVersionSynchronized(Activator.java:72)
    at org.tigris.subversion.clientadapter.javahl.Activator.getVersionString(Activator.java:67)
    at org.tigris.subversion.clientadapter.javahl.Activator.getDisplayName(Activator.java:97)
    at org.tigris.subversion.subclipse.ui.preferences.SVNPreferencesPage.<init>(SVNPreferencesPage.java:102)
    ... 66 more
Root exception:
java.lang.LinkageError: Native library version must be at least 1.11.0,but is only 1.9.3 (r1718519)
    at org.apache.subversion.javahl.NativeResources.init(NativeResources.java:150)
    at org.apache.subversion.javahl.NativeResources.loadNativeLibrary(NativeResources.java:111)
    at org.apache.subversion.javahl.types.Version.<clinit>(Version.java:40)
    at org.apache.subversion.javahl.NativeResources.init(NativeResources.java:147)
    at org.apache.subversion.javahl.NativeResources.loadNativeLibrary(NativeResources.java:111)
    at org.apache.subversion.javahl.SVNClient.<clinit>(SVNClient.java:52)
    at org.tigris.subversion.svnclientadapter.javahl.JhlClientAdapterFactory.isAvailable(JhlClientAdapterFactory.java:184)
    at org.tigris.subversion.clientadapter.javahl.Activator.isAvailable(Activator.java:83)
    at org.tigris.subversion.clientadapter.javahl.Activator.getVersionSynchronized(Activator.java:72)
    at org.tigris.subversion.clientadapter.javahl.Activator.getVersionString(Activator.java:67)
    at org.tigris.subversion.clientadapter.javahl.Activator.getDisplayName(Activator.java:97)
    at org.tigris.subversion.subclipse.ui.preferences.SVNPreferencesPage.<init>(SVNPreferencesPage.java:102)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:206)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:934)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:246)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:63)
    at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:284)
    at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceNode.createPage(WorkbenchPreferenceNode.java:51)
    at org.eclipse.jface.preference.PreferenceDialog.createPage(PreferenceDialog.java:1279)
    at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.createPage(FilteredPreferenceDialog.java:361)
    at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1166)
    at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:675)
    at org.eclipse.jface.preference.PreferenceDialog$5.lambda$0(PreferenceDialog.java:660)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
    at org.eclipse.jface.preference.PreferenceDialog$5.selectionChanged(PreferenceDialog.java:657)
    at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:874)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.ui.internal.JFaceUtil.lambda$0(JFaceUtil.java:47)
    at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:176)
    at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:871)
    at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1240)
    at org.eclipse.jface.viewers.StructuredViewer.lambda$0(StructuredViewer.java:1263)
    at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
    at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:264)
    at org.eclipse.jface.util.OpenStrategy.access$5(OpenStrategy.java:259)
    at org.eclipse.jface.util.OpenStrategy$1.lambda$2(OpenStrategy.java:420)
    at org.eclipse.swt.widgets.Display.timerProc(Display.java:5566)
    at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
    at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1581)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4470)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:822)
    at org.eclipse.jface.window.Window.open(Window.java:798)
    at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.open(WorkbenchPreferenceDialog.java:214)
    at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:66)
    at org.eclipse.jface.action.Action.runWithEvent(Action.java:476)
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:568)
    at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:400)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5663)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1386)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4931)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4472)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1173)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1062)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:636)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:563)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:151)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:155)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:595)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1501)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1474)

Here are also the information about the session data:

eclipse.buildId=4.10.0.I20181206-0815
java.version=1.8.0_191
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.java.product
Command-line arguments:  -data file:/path/to/workspace/ -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product

The following elements were updated yesterday:

  • Marketplace Client from 1.7.2.v20180829-193 to 1.7.4.v20190206-174

  • Subclipse from 4.2.4.201804261743 to 4.3.0.201901172050

  • Subversion JavaHL Windows Native DLL's 1.9.7.201803201521 to Subversion 1.11 JavaHL 1.11.1.20190116204

  • SVNKit Client Adapter 1.8.12.1 to 1.8.12.

The eclipse.ini file contains a line with the path to JavaHL -Djava.library.path=/usr/lib/x86_64-linux-gnu/jni under the -vmargs statement.

I am working on Ubuntu 16.04. I've already tried, without any success to:

  • Uninstall and reinstall subclipse via the Marketplace

  • Uninstall and reinstall subclipse via Help > Install New Software... providing the link to Subclipse binaries (https://dl.bintray.com/subclipse/releases/subclipse/4.3.x/ or https://dl.bintray.com/subclipse/releases/subclipse/latest/)

  • Use a new empty workspace

  • Perform a clean install of eclipse and subclipse with a new empty workspace on the same computer

I also tried to install subclipse on an other computer (where eclipse was installed but on which subclipse has never been installed), and it seems that I met the same problem...

I would be really grateful if anyone could give me some insight about what's going wrong here or how to solve this problem,

Thanks by advance!

Sébastien

like image 971
Sébastien C. Avatar asked Mar 14 '19 14:03

Sébastien C.


2 Answers

It is not a problem per-se and is more or less explained in the docs:

https://github.com/subclipse/subclipse/wiki

The current version of Subclipse supports SVN 1.11 or 1.10. On every OS except Windows you are responsible for providing the native libraries (see the JavaHL links on above page). Your error is that you installed the 1.11 support but you have the SVN 1.9.x native libraries installed. You do not mention your OS, but one solution would have been to update the installed SVN client to 1.11.

As noted further down on the page, if you are stuck on SVN 1.9.x client then you have to install the older Subclipse 4.2.x version which supports 1.9.

If you can get 1.10, but not 1.11 then you just have to uninstall the 1.11 JavaHL plugin and install the 1.10 plugin. Both are on the Subclipse update site.

like image 144
Mark Phippard Avatar answered Sep 28 '22 09:09

Mark Phippard


I finally found a way to fix this problem.

I performed a clean install (after having deleted all files related to eclipse - which includes obviously the folder where eclipse was installed but also the .p2 and .subversion folders in the home directory, excluding the workspace where I did not remove any file) and installed subclipse via the Help > Install New Software..., providing the link to the previous version of Subclipse, i.e. Subclipse 4.2 (https://dl.bintray.com/subclipse/releases/subclipse/4.2.x/). And all is working well again so far.

I think that people who meet the same problems as mine could also fix this by a simplier way by reverting the install prior to the last update (avoiding then to perform a completely new install...) going throught Help > About Eclipse IDE > Installation Details >Installation History and then selecting the last installation and clicking to revert. Nevertheless, I was not able to do this as I modified some files which seem to be necessary for Eclipse to do this. So I do not know for sure if this second method is working...

Even if this is a way to fix that matter, I do not understand what is going wrong on the current Subclipse version (4.3). In particular is this a problem which is known and reported for the current version (but in such case I did not find any documentation or question raised about it...) or something related to the configuration I use or something I did?! If anybody have some idea about this, I would be happy to understand :)

like image 30
Sébastien C. Avatar answered Sep 28 '22 09:09

Sébastien C.