`
snoopy7713
  • 浏览: 1149621 次
  • 性别: 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(Standard Widget ...总结,配置SWT运行环境涉及安装JDK、Eclipse,安装SWT插件,选择正确的SWT库,以及编写和运行SWT代码。通过熟悉这些步骤,你可以轻松地在Java项目中利用SWT构建功能丰富的图形用户界面。

    swt linux环境运行jar包

    swt linux环境运行jar包

    SWT内存泄露解决办法

    SWT(Standard Widget Toolkit)是Eclipse项目提供的一种用于创建图形用户界面(GUI)的开源库,它在Java平台上提供了与本机系统更紧密的集成。然而,SWT应用程序可能会遇到内存泄露问题,这会导致程序运行缓慢,...

    swt做的学生管理系统

    与Java Swing相比,SWT具有更好的性能和与操作系统更紧密的集成,使得开发者可以构建出与平台环境一致的外观和感觉的应用程序。 本学生管理系统主要运用了SWT中的Composite组件来构建界面布局。Composite是SWT中的...

    swt运行所需的dll

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

    swt-arm64.jar.zip

    对于那些需要在多样化硬件环境中运行的Java应用,SWT提供了一个灵活且强大的解决方案。然而,值得注意的是,虽然SWT的性能出色,但它并不像Swing那样支持完全的跨平台性,某些特定的平台功能可能需要特定版本的SWT来...

    解决SWT原生库找不到的问题

    本文将详细介绍如何解决SWT原生库找不到的问题,帮助开发者顺利搭建SWT项目环境。 #### 搭建SWT项目环境 ##### 1. 使用向导建立SWT/JFace Java项目 首先,我们需要通过Eclipse集成开发环境(IDE)中的向导功能来...

    swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    64位版本的SWT是为了在64位Java运行时环境中运行而编译的,这意味着它可以充分利用64位系统的优势,如更大的内存地址空间和更快的计算能力。SWT库通常以jar文件的形式分发,就像压缩包中的“swt-64.jar”一样。...

    JAVA SWT学生信息管理系统

    综上所述,JAVA SWT学生信息管理系统结合了Java的面向对象特性、SWT的原生界面交互以及数据库的强大存储能力,提供了一套完整的、易用的学生信息管理解决方案。这个系统充分体现了Java在桌面应用开发中的灵活性和...

    swt教程 有关SWT怎么应用

    2. **设置环境**:有三种方式设置原生库文件路径,一是将DLL文件复制到JRE的bin目录下,二是修改PATH环境变量,三是直接在Eclipse项目中导入原生库文件。 3. **配置构建路径**:在Eclipse项目中,需要将SWT库的JAR...

    swt2.rarswt2.rarswt2.rarswt2.rarswt2.rar

    标题中的"swt2.rar"多次出现,暗示这可能是一个关于软件开发或编程技术的压缩文件,特别是与SWT(Standard Widget Toolkit)相关的。SWT是Eclipse项目的一部分,是一个用于构建Java GUI应用程序的开源库,它提供了与...

    SWT源码 swt.jar

    SWT(Standard Widget Toolkit)是Eclipse项目的一个重要组成部分,它提供了一套用于构建图形用户界面(GUI)的API,与Java Swing不同,SWT基于操作系统原生的UI组件,因此能够实现更好的性能和与操作系统的集成。...

    图书馆管理系统SWT源码

    《图书馆管理系统SWT源码详解》 在信息技术领域,开发高效、用户友好的管理软件是提升工作效率的关键。本文将深入探讨一个特别的案例——“图书馆管理系统”,该系统采用SWT(Standard Widget Toolkit)进行设计,...

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

    在这个“SWT写的住院管理系统”中,开发者利用SWT来构建一个能够管理和处理住院患者信息的系统,且与SQL数据库进行了集成,这使得数据的存储和查询变得更加高效和可靠。 首先,SWT的优势在于它的原生性能。因为它...

    SWT 插件包 (windows 环境)

    **SWT 插件包(Windows 环境)** SWT,全称为Standard Widget Toolkit,是Java编程语言中用于创建图形用户界面(GUI)的一个开源库。它由Eclipse基金会维护,主要用于Eclipse集成开发环境(IDE)以及其他Java应用...

    java swt 订购飞机票系统

    【Java SWT 飞机票订购系统】是一种基于Java编程语言,使用SWT(Standard Widget Toolkit)库构建的桌面应用程序。SWT是Java社区为提供更高效、原生UI(用户界面)组件而开发的一个开源库,它允许开发者创建与操作...

    swt住院管理系统

    "SWT住院管理系统"是一款基于SWT技术和SQL数据库设计的医疗信息化解决方案,旨在优化医院的住院服务流程,提高医疗服务效率。SWT,全称为Standard Widget Toolkit,是Eclipse基金会提供的一种用于构建桌面应用程序的...

    SWT开发的住院管理系统

    【住院管理系统】是一种基于C/S(Client/Server)模式的软件应用,主要用于医疗机构对住院病人的信息进行管理和跟踪。在C/S模式下,客户端(Client)作为用户界面,提供友好的交互方式,而服务器端(Server)则负责...

    基于SWT的汽车管理系统

    《基于SWT的汽车管理系统详解》 在信息技术领域,汽车管理系统的开发是一项常见的任务,它旨在帮助汽车销售、维修和保养等业务实现信息化管理。本文将深入探讨一个基于SWT(Standard Widget Toolkit)的汽车管理...

Global site tag (gtag.js) - Google Analytics