目前我傳遞命令行參數來調用程序。我正在展示一個小的代碼片段供您參考。Eclipse插件:傳遞命令行參數
public class Main {
public static void main(String[] args) throws Exception {
GlobalVariable.activity = args[0];
GlobalVariable.templatePath = args[1];
....
}
現在,我正在嘗試開發一個從Java程序本身調用此命令的eclipse插件。要開發一個插件,我也做了以下內容:
- 的Eclipse(新建 - >項目 - > Eclipse插件項目),項目名稱爲「
org.example.helloworld
」 - 我選擇「插件與彈出向上菜單「模板。
- 現在,我寫了下面的代碼在「
NewAction.java
」命令行參數傳遞給我的主文件,如上圖所示」
public void run(IAction action) { String args[] = new String[2]; args[0] = "compile-vocab-spec"; args[1] = "C:\\Template\\"; try { Main.main(args); } catch (Exception e) { e.printStackTrace(); } }
我的問題是 - 我無法調用Main.java文件,這種技術有什麼問題?請歡迎任何其他選擇。請讓我知道以防萬一您需要更多信息以進一步清晰化
我看到以下消息控制檯我運行代碼。
!SESSION 2015-11-15 14:04:18.580 -----------------------------------------------
eclipse.buildId=4.5.1.M20150904-0015
java.version=1.8.0_51
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments: -product org.eclipse.platform.ide
Command-line arguments: -product org.eclipse.platform.ide -data C:\Users\inpapat4\workspace/../runtime-EclipseApplication -dev file:C:/Users/inpapat4/workspace/.metadata/.plugins/org.eclipse.pde.core/Eclipse Application/dev.properties -os win32 -ws win32 -arch x86_64 -consoleLog
!ENTRY org.eclipse.core.net 4 0 2015-11-15 14:04:36.102
!MESSAGE WinHttp.GetProxyForUrl for pac failed with error 'The proxy auto-configuration script could not be downloaded
' #12167.
!ENTRY org.eclipse.ui 4 0 2015-11-15 14:04:46.332
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NoClassDefFoundError: org/antlr/runtime/CharStream
at org.example.helloworld.popup.actions.NewAction.run(NewAction.java:42)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:247)
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:654)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598)
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(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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)
Caused by: java.lang.ClassNotFoundException: org.antlr.runtime.CharStream cannot be found by org.example.helloworld_1.0.0.qualifier
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:439)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:352)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:344)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 32 more
MANIFEST.MF文件的內容如下:
Bundle-ManifestVersion: 2
Bundle-Name: Helloworld
Bundle-SymbolicName: org.example.helloworld;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: org.example.helloworld.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.resources
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
當你運行上面的代碼時會發生什麼? –
感謝Elliott Frisch的評論。要回答你的問題,我正在用我在控制檯上看到的消息更新問題。 – Pankesh
那到底是什麼問題?代碼是否編譯?運行時你會遇到異常嗎? –