2016-06-13 18 views
0

Ich versuche, einen benutzerdefinierten ClassPath-Eintrag als Erwähnung here zu erstellen. Ich habe es wie im Link erwähnt gemacht und dabei auch den Quellcode von JUnit und M2E angesprochen. Aber wenn ich die neue benutzerdefinierte Bibliothek und Klicks nächsten wählen, bin ich die folgenden Fehler bekommen sindEclipse-Plugin zum Hinzufügen benutzerdefinierter Bibliothek

java.lang.IllegalAccessException: Class org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI can not access a member of class com.company.eclipse.buildpath.CustomClasspathContainerPage with modifiers "protected" 
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102) 
at java.lang.Class.newInstance(Class.java:436) 
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184) 
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905) 
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243) 
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55) 
at org.eclipse.jdt.internal.ui.util.CoreUtility$1.run(CoreUtility.java:101) 
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) 
at org.eclipse.jdt.internal.ui.util.CoreUtility.createExtension(CoreUtility.java:98) 
at org.eclipse.jdt.internal.ui.wizards.buildpaths.ClasspathContainerDescriptor.createPage(ClasspathContainerDescriptor.java:64) 
at org.eclipse.jdt.internal.ui.wizards.buildpaths.ClasspathContainerWizard.getContainerPage(ClasspathContainerWizard.java:142) 
at org.eclipse.jdt.internal.ui.wizards.buildpaths.ClasspathContainerWizard.getNextPage(ClasspathContainerWizard.java:172) 
at org.eclipse.jface.wizard.WizardPage.getNextPage(WizardPage.java:166) 
at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:878) 
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:425) 
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:619) 
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113) 
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769) 
at org.eclipse.jface.window.Window.runEventLoop(Window.java:827) 
at org.eclipse.jface.window.Window.open(Window.java:803) 
at org.eclipse.jdt.internal.ui.wizards.buildpaths.ClasspathContainerWizard.openWizard(ClasspathContainerWizard.java:230) 
at org.eclipse.jdt.ui.wizards.BuildPathDialogAccess.chooseContainerEntries(BuildPathDialogAccess.java:334) 
at org.eclipse.jdt.internal.ui.wizards.buildpaths.LibrariesWorkbookPage.openContainerSelectionDialog(LibrariesWorkbookPage.java:892) 
at org.eclipse.jdt.internal.ui.wizards.buildpaths.LibrariesWorkbookPage.libaryPageCustomButtonPressed(LibrariesWorkbookPage.java:266) 
at org.eclipse.jdt.internal.ui.wizards.buildpaths.LibrariesWorkbookPage.access$0(LibrariesWorkbookPage.java:253) 
at org.eclipse.jdt.internal.ui.wizards.buildpaths.LibrariesWorkbookPage$LibrariesAdapter.customButtonPressed(LibrariesWorkbookPage.java:202) 
at org.eclipse.jdt.internal.ui.wizards.dialogfields.TreeListDialogField.buttonPressed(TreeListDialogField.java:171) 
at org.eclipse.jdt.internal.ui.wizards.dialogfields.TreeListDialogField.doButtonSelected(TreeListDialogField.java:400) 
at org.eclipse.jdt.internal.ui.wizards.dialogfields.TreeListDialogField.access$2(TreeListDialogField.java:396) 
at org.eclipse.jdt.internal.ui.wizards.dialogfields.TreeListDialogField$2.widgetSelected(TreeListDialogField.java:361) 
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113) 
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769) 
at org.eclipse.jface.window.Window.runEventLoop(Window.java:827) 
at org.eclipse.jface.window.Window.open(Window.java:803) 
at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:157) 
at org.eclipse.jface.action.Action.runWithEvent(Action.java:473) 
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:595) 
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:511) 
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:420) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113) 
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769) 
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127) 
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337) 
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018) 
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156) 
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:694) 
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337) 
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:606) 
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) 
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139) 
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
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:380) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) 
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:497) 
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669) 
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608) 
at org.eclipse.equinox.launcher.Main.run(Main.java:1515) 
at org.eclipse.equinox.launcher.Main.main(Main.java:1488) 

Im Folgenden wird der Inhalt von CustomClasspathContainerPage

public class CustomClasspathContainerPage extends NewElementWizardPage implements IClasspathContainerPage, IClasspathContainerPageExtension { 

    private IClasspathEntry containerEntry; 

    IJavaProject javaProject; 

    protected CustomClasspathContainerPage() { 
     super("CustomContainerPage"); 
     setTitle("Add custom library"); 
    } 

    @Override 
    public void initialize(IJavaProject javaProject, IClasspathEntry[] currentEntries) { 
     this.javaProject = javaProject; 
    } 

    @Override 
    public void createControl(Composite parent) { 
     Composite container = new Composite(parent, SWT.NONE); 
     GridLayout layout = new GridLayout(); 
     layout.marginHeight = 0; 
     layout.marginWidth = 0; 
     container.setLayout((Layout) layout); 
     new Label(container, 0).setText("This will set the Custom library to this project."); 
     this.setControl((Control) container); 
    } 

    @Override 
    public boolean finish() { 
     if (containerEntry == null) { 
      containerEntry = JavaCore.newContainerEntry(Core.CONTAINER_PATH); 
     } 
     return true; 
    } 

    @Override 
    public IClasspathEntry getSelection() { 
     return containerEntry; 
    } 

    @Override 
    public void setSelection(IClasspathEntry containerEntry) { 
     this.containerEntry = containerEntry; 
    } 

} 

Antwort

0

Ihr Konstruktor deklariert wird protected sein, es public sein muss:

public CustomClasspathContainerPage() { 
+0

Danke. Das hat wirklich geholfen. Ich habe Dinge übersehen. – rohit