在 Eclipse 中使用 Composites with Shell for java
using Composites with Shell for java in eclipse with maven
我在 eclipse 中有一个 java maven 项目,它使用了一些 Composites,但是我在创建启动我的小部件的主要方法时遇到了问题。
我添加了以下依赖:
<dependency>
<groupId>org.eclipse.rap</groupId>
<artifactId>org.eclipse.rap.rwt</artifactId>
<version>3.0.0-M5</version>
</dependency>
这是我的主要方法(其中 MainWindow 是我的复合方法)
public static void main(String[] args){
Display display = new Display();
Shell shell = new Shell(display);
shell.setSize(450,256);
shell.setText("My Title");
shell.setLayout(new FillLayout(SWT.VERTICAL));
MainWindow window = new MainWindow(shell, SWT.ALL);
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
如果我尝试从 eclipse 中 运行 这个应用程序,我会收到以下错误:
Exception in thread "main" java.lang.IllegalStateException: No context available outside of the request processing.
at org.eclipse.rap.rwt.internal.service.ContextProvider.getContext(ContextProvider.java:95)
at org.eclipse.rap.rwt.internal.service.ContextProvider.getUISession(ContextProvider.java:183)
at org.eclipse.rap.rwt.internal.lifecycle.LifeCycleUtil.setSessionDisplay(LifeCycleUtil.java:24)
at org.eclipse.swt.widgets.Display.<init>(Display.java:275)
如果我在将它编译为 jar 后执行它,我会得到:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Layout
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Layout
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
如何启动我的应用程序?
谢谢
更新:
NoClassdefFound 已通过在构建插件中使用 jar-with-dependency 解决。
但现在在两次执行(cmd 和 eclipse)时都会弹出“无上下文可用”错误
您似乎应该为 OS 指定 SWT 依赖项。例如这里是 OS X:
的依赖项
<dependency>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId>
<version>4.4</version>
</dependency>
Here 其他 OS-es.
的依赖项列表
您包括了不用于普通 SWT 应用程序的 SWT 的 Eclipse RAP 版本。
删除 RAP 依赖项,只使用普通的 SWT。
我在 eclipse 中有一个 java maven 项目,它使用了一些 Composites,但是我在创建启动我的小部件的主要方法时遇到了问题。
我添加了以下依赖:
<dependency>
<groupId>org.eclipse.rap</groupId>
<artifactId>org.eclipse.rap.rwt</artifactId>
<version>3.0.0-M5</version>
</dependency>
这是我的主要方法(其中 MainWindow 是我的复合方法)
public static void main(String[] args){
Display display = new Display();
Shell shell = new Shell(display);
shell.setSize(450,256);
shell.setText("My Title");
shell.setLayout(new FillLayout(SWT.VERTICAL));
MainWindow window = new MainWindow(shell, SWT.ALL);
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
如果我尝试从 eclipse 中 运行 这个应用程序,我会收到以下错误:
Exception in thread "main" java.lang.IllegalStateException: No context available outside of the request processing.
at org.eclipse.rap.rwt.internal.service.ContextProvider.getContext(ContextProvider.java:95)
at org.eclipse.rap.rwt.internal.service.ContextProvider.getUISession(ContextProvider.java:183)
at org.eclipse.rap.rwt.internal.lifecycle.LifeCycleUtil.setSessionDisplay(LifeCycleUtil.java:24)
at org.eclipse.swt.widgets.Display.<init>(Display.java:275)
如果我在将它编译为 jar 后执行它,我会得到:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Layout
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Layout
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
如何启动我的应用程序? 谢谢
更新:
NoClassdefFound 已通过在构建插件中使用 jar-with-dependency 解决。
但现在在两次执行(cmd 和 eclipse)时都会弹出“无上下文可用”错误
您似乎应该为 OS 指定 SWT 依赖项。例如这里是 OS X:
的依赖项<dependency>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId>
<version>4.4</version>
</dependency>
Here 其他 OS-es.
的依赖项列表您包括了不用于普通 SWT 应用程序的 SWT 的 Eclipse RAP 版本。
删除 RAP 依赖项,只使用普通的 SWT。