请教一下,我用eclipse开发一个可以读取串口信息的插件,把它单独作为应用程序可以正常运行.但以插件形式运行时点击按钮就会出现异常.不知道是什么问题? 插件窗口程序: package com.plugin.Hello; import org.eclipse.core.runtime.*; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; import com.leon.serial.*; /** * This class demonstrates JFace's ErrorDialog class */ public class DialogSample extends ApplicationWindow { /** * ShowError constructor */ public DialogSample() { super(null); } /** * Runs the application */ public void run() { // Don't return from open() until window closes setBlockOnOpen(true); // Open the main window open(); // Dispose the display Display.getCurrent().dispose(); } /** * Configures the shell * * @param shell the shell */ protected void configureShell(Shell shell) { super.configureShell(shell); // Set the title bar text and the size shell.setText("read com"); shell.setSize(400, 400); } /** * Creates the main window's contents * * @param parent the main window * @return Control */ protected Control createContents(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout(1, false)); // Create a big text box to accept error text final Text text = new Text(composite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL); text.setLayoutData(new GridData(GridData.FILL_BOTH)); // Create the button to launch the error dialog Button show = new Button(composite, SWT.PUSH); show.setText("open serial port"); show.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { SerialBean SB = new SerialBean(2); String Msg = ""; SB.Initialize(); Msg = SB.ReadPort(10); SB.ClosePort(); text.setText(Msg); } }); return composite; } /** * The application entry point * * @param args the command line arguments */ /* public static void main(String[] args) { new DialogSample().run(); } */ }
插件是根据helloworld改过来的 package com.plugin.Hello; import org.eclipse.ui.plugin.*; import org.osgi.framework.BundleContext; import java.util.*; /** * The main plugin class to be used in the desktop. */ public class HelloPlugin extends AbstractUIPlugin { //The shared instance. private static HelloPlugin plugin; //Resource bundle. private ResourceBundle resourceBundle; /** * The constructor. */ public HelloPlugin() { super(); plugin = this; try { resourceBundle = ResourceBundle.getBundle("com.plugin.Hello.HelloPluginResources"); } catch (MissingResourceException x) { resourceBundle = null; } } /** * This method is called upon plug-in activation */ public void start(BundleContext context) throws Exception { super.start(context); } /** * This method is called when the plug-in is stopped */ public void stop(BundleContext context) throws Exception { super.stop(context); } /** * Returns the shared instance. */ public static HelloPlugin getDefault() { return plugin; } /** * Returns the string from the plugin's resource bundle, * or 'key' if not found. */ public static String getResourceString(String key) { ResourceBundle bundle = HelloPlugin.getDefault().getResourceBundle(); try { return (bundle != null) ? bundle.getString(key) : key; } catch (MissingResourceException e) { return key; } } /** * Returns the plugin's resource bundle, */ public ResourceBundle getResourceBundle() { return resourceBundle; } }

|