`
snoopy7713
  • 浏览: 1123358 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

彻底解决SWT运行出错(2)修改系统环境变量

    博客分类:
  • java
阅读更多

很多刚搞SWT的朋友都会遇到这样一个问题:
写的SWT在eclipse中可以运行,但是用命令行去执行就会报错。
今天就和大家一起彻底解决这个问题。

比如我们先写一个这样的小程序:

 

import org.eclipse.swt.SWT;
  import org.eclipse.swt.widgets.Display;
  import org.eclipse.swt.widgets.Shell;
  
  
  public class BasicSwt extends Shell {
  
      /**
       * Launch the application
      * @param args
      */
     public static void main(String args[]) {
         try {
             Display display = Display.getDefault();
             BasicSwt shell = new BasicSwt(display, SWT.SHELL_TRIM);
             shell.open();
             shell.layout();
             while (!shell.isDisposed()) {
                 if (!display.readAndDispatch())
                     display.sleep();
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
     /**
      * Create the shell
      * @param display
      * @param style
      */
     public BasicSwt(Display display, int style) {
         super(display, style);
         createContents();
     }
 
     /**
      * Create contents of the window
      */
     protected void createContents() {
         setText("SWT Application");
         setSize(500, 375);
         //
     }
 
     @Override
     protected void checkSubclass() {
         // Disable the check that prevents subclassing of SWT components
     }
 
 }

在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存放的路径

 

上面的介绍比较适合程序发布和给客户使用的时候,那么我们自己开发的时候老是这么用也不方便,

下面我们彻底解决这个问题:

 swt-awt-win32-3236.dll
 swt-gdip-win32-3236.dll
 swt-wgl-win32-3236.dll
 swt-win32-3236.dll
全部拷贝到\Windows\System32下面


修改系统环境变量:
classpath=.;d:\JAVA6\lib\tools.jar;d:\JAVA6\lib\dt.jar;d:\JAVA6\bin;h:\swt.jar;

解释一下:
“.”是指当前目录
“d:\JAVA6\lib\tools.jar;d:\JAVA6\lib\dt.jar;d:\JAVA6\bin;”是为了JAVA6配置的
“h:\swt.jar;”是咱们SWT.JAR的路径

关掉CMD,重新打开,不然CMD不会重新加载环境变量。


到项目目录,运行java BasicSwt

ok,正常运行了,不用那么长的命令行了

 

分享到:
评论

相关推荐

    SWT运行环境的配置

    详细解绍SWT运行环境的配置。 欢迎大家下载!

    swt linux环境运行jar包

    swt linux环境运行jar包

    swt运行所需的dll

    swt运行时所需的dll文件,包括swt-awt-win32-3236.dll swt-gdip-win32-3236.dll swt-win32-3229.dll swt-win32-3236.dll

    基于JavaSWT的数据库管理系统

    此为基于Java SWT的数据库管理系统,实现的功能有限,并且项目中所需的hibernate相关的包和数据库,SWT相关的包自己下载加载进去就可以运行了,希望各位能够将自己实现的功能加上去!

    SWT写的住院管理系统(SQL数据库)

    SWT写的住院管理系统,不错的学习SWT的经典源代码。

    swt2.rarswt2.rarswt2.rarswt2.rarswt2.rar

    swt2.rarswt2.rarswt2.rarswt2.rarswt2.rarswt2.rar

    swt做的学生管理系统

    简单的学生管理系统,只有增删改查功能。 布局使用了 Composite面板,自己写的入门级别的。为了是联系一下,以前没有接触过、算是了解。

    SWT内存泄露解决办法

    swt内存泄露解决办法以及检测内存泄露工具

    swt住院管理系统

    swt开发的医院住院管理系统,数据库为SQL

    swt总结draw2d绘图

    swt总结draw2d绘图

    JAVA SWT学生信息管理系统

    java SWT 对话框 table 添加 删除 修改 查看信息 menu栏操作 右键点击查看

    swt图书管理系统.zip

    上传的资源为swt图书管理系统,基本语言采用的是java编写的swt项目,内含mysql数据库脚本与项目源代码,还有部署录制视频与截图。项目是用来完成数据库课程设计的,功能基本都已实现,内含数据库课程设计的文档与...

    SWT WIN32 Extension

    系统相关信息: 收集系统CPU,内存,环境变量等相关信息。 系统会话: 提供关机,休眠,重启,注销等功能。 系统IO及网络功能: 提供磁盘和网络相关信息。 活动桌面功能: 管理Windows活动桌面。 系统钩子: 注册和卸载...

    swt人事管理系统.zip

    上传的资源为swt人事管理系统,基本语言采用的是java编写的swt项目,内含mysql数据库脚本与项目源代码,还有部署录制视频与截图。项目是用来完成数据库课程设计的,功能基本都已实现,内含数据库课程设计的文档与...

    图书馆管理系统SWT源码

    一个基于SWT设计的图书馆管理系统,可以实现还书借书等一系列图书馆需要的操作

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    swt线程冲突与解决

    swt线程冲突与解决,swt的使用中,UI主线程往往容易与用户线程产生冲突,这个时候就需要使用同步和异步的思想来解决这个问题

    swing2swt包

    swing2swt java应用开发包,貌似现在很少了

    eclipse swt 2

    eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse swt eclipse ...

Global site tag (gtag.js) - Google Analytics