免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 963 | 回复: 0
打印 上一主题 下一主题

命令行下的SWT、JFace问题。。。(zz吧) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-20 20:58 |只看该作者 |倒序浏览


文件:
five.rar
大小:
2247KB
下载:
下载
   人工智能课程设计用SWT、JFace写了个五子棋人机对战---其实主要是想看看SWT与awt、swing之流有什么不同。。写好了。。eclipse下运行一切正常,拿到命令行下就会报错:找不到类,文件,没有定义main,,xxx。。。总之乱七八糟的问题一堆。。。。。拿着java/javac 参数折腾测试了半天才搞过去。。。转贴篇文章,基本可以解决这类问题。。
  另外,说明以下,程序要用哪个 *.jar和*.dll 针对不同版本是不一样的,看命令行下的错误提示就很清楚了,另外原文那个链接也不能用----其实没必要用,需要的东西在eclipse/plugins下面都有,那个*.dll一般打包在某个 *swt*.jar 里面。。。
   附件是我写的五子棋源码:)不保留版权,欢迎copy,o(∩_∩)o...

=======================转贴开始=========================================
很多刚搞SWT的朋友都会遇到这样一个问题:
写的SWT在eclipse中可以运行,但是用命令行去执行就会报错。
今天就和大家一起彻底解决这个问题。
比如我们先写一个这样的小程序:
1 import org.eclipse.swt.SWT;
2 import org.eclipse.swt.widgets.Display;
3 import org.eclipse.swt.widgets.Shell;
4
5
6 public class BasicSwt extends Shell {
7
8     /**
9      * Launch the application
10      * @param args
11      */
12     public static void main(String args[]) {
13         try {
14             Display display = Display.getDefault();
15             BasicSwt shell = new BasicSwt(display, SWT.SHELL_TRIM);
16             shell.open();
17             shell.layout();
18             while (!shell.isDisposed()) {
19                 if (!display.readAndDispatch())
20                     display.sleep();
21             }
22         } catch (Exception e) {
23             e.printStackTrace();
24         }
25     }
26
27     /**
28      * Create the shell
29      * @param display
30      * @param style
31      */
32     public BasicSwt(Display display, int style) {
33         super(display, style);
34         createContents();
35     }
36
37     /**
38      * Create contents of the window
39      */
40     protected void createContents() {
41         setText("SWT Application");
42         setSize(500, 375);
43         //
44     }
45
46     @Override
47     protected void checkSubclass() {
48         // Disable the check that prevents subclassing of SWT components
49     }
50
51 }
52
在eclipse中运行,ok,可以看到一个空白窗体。
运行CMD,到项目目录,运行java BasicSwt,结果报错了:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Shell
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.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)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
为什么?
因为我们缺少运行SWT需要的类库和相关DLL链接库
首先我们先下载一个文件:

http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/
下载swt-3.2.2-win32-win32-x86.zip
解压缩,主要到里面的两个文件:
swt.jar
swt-win32-3236.dll
本例中,我们先把这两个文件放到H:\
然后把我们执行:java -classpath h:\swt.jar BasicSwt
这时候可以看到出错信息变了Exception in thread "main" java.lang.NoClassDefFoundError: BasicSwt
ok,再改,执行:java -classpath h:\swt.jar; -Djava.library.path=h:\ BasicSwt
ok,正常啦。。。。。。。。。。。。。。。。。。。。。
稍微解释下-Djava.library.path=h:\
这里指定的是swt-win32-3236.dll存放的路径
===========================转贴结束=====================================


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/23273/showart_404432.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP