Joh*_*dol 4 java eclipse swt jface classpath
免责声明:
这是.NET GUI尝试围绕JAVA工作的经典案例.
问题描述:
我正在尝试使用JFace和SWT构建一个非常简单的GUI - 代码很简单(有很多教程),它不是那么简单,我似乎无法让JFace和SWT在插件项目之外工作.
我希望能够在我的项目中使用JFace和SWT没有麻烦,因为我把"C:/ eclipse 3.5/plugins"放在我的CLASSPATH中(从我的计算机 - >属性 - >高级 - >环境变量)以及我在PATH中找到的所有swt - *.dll(可以确定本地用户和全局PATH),如本文在"安装SWT和JFace"框中所示.
问题是我无法从eclipse.org导入任何东西,除非我直接引用buildpath中的jar - > libraries - >添加外部jar(为了构建它我必须添加以下jar:org.eclipse.swt .win32.win32.x86_3.5.1.v3555a.jar,org.eclipse.jface_3.5.1.M20090826-0800.jar).一旦我这样做它构建良好但然后当我作为"Java应用程序"运行时,我得到以下错误(我应该运行其他东西吗?):
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor
at demo.ui.test.EntryPoint.main(EntryPoint.java:18)
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.IProgressMonitor
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 1 more
Run Code Online (Sandbox Code Playgroud)
我试图调试它,基本上它会在尝试实例化ApplicationWindow类(org.eclipse.jface.window.ApplicationWindow)时抛出.试图重现错误,我注释掉了我的所有代码并将其替换为我的main中的以下内容,它在第一行引发了与上面相同的错误:
ApplicationWindow w = new ApplicationWindow(null); //<-- error on this line
w.setBlockOnOpen(true);
w.open();
Display.getCurrent().dispose();
Run Code Online (Sandbox Code Playgroud)
问题:
问题1:如何解决上面的错误(我想了解发生了什么)并得到了该死的东西?
问题2:为什么我的项目看不到罐子以及如何制作它们?
由于我对Java和eclipse缺乏熟悉,我可能会遗漏一些非常微不足道的东西.任何帮助高度赞赏!
编辑:似乎有人有同样的问题 - > http://www.eclipsezone.com/eclipse/forums/t60528.html - 不太清楚他们如何解决它虽然,援助赞赏
Pet*_*aný 11
IProgressMonitor你使用的那两个罐子里没有接口.您还需要在类路径中放置org.eclipse.equinox.common插件.IProgressMonitor可以在没有整个eclipse环境运行的情况下使用.
(这是你引用的文章的解决方案.我原本以为IProgressMonitor在org.eclipse.core.runtime插件中,但它已被移动到org.eclipse.equinox.common,如bug#122935中所述)
回应Peter的观点,我总是需要添加一堆JAR来运行(特别是对于JFace).通常,我需要
./org.eclipse.core.commands_3.3.0.I20070605-0010.jar
./org.eclipse.core.runtime_3.3.100.v20070530.jar
./org.eclipse.equinox.common_3.3.0.v20070426.jar
./org.eclipse.jface_3.3.1.M20070910-0800b.jar
./org.eclipse.osgi_3.3.2.R33x_v20080105.jar
./org.eclipse.ui.forms_3.3.0.v20070511.jar
Run Code Online (Sandbox Code Playgroud)
你可以使用像jarfinder这样的东西来帮助发现JAR中的文件.在Windows中我似乎记得使用find功能来查找IProgressMonitor.class文件系统上eclipse文件夹下的zip/jar文件 - 因为有时实际的JAR很难追踪.
我通常通过查看失败,追踪/添加JAR,冲洗和重复来工作.
做RCP /插件似乎Eclipse为你解决了很多问题,做你自己的独立应用程序带来了这个额外的包袱,但如果你坚持使用它有一个适当的独立本机GUI非常好.所以我通常设置vanilla(非插件)eclipse项目,它会迫使你面对这些问题(手动将JAR添加到类路径中).当您想要分发项目时,它也会派上用场.
| 归档时间: |
|
| 查看次数: |
6841 次 |
| 最近记录: |