Problemas com TreeViewer

estou iniciando no swt e fazendo o tutorial de
http://www-106.ibm.com/developerworks/library/os-ecgui1/?ca=dnt-43
tenho a exception abaixo em runtime:

java.lang.NoClassDefFoundError: org/eclipse/core/internal/boot/DelegatingURLClassLoader at org.eclipse.core.runtime.Platform.run(Platform.java:413) at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:1271) at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:320) at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:303) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:289) at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:729) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:801) at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:721) at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:238) at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:991) at Explorer.createContents(Explorer.java:18) at org.eclipse.jface.window.Window.create(Window.java:302) at org.eclipse.jface.window.Window.open(Window.java:552) at Explorer.main(Explorer.java:26) Exception in thread "main"

O problema é com um parâmetro tipo File(“C:”) que está no Explorer.java, porém se eu coloco “C:\arquivo.txt” ele não dá pau, mas tb não me mostra nada na árvore.

Código abaixo:

FileTreeContentProvider.java

[code]import java.io.;
import org.eclipse.jface.viewers.
;

public class FileTreeContentProvider implements ITreeContentProvider
{
public Object[] getChildren(Object element)
{
Object[] kids = ((File) element).listFiles();
return kids == null ? new Object[0] : kids;
}

public Object[] getElements(Object element)
{
return getChildren(element);
}

public boolean hasChildren(Object element)
{
return getChildren(element).length > 0;
}

public Object getParent(Object element)
{
return ((File)element).getParent();
}

public void dispose()
{
}

public void inputChanged(Viewer viewer, Object old_input, Object new_input)
{
}
}[/code]

Explorer.java

[code]import java.io.*;

import org.eclipse.jface.viewers.;
import org.eclipse.jface.window.
;
import org.eclipse.swt.widgets.*;

public class Explorer extends ApplicationWindow
{
public Explorer()
{
super(null);
}

protected Control createContents(Composite parent)
{
TreeViewer tv = new TreeViewer(parent);
tv.setContentProvider(new FileTreeContentProvider());
tv.setInput(new File("C:"));
return tv.getTree();
}

public static void main(String[] args)
{
Explorer w = new Explorer();
w.setBlockOnOpen(true);
w.open();
Display.getCurrent().dispose();
}
}[/code]

Os códigos acima são idênticos ao do tutorial. Onde está o erro?

Provavelmente você está usando o Eclipse 3.0, que não tem o package org.eclipse.runtime_2.1.0/runtime.jar (que o exemplo pede), onde estava a classe DelegatingURLClassLoader.

Tenta adicionar o package org.eclipse.core.boot_3.0.0/boot.jar às Libraries do Java Build Path.

Não… eu tô usando o 2.1.1… mas ele tb não tem esse pacote org.eclipse.runtime_2.1.1. O meu runtime.jar está em org.eclipse.core.runtime_2.1.1.

Já lí outros posts com a ausência desse pacote. O pessoal esquece o ‘core’ ou realmente existe um pacote org.eclipse.runtime_x.x.x?

Se existe eu não tenho…

Tá resolvido, acrescentei o org.eclipse.core.boot_2.1.1\boot.jar.