LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1230|回复: 6

使用swt的java程序运行错误,请高手帮忙(大家可以来看看,一起学习)

[复制链接]
发表于 2004-8-31 19:25:39 | 显示全部楼层 |阅读模式
我根据www.cs.umainitoba.ca/~eclipse 中的1-Install.pdf中的方法在eclipse中写了一个swt程序:
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;
public class SWTHello {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
Label label = new Label(shell, SWT.NONE);
label.setText("Hello, World!");
shell.pack();
label.pack();
shell.open();
while(!shell.isDisposed())
if(!display.readAndDispatch())
display.sleep();
display.dispose();
label.dispose();
}
}

编译正常,
运行时却有错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/internal/gtk/OS
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:118)
at SWTHello.main(SWTHello.java:19)


用以下命令运行:
java  -Djava.library.path=/usr/local/eclipse/plugins/org.eclipse.swt.gtk_3.0.0/os/linux/x86  -classpath

opt/SUNWappserver/jdk/lib:/opt/SUNWappserver/jdk/jre/lib:/usr/local/eclipse/plugins/org.eclipse.swt.gtk_3.0.

0/ws/gtk/swt.jar:.    SWTHello
也产生同样的错误.从是参照LumaQQ启动脚本来看,使用的库文件在(LumaQQ/swt)和我

的/usr/local/eclipse/plugins/org.eclipse.swt.gtk_3.0.0/os/linux/x86下的文件除版本不同其它都相同.
我也试过把Lumaqq启动脚本中的 -Djava.library.path一句去掉的话会产生和我类似的错误.
但我为什么加了-Djava.library.path也不行,我怎么也想不通(好痛苦),是程序本身的问题吗?
请大家帮忙给看看.THANK YOU!
 楼主| 发表于 2004-8-31 19:28:24 | 显示全部楼层

sorry,

网址写错了
http://www.cs.umanitoba.ca/~eclipse/
上面有好东东,大家可以去下载.
发表于 2004-9-1 13:07:38 | 显示全部楼层
我使用的是eclipse3.0-win32,新建插件开发,复制以上代码,运行application,抛出异常!然后选择Run-Run...-java application-SWTHello-Arguments,在Variables处加入
-Djava.library.path=
F:\eclipse\plugins\org.eclipse.swt.win32_3.0.0\os\win32\x86
成功运行!awt主要使用了java的jni技术,使用java调用系统图形库!
发表于 2004-9-1 16:33:50 | 显示全部楼层
不光需要swt.jar,swt-pi.jar和swt-mozilla.jar都应该加到classpath
 楼主| 发表于 2004-9-1 19:20:48 | 显示全部楼层

请问Luma兄,程序里只是

import import org.eclipse.swt.widgets.* org.eclipse.swt.*;
不是说只用到这两个包吗?
swt-pi.jar和swt-mozilla.jar为什么要加进去呢?
而那个教程也没说要用这两个jar?
Thank you very much for you help!
发表于 2004-9-2 12:49:50 | 显示全部楼层
他们被swt.jar引用

也许你那个教程说的只是windows吧
 楼主| 发表于 2004-9-2 13:31:48 | 显示全部楼层

那个教程却是是以windows为例子的

我试了把swt-pi.jar,swt-mozilla.jar,加入classpath果然可以了.
但在windows下和linux下开发,对jar的引用会有这么大的区别?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表