- 论坛徽章:
- 0
|
![]()
文件:
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 |
|